@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.
- package/CHANGELOG.md +4 -39
- package/dist/json/attributes.json +3387 -3387
- package/dist/json/importMap-labs.json +22 -22
- package/dist/json/importMap.json +130 -130
- package/dist/json/web-types.json +6284 -6284
- package/dist/vuetify-labs.cjs +38 -8
- package/dist/vuetify-labs.css +4447 -4447
- package/dist/vuetify-labs.d.ts +53 -49
- package/dist/vuetify-labs.esm.js +38 -8
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +38 -8
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +38 -8
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +2618 -2618
- package/dist/vuetify.d.ts +53 -49
- package/dist/vuetify.esm.js +38 -8
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +38 -8
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1170 -1163
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VOverlay/locationStrategies.d.ts +4 -0
- package/lib/components/VOverlay/locationStrategies.js +23 -3
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/composables/defaults.js +6 -3
- package/lib/composables/defaults.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +53 -49
- package/lib/framework.js +1 -1
- package/lib/util/helpers.d.ts +2 -0
- package/lib/util/helpers.js +7 -0
- package/lib/util/helpers.js.map +1 -1
- package/package.json +3 -2
@@ -2,7 +2,7 @@
|
|
2
2
|
import { useToggleScope } from "../../composables/toggleScope.js"; // Utilities
|
3
3
|
import { computed, nextTick, onScopeDispose, ref, watch } from 'vue';
|
4
4
|
import { anchorToPoint, getOffset } from "./util/point.js";
|
5
|
-
import { clamp, consoleError, convertToUnit, destructComputed, flipAlign, flipCorner, flipSide, getAxis, getScrollParents, IN_BROWSER, isFixedPosition, nullifyTransforms, parseAnchor, propsFactory } from "../../util/index.js";
|
5
|
+
import { CircularBuffer, clamp, consoleError, convertToUnit, deepEqual, destructComputed, flipAlign, flipCorner, flipSide, getAxis, getScrollParents, IN_BROWSER, isFixedPosition, nullifyTransforms, parseAnchor, propsFactory } from "../../util/index.js";
|
6
6
|
import { Box, getOverflow, getTargetBox } from "../../util/box.js"; // Types
|
7
7
|
const locationStrategies = {
|
8
8
|
static: staticLocationStrategy,
|
@@ -137,8 +137,27 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
137
137
|
return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0];
|
138
138
|
});
|
139
139
|
let observe = false;
|
140
|
+
let lastFrame = -1;
|
141
|
+
const flipped = new CircularBuffer(4);
|
140
142
|
const observer = new ResizeObserver(() => {
|
141
|
-
if (observe)
|
143
|
+
if (!observe) return;
|
144
|
+
|
145
|
+
// Detect consecutive frames
|
146
|
+
requestAnimationFrame(newTime => {
|
147
|
+
if (newTime !== lastFrame) flipped.clear();
|
148
|
+
requestAnimationFrame(newNewTime => {
|
149
|
+
lastFrame = newNewTime;
|
150
|
+
});
|
151
|
+
});
|
152
|
+
if (flipped.isFull) {
|
153
|
+
const values = flipped.values();
|
154
|
+
if (deepEqual(values.at(-1), values.at(-3))) {
|
155
|
+
// Flipping is causing a container resize loop
|
156
|
+
return;
|
157
|
+
}
|
158
|
+
}
|
159
|
+
const result = updateLocation();
|
160
|
+
if (result) flipped.push(result.flipped);
|
142
161
|
});
|
143
162
|
watch([data.target, data.contentEl], (_ref, _ref2) => {
|
144
163
|
let [newTarget, newContentEl] = _ref;
|
@@ -353,7 +372,8 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
353
372
|
});
|
354
373
|
return {
|
355
374
|
available,
|
356
|
-
contentBox
|
375
|
+
contentBox,
|
376
|
+
flipped
|
357
377
|
};
|
358
378
|
}
|
359
379
|
watch(() => [preferredAnchor.value, preferredOrigin.value, props.offset, props.minWidth, props.minHeight, props.maxWidth, props.maxHeight], () => updateLocation());
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"locationStrategies.js","names":["useToggleScope","computed","nextTick","onScopeDispose","ref","watch","anchorToPoint","getOffset","clamp","consoleError","convertToUnit","destructComputed","flipAlign","flipCorner","flipSide","getAxis","getScrollParents","IN_BROWSER","isFixedPosition","nullifyTransforms","parseAnchor","propsFactory","Box","getOverflow","getTargetBox","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","locationStrategy","type","String","Function","default","validator","val","location","origin","offset","Number","Array","useLocationStrategies","props","data","contentStyles","updateLocation","isActive","value","reset","window","removeEventListener","onResize","undefined","addEventListener","passive","e","getIntrinsicSize","el","isRtl","contentBox","x","parseFloat","style","right","left","y","top","activatorFixed","isArray","target","Object","assign","position","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","side","align","minWidth","minHeight","maxWidth","maxHeight","map","key","isNaN","Infinity","split","length","push","observe","observer","ResizeObserver","contentEl","_ref","_ref2","newTarget","newContentEl","oldTarget","oldContentEl","unobserve","immediate","disconnect","targetBox","width","height","requestAnimationFrame","offsetParent","scrollParents","viewportMargin","document","documentElement","getPropertyValue","viewport","reduce","box","rect","getBoundingClientRect","scrollBox","clientWidth","clientHeight","Math","max","min","bottom","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","flipped","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","forEach","newPlacement","flip","newOverflows","transformOrigin","pixelRound","pixelCeil","result","round","devicePixelRatio","ceil"],"sources":["../../../src/components/VOverlay/locationStrategies.ts"],"sourcesContent":["// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue'\nimport { anchorToPoint, getOffset } from './util/point'\nimport {\n clamp,\n consoleError,\n convertToUnit,\n destructComputed,\n flipAlign,\n flipCorner,\n flipSide,\n getAxis,\n getScrollParents,\n IN_BROWSER,\n isFixedPosition,\n nullifyTransforms,\n parseAnchor,\n propsFactory,\n} from '@/util'\nimport { Box, getOverflow, getTargetBox } from '@/util/box'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n target: Ref<HTMLElement | [x: number, y: number] | undefined>\n isActive: Ref<boolean>\n isRtl: Ref<boolean>\n}\n\nexport type LocationStrategyFunction = (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n) => undefined | { updateLocation: (e?: Event) => void }\n\nconst locationStrategies = {\n static: staticLocationStrategy, // specific viewport position, usually centered\n connected: connectedLocationStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n locationStrategy: keyof typeof locationStrategies | LocationStrategyFunction\n location: Anchor\n origin: Anchor | 'auto' | 'overlap'\n offset?: number | string | number[]\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n}\n\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function] as PropType<StrategyProps['locationStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom',\n },\n origin: {\n type: String as PropType<StrategyProps['origin']>,\n default: 'auto',\n },\n offset: [Number, String, Array] as PropType<StrategyProps['offset']>,\n}, 'VOverlay-location-strategies')\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset)\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n })\n\n window.addEventListener('resize', onResize, { passive: true })\n\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation\n }\n })\n }\n\n function onResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n return {\n contentStyles,\n updateLocation,\n }\n}\n\nfunction staticLocationStrategy () {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize (el: HTMLElement, isRtl: boolean) {\n // const scrollables = new Map<Element, [number, number]>()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el)\n\n if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0)\n } else {\n contentBox.x -= parseFloat(el.style.left || 0)\n }\n contentBox.y -= parseFloat(el.style.top || 0)\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox\n}\n\nfunction connectedLocationStrategy (data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>) {\n const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.value)\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0,\n })\n }\n\n const { preferredAnchor, preferredOrigin } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value)\n const parsedOrigin =\n props.origin === 'overlap' ? parsedAnchor\n : props.origin === 'auto' ? flipSide(parsedAnchor)\n : parseAnchor(props.origin, data.isRtl.value)\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin),\n }\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin,\n }\n }\n })\n\n const [minWidth, minHeight, maxWidth, maxHeight] =\n (['minWidth', 'minHeight', 'maxWidth', 'maxHeight'] as const).map(key => {\n return computed(() => {\n const val = parseFloat(props[key]!)\n return isNaN(val) ? Infinity : val\n })\n })\n\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat)\n if (offset.length < 2) offset.push(0)\n return offset\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0]\n })\n\n let observe = false\n const observer = new ResizeObserver(() => {\n if (observe) updateLocation()\n })\n\n watch([data.target, data.contentEl], ([newTarget, newContentEl], [oldTarget, oldContentEl]) => {\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget)\n if (newTarget && !Array.isArray(newTarget)) observer.observe(newTarget)\n\n if (oldContentEl) observer.unobserve(oldContentEl)\n if (newContentEl) observer.observe(newContentEl)\n }, {\n immediate: true,\n })\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n\n let targetBox = new Box({ x: 0, y: 0, width: 0, height: 0 })\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => observe = true)\n\n if (!data.target.value || !data.contentEl.value) return\n\n if (Array.isArray(data.target.value) || data.target.value.offsetParent) {\n targetBox = getTargetBox(data.target.value)\n } // Otherwise target element is hidden, use last known value\n\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value)\n const scrollParents = getScrollParents(data.contentEl.value)\n const viewportMargin = 12\n\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement)\n if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {\n contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0)\n contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0)\n }\n }\n\n const viewport = scrollParents.reduce<Box>((box: Box | undefined, el) => {\n const rect = el.getBoundingClientRect()\n const scrollBox = new Box({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight,\n })\n\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top),\n })\n }\n return scrollBox\n }, undefined!)\n viewport.x += viewportMargin\n viewport.y += viewportMargin\n viewport.width -= viewportMargin * 2\n viewport.height -= viewportMargin * 2\n\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value,\n }\n\n function checkOverflow (_placement: typeof placement) {\n const box = new Box(contentBox)\n const targetPoint = anchorToPoint(_placement.anchor, targetBox)\n const contentPoint = anchorToPoint(_placement.origin, box)\n\n let { x, y } = getOffset(targetPoint, contentPoint)\n\n switch (_placement.anchor.side) {\n case 'top': y -= offset.value[0]; break\n case 'bottom': y += offset.value[0]; break\n case 'left': x -= offset.value[0]; break\n case 'right': x += offset.value[0]; break\n }\n\n switch (_placement.anchor.align) {\n case 'top': y -= offset.value[1]; break\n case 'bottom': y += offset.value[1]; break\n case 'left': x -= offset.value[1]; break\n case 'right': x += offset.value[1]; break\n }\n\n box.x += x\n box.y += y\n\n box.width = Math.min(box.width, maxWidth.value)\n box.height = Math.min(box.height, maxHeight.value)\n\n const overflows = getOverflow(box, viewport)\n\n return { overflows, x, y }\n }\n\n let x = 0; let y = 0\n const available = { x: 0, y: 0 }\n const flipped = { x: false, y: false }\n let resets = -1\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy')\n break\n }\n\n const { x: _x, y: _y, overflows } = checkOverflow(placement)\n\n x += _x\n y += _y\n\n contentBox.x += _x\n contentBox.y += _y\n\n // flip\n {\n const axis = getAxis(placement.anchor)\n const hasOverflowX = overflows.x.before || overflows.x.after\n const hasOverflowY = overflows.y.before || overflows.y.after\n\n let reset = false\n ;['x', 'y'].forEach(key => {\n if (\n (key === 'x' && hasOverflowX && !flipped.x) ||\n (key === 'y' && hasOverflowY && !flipped.y)\n ) {\n const newPlacement = { anchor: { ...placement.anchor }, origin: { ...placement.origin } }\n const flip = key === 'x'\n ? axis === 'y' ? flipAlign : flipSide\n : axis === 'y' ? flipSide : flipAlign\n newPlacement.anchor = flip(newPlacement.anchor)\n newPlacement.origin = flip(newPlacement.origin)\n const { overflows: newOverflows } = checkOverflow(newPlacement)\n if (\n (newOverflows[key].before <= overflows[key].before &&\n newOverflows[key].after <= overflows[key].after) ||\n (newOverflows[key].before + newOverflows[key].after <\n (overflows[key].before + overflows[key].after) / 2)\n ) {\n placement = newPlacement\n reset = flipped[key] = true\n }\n }\n })\n if (reset) continue\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before\n contentBox.x += overflows.x.before\n }\n if (overflows.x.after) {\n x -= overflows.x.after\n contentBox.x -= overflows.x.after\n }\n if (overflows.y.before) {\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n if (overflows.y.after) {\n y -= overflows.y.after\n contentBox.y -= overflows.y.after\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport)\n available.x = viewport.width - overflows.x.before - overflows.x.after\n available.y = viewport.height - overflows.y.before - overflows.y.after\n\n x += overflows.x.before\n contentBox.x += overflows.x.before\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n\n break\n }\n\n const axis = getAxis(placement.anchor)\n\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value))),\n })\n\n return {\n available,\n contentBox,\n }\n }\n\n watch(\n () => [\n preferredAnchor.value,\n preferredOrigin.value,\n props.offset,\n props.minWidth,\n props.minHeight,\n props.maxWidth,\n props.maxHeight,\n ],\n () => updateLocation(),\n )\n\n nextTick(() => {\n const result = updateLocation()\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return\n const { available, contentBox } = result\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation()\n requestAnimationFrame(() => {\n updateLocation()\n })\n })\n }\n })\n\n return { updateLocation }\n}\n\nfunction pixelRound (val: number) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio\n}\n\nfunction pixelCeil (val: number) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"locationStrategies.js","names":["useToggleScope","computed","nextTick","onScopeDispose","ref","watch","anchorToPoint","getOffset","CircularBuffer","clamp","consoleError","convertToUnit","deepEqual","destructComputed","flipAlign","flipCorner","flipSide","getAxis","getScrollParents","IN_BROWSER","isFixedPosition","nullifyTransforms","parseAnchor","propsFactory","Box","getOverflow","getTargetBox","locationStrategies","static","staticLocationStrategy","connected","connectedLocationStrategy","makeLocationStrategyProps","locationStrategy","type","String","Function","default","validator","val","location","origin","offset","Number","Array","useLocationStrategies","props","data","contentStyles","updateLocation","isActive","value","reset","window","removeEventListener","onResize","undefined","addEventListener","passive","e","getIntrinsicSize","el","isRtl","contentBox","x","parseFloat","style","right","left","y","top","activatorFixed","isArray","target","Object","assign","position","preferredAnchor","preferredOrigin","parsedAnchor","parsedOrigin","side","align","minWidth","minHeight","maxWidth","maxHeight","map","key","isNaN","Infinity","split","length","push","observe","lastFrame","flipped","observer","ResizeObserver","requestAnimationFrame","newTime","clear","newNewTime","isFull","values","at","result","contentEl","_ref","_ref2","newTarget","newContentEl","oldTarget","oldContentEl","unobserve","immediate","disconnect","targetBox","width","height","offsetParent","scrollParents","viewportMargin","document","documentElement","getPropertyValue","viewport","reduce","box","rect","getBoundingClientRect","scrollBox","clientWidth","clientHeight","Math","max","min","bottom","placement","anchor","checkOverflow","_placement","targetPoint","contentPoint","overflows","available","resets","_x","_y","axis","hasOverflowX","before","after","hasOverflowY","forEach","newPlacement","flip","newOverflows","transformOrigin","pixelRound","pixelCeil","round","devicePixelRatio","ceil"],"sources":["../../../src/components/VOverlay/locationStrategies.ts"],"sourcesContent":["// Composables\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, nextTick, onScopeDispose, ref, watch } from 'vue'\nimport { anchorToPoint, getOffset } from './util/point'\nimport {\n CircularBuffer,\n clamp,\n consoleError,\n convertToUnit,\n deepEqual,\n destructComputed,\n flipAlign,\n flipCorner,\n flipSide,\n getAxis,\n getScrollParents,\n IN_BROWSER,\n isFixedPosition,\n nullifyTransforms,\n parseAnchor,\n propsFactory,\n} from '@/util'\nimport { Box, getOverflow, getTargetBox } from '@/util/box'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { Anchor } from '@/util'\n\nexport interface LocationStrategyData {\n contentEl: Ref<HTMLElement | undefined>\n target: Ref<HTMLElement | [x: number, y: number] | undefined>\n isActive: Ref<boolean>\n isRtl: Ref<boolean>\n}\n\nexport type LocationStrategyFunction = (\n data: LocationStrategyData,\n props: StrategyProps,\n contentStyles: Ref<Record<string, string>>\n) => undefined | { updateLocation: (e?: Event) => void }\n\nconst locationStrategies = {\n static: staticLocationStrategy, // specific viewport position, usually centered\n connected: connectedLocationStrategy, // connected to a certain element\n}\n\nexport interface StrategyProps {\n locationStrategy: keyof typeof locationStrategies | LocationStrategyFunction\n location: Anchor\n origin: Anchor | 'auto' | 'overlap'\n offset?: number | string | number[]\n maxHeight?: number | string\n maxWidth?: number | string\n minHeight?: number | string\n minWidth?: number | string\n}\n\nexport const makeLocationStrategyProps = propsFactory({\n locationStrategy: {\n type: [String, Function] as PropType<StrategyProps['locationStrategy']>,\n default: 'static',\n validator: (val: any) => typeof val === 'function' || val in locationStrategies,\n },\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom',\n },\n origin: {\n type: String as PropType<StrategyProps['origin']>,\n default: 'auto',\n },\n offset: [Number, String, Array] as PropType<StrategyProps['offset']>,\n}, 'VOverlay-location-strategies')\n\nexport function useLocationStrategies (\n props: StrategyProps,\n data: LocationStrategyData\n) {\n const contentStyles = ref({})\n const updateLocation = ref<(e: Event) => void>()\n\n if (IN_BROWSER) {\n useToggleScope(() => !!(data.isActive.value && props.locationStrategy), reset => {\n watch(() => props.locationStrategy, reset)\n onScopeDispose(() => {\n window.removeEventListener('resize', onResize)\n updateLocation.value = undefined\n })\n\n window.addEventListener('resize', onResize, { passive: true })\n\n if (typeof props.locationStrategy === 'function') {\n updateLocation.value = props.locationStrategy(data, props, contentStyles)?.updateLocation\n } else {\n updateLocation.value = locationStrategies[props.locationStrategy](data, props, contentStyles)?.updateLocation\n }\n })\n }\n\n function onResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n return {\n contentStyles,\n updateLocation,\n }\n}\n\nfunction staticLocationStrategy () {\n // TODO\n}\n\n/** Get size of element ignoring max-width/max-height */\nfunction getIntrinsicSize (el: HTMLElement, isRtl: boolean) {\n // const scrollables = new Map<Element, [number, number]>()\n // el.querySelectorAll('*').forEach(el => {\n // const x = el.scrollLeft\n // const y = el.scrollTop\n // if (x || y) {\n // scrollables.set(el, [x, y])\n // }\n // })\n\n // const initialMaxWidth = el.style.maxWidth\n // const initialMaxHeight = el.style.maxHeight\n // el.style.removeProperty('max-width')\n // el.style.removeProperty('max-height')\n\n /* eslint-disable-next-line sonarjs/prefer-immediate-return */\n const contentBox = nullifyTransforms(el)\n\n if (isRtl) {\n contentBox.x += parseFloat(el.style.right || 0)\n } else {\n contentBox.x -= parseFloat(el.style.left || 0)\n }\n contentBox.y -= parseFloat(el.style.top || 0)\n\n // el.style.maxWidth = initialMaxWidth\n // el.style.maxHeight = initialMaxHeight\n // scrollables.forEach((position, el) => {\n // el.scrollTo(...position)\n // })\n\n return contentBox\n}\n\nfunction connectedLocationStrategy (data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>) {\n const activatorFixed = Array.isArray(data.target.value) || isFixedPosition(data.target.value)\n if (activatorFixed) {\n Object.assign(contentStyles.value, {\n position: 'fixed',\n top: 0,\n [data.isRtl.value ? 'right' : 'left']: 0,\n })\n }\n\n const { preferredAnchor, preferredOrigin } = destructComputed(() => {\n const parsedAnchor = parseAnchor(props.location, data.isRtl.value)\n const parsedOrigin =\n props.origin === 'overlap' ? parsedAnchor\n : props.origin === 'auto' ? flipSide(parsedAnchor)\n : parseAnchor(props.origin, data.isRtl.value)\n\n // Some combinations of props may produce an invalid origin\n if (parsedAnchor.side === parsedOrigin.side && parsedAnchor.align === flipAlign(parsedOrigin).align) {\n return {\n preferredAnchor: flipCorner(parsedAnchor),\n preferredOrigin: flipCorner(parsedOrigin),\n }\n } else {\n return {\n preferredAnchor: parsedAnchor,\n preferredOrigin: parsedOrigin,\n }\n }\n })\n\n const [minWidth, minHeight, maxWidth, maxHeight] =\n (['minWidth', 'minHeight', 'maxWidth', 'maxHeight'] as const).map(key => {\n return computed(() => {\n const val = parseFloat(props[key]!)\n return isNaN(val) ? Infinity : val\n })\n })\n\n const offset = computed(() => {\n if (Array.isArray(props.offset)) {\n return props.offset\n }\n if (typeof props.offset === 'string') {\n const offset = props.offset.split(' ').map(parseFloat)\n if (offset.length < 2) offset.push(0)\n return offset\n }\n return typeof props.offset === 'number' ? [props.offset, 0] : [0, 0]\n })\n\n let observe = false\n let lastFrame = -1\n const flipped = new CircularBuffer<{ x: boolean, y: boolean }>(4)\n const observer = new ResizeObserver(() => {\n if (!observe) return\n\n // Detect consecutive frames\n requestAnimationFrame(newTime => {\n if (newTime !== lastFrame) flipped.clear()\n requestAnimationFrame(newNewTime => {\n lastFrame = newNewTime\n })\n })\n\n if (flipped.isFull) {\n const values = flipped.values()\n if (deepEqual(values.at(-1), values.at(-3))) {\n // Flipping is causing a container resize loop\n return\n }\n }\n\n const result = updateLocation()\n if (result) flipped.push(result.flipped)\n })\n\n watch([data.target, data.contentEl], ([newTarget, newContentEl], [oldTarget, oldContentEl]) => {\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget)\n if (newTarget && !Array.isArray(newTarget)) observer.observe(newTarget)\n\n if (oldContentEl) observer.unobserve(oldContentEl)\n if (newContentEl) observer.observe(newContentEl)\n }, {\n immediate: true,\n })\n\n onScopeDispose(() => {\n observer.disconnect()\n })\n\n let targetBox = new Box({ x: 0, y: 0, width: 0, height: 0 })\n\n // eslint-disable-next-line max-statements\n function updateLocation () {\n observe = false\n requestAnimationFrame(() => observe = true)\n\n if (!data.target.value || !data.contentEl.value) return\n\n if (Array.isArray(data.target.value) || data.target.value.offsetParent) {\n targetBox = getTargetBox(data.target.value)\n } // Otherwise target element is hidden, use last known value\n\n const contentBox = getIntrinsicSize(data.contentEl.value, data.isRtl.value)\n const scrollParents = getScrollParents(data.contentEl.value)\n const viewportMargin = 12\n\n if (!scrollParents.length) {\n scrollParents.push(document.documentElement)\n if (!(data.contentEl.value.style.top && data.contentEl.value.style.left)) {\n contentBox.x -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-x') || 0)\n contentBox.y -= parseFloat(document.documentElement.style.getPropertyValue('--v-body-scroll-y') || 0)\n }\n }\n\n const viewport = scrollParents.reduce<Box>((box: Box | undefined, el) => {\n const rect = el.getBoundingClientRect()\n const scrollBox = new Box({\n x: el === document.documentElement ? 0 : rect.x,\n y: el === document.documentElement ? 0 : rect.y,\n width: el.clientWidth,\n height: el.clientHeight,\n })\n\n if (box) {\n return new Box({\n x: Math.max(box.left, scrollBox.left),\n y: Math.max(box.top, scrollBox.top),\n width: Math.min(box.right, scrollBox.right) - Math.max(box.left, scrollBox.left),\n height: Math.min(box.bottom, scrollBox.bottom) - Math.max(box.top, scrollBox.top),\n })\n }\n return scrollBox\n }, undefined!)\n viewport.x += viewportMargin\n viewport.y += viewportMargin\n viewport.width -= viewportMargin * 2\n viewport.height -= viewportMargin * 2\n\n let placement = {\n anchor: preferredAnchor.value,\n origin: preferredOrigin.value,\n }\n\n function checkOverflow (_placement: typeof placement) {\n const box = new Box(contentBox)\n const targetPoint = anchorToPoint(_placement.anchor, targetBox)\n const contentPoint = anchorToPoint(_placement.origin, box)\n\n let { x, y } = getOffset(targetPoint, contentPoint)\n\n switch (_placement.anchor.side) {\n case 'top': y -= offset.value[0]; break\n case 'bottom': y += offset.value[0]; break\n case 'left': x -= offset.value[0]; break\n case 'right': x += offset.value[0]; break\n }\n\n switch (_placement.anchor.align) {\n case 'top': y -= offset.value[1]; break\n case 'bottom': y += offset.value[1]; break\n case 'left': x -= offset.value[1]; break\n case 'right': x += offset.value[1]; break\n }\n\n box.x += x\n box.y += y\n\n box.width = Math.min(box.width, maxWidth.value)\n box.height = Math.min(box.height, maxHeight.value)\n\n const overflows = getOverflow(box, viewport)\n\n return { overflows, x, y }\n }\n\n let x = 0; let y = 0\n const available = { x: 0, y: 0 }\n const flipped = { x: false, y: false }\n let resets = -1\n while (true) {\n if (resets++ > 10) {\n consoleError('Infinite loop detected in connectedLocationStrategy')\n break\n }\n\n const { x: _x, y: _y, overflows } = checkOverflow(placement)\n\n x += _x\n y += _y\n\n contentBox.x += _x\n contentBox.y += _y\n\n // flip\n {\n const axis = getAxis(placement.anchor)\n const hasOverflowX = overflows.x.before || overflows.x.after\n const hasOverflowY = overflows.y.before || overflows.y.after\n\n let reset = false\n ;['x', 'y'].forEach(key => {\n if (\n (key === 'x' && hasOverflowX && !flipped.x) ||\n (key === 'y' && hasOverflowY && !flipped.y)\n ) {\n const newPlacement = { anchor: { ...placement.anchor }, origin: { ...placement.origin } }\n const flip = key === 'x'\n ? axis === 'y' ? flipAlign : flipSide\n : axis === 'y' ? flipSide : flipAlign\n newPlacement.anchor = flip(newPlacement.anchor)\n newPlacement.origin = flip(newPlacement.origin)\n const { overflows: newOverflows } = checkOverflow(newPlacement)\n if (\n (newOverflows[key].before <= overflows[key].before &&\n newOverflows[key].after <= overflows[key].after) ||\n (newOverflows[key].before + newOverflows[key].after <\n (overflows[key].before + overflows[key].after) / 2)\n ) {\n placement = newPlacement\n reset = flipped[key] = true\n }\n }\n })\n if (reset) continue\n }\n\n // shift\n if (overflows.x.before) {\n x += overflows.x.before\n contentBox.x += overflows.x.before\n }\n if (overflows.x.after) {\n x -= overflows.x.after\n contentBox.x -= overflows.x.after\n }\n if (overflows.y.before) {\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n if (overflows.y.after) {\n y -= overflows.y.after\n contentBox.y -= overflows.y.after\n }\n\n // size\n {\n const overflows = getOverflow(contentBox, viewport)\n available.x = viewport.width - overflows.x.before - overflows.x.after\n available.y = viewport.height - overflows.y.before - overflows.y.after\n\n x += overflows.x.before\n contentBox.x += overflows.x.before\n y += overflows.y.before\n contentBox.y += overflows.y.before\n }\n\n break\n }\n\n const axis = getAxis(placement.anchor)\n\n Object.assign(contentStyles.value, {\n '--v-overlay-anchor-origin': `${placement.anchor.side} ${placement.anchor.align}`,\n transformOrigin: `${placement.origin.side} ${placement.origin.align}`,\n // transform: `translate(${pixelRound(x)}px, ${pixelRound(y)}px)`,\n top: convertToUnit(pixelRound(y)),\n left: data.isRtl.value ? undefined : convertToUnit(pixelRound(x)),\n right: data.isRtl.value ? convertToUnit(pixelRound(-x)) : undefined,\n minWidth: convertToUnit(axis === 'y' ? Math.min(minWidth.value, targetBox.width) : minWidth.value),\n maxWidth: convertToUnit(pixelCeil(clamp(available.x, minWidth.value === Infinity ? 0 : minWidth.value, maxWidth.value))),\n maxHeight: convertToUnit(pixelCeil(clamp(available.y, minHeight.value === Infinity ? 0 : minHeight.value, maxHeight.value))),\n })\n\n return {\n available,\n contentBox,\n flipped,\n }\n }\n\n watch(\n () => [\n preferredAnchor.value,\n preferredOrigin.value,\n props.offset,\n props.minWidth,\n props.minHeight,\n props.maxWidth,\n props.maxHeight,\n ],\n () => updateLocation(),\n )\n\n nextTick(() => {\n const result = updateLocation()\n\n // TODO: overflowing content should only require a single updateLocation call\n // Icky hack to make sure the content is positioned consistently\n if (!result) return\n const { available, contentBox } = result\n if (contentBox.height > available.y) {\n requestAnimationFrame(() => {\n updateLocation()\n requestAnimationFrame(() => {\n updateLocation()\n })\n })\n }\n })\n\n return { updateLocation }\n}\n\nfunction pixelRound (val: number) {\n return Math.round(val * devicePixelRatio) / devicePixelRatio\n}\n\nfunction pixelCeil (val: number) {\n return Math.ceil(val * devicePixelRatio) / devicePixelRatio\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -47,7 +47,7 @@ export function provideDefaults(defaults, options) {
|
|
47
47
|
return newDefaults;
|
48
48
|
}
|
49
49
|
function propIsDefined(vnode, prop) {
|
50
|
-
return typeof vnode.props
|
50
|
+
return vnode.props && (typeof vnode.props[prop] !== 'undefined' || typeof vnode.props[toKebabCase(prop)] !== 'undefined');
|
51
51
|
}
|
52
52
|
export function internalUseDefaults() {
|
53
53
|
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
@@ -64,9 +64,12 @@ export function internalUseDefaults() {
|
|
64
64
|
const propValue = Reflect.get(target, prop);
|
65
65
|
if (prop === 'class' || prop === 'style') {
|
66
66
|
return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
|
67
|
-
} else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
|
68
|
-
return componentDefaults.value?.[prop] !== undefined ? componentDefaults.value?.[prop] : defaults.value?.global?.[prop] !== undefined ? defaults.value?.global?.[prop] : propValue;
|
69
67
|
}
|
68
|
+
if (propIsDefined(vm.vnode, prop)) return propValue;
|
69
|
+
const _componentDefault = componentDefaults.value?.[prop];
|
70
|
+
if (_componentDefault !== undefined) return _componentDefault;
|
71
|
+
const _globalDefault = defaults.value?.global?.[prop];
|
72
|
+
if (_globalDefault !== undefined) return _globalDefault;
|
70
73
|
return propValue;
|
71
74
|
}
|
72
75
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"defaults.js","names":["computed","inject","provide","ref","shallowRef","unref","watchEffect","getCurrentInstance","mergeDeep","toKebabCase","injectSelf","DefaultsSymbol","Symbol","for","createDefaults","options","injectDefaults","defaults","Error","provideDefaults","injectedDefaults","providedDefaults","newDefaults","disabled","value","scoped","reset","root","properties","prev","len","Number","Infinity","i","propIsDefined","vnode","prop","props","internalUseDefaults","arguments","length","undefined","name","vm","type","__name","componentDefaults","_as","_props","Proxy","get","target","propValue","Reflect","filter","v","global","_subcomponentDefaults","subComponents","Object","entries","_ref","key","startsWith","toUpperCase","fromEntries","provideSubDefaults","injected","useDefaults"],"sources":["../../src/composables/defaults.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, shallowRef, unref, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util/getCurrentInstance'\nimport { mergeDeep, toKebabCase } from '@/util/helpers'\nimport { injectSelf } from '@/util/injectSelf'\n\n// Types\nimport type { ComputedRef, InjectionKey, Ref, VNode } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type DefaultsInstance = undefined | {\n [key: string]: undefined | Record<string, unknown>\n global?: Record<string, unknown>\n}\n\nexport type DefaultsOptions = Partial<DefaultsInstance>\n\nexport const DefaultsSymbol: InjectionKey<Ref<DefaultsInstance>> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref<DefaultsInstance> {\n return ref(options)\n}\n\nexport function injectDefaults () {\n const defaults = inject(DefaultsSymbol)\n\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance')\n\n return defaults\n}\n\nexport function provideDefaults (\n defaults?: MaybeRef<DefaultsInstance | undefined>,\n options?: {\n disabled?: MaybeRef<boolean | undefined>\n reset?: MaybeRef<number | string | undefined>\n root?: MaybeRef<boolean | string | undefined>\n scoped?: MaybeRef<boolean | undefined>\n }\n) {\n const injectedDefaults = injectDefaults()\n const providedDefaults = ref(defaults)\n\n const newDefaults = computed(() => {\n const disabled = unref(options?.disabled)\n\n if (disabled) return injectedDefaults.value\n\n const scoped = unref(options?.scoped)\n const reset = unref(options?.reset)\n const root = unref(options?.root)\n\n if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value\n\n let properties = mergeDeep(providedDefaults.value, { prev: injectedDefaults.value })\n\n if (scoped) return properties\n\n if (reset || root) {\n const len = Number(reset || Infinity)\n\n for (let i = 0; i <= len; i++) {\n if (!properties || !('prev' in properties)) {\n break\n }\n\n properties = properties.prev\n }\n\n if (properties && typeof root === 'string' && root in properties) {\n properties = mergeDeep(mergeDeep(properties, { prev: properties }), properties[root])\n }\n\n return properties\n }\n\n return properties.prev\n ? mergeDeep(properties.prev, properties)\n : properties\n }) as ComputedRef<DefaultsInstance>\n\n provide(DefaultsSymbol, newDefaults)\n\n return newDefaults\n}\n\nfunction propIsDefined (vnode: VNode, prop: string) {\n return typeof vnode.props?.[prop] !== 'undefined' ||\n typeof vnode.props?.[toKebabCase(prop)] !== 'undefined'\n}\n\nexport function internalUseDefaults (\n props: Record<string, any> = {},\n name?: string,\n defaults = injectDefaults()\n) {\n const vm = getCurrentInstance('useDefaults')\n\n name = name ?? vm.type.name ?? vm.type.__name\n if (!name) {\n throw new Error('[Vuetify] Could not determine component name')\n }\n\n const componentDefaults = computed(() => defaults.value?.[props._as ?? name])\n const _props = new Proxy(props, {\n get (target, prop) {\n const propValue = Reflect.get(target, prop)\n if (prop === 'class' || prop === 'style') {\n return [componentDefaults.value?.[prop], propValue].filter(v => v != null)\n } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {\n return componentDefaults.value?.[prop] !== undefined ? componentDefaults.value?.[prop]\n : defaults.value?.global?.[prop] !== undefined ? defaults.value?.global?.[prop]\n : propValue\n }\n return propValue\n },\n })\n\n const _subcomponentDefaults = shallowRef()\n watchEffect(() => {\n if (componentDefaults.value) {\n const subComponents = Object.entries(componentDefaults.value).filter(([key]) => key.startsWith(key[0].toUpperCase()))\n _subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : undefined\n } else {\n _subcomponentDefaults.value = undefined\n }\n })\n\n function provideSubDefaults () {\n const injected = injectSelf(DefaultsSymbol, vm)\n provide(DefaultsSymbol, computed(() => {\n return _subcomponentDefaults.value ? mergeDeep(\n injected?.value ?? {},\n _subcomponentDefaults.value\n ) : injected?.value\n }))\n }\n\n return { props: _props, provideSubDefaults }\n}\n\nexport function useDefaults<T extends Record<string, any>> (props: T, name?: string): T\nexport function useDefaults (props?: undefined, name?: string): Record<string, any>\nexport function useDefaults (\n props: Record<string, any> = {},\n name?: string,\n) {\n const { props: _props, provideSubDefaults } = internalUseDefaults(props, name)\n provideSubDefaults()\n return _props\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"defaults.js","names":["computed","inject","provide","ref","shallowRef","unref","watchEffect","getCurrentInstance","mergeDeep","toKebabCase","injectSelf","DefaultsSymbol","Symbol","for","createDefaults","options","injectDefaults","defaults","Error","provideDefaults","injectedDefaults","providedDefaults","newDefaults","disabled","value","scoped","reset","root","properties","prev","len","Number","Infinity","i","propIsDefined","vnode","prop","props","internalUseDefaults","arguments","length","undefined","name","vm","type","__name","componentDefaults","_as","_props","Proxy","get","target","propValue","Reflect","filter","v","_componentDefault","_globalDefault","global","_subcomponentDefaults","subComponents","Object","entries","_ref","key","startsWith","toUpperCase","fromEntries","provideSubDefaults","injected","useDefaults"],"sources":["../../src/composables/defaults.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, shallowRef, unref, watchEffect } from 'vue'\nimport { getCurrentInstance } from '@/util/getCurrentInstance'\nimport { mergeDeep, toKebabCase } from '@/util/helpers'\nimport { injectSelf } from '@/util/injectSelf'\n\n// Types\nimport type { ComputedRef, InjectionKey, Ref, VNode } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type DefaultsInstance = undefined | {\n [key: string]: undefined | Record<string, unknown>\n global?: Record<string, unknown>\n}\n\nexport type DefaultsOptions = Partial<DefaultsInstance>\n\nexport const DefaultsSymbol: InjectionKey<Ref<DefaultsInstance>> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref<DefaultsInstance> {\n return ref(options)\n}\n\nexport function injectDefaults () {\n const defaults = inject(DefaultsSymbol)\n\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance')\n\n return defaults\n}\n\nexport function provideDefaults (\n defaults?: MaybeRef<DefaultsInstance | undefined>,\n options?: {\n disabled?: MaybeRef<boolean | undefined>\n reset?: MaybeRef<number | string | undefined>\n root?: MaybeRef<boolean | string | undefined>\n scoped?: MaybeRef<boolean | undefined>\n }\n) {\n const injectedDefaults = injectDefaults()\n const providedDefaults = ref(defaults)\n\n const newDefaults = computed(() => {\n const disabled = unref(options?.disabled)\n\n if (disabled) return injectedDefaults.value\n\n const scoped = unref(options?.scoped)\n const reset = unref(options?.reset)\n const root = unref(options?.root)\n\n if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value\n\n let properties = mergeDeep(providedDefaults.value, { prev: injectedDefaults.value })\n\n if (scoped) return properties\n\n if (reset || root) {\n const len = Number(reset || Infinity)\n\n for (let i = 0; i <= len; i++) {\n if (!properties || !('prev' in properties)) {\n break\n }\n\n properties = properties.prev\n }\n\n if (properties && typeof root === 'string' && root in properties) {\n properties = mergeDeep(mergeDeep(properties, { prev: properties }), properties[root])\n }\n\n return properties\n }\n\n return properties.prev\n ? mergeDeep(properties.prev, properties)\n : properties\n }) as ComputedRef<DefaultsInstance>\n\n provide(DefaultsSymbol, newDefaults)\n\n return newDefaults\n}\n\nfunction propIsDefined (vnode: VNode, prop: string) {\n return vnode.props && (typeof vnode.props[prop] !== 'undefined' ||\n typeof vnode.props[toKebabCase(prop)] !== 'undefined')\n}\n\nexport function internalUseDefaults (\n props: Record<string, any> = {},\n name?: string,\n defaults = injectDefaults()\n) {\n const vm = getCurrentInstance('useDefaults')\n\n name = name ?? vm.type.name ?? vm.type.__name\n if (!name) {\n throw new Error('[Vuetify] Could not determine component name')\n }\n\n const componentDefaults = computed(() => defaults.value?.[props._as ?? name])\n const _props = new Proxy(props, {\n get (target, prop: string) {\n const propValue = Reflect.get(target, prop)\n if (prop === 'class' || prop === 'style') {\n return [componentDefaults.value?.[prop], propValue].filter(v => v != null)\n }\n if (propIsDefined(vm.vnode, prop)) return propValue\n const _componentDefault = componentDefaults.value?.[prop]\n if (_componentDefault !== undefined) return _componentDefault\n const _globalDefault = defaults.value?.global?.[prop]\n if (_globalDefault !== undefined) return _globalDefault\n return propValue\n },\n })\n\n const _subcomponentDefaults = shallowRef()\n watchEffect(() => {\n if (componentDefaults.value) {\n const subComponents = Object.entries(componentDefaults.value)\n .filter(([key]) => key.startsWith(key[0].toUpperCase()))\n _subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : undefined\n } else {\n _subcomponentDefaults.value = undefined\n }\n })\n\n function provideSubDefaults () {\n const injected = injectSelf(DefaultsSymbol, vm)\n provide(DefaultsSymbol, computed(() => {\n return _subcomponentDefaults.value ? mergeDeep(\n injected?.value ?? {},\n _subcomponentDefaults.value\n ) : injected?.value\n }))\n }\n\n return { props: _props, provideSubDefaults }\n}\n\nexport function useDefaults<T extends Record<string, any>> (props: T, name?: string): T\nexport function useDefaults (props?: undefined, name?: string): Record<string, any>\nexport function useDefaults (\n props: Record<string, any> = {},\n name?: string,\n) {\n const { props: _props, provideSubDefaults } = internalUseDefaults(props, name)\n provideSubDefaults()\n return _props\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/entry-bundler.js
CHANGED
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
16
16
|
...options
|
17
17
|
});
|
18
18
|
};
|
19
|
-
export const version = "3.8.
|
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";
|
package/lib/framework.d.ts
CHANGED
@@ -638,6 +638,10 @@ declare function connectedLocationStrategy(data: LocationStrategyData, props: St
|
|
638
638
|
y: number;
|
639
639
|
};
|
640
640
|
contentBox: Box;
|
641
|
+
flipped: {
|
642
|
+
x: boolean;
|
643
|
+
y: boolean;
|
644
|
+
};
|
641
645
|
} | undefined;
|
642
646
|
};
|
643
647
|
|
@@ -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
|
-
|
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
|
-
|
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
|
-
|
2601
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
2657
|
-
|
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
|
-
|
2660
|
-
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
2661
|
+
VMessages: typeof import('vuetify/components')['VMessages']
|
2661
2662
|
VNumberInput: typeof import('vuetify/components')['VNumberInput']
|
2662
|
-
|
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
|
-
|
2666
|
-
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
2668
|
+
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
2667
2669
|
VRating: typeof import('vuetify/components')['VRating']
|
2668
|
-
|
2669
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
2713
|
+
VHover: typeof import('vuetify/components')['VHover']
|
2709
2714
|
VLayout: typeof import('vuetify/components')['VLayout']
|
2710
2715
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
2711
|
-
|
2716
|
+
VLazy: typeof import('vuetify/components')['VLazy']
|
2712
2717
|
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
2713
2718
|
VParallax: typeof import('vuetify/components')['VParallax']
|
2714
|
-
|
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
|
-
|
2738
|
-
|
2739
|
-
|
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
|
-
|
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
package/lib/util/helpers.d.ts
CHANGED
@@ -78,8 +78,10 @@ export declare class CircularBuffer<T = never> {
|
|
78
78
|
#private;
|
79
79
|
readonly size: number;
|
80
80
|
constructor(size: number);
|
81
|
+
get isFull(): boolean;
|
81
82
|
push(val: T): void;
|
82
83
|
values(): T[];
|
84
|
+
clear(): void;
|
83
85
|
}
|
84
86
|
export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
|
85
87
|
export declare function getEventCoordinates(e: MouseEvent | TouchEvent): {
|
package/lib/util/helpers.js
CHANGED
@@ -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) {
|