@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,576 @@
1
+ import { c as claimRejectedOpenNotice, d as hasOtherModalExcept, f as rejectedOpenNoticeToken, h as trackModalDismissableElement, i as modalOriginAttrs, l as disposeModalSession, m as syncModalRegistration, n as createModalDialogMachine, o as modalRequestService, p as releaseRejectedOpenNotice, t as cancelModalClose, u as hasOtherModal } from "./modal-dialog-machine-CF9_z3Dm.js";
2
+ import { connect } from "@zag-js/dialog";
3
+ //#region src/modal-render-scope.ts
4
+ let nextSeed = 0;
5
+ function nonempty(value) {
6
+ return typeof value === "string" && value.trim().length > 0;
7
+ }
8
+ function kindValid(value) {
9
+ return value === "dialog" || value === "popup";
10
+ }
11
+ function ownerValid(kind, owner) {
12
+ return owner === void 0 || kind === "popup" && (owner === "wc:action-sheet" || owner === "wc:picker");
13
+ }
14
+ function validateTicket(ticket) {
15
+ if (!ticket || !ownerValid(ticket.kind, ticket.owner) || !nonempty(ticket.id) || !nonempty(ticket.pageSeed) || !kindValid(ticket.kind) || !Number.isSafeInteger(ticket.ordinal) || ticket.ordinal < 1 || typeof ticket.initialAdmitted !== "boolean" || !(ticket.initialOwnerId === null || nonempty(ticket.initialOwnerId)) || ticket.declarationKey !== void 0 && !nonempty(ticket.declarationKey) || ticket.initialActive !== void 0 && typeof ticket.initialActive !== "boolean") throw new TypeError("Invalid modal render ticket");
16
+ if (ticket.initialAdmitted && ticket.initialOwnerId === null) throw new TypeError("Admitted modal requires an initial owner");
17
+ if (!ticket.initialAdmitted && ticket.initialOwnerId === ticket.id) throw new TypeError("Rejected modal cannot own its initial reservation");
18
+ }
19
+ /**
20
+ * Create once per page/request and share across its render roots. Bootstrap
21
+ * tickets before hydrating any root, including roots hydrated in reverse order.
22
+ * Default seeds are non-random identities, never global modal declarations.
23
+ */
24
+ function createModalRenderScope(options = {}) {
25
+ if (options.pageSeed !== void 0 && !nonempty(options.pageSeed)) throw new TypeError("pageSeed must be nonempty");
26
+ let pageSeed = options.pageSeed ?? `r${++nextSeed}`;
27
+ const explicitSeed = options.pageSeed !== void 0;
28
+ let ordinal = 0;
29
+ let bootstrapComplete = false;
30
+ const records = /* @__PURE__ */ new Map();
31
+ const identities = /* @__PURE__ */ new Map();
32
+ const speculative = /* @__PURE__ */ new WeakMap();
33
+ const reservations = /* @__PURE__ */ new Map();
34
+ const retired = /* @__PURE__ */ new Set();
35
+ const released = /* @__PURE__ */ new Set();
36
+ const notified = /* @__PURE__ */ new Set();
37
+ const incarnations = /* @__PURE__ */ new Map();
38
+ const sessions = /* @__PURE__ */ new Map();
39
+ const serverDeclarations = /* @__PURE__ */ new Map();
40
+ const consumedDeclarations = /* @__PURE__ */ new Map();
41
+ const active = /* @__PURE__ */ new Map();
42
+ const claimants = /* @__PURE__ */ new Map();
43
+ const owns = (lease) => active.get(lease.id)?.session === lease.session && incarnations.get(lease.id) === lease.ordinal;
44
+ const current = (id, expected) => expected === void 0 || records.get(id)?.ordinal === expected;
45
+ const copy = (ticket) => ({
46
+ id: ticket.id,
47
+ kind: ticket.kind,
48
+ pageSeed: ticket.pageSeed,
49
+ ordinal: ticket.ordinal,
50
+ initialAdmitted: ticket.initialAdmitted,
51
+ initialOwnerId: ticket.initialOwnerId,
52
+ ...ticket.declarationKey !== void 0 ? { declarationKey: ticket.declarationKey } : {},
53
+ ...ticket.initialActive === false ? { initialActive: false } : {},
54
+ ...ticket.owner !== void 0 ? { owner: ticket.owner } : {}
55
+ });
56
+ const reserve = (ticket) => {
57
+ if (ticket.initialActive === false) return;
58
+ const owner = ticket.initialOwnerId;
59
+ if (owner && !retired.has(owner) && !released.has(owner) && (!bootstrapComplete || reservations.has(owner))) reservations.set(owner, reservations.get(owner) ?? null);
60
+ if (ticket.initialAdmitted && !retired.has(ticket.id) && !released.has(ticket.id)) reservations.set(ticket.id, ticket.kind);
61
+ };
62
+ const completeBootstrap = () => {
63
+ if (bootstrapComplete) return;
64
+ bootstrapComplete = true;
65
+ for (const [id, kind] of reservations) if (kind === null) reservations.delete(id);
66
+ };
67
+ return {
68
+ get pageSeed() {
69
+ return pageSeed;
70
+ },
71
+ get tickets() {
72
+ return [...records.values()].map(copy);
73
+ },
74
+ allocate(kind, explicitId, wantsOpen = false, phase = "server", declarationKey, initialActive = true, owner) {
75
+ if (!ownerValid(kind, owner) || typeof initialActive !== "boolean" || declarationKey !== void 0 && !nonempty(declarationKey) || phase !== "server" && phase !== "client" || !kindValid(kind) || explicitId !== void 0 && !nonempty(explicitId)) throw new TypeError("Invalid modal identity");
76
+ const next = ordinal + 1;
77
+ const id = explicitId ?? `qw-${kind}-${encodeURIComponent(pageSeed)}-${next}`;
78
+ if (records.has(id)) throw new TypeError(`Duplicate modal identity: ${id}`);
79
+ ordinal = next;
80
+ const firstOwner = initialActive ? reservations.keys().next().value ?? null : null;
81
+ const admitted = wantsOpen && (!initialActive || kind === "dialog" || firstOwner === null);
82
+ const ticket = {
83
+ id,
84
+ kind,
85
+ pageSeed,
86
+ ordinal,
87
+ initialAdmitted: admitted,
88
+ initialOwnerId: wantsOpen ? firstOwner ?? (admitted ? id : null) : null,
89
+ ...declarationKey !== void 0 ? { declarationKey } : {},
90
+ ...!initialActive ? { initialActive: false } : {},
91
+ ...owner !== void 0 ? { owner } : {}
92
+ };
93
+ if (phase === "server") {
94
+ records.set(id, ticket);
95
+ identities.set(id, ticket);
96
+ incarnations.set(id, next);
97
+ retired.delete(id);
98
+ released.delete(id);
99
+ notified.delete(id);
100
+ serverDeclarations.set(id, next);
101
+ reserve(ticket);
102
+ return copy(ticket);
103
+ }
104
+ const result = copy(ticket);
105
+ speculative.set(result, ticket);
106
+ return result;
107
+ },
108
+ adopt(input) {
109
+ validateTicket(input);
110
+ if (pageSeed !== input.pageSeed) {
111
+ if (explicitSeed || ordinal !== 0 || records.size !== 0) throw new TypeError("Modal pageSeed mismatch");
112
+ pageSeed = input.pageSeed;
113
+ }
114
+ const existing = identities.get(input.id);
115
+ const ticket = copy(input);
116
+ if (existing && JSON.stringify(existing) !== JSON.stringify(ticket)) throw new TypeError("Conflicting modal ticket");
117
+ if ([...records.values()].some((record) => record.ordinal === ticket.ordinal && record.id !== ticket.id)) throw new TypeError("Conflicting modal ordinal");
118
+ ordinal = Math.max(ordinal, ticket.ordinal);
119
+ if (!released.has(ticket.id)) serverDeclarations.set(ticket.id, ticket.ordinal);
120
+ if (!released.has(ticket.id)) {
121
+ records.set(ticket.id, ticket);
122
+ identities.set(ticket.id, ticket);
123
+ incarnations.set(ticket.id, ticket.ordinal);
124
+ }
125
+ reserve(ticket);
126
+ return copy(ticket);
127
+ },
128
+ acquire(ticket, wantsOpen, claimant = ticket) {
129
+ validateTicket(ticket);
130
+ if (active.has(ticket.id) && claimants.get(ticket.id) !== claimant) throw new TypeError(`Duplicate modal identity: ${ticket.id}`);
131
+ const previousOrdinal = incarnations.get(ticket.id);
132
+ if (ticket.pageSeed !== pageSeed || previousOrdinal !== void 0 && ticket.ordinal < previousOrdinal) throw new TypeError("Stale modal render ticket");
133
+ const existing = previousOrdinal === ticket.ordinal ? identities.get(ticket.id) : speculative.get(ticket);
134
+ if (!existing) throw new TypeError("Unknown speculative modal ticket");
135
+ if (JSON.stringify(existing) !== JSON.stringify(copy(ticket))) throw new TypeError("Conflicting modal ticket");
136
+ completeBootstrap();
137
+ if (previousOrdinal !== ticket.ordinal) {
138
+ notified.delete(ticket.id);
139
+ consumedDeclarations.delete(ticket.id);
140
+ }
141
+ records.set(ticket.id, copy(ticket));
142
+ identities.set(ticket.id, copy(ticket));
143
+ incarnations.set(ticket.id, ticket.ordinal);
144
+ released.delete(ticket.id);
145
+ consumedDeclarations.set(ticket.id, ticket.ordinal);
146
+ const admitted = wantsOpen && (ticket.kind === "dialog" || reservations.has(ticket.id) || ![...reservations.keys()].some((id) => id !== ticket.id));
147
+ const session = (sessions.get(ticket.id) ?? 0) + 1;
148
+ sessions.set(ticket.id, session);
149
+ const lease = {
150
+ id: ticket.id,
151
+ ordinal: ticket.ordinal,
152
+ session,
153
+ admitted
154
+ };
155
+ active.set(ticket.id, lease);
156
+ claimants.set(ticket.id, claimant);
157
+ if (admitted) {
158
+ retired.delete(ticket.id);
159
+ reservations.set(ticket.id, ticket.kind);
160
+ } else {
161
+ retired.add(ticket.id);
162
+ reservations.delete(ticket.id);
163
+ }
164
+ return { ...lease };
165
+ },
166
+ syncLease(lease, open) {
167
+ if (!owns(lease)) return false;
168
+ const ticket = records.get(lease.id);
169
+ if (open) {
170
+ retired.delete(lease.id);
171
+ reservations.set(lease.id, ticket.kind);
172
+ } else {
173
+ retired.add(lease.id);
174
+ reservations.delete(lease.id);
175
+ }
176
+ return true;
177
+ },
178
+ releaseLease(lease) {
179
+ if (!owns(lease)) return false;
180
+ active.delete(lease.id);
181
+ claimants.delete(lease.id);
182
+ reservations.delete(lease.id);
183
+ retired.add(lease.id);
184
+ released.add(lease.id);
185
+ records.delete(lease.id);
186
+ return true;
187
+ },
188
+ isServerTicket(ticket) {
189
+ return ticket.initialActive !== false && serverDeclarations.get(ticket.id) === ticket.ordinal && consumedDeclarations.get(ticket.id) !== ticket.ordinal && !retired.has(ticket.id) && !released.has(ticket.id);
190
+ },
191
+ completeBootstrap,
192
+ hasOther(id, ignored = []) {
193
+ return [...reservations.keys()].some((owner) => owner !== id && !ignored.includes(owner));
194
+ },
195
+ sync(id, kind, open, expected) {
196
+ if (!current(id, expected) || released.has(id)) return;
197
+ if (open) {
198
+ retired.delete(id);
199
+ reservations.set(id, kind);
200
+ } else {
201
+ retired.add(id);
202
+ reservations.delete(id);
203
+ }
204
+ },
205
+ release(id, expected) {
206
+ if (!current(id, expected)) return;
207
+ reservations.delete(id);
208
+ retired.add(id);
209
+ released.add(id);
210
+ records.delete(id);
211
+ notified.delete(id);
212
+ active.delete(id);
213
+ claimants.delete(id);
214
+ },
215
+ notifyInitialRejection(id, notify) {
216
+ const ticket = records.get(id);
217
+ if (!notify || !ticket || notified.has(id) || ticket.kind !== "popup" || ticket.initialAdmitted || ticket.initialOwnerId === null) return;
218
+ notified.add(id);
219
+ notify(false);
220
+ }
221
+ };
222
+ }
223
+ function wantsModalOpen(props) {
224
+ return props.open === true || props.open === void 0 && props.defaultOpen === true;
225
+ }
226
+ function createModalTicketCursor(scope, tickets) {
227
+ let position = 0;
228
+ const bootstrap = tickets?.map((ticket) => scope.adopt(ticket));
229
+ const cache = /* @__PURE__ */ new Map();
230
+ const bound = /* @__PURE__ */ new Set();
231
+ const keyed = bootstrap?.some((ticket) => ticket.declarationKey !== void 0) ?? false;
232
+ for (const ticket of bootstrap ?? []) {
233
+ if (ticket.declarationKey === void 0) continue;
234
+ if (cache.has(ticket.declarationKey)) throw new TypeError("Duplicate modal root declaration key");
235
+ cache.set(ticket.declarationKey, ticket);
236
+ }
237
+ function checked(ticket, kind, explicitId, owner) {
238
+ if (ticket.owner !== owner || ticket.kind !== kind || explicitId !== void 0 && ticket.id !== explicitId) throw new TypeError("Modal root ticket order or identity mismatch");
239
+ bound.add(ticket.ordinal);
240
+ return { ...ticket };
241
+ }
242
+ function take(kind, explicitId, wantsOpen = false, phase = "server", declarationKey, initialActive = true, owner) {
243
+ const key = declarationKey ?? explicitId;
244
+ if (!bootstrap && phase === "client") return scope.allocate(kind, explicitId, wantsOpen, phase, declarationKey, initialActive, owner);
245
+ const previous = key === void 0 ? void 0 : cache.get(key);
246
+ if (previous) return checked(previous, kind, explicitId, owner);
247
+ if (!bootstrap) {
248
+ const ticket = scope.allocate(kind, explicitId, wantsOpen, phase, declarationKey, initialActive, owner);
249
+ if (key !== void 0) cache.set(key, ticket);
250
+ return ticket;
251
+ }
252
+ const named = explicitId === void 0 ? void 0 : bootstrap.find((ticket) => ticket.id === explicitId);
253
+ if (named) return checked(named, kind, explicitId, owner);
254
+ if (keyed && declarationKey !== void 0) {
255
+ if (phase === "client") return scope.allocate(kind, explicitId, wantsOpen, phase, declarationKey, initialActive, owner);
256
+ throw new TypeError("Modal root declaration key mismatch");
257
+ }
258
+ while (bootstrap[position] && bound.has(bootstrap[position].ordinal)) position++;
259
+ const ticket = bootstrap[position];
260
+ if (!ticket && phase === "client") return scope.allocate(kind, explicitId, wantsOpen, phase, declarationKey, initialActive, owner);
261
+ if (!ticket) throw new TypeError("Modal root ticket order or identity mismatch");
262
+ const result = checked(ticket, kind, explicitId, owner);
263
+ position++;
264
+ if (key !== void 0) cache.set(key, ticket);
265
+ return result;
266
+ }
267
+ return {
268
+ take,
269
+ takeProps: (kind, props, phase, declarationKey, initialActive, owner) => take(kind, props.id, wantsModalOpen(props), phase, declarationKey, initialActive, owner)
270
+ };
271
+ }
272
+ //#endregion
273
+ //#region src/modal-render-runtime.ts
274
+ const states = /* @__PURE__ */ new WeakMap();
275
+ const registrations = /* @__PURE__ */ new Map();
276
+ function unregisterLease(id, lease) {
277
+ if (registrations.get(id) !== lease) return;
278
+ registrations.delete(id);
279
+ disposeModalSession(id);
280
+ }
281
+ function stateFor(runtime) {
282
+ let state = states.get(runtime);
283
+ if (!state) {
284
+ state = {
285
+ mounted: false,
286
+ notified: false,
287
+ initialPending: true,
288
+ suppressedClose: false,
289
+ open: false,
290
+ initialSynced: false,
291
+ initialRejected: false,
292
+ pendingRejected: false,
293
+ identityInitialized: false,
294
+ retiring: []
295
+ };
296
+ states.set(runtime, state);
297
+ }
298
+ return state;
299
+ }
300
+ /** Resolve explicit identity changes without render-time global registration. */
301
+ function updateModalRenderIdentity(runtime, props) {
302
+ const state = stateFor(runtime);
303
+ if (!state.identityInitialized) {
304
+ state.identityInitialized = true;
305
+ state.explicitId = props.id;
306
+ return runtime.ticket.id;
307
+ }
308
+ if (state.explicitId === props.id) return runtime.ticket.id;
309
+ const previous = runtime.ticket;
310
+ const next = runtime.scope.allocate(previous.kind, props.id, wantsModalOpen(props), runtime.phase, void 0, void 0, previous.owner);
311
+ if (state.lease) state.retiring.push({
312
+ ticket: previous,
313
+ lease: state.lease
314
+ });
315
+ else runtime.scope.release(previous.id, previous.ordinal);
316
+ runtime.ticket = next;
317
+ state.lease = void 0;
318
+ state.explicitId = props.id;
319
+ state.initialPending = false;
320
+ return next.id;
321
+ }
322
+ function releaseRetiring(runtime, state) {
323
+ for (const previous of state.retiring) {
324
+ runtime.scope.releaseLease(previous.lease);
325
+ unregisterLease(previous.ticket.id, previous.lease);
326
+ }
327
+ state.retiring = [];
328
+ }
329
+ /** Pure server projection; a hydrated first tree follows its declaration ticket. */
330
+ function modalRenderBlocked(runtime, wantsOpen) {
331
+ if (runtime.phase === "client") runtime.scope.completeBootstrap();
332
+ if (runtime.ticket.kind === "dialog") return false;
333
+ if (!wantsOpen) {
334
+ if (runtime.phase === "client") stateFor(runtime).pendingRejected = false;
335
+ return false;
336
+ }
337
+ if (runtime.phase === "server") return !runtime.ticket.initialAdmitted;
338
+ const state = stateFor(runtime);
339
+ if (state.open || !state.initialSynced && runtime.scope.isServerTicket(runtime.ticket) && runtime.ticket.initialAdmitted) return false;
340
+ const blocked = !state.initialSynced && runtime.scope.isServerTicket(runtime.ticket) && !runtime.ticket.initialAdmitted && runtime.ticket.initialOwnerId !== null || runtime.scope.hasOther(runtime.ticket.id, state.retiring.map((previous) => previous.ticket.id)) || hasOtherModalExcept(runtime.ticket.id, state.retiring.map((previous) => previous.ticket.id));
341
+ state.pendingRejected = blocked;
342
+ return blocked;
343
+ }
344
+ /** Notify a mounted client request once until a close or successful admission. */
345
+ function notifyModalRenderRejection(runtime, notify) {
346
+ if (runtime.phase !== "client" || !notify) return;
347
+ const state = stateFor(runtime);
348
+ if (!state.mounted || state.notified) return;
349
+ state.notified = true;
350
+ notify(false);
351
+ }
352
+ /** The machine's close projection must not duplicate a rejection already notified. */
353
+ function notifyModalRenderOpenChange(runtime, open, notify) {
354
+ const state = stateFor(runtime);
355
+ if (!open && state.suppressedClose) {
356
+ state.suppressedClose = false;
357
+ return;
358
+ }
359
+ if (open) state.notified = false;
360
+ notify(open);
361
+ }
362
+ /** Mounted/layout transport: acquire atomically, sync both registries, return actual open. */
363
+ function syncModalRender(runtime, open, notify) {
364
+ if (runtime.phase === "server") return runtime.ticket.initialAdmitted && open;
365
+ const state = stateFor(runtime);
366
+ const { scope, ticket } = runtime;
367
+ scope.completeBootstrap();
368
+ releaseRetiring(runtime, state);
369
+ if (!state.initialSynced) state.initialRejected = scope.isServerTicket(ticket) && !ticket.initialAdmitted && ticket.initialOwnerId !== null;
370
+ const retainAdmission = state.open || !state.initialSynced && scope.isServerTicket(ticket) && ticket.initialAdmitted;
371
+ if (!state.lease) state.lease = scope.acquire(ticket, open, runtime);
372
+ state.mounted = true;
373
+ const initiallyRejected = state.initialRejected;
374
+ const blocked = ticket.kind === "popup" && open && !retainAdmission && (scope.hasOther(ticket.id) || hasOtherModal(ticket.id));
375
+ const actual = open && !blocked;
376
+ if (!scope.syncLease(state.lease, actual)) return false;
377
+ if (actual) {
378
+ registrations.set(ticket.id, state.lease);
379
+ syncModalRegistration(ticket.id, ticket.kind, true);
380
+ } else unregisterLease(ticket.id, state.lease);
381
+ state.open = actual;
382
+ state.initialSynced = true;
383
+ if (blocked) {
384
+ state.suppressedClose = true;
385
+ notifyModalRenderRejection(runtime, notify);
386
+ } else if (state.pendingRejected || initiallyRejected && state.initialPending) notifyModalRenderRejection(runtime, notify);
387
+ else if (actual || !open) state.notified = false;
388
+ if (notify || actual || !initiallyRejected) state.initialPending = false;
389
+ return actual;
390
+ }
391
+ /** Session ownership prevents obsolete cleanup from clearing a reacquired ticket. */
392
+ function disposeModalRender(runtime) {
393
+ if (runtime.phase === "server") return;
394
+ const state = stateFor(runtime);
395
+ releaseRetiring(runtime, state);
396
+ if (state.lease) {
397
+ runtime.scope.releaseLease(state.lease);
398
+ unregisterLease(runtime.ticket.id, state.lease);
399
+ }
400
+ state.lease = void 0;
401
+ state.mounted = false;
402
+ }
403
+ //#endregion
404
+ //#region src/popup/popup.ts
405
+ /** Popup 的 Core machine;共享声明归属与焦点策略,按物理节点准入关闭监听。 */
406
+ const popupMachine = createModalDialogMachine(trackModalDismissableElement);
407
+ const FALLBACK_NAME = "弹出层";
408
+ function popupId(props) {
409
+ return props.id ?? "";
410
+ }
411
+ /**
412
+ * 已有其它模态时拒绝打开。同一 id 在撤回或阻塞消失前只通知一次。
413
+ * 返回 true 表示这次请求被拒。
414
+ * deferNotice:调用发生在适配层渲染期间时为 true,通知改到微任务,避免在渲染中更新调用方状态。
415
+ */
416
+ function rejectIfOtherModal(id, onOpenChange, deferNotice = false) {
417
+ if (!hasOtherModal(id)) {
418
+ releaseRejectedOpenNotice(id);
419
+ return false;
420
+ }
421
+ if (onOpenChange && claimRejectedOpenNotice(id)) if (deferNotice) {
422
+ const token = rejectedOpenNoticeToken(id);
423
+ queueMicrotask(() => {
424
+ if (rejectedOpenNoticeToken(id) === token) onOpenChange(false);
425
+ });
426
+ } else onOpenChange(false);
427
+ return true;
428
+ }
429
+ /** 未知 placement 回退 bottom。 */
430
+ function resolvePopupPlacement(value) {
431
+ return value === "top" ? "top" : "bottom";
432
+ }
433
+ /** 可访问名称:title → ariaLabel → 「弹出层」。空白视为缺省。 */
434
+ function getPopupAccessibleName(props) {
435
+ const title = props.title?.trim();
436
+ if (title) return title;
437
+ const label = props.ariaLabel?.trim();
438
+ if (label) return label;
439
+ return FALLBACK_NAME;
440
+ }
441
+ /** positioner 与 content 共用的 data 属性。safeArea 缺省为开启。 */
442
+ function getPopupDataAttrs(props) {
443
+ return {
444
+ "data-placement": resolvePopupPlacement(props.placement),
445
+ "data-safe-area": props.safeArea === false ? void 0 : ""
446
+ };
447
+ }
448
+ /** header / body / footer 没有 Zag part,scope 与 part 由 Core 输出。 */
449
+ function getPopupPartProps(part) {
450
+ return {
451
+ "data-scope": "popup",
452
+ "data-part": part
453
+ };
454
+ }
455
+ /** 把公开 props 转成 zag dialog context。受控 open:true 被拒时映射为关闭。 */
456
+ function createPopupProps(props = {}, runtime) {
457
+ const id = popupId(props);
458
+ if (!runtime && props.open === false) releaseRejectedOpenNotice(id);
459
+ const wantsInitialOpen = props.open === true || props.open === void 0 && props.defaultOpen === true;
460
+ const blocked = runtime ? modalRenderBlocked(runtime, wantsInitialOpen) : wantsInitialOpen && rejectIfOtherModal(id, props.onOpenChange, true);
461
+ const ctx = {
462
+ id: props.id,
463
+ open: blocked && props.open === true ? false : props.open,
464
+ defaultOpen: blocked || typeof props.open === "boolean" ? false : props.defaultOpen,
465
+ role: "dialog",
466
+ modal: true,
467
+ closeOnEscape: true,
468
+ closeOnInteractOutside: props.closeOnMaskClick !== false,
469
+ preventScroll: props.disableBodyScroll !== false,
470
+ finalFocusEl: props.returnFocus
471
+ };
472
+ if (!props.title?.trim()) ctx["aria-label"] = getPopupAccessibleName(props);
473
+ if (props.onOpenChange) {
474
+ const cb = props.onOpenChange;
475
+ ctx.onOpenChange = (details) => {
476
+ if (runtime) notifyModalRenderOpenChange(runtime, details.open, cb);
477
+ else cb(details.open);
478
+ };
479
+ }
480
+ return ctx;
481
+ }
482
+ function withPopupScope(props) {
483
+ return {
484
+ ...props,
485
+ "data-scope": "popup"
486
+ };
487
+ }
488
+ /**
489
+ * Popup 的 anatomy 没有 description part(见 docs/accessibility.md),
490
+ * 但 zag dialog 的 rendered.description 初值是 true,只有 open entry 的 raf DOM 扫描才纠正它。
491
+ * SSR 首树与 raf 之前的首帧因此会在 content 上发出指向不存在节点的 aria-describedby。
492
+ *
493
+ * 这里在 normalize **之前**从 content 的 raw 属性里摘掉这个键:normalize 之后再删会被
494
+ * 任何做键映射的 normalizer 绕过。只改写 element,其余成员转发给调用方的 normalize。
495
+ * 需要描述的 headless 调用者照常渲染 getDescriptionProps(),并自行写 aria-describedby。
496
+ *
497
+ * 代理的目标是一个空壳而不是 normalize 本身,否则两类合法输入会崩:
498
+ * 冻结对象的 element 是不可配置不可写自有属性,get 返回替代函数违反 Proxy 不变量;
499
+ * 带私有字段的 class normalizer 若以代理为 receiver 调用方法,私有字段归属会出错。
500
+ * 空壳没有自有属性,不受不变量约束;成员统一绑回原 normalize,保住它的 receiver。
501
+ * 不能改用展开复制——createNormalizer 返回的是对 {} 的 Proxy,自有键为空,展开会丢光虚拟成员。
502
+ */
503
+ function withoutContentDescriptionRef(normalize) {
504
+ const element = (props) => {
505
+ if (props["data-scope"] !== "dialog" || props["data-part"] !== "content") return normalize.element(props);
506
+ const { "aria-describedby": _absent, ...rest } = props;
507
+ return normalize.element(rest);
508
+ };
509
+ return new Proxy({}, {
510
+ get(_shell, key) {
511
+ if (key === "element") return element;
512
+ const member = Reflect.get(normalize, key);
513
+ return typeof member === "function" ? member.bind(normalize) : member;
514
+ },
515
+ has: (_shell, key) => Reflect.has(normalize, key)
516
+ });
517
+ }
518
+ /**
519
+ * 包装 zag connect。触发器 onClick 与 setOpen(true) 先查登记;
520
+ * 被拒时 onClick 调 preventDefault,让 zag 看到 defaultPrevented 后不发 TOGGLE。
521
+ * setOpen(true) 被拒则直接返回,不向 zag 发事件。
522
+ */
523
+ function connectPopup(service, normalize, props = {}, runtime) {
524
+ const api = connect(modalRequestService(service), withoutContentDescriptionRef(normalize));
525
+ const id = popupId(props);
526
+ const isOpen = () => service.state.matches("open");
527
+ const reject = () => {
528
+ if (!runtime) return rejectIfOtherModal(id, props.onOpenChange);
529
+ if (!modalRenderBlocked(runtime, true)) return false;
530
+ notifyModalRenderRejection(runtime, props.onOpenChange);
531
+ return true;
532
+ };
533
+ return {
534
+ ...api,
535
+ getOriginProps: () => normalize.element(modalOriginAttrs(service.scope.id, "popup")),
536
+ setOpen(nextOpen) {
537
+ if (nextOpen) cancelModalClose(service);
538
+ if (nextOpen && !isOpen() && reject()) return;
539
+ api.setOpen(nextOpen);
540
+ },
541
+ getTriggerProps(triggerProps) {
542
+ const trigger = api.getTriggerProps(triggerProps);
543
+ const key = typeof trigger.onClick === "function" ? "onClick" : "onclick";
544
+ const previous = trigger[key];
545
+ return withPopupScope({
546
+ ...trigger,
547
+ [key](event) {
548
+ if (!isOpen() && !event.defaultPrevented && reject()) event.preventDefault();
549
+ previous?.(event);
550
+ }
551
+ });
552
+ },
553
+ getBackdropProps() {
554
+ return withPopupScope(api.getBackdropProps());
555
+ },
556
+ getPositionerProps() {
557
+ return withPopupScope(api.getPositionerProps());
558
+ },
559
+ getContentProps() {
560
+ return withPopupScope(api.getContentProps());
561
+ },
562
+ getTitleProps() {
563
+ return withPopupScope(api.getTitleProps());
564
+ },
565
+ getDescriptionProps() {
566
+ return withPopupScope(api.getDescriptionProps());
567
+ },
568
+ getCloseTriggerProps() {
569
+ return withPopupScope(api.getCloseTriggerProps());
570
+ }
571
+ };
572
+ }
573
+ //#endregion
574
+ export { getPopupPartProps as a, disposeModalRender as c, createModalRenderScope as d, createModalTicketCursor as f, getPopupDataAttrs as i, syncModalRender as l, createPopupProps as n, popupMachine as o, wantsModalOpen as p, getPopupAccessibleName as r, resolvePopupPlacement as s, connectPopup as t, updateModalRenderIdentity as u };
575
+
576
+ //# sourceMappingURL=popup-z5d8IYCt.js.map