@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.
@@ -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":"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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":[]}
@@ -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-27";
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,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
- VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2600
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
2601
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
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
- VChip: typeof import('vuetify/components')['VChip']
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
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
2609
- VCode: typeof import('vuetify/components')['VCode']
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
- VDialog: typeof import('vuetify/components')['VDialog']
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
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2637
+ VFooter: typeof import('vuetify/components')['VFooter']
2630
2638
  VField: typeof import('vuetify/components')['VField']
2631
2639
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2632
- VFileInput: typeof import('vuetify/components')['VFileInput']
2633
- VFooter: typeof import('vuetify/components')['VFooter']
2634
- VFab: typeof import('vuetify/components')['VFab']
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
- VInput: typeof import('vuetify/components')['VInput']
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
- VMain: typeof import('vuetify/components')['VMain']
2657
- VMessages: typeof import('vuetify/components')['VMessages']
2659
+ VLabel: typeof import('vuetify/components')['VLabel']
2660
+ VInput: typeof import('vuetify/components')['VInput']
2658
2661
  VMenu: typeof import('vuetify/components')['VMenu']
2659
- VApp: typeof import('vuetify/components')['VApp']
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
- VContainer: typeof import('vuetify/components')['VContainer']
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
- VNoSsr: typeof import('vuetify/components')['VNoSsr']
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
- VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
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
- VValidation: typeof import('vuetify/components')['VValidation']
2738
- VHover: typeof import('vuetify/components')['VHover']
2739
- VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2740
- VSparkline: typeof import('vuetify/components')['VSparkline']
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
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2757
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
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
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.8.2-master.2025-04-27";
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): {