@vuetify/nightly 3.7.3-dev.2024-10-17 → 3.7.3-dev.2024-10-29
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 +69 -69
- package/dist/json/importMap-labs.json +8 -8
- package/dist/json/importMap.json +122 -122
- package/dist/json/web-types.json +341 -341
- package/dist/vuetify-labs.css +3110 -3110
- package/dist/vuetify-labs.d.ts +2966 -13801
- package/dist/vuetify-labs.esm.js +10 -4
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +10 -4
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +2545 -2545
- package/dist/vuetify.d.ts +3010 -12194
- package/dist/vuetify.esm.js +10 -4
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +10 -4
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +4 -4
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/VAlert.mjs +1 -1
- package/lib/components/VAlert/index.d.mts +8 -86
- package/lib/components/VApp/index.d.mts +4 -20
- package/lib/components/VAppBar/VAppBar.mjs +1 -1
- package/lib/components/VAppBar/VAppBarNavIcon.mjs +1 -1
- package/lib/components/VAppBar/VAppBarTitle.mjs +1 -1
- package/lib/components/VAppBar/index.d.mts +12 -148
- package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
- package/lib/components/VAutocomplete/index.d.mts +201 -1360
- package/lib/components/VAvatar/index.d.mts +4 -31
- package/lib/components/VBadge/VBadge.mjs +1 -1
- package/lib/components/VBadge/index.d.mts +4 -41
- package/lib/components/VBanner/VBanner.mjs +1 -1
- package/lib/components/VBanner/index.d.mts +12 -88
- package/lib/components/VBottomNavigation/index.d.mts +4 -32
- package/lib/components/VBottomSheet/VBottomSheet.mjs +1 -1
- package/lib/components/VBottomSheet/index.d.mts +4 -88
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +1 -1
- package/lib/components/VBreadcrumbs/index.d.mts +12 -65
- package/lib/components/VBtn/VBtn.mjs +1 -1
- package/lib/components/VBtn/index.d.mts +4 -72
- package/lib/components/VBtnGroup/VBtnGroup.mjs +1 -1
- package/lib/components/VBtnGroup/index.d.mts +4 -28
- package/lib/components/VBtnToggle/VBtnToggle.mjs +1 -1
- package/lib/components/VBtnToggle/index.d.mts +4 -24
- package/lib/components/VCard/VCard.mjs +1 -1
- package/lib/components/VCard/VCardItem.mjs +1 -1
- package/lib/components/VCard/VCardSubtitle.mjs +1 -1
- package/lib/components/VCard/VCardText.mjs +1 -1
- package/lib/components/VCard/index.d.mts +24 -190
- package/lib/components/VCarousel/VCarousel.mjs +1 -1
- package/lib/components/VCarousel/VCarouselItem.mjs +1 -1
- package/lib/components/VCarousel/index.d.mts +8 -86
- package/lib/components/VCheckbox/VCheckbox.mjs +1 -1
- package/lib/components/VCheckbox/VCheckboxBtn.mjs +1 -1
- package/lib/components/VCheckbox/index.d.mts +8 -90
- package/lib/components/VChip/VChip.mjs +1 -1
- package/lib/components/VChip/index.d.mts +4 -105
- package/lib/components/VChipGroup/VChipGroup.mjs +1 -1
- package/lib/components/VChipGroup/index.d.mts +4 -28
- package/lib/components/VCode/index.d.mts +4 -18
- package/lib/components/VColorPicker/VColorPicker.mjs +1 -1
- package/lib/components/VColorPicker/index.d.mts +4 -68
- package/lib/components/VCombobox/VCombobox.mjs +1 -1
- package/lib/components/VCombobox/index.d.mts +201 -1360
- package/lib/components/VConfirmEdit/VConfirmEdit.mjs +1 -1
- package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.browser.mjs +1 -1
- package/lib/components/VConfirmEdit/index.d.mts +6 -13
- package/lib/components/VCounter/VCounter.mjs +1 -1
- package/lib/components/VCounter/index.d.mts +9 -31
- package/lib/components/VDataIterator/index.d.mts +12 -56
- package/lib/components/VDataTable/VDataTable.mjs +1 -1
- package/lib/components/VDataTable/VDataTableFooter.mjs +1 -1
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.mjs +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.mjs +1 -1
- package/lib/components/VDataTable/VDataTableRow.mjs +1 -1
- package/lib/components/VDataTable/VDataTableRows.mjs +1 -1
- package/lib/components/VDataTable/VDataTableServer.mjs +1 -1
- package/lib/components/VDataTable/VDataTableVirtual.mjs +1 -1
- package/lib/components/VDataTable/index.d.mts +36 -388
- package/lib/components/VDatePicker/VDatePicker.mjs +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.mjs +1 -1
- package/lib/components/VDatePicker/VDatePickerMonths.mjs +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.mjs +1 -1
- package/lib/components/VDatePicker/index.d.mts +24 -276
- package/lib/components/VDefaultsProvider/index.d.mts +4 -20
- package/lib/components/VDialog/VDialog.mjs +1 -1
- package/lib/components/VDialog/__test__/VDialog.spec.cy.mjs +1 -1
- package/lib/components/VDialog/index.d.mts +143 -389
- package/lib/components/VDivider/index.d.mts +4 -24
- package/lib/components/VEmptyState/VEmptyState.mjs +1 -1
- package/lib/components/VEmptyState/index.d.mts +4 -66
- package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +1 -1
- package/lib/components/VExpansionPanel/index.d.mts +16 -152
- package/lib/components/VFab/VFab.mjs +1 -1
- package/lib/components/VFab/index.d.mts +9 -78
- package/lib/components/VField/VField.mjs +1 -1
- package/lib/components/VField/VFieldLabel.mjs +1 -1
- package/lib/components/VField/index.d.mts +11 -59
- package/lib/components/VFileInput/VFileInput.mjs +1 -1
- package/lib/components/VFileInput/index.d.mts +71 -256
- package/lib/components/VFooter/VFooter.mjs +1 -1
- package/lib/components/VFooter/index.d.mts +4 -29
- package/lib/components/VForm/index.d.mts +267 -175
- package/lib/components/VGrid/VContainer.mjs +1 -1
- package/lib/components/VGrid/index.d.mts +16 -118
- package/lib/components/VHover/index.d.mts +4 -33
- package/lib/components/VIcon/index.d.mts +17 -75
- package/lib/components/VImg/VImg.mjs +1 -1
- package/lib/components/VImg/index.d.mts +19 -74
- package/lib/components/VInfiniteScroll/VInfiniteScroll.mjs +1 -1
- package/lib/components/VInfiniteScroll/index.d.mts +4 -46
- package/lib/components/VInput/VInput.mjs +1 -1
- package/lib/components/VInput/index.d.mts +4 -37
- package/lib/components/VItemGroup/index.d.mts +8 -65
- package/lib/components/VKbd/index.d.mts +4 -18
- package/lib/components/VLabel/index.d.mts +4 -20
- package/lib/components/VLayout/index.d.mts +8 -48
- package/lib/components/VLazy/VLazy.mjs +1 -1
- package/lib/components/VLazy/index.d.mts +4 -31
- package/lib/components/VList/VList.mjs +1 -1
- package/lib/components/VList/VListChildren.mjs +1 -1
- package/lib/components/VList/VListGroup.mjs +1 -1
- package/lib/components/VList/VListItem.mjs +1 -1
- package/lib/components/VList/VListItemAction.mjs +1 -1
- package/lib/components/VList/VListItemMedia.mjs +1 -1
- package/lib/components/VList/VListItemSubtitle.mjs +1 -1
- package/lib/components/VList/index.d.mts +48 -291
- package/lib/components/VLocaleProvider/index.d.mts +4 -21
- package/lib/components/VMain/index.d.mts +4 -25
- package/lib/components/VMenu/VMenu.mjs +1 -1
- package/lib/components/VMenu/index.d.mts +155 -397
- package/lib/components/VMessages/index.d.mts +4 -27
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
- package/lib/components/VNavigationDrawer/index.d.mts +7 -62
- package/lib/components/VOtpInput/VOtpInput.mjs +1 -1
- package/lib/components/VOtpInput/index.d.mts +7 -52
- package/lib/components/VOverlay/VOverlay.mjs +1 -1
- package/lib/components/VOverlay/index.d.mts +19 -101
- package/lib/components/VPagination/VPagination.mjs +1 -1
- package/lib/components/VPagination/index.d.mts +4 -64
- package/lib/components/VParallax/VParallax.mjs +1 -1
- package/lib/components/VParallax/index.d.mts +4 -27
- package/lib/components/VProgressCircular/index.d.mts +4 -34
- package/lib/components/VProgressLinear/index.d.mts +4 -54
- package/lib/components/VRadio/VRadio.mjs +1 -1
- package/lib/components/VRadio/index.d.mts +4 -68
- package/lib/components/VRadioGroup/VRadioGroup.mjs +1 -1
- package/lib/components/VRadioGroup/index.d.mts +4 -48
- package/lib/components/VRangeSlider/VRangeSlider.mjs +1 -1
- package/lib/components/VRangeSlider/index.d.mts +4 -107
- package/lib/components/VRating/VRating.mjs +1 -1
- package/lib/components/VRating/index.d.mts +4 -42
- package/lib/components/VResponsive/index.d.mts +4 -29
- package/lib/components/VSelect/VSelect.mjs +1 -1
- package/lib/components/VSelect/index.d.mts +200 -1352
- package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -1
- package/lib/components/VSelectionControl/index.d.mts +10 -37
- package/lib/components/VSelectionControlGroup/index.d.mts +4 -26
- package/lib/components/VSheet/VSheet.mjs +1 -1
- package/lib/components/VSheet/index.d.mts +4 -32
- package/lib/components/VSkeletonLoader/VSkeletonLoader.mjs +1 -1
- package/lib/components/VSkeletonLoader/index.d.mts +4 -28
- package/lib/components/VSlideGroup/index.d.mts +14 -70
- package/lib/components/VSlider/VSlider.mjs +1 -1
- package/lib/components/VSlider/VSliderThumb.mjs +1 -1
- package/lib/components/VSlider/index.d.mts +4 -106
- package/lib/components/VSnackbar/VSnackbar.mjs +1 -1
- package/lib/components/VSnackbar/index.d.mts +152 -398
- package/lib/components/VSparkline/VBarline.mjs +1 -2
- package/lib/components/VSparkline/VBarline.mjs.map +1 -1
- package/lib/components/VSparkline/VSparkline.mjs +1 -1
- package/lib/components/VSparkline/VTrendline.mjs +1 -2
- package/lib/components/VSparkline/VTrendline.mjs.map +1 -1
- package/lib/components/VSparkline/index.d.mts +4 -49
- package/lib/components/VSpeedDial/VSpeedDial.mjs +1 -1
- package/lib/components/VSpeedDial/index.d.mts +4 -85
- package/lib/components/VStepper/VStepper.mjs +1 -1
- package/lib/components/VStepper/VStepperItem.mjs +1 -1
- package/lib/components/VStepper/VStepperWindow.mjs +1 -1
- package/lib/components/VStepper/VStepperWindowItem.mjs +1 -1
- package/lib/components/VStepper/index.d.mts +24 -250
- package/lib/components/VSwitch/VSwitch.mjs +1 -1
- package/lib/components/VSwitch/index.d.mts +4 -59
- package/lib/components/VSystemBar/VSystemBar.mjs +1 -1
- package/lib/components/VSystemBar/index.d.mts +4 -28
- package/lib/components/VTable/index.d.mts +4 -33
- package/lib/components/VTabs/VTab.mjs +1 -1
- package/lib/components/VTabs/VTabs.mjs +1 -1
- package/lib/components/VTabs/VTabsWindow.mjs +1 -1
- package/lib/components/VTabs/VTabsWindowItem.mjs +1 -1
- package/lib/components/VTabs/index.d.mts +98 -394
- package/lib/components/VTextField/VTextField.mjs +1 -1
- package/lib/components/VTextField/index.d.mts +152 -374
- package/lib/components/VTextarea/VTextarea.mjs +1 -1
- package/lib/components/VTextarea/index.d.mts +71 -244
- package/lib/components/VThemeProvider/index.d.mts +4 -20
- package/lib/components/VTimeline/VTimeline.mjs +1 -1
- package/lib/components/VTimeline/VTimelineDivider.mjs +1 -1
- package/lib/components/VTimeline/VTimelineItem.mjs +1 -1
- package/lib/components/VTimeline/index.d.mts +8 -75
- package/lib/components/VToolbar/VToolbar.mjs +1 -1
- package/lib/components/VToolbar/index.d.mts +12 -90
- package/lib/components/VTooltip/VTooltip.mjs +1 -1
- package/lib/components/VTooltip/index.d.mts +147 -386
- package/lib/components/VValidation/index.d.mts +10 -24
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs +1 -1
- package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +1 -1
- package/lib/components/VVirtualScroll/index.d.mts +4 -15
- package/lib/components/VWindow/VWindow.mjs +1 -1
- package/lib/components/VWindow/VWindowItem.mjs +1 -1
- package/lib/components/VWindow/index.d.mts +8 -47
- package/lib/components/index.d.mts +2950 -12134
- package/lib/components/transitions/dialog-transition.mjs +1 -2
- package/lib/components/transitions/dialog-transition.mjs.map +1 -1
- package/lib/components/transitions/index.d.mts +64 -309
- package/lib/composables/icons.mjs +1 -1
- package/lib/composables/variant.mjs +1 -1
- package/lib/composables/virtual.mjs +1 -1
- package/lib/composables/virtual.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +43 -43
- package/lib/labs/VCalendar/VCalendar.mjs +1 -1
- package/lib/labs/VCalendar/VCalendarDay.mjs +1 -1
- package/lib/labs/VCalendar/index.d.mts +24 -211
- package/lib/labs/VDateInput/VDateInput.mjs +1 -1
- package/lib/labs/VDateInput/index.d.mts +4 -115
- package/lib/labs/VNumberInput/VNumberInput.mjs +1 -1
- package/lib/labs/VNumberInput/index.d.mts +577 -1280
- package/lib/labs/VPicker/VPicker.mjs +1 -1
- package/lib/labs/VPicker/index.d.mts +8 -63
- package/lib/labs/VPullToRefresh/index.d.mts +4 -35
- package/lib/labs/VSnackbarQueue/VSnackbarQueue.mjs +1 -1
- package/lib/labs/VSnackbarQueue/index.d.mts +156 -453
- package/lib/labs/VStepperVertical/VStepperVertical.mjs +1 -1
- package/lib/labs/VStepperVertical/VStepperVerticalActions.mjs +1 -1
- package/lib/labs/VStepperVertical/VStepperVerticalItem.mjs +1 -1
- package/lib/labs/VStepperVertical/index.d.mts +12 -227
- package/lib/labs/VTimePicker/VTimePicker.mjs +1 -1
- package/lib/labs/VTimePicker/VTimePickerControls.mjs +1 -1
- package/lib/labs/VTimePicker/index.d.mts +12 -122
- package/lib/labs/VTreeview/VTreeview.mjs +1 -1
- package/lib/labs/VTreeview/VTreeviewChildren.mjs +1 -1
- package/lib/labs/VTreeview/VTreeviewGroup.mjs +1 -1
- package/lib/labs/VTreeview/VTreeviewItem.mjs +1 -1
- package/lib/labs/VTreeview/index.d.mts +18 -205
- package/lib/labs/components.d.mts +1015 -2912
- package/package.json +5 -4
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
|
2
2
|
// Icons
|
3
3
|
import { aliases, mdi } from "../iconsets/mdi.mjs"; // Utilities
|
4
4
|
import { computed, inject, unref } from 'vue';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"virtual.mjs","names":["useDisplay","useResizeObserver","computed","nextTick","onScopeDispose","ref","shallowRef","watch","watchEffect","clamp","debounce","IN_BROWSER","propsFactory","UP","DOWN","BUFFER_PX","makeVirtualProps","itemHeight","type","Number","String","default","height","useVirtual","props","items","display","value","parseFloat","first","last","Math","ceil","parseInt","paddingTop","paddingBottom","containerRef","markerRef","markerOffset","resizeRef","contentRect","viewportHeight","document","documentElement","hasInitialRender","sizes","Array","from","length","offsets","updateTime","targetScrollIndex","getSize","index","updateOffsets","start","performance","now","i","max","unwatch","v","offsetTop","immediate","calculateVisibleItems","window","requestAnimationFrame","scrollToIndex","clear","handleItemResize","prevHeight","prevMinHeight","min","calculateOffset","calculateIndex","scrollTop","binaryClosest","lastScrollTop","scrollVelocity","lastScrollTime","val","oldVal","handleScroll","scrollTime","scrollDeltaT","sign","handleScrollend","raf","cancelAnimationFrame","_calculateVisibleItems","direction","startPx","endPx","end","topOverflow","bottomOverflow","bufferOverflow","offset","computedItems","slice","map","item","raw","deep","arr","high","low","mid","target"],"sources":["../../src/composables/virtual.ts"],"sourcesContent":["// Composables\nimport { useDisplay } from '@/composables/display'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, debounce, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nconst UP = -1\nconst DOWN = 1\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100\n\ntype VirtualProps = {\n itemHeight?: number | string\n height?: number | string\n}\n\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null,\n },\n height: [Number, String],\n}, 'virtual')\n\nexport function useVirtual <T> (props: VirtualProps, items: Ref<readonly T[]>) {\n const display = useDisplay()\n\n const itemHeight = shallowRef(0)\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0)\n })\n\n const first = shallowRef(0)\n const last = shallowRef(Math.ceil(\n // Assume 16px items filling the entire screen height if\n // not provided. This is probably incorrect but it minimises\n // the chance of ending up with empty space at the bottom.\n // The default value is set here to avoid poisoning getSize()\n (parseInt(props.height!) || display.height.value) / (itemHeight.value || 16)\n ) || 1)\n const paddingTop = shallowRef(0)\n const paddingBottom = shallowRef(0)\n\n /** The scrollable element */\n const containerRef = ref<HTMLElement>()\n /** An element marking the top of the scrollable area,\n * used to add an offset if there's padding or other elements above the virtual list */\n const markerRef = ref<HTMLElement>()\n /** markerRef's offsetTop, lazily evaluated */\n let markerOffset = 0\n\n const { resizeRef, contentRect } = useResizeObserver()\n watchEffect(() => {\n resizeRef.value = containerRef.value\n })\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement\n ? display.height.value\n : contentRect.value?.height || parseInt(props.height!) || 0\n })\n /** All static elements have been rendered and we have an assumed item height */\n const hasInitialRender = computed(() => {\n return !!(containerRef.value && markerRef.value && viewportHeight.value && itemHeight.value)\n })\n\n let sizes = Array.from<number | null>({ length: items.value.length })\n let offsets = Array.from<number>({ length: items.value.length })\n const updateTime = shallowRef(0)\n let targetScrollIndex = -1\n\n function getSize (index: number) {\n return sizes[index] || itemHeight.value\n }\n\n const updateOffsets = debounce(() => {\n const start = performance.now()\n offsets[0] = 0\n const length = items.value.length\n for (let i = 1; i <= length - 1; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1)\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start)\n }, updateTime)\n\n const unwatch = watch(hasInitialRender, v => {\n if (!v) return\n // First render is complete, update offsets and visible\n // items in case our assumed item height was incorrect\n\n unwatch()\n markerOffset = markerRef.value!.offsetTop\n updateOffsets.immediate()\n calculateVisibleItems()\n\n if (!~targetScrollIndex) return\n\n nextTick(() => {\n IN_BROWSER && window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex)\n targetScrollIndex = -1\n })\n })\n })\n\n onScopeDispose(() => {\n updateOffsets.clear()\n })\n\n function handleItemResize (index: number, height: number) {\n const prevHeight = sizes[index]\n const prevMinHeight = itemHeight.value\n\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height\n\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height\n updateOffsets()\n }\n }\n\n function calculateOffset (index: number) {\n index = clamp(index, 0, items.value.length - 1)\n return offsets[index] || 0\n }\n\n function calculateIndex (scrollTop: number) {\n return binaryClosest(offsets, scrollTop)\n }\n\n let lastScrollTop = 0\n let scrollVelocity = 0\n let lastScrollTime = 0\n\n watch(viewportHeight, (val, oldVal) => {\n if (oldVal) {\n calculateVisibleItems()\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0\n calculateVisibleItems()\n })\n }\n }\n })\n\n function handleScroll () {\n if (!containerRef.value || !markerRef.value) return\n\n const scrollTop = containerRef.value.scrollTop\n const scrollTime = performance.now()\n const scrollDeltaT = scrollTime - lastScrollTime\n\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop)\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop\n } else {\n scrollVelocity = scrollTop - lastScrollTop\n }\n\n lastScrollTop = scrollTop\n lastScrollTime = scrollTime\n\n calculateVisibleItems()\n }\n function handleScrollend () {\n if (!containerRef.value || !markerRef.value) return\n\n scrollVelocity = 0\n lastScrollTime = 0\n\n calculateVisibleItems()\n }\n\n let raf = -1\n function calculateVisibleItems () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(_calculateVisibleItems)\n }\n function _calculateVisibleItems () {\n if (!containerRef.value || !viewportHeight.value) return\n const scrollTop = lastScrollTop - markerOffset\n const direction = Math.sign(scrollVelocity)\n\n const startPx = Math.max(0, scrollTop - BUFFER_PX)\n const start = clamp(calculateIndex(startPx), 0, items.value.length)\n\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length)\n\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) &&\n (direction !== DOWN || end > last.value)\n ) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start)\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value)\n const bufferOverflow = Math.max(topOverflow, bottomOverflow)\n\n if (bufferOverflow > BUFFER_PX) {\n first.value = start\n last.value = end\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start\n if (end >= items.value.length) last.value = end\n }\n }\n\n paddingTop.value = calculateOffset(first.value)\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value)\n }\n\n function scrollToIndex (index: number) {\n const offset = calculateOffset(index)\n if (!containerRef.value || (index && !offset)) {\n targetScrollIndex = index\n } else {\n containerRef.value.scrollTop = offset\n }\n }\n\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => ({\n raw: item,\n index: index + first.value,\n }))\n })\n\n watch(items, () => {\n sizes = Array.from({ length: items.value.length })\n offsets = Array.from({ length: items.value.length })\n updateOffsets.immediate()\n calculateVisibleItems()\n }, { deep: true })\n\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize,\n }\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest (arr: ArrayLike<number>, val: number) {\n let high = arr.length - 1\n let low = 0\n let mid = 0\n let item = null\n let target = -1\n\n if (arr[high]! < val) {\n return high\n }\n\n while (low <= high) {\n mid = (low + high) >> 1\n item = arr[mid]!\n\n if (item > val) {\n high = mid - 1\n } else if (item < val) {\n target = mid\n low = mid + 1\n } else if (item === val) {\n return mid\n } else {\n return low\n }\n }\n\n return target\n}\n"],"mappings":"AAAA;AAAA,SACSA,UAAU;AAAA,SACVC,iBAAiB,gCAE1B;AACA,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,EAAEC,WAAW,QAAQ,KAAK;AAAA,SACpFC,KAAK,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,YAAY,6BAElD;AAGA,MAAMC,EAAE,GAAG,CAAC,CAAC;AACb,MAAMC,IAAI,GAAG,CAAC;;AAEd;AACA,MAAMC,SAAS,GAAG,GAAG;AAOrB,OAAO,MAAMC,gBAAgB,GAAGJ,YAAY,CAAC;EAC3CK,UAAU,EAAE;IACVC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAAC;IACtBC,OAAO,EAAE;EACX,CAAC;EACDC,MAAM,EAAE,CAACH,MAAM,EAAEC,MAAM;AACzB,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,SAASG,UAAUA,CAAMC,KAAmB,EAAEC,KAAwB,EAAE;EAC7E,MAAMC,OAAO,GAAG1B,UAAU,CAAC,CAAC;EAE5B,MAAMiB,UAAU,GAAGX,UAAU,CAAC,CAAC,CAAC;EAChCE,WAAW,CAAC,MAAM;IAChBS,UAAU,CAACU,KAAK,GAAGC,UAAU,CAACJ,KAAK,CAACP,UAAU,IAAI,CAAC,CAAC;EACtD,CAAC,CAAC;EAEF,MAAMY,KAAK,GAAGvB,UAAU,CAAC,CAAC,CAAC;EAC3B,MAAMwB,IAAI,GAAGxB,UAAU,CAACyB,IAAI,CAACC,IAAI;EAC/B;EACA;EACA;EACA;EACA,CAACC,QAAQ,CAACT,KAAK,CAACF,MAAO,CAAC,IAAII,OAAO,CAACJ,MAAM,CAACK,KAAK,KAAKV,UAAU,CAACU,KAAK,IAAI,EAAE,CAC7E,CAAC,IAAI,CAAC,CAAC;EACP,MAAMO,UAAU,GAAG5B,UAAU,CAAC,CAAC,CAAC;EAChC,MAAM6B,aAAa,GAAG7B,UAAU,CAAC,CAAC,CAAC;;EAEnC;EACA,MAAM8B,YAAY,GAAG/B,GAAG,CAAc,CAAC;EACvC;AACF;EACE,MAAMgC,SAAS,GAAGhC,GAAG,CAAc,CAAC;EACpC;EACA,IAAIiC,YAAY,GAAG,CAAC;EAEpB,MAAM;IAAEC,SAAS;IAAEC;EAAY,CAAC,GAAGvC,iBAAiB,CAAC,CAAC;EACtDO,WAAW,CAAC,MAAM;IAChB+B,SAAS,CAACZ,KAAK,GAAGS,YAAY,CAACT,KAAK;EACtC,CAAC,CAAC;EACF,MAAMc,cAAc,GAAGvC,QAAQ,CAAC,MAAM;IACpC,OAAOkC,YAAY,CAACT,KAAK,KAAKe,QAAQ,CAACC,eAAe,GAClDjB,OAAO,CAACJ,MAAM,CAACK,KAAK,GACpBa,WAAW,CAACb,KAAK,EAAEL,MAAM,IAAIW,QAAQ,CAACT,KAAK,CAACF,MAAO,CAAC,IAAI,CAAC;EAC/D,CAAC,CAAC;EACF;EACA,MAAMsB,gBAAgB,GAAG1C,QAAQ,CAAC,MAAM;IACtC,OAAO,CAAC,EAAEkC,YAAY,CAACT,KAAK,IAAIU,SAAS,CAACV,KAAK,IAAIc,cAAc,CAACd,KAAK,IAAIV,UAAU,CAACU,KAAK,CAAC;EAC9F,CAAC,CAAC;EAEF,IAAIkB,KAAK,GAAGC,KAAK,CAACC,IAAI,CAAgB;IAAEC,MAAM,EAAEvB,KAAK,CAACE,KAAK,CAACqB;EAAO,CAAC,CAAC;EACrE,IAAIC,OAAO,GAAGH,KAAK,CAACC,IAAI,CAAS;IAAEC,MAAM,EAAEvB,KAAK,CAACE,KAAK,CAACqB;EAAO,CAAC,CAAC;EAChE,MAAME,UAAU,GAAG5C,UAAU,CAAC,CAAC,CAAC;EAChC,IAAI6C,iBAAiB,GAAG,CAAC,CAAC;EAE1B,SAASC,OAAOA,CAAEC,KAAa,EAAE;IAC/B,OAAOR,KAAK,CAACQ,KAAK,CAAC,IAAIpC,UAAU,CAACU,KAAK;EACzC;EAEA,MAAM2B,aAAa,GAAG5C,QAAQ,CAAC,MAAM;IACnC,MAAM6C,KAAK,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;IAC/BR,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACd,MAAMD,MAAM,GAAGvB,KAAK,CAACE,KAAK,CAACqB,MAAM;IACjC,KAAK,IAAIU,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIV,MAAM,GAAG,CAAC,EAAEU,CAAC,EAAE,EAAE;MACpCT,OAAO,CAACS,CAAC,CAAC,GAAG,CAACT,OAAO,CAACS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAIN,OAAO,CAACM,CAAC,GAAG,CAAC,CAAC;IACrD;IACAR,UAAU,CAACvB,KAAK,GAAGI,IAAI,CAAC4B,GAAG,CAACT,UAAU,CAACvB,KAAK,EAAE6B,WAAW,CAACC,GAAG,CAAC,CAAC,GAAGF,KAAK,CAAC;EAC1E,CAAC,EAAEL,UAAU,CAAC;EAEd,MAAMU,OAAO,GAAGrD,KAAK,CAACqC,gBAAgB,EAAEiB,CAAC,IAAI;IAC3C,IAAI,CAACA,CAAC,EAAE;IACR;IACA;;IAEAD,OAAO,CAAC,CAAC;IACTtB,YAAY,GAAGD,SAAS,CAACV,KAAK,CAAEmC,SAAS;IACzCR,aAAa,CAACS,SAAS,CAAC,CAAC;IACzBC,qBAAqB,CAAC,CAAC;IAEvB,IAAI,CAAC,CAACb,iBAAiB,EAAE;IAEzBhD,QAAQ,CAAC,MAAM;MACbQ,UAAU,IAAIsD,MAAM,CAACC,qBAAqB,CAAC,MAAM;QAC/CC,aAAa,CAAChB,iBAAiB,CAAC;QAChCA,iBAAiB,GAAG,CAAC,CAAC;MACxB,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/C,cAAc,CAAC,MAAM;IACnBkD,aAAa,CAACc,KAAK,CAAC,CAAC;EACvB,CAAC,CAAC;EAEF,SAASC,gBAAgBA,CAAEhB,KAAa,EAAE/B,MAAc,EAAE;IACxD,MAAMgD,UAAU,GAAGzB,KAAK,CAACQ,KAAK,CAAC;IAC/B,MAAMkB,aAAa,GAAGtD,UAAU,CAACU,KAAK;IAEtCV,UAAU,CAACU,KAAK,GAAG4C,aAAa,GAAGxC,IAAI,CAACyC,GAAG,CAACvD,UAAU,CAACU,KAAK,EAAEL,MAAM,CAAC,GAAGA,MAAM;IAE9E,IAAIgD,UAAU,KAAKhD,MAAM,IAAIiD,aAAa,KAAKtD,UAAU,CAACU,KAAK,EAAE;MAC/DkB,KAAK,CAACQ,KAAK,CAAC,GAAG/B,MAAM;MACrBgC,aAAa,CAAC,CAAC;IACjB;EACF;EAEA,SAASmB,eAAeA,CAAEpB,KAAa,EAAE;IACvCA,KAAK,GAAG5C,KAAK,CAAC4C,KAAK,EAAE,CAAC,EAAE5B,KAAK,CAACE,KAAK,CAACqB,MAAM,GAAG,CAAC,CAAC;IAC/C,OAAOC,OAAO,CAACI,KAAK,CAAC,IAAI,CAAC;EAC5B;EAEA,SAASqB,cAAcA,CAAEC,SAAiB,EAAE;IAC1C,OAAOC,aAAa,CAAC3B,OAAO,EAAE0B,SAAS,CAAC;EAC1C;EAEA,IAAIE,aAAa,GAAG,CAAC;EACrB,IAAIC,cAAc,GAAG,CAAC;EACtB,IAAIC,cAAc,GAAG,CAAC;EAEtBxE,KAAK,CAACkC,cAAc,EAAE,CAACuC,GAAG,EAAEC,MAAM,KAAK;IACrC,IAAIA,MAAM,EAAE;MACVjB,qBAAqB,CAAC,CAAC;MACvB,IAAIgB,GAAG,GAAGC,MAAM,EAAE;QAChBf,qBAAqB,CAAC,MAAM;UAC1BY,cAAc,GAAG,CAAC;UAClBd,qBAAqB,CAAC,CAAC;QACzB,CAAC,CAAC;MACJ;IACF;EACF,CAAC,CAAC;EAEF,SAASkB,YAAYA,CAAA,EAAI;IACvB,IAAI,CAAC9C,YAAY,CAACT,KAAK,IAAI,CAACU,SAAS,CAACV,KAAK,EAAE;IAE7C,MAAMgD,SAAS,GAAGvC,YAAY,CAACT,KAAK,CAACgD,SAAS;IAC9C,MAAMQ,UAAU,GAAG3B,WAAW,CAACC,GAAG,CAAC,CAAC;IACpC,MAAM2B,YAAY,GAAGD,UAAU,GAAGJ,cAAc;IAEhD,IAAIK,YAAY,GAAG,GAAG,EAAE;MACtBN,cAAc,GAAG/C,IAAI,CAACsD,IAAI,CAACV,SAAS,GAAGE,aAAa,CAAC;;MAErD;MACA;MACAvC,YAAY,GAAGD,SAAS,CAACV,KAAK,CAACmC,SAAS;IAC1C,CAAC,MAAM;MACLgB,cAAc,GAAGH,SAAS,GAAGE,aAAa;IAC5C;IAEAA,aAAa,GAAGF,SAAS;IACzBI,cAAc,GAAGI,UAAU;IAE3BnB,qBAAqB,CAAC,CAAC;EACzB;EACA,SAASsB,eAAeA,CAAA,EAAI;IAC1B,IAAI,CAAClD,YAAY,CAACT,KAAK,IAAI,CAACU,SAAS,CAACV,KAAK,EAAE;IAE7CmD,cAAc,GAAG,CAAC;IAClBC,cAAc,GAAG,CAAC;IAElBf,qBAAqB,CAAC,CAAC;EACzB;EAEA,IAAIuB,GAAG,GAAG,CAAC,CAAC;EACZ,SAASvB,qBAAqBA,CAAA,EAAI;IAChCwB,oBAAoB,CAACD,GAAG,CAAC;IACzBA,GAAG,GAAGrB,qBAAqB,CAACuB,sBAAsB,CAAC;EACrD;EACA,SAASA,sBAAsBA,CAAA,EAAI;IACjC,IAAI,CAACrD,YAAY,CAACT,KAAK,IAAI,CAACc,cAAc,CAACd,KAAK,EAAE;IAClD,MAAMgD,SAAS,GAAGE,aAAa,GAAGvC,YAAY;IAC9C,MAAMoD,SAAS,GAAG3D,IAAI,CAACsD,IAAI,CAACP,cAAc,CAAC;IAE3C,MAAMa,OAAO,GAAG5D,IAAI,CAAC4B,GAAG,CAAC,CAAC,EAAEgB,SAAS,GAAG5D,SAAS,CAAC;IAClD,MAAMwC,KAAK,GAAG9C,KAAK,CAACiE,cAAc,CAACiB,OAAO,CAAC,EAAE,CAAC,EAAElE,KAAK,CAACE,KAAK,CAACqB,MAAM,CAAC;IAEnE,MAAM4C,KAAK,GAAGjB,SAAS,GAAGlC,cAAc,CAACd,KAAK,GAAGZ,SAAS;IAC1D,MAAM8E,GAAG,GAAGpF,KAAK,CAACiE,cAAc,CAACkB,KAAK,CAAC,GAAG,CAAC,EAAErC,KAAK,GAAG,CAAC,EAAE9B,KAAK,CAACE,KAAK,CAACqB,MAAM,CAAC;IAE3E;IACE;IACA;IACA,CAAC0C,SAAS,KAAK7E,EAAE,IAAI0C,KAAK,GAAG1B,KAAK,CAACF,KAAK,MACvC+D,SAAS,KAAK5E,IAAI,IAAI+E,GAAG,GAAG/D,IAAI,CAACH,KAAK,CAAC,EACxC;MACA,MAAMmE,WAAW,GAAGrB,eAAe,CAAC5C,KAAK,CAACF,KAAK,CAAC,GAAG8C,eAAe,CAAClB,KAAK,CAAC;MACzE,MAAMwC,cAAc,GAAGtB,eAAe,CAACoB,GAAG,CAAC,GAAGpB,eAAe,CAAC3C,IAAI,CAACH,KAAK,CAAC;MACzE,MAAMqE,cAAc,GAAGjE,IAAI,CAAC4B,GAAG,CAACmC,WAAW,EAAEC,cAAc,CAAC;MAE5D,IAAIC,cAAc,GAAGjF,SAAS,EAAE;QAC9Bc,KAAK,CAACF,KAAK,GAAG4B,KAAK;QACnBzB,IAAI,CAACH,KAAK,GAAGkE,GAAG;MAClB,CAAC,MAAM;QACL;QACA,IAAItC,KAAK,IAAI,CAAC,EAAE1B,KAAK,CAACF,KAAK,GAAG4B,KAAK;QACnC,IAAIsC,GAAG,IAAIpE,KAAK,CAACE,KAAK,CAACqB,MAAM,EAAElB,IAAI,CAACH,KAAK,GAAGkE,GAAG;MACjD;IACF;IAEA3D,UAAU,CAACP,KAAK,GAAG8C,eAAe,CAAC5C,KAAK,CAACF,KAAK,CAAC;IAC/CQ,aAAa,CAACR,KAAK,GAAG8C,eAAe,CAAChD,KAAK,CAACE,KAAK,CAACqB,MAAM,CAAC,GAAGyB,eAAe,CAAC3C,IAAI,CAACH,KAAK,CAAC;EACzF;EAEA,SAASwC,aAAaA,CAAEd,KAAa,EAAE;IACrC,MAAM4C,MAAM,GAAGxB,eAAe,CAACpB,KAAK,CAAC;IACrC,IAAI,CAACjB,YAAY,CAACT,KAAK,IAAK0B,KAAK,IAAI,CAAC4C,MAAO,EAAE;MAC7C9C,iBAAiB,GAAGE,KAAK;IAC3B,CAAC,MAAM;MACLjB,YAAY,CAACT,KAAK,CAACgD,SAAS,GAAGsB,MAAM;IACvC;EACF;EAEA,MAAMC,aAAa,GAAGhG,QAAQ,CAAC,MAAM;IACnC,OAAOuB,KAAK,CAACE,KAAK,CAACwE,KAAK,CAACtE,KAAK,CAACF,KAAK,EAAEG,IAAI,CAACH,KAAK,CAAC,CAACyE,GAAG,CAAC,CAACC,IAAI,EAAEhD,KAAK,MAAM;MACtEiD,GAAG,EAAED,IAAI;MACThD,KAAK,EAAEA,KAAK,GAAGxB,KAAK,CAACF;IACvB,CAAC,CAAC,CAAC;EACL,CAAC,CAAC;EAEFpB,KAAK,CAACkB,KAAK,EAAE,MAAM;IACjBoB,KAAK,GAAGC,KAAK,CAACC,IAAI,CAAC;MAAEC,MAAM,EAAEvB,KAAK,CAACE,KAAK,CAACqB;IAAO,CAAC,CAAC;IAClDC,OAAO,GAAGH,KAAK,CAACC,IAAI,CAAC;MAAEC,MAAM,EAAEvB,KAAK,CAACE,KAAK,CAACqB;IAAO,CAAC,CAAC;IACpDM,aAAa,CAACS,SAAS,CAAC,CAAC;IACzBC,qBAAqB,CAAC,CAAC;EACzB,CAAC,EAAE;IAAEuC,IAAI,EAAE;EAAK,CAAC,CAAC;EAElB,OAAO;IACLvC,qBAAqB;IACrB5B,YAAY;IACZC,SAAS;IACT6D,aAAa;IACbhE,UAAU;IACVC,aAAa;IACbgC,aAAa;IACbe,YAAY;IACZI,eAAe;IACfjB;EACF,CAAC;AACH;;AAEA;AACA,SAASO,aAAaA,CAAE4B,GAAsB,EAAExB,GAAW,EAAE;EAC3D,IAAIyB,IAAI,GAAGD,GAAG,CAACxD,MAAM,GAAG,CAAC;EACzB,IAAI0D,GAAG,GAAG,CAAC;EACX,IAAIC,GAAG,GAAG,CAAC;EACX,IAAIN,IAAI,GAAG,IAAI;EACf,IAAIO,MAAM,GAAG,CAAC,CAAC;EAEf,IAAIJ,GAAG,CAACC,IAAI,CAAC,GAAIzB,GAAG,EAAE;IACpB,OAAOyB,IAAI;EACb;EAEA,OAAOC,GAAG,IAAID,IAAI,EAAE;IAClBE,GAAG,GAAID,GAAG,GAAGD,IAAI,IAAK,CAAC;IACvBJ,IAAI,GAAGG,GAAG,CAACG,GAAG,CAAE;IAEhB,IAAIN,IAAI,GAAGrB,GAAG,EAAE;MACdyB,IAAI,GAAGE,GAAG,GAAG,CAAC;IAChB,CAAC,MAAM,IAAIN,IAAI,GAAGrB,GAAG,EAAE;MACrB4B,MAAM,GAAGD,GAAG;MACZD,GAAG,GAAGC,GAAG,GAAG,CAAC;IACf,CAAC,MAAM,IAAIN,IAAI,KAAKrB,GAAG,EAAE;MACvB,OAAO2B,GAAG;IACZ,CAAC,MAAM;MACL,OAAOD,GAAG;IACZ;EACF;EAEA,OAAOE,MAAM;AACf","ignoreList":[]}
|
1
|
+
{"version":3,"file":"virtual.mjs","names":["useDisplay","useResizeObserver","computed","nextTick","onScopeDispose","ref","shallowRef","watch","watchEffect","clamp","debounce","IN_BROWSER","propsFactory","UP","DOWN","BUFFER_PX","makeVirtualProps","itemHeight","type","Number","String","default","height","useVirtual","props","items","display","value","parseFloat","first","last","Math","ceil","parseInt","paddingTop","paddingBottom","containerRef","markerRef","markerOffset","resizeRef","contentRect","viewportHeight","document","documentElement","hasInitialRender","sizes","Array","from","length","offsets","updateTime","targetScrollIndex","getSize","index","updateOffsets","start","performance","now","i","max","unwatch","v","offsetTop","immediate","calculateVisibleItems","window","requestAnimationFrame","scrollToIndex","clear","handleItemResize","prevHeight","prevMinHeight","min","calculateOffset","calculateIndex","scrollTop","binaryClosest","lastScrollTop","scrollVelocity","lastScrollTime","val","oldVal","handleScroll","scrollTime","scrollDeltaT","sign","handleScrollend","raf","cancelAnimationFrame","_calculateVisibleItems","direction","startPx","endPx","end","topOverflow","bottomOverflow","bufferOverflow","offset","computedItems","slice","map","item","raw","deep","arr","high","low","mid","target"],"sources":["../../src/composables/virtual.ts"],"sourcesContent":["// Composables\nimport { useDisplay } from '@/composables/display'\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, shallowRef, watch, watchEffect } from 'vue'\nimport { clamp, debounce, IN_BROWSER, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\n\nconst UP = -1\nconst DOWN = 1\n\n/** Determines how large each batch of items should be */\nconst BUFFER_PX = 100\n\ntype VirtualProps = {\n itemHeight?: number | string\n height?: number | string\n}\n\nexport const makeVirtualProps = propsFactory({\n itemHeight: {\n type: [Number, String],\n default: null,\n },\n height: [Number, String],\n}, 'virtual')\n\nexport function useVirtual <T> (props: VirtualProps, items: Ref<readonly T[]>) {\n const display = useDisplay()\n\n const itemHeight = shallowRef(0)\n watchEffect(() => {\n itemHeight.value = parseFloat(props.itemHeight || 0)\n })\n\n const first = shallowRef(0)\n const last = shallowRef(Math.ceil(\n // Assume 16px items filling the entire screen height if\n // not provided. This is probably incorrect but it minimises\n // the chance of ending up with empty space at the bottom.\n // The default value is set here to avoid poisoning getSize()\n (parseInt(props.height!) || display.height.value) / (itemHeight.value || 16)\n ) || 1)\n const paddingTop = shallowRef(0)\n const paddingBottom = shallowRef(0)\n\n /** The scrollable element */\n const containerRef = ref<HTMLElement>()\n /** An element marking the top of the scrollable area,\n * used to add an offset if there's padding or other elements above the virtual list */\n const markerRef = ref<HTMLElement>()\n /** markerRef's offsetTop, lazily evaluated */\n let markerOffset = 0\n\n const { resizeRef, contentRect } = useResizeObserver()\n watchEffect(() => {\n resizeRef.value = containerRef.value\n })\n const viewportHeight = computed(() => {\n return containerRef.value === document.documentElement\n ? display.height.value\n : contentRect.value?.height || parseInt(props.height!) || 0\n })\n /** All static elements have been rendered and we have an assumed item height */\n const hasInitialRender = computed(() => {\n return !!(containerRef.value && markerRef.value && viewportHeight.value && itemHeight.value)\n })\n\n let sizes = Array.from<number | null>({ length: items.value.length })\n let offsets = Array.from<number>({ length: items.value.length })\n const updateTime = shallowRef(0)\n let targetScrollIndex = -1\n\n function getSize (index: number) {\n return sizes[index] || itemHeight.value\n }\n\n const updateOffsets = debounce(() => {\n const start = performance.now()\n offsets[0] = 0\n const length = items.value.length\n for (let i = 1; i <= length - 1; i++) {\n offsets[i] = (offsets[i - 1] || 0) + getSize(i - 1)\n }\n updateTime.value = Math.max(updateTime.value, performance.now() - start)\n }, updateTime)\n\n const unwatch = watch(hasInitialRender, v => {\n if (!v) return\n // First render is complete, update offsets and visible\n // items in case our assumed item height was incorrect\n\n unwatch()\n markerOffset = markerRef.value!.offsetTop\n updateOffsets.immediate()\n calculateVisibleItems()\n\n if (!~targetScrollIndex) return\n\n nextTick(() => {\n IN_BROWSER && window.requestAnimationFrame(() => {\n scrollToIndex(targetScrollIndex)\n targetScrollIndex = -1\n })\n })\n })\n\n onScopeDispose(() => {\n updateOffsets.clear()\n })\n\n function handleItemResize (index: number, height: number) {\n const prevHeight = sizes[index]\n const prevMinHeight = itemHeight.value\n\n itemHeight.value = prevMinHeight ? Math.min(itemHeight.value, height) : height\n\n if (prevHeight !== height || prevMinHeight !== itemHeight.value) {\n sizes[index] = height\n updateOffsets()\n }\n }\n\n function calculateOffset (index: number) {\n index = clamp(index, 0, items.value.length - 1)\n return offsets[index] || 0\n }\n\n function calculateIndex (scrollTop: number) {\n return binaryClosest(offsets, scrollTop)\n }\n\n let lastScrollTop = 0\n let scrollVelocity = 0\n let lastScrollTime = 0\n\n watch(viewportHeight, (val, oldVal) => {\n if (oldVal) {\n calculateVisibleItems()\n if (val < oldVal) {\n requestAnimationFrame(() => {\n scrollVelocity = 0\n calculateVisibleItems()\n })\n }\n }\n })\n\n function handleScroll () {\n if (!containerRef.value || !markerRef.value) return\n\n const scrollTop = containerRef.value.scrollTop\n const scrollTime = performance.now()\n const scrollDeltaT = scrollTime - lastScrollTime\n\n if (scrollDeltaT > 500) {\n scrollVelocity = Math.sign(scrollTop - lastScrollTop)\n\n // Not super important, only update at the\n // start of a scroll sequence to avoid reflows\n markerOffset = markerRef.value.offsetTop\n } else {\n scrollVelocity = scrollTop - lastScrollTop\n }\n\n lastScrollTop = scrollTop\n lastScrollTime = scrollTime\n\n calculateVisibleItems()\n }\n function handleScrollend () {\n if (!containerRef.value || !markerRef.value) return\n\n scrollVelocity = 0\n lastScrollTime = 0\n\n calculateVisibleItems()\n }\n\n let raf = -1\n function calculateVisibleItems () {\n cancelAnimationFrame(raf)\n raf = requestAnimationFrame(_calculateVisibleItems)\n }\n function _calculateVisibleItems () {\n if (!containerRef.value || !viewportHeight.value) return\n const scrollTop = lastScrollTop - markerOffset\n const direction = Math.sign(scrollVelocity)\n\n const startPx = Math.max(0, scrollTop - BUFFER_PX)\n const start = clamp(calculateIndex(startPx), 0, items.value.length)\n\n const endPx = scrollTop + viewportHeight.value + BUFFER_PX\n const end = clamp(calculateIndex(endPx) + 1, start + 1, items.value.length)\n\n if (\n // Only update the side we're scrolling towards,\n // the other side will be updated incidentally\n (direction !== UP || start < first.value) &&\n (direction !== DOWN || end > last.value)\n ) {\n const topOverflow = calculateOffset(first.value) - calculateOffset(start)\n const bottomOverflow = calculateOffset(end) - calculateOffset(last.value)\n const bufferOverflow = Math.max(topOverflow, bottomOverflow)\n\n if (bufferOverflow > BUFFER_PX) {\n first.value = start\n last.value = end\n } else {\n // Only update the side that's reached its limit if there's still buffer left\n if (start <= 0) first.value = start\n if (end >= items.value.length) last.value = end\n }\n }\n\n paddingTop.value = calculateOffset(first.value)\n paddingBottom.value = calculateOffset(items.value.length) - calculateOffset(last.value)\n }\n\n function scrollToIndex (index: number) {\n const offset = calculateOffset(index)\n if (!containerRef.value || (index && !offset)) {\n targetScrollIndex = index\n } else {\n containerRef.value.scrollTop = offset\n }\n }\n\n const computedItems = computed(() => {\n return items.value.slice(first.value, last.value).map((item, index) => ({\n raw: item,\n index: index + first.value,\n }))\n })\n\n watch(items, () => {\n sizes = Array.from({ length: items.value.length })\n offsets = Array.from({ length: items.value.length })\n updateOffsets.immediate()\n calculateVisibleItems()\n }, { deep: 1 })\n\n return {\n calculateVisibleItems,\n containerRef,\n markerRef,\n computedItems,\n paddingTop,\n paddingBottom,\n scrollToIndex,\n handleScroll,\n handleScrollend,\n handleItemResize,\n }\n}\n\n// https://gist.github.com/robertleeplummerjr/1cc657191d34ecd0a324\nfunction binaryClosest (arr: ArrayLike<number>, val: number) {\n let high = arr.length - 1\n let low = 0\n let mid = 0\n let item = null\n let target = -1\n\n if (arr[high]! < val) {\n return high\n }\n\n while (low <= high) {\n mid = (low + high) >> 1\n item = arr[mid]!\n\n if (item > val) {\n high = mid - 1\n } else if (item < val) {\n target = mid\n low = mid + 1\n } else if (item === val) {\n return mid\n } else {\n return low\n }\n }\n\n return target\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/entry-bundler.mjs
CHANGED
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
16
16
|
...options
|
17
17
|
});
|
18
18
|
};
|
19
|
-
export const version = "3.7.3-dev.2024-10-
|
19
|
+
export const version = "3.7.3-dev.2024-10-29";
|
20
20
|
createVuetify.version = version;
|
21
21
|
export { blueprints, components, directives };
|
22
22
|
export * from "./composables/index.mjs";
|
package/lib/framework.mjs
CHANGED
package/lib/index.d.mts
CHANGED
@@ -29,8 +29,8 @@ interface RtlInstance {
|
|
29
29
|
rtlClasses: Ref<string>;
|
30
30
|
}
|
31
31
|
declare function useRtl(): {
|
32
|
-
isRtl: Ref<boolean>;
|
33
|
-
rtlClasses: Ref<string>;
|
32
|
+
isRtl: Ref<boolean, boolean>;
|
33
|
+
rtlClasses: Ref<string, string>;
|
34
34
|
};
|
35
35
|
|
36
36
|
interface GoToInstance {
|
@@ -343,8 +343,8 @@ interface LayoutItem extends Layer {
|
|
343
343
|
}
|
344
344
|
declare function useLayout(): {
|
345
345
|
getLayoutItem: (id: string) => LayoutItem | undefined;
|
346
|
-
mainRect: Ref<Layer>;
|
347
|
-
mainStyles: Ref<CSSProperties>;
|
346
|
+
mainRect: Ref<Layer, Layer>;
|
347
|
+
mainStyles: Ref<CSSProperties, CSSProperties>;
|
348
348
|
};
|
349
349
|
|
350
350
|
interface FieldValidationResult {
|
@@ -376,7 +376,7 @@ interface Blueprint extends Omit<VuetifyOptions, 'blueprint'> {
|
|
376
376
|
}
|
377
377
|
declare function createVuetify(vuetify?: VuetifyOptions): {
|
378
378
|
install: (app: App) => void;
|
379
|
-
defaults: vue.Ref<DefaultsInstance>;
|
379
|
+
defaults: vue.Ref<DefaultsInstance, DefaultsInstance>;
|
380
380
|
display: DisplayInstance;
|
381
381
|
theme: ThemeInstance & {
|
382
382
|
install: (app: App) => void;
|
@@ -487,21 +487,21 @@ declare module 'vue' {
|
|
487
487
|
}
|
488
488
|
export interface GlobalComponents {
|
489
489
|
VApp: typeof import('vuetify/components')['VApp']
|
490
|
+
VBanner: typeof import('vuetify/components')['VBanner']
|
491
|
+
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
492
|
+
VBannerText: typeof import('vuetify/components')['VBannerText']
|
490
493
|
VAlert: typeof import('vuetify/components')['VAlert']
|
491
494
|
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
492
495
|
VAppBar: typeof import('vuetify/components')['VAppBar']
|
493
496
|
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
494
497
|
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
495
498
|
VAvatar: typeof import('vuetify/components')['VAvatar']
|
496
|
-
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
497
499
|
VBadge: typeof import('vuetify/components')['VBadge']
|
498
500
|
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
499
|
-
|
500
|
-
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
501
|
-
VBannerText: typeof import('vuetify/components')['VBannerText']
|
502
|
-
VBtn: typeof import('vuetify/components')['VBtn']
|
501
|
+
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
503
502
|
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
504
503
|
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
504
|
+
VBtn: typeof import('vuetify/components')['VBtn']
|
505
505
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
506
506
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
507
507
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
@@ -512,23 +512,22 @@ declare module 'vue' {
|
|
512
512
|
VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
|
513
513
|
VCardText: typeof import('vuetify/components')['VCardText']
|
514
514
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
515
|
+
VCarousel: typeof import('vuetify/components')['VCarousel']
|
516
|
+
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
515
517
|
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
516
518
|
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
517
|
-
VChip: typeof import('vuetify/components')['VChip']
|
518
519
|
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
520
|
+
VChip: typeof import('vuetify/components')['VChip']
|
519
521
|
VCode: typeof import('vuetify/components')['VCode']
|
520
|
-
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
521
|
-
VCarousel: typeof import('vuetify/components')['VCarousel']
|
522
|
-
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
523
522
|
VCombobox: typeof import('vuetify/components')['VCombobox']
|
524
|
-
|
523
|
+
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
524
|
+
VCounter: typeof import('vuetify/components')['VCounter']
|
525
525
|
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
526
526
|
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
527
527
|
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
528
528
|
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
|
529
529
|
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
530
530
|
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
531
|
-
VCounter: typeof import('vuetify/components')['VCounter']
|
532
531
|
VDataTable: typeof import('vuetify/components')['VDataTable']
|
533
532
|
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
|
534
533
|
VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
|
@@ -536,7 +535,9 @@ declare module 'vue' {
|
|
536
535
|
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
537
536
|
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
538
537
|
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
538
|
+
VDialog: typeof import('vuetify/components')['VDialog']
|
539
539
|
VDivider: typeof import('vuetify/components')['VDivider']
|
540
|
+
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
540
541
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
541
542
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
542
543
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
@@ -544,21 +545,21 @@ declare module 'vue' {
|
|
544
545
|
VField: typeof import('vuetify/components')['VField']
|
545
546
|
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
546
547
|
VFab: typeof import('vuetify/components')['VFab']
|
547
|
-
VFileInput: typeof import('vuetify/components')['VFileInput']
|
548
|
-
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
549
|
-
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
550
548
|
VFooter: typeof import('vuetify/components')['VFooter']
|
549
|
+
VFileInput: typeof import('vuetify/components')['VFileInput']
|
551
550
|
VIcon: typeof import('vuetify/components')['VIcon']
|
552
551
|
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
|
553
552
|
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
|
554
553
|
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
|
555
554
|
VClassIcon: typeof import('vuetify/components')['VClassIcon']
|
556
|
-
VImg: typeof import('vuetify/components')['VImg']
|
557
|
-
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
558
|
-
VItem: typeof import('vuetify/components')['VItem']
|
559
555
|
VInput: typeof import('vuetify/components')['VInput']
|
556
|
+
VImg: typeof import('vuetify/components')['VImg']
|
560
557
|
VKbd: typeof import('vuetify/components')['VKbd']
|
561
558
|
VLabel: typeof import('vuetify/components')['VLabel']
|
559
|
+
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
560
|
+
VMenu: typeof import('vuetify/components')['VMenu']
|
561
|
+
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
562
|
+
VItem: typeof import('vuetify/components')['VItem']
|
562
563
|
VList: typeof import('vuetify/components')['VList']
|
563
564
|
VListGroup: typeof import('vuetify/components')['VListGroup']
|
564
565
|
VListImg: typeof import('vuetify/components')['VListImg']
|
@@ -568,62 +569,61 @@ declare module 'vue' {
|
|
568
569
|
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
|
569
570
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
570
571
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
571
|
-
|
572
|
+
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
572
573
|
VMessages: typeof import('vuetify/components')['VMessages']
|
573
574
|
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
575
|
+
VMain: typeof import('vuetify/components')['VMain']
|
574
576
|
VPagination: typeof import('vuetify/components')['VPagination']
|
575
577
|
VOverlay: typeof import('vuetify/components')['VOverlay']
|
576
|
-
|
577
|
-
VMenu: typeof import('vuetify/components')['VMenu']
|
578
|
-
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
578
|
+
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
579
579
|
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
580
|
-
VSelect: typeof import('vuetify/components')['VSelect']
|
581
580
|
VRating: typeof import('vuetify/components')['VRating']
|
582
|
-
|
583
|
-
|
584
|
-
VSheet: typeof import('vuetify/components')['VSheet']
|
585
|
-
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
581
|
+
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
582
|
+
VSelect: typeof import('vuetify/components')['VSelect']
|
586
583
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
587
584
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
585
|
+
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
586
|
+
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
587
|
+
VSheet: typeof import('vuetify/components')['VSheet']
|
588
588
|
VSlider: typeof import('vuetify/components')['VSlider']
|
589
|
-
|
590
|
-
VSwitch: typeof import('vuetify/components')['VSwitch']
|
589
|
+
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
591
590
|
VStepper: typeof import('vuetify/components')['VStepper']
|
592
591
|
VStepperActions: typeof import('vuetify/components')['VStepperActions']
|
593
592
|
VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
|
594
593
|
VStepperItem: typeof import('vuetify/components')['VStepperItem']
|
595
594
|
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
|
596
595
|
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
|
596
|
+
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
597
|
+
VSwitch: typeof import('vuetify/components')['VSwitch']
|
598
|
+
VTable: typeof import('vuetify/components')['VTable']
|
599
|
+
VTextarea: typeof import('vuetify/components')['VTextarea']
|
597
600
|
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
598
601
|
VTab: typeof import('vuetify/components')['VTab']
|
599
602
|
VTabs: typeof import('vuetify/components')['VTabs']
|
600
603
|
VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
|
601
604
|
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
|
602
|
-
VTextarea: typeof import('vuetify/components')['VTextarea']
|
603
|
-
VTimeline: typeof import('vuetify/components')['VTimeline']
|
604
|
-
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
605
605
|
VTextField: typeof import('vuetify/components')['VTextField']
|
606
606
|
VToolbar: typeof import('vuetify/components')['VToolbar']
|
607
607
|
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
608
608
|
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
609
|
+
VTimeline: typeof import('vuetify/components')['VTimeline']
|
610
|
+
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
609
611
|
VTooltip: typeof import('vuetify/components')['VTooltip']
|
610
612
|
VWindow: typeof import('vuetify/components')['VWindow']
|
611
613
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
612
|
-
VTable: typeof import('vuetify/components')['VTable']
|
613
614
|
VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
|
614
|
-
|
615
|
-
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
|
615
|
+
VDataIterator: typeof import('vuetify/components')['VDataIterator']
|
616
616
|
VForm: typeof import('vuetify/components')['VForm']
|
617
|
+
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
|
618
|
+
VHover: typeof import('vuetify/components')['VHover']
|
617
619
|
VContainer: typeof import('vuetify/components')['VContainer']
|
618
620
|
VCol: typeof import('vuetify/components')['VCol']
|
619
621
|
VRow: typeof import('vuetify/components')['VRow']
|
620
622
|
VSpacer: typeof import('vuetify/components')['VSpacer']
|
621
|
-
VHover: typeof import('vuetify/components')['VHover']
|
622
623
|
VLayout: typeof import('vuetify/components')['VLayout']
|
623
624
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
624
625
|
VLazy: typeof import('vuetify/components')['VLazy']
|
625
626
|
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
626
|
-
VDataIterator: typeof import('vuetify/components')['VDataIterator']
|
627
627
|
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
628
628
|
VParallax: typeof import('vuetify/components')['VParallax']
|
629
629
|
VRadio: typeof import('vuetify/components')['VRadio']
|
@@ -650,8 +650,6 @@ declare module 'vue' {
|
|
650
650
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
651
651
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
652
652
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
653
|
-
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
654
|
-
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
655
653
|
VCalendar: typeof import('vuetify/labs/components')['VCalendar']
|
656
654
|
VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
|
657
655
|
VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
|
@@ -662,6 +660,8 @@ declare module 'vue' {
|
|
662
660
|
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
663
661
|
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
664
662
|
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
663
|
+
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
664
|
+
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
665
665
|
VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
|
666
666
|
VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
|
667
667
|
VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
|