@qw-ui/core 0.3.0-next.40 → 0.3.0-next.42
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.
- package/README.md +21 -37
- package/dist/action-sheet/action-sheet.d.ts +110 -0
- package/dist/action-sheet/index.d.ts +2 -0
- package/dist/action-sheet/index.js +2 -0
- package/dist/action-sheet-Cvcr1S_m.js +183 -0
- package/dist/action-sheet-Cvcr1S_m.js.map +1 -0
- package/dist/area-picker/area-picker.d.ts +113 -0
- package/dist/area-picker/index.d.ts +1 -0
- package/dist/area-picker/index.js +348 -0
- package/dist/area-picker/index.js.map +1 -0
- package/dist/aria-description-CimD2M_C.js +13 -0
- package/dist/aria-description-CimD2M_C.js.map +1 -0
- package/dist/aria-description.d.ts +2 -0
- package/dist/avatar/avatar-load.d.ts +76 -0
- package/dist/avatar/avatar.d.ts +22 -5
- package/dist/avatar/index.d.ts +1 -0
- package/dist/avatar/index.js +57 -18
- package/dist/avatar/index.js.map +1 -1
- package/dist/avatar-load-w9dq05oV.js +139 -0
- package/dist/avatar-load-w9dq05oV.js.map +1 -0
- package/dist/back-top/back-top.d.ts +77 -0
- package/dist/back-top/index.d.ts +1 -0
- package/dist/back-top/index.js +189 -0
- package/dist/back-top/index.js.map +1 -0
- package/dist/badge/badge.d.ts +9 -0
- package/dist/badge/index.js +14 -1
- package/dist/badge/index.js.map +1 -1
- package/dist/button/button.d.ts +13 -0
- package/dist/button/index.js +3 -5
- package/dist/button/index.js.map +1 -1
- package/dist/calendar/calendar.d.ts +100 -0
- package/dist/calendar/index.d.ts +1 -0
- package/dist/calendar/index.js +2 -0
- package/dist/calendar-CmpK3stz.js +363 -0
- package/dist/calendar-CmpK3stz.js.map +1 -0
- package/dist/card/card.d.ts +68 -0
- package/dist/card/index.d.ts +2 -0
- package/dist/card/index.js +2 -0
- package/dist/card-DRtWa6Cr.js +107 -0
- package/dist/card-DRtWa6Cr.js.map +1 -0
- package/dist/cascader/cascader.d.ts +115 -0
- package/dist/cascader/index.d.ts +1 -0
- package/dist/cascader/index.js +2 -0
- package/dist/cascader-D-xMjs7P.js +333 -0
- package/dist/cascader-D-xMjs7P.js.map +1 -0
- package/dist/cell/cell.d.ts +41 -0
- package/dist/cell/index.d.ts +1 -0
- package/dist/cell/index.js +43 -0
- package/dist/cell/index.js.map +1 -0
- package/dist/check-list/check-list.d.ts +78 -0
- package/dist/check-list/index.d.ts +2 -0
- package/dist/check-list/index.js +2 -0
- package/dist/check-list-BvZHQt5w.js +60 -0
- package/dist/check-list-BvZHQt5w.js.map +1 -0
- package/dist/checkbox/checkbox.d.ts +59 -0
- package/dist/checkbox/index.d.ts +2 -0
- package/dist/checkbox/index.js +2 -0
- package/dist/checkbox-BlndJrz5.js +127 -0
- package/dist/checkbox-BlndJrz5.js.map +1 -0
- package/dist/checkbox-group/checkbox-group.d.ts +86 -0
- package/dist/checkbox-group/index.d.ts +3 -0
- package/dist/checkbox-group/index.js +2 -0
- package/dist/checkbox-group-gGfsTv-e.js +223 -0
- package/dist/checkbox-group-gGfsTv-e.js.map +1 -0
- package/dist/choice-group-C4c9m0qe.js +373 -0
- package/dist/choice-group-C4c9m0qe.js.map +1 -0
- package/dist/circle/circle.d.ts +97 -0
- package/dist/circle/index.d.ts +1 -0
- package/dist/circle/index.js +119 -0
- package/dist/circle/index.js.map +1 -0
- package/dist/collapse/collapse.d.ts +98 -0
- package/dist/collapse/index.d.ts +2 -0
- package/dist/collapse/index.js +2 -0
- package/dist/collapse-B969h7-H.js +226 -0
- package/dist/collapse-B969h7-H.js.map +1 -0
- package/dist/countdown/countdown.d.ts +114 -0
- package/dist/countdown/index.d.ts +1 -0
- package/dist/countdown/index.js +309 -0
- package/dist/countdown/index.js.map +1 -0
- package/dist/date-picker/date-picker.d.ts +168 -0
- package/dist/date-picker/index.d.ts +1 -0
- package/dist/date-picker/index.js +401 -0
- package/dist/date-picker/index.js.map +1 -0
- package/dist/descriptions/descriptions.d.ts +69 -0
- package/dist/descriptions/index.d.ts +1 -0
- package/dist/descriptions/index.js +86 -0
- package/dist/descriptions/index.js.map +1 -0
- package/dist/dialog/dialog.d.ts +32 -3
- package/dist/dialog/index.js +58 -3
- package/dist/dialog/index.js.map +1 -1
- package/dist/divider/divider.d.ts +18 -2
- package/dist/divider/index.js +20 -2
- package/dist/divider/index.js.map +1 -1
- package/dist/dropdown/dropdown.d.ts +172 -0
- package/dist/dropdown/index.d.ts +2 -0
- package/dist/dropdown/index.js +467 -0
- package/dist/dropdown/index.js.map +1 -0
- package/dist/ellipsis/ellipsis-layout.d.ts +34 -0
- package/dist/ellipsis/ellipsis.d.ts +88 -0
- package/dist/ellipsis/index.d.ts +2 -0
- package/dist/ellipsis/index.js +320 -0
- package/dist/ellipsis/index.js.map +1 -0
- package/dist/empty/empty-illustration.d.ts +3 -0
- package/dist/empty/empty.d.ts +43 -1
- package/dist/empty/index.js +2 -21
- package/dist/empty-CAgyvhUI.js +166 -0
- package/dist/empty-CAgyvhUI.js.map +1 -0
- package/dist/field/field.d.ts +95 -0
- package/dist/field/index.d.ts +2 -0
- package/dist/field/index.js +2 -0
- package/dist/field-DMHGIMZF.js +241 -0
- package/dist/field-DMHGIMZF.js.map +1 -0
- package/dist/floating-bubble/floating-bubble.d.ts +116 -0
- package/dist/floating-bubble/index.d.ts +1 -0
- package/dist/floating-bubble/index.js +333 -0
- package/dist/floating-bubble/index.js.map +1 -0
- package/dist/floating-panel/floating-panel.d.ts +80 -0
- package/dist/floating-panel/index.d.ts +2 -0
- package/dist/floating-panel/index.js +2 -0
- package/dist/floating-panel-Cbm5njBJ.js +363 -0
- package/dist/floating-panel-Cbm5njBJ.js.map +1 -0
- package/dist/footer/footer.d.ts +94 -0
- package/dist/footer/index.d.ts +1 -0
- package/dist/footer/index.js +154 -0
- package/dist/footer/index.js.map +1 -0
- package/dist/form/connect.d.ts +6 -0
- package/dist/form/form.d.ts +100 -0
- package/dist/form/ids.d.ts +14 -0
- package/dist/form/index.d.ts +13 -0
- package/dist/form/index.js +3 -0
- package/dist/form/methods.d.ts +5 -0
- package/dist/form/model.d.ts +24 -0
- package/dist/form/native.d.ts +25 -0
- package/dist/form/rules.d.ts +40 -0
- package/dist/form/ssr.d.ts +7 -0
- package/dist/form/types.d.ts +150 -0
- package/dist/form-BAGkIEMY.js +1354 -0
- package/dist/form-BAGkIEMY.js.map +1 -0
- package/dist/format-BDUY0C_c.js +89 -0
- package/dist/format-BDUY0C_c.js.map +1 -0
- package/dist/gesture-_SRHIvBm.js +30 -0
- package/dist/gesture-_SRHIvBm.js.map +1 -0
- package/dist/grid/grid-item.d.ts +22 -0
- package/dist/grid/grid.d.ts +42 -0
- package/dist/grid/index.d.ts +2 -0
- package/dist/grid/index.js +73 -0
- package/dist/grid/index.js.map +1 -0
- package/dist/icon/icon.d.ts +37 -1
- package/dist/icon/identity.d.ts +3 -0
- package/dist/icon/index.js +2 -20
- package/dist/icon-Cgdbnk1u.js +77 -0
- package/dist/icon-Cgdbnk1u.js.map +1 -0
- package/dist/image/image-load.d.ts +24 -0
- package/dist/image/image.d.ts +45 -8
- package/dist/image/index.d.ts +1 -0
- package/dist/image/index.js +116 -14
- package/dist/image/index.js.map +1 -1
- package/dist/image-preview/image-preview.d.ts +124 -0
- package/dist/image-preview/index.d.ts +1 -0
- package/dist/image-preview/index.js +450 -0
- package/dist/image-preview/index.js.map +1 -0
- package/dist/index-bar/index-bar.d.ts +121 -0
- package/dist/index-bar/index.d.ts +1 -0
- package/dist/index-bar/index.js +386 -0
- package/dist/index-bar/index.js.map +1 -0
- package/dist/index.d.ts +107 -14
- package/dist/index.js +148 -14
- package/dist/index.js.map +1 -0
- package/dist/infinite-scroll/index.d.ts +1 -0
- package/dist/infinite-scroll/index.js +248 -0
- package/dist/infinite-scroll/index.js.map +1 -0
- package/dist/infinite-scroll/infinite-scroll.d.ts +95 -0
- package/dist/input/index.js +181 -22
- package/dist/input/index.js.map +1 -1
- package/dist/input/input.d.ts +44 -1
- package/dist/layer-IpFrl5--.js +414 -0
- package/dist/layer-IpFrl5--.js.map +1 -0
- package/dist/layout-BRSqi4AQ.js +43 -0
- package/dist/layout-BRSqi4AQ.js.map +1 -0
- package/dist/layout.d.ts +13 -0
- package/dist/list/index.d.ts +2 -0
- package/dist/list/index.js +2 -0
- package/dist/list/list.d.ts +30 -0
- package/dist/list-6-iz-Irh.js +28 -0
- package/dist/list-6-iz-Irh.js.map +1 -0
- package/dist/loading/index.js +45 -2
- package/dist/loading/index.js.map +1 -1
- package/dist/loading/loading.d.ts +45 -2
- package/dist/modal-dialog-machine-CF9_z3Dm.js +487 -0
- package/dist/modal-dialog-machine-CF9_z3Dm.js.map +1 -0
- package/dist/modal-dialog-machine.d.ts +21 -0
- package/dist/modal-dismissable-lifetime.d.ts +21 -0
- package/dist/modal-registry.d.ts +24 -0
- package/dist/modal-render-hydration.d.ts +35 -0
- package/dist/modal-render-runtime.d.ts +19 -0
- package/dist/modal-render-scope.d.ts +63 -0
- package/dist/nav-bar/index.d.ts +1 -0
- package/dist/nav-bar/index.js +115 -0
- package/dist/nav-bar/index.js.map +1 -0
- package/dist/nav-bar/nav-bar.d.ts +76 -0
- package/dist/notice-bar/index.d.ts +2 -0
- package/dist/notice-bar/index.js +2 -0
- package/dist/notice-bar/notice-bar.d.ts +103 -0
- package/dist/notice-bar-DMpwLvRb.js +231 -0
- package/dist/notice-bar-DMpwLvRb.js.map +1 -0
- package/dist/notify/index.d.ts +1 -0
- package/dist/notify/index.js +251 -0
- package/dist/notify/index.js.map +1 -0
- package/dist/notify/notify.d.ts +123 -0
- package/dist/number-keyboard/index.d.ts +1 -0
- package/dist/number-keyboard/index.js +333 -0
- package/dist/number-keyboard/index.js.map +1 -0
- package/dist/number-keyboard/number-keyboard.d.ts +141 -0
- package/dist/page-indicator/index.d.ts +1 -0
- package/dist/page-indicator/index.js +138 -0
- package/dist/page-indicator/index.js.map +1 -0
- package/dist/page-indicator/page-indicator.d.ts +93 -0
- package/dist/pagination/index.d.ts +1 -0
- package/dist/pagination/index.js +198 -0
- package/dist/pagination/index.js.map +1 -0
- package/dist/pagination/pagination.d.ts +125 -0
- package/dist/password-input/index.d.ts +1 -0
- package/dist/password-input/index.js +317 -0
- package/dist/password-input/index.js.map +1 -0
- package/dist/password-input/password-input.d.ts +144 -0
- package/dist/picker/index.d.ts +8 -0
- package/dist/picker/index.js +2 -0
- package/dist/picker/picker-machine.d.ts +80 -0
- package/dist/picker/picker.d.ts +121 -0
- package/dist/picker/platform.d.ts +84 -0
- package/dist/picker/selection-connect.d.ts +90 -0
- package/dist/picker/selection-model.d.ts +211 -0
- package/dist/picker-BykFntQN.js +1675 -0
- package/dist/picker-BykFntQN.js.map +1 -0
- package/dist/popover/index.d.ts +3 -0
- package/dist/popover/index.js +253 -0
- package/dist/popover/index.js.map +1 -0
- package/dist/popover/layer.d.ts +44 -0
- package/dist/popover/popover.d.ts +104 -0
- package/dist/popover/positioning.d.ts +132 -0
- package/dist/popup/index.d.ts +2 -0
- package/dist/popup/index.js +2 -0
- package/dist/popup/popup.d.ts +60 -0
- package/dist/popup-z5d8IYCt.js +576 -0
- package/dist/popup-z5d8IYCt.js.map +1 -0
- package/dist/portal-BHCNTWhg.js +78 -0
- package/dist/portal-BHCNTWhg.js.map +1 -0
- package/dist/portal.d.ts +61 -0
- package/dist/price/format.d.ts +19 -0
- package/dist/price/index.d.ts +1 -0
- package/dist/price/index.js +154 -0
- package/dist/price/index.js.map +1 -0
- package/dist/price/price.d.ts +88 -0
- package/dist/progress/index.d.ts +1 -0
- package/dist/progress/index.js +2 -0
- package/dist/progress/progress.d.ts +32 -0
- package/dist/progress-f3iYEfdA.js +37 -0
- package/dist/progress-f3iYEfdA.js.map +1 -0
- package/dist/pull-refresh/index.d.ts +1 -0
- package/dist/pull-refresh/index.js +414 -0
- package/dist/pull-refresh/index.js.map +1 -0
- package/dist/pull-refresh/pull-refresh.d.ts +118 -0
- package/dist/radio-group/index.d.ts +3 -0
- package/dist/radio-group/index.js +2 -0
- package/dist/radio-group/radio-group.d.ts +78 -0
- package/dist/radio-group-BOIMuqnS.js +230 -0
- package/dist/radio-group-BOIMuqnS.js.map +1 -0
- package/dist/rate/index.d.ts +1 -0
- package/dist/rate/index.js +2 -0
- package/dist/rate/rate-form.d.ts +28 -0
- package/dist/rate/rate.d.ts +144 -0
- package/dist/rate-5XsU2QkY.js +631 -0
- package/dist/rate-5XsU2QkY.js.map +1 -0
- package/dist/reorder/index.d.ts +1 -0
- package/dist/reorder/index.js +720 -0
- package/dist/reorder/index.js.map +1 -0
- package/dist/reorder/reorder.d.ts +190 -0
- package/dist/result/index.d.ts +1 -0
- package/dist/result/index.js +123 -0
- package/dist/result/index.js.map +1 -0
- package/dist/result/result.d.ts +88 -0
- package/dist/safe-area/index.d.ts +1 -0
- package/dist/safe-area/index.js +42 -0
- package/dist/safe-area/index.js.map +1 -0
- package/dist/safe-area/safe-area.d.ts +28 -0
- package/dist/search-bar/index.js +3 -1
- package/dist/search-bar/index.js.map +1 -1
- package/dist/search-bar/search-bar.d.ts +4 -0
- package/dist/segmented/index.d.ts +2 -0
- package/dist/segmented/index.js +2 -0
- package/dist/segmented/segmented.d.ts +127 -0
- package/dist/segmented-BaU38_L4.js +367 -0
- package/dist/segmented-BaU38_L4.js.map +1 -0
- package/dist/selection-form-BOM_odUk.js +88 -0
- package/dist/selection-form-BOM_odUk.js.map +1 -0
- package/dist/selection-form.d.ts +27 -0
- package/dist/selection-ivXqO1eu.js +55 -0
- package/dist/selection-ivXqO1eu.js.map +1 -0
- package/dist/selection.d.ts +29 -0
- package/dist/selector/choice-group.d.ts +114 -0
- package/dist/selector/index.d.ts +2 -0
- package/dist/selector/index.js +2 -0
- package/dist/selector/selector.d.ts +90 -0
- package/dist/selector-BU2MMJ4N.js +93 -0
- package/dist/selector-BU2MMJ4N.js.map +1 -0
- package/dist/share-sheet/index.d.ts +1 -0
- package/dist/share-sheet/index.js +138 -0
- package/dist/share-sheet/index.js.map +1 -0
- package/dist/share-sheet/share-sheet.d.ts +139 -0
- package/dist/skeleton/index.js +51 -2
- package/dist/skeleton/index.js.map +1 -1
- package/dist/skeleton/skeleton.d.ts +34 -3
- package/dist/slider/index.d.ts +1 -0
- package/dist/slider/index.js +482 -0
- package/dist/slider/index.js.map +1 -0
- package/dist/slider/slider.d.ts +174 -0
- package/dist/space/index.d.ts +1 -0
- package/dist/space/index.js +52 -0
- package/dist/space/index.js.map +1 -0
- package/dist/space/space.d.ts +46 -0
- package/dist/statistic/index.d.ts +1 -0
- package/dist/statistic/index.js +152 -0
- package/dist/statistic/index.js.map +1 -0
- package/dist/statistic/statistic.d.ts +101 -0
- package/dist/stepper/index.js +62 -3
- package/dist/stepper/index.js.map +1 -1
- package/dist/stepper/stepper.d.ts +44 -4
- package/dist/steps/index.d.ts +1 -0
- package/dist/steps/index.js +72 -0
- package/dist/steps/index.js.map +1 -0
- package/dist/steps/steps.d.ts +67 -0
- package/dist/sticky/index.d.ts +1 -0
- package/dist/sticky/index.js +145 -0
- package/dist/sticky/index.js.map +1 -0
- package/dist/sticky/sticky.d.ts +70 -0
- package/dist/swipe-action/index.d.ts +1 -0
- package/dist/swipe-action/index.js +417 -0
- package/dist/swipe-action/index.js.map +1 -0
- package/dist/swipe-action/swipe-action.d.ts +148 -0
- package/dist/swiper/gesture.d.ts +32 -0
- package/dist/swiper/index.d.ts +1 -0
- package/dist/swiper/index.js +2 -0
- package/dist/swiper/swiper.d.ts +177 -0
- package/dist/swiper-BKivDkHp.js +550 -0
- package/dist/swiper-BKivDkHp.js.map +1 -0
- package/dist/switch/index.js +135 -10
- package/dist/switch/index.js.map +1 -1
- package/dist/switch/switch.d.ts +93 -6
- package/dist/tabbar/index.js +46 -1
- package/dist/tabbar/index.js.map +1 -1
- package/dist/tabbar/tabbar.d.ts +50 -0
- package/dist/tabs/index.js +22 -1
- package/dist/tabs/index.js.map +1 -1
- package/dist/tabs/tabs.d.ts +12 -8
- package/dist/tag/index.js +123 -2
- package/dist/tag/index.js.map +1 -1
- package/dist/tag/tag.d.ts +67 -1
- package/dist/textarea/index.d.ts +2 -0
- package/dist/textarea/index.js +2 -242
- package/dist/textarea/platform.d.ts +22 -0
- package/dist/textarea/textarea.d.ts +165 -46
- package/dist/textarea-qbnruDUG.js +775 -0
- package/dist/textarea-qbnruDUG.js.map +1 -0
- package/dist/time-picker/index.d.ts +1 -0
- package/dist/time-picker/index.js +228 -0
- package/dist/time-picker/index.js.map +1 -0
- package/dist/time-picker/time-picker.d.ts +83 -0
- package/dist/timeline/index.d.ts +1 -0
- package/dist/timeline/index.js +131 -0
- package/dist/timeline/index.js.map +1 -0
- package/dist/timeline/timeline.d.ts +79 -0
- package/dist/toast/index.js +47 -4
- package/dist/toast/index.js.map +1 -1
- package/dist/toast/toast.d.ts +26 -3
- package/dist/top-bar/index.js +16 -2
- package/dist/top-bar/index.js.map +1 -1
- package/dist/top-bar/top-bar.d.ts +13 -2
- package/dist/tree-select/index.d.ts +1 -0
- package/dist/tree-select/index.js +512 -0
- package/dist/tree-select/index.js.map +1 -0
- package/dist/tree-select/tree-select.d.ts +215 -0
- package/dist/typography/index.d.ts +1 -0
- package/dist/typography/index.js +82 -0
- package/dist/typography/index.js.map +1 -0
- package/dist/typography/typography.d.ts +54 -0
- package/dist/upload/index.d.ts +1 -0
- package/dist/upload/index.js +458 -0
- package/dist/upload/index.js.map +1 -0
- package/dist/upload/upload.d.ts +172 -0
- package/dist/virtual-list/index.d.ts +1 -0
- package/dist/virtual-list/index.js +445 -0
- package/dist/virtual-list/index.js.map +1 -0
- package/dist/virtual-list/virtual-list.d.ts +160 -0
- package/dist/visual-manifest.d.ts +6 -0
- package/dist/watermark/index.d.ts +1 -0
- package/dist/watermark/index.js +260 -0
- package/dist/watermark/index.js.map +1 -0
- package/dist/watermark/watermark.d.ts +106 -0
- package/package.json +399 -50
- package/dist/empty/index.js.map +0 -1
- package/dist/icon/index.js.map +0 -1
- package/dist/textarea/index.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,21 +1,155 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as createFloatingPanelProps, c as snapFloatingPanelHeight, i as connectFloatingPanel, n as FLOATING_PANEL_DEFAULT_ANCHORS, o as floatingPanelMachine, r as FLOATING_PANEL_PARTS, s as resolveFloatingPanelAnchors, t as FLOATING_PANEL_BOUNDARIES } from "./floating-panel-Cbm5njBJ.js";
|
|
2
|
+
import { a as resolveIconName, i as getIconVector, n as ICON_PARTS, o as resolveIconState, r as getIconRootProps, t as ICON_FALLBACK_NAME } from "./icon-Cgdbnk1u.js";
|
|
3
|
+
import { a as SWIPER_MAX_SLIDES, c as clampSwiperIndex, d as getSwiperSlides, f as resolveSwiperDragOffset, h as swiperMachine, i as SWIPER_EDGE_RESISTANCE, l as connectSwiper, m as stepSwiperIndex, n as SWIPER_DIRECTIONS, o as SWIPER_MIN_AUTOPLAY_INTERVAL, p as resolveSwiperState, r as SWIPER_DISTANCE_RATIO, s as SWIPER_PARTS, t as SWIPER_DEFAULT_AUTOPLAY_INTERVAL, u as createSwiperProps } from "./swiper-BKivDkHp.js";
|
|
4
|
+
import { clampImagePreviewTransform, connectImagePreview, createImagePreviewProps, imagePreviewMachine, resolveImagePreviewImages, resolveImagePreviewMaxZoom } from "./image-preview/index.js";
|
|
5
|
+
import { connectShareSheet, createShareSheetProps, resolveShareSheetGroups, shareSheetMachine } from "./share-sheet/index.js";
|
|
6
|
+
import { a as getCascaderColumns, c as normalizeCascaderValue, i as createCascaderProps, l as resolveCascaderPath, n as cascaderMachine, o as getCascaderLabels, r as connectCascader, s as normalizeCascaderOptions, t as CASCADER_PARTS, u as updateCascaderChildren } from "./cascader-D-xMjs7P.js";
|
|
7
|
+
import { AREA_PICKER_PARTS, areaPickerMachine, connectAreaPicker, createAreaPickerProps, resolveAreaPickerValue, toAreaPickerOptions } from "./area-picker/index.js";
|
|
8
|
+
import { TIME_PICKER_COLUMN_TYPES, connectTimePicker, createTimePickerProps, formatTimePickerValue, getTimePickerCandidates, parseTimePickerValue, resolveTimePickerPrecision, timePickerMachine } from "./time-picker/index.js";
|
|
9
|
+
import { a as compareCalendarDates, c as daysInMonth, d as isValidCalendarDate, f as normalizeCalendarValue, i as calendarMachine, l as getCalendarMonthDays, m as toDateKey, n as addCalendarDays, o as connectCalendar, p as selectCalendarDate, r as addCalendarMonths, s as createCalendarProps, t as CALENDAR_PARTS, u as isCalendarDateDisabled } from "./calendar-CmpK3stz.js";
|
|
10
|
+
import "./calendar/index.js";
|
|
11
|
+
import "./cascader/index.js";
|
|
12
|
+
import { DATE_PICKER_COLUMN_TYPES, clampDatePickerDate, connectDatePicker, createDatePickerProps, createDatePickerUtcDate, datePickerMachine, defaultDatePickerFormatter, formatDatePickerValue, fromDatePickerParts, getDatePickerColumnTypes, getDatePickerColumns, getDatePickerPickerId, getDatePickerToday, normalizeDatePickerValue, parseDatePickerInput, resolveDatePickerBounds, resolveDatePickerParts, resolveDatePickerPrecision, toDatePickerIso, toDatePickerParts, toDatePickerPickerValue, truncateDatePickerDate } from "./date-picker/index.js";
|
|
13
|
+
import { l as disposeModalSession, m as syncModalRegistration, r as modalDialogMachine, u as hasOtherModal } from "./modal-dialog-machine-CF9_z3Dm.js";
|
|
14
|
+
import { c as disposeModalRender, d as createModalRenderScope, f as createModalTicketCursor, l as syncModalRender, p as wantsModalOpen, u as updateModalRenderIdentity } from "./popup-z5d8IYCt.js";
|
|
15
|
+
import { _ as isPickerOptionSelectable, a as getPickerAccessibleName, c as isPickerValue, d as pickerMachine, f as PickerSelectionModel, g as getPickerOptionIndex, h as getPickerKeyboardTarget, i as createPickerProps, l as resolvePickerColumns, m as getPickerFirstValue, n as connectPickerColumn, o as getPickerDataAttrs, p as getPickerDiagnostics, r as connectPicker, s as isPickerColumns, t as attachPickerColumn, u as resolvePickerMode } from "./picker-BykFntQN.js";
|
|
16
|
+
import { a as FLOATING_DEFAULT_OFFSET, c as computeFloatingPosition, d as resolveFloatingPlacement, i as FLOATING_ALIGNS, o as FLOATING_PLACEMENTS, p as splitFloatingPlacement, s as FLOATING_SIDES, u as joinFloatingPlacement } from "./layer-IpFrl5--.js";
|
|
17
|
+
import { DROPDOWN_DEFAULT_OFFSET, DROPDOWN_DEFAULT_PLACEMENT, DROPDOWN_MOVES, DROPDOWN_PARTS, DROPDOWN_TYPEAHEAD_TIMEOUT, connectDropdown, createDropdownProps, dropdownMachine, getDropdownMoveTarget, getDropdownTypeaheadTarget, resolveDropdownItems, resolveDropdownState } from "./dropdown/index.js";
|
|
18
|
+
import { POPOVER_DEFAULT_PLACEMENT, POPOVER_PARTS, connectPopover, createPopoverProps, popoverMachine, resolvePopoverState } from "./popover/index.js";
|
|
19
|
+
import { TREE_SELECT_DEFAULT_TEXTS, TREE_SELECT_PARTS, TREE_SELECT_SELECTABLE, connectTreeSelect, createTreeSelectIndex, createTreeSelectProps, getTreeSelectAncestors, getTreeSelectCheckedState, getTreeSelectKeyAction, getTreeSelectLabels, getTreeSelectStaleValue, getTreeSelectSummary, getTreeSelectVisible, resolveTreeSelectExpanded, resolveTreeSelectMode, resolveTreeSelectValue, toggleTreeSelectExpanded, toggleTreeSelectValue, treeSelectMachine } from "./tree-select/index.js";
|
|
20
|
+
import { REORDER_AUTO_SCROLL_EDGE, REORDER_AUTO_SCROLL_SPEED, REORDER_DEFAULT_TEXTS, REORDER_DEFAULT_THRESHOLD, REORDER_PARTS, REORDER_SOURCES, clampReorderOffset, connectReorder, createReorderProps, formatReorderText, getReorderAutoScroll, getReorderEntries, getReorderKeyTarget, getReorderPitch, getReorderShift, getReorderSlotOffset, getReorderTargetIndex, moveReorderKeys, reorderMachine, resolveReorderDisabled, resolveReorderKey, resolveReorderOrder, resolveReorderState, resolveReorderText } from "./reorder/index.js";
|
|
21
|
+
import { PASSWORD_INPUT_CHARSETS, PASSWORD_INPUT_DEFAULT_LENGTH, PASSWORD_INPUT_MASK_GLYPH, PASSWORD_INPUT_MAX_LENGTH, PASSWORD_INPUT_MIN_LENGTH, PASSWORD_INPUT_MODES, PASSWORD_INPUT_PARTS, connectPasswordInput, createPasswordInputProps, mergePasswordInputPaste, normalizePasswordInputLength, normalizePasswordInputValue, passwordInputMachine } from "./password-input/index.js";
|
|
22
|
+
import { VIRTUAL_LIST_ALIGNS, VIRTUAL_LIST_DEFAULT_INITIAL_COUNT, VIRTUAL_LIST_DEFAULT_ITEM_HEIGHT, VIRTUAL_LIST_DEFAULT_OVERSCAN, VIRTUAL_LIST_PARTS, connectVirtualList, createVirtualListProps, findVirtualListFocus, getVirtualListRange, getVirtualListRenderLimit, getVirtualListScrollTop, resolveVirtualListKey, resolveVirtualListState, resolveVirtualListText, virtualListMachine } from "./virtual-list/index.js";
|
|
23
|
+
import { NUMBER_KEYBOARD_DELETE_GLYPH, NUMBER_KEYBOARD_DIGITS, NUMBER_KEYBOARD_LONG_PRESS_DELAY, NUMBER_KEYBOARD_MAX_EXTRA_KEYS, NUMBER_KEYBOARD_PARTS, NUMBER_KEYBOARD_REPEAT_INTERVAL, connectNumberKeyboard, createNumberKeyboardProps, getNumberKeyboardKeys, normalizeNumberKeyboardExtraKeys, numberKeyboardMachine, resolveNumberKeyboardKey } from "./number-keyboard/index.js";
|
|
24
|
+
import { a as getActionSheetDataAttrs, i as getActionSheetAccessibleName, n as connectActionSheet, o as resolveActionSheetActions, r as createActionSheetProps, s as resolveActionSheetActivation, t as actionSheetMachine } from "./action-sheet-Cvcr1S_m.js";
|
|
25
|
+
import { PULL_REFRESH_DEFAULT_DAMPING, PULL_REFRESH_DEFAULT_HEAD_HEIGHT, PULL_REFRESH_DEFAULT_SUCCESS_DURATION, PULL_REFRESH_PARTS, PULL_REFRESH_STATUSES, connectPullRefresh, createPullRefreshProps, pullRefreshMachine, resolvePullDistance, resolvePullRefreshState, resolvePullRefreshStatus } from "./pull-refresh/index.js";
|
|
26
|
+
import { INDEX_BAR_PARTS, connectIndexBar, createIndexBarProps, indexBarMachine, resolveIndexBarActive, resolveIndexBarKeyAt, resolveIndexBarState } from "./index-bar/index.js";
|
|
27
|
+
import { NAV_BAR_HEADING_LEVELS, NAV_BAR_PARTS, connectNavBar, createNavBarProps, navBarMachine, resolveNavBarState } from "./nav-bar/index.js";
|
|
28
|
+
import { UPLOAD_PARTS, UPLOAD_STATUSES, connectUpload, createUploadProps, matchesUploadAccept, normalizeUploadItems, resolveUploadState, uploadMachine } from "./upload/index.js";
|
|
29
|
+
import { NOTIFY_DEFAULT_DURATION, NOTIFY_PARTS, NOTIFY_TYPES, connectNotify, createNotifyProps, notifyMachine, resolveNotifyState } from "./notify/index.js";
|
|
30
|
+
import { FLOATING_BUBBLE_AXES, FLOATING_BUBBLE_BOUNDARIES, FLOATING_BUBBLE_DEFAULT_STEP, FLOATING_BUBBLE_MAGNETS, FLOATING_BUBBLE_PARTS, clampFloatingBubbleOffset, connectFloatingBubble, createFloatingBubbleProps, floatingBubbleMachine, resolveFloatingBubbleState, snapFloatingBubbleOffset } from "./floating-bubble/index.js";
|
|
31
|
+
import { WATERMARK_DEFAULTS, WATERMARK_LAYER_STATES, WATERMARK_PARTS, buildWatermarkTextTile, connectWatermark, createWatermarkProps, escapeWatermarkXml, normalizeWatermarkRotate, resolveWatermarkLayer, resolveWatermarkState, watermarkImageKey, watermarkMachine, watermarkTextTileUrl } from "./watermark/index.js";
|
|
32
|
+
import { SLIDER_ORIENTATIONS, SLIDER_PARTS, connectSlider, createSliderProps, getSliderClosestThumb, getSliderKeyValue, getSliderPercent, getSliderPointValue, getSliderThumbBounds, normalizeSliderValues, resolveSliderState, sliderMachine, snapSliderValue, toSliderValue } from "./slider/index.js";
|
|
33
|
+
import "./swiper/index.js";
|
|
34
|
+
import { SWIPE_ACTION_COLORS, SWIPE_ACTION_DISTANCE_RATIO, SWIPE_ACTION_PARTS, SWIPE_ACTION_SIDES, clampSwipeActionOffset, connectSwipeAction, createSwipeActionProps, getSwipeActionRestOffset, resolveSwipeActionOpen, resolveSwipeActionRelease, resolveSwipeActionState, swipeActionMachine } from "./swipe-action/index.js";
|
|
35
|
+
import { INFINITE_SCROLL_DEFAULT_THRESHOLD, INFINITE_SCROLL_PARTS, INFINITE_SCROLL_STATUSES, connectInfiniteScroll, createInfiniteScrollProps, infiniteScrollMachine, resolveInfiniteScrollState, resolveInfiniteScrollStatus } from "./infinite-scroll/index.js";
|
|
36
|
+
import { BACK_TOP_PARTS, backTopMachine, connectBackTop, createBackTopProps, isBackTopShown, resolveBackTopState } from "./back-top/index.js";
|
|
37
|
+
import { STICKY_PARTS, STICKY_POSITIONS, computeStickyStuck, connectSticky, createStickyProps, resolveStickyState, stickyMachine } from "./sticky/index.js";
|
|
38
|
+
import { PAGE_INDICATOR_DIRECTIONS, PAGE_INDICATOR_PARTS, PAGE_INDICATOR_TONES, connectPageIndicator, createPageIndicatorProps, getPageIndicatorDots, pageIndicatorMachine, resolvePageIndicatorState } from "./page-indicator/index.js";
|
|
39
|
+
import { a as connectNoticeBar, c as resolveNoticeBarDelay, i as NOTICE_BAR_TONES, l as resolveNoticeBarMarquee, n as NOTICE_BAR_DEFAULT_SPEED, o as createNoticeBarProps, r as NOTICE_BAR_PARTS, s as noticeBarMachine, t as NOTICE_BAR_DEFAULT_DELAY, u as resolveNoticeBarSpeed } from "./notice-bar-DMpwLvRb.js";
|
|
40
|
+
import { a as createCollapseProps, c as resolveCollapseHeadingLevel, i as connectCollapse, l as toggleCollapseValue, n as COLLAPSE_PARTS, o as normalizeCollapseItems, r as collapseMachine, s as normalizeCollapseValue, t as COLLAPSE_HEADING_LEVELS } from "./collapse-B969h7-H.js";
|
|
41
|
+
import { a as normalizeCheckListItems, i as createCheckListProps, n as checkListMachine, o as normalizeCheckListValue, r as connectCheckList, t as CHECK_LIST_PARTS } from "./check-list-BvZHQt5w.js";
|
|
42
|
+
import { a as normalizeSelectorOptions, c as selectorMachine, i as createSelectorProps, n as SELECTOR_PARTS, o as normalizeSelectorValue, r as connectSelector, s as resolveSelectorColumns, t as SELECTOR_COLUMNS } from "./selector-BU2MMJ4N.js";
|
|
43
|
+
import { n as getProgressRootProps, r as resolveProgressState, t as PROGRESS_TONES } from "./progress-f3iYEfdA.js";
|
|
44
|
+
import { CIRCLE_DEFAULT_STROKE_WIDTH, CIRCLE_INDETERMINATE_ARC, CIRCLE_LINE_CAPS, CIRCLE_PARTS, CIRCLE_START_POSITIONS, CIRCLE_VIEWBOX, getCircleContentProps, getCircleIndicatorProps, getCircleRootProps, getCircleSvgProps, getCircleTrackProps, resolveCircleState } from "./circle/index.js";
|
|
45
|
+
import { COUNTDOWN_DEFAULT_FORMAT, COUNTDOWN_FAST_INTERVAL, COUNTDOWN_PARTS, COUNTDOWN_STATES, COUNTDOWN_VARIANTS, connectCountdown, countdownMachine, createCountdownProps, formatCountdown, getCountdownSegments, getCountdownTimeParts, resolveCountdownRemaining } from "./countdown/index.js";
|
|
46
|
+
import { STATISTIC_DEFAULT_PLACEHOLDER, STATISTIC_LIVE_MODES, STATISTIC_PARTS, STATISTIC_SIZES, STATISTIC_TRENDS, STATISTIC_TREND_LABELS, getStatisticContentProps, getStatisticPartProps, getStatisticRootProps, getStatisticSegments, resolveStatisticState } from "./statistic/index.js";
|
|
47
|
+
import { PRICE_DEFAULT_ORIGINAL_LABEL, PRICE_DEFAULT_PLACEHOLDER, PRICE_DEFAULT_PRECISION, PRICE_DEFAULT_SYMBOL, PRICE_FRACTION_SIZES, PRICE_PARTS, PRICE_SIZES, PRICE_SYMBOL_POSITIONS, PRICE_TONES, getPricePartProps, getPriceRootProps, getPriceSegments, resolvePriceState } from "./price/index.js";
|
|
48
|
+
import { TIMELINE_DEFAULT_STATUS_LABELS, TIMELINE_MARKER_GLYPHS, TIMELINE_PARTS, TIMELINE_STATUSES, getTimelineDescriptionProps, getTimelineItemProps, getTimelineMarkerProps, getTimelinePartProps, getTimelineRootProps, getTimelineStatusProps, getTimelineStatusText, getTimelineTimeProps, resolveTimelineState } from "./timeline/index.js";
|
|
49
|
+
import { DESCRIPTIONS_LAYOUTS, DESCRIPTIONS_MAX_COLUMN, DESCRIPTIONS_PARTS, getDescriptionsItemProps, getDescriptionsLabelProps, getDescriptionsListProps, getDescriptionsRootProps, getDescriptionsTitleProps, getDescriptionsValueProps, normalizeDescriptionsColumn, resolveDescriptionsState } from "./descriptions/index.js";
|
|
50
|
+
import { FOOTER_CHIP_VARIANTS, FOOTER_PARTS, connectFooter, footerMachine, resolveFooterChips, resolveFooterLinks, sanitizeFooterHref } from "./footer/index.js";
|
|
51
|
+
import { ELLIPSIS_DIRECTIONS, ELLIPSIS_PARTS, ELLIPSIS_PROBE_ATTRIBUTE, buildEllipsisCandidate, connectEllipsis, createEllipsisProps, ellipsisMachine, findEllipsisText, measureEllipsisLayout, normalizeEllipsisRows, observeEllipsisLayout } from "./ellipsis/index.js";
|
|
52
|
+
import { a as getRatePointValue, c as rateMachine, i as createRateProps, l as rateTouchCoverageForGlyphFill, n as RATE_SIZES, o as normalizeRateCount, r as connect$4, s as normalizeRateValue, t as RATE_PARTS } from "./rate-5XsU2QkY.js";
|
|
53
|
+
import { C as setFormValue, S as normalizeFormNamePath, _ as formValuesEqual, a as getFieldDescriptionProps, b as hasFormValue, c as getFieldRequiredProps, d as resolveFieldState, f as cloneFormValue, g as formValueFingerprint, h as formFieldNativeName, i as getFieldControlProps, l as getFieldRootProps, m as formFieldKey, n as FIELD_LAYOUTS, o as getFieldErrorProps, p as cloneFormValues, r as FIELD_PARTS, s as getFieldLabelProps, t as FIELD_LABEL_MODES, u as getFieldStatusProps, v as freezeFormValues, x as mergeFormValues, y as getFormValue } from "./field-DMHGIMZF.js";
|
|
54
|
+
import { a as createSegmentedProps, c as segmentedMachine, i as connect$5, n as SEGMENTED_PARTS, o as normalizeSegmentedItems, r as SEGMENTED_SIZES, s as normalizeSegmentedValue, t as SEGMENTED_MODES } from "./segmented-BaU38_L4.js";
|
|
55
|
+
import { C as formLabelId, S as formFieldStem, _ as validateFormRule, a as connectForm, b as formDomId, c as formMachine, d as submittedFieldValue, f as FORM_DEFAULT_MESSAGES, g as normalizeFormRule, h as isFormEmpty, i as FORM_PARTS, l as normalizeFormFields, m as formErrorMessage, n as assertFormMethodReady, o as connectFormBehavior, p as FORM_MESSAGES_EN, r as invokeFormApi, s as createFormProps, t as assertFormSsrProps, u as normalizeFormInteraction, v as trackFormNative, x as formFieldRootId, y as formControlStem } from "./form-BAGkIEMY.js";
|
|
56
|
+
import "./field/index.js";
|
|
57
|
+
import { RESULT_ANNOUNCEMENTS, RESULT_HEADING_LEVELS, RESULT_PARTS, RESULT_STATUSES, getResultIcon, getResultPartProps, getResultRootProps, resolveResultState } from "./result/index.js";
|
|
58
|
+
import { TYPOGRAPHY_ALIGNS, TYPOGRAPHY_FONT_FAMILIES, TYPOGRAPHY_PARTS, TYPOGRAPHY_TAGS, TYPOGRAPHY_TONES, TYPOGRAPHY_VARIANTS, getTypographyRootProps, resolveTypographyState } from "./typography/index.js";
|
|
59
|
+
import { PAGINATION_MODES, PAGINATION_PARTS, connect as connect$3, createPaginationProps, getPaginationItems, paginationMachine, resolvePaginationState } from "./pagination/index.js";
|
|
60
|
+
import { connect as connect$2, createDialogProps } from "./dialog/index.js";
|
|
61
|
+
import { n as connect$1, r as createCheckboxGroupProps, t as checkboxGroupMachine } from "./checkbox-group-gGfsTv-e.js";
|
|
62
|
+
import { n as createRadioGroupProps, r as radioGroupMachine, t as connect$6 } from "./radio-group-BOIMuqnS.js";
|
|
2
63
|
import { n as OVERLAY_PANEL_PARTS, r as resolveOverlayPanelHeight, t as DEFAULT_OVERLAY_PANEL_HEADER_HEIGHT } from "./overlay-panel-Z_qdKeBj.js";
|
|
3
64
|
import { createTabsProps, tabsMachine } from "./tabs/index.js";
|
|
4
65
|
import { DEFAULT_TOAST_DURATION, DEFAULT_TOAST_POSITION, TOAST_ICON_TYPES, TOAST_PARTS, TOAST_POSITIONS, isToastIconType, resolveToastDuration } from "./toast/index.js";
|
|
5
66
|
import { BUTTON_ICON_POSITIONS, BUTTON_PARTS, BUTTON_SHAPES, BUTTON_SIZES, BUTTON_TONES, BUTTON_VARIANTS, getButtonRootProps, resolveButtonState } from "./button/index.js";
|
|
6
|
-
import { LOADING_SIZES } from "./loading/index.js";
|
|
7
|
-
import { SKELETON_ANIMATIONS, SKELETON_PARTS, SKELETON_RADII, SKELETON_VARIANTS } from "./skeleton/index.js";
|
|
8
|
-
import { DIVIDER_ORIENTATIONS, DIVIDER_PARTS, DIVIDER_WEIGHTS } from "./divider/index.js";
|
|
9
|
-
import { EMPTY_PARTS } from "./empty
|
|
67
|
+
import { LOADING_PARTS, LOADING_SIZES, getLoadingPartProps, getLoadingRootProps, resolveLoadingState } from "./loading/index.js";
|
|
68
|
+
import { SKELETON_ANIMATIONS, SKELETON_PARTS, SKELETON_RADII, SKELETON_VARIANTS, getSkeletonLineProps, getSkeletonRootProps, getSkeletonStyle, resolveSkeletonState } from "./skeleton/index.js";
|
|
69
|
+
import { DIVIDER_ORIENTATIONS, DIVIDER_PARTS, DIVIDER_WEIGHTS, getDividerRootProps, resolveDividerState } from "./divider/index.js";
|
|
70
|
+
import { a as resolveEmptyState, i as getEmptyRootProps, n as getEmptyIllustration, r as getEmptyPartProps, t as EMPTY_PARTS } from "./empty-CAgyvhUI.js";
|
|
10
71
|
import { TOPBAR_VARIANTS, createTopBarProps } from "./top-bar/index.js";
|
|
11
|
-
import {
|
|
12
|
-
import { AVATAR_BADGE_TYPES, AVATAR_LOAD_STATUS, AVATAR_PARTS, AVATAR_SHAPES, AVATAR_SIZES, BADGE_COUNT_MAX, extractInitials, getAvatarBadgeProps, getAvatarFallbackProps, getAvatarImageElementProps, getAvatarImageProps, getAvatarRootProps, resolveAvatarState } from "./avatar/index.js";
|
|
13
|
-
import {
|
|
14
|
-
import { TAG_PARTS, TAG_SIZES, TAG_VARIANTS } from "./tag/index.js";
|
|
15
|
-
import { createInputProps } from "./input/index.js";
|
|
16
|
-
import { SWITCH_PARTS, getSwitchRootProps, getSwitchThumbProps, resolveSwitchState } from "./switch/index.js";
|
|
72
|
+
import { a as getImageRequestStatus, i as createImageRequestFrames, n as connectAvatarLoad, r as createAvatarResourceBinding, t as avatarLoadMachine } from "./avatar-load-w9dq05oV.js";
|
|
73
|
+
import { AVATAR_BADGE_TYPES, AVATAR_LOAD_STATUS, AVATAR_PARTS, AVATAR_SHAPES, AVATAR_SIZES, BADGE_COUNT_MAX, extractInitials, getAvatarBadgeContent, getAvatarBadgeProps, getAvatarContentPresence, getAvatarFallbackProps, getAvatarImageDescriptor, getAvatarImageElementProps, getAvatarImageProps, getAvatarRootProps, getAvatarRootStyle, resolveAvatarState } from "./avatar/index.js";
|
|
74
|
+
import { a as connect$7, i as computeTextAreaHeight, o as createTextAreaProps, r as clampUtf16, s as machine } from "./textarea-qbnruDUG.js";
|
|
75
|
+
import { TAG_PARTS, TAG_SIZES, TAG_VARIANTS, connectTag, createTagProps, getTagRootProps, getTagStyle, resolveTagState, tagMachine } from "./tag/index.js";
|
|
76
|
+
import { INPUT_TYPES, createInputProps } from "./input/index.js";
|
|
77
|
+
import { SWITCH_PARTS, SWITCH_TYPES, connectSwitch, createSwitchProps, getSwitchRootProps, getSwitchThumbProps, resolveSwitchState, switchMachine } from "./switch/index.js";
|
|
17
78
|
import { STEPPER_PARTS, STEPPER_SIZES, clampStepperValue, getStepperDecrementProps, getStepperDecrementValue, getStepperIncrementProps, getStepperIncrementValue, getStepperRootProps, getStepperValueProps, resolveStepperState } from "./stepper/index.js";
|
|
18
|
-
import { BADGE_KINDS, BADGE_PARTS, BADGE_VARIANTS, DEFAULT_BADGE_MAX_COUNT, getBadgeRootProps, resolveBadgeState } from "./badge/index.js";
|
|
19
|
-
import { TABBAR_ITEM_TONES, TABBAR_ITEM_VARIANTS, TABBAR_PARTS, getTabBarItemButtonProps, getTabBarRootProps, resolveTabBarState } from "./tabbar/index.js";
|
|
79
|
+
import { BADGE_KINDS, BADGE_PARTS, BADGE_VARIANTS, DEFAULT_BADGE_MAX_COUNT, getBadgeRetainedRootProps, getBadgeRootProps, resolveBadgeState } from "./badge/index.js";
|
|
80
|
+
import { TABBAR_ITEM_TONES, TABBAR_ITEM_VARIANTS, TABBAR_PARTS, getTabBarItemButtonProps, getTabBarNavigationItemProps, getTabBarNavigationItemTag, getTabBarNavigationRootProps, getTabBarRootProps, resolveTabBarNavigation, resolveTabBarState } from "./tabbar/index.js";
|
|
20
81
|
import { SIDENAV_PARTS, getSideNavGroupLabelProps, getSideNavItemProps, getSideNavRootProps, resolveSideNavState } from "./side-nav/index.js";
|
|
21
|
-
|
|
82
|
+
import { CELL_KINDS, getCellRootProps, resolveCellState } from "./cell/index.js";
|
|
83
|
+
import { n as getListRootProps, r as resolveListState, t as LIST_ITEM_TAG } from "./list-6-iz-Irh.js";
|
|
84
|
+
import { a as getCardPartProps, i as CARD_PARTS, n as CARD_MEDIA_POSITIONS, o as getCardRootProps, r as CARD_PADDINGS, s as resolveCardState, t as CARD_HEADING_LEVELS } from "./card-DRtWa6Cr.js";
|
|
85
|
+
import "./progress/index.js";
|
|
86
|
+
import { STEPS_ORIENTATIONS, STEP_STATUSES, getStepControlProps, getStepControlTag, getStepProps, getStepsItemProps, resolveStepsState } from "./steps/index.js";
|
|
87
|
+
import { n as connect, r as createCheckboxProps, t as checkboxMachine } from "./checkbox-BlndJrz5.js";
|
|
88
|
+
import { t as LAYOUT_GAP_PRESETS } from "./layout-BRSqi4AQ.js";
|
|
89
|
+
import { SPACE_ALIGNS, SPACE_DIRECTIONS, SPACE_JUSTIFIES, getSpaceRootProps, getSpaceStyle, resolveSpaceState } from "./space/index.js";
|
|
90
|
+
import { GRID_ALIGNS, GRID_JUSTIFIES, getGridItemProps, getGridItemStyle, getGridRootProps, getGridStyle, resolveGridItemState, resolveGridState } from "./grid/index.js";
|
|
91
|
+
import { SAFE_AREA_EDGES, SAFE_AREA_MINIMUM_PRESETS, SAFE_AREA_MODES, getSafeAreaRootProps, getSafeAreaStyle, resolveSafeAreaState } from "./safe-area/index.js";
|
|
92
|
+
import { IMAGE_FITS, IMAGE_LOAD_STATUS, IMAGE_PARTS, connectImageLoad, createImageResourceBinding, getImageContentPresence, getImageDescriptor, getImageElementProps, getImageFallbackLabel, getImageFallbackLabelProps, getImageFallbackProps, getImageImageProps, getImagePlaceholderProps, getImageRootProps, getImageRootStyle, imageLoadMachine, resolveImageState } from "./image/index.js";
|
|
93
|
+
//#region src/modal-render-hydration.ts
|
|
94
|
+
/**
|
|
95
|
+
* The fixed cross-stack hydration marker contract. Every adapter serializes one
|
|
96
|
+
* ticket per declaration onto a hidden element carrying both attributes, and
|
|
97
|
+
* every adapter must adopt the *whole page's* markers — including foreign
|
|
98
|
+
* stacks' — before hydrating any one root, so ordinals stay page-global.
|
|
99
|
+
*
|
|
100
|
+
* This module is pure transport: it reads attributes and defers every validity
|
|
101
|
+
* and admission decision to the scope. Adapters keep only their own framework
|
|
102
|
+
* glue (where the root comes from, what to do with the returned tickets).
|
|
103
|
+
*/
|
|
104
|
+
const MODAL_TICKET_ATTRIBUTE = "data-qw-modal-ticket";
|
|
105
|
+
const MODAL_STACK_ATTRIBUTE = "data-qw-modal-stack";
|
|
106
|
+
const STACKS = [
|
|
107
|
+
"react",
|
|
108
|
+
"vue",
|
|
109
|
+
"wc"
|
|
110
|
+
];
|
|
111
|
+
function isStack(value) {
|
|
112
|
+
return value !== null && STACKS.includes(value);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Collect a root's markers in render order, recursing into `<template>` content
|
|
116
|
+
* so parked caller content is not skipped. A WC owner may only be declared by
|
|
117
|
+
* the WC stack; that is a transport rule, so it is rejected here, before any
|
|
118
|
+
* adoption happens.
|
|
119
|
+
*/
|
|
120
|
+
function scanModalHydrationMarkers(root) {
|
|
121
|
+
const markers = [];
|
|
122
|
+
const visit = (parent) => {
|
|
123
|
+
if (parent.nodeType === 1) {
|
|
124
|
+
const element = parent;
|
|
125
|
+
const stack = element.getAttribute(MODAL_STACK_ATTRIBUTE);
|
|
126
|
+
const serialized = element.getAttribute(MODAL_TICKET_ATTRIBUTE);
|
|
127
|
+
if (serialized !== null && isStack(stack)) markers.push({
|
|
128
|
+
element,
|
|
129
|
+
stack,
|
|
130
|
+
input: JSON.parse(serialized)
|
|
131
|
+
});
|
|
132
|
+
if (element.localName === "template" && "content" in element) visit(element.content);
|
|
133
|
+
}
|
|
134
|
+
for (const child of parent.children) visit(child);
|
|
135
|
+
};
|
|
136
|
+
visit(root);
|
|
137
|
+
for (const marker of markers) if (marker.input.owner !== void 0 && marker.stack !== "wc") throw new TypeError("WC modal owner on foreign stack");
|
|
138
|
+
return markers;
|
|
139
|
+
}
|
|
140
|
+
/** Adopt every scanned marker in render order; the canonical tickets stay index-aligned. */
|
|
141
|
+
function adoptModalHydrationMarkers(markers, scope) {
|
|
142
|
+
return markers.map((marker) => scope.adopt(marker.input));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Bootstrap one page root: adopt the complete marker set, then return only the
|
|
146
|
+
* tickets this stack owns. Adapters pass their own stack tag.
|
|
147
|
+
*/
|
|
148
|
+
function adoptModalHydration(root, scope, stack) {
|
|
149
|
+
const markers = scanModalHydrationMarkers(root);
|
|
150
|
+
return adoptModalHydrationMarkers(markers, scope).filter((_, index) => markers[index].stack === stack);
|
|
151
|
+
}
|
|
152
|
+
//#endregion
|
|
153
|
+
export { AREA_PICKER_PARTS, AVATAR_BADGE_TYPES, AVATAR_LOAD_STATUS, AVATAR_PARTS, AVATAR_SHAPES, AVATAR_SIZES, BACK_TOP_PARTS, BADGE_COUNT_MAX, BADGE_KINDS, BADGE_PARTS, BADGE_VARIANTS, BUTTON_ICON_POSITIONS, BUTTON_PARTS, BUTTON_SHAPES, BUTTON_SIZES, BUTTON_TONES, BUTTON_VARIANTS, CALENDAR_PARTS, CARD_HEADING_LEVELS, CARD_MEDIA_POSITIONS, CARD_PADDINGS, CARD_PARTS, CASCADER_PARTS, CELL_KINDS, CHECK_LIST_PARTS, CIRCLE_DEFAULT_STROKE_WIDTH, CIRCLE_INDETERMINATE_ARC, CIRCLE_LINE_CAPS, CIRCLE_PARTS, CIRCLE_START_POSITIONS, CIRCLE_VIEWBOX, COLLAPSE_HEADING_LEVELS, COLLAPSE_PARTS, COUNTDOWN_DEFAULT_FORMAT, COUNTDOWN_FAST_INTERVAL, COUNTDOWN_PARTS, COUNTDOWN_STATES, COUNTDOWN_VARIANTS, DATE_PICKER_COLUMN_TYPES, DEFAULT_BADGE_MAX_COUNT, DEFAULT_OVERLAY_PANEL_HEADER_HEIGHT, DEFAULT_TOAST_DURATION, DEFAULT_TOAST_POSITION, DESCRIPTIONS_LAYOUTS, DESCRIPTIONS_MAX_COLUMN, DESCRIPTIONS_PARTS, DIVIDER_ORIENTATIONS, DIVIDER_PARTS, DIVIDER_WEIGHTS, DROPDOWN_DEFAULT_OFFSET, DROPDOWN_DEFAULT_PLACEMENT, DROPDOWN_MOVES, DROPDOWN_PARTS, DROPDOWN_TYPEAHEAD_TIMEOUT, ELLIPSIS_DIRECTIONS, ELLIPSIS_PARTS, ELLIPSIS_PROBE_ATTRIBUTE, EMPTY_PARTS, FIELD_LABEL_MODES, FIELD_LAYOUTS, FIELD_PARTS, FLOATING_ALIGNS, FLOATING_BUBBLE_AXES, FLOATING_BUBBLE_BOUNDARIES, FLOATING_BUBBLE_DEFAULT_STEP, FLOATING_BUBBLE_MAGNETS, FLOATING_BUBBLE_PARTS, FLOATING_DEFAULT_OFFSET, FLOATING_PANEL_BOUNDARIES, FLOATING_PANEL_DEFAULT_ANCHORS, FLOATING_PANEL_PARTS, FLOATING_PLACEMENTS, FLOATING_SIDES, FOOTER_CHIP_VARIANTS, FOOTER_PARTS, FORM_DEFAULT_MESSAGES, FORM_MESSAGES_EN, FORM_PARTS, GRID_ALIGNS, GRID_JUSTIFIES, ICON_FALLBACK_NAME, ICON_PARTS, IMAGE_FITS, IMAGE_LOAD_STATUS, IMAGE_PARTS, INDEX_BAR_PARTS, INFINITE_SCROLL_DEFAULT_THRESHOLD, INFINITE_SCROLL_PARTS, INFINITE_SCROLL_STATUSES, INPUT_TYPES, LAYOUT_GAP_PRESETS, LIST_ITEM_TAG, LOADING_PARTS, LOADING_SIZES, MODAL_STACK_ATTRIBUTE, MODAL_TICKET_ATTRIBUTE, NAV_BAR_HEADING_LEVELS, NAV_BAR_PARTS, NOTICE_BAR_DEFAULT_DELAY, NOTICE_BAR_DEFAULT_SPEED, NOTICE_BAR_PARTS, NOTICE_BAR_TONES, NOTIFY_DEFAULT_DURATION, NOTIFY_PARTS, NOTIFY_TYPES, NUMBER_KEYBOARD_DELETE_GLYPH, NUMBER_KEYBOARD_DIGITS, NUMBER_KEYBOARD_LONG_PRESS_DELAY, NUMBER_KEYBOARD_MAX_EXTRA_KEYS, NUMBER_KEYBOARD_PARTS, NUMBER_KEYBOARD_REPEAT_INTERVAL, OVERLAY_PANEL_PARTS, PAGE_INDICATOR_DIRECTIONS, PAGE_INDICATOR_PARTS, PAGE_INDICATOR_TONES, PAGINATION_MODES, PAGINATION_PARTS, PASSWORD_INPUT_CHARSETS, PASSWORD_INPUT_DEFAULT_LENGTH, PASSWORD_INPUT_MASK_GLYPH, PASSWORD_INPUT_MAX_LENGTH, PASSWORD_INPUT_MIN_LENGTH, PASSWORD_INPUT_MODES, PASSWORD_INPUT_PARTS, POPOVER_DEFAULT_PLACEMENT, POPOVER_PARTS, PRICE_DEFAULT_ORIGINAL_LABEL, PRICE_DEFAULT_PLACEHOLDER, PRICE_DEFAULT_PRECISION, PRICE_DEFAULT_SYMBOL, PRICE_FRACTION_SIZES, PRICE_PARTS, PRICE_SIZES, PRICE_SYMBOL_POSITIONS, PRICE_TONES, PROGRESS_TONES, PULL_REFRESH_DEFAULT_DAMPING, PULL_REFRESH_DEFAULT_HEAD_HEIGHT, PULL_REFRESH_DEFAULT_SUCCESS_DURATION, PULL_REFRESH_PARTS, PULL_REFRESH_STATUSES, PickerSelectionModel, RATE_PARTS, RATE_SIZES, REORDER_AUTO_SCROLL_EDGE, REORDER_AUTO_SCROLL_SPEED, REORDER_DEFAULT_TEXTS, REORDER_DEFAULT_THRESHOLD, REORDER_PARTS, REORDER_SOURCES, RESULT_ANNOUNCEMENTS, RESULT_HEADING_LEVELS, RESULT_PARTS, RESULT_STATUSES, SAFE_AREA_EDGES, SAFE_AREA_MINIMUM_PRESETS, SAFE_AREA_MODES, SEGMENTED_MODES, SEGMENTED_PARTS, SEGMENTED_SIZES, SELECTOR_COLUMNS, SELECTOR_PARTS, SIDENAV_PARTS, SKELETON_ANIMATIONS, SKELETON_PARTS, SKELETON_RADII, SKELETON_VARIANTS, SLIDER_ORIENTATIONS, SLIDER_PARTS, SPACE_ALIGNS, SPACE_DIRECTIONS, SPACE_JUSTIFIES, STATISTIC_DEFAULT_PLACEHOLDER, STATISTIC_LIVE_MODES, STATISTIC_PARTS, STATISTIC_SIZES, STATISTIC_TRENDS, STATISTIC_TREND_LABELS, STEPPER_PARTS, STEPPER_SIZES, STEPS_ORIENTATIONS, STEP_STATUSES, STICKY_PARTS, STICKY_POSITIONS, SWIPER_DEFAULT_AUTOPLAY_INTERVAL, SWIPER_DIRECTIONS, SWIPER_DISTANCE_RATIO, SWIPER_EDGE_RESISTANCE, SWIPER_MAX_SLIDES, SWIPER_MIN_AUTOPLAY_INTERVAL, SWIPER_PARTS, SWIPE_ACTION_COLORS, SWIPE_ACTION_DISTANCE_RATIO, SWIPE_ACTION_PARTS, SWIPE_ACTION_SIDES, SWITCH_PARTS, SWITCH_TYPES, TABBAR_ITEM_TONES, TABBAR_ITEM_VARIANTS, TABBAR_PARTS, TAG_PARTS, TAG_SIZES, TAG_VARIANTS, TIMELINE_DEFAULT_STATUS_LABELS, TIMELINE_MARKER_GLYPHS, TIMELINE_PARTS, TIMELINE_STATUSES, TIME_PICKER_COLUMN_TYPES, TOAST_ICON_TYPES, TOAST_PARTS, TOAST_POSITIONS, TOPBAR_VARIANTS, TREE_SELECT_DEFAULT_TEXTS, TREE_SELECT_PARTS, TREE_SELECT_SELECTABLE, TYPOGRAPHY_ALIGNS, TYPOGRAPHY_FONT_FAMILIES, TYPOGRAPHY_PARTS, TYPOGRAPHY_TAGS, TYPOGRAPHY_TONES, TYPOGRAPHY_VARIANTS, UPLOAD_PARTS, UPLOAD_STATUSES, VIRTUAL_LIST_ALIGNS, VIRTUAL_LIST_DEFAULT_INITIAL_COUNT, VIRTUAL_LIST_DEFAULT_ITEM_HEIGHT, VIRTUAL_LIST_DEFAULT_OVERSCAN, VIRTUAL_LIST_PARTS, WATERMARK_DEFAULTS, WATERMARK_LAYER_STATES, WATERMARK_PARTS, actionSheetMachine, addCalendarDays, addCalendarMonths, adoptModalHydration, adoptModalHydrationMarkers, areaPickerMachine, assertFormMethodReady, assertFormSsrProps, attachPickerColumn, avatarLoadMachine, backTopMachine, buildEllipsisCandidate, buildWatermarkTextTile, calendarMachine, cascaderMachine, checkListMachine, connect as checkboxConnect, connect$1 as checkboxGroupConnect, checkboxGroupMachine, checkboxMachine, clampDatePickerDate, clampFloatingBubbleOffset, clampImagePreviewTransform, clampReorderOffset, clampStepperValue, clampSwipeActionOffset, clampSwiperIndex, clampUtf16, cloneFormValue, cloneFormValues, collapseMachine, compareCalendarDates, computeFloatingPosition, computeStickyStuck, computeTextAreaHeight, connect$2 as connect, connectActionSheet, connectAreaPicker, connectAvatarLoad, connectBackTop, connectCalendar, connectCascader, connectCheckList, connectCollapse, connectCountdown, connectDatePicker, connectDropdown, connectEllipsis, connectFloatingBubble, connectFloatingPanel, connectFooter, connectForm, connectFormBehavior, connectImageLoad, connectImagePreview, connectIndexBar, connectInfiniteScroll, connectNavBar, connectNoticeBar, connectNotify, connectNumberKeyboard, connectPageIndicator, connect$3 as connectPagination, connectPasswordInput, connectPicker, connectPickerColumn, connectPopover, connectPullRefresh, connect$4 as connectRate, connectReorder, connect$5 as connectSegmented, connectSelector, connectShareSheet, connectSlider, connectSticky, connectSwipeAction, connectSwiper, connectSwitch, connectTag, connectTimePicker, connectTreeSelect, connectUpload, connectVirtualList, connectWatermark, countdownMachine, createActionSheetProps, createAreaPickerProps, createAvatarResourceBinding, createBackTopProps, createCalendarProps, createCascaderProps, createCheckListProps, createCheckboxGroupProps, createCheckboxProps, createCollapseProps, createCountdownProps, createDatePickerProps, createDatePickerUtcDate, createDialogProps, createDropdownProps, createEllipsisProps, createFloatingBubbleProps, createFloatingPanelProps, createFormProps, createImagePreviewProps, createImageRequestFrames, createImageResourceBinding, createIndexBarProps, createInfiniteScrollProps, createInputProps, createModalRenderScope, createModalTicketCursor, createNavBarProps, createNoticeBarProps, createNotifyProps, createNumberKeyboardProps, createPageIndicatorProps, createPaginationProps, createPasswordInputProps, createPickerProps, createPopoverProps, createPullRefreshProps, createRadioGroupProps, createRateProps, createReorderProps, createSegmentedProps, createSelectorProps, createShareSheetProps, createSliderProps, createStickyProps, createSwipeActionProps, createSwiperProps, createSwitchProps, createTabsProps, createTagProps, createTextAreaProps, createTimePickerProps, createTopBarProps, createTreeSelectIndex, createTreeSelectProps, createUploadProps, createVirtualListProps, createWatermarkProps, datePickerMachine, daysInMonth, defaultDatePickerFormatter, modalDialogMachine as dialogMachine, disposeModalRender, disposeModalSession, dropdownMachine, ellipsisMachine, escapeWatermarkXml, extractInitials, findEllipsisText, findVirtualListFocus, floatingBubbleMachine, floatingPanelMachine, footerMachine, formControlStem, formDomId, formErrorMessage, formFieldKey, formFieldNativeName, formFieldRootId, formFieldStem, formLabelId, formMachine, formValueFingerprint, formValuesEqual, formatCountdown, formatDatePickerValue, formatReorderText, formatTimePickerValue, freezeFormValues, fromDatePickerParts, getActionSheetAccessibleName, getActionSheetDataAttrs, getAvatarBadgeContent, getAvatarBadgeProps, getAvatarContentPresence, getAvatarFallbackProps, getAvatarImageDescriptor, getAvatarImageElementProps, getAvatarImageProps, getAvatarRootProps, getAvatarRootStyle, getBadgeRetainedRootProps, getBadgeRootProps, getButtonRootProps, getCalendarMonthDays, getCardPartProps, getCardRootProps, getCascaderColumns, getCascaderLabels, getCellRootProps, getCircleContentProps, getCircleIndicatorProps, getCircleRootProps, getCircleSvgProps, getCircleTrackProps, getCountdownSegments, getCountdownTimeParts, getDatePickerColumnTypes, getDatePickerColumns, getDatePickerPickerId, getDatePickerToday, getDescriptionsItemProps, getDescriptionsLabelProps, getDescriptionsListProps, getDescriptionsRootProps, getDescriptionsTitleProps, getDescriptionsValueProps, getDividerRootProps, getDropdownMoveTarget, getDropdownTypeaheadTarget, getEmptyIllustration, getEmptyPartProps, getEmptyRootProps, getFieldControlProps, getFieldDescriptionProps, getFieldErrorProps, getFieldLabelProps, getFieldRequiredProps, getFieldRootProps, getFieldStatusProps, getFormValue, getGridItemProps, getGridItemStyle, getGridRootProps, getGridStyle, getIconRootProps, getIconVector, getImageContentPresence, getImageDescriptor, getImageElementProps, getImageFallbackLabel, getImageFallbackLabelProps, getImageFallbackProps, getImageImageProps, getImagePlaceholderProps, getImageRequestStatus, getImageRootProps, getImageRootStyle, getListRootProps, getLoadingPartProps, getLoadingRootProps, getNumberKeyboardKeys, getPageIndicatorDots, getPaginationItems, getPickerAccessibleName, getPickerDataAttrs, getPickerDiagnostics, getPickerFirstValue, getPickerKeyboardTarget, getPickerOptionIndex, getPricePartProps, getPriceRootProps, getPriceSegments, getProgressRootProps, getRatePointValue, getReorderAutoScroll, getReorderEntries, getReorderKeyTarget, getReorderPitch, getReorderShift, getReorderSlotOffset, getReorderTargetIndex, getResultIcon, getResultPartProps, getResultRootProps, getSafeAreaRootProps, getSafeAreaStyle, getSideNavGroupLabelProps, getSideNavItemProps, getSideNavRootProps, getSkeletonLineProps, getSkeletonRootProps, getSkeletonStyle, getSliderClosestThumb, getSliderKeyValue, getSliderPercent, getSliderPointValue, getSliderThumbBounds, getSpaceRootProps, getSpaceStyle, getStatisticContentProps, getStatisticPartProps, getStatisticRootProps, getStatisticSegments, getStepControlProps, getStepControlTag, getStepProps, getStepperDecrementProps, getStepperDecrementValue, getStepperIncrementProps, getStepperIncrementValue, getStepperRootProps, getStepperValueProps, getStepsItemProps, getSwipeActionRestOffset, getSwiperSlides, getSwitchRootProps, getSwitchThumbProps, getTabBarItemButtonProps, getTabBarNavigationItemProps, getTabBarNavigationItemTag, getTabBarNavigationRootProps, getTabBarRootProps, getTagRootProps, getTagStyle, getTimePickerCandidates, getTimelineDescriptionProps, getTimelineItemProps, getTimelineMarkerProps, getTimelinePartProps, getTimelineRootProps, getTimelineStatusProps, getTimelineStatusText, getTimelineTimeProps, getTreeSelectAncestors, getTreeSelectCheckedState, getTreeSelectKeyAction, getTreeSelectLabels, getTreeSelectStaleValue, getTreeSelectSummary, getTreeSelectVisible, getTypographyRootProps, getVirtualListRange, getVirtualListRenderLimit, getVirtualListScrollTop, hasFormValue, hasOtherModal, imageLoadMachine, imagePreviewMachine, indexBarMachine, infiniteScrollMachine, invokeFormApi, isBackTopShown, isCalendarDateDisabled, isFormEmpty, isPickerColumns, isPickerOptionSelectable, isPickerValue, isToastIconType, isValidCalendarDate, joinFloatingPlacement, matchesUploadAccept, measureEllipsisLayout, mergeFormValues, mergePasswordInputPaste, moveReorderKeys, navBarMachine, normalizeCalendarValue, normalizeCascaderOptions, normalizeCascaderValue, normalizeCheckListItems, normalizeCheckListValue, normalizeCollapseItems, normalizeCollapseValue, normalizeDatePickerValue, normalizeDescriptionsColumn, normalizeEllipsisRows, normalizeFormFields, normalizeFormInteraction, normalizeFormNamePath, normalizeFormRule, normalizeNumberKeyboardExtraKeys, normalizePasswordInputLength, normalizePasswordInputValue, normalizeRateCount, normalizeRateValue, normalizeSegmentedItems, normalizeSegmentedValue, normalizeSelectorOptions, normalizeSelectorValue, normalizeSliderValues, normalizeUploadItems, normalizeWatermarkRotate, noticeBarMachine, notifyMachine, numberKeyboardMachine, observeEllipsisLayout, pageIndicatorMachine, paginationMachine, parseDatePickerInput, parseTimePickerValue, passwordInputMachine, pickerMachine, popoverMachine, pullRefreshMachine, connect$6 as radioGroupConnect, radioGroupMachine, rateMachine, rateTouchCoverageForGlyphFill, reorderMachine, resolveActionSheetActions, resolveActionSheetActivation, resolveAreaPickerValue, resolveAvatarState, resolveBackTopState, resolveBadgeState, resolveButtonState, resolveCardState, resolveCascaderPath, resolveCellState, resolveCircleState, resolveCollapseHeadingLevel, resolveCountdownRemaining, resolveDatePickerBounds, resolveDatePickerParts, resolveDatePickerPrecision, resolveDescriptionsState, resolveDividerState, resolveDropdownItems, resolveDropdownState, resolveEmptyState, resolveFieldState, resolveFloatingBubbleState, resolveFloatingPanelAnchors, resolveFloatingPlacement, resolveFooterChips, resolveFooterLinks, resolveGridItemState, resolveGridState, resolveIconName, resolveIconState, resolveImagePreviewImages, resolveImagePreviewMaxZoom, resolveImageState, resolveIndexBarActive, resolveIndexBarKeyAt, resolveIndexBarState, resolveInfiniteScrollState, resolveInfiniteScrollStatus, resolveListState, resolveLoadingState, resolveNavBarState, resolveNoticeBarDelay, resolveNoticeBarMarquee, resolveNoticeBarSpeed, resolveNotifyState, resolveNumberKeyboardKey, resolveOverlayPanelHeight, resolvePageIndicatorState, resolvePaginationState, resolvePickerColumns, resolvePickerMode, resolvePopoverState, resolvePriceState, resolveProgressState, resolvePullDistance, resolvePullRefreshState, resolvePullRefreshStatus, resolveReorderDisabled, resolveReorderKey, resolveReorderOrder, resolveReorderState, resolveReorderText, resolveResultState, resolveSafeAreaState, resolveSelectorColumns, resolveShareSheetGroups, resolveSideNavState, resolveSkeletonState, resolveSliderState, resolveSpaceState, resolveStatisticState, resolveStepperState, resolveStepsState, resolveStickyState, resolveSwipeActionOpen, resolveSwipeActionRelease, resolveSwipeActionState, resolveSwiperDragOffset, resolveSwiperState, resolveSwitchState, resolveTabBarNavigation, resolveTabBarState, resolveTagState, resolveTimePickerPrecision, resolveTimelineState, resolveToastDuration, resolveTreeSelectExpanded, resolveTreeSelectMode, resolveTreeSelectValue, resolveTypographyState, resolveUploadState, resolveVirtualListKey, resolveVirtualListState, resolveVirtualListText, resolveWatermarkLayer, resolveWatermarkState, sanitizeFooterHref, scanModalHydrationMarkers, segmentedMachine, selectCalendarDate, selectorMachine, setFormValue, shareSheetMachine, sliderMachine, snapFloatingBubbleOffset, snapFloatingPanelHeight, snapSliderValue, splitFloatingPlacement, stepSwiperIndex, stickyMachine, submittedFieldValue, swipeActionMachine, swiperMachine, switchMachine, syncModalRegistration, syncModalRender, tabsMachine, tagMachine, connect$7 as textAreaConnect, machine as textAreaMachine, timePickerMachine, toAreaPickerOptions, toDateKey, toDatePickerIso, toDatePickerParts, toDatePickerPickerValue, toSliderValue, toggleCollapseValue, toggleTreeSelectExpanded, toggleTreeSelectValue, trackFormNative, treeSelectMachine, truncateDatePickerDate, updateCascaderChildren, updateModalRenderIdentity, uploadMachine, validateFormRule, virtualListMachine, wantsModalOpen, watermarkImageKey, watermarkMachine, watermarkTextTileUrl };
|
|
154
|
+
|
|
155
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/modal-render-hydration.ts"],"sourcesContent":["import type { ModalRenderScope, ModalRenderTicket } from \"./modal-render-scope.js\";\n\n/**\n * The fixed cross-stack hydration marker contract. Every adapter serializes one\n * ticket per declaration onto a hidden element carrying both attributes, and\n * every adapter must adopt the *whole page's* markers — including foreign\n * stacks' — before hydrating any one root, so ordinals stay page-global.\n *\n * This module is pure transport: it reads attributes and defers every validity\n * and admission decision to the scope. Adapters keep only their own framework\n * glue (where the root comes from, what to do with the returned tickets).\n */\n\nexport const MODAL_TICKET_ATTRIBUTE = \"data-qw-modal-ticket\";\nexport const MODAL_STACK_ATTRIBUTE = \"data-qw-modal-stack\";\n\n/** The finite set of stacks that may declare a modal root. */\nexport type ModalRenderStack = \"react\" | \"vue\" | \"wc\";\n\nconst STACKS: readonly ModalRenderStack[] = [\"react\", \"vue\", \"wc\"];\n\n/** One scanned marker: its element, its declaring stack and its raw ticket data. */\nexport interface ModalHydrationMarker {\n readonly element: Element;\n readonly stack: ModalRenderStack;\n readonly input: ModalRenderTicket;\n}\n\nfunction isStack(value: string | null): value is ModalRenderStack {\n return value !== null && (STACKS as readonly string[]).includes(value);\n}\n\n/**\n * Collect a root's markers in render order, recursing into `<template>` content\n * so parked caller content is not skipped. A WC owner may only be declared by\n * the WC stack; that is a transport rule, so it is rejected here, before any\n * adoption happens.\n */\nexport function scanModalHydrationMarkers(root: ParentNode): readonly ModalHydrationMarker[] {\n const markers: ModalHydrationMarker[] = [];\n const visit = (parent: ParentNode): void => {\n if ((parent as Node).nodeType === 1) {\n const element = parent as Element;\n const stack = element.getAttribute(MODAL_STACK_ATTRIBUTE);\n const serialized = element.getAttribute(MODAL_TICKET_ATTRIBUTE);\n if (serialized !== null && isStack(stack)) markers.push({ element, stack, input: JSON.parse(serialized) });\n if (element.localName === \"template\" && \"content\" in element) visit((element as HTMLTemplateElement).content);\n }\n for (const child of parent.children) visit(child);\n };\n visit(root);\n for (const marker of markers) {\n if (marker.input.owner !== undefined && marker.stack !== \"wc\") throw new TypeError(\"WC modal owner on foreign stack\");\n }\n return markers;\n}\n\n/** Adopt every scanned marker in render order; the canonical tickets stay index-aligned. */\nexport function adoptModalHydrationMarkers(markers: readonly ModalHydrationMarker[], scope: ModalRenderScope): readonly ModalRenderTicket[] {\n return markers.map(marker => scope.adopt(marker.input));\n}\n\n/**\n * Bootstrap one page root: adopt the complete marker set, then return only the\n * tickets this stack owns. Adapters pass their own stack tag.\n */\nexport function adoptModalHydration(root: ParentNode, scope: ModalRenderScope, stack: ModalRenderStack): readonly ModalRenderTicket[] {\n const markers = scanModalHydrationMarkers(root);\n const tickets = adoptModalHydrationMarkers(markers, scope);\n return tickets.filter((_, index) => markers[index]!.stack === stack);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAa,yBAAyB;AACtC,MAAa,wBAAwB;AAKrC,MAAM,SAAsC;CAAC;CAAS;CAAO;AAAI;AASjE,SAAS,QAAQ,OAAiD;CAChE,OAAO,UAAU,QAAS,OAA6B,SAAS,KAAK;AACvE;;;;;;;AAQA,SAAgB,0BAA0B,MAAmD;CAC3F,MAAM,UAAkC,CAAC;CACzC,MAAM,SAAS,WAA6B;EAC1C,IAAK,OAAgB,aAAa,GAAG;GACnC,MAAM,UAAU;GAChB,MAAM,QAAQ,QAAQ,aAAa,qBAAqB;GACxD,MAAM,aAAa,QAAQ,aAAa,sBAAsB;GAC9D,IAAI,eAAe,QAAQ,QAAQ,KAAK,GAAG,QAAQ,KAAK;IAAE;IAAS;IAAO,OAAO,KAAK,MAAM,UAAU;GAAE,CAAC;GACzG,IAAI,QAAQ,cAAc,cAAc,aAAa,SAAS,MAAO,QAAgC,OAAO;EAC9G;EACA,KAAK,MAAM,SAAS,OAAO,UAAU,MAAM,KAAK;CAClD;CACA,MAAM,IAAI;CACV,KAAK,MAAM,UAAU,SACnB,IAAI,OAAO,MAAM,UAAU,KAAA,KAAa,OAAO,UAAU,MAAM,MAAM,IAAI,UAAU,iCAAiC;CAEtH,OAAO;AACT;;AAGA,SAAgB,2BAA2B,SAA0C,OAAuD;CAC1I,OAAO,QAAQ,KAAI,WAAU,MAAM,MAAM,OAAO,KAAK,CAAC;AACxD;;;;;AAMA,SAAgB,oBAAoB,MAAkB,OAAyB,OAAuD;CACpI,MAAM,UAAU,0BAA0B,IAAI;CAE9C,OADgB,2BAA2B,SAAS,KACvC,CAAC,CAAC,QAAQ,GAAG,UAAU,QAAQ,MAAM,CAAE,UAAU,KAAK;AACrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./infinite-scroll.js";
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { createMachine } from "@zag-js/core";
|
|
2
|
+
//#region src/infinite-scroll/infinite-scroll.ts
|
|
3
|
+
/** Stable DOM parts shared by every adapter. */
|
|
4
|
+
const INFINITE_SCROLL_PARTS = [
|
|
5
|
+
"root",
|
|
6
|
+
"status",
|
|
7
|
+
"retry"
|
|
8
|
+
];
|
|
9
|
+
/** Rendered status: idle waits for the sentinel, finished means hasMore=false. */
|
|
10
|
+
const INFINITE_SCROLL_STATUSES = [
|
|
11
|
+
"idle",
|
|
12
|
+
"loading",
|
|
13
|
+
"error",
|
|
14
|
+
"finished",
|
|
15
|
+
"disabled"
|
|
16
|
+
];
|
|
17
|
+
const INFINITE_SCROLL_DEFAULT_THRESHOLD = 250;
|
|
18
|
+
const text = (value, fallback) => typeof value === "string" && value.trim() ? value : fallback;
|
|
19
|
+
function resolveInfiniteScrollState(props = {}) {
|
|
20
|
+
const threshold = props.threshold;
|
|
21
|
+
return {
|
|
22
|
+
hasMore: props.hasMore !== false,
|
|
23
|
+
threshold: typeof threshold === "number" && Number.isFinite(threshold) && threshold >= 0 ? threshold : 250,
|
|
24
|
+
target: typeof props.target === "string" && props.target.trim() ? props.target : void 0,
|
|
25
|
+
disabled: !!props.disabled,
|
|
26
|
+
loadingText: text(props.loadingText, "加载中…"),
|
|
27
|
+
finishedText: text(props.finishedText, "没有更多了"),
|
|
28
|
+
errorText: text(props.errorText, "加载失败"),
|
|
29
|
+
retryText: text(props.retryText, "重新加载")
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** One status vocabulary for every adapter. Finished wins over idle; disabled only shows while idle. */
|
|
33
|
+
function resolveInfiniteScrollStatus(state, machineState) {
|
|
34
|
+
if (machineState === "loading") return "loading";
|
|
35
|
+
if (machineState === "failed") return "error";
|
|
36
|
+
if (!state.hasMore) return "finished";
|
|
37
|
+
return state.disabled ? "disabled" : "idle";
|
|
38
|
+
}
|
|
39
|
+
function createInfiniteScrollProps(props = {}) {
|
|
40
|
+
if (props.id !== void 0 && (typeof props.id !== "string" || !props.id.trim())) throw new TypeError("InfiniteScroll requires a nonempty instance id when provided");
|
|
41
|
+
if (props.loadMore !== void 0 && typeof props.loadMore !== "function") throw new TypeError("InfiniteScroll loadMore must be a function returning a Promise");
|
|
42
|
+
return { ...props };
|
|
43
|
+
}
|
|
44
|
+
const rootId = (scope) => `infinite-scroll:${scope.id}`;
|
|
45
|
+
const live = (service) => resolveInfiniteScrollState({
|
|
46
|
+
hasMore: service.prop("hasMore"),
|
|
47
|
+
threshold: service.prop("threshold"),
|
|
48
|
+
target: service.prop("target"),
|
|
49
|
+
disabled: service.prop("disabled"),
|
|
50
|
+
loadingText: service.prop("loadingText"),
|
|
51
|
+
finishedText: service.prop("finishedText"),
|
|
52
|
+
errorText: service.prop("errorText"),
|
|
53
|
+
retryText: service.prop("retryText")
|
|
54
|
+
});
|
|
55
|
+
/** Core owns observation, de-duplication, the generation ticket for late results, retry and cleanup. */
|
|
56
|
+
const infiniteScrollMachine = createMachine({
|
|
57
|
+
props: ({ props }) => createInfiniteScrollProps(props),
|
|
58
|
+
initialState: () => "idle",
|
|
59
|
+
context: ({ bindable }) => ({ generation: bindable(() => ({ defaultValue: 0 })) }),
|
|
60
|
+
refs: () => ({ reobserve: null }),
|
|
61
|
+
watch({ track, prop, send }) {
|
|
62
|
+
track([
|
|
63
|
+
() => prop("hasMore"),
|
|
64
|
+
() => prop("disabled"),
|
|
65
|
+
() => prop("target"),
|
|
66
|
+
() => prop("threshold")
|
|
67
|
+
], () => send({ type: "SETTINGS.CHANGE" }));
|
|
68
|
+
},
|
|
69
|
+
effects: ["observe"],
|
|
70
|
+
states: {
|
|
71
|
+
idle: { on: {
|
|
72
|
+
INTERSECT: {
|
|
73
|
+
guard: "shouldAutoLoad",
|
|
74
|
+
target: "loading"
|
|
75
|
+
},
|
|
76
|
+
LOAD: {
|
|
77
|
+
guard: "canLoad",
|
|
78
|
+
target: "loading"
|
|
79
|
+
},
|
|
80
|
+
RESET: { actions: ["bumpGeneration", "reobserve"] },
|
|
81
|
+
"SETTINGS.CHANGE": { actions: ["reobserve"] }
|
|
82
|
+
} },
|
|
83
|
+
loading: {
|
|
84
|
+
effects: ["runLoad"],
|
|
85
|
+
on: {
|
|
86
|
+
"LOAD.DONE": {
|
|
87
|
+
guard: "isCurrent",
|
|
88
|
+
target: "idle",
|
|
89
|
+
actions: ["reobserve"]
|
|
90
|
+
},
|
|
91
|
+
"LOAD.FAIL": {
|
|
92
|
+
guard: "isCurrent",
|
|
93
|
+
target: "failed",
|
|
94
|
+
actions: ["notifyError"]
|
|
95
|
+
},
|
|
96
|
+
RESET: {
|
|
97
|
+
target: "idle",
|
|
98
|
+
actions: ["bumpGeneration", "reobserve"]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
failed: { on: {
|
|
103
|
+
RETRY: {
|
|
104
|
+
guard: "canLoad",
|
|
105
|
+
target: "loading"
|
|
106
|
+
},
|
|
107
|
+
LOAD: {
|
|
108
|
+
guard: "canLoad",
|
|
109
|
+
target: "loading"
|
|
110
|
+
},
|
|
111
|
+
RESET: {
|
|
112
|
+
target: "idle",
|
|
113
|
+
actions: ["bumpGeneration", "reobserve"]
|
|
114
|
+
},
|
|
115
|
+
"SETTINGS.CHANGE": { actions: ["reobserve"] }
|
|
116
|
+
} }
|
|
117
|
+
},
|
|
118
|
+
implementations: {
|
|
119
|
+
guards: {
|
|
120
|
+
canLoad: ({ prop }) => {
|
|
121
|
+
const state = live({ prop });
|
|
122
|
+
return state.hasMore && !state.disabled && typeof prop("loadMore") === "function";
|
|
123
|
+
},
|
|
124
|
+
shouldAutoLoad: ({ prop, event }) => {
|
|
125
|
+
const state = live({ prop });
|
|
126
|
+
return event.type === "INTERSECT" && event.value && state.hasMore && !state.disabled && typeof prop("loadMore") === "function";
|
|
127
|
+
},
|
|
128
|
+
isCurrent: ({ context, event }) => (event.type === "LOAD.DONE" || event.type === "LOAD.FAIL") && event.generation === context.get("generation")
|
|
129
|
+
},
|
|
130
|
+
actions: {
|
|
131
|
+
reobserve({ refs }) {
|
|
132
|
+
refs.get("reobserve")?.();
|
|
133
|
+
},
|
|
134
|
+
bumpGeneration({ context }) {
|
|
135
|
+
context.set("generation", context.get("generation") + 1);
|
|
136
|
+
},
|
|
137
|
+
notifyError({ event, prop }) {
|
|
138
|
+
if (event.type === "LOAD.FAIL") prop("onError")?.({ error: event.error });
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
effects: {
|
|
142
|
+
runLoad({ prop, context, send }) {
|
|
143
|
+
const generation = context.get("generation");
|
|
144
|
+
let cancelled = false;
|
|
145
|
+
const done = () => {
|
|
146
|
+
if (!cancelled) send({
|
|
147
|
+
type: "LOAD.DONE",
|
|
148
|
+
generation
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
const fail = (error) => {
|
|
152
|
+
if (!cancelled) send({
|
|
153
|
+
type: "LOAD.FAIL",
|
|
154
|
+
generation,
|
|
155
|
+
error
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
let result;
|
|
159
|
+
try {
|
|
160
|
+
result = prop("loadMore")?.();
|
|
161
|
+
} catch (error) {
|
|
162
|
+
result = Promise.reject(error);
|
|
163
|
+
}
|
|
164
|
+
Promise.resolve(result).then(done, fail);
|
|
165
|
+
return () => {
|
|
166
|
+
cancelled = true;
|
|
167
|
+
};
|
|
168
|
+
},
|
|
169
|
+
observe({ scope, prop, send, refs }) {
|
|
170
|
+
const root = scope.getById(rootId(scope)), win = root?.ownerDocument.defaultView;
|
|
171
|
+
const Observer = win?.IntersectionObserver;
|
|
172
|
+
if (!root || !win || !Observer) return;
|
|
173
|
+
let observer = null, frame = 0, disposed = false;
|
|
174
|
+
const connect = () => {
|
|
175
|
+
frame = 0;
|
|
176
|
+
observer?.disconnect();
|
|
177
|
+
observer = null;
|
|
178
|
+
const state = live({ prop });
|
|
179
|
+
if (disposed || !state.hasMore || state.disabled) return;
|
|
180
|
+
const owner = root.getRootNode();
|
|
181
|
+
const container = state.target ? owner.getElementById?.(state.target) ?? root.ownerDocument.getElementById(state.target) : null;
|
|
182
|
+
observer = new Observer((entries) => {
|
|
183
|
+
const entry = entries[entries.length - 1];
|
|
184
|
+
if (entry && !disposed) send({
|
|
185
|
+
type: "INTERSECT",
|
|
186
|
+
value: entry.isIntersecting
|
|
187
|
+
});
|
|
188
|
+
}, {
|
|
189
|
+
root: container,
|
|
190
|
+
rootMargin: `0px 0px ${state.threshold}px 0px`
|
|
191
|
+
});
|
|
192
|
+
observer.observe(root);
|
|
193
|
+
};
|
|
194
|
+
const schedule = () => {
|
|
195
|
+
if (!disposed && !frame) frame = win.requestAnimationFrame(connect);
|
|
196
|
+
};
|
|
197
|
+
refs.set("reobserve", schedule);
|
|
198
|
+
connect();
|
|
199
|
+
return () => {
|
|
200
|
+
disposed = true;
|
|
201
|
+
refs.set("reobserve", null);
|
|
202
|
+
if (frame) win.cancelAnimationFrame(frame);
|
|
203
|
+
observer?.disconnect();
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
function connectInfiniteScroll(service, normalize) {
|
|
210
|
+
const state = live(service), status = resolveInfiniteScrollStatus(state, service.state.get());
|
|
211
|
+
const statusText = status === "loading" ? state.loadingText : status === "error" ? state.errorText : status === "finished" ? state.finishedText : "";
|
|
212
|
+
const part = (name) => ({
|
|
213
|
+
"data-scope": "infinite-scroll",
|
|
214
|
+
"data-part": name
|
|
215
|
+
});
|
|
216
|
+
const retry = () => service.send({ type: "RETRY" }), reset = () => service.send({ type: "RESET" });
|
|
217
|
+
return {
|
|
218
|
+
status,
|
|
219
|
+
statusText,
|
|
220
|
+
retryText: state.retryText,
|
|
221
|
+
retry,
|
|
222
|
+
reset,
|
|
223
|
+
getRootProps: () => normalize.element({
|
|
224
|
+
...part("root"),
|
|
225
|
+
id: rootId(service.scope),
|
|
226
|
+
"data-status": status,
|
|
227
|
+
"aria-busy": status === "loading" || void 0
|
|
228
|
+
}),
|
|
229
|
+
getStatusProps: () => normalize.element({
|
|
230
|
+
...part("status"),
|
|
231
|
+
role: "status",
|
|
232
|
+
"aria-live": "polite",
|
|
233
|
+
"data-status": status
|
|
234
|
+
}),
|
|
235
|
+
getRetryProps: () => normalize.button({
|
|
236
|
+
...part("retry"),
|
|
237
|
+
type: "button",
|
|
238
|
+
hidden: status !== "error" || void 0,
|
|
239
|
+
onClick(event) {
|
|
240
|
+
if (!event.defaultPrevented) retry();
|
|
241
|
+
}
|
|
242
|
+
})
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
//#endregion
|
|
246
|
+
export { INFINITE_SCROLL_DEFAULT_THRESHOLD, INFINITE_SCROLL_PARTS, INFINITE_SCROLL_STATUSES, connectInfiniteScroll, createInfiniteScrollProps, infiniteScrollMachine, resolveInfiniteScrollState, resolveInfiniteScrollStatus };
|
|
247
|
+
|
|
248
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/infinite-scroll/infinite-scroll.ts"],"sourcesContent":["import { createMachine, type Machine, type Service } from \"@zag-js/core\";\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\";\n\n/** Stable DOM parts shared by every adapter. */\nexport const INFINITE_SCROLL_PARTS = [\"root\", \"status\", \"retry\"] as const;\n/** Rendered status: idle waits for the sentinel, finished means hasMore=false. */\nexport const INFINITE_SCROLL_STATUSES = [\"idle\", \"loading\", \"error\", \"finished\", \"disabled\"] as const;\nexport type InfiniteScrollStatus = (typeof INFINITE_SCROLL_STATUSES)[number];\nexport const INFINITE_SCROLL_DEFAULT_THRESHOLD = 250;\n/** Any request library: resolve when the next page is appended, reject on failure. */\nexport type InfiniteScrollLoader = () => Promise<void> | void;\nexport interface InfiniteScrollErrorDetails { error: unknown }\n\nexport interface QwInfiniteScrollProps {\n /** Page-unique instance identity; adapters generate one when omitted. */\n id?: string;\n /** Called at most once at a time. Results arriving after unmount, reset or disable are ignored. */\n loadMore?: InfiniteScrollLoader;\n /** False shows the finished state and stops observing; defaults to true. */\n hasMore?: boolean;\n /** Distance in CSS pixels before the sentinel reaches the scrollport end; defaults to 250. */\n threshold?: number;\n /** Element id of the scrolling container; omitted or missing means the viewport. */\n target?: string;\n /** Pause automatic loading; a request already in flight still completes normally. */\n disabled?: boolean;\n loadingText?: string;\n finishedText?: string;\n errorText?: string;\n retryText?: string;\n onError?: (details: InfiniteScrollErrorDetails) => void;\n}\nexport interface ResolvedInfiniteScrollState {\n hasMore: boolean; threshold: number; target: string | undefined; disabled: boolean;\n loadingText: string; finishedText: string; errorText: string; retryText: string;\n}\nconst text = (value: string | undefined, fallback: string): string => typeof value === \"string\" && value.trim() ? value : fallback;\n\nexport function resolveInfiniteScrollState(props: QwInfiniteScrollProps = {}): ResolvedInfiniteScrollState {\n const threshold = props.threshold;\n return {\n hasMore: props.hasMore !== false,\n threshold: typeof threshold === \"number\" && Number.isFinite(threshold) && threshold >= 0 ? threshold : INFINITE_SCROLL_DEFAULT_THRESHOLD,\n target: typeof props.target === \"string\" && props.target.trim() ? props.target : undefined, disabled: !!props.disabled,\n loadingText: text(props.loadingText, \"加载中…\"), finishedText: text(props.finishedText, \"没有更多了\"),\n errorText: text(props.errorText, \"加载失败\"), retryText: text(props.retryText, \"重新加载\"),\n };\n}\n/** One status vocabulary for every adapter. Finished wins over idle; disabled only shows while idle. */\nexport function resolveInfiniteScrollStatus(state: ResolvedInfiniteScrollState, machineState: \"idle\" | \"loading\" | \"failed\"): InfiniteScrollStatus {\n if (machineState === \"loading\") return \"loading\";\n if (machineState === \"failed\") return \"error\";\n if (!state.hasMore) return \"finished\";\n return state.disabled ? \"disabled\" : \"idle\";\n}\nexport function createInfiniteScrollProps(props: QwInfiniteScrollProps = {}): QwInfiniteScrollProps {\n if (props.id !== undefined && (typeof props.id !== \"string\" || !props.id.trim())) throw new TypeError(\"InfiniteScroll requires a nonempty instance id when provided\");\n if (props.loadMore !== undefined && typeof props.loadMore !== \"function\") throw new TypeError(\"InfiniteScroll loadMore must be a function returning a Promise\");\n return { ...props };\n}\n\nexport interface QwInfiniteScrollSchema {\n props: QwInfiniteScrollProps;\n context: { generation: number };\n refs: { reobserve: (() => void) | null };\n state: \"idle\" | \"loading\" | \"failed\";\n action: \"reobserve\" | \"notifyError\" | \"bumpGeneration\";\n guard: \"canLoad\" | \"shouldAutoLoad\" | \"isCurrent\";\n effect: \"observe\" | \"runLoad\";\n event:\n | { type: \"INTERSECT\"; value: boolean }\n | { type: \"LOAD\" }\n | { type: \"RETRY\" }\n | { type: \"RESET\" }\n | { type: \"SETTINGS.CHANGE\" }\n | { type: \"LOAD.DONE\"; generation: number }\n | { type: \"LOAD.FAIL\"; generation: number; error: unknown };\n}\nexport type QwInfiniteScrollMachine = Machine<QwInfiniteScrollSchema>;\nexport type QwInfiniteScrollService = Service<QwInfiniteScrollSchema>;\nconst rootId = (scope: QwInfiniteScrollService[\"scope\"]) => `infinite-scroll:${scope.id}`;\nconst live = (service: Pick<QwInfiniteScrollService, \"prop\">) => resolveInfiniteScrollState({\n hasMore: service.prop(\"hasMore\"), threshold: service.prop(\"threshold\"), target: service.prop(\"target\"), disabled: service.prop(\"disabled\"),\n loadingText: service.prop(\"loadingText\"), finishedText: service.prop(\"finishedText\"), errorText: service.prop(\"errorText\"), retryText: service.prop(\"retryText\"),\n});\n\n/** Core owns observation, de-duplication, the generation ticket for late results, retry and cleanup. */\nexport const infiniteScrollMachine: QwInfiniteScrollMachine = createMachine<QwInfiniteScrollSchema>({\n props: ({ props }) => createInfiniteScrollProps(props), initialState: () => \"idle\",\n context: ({ bindable }) => ({ generation: bindable(() => ({ defaultValue: 0 })) }),\n refs: () => ({ reobserve: null }),\n watch({ track, prop, send }) {\n track([() => prop(\"hasMore\"), () => prop(\"disabled\"), () => prop(\"target\"), () => prop(\"threshold\")], () => send({ type: \"SETTINGS.CHANGE\" }));\n },\n effects: [\"observe\"],\n states: {\n idle: {\n on: {\n INTERSECT: { guard: \"shouldAutoLoad\", target: \"loading\" },\n LOAD: { guard: \"canLoad\", target: \"loading\" },\n RESET: { actions: [\"bumpGeneration\", \"reobserve\"] },\n \"SETTINGS.CHANGE\": { actions: [\"reobserve\"] },\n },\n },\n loading: {\n effects: [\"runLoad\"],\n on: {\n \"LOAD.DONE\": { guard: \"isCurrent\", target: \"idle\", actions: [\"reobserve\"] },\n \"LOAD.FAIL\": { guard: \"isCurrent\", target: \"failed\", actions: [\"notifyError\"] },\n // Only reset (or unmount) abandons the in-flight result; intersections and settings changes wait for it.\n RESET: { target: \"idle\", actions: [\"bumpGeneration\", \"reobserve\"] },\n },\n },\n failed: {\n on: {\n RETRY: { guard: \"canLoad\", target: \"loading\" },\n LOAD: { guard: \"canLoad\", target: \"loading\" },\n RESET: { target: \"idle\", actions: [\"bumpGeneration\", \"reobserve\"] },\n \"SETTINGS.CHANGE\": { actions: [\"reobserve\"] },\n },\n },\n },\n implementations: {\n guards: {\n canLoad: ({ prop }) => { const state = live({ prop }); return state.hasMore && !state.disabled && typeof prop(\"loadMore\") === \"function\"; },\n shouldAutoLoad: ({ prop, event }) => { const state = live({ prop }); return event.type === \"INTERSECT\" && event.value && state.hasMore && !state.disabled && typeof prop(\"loadMore\") === \"function\"; },\n isCurrent: ({ context, event }) => (event.type === \"LOAD.DONE\" || event.type === \"LOAD.FAIL\") && event.generation === context.get(\"generation\"),\n },\n actions: {\n // A fresh observation yields an initial record, so a sentinel still in range loads the next page.\n reobserve({ refs }) { refs.get(\"reobserve\")?.(); },\n bumpGeneration({ context }) { context.set(\"generation\", context.get(\"generation\") + 1); },\n notifyError({ event, prop }) { if (event.type === \"LOAD.FAIL\") prop(\"onError\")?.({ error: event.error }); },\n },\n effects: {\n runLoad({ prop, context, send }) {\n const generation = context.get(\"generation\");\n let cancelled = false;\n const done = () => { if (!cancelled) send({ type: \"LOAD.DONE\", generation }); };\n const fail = (error: unknown) => { if (!cancelled) send({ type: \"LOAD.FAIL\", generation, error }); };\n let result: unknown;\n try { result = prop(\"loadMore\")?.(); } catch (error) { result = Promise.reject(error); }\n Promise.resolve(result).then(done, fail);\n return () => { cancelled = true; };\n },\n observe({ scope, prop, send, refs }) {\n const root = scope.getById<HTMLElement>(rootId(scope)), win = root?.ownerDocument.defaultView;\n const Observer = win?.IntersectionObserver;\n if (!root || !win || !Observer) return;\n let observer: IntersectionObserver | null = null, frame = 0, disposed = false;\n const connect = () => {\n frame = 0; observer?.disconnect(); observer = null;\n const state = live({ prop });\n if (disposed || !state.hasMore || state.disabled) return;\n const owner = root.getRootNode() as Document | ShadowRoot;\n const container = state.target ? owner.getElementById?.(state.target) ?? root.ownerDocument.getElementById(state.target) : null;\n observer = new Observer((entries) => {\n const entry = entries[entries.length - 1];\n if (entry && !disposed) send({ type: \"INTERSECT\", value: entry.isIntersecting });\n }, { root: container, rootMargin: `0px 0px ${state.threshold}px 0px` });\n observer.observe(root);\n };\n // Coalesce: wait one frame so appended content is laid out before the next measurement.\n const schedule = () => { if (!disposed && !frame) frame = win.requestAnimationFrame(connect); };\n refs.set(\"reobserve\", schedule); connect();\n return () => { disposed = true; refs.set(\"reobserve\", null); if (frame) win.cancelAnimationFrame(frame); observer?.disconnect(); };\n },\n },\n },\n});\n\nexport interface QwInfiniteScrollApi<T extends PropTypes = PropTypes> {\n status: InfiniteScrollStatus; statusText: string; retryText: string;\n /** Retry after a failure (also usable as a manual \"load more\"). */\n retry(): void;\n /** Ignore any in-flight result and observe again (for example after the list was replaced). */\n reset(): void;\n getRootProps(): T[\"element\"];\n getStatusProps(): T[\"element\"];\n getRetryProps(): T[\"button\"];\n}\nexport function connectInfiniteScroll<T extends PropTypes>(service: QwInfiniteScrollService, normalize: NormalizeProps<T>): QwInfiniteScrollApi<T> {\n const state = live(service), status = resolveInfiniteScrollStatus(state, service.state.get());\n const statusText = status === \"loading\" ? state.loadingText : status === \"error\" ? state.errorText : status === \"finished\" ? state.finishedText : \"\";\n const part = (name: string) => ({ \"data-scope\": \"infinite-scroll\", \"data-part\": name });\n const retry = () => service.send({ type: \"RETRY\" }), reset = () => service.send({ type: \"RESET\" });\n return {\n status, statusText, retryText: state.retryText, retry, reset,\n getRootProps: () => normalize.element({ ...part(\"root\"), id: rootId(service.scope), \"data-status\": status, \"aria-busy\": status === \"loading\" || undefined }),\n getStatusProps: () => normalize.element({ ...part(\"status\"), role: \"status\", \"aria-live\": \"polite\", \"data-status\": status }),\n getRetryProps: () => normalize.button({ ...part(\"retry\"), type: \"button\", hidden: status !== \"error\" || undefined,\n onClick(event: { defaultPrevented: boolean }) { if (!event.defaultPrevented) retry(); } }),\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { type Machine, type Service } from "@zag-js/core";
|
|
2
|
+
import type { NormalizeProps, PropTypes } from "@zag-js/types";
|
|
3
|
+
/** Stable DOM parts shared by every adapter. */
|
|
4
|
+
export declare const INFINITE_SCROLL_PARTS: readonly ["root", "status", "retry"];
|
|
5
|
+
/** Rendered status: idle waits for the sentinel, finished means hasMore=false. */
|
|
6
|
+
export declare const INFINITE_SCROLL_STATUSES: readonly ["idle", "loading", "error", "finished", "disabled"];
|
|
7
|
+
export type InfiniteScrollStatus = (typeof INFINITE_SCROLL_STATUSES)[number];
|
|
8
|
+
export declare const INFINITE_SCROLL_DEFAULT_THRESHOLD = 250;
|
|
9
|
+
/** Any request library: resolve when the next page is appended, reject on failure. */
|
|
10
|
+
export type InfiniteScrollLoader = () => Promise<void> | void;
|
|
11
|
+
export interface InfiniteScrollErrorDetails {
|
|
12
|
+
error: unknown;
|
|
13
|
+
}
|
|
14
|
+
export interface QwInfiniteScrollProps {
|
|
15
|
+
/** Page-unique instance identity; adapters generate one when omitted. */
|
|
16
|
+
id?: string;
|
|
17
|
+
/** Called at most once at a time. Results arriving after unmount, reset or disable are ignored. */
|
|
18
|
+
loadMore?: InfiniteScrollLoader;
|
|
19
|
+
/** False shows the finished state and stops observing; defaults to true. */
|
|
20
|
+
hasMore?: boolean;
|
|
21
|
+
/** Distance in CSS pixels before the sentinel reaches the scrollport end; defaults to 250. */
|
|
22
|
+
threshold?: number;
|
|
23
|
+
/** Element id of the scrolling container; omitted or missing means the viewport. */
|
|
24
|
+
target?: string;
|
|
25
|
+
/** Pause automatic loading; a request already in flight still completes normally. */
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
loadingText?: string;
|
|
28
|
+
finishedText?: string;
|
|
29
|
+
errorText?: string;
|
|
30
|
+
retryText?: string;
|
|
31
|
+
onError?: (details: InfiniteScrollErrorDetails) => void;
|
|
32
|
+
}
|
|
33
|
+
export interface ResolvedInfiniteScrollState {
|
|
34
|
+
hasMore: boolean;
|
|
35
|
+
threshold: number;
|
|
36
|
+
target: string | undefined;
|
|
37
|
+
disabled: boolean;
|
|
38
|
+
loadingText: string;
|
|
39
|
+
finishedText: string;
|
|
40
|
+
errorText: string;
|
|
41
|
+
retryText: string;
|
|
42
|
+
}
|
|
43
|
+
export declare function resolveInfiniteScrollState(props?: QwInfiniteScrollProps): ResolvedInfiniteScrollState;
|
|
44
|
+
/** One status vocabulary for every adapter. Finished wins over idle; disabled only shows while idle. */
|
|
45
|
+
export declare function resolveInfiniteScrollStatus(state: ResolvedInfiniteScrollState, machineState: "idle" | "loading" | "failed"): InfiniteScrollStatus;
|
|
46
|
+
export declare function createInfiniteScrollProps(props?: QwInfiniteScrollProps): QwInfiniteScrollProps;
|
|
47
|
+
export interface QwInfiniteScrollSchema {
|
|
48
|
+
props: QwInfiniteScrollProps;
|
|
49
|
+
context: {
|
|
50
|
+
generation: number;
|
|
51
|
+
};
|
|
52
|
+
refs: {
|
|
53
|
+
reobserve: (() => void) | null;
|
|
54
|
+
};
|
|
55
|
+
state: "idle" | "loading" | "failed";
|
|
56
|
+
action: "reobserve" | "notifyError" | "bumpGeneration";
|
|
57
|
+
guard: "canLoad" | "shouldAutoLoad" | "isCurrent";
|
|
58
|
+
effect: "observe" | "runLoad";
|
|
59
|
+
event: {
|
|
60
|
+
type: "INTERSECT";
|
|
61
|
+
value: boolean;
|
|
62
|
+
} | {
|
|
63
|
+
type: "LOAD";
|
|
64
|
+
} | {
|
|
65
|
+
type: "RETRY";
|
|
66
|
+
} | {
|
|
67
|
+
type: "RESET";
|
|
68
|
+
} | {
|
|
69
|
+
type: "SETTINGS.CHANGE";
|
|
70
|
+
} | {
|
|
71
|
+
type: "LOAD.DONE";
|
|
72
|
+
generation: number;
|
|
73
|
+
} | {
|
|
74
|
+
type: "LOAD.FAIL";
|
|
75
|
+
generation: number;
|
|
76
|
+
error: unknown;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export type QwInfiniteScrollMachine = Machine<QwInfiniteScrollSchema>;
|
|
80
|
+
export type QwInfiniteScrollService = Service<QwInfiniteScrollSchema>;
|
|
81
|
+
/** Core owns observation, de-duplication, the generation ticket for late results, retry and cleanup. */
|
|
82
|
+
export declare const infiniteScrollMachine: QwInfiniteScrollMachine;
|
|
83
|
+
export interface QwInfiniteScrollApi<T extends PropTypes = PropTypes> {
|
|
84
|
+
status: InfiniteScrollStatus;
|
|
85
|
+
statusText: string;
|
|
86
|
+
retryText: string;
|
|
87
|
+
/** Retry after a failure (also usable as a manual "load more"). */
|
|
88
|
+
retry(): void;
|
|
89
|
+
/** Ignore any in-flight result and observe again (for example after the list was replaced). */
|
|
90
|
+
reset(): void;
|
|
91
|
+
getRootProps(): T["element"];
|
|
92
|
+
getStatusProps(): T["element"];
|
|
93
|
+
getRetryProps(): T["button"];
|
|
94
|
+
}
|
|
95
|
+
export declare function connectInfiniteScroll<T extends PropTypes>(service: QwInfiniteScrollService, normalize: NormalizeProps<T>): QwInfiniteScrollApi<T>;
|