@vuetify/nightly 3.6.13-3.7.0-beta.0.0-pr-20092.dc840ce → 3.6.13-pr-20185.5bf1ff4
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/dist/json/attributes.json +125 -273
- package/dist/json/importMap-labs.json +12 -12
- package/dist/json/importMap.json +102 -102
- package/dist/json/tags.json +5 -42
- package/dist/json/web-types.json +239 -610
- package/dist/vuetify-labs.css +4045 -3340
- package/dist/vuetify-labs.d.ts +368 -697
- package/dist/vuetify-labs.esm.js +236 -241
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +236 -241
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +1754 -1049
- package/dist/vuetify.d.ts +338 -601
- package/dist/vuetify.esm.js +97 -160
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +97 -160
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1038 -1037
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.css +5 -1
- package/lib/components/VAppBar/index.d.mts +0 -6
- package/lib/components/VAutocomplete/VAutocomplete.css +4 -0
- package/lib/components/VAutocomplete/VAutocomplete.mjs +8 -15
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +42 -61
- package/lib/components/VAvatar/VAvatar.css +2 -7
- package/lib/components/VAvatar/VAvatar.mjs +2 -7
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VAvatar/VAvatar.sass +0 -1
- package/lib/components/VAvatar/_variables.scss +0 -13
- package/lib/components/VAvatar/index.d.mts +0 -6
- package/lib/components/VBadge/VBadge.css +2 -0
- package/lib/components/VBanner/VBanner.css +12 -4
- package/lib/components/VBottomNavigation/VBottomNavigation.css +11 -3
- package/lib/components/VBottomSheet/VBottomSheet.css +2 -0
- package/lib/components/VBreadcrumbs/index.d.mts +8 -8
- package/lib/components/VBtn/VBtn.css +16 -9
- package/lib/components/VBtn/VBtn.mjs +2 -4
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.sass +4 -4
- package/lib/components/VBtn/index.d.mts +0 -6
- package/lib/components/VBtnGroup/VBtnGroup.css +12 -4
- package/lib/components/VCard/VCard.css +9 -1
- package/lib/components/VCarousel/VCarousel.css +2 -0
- package/lib/components/VCarousel/index.d.mts +0 -9
- package/lib/components/VCheckbox/index.d.mts +6 -6
- package/lib/components/VChip/VChip.css +15 -9
- package/lib/components/VChip/VChip.sass +1 -1
- package/lib/components/VColorPicker/VColorPicker.css +2 -0
- package/lib/components/VColorPicker/VColorPicker.sass +4 -4
- package/lib/components/VColorPicker/VColorPickerPreview.sass +4 -4
- package/lib/components/VCombobox/VCombobox.css +4 -0
- package/lib/components/VCombobox/VCombobox.mjs +8 -15
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.mts +42 -61
- package/lib/components/VDataTable/composables/options.mjs +1 -1
- package/lib/components/VDataTable/composables/options.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.css +5 -0
- package/lib/components/VDialog/index.d.mts +3 -3
- package/lib/components/VDivider/VDivider.css +2 -0
- package/lib/components/VExpansionPanel/VExpansionPanel.css +11 -5
- package/lib/components/VExpansionPanel/VExpansionPanel.sass +3 -3
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +2 -7
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.d.mts +0 -72
- package/lib/components/VFab/index.d.mts +0 -6
- package/lib/components/VField/VField.css +13 -1
- package/lib/components/VField/VField.sass +5 -8
- package/lib/components/VFileInput/index.d.mts +18 -18
- package/lib/components/VFooter/VFooter.css +12 -4
- package/lib/components/VFooter/VFooter.mjs +20 -14
- package/lib/components/VFooter/VFooter.mjs.map +1 -1
- package/lib/components/VFooter/index.d.mts +3 -3
- package/lib/components/VForm/index.d.mts +9 -9
- package/lib/components/VGrid/VContainer.mjs +1 -6
- package/lib/components/VGrid/VContainer.mjs.map +1 -1
- package/lib/components/VGrid/VGrid.sass +1 -1
- package/lib/components/VGrid/_mixins.sass +4 -4
- package/lib/components/VGrid/index.d.mts +0 -36
- package/lib/components/VImg/VImg.css +6 -9
- package/lib/components/VImg/VImg.mjs +0 -2
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/VImg.sass +0 -9
- package/lib/components/VImg/index.d.mts +0 -9
- package/lib/components/VInput/index.d.mts +6 -6
- package/lib/components/VKbd/VKbd.css +2 -0
- package/lib/components/VList/VList.css +12 -4
- package/lib/components/VList/VListItem.css +23 -13
- package/lib/components/VList/VListItem.mjs +0 -2
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +2 -2
- package/lib/components/VList/index.d.mts +18 -19
- package/lib/components/VMain/VMain.css +2 -0
- package/lib/components/VMenu/VMenu.css +6 -0
- package/lib/components/VMenu/VMenu.mjs +6 -27
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/index.d.mts +15 -30
- package/lib/components/VNavigationDrawer/VNavigationDrawer.css +9 -3
- package/lib/components/VOtpInput/VOtpInput.css +3 -1
- package/lib/components/VOtpInput/VOtpInput.sass +1 -2
- package/lib/components/VOverflowBtn/VOverflowBtn.sass +1 -1
- package/lib/components/VOverlay/VOverlay.mjs +4 -5
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +2 -3
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VRadioGroup/index.d.mts +6 -6
- package/lib/components/VRangeSlider/index.d.mts +6 -6
- package/lib/components/VSelect/VSelect.css +4 -0
- package/lib/components/VSelect/VSelect.mjs +13 -15
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +42 -61
- package/lib/components/VSelect/useScrolling.mjs +3 -3
- package/lib/components/VSelect/useScrolling.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.css +6 -4
- package/lib/components/VSelectionControl/VSelectionControl.sass +1 -1
- package/lib/components/VSheet/VSheet.css +12 -4
- package/lib/components/VSkeletonLoader/VSkeletonLoader.css +6 -4
- package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +9 -8
- package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
- package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +1 -2
- package/lib/components/VSlideGroup/VSlideGroup.mjs +1 -3
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/index.d.mts +0 -6
- package/lib/components/VSlider/VSliderThumb.sass +2 -2
- package/lib/components/VSlider/index.d.mts +6 -6
- package/lib/components/VSnackbar/VSnackbar.css +2 -0
- package/lib/components/VSnackbar/VSnackbar.mjs +4 -4
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/index.d.mts +3 -3
- package/lib/components/VSpeedDial/index.d.mts +13 -28
- package/lib/components/VStepper/VStepper.css +8 -2
- package/lib/components/VStepper/VStepper.sass +2 -4
- package/lib/components/VStepper/VStepperItem.css +4 -1
- package/lib/components/VStepper/VStepperItem.sass +1 -1
- package/lib/components/VSwitch/VSwitch.css +2 -0
- package/lib/components/VSwitch/VSwitch.sass +10 -10
- package/lib/components/VSwitch/index.d.mts +6 -6
- package/lib/components/VSystemBar/VSystemBar.css +14 -8
- package/lib/components/VTable/VTable.css +8 -4
- package/lib/components/VTable/VTable.sass +2 -3
- package/lib/components/VTabs/index.d.mts +3 -21
- package/lib/components/VTextField/index.d.mts +18 -18
- package/lib/components/VTextarea/index.d.mts +18 -18
- package/lib/components/VTimeline/VTimeline.css +2 -0
- package/lib/components/VToolbar/VToolbar.css +21 -7
- package/lib/components/VToolbar/VToolbar.sass +1 -2
- package/lib/components/VTooltip/index.d.mts +3 -3
- package/lib/components/VTreeview/VTreeview.sass +9 -9
- package/lib/components/VValidation/index.d.mts +8 -9
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs +0 -2
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/components/VVirtualScroll/index.d.mts +0 -3
- package/lib/components/index.d.mts +302 -565
- package/lib/composables/nested/nested.mjs +3 -3
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/openStrategies.mjs +2 -4
- package/lib/composables/nested/openStrategies.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs +5 -5
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/validation.mjs +6 -8
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/composables/virtual.mjs +0 -1
- package/lib/composables/virtual.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.mts +36 -36
- package/lib/labs/VDateInput/index.d.mts +6 -6
- package/lib/labs/VNumberInput/VNumberInput.mjs +60 -36
- package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
- package/lib/labs/VNumberInput/index.d.mts +23 -14
- package/lib/labs/VPicker/VPicker.css +6 -2
- package/lib/labs/VPicker/VPicker.sass +2 -3
- package/lib/labs/VSnackbarQueue/index.d.mts +3 -3
- package/lib/labs/VStepperVertical/index.d.mts +0 -36
- package/lib/labs/VTreeview/VTreeview.mjs +5 -7
- package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
- package/lib/labs/VTreeview/VTreeviewChildren.mjs +10 -33
- package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
- package/lib/labs/VTreeview/VTreeviewItem.css +1 -1
- package/lib/labs/VTreeview/VTreeviewItem.mjs +74 -14
- package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
- package/lib/labs/VTreeview/VTreeviewItem.sass +5 -2
- package/lib/labs/VTreeview/index.d.mts +60 -77
- package/lib/labs/components.d.mts +92 -136
- package/lib/styles/generic/_colors.scss +9 -3
- package/lib/styles/main.css +520 -0
- package/lib/styles/tools/_absolute.sass +8 -7
- package/lib/styles/tools/_border.sass +4 -3
- package/lib/styles/tools/_display.sass +8 -7
- package/lib/styles/tools/_elevation.sass +4 -2
- package/lib/styles/tools/_index.sass +0 -1
- package/lib/styles/tools/_radius.sass +6 -5
- package/lib/styles/tools/_rounded.sass +2 -1
- package/lib/styles/tools/_theme.sass +3 -2
- package/lib/styles/tools/_typography.sass +6 -5
- package/lib/styles/tools/_utilities.sass +5 -5
- package/lib/styles/utilities/_index.sass +7 -7
- package/lib/util/helpers.mjs +0 -5
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +1 -1
- package/lib/styles/tools/_sheet.sass +0 -14
package/lib/index.d.mts
CHANGED
@@ -468,37 +468,38 @@ interface _GlobalComponents {
|
|
468
468
|
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
469
469
|
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
470
470
|
VApp: typeof import('vuetify/components')['VApp']
|
471
|
-
|
472
|
-
|
471
|
+
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
472
|
+
VBadge: typeof import('vuetify/components')['VBadge']
|
473
|
+
VAvatar: typeof import('vuetify/components')['VAvatar']
|
473
474
|
VBanner: typeof import('vuetify/components')['VBanner']
|
474
475
|
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
475
476
|
VBannerText: typeof import('vuetify/components')['VBannerText']
|
476
|
-
|
477
|
-
|
478
|
-
VBadge: typeof import('vuetify/components')['VBadge']
|
479
|
-
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
477
|
+
VAlert: typeof import('vuetify/components')['VAlert']
|
478
|
+
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
480
479
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
481
480
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
482
481
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
482
|
+
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
483
483
|
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
484
484
|
VBtn: typeof import('vuetify/components')['VBtn']
|
485
485
|
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
486
|
+
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
486
487
|
VCard: typeof import('vuetify/components')['VCard']
|
487
488
|
VCardActions: typeof import('vuetify/components')['VCardActions']
|
488
489
|
VCardItem: typeof import('vuetify/components')['VCardItem']
|
489
490
|
VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
|
490
491
|
VCardText: typeof import('vuetify/components')['VCardText']
|
491
492
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
492
|
-
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
493
493
|
VCarousel: typeof import('vuetify/components')['VCarousel']
|
494
494
|
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
495
|
+
VChip: typeof import('vuetify/components')['VChip']
|
495
496
|
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
496
497
|
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
497
|
-
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
498
498
|
VCode: typeof import('vuetify/components')['VCode']
|
499
|
-
|
500
|
-
|
499
|
+
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
500
|
+
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
501
501
|
VCombobox: typeof import('vuetify/components')['VCombobox']
|
502
|
+
VCounter: typeof import('vuetify/components')['VCounter']
|
502
503
|
VDataTable: typeof import('vuetify/components')['VDataTable']
|
503
504
|
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
|
504
505
|
VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
|
@@ -506,7 +507,6 @@ interface _GlobalComponents {
|
|
506
507
|
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
507
508
|
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
508
509
|
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
509
|
-
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
510
510
|
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
511
511
|
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
512
512
|
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
@@ -514,10 +514,9 @@ interface _GlobalComponents {
|
|
514
514
|
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
515
515
|
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
516
516
|
VDivider: typeof import('vuetify/components')['VDivider']
|
517
|
+
VDialog: typeof import('vuetify/components')['VDialog']
|
517
518
|
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
518
519
|
VFab: typeof import('vuetify/components')['VFab']
|
519
|
-
VDialog: typeof import('vuetify/components')['VDialog']
|
520
|
-
VFooter: typeof import('vuetify/components')['VFooter']
|
521
520
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
522
521
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
523
522
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
@@ -525,17 +524,16 @@ interface _GlobalComponents {
|
|
525
524
|
VFileInput: typeof import('vuetify/components')['VFileInput']
|
526
525
|
VField: typeof import('vuetify/components')['VField']
|
527
526
|
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
528
|
-
|
529
|
-
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
527
|
+
VFooter: typeof import('vuetify/components')['VFooter']
|
530
528
|
VIcon: typeof import('vuetify/components')['VIcon']
|
531
529
|
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
|
532
530
|
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
|
533
531
|
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
|
534
532
|
VClassIcon: typeof import('vuetify/components')['VClassIcon']
|
535
|
-
VLabel: typeof import('vuetify/components')['VLabel']
|
536
|
-
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
537
|
-
VItem: typeof import('vuetify/components')['VItem']
|
538
533
|
VInput: typeof import('vuetify/components')['VInput']
|
534
|
+
VImg: typeof import('vuetify/components')['VImg']
|
535
|
+
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
536
|
+
VKbd: typeof import('vuetify/components')['VKbd']
|
539
537
|
VList: typeof import('vuetify/components')['VList']
|
540
538
|
VListGroup: typeof import('vuetify/components')['VListGroup']
|
541
539
|
VListImg: typeof import('vuetify/components')['VListImg']
|
@@ -545,68 +543,70 @@ interface _GlobalComponents {
|
|
545
543
|
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
|
546
544
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
547
545
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
548
|
-
|
549
|
-
|
550
|
-
|
546
|
+
VLabel: typeof import('vuetify/components')['VLabel']
|
547
|
+
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
548
|
+
VItem: typeof import('vuetify/components')['VItem']
|
551
549
|
VMain: typeof import('vuetify/components')['VMain']
|
550
|
+
VMessages: typeof import('vuetify/components')['VMessages']
|
551
|
+
VMenu: typeof import('vuetify/components')['VMenu']
|
552
552
|
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
553
553
|
VOverlay: typeof import('vuetify/components')['VOverlay']
|
554
|
-
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
555
|
-
VPagination: typeof import('vuetify/components')['VPagination']
|
556
554
|
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
555
|
+
VPagination: typeof import('vuetify/components')['VPagination']
|
557
556
|
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
557
|
+
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
558
558
|
VRating: typeof import('vuetify/components')['VRating']
|
559
559
|
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
560
560
|
VSelect: typeof import('vuetify/components')['VSelect']
|
561
561
|
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
562
562
|
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
563
|
-
VSheet: typeof import('vuetify/components')['VSheet']
|
564
|
-
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
565
|
-
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
566
563
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
567
564
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
565
|
+
VSlider: typeof import('vuetify/components')['VSlider']
|
566
|
+
VSheet: typeof import('vuetify/components')['VSheet']
|
567
|
+
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
568
|
+
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
569
|
+
VSwitch: typeof import('vuetify/components')['VSwitch']
|
568
570
|
VStepper: typeof import('vuetify/components')['VStepper']
|
569
571
|
VStepperActions: typeof import('vuetify/components')['VStepperActions']
|
570
572
|
VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
|
571
573
|
VStepperItem: typeof import('vuetify/components')['VStepperItem']
|
572
574
|
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
|
573
575
|
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
|
574
|
-
VSlider: typeof import('vuetify/components')['VSlider']
|
575
576
|
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
576
|
-
VSwitch: typeof import('vuetify/components')['VSwitch']
|
577
|
-
VTextarea: typeof import('vuetify/components')['VTextarea']
|
578
577
|
VTab: typeof import('vuetify/components')['VTab']
|
579
578
|
VTabs: typeof import('vuetify/components')['VTabs']
|
580
579
|
VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
|
581
580
|
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
|
582
581
|
VTable: typeof import('vuetify/components')['VTable']
|
582
|
+
VTextarea: typeof import('vuetify/components')['VTextarea']
|
583
583
|
VTimeline: typeof import('vuetify/components')['VTimeline']
|
584
584
|
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
585
|
-
VTextField: typeof import('vuetify/components')['VTextField']
|
586
585
|
VTooltip: typeof import('vuetify/components')['VTooltip']
|
587
586
|
VToolbar: typeof import('vuetify/components')['VToolbar']
|
588
587
|
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
589
588
|
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
589
|
+
VTextField: typeof import('vuetify/components')['VTextField']
|
590
590
|
VWindow: typeof import('vuetify/components')['VWindow']
|
591
591
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
592
592
|
VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
|
593
593
|
VDataIterator: typeof import('vuetify/components')['VDataIterator']
|
594
594
|
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
|
595
595
|
VForm: typeof import('vuetify/components')['VForm']
|
596
|
+
VHover: typeof import('vuetify/components')['VHover']
|
596
597
|
VContainer: typeof import('vuetify/components')['VContainer']
|
597
598
|
VCol: typeof import('vuetify/components')['VCol']
|
598
599
|
VRow: typeof import('vuetify/components')['VRow']
|
599
600
|
VSpacer: typeof import('vuetify/components')['VSpacer']
|
600
|
-
VHover: typeof import('vuetify/components')['VHover']
|
601
|
-
VLazy: typeof import('vuetify/components')['VLazy']
|
602
601
|
VLayout: typeof import('vuetify/components')['VLayout']
|
603
602
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
603
|
+
VLazy: typeof import('vuetify/components')['VLazy']
|
604
604
|
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
605
605
|
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
606
606
|
VParallax: typeof import('vuetify/components')['VParallax']
|
607
607
|
VRadio: typeof import('vuetify/components')['VRadio']
|
608
|
-
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
609
608
|
VResponsive: typeof import('vuetify/components')['VResponsive']
|
609
|
+
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
610
610
|
VSparkline: typeof import('vuetify/components')['VSparkline']
|
611
611
|
VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
|
612
612
|
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
|
@@ -628,21 +628,21 @@ interface _GlobalComponents {
|
|
628
628
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
629
629
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
630
630
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
631
|
-
VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
|
632
631
|
VCalendar: typeof import('vuetify/labs/components')['VCalendar']
|
633
632
|
VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
|
634
633
|
VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
|
635
634
|
VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
|
636
635
|
VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
|
637
636
|
VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
|
637
|
+
VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
|
638
|
+
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
639
|
+
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
638
640
|
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
639
641
|
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
640
642
|
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
641
643
|
VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
|
642
644
|
VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
|
643
645
|
VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
|
644
|
-
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
645
|
-
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
646
646
|
VTreeview: typeof import('vuetify/labs/components')['VTreeview']
|
647
647
|
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
648
648
|
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
@@ -98,7 +98,7 @@ declare const VDateInput: {
|
|
98
98
|
counter?: string | number | boolean | undefined;
|
99
99
|
'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
|
100
100
|
modelValue?: any;
|
101
|
-
validateOn?:
|
101
|
+
validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
|
102
102
|
validationValue?: any;
|
103
103
|
rounded?: string | number | boolean | undefined;
|
104
104
|
baseColor?: string | undefined;
|
@@ -211,7 +211,7 @@ declare const VDateInput: {
|
|
211
211
|
counter?: string | number | boolean | undefined;
|
212
212
|
'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
|
213
213
|
modelValue?: any;
|
214
|
-
validateOn?:
|
214
|
+
validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
|
215
215
|
validationValue?: any;
|
216
216
|
rounded?: string | number | boolean | undefined;
|
217
217
|
baseColor?: string | undefined;
|
@@ -384,7 +384,7 @@ declare const VDateInput: {
|
|
384
384
|
counter?: string | number | boolean | undefined;
|
385
385
|
'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
|
386
386
|
modelValue?: any;
|
387
|
-
validateOn?:
|
387
|
+
validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
|
388
388
|
validationValue?: any;
|
389
389
|
rounded?: string | number | boolean | undefined;
|
390
390
|
baseColor?: string | undefined;
|
@@ -550,7 +550,7 @@ declare const VDateInput: {
|
|
550
550
|
counter?: string | number | boolean | undefined;
|
551
551
|
'onUpdate:focused'?: ((args_0: boolean) => void) | undefined;
|
552
552
|
modelValue?: any;
|
553
|
-
validateOn?:
|
553
|
+
validateOn?: "lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined;
|
554
554
|
validationValue?: any;
|
555
555
|
rounded?: string | number | boolean | undefined;
|
556
556
|
baseColor?: string | undefined;
|
@@ -800,7 +800,7 @@ declare const VDateInput: {
|
|
800
800
|
type: vue.PropType<readonly ValidationRule[]>;
|
801
801
|
default: () => never[];
|
802
802
|
};
|
803
|
-
validateOn: vue.PropType<
|
803
|
+
validateOn: vue.PropType<"lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined>;
|
804
804
|
validationValue: null;
|
805
805
|
density: {
|
806
806
|
type: vue.PropType<Density>;
|
@@ -1014,7 +1014,7 @@ declare const VDateInput: {
|
|
1014
1014
|
type: vue.PropType<readonly ValidationRule[]>;
|
1015
1015
|
default: () => never[];
|
1016
1016
|
};
|
1017
|
-
validateOn: vue.PropType<
|
1017
|
+
validateOn: vue.PropType<"lazy" | ("input" | "blur" | "submit") | "input lazy" | "blur lazy" | "submit lazy" | "lazy input" | "lazy blur" | "lazy submit" | undefined>;
|
1018
1018
|
validationValue: null;
|
1019
1019
|
density: {
|
1020
1020
|
type: vue.PropType<Density>;
|
@@ -9,7 +9,7 @@ import { VDivider } from "../../components/VDivider/index.mjs";
|
|
9
9
|
import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.mjs"; // Composables
|
10
10
|
import { useForm } from "../../composables/form.mjs";
|
11
11
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
|
12
|
-
import { computed,
|
12
|
+
import { computed, nextTick, onMounted, ref } from 'vue';
|
13
13
|
import { clamp, genericComponent, getDecimals, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
14
14
|
const makeVNumberInputProps = propsFactory({
|
15
15
|
controlVariant: {
|
@@ -18,19 +18,23 @@ const makeVNumberInputProps = propsFactory({
|
|
18
18
|
},
|
19
19
|
inset: Boolean,
|
20
20
|
hideInput: Boolean,
|
21
|
+
modelValue: {
|
22
|
+
type: Number,
|
23
|
+
default: null
|
24
|
+
},
|
21
25
|
min: {
|
22
26
|
type: Number,
|
23
|
-
default:
|
27
|
+
default: Number.MIN_SAFE_INTEGER
|
24
28
|
},
|
25
29
|
max: {
|
26
30
|
type: Number,
|
27
|
-
default:
|
31
|
+
default: Number.MAX_SAFE_INTEGER
|
28
32
|
},
|
29
33
|
step: {
|
30
34
|
type: Number,
|
31
35
|
default: 1
|
32
36
|
},
|
33
|
-
...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon'])
|
37
|
+
...omit(makeVTextFieldProps({}), ['appendInnerIcon', 'modelValue', 'prependInnerIcon'])
|
34
38
|
}, 'VNumberInput');
|
35
39
|
export const VNumberInput = genericComponent()({
|
36
40
|
name: 'VNumberInput',
|
@@ -42,30 +46,27 @@ export const VNumberInput = genericComponent()({
|
|
42
46
|
},
|
43
47
|
setup(props, _ref) {
|
44
48
|
let {
|
45
|
-
attrs,
|
46
|
-
emit,
|
47
49
|
slots
|
48
50
|
} = _ref;
|
49
|
-
const
|
51
|
+
const _model = useProxiedModel(props, 'modelValue');
|
52
|
+
const model = computed({
|
53
|
+
get: () => _model.value,
|
54
|
+
set(val) {
|
55
|
+
if (typeof val !== 'string') _model.value = val;
|
56
|
+
}
|
57
|
+
});
|
58
|
+
const vTextFieldRef = ref();
|
50
59
|
const stepDecimals = computed(() => getDecimals(props.step));
|
51
|
-
const modelDecimals = computed(() => model.value
|
60
|
+
const modelDecimals = computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0);
|
52
61
|
const form = useForm();
|
53
62
|
const controlsDisabled = computed(() => props.disabled || props.readonly || form?.isReadonly.value);
|
54
63
|
const canIncrease = computed(() => {
|
55
64
|
if (controlsDisabled.value) return false;
|
56
|
-
|
57
|
-
return model.value + props.step <= props.max;
|
65
|
+
return (model.value ?? 0) + props.step <= props.max;
|
58
66
|
});
|
59
67
|
const canDecrease = computed(() => {
|
60
68
|
if (controlsDisabled.value) return false;
|
61
|
-
|
62
|
-
return model.value - props.step >= props.min;
|
63
|
-
});
|
64
|
-
watchEffect(() => {
|
65
|
-
if (controlsDisabled.value) return;
|
66
|
-
if (model.value != null && (model.value < props.min || model.value > props.max)) {
|
67
|
-
model.value = clamp(model.value, props.min, props.max);
|
68
|
-
}
|
69
|
+
return (model.value ?? 0) - props.step >= props.min;
|
69
70
|
});
|
70
71
|
const controlVariant = computed(() => {
|
71
72
|
return props.hideInput ? 'stacked' : props.controlVariant;
|
@@ -80,11 +81,16 @@ export const VNumberInput = genericComponent()({
|
|
80
81
|
const decrementSlotProps = computed(() => ({
|
81
82
|
click: onClickDown
|
82
83
|
}));
|
84
|
+
onMounted(() => {
|
85
|
+
if (!props.readonly && !props.disabled) {
|
86
|
+
clampModel();
|
87
|
+
}
|
88
|
+
});
|
83
89
|
function toggleUpDown() {
|
84
90
|
let increment = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
85
91
|
if (controlsDisabled.value) return;
|
86
92
|
if (model.value == null) {
|
87
|
-
model.value = 0;
|
93
|
+
model.value = clamp(0, props.min, props.max);
|
88
94
|
return;
|
89
95
|
}
|
90
96
|
const decimals = Math.max(modelDecimals.value, stepDecimals.value);
|
@@ -102,30 +108,45 @@ export const VNumberInput = genericComponent()({
|
|
102
108
|
e.stopPropagation();
|
103
109
|
toggleUpDown(false);
|
104
110
|
}
|
105
|
-
function
|
106
|
-
if (
|
107
|
-
|
111
|
+
function onBeforeinput(e) {
|
112
|
+
if (!e.data) return;
|
113
|
+
const existingTxt = e.target?.value;
|
114
|
+
const selectionStart = e.target?.selectionStart;
|
115
|
+
const selectionEnd = e.target?.selectionEnd;
|
116
|
+
const potentialNewInputVal = existingTxt ? existingTxt.slice(0, selectionStart) + e.data + existingTxt.slice(selectionEnd) : e.data;
|
117
|
+
// Only numbers, "-", "." are allowed
|
118
|
+
// AND "-", "." are allowed only once
|
119
|
+
// AND "-" is only allowed at the start
|
120
|
+
if (!/^-?(\d+(\.\d*)?|(\.\d+)|\d*|\.)$/.test(potentialNewInputVal)) {
|
108
121
|
e.preventDefault();
|
109
|
-
toggleUpDown(false);
|
110
|
-
return;
|
111
122
|
}
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
}
|
117
|
-
|
118
|
-
// Only numbers, +, - & . are allowed
|
119
|
-
if (!/^[0-9\-+.]+$/.test(e.key)) {
|
123
|
+
}
|
124
|
+
async function onKeydown(e) {
|
125
|
+
if (['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) || e.ctrlKey) return;
|
126
|
+
if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
120
127
|
e.preventDefault();
|
128
|
+
clampModel();
|
129
|
+
// _model is controlled, so need to wait until props['modelValue'] is updated
|
130
|
+
await nextTick();
|
131
|
+
if (e.key === 'ArrowDown') {
|
132
|
+
toggleUpDown(false);
|
133
|
+
} else {
|
134
|
+
toggleUpDown();
|
135
|
+
}
|
121
136
|
}
|
122
137
|
}
|
123
|
-
function onModelUpdate(v) {
|
124
|
-
model.value = v ? +v : undefined;
|
125
|
-
}
|
126
138
|
function onControlMousedown(e) {
|
127
139
|
e.stopPropagation();
|
128
140
|
}
|
141
|
+
function clampModel() {
|
142
|
+
if (!vTextFieldRef.value) return;
|
143
|
+
const inputText = vTextFieldRef.value.value;
|
144
|
+
if (inputText && !isNaN(+inputText)) {
|
145
|
+
model.value = clamp(+inputText, props.min, props.max);
|
146
|
+
} else {
|
147
|
+
model.value = null;
|
148
|
+
}
|
149
|
+
}
|
129
150
|
useRender(() => {
|
130
151
|
const {
|
131
152
|
modelValue: _,
|
@@ -210,8 +231,11 @@ export const VNumberInput = genericComponent()({
|
|
210
231
|
}, null)]) : props.reverse ? _createVNode(_Fragment, null, [controlNode(), dividerNode()]) : undefined;
|
211
232
|
const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
|
212
233
|
return _createVNode(VTextField, _mergeProps({
|
234
|
+
"ref": vTextFieldRef,
|
213
235
|
"modelValue": model.value,
|
214
|
-
"onUpdate:modelValue":
|
236
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
237
|
+
"onBeforeinput": onBeforeinput,
|
238
|
+
"onChange": clampModel,
|
215
239
|
"onKeydown": onKeydown,
|
216
240
|
"class": ['v-number-input', {
|
217
241
|
'v-number-input--default': controlVariant.value === 'default',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useForm","useProxiedModel","computed","watchEffect","clamp","genericComponent","getDecimals","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","min","Number","Infinity","max","step","VNumberInput","name","props","emits","val","setup","_ref","attrs","emit","slots","model","stepDecimals","modelDecimals","value","form","controlsDisabled","disabled","readonly","isReadonly","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","toggleUpDown","increment","arguments","length","undefined","decimals","Math","toFixed","e","stopPropagation","onKeydown","includes","key","ctrlKey","preventDefault","test","onModelUpdate","v","onControlMousedown","modelValue","_","textFieldProps","filterProps","incrementControlNode","_createVNode","flat","height","size","icon","decrementControlNode","decrement","controlNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/labs/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '../../components/VBtn'\nimport { VDefaultsProvider } from '../../components/VDefaultsProvider'\nimport { VDivider } from '../../components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, watchEffect } from 'vue'\nimport { clamp, genericComponent, getDecimals, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n click: (e: MouseEvent) => void\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n min: {\n type: Number,\n default: -Infinity,\n },\n max: {\n type: Number,\n default: Infinity,\n },\n step: {\n type: Number,\n default: 1,\n },\n\n ...omit(makeVTextFieldProps(), ['appendInnerIcon', 'prependInnerIcon']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n\n const stepDecimals = computed(() => getDecimals(props.step))\n const modelDecimals = computed(() => model.value != null ? getDecimals(model.value) : 0)\n\n const form = useForm()\n const controlsDisabled = computed(() => (\n props.disabled || props.readonly || form?.isReadonly.value\n ))\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n if (model.value == null) return true\n return model.value + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n if (model.value == null) return true\n return model.value - props.step >= props.min\n })\n\n watchEffect(() => {\n if (controlsDisabled.value) return\n if (model.value != null && (model.value < props.min || model.value > props.max)) {\n model.value = clamp(model.value, props.min, props.max)\n }\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = computed(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n model.value = 0\n return\n }\n\n const decimals = Math.max(modelDecimals.value, stepDecimals.value)\n if (increment) {\n if (canIncrease.value) model.value = +(((model.value + props.step).toFixed(decimals)))\n } else {\n if (canDecrease.value) model.value = +(((model.value - props.step).toFixed(decimals)))\n }\n }\n\n function onClickUp (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown()\n }\n\n function onClickDown (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown(false)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown(false)\n return\n }\n if (['ArrowUp'].includes(e.key)) {\n e.preventDefault()\n toggleUpDown()\n return\n }\n\n // Only numbers, +, - & . are allowed\n if (!/^[0-9\\-+.]+$/.test(e.key)) {\n e.preventDefault()\n }\n }\n\n function onModelUpdate (v: string) {\n model.value = v ? +(v) : undefined\n }\n\n function onControlMousedown (e: MouseEvent) {\n e.stopPropagation()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n disabled={ !canIncrease.value }\n flat\n key=\"increment-btn\"\n height={ controlNodeDefaultHeight.value }\n name=\"increment-btn\"\n icon={ incrementIcon.value }\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n },\n }}\n >\n { slots.increment(incrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n disabled={ !canDecrease.value }\n flat\n key=\"decrement-btn\"\n height={ controlNodeDefaultHeight.value }\n name=\"decrement-btn\"\n icon={ decrementIcon.value }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n },\n }}\n >\n { slots.decrement(decrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n function controlNode () {\n return (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n { incrementControlNode() }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n { incrementControlNode() }\n </div>\n ) : (!props.reverse\n ? <>{ dividerNode() }{ controlNode() }</>\n : undefined)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n modelValue={ model.value }\n onUpdate:modelValue={ onModelUpdate }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VNumberInput.mjs","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useForm","useProxiedModel","computed","nextTick","onMounted","ref","clamp","genericComponent","getDecimals","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","VNumberInput","name","props","emits","val","setup","_ref","slots","_model","model","get","value","set","vTextFieldRef","stepDecimals","modelDecimals","form","controlsDisabled","disabled","readonly","isReadonly","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","click","onClickUp","decrementSlotProps","onClickDown","clampModel","toggleUpDown","increment","arguments","length","undefined","decimals","Math","toFixed","e","stopPropagation","onBeforeinput","data","existingTxt","target","selectionStart","selectionEnd","potentialNewInputVal","slice","test","preventDefault","onKeydown","includes","key","ctrlKey","onControlMousedown","inputText","isNaN","_","textFieldProps","filterProps","incrementControlNode","_createVNode","flat","height","size","icon","decrementControlNode","decrement","controlNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/labs/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '../../components/VBtn'\nimport { VDefaultsProvider } from '../../components/VDefaultsProvider'\nimport { VDivider } from '../../components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useForm } from '@/composables/form'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref } from 'vue'\nimport { clamp, genericComponent, getDecimals, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n click: (e: MouseEvent) => void\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<Number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n\n ...omit(makeVTextFieldProps({}), ['appendInnerIcon', 'modelValue', 'prependInnerIcon']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const _model = useProxiedModel(props, 'modelValue')\n\n const model = computed({\n get: () => _model.value,\n set (val) {\n if (typeof val !== 'string') _model.value = val\n },\n })\n\n const vTextFieldRef = ref<VTextField | undefined>()\n\n const stepDecimals = computed(() => getDecimals(props.step))\n const modelDecimals = computed(() => typeof model.value === 'number' ? getDecimals(model.value) : 0)\n\n const form = useForm()\n const controlsDisabled = computed(() => (\n props.disabled || props.readonly || form?.isReadonly.value\n ))\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number - props.step >= props.min\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = computed(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = computed(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = computed(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = computed(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = computed(() => ({ click: onClickUp }))\n\n const decrementSlotProps = computed(() => ({ click: onClickDown }))\n\n onMounted(() => {\n if (!props.readonly && !props.disabled) {\n clampModel()\n }\n })\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n model.value = clamp(0, props.min, props.max)\n return\n }\n\n const decimals = Math.max(modelDecimals.value, stepDecimals.value)\n if (increment) {\n if (canIncrease.value) model.value = +((((model.value as number) + props.step).toFixed(decimals)))\n } else {\n if (canDecrease.value) model.value = +((((model.value as number) - props.step).toFixed(decimals)))\n }\n }\n\n function onClickUp (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown()\n }\n\n function onClickDown (e: MouseEvent) {\n e.stopPropagation()\n toggleUpDown(false)\n }\n\n function onBeforeinput (e: InputEvent) {\n if (!e.data) return\n const existingTxt = (e.target as HTMLInputElement)?.value\n const selectionStart = (e.target as HTMLInputElement)?.selectionStart\n const selectionEnd = (e.target as HTMLInputElement)?.selectionEnd\n const potentialNewInputVal =\n existingTxt\n ? existingTxt.slice(0, selectionStart as number | undefined) + e.data + existingTxt.slice(selectionEnd as number | undefined)\n : e.data\n // Only numbers, \"-\", \".\" are allowed\n // AND \"-\", \".\" are allowed only once\n // AND \"-\" is only allowed at the start\n if (!/^-?(\\d+(\\.\\d*)?|(\\.\\d+)|\\d*|\\.)$/.test(potentialNewInputVal)) {\n e.preventDefault()\n }\n }\n\n async function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n clampModel()\n // _model is controlled, so need to wait until props['modelValue'] is updated\n await nextTick()\n if (e.key === 'ArrowDown') {\n toggleUpDown(false)\n } else {\n toggleUpDown()\n }\n }\n }\n\n function onControlMousedown (e: MouseEvent) {\n e.stopPropagation()\n }\n\n function clampModel () {\n if (!vTextFieldRef.value) return\n const inputText = vTextFieldRef.value.value\n if (inputText && !isNaN(+inputText)) {\n model.value = clamp(+(inputText), props.min, props.max)\n } else {\n model.value = null\n }\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n disabled={ !canIncrease.value }\n flat\n key=\"increment-btn\"\n height={ controlNodeDefaultHeight.value }\n name=\"increment-btn\"\n icon={ incrementIcon.value }\n onClick={ onClickUp }\n onMousedown={ onControlMousedown }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n },\n }}\n >\n { slots.increment(incrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n disabled={ !canDecrease.value }\n flat\n key=\"decrement-btn\"\n height={ controlNodeDefaultHeight.value }\n name=\"decrement-btn\"\n icon={ decrementIcon.value }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n onClick={ onClickDown }\n onMousedown={ onControlMousedown }\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n },\n }}\n >\n { slots.decrement(decrementSlotProps.value) }\n </VDefaultsProvider>\n )\n }\n\n function controlNode () {\n return (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n { incrementControlNode() }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n { incrementControlNode() }\n </div>\n ) : (!props.reverse\n ? <>{ dividerNode() }{ controlNode() }</>\n : undefined)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n v-model={ model.value }\n onBeforeinput={ onBeforeinput }\n onChange={ clampModel }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n { ...textFieldProps }\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI;AAAA,SACJC,iBAAiB;AAAA,SACjBC,QAAQ;AAAA,SACRC,mBAAmB,EAAEC,UAAU,sDAExC;AAAA,SACSC,OAAO;AAAA,SACPC,eAAe,8CAExB;AACA,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,GAAG,QAAQ,KAAK;AAAA,SAC/CC,KAAK,EAAEC,gBAAgB,EAAEC,WAAW,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,gCAE5E;AAeA,MAAMC,qBAAqB,GAAGF,YAAY,CAAC;EACzCG,cAAc,EAAE;IACdC,IAAI,EAAEC,MAAkC;IACxCC,OAAO,EAAE;EACX,CAAC;EACDC,KAAK,EAAEC,OAAO;EACdC,SAAS,EAAED,OAAO;EAClBE,UAAU,EAAE;IACVN,IAAI,EAAEO,MAAiC;IACvCL,OAAO,EAAE;EACX,CAAC;EACDM,GAAG,EAAE;IACHR,IAAI,EAAEO,MAAM;IACZL,OAAO,EAAEK,MAAM,CAACE;EAClB,CAAC;EACDC,GAAG,EAAE;IACHV,IAAI,EAAEO,MAAM;IACZL,OAAO,EAAEK,MAAM,CAACI;EAClB,CAAC;EACDC,IAAI,EAAE;IACJZ,IAAI,EAAEO,MAAM;IACZL,OAAO,EAAE;EACX,CAAC;EAED,GAAGP,IAAI,CAACX,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,EAAE,YAAY,EAAE,kBAAkB,CAAC;AACxF,CAAC,EAAE,cAAc,CAAC;AAElB,OAAO,MAAM6B,YAAY,GAAGpB,gBAAgB,CAAoB,CAAC,CAAC;EAChEqB,IAAI,EAAE,cAAc;EAEpBC,KAAK,EAAE;IACL,GAAGjB,qBAAqB,CAAC;EAC3B,CAAC;EAEDkB,KAAK,EAAE;IACL,mBAAmB,EAAGC,GAAW,IAAK;EACxC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAME,MAAM,GAAGlC,eAAe,CAAC4B,KAAK,EAAE,YAAY,CAAC;IAEnD,MAAMO,KAAK,GAAGlC,QAAQ,CAAC;MACrBmC,GAAG,EAAEA,CAAA,KAAMF,MAAM,CAACG,KAAK;MACvBC,GAAGA,CAAER,GAAG,EAAE;QACR,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAEI,MAAM,CAACG,KAAK,GAAGP,GAAG;MACjD;IACF,CAAC,CAAC;IAEF,MAAMS,aAAa,GAAGnC,GAAG,CAAyB,CAAC;IAEnD,MAAMoC,YAAY,GAAGvC,QAAQ,CAAC,MAAMM,WAAW,CAACqB,KAAK,CAACH,IAAI,CAAC,CAAC;IAC5D,MAAMgB,aAAa,GAAGxC,QAAQ,CAAC,MAAM,OAAOkC,KAAK,CAACE,KAAK,KAAK,QAAQ,GAAG9B,WAAW,CAAC4B,KAAK,CAACE,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpG,MAAMK,IAAI,GAAG3C,OAAO,CAAC,CAAC;IACtB,MAAM4C,gBAAgB,GAAG1C,QAAQ,CAAC,MAChC2B,KAAK,CAACgB,QAAQ,IAAIhB,KAAK,CAACiB,QAAQ,IAAIH,IAAI,EAAEI,UAAU,CAACT,KACtD,CAAC;IAEF,MAAMU,WAAW,GAAG9C,QAAQ,CAAC,MAAM;MACjC,IAAI0C,gBAAgB,CAACN,KAAK,EAAE,OAAO,KAAK;MACxC,OAAO,CAACF,KAAK,CAACE,KAAK,IAAI,CAAC,IAAcT,KAAK,CAACH,IAAI,IAAIG,KAAK,CAACL,GAAG;IAC/D,CAAC,CAAC;IACF,MAAMyB,WAAW,GAAG/C,QAAQ,CAAC,MAAM;MACjC,IAAI0C,gBAAgB,CAACN,KAAK,EAAE,OAAO,KAAK;MACxC,OAAO,CAACF,KAAK,CAACE,KAAK,IAAI,CAAC,IAAcT,KAAK,CAACH,IAAI,IAAIG,KAAK,CAACP,GAAG;IAC/D,CAAC,CAAC;IAEF,MAAMT,cAAc,GAAGX,QAAQ,CAAC,MAAM;MACpC,OAAO2B,KAAK,CAACV,SAAS,GAAG,SAAS,GAAGU,KAAK,CAAChB,cAAc;IAC3D,CAAC,CAAC;IAEF,MAAMqC,aAAa,GAAGhD,QAAQ,CAAC,MAAMW,cAAc,CAACyB,KAAK,KAAK,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;IAC9F,MAAMa,aAAa,GAAGjD,QAAQ,CAAC,MAAMW,cAAc,CAACyB,KAAK,KAAK,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC7F,MAAMc,eAAe,GAAGlD,QAAQ,CAAC,MAAMW,cAAc,CAACyB,KAAK,KAAK,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IAC9F,MAAMe,wBAAwB,GAAGnD,QAAQ,CAAC,MAAMW,cAAc,CAACyB,KAAK,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAErG,MAAMgB,kBAAkB,GAAGpD,QAAQ,CAAC,OAAO;MAAEqD,KAAK,EAAEC;IAAU,CAAC,CAAC,CAAC;IAEjE,MAAMC,kBAAkB,GAAGvD,QAAQ,CAAC,OAAO;MAAEqD,KAAK,EAAEG;IAAY,CAAC,CAAC,CAAC;IAEnEtD,SAAS,CAAC,MAAM;MACd,IAAI,CAACyB,KAAK,CAACiB,QAAQ,IAAI,CAACjB,KAAK,CAACgB,QAAQ,EAAE;QACtCc,UAAU,CAAC,CAAC;MACd;IACF,CAAC,CAAC;IAEF,SAASC,YAAYA,CAAA,EAAoB;MAAA,IAAlBC,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MACrC,IAAIlB,gBAAgB,CAACN,KAAK,EAAE;MAC5B,IAAIF,KAAK,CAACE,KAAK,IAAI,IAAI,EAAE;QACvBF,KAAK,CAACE,KAAK,GAAGhC,KAAK,CAAC,CAAC,EAAEuB,KAAK,CAACP,GAAG,EAAEO,KAAK,CAACL,GAAG,CAAC;QAC5C;MACF;MAEA,MAAMyC,QAAQ,GAAGC,IAAI,CAAC1C,GAAG,CAACkB,aAAa,CAACJ,KAAK,EAAEG,YAAY,CAACH,KAAK,CAAC;MAClE,IAAIuB,SAAS,EAAE;QACb,IAAIb,WAAW,CAACV,KAAK,EAAEF,KAAK,CAACE,KAAK,GAAG,CAAG,CAAEF,KAAK,CAACE,KAAK,GAAcT,KAAK,CAACH,IAAI,EAAEyC,OAAO,CAACF,QAAQ,CAAG;MACpG,CAAC,MAAM;QACL,IAAIhB,WAAW,CAACX,KAAK,EAAEF,KAAK,CAACE,KAAK,GAAG,CAAG,CAAEF,KAAK,CAACE,KAAK,GAAcT,KAAK,CAACH,IAAI,EAAEyC,OAAO,CAACF,QAAQ,CAAG;MACpG;IACF;IAEA,SAAST,SAASA,CAAEY,CAAa,EAAE;MACjCA,CAAC,CAACC,eAAe,CAAC,CAAC;MACnBT,YAAY,CAAC,CAAC;IAChB;IAEA,SAASF,WAAWA,CAAEU,CAAa,EAAE;MACnCA,CAAC,CAACC,eAAe,CAAC,CAAC;MACnBT,YAAY,CAAC,KAAK,CAAC;IACrB;IAEA,SAASU,aAAaA,CAAEF,CAAa,EAAE;MACrC,IAAI,CAACA,CAAC,CAACG,IAAI,EAAE;MACb,MAAMC,WAAW,GAAIJ,CAAC,CAACK,MAAM,EAAuBnC,KAAK;MACzD,MAAMoC,cAAc,GAAIN,CAAC,CAACK,MAAM,EAAuBC,cAAc;MACrE,MAAMC,YAAY,GAAIP,CAAC,CAACK,MAAM,EAAuBE,YAAY;MACjE,MAAMC,oBAAoB,GACxBJ,WAAW,GACPA,WAAW,CAACK,KAAK,CAAC,CAAC,EAAEH,cAAoC,CAAC,GAAGN,CAAC,CAACG,IAAI,GAAGC,WAAW,CAACK,KAAK,CAACF,YAAkC,CAAC,GAC3HP,CAAC,CAACG,IAAI;MACZ;MACA;MACA;MACA,IAAI,CAAC,kCAAkC,CAACO,IAAI,CAACF,oBAAoB,CAAC,EAAE;QAClER,CAAC,CAACW,cAAc,CAAC,CAAC;MACpB;IACF;IAEA,eAAeC,SAASA,CAAEZ,CAAgB,EAAE;MAC1C,IACE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,CAACa,QAAQ,CAACb,CAAC,CAACc,GAAG,CAAC,IAClFd,CAAC,CAACe,OAAO,EACT;MAEF,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAACF,QAAQ,CAACb,CAAC,CAACc,GAAG,CAAC,EAAE;QAC5Cd,CAAC,CAACW,cAAc,CAAC,CAAC;QAClBpB,UAAU,CAAC,CAAC;QACZ;QACA,MAAMxD,QAAQ,CAAC,CAAC;QAChB,IAAIiE,CAAC,CAACc,GAAG,KAAK,WAAW,EAAE;UACzBtB,YAAY,CAAC,KAAK,CAAC;QACrB,CAAC,MAAM;UACLA,YAAY,CAAC,CAAC;QAChB;MACF;IACF;IAEA,SAASwB,kBAAkBA,CAAEhB,CAAa,EAAE;MAC1CA,CAAC,CAACC,eAAe,CAAC,CAAC;IACrB;IAEA,SAASV,UAAUA,CAAA,EAAI;MACrB,IAAI,CAACnB,aAAa,CAACF,KAAK,EAAE;MAC1B,MAAM+C,SAAS,GAAG7C,aAAa,CAACF,KAAK,CAACA,KAAK;MAC3C,IAAI+C,SAAS,IAAI,CAACC,KAAK,CAAC,CAACD,SAAS,CAAC,EAAE;QACnCjD,KAAK,CAACE,KAAK,GAAGhC,KAAK,CAAC,CAAE+E,SAAU,EAAExD,KAAK,CAACP,GAAG,EAAEO,KAAK,CAACL,GAAG,CAAC;MACzD,CAAC,MAAM;QACLY,KAAK,CAACE,KAAK,GAAG,IAAI;MACpB;IACF;IAEA3B,SAAS,CAAC,MAAM;MACd,MAAM;QAAES,UAAU,EAAEmE,CAAC;QAAE,GAAGC;MAAe,CAAC,GAAGzF,UAAU,CAAC0F,WAAW,CAAC5D,KAAK,CAAC;MAE1E,SAAS6D,oBAAoBA,CAAA,EAAI;QAC/B,OAAO,CAACxD,KAAK,CAAC2B,SAAS,GAAA8B,YAAA,CAAAhG,IAAA;UAAA,YAER,CAACqD,WAAW,CAACV,KAAK;UAAA;UAAA;UAAA,UAGpBe,wBAAwB,CAACf,KAAK;UAAA;UAAA,QAEhCY,aAAa,CAACZ,KAAK;UAAA,WAChBkB,SAAS;UAAA,eACL4B,kBAAkB;UAAA,QACzBhC,eAAe,CAACd,KAAK;UAAA;QAAA,WAAAqD,YAAA,CAAA/F,iBAAA;UAAA;UAAA,YAMlB;YACRD,IAAI,EAAE;cACJkD,QAAQ,EAAE,CAACG,WAAW,CAACV,KAAK;cAC5BsD,IAAI,EAAE,IAAI;cACVC,MAAM,EAAExC,wBAAwB,CAACf,KAAK;cACtCwD,IAAI,EAAE1C,eAAe,CAACd,KAAK;cAC3ByD,IAAI,EAAE7C,aAAa,CAACZ;YACtB;UACF;QAAC;UAAAtB,OAAA,EAAAA,CAAA,MAECkB,KAAK,CAAC2B,SAAS,CAACP,kBAAkB,CAAChB,KAAK,CAAC;QAAA,EAE9C;MACH;MAEA,SAAS0D,oBAAoBA,CAAA,EAAI;QAC/B,OAAO,CAAC9D,KAAK,CAAC+D,SAAS,GAAAN,YAAA,CAAAhG,IAAA;UAAA,YAER,CAACsD,WAAW,CAACX,KAAK;UAAA;UAAA;UAAA,UAGpBe,wBAAwB,CAACf,KAAK;UAAA;UAAA,QAEhCa,aAAa,CAACb,KAAK;UAAA,QACnBc,eAAe,CAACd,KAAK;UAAA;UAAA,WAElBoB,WAAW;UAAA,eACP0B;QAAkB,WAAAO,YAAA,CAAA/F,iBAAA;UAAA;UAAA,YAKtB;YACRD,IAAI,EAAE;cACJkD,QAAQ,EAAE,CAACI,WAAW,CAACX,KAAK;cAC5BsD,IAAI,EAAE,IAAI;cACVC,MAAM,EAAExC,wBAAwB,CAACf,KAAK;cACtCwD,IAAI,EAAE1C,eAAe,CAACd,KAAK;cAC3ByD,IAAI,EAAE5C,aAAa,CAACb;YACtB;UACF;QAAC;UAAAtB,OAAA,EAAAA,CAAA,MAECkB,KAAK,CAAC+D,SAAS,CAACxC,kBAAkB,CAACnB,KAAK,CAAC;QAAA,EAE9C;MACH;MAEA,SAAS4D,WAAWA,CAAA,EAAI;QACtB,OAAAP,YAAA;UAAA;QAAA,IAEMK,oBAAoB,CAAC,CAAC,EAAAL,YAAA,CAAA9F,QAAA;UAAA,YAGXgB,cAAc,CAACyB,KAAK,KAAK;QAAS,UAG7CoD,oBAAoB,CAAC,CAAC;MAG9B;MAEA,SAASS,WAAWA,CAAA,EAAI;QACtB,OAAO,CAACtE,KAAK,CAACV,SAAS,IAAI,CAACU,KAAK,CAACZ,KAAK,GAAA0E,YAAA,CAAA9F,QAAA;UAAA;QAAA,WAA2BmE,SAAS;MAC7E;MAEA,MAAMoC,kBAAkB,GACtBvF,cAAc,CAACyB,KAAK,KAAK,OAAO,GAAAqD,YAAA;QAAA;MAAA,IAAAA,YAAA,CAAA9F,QAAA;QAAA;MAAA,UAKxB6F,oBAAoB,CAAC,CAAC,KAEvB,CAAC7D,KAAK,CAACwE,OAAO,GAAAV,YAAA,CAAAW,SAAA,SACXH,WAAW,CAAC,CAAC,EAAID,WAAW,CAAC,CAAC,KAClClC,SAAU;MAElB,MAAMuC,cAAc,GAAGrE,KAAK,CAAC,cAAc,CAAC,IAAIkE,kBAAkB;MAElE,MAAMI,mBAAmB,GACvB3F,cAAc,CAACyB,KAAK,KAAK,OAAO,GAAAqD,YAAA;QAAA;MAAA,IAGxBK,oBAAoB,CAAC,CAAC,EAAAL,YAAA,CAAA9F,QAAA;QAAA;MAAA,aAIvBgC,KAAK,CAACwE,OAAO,GAAAV,YAAA,CAAAW,SAAA,SACVJ,WAAW,CAAC,CAAC,EAAIC,WAAW,CAAC,CAAC,KAClCnC,SAAU;MAElB,MAAMyC,eAAe,GAAGvE,KAAK,CAAC,eAAe,CAAC,IAAIsE,mBAAmB;MAErE,OAAAb,YAAA,CAAA5F,UAAA,EAAA2G,WAAA;QAAA,OAEUlE,aAAa;QAAA,cACTJ,KAAK,CAACE,KAAK;QAAA,uBAAAqE,MAAA,IAAXvE,KAAK,CAACE,KAAK,GAAAqE,MAAA;QAAA,iBACLrC,aAAa;QAAA,YAClBX,UAAU;QAAA,aACTqB,SAAS;QAAA,SACd,CACL,gBAAgB,EAChB;UACE,yBAAyB,EAAEnE,cAAc,CAACyB,KAAK,KAAK,SAAS;UAC7D,4BAA4B,EAAET,KAAK,CAACV,SAAS;UAC7C,uBAAuB,EAAEU,KAAK,CAACZ,KAAK;UACpC,yBAAyB,EAAEY,KAAK,CAACwE,OAAO;UACxC,uBAAuB,EAAExF,cAAc,CAACyB,KAAK,KAAK,OAAO;UACzD,yBAAyB,EAAEzB,cAAc,CAACyB,KAAK,KAAK;QACtD,CAAC,EACDT,KAAK,CAAC+E,KAAK;MACZ,GACIpB,cAAc;QAAA,SACX3D,KAAK,CAACgF,KAAK;QAAA;MAAA;QAIjB,GAAG3E,KAAK;QACR,cAAc,EAAEqE,cAAc,GAAG;UAAA,SAAAO,IAAA,GAAAhD,SAAA,CAAAC,MAAA,EAAIgD,IAAI,OAAAC,KAAA,CAAAF,IAAA,GAAAG,IAAA,MAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA;YAAJF,IAAI,CAAAE,IAAA,IAAAnD,SAAA,CAAAmD,IAAA;UAAA;UAAA,OAAAtB,YAAA,CAAAW,SAAA,SAEnCpE,KAAK,CAAC,cAAc,CAAC,GAAG,GAAG6E,IAAI,CAAC,EAChCX,kBAAkB;QAAA,CAEvB,GAAGpC,SAAS;QACb,eAAe,EAAEyC,eAAe,GAAG;UAAA,SAAAS,KAAA,GAAApD,SAAA,CAAAC,MAAA,EAAIgD,IAAI,OAAAC,KAAA,CAAAE,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;YAAJJ,IAAI,CAAAI,KAAA,IAAArD,SAAA,CAAAqD,KAAA;UAAA;UAAA,OAAAxB,YAAA,CAAAW,SAAA,SAErCE,mBAAmB,EACnBtE,KAAK,CAAC,eAAe,CAAC,GAAG,GAAG6E,IAAI,CAAC;QAAA,CAEtC,GAAG/C;MAAS;IAIrB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}
|