@greypan/web-ui 11.2.0 → 12.0.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.
- package/README.CN.md +79 -68
- package/README.md +81 -72
- package/dist/_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js +8 -0
- package/dist/assets/menu-portal.js +3 -4
- package/dist/assets/menu-portal.js.map +1 -1
- package/dist/assets/modal-surface.js +3 -4
- package/dist/assets/modal-surface.js.map +1 -1
- package/dist/assets/overlay-motion.js +3 -4
- package/dist/assets/overlay-motion.js.map +1 -1
- package/dist/assets/scrollbar.js +5 -0
- package/dist/assets/scrollbar.js.map +1 -0
- package/dist/assets/selection-control.js +3 -4
- package/dist/assets/selection-control.js.map +1 -1
- package/dist/assets/toast-containers.js +3 -4
- package/dist/assets/toast-containers.js.map +1 -1
- package/dist/classes/glass.js +3 -4
- package/dist/classes/glass.js.map +1 -1
- package/dist/classes/glow.js +3 -4
- package/dist/classes/glow.js.map +1 -1
- package/dist/components/autocomplete/index.d.ts +485 -483
- package/dist/components/autocomplete/index.d.ts.map +1 -0
- package/dist/components/autocomplete/index.js +475 -267
- package/dist/components/autocomplete/index.js.map +1 -1
- package/dist/components/autocomplete/style.js +3 -4
- package/dist/components/autocomplete/style.js.map +1 -1
- package/dist/components/avatar/index.d.ts +26 -24
- package/dist/components/avatar/index.d.ts.map +1 -0
- package/dist/components/avatar/index.js +72 -52
- package/dist/components/avatar/index.js.map +1 -1
- package/dist/components/avatar/style.js +3 -4
- package/dist/components/avatar/style.js.map +1 -1
- package/dist/components/back-top/index.d.ts +30 -27
- package/dist/components/back-top/index.d.ts.map +1 -0
- package/dist/components/back-top/index.js +96 -62
- package/dist/components/back-top/index.js.map +1 -1
- package/dist/components/back-top/style.js +3 -4
- package/dist/components/back-top/style.js.map +1 -1
- package/dist/components/badge/index.d.ts +32 -26
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +116 -74
- package/dist/components/badge/index.js.map +1 -1
- package/dist/components/badge/style.js +3 -4
- package/dist/components/badge/style.js.map +1 -1
- package/dist/components/button/index.d.ts +392 -390
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/button/index.js +108 -74
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/button/style.js +3 -4
- package/dist/components/button/style.js.map +1 -1
- package/dist/components/button-group/index.d.ts +14 -13
- package/dist/components/button-group/index.d.ts.map +1 -0
- package/dist/components/button-group/index.js +43 -33
- package/dist/components/button-group/index.js.map +1 -1
- package/dist/components/button-group/style.js +3 -4
- package/dist/components/button-group/style.js.map +1 -1
- package/dist/components/checkbox/index.d.ts +399 -397
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/checkbox/index.js +103 -74
- package/dist/components/checkbox/index.js.map +1 -1
- package/dist/components/checkbox/style.js +3 -4
- package/dist/components/checkbox/style.js.map +1 -1
- package/dist/components/checkbox-group/index.d.ts +397 -396
- package/dist/components/checkbox-group/index.d.ts.map +1 -0
- package/dist/components/checkbox-group/index.js +92 -70
- package/dist/components/checkbox-group/index.js.map +1 -1
- package/dist/components/checkbox-group/style.js +3 -4
- package/dist/components/checkbox-group/style.js.map +1 -1
- package/dist/components/collapse/index.d.ts +72 -71
- package/dist/components/collapse/index.d.ts.map +1 -0
- package/dist/components/collapse/index.js +225 -130
- package/dist/components/collapse/index.js.map +1 -1
- package/dist/components/collapse/style.js +3 -4
- package/dist/components/collapse/style.js.map +1 -1
- package/dist/components/context-menu/index.d.ts +307 -310
- package/dist/components/context-menu/index.d.ts.map +1 -0
- package/dist/components/context-menu/index.js +685 -270
- package/dist/components/context-menu/index.js.map +1 -1
- package/dist/components/context-menu/scrim.js +3 -4
- package/dist/components/context-menu/scrim.js.map +1 -1
- package/dist/components/context-menu/style.js +3 -4
- package/dist/components/context-menu/style.js.map +1 -1
- package/dist/components/dialog/index.d.ts +87 -78
- package/dist/components/dialog/index.d.ts.map +1 -0
- package/dist/components/dialog/index.js +183 -88
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/dialog/style.js +3 -4
- package/dist/components/dialog/style.js.map +1 -1
- package/dist/components/drawer/index.d.ts +159 -150
- package/dist/components/drawer/index.d.ts.map +1 -0
- package/dist/components/drawer/index.js +503 -242
- package/dist/components/drawer/index.js.map +1 -1
- package/dist/components/drawer/style.js +3 -4
- package/dist/components/drawer/style.js.map +1 -1
- package/dist/components/dropdown/index.d.ts +125 -124
- package/dist/components/dropdown/index.d.ts.map +1 -0
- package/dist/components/dropdown/index.js +556 -328
- package/dist/components/dropdown/index.js.map +1 -1
- package/dist/components/dropdown/style.js +3 -4
- package/dist/components/dropdown/style.js.map +1 -1
- package/dist/components/dropdown-divider/index.d.ts +7 -6
- package/dist/components/dropdown-divider/index.d.ts.map +1 -0
- package/dist/components/dropdown-divider/index.js +10 -11
- package/dist/components/dropdown-divider/index.js.map +1 -1
- package/dist/components/dropdown-divider/style.js +3 -4
- package/dist/components/dropdown-divider/style.js.map +1 -1
- package/dist/components/dropdown-header/index.d.ts +7 -6
- package/dist/components/dropdown-header/index.d.ts.map +1 -0
- package/dist/components/dropdown-header/index.js +10 -11
- package/dist/components/dropdown-header/index.js.map +1 -1
- package/dist/components/dropdown-header/style.js +3 -4
- package/dist/components/dropdown-header/style.js.map +1 -1
- package/dist/components/dropdown-item/index.d.ts +13 -11
- package/dist/components/dropdown-item/index.d.ts.map +1 -0
- package/dist/components/dropdown-item/index.js +32 -25
- package/dist/components/dropdown-item/index.js.map +1 -1
- package/dist/components/dropdown-item/style.js +3 -4
- package/dist/components/dropdown-item/style.js.map +1 -1
- package/dist/components/editable-text/index.d.ts +506 -505
- package/dist/components/editable-text/index.d.ts.map +1 -0
- package/dist/components/editable-text/index.js +281 -127
- package/dist/components/editable-text/index.js.map +1 -1
- package/dist/components/editable-text/style.js +3 -4
- package/dist/components/editable-text/style.js.map +1 -1
- package/dist/components/empty/index.d.ts +17 -15
- package/dist/components/empty/index.d.ts.map +1 -0
- package/dist/components/empty/index.js +66 -37
- package/dist/components/empty/index.js.map +1 -1
- package/dist/components/empty/style.js +3 -4
- package/dist/components/empty/style.js.map +1 -1
- package/dist/components/icon/index.d.ts +12 -11
- package/dist/components/icon/index.d.ts.map +1 -0
- package/dist/components/icon/index.js +34 -27
- package/dist/components/icon/index.js.map +1 -1
- package/dist/components/icon/style.js +3 -4
- package/dist/components/icon/style.js.map +1 -1
- package/dist/components/image-preview/index.d.ts +58 -44
- package/dist/components/image-preview/index.d.ts.map +1 -0
- package/dist/components/image-preview/index.js +536 -265
- package/dist/components/image-preview/index.js.map +1 -1
- package/dist/components/image-preview/style.js +3 -4
- package/dist/components/image-preview/style.js.map +1 -1
- package/dist/components/index.d.ts +46 -43
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +41 -41
- package/dist/components/input/index.d.ts +418 -413
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/input/index.js +148 -84
- package/dist/components/input/index.js.map +1 -1
- package/dist/components/input/style.js +3 -4
- package/dist/components/input/style.js.map +1 -1
- package/dist/components/input-number/index.d.ts +453 -447
- package/dist/components/input-number/index.d.ts.map +1 -0
- package/dist/components/input-number/index.js +484 -292
- package/dist/components/input-number/index.js.map +1 -1
- package/dist/components/input-number/style.js +3 -4
- package/dist/components/input-number/style.js.map +1 -1
- package/dist/components/layout/index.d.ts +110 -87
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/index.js +238 -144
- package/dist/components/layout/index.js.map +1 -1
- package/dist/components/layout/style.js +3 -4
- package/dist/components/layout/style.js.map +1 -1
- package/dist/components/middle-ellipsis/index.d.ts +93 -92
- package/dist/components/middle-ellipsis/index.d.ts.map +1 -0
- package/dist/components/middle-ellipsis/index.js +261 -107
- package/dist/components/middle-ellipsis/index.js.map +1 -1
- package/dist/components/middle-ellipsis/style.js +3 -4
- package/dist/components/middle-ellipsis/style.js.map +1 -1
- package/dist/components/middle-ellipsis/truncate.js +60 -30
- package/dist/components/middle-ellipsis/truncate.js.map +1 -1
- package/dist/components/option/index.d.ts +20 -18
- package/dist/components/option/index.d.ts.map +1 -0
- package/dist/components/option/index.js +53 -40
- package/dist/components/option/index.js.map +1 -1
- package/dist/components/option/style.js +3 -4
- package/dist/components/option/style.js.map +1 -1
- package/dist/components/popover/index.d.ts +69 -68
- package/dist/components/popover/index.d.ts.map +1 -0
- package/dist/components/popover/index.js +221 -104
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/popover/style.js +3 -4
- package/dist/components/popover/style.js.map +1 -1
- package/dist/components/radio/index.d.ts +396 -395
- package/dist/components/radio/index.d.ts.map +1 -0
- package/dist/components/radio/index.js +91 -62
- package/dist/components/radio/index.js.map +1 -1
- package/dist/components/radio/interaction.js +10 -11
- package/dist/components/radio/interaction.js.map +1 -1
- package/dist/components/radio/style.js +3 -4
- package/dist/components/radio/style.js.map +1 -1
- package/dist/components/radio-group/index.d.ts +417 -416
- package/dist/components/radio-group/index.d.ts.map +1 -0
- package/dist/components/radio-group/index.js +307 -207
- package/dist/components/radio-group/index.js.map +1 -1
- package/dist/components/radio-group/style.js +3 -4
- package/dist/components/radio-group/style.js.map +1 -1
- package/dist/components/segmented/index.d.ts +408 -402
- package/dist/components/segmented/index.d.ts.map +1 -0
- package/dist/components/segmented/index.js +267 -158
- package/dist/components/segmented/index.js.map +1 -1
- package/dist/components/segmented/style.js +3 -4
- package/dist/components/segmented/style.js.map +1 -1
- package/dist/components/segmented-trigger/index.d.ts +18 -17
- package/dist/components/segmented-trigger/index.d.ts.map +1 -0
- package/dist/components/segmented-trigger/index.js +45 -36
- package/dist/components/segmented-trigger/index.js.map +1 -1
- package/dist/components/segmented-trigger/style.js +3 -4
- package/dist/components/segmented-trigger/style.js.map +1 -1
- package/dist/components/select/index.d.ts +450 -448
- package/dist/components/select/index.d.ts.map +1 -0
- package/dist/components/select/index.js +342 -188
- package/dist/components/select/index.js.map +1 -1
- package/dist/components/select/style.js +3 -4
- package/dist/components/select/style.js.map +1 -1
- package/dist/components/slider/index.d.ts +428 -427
- package/dist/components/slider/index.d.ts.map +1 -0
- package/dist/components/slider/index.js +308 -216
- package/dist/components/slider/index.js.map +1 -1
- package/dist/components/slider/style.js +3 -4
- package/dist/components/slider/style.js.map +1 -1
- package/dist/components/spinner/index.d.ts +39 -38
- package/dist/components/spinner/index.d.ts.map +1 -0
- package/dist/components/spinner/index.js +118 -65
- package/dist/components/spinner/index.js.map +1 -1
- package/dist/components/spinner/style.js +3 -4
- package/dist/components/spinner/style.js.map +1 -1
- package/dist/components/svg-draw-lines/index.d.ts +40 -39
- package/dist/components/svg-draw-lines/index.d.ts.map +1 -0
- package/dist/components/svg-draw-lines/index.js +189 -106
- package/dist/components/svg-draw-lines/index.js.map +1 -1
- package/dist/components/svg-draw-lines/style.js +3 -4
- package/dist/components/svg-draw-lines/style.js.map +1 -1
- package/dist/components/switch/index.d.ts +411 -409
- package/dist/components/switch/index.d.ts.map +1 -0
- package/dist/components/switch/index.js +193 -106
- package/dist/components/switch/index.js.map +1 -1
- package/dist/components/switch/style.js +3 -4
- package/dist/components/switch/style.js.map +1 -1
- package/dist/components/textarea/index.d.ts +430 -425
- package/dist/components/textarea/index.d.ts.map +1 -0
- package/dist/components/textarea/index.js +187 -100
- package/dist/components/textarea/index.js.map +1 -1
- package/dist/components/textarea/style.js +3 -4
- package/dist/components/textarea/style.js.map +1 -1
- package/dist/components/theme/index.d.ts +45 -44
- package/dist/components/theme/index.d.ts.map +1 -0
- package/dist/components/theme/index.js +268 -161
- package/dist/components/theme/index.js.map +1 -1
- package/dist/components/theme/style.js +3 -4
- package/dist/components/theme/style.js.map +1 -1
- package/dist/components/toast/index.d.ts +4 -3
- package/dist/components/toast/index.js +3 -3
- package/dist/components/toast/manager.d.ts +9 -8
- package/dist/components/toast/manager.d.ts.map +1 -0
- package/dist/components/toast/manager.js +215 -119
- package/dist/components/toast/manager.js.map +1 -1
- package/dist/components/toast/style.js +3 -4
- package/dist/components/toast/style.js.map +1 -1
- package/dist/components/toast/toast.d.ts +75 -71
- package/dist/components/toast/toast.d.ts.map +1 -0
- package/dist/components/toast/toast.js +203 -96
- package/dist/components/toast/toast.js.map +1 -1
- package/dist/components/toast/types.d.ts +10 -9
- package/dist/components/toast/types.d.ts.map +1 -0
- package/dist/components/tooltip/index.d.ts +72 -62
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tooltip/index.js +251 -93
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/components/tooltip/style.js +3 -4
- package/dist/components/tooltip/style.js.map +1 -1
- package/dist/icons/generated/akar-icons-check.d.ts +5 -4
- package/dist/icons/generated/akar-icons-check.d.ts.map +1 -0
- package/dist/icons/generated/akar-icons-check.js +3 -4
- package/dist/icons/generated/akar-icons-check.js.map +1 -1
- package/dist/icons/generated/akar-icons-circle-check.d.ts +5 -4
- package/dist/icons/generated/akar-icons-circle-check.d.ts.map +1 -0
- package/dist/icons/generated/akar-icons-circle-check.js +3 -4
- package/dist/icons/generated/akar-icons-circle-check.js.map +1 -1
- package/dist/icons/generated/andrsrxn-inbox.d.ts +5 -4
- package/dist/icons/generated/andrsrxn-inbox.d.ts.map +1 -0
- package/dist/icons/generated/andrsrxn-inbox.js +3 -4
- package/dist/icons/generated/andrsrxn-inbox.js.map +1 -1
- package/dist/icons/generated/bi-check-lg.d.ts +5 -4
- package/dist/icons/generated/bi-check-lg.d.ts.map +1 -0
- package/dist/icons/generated/bi-check-lg.js +3 -4
- package/dist/icons/generated/bi-check-lg.js.map +1 -1
- package/dist/icons/generated/bi-check.d.ts +5 -4
- package/dist/icons/generated/bi-check.d.ts.map +1 -0
- package/dist/icons/generated/bi-check.js +3 -4
- package/dist/icons/generated/bi-check.js.map +1 -1
- package/dist/icons/generated/fluent-tag-search-24-regular.d.ts +5 -4
- package/dist/icons/generated/fluent-tag-search-24-regular.d.ts.map +1 -0
- package/dist/icons/generated/fluent-tag-search-24-regular.js +3 -4
- package/dist/icons/generated/fluent-tag-search-24-regular.js.map +1 -1
- package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.d.ts +5 -4
- package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.d.ts.map +1 -0
- package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.js +3 -4
- package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.js.map +1 -1
- package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.d.ts +5 -4
- package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.d.ts.map +1 -0
- package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.js +3 -4
- package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.js.map +1 -1
- package/dist/icons/generated/heroicons-check-16-solid.d.ts +5 -4
- package/dist/icons/generated/heroicons-check-16-solid.d.ts.map +1 -0
- package/dist/icons/generated/heroicons-check-16-solid.js +3 -4
- package/dist/icons/generated/heroicons-check-16-solid.js.map +1 -1
- package/dist/icons/generated/heroicons-x-mark-16-solid.d.ts +5 -4
- package/dist/icons/generated/heroicons-x-mark-16-solid.d.ts.map +1 -0
- package/dist/icons/generated/heroicons-x-mark-16-solid.js +3 -4
- package/dist/icons/generated/heroicons-x-mark-16-solid.js.map +1 -1
- package/dist/icons/generated/jam-close-circle-f.d.ts +7 -6
- package/dist/icons/generated/jam-close-circle-f.d.ts.map +1 -0
- package/dist/icons/generated/jam-close-circle-f.js +3 -4
- package/dist/icons/generated/jam-close-circle-f.js.map +1 -1
- package/dist/icons/generated/lucide-arrow-down-to-line.d.ts +5 -4
- package/dist/icons/generated/lucide-arrow-down-to-line.d.ts.map +1 -0
- package/dist/icons/generated/lucide-arrow-down-to-line.js +3 -4
- package/dist/icons/generated/lucide-arrow-down-to-line.js.map +1 -1
- package/dist/icons/generated/lucide-arrow-up-to-line.d.ts +5 -4
- package/dist/icons/generated/lucide-arrow-up-to-line.d.ts.map +1 -0
- package/dist/icons/generated/lucide-arrow-up-to-line.js +3 -4
- package/dist/icons/generated/lucide-arrow-up-to-line.js.map +1 -1
- package/dist/icons/generated/lucide-bell.d.ts +5 -4
- package/dist/icons/generated/lucide-bell.d.ts.map +1 -0
- package/dist/icons/generated/lucide-bell.js +3 -4
- package/dist/icons/generated/lucide-bell.js.map +1 -1
- package/dist/icons/generated/lucide-check.d.ts +5 -4
- package/dist/icons/generated/lucide-check.d.ts.map +1 -0
- package/dist/icons/generated/lucide-check.js +3 -4
- package/dist/icons/generated/lucide-check.js.map +1 -1
- package/dist/icons/generated/lucide-chevron-down.d.ts +5 -4
- package/dist/icons/generated/lucide-chevron-down.d.ts.map +1 -0
- package/dist/icons/generated/lucide-chevron-down.js +3 -4
- package/dist/icons/generated/lucide-chevron-down.js.map +1 -1
- package/dist/icons/generated/lucide-chevron-left.d.ts +5 -4
- package/dist/icons/generated/lucide-chevron-left.d.ts.map +1 -0
- package/dist/icons/generated/lucide-chevron-left.js +3 -4
- package/dist/icons/generated/lucide-chevron-left.js.map +1 -1
- package/dist/icons/generated/lucide-chevron-right.d.ts +5 -4
- package/dist/icons/generated/lucide-chevron-right.d.ts.map +1 -0
- package/dist/icons/generated/lucide-chevron-right.js +3 -4
- package/dist/icons/generated/lucide-chevron-right.js.map +1 -1
- package/dist/icons/generated/lucide-chevron-up.d.ts +5 -4
- package/dist/icons/generated/lucide-chevron-up.d.ts.map +1 -0
- package/dist/icons/generated/lucide-chevron-up.js +3 -4
- package/dist/icons/generated/lucide-chevron-up.js.map +1 -1
- package/dist/icons/generated/lucide-circle-alert.d.ts +5 -4
- package/dist/icons/generated/lucide-circle-alert.d.ts.map +1 -0
- package/dist/icons/generated/lucide-circle-alert.js +3 -4
- package/dist/icons/generated/lucide-circle-alert.js.map +1 -1
- package/dist/icons/generated/lucide-clapperboard.d.ts +5 -4
- package/dist/icons/generated/lucide-clapperboard.d.ts.map +1 -0
- package/dist/icons/generated/lucide-clapperboard.js +3 -4
- package/dist/icons/generated/lucide-clapperboard.js.map +1 -1
- package/dist/icons/generated/lucide-clipboard-paste.d.ts +5 -4
- package/dist/icons/generated/lucide-clipboard-paste.d.ts.map +1 -0
- package/dist/icons/generated/lucide-clipboard-paste.js +3 -4
- package/dist/icons/generated/lucide-clipboard-paste.js.map +1 -1
- package/dist/icons/generated/lucide-code.d.ts +5 -4
- package/dist/icons/generated/lucide-code.d.ts.map +1 -0
- package/dist/icons/generated/lucide-code.js +3 -4
- package/dist/icons/generated/lucide-code.js.map +1 -1
- package/dist/icons/generated/lucide-copy.d.ts +5 -4
- package/dist/icons/generated/lucide-copy.d.ts.map +1 -0
- package/dist/icons/generated/lucide-copy.js +3 -4
- package/dist/icons/generated/lucide-copy.js.map +1 -1
- package/dist/icons/generated/lucide-download.d.ts +5 -4
- package/dist/icons/generated/lucide-download.d.ts.map +1 -0
- package/dist/icons/generated/lucide-download.js +3 -4
- package/dist/icons/generated/lucide-download.js.map +1 -1
- package/dist/icons/generated/lucide-ellipsis-vertical.d.ts +5 -4
- package/dist/icons/generated/lucide-ellipsis-vertical.d.ts.map +1 -0
- package/dist/icons/generated/lucide-ellipsis-vertical.js +3 -4
- package/dist/icons/generated/lucide-ellipsis-vertical.js.map +1 -1
- package/dist/icons/generated/lucide-external-link.d.ts +5 -4
- package/dist/icons/generated/lucide-external-link.d.ts.map +1 -0
- package/dist/icons/generated/lucide-external-link.js +3 -4
- package/dist/icons/generated/lucide-external-link.js.map +1 -1
- package/dist/icons/generated/lucide-eye.d.ts +5 -4
- package/dist/icons/generated/lucide-eye.d.ts.map +1 -0
- package/dist/icons/generated/lucide-eye.js +3 -4
- package/dist/icons/generated/lucide-eye.js.map +1 -1
- package/dist/icons/generated/lucide-file-text.d.ts +5 -4
- package/dist/icons/generated/lucide-file-text.d.ts.map +1 -0
- package/dist/icons/generated/lucide-file-text.js +3 -4
- package/dist/icons/generated/lucide-file-text.js.map +1 -1
- package/dist/icons/generated/lucide-file.d.ts +5 -4
- package/dist/icons/generated/lucide-file.d.ts.map +1 -0
- package/dist/icons/generated/lucide-file.js +3 -4
- package/dist/icons/generated/lucide-file.js.map +1 -1
- package/dist/icons/generated/lucide-film.d.ts +5 -4
- package/dist/icons/generated/lucide-film.d.ts.map +1 -0
- package/dist/icons/generated/lucide-film.js +3 -4
- package/dist/icons/generated/lucide-film.js.map +1 -1
- package/dist/icons/generated/lucide-folder-open.d.ts +5 -4
- package/dist/icons/generated/lucide-folder-open.d.ts.map +1 -0
- package/dist/icons/generated/lucide-folder-open.js +3 -4
- package/dist/icons/generated/lucide-folder-open.js.map +1 -1
- package/dist/icons/generated/lucide-folder.d.ts +5 -4
- package/dist/icons/generated/lucide-folder.d.ts.map +1 -0
- package/dist/icons/generated/lucide-folder.js +3 -4
- package/dist/icons/generated/lucide-folder.js.map +1 -1
- package/dist/icons/generated/lucide-globe.d.ts +5 -4
- package/dist/icons/generated/lucide-globe.d.ts.map +1 -0
- package/dist/icons/generated/lucide-globe.js +3 -4
- package/dist/icons/generated/lucide-globe.js.map +1 -1
- package/dist/icons/generated/lucide-headphones.d.ts +5 -4
- package/dist/icons/generated/lucide-headphones.d.ts.map +1 -0
- package/dist/icons/generated/lucide-headphones.js +3 -4
- package/dist/icons/generated/lucide-headphones.js.map +1 -1
- package/dist/icons/generated/lucide-heart.d.ts +5 -4
- package/dist/icons/generated/lucide-heart.d.ts.map +1 -0
- package/dist/icons/generated/lucide-heart.js +3 -4
- package/dist/icons/generated/lucide-heart.js.map +1 -1
- package/dist/icons/generated/lucide-image.d.ts +5 -4
- package/dist/icons/generated/lucide-image.d.ts.map +1 -0
- package/dist/icons/generated/lucide-image.js +3 -4
- package/dist/icons/generated/lucide-image.js.map +1 -1
- package/dist/icons/generated/lucide-inbox.d.ts +5 -4
- package/dist/icons/generated/lucide-inbox.d.ts.map +1 -0
- package/dist/icons/generated/lucide-inbox.js +3 -4
- package/dist/icons/generated/lucide-inbox.js.map +1 -1
- package/dist/icons/generated/lucide-info.d.ts +5 -4
- package/dist/icons/generated/lucide-info.d.ts.map +1 -0
- package/dist/icons/generated/lucide-info.js +3 -4
- package/dist/icons/generated/lucide-info.js.map +1 -1
- package/dist/icons/generated/lucide-layout-grid.d.ts +5 -4
- package/dist/icons/generated/lucide-layout-grid.d.ts.map +1 -0
- package/dist/icons/generated/lucide-layout-grid.js +3 -4
- package/dist/icons/generated/lucide-layout-grid.js.map +1 -1
- package/dist/icons/generated/lucide-link.d.ts +5 -4
- package/dist/icons/generated/lucide-link.d.ts.map +1 -0
- package/dist/icons/generated/lucide-link.js +3 -4
- package/dist/icons/generated/lucide-link.js.map +1 -1
- package/dist/icons/generated/lucide-list-filter.d.ts +5 -4
- package/dist/icons/generated/lucide-list-filter.d.ts.map +1 -0
- package/dist/icons/generated/lucide-list-filter.js +3 -4
- package/dist/icons/generated/lucide-list-filter.js.map +1 -1
- package/dist/icons/generated/lucide-list-restart.d.ts +5 -4
- package/dist/icons/generated/lucide-list-restart.d.ts.map +1 -0
- package/dist/icons/generated/lucide-list-restart.js +3 -4
- package/dist/icons/generated/lucide-list-restart.js.map +1 -1
- package/dist/icons/generated/lucide-loader-circle.d.ts +5 -4
- package/dist/icons/generated/lucide-loader-circle.d.ts.map +1 -0
- package/dist/icons/generated/lucide-loader-circle.js +3 -4
- package/dist/icons/generated/lucide-loader-circle.js.map +1 -1
- package/dist/icons/generated/lucide-mail.d.ts +5 -4
- package/dist/icons/generated/lucide-mail.d.ts.map +1 -0
- package/dist/icons/generated/lucide-mail.js +3 -4
- package/dist/icons/generated/lucide-mail.js.map +1 -1
- package/dist/icons/generated/lucide-minus.d.ts +5 -4
- package/dist/icons/generated/lucide-minus.d.ts.map +1 -0
- package/dist/icons/generated/lucide-minus.js +3 -4
- package/dist/icons/generated/lucide-minus.js.map +1 -1
- package/dist/icons/generated/lucide-music.d.ts +5 -4
- package/dist/icons/generated/lucide-music.d.ts.map +1 -0
- package/dist/icons/generated/lucide-music.js +3 -4
- package/dist/icons/generated/lucide-music.js.map +1 -1
- package/dist/icons/generated/lucide-package.d.ts +5 -4
- package/dist/icons/generated/lucide-package.d.ts.map +1 -0
- package/dist/icons/generated/lucide-package.js +3 -4
- package/dist/icons/generated/lucide-package.js.map +1 -1
- package/dist/icons/generated/lucide-pen-line.d.ts +5 -4
- package/dist/icons/generated/lucide-pen-line.d.ts.map +1 -0
- package/dist/icons/generated/lucide-pen-line.js +3 -4
- package/dist/icons/generated/lucide-pen-line.js.map +1 -1
- package/dist/icons/generated/lucide-pencil.d.ts +5 -4
- package/dist/icons/generated/lucide-pencil.d.ts.map +1 -0
- package/dist/icons/generated/lucide-pencil.js +3 -4
- package/dist/icons/generated/lucide-pencil.js.map +1 -1
- package/dist/icons/generated/lucide-play.d.ts +5 -4
- package/dist/icons/generated/lucide-play.d.ts.map +1 -0
- package/dist/icons/generated/lucide-play.js +3 -4
- package/dist/icons/generated/lucide-play.js.map +1 -1
- package/dist/icons/generated/lucide-plus.d.ts +5 -4
- package/dist/icons/generated/lucide-plus.d.ts.map +1 -0
- package/dist/icons/generated/lucide-plus.js +3 -4
- package/dist/icons/generated/lucide-plus.js.map +1 -1
- package/dist/icons/generated/lucide-printer.d.ts +5 -4
- package/dist/icons/generated/lucide-printer.d.ts.map +1 -0
- package/dist/icons/generated/lucide-printer.js +3 -4
- package/dist/icons/generated/lucide-printer.js.map +1 -1
- package/dist/icons/generated/lucide-redo-2.d.ts +5 -4
- package/dist/icons/generated/lucide-redo-2.d.ts.map +1 -0
- package/dist/icons/generated/lucide-redo-2.js +3 -4
- package/dist/icons/generated/lucide-redo-2.js.map +1 -1
- package/dist/icons/generated/lucide-refresh-cw.d.ts +5 -4
- package/dist/icons/generated/lucide-refresh-cw.d.ts.map +1 -0
- package/dist/icons/generated/lucide-refresh-cw.js +3 -4
- package/dist/icons/generated/lucide-refresh-cw.js.map +1 -1
- package/dist/icons/generated/lucide-scissors.d.ts +5 -4
- package/dist/icons/generated/lucide-scissors.d.ts.map +1 -0
- package/dist/icons/generated/lucide-scissors.js +3 -4
- package/dist/icons/generated/lucide-scissors.js.map +1 -1
- package/dist/icons/generated/lucide-search.d.ts +5 -4
- package/dist/icons/generated/lucide-search.d.ts.map +1 -0
- package/dist/icons/generated/lucide-search.js +3 -4
- package/dist/icons/generated/lucide-search.js.map +1 -1
- package/dist/icons/generated/lucide-settings.d.ts +5 -4
- package/dist/icons/generated/lucide-settings.d.ts.map +1 -0
- package/dist/icons/generated/lucide-settings.js +3 -4
- package/dist/icons/generated/lucide-settings.js.map +1 -1
- package/dist/icons/generated/lucide-sliders-horizontal.d.ts +5 -4
- package/dist/icons/generated/lucide-sliders-horizontal.d.ts.map +1 -0
- package/dist/icons/generated/lucide-sliders-horizontal.js +3 -4
- package/dist/icons/generated/lucide-sliders-horizontal.js.map +1 -1
- package/dist/icons/generated/lucide-star.d.ts +5 -4
- package/dist/icons/generated/lucide-star.d.ts.map +1 -0
- package/dist/icons/generated/lucide-star.js +3 -4
- package/dist/icons/generated/lucide-star.js.map +1 -1
- package/dist/icons/generated/lucide-tag.d.ts +5 -4
- package/dist/icons/generated/lucide-tag.d.ts.map +1 -0
- package/dist/icons/generated/lucide-tag.js +3 -4
- package/dist/icons/generated/lucide-tag.js.map +1 -1
- package/dist/icons/generated/lucide-tags.d.ts +5 -4
- package/dist/icons/generated/lucide-tags.d.ts.map +1 -0
- package/dist/icons/generated/lucide-tags.js +3 -4
- package/dist/icons/generated/lucide-tags.js.map +1 -1
- package/dist/icons/generated/lucide-trash-2.d.ts +5 -4
- package/dist/icons/generated/lucide-trash-2.d.ts.map +1 -0
- package/dist/icons/generated/lucide-trash-2.js +3 -4
- package/dist/icons/generated/lucide-trash-2.js.map +1 -1
- package/dist/icons/generated/lucide-triangle-alert.d.ts +5 -4
- package/dist/icons/generated/lucide-triangle-alert.d.ts.map +1 -0
- package/dist/icons/generated/lucide-triangle-alert.js +3 -4
- package/dist/icons/generated/lucide-triangle-alert.js.map +1 -1
- package/dist/icons/generated/lucide-undo-2.d.ts +5 -4
- package/dist/icons/generated/lucide-undo-2.d.ts.map +1 -0
- package/dist/icons/generated/lucide-undo-2.js +3 -4
- package/dist/icons/generated/lucide-undo-2.js.map +1 -1
- package/dist/icons/generated/lucide-upload.d.ts +5 -4
- package/dist/icons/generated/lucide-upload.d.ts.map +1 -0
- package/dist/icons/generated/lucide-upload.js +3 -4
- package/dist/icons/generated/lucide-upload.js.map +1 -1
- package/dist/icons/generated/lucide-user.d.ts +5 -4
- package/dist/icons/generated/lucide-user.d.ts.map +1 -0
- package/dist/icons/generated/lucide-user.js +3 -4
- package/dist/icons/generated/lucide-user.js.map +1 -1
- package/dist/icons/generated/lucide-wrench.d.ts +5 -4
- package/dist/icons/generated/lucide-wrench.d.ts.map +1 -0
- package/dist/icons/generated/lucide-wrench.js +3 -4
- package/dist/icons/generated/lucide-wrench.js.map +1 -1
- package/dist/icons/generated/lucide-x.d.ts +5 -4
- package/dist/icons/generated/lucide-x.d.ts.map +1 -0
- package/dist/icons/generated/lucide-x.js +3 -4
- package/dist/icons/generated/lucide-x.js.map +1 -1
- package/dist/icons/generated/mdi-tag-search-outline.d.ts +5 -4
- package/dist/icons/generated/mdi-tag-search-outline.d.ts.map +1 -0
- package/dist/icons/generated/mdi-tag-search-outline.js +3 -4
- package/dist/icons/generated/mdi-tag-search-outline.js.map +1 -1
- package/dist/icons/generated/ooui-close.d.ts +5 -4
- package/dist/icons/generated/ooui-close.d.ts.map +1 -0
- package/dist/icons/generated/ooui-close.js +3 -4
- package/dist/icons/generated/ooui-close.js.map +1 -1
- package/dist/icons/generated/radix-icons-panel-left-minimized.d.ts +5 -4
- package/dist/icons/generated/radix-icons-panel-left-minimized.d.ts.map +1 -0
- package/dist/icons/generated/radix-icons-panel-left-minimized.js +3 -4
- package/dist/icons/generated/radix-icons-panel-left-minimized.js.map +1 -1
- package/dist/icons/generated/radix-icons-reset.d.ts +5 -4
- package/dist/icons/generated/radix-icons-reset.d.ts.map +1 -0
- package/dist/icons/generated/radix-icons-reset.js +3 -4
- package/dist/icons/generated/radix-icons-reset.js.map +1 -1
- package/dist/icons/generated/tabler-sort-ascending-letters.d.ts +5 -4
- package/dist/icons/generated/tabler-sort-ascending-letters.d.ts.map +1 -0
- package/dist/icons/generated/tabler-sort-ascending-letters.js +3 -4
- package/dist/icons/generated/tabler-sort-ascending-letters.js.map +1 -1
- package/dist/icons/index.d.ts +75 -74
- package/dist/icons/index.js +75 -75
- package/dist/shared/element-height/index.js +51 -25
- package/dist/shared/element-height/index.js.map +1 -1
- package/dist/shared/element-width/index.js +39 -24
- package/dist/shared/element-width/index.js.map +1 -1
- package/dist/shared/events/user-change.js +14 -8
- package/dist/shared/events/user-change.js.map +1 -1
- package/dist/shared/focus/pointer-focus.js +56 -30
- package/dist/shared/focus/pointer-focus.js.map +1 -1
- package/dist/shared/focus/tabbable.js +96 -0
- package/dist/shared/focus/tabbable.js.map +1 -0
- package/dist/shared/form-association/field-id.js +13 -6
- package/dist/shared/form-association/field-id.js.map +1 -1
- package/dist/shared/form-association/index.js +75 -42
- package/dist/shared/form-association/index.js.map +1 -1
- package/dist/shared/gesture/drag-gesture.js +239 -99
- package/dist/shared/gesture/drag-gesture.js.map +1 -1
- package/dist/shared/gesture/physics.js +49 -16
- package/dist/shared/gesture/physics.js.map +1 -1
- package/dist/shared/gesture/pinch-gesture.js +111 -60
- package/dist/shared/gesture/pinch-gesture.js.map +1 -1
- package/dist/shared/group-management/index.js +181 -84
- package/dist/shared/group-management/index.js.map +1 -1
- package/dist/shared/label-emptiness/index.js +45 -26
- package/dist/shared/label-emptiness/index.js.map +1 -1
- package/dist/shared/locale/builtin-labels.js +38 -0
- package/dist/shared/locale/builtin-labels.js.map +1 -0
- package/dist/shared/menu-behavior/index.js +113 -60
- package/dist/shared/menu-behavior/index.js.map +1 -1
- package/dist/shared/menu-portal/menu-portal.js +47 -26
- package/dist/shared/menu-portal/menu-portal.js.map +1 -1
- package/dist/shared/menu-portal/menu-tree.js +132 -75
- package/dist/shared/menu-portal/menu-tree.js.map +1 -1
- package/dist/shared/normalize/index.js +16 -7
- package/dist/shared/normalize/index.js.map +1 -1
- package/dist/shared/open-state/index.js +7 -8
- package/dist/shared/open-state/index.js.map +1 -1
- package/dist/shared/option-portal/combobox-shell.js +121 -56
- package/dist/shared/option-portal/combobox-shell.js.map +1 -1
- package/dist/shared/option-portal/index.js +65 -44
- package/dist/shared/option-portal/index.js.map +1 -1
- package/dist/shared/overlay/anchored-panel.js +75 -40
- package/dist/shared/overlay/anchored-panel.js.map +1 -1
- package/dist/shared/overlay/native-dialog-presence.js +116 -52
- package/dist/shared/overlay/native-dialog-presence.js.map +1 -1
- package/dist/shared/overlay/nested-drawer-layers.js +76 -46
- package/dist/shared/overlay/nested-drawer-layers.js.map +1 -1
- package/dist/shared/overlay/open-overlay.js +240 -136
- package/dist/shared/overlay/open-overlay.js.map +1 -1
- package/dist/shared/overlay/overlay-root.js +33 -24
- package/dist/shared/overlay/overlay-root.js.map +1 -1
- package/dist/shared/overlay/overlay.js +109 -66
- package/dist/shared/overlay/overlay.js.map +1 -1
- package/dist/shared/overlay/placement-props.js +9 -4
- package/dist/shared/overlay/placement-props.js.map +1 -1
- package/dist/shared/overlay/portal.d.ts +2 -0
- package/dist/shared/overlay/portal.d.ts.map +1 -0
- package/dist/shared/overlay/portal.js +202 -117
- package/dist/shared/overlay/portal.js.map +1 -1
- package/dist/shared/overlay/positioning-generation.js +9 -10
- package/dist/shared/overlay/positioning-generation.js.map +1 -1
- package/dist/shared/overlay/presence.js +43 -21
- package/dist/shared/overlay/presence.js.map +1 -1
- package/dist/shared/overlay/theme-overlay-scope.js +22 -19
- package/dist/shared/overlay/theme-overlay-scope.js.map +1 -1
- package/dist/shared/scroll-lock/scroll-lock.js +49 -15
- package/dist/shared/scroll-lock/scroll-lock.js.map +1 -1
- package/dist/shared/theme/duration.js +13 -6
- package/dist/shared/theme/duration.js.map +1 -1
- package/dist/shared/theme/reduced-motion.js +14 -9
- package/dist/shared/theme/reduced-motion.js.map +1 -1
- package/dist/shared/theme/root-sync.js +85 -32
- package/dist/shared/theme/root-sync.js.map +1 -1
- package/dist/shared/visible-area/index.js +81 -37
- package/dist/shared/visible-area/index.js.map +1 -1
- package/dist/types/iconify.d.ts +1 -1
- package/dist/types/iconify.js +0 -0
- package/dist/types/react.d.ts +8 -10
- package/dist/types/react.d.ts.map +1 -0
- package/dist/types/react.js +0 -0
- package/dist/types/utils.d.ts +8 -13
- package/dist/types/utils.d.ts.map +1 -0
- package/dist/types/utils.js +0 -0
- package/dist/types/vue.d.ts +9 -13
- package/dist/types/vue.d.ts.map +1 -0
- package/dist/types/vue.js +0 -0
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +30 -4
- package/dist/vite/index.js.map +1 -1
- package/package.json +10 -23
- package/dist/_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js +0 -9
- package/dist/components/middle-ellipsis/truncate.d.ts +0 -62
- package/dist/components/radio/interaction.d.ts +0 -4
- package/dist/scrollbars/index.d.ts +0 -33
- package/dist/scrollbars/index.js +0 -18
- package/dist/scrollbars/index.js.map +0 -1
- package/dist/scrollbars/internal.js +0 -6
- package/dist/scrollbars/internal.js.map +0 -1
- package/dist/scrollbars/style.css +0 -10
|
@@ -1,84 +1,135 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
// src/shared/gesture/pinch-gesture.ts
|
|
2
|
+
/**
|
|
3
|
+
* 跨平台/跨浏览器 Pointer 双指捏合手势生命周期管理器
|
|
4
|
+
*
|
|
5
|
+
* 封装:
|
|
6
|
+
* 1. 活动指针表与「第二指就位即进入手势」的判定(首指仍留给并行的单指手势)
|
|
7
|
+
* 2. window 兜底监听(防指针离开元素或移出视口导致手势悬挂)
|
|
8
|
+
* 3. 两指距离比例与中点位移计算
|
|
9
|
+
* 4. 起始距离过近时的基准重置(两指贴着落下不会产生比例跳变)
|
|
10
|
+
*
|
|
11
|
+
* 本模块只产出几何信息;比例与中点如何映射为缩放和平移由消费方决定。
|
|
12
|
+
*/
|
|
13
|
+
/** 基准距离下限(px):低于此值不产出比例,等两指拉开后以新基准重新开始。 */
|
|
14
|
+
const MIN_BASE_DISTANCE = 16;
|
|
15
|
+
/**
|
|
16
|
+
* 为元素挂载双指捏合手势。第二指在该元素上按下即进入手势,
|
|
17
|
+
* 首指的按下事件不受影响,可由单指手势管理器并行接管。
|
|
18
|
+
*/
|
|
19
|
+
function attachPinchGesture(target, options) {
|
|
20
|
+
const { onStart, onMove, onEnd, onCancel } = options;
|
|
21
|
+
const pointers = /* @__PURE__ */ new Map();
|
|
22
|
+
let baseDistance = 0;
|
|
23
|
+
let baseCenterX = 0;
|
|
24
|
+
let baseCenterY = 0;
|
|
25
|
+
let pinching = false;
|
|
26
|
+
function attachWindowListeners() {
|
|
27
|
+
window.addEventListener("pointermove", handlePointerMove, true);
|
|
28
|
+
window.addEventListener("pointerup", handlePointerEnd, true);
|
|
29
|
+
window.addEventListener("pointercancel", handlePointerEnd, true);
|
|
5
30
|
}
|
|
6
|
-
function
|
|
7
|
-
window.removeEventListener("pointermove",
|
|
31
|
+
function detachWindowListeners() {
|
|
32
|
+
window.removeEventListener("pointermove", handlePointerMove, true);
|
|
33
|
+
window.removeEventListener("pointerup", handlePointerEnd, true);
|
|
34
|
+
window.removeEventListener("pointercancel", handlePointerEnd, true);
|
|
8
35
|
}
|
|
9
|
-
function
|
|
10
|
-
|
|
36
|
+
function reset() {
|
|
37
|
+
pointers.clear();
|
|
38
|
+
baseDistance = 0;
|
|
39
|
+
baseCenterX = 0;
|
|
40
|
+
baseCenterY = 0;
|
|
41
|
+
pinching = false;
|
|
42
|
+
detachWindowListeners();
|
|
11
43
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
44
|
+
/** 恰好两个指针时返回捏合两端的中点与距离;其余数量不产出几何。 */
|
|
45
|
+
function geometry() {
|
|
46
|
+
if (pointers.size !== 2) return null;
|
|
47
|
+
const iterator = pointers.values();
|
|
48
|
+
const first = iterator.next().value;
|
|
49
|
+
const second = iterator.next().value;
|
|
15
50
|
return {
|
|
16
|
-
distance: Math.hypot(
|
|
17
|
-
centerX: (
|
|
18
|
-
centerY: (
|
|
51
|
+
distance: Math.hypot(first.x - second.x, first.y - second.y),
|
|
52
|
+
centerX: (first.x + second.x) / 2,
|
|
53
|
+
centerY: (first.y + second.y) / 2
|
|
19
54
|
};
|
|
20
55
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
56
|
+
/** 以当前几何重建基准;距离达到下限才派发 onStart,否则留待拉开后重建。 */
|
|
57
|
+
function rebase(event) {
|
|
58
|
+
const current = geometry();
|
|
59
|
+
if (!current) {
|
|
60
|
+
baseDistance = 0;
|
|
25
61
|
return;
|
|
26
62
|
}
|
|
27
|
-
|
|
63
|
+
baseDistance = current.distance;
|
|
64
|
+
baseCenterX = current.centerX;
|
|
65
|
+
baseCenterY = current.centerY;
|
|
66
|
+
if (baseDistance >= MIN_BASE_DISTANCE) onStart?.(current, event);
|
|
28
67
|
}
|
|
29
|
-
function
|
|
30
|
-
|
|
31
|
-
x:
|
|
32
|
-
y:
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
68
|
+
function handlePointerDown(event) {
|
|
69
|
+
pointers.set(event.pointerId, {
|
|
70
|
+
x: event.clientX,
|
|
71
|
+
y: event.clientY
|
|
72
|
+
});
|
|
73
|
+
attachWindowListeners();
|
|
74
|
+
if (pointers.size < 2) return;
|
|
75
|
+
if (pointers.size > 2) {
|
|
76
|
+
baseDistance = 0;
|
|
77
|
+
return;
|
|
39
78
|
}
|
|
79
|
+
pinching = true;
|
|
80
|
+
rebase(event);
|
|
40
81
|
}
|
|
41
|
-
function
|
|
42
|
-
if (!
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
82
|
+
function handlePointerMove(event) {
|
|
83
|
+
if (!pointers.has(event.pointerId)) return;
|
|
84
|
+
pointers.set(event.pointerId, {
|
|
85
|
+
x: event.clientX,
|
|
86
|
+
y: event.clientY
|
|
87
|
+
});
|
|
88
|
+
if (!pinching) return;
|
|
89
|
+
if (baseDistance < MIN_BASE_DISTANCE) {
|
|
90
|
+
rebase(event);
|
|
48
91
|
return;
|
|
49
92
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
93
|
+
const current = geometry();
|
|
94
|
+
if (!current) return;
|
|
95
|
+
onMove?.({
|
|
96
|
+
ratio: current.distance / baseDistance,
|
|
97
|
+
distance: current.distance,
|
|
98
|
+
centerX: current.centerX,
|
|
99
|
+
centerY: current.centerY,
|
|
100
|
+
deltaX: current.centerX - baseCenterX,
|
|
101
|
+
deltaY: current.centerY - baseCenterY
|
|
102
|
+
}, event);
|
|
59
103
|
}
|
|
60
|
-
function
|
|
61
|
-
if (!
|
|
62
|
-
if (
|
|
63
|
-
|
|
104
|
+
function handlePointerEnd(event) {
|
|
105
|
+
if (!pointers.delete(event.pointerId)) return;
|
|
106
|
+
if (pointers.size === 0) detachWindowListeners();
|
|
107
|
+
if (pointers.size >= 2) {
|
|
108
|
+
if (pinching) rebase(event);
|
|
64
109
|
return;
|
|
65
110
|
}
|
|
66
|
-
|
|
67
|
-
|
|
111
|
+
const wasPinching = pinching;
|
|
112
|
+
pinching = false;
|
|
113
|
+
baseDistance = 0;
|
|
114
|
+
if (!wasPinching) return;
|
|
115
|
+
if (event.type === "pointercancel") onCancel?.(event);
|
|
116
|
+
else onEnd?.(event);
|
|
68
117
|
}
|
|
69
|
-
function
|
|
70
|
-
|
|
71
|
-
|
|
118
|
+
function cancel() {
|
|
119
|
+
const wasPinching = pinching;
|
|
120
|
+
reset();
|
|
121
|
+
if (wasPinching) onCancel?.();
|
|
72
122
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
123
|
+
target.addEventListener("pointerdown", handlePointerDown);
|
|
124
|
+
return {
|
|
125
|
+
isPinching: () => pinching,
|
|
126
|
+
cancel,
|
|
76
127
|
destroy: () => {
|
|
77
|
-
|
|
128
|
+
target.removeEventListener("pointerdown", handlePointerDown);
|
|
129
|
+
cancel();
|
|
78
130
|
}
|
|
79
131
|
};
|
|
80
132
|
}
|
|
81
|
-
|
|
82
|
-
export { e as attachPinchGesture };
|
|
133
|
+
export { attachPinchGesture };
|
|
83
134
|
|
|
84
135
|
//# sourceMappingURL=pinch-gesture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pinch-gesture.js","names":[],"sources":["../../../src/shared/gesture/pinch-gesture.ts"],"sourcesContent":["/**\n * 跨平台/跨浏览器 Pointer 双指捏合手势生命周期管理器\n *\n * 封装:\n * 1. 活动指针表与「第二指就位即进入手势」的判定(首指仍留给并行的单指手势)\n * 2. window 兜底监听(防指针离开元素或移出视口导致手势悬挂)\n * 3. 两指距离比例与中点位移计算\n * 4. 起始距离过近时的基准重置(两指贴着落下不会产生比例跳变)\n *\n * 本模块只产出几何信息;比例与中点如何映射为缩放和平移由消费方决定。\n */\n\n/** 基准距离下限(px):低于此值不产出比例,等两指拉开后以新基准重新开始。 */\nconst MIN_BASE_DISTANCE = 16\n\nexport interface PinchStartInfo {\n /** 基准两指距离(px),恒 >= MIN_BASE_DISTANCE */\n distance: number\n /** 两指中点(client 坐标) */\n centerX: number\n centerY: number\n}\n\nexport interface PinchMoveInfo {\n /** 当前距离与基准距离之比;> 1 为放大,< 1 为缩小 */\n ratio: number\n distance: number\n centerX: number\n centerY: number\n /** 中点相对基准中点的位移(px) */\n deltaX: number\n deltaY: number\n}\n\nexport interface PinchGestureOptions {\n /** 两指就位且距离达到基准时触发;指针增删导致端点变化时会以新基准再次触发 */\n onStart?: (info: PinchStartInfo, event: PointerEvent) => void\n onMove?: (info: PinchMoveInfo, event: PointerEvent) => void\n /** 指针少于两个导致手势结束时触发 */\n onEnd?: (event: PointerEvent) => void\n /** 手势被 pointercancel 或 destroy 打断时触发 */\n onCancel?: (event?: PointerEvent) => void\n}\n\nexport interface PinchGestureHandle {\n isPinching: () => boolean\n /** 主动清空指针表并结束手势(打断时触发 onCancel) */\n cancel: () => void\n /** 移除监听并结束手势 */\n destroy: () => void\n}\n\ninterface TrackedPointer {\n x: number\n y: number\n}\n\n/**\n * 为元素挂载双指捏合手势。第二指在该元素上按下即进入手势,\n * 首指的按下事件不受影响,可由单指手势管理器并行接管。\n */\nexport function attachPinchGesture(target: HTMLElement, options: PinchGestureOptions): PinchGestureHandle {\n const { onStart, onMove, onEnd, onCancel } = options\n\n const pointers = new Map<number, TrackedPointer>()\n let baseDistance = 0\n let baseCenterX = 0\n let baseCenterY = 0\n let pinching = false\n\n function attachWindowListeners() {\n window.addEventListener('pointermove', handlePointerMove, true)\n window.addEventListener('pointerup', handlePointerEnd, true)\n window.addEventListener('pointercancel', handlePointerEnd, true)\n }\n\n function detachWindowListeners() {\n window.removeEventListener('pointermove', handlePointerMove, true)\n window.removeEventListener('pointerup', handlePointerEnd, true)\n window.removeEventListener('pointercancel', handlePointerEnd, true)\n }\n\n function reset() {\n pointers.clear()\n baseDistance = 0\n baseCenterX = 0\n baseCenterY = 0\n pinching = false\n detachWindowListeners()\n }\n\n /** 恰好两个指针时返回捏合两端的中点与距离;其余数量不产出几何。 */\n function geometry(): { distance: number; centerX: number; centerY: number } | null {\n if (pointers.size !== 2) return null\n const iterator = pointers.values()\n const first = iterator.next().value as TrackedPointer\n const second = iterator.next().value as TrackedPointer\n return {\n distance: Math.hypot(first.x - second.x, first.y - second.y),\n centerX: (first.x + second.x) / 2,\n centerY: (first.y + second.y) / 2\n }\n }\n\n /** 以当前几何重建基准;距离达到下限才派发 onStart,否则留待拉开后重建。 */\n function rebase(event: PointerEvent) {\n const current = geometry()\n if (!current) {\n baseDistance = 0\n return\n }\n baseDistance = current.distance\n baseCenterX = current.centerX\n baseCenterY = current.centerY\n if (baseDistance >= MIN_BASE_DISTANCE) onStart?.(current, event)\n }\n\n function handlePointerDown(event: PointerEvent) {\n pointers.set(event.pointerId, { x: event.clientX, y: event.clientY })\n attachWindowListeners()\n\n if (pointers.size < 2) return\n if (pointers.size > 2) {\n baseDistance = 0\n return\n }\n\n pinching = true\n rebase(event)\n }\n\n function handlePointerMove(event: PointerEvent) {\n if (!pointers.has(event.pointerId)) return\n pointers.set(event.pointerId, { x: event.clientX, y: event.clientY })\n if (!pinching) return\n\n if (baseDistance < MIN_BASE_DISTANCE) {\n rebase(event)\n return\n }\n\n const current = geometry()\n if (!current) return\n\n onMove?.(\n {\n ratio: current.distance / baseDistance,\n distance: current.distance,\n centerX: current.centerX,\n centerY: current.centerY,\n deltaX: current.centerX - baseCenterX,\n deltaY: current.centerY - baseCenterY\n },\n event\n )\n }\n\n function handlePointerEnd(event: PointerEvent) {\n if (!pointers.delete(event.pointerId)) return\n if (pointers.size === 0) detachWindowListeners()\n\n if (pointers.size >= 2) {\n // 指针增删换了端点,旧基准会让比例跳变;二指仍在则重建。\n if (pinching) rebase(event)\n return\n }\n\n const wasPinching = pinching\n pinching = false\n baseDistance = 0\n if (!wasPinching) return\n\n if (event.type === 'pointercancel') onCancel?.(event)\n else onEnd?.(event)\n }\n\n function cancel() {\n const wasPinching = pinching\n reset()\n if (wasPinching) onCancel?.()\n }\n\n target.addEventListener('pointerdown', handlePointerDown)\n\n return {\n isPinching: () => pinching,\n cancel,\n destroy: () => {\n target.removeEventListener('pointerdown', handlePointerDown)\n cancel()\n }\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"pinch-gesture.js","names":[],"sources":["../../../src/shared/gesture/pinch-gesture.ts"],"sourcesContent":["/**\n * 跨平台/跨浏览器 Pointer 双指捏合手势生命周期管理器\n *\n * 封装:\n * 1. 活动指针表与「第二指就位即进入手势」的判定(首指仍留给并行的单指手势)\n * 2. window 兜底监听(防指针离开元素或移出视口导致手势悬挂)\n * 3. 两指距离比例与中点位移计算\n * 4. 起始距离过近时的基准重置(两指贴着落下不会产生比例跳变)\n *\n * 本模块只产出几何信息;比例与中点如何映射为缩放和平移由消费方决定。\n */\n\n/** 基准距离下限(px):低于此值不产出比例,等两指拉开后以新基准重新开始。 */\nconst MIN_BASE_DISTANCE = 16\n\nexport interface PinchStartInfo {\n /** 基准两指距离(px),恒 >= MIN_BASE_DISTANCE */\n distance: number\n /** 两指中点(client 坐标) */\n centerX: number\n centerY: number\n}\n\nexport interface PinchMoveInfo {\n /** 当前距离与基准距离之比;> 1 为放大,< 1 为缩小 */\n ratio: number\n distance: number\n centerX: number\n centerY: number\n /** 中点相对基准中点的位移(px) */\n deltaX: number\n deltaY: number\n}\n\nexport interface PinchGestureOptions {\n /** 两指就位且距离达到基准时触发;指针增删导致端点变化时会以新基准再次触发 */\n onStart?: (info: PinchStartInfo, event: PointerEvent) => void\n onMove?: (info: PinchMoveInfo, event: PointerEvent) => void\n /** 指针少于两个导致手势结束时触发 */\n onEnd?: (event: PointerEvent) => void\n /** 手势被 pointercancel 或 destroy 打断时触发 */\n onCancel?: (event?: PointerEvent) => void\n}\n\nexport interface PinchGestureHandle {\n isPinching: () => boolean\n /** 主动清空指针表并结束手势(打断时触发 onCancel) */\n cancel: () => void\n /** 移除监听并结束手势 */\n destroy: () => void\n}\n\ninterface TrackedPointer {\n x: number\n y: number\n}\n\n/**\n * 为元素挂载双指捏合手势。第二指在该元素上按下即进入手势,\n * 首指的按下事件不受影响,可由单指手势管理器并行接管。\n */\nexport function attachPinchGesture(target: HTMLElement, options: PinchGestureOptions): PinchGestureHandle {\n const { onStart, onMove, onEnd, onCancel } = options\n\n const pointers = new Map<number, TrackedPointer>()\n let baseDistance = 0\n let baseCenterX = 0\n let baseCenterY = 0\n let pinching = false\n\n function attachWindowListeners() {\n window.addEventListener('pointermove', handlePointerMove, true)\n window.addEventListener('pointerup', handlePointerEnd, true)\n window.addEventListener('pointercancel', handlePointerEnd, true)\n }\n\n function detachWindowListeners() {\n window.removeEventListener('pointermove', handlePointerMove, true)\n window.removeEventListener('pointerup', handlePointerEnd, true)\n window.removeEventListener('pointercancel', handlePointerEnd, true)\n }\n\n function reset() {\n pointers.clear()\n baseDistance = 0\n baseCenterX = 0\n baseCenterY = 0\n pinching = false\n detachWindowListeners()\n }\n\n /** 恰好两个指针时返回捏合两端的中点与距离;其余数量不产出几何。 */\n function geometry(): { distance: number; centerX: number; centerY: number } | null {\n if (pointers.size !== 2) return null\n const iterator = pointers.values()\n const first = iterator.next().value as TrackedPointer\n const second = iterator.next().value as TrackedPointer\n return {\n distance: Math.hypot(first.x - second.x, first.y - second.y),\n centerX: (first.x + second.x) / 2,\n centerY: (first.y + second.y) / 2\n }\n }\n\n /** 以当前几何重建基准;距离达到下限才派发 onStart,否则留待拉开后重建。 */\n function rebase(event: PointerEvent) {\n const current = geometry()\n if (!current) {\n baseDistance = 0\n return\n }\n baseDistance = current.distance\n baseCenterX = current.centerX\n baseCenterY = current.centerY\n if (baseDistance >= MIN_BASE_DISTANCE) onStart?.(current, event)\n }\n\n function handlePointerDown(event: PointerEvent) {\n pointers.set(event.pointerId, { x: event.clientX, y: event.clientY })\n attachWindowListeners()\n\n if (pointers.size < 2) return\n if (pointers.size > 2) {\n baseDistance = 0\n return\n }\n\n pinching = true\n rebase(event)\n }\n\n function handlePointerMove(event: PointerEvent) {\n if (!pointers.has(event.pointerId)) return\n pointers.set(event.pointerId, { x: event.clientX, y: event.clientY })\n if (!pinching) return\n\n if (baseDistance < MIN_BASE_DISTANCE) {\n rebase(event)\n return\n }\n\n const current = geometry()\n if (!current) return\n\n onMove?.(\n {\n ratio: current.distance / baseDistance,\n distance: current.distance,\n centerX: current.centerX,\n centerY: current.centerY,\n deltaX: current.centerX - baseCenterX,\n deltaY: current.centerY - baseCenterY\n },\n event\n )\n }\n\n function handlePointerEnd(event: PointerEvent) {\n if (!pointers.delete(event.pointerId)) return\n if (pointers.size === 0) detachWindowListeners()\n\n if (pointers.size >= 2) {\n // 指针增删换了端点,旧基准会让比例跳变;二指仍在则重建。\n if (pinching) rebase(event)\n return\n }\n\n const wasPinching = pinching\n pinching = false\n baseDistance = 0\n if (!wasPinching) return\n\n if (event.type === 'pointercancel') onCancel?.(event)\n else onEnd?.(event)\n }\n\n function cancel() {\n const wasPinching = pinching\n reset()\n if (wasPinching) onCancel?.()\n }\n\n target.addEventListener('pointerdown', handlePointerDown)\n\n return {\n isPinching: () => pinching,\n cancel,\n destroy: () => {\n target.removeEventListener('pointerdown', handlePointerDown)\n cancel()\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,oBAAoB;;;;;AAgD1B,SAAgB,mBAAmB,QAAqB,SAAkD;CACxG,MAAM,EAAE,SAAS,QAAQ,OAAO,aAAa;CAE7C,MAAM,2BAAW,IAAI,IAA4B;CACjD,IAAI,eAAe;CACnB,IAAI,cAAc;CAClB,IAAI,cAAc;CAClB,IAAI,WAAW;CAEf,SAAS,wBAAwB;EAC/B,OAAO,iBAAiB,eAAe,mBAAmB,IAAI;EAC9D,OAAO,iBAAiB,aAAa,kBAAkB,IAAI;EAC3D,OAAO,iBAAiB,iBAAiB,kBAAkB,IAAI;CACjE;CAEA,SAAS,wBAAwB;EAC/B,OAAO,oBAAoB,eAAe,mBAAmB,IAAI;EACjE,OAAO,oBAAoB,aAAa,kBAAkB,IAAI;EAC9D,OAAO,oBAAoB,iBAAiB,kBAAkB,IAAI;CACpE;CAEA,SAAS,QAAQ;EACf,SAAS,MAAM;EACf,eAAe;EACf,cAAc;EACd,cAAc;EACd,WAAW;EACX,sBAAsB;CACxB;;CAGA,SAAS,WAA0E;EACjF,IAAI,SAAS,SAAS,GAAG,OAAO;EAChC,MAAM,WAAW,SAAS,OAAO;EACjC,MAAM,QAAQ,SAAS,KAAK,CAAC,CAAC;EAC9B,MAAM,SAAS,SAAS,KAAK,CAAC,CAAC;EAC/B,OAAO;GACL,UAAU,KAAK,MAAM,MAAM,IAAI,OAAO,GAAG,MAAM,IAAI,OAAO,CAAC;GAC3D,UAAU,MAAM,IAAI,OAAO,KAAK;GAChC,UAAU,MAAM,IAAI,OAAO,KAAK;EAClC;CACF;;CAGA,SAAS,OAAO,OAAqB;EACnC,MAAM,UAAU,SAAS;EACzB,IAAI,CAAC,SAAS;GACZ,eAAe;GACf;EACF;EACA,eAAe,QAAQ;EACvB,cAAc,QAAQ;EACtB,cAAc,QAAQ;EACtB,IAAI,gBAAgB,mBAAmB,UAAU,SAAS,KAAK;CACjE;CAEA,SAAS,kBAAkB,OAAqB;EAC9C,SAAS,IAAI,MAAM,WAAW;GAAE,GAAG,MAAM;GAAS,GAAG,MAAM;EAAQ,CAAC;EACpE,sBAAsB;EAEtB,IAAI,SAAS,OAAO,GAAG;EACvB,IAAI,SAAS,OAAO,GAAG;GACrB,eAAe;GACf;EACF;EAEA,WAAW;EACX,OAAO,KAAK;CACd;CAEA,SAAS,kBAAkB,OAAqB;EAC9C,IAAI,CAAC,SAAS,IAAI,MAAM,SAAS,GAAG;EACpC,SAAS,IAAI,MAAM,WAAW;GAAE,GAAG,MAAM;GAAS,GAAG,MAAM;EAAQ,CAAC;EACpE,IAAI,CAAC,UAAU;EAEf,IAAI,eAAe,mBAAmB;GACpC,OAAO,KAAK;GACZ;EACF;EAEA,MAAM,UAAU,SAAS;EACzB,IAAI,CAAC,SAAS;EAEd,SACE;GACE,OAAO,QAAQ,WAAW;GAC1B,UAAU,QAAQ;GAClB,SAAS,QAAQ;GACjB,SAAS,QAAQ;GACjB,QAAQ,QAAQ,UAAU;GAC1B,QAAQ,QAAQ,UAAU;EAC5B,GACA,KACF;CACF;CAEA,SAAS,iBAAiB,OAAqB;EAC7C,IAAI,CAAC,SAAS,OAAO,MAAM,SAAS,GAAG;EACvC,IAAI,SAAS,SAAS,GAAG,sBAAsB;EAE/C,IAAI,SAAS,QAAQ,GAAG;GAEtB,IAAI,UAAU,OAAO,KAAK;GAC1B;EACF;EAEA,MAAM,cAAc;EACpB,WAAW;EACX,eAAe;EACf,IAAI,CAAC,aAAa;EAElB,IAAI,MAAM,SAAS,iBAAiB,WAAW,KAAK;OAC/C,QAAQ,KAAK;CACpB;CAEA,SAAS,SAAS;EAChB,MAAM,cAAc;EACpB,MAAM;EACN,IAAI,aAAa,WAAW;CAC9B;CAEA,OAAO,iBAAiB,eAAe,iBAAiB;CAExD,OAAO;EACL,kBAAkB;EAClB;EACA,eAAe;GACb,OAAO,oBAAoB,eAAe,iBAAiB;GAC3D,OAAO;EACT;CACF;AACF"}
|
|
@@ -1,140 +1,237 @@
|
|
|
1
|
-
import { definePlugin
|
|
2
|
-
import { ContextConsumer
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { definePlugin } from "@greypan/js-kit";
|
|
2
|
+
import { ContextConsumer, ContextProvider, createContext } from "@lit/context";
|
|
3
|
+
// src/shared/group-management/index.ts
|
|
4
|
+
const SELECTION_GROUP_CONTEXT = createContext(Symbol("web-ui.selection-group-context"));
|
|
5
|
+
const BUTTON_GROUP_CONTEXT = createContext(Symbol("web-ui.button-group-context"));
|
|
6
|
+
const SELECTION_GROUP_CONTEXT_LOOSE = SELECTION_GROUP_CONTEXT;
|
|
7
|
+
const BUTTON_GROUP_CONTEXT_LOOSE = BUTTON_GROUP_CONTEXT;
|
|
8
|
+
const selectionGroupContextKey = SELECTION_GROUP_CONTEXT_LOOSE;
|
|
9
|
+
const buttonGroupContextKey = BUTTON_GROUP_CONTEXT_LOOSE;
|
|
10
|
+
const GROUP_MEMBER_DISABLED_CHANGE_EVENT = "wui-group-member-disabled-change";
|
|
11
|
+
/**
|
|
12
|
+
* 创建受管理 group 的子项侧能力:订阅最近 provider 的 context 载荷并提取
|
|
13
|
+
* 自身条目。在 `make()` 时完成注册,组件无需再编写 constructor 样板。
|
|
14
|
+
*/
|
|
15
|
+
function defineGroupManaged(item, options) {
|
|
16
|
+
return definePlugin(() => {
|
|
17
|
+
let context;
|
|
18
|
+
const equals = options.equals ?? Object.is;
|
|
19
|
+
const consumer = new ContextConsumer(item, {
|
|
20
|
+
context: options.context,
|
|
21
|
+
subscribe: true,
|
|
22
|
+
callback: (payload) => {
|
|
23
|
+
const next = payload?.get(item);
|
|
24
|
+
if (equals(context, next)) return;
|
|
25
|
+
context = next;
|
|
26
|
+
options.requestUpdate();
|
|
13
27
|
}
|
|
14
28
|
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
29
|
+
item.addController({ hostDisconnected() {
|
|
30
|
+
if (equals(context, void 0)) return;
|
|
31
|
+
context = void 0;
|
|
32
|
+
options.requestUpdate();
|
|
33
|
+
} });
|
|
34
|
+
return {
|
|
18
35
|
getContext() {
|
|
19
|
-
return
|
|
36
|
+
return context;
|
|
20
37
|
},
|
|
21
38
|
isSubscribed() {
|
|
22
|
-
return
|
|
39
|
+
return consumer.value !== void 0;
|
|
23
40
|
}
|
|
24
41
|
};
|
|
25
42
|
});
|
|
26
43
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
44
|
+
/**
|
|
45
|
+
* 为分组子项注册可逆的展示上下文(@lit/context 下行通道)。不持有公开 DOM
|
|
46
|
+
* 属性;sync() 以新 Map 载荷整体广播,成员变化体现为子项条目消失。
|
|
47
|
+
*/
|
|
48
|
+
function defineGroupPresentation(options) {
|
|
49
|
+
return definePlugin(() => {
|
|
50
|
+
const provider = new ContextProvider(options.host, {
|
|
51
|
+
context: options.context,
|
|
31
52
|
initialValue: /* @__PURE__ */ new Map()
|
|
32
53
|
});
|
|
33
54
|
return {
|
|
34
55
|
sync() {
|
|
35
|
-
|
|
36
|
-
|
|
56
|
+
const nextItems = options.getItems();
|
|
57
|
+
const payload = /* @__PURE__ */ new Map();
|
|
58
|
+
nextItems.forEach((item, index) => payload.set(item, options.getContext(item, index, nextItems)));
|
|
59
|
+
provider.setValue(payload);
|
|
60
|
+
return true;
|
|
37
61
|
},
|
|
38
62
|
disconnect() {
|
|
39
|
-
|
|
63
|
+
provider.setValue(/* @__PURE__ */ new Map());
|
|
40
64
|
}
|
|
41
65
|
};
|
|
42
66
|
});
|
|
43
67
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
68
|
+
/**
|
|
69
|
+
* 把组生命周期插件接入 Lit,协调规则不落在组件生命周期方法里。
|
|
70
|
+
*/
|
|
71
|
+
var GroupController = class {
|
|
72
|
+
constructor(host, lifecycle, options = {}) {
|
|
73
|
+
this.host = host;
|
|
74
|
+
this.lifecycle = lifecycle;
|
|
75
|
+
this.options = options;
|
|
76
|
+
this.connected = false;
|
|
77
|
+
this.observer = null;
|
|
78
|
+
this.observedSlots = /* @__PURE__ */ new Set();
|
|
79
|
+
this.handleChange = (event) => {
|
|
80
|
+
this.lifecycle.handleChange?.(event);
|
|
81
|
+
};
|
|
82
|
+
this.handleKeyDown = (event) => {
|
|
83
|
+
this.lifecycle.handleKeyDown?.(event);
|
|
84
|
+
};
|
|
85
|
+
this.handleMemberDisabledChange = () => {
|
|
86
|
+
this.sync();
|
|
87
|
+
};
|
|
88
|
+
this.handleSlotChange = () => {
|
|
89
|
+
if (!this.connected) return;
|
|
90
|
+
this.sync();
|
|
91
|
+
};
|
|
92
|
+
this.handleMutations = () => {
|
|
93
|
+
if (!this.connected) return;
|
|
51
94
|
this.sync();
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
}, this.handleMutations = () => {
|
|
55
|
-
this.connected && this.sync();
|
|
56
|
-
}, e.addController(this);
|
|
95
|
+
};
|
|
96
|
+
host.addController(this);
|
|
57
97
|
}
|
|
58
98
|
hostConnected() {
|
|
59
|
-
this.connected =
|
|
99
|
+
this.connected = true;
|
|
100
|
+
this.host.addEventListener("change", this.handleChange, true);
|
|
101
|
+
this.host.addEventListener("keydown", this.handleKeyDown, true);
|
|
102
|
+
this.host.addEventListener(GROUP_MEMBER_DISABLED_CHANGE_EVENT, this.handleMemberDisabledChange, true);
|
|
103
|
+
this.observeHost();
|
|
104
|
+
this.observeSlots();
|
|
105
|
+
this.sync();
|
|
60
106
|
}
|
|
61
107
|
hostUpdated() {
|
|
62
|
-
this.observeSlots()
|
|
108
|
+
this.observeSlots();
|
|
109
|
+
this.sync();
|
|
63
110
|
}
|
|
64
111
|
hostDisconnected() {
|
|
65
|
-
this.connected =
|
|
112
|
+
this.connected = false;
|
|
113
|
+
this.host.removeEventListener("change", this.handleChange, true);
|
|
114
|
+
this.host.removeEventListener("keydown", this.handleKeyDown, true);
|
|
115
|
+
this.host.removeEventListener(GROUP_MEMBER_DISABLED_CHANGE_EVENT, this.handleMemberDisabledChange, true);
|
|
116
|
+
this.disconnectSlots();
|
|
117
|
+
this.disconnectHostObserver();
|
|
118
|
+
this.lifecycle.disconnect();
|
|
66
119
|
}
|
|
67
120
|
sync() {
|
|
68
|
-
this.lifecycle.sync()
|
|
121
|
+
if (!this.lifecycle.sync()) return;
|
|
122
|
+
this.options.afterSync?.();
|
|
69
123
|
}
|
|
70
124
|
observeHost() {
|
|
71
|
-
this.disconnectHostObserver()
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
125
|
+
this.disconnectHostObserver();
|
|
126
|
+
this.observer = new MutationObserver(this.handleMutations);
|
|
127
|
+
const observerOptions = {
|
|
128
|
+
childList: true,
|
|
129
|
+
subtree: true
|
|
75
130
|
};
|
|
76
|
-
this.options.observeAttributes?.length
|
|
131
|
+
if (this.options.observeAttributes?.length) {
|
|
132
|
+
observerOptions.attributes = true;
|
|
133
|
+
observerOptions.attributeFilter = [...this.options.observeAttributes];
|
|
134
|
+
}
|
|
135
|
+
this.observer.observe(this.host, observerOptions);
|
|
77
136
|
}
|
|
78
137
|
disconnectHostObserver() {
|
|
79
|
-
|
|
138
|
+
if (this.observer) {
|
|
139
|
+
this.observer.disconnect();
|
|
140
|
+
this.observer = null;
|
|
141
|
+
}
|
|
80
142
|
}
|
|
81
143
|
observeSlots() {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
for (
|
|
144
|
+
const root = this.host.renderRoot;
|
|
145
|
+
const slots = root.querySelectorAll("slot");
|
|
146
|
+
for (const slot of slots) if (!this.observedSlots.has(slot)) {
|
|
147
|
+
slot.addEventListener("slotchange", this.handleSlotChange);
|
|
148
|
+
this.observedSlots.add(slot);
|
|
149
|
+
}
|
|
150
|
+
for (const slot of this.observedSlots) if (!root.contains(slot)) {
|
|
151
|
+
slot.removeEventListener("slotchange", this.handleSlotChange);
|
|
152
|
+
this.observedSlots.delete(slot);
|
|
153
|
+
}
|
|
85
154
|
}
|
|
86
155
|
disconnectSlots() {
|
|
87
|
-
for (
|
|
156
|
+
for (const slot of this.observedSlots) slot.removeEventListener("slotchange", this.handleSlotChange);
|
|
88
157
|
this.observedSlots.clear();
|
|
89
158
|
}
|
|
90
|
-
}, m = {
|
|
91
|
-
disabled: !1,
|
|
92
|
-
rovingTabStop: !1
|
|
93
|
-
}, h = {
|
|
94
|
-
disabled: !1,
|
|
95
|
-
rovingTabStop: !0
|
|
96
|
-
}, g = {
|
|
97
|
-
disabled: !0,
|
|
98
|
-
rovingTabStop: !1
|
|
99
159
|
};
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
160
|
+
const ENABLED_SELECTION_CONTEXT = {
|
|
161
|
+
disabled: false,
|
|
162
|
+
rovingTabStop: false
|
|
163
|
+
};
|
|
164
|
+
const ENABLED_ROVING_SELECTION_CONTEXT = {
|
|
165
|
+
disabled: false,
|
|
166
|
+
rovingTabStop: true
|
|
167
|
+
};
|
|
168
|
+
const DISABLED_SELECTION_CONTEXT = {
|
|
169
|
+
disabled: true,
|
|
170
|
+
rovingTabStop: false
|
|
171
|
+
};
|
|
172
|
+
function getSelectionContext(disabled, rovingTabStop, tabStop) {
|
|
173
|
+
const context = disabled ? DISABLED_SELECTION_CONTEXT : rovingTabStop ? ENABLED_ROVING_SELECTION_CONTEXT : ENABLED_SELECTION_CONTEXT;
|
|
174
|
+
return tabStop === void 0 ? context : {
|
|
175
|
+
...context,
|
|
176
|
+
tabStop
|
|
105
177
|
};
|
|
106
178
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
179
|
+
/**
|
|
180
|
+
* 在一个内部插件接口后收敛选中态、继承禁用与受管子项成员关系。
|
|
181
|
+
* 禁用态经 @lit/context 下行广播;选中态上行写回保持直写。
|
|
182
|
+
*/
|
|
183
|
+
function defineGroupCoordinator(options) {
|
|
184
|
+
return definePlugin(() => {
|
|
185
|
+
const provider = new ContextProvider(options.host, {
|
|
186
|
+
context: SELECTION_GROUP_CONTEXT_LOOSE,
|
|
111
187
|
initialValue: /* @__PURE__ */ new Map()
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
188
|
+
});
|
|
189
|
+
let lastValue;
|
|
190
|
+
let lastDisabled;
|
|
191
|
+
let lastItems = /* @__PURE__ */ new Set();
|
|
192
|
+
let initialized = false;
|
|
193
|
+
const sync = () => {
|
|
194
|
+
const nextItems = options.getItems();
|
|
195
|
+
const value = options.getValue();
|
|
196
|
+
const disabled = options.getDisabled();
|
|
197
|
+
const membershipChanged = nextItems.length !== lastItems.size || [...nextItems].some((item) => !lastItems.has(item));
|
|
198
|
+
const itemSelectionChanged = options.getItemSelected !== void 0 && nextItems.some((item) => options.getItemSelected?.(item) !== options.isItemSelected(item, value));
|
|
199
|
+
const selectionChanged = !initialized || !options.valuesEqual(value, lastValue) || disabled !== lastDisabled || membershipChanged || itemSelectionChanged;
|
|
200
|
+
if (selectionChanged) for (const item of nextItems) options.setItemSelected(item, options.isItemSelected(item, value));
|
|
201
|
+
provider.setValue(new Map(nextItems.map((item, index) => [item, getSelectionContext(disabled, options.getRovingTabStop?.(item, index, nextItems, value) === true, options.isItemTabStop?.(item, nextItems))])));
|
|
202
|
+
lastItems = new Set(nextItems);
|
|
203
|
+
lastValue = options.copyValue(value);
|
|
204
|
+
lastDisabled = disabled;
|
|
205
|
+
initialized = true;
|
|
206
|
+
return selectionChanged;
|
|
116
207
|
};
|
|
117
208
|
return {
|
|
118
|
-
sync
|
|
209
|
+
sync,
|
|
119
210
|
disconnect() {
|
|
120
|
-
|
|
211
|
+
provider.setValue(/* @__PURE__ */ new Map());
|
|
212
|
+
lastItems.clear();
|
|
213
|
+
lastValue = void 0;
|
|
214
|
+
lastDisabled = void 0;
|
|
215
|
+
initialized = false;
|
|
121
216
|
},
|
|
122
|
-
handleChange(
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
217
|
+
handleChange(event) {
|
|
218
|
+
if (options.getDisabled() || !options.isItem(event.target) || !options.host.contains(event.target)) return;
|
|
219
|
+
const current = options.getValue();
|
|
220
|
+
const next = options.getNextValue(event.target, current);
|
|
221
|
+
if (options.valuesEqual(current, next)) {
|
|
222
|
+
options.resyncOnUnchangedValue?.(event.target);
|
|
223
|
+
if (options.resyncOnUnchangedValue) sync();
|
|
127
224
|
return;
|
|
128
225
|
}
|
|
129
|
-
|
|
226
|
+
options.setValue(next);
|
|
227
|
+
options.dispatchValueChange();
|
|
130
228
|
},
|
|
131
|
-
handleKeyDown(
|
|
132
|
-
|
|
229
|
+
handleKeyDown(event) {
|
|
230
|
+
options.handleKeyDown?.(event);
|
|
133
231
|
}
|
|
134
232
|
};
|
|
135
233
|
});
|
|
136
234
|
}
|
|
137
|
-
|
|
138
|
-
export { u as GROUP_MEMBER_DISABLED_CHANGE_EVENT, p as GroupController, l as buttonGroupContextKey, v as defineGroupCoordinator, d as defineGroupManaged, f as defineGroupPresentation, c as selectionGroupContextKey };
|
|
235
|
+
export { GROUP_MEMBER_DISABLED_CHANGE_EVENT, GroupController, buttonGroupContextKey, defineGroupCoordinator, defineGroupManaged, defineGroupPresentation, selectionGroupContextKey };
|
|
139
236
|
|
|
140
237
|
//# sourceMappingURL=index.js.map
|