@vuetify/nightly 3.8.2-master.2025-04-26 → 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.
@@ -79,6 +79,10 @@ declare function connectedLocationStrategy(data: LocationStrategyData, props: St
79
79
  y: number;
80
80
  };
81
81
  contentBox: Box;
82
+ flipped: {
83
+ x: boolean;
84
+ y: boolean;
85
+ };
82
86
  } | undefined;
83
87
  };
84
88
 
@@ -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) updateLocation();
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?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
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":"AAAA;AACA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,OAAO,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,EAAEC,WAAW,QAAQ,KAAK;AAAA,SAC3EC,kBAAkB;AAAA,SAClBC,SAAS,EAAEC,WAAW;AAAA,SACtBC,UAAU,iCAEnB;AAWA,OAAO,MAAMC,cAAmD,GAAGC,MAAM,CAACC,GAAG,CAAC,kBAAkB,CAAC;AAEjG,OAAO,SAASC,cAAcA,CAAEC,OAA0B,EAAyB;EACjF,OAAOZ,GAAG,CAACY,OAAO,CAAC;AACrB;AAEA,OAAO,SAASC,cAAcA,CAAA,EAAI;EAChC,MAAMC,QAAQ,GAAGhB,MAAM,CAACU,cAAc,CAAC;EAEvC,IAAI,CAACM,QAAQ,EAAE,MAAM,IAAIC,KAAK,CAAC,4CAA4C,CAAC;EAE5E,OAAOD,QAAQ;AACjB;AAEA,OAAO,SAASE,eAAeA,CAC7BF,QAAiD,EACjDF,OAKC,EACD;EACA,MAAMK,gBAAgB,GAAGJ,cAAc,CAAC,CAAC;EACzC,MAAMK,gBAAgB,GAAGlB,GAAG,CAACc,QAAQ,CAAC;EAEtC,MAAMK,WAAW,GAAGtB,QAAQ,CAAC,MAAM;IACjC,MAAMuB,QAAQ,GAAGlB,KAAK,CAACU,OAAO,EAAEQ,QAAQ,CAAC;IAEzC,IAAIA,QAAQ,EAAE,OAAOH,gBAAgB,CAACI,KAAK;IAE3C,MAAMC,MAAM,GAAGpB,KAAK,CAACU,OAAO,EAAEU,MAAM,CAAC;IACrC,MAAMC,KAAK,GAAGrB,KAAK,CAACU,OAAO,EAAEW,KAAK,CAAC;IACnC,MAAMC,IAAI,GAAGtB,KAAK,CAACU,OAAO,EAAEY,IAAI,CAAC;IAEjC,IAAIN,gBAAgB,CAACG,KAAK,IAAI,IAAI,IAAI,EAAEC,MAAM,IAAIC,KAAK,IAAIC,IAAI,CAAC,EAAE,OAAOP,gBAAgB,CAACI,KAAK;IAE/F,IAAII,UAAU,GAAGpB,SAAS,CAACa,gBAAgB,CAACG,KAAK,EAAE;MAAEK,IAAI,EAAET,gBAAgB,CAACI;IAAM,CAAC,CAAC;IAEpF,IAAIC,MAAM,EAAE,OAAOG,UAAU;IAE7B,IAAIF,KAAK,IAAIC,IAAI,EAAE;MACjB,MAAMG,GAAG,GAAGC,MAAM,CAACL,KAAK,IAAIM,QAAQ,CAAC;MAErC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIH,GAAG,EAAEG,CAAC,EAAE,EAAE;QAC7B,IAAI,CAACL,UAAU,IAAI,EAAE,MAAM,IAAIA,UAAU,CAAC,EAAE;UAC1C;QACF;QAEAA,UAAU,GAAGA,UAAU,CAACC,IAAI;MAC9B;MAEA,IAAID,UAAU,IAAI,OAAOD,IAAI,KAAK,QAAQ,IAAIA,IAAI,IAAIC,UAAU,EAAE;QAChEA,UAAU,GAAGpB,SAAS,CAACA,SAAS,CAACoB,UAAU,EAAE;UAAEC,IAAI,EAAED;QAAW,CAAC,CAAC,EAAEA,UAAU,CAACD,IAAI,CAAC,CAAC;MACvF;MAEA,OAAOC,UAAU;IACnB;IAEA,OAAOA,UAAU,CAACC,IAAI,GAClBrB,SAAS,CAACoB,UAAU,CAACC,IAAI,EAAED,UAAU,CAAC,GACtCA,UAAU;EAChB,CAAC,CAAkC;EAEnC1B,OAAO,CAACS,cAAc,EAAEW,WAAW,CAAC;EAEpC,OAAOA,WAAW;AACpB;AAEA,SAASY,aAAaA,CAAEC,KAAY,EAAEC,IAAY,EAAE;EAClD,OAAO,OAAOD,KAAK,CAACE,KAAK,GAAGD,IAAI,CAAC,KAAK,WAAW,IAC/C,OAAOD,KAAK,CAACE,KAAK,GAAG5B,WAAW,CAAC2B,IAAI,CAAC,CAAC,KAAK,WAAW;AAC3D;AAEA,OAAO,SAASE,mBAAmBA,CAAA,EAIjC;EAAA,IAHAD,KAA0B,GAAAE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,IAC/BG,IAAa,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAAA,IACbxB,QAAQ,GAAAsB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGvB,cAAc,CAAC,CAAC;EAE3B,MAAM2B,EAAE,GAAGpC,kBAAkB,CAAC,aAAa,CAAC;EAE5CmC,IAAI,GAAGA,IAAI,IAAIC,EAAE,CAACC,IAAI,CAACF,IAAI,IAAIC,EAAE,CAACC,IAAI,CAACC,MAAM;EAC7C,IAAI,CAACH,IAAI,EAAE;IACT,MAAM,IAAIxB,KAAK,CAAC,8CAA8C,CAAC;EACjE;EAEA,MAAM4B,iBAAiB,GAAG9C,QAAQ,CAAC,MAAMiB,QAAQ,CAACO,KAAK,GAAGa,KAAK,CAACU,GAAG,IAAIL,IAAI,CAAC,CAAC;EAC7E,MAAMM,MAAM,GAAG,IAAIC,KAAK,CAACZ,KAAK,EAAE;IAC9Ba,GAAGA,CAAEC,MAAM,EAAEf,IAAI,EAAE;MACjB,MAAMgB,SAAS,GAAGC,OAAO,CAACH,GAAG,CAACC,MAAM,EAAEf,IAAI,CAAC;MAC3C,IAAIA,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,OAAO,EAAE;QACxC,OAAO,CAACU,iBAAiB,CAACtB,KAAK,GAAGY,IAAI,CAAC,EAAEgB,SAAS,CAAC,CAACE,MAAM,CAACC,CAAC,IAAIA,CAAC,IAAI,IAAI,CAAC;MAC5E,CAAC,MAAM,IAAI,OAAOnB,IAAI,KAAK,QAAQ,IAAI,CAACF,aAAa,CAACS,EAAE,CAACR,KAAK,EAAEC,IAAI,CAAC,EAAE;QACrE,OAAOU,iBAAiB,CAACtB,KAAK,GAAGY,IAAI,CAAC,KAAKK,SAAS,GAAGK,iBAAiB,CAACtB,KAAK,GAAGY,IAAI,CAAC,GAClFnB,QAAQ,CAACO,KAAK,EAAEgC,MAAM,GAAGpB,IAAI,CAAC,KAAKK,SAAS,GAAGxB,QAAQ,CAACO,KAAK,EAAEgC,MAAM,GAAGpB,IAAI,CAAC,GAC7EgB,SAAS;MACf;MACA,OAAOA,SAAS;IAClB;EACF,CAAC,CAAC;EAEF,MAAMK,qBAAqB,GAAGrD,UAAU,CAAC,CAAC;EAC1CE,WAAW,CAAC,MAAM;IAChB,IAAIwC,iBAAiB,CAACtB,KAAK,EAAE;MAC3B,MAAMkC,aAAa,GAAGC,MAAM,CAACC,OAAO,CAACd,iBAAiB,CAACtB,KAAK,CAAC,CAAC8B,MAAM,CAACO,IAAA;QAAA,IAAC,CAACC,GAAG,CAAC,GAAAD,IAAA;QAAA,OAAKC,GAAG,CAACC,UAAU,CAACD,GAAG,CAAC,CAAC,CAAC,CAACE,WAAW,CAAC,CAAC,CAAC;MAAA,EAAC;MACrHP,qBAAqB,CAACjC,KAAK,GAAGkC,aAAa,CAAClB,MAAM,GAAGmB,MAAM,CAACM,WAAW,CAACP,aAAa,CAAC,GAAGjB,SAAS;IACpG,CAAC,MAAM;MACLgB,qBAAqB,CAACjC,KAAK,GAAGiB,SAAS;IACzC;EACF,CAAC,CAAC;EAEF,SAASyB,kBAAkBA,CAAA,EAAI;IAC7B,MAAMC,QAAQ,GAAGzD,UAAU,CAACC,cAAc,EAAEgC,EAAE,CAAC;IAC/CzC,OAAO,CAACS,cAAc,EAAEX,QAAQ,CAAC,MAAM;MACrC,OAAOyD,qBAAqB,CAACjC,KAAK,GAAGhB,SAAS,CAC5C2D,QAAQ,EAAE3C,KAAK,IAAI,CAAC,CAAC,EACrBiC,qBAAqB,CAACjC,KACxB,CAAC,GAAG2C,QAAQ,EAAE3C,KAAK;IACrB,CAAC,CAAC,CAAC;EACL;EAEA,OAAO;IAAEa,KAAK,EAAEW,MAAM;IAAEkB;EAAmB,CAAC;AAC9C;AAIA,OAAO,SAASE,WAAWA,CAAA,EAGzB;EAAA,IAFA/B,KAA0B,GAAAE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,IAC/BG,IAAa,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;EAEb,MAAM;IAAEJ,KAAK,EAAEW,MAAM;IAAEkB;EAAmB,CAAC,GAAG5B,mBAAmB,CAACD,KAAK,EAAEK,IAAI,CAAC;EAC9EwB,kBAAkB,CAAC,CAAC;EACpB,OAAOlB,MAAM;AACf","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":[]}
@@ -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-26";
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";
@@ -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,40 +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
- VApp: typeof import('vuetify/components')['VApp']
2582
2587
  VBadge: typeof import('vuetify/components')['VBadge']
2583
- VAvatar: typeof import('vuetify/components')['VAvatar']
2584
- VBanner: typeof import('vuetify/components')['VBanner']
2585
- VBannerActions: typeof import('vuetify/components')['VBannerActions']
2586
- VBannerText: typeof import('vuetify/components')['VBannerText']
2587
2588
  VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2588
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2589
2589
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2590
2590
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2591
2591
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2592
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2592
2593
  VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2593
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2594
- VBtn: typeof import('vuetify/components')['VBtn']
2595
2594
  VCard: typeof import('vuetify/components')['VCard']
2596
2595
  VCardActions: typeof import('vuetify/components')['VCardActions']
2597
2596
  VCardItem: typeof import('vuetify/components')['VCardItem']
2598
2597
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
2599
2598
  VCardText: typeof import('vuetify/components')['VCardText']
2600
2599
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
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']
2604
+ VCarousel: typeof import('vuetify/components')['VCarousel']
2605
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2601
2606
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
2602
2607
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2603
2608
  VCode: typeof import('vuetify/components')['VCode']
2604
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
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']
2609
2622
  VDataTable: typeof import('vuetify/components')['VDataTable']
2610
2623
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
2611
2624
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2613,38 +2626,27 @@ declare module 'vue' {
2613
2626
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2614
2627
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2615
2628
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2629
+ VDivider: typeof import('vuetify/components')['VDivider']
2630
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
2631
+ VFileInput: typeof import('vuetify/components')['VFileInput']
2632
+ VFab: typeof import('vuetify/components')['VFab']
2616
2633
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2617
2634
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2618
2635
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2619
2636
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2620
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2621
- VChip: typeof import('vuetify/components')['VChip']
2622
- VDivider: typeof import('vuetify/components')['VDivider']
2623
- VCarousel: typeof import('vuetify/components')['VCarousel']
2624
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2637
+ VFooter: typeof import('vuetify/components')['VFooter']
2625
2638
  VField: typeof import('vuetify/components')['VField']
2626
2639
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2627
- VFab: typeof import('vuetify/components')['VFab']
2628
- VFooter: typeof import('vuetify/components')['VFooter']
2629
- VDatePicker: typeof import('vuetify/components')['VDatePicker']
2630
- VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2631
- VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2632
- VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2633
- VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2634
- VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
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
- VFileInput: typeof import('vuetify/components')['VFileInput']
2641
- VImg: typeof import('vuetify/components')['VImg']
2642
2648
  VKbd: typeof import('vuetify/components')['VKbd']
2643
2649
  VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2644
- VInput: typeof import('vuetify/components')['VInput']
2645
- VItemGroup: typeof import('vuetify/components')['VItemGroup']
2646
- VItem: typeof import('vuetify/components')['VItem']
2647
- VLabel: typeof import('vuetify/components')['VLabel']
2648
2650
  VList: typeof import('vuetify/components')['VList']
2649
2651
  VListGroup: typeof import('vuetify/components')['VListGroup']
2650
2652
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -2654,72 +2656,72 @@ declare module 'vue' {
2654
2656
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
2655
2657
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2656
2658
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2659
+ VLabel: typeof import('vuetify/components')['VLabel']
2660
+ VInput: typeof import('vuetify/components')['VInput']
2657
2661
  VMenu: typeof import('vuetify/components')['VMenu']
2658
2662
  VMain: typeof import('vuetify/components')['VMain']
2659
- VMessages: typeof import('vuetify/components')['VMessages']
2660
- VNumberInput: typeof import('vuetify/components')['VNumberInput']
2663
+ VOtpInput: typeof import('vuetify/components')['VOtpInput']
2661
2664
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2665
+ VNumberInput: typeof import('vuetify/components')['VNumberInput']
2662
2666
  VOverlay: typeof import('vuetify/components')['VOverlay']
2663
- VPagination: typeof import('vuetify/components')['VPagination']
2664
- VOtpInput: typeof import('vuetify/components')['VOtpInput']
2665
2667
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2666
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2667
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2668
2668
  VRating: typeof import('vuetify/components')['VRating']
2669
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2669
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2670
+ VPagination: typeof import('vuetify/components')['VPagination']
2670
2671
  VSelect: typeof import('vuetify/components')['VSelect']
2671
- VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2672
- VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2673
- VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2672
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2674
2673
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2675
2674
  VSheet: typeof import('vuetify/components')['VSheet']
2675
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2676
+ VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2676
2677
  VSlider: typeof import('vuetify/components')['VSlider']
2678
+ VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2679
+ VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2680
+ VMessages: typeof import('vuetify/components')['VMessages']
2681
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
2682
+ VSwitch: typeof import('vuetify/components')['VSwitch']
2677
2683
  VStepper: typeof import('vuetify/components')['VStepper']
2678
2684
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
2679
2685
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
2680
2686
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
2681
2687
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2682
2688
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2683
- VSwitch: typeof import('vuetify/components')['VSwitch']
2684
2689
  VTab: typeof import('vuetify/components')['VTab']
2685
2690
  VTabs: typeof import('vuetify/components')['VTabs']
2686
2691
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2687
2692
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2688
2693
  VSystemBar: typeof import('vuetify/components')['VSystemBar']
2689
2694
  VTextarea: typeof import('vuetify/components')['VTextarea']
2690
- VTable: typeof import('vuetify/components')['VTable']
2691
2695
  VTextField: typeof import('vuetify/components')['VTextField']
2692
- VWindow: typeof import('vuetify/components')['VWindow']
2693
- VWindowItem: typeof import('vuetify/components')['VWindowItem']
2696
+ VTable: typeof import('vuetify/components')['VTable']
2694
2697
  VTooltip: typeof import('vuetify/components')['VTooltip']
2695
2698
  VToolbar: typeof import('vuetify/components')['VToolbar']
2696
2699
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2697
2700
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2698
2701
  VTimeline: typeof import('vuetify/components')['VTimeline']
2699
2702
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2700
- VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2703
+ VWindow: typeof import('vuetify/components')['VWindow']
2704
+ VWindowItem: typeof import('vuetify/components')['VWindowItem']
2705
+ VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2701
2706
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
2707
+ VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2702
2708
  VForm: typeof import('vuetify/components')['VForm']
2703
- VContainer: typeof import('vuetify/components')['VContainer']
2704
- VCol: typeof import('vuetify/components')['VCol']
2705
- VRow: typeof import('vuetify/components')['VRow']
2706
- VSpacer: typeof import('vuetify/components')['VSpacer']
2707
2709
  VHover: typeof import('vuetify/components')['VHover']
2708
2710
  VLayout: typeof import('vuetify/components')['VLayout']
2709
2711
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2710
2712
  VLazy: typeof import('vuetify/components')['VLazy']
2711
2713
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2712
- VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2713
2714
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2714
- VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2715
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
2716
2715
  VRadio: typeof import('vuetify/components')['VRadio']
2717
2716
  VParallax: typeof import('vuetify/components')['VParallax']
2717
+ VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2718
2718
  VResponsive: typeof import('vuetify/components')['VResponsive']
2719
- VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2720
2719
  VSparkline: typeof import('vuetify/components')['VSparkline']
2720
+ VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2721
2721
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2722
2722
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2723
+ VValidation: typeof import('vuetify/components')['VValidation']
2724
+ VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2723
2725
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
2724
2726
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
2725
2727
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -2736,29 +2738,31 @@ declare module 'vue' {
2736
2738
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2737
2739
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2738
2740
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2739
- VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2740
- VValidation: typeof import('vuetify/components')['VValidation']
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']
2745
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
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']
2750
+ VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2751
+ VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2752
+ VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2741
2753
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2742
2754
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2743
2755
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2744
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2745
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2756
+ VTreeview: typeof import('vuetify/labs/components')['VTreeview']
2757
+ VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
2758
+ VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
2759
+ VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2760
+ VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2746
2761
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2747
2762
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
2748
2763
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
2749
2764
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
2750
2765
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2751
2766
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2752
- VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2753
- VTreeview: typeof import('vuetify/labs/components')['VTreeview']
2754
- VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
2755
- VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
2756
- VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2757
- VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2758
- VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2759
- VPicker: typeof import('vuetify/labs/components')['VPicker']
2760
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2761
- VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2762
- VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2763
2767
  }
2764
2768
  }
package/lib/framework.js CHANGED
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.8.2-master.2025-04-26";
112
+ export const version = "3.8.2-master.2025-04-28";
113
113
  createVuetify.version = version;
114
114
 
115
115
  // Vue's inject() can only be used in setup
@@ -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): {