@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/slider/index.ts"],"sourcesContent":["import { html, LitElement, nothing, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport glass from '@/classes/glass.css?inline'\nimport { installPointerFocusSuppression } from '@/shared/focus/pointer-focus'\nimport { FormAssociated, defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { createFieldId } from '@/shared/form-association/field-id'\nimport { attachDragGesture, type DragGestureHandle } from '@/shared/gesture/drag-gesture'\nimport { clamp } from '@/shared/gesture/physics'\nimport { normalizeNumber } from '@/shared/normalize'\n\nimport style from './style.css?inline'\n\nconst POINTER_DRAG_THRESHOLD = 6\n\ninstallPointerFocusSuppression()\n\n@customElement('web-ui-slider')\nexport class WebUiSlider extends FormAssociated(LitElement) {\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) marks = false\n @property({ type: Boolean, reflect: true }) vertical = false\n @property({ type: String, reflect: true }) name = ''\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: String, attribute: 'aria-label' }) override ariaLabel: string | null = null\n @property({ type: String, attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined\n\n private readonly _fieldId = createFieldId('web-ui-slider')\n private _renderedLabelledbyText = ''\n private _labelledbyControlTargets = new Set<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>()\n private readonly _labelledbyObserver = new MutationObserver(() => {\n const labelledbyText = this._getLabelledbyText()\n if (labelledbyText !== this._renderedLabelledbyText) this.requestUpdate()\n this._observeLabelledbyTargets()\n })\n private readonly _handleLabelledbyControlValueChange = () => {\n const labelledbyText = this._getLabelledbyText()\n if (labelledbyText !== this._renderedLabelledbyText) this.requestUpdate()\n }\n\n // value 使用访问器模式同步表单关联状态。\n private _value = 0\n @property({ type: Number, reflect: true })\n get value(): number {\n return this._value\n }\n set value(v: number) {\n const normalized = normalizeNumber(v, -Infinity, Infinity, 0)\n const old = this._value\n this._value = normalized\n this._formAssociation.sync()\n this.requestUpdate('value', old)\n }\n\n private _min = 0\n @property({ type: Number, reflect: true })\n get min(): number {\n return this._min\n }\n set min(v: number) {\n this._min = normalizeNumber(v, -Infinity, Infinity, 0)\n }\n\n private _max = 100\n @property({ type: Number, reflect: true })\n get max(): number {\n return this._max\n }\n set max(v: number) {\n this._max = normalizeNumber(v, -Infinity, Infinity, 100)\n }\n\n private _step = 1\n @property({ type: Number, reflect: true })\n get step(): number {\n return this._step\n }\n set step(v: number) {\n this._step = normalizeNumber(v, -Infinity, Infinity, 1)\n }\n\n @state() private _dragging = false\n @state() private _pressed = false\n // 避免未改变数值的点击被误认为一次表单提交\n private _interactionStartValue: number | undefined\n private _dragGestureHandle: DragGestureHandle | null = null\n\n override disconnectedCallback() {\n this._labelledbyObserver.disconnect()\n this._syncLabelledbyControlTargets(new Set())\n super.disconnectedCallback()\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = null\n }\n\n override connectedCallback() {\n super.connectedCallback()\n this._observeLabelledbyTargets()\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('ariaLabelledby')) this._observeLabelledbyTargets()\n }\n\n private readonly _formAssociation = defineFormAssociation<number>({\n host: this,\n initialize: () => {\n this._value = this._normalizeValue(this._value)\n },\n getState: () => this._value,\n setState: value => {\n this.value = value\n },\n getFormValue: () => String(this._value),\n getFormState: () => String(this._value),\n restoreState: state => {\n if (typeof state !== 'string') return\n const value = Number(state)\n if (Number.isFinite(value)) this.value = value\n },\n syncValidity: internals => {\n if (typeof internals.setValidity === 'function') internals.setValidity({})\n }\n }).make()\n\n private readonly _formAssociationController = new FormAssociationController(this, this._formAssociation)\n\n private get _isDisabled(): boolean {\n return this.disabled || this._formAssociation.isFormDisabled()\n }\n\n override willUpdate(changed: Map<string, unknown>) {\n if (changed.has('value') || changed.has('min') || changed.has('max') || changed.has('step')) {\n const normalizedValue = this._normalizeValue(this.value)\n if (normalizedValue !== this.value) this.value = normalizedValue\n }\n }\n\n override focus(options?: FocusOptions) {\n this._slider?.focus(options)\n }\n\n override blur() {\n this._slider?.blur()\n }\n\n private get _slider(): HTMLDivElement | null {\n return this.renderRoot.querySelector<HTMLDivElement>('[role=\"slider\"]')\n }\n\n private get _range(): number {\n return Math.max(0, this.max - this.min)\n }\n\n private get _percent(): number {\n return this._range === 0 ? 0 : ((this.value - this.min) / this._range) * 100\n }\n\n private get _markValues(): number[] {\n if (!this.marks || this._range === 0) return []\n const count = Math.min(100, Math.floor(this._range / this._safeStep))\n return Array.from({ length: count + 1 }, (_, index) => this.min + index * this._safeStep)\n }\n\n private get _safeStep(): number {\n return Number.isFinite(this.step) && this.step > 0 ? this.step : 1\n }\n\n private _getLabelledbyText(): string {\n if (!this.ariaLabelledby) return ''\n\n const root = this.getRootNode()\n if (!(root instanceof Document || root instanceof ShadowRoot)) return ''\n\n return this.ariaLabelledby\n .trim()\n .split(/\\s+/)\n .filter(Boolean)\n .map(id => this._getReferencedTextAlternative(root, id))\n .filter(Boolean)\n .join(' ')\n }\n\n private _getReferencedTextAlternative(root: Document | ShadowRoot, id: string, visited = new Set<Element>()): string {\n const escapedId = typeof CSS !== 'undefined' && CSS.escape ? CSS.escape(id) : id\n const element = root.querySelector(`#${escapedId}`)\n if (!element || visited.has(element)) return ''\n visited.add(element)\n\n const hiddenReferenceRoot = this._isHiddenFromAccessibleName(element) ? element : undefined\n return this._getElementTextAlternative(root, element, visited, true, hiddenReferenceRoot)\n }\n\n private _getElementTextAlternative(\n root: Document | ShadowRoot,\n element: Element,\n visited: Set<Element>,\n directlyReferenced = false,\n hiddenReferenceRoot?: Element\n ): string {\n if (!directlyReferenced && this._isHiddenFromAccessibleName(element, hiddenReferenceRoot)) return ''\n\n const labelledby = element.getAttribute('aria-labelledby')\n if (labelledby) {\n const text = labelledby\n .trim()\n .split(/\\s+/)\n .map(referencedId => this._getReferencedTextAlternative(root, referencedId, visited))\n .filter(Boolean)\n .join(' ')\n if (text) return text\n }\n\n const ariaLabel = element.getAttribute('aria-label')?.trim()\n if (ariaLabel) return ariaLabel\n\n if (\n element instanceof HTMLInputElement ||\n element instanceof HTMLTextAreaElement ||\n element instanceof HTMLSelectElement\n ) {\n return element.value.trim()\n }\n\n if (element.localName === 'img') {\n const alt = element.getAttribute('alt')?.trim()\n if (alt) return alt\n }\n\n const content = Array.from(element.childNodes)\n .map(node => {\n if (node.nodeType === Node.TEXT_NODE) return node.textContent?.trim() ?? ''\n if (node instanceof Element) {\n if (visited.has(node)) return ''\n visited.add(node)\n return this._getElementTextAlternative(root, node, visited, false, hiddenReferenceRoot)\n }\n return ''\n })\n .filter(Boolean)\n .join(' ')\n\n return content || element.getAttribute('title')?.trim() || ''\n }\n\n private _isHiddenFromAccessibleName(element: Element, ignoredAncestor?: Element): boolean {\n let current: Element | null = element\n while (current && current !== ignoredAncestor) {\n if (current.hasAttribute('hidden') || current.getAttribute('aria-hidden') === 'true') return true\n\n const style = current.ownerDocument.defaultView?.getComputedStyle(current)\n if (style?.display === 'none' || style?.visibility === 'hidden' || style?.visibility === 'collapse') return true\n\n current = current.parentElement\n }\n return false\n }\n\n private _observeLabelledbyTargets() {\n this._labelledbyObserver.disconnect()\n if (!this.ariaLabelledby || !this.isConnected) {\n this._syncLabelledbyControlTargets(new Set())\n return\n }\n\n const root = this.getRootNode()\n if (!(root instanceof Document || root instanceof ShadowRoot)) {\n this._syncLabelledbyControlTargets(new Set())\n return\n }\n\n const pendingIds = this.ariaLabelledby.trim().split(/\\s+/).filter(Boolean)\n const visitedIds = new Set<string>()\n const targets = new Set<Element>()\n\n while (pendingIds.length) {\n const id = pendingIds.pop()!\n if (visitedIds.has(id)) continue\n visitedIds.add(id)\n\n const escapedId = typeof CSS !== 'undefined' && CSS.escape ? CSS.escape(id) : id\n const target = root.querySelector(`#${escapedId}`)\n if (!target) continue\n\n targets.add(target)\n const nestedLabelledby = target.getAttribute('aria-labelledby')\n if (nestedLabelledby) pendingIds.push(...nestedLabelledby.trim().split(/\\s+/).filter(Boolean))\n }\n\n this._syncLabelledbyControlTargets(\n new Set(\n [...targets].filter(\n (target): target is HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement =>\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n )\n )\n )\n\n const structuralTargets = new Set<Node>()\n for (const target of targets) {\n this._labelledbyObserver.observe(target, {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: [\n 'alt',\n 'aria-hidden',\n 'aria-label',\n 'aria-labelledby',\n 'class',\n 'hidden',\n 'id',\n 'style',\n 'title',\n 'value'\n ]\n })\n\n let ancestor = target.parentNode\n while (ancestor && ancestor !== root) {\n if (!(ancestor instanceof Element && targets.has(ancestor))) structuralTargets.add(ancestor)\n ancestor = ancestor.parentNode\n }\n }\n\n for (const target of structuralTargets) {\n this._labelledbyObserver.observe(target, {\n childList: true,\n attributes: true,\n attributeFilter: ['aria-hidden', 'class', 'hidden', 'style']\n })\n }\n\n const missingTargets = visitedIds.size !== targets.size\n this._labelledbyObserver.observe(root, {\n childList: true,\n subtree: missingTargets,\n attributes: missingTargets,\n attributeFilter: missingTargets ? ['aria-hidden', 'class', 'hidden', 'id', 'style'] : undefined\n })\n }\n\n private _syncLabelledbyControlTargets(targets: Set<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) {\n for (const target of this._labelledbyControlTargets) {\n if (targets.has(target)) continue\n target.removeEventListener('input', this._handleLabelledbyControlValueChange)\n target.removeEventListener('change', this._handleLabelledbyControlValueChange)\n }\n\n for (const target of targets) {\n if (this._labelledbyControlTargets.has(target)) continue\n target.addEventListener('input', this._handleLabelledbyControlValueChange)\n target.addEventListener('change', this._handleLabelledbyControlValueChange)\n }\n\n this._labelledbyControlTargets = targets\n }\n\n private _normalizeValue(value: number): number {\n if (!Number.isFinite(value)) return this.min\n const lower = Math.min(this.min, this.max)\n const upper = Math.max(this.min, this.max)\n const clamped = clamp(value, lower, upper)\n const steps = Math.round((clamped - lower) / this._safeStep)\n // 对齐到 step 网格后必须再收敛一次:`round` 会把值推到网格外侧\n // (max=100 / step=15 → 7 * 15 = 105),不收敛就会突破 max,\n // 连带 aria-valuenow 与 --percent 溢出 track。\n const snapped = Number((lower + steps * this._safeStep).toFixed(this._precision))\n return clamp(snapped, lower, upper)\n }\n\n private get _precision(): number {\n return Math.max(this._decimalPlaces(this.min), this._decimalPlaces(this.max), this._decimalPlaces(this._safeStep))\n }\n\n private _decimalPlaces(value: number): number {\n const [, decimal = ''] = String(value).split('.')\n return decimal.length\n }\n\n private _setValue(value: number): boolean {\n if (this._isDisabled) return false\n const nextValue = this._normalizeValue(value)\n if (nextValue === this.value) return false\n this.value = nextValue\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n return true\n }\n\n private _setValueFromPointer(event: PointerEvent): boolean {\n const track = this._slider\n if (!track) return false\n const rect = track.getBoundingClientRect()\n if (this.vertical) {\n if (rect.height <= 0) return false\n // 视觉上的数值从下往上增长,与坐标系相反。\n const ratio = clamp(1 - (event.clientY - rect.top) / rect.height, 0, 1)\n return this._setValue(this.min + ratio * this._range)\n }\n if (rect.width <= 0) return false\n const ratio = clamp((event.clientX - rect.left) / rect.width, 0, 1)\n return this._setValue(this.min + ratio * this._range)\n }\n\n private _handlePointerDown(event: PointerEvent) {\n if (this._isDisabled) return\n this._pressed = true\n this._interactionStartValue = this.value\n\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = attachDragGesture(event, {\n axis: this.vertical ? 'y' : 'x',\n threshold: POINTER_DRAG_THRESHOLD,\n onMove: (_info, e) => {\n this._dragging = true\n this._setValueFromPointer(e)\n },\n onEnd: (_info, e) => {\n this._setValueFromPointer(e)\n this._pressed = false\n this._dragging = false\n if (this._interactionStartValue !== this.value) {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n this._interactionStartValue = undefined\n },\n onTap: (info, e) => {\n const crossAxisDelta = this.vertical ? info.deltaX : info.deltaY\n if (Math.abs(crossAxisDelta) >= POINTER_DRAG_THRESHOLD) return\n\n this._setValueFromPointer(e)\n if (this._interactionStartValue !== this.value) {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n },\n onCancel: () => {\n this._pressed = false\n this._dragging = false\n this._interactionStartValue = undefined\n }\n })\n }\n\n private _handleKeyDown(event: KeyboardEvent) {\n if (this._isDisabled) return\n const pageStep = this._safeStep * 10\n const keyValues: Record<string, number> = {\n ArrowDown: this.value - this._safeStep,\n ArrowLeft: this.value - this._safeStep,\n ArrowUp: this.value + this._safeStep,\n ArrowRight: this.value + this._safeStep,\n PageDown: this.value - pageStep,\n PageUp: this.value + pageStep,\n Home: this.min,\n End: this.max\n }\n const nextValue = keyValues[event.key]\n if (nextValue === undefined) return\n event.preventDefault()\n if (this._setValue(nextValue)) this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n override render() {\n const trackClass = classMap({\n 'wui-slider-track': true,\n 'is-dragging': this._dragging,\n 'is-disabled': this._isDisabled\n })\n const thumbClass = classMap({\n 'wui-slider-thumb': true,\n 'wui-glass': true,\n 'is-pressed': this._pressed,\n 'is-dragging': this._dragging\n })\n const trackStyle = styleMap({ '--percent': `${this._percent}%` })\n const labelledbyText = this._getLabelledbyText()\n this._renderedLabelledbyText = labelledbyText\n const labelledbyId = `${this._fieldId}-label`\n\n return html`\n ${labelledbyText ? html`<span class=\"wui-slider-a11y-only\" id=${labelledbyId}>${labelledbyText}</span>` : nothing}\n <div\n class=${trackClass}\n style=${trackStyle}\n role=\"slider\"\n tabindex=${this._isDisabled ? '-1' : '0'}\n aria-label=${ifDefined(this.ariaLabel)}\n aria-labelledby=${labelledbyText ? labelledbyId : nothing}\n aria-orientation=${this.vertical ? 'vertical' : 'horizontal'}\n aria-valuemin=${this.min}\n aria-valuemax=${this.max}\n aria-valuenow=${this.value}\n aria-disabled=${String(this._isDisabled)}\n @keydown=${this._handleKeyDown}\n @pointerdown=${this._handlePointerDown}\n >\n <div class=\"wui-slider-progress\"></div>\n <div class=\"wui-slider-marks\">\n ${this._markValues.map(\n mark =>\n html`<span\n class=\"wui-slider-mark\"\n style=${styleMap({ '--percent': `${((mark - this.min) / this._range) * 100}%` })}\n ></span>`\n )}\n </div>\n <div class=${thumbClass}></div>\n </div>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-slider': WebUiSlider\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["glass","style"],"sources":["../../../src/components/slider/index.ts"],"sourcesContent":["import { html, LitElement, nothing, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport glass from '@/classes/glass.css?inline'\nimport { installPointerFocusSuppression } from '@/shared/focus/pointer-focus'\nimport { FormAssociated, defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { createFieldId } from '@/shared/form-association/field-id'\nimport { attachDragGesture, type DragGestureHandle } from '@/shared/gesture/drag-gesture'\nimport { clamp } from '@/shared/gesture/physics'\nimport { normalizeNumber } from '@/shared/normalize'\n\nimport style from './style.css?inline'\n\nconst POINTER_DRAG_THRESHOLD = 6\n\ninstallPointerFocusSuppression()\n\n@customElement('web-ui-slider')\nexport class WebUiSlider extends FormAssociated(LitElement) {\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) marks = false\n @property({ type: Boolean, reflect: true }) vertical = false\n @property({ type: String, reflect: true }) name = ''\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: String, attribute: 'aria-label' }) override ariaLabel: string | null = null\n @property({ type: String, attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined\n\n private readonly _fieldId = createFieldId('web-ui-slider')\n private _renderedLabelledbyText = ''\n private _labelledbyControlTargets = new Set<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>()\n private readonly _labelledbyObserver = new MutationObserver(() => {\n const labelledbyText = this._getLabelledbyText()\n if (labelledbyText !== this._renderedLabelledbyText) this.requestUpdate()\n this._observeLabelledbyTargets()\n })\n private readonly _handleLabelledbyControlValueChange = () => {\n const labelledbyText = this._getLabelledbyText()\n if (labelledbyText !== this._renderedLabelledbyText) this.requestUpdate()\n }\n\n // value 使用访问器模式同步表单关联状态。\n private _value = 0\n @property({ type: Number, reflect: true })\n get value(): number {\n return this._value\n }\n set value(v: number) {\n const normalized = normalizeNumber(v, -Infinity, Infinity, 0)\n const old = this._value\n this._value = normalized\n this._formAssociation.sync()\n this.requestUpdate('value', old)\n }\n\n private _min = 0\n @property({ type: Number, reflect: true })\n get min(): number {\n return this._min\n }\n set min(v: number) {\n this._min = normalizeNumber(v, -Infinity, Infinity, 0)\n }\n\n private _max = 100\n @property({ type: Number, reflect: true })\n get max(): number {\n return this._max\n }\n set max(v: number) {\n this._max = normalizeNumber(v, -Infinity, Infinity, 100)\n }\n\n private _step = 1\n @property({ type: Number, reflect: true })\n get step(): number {\n return this._step\n }\n set step(v: number) {\n this._step = normalizeNumber(v, -Infinity, Infinity, 1)\n }\n\n @state() private _dragging = false\n @state() private _pressed = false\n // 避免未改变数值的点击被误认为一次表单提交\n private _interactionStartValue: number | undefined\n private _dragGestureHandle: DragGestureHandle | null = null\n\n override disconnectedCallback() {\n this._labelledbyObserver.disconnect()\n this._syncLabelledbyControlTargets(new Set())\n super.disconnectedCallback()\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = null\n }\n\n override connectedCallback() {\n super.connectedCallback()\n this._observeLabelledbyTargets()\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('ariaLabelledby')) this._observeLabelledbyTargets()\n }\n\n private readonly _formAssociation = defineFormAssociation<number>({\n host: this,\n initialize: () => {\n this._value = this._normalizeValue(this._value)\n },\n getState: () => this._value,\n setState: value => {\n this.value = value\n },\n getFormValue: () => String(this._value),\n getFormState: () => String(this._value),\n restoreState: state => {\n if (typeof state !== 'string') return\n const value = Number(state)\n if (Number.isFinite(value)) this.value = value\n },\n syncValidity: internals => {\n if (typeof internals.setValidity === 'function') internals.setValidity({})\n }\n }).make()\n\n private readonly _formAssociationController = new FormAssociationController(this, this._formAssociation)\n\n private get _isDisabled(): boolean {\n return this.disabled || this._formAssociation.isFormDisabled()\n }\n\n override willUpdate(changed: Map<string, unknown>) {\n if (changed.has('value') || changed.has('min') || changed.has('max') || changed.has('step')) {\n const normalizedValue = this._normalizeValue(this.value)\n if (normalizedValue !== this.value) this.value = normalizedValue\n }\n }\n\n override focus(options?: FocusOptions) {\n this._slider?.focus(options)\n }\n\n override blur() {\n this._slider?.blur()\n }\n\n private get _slider(): HTMLDivElement | null {\n return this.renderRoot.querySelector<HTMLDivElement>('[role=\"slider\"]')\n }\n\n private get _range(): number {\n return Math.max(0, this.max - this.min)\n }\n\n private get _percent(): number {\n return this._range === 0 ? 0 : ((this.value - this.min) / this._range) * 100\n }\n\n private get _markValues(): number[] {\n if (!this.marks || this._range === 0) return []\n const count = Math.min(100, Math.floor(this._range / this._safeStep))\n return Array.from({ length: count + 1 }, (_, index) => this.min + index * this._safeStep)\n }\n\n private get _safeStep(): number {\n return Number.isFinite(this.step) && this.step > 0 ? this.step : 1\n }\n\n private _getLabelledbyText(): string {\n if (!this.ariaLabelledby) return ''\n\n const root = this.getRootNode()\n if (!(root instanceof Document || root instanceof ShadowRoot)) return ''\n\n return this.ariaLabelledby\n .trim()\n .split(/\\s+/)\n .filter(Boolean)\n .map(id => this._getReferencedTextAlternative(root, id))\n .filter(Boolean)\n .join(' ')\n }\n\n private _getReferencedTextAlternative(root: Document | ShadowRoot, id: string, visited = new Set<Element>()): string {\n const escapedId = typeof CSS !== 'undefined' && CSS.escape ? CSS.escape(id) : id\n const element = root.querySelector(`#${escapedId}`)\n if (!element || visited.has(element)) return ''\n visited.add(element)\n\n const hiddenReferenceRoot = this._isHiddenFromAccessibleName(element) ? element : undefined\n return this._getElementTextAlternative(root, element, visited, true, hiddenReferenceRoot)\n }\n\n private _getElementTextAlternative(\n root: Document | ShadowRoot,\n element: Element,\n visited: Set<Element>,\n directlyReferenced = false,\n hiddenReferenceRoot?: Element\n ): string {\n if (!directlyReferenced && this._isHiddenFromAccessibleName(element, hiddenReferenceRoot)) return ''\n\n const labelledby = element.getAttribute('aria-labelledby')\n if (labelledby) {\n const text = labelledby\n .trim()\n .split(/\\s+/)\n .map(referencedId => this._getReferencedTextAlternative(root, referencedId, visited))\n .filter(Boolean)\n .join(' ')\n if (text) return text\n }\n\n const ariaLabel = element.getAttribute('aria-label')?.trim()\n if (ariaLabel) return ariaLabel\n\n if (\n element instanceof HTMLInputElement ||\n element instanceof HTMLTextAreaElement ||\n element instanceof HTMLSelectElement\n ) {\n return element.value.trim()\n }\n\n if (element.localName === 'img') {\n const alt = element.getAttribute('alt')?.trim()\n if (alt) return alt\n }\n\n const content = Array.from(element.childNodes)\n .map(node => {\n if (node.nodeType === Node.TEXT_NODE) return node.textContent?.trim() ?? ''\n if (node instanceof Element) {\n if (visited.has(node)) return ''\n visited.add(node)\n return this._getElementTextAlternative(root, node, visited, false, hiddenReferenceRoot)\n }\n return ''\n })\n .filter(Boolean)\n .join(' ')\n\n return content || element.getAttribute('title')?.trim() || ''\n }\n\n private _isHiddenFromAccessibleName(element: Element, ignoredAncestor?: Element): boolean {\n let current: Element | null = element\n while (current && current !== ignoredAncestor) {\n if (current.hasAttribute('hidden') || current.getAttribute('aria-hidden') === 'true') return true\n\n const style = current.ownerDocument.defaultView?.getComputedStyle(current)\n if (style?.display === 'none' || style?.visibility === 'hidden' || style?.visibility === 'collapse') return true\n\n current = current.parentElement\n }\n return false\n }\n\n private _observeLabelledbyTargets() {\n this._labelledbyObserver.disconnect()\n if (!this.ariaLabelledby || !this.isConnected) {\n this._syncLabelledbyControlTargets(new Set())\n return\n }\n\n const root = this.getRootNode()\n if (!(root instanceof Document || root instanceof ShadowRoot)) {\n this._syncLabelledbyControlTargets(new Set())\n return\n }\n\n const pendingIds = this.ariaLabelledby.trim().split(/\\s+/).filter(Boolean)\n const visitedIds = new Set<string>()\n const targets = new Set<Element>()\n\n while (pendingIds.length) {\n const id = pendingIds.pop()!\n if (visitedIds.has(id)) continue\n visitedIds.add(id)\n\n const escapedId = typeof CSS !== 'undefined' && CSS.escape ? CSS.escape(id) : id\n const target = root.querySelector(`#${escapedId}`)\n if (!target) continue\n\n targets.add(target)\n const nestedLabelledby = target.getAttribute('aria-labelledby')\n if (nestedLabelledby) pendingIds.push(...nestedLabelledby.trim().split(/\\s+/).filter(Boolean))\n }\n\n this._syncLabelledbyControlTargets(\n new Set(\n [...targets].filter(\n (target): target is HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement =>\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n )\n )\n )\n\n const structuralTargets = new Set<Node>()\n for (const target of targets) {\n this._labelledbyObserver.observe(target, {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: [\n 'alt',\n 'aria-hidden',\n 'aria-label',\n 'aria-labelledby',\n 'class',\n 'hidden',\n 'id',\n 'style',\n 'title',\n 'value'\n ]\n })\n\n let ancestor = target.parentNode\n while (ancestor && ancestor !== root) {\n if (!(ancestor instanceof Element && targets.has(ancestor))) structuralTargets.add(ancestor)\n ancestor = ancestor.parentNode\n }\n }\n\n for (const target of structuralTargets) {\n this._labelledbyObserver.observe(target, {\n childList: true,\n attributes: true,\n attributeFilter: ['aria-hidden', 'class', 'hidden', 'style']\n })\n }\n\n const missingTargets = visitedIds.size !== targets.size\n this._labelledbyObserver.observe(root, {\n childList: true,\n subtree: missingTargets,\n attributes: missingTargets,\n attributeFilter: missingTargets ? ['aria-hidden', 'class', 'hidden', 'id', 'style'] : undefined\n })\n }\n\n private _syncLabelledbyControlTargets(targets: Set<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) {\n for (const target of this._labelledbyControlTargets) {\n if (targets.has(target)) continue\n target.removeEventListener('input', this._handleLabelledbyControlValueChange)\n target.removeEventListener('change', this._handleLabelledbyControlValueChange)\n }\n\n for (const target of targets) {\n if (this._labelledbyControlTargets.has(target)) continue\n target.addEventListener('input', this._handleLabelledbyControlValueChange)\n target.addEventListener('change', this._handleLabelledbyControlValueChange)\n }\n\n this._labelledbyControlTargets = targets\n }\n\n private _normalizeValue(value: number): number {\n if (!Number.isFinite(value)) return this.min\n const lower = Math.min(this.min, this.max)\n const upper = Math.max(this.min, this.max)\n const clamped = clamp(value, lower, upper)\n const steps = Math.round((clamped - lower) / this._safeStep)\n // 对齐到 step 网格后必须再收敛一次:`round` 会把值推到网格外侧\n // (max=100 / step=15 → 7 * 15 = 105),不收敛就会突破 max,\n // 连带 aria-valuenow 与 --percent 溢出 track。\n const snapped = Number((lower + steps * this._safeStep).toFixed(this._precision))\n return clamp(snapped, lower, upper)\n }\n\n private get _precision(): number {\n return Math.max(this._decimalPlaces(this.min), this._decimalPlaces(this.max), this._decimalPlaces(this._safeStep))\n }\n\n private _decimalPlaces(value: number): number {\n const [, decimal = ''] = String(value).split('.')\n return decimal.length\n }\n\n private _setValue(value: number): boolean {\n if (this._isDisabled) return false\n const nextValue = this._normalizeValue(value)\n if (nextValue === this.value) return false\n this.value = nextValue\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n return true\n }\n\n private _setValueFromPointer(event: PointerEvent): boolean {\n const track = this._slider\n if (!track) return false\n const rect = track.getBoundingClientRect()\n if (this.vertical) {\n if (rect.height <= 0) return false\n // 视觉上的数值从下往上增长,与坐标系相反。\n const ratio = clamp(1 - (event.clientY - rect.top) / rect.height, 0, 1)\n return this._setValue(this.min + ratio * this._range)\n }\n if (rect.width <= 0) return false\n const ratio = clamp((event.clientX - rect.left) / rect.width, 0, 1)\n return this._setValue(this.min + ratio * this._range)\n }\n\n private _handlePointerDown(event: PointerEvent) {\n if (this._isDisabled) return\n this._pressed = true\n this._interactionStartValue = this.value\n\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = attachDragGesture(event, {\n axis: this.vertical ? 'y' : 'x',\n threshold: POINTER_DRAG_THRESHOLD,\n onMove: (_info, e) => {\n this._dragging = true\n this._setValueFromPointer(e)\n },\n onEnd: (_info, e) => {\n this._setValueFromPointer(e)\n this._pressed = false\n this._dragging = false\n if (this._interactionStartValue !== this.value) {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n this._interactionStartValue = undefined\n },\n onTap: (info, e) => {\n const crossAxisDelta = this.vertical ? info.deltaX : info.deltaY\n if (Math.abs(crossAxisDelta) >= POINTER_DRAG_THRESHOLD) return\n\n this._setValueFromPointer(e)\n if (this._interactionStartValue !== this.value) {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n },\n onCancel: () => {\n this._pressed = false\n this._dragging = false\n this._interactionStartValue = undefined\n }\n })\n }\n\n private _handleKeyDown(event: KeyboardEvent) {\n if (this._isDisabled) return\n const pageStep = this._safeStep * 10\n const keyValues: Record<string, number> = {\n ArrowDown: this.value - this._safeStep,\n ArrowLeft: this.value - this._safeStep,\n ArrowUp: this.value + this._safeStep,\n ArrowRight: this.value + this._safeStep,\n PageDown: this.value - pageStep,\n PageUp: this.value + pageStep,\n Home: this.min,\n End: this.max\n }\n const nextValue = keyValues[event.key]\n if (nextValue === undefined) return\n event.preventDefault()\n if (this._setValue(nextValue)) this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n override render() {\n const trackClass = classMap({\n 'wui-slider-track': true,\n 'is-dragging': this._dragging,\n 'is-disabled': this._isDisabled\n })\n const thumbClass = classMap({\n 'wui-slider-thumb': true,\n 'wui-glass': true,\n 'is-pressed': this._pressed,\n 'is-dragging': this._dragging\n })\n const trackStyle = styleMap({ '--percent': `${this._percent}%` })\n const labelledbyText = this._getLabelledbyText()\n this._renderedLabelledbyText = labelledbyText\n const labelledbyId = `${this._fieldId}-label`\n\n return html`\n ${labelledbyText ? html`<span class=\"wui-slider-a11y-only\" id=${labelledbyId}>${labelledbyText}</span>` : nothing}\n <div\n class=${trackClass}\n style=${trackStyle}\n role=\"slider\"\n tabindex=${this._isDisabled ? '-1' : '0'}\n aria-label=${ifDefined(this.ariaLabel)}\n aria-labelledby=${labelledbyText ? labelledbyId : nothing}\n aria-orientation=${this.vertical ? 'vertical' : 'horizontal'}\n aria-valuemin=${this.min}\n aria-valuemax=${this.max}\n aria-valuenow=${this.value}\n aria-disabled=${String(this._isDisabled)}\n @keydown=${this._handleKeyDown}\n @pointerdown=${this._handlePointerDown}\n >\n <div class=\"wui-slider-progress\"></div>\n <div class=\"wui-slider-marks\">\n ${this._markValues.map(\n mark =>\n html`<span\n class=\"wui-slider-mark\"\n style=${styleMap({ '--percent': `${((mark - this.min) / this._range) * 100}%` })}\n ></span>`\n )}\n </div>\n <div class=${thumbClass}></div>\n </div>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-slider': WebUiSlider\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
export { e as default };
|
|
1
|
+
// src/components/slider/style.css?inline
|
|
2
|
+
var style_default = "*,:before,:after{box-sizing:border-box}:host{touch-action:none;width:var(--wui-slider-width,200px);display:inline-block}:host([vertical]){width:auto;height:var(--wui-slider-vertical-height,200px)}:host([disabled]){cursor:not-allowed}.wui-slider-a11y-only{white-space:nowrap;clip-path:inset(50%);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.wui-slider-track{touch-action:none;cursor:default;-webkit-user-select:none;user-select:none;width:100%;height:var(--wui-slider-track-size,6px);border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:var(--wui-color-surface-track,#e5e5ea);position:relative}.wui-slider-track:focus-visible{outline-color:var(--wui-color-focus-ring,color-mix(in srgb, var(--wui-color-accent,#0071e3) 40%, transparent))}.wui-slider-track.is-disabled{cursor:not-allowed;opacity:.38}.wui-slider-track.is-dragging{cursor:grabbing}:host([vertical]) .wui-slider-track{touch-action:none;width:var(--wui-slider-track-size,6px);height:100%}.wui-slider-progress{z-index:1;width:var(--percent);border-radius:inherit;background-color:var(--wui-color-accent,#0071e3);position:absolute;top:0;bottom:0;left:0}:host([vertical]) .wui-slider-progress{width:100%;height:var(--percent);top:auto;bottom:0}.wui-slider-marks{pointer-events:none;z-index:2;top:calc(100% + 2px);right:var(--wui-slider-marks-inset,0);left:var(--wui-slider-marks-inset,0);height:4px;margin-left:2px;margin-right:2px;position:absolute}:host([vertical]) .wui-slider-marks{top:var(--wui-slider-marks-inset,0);right:auto;bottom:var(--wui-slider-marks-inset,0);width:4px;height:auto;margin:2px 0;left:calc(100% + 2px)}.wui-slider-mark{top:0;left:var(--percent);border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:var(--wui-color-surface-track,#e5e5ea);width:4px;height:4px;position:absolute;transform:translate(-50%)}:host([vertical]) .wui-slider-mark{top:auto;bottom:var(--percent);left:50%;transform:translate(-50%,50%)}.wui-slider-thumb{--wui-glass-corner-radius:calc(var(--wui-slider-thumb-thickness,20px) / 2);cursor:inherit;z-index:3;top:50%;left:var(--percent);transform-origin:50%;width:var(--wui-slider-thumb-thickness,20px);height:var(--wui-slider-thumb-thickness,20px);border-radius:var(--wui-radius-control,calc(infinity * 1px));transition:width var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), height var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), transform var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), background-color var(--wui-duration-press,80ms) ease, box-shadow var(--wui-duration-press,80ms) ease;position:absolute;transform:translate(-50%,-50%)scale(1)}.wui-slider-thumb:not(.is-dragging){background-color:var(--wui-color-on-control,#fff)}.wui-slider-thumb.is-pressed:not(.is-dragging){--wui-color-glass-ring:transparent;width:var(--wui-slider-thumb-length,24px);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 38%, transparent), inset 0 1px .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 52%, transparent), inset 0 -.5px 1px #00000008, 0 2px 20px #0003;background-color:#0000;transform:translate(-50%,-50%)scale(1.5)}.wui-slider-thumb.is-dragging{--wui-color-glass-ring:transparent;cursor:grabbing;width:var(--wui-slider-thumb-length,24px);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 38%, transparent), inset 0 1px .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 52%, transparent), inset 0 -.5px 1px #00000008, 0 2px 20px #0003;background-color:#0000;transform:translate(-50%,-50%)scale(1.5)}:host([vertical]) .wui-slider-thumb{top:auto;bottom:var(--percent);left:50%;transform:translate(-50%,50%)scale(1)}:host([vertical]) .wui-slider-thumb.is-pressed:not(.is-dragging),:host([vertical]) .wui-slider-thumb.is-dragging{width:var(--wui-slider-thumb-thickness,20px);height:var(--wui-slider-thumb-length,24px);transform:translate(-50%,50%)scale(1.5)}:host([data-wui-pointer-focus]) .wui-slider-track:focus-visible{outline-color:#0000}\n";
|
|
3
|
+
export { style_default as default };
|
|
5
4
|
|
|
6
5
|
//# sourceMappingURL=style.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/slider/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n touch-action: none;\n display: inline-block;\n width: var(--wui-slider-width, 200px);\n}\n\n:host([vertical]) {\n width: auto;\n height: var(--wui-slider-vertical-height, 200px);\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.wui-slider-a11y-only {\n position: absolute;\n\n overflow: hidden;\n\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n\n white-space: nowrap;\n\n clip-path: inset(50%);\n}\n\n.wui-slider-track {\n touch-action: none;\n cursor: default;\n user-select: none;\n\n position: relative;\n\n width: 100%;\n height: var(--wui-slider-track-size, 6px);\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n\n &:focus-visible {\n outline-color: var(--wui-color-focus-ring, color-mix(in srgb, var(--wui-color-accent, #0071e3) 40%, transparent));\n }\n\n &.is-disabled {\n cursor: not-allowed;\n opacity: 0.38;\n }\n\n &.is-dragging {\n cursor: grabbing;\n }\n}\n\n:host([vertical]) .wui-slider-track {\n touch-action: none;\n width: var(--wui-slider-track-size, 6px);\n height: 100%;\n}\n\n.wui-slider-progress {\n position: absolute;\n z-index: 1;\n top: 0;\n bottom: 0;\n left: 0;\n\n width: var(--percent);\n border-radius: inherit;\n\n background-color: var(--wui-color-accent, #0071e3);\n}\n\n:host([vertical]) .wui-slider-progress {\n top: auto;\n bottom: 0;\n width: 100%;\n height: var(--percent);\n}\n\n.wui-slider-marks {\n pointer-events: none;\n\n position: absolute;\n z-index: 2;\n top: calc(100% + 2px);\n right: var(--wui-slider-marks-inset, 0);\n left: var(--wui-slider-marks-inset, 0);\n\n height: 4px;\n margin-right: 2px;\n margin-left: 2px;\n}\n\n:host([vertical]) .wui-slider-marks {\n top: var(--wui-slider-marks-inset, 0);\n right: auto;\n bottom: var(--wui-slider-marks-inset, 0);\n left: calc(100% + 2px);\n\n width: 4px;\n height: auto;\n margin: 2px 0;\n}\n\n.wui-slider-mark {\n position: absolute;\n top: 0;\n left: var(--percent);\n transform: translateX(-50%);\n\n width: 4px;\n height: 4px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n}\n\n:host([vertical]) .wui-slider-mark {\n top: auto;\n bottom: var(--percent);\n left: 50%;\n transform: translate(-50%, 50%);\n}\n\n.wui-slider-thumb {\n /*\n * thumb 几何:静止态是正圆(直径取厚度 --wui-slider-thumb-thickness),\n * 按压 / 拖拽态沿 track 方向展开成胶囊(长边取 --wui-slider-thumb-length),\n * 与 switch thumb 同一套配方:厚度不变、长度变长。\n * 纵向 slider 把长边放进高度方向,横向放进宽度方向。\n * 描边光影需要有限半径,取厚度的一半:正圆与胶囊两端的圆角都是它。\n */\n --wui-glass-corner-radius: calc(var(--wui-slider-thumb-thickness, 20px) / 2);\n\n cursor: inherit;\n\n position: absolute;\n z-index: 3;\n top: 50%;\n left: var(--percent);\n transform-origin: center center;\n transform: translate(-50%, -50%) scale(1);\n\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-thickness, 20px);\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n transition:\n width var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n height var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n transform var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n background-color var(--wui-duration-press, 80ms) ease,\n box-shadow var(--wui-duration-press, 80ms) ease;\n\n /* 静止态实体白 thumb(wui-glass 恒开仅提供描边/高光,背景被白色覆盖);\n 按压/拖拽时背景转透明让 backdrop blur 透出并放大 1.5x。\n box-shadow 直接写死值(不经自定义属性中转):iOS Safari 对 var 离散切换驱动的\n box-shadow 不触发过渡且可能整体不生效(r2 真机「回退之前」的根因),直接写值\n 后是普通属性变化,transition 正常插值;同时复制 wui-glass 的三条 inset 高光,\n 避免整段覆盖后按压态丢失玻璃描边。 */\n &:not(.is-dragging) {\n background-color: var(--wui-color-on-control, #fff);\n }\n\n &.is-pressed:not(.is-dragging) {\n /* 环底色随按压/拖拽态转 transparent(理由见 menu-portal.css)。 */\n --wui-color-glass-ring: transparent;\n transform: translate(-50%, -50%) scale(1.5);\n\n /* 横向 slider 沿 track 方向展开成胶囊:厚度不变,长边走宽度方向。 */\n width: var(--wui-slider-thumb-length, 24px);\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n\n &.is-dragging {\n --wui-color-glass-ring: transparent;\n cursor: grabbing;\n\n transform: translate(-50%, -50%) scale(1.5);\n\n width: var(--wui-slider-thumb-length, 24px);\n\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n}\n\n:host([vertical]) .wui-slider-thumb {\n top: auto;\n bottom: var(--percent);\n left: 50%;\n transform: translate(-50%, 50%) scale(1);\n\n &.is-pressed:not(.is-dragging) {\n transform: translate(-50%, 50%) scale(1.5);\n\n /* 纵向 slider 的长边走高度方向:厚度不变,长边仍是 --wui-slider-thumb-length。 */\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-length, 24px);\n }\n\n &.is-dragging {\n transform: translate(-50%, 50%) scale(1.5);\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-length, 24px);\n }\n}\n\n:host([data-wui-pointer-focus]) .wui-slider-track:focus-visible {\n outline-color: transparent;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/slider/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n touch-action: none;\n display: inline-block;\n width: var(--wui-slider-width, 200px);\n}\n\n:host([vertical]) {\n width: auto;\n height: var(--wui-slider-vertical-height, 200px);\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.wui-slider-a11y-only {\n position: absolute;\n\n overflow: hidden;\n\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n\n white-space: nowrap;\n\n clip-path: inset(50%);\n}\n\n.wui-slider-track {\n touch-action: none;\n cursor: default;\n user-select: none;\n\n position: relative;\n\n width: 100%;\n height: var(--wui-slider-track-size, 6px);\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n\n &:focus-visible {\n outline-color: var(--wui-color-focus-ring, color-mix(in srgb, var(--wui-color-accent, #0071e3) 40%, transparent));\n }\n\n &.is-disabled {\n cursor: not-allowed;\n opacity: 0.38;\n }\n\n &.is-dragging {\n cursor: grabbing;\n }\n}\n\n:host([vertical]) .wui-slider-track {\n touch-action: none;\n width: var(--wui-slider-track-size, 6px);\n height: 100%;\n}\n\n.wui-slider-progress {\n position: absolute;\n z-index: 1;\n top: 0;\n bottom: 0;\n left: 0;\n\n width: var(--percent);\n border-radius: inherit;\n\n background-color: var(--wui-color-accent, #0071e3);\n}\n\n:host([vertical]) .wui-slider-progress {\n top: auto;\n bottom: 0;\n width: 100%;\n height: var(--percent);\n}\n\n.wui-slider-marks {\n pointer-events: none;\n\n position: absolute;\n z-index: 2;\n top: calc(100% + 2px);\n right: var(--wui-slider-marks-inset, 0);\n left: var(--wui-slider-marks-inset, 0);\n\n height: 4px;\n margin-right: 2px;\n margin-left: 2px;\n}\n\n:host([vertical]) .wui-slider-marks {\n top: var(--wui-slider-marks-inset, 0);\n right: auto;\n bottom: var(--wui-slider-marks-inset, 0);\n left: calc(100% + 2px);\n\n width: 4px;\n height: auto;\n margin: 2px 0;\n}\n\n.wui-slider-mark {\n position: absolute;\n top: 0;\n left: var(--percent);\n transform: translateX(-50%);\n\n width: 4px;\n height: 4px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n}\n\n:host([vertical]) .wui-slider-mark {\n top: auto;\n bottom: var(--percent);\n left: 50%;\n transform: translate(-50%, 50%);\n}\n\n.wui-slider-thumb {\n /*\n * thumb 几何:静止态是正圆(直径取厚度 --wui-slider-thumb-thickness),\n * 按压 / 拖拽态沿 track 方向展开成胶囊(长边取 --wui-slider-thumb-length),\n * 与 switch thumb 同一套配方:厚度不变、长度变长。\n * 纵向 slider 把长边放进高度方向,横向放进宽度方向。\n * 描边光影需要有限半径,取厚度的一半:正圆与胶囊两端的圆角都是它。\n */\n --wui-glass-corner-radius: calc(var(--wui-slider-thumb-thickness, 20px) / 2);\n\n cursor: inherit;\n\n position: absolute;\n z-index: 3;\n top: 50%;\n left: var(--percent);\n transform-origin: center center;\n transform: translate(-50%, -50%) scale(1);\n\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-thickness, 20px);\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n transition:\n width var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n height var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n transform var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n background-color var(--wui-duration-press, 80ms) ease,\n box-shadow var(--wui-duration-press, 80ms) ease;\n\n /* 静止态实体白 thumb(wui-glass 恒开仅提供描边/高光,背景被白色覆盖);\n 按压/拖拽时背景转透明让 backdrop blur 透出并放大 1.5x。\n box-shadow 直接写死值(不经自定义属性中转):iOS Safari 对 var 离散切换驱动的\n box-shadow 不触发过渡且可能整体不生效(r2 真机「回退之前」的根因),直接写值\n 后是普通属性变化,transition 正常插值;同时复制 wui-glass 的三条 inset 高光,\n 避免整段覆盖后按压态丢失玻璃描边。 */\n &:not(.is-dragging) {\n background-color: var(--wui-color-on-control, #fff);\n }\n\n &.is-pressed:not(.is-dragging) {\n /* 环底色随按压/拖拽态转 transparent(理由见 menu-portal.css)。 */\n --wui-color-glass-ring: transparent;\n transform: translate(-50%, -50%) scale(1.5);\n\n /* 横向 slider 沿 track 方向展开成胶囊:厚度不变,长边走宽度方向。 */\n width: var(--wui-slider-thumb-length, 24px);\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n\n &.is-dragging {\n --wui-color-glass-ring: transparent;\n cursor: grabbing;\n\n transform: translate(-50%, -50%) scale(1.5);\n\n width: var(--wui-slider-thumb-length, 24px);\n\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n}\n\n:host([vertical]) .wui-slider-thumb {\n top: auto;\n bottom: var(--percent);\n left: 50%;\n transform: translate(-50%, 50%) scale(1);\n\n &.is-pressed:not(.is-dragging) {\n transform: translate(-50%, 50%) scale(1.5);\n\n /* 纵向 slider 的长边走高度方向:厚度不变,长边仍是 --wui-slider-thumb-length。 */\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-length, 24px);\n }\n\n &.is-dragging {\n transform: translate(-50%, 50%) scale(1.5);\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-length, 24px);\n }\n}\n\n:host([data-wui-pointer-focus]) .wui-slider-track:focus-visible {\n outline-color: transparent;\n}\n"],"mappings":";AAAA,IAAA,gBAAA"}
|
|
@@ -1,42 +1,43 @@
|
|
|
1
|
-
import { LitElement, PropertyValues } from
|
|
1
|
+
import { LitElement, PropertyValues } from "lit";
|
|
2
2
|
export declare class WebUiSpinner extends LitElement {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
3
|
+
static styles: import("lit").CSSResult;
|
|
4
|
+
size: number;
|
|
5
|
+
description: string;
|
|
6
|
+
/** 叶片颜色;空字符串时跟随主题次要文本色。 */
|
|
7
|
+
color: string;
|
|
8
|
+
private _ariaLabel?;
|
|
9
|
+
private readonly _overlay;
|
|
10
|
+
private _overlayHandle?;
|
|
11
|
+
private readonly _scrollLock;
|
|
12
|
+
/**
|
|
13
|
+
* 显示一个全屏加载实例并挂载到主题 overlay root(无主题时挂载到 fallback overlay root);新实例会替换之前由此方法创建的实例。
|
|
14
|
+
* @param options 尺寸、说明文字、颜色与可选自动关闭时长。
|
|
15
|
+
* @returns 已挂载的 spinner 实例。
|
|
16
|
+
*/
|
|
17
|
+
static show(options?: {
|
|
18
|
+
size?: number;
|
|
19
|
+
duration?: number;
|
|
20
|
+
description?: string;
|
|
21
|
+
color?: string;
|
|
22
|
+
}): WebUiSpinner;
|
|
23
|
+
static hide(): void;
|
|
24
|
+
/** @internal 当前命令式实例 */
|
|
25
|
+
static _current?: WebUiSpinner;
|
|
26
|
+
/** @internal */
|
|
27
|
+
_imperative: boolean;
|
|
28
|
+
/** @internal */
|
|
29
|
+
_timer?: ReturnType<typeof setTimeout>;
|
|
30
|
+
connectedCallback(): void;
|
|
31
|
+
disconnectedCallback(): void;
|
|
32
|
+
protected updated(props: PropertyValues): void;
|
|
33
|
+
private _syncImperativeOverlay;
|
|
34
|
+
private _handleDialogCancel;
|
|
35
|
+
private _closeDialog;
|
|
36
|
+
render(): import("lit").TemplateResult<1>;
|
|
37
37
|
}
|
|
38
38
|
declare global {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
interface HTMLElementTagNameMap {
|
|
40
|
+
'web-ui-spinner': WebUiSpinner;
|
|
41
|
+
}
|
|
42
42
|
}
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/spinner/index.ts"],"mappings":";qBAgCa,qBAAqB;SAChB,sBAAM;EAEqB;EACf;;EAEA;UACiC;mBAE5C;UAIT;mBACS;;;;;;SAOV,KAAK;IAAY;IAAe;IAAmB;IAAsB;MAAmB;SA6B5F;;SAcA,WAAW;;EAGlB;;EAEA,SAAS,kBAAkB;EAElB;EAiBA;YAgBU,QAAQ,OAAO;UAQ1B;UAaA;UAIA;EAOC,wBAAM;;QA2BT;YACI;IACR,kBAAkB"}
|
|
@@ -1,110 +1,163 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { defineOpenOverlay
|
|
3
|
-
import { getFallbackOverlayRoot
|
|
4
|
-
import { findRootTheme
|
|
5
|
-
import { defineScrollLockLease
|
|
6
|
-
import
|
|
7
|
-
import { LitElement
|
|
8
|
-
import { customElement
|
|
9
|
-
import { styleMap
|
|
10
|
-
import { repeat
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
|
|
2
|
+
import { defineOpenOverlay } from "../../shared/overlay/open-overlay.js";
|
|
3
|
+
import { getFallbackOverlayRoot } from "../../shared/overlay/overlay-root.js";
|
|
4
|
+
import { findRootTheme } from "../../shared/overlay/theme-overlay-scope.js";
|
|
5
|
+
import { defineScrollLockLease } from "../../shared/scroll-lock/scroll-lock.js";
|
|
6
|
+
import style_default from "./style.js";
|
|
7
|
+
import { LitElement, html, nothing, unsafeCSS } from "lit";
|
|
8
|
+
import { customElement, property } from "lit/decorators.js";
|
|
9
|
+
import { styleMap } from "lit/directives/style-map.js";
|
|
10
|
+
import { repeat } from "lit/directives/repeat.js";
|
|
11
|
+
// src/components/spinner/index.ts
|
|
12
|
+
var _WebUiSpinner;
|
|
13
|
+
const LEAF_COUNT = 8;
|
|
14
|
+
function getSpinnerMountTarget() {
|
|
15
|
+
const overlayRoot = findRootTheme()?.getOverlayRoot();
|
|
16
|
+
if (overlayRoot) return { element: overlayRoot };
|
|
17
|
+
const initializingTheme = Array.from(document.querySelectorAll("web-ui-theme")).find((theme) => theme.appearance !== void 0);
|
|
18
|
+
return initializingTheme ? {
|
|
19
|
+
element: initializingTheme,
|
|
20
|
+
initializingTheme
|
|
21
|
+
} : { element: getFallbackOverlayRoot() };
|
|
21
22
|
}
|
|
22
|
-
|
|
23
|
+
let WebUiSpinner = class WebUiSpinner extends LitElement {
|
|
23
24
|
static {
|
|
24
|
-
|
|
25
|
+
_WebUiSpinner = this;
|
|
25
26
|
}
|
|
26
|
-
constructor(...
|
|
27
|
-
super(...
|
|
27
|
+
constructor(..._args) {
|
|
28
|
+
super(..._args);
|
|
29
|
+
this.size = 24;
|
|
30
|
+
this.description = "";
|
|
31
|
+
this.color = "";
|
|
32
|
+
this._overlay = defineOpenOverlay().make({
|
|
28
33
|
requestClose: () => void 0,
|
|
29
34
|
isConnected: () => this.isConnected
|
|
30
|
-
})
|
|
35
|
+
});
|
|
36
|
+
this._scrollLock = defineScrollLockLease().make();
|
|
37
|
+
this._imperative = false;
|
|
31
38
|
}
|
|
32
39
|
static {
|
|
33
|
-
this.styles =
|
|
40
|
+
this.styles = unsafeCSS(style_default);
|
|
34
41
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
/**
|
|
43
|
+
* 显示一个全屏加载实例并挂载到主题 overlay root(无主题时挂载到 fallback overlay root);新实例会替换之前由此方法创建的实例。
|
|
44
|
+
* @param options 尺寸、说明文字、颜色与可选自动关闭时长。
|
|
45
|
+
* @returns 已挂载的 spinner 实例。
|
|
46
|
+
*/
|
|
47
|
+
static show(options) {
|
|
48
|
+
const el = document.createElement("web-ui-spinner");
|
|
49
|
+
el._imperative = true;
|
|
50
|
+
if (options?.size) el.size = options.size;
|
|
51
|
+
if (options?.description) el.description = options.description;
|
|
52
|
+
if (options?.color !== void 0) el.color = options.color;
|
|
53
|
+
const mountTarget = getSpinnerMountTarget();
|
|
54
|
+
mountTarget.element.appendChild(el);
|
|
55
|
+
if (mountTarget.initializingTheme) {
|
|
56
|
+
const theme = mountTarget.initializingTheme;
|
|
57
|
+
const moveIntoOverlayRoot = () => {
|
|
58
|
+
const overlayRoot = theme.getOverlayRoot();
|
|
59
|
+
if (overlayRoot && theme.isConnected && el.parentElement === theme) overlayRoot.appendChild(el);
|
|
43
60
|
};
|
|
44
|
-
|
|
45
|
-
|
|
61
|
+
theme.updateComplete.then(() => {
|
|
62
|
+
moveIntoOverlayRoot();
|
|
63
|
+
if (el.parentElement === theme) window.requestAnimationFrame(moveIntoOverlayRoot);
|
|
46
64
|
}, () => void 0);
|
|
47
65
|
}
|
|
48
|
-
|
|
66
|
+
if (options?.duration && options.duration > 0) el._timer = window.setTimeout(() => _WebUiSpinner.hide(), options.duration);
|
|
67
|
+
return el;
|
|
49
68
|
}
|
|
50
69
|
static hide() {
|
|
51
|
-
|
|
52
|
-
|
|
70
|
+
const current = _WebUiSpinner._current;
|
|
71
|
+
if (!current) return;
|
|
72
|
+
if (current._timer) {
|
|
73
|
+
clearTimeout(current._timer);
|
|
74
|
+
current._timer = void 0;
|
|
75
|
+
}
|
|
76
|
+
current._closeDialog();
|
|
77
|
+
current.remove();
|
|
78
|
+
if (_WebUiSpinner._current === current) _WebUiSpinner._current = void 0;
|
|
53
79
|
}
|
|
54
80
|
connectedCallback() {
|
|
55
|
-
super.connectedCallback()
|
|
81
|
+
super.connectedCallback();
|
|
82
|
+
if (!this.hasAttribute("role")) this.setAttribute("role", "status");
|
|
83
|
+
if (!this.hasAttribute("aria-label")) this.setAttribute("aria-label", "Loading");
|
|
84
|
+
if (this._imperative) {
|
|
85
|
+
if (_WebUiSpinner._current && _WebUiSpinner._current !== this) _WebUiSpinner._current.remove();
|
|
86
|
+
_WebUiSpinner._current = this;
|
|
87
|
+
this.classList.add("wui-spinner-overlay");
|
|
88
|
+
this._scrollLock.sync(true);
|
|
89
|
+
this.requestUpdate();
|
|
90
|
+
}
|
|
56
91
|
}
|
|
57
92
|
disconnectedCallback() {
|
|
58
|
-
|
|
59
|
-
|
|
93
|
+
super.disconnectedCallback();
|
|
94
|
+
this._closeDialog();
|
|
95
|
+
this._overlayHandle?.release();
|
|
96
|
+
this._overlayHandle = void 0;
|
|
97
|
+
this._scrollLock.release();
|
|
98
|
+
if (this._timer) {
|
|
99
|
+
const timer = this._timer;
|
|
60
100
|
queueMicrotask(() => {
|
|
61
|
-
this.isConnected || this._timer !==
|
|
101
|
+
if (this.isConnected || this._timer !== timer) return;
|
|
102
|
+
clearTimeout(timer);
|
|
103
|
+
this._timer = void 0;
|
|
62
104
|
});
|
|
63
105
|
}
|
|
64
106
|
}
|
|
65
|
-
updated(
|
|
66
|
-
super.updated(
|
|
107
|
+
updated(props) {
|
|
108
|
+
super.updated(props);
|
|
109
|
+
this._syncImperativeOverlay();
|
|
110
|
+
if (props.has("size")) this.style.setProperty("--wui-spinner-size", `${this.size}px`);
|
|
67
111
|
}
|
|
68
112
|
_syncImperativeOverlay() {
|
|
69
113
|
if (!this._imperative || !this.isConnected) return;
|
|
70
|
-
|
|
71
|
-
|
|
114
|
+
const dialog = this.shadowRoot?.querySelector("dialog");
|
|
115
|
+
if (!dialog || dialog.open) return;
|
|
116
|
+
if (typeof dialog.showModal === "function") {
|
|
117
|
+
dialog.showModal();
|
|
118
|
+
this._overlayHandle = this._overlay.claim(dialog, { ancestryFrom: this });
|
|
119
|
+
} else dialog.setAttribute("open", "");
|
|
72
120
|
}
|
|
73
|
-
_handleDialogCancel(
|
|
74
|
-
|
|
121
|
+
_handleDialogCancel(event) {
|
|
122
|
+
event.preventDefault();
|
|
75
123
|
}
|
|
76
124
|
_closeDialog() {
|
|
77
|
-
|
|
78
|
-
|
|
125
|
+
const dialog = this.shadowRoot?.querySelector("dialog");
|
|
126
|
+
if (!dialog?.open) return;
|
|
127
|
+
if (typeof dialog.close === "function") dialog.close();
|
|
128
|
+
else dialog.removeAttribute("open");
|
|
79
129
|
}
|
|
80
130
|
render() {
|
|
81
|
-
|
|
82
|
-
<div class="wui-spinner" style=${
|
|
83
|
-
${
|
|
84
|
-
style="transform:rotate(${
|
|
131
|
+
const spinner = html`
|
|
132
|
+
<div class="wui-spinner" style=${styleMap({ color: this.color || void 0 })}>
|
|
133
|
+
${repeat(Array.from({ length: LEAF_COUNT }, (_, i) => i), (i) => html`<span
|
|
134
|
+
style="transform:rotate(${i * 45}deg);animation-delay:calc(-${LEAF_COUNT - i} / ${LEAF_COUNT} * var(--wui-duration-spinner, 800ms))"
|
|
85
135
|
></span>`)}
|
|
86
136
|
</div>
|
|
87
|
-
${this.description ?
|
|
137
|
+
${this.description ? html`<div class="spinner-description">${this.description}</div>` : nothing}
|
|
88
138
|
<slot name="description"></slot>
|
|
89
139
|
`;
|
|
90
|
-
return this._imperative ?
|
|
140
|
+
return this._imperative ? html`<dialog
|
|
91
141
|
class="wui-spinner-overlay"
|
|
92
142
|
aria-label=${this._ariaLabel}
|
|
93
143
|
aria-modal="true"
|
|
94
144
|
@cancel=${this._handleDialogCancel}
|
|
95
145
|
>
|
|
96
|
-
<div class="wui-spinner-overlay-content" role="status" aria-label=${this._ariaLabel}>${
|
|
97
|
-
</dialog>` :
|
|
146
|
+
<div class="wui-spinner-overlay-content" role="status" aria-label=${this._ariaLabel}>${spinner}</div>
|
|
147
|
+
</dialog>` : spinner;
|
|
98
148
|
}
|
|
99
149
|
};
|
|
100
|
-
|
|
150
|
+
__decorate([property({
|
|
101
151
|
type: Number,
|
|
102
|
-
reflect:
|
|
103
|
-
})],
|
|
152
|
+
reflect: true
|
|
153
|
+
})], WebUiSpinner.prototype, "size", void 0);
|
|
154
|
+
__decorate([property({ type: String })], WebUiSpinner.prototype, "description", void 0);
|
|
155
|
+
__decorate([property({ type: String })], WebUiSpinner.prototype, "color", void 0);
|
|
156
|
+
__decorate([property({
|
|
104
157
|
type: String,
|
|
105
158
|
attribute: "aria-label"
|
|
106
|
-
})],
|
|
107
|
-
|
|
108
|
-
export {
|
|
159
|
+
})], WebUiSpinner.prototype, "_ariaLabel", void 0);
|
|
160
|
+
WebUiSpinner = _WebUiSpinner = __decorate([customElement("web-ui-spinner")], WebUiSpinner);
|
|
161
|
+
export { WebUiSpinner };
|
|
109
162
|
|
|
110
163
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/spinner/index.ts"],"sourcesContent":["import { html, LitElement, nothing, type PropertyValues, unsafeCSS } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport type { WebUiTheme } from '@/components/theme'\nimport { defineOpenOverlay, type OpenOverlayHandle } from '@/shared/overlay/open-overlay'\nimport { getFallbackOverlayRoot } from '@/shared/overlay/overlay-root'\nimport { findRootTheme } from '@/shared/overlay/theme-overlay-scope'\nimport { defineScrollLockLease } from '@/shared/scroll-lock/scroll-lock'\n\nimport style from './style.css?inline'\n\nconst LEAF_COUNT = 8\n\ntype SpinnerMountTarget = {\n element: HTMLElement\n initializingTheme?: WebUiTheme\n}\n\nfunction getSpinnerMountTarget(): SpinnerMountTarget {\n const rootTheme = findRootTheme()\n const overlayRoot = rootTheme?.getOverlayRoot()\n if (overlayRoot) return { element: overlayRoot }\n\n const initializingTheme = Array.from(document.querySelectorAll<WebUiTheme>('web-ui-theme')).find(\n theme => theme.appearance !== undefined\n )\n return initializingTheme ? { element: initializingTheme, initializingTheme } : { element: getFallbackOverlayRoot() }\n}\n\n@customElement('web-ui-spinner')\nexport class WebUiSpinner extends LitElement {\n static override styles = unsafeCSS(style)\n\n @property({ type: Number, reflect: true }) size = 24\n @property({ type: String }) description = ''\n /** 叶片颜色;空字符串时跟随主题次要文本色。 */\n @property({ type: String }) color = ''\n @property({ type: String, attribute: 'aria-label' }) private _ariaLabel?: string\n\n private readonly _overlay = defineOpenOverlay().make({\n requestClose: () => undefined,\n isConnected: () => this.isConnected\n })\n private _overlayHandle?: OpenOverlayHandle\n private readonly _scrollLock = defineScrollLockLease().make()\n\n /**\n * 显示一个全屏加载实例并挂载到主题 overlay root(无主题时挂载到 fallback overlay root);新实例会替换之前由此方法创建的实例。\n * @param options 尺寸、说明文字、颜色与可选自动关闭时长。\n * @returns 已挂载的 spinner 实例。\n */\n static show(options?: { size?: number; duration?: number; description?: string; color?: string }): WebUiSpinner {\n const el = document.createElement('web-ui-spinner')\n el._imperative = true\n if (options?.size) el.size = options.size\n if (options?.description) el.description = options.description\n if (options?.color !== undefined) el.color = options.color\n const mountTarget = getSpinnerMountTarget()\n mountTarget.element.appendChild(el)\n if (mountTarget.initializingTheme) {\n const theme = mountTarget.initializingTheme\n const moveIntoOverlayRoot = () => {\n const overlayRoot = theme.getOverlayRoot()\n if (overlayRoot && theme.isConnected && el.parentElement === theme) overlayRoot.appendChild(el)\n }\n void theme.updateComplete.then(\n () => {\n moveIntoOverlayRoot()\n if (el.parentElement === theme) window.requestAnimationFrame(moveIntoOverlayRoot)\n },\n () => undefined\n )\n }\n if (options?.duration && options.duration > 0) {\n el._timer = window.setTimeout(() => WebUiSpinner.hide(), options.duration)\n }\n return el\n }\n\n // 销毁由 show() 挂载的实例。\n static hide() {\n const current = WebUiSpinner._current\n if (!current) return\n\n if (current._timer) {\n clearTimeout(current._timer)\n current._timer = undefined\n }\n current._closeDialog()\n current.remove()\n if (WebUiSpinner._current === current) WebUiSpinner._current = undefined\n }\n\n /** @internal 当前命令式实例 */\n static _current?: WebUiSpinner\n\n /** @internal */\n _imperative = false\n /** @internal */\n _timer?: ReturnType<typeof setTimeout>\n\n override connectedCallback() {\n super.connectedCallback()\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'status')\n }\n if (!this.hasAttribute('aria-label')) {\n this.setAttribute('aria-label', 'Loading')\n }\n if (this._imperative) {\n if (WebUiSpinner._current && WebUiSpinner._current !== this) WebUiSpinner._current.remove()\n WebUiSpinner._current = this\n this.classList.add('wui-spinner-overlay')\n this._scrollLock.sync(true)\n this.requestUpdate()\n }\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback()\n this._closeDialog()\n this._overlayHandle?.release()\n this._overlayHandle = undefined\n this._scrollLock.release()\n if (this._timer) {\n const timer = this._timer\n queueMicrotask(() => {\n if (this.isConnected || this._timer !== timer) return\n clearTimeout(timer)\n this._timer = undefined\n })\n }\n }\n\n protected override updated(props: PropertyValues) {\n super.updated(props)\n this._syncImperativeOverlay()\n if (props.has('size')) {\n this.style.setProperty('--wui-spinner-size', `${this.size}px`)\n }\n }\n\n private _syncImperativeOverlay() {\n if (!this._imperative || !this.isConnected) return\n const dialog = this.shadowRoot?.querySelector('dialog')\n if (!dialog || dialog.open) return\n\n if (typeof dialog.showModal === 'function') {\n dialog.showModal()\n this._overlayHandle = this._overlay.claim(dialog, { ancestryFrom: this })\n } else {\n dialog.setAttribute('open', '')\n }\n }\n\n private _handleDialogCancel(event: Event) {\n event.preventDefault()\n }\n\n private _closeDialog() {\n const dialog = this.shadowRoot?.querySelector('dialog')\n if (!dialog?.open) return\n if (typeof dialog.close === 'function') dialog.close()\n else dialog.removeAttribute('open')\n }\n\n override render() {\n const spinner = html`\n <div class=\"wui-spinner\" style=${styleMap({ color: this.color || undefined })}>\n ${repeat(\n Array.from({ length: LEAF_COUNT }, (_, i) => i),\n i =>\n html`<span\n style=\"transform:rotate(${i * 45}deg);animation-delay:calc(-${LEAF_COUNT - i} / ${LEAF_COUNT} * var(--wui-duration-spinner, 800ms))\"\n ></span>`\n )}\n </div>\n ${this.description ? html`<div class=\"spinner-description\">${this.description}</div>` : nothing}\n <slot name=\"description\"></slot>\n `\n return this._imperative\n ? html`<dialog\n class=\"wui-spinner-overlay\"\n aria-label=${this._ariaLabel}\n aria-modal=\"true\"\n @cancel=${this._handleDialogCancel}\n >\n <div class=\"wui-spinner-overlay-content\" role=\"status\" aria-label=${this._ariaLabel}>${spinner}</div>\n </dialog>`\n : spinner\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-spinner': WebUiSpinner\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["style"],"sources":["../../../src/components/spinner/index.ts"],"sourcesContent":["import { html, LitElement, nothing, type PropertyValues, unsafeCSS } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport type { WebUiTheme } from '@/components/theme'\nimport { defineOpenOverlay, type OpenOverlayHandle } from '@/shared/overlay/open-overlay'\nimport { getFallbackOverlayRoot } from '@/shared/overlay/overlay-root'\nimport { findRootTheme } from '@/shared/overlay/theme-overlay-scope'\nimport { defineScrollLockLease } from '@/shared/scroll-lock/scroll-lock'\n\nimport style from './style.css?inline'\n\nconst LEAF_COUNT = 8\n\ntype SpinnerMountTarget = {\n element: HTMLElement\n initializingTheme?: WebUiTheme\n}\n\nfunction getSpinnerMountTarget(): SpinnerMountTarget {\n const rootTheme = findRootTheme()\n const overlayRoot = rootTheme?.getOverlayRoot()\n if (overlayRoot) return { element: overlayRoot }\n\n const initializingTheme = Array.from(document.querySelectorAll<WebUiTheme>('web-ui-theme')).find(\n theme => theme.appearance !== undefined\n )\n return initializingTheme ? { element: initializingTheme, initializingTheme } : { element: getFallbackOverlayRoot() }\n}\n\n@customElement('web-ui-spinner')\nexport class WebUiSpinner extends LitElement {\n static override styles = unsafeCSS(style)\n\n @property({ type: Number, reflect: true }) size = 24\n @property({ type: String }) description = ''\n /** 叶片颜色;空字符串时跟随主题次要文本色。 */\n @property({ type: String }) color = ''\n @property({ type: String, attribute: 'aria-label' }) private _ariaLabel?: string\n\n private readonly _overlay = defineOpenOverlay().make({\n requestClose: () => undefined,\n isConnected: () => this.isConnected\n })\n private _overlayHandle?: OpenOverlayHandle\n private readonly _scrollLock = defineScrollLockLease().make()\n\n /**\n * 显示一个全屏加载实例并挂载到主题 overlay root(无主题时挂载到 fallback overlay root);新实例会替换之前由此方法创建的实例。\n * @param options 尺寸、说明文字、颜色与可选自动关闭时长。\n * @returns 已挂载的 spinner 实例。\n */\n static show(options?: { size?: number; duration?: number; description?: string; color?: string }): WebUiSpinner {\n const el = document.createElement('web-ui-spinner')\n el._imperative = true\n if (options?.size) el.size = options.size\n if (options?.description) el.description = options.description\n if (options?.color !== undefined) el.color = options.color\n const mountTarget = getSpinnerMountTarget()\n mountTarget.element.appendChild(el)\n if (mountTarget.initializingTheme) {\n const theme = mountTarget.initializingTheme\n const moveIntoOverlayRoot = () => {\n const overlayRoot = theme.getOverlayRoot()\n if (overlayRoot && theme.isConnected && el.parentElement === theme) overlayRoot.appendChild(el)\n }\n void theme.updateComplete.then(\n () => {\n moveIntoOverlayRoot()\n if (el.parentElement === theme) window.requestAnimationFrame(moveIntoOverlayRoot)\n },\n () => undefined\n )\n }\n if (options?.duration && options.duration > 0) {\n el._timer = window.setTimeout(() => WebUiSpinner.hide(), options.duration)\n }\n return el\n }\n\n // 销毁由 show() 挂载的实例。\n static hide() {\n const current = WebUiSpinner._current\n if (!current) return\n\n if (current._timer) {\n clearTimeout(current._timer)\n current._timer = undefined\n }\n current._closeDialog()\n current.remove()\n if (WebUiSpinner._current === current) WebUiSpinner._current = undefined\n }\n\n /** @internal 当前命令式实例 */\n static _current?: WebUiSpinner\n\n /** @internal */\n _imperative = false\n /** @internal */\n _timer?: ReturnType<typeof setTimeout>\n\n override connectedCallback() {\n super.connectedCallback()\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'status')\n }\n if (!this.hasAttribute('aria-label')) {\n this.setAttribute('aria-label', 'Loading')\n }\n if (this._imperative) {\n if (WebUiSpinner._current && WebUiSpinner._current !== this) WebUiSpinner._current.remove()\n WebUiSpinner._current = this\n this.classList.add('wui-spinner-overlay')\n this._scrollLock.sync(true)\n this.requestUpdate()\n }\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback()\n this._closeDialog()\n this._overlayHandle?.release()\n this._overlayHandle = undefined\n this._scrollLock.release()\n if (this._timer) {\n const timer = this._timer\n queueMicrotask(() => {\n if (this.isConnected || this._timer !== timer) return\n clearTimeout(timer)\n this._timer = undefined\n })\n }\n }\n\n protected override updated(props: PropertyValues) {\n super.updated(props)\n this._syncImperativeOverlay()\n if (props.has('size')) {\n this.style.setProperty('--wui-spinner-size', `${this.size}px`)\n }\n }\n\n private _syncImperativeOverlay() {\n if (!this._imperative || !this.isConnected) return\n const dialog = this.shadowRoot?.querySelector('dialog')\n if (!dialog || dialog.open) return\n\n if (typeof dialog.showModal === 'function') {\n dialog.showModal()\n this._overlayHandle = this._overlay.claim(dialog, { ancestryFrom: this })\n } else {\n dialog.setAttribute('open', '')\n }\n }\n\n private _handleDialogCancel(event: Event) {\n event.preventDefault()\n }\n\n private _closeDialog() {\n const dialog = this.shadowRoot?.querySelector('dialog')\n if (!dialog?.open) return\n if (typeof dialog.close === 'function') dialog.close()\n else dialog.removeAttribute('open')\n }\n\n override render() {\n const spinner = html`\n <div class=\"wui-spinner\" style=${styleMap({ color: this.color || undefined })}>\n ${repeat(\n Array.from({ length: LEAF_COUNT }, (_, i) => i),\n i =>\n html`<span\n style=\"transform:rotate(${i * 45}deg);animation-delay:calc(-${LEAF_COUNT - i} / ${LEAF_COUNT} * var(--wui-duration-spinner, 800ms))\"\n ></span>`\n )}\n </div>\n ${this.description ? html`<div class=\"spinner-description\">${this.description}</div>` : nothing}\n <slot name=\"description\"></slot>\n `\n return this._imperative\n ? html`<dialog\n class=\"wui-spinner-overlay\"\n aria-label=${this._ariaLabel}\n aria-modal=\"true\"\n @cancel=${this._handleDialogCancel}\n >\n <div class=\"wui-spinner-overlay-content\" role=\"status\" aria-label=${this._ariaLabel}>${spinner}</div>\n </dialog>`\n : spinner\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-spinner': WebUiSpinner\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
export { e as default };
|
|
1
|
+
// src/components/spinner/style.css?inline
|
|
2
|
+
var style_default = "*,:before,:after{box-sizing:border-box}:host{color:var(--wui-color-text-secondary,#6a6a6a);justify-content:center;align-items:center;display:inline-flex}:host(.wui-spinner-overlay){display:contents}.wui-spinner{width:var(--wui-spinner-size,24px);height:var(--wui-spinner-size,24px);position:relative}.wui-spinner span{transform-origin:50%;width:10%;height:100%;animation:wui-spinner-leaf-fade var(--wui-duration-spinner,.8s) linear infinite;position:absolute;top:0;left:50%}.wui-spinner span:before{content:\"\";border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:currentColor;width:100%;height:30%;margin-top:12%;display:block}.wui-spinner-overlay{pointer-events:auto;z-index:var(--wui-layer-loading,300);width:100%;max-width:none;height:100%;max-height:none;color:inherit;background:0 0;border:0;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:fixed;inset:0;overflow:hidden}.wui-spinner-overlay::backdrop{background:0 0}.wui-spinner-overlay-content{gap:var(--wui-space-2,8px);flex-direction:column;justify-content:center;align-items:center;display:flex}.spinner-description{max-width:240px;font-size:var(--wui-font-size,14px);line-height:var(--wui-line-height-normal,1.5);color:var(--wui-color-text-secondary,#6a6a6a);text-align:center}@keyframes wui-spinner-leaf-fade{0%{opacity:1}to{opacity:0}}\n";
|
|
3
|
+
export { style_default as default };
|
|
5
4
|
|
|
6
5
|
//# sourceMappingURL=style.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/spinner/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--wui-color-text-secondary, #6a6a6a);\n}\n\n:host(.wui-spinner-overlay) {\n display: contents;\n}\n\n.wui-spinner {\n position: relative;\n width: var(--wui-spinner-size, 24px);\n height: var(--wui-spinner-size, 24px);\n\n span {\n position: absolute;\n top: 0;\n left: 50%;\n transform-origin: center center;\n\n width: 10%;\n height: 100%;\n\n animation: wui-spinner-leaf-fade var(--wui-duration-spinner, 800ms) linear infinite;\n\n &::before {\n content: '';\n\n display: block;\n\n width: 100%;\n height: 30%;\n margin-top: 12%;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: currentcolor;\n }\n }\n}\n\n.wui-spinner-overlay {\n pointer-events: auto;\n\n position: fixed;\n z-index: var(--wui-layer-loading, 300);\n inset: 0;\n\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 100%;\n max-width: none;\n height: 100%;\n max-height: none;\n margin: 0;\n padding: 0;\n border: 0;\n\n color: inherit;\n\n background: transparent;\n\n &::backdrop {\n background: transparent;\n }\n}\n\n.wui-spinner-overlay-content {\n display: flex;\n flex-direction: column;\n gap: var(--wui-space-2, 8px);\n align-items: center;\n justify-content: center;\n}\n\n.spinner-description {\n max-width: 240px;\n\n font-size: var(--wui-font-size, 14px);\n line-height: var(--wui-line-height-normal, 1.5);\n color: var(--wui-color-text-secondary, #6a6a6a);\n text-align: center;\n}\n\n@keyframes wui-spinner-leaf-fade {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"style.js","names":[],"sources":["../../../src/components/spinner/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--wui-color-text-secondary, #6a6a6a);\n}\n\n:host(.wui-spinner-overlay) {\n display: contents;\n}\n\n.wui-spinner {\n position: relative;\n width: var(--wui-spinner-size, 24px);\n height: var(--wui-spinner-size, 24px);\n\n span {\n position: absolute;\n top: 0;\n left: 50%;\n transform-origin: center center;\n\n width: 10%;\n height: 100%;\n\n animation: wui-spinner-leaf-fade var(--wui-duration-spinner, 800ms) linear infinite;\n\n &::before {\n content: '';\n\n display: block;\n\n width: 100%;\n height: 30%;\n margin-top: 12%;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: currentcolor;\n }\n }\n}\n\n.wui-spinner-overlay {\n pointer-events: auto;\n\n position: fixed;\n z-index: var(--wui-layer-loading, 300);\n inset: 0;\n\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 100%;\n max-width: none;\n height: 100%;\n max-height: none;\n margin: 0;\n padding: 0;\n border: 0;\n\n color: inherit;\n\n background: transparent;\n\n &::backdrop {\n background: transparent;\n }\n}\n\n.wui-spinner-overlay-content {\n display: flex;\n flex-direction: column;\n gap: var(--wui-space-2, 8px);\n align-items: center;\n justify-content: center;\n}\n\n.spinner-description {\n max-width: 240px;\n\n font-size: var(--wui-font-size, 14px);\n line-height: var(--wui-line-height-normal, 1.5);\n color: var(--wui-color-text-secondary, #6a6a6a);\n text-align: center;\n}\n\n@keyframes wui-spinner-leaf-fade {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n"],"mappings":";AAAA,IAAA,gBAAA"}
|