vuetify 3.3.3 → 3.3.4
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/_component-variables-labs.sass +2 -0
- package/dist/json/attributes.json +452 -12
- package/dist/json/importMap-labs.json +32 -0
- package/dist/json/importMap.json +20 -20
- package/dist/json/tags.json +150 -0
- package/dist/json/web-types.json +1609 -21
- package/dist/vuetify-labs.css +469 -192
- package/dist/vuetify-labs.d.ts +5178 -217
- package/dist/vuetify-labs.esm.js +1902 -990
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +1902 -990
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +210 -203
- package/dist/vuetify.d.ts +60 -45
- package/dist/vuetify.esm.js +142 -104
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +142 -104
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +159 -160
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.mts +32 -25
- package/lib/blueprints/md1.d.mts +32 -25
- package/lib/blueprints/md2.d.mts +32 -25
- package/lib/blueprints/md3.d.mts +32 -25
- package/lib/components/VAppBar/VAppBar.mjs +3 -10
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.css +4 -22
- package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +6 -17
- package/lib/components/VBreadcrumbs/index.d.mts +7 -7
- package/lib/components/VBtn/VBtn.css +11 -11
- package/lib/components/VBtn/VBtn.sass +1 -1
- package/lib/components/VBtn/_mixins.scss +1 -1
- package/lib/components/VChip/VChip.css +67 -67
- package/lib/components/VChip/_variables.scss +1 -1
- package/lib/components/VCombobox/VCombobox.css +4 -22
- package/lib/components/VCombobox/VCombobox.sass +6 -17
- package/lib/components/VCombobox/_variables.scss +3 -3
- package/lib/components/VCounter/index.d.mts +8 -8
- package/lib/components/VField/VField.css +71 -8
- package/lib/components/VField/VField.sass +9 -5
- package/lib/components/VField/_mixins.sass +7 -0
- package/lib/components/VFileInput/VFileInput.css +2 -17
- package/lib/components/VFileInput/VFileInput.mjs +0 -2
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.sass +2 -11
- package/lib/components/VFileInput/_variables.scss +3 -3
- package/lib/components/VInput/VInput.css +14 -1
- package/lib/components/VInput/VInput.sass +6 -0
- package/lib/components/VInput/_variables.scss +5 -1
- package/lib/components/VList/VListItem.mjs +1 -1
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.css +2 -20
- package/lib/components/VSelect/VSelect.mjs +1 -1
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.sass +2 -12
- package/lib/components/VSelect/_variables.scss +3 -3
- package/lib/components/VTabs/VTab.mjs +2 -2
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTimePicker/VTimePickerTitle.mjs +1 -1
- package/lib/components/index.d.mts +15 -15
- package/lib/components/index.mjs +1 -2
- package/lib/components/index.mjs.map +1 -1
- package/lib/composables/icons.mjs.map +1 -1
- package/lib/composables/list-items.mjs +5 -2
- package/lib/composables/list-items.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +1 -1
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/iconsets/fa-svg.d.mts +1 -0
- package/lib/iconsets/fa.d.mts +1 -0
- package/lib/iconsets/fa.mjs +2 -1
- package/lib/iconsets/fa.mjs.map +1 -1
- package/lib/iconsets/fa4.d.mts +1 -0
- package/lib/iconsets/fa4.mjs +2 -1
- package/lib/iconsets/fa4.mjs.map +1 -1
- package/lib/iconsets/md.d.mts +1 -0
- package/lib/iconsets/md.mjs +2 -1
- package/lib/iconsets/md.mjs.map +1 -1
- package/lib/iconsets/mdi-svg.d.mts +1 -0
- package/lib/iconsets/mdi-svg.mjs +2 -1
- package/lib/iconsets/mdi-svg.mjs.map +1 -1
- package/lib/iconsets/mdi.d.mts +1 -0
- package/lib/iconsets/mdi.mjs +2 -1
- package/lib/iconsets/mdi.mjs.map +1 -1
- package/lib/index.d.mts +45 -30
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +16 -12
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/headers.mjs +2 -5
- package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
- package/lib/labs/VDateInput/VDateInput.mjs +127 -0
- package/lib/labs/VDateInput/VDateInput.mjs.map +1 -0
- package/lib/labs/VDateInput/VDateInput.sass +11 -0
- package/lib/labs/VDateInput/VDateRangeInput.mjs +223 -0
- package/lib/labs/VDateInput/VDateRangeInput.mjs.map +1 -0
- package/lib/labs/VDateInput/VDateRangeInput.sass +10 -0
- package/lib/labs/VDateInput/composables.mjs +59 -0
- package/lib/labs/VDateInput/composables.mjs.map +1 -0
- package/lib/labs/VDateInput/index.d.mts +1352 -0
- package/lib/labs/VDateInput/index.mjs +3 -0
- package/lib/labs/VDateInput/index.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDateCard.css +33 -0
- package/lib/labs/VDatePicker/VDateCard.mjs +112 -0
- package/lib/labs/VDatePicker/VDateCard.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDateCard.sass +32 -0
- package/lib/labs/VDatePicker/VDatePicker.css +23 -0
- package/lib/labs/VDatePicker/VDatePicker.mjs +172 -0
- package/lib/labs/VDatePicker/VDatePicker.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePicker.sass +23 -0
- package/lib/labs/VDatePicker/VDatePickerControls.css +15 -0
- package/lib/labs/VDatePicker/VDatePickerControls.mjs +80 -0
- package/lib/labs/VDatePicker/VDatePickerControls.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePickerControls.sass +15 -0
- package/lib/labs/VDatePicker/VDatePickerHeader.css +54 -0
- package/lib/labs/VDatePicker/VDatePickerHeader.mjs +75 -0
- package/lib/labs/VDatePicker/VDatePickerHeader.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePickerHeader.sass +51 -0
- package/lib/labs/VDatePicker/VDatePickerInput.sass +17 -0
- package/lib/labs/VDatePicker/VDatePickerMonth.css +77 -0
- package/lib/labs/VDatePicker/VDatePickerMonth.mjs +286 -0
- package/lib/labs/VDatePicker/VDatePickerMonth.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePickerMonth.sass +69 -0
- package/lib/{components → labs}/VDatePicker/VDatePickerTitle.mjs +1 -1
- package/lib/labs/VDatePicker/VDatePickerTitle.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePickerYears.css +18 -0
- package/lib/labs/VDatePicker/VDatePickerYears.mjs +64 -0
- package/lib/labs/VDatePicker/VDatePickerYears.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePickerYears.sass +16 -0
- package/lib/labs/VDatePicker/composables.mjs +33 -0
- package/lib/labs/VDatePicker/composables.mjs.map +1 -0
- package/lib/labs/VDatePicker/index.d.mts +4430 -0
- package/lib/labs/VDatePicker/index.mjs +7 -0
- package/lib/labs/VDatePicker/index.mjs.map +1 -0
- package/lib/labs/VDatePicker/mixins/date-picker-table.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/createNativeLocaleFormatter.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/eventHelpers.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/index.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/isDateAllowed.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/monthChange.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/pad.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/sanitizeDateString.mjs.map +1 -0
- package/lib/labs/VDatePicker/utils.mjs +69 -0
- package/lib/labs/VDatePicker/utils.mjs.map +1 -0
- package/lib/labs/VDateRangePicker/VDateRangeCard.mjs +87 -0
- package/lib/labs/VDateRangePicker/VDateRangeCard.mjs.map +1 -0
- package/lib/labs/VDateRangePicker/VDateRangeCard.sass +33 -0
- package/lib/labs/VDateRangePicker/VDateRangePicker.mjs +131 -0
- package/lib/labs/VDateRangePicker/VDateRangePicker.mjs.map +1 -0
- package/lib/labs/VDateRangePicker/VDateRangePicker.sass +21 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerHeader.mjs +103 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerHeader.mjs.map +1 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerHeader.sass +39 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerMonth.mjs +61 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerMonth.mjs.map +1 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerMonth.sass +12 -0
- package/lib/labs/VDateRangePicker/index.d.mts +1065 -0
- package/lib/labs/VDateRangePicker/index.mjs +3 -0
- package/lib/labs/VDateRangePicker/index.mjs.map +1 -0
- package/lib/labs/VPicker/VPicker.css +57 -0
- package/lib/labs/VPicker/VPicker.mjs +47 -0
- package/lib/labs/VPicker/VPicker.mjs.map +1 -0
- package/lib/labs/VPicker/VPicker.sass +53 -0
- package/lib/labs/VPicker/VPickerTitle.mjs +4 -0
- package/lib/labs/VPicker/VPickerTitle.mjs.map +1 -0
- package/lib/labs/VPicker/index.d.mts +541 -0
- package/lib/labs/VPicker/index.mjs +3 -0
- package/lib/labs/VPicker/index.mjs.map +1 -0
- package/lib/labs/components.d.mts +5136 -198
- package/lib/labs/components.mjs +2 -0
- package/lib/labs/components.mjs.map +1 -1
- package/lib/labs/date/DateAdapter.mjs.map +1 -1
- package/lib/labs/date/adapters/vuetify.d.mts +28 -25
- package/lib/labs/date/adapters/vuetify.mjs +65 -75
- package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
- package/lib/labs/date/date.mjs +82 -11
- package/lib/labs/date/date.mjs.map +1 -1
- package/lib/labs/date/index.d.mts +31 -30
- package/lib/locale/af.mjs +14 -5
- package/lib/locale/af.mjs.map +1 -1
- package/lib/locale/ar.mjs +14 -5
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/az.mjs +14 -5
- package/lib/locale/az.mjs.map +1 -1
- package/lib/locale/bg.mjs +14 -5
- package/lib/locale/bg.mjs.map +1 -1
- package/lib/locale/ca.mjs +14 -5
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/locale/ckb.mjs +14 -5
- package/lib/locale/ckb.mjs.map +1 -1
- package/lib/locale/cs.mjs +14 -5
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/da.mjs +14 -5
- package/lib/locale/da.mjs.map +1 -1
- package/lib/locale/de.mjs +14 -5
- package/lib/locale/de.mjs.map +1 -1
- package/lib/locale/el.mjs +14 -5
- package/lib/locale/el.mjs.map +1 -1
- package/lib/locale/en.mjs +14 -5
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/es.mjs +14 -5
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/et.mjs +14 -5
- package/lib/locale/et.mjs.map +1 -1
- package/lib/locale/fa.mjs +14 -5
- package/lib/locale/fa.mjs.map +1 -1
- package/lib/locale/fi.mjs +14 -5
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/fr.mjs +14 -5
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/locale/he.mjs +14 -5
- package/lib/locale/he.mjs.map +1 -1
- package/lib/locale/hr.mjs +14 -5
- package/lib/locale/hr.mjs.map +1 -1
- package/lib/locale/hu.mjs +14 -5
- package/lib/locale/hu.mjs.map +1 -1
- package/lib/locale/id.mjs +14 -5
- package/lib/locale/id.mjs.map +1 -1
- package/lib/locale/index.d.mts +588 -210
- package/lib/locale/it.mjs +14 -5
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/ja.mjs +14 -5
- package/lib/locale/ja.mjs.map +1 -1
- package/lib/locale/ko.mjs +14 -5
- package/lib/locale/ko.mjs.map +1 -1
- package/lib/locale/lt.mjs +14 -5
- package/lib/locale/lt.mjs.map +1 -1
- package/lib/locale/lv.mjs +14 -5
- package/lib/locale/lv.mjs.map +1 -1
- package/lib/locale/nl.mjs +14 -5
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/locale/no.mjs +14 -5
- package/lib/locale/no.mjs.map +1 -1
- package/lib/locale/pl.mjs +14 -5
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/locale/pt.mjs +14 -5
- package/lib/locale/pt.mjs.map +1 -1
- package/lib/locale/ro.mjs +14 -5
- package/lib/locale/ro.mjs.map +1 -1
- package/lib/locale/ru.mjs +14 -5
- package/lib/locale/ru.mjs.map +1 -1
- package/lib/locale/sk.mjs +14 -5
- package/lib/locale/sk.mjs.map +1 -1
- package/lib/locale/sl.mjs +14 -5
- package/lib/locale/sl.mjs.map +1 -1
- package/lib/locale/sr-Cyrl.mjs +14 -5
- package/lib/locale/sr-Cyrl.mjs.map +1 -1
- package/lib/locale/sr-Latn.mjs +14 -5
- package/lib/locale/sr-Latn.mjs.map +1 -1
- package/lib/locale/sv.mjs +14 -5
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/locale/th.mjs +14 -5
- package/lib/locale/th.mjs.map +1 -1
- package/lib/locale/tr.mjs +14 -5
- package/lib/locale/tr.mjs.map +1 -1
- package/lib/locale/uk.mjs +14 -5
- package/lib/locale/uk.mjs.map +1 -1
- package/lib/locale/vi.mjs +14 -5
- package/lib/locale/vi.mjs.map +1 -1
- package/lib/locale/zh-Hans.mjs +14 -5
- package/lib/locale/zh-Hans.mjs.map +1 -1
- package/lib/locale/zh-Hant.mjs +14 -5
- package/lib/locale/zh-Hant.mjs.map +1 -1
- package/lib/util/dateTimeUtils.mjs +68 -0
- package/lib/util/dateTimeUtils.mjs.map +1 -1
- package/package.json +5 -2
- package/lib/components/VDatePicker/VDatePicker.mjs +0 -475
- package/lib/components/VDatePicker/VDatePicker.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerDateTable.mjs +0 -120
- package/lib/components/VDatePicker/VDatePickerDateTable.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerHeader.mjs +0 -136
- package/lib/components/VDatePicker/VDatePickerHeader.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerHeader.sass +0 -46
- package/lib/components/VDatePicker/VDatePickerMonthTable.mjs +0 -48
- package/lib/components/VDatePicker/VDatePickerMonthTable.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerTitle.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerYears.mjs +0 -84
- package/lib/components/VDatePicker/VDatePickerYears.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerYears.sass +0 -30
- package/lib/components/VDatePicker/index.mjs +0 -18
- package/lib/components/VDatePicker/index.mjs.map +0 -1
- package/lib/components/VDatePicker/mixins/date-picker-table.mjs.map +0 -1
- package/lib/components/VDatePicker/util/createNativeLocaleFormatter.mjs.map +0 -1
- package/lib/components/VDatePicker/util/eventHelpers.mjs.map +0 -1
- package/lib/components/VDatePicker/util/index.mjs.map +0 -1
- package/lib/components/VDatePicker/util/isDateAllowed.mjs.map +0 -1
- package/lib/components/VDatePicker/util/monthChange.mjs.map +0 -1
- package/lib/components/VDatePicker/util/pad.mjs.map +0 -1
- package/lib/components/VDatePicker/util/sanitizeDateString.mjs.map +0 -1
- package/lib/components/VPicker/VPicker.mjs +0 -86
- package/lib/components/VPicker/VPicker.mjs.map +0 -1
- package/lib/components/VPicker/VPicker.sass +0 -94
- package/lib/components/VPicker/index.mjs +0 -4
- package/lib/components/VPicker/index.mjs.map +0 -1
- /package/lib/{components → labs}/VDatePicker/VDatePickerTable.sass +0 -0
- /package/lib/{components → labs}/VDatePicker/VDatePickerTitle.sass +0 -0
- /package/lib/{components → labs}/VDatePicker/_variables.scss +0 -0
- /package/lib/{components → labs}/VDatePicker/mixins/date-picker-table.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/createNativeLocaleFormatter.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/eventHelpers.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/index.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/isDateAllowed.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/monthChange.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/pad.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/sanitizeDateString.mjs +0 -0
- /package/lib/{components → labs}/VPicker/_variables.scss +0 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { resolveDirective as _resolveDirective, mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
|
|
2
|
+
// Styles
|
|
3
|
+
import "./VDateRangeInput.css";
|
|
4
|
+
|
|
5
|
+
// Components
|
|
6
|
+
import { VDateRangeCard, VDateRangePicker } from "../VDateRangePicker/index.mjs";
|
|
7
|
+
import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.mjs";
|
|
8
|
+
import { VDialog } from "../../components/VDialog/index.mjs";
|
|
9
|
+
import { VMenu } from "../../components/VMenu/index.mjs";
|
|
10
|
+
import { VTextField } from "../../components/VTextField/index.mjs"; // Composables
|
|
11
|
+
import { createDateInput, dateEmits, makeDateProps } from "./composables.mjs";
|
|
12
|
+
import { useDisplay, useLocale } from "../../composables/index.mjs";
|
|
13
|
+
import { provideDefaults } from "../../composables/defaults.mjs"; // Utilities
|
|
14
|
+
import { ref, toRef, watch } from 'vue';
|
|
15
|
+
import { genericComponent, useRender } from "../../util/index.mjs"; // Types
|
|
16
|
+
export const VDateRangeInput = genericComponent()({
|
|
17
|
+
name: 'VDateRangeInput',
|
|
18
|
+
props: {
|
|
19
|
+
color: String,
|
|
20
|
+
prependIcon: {
|
|
21
|
+
type: String,
|
|
22
|
+
default: '$calendar'
|
|
23
|
+
},
|
|
24
|
+
placeholder: {
|
|
25
|
+
type: String,
|
|
26
|
+
default: 'mm/dd/yyyy'
|
|
27
|
+
},
|
|
28
|
+
fromLabel: String,
|
|
29
|
+
toLabel: String,
|
|
30
|
+
dividerText: {
|
|
31
|
+
type: String,
|
|
32
|
+
default: '$vuetify.dateRangeInput.divider'
|
|
33
|
+
},
|
|
34
|
+
mobile: Boolean,
|
|
35
|
+
...makeDateProps(),
|
|
36
|
+
modelValue: {
|
|
37
|
+
type: null
|
|
38
|
+
},
|
|
39
|
+
displayDate: {
|
|
40
|
+
type: null
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
emits: {
|
|
44
|
+
...dateEmits
|
|
45
|
+
},
|
|
46
|
+
setup(props) {
|
|
47
|
+
const {
|
|
48
|
+
t
|
|
49
|
+
} = useLocale();
|
|
50
|
+
const {
|
|
51
|
+
adapter,
|
|
52
|
+
model,
|
|
53
|
+
inputMode,
|
|
54
|
+
viewMode,
|
|
55
|
+
displayDate
|
|
56
|
+
} = createDateInput(props, true);
|
|
57
|
+
const startInput = ref(model.value.length ? adapter.format(model.value[0], 'keyboardDate') : '');
|
|
58
|
+
const endInput = ref(model.value.length > 1 ? adapter.format(model.value[1], 'keyboardDate') : '');
|
|
59
|
+
function handleBlur(index) {
|
|
60
|
+
const {
|
|
61
|
+
isValid,
|
|
62
|
+
isSameDay,
|
|
63
|
+
date
|
|
64
|
+
} = adapter;
|
|
65
|
+
if (index === 0 && isValid(startInput.value)) {
|
|
66
|
+
const newDate = date(startInput.value);
|
|
67
|
+
if (!isSameDay(newDate, model.value[0])) {
|
|
68
|
+
model.value = [newDate, model.value[1]];
|
|
69
|
+
displayDate.value = newDate;
|
|
70
|
+
}
|
|
71
|
+
} else if (index === 1 && isValid(endInput.value)) {
|
|
72
|
+
const newDate = date(endInput.value);
|
|
73
|
+
if (!isSameDay(newDate, model.value[1])) {
|
|
74
|
+
model.value = [model.value[0], newDate];
|
|
75
|
+
displayDate.value = newDate;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
watch(model, newValue => {
|
|
80
|
+
if (!newValue.length) return;
|
|
81
|
+
if (newValue[0]) {
|
|
82
|
+
startInput.value = adapter.format(newValue[0], 'keyboardDate');
|
|
83
|
+
}
|
|
84
|
+
if (newValue[1]) {
|
|
85
|
+
endInput.value = adapter.format(newValue[1], 'keyboardDate');
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
const {
|
|
89
|
+
mobile
|
|
90
|
+
} = useDisplay();
|
|
91
|
+
provideDefaults({
|
|
92
|
+
VTextField: {
|
|
93
|
+
color: toRef(props, 'color')
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
useRender(() => {
|
|
97
|
+
if (mobile.value) {
|
|
98
|
+
return _createVNode(VDialog, {
|
|
99
|
+
"fullscreen": inputMode.value === 'calendar',
|
|
100
|
+
"contentClass": "v-date-range-input__dialog-content"
|
|
101
|
+
}, {
|
|
102
|
+
activator: _ref => {
|
|
103
|
+
let {
|
|
104
|
+
props: slotProps
|
|
105
|
+
} = _ref;
|
|
106
|
+
return _createVNode("div", _mergeProps({
|
|
107
|
+
"class": "v-date-range-input"
|
|
108
|
+
}, slotProps), [_createVNode(VTextField, {
|
|
109
|
+
"modelValue": startInput.value,
|
|
110
|
+
"onBlur": () => handleBlur(0),
|
|
111
|
+
"prependInnerIcon": props.prependIcon,
|
|
112
|
+
"placeholder": props.placeholder,
|
|
113
|
+
"label": props.fromLabel
|
|
114
|
+
}, null), _createVNode("div", {
|
|
115
|
+
"class": "v-date-range-input__divider"
|
|
116
|
+
}, [t(props.dividerText)]), _createVNode(VTextField, {
|
|
117
|
+
"modelValue": endInput.value,
|
|
118
|
+
"onBlur": () => handleBlur(1),
|
|
119
|
+
"prependInnerIcon": props.prependIcon,
|
|
120
|
+
"placeholder": props.placeholder,
|
|
121
|
+
"label": props.toLabel
|
|
122
|
+
}, null)]);
|
|
123
|
+
},
|
|
124
|
+
default: _ref2 => {
|
|
125
|
+
let {
|
|
126
|
+
isActive
|
|
127
|
+
} = _ref2;
|
|
128
|
+
return _createVNode(VDateRangePicker, {
|
|
129
|
+
"modelValue": model.value,
|
|
130
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
131
|
+
"displayDate": displayDate.value,
|
|
132
|
+
"onUpdate:displayDate": $event => displayDate.value = $event,
|
|
133
|
+
"viewMode": viewMode.value,
|
|
134
|
+
"onUpdate:viewMode": $event => viewMode.value = $event,
|
|
135
|
+
"inputMode": inputMode.value,
|
|
136
|
+
"onUpdate:inputMode": $event => inputMode.value = $event,
|
|
137
|
+
"onSave": () => {
|
|
138
|
+
isActive.value = false;
|
|
139
|
+
},
|
|
140
|
+
"onCancel": () => {
|
|
141
|
+
isActive.value = false;
|
|
142
|
+
}
|
|
143
|
+
}, null);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
return _createVNode(VDefaultsProvider, {
|
|
148
|
+
"defaults": {
|
|
149
|
+
VOverlay: {
|
|
150
|
+
minWidth: '100%'
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}, {
|
|
154
|
+
default: () => [_createVNode("div", {
|
|
155
|
+
"class": "v-date-range-input"
|
|
156
|
+
}, [_createVNode(VMenu, {
|
|
157
|
+
"offset": [-28, 0],
|
|
158
|
+
"closeOnContentClick": false,
|
|
159
|
+
"contentClass": "foo"
|
|
160
|
+
}, {
|
|
161
|
+
activator: _ref3 => {
|
|
162
|
+
let {
|
|
163
|
+
props: slotProps
|
|
164
|
+
} = _ref3;
|
|
165
|
+
return _createVNode("div", _mergeProps(slotProps, {
|
|
166
|
+
"style": "flex: 1 1 auto;"
|
|
167
|
+
}), [_createVNode(VTextField, {
|
|
168
|
+
"modelValue": startInput.value,
|
|
169
|
+
"onUpdate:modelValue": $event => startInput.value = $event,
|
|
170
|
+
"onBlur": () => handleBlur(0),
|
|
171
|
+
"prependInnerIcon": props.prependIcon,
|
|
172
|
+
"placeholder": props.placeholder,
|
|
173
|
+
"label": props.fromLabel
|
|
174
|
+
}, null)]);
|
|
175
|
+
},
|
|
176
|
+
default: () => _createVNode(VDateRangeCard, {
|
|
177
|
+
"modelValue": model.value,
|
|
178
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
179
|
+
"displayDate": displayDate.value,
|
|
180
|
+
"onUpdate:displayDate": $event => displayDate.value = $event,
|
|
181
|
+
"viewMode": viewMode.value,
|
|
182
|
+
"onUpdate:viewMode": $event => viewMode.value = $event,
|
|
183
|
+
"inputMode": inputMode.value,
|
|
184
|
+
"onUpdate:inputMode": $event => inputMode.value = $event
|
|
185
|
+
}, null)
|
|
186
|
+
}), _createVNode("div", {
|
|
187
|
+
"class": "v-date-range-input__divider"
|
|
188
|
+
}, [t(props.dividerText)]), _createVNode(VMenu, {
|
|
189
|
+
"key": "bar",
|
|
190
|
+
"offset": [-28, 0],
|
|
191
|
+
"closeOnContentClick": false
|
|
192
|
+
}, {
|
|
193
|
+
activator: _ref4 => {
|
|
194
|
+
let {
|
|
195
|
+
props: slotProps
|
|
196
|
+
} = _ref4;
|
|
197
|
+
return _createVNode("div", _mergeProps(slotProps, {
|
|
198
|
+
"style": "flex: 1 1 auto;"
|
|
199
|
+
}), [_createVNode(VTextField, {
|
|
200
|
+
"modelValue": endInput.value,
|
|
201
|
+
"onUpdate:modelValue": $event => endInput.value = $event,
|
|
202
|
+
"onBlur": () => handleBlur(1),
|
|
203
|
+
"prependInnerIcon": props.prependIcon,
|
|
204
|
+
"placeholder": props.placeholder,
|
|
205
|
+
"label": props.toLabel
|
|
206
|
+
}, null)]);
|
|
207
|
+
},
|
|
208
|
+
default: () => _createVNode(VDateRangeCard, {
|
|
209
|
+
"modelValue": model.value,
|
|
210
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
211
|
+
"displayDate": displayDate.value,
|
|
212
|
+
"onUpdate:displayDate": $event => displayDate.value = $event,
|
|
213
|
+
"viewMode": viewMode.value,
|
|
214
|
+
"onUpdate:viewMode": $event => viewMode.value = $event,
|
|
215
|
+
"inputMode": inputMode.value,
|
|
216
|
+
"onUpdate:inputMode": $event => inputMode.value = $event
|
|
217
|
+
}, null)
|
|
218
|
+
})])]
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=VDateRangeInput.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VDateRangeInput.mjs","names":["VDateRangeCard","VDateRangePicker","VDefaultsProvider","VDialog","VMenu","VTextField","createDateInput","dateEmits","makeDateProps","useDisplay","useLocale","provideDefaults","ref","toRef","watch","genericComponent","useRender","VDateRangeInput","name","props","color","String","prependIcon","type","default","placeholder","fromLabel","toLabel","dividerText","mobile","Boolean","modelValue","displayDate","emits","setup","t","adapter","model","inputMode","viewMode","startInput","value","length","format","endInput","handleBlur","index","isValid","isSameDay","date","newDate","newValue","_createVNode","activator","_ref","slotProps","_mergeProps","onBlur","_ref2","isActive","$event","onSave","onCancel","VOverlay","minWidth","_ref3","_ref4"],"sources":["../../../src/labs/VDateInput/VDateRangeInput.tsx"],"sourcesContent":["// Styles\nimport './VDateRangeInput.sass'\n\n// Components\nimport { VDateRangeCard, VDateRangePicker } from '../VDateRangePicker'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDialog } from '@/components/VDialog'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { createDateInput, dateEmits, makeDateProps } from './composables'\nimport { useDisplay, useLocale } from '@/composables'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { ref, toRef, watch } from 'vue'\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VDateRangeInput = genericComponent()({\n name: 'VDateRangeInput',\n\n props: {\n color: String,\n prependIcon: {\n type: String,\n default: '$calendar',\n },\n placeholder: {\n type: String,\n default: 'mm/dd/yyyy',\n },\n fromLabel: String,\n toLabel: String,\n dividerText: {\n type: String,\n default: '$vuetify.dateRangeInput.divider',\n },\n mobile: Boolean,\n ...makeDateProps(),\n modelValue: {\n type: null as unknown as PropType<any[]>,\n },\n displayDate: {\n type: null as unknown as PropType<any>,\n },\n },\n\n emits: {\n ...dateEmits,\n },\n\n setup (props) {\n const { t } = useLocale()\n const { adapter, model, inputMode, viewMode, displayDate } = createDateInput(props, true)\n\n const startInput = ref(model.value.length ? adapter.format(model.value[0], 'keyboardDate') : '')\n const endInput = ref(model.value.length > 1 ? adapter.format(model.value[1], 'keyboardDate') : '')\n\n function handleBlur (index: number) {\n const { isValid, isSameDay, date } = adapter\n\n if (index === 0 && isValid(startInput.value)) {\n const newDate = date(startInput.value)\n if (!isSameDay(newDate, model.value[0])) {\n model.value = [newDate, model.value[1]]\n displayDate.value = newDate\n }\n } else if (index === 1 && isValid(endInput.value)) {\n const newDate = date(endInput.value)\n if (!isSameDay(newDate, model.value[1])) {\n model.value = [model.value[0], newDate]\n displayDate.value = newDate\n }\n }\n }\n\n watch(model, newValue => {\n if (!newValue.length) return\n\n if (newValue[0]) {\n startInput.value = adapter.format(newValue[0], 'keyboardDate')\n }\n\n if (newValue[1]) {\n endInput.value = adapter.format(newValue[1], 'keyboardDate')\n }\n })\n\n const { mobile } = useDisplay()\n\n provideDefaults({\n VTextField: {\n color: toRef(props, 'color'),\n },\n })\n\n useRender(() => {\n if (mobile.value) {\n return (\n <VDialog\n fullscreen={ inputMode.value === 'calendar' }\n contentClass=\"v-date-range-input__dialog-content\"\n v-slots={{\n activator: ({ props: slotProps }) => (\n <div class=\"v-date-range-input\" { ...slotProps }>\n <VTextField\n modelValue={ startInput.value }\n onBlur={ () => handleBlur(0) }\n prependInnerIcon={ props.prependIcon }\n placeholder={ props.placeholder }\n label={ props.fromLabel }\n />\n <div class=\"v-date-range-input__divider\">{ t(props.dividerText) }</div>\n <VTextField\n modelValue={ endInput.value }\n onBlur={ () => handleBlur(1) }\n prependInnerIcon={ props.prependIcon }\n placeholder={ props.placeholder }\n label={ props.toLabel }\n />\n </div>\n ),\n default: ({ isActive }) => (\n <VDateRangePicker\n v-model={ model.value }\n v-model:displayDate={ displayDate.value }\n v-model:viewMode={ viewMode.value }\n v-model:inputMode={ inputMode.value }\n onSave={ () => {\n isActive.value = false\n }}\n onCancel={ () => {\n isActive.value = false\n }}\n />\n ),\n }}\n />\n )\n }\n\n return (\n <VDefaultsProvider defaults={{ VOverlay: { minWidth: '100%' } }}>\n <div class=\"v-date-range-input\">\n <VMenu\n offset={[-28, 0]}\n closeOnContentClick={ false }\n contentClass=\"foo\"\n v-slots={{\n activator: ({ props: slotProps }) => (\n <div { ...slotProps } style=\"flex: 1 1 auto;\">\n <VTextField\n v-model={ startInput.value }\n onBlur={ () => handleBlur(0) }\n prependInnerIcon={ props.prependIcon }\n placeholder={ props.placeholder }\n label={ props.fromLabel }\n />\n </div>\n ),\n default: () => (\n <VDateRangeCard\n v-model={ model.value }\n v-model:displayDate={ displayDate.value }\n v-model:viewMode={ viewMode.value }\n v-model:inputMode={ inputMode.value }\n />\n ),\n }}\n />\n <div class=\"v-date-range-input__divider\">{ t(props.dividerText) }</div>\n <VMenu\n key=\"bar\"\n offset={[-28, 0]}\n closeOnContentClick={ false }\n v-slots={{\n activator: ({ props: slotProps }) => (\n <div { ...slotProps } style=\"flex: 1 1 auto;\">\n <VTextField\n v-model={ endInput.value }\n onBlur={ () => handleBlur(1) }\n prependInnerIcon={ props.prependIcon }\n placeholder={ props.placeholder }\n label={ props.toLabel }\n />\n </div>\n ),\n default: () => (\n <VDateRangeCard\n v-model={ model.value }\n v-model:displayDate={ displayDate.value }\n v-model:viewMode={ viewMode.value }\n v-model:inputMode={ inputMode.value }\n />\n ),\n }}\n />\n </div>\n </VDefaultsProvider>\n )\n })\n },\n})\n\nexport type VDateRangeInput = InstanceType<typeof VDateRangeInput>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// Composables
|
|
2
|
+
import { useProxiedModel } from "../../composables/proxiedModel.mjs";
|
|
3
|
+
import { useDate } from "../date/index.mjs"; // Utilities
|
|
4
|
+
import { propsFactory, wrapInArray } from "../../util/index.mjs"; // Types
|
|
5
|
+
export const makeDateProps = propsFactory({
|
|
6
|
+
modelValue: {
|
|
7
|
+
type: null,
|
|
8
|
+
default: () => []
|
|
9
|
+
},
|
|
10
|
+
displayDate: {
|
|
11
|
+
type: null,
|
|
12
|
+
default: new Date()
|
|
13
|
+
},
|
|
14
|
+
inputMode: {
|
|
15
|
+
type: String,
|
|
16
|
+
default: 'calendar'
|
|
17
|
+
},
|
|
18
|
+
viewMode: {
|
|
19
|
+
type: String,
|
|
20
|
+
default: 'month'
|
|
21
|
+
},
|
|
22
|
+
format: String
|
|
23
|
+
}, 'date');
|
|
24
|
+
export const dateEmits = {
|
|
25
|
+
'update:modelValue': date => true,
|
|
26
|
+
'update:displayDate': date => true,
|
|
27
|
+
'update:focused': focused => true,
|
|
28
|
+
'update:inputMode': inputMode => true,
|
|
29
|
+
'update:viewMode': viewMode => true
|
|
30
|
+
};
|
|
31
|
+
export function createDateInput(props, isRange) {
|
|
32
|
+
const adapter = useDate();
|
|
33
|
+
const model = useProxiedModel(props, 'modelValue', [], v => {
|
|
34
|
+
if (v == null) return [];
|
|
35
|
+
const arr = wrapInArray(v).filter(v => !!v);
|
|
36
|
+
return arr.map(adapter.date);
|
|
37
|
+
}, v => {
|
|
38
|
+
const arr = wrapInArray(v);
|
|
39
|
+
const formatted = props.format ? arr.map(d => adapter.format(d, props.format)) : arr;
|
|
40
|
+
if (isRange) return formatted;
|
|
41
|
+
return formatted[0];
|
|
42
|
+
});
|
|
43
|
+
const inputMode = useProxiedModel(props, 'inputMode');
|
|
44
|
+
const viewMode = useProxiedModel(props, 'viewMode');
|
|
45
|
+
const displayDate = useProxiedModel(props, 'displayDate', model.value.length ? model.value[0] : adapter.date());
|
|
46
|
+
function parseKeyboardDate(input, fallback) {
|
|
47
|
+
const date = adapter.date(input);
|
|
48
|
+
return adapter.isValid(date) ? date : fallback;
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
model,
|
|
52
|
+
adapter,
|
|
53
|
+
inputMode,
|
|
54
|
+
viewMode,
|
|
55
|
+
displayDate,
|
|
56
|
+
parseKeyboardDate
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=composables.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composables.mjs","names":["useProxiedModel","useDate","propsFactory","wrapInArray","makeDateProps","modelValue","type","default","displayDate","Date","inputMode","String","viewMode","format","dateEmits","date","focused","createDateInput","props","isRange","adapter","model","v","arr","filter","map","formatted","d","value","length","parseKeyboardDate","input","fallback","isValid"],"sources":["../../../src/labs/VDateInput/composables.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useDate } from '@/labs/date'\n\n// Utilities\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeDateProps = propsFactory({\n modelValue: {\n type: null as unknown as PropType<any[]>,\n default: () => [],\n },\n displayDate: {\n type: null as unknown as PropType<any>,\n default: new Date(),\n },\n inputMode: {\n type: String as PropType<'calendar' | 'keyboard'>,\n default: 'calendar',\n },\n viewMode: {\n type: String as PropType<'month' | 'year'>,\n default: 'month',\n },\n format: String,\n}, 'date')\n\nexport const dateEmits = {\n 'update:modelValue': (date: any[]) => true,\n 'update:displayDate': (date: any) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:inputMode': (inputMode: 'calendar' | 'keyboard') => true,\n 'update:viewMode': (viewMode: 'month' | 'year') => true,\n}\n\ntype DateInputProps = {\n modelValue?: any | any[]\n 'onUpdate:modelValue': ((value: any | any[]) => void) | undefined\n displayDate?: any\n 'onUpdate:displayDate': ((value: any) => void) | undefined\n inputMode?: 'calendar' | 'keyboard'\n 'onUpdate:inputMode': ((value: 'calendar' | 'keyboard') => void) | undefined\n viewMode?: 'month' | 'year'\n 'onUpdate:viewMode': ((value: 'month' | 'year') => void) | undefined\n format?: string\n}\n\nexport function createDateInput (props: DateInputProps, isRange: boolean) {\n const adapter = useDate()\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => {\n if (v == null) return []\n const arr = wrapInArray(v).filter(v => !!v)\n return arr.map(adapter.date) as Date[]\n },\n v => {\n const arr = wrapInArray(v)\n const formatted = props.format ? arr.map(d => adapter.format(d, props.format as any)) : arr\n if (isRange) return formatted\n return formatted[0]\n })\n\n const inputMode = useProxiedModel(props, 'inputMode')\n const viewMode = useProxiedModel(props, 'viewMode')\n const displayDate = useProxiedModel(props, 'displayDate', model.value.length ? model.value[0] : adapter.date())\n\n function parseKeyboardDate (input: string, fallback?: any) {\n const date = adapter.date(input)\n\n return adapter.isValid(date) ? date : fallback\n }\n\n return {\n model,\n adapter,\n inputMode,\n viewMode,\n displayDate,\n parseKeyboardDate,\n }\n}\n"],"mappings":"AAAA;AAAA,SACSA,eAAe;AAAA,SACfC,OAAO,6BAEhB;AAAA,SACSC,YAAY,EAAEC,WAAW,gCAElC;AAGA,OAAO,MAAMC,aAAa,GAAGF,YAAY,CAAC;EACxCG,UAAU,EAAE;IACVC,IAAI,EAAE,IAAkC;IACxCC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,WAAW,EAAE;IACXF,IAAI,EAAE,IAAgC;IACtCC,OAAO,EAAE,IAAIE,IAAI;EACnB,CAAC;EACDC,SAAS,EAAE;IACTJ,IAAI,EAAEK,MAA2C;IACjDJ,OAAO,EAAE;EACX,CAAC;EACDK,QAAQ,EAAE;IACRN,IAAI,EAAEK,MAAoC;IAC1CJ,OAAO,EAAE;EACX,CAAC;EACDM,MAAM,EAAEF;AACV,CAAC,EAAE,MAAM,CAAC;AAEV,OAAO,MAAMG,SAAS,GAAG;EACvB,mBAAmB,EAAGC,IAAW,IAAK,IAAI;EAC1C,oBAAoB,EAAGA,IAAS,IAAK,IAAI;EACzC,gBAAgB,EAAGC,OAAgB,IAAK,IAAI;EAC5C,kBAAkB,EAAGN,SAAkC,IAAK,IAAI;EAChE,iBAAiB,EAAGE,QAA0B,IAAK;AACrD,CAAC;AAcD,OAAO,SAASK,eAAeA,CAAEC,KAAqB,EAAEC,OAAgB,EAAE;EACxE,MAAMC,OAAO,GAAGnB,OAAO,EAAE;EACzB,MAAMoB,KAAK,GAAGrB,eAAe,CAC3BkB,KAAK,EACL,YAAY,EACZ,EAAE,EACFI,CAAC,IAAI;IACH,IAAIA,CAAC,IAAI,IAAI,EAAE,OAAO,EAAE;IACxB,MAAMC,GAAG,GAAGpB,WAAW,CAACmB,CAAC,CAAC,CAACE,MAAM,CAACF,CAAC,IAAI,CAAC,CAACA,CAAC,CAAC;IAC3C,OAAOC,GAAG,CAACE,GAAG,CAACL,OAAO,CAACL,IAAI,CAAC;EAC9B,CAAC,EACDO,CAAC,IAAI;IACH,MAAMC,GAAG,GAAGpB,WAAW,CAACmB,CAAC,CAAC;IAC1B,MAAMI,SAAS,GAAGR,KAAK,CAACL,MAAM,GAAGU,GAAG,CAACE,GAAG,CAACE,CAAC,IAAIP,OAAO,CAACP,MAAM,CAACc,CAAC,EAAET,KAAK,CAACL,MAAM,CAAQ,CAAC,GAAGU,GAAG;IAC3F,IAAIJ,OAAO,EAAE,OAAOO,SAAS;IAC7B,OAAOA,SAAS,CAAC,CAAC,CAAC;EACrB,CAAC,CAAC;EAEJ,MAAMhB,SAAS,GAAGV,eAAe,CAACkB,KAAK,EAAE,WAAW,CAAC;EACrD,MAAMN,QAAQ,GAAGZ,eAAe,CAACkB,KAAK,EAAE,UAAU,CAAC;EACnD,MAAMV,WAAW,GAAGR,eAAe,CAACkB,KAAK,EAAE,aAAa,EAAEG,KAAK,CAACO,KAAK,CAACC,MAAM,GAAGR,KAAK,CAACO,KAAK,CAAC,CAAC,CAAC,GAAGR,OAAO,CAACL,IAAI,EAAE,CAAC;EAE/G,SAASe,iBAAiBA,CAAEC,KAAa,EAAEC,QAAc,EAAE;IACzD,MAAMjB,IAAI,GAAGK,OAAO,CAACL,IAAI,CAACgB,KAAK,CAAC;IAEhC,OAAOX,OAAO,CAACa,OAAO,CAAClB,IAAI,CAAC,GAAGA,IAAI,GAAGiB,QAAQ;EAChD;EAEA,OAAO;IACLX,KAAK;IACLD,OAAO;IACPV,SAAS;IACTE,QAAQ;IACRJ,WAAW;IACXsB;EACF,CAAC;AACH"}
|