@vuetify/nightly 3.8.2-master.2025-04-27 → 3.8.2-master.2025-04-28
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/CHANGELOG.md +9 -3
- package/dist/json/attributes.json +2704 -2704
- package/dist/json/importMap-labs.json +40 -40
- package/dist/json/importMap.json +168 -168
- package/dist/json/web-types.json +4917 -4917
- package/dist/vuetify-labs.cjs +38 -8
- package/dist/vuetify-labs.css +3330 -3330
- package/dist/vuetify-labs.d.ts +71 -67
- package/dist/vuetify-labs.esm.js +38 -8
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +38 -8
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +38 -8
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3317 -3317
- package/dist/vuetify.d.ts +71 -67
- package/dist/vuetify.esm.js +38 -8
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +38 -8
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1170 -1163
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VOverlay/locationStrategies.d.ts +4 -0
- package/lib/components/VOverlay/locationStrategies.js +23 -3
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/composables/defaults.js +6 -3
- package/lib/composables/defaults.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +71 -67
- package/lib/framework.js +1 -1
- package/lib/util/helpers.d.ts +2 -0
- package/lib/util/helpers.js +7 -0
- package/lib/util/helpers.js.map +1 -1
- package/package.json +3 -2
@@ -2,7 +2,7 @@
|
|
2
2
|
import { useToggleScope } from "../../composables/toggleScope.js"; // Utilities
|
3
3
|
import { computed, nextTick, onScopeDispose, ref, watch } from 'vue';
|
4
4
|
import { anchorToPoint, getOffset } from "./util/point.js";
|
5
|
-
import { clamp, consoleError, convertToUnit, destructComputed, flipAlign, flipCorner, flipSide, getAxis, getScrollParents, IN_BROWSER, isFixedPosition, nullifyTransforms, parseAnchor, propsFactory } from "../../util/index.js";
|
5
|
+
import { CircularBuffer, clamp, consoleError, convertToUnit, deepEqual, destructComputed, flipAlign, flipCorner, flipSide, getAxis, getScrollParents, IN_BROWSER, isFixedPosition, nullifyTransforms, parseAnchor, propsFactory } from "../../util/index.js";
|
6
6
|
import { Box, getOverflow, getTargetBox } from "../../util/box.js"; // Types
|
7
7
|
const locationStrategies = {
|
8
8
|
static: staticLocationStrategy,
|
@@ -137,8 +137,27 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
137
137
|
return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];
|
138
138
|
});
|
139
139
|
let observe = false;
|
140
|
+
let lastFrame = -1;
|
141
|
+
const flipped = new CircularBuffer(4);
|
140
142
|
const observer = new ResizeObserver(() => {
|
141
|
-
if (observe)
|
143
|
+
if (!observe) return;
|
144
|
+
|
145
|
+
// Detect consecutive frames
|
146
|
+
requestAnimationFrame(newTime => {
|
147
|
+
if (newTime !== lastFrame) flipped.clear();
|
148
|
+
requestAnimationFrame(newNewTime => {
|
149
|
+
lastFrame = newNewTime;
|
150
|
+
});
|
151
|
+
});
|
152
|
+
if (flipped.isFull) {
|
153
|
+
const values = flipped.values();
|
154
|
+
if (deepEqual(values.at(-1), values.at(-3))) {
|
155
|
+
// Flipping is causing a container resize loop
|
156
|
+
return;
|
157
|
+
}
|
158
|
+
}
|
159
|
+
const result = updateLocation();
|
160
|
+
if (result) flipped.push(result.flipped);
|
142
161
|
});
|
143
162
|
watch([data.target, data.contentEl], (_ref, _ref2) => {
|
144
163
|
let [newTarget, newContentEl] = _ref;
|
@@ -353,7 +372,8 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
353
372
|
});
|
354
373
|
return {
|
355
374
|
available,
|
356
|
-
contentBox
|
375
|
+
contentBox,
|
376
|
+
flipped
|
357
377
|
};
|
358
378
|
}
|
359
379
|
watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"locationStrategies.js","names":["useToggleScope","computed","nextTick","onScopeDispose","ref","watch","anchorToPoint","getOffset","clamp","consoleError","convertToUnit","destructComputed","flipAlign","flipCorner","flipSide","getAxis","getScrollParents","IN_BROWSER","isFixedPosition","nullifyTransforms","parseAnchor","propsFactory","Box","getOverflow","getTargetBox","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","locationStrategy","type","String","Function","default","validator","val","location","origin","offset","Number","Array","useLocationStrategies","props","data","contentStyles","updateLocation","isActive","value","reset","window","removeEventListener","onResize","undefined","addEventListener","passive","e","getIntrinsicSize","el","isRtl","contentBox","x","parseFloat","style","right","left","y","top","activatorFixed","isArray","target","Object","assign","position","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","side","align","minWidth","minHeight","maxWidth","maxHeight","map","key","isNaN","Infinity","split","length","push","observe","observer","ResizeObserver","contentEl","_ref","_ref2","newTarget","newContentEl","oldTarget","oldContentEl","unobserve","immediate","disconnect","targetBox","width","height","requestAnimationFrame","offsetParent","scrollParents","viewportMargin","document","documentElement","getPropertyValue","viewport","reduce","box","rect","getBoundingClientRect","scrollBox","clientWidth","clientHeight","Math","max","min","bottom","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","forEach","newPlacement","flip","newOverflows","transformOrigin","pixelRound","pixelCeil","result","round","devicePixelRatio","ceil"],"sources":["../../../src/components/VOverlay/locationStrategies.ts"],"sourcesContent":["// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue'\nimport { anchorToPoint, getOffset } from './util/point'\nimport {\n clamp,\n consoleError,\n convertToUnit,\n destructComputed,\n flipAlign,\n flipCorner,\n flipSide,\n getAxis,\n getScrollParents,\n IN_BROWSER,\n isFixedPosition,\n nullifyTransforms,\n parseAnchor,\n propsFactory,\n} from '@/util'\nimport { Box, getOverflow, getTargetBox } from '@/util/box'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n target: Ref<HTMLElement | [x: number, y: number] | undefined>\n isActive: Ref<boolean>\n isRtl: Ref<boolean>\n}\n\nexport type LocationStrategyFunction = (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n) => undefined | { updateLocation: (e?: Event) => void }\n\nconst locationStrategies = {\n static: staticLocationStrategy, // specific viewport position, usually centered\n connected: connectedLocationStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n locationStrategy: keyof typeof locationStrategies | LocationStrategyFunction\n location: Anchor\n origin: Anchor | 'auto' | 'overlap'\n offset?: number | string | number[]\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n}\n\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function] as PropType<StrategyProps['locationStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom',\n },\n origin: {\n type: String as PropType<StrategyProps['origin']>,\n default: 'auto',\n },\n offset: [Number, String, Array] as PropType<StrategyProps['offset']>,\n}, 'VOverlay-location-strategies')\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset)\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n })\n\n window.addEventListener('resize', onResize, { passive: true })\n\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation\n }\n })\n }\n\n function onResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n return {\n contentStyles,\n updateLocation,\n }\n}\n\nfunction staticLocationStrategy () {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize (el: HTMLElement, isRtl: boolean) {\n // const scrollables = new Map<Element, [number, number]>()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el)\n\n if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0)\n } else {\n contentBox.x -= parseFloat(el.style.left || 0)\n }\n contentBox.y -= parseFloat(el.style.top || 0)\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox\n}\n\nfunction connectedLocationStrategy (data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>) {\n const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.value)\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0,\n })\n }\n\n const { preferredAnchor, preferredOrigin } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value)\n const parsedOrigin =\n props.origin === 'overlap' ? parsedAnchor\n : props.origin === 'auto' ? flipSide(parsedAnchor)\n : parseAnchor(props.origin, data.isRtl.value)\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin),\n }\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin,\n }\n }\n })\n\n const [minWidth, minHeight, maxWidth, maxHeight] =\n (['minWidth', 'minHeight', 'maxWidth', 'maxHeight'] as const).map(key => {\n return computed(() => {\n const val = parseFloat(props[key]!)\n return isNaN(val) ? Infinity : val\n })\n })\n\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat)\n if (offset.length < 2) offset.push(0)\n return offset\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0]\n })\n\n let observe = false\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation()\n })\n\n watch([data.target, data.contentEl], ([newTarget, newContentEl], [oldTarget, oldContentEl]) => {\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget)\n if (newTarget && !Array.isArray(newTarget)) observer.observe(newTarget)\n\n if (oldContentEl) observer.unobserve(oldContentEl)\n if (newContentEl) observer.observe(newContentEl)\n }, {\n immediate: true,\n })\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n\n let targetBox = new Box({ x: 0, y: 0, width: 0, height: 0 })\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => observe = true)\n\n if (!data.target.value || !data.contentEl.value) return\n\n if (Array.isArray(data.target.value) || data.target.value.offsetParent) {\n targetBox = getTargetBox(data.target.value)\n } // Otherwise target element is hidden, use last known value\n\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value)\n const scrollParents = getScrollParents(data.contentEl.value)\n const viewportMargin = 12\n\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement)\n if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {\n contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0)\n contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0)\n }\n }\n\n const viewport = scrollParents.reduce<Box>((box: Box | undefined, el) => {\n const rect = el.getBoundingClientRect()\n const scrollBox = new Box({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight,\n })\n\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top),\n })\n }\n return scrollBox\n }, undefined!)\n viewport.x += viewportMargin\n viewport.y += viewportMargin\n viewport.width -= viewportMargin * 2\n viewport.height -= viewportMargin * 2\n\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value,\n }\n\n function checkOverflow (_placement: typeof placement) {\n const box = new Box(contentBox)\n const targetPoint = anchorToPoint(_placement.anchor, targetBox)\n const contentPoint = anchorToPoint(_placement.origin, box)\n\n let { x, y } = getOffset(targetPoint, contentPoint)\n\n switch (_placement.anchor.side) {\n case 'top': y -= offset.value[0]; break\n case 'bottom': y += offset.value[0]; break\n case 'left': x -= offset.value[0]; break\n case 'right': x += offset.value[0]; break\n }\n\n switch (_placement.anchor.align) {\n case 'top': y -= offset.value[1]; break\n case 'bottom': y += offset.value[1]; break\n case 'left': x -= offset.value[1]; break\n case 'right': x += offset.value[1]; break\n }\n\n box.x += x\n box.y += y\n\n box.width = Math.min(box.width, maxWidth.value)\n box.height = Math.min(box.height, maxHeight.value)\n\n const overflows = getOverflow(box, viewport)\n\n return { overflows, x, y }\n }\n\n let x = 0; let y = 0\n const available = { x: 0, y: 0 }\n const flipped = { x: false, y: false }\n let resets = -1\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy')\n break\n }\n\n const { x: _x, y: _y, overflows } = checkOverflow(placement)\n\n x += _x\n y += _y\n\n contentBox.x += _x\n contentBox.y += _y\n\n // flip\n {\n const axis = getAxis(placement.anchor)\n const hasOverflowX = overflows.x.before || overflows.x.after\n const hasOverflowY = overflows.y.before || overflows.y.after\n\n let reset = false\n ;['x', 'y'].forEach(key => {\n if (\n (key === 'x' && hasOverflowX && !flipped.x) ||\n (key === 'y' && hasOverflowY && !flipped.y)\n ) {\n const newPlacement = { anchor: { ...placement.anchor }, origin: { ...placement.origin } }\n const flip = key === 'x'\n ? axis === 'y' ? flipAlign : flipSide\n : axis === 'y' ? flipSide : flipAlign\n newPlacement.anchor = flip(newPlacement.anchor)\n newPlacement.origin = flip(newPlacement.origin)\n const { overflows: newOverflows } = checkOverflow(newPlacement)\n if (\n (newOverflows[key].before <= overflows[key].before &&\n newOverflows[key].after <= overflows[key].after) ||\n (newOverflows[key].before + newOverflows[key].after <\n (overflows[key].before + overflows[key].after) / 2)\n ) {\n placement = newPlacement\n reset = flipped[key] = true\n }\n }\n })\n if (reset) continue\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before\n contentBox.x += overflows.x.before\n }\n if (overflows.x.after) {\n x -= overflows.x.after\n contentBox.x -= overflows.x.after\n }\n if (overflows.y.before) {\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n if (overflows.y.after) {\n y -= overflows.y.after\n contentBox.y -= overflows.y.after\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport)\n available.x = viewport.width - overflows.x.before - overflows.x.after\n available.y = viewport.height - overflows.y.before - overflows.y.after\n\n x += overflows.x.before\n contentBox.x += overflows.x.before\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n\n break\n }\n\n const axis = getAxis(placement.anchor)\n\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value))),\n })\n\n return {\n available,\n contentBox,\n }\n }\n\n watch(\n () => [\n preferredAnchor.value,\n preferredOrigin.value,\n props.offset,\n props.minWidth,\n props.minHeight,\n props.maxWidth,\n props.maxHeight,\n ],\n () => updateLocation(),\n )\n\n nextTick(() => {\n const result = updateLocation()\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return\n const { available, contentBox } = result\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation()\n requestAnimationFrame(() => {\n updateLocation()\n })\n })\n }\n })\n\n return { updateLocation }\n}\n\nfunction pixelRound (val: number) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio\n}\n\nfunction pixelCeil (val: number) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"locationStrategies.js","names":["useToggleScope","computed","nextTick","onScopeDispose","ref","watch","anchorToPoint","getOffset","CircularBuffer","clamp","consoleError","convertToUnit","deepEqual","destructComputed","flipAlign","flipCorner","flipSide","getAxis","getScrollParents","IN_BROWSER","isFixedPosition","nullifyTransforms","parseAnchor","propsFactory","Box","getOverflow","getTargetBox","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","locationStrategy","type","String","Function","default","validator","val","location","origin","offset","Number","Array","useLocationStrategies","props","data","contentStyles","updateLocation","isActive","value","reset","window","removeEventListener","onResize","undefined","addEventListener","passive","e","getIntrinsicSize","el","isRtl","contentBox","x","parseFloat","style","right","left","y","top","activatorFixed","isArray","target","Object","assign","position","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","side","align","minWidth","minHeight","maxWidth","maxHeight","map","key","isNaN","Infinity","split","length","push","observe","lastFrame","flipped","observer","ResizeObserver","requestAnimationFrame","newTime","clear","newNewTime","isFull","values","at","result","contentEl","_ref","_ref2","newTarget","newContentEl","oldTarget","oldContentEl","unobserve","immediate","disconnect","targetBox","width","height","offsetParent","scrollParents","viewportMargin","document","documentElement","getPropertyValue","viewport","reduce","box","rect","getBoundingClientRect","scrollBox","clientWidth","clientHeight","Math","max","min","bottom","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","forEach","newPlacement","flip","newOverflows","transformOrigin","pixelRound","pixelCeil","round","devicePixelRatio","ceil"],"sources":["../../../src/components/VOverlay/locationStrategies.ts"],"sourcesContent":["// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue'\nimport { anchorToPoint, getOffset } from './util/point'\nimport {\n CircularBuffer,\n clamp,\n consoleError,\n convertToUnit,\n deepEqual,\n destructComputed,\n flipAlign,\n flipCorner,\n flipSide,\n getAxis,\n getScrollParents,\n IN_BROWSER,\n isFixedPosition,\n nullifyTransforms,\n parseAnchor,\n propsFactory,\n} from '@/util'\nimport { Box, getOverflow, getTargetBox } from '@/util/box'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n target: Ref<HTMLElement | [x: number, y: number] | undefined>\n isActive: Ref<boolean>\n isRtl: Ref<boolean>\n}\n\nexport type LocationStrategyFunction = (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n) => undefined | { updateLocation: (e?: Event) => void }\n\nconst locationStrategies = {\n static: staticLocationStrategy, // specific viewport position, usually centered\n connected: connectedLocationStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n locationStrategy: keyof typeof locationStrategies | LocationStrategyFunction\n location: Anchor\n origin: Anchor | 'auto' | 'overlap'\n offset?: number | string | number[]\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n}\n\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function] as PropType<StrategyProps['locationStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom',\n },\n origin: {\n type: String as PropType<StrategyProps['origin']>,\n default: 'auto',\n },\n offset: [Number, String, Array] as PropType<StrategyProps['offset']>,\n}, 'VOverlay-location-strategies')\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset)\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n })\n\n window.addEventListener('resize', onResize, { passive: true })\n\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation\n }\n })\n }\n\n function onResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n return {\n contentStyles,\n updateLocation,\n }\n}\n\nfunction staticLocationStrategy () {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize (el: HTMLElement, isRtl: boolean) {\n // const scrollables = new Map<Element, [number, number]>()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el)\n\n if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0)\n } else {\n contentBox.x -= parseFloat(el.style.left || 0)\n }\n contentBox.y -= parseFloat(el.style.top || 0)\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox\n}\n\nfunction connectedLocationStrategy (data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>) {\n const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.value)\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0,\n })\n }\n\n const { preferredAnchor, preferredOrigin } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value)\n const parsedOrigin =\n props.origin === 'overlap' ? parsedAnchor\n : props.origin === 'auto' ? flipSide(parsedAnchor)\n : parseAnchor(props.origin, data.isRtl.value)\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin),\n }\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin,\n }\n }\n })\n\n const [minWidth, minHeight, maxWidth, maxHeight] =\n (['minWidth', 'minHeight', 'maxWidth', 'maxHeight'] as const).map(key => {\n return computed(() => {\n const val = parseFloat(props[key]!)\n return isNaN(val) ? Infinity : val\n })\n })\n\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat)\n if (offset.length < 2) offset.push(0)\n return offset\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0]\n })\n\n let observe = false\n let lastFrame = -1\n const flipped = new CircularBuffer<{ x: boolean, y: boolean }>(4)\n const observer = new ResizeObserver(() => {\n if (!observe) return\n\n // Detect consecutive frames\n requestAnimationFrame(newTime => {\n if (newTime !== lastFrame) flipped.clear()\n requestAnimationFrame(newNewTime => {\n lastFrame = newNewTime\n })\n })\n\n if (flipped.isFull) {\n const values = flipped.values()\n if (deepEqual(values.at(-1), values.at(-3))) {\n // Flipping is causing a container resize loop\n return\n }\n }\n\n const result = updateLocation()\n if (result) flipped.push(result.flipped)\n })\n\n watch([data.target, data.contentEl], ([newTarget, newContentEl], [oldTarget, oldContentEl]) => {\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget)\n if (newTarget && !Array.isArray(newTarget)) observer.observe(newTarget)\n\n if (oldContentEl) observer.unobserve(oldContentEl)\n if (newContentEl) observer.observe(newContentEl)\n }, {\n immediate: true,\n })\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n\n let targetBox = new Box({ x: 0, y: 0, width: 0, height: 0 })\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => observe = true)\n\n if (!data.target.value || !data.contentEl.value) return\n\n if (Array.isArray(data.target.value) || data.target.value.offsetParent) {\n targetBox = getTargetBox(data.target.value)\n } // Otherwise target element is hidden, use last known value\n\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value)\n const scrollParents = getScrollParents(data.contentEl.value)\n const viewportMargin = 12\n\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement)\n if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {\n contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0)\n contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0)\n }\n }\n\n const viewport = scrollParents.reduce<Box>((box: Box | undefined, el) => {\n const rect = el.getBoundingClientRect()\n const scrollBox = new Box({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight,\n })\n\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top),\n })\n }\n return scrollBox\n }, undefined!)\n viewport.x += viewportMargin\n viewport.y += viewportMargin\n viewport.width -= viewportMargin * 2\n viewport.height -= viewportMargin * 2\n\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value,\n }\n\n function checkOverflow (_placement: typeof placement) {\n const box = new Box(contentBox)\n const targetPoint = anchorToPoint(_placement.anchor, targetBox)\n const contentPoint = anchorToPoint(_placement.origin, box)\n\n let { x, y } = getOffset(targetPoint, contentPoint)\n\n switch (_placement.anchor.side) {\n case 'top': y -= offset.value[0]; break\n case 'bottom': y += offset.value[0]; break\n case 'left': x -= offset.value[0]; break\n case 'right': x += offset.value[0]; break\n }\n\n switch (_placement.anchor.align) {\n case 'top': y -= offset.value[1]; break\n case 'bottom': y += offset.value[1]; break\n case 'left': x -= offset.value[1]; break\n case 'right': x += offset.value[1]; break\n }\n\n box.x += x\n box.y += y\n\n box.width = Math.min(box.width, maxWidth.value)\n box.height = Math.min(box.height, maxHeight.value)\n\n const overflows = getOverflow(box, viewport)\n\n return { overflows, x, y }\n }\n\n let x = 0; let y = 0\n const available = { x: 0, y: 0 }\n const flipped = { x: false, y: false }\n let resets = -1\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy')\n break\n }\n\n const { x: _x, y: _y, overflows } = checkOverflow(placement)\n\n x += _x\n y += _y\n\n contentBox.x += _x\n contentBox.y += _y\n\n // flip\n {\n const axis = getAxis(placement.anchor)\n const hasOverflowX = overflows.x.before || overflows.x.after\n const hasOverflowY = overflows.y.before || overflows.y.after\n\n let reset = false\n ;['x', 'y'].forEach(key => {\n if (\n (key === 'x' && hasOverflowX && !flipped.x) ||\n (key === 'y' && hasOverflowY && !flipped.y)\n ) {\n const newPlacement = { anchor: { ...placement.anchor }, origin: { ...placement.origin } }\n const flip = key === 'x'\n ? axis === 'y' ? flipAlign : flipSide\n : axis === 'y' ? flipSide : flipAlign\n newPlacement.anchor = flip(newPlacement.anchor)\n newPlacement.origin = flip(newPlacement.origin)\n const { overflows: newOverflows } = checkOverflow(newPlacement)\n if (\n (newOverflows[key].before <= overflows[key].before &&\n newOverflows[key].after <= overflows[key].after) ||\n (newOverflows[key].before + newOverflows[key].after <\n (overflows[key].before + overflows[key].after) / 2)\n ) {\n placement = newPlacement\n reset = flipped[key] = true\n }\n }\n })\n if (reset) continue\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before\n contentBox.x += overflows.x.before\n }\n if (overflows.x.after) {\n x -= overflows.x.after\n contentBox.x -= overflows.x.after\n }\n if (overflows.y.before) {\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n if (overflows.y.after) {\n y -= overflows.y.after\n contentBox.y -= overflows.y.after\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport)\n available.x = viewport.width - overflows.x.before - overflows.x.after\n available.y = viewport.height - overflows.y.before - overflows.y.after\n\n x += overflows.x.before\n contentBox.x += overflows.x.before\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n\n break\n }\n\n const axis = getAxis(placement.anchor)\n\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value))),\n })\n\n return {\n available,\n contentBox,\n flipped,\n }\n }\n\n watch(\n () => [\n preferredAnchor.value,\n preferredOrigin.value,\n props.offset,\n props.minWidth,\n props.minHeight,\n props.maxWidth,\n props.maxHeight,\n ],\n () => updateLocation(),\n )\n\n nextTick(() => {\n const result = updateLocation()\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return\n const { available, contentBox } = result\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation()\n requestAnimationFrame(() => {\n updateLocation()\n })\n })\n }\n })\n\n return { updateLocation }\n}\n\nfunction pixelRound (val: number) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio\n}\n\nfunction pixelCeil (val: number) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -47,7 +47,7 @@ export function provideDefaults(defaults, options) {
|
|
47
47
|
return newDefaults;
|
48
48
|
}
|
49
49
|
function propIsDefined(vnode, prop) {
|
50
|
-
return typeof vnode.props
|
50
|
+
return vnode.props && (typeof vnode.props[prop] !== 'undefined' || typeof vnode.props[toKebabCase(prop)] !== 'undefined');
|
51
51
|
}
|
52
52
|
export function internalUseDefaults() {
|
53
53
|
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
@@ -64,9 +64,12 @@ export function internalUseDefaults() {
|
|
64
64
|
const propValue = Reflect.get(target, prop);
|
65
65
|
if (prop === 'class' || prop === 'style') {
|
66
66
|
return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
|
67
|
-
} else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
|
68
|
-
return componentDefaults.value?.[prop] !== undefined ? componentDefaults.value?.[prop] : defaults.value?.global?.[prop] !== undefined ? defaults.value?.global?.[prop] : propValue;
|
69
67
|
}
|
68
|
+
if (propIsDefined(vm.vnode, prop)) return propValue;
|
69
|
+
const _componentDefault = componentDefaults.value?.[prop];
|
70
|
+
if (_componentDefault !== undefined) return _componentDefault;
|
71
|
+
const _globalDefault = defaults.value?.global?.[prop];
|
72
|
+
if (_globalDefault !== undefined) return _globalDefault;
|
70
73
|
return propValue;
|
71
74
|
}
|
72
75
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"defaults.js","names":["computed","inject","provide","ref","shallowRef","unref","watchEffect","getCurrentInstance","mergeDeep","toKebabCase","injectSelf","DefaultsSymbol","Symbol","for","createDefaults","options","injectDefaults","defaults","Error","provideDefaults","injectedDefaults","providedDefaults","newDefaults","disabled","value","scoped","reset","root","properties","prev","len","Number","Infinity","i","propIsDefined","vnode","prop","props","internalUseDefaults","arguments","length","undefined","name","vm","type","__name","componentDefaults","_as","_props","Proxy","get","target","propValue","Reflect","filter","v","global","_subcomponentDefaults","subComponents","Object","entries","_ref","key","startsWith","toUpperCase","fromEntries","provideSubDefaults","injected","useDefaults"],"sources":["../../src/composables/defaults.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, shallowRef, unref, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util/getCurrentInstance'\nimport { mergeDeep, toKebabCase } from '@/util/helpers'\nimport { injectSelf } from '@/util/injectSelf'\n\n// Types\nimport type { ComputedRef, InjectionKey, Ref, VNode } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type DefaultsInstance = undefined | {\n [key: string]: undefined | Record<string, unknown>\n global?: Record<string, unknown>\n}\n\nexport type DefaultsOptions = Partial<DefaultsInstance>\n\nexport const DefaultsSymbol: InjectionKey<Ref<DefaultsInstance>> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref<DefaultsInstance> {\n return ref(options)\n}\n\nexport function injectDefaults () {\n const defaults = inject(DefaultsSymbol)\n\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance')\n\n return defaults\n}\n\nexport function provideDefaults (\n defaults?: MaybeRef<DefaultsInstance | undefined>,\n options?: {\n disabled?: MaybeRef<boolean | undefined>\n reset?: MaybeRef<number | string | undefined>\n root?: MaybeRef<boolean | string | undefined>\n scoped?: MaybeRef<boolean | undefined>\n }\n) {\n const injectedDefaults = injectDefaults()\n const providedDefaults = ref(defaults)\n\n const newDefaults = computed(() => {\n const disabled = unref(options?.disabled)\n\n if (disabled) return injectedDefaults.value\n\n const scoped = unref(options?.scoped)\n const reset = unref(options?.reset)\n const root = unref(options?.root)\n\n if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value\n\n let properties = mergeDeep(providedDefaults.value, { prev: injectedDefaults.value })\n\n if (scoped) return properties\n\n if (reset || root) {\n const len = Number(reset || Infinity)\n\n for (let i = 0; i <= len; i++) {\n if (!properties || !('prev' in properties)) {\n break\n }\n\n properties = properties.prev\n }\n\n if (properties && typeof root === 'string' && root in properties) {\n properties = mergeDeep(mergeDeep(properties, { prev: properties }), properties[root])\n }\n\n return properties\n }\n\n return properties.prev\n ? mergeDeep(properties.prev, properties)\n : properties\n }) as ComputedRef<DefaultsInstance>\n\n provide(DefaultsSymbol, newDefaults)\n\n return newDefaults\n}\n\nfunction propIsDefined (vnode: VNode, prop: string) {\n return typeof vnode.props?.[prop] !== 'undefined' ||\n typeof vnode.props?.[toKebabCase(prop)] !== 'undefined'\n}\n\nexport function internalUseDefaults (\n props: Record<string, any> = {},\n name?: string,\n defaults = injectDefaults()\n) {\n const vm = getCurrentInstance('useDefaults')\n\n name = name ?? vm.type.name ?? vm.type.__name\n if (!name) {\n throw new Error('[Vuetify] Could not determine component name')\n }\n\n const componentDefaults = computed(() => defaults.value?.[props._as ?? name])\n const _props = new Proxy(props, {\n get (target, prop) {\n const propValue = Reflect.get(target, prop)\n if (prop === 'class' || prop === 'style') {\n return [componentDefaults.value?.[prop], propValue].filter(v => v != null)\n } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {\n return componentDefaults.value?.[prop] !== undefined ? componentDefaults.value?.[prop]\n : defaults.value?.global?.[prop] !== undefined ? defaults.value?.global?.[prop]\n : propValue\n }\n return propValue\n },\n })\n\n const _subcomponentDefaults = shallowRef()\n watchEffect(() => {\n if (componentDefaults.value) {\n const subComponents = Object.entries(componentDefaults.value).filter(([key]) => key.startsWith(key[0].toUpperCase()))\n _subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : undefined\n } else {\n _subcomponentDefaults.value = undefined\n }\n })\n\n function provideSubDefaults () {\n const injected = injectSelf(DefaultsSymbol, vm)\n provide(DefaultsSymbol, computed(() => {\n return _subcomponentDefaults.value ? mergeDeep(\n injected?.value ?? {},\n _subcomponentDefaults.value\n ) : injected?.value\n }))\n }\n\n return { props: _props, provideSubDefaults }\n}\n\nexport function useDefaults<T extends Record<string, any>> (props: T, name?: string): T\nexport function useDefaults (props?: undefined, name?: string): Record<string, any>\nexport function useDefaults (\n props: Record<string, any> = {},\n name?: string,\n) {\n const { props: _props, provideSubDefaults } = internalUseDefaults(props, name)\n provideSubDefaults()\n return _props\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"defaults.js","names":["computed","inject","provide","ref","shallowRef","unref","watchEffect","getCurrentInstance","mergeDeep","toKebabCase","injectSelf","DefaultsSymbol","Symbol","for","createDefaults","options","injectDefaults","defaults","Error","provideDefaults","injectedDefaults","providedDefaults","newDefaults","disabled","value","scoped","reset","root","properties","prev","len","Number","Infinity","i","propIsDefined","vnode","prop","props","internalUseDefaults","arguments","length","undefined","name","vm","type","__name","componentDefaults","_as","_props","Proxy","get","target","propValue","Reflect","filter","v","_componentDefault","_globalDefault","global","_subcomponentDefaults","subComponents","Object","entries","_ref","key","startsWith","toUpperCase","fromEntries","provideSubDefaults","injected","useDefaults"],"sources":["../../src/composables/defaults.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, shallowRef, unref, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util/getCurrentInstance'\nimport { mergeDeep, toKebabCase } from '@/util/helpers'\nimport { injectSelf } from '@/util/injectSelf'\n\n// Types\nimport type { ComputedRef, InjectionKey, Ref, VNode } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type DefaultsInstance = undefined | {\n [key: string]: undefined | Record<string, unknown>\n global?: Record<string, unknown>\n}\n\nexport type DefaultsOptions = Partial<DefaultsInstance>\n\nexport const DefaultsSymbol: InjectionKey<Ref<DefaultsInstance>> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref<DefaultsInstance> {\n return ref(options)\n}\n\nexport function injectDefaults () {\n const defaults = inject(DefaultsSymbol)\n\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance')\n\n return defaults\n}\n\nexport function provideDefaults (\n defaults?: MaybeRef<DefaultsInstance | undefined>,\n options?: {\n disabled?: MaybeRef<boolean | undefined>\n reset?: MaybeRef<number | string | undefined>\n root?: MaybeRef<boolean | string | undefined>\n scoped?: MaybeRef<boolean | undefined>\n }\n) {\n const injectedDefaults = injectDefaults()\n const providedDefaults = ref(defaults)\n\n const newDefaults = computed(() => {\n const disabled = unref(options?.disabled)\n\n if (disabled) return injectedDefaults.value\n\n const scoped = unref(options?.scoped)\n const reset = unref(options?.reset)\n const root = unref(options?.root)\n\n if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value\n\n let properties = mergeDeep(providedDefaults.value, { prev: injectedDefaults.value })\n\n if (scoped) return properties\n\n if (reset || root) {\n const len = Number(reset || Infinity)\n\n for (let i = 0; i <= len; i++) {\n if (!properties || !('prev' in properties)) {\n break\n }\n\n properties = properties.prev\n }\n\n if (properties && typeof root === 'string' && root in properties) {\n properties = mergeDeep(mergeDeep(properties, { prev: properties }), properties[root])\n }\n\n return properties\n }\n\n return properties.prev\n ? mergeDeep(properties.prev, properties)\n : properties\n }) as ComputedRef<DefaultsInstance>\n\n provide(DefaultsSymbol, newDefaults)\n\n return newDefaults\n}\n\nfunction propIsDefined (vnode: VNode, prop: string) {\n return vnode.props && (typeof vnode.props[prop] !== 'undefined' ||\n typeof vnode.props[toKebabCase(prop)] !== 'undefined')\n}\n\nexport function internalUseDefaults (\n props: Record<string, any> = {},\n name?: string,\n defaults = injectDefaults()\n) {\n const vm = getCurrentInstance('useDefaults')\n\n name = name ?? vm.type.name ?? vm.type.__name\n if (!name) {\n throw new Error('[Vuetify] Could not determine component name')\n }\n\n const componentDefaults = computed(() => defaults.value?.[props._as ?? name])\n const _props = new Proxy(props, {\n get (target, prop: string) {\n const propValue = Reflect.get(target, prop)\n if (prop === 'class' || prop === 'style') {\n return [componentDefaults.value?.[prop], propValue].filter(v => v != null)\n }\n if (propIsDefined(vm.vnode, prop)) return propValue\n const _componentDefault = componentDefaults.value?.[prop]\n if (_componentDefault !== undefined) return _componentDefault\n const _globalDefault = defaults.value?.global?.[prop]\n if (_globalDefault !== undefined) return _globalDefault\n return propValue\n },\n })\n\n const _subcomponentDefaults = shallowRef()\n watchEffect(() => {\n if (componentDefaults.value) {\n const subComponents = Object.entries(componentDefaults.value)\n .filter(([key]) => key.startsWith(key[0].toUpperCase()))\n _subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : undefined\n } else {\n _subcomponentDefaults.value = undefined\n }\n })\n\n function provideSubDefaults () {\n const injected = injectSelf(DefaultsSymbol, vm)\n provide(DefaultsSymbol, computed(() => {\n return _subcomponentDefaults.value ? mergeDeep(\n injected?.value ?? {},\n _subcomponentDefaults.value\n ) : injected?.value\n }))\n }\n\n return { props: _props, provideSubDefaults }\n}\n\nexport function useDefaults<T extends Record<string, any>> (props: T, name?: string): T\nexport function useDefaults (props?: undefined, name?: string): Record<string, any>\nexport function useDefaults (\n props: Record<string, any> = {},\n name?: string,\n) {\n const { props: _props, provideSubDefaults } = internalUseDefaults(props, name)\n provideSubDefaults()\n return _props\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/entry-bundler.js
CHANGED
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
16
16
|
...options
|
17
17
|
});
|
18
18
|
};
|
19
|
-
export const version = "3.8.2-master.2025-04-
|
19
|
+
export const version = "3.8.2-master.2025-04-28";
|
20
20
|
createVuetify.version = version;
|
21
21
|
export { blueprints, components, directives };
|
22
22
|
export * from "./composables/index.js";
|
package/lib/framework.d.ts
CHANGED
@@ -638,6 +638,10 @@ declare function connectedLocationStrategy(data: LocationStrategyData, props: St
|
|
638
638
|
y: number;
|
639
639
|
};
|
640
640
|
contentBox: Box;
|
641
|
+
flipped: {
|
642
|
+
x: boolean;
|
643
|
+
y: boolean;
|
644
|
+
};
|
641
645
|
} | undefined;
|
642
646
|
};
|
643
647
|
|
@@ -2572,41 +2576,49 @@ declare module 'vue' {
|
|
2572
2576
|
$children?: VNodeChild
|
2573
2577
|
}
|
2574
2578
|
export interface GlobalComponents {
|
2579
|
+
VApp: typeof import('vuetify/components')['VApp']
|
2580
|
+
VAlert: typeof import('vuetify/components')['VAlert']
|
2581
|
+
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
2582
|
+
VAvatar: typeof import('vuetify/components')['VAvatar']
|
2575
2583
|
VAppBar: typeof import('vuetify/components')['VAppBar']
|
2576
2584
|
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
2577
2585
|
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
2578
|
-
VAlert: typeof import('vuetify/components')['VAlert']
|
2579
|
-
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
2580
2586
|
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
2581
|
-
VBanner: typeof import('vuetify/components')['VBanner']
|
2582
|
-
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
2583
|
-
VBannerText: typeof import('vuetify/components')['VBannerText']
|
2584
2587
|
VBadge: typeof import('vuetify/components')['VBadge']
|
2585
|
-
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
2586
|
-
VAvatar: typeof import('vuetify/components')['VAvatar']
|
2587
2588
|
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
2588
2589
|
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
2589
2590
|
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
2590
2591
|
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
2592
|
+
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
2591
2593
|
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
2592
|
-
VBtn: typeof import('vuetify/components')['VBtn']
|
2593
2594
|
VCard: typeof import('vuetify/components')['VCard']
|
2594
2595
|
VCardActions: typeof import('vuetify/components')['VCardActions']
|
2595
2596
|
VCardItem: typeof import('vuetify/components')['VCardItem']
|
2596
2597
|
VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
|
2597
2598
|
VCardText: typeof import('vuetify/components')['VCardText']
|
2598
2599
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
2599
|
-
|
2600
|
-
|
2601
|
-
|
2600
|
+
VBtn: typeof import('vuetify/components')['VBtn']
|
2601
|
+
VBanner: typeof import('vuetify/components')['VBanner']
|
2602
|
+
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
2603
|
+
VBannerText: typeof import('vuetify/components')['VBannerText']
|
2602
2604
|
VCarousel: typeof import('vuetify/components')['VCarousel']
|
2603
2605
|
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
2604
|
-
|
2606
|
+
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
2607
|
+
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
2608
|
+
VCode: typeof import('vuetify/components')['VCode']
|
2609
|
+
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
2605
2610
|
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
2606
2611
|
VCombobox: typeof import('vuetify/components')['VCombobox']
|
2612
|
+
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
2607
2613
|
VCounter: typeof import('vuetify/components')['VCounter']
|
2608
|
-
|
2609
|
-
|
2614
|
+
VDialog: typeof import('vuetify/components')['VDialog']
|
2615
|
+
VChip: typeof import('vuetify/components')['VChip']
|
2616
|
+
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
2617
|
+
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
2618
|
+
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
2619
|
+
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
|
2620
|
+
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
2621
|
+
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
2610
2622
|
VDataTable: typeof import('vuetify/components')['VDataTable']
|
2611
2623
|
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
|
2612
2624
|
VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
|
@@ -2614,36 +2626,27 @@ declare module 'vue' {
|
|
2614
2626
|
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
2615
2627
|
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
2616
2628
|
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
2617
|
-
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
2618
|
-
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
2619
|
-
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
2620
|
-
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
|
2621
|
-
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
2622
|
-
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
2623
2629
|
VDivider: typeof import('vuetify/components')['VDivider']
|
2624
|
-
|
2630
|
+
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
2631
|
+
VFileInput: typeof import('vuetify/components')['VFileInput']
|
2632
|
+
VFab: typeof import('vuetify/components')['VFab']
|
2625
2633
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
2626
2634
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
2627
2635
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
2628
2636
|
VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
|
2629
|
-
|
2637
|
+
VFooter: typeof import('vuetify/components')['VFooter']
|
2630
2638
|
VField: typeof import('vuetify/components')['VField']
|
2631
2639
|
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
2632
|
-
|
2633
|
-
|
2634
|
-
|
2640
|
+
VImg: typeof import('vuetify/components')['VImg']
|
2641
|
+
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
2642
|
+
VItem: typeof import('vuetify/components')['VItem']
|
2635
2643
|
VIcon: typeof import('vuetify/components')['VIcon']
|
2636
2644
|
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
|
2637
2645
|
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
|
2638
2646
|
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
|
2639
2647
|
VClassIcon: typeof import('vuetify/components')['VClassIcon']
|
2640
|
-
VImg: typeof import('vuetify/components')['VImg']
|
2641
|
-
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
2642
|
-
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
2643
|
-
VItem: typeof import('vuetify/components')['VItem']
|
2644
|
-
VLabel: typeof import('vuetify/components')['VLabel']
|
2645
2648
|
VKbd: typeof import('vuetify/components')['VKbd']
|
2646
|
-
|
2649
|
+
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
2647
2650
|
VList: typeof import('vuetify/components')['VList']
|
2648
2651
|
VListGroup: typeof import('vuetify/components')['VListGroup']
|
2649
2652
|
VListImg: typeof import('vuetify/components')['VListImg']
|
@@ -2653,28 +2656,29 @@ declare module 'vue' {
|
|
2653
2656
|
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
|
2654
2657
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
2655
2658
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
2656
|
-
|
2657
|
-
|
2659
|
+
VLabel: typeof import('vuetify/components')['VLabel']
|
2660
|
+
VInput: typeof import('vuetify/components')['VInput']
|
2658
2661
|
VMenu: typeof import('vuetify/components')['VMenu']
|
2659
|
-
|
2662
|
+
VMain: typeof import('vuetify/components')['VMain']
|
2663
|
+
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
2660
2664
|
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
2661
2665
|
VNumberInput: typeof import('vuetify/components')['VNumberInput']
|
2662
2666
|
VOverlay: typeof import('vuetify/components')['VOverlay']
|
2663
|
-
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
2664
2667
|
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
2665
|
-
VPagination: typeof import('vuetify/components')['VPagination']
|
2666
|
-
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
2667
2668
|
VRating: typeof import('vuetify/components')['VRating']
|
2669
|
+
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
2670
|
+
VPagination: typeof import('vuetify/components')['VPagination']
|
2671
|
+
VSelect: typeof import('vuetify/components')['VSelect']
|
2668
2672
|
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
2673
|
+
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
2669
2674
|
VSheet: typeof import('vuetify/components')['VSheet']
|
2675
|
+
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
2670
2676
|
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
2677
|
+
VSlider: typeof import('vuetify/components')['VSlider']
|
2671
2678
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
2672
2679
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
2680
|
+
VMessages: typeof import('vuetify/components')['VMessages']
|
2673
2681
|
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
2674
|
-
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
2675
|
-
VSelect: typeof import('vuetify/components')['VSelect']
|
2676
|
-
VSlider: typeof import('vuetify/components')['VSlider']
|
2677
|
-
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
2678
2682
|
VSwitch: typeof import('vuetify/components')['VSwitch']
|
2679
2683
|
VStepper: typeof import('vuetify/components')['VStepper']
|
2680
2684
|
VStepperActions: typeof import('vuetify/components')['VStepperActions']
|
@@ -2682,41 +2686,41 @@ declare module 'vue' {
|
|
2682
2686
|
VStepperItem: typeof import('vuetify/components')['VStepperItem']
|
2683
2687
|
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
|
2684
2688
|
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
|
2685
|
-
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
2686
2689
|
VTab: typeof import('vuetify/components')['VTab']
|
2687
2690
|
VTabs: typeof import('vuetify/components')['VTabs']
|
2688
2691
|
VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
|
2689
2692
|
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
|
2693
|
+
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
2690
2694
|
VTextarea: typeof import('vuetify/components')['VTextarea']
|
2691
2695
|
VTextField: typeof import('vuetify/components')['VTextField']
|
2692
2696
|
VTable: typeof import('vuetify/components')['VTable']
|
2697
|
+
VTooltip: typeof import('vuetify/components')['VTooltip']
|
2693
2698
|
VToolbar: typeof import('vuetify/components')['VToolbar']
|
2694
2699
|
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
2695
2700
|
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
2696
|
-
VTooltip: typeof import('vuetify/components')['VTooltip']
|
2697
2701
|
VTimeline: typeof import('vuetify/components')['VTimeline']
|
2698
2702
|
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
2699
2703
|
VWindow: typeof import('vuetify/components')['VWindow']
|
2700
2704
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
2705
|
+
VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
|
2701
2706
|
VDataIterator: typeof import('vuetify/components')['VDataIterator']
|
2702
2707
|
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
|
2703
2708
|
VForm: typeof import('vuetify/components')['VForm']
|
2704
|
-
|
2705
|
-
VCol: typeof import('vuetify/components')['VCol']
|
2706
|
-
VRow: typeof import('vuetify/components')['VRow']
|
2707
|
-
VSpacer: typeof import('vuetify/components')['VSpacer']
|
2708
|
-
VLazy: typeof import('vuetify/components')['VLazy']
|
2709
|
+
VHover: typeof import('vuetify/components')['VHover']
|
2709
2710
|
VLayout: typeof import('vuetify/components')['VLayout']
|
2710
2711
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
2711
|
-
|
2712
|
+
VLazy: typeof import('vuetify/components')['VLazy']
|
2712
2713
|
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
2714
|
+
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
2715
|
+
VRadio: typeof import('vuetify/components')['VRadio']
|
2713
2716
|
VParallax: typeof import('vuetify/components')['VParallax']
|
2714
2717
|
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
2715
|
-
VRadio: typeof import('vuetify/components')['VRadio']
|
2716
2718
|
VResponsive: typeof import('vuetify/components')['VResponsive']
|
2717
|
-
|
2719
|
+
VSparkline: typeof import('vuetify/components')['VSparkline']
|
2718
2720
|
VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
|
2721
|
+
VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
|
2719
2722
|
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
|
2723
|
+
VValidation: typeof import('vuetify/components')['VValidation']
|
2720
2724
|
VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
|
2721
2725
|
VFabTransition: typeof import('vuetify/components')['VFabTransition']
|
2722
2726
|
VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
|
@@ -2734,31 +2738,31 @@ declare module 'vue' {
|
|
2734
2738
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
2735
2739
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
2736
2740
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
2737
|
-
|
2738
|
-
|
2739
|
-
|
2740
|
-
|
2741
|
-
VCalendar: typeof import('vuetify/labs/components')['VCalendar']
|
2742
|
-
VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
|
2743
|
-
VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
|
2744
|
-
VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
|
2745
|
-
VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
|
2746
|
-
VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
|
2747
|
-
VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
|
2748
|
-
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
2749
|
-
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
2750
|
-
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
2741
|
+
VContainer: typeof import('vuetify/components')['VContainer']
|
2742
|
+
VCol: typeof import('vuetify/components')['VCol']
|
2743
|
+
VRow: typeof import('vuetify/components')['VRow']
|
2744
|
+
VSpacer: typeof import('vuetify/components')['VSpacer']
|
2751
2745
|
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
2752
2746
|
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
2747
|
+
VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
|
2748
|
+
VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
|
2749
|
+
VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
|
2753
2750
|
VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
|
2754
2751
|
VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
|
2755
2752
|
VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
|
2756
|
-
|
2757
|
-
|
2753
|
+
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
2754
|
+
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
2755
|
+
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
2758
2756
|
VTreeview: typeof import('vuetify/labs/components')['VTreeview']
|
2759
2757
|
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
2760
2758
|
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
2761
2759
|
VDateInput: typeof import('vuetify/labs/components')['VDateInput']
|
2762
2760
|
VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
|
2761
|
+
VCalendar: typeof import('vuetify/labs/components')['VCalendar']
|
2762
|
+
VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
|
2763
|
+
VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
|
2764
|
+
VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
|
2765
|
+
VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
|
2766
|
+
VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
|
2763
2767
|
}
|
2764
2768
|
}
|
package/lib/framework.js
CHANGED
package/lib/util/helpers.d.ts
CHANGED
@@ -78,8 +78,10 @@ export declare class CircularBuffer<T = never> {
|
|
78
78
|
#private;
|
79
79
|
readonly size: number;
|
80
80
|
constructor(size: number);
|
81
|
+
get isFull(): boolean;
|
81
82
|
push(val: T): void;
|
82
83
|
values(): T[];
|
84
|
+
clear(): void;
|
83
85
|
}
|
84
86
|
export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
|
85
87
|
export declare function getEventCoordinates(e: MouseEvent | TouchEvent): {
|