@vuetify/nightly 3.8.2-master.2025-04-27 → 3.8.3-master.2025-04-29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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.3-master.2025-04-29";
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
 
@@ -2575,21 +2579,19 @@ declare module 'vue' {
2575
2579
  VAppBar: typeof import('vuetify/components')['VAppBar']
2576
2580
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2577
2581
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2582
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2583
+ VApp: typeof import('vuetify/components')['VApp']
2578
2584
  VAlert: typeof import('vuetify/components')['VAlert']
2579
2585
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2580
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2586
+ VBadge: typeof import('vuetify/components')['VBadge']
2587
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2581
2588
  VBanner: typeof import('vuetify/components')['VBanner']
2582
2589
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
2583
2590
  VBannerText: typeof import('vuetify/components')['VBannerText']
2584
- VBadge: typeof import('vuetify/components')['VBadge']
2585
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2586
- VAvatar: typeof import('vuetify/components')['VAvatar']
2587
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2588
2591
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2589
2592
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2590
2593
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2591
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2592
- VBtn: typeof import('vuetify/components')['VBtn']
2594
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2593
2595
  VCard: typeof import('vuetify/components')['VCard']
2594
2596
  VCardActions: typeof import('vuetify/components')['VCardActions']
2595
2597
  VCardItem: typeof import('vuetify/components')['VCardItem']
@@ -2597,16 +2599,18 @@ declare module 'vue' {
2597
2599
  VCardText: typeof import('vuetify/components')['VCardText']
2598
2600
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2599
2601
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2600
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
2601
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2602
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2603
+ VBtn: typeof import('vuetify/components')['VBtn']
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']
2605
2608
  VColorPicker: typeof import('vuetify/components')['VColorPicker']
2609
+ VChip: typeof import('vuetify/components')['VChip']
2606
2610
  VCombobox: typeof import('vuetify/components')['VCombobox']
2611
+ VCode: typeof import('vuetify/components')['VCode']
2607
2612
  VCounter: typeof import('vuetify/components')['VCounter']
2608
2613
  VChipGroup: typeof import('vuetify/components')['VChipGroup']
2609
- VCode: typeof import('vuetify/components')['VCode']
2610
2614
  VDataTable: typeof import('vuetify/components')['VDataTable']
2611
2615
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
2612
2616
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2614,36 +2618,33 @@ declare module 'vue' {
2614
2618
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2615
2619
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2616
2620
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2621
+ VDivider: typeof import('vuetify/components')['VDivider']
2617
2622
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
2618
2623
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2619
2624
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2620
2625
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2621
2626
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2622
2627
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2623
- VDivider: typeof import('vuetify/components')['VDivider']
2624
2628
  VDialog: typeof import('vuetify/components')['VDialog']
2629
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
2630
+ VFab: typeof import('vuetify/components')['VFab']
2625
2631
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2626
2632
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2627
2633
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2628
2634
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2629
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2635
+ VFooter: typeof import('vuetify/components')['VFooter']
2630
2636
  VField: typeof import('vuetify/components')['VField']
2631
2637
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2632
2638
  VFileInput: typeof import('vuetify/components')['VFileInput']
2633
- VFooter: typeof import('vuetify/components')['VFooter']
2634
- VFab: typeof import('vuetify/components')['VFab']
2635
2639
  VIcon: typeof import('vuetify/components')['VIcon']
2636
2640
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2637
2641
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2638
2642
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2639
2643
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2640
2644
  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
- VKbd: typeof import('vuetify/components')['VKbd']
2646
2645
  VInput: typeof import('vuetify/components')['VInput']
2646
+ VKbd: typeof import('vuetify/components')['VKbd']
2647
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2647
2648
  VList: typeof import('vuetify/components')['VList']
2648
2649
  VListGroup: typeof import('vuetify/components')['VListGroup']
2649
2650
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -2653,28 +2654,30 @@ declare module 'vue' {
2653
2654
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
2654
2655
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2655
2656
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2656
- VMain: typeof import('vuetify/components')['VMain']
2657
- VMessages: typeof import('vuetify/components')['VMessages']
2657
+ VItemGroup: typeof import('vuetify/components')['VItemGroup']
2658
+ VItem: typeof import('vuetify/components')['VItem']
2659
+ VLabel: typeof import('vuetify/components')['VLabel']
2658
2660
  VMenu: typeof import('vuetify/components')['VMenu']
2659
- VApp: typeof import('vuetify/components')['VApp']
2660
- VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2661
+ VMessages: typeof import('vuetify/components')['VMessages']
2661
2662
  VNumberInput: typeof import('vuetify/components')['VNumberInput']
2662
- VOverlay: typeof import('vuetify/components')['VOverlay']
2663
+ VMain: typeof import('vuetify/components')['VMain']
2664
+ VPagination: typeof import('vuetify/components')['VPagination']
2663
2665
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
2666
+ VOverlay: typeof import('vuetify/components')['VOverlay']
2664
2667
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2665
- VPagination: typeof import('vuetify/components')['VPagination']
2666
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2668
+ VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2667
2669
  VRating: typeof import('vuetify/components')['VRating']
2668
- VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2669
- VSheet: typeof import('vuetify/components')['VSheet']
2670
+ VSelect: typeof import('vuetify/components')['VSelect']
2671
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2670
2672
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2671
2673
  VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2672
2674
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2675
+ VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2676
+ VSheet: typeof import('vuetify/components')['VSheet']
2677
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2673
2678
  VSnackbar: typeof import('vuetify/components')['VSnackbar']
2674
- VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2675
- VSelect: typeof import('vuetify/components')['VSelect']
2676
2679
  VSlider: typeof import('vuetify/components')['VSlider']
2677
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2680
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
2678
2681
  VSwitch: typeof import('vuetify/components')['VSwitch']
2679
2682
  VStepper: typeof import('vuetify/components')['VStepper']
2680
2683
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
@@ -2682,42 +2685,47 @@ declare module 'vue' {
2682
2685
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
2683
2686
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2684
2687
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2685
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
2688
+ VTable: typeof import('vuetify/components')['VTable']
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']
2690
2693
  VTextarea: typeof import('vuetify/components')['VTextarea']
2694
+ VTooltip: typeof import('vuetify/components')['VTooltip']
2691
2695
  VTextField: typeof import('vuetify/components')['VTextField']
2692
- VTable: typeof import('vuetify/components')['VTable']
2693
2696
  VToolbar: typeof import('vuetify/components')['VToolbar']
2694
2697
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2695
2698
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2696
- VTooltip: typeof import('vuetify/components')['VTooltip']
2697
2699
  VTimeline: typeof import('vuetify/components')['VTimeline']
2698
2700
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2699
2701
  VWindow: typeof import('vuetify/components')['VWindow']
2700
2702
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
2703
+ VAvatar: typeof import('vuetify/components')['VAvatar']
2704
+ VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2701
2705
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
2706
+ VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2702
2707
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2703
2708
  VForm: typeof import('vuetify/components')['VForm']
2704
2709
  VContainer: typeof import('vuetify/components')['VContainer']
2705
2710
  VCol: typeof import('vuetify/components')['VCol']
2706
2711
  VRow: typeof import('vuetify/components')['VRow']
2707
2712
  VSpacer: typeof import('vuetify/components')['VSpacer']
2708
- VLazy: typeof import('vuetify/components')['VLazy']
2713
+ VHover: typeof import('vuetify/components')['VHover']
2709
2714
  VLayout: typeof import('vuetify/components')['VLayout']
2710
2715
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2711
- VNoSsr: typeof import('vuetify/components')['VNoSsr']
2716
+ VLazy: typeof import('vuetify/components')['VLazy']
2712
2717
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2713
2718
  VParallax: typeof import('vuetify/components')['VParallax']
2714
- VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2719
+ VNoSsr: typeof import('vuetify/components')['VNoSsr']
2715
2720
  VRadio: typeof import('vuetify/components')['VRadio']
2721
+ VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2716
2722
  VResponsive: typeof import('vuetify/components')['VResponsive']
2717
- VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2718
2723
  VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2724
+ VSparkline: typeof import('vuetify/components')['VSparkline']
2725
+ VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2719
2726
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2720
2727
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2728
+ VValidation: typeof import('vuetify/components')['VValidation']
2721
2729
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
2722
2730
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
2723
2731
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -2734,31 +2742,27 @@ declare module 'vue' {
2734
2742
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2735
2743
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2736
2744
  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']
2745
+ VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2746
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2747
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2741
2748
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2742
2749
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
2743
2750
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
2744
2751
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
2745
2752
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2746
2753
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2747
- VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2754
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
2755
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2748
2756
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2749
2757
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2750
2758
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2751
- VPicker: typeof import('vuetify/labs/components')['VPicker']
2752
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2753
2759
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2754
2760
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2755
2761
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2756
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2757
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2758
2762
  VTreeview: typeof import('vuetify/labs/components')['VTreeview']
2759
2763
  VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
2760
2764
  VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
2761
- VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2762
2765
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2766
+ VDateInput: typeof import('vuetify/labs/components')['VDateInput']
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.3-master.2025-04-29";
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): {
@@ -358,6 +358,9 @@ export class CircularBuffer {
358
358
  _classPrivateFieldInitSpec(this, _pointer, 0);
359
359
  this.size = size;
360
360
  }
361
+ get isFull() {
362
+ return _classPrivateFieldGet(_arr, this).length === this.size;
363
+ }
361
364
  push(val) {
362
365
  _classPrivateFieldGet(_arr, this)[_classPrivateFieldGet(_pointer, this)] = val;
363
366
  _classPrivateFieldSet(_pointer, this, (_classPrivateFieldGet(_pointer, this) + 1) % this.size);
@@ -365,6 +368,10 @@ export class CircularBuffer {
365
368
  values() {
366
369
  return _classPrivateFieldGet(_arr, this).slice(_classPrivateFieldGet(_pointer, this)).concat(_classPrivateFieldGet(_arr, this).slice(0, _classPrivateFieldGet(_pointer, this)));
367
370
  }
371
+ clear() {
372
+ _classPrivateFieldGet(_arr, this).length = 0;
373
+ _classPrivateFieldSet(_pointer, this, 0);
374
+ }
368
375
  }
369
376
  export function getEventCoordinates(e) {
370
377
  if ('touches' in e) {