@vuetify/nightly 3.9.2-master.2025-07-24 → 3.9.2-master.2025-07-26
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 +10 -3
- package/dist/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +3153 -3005
- package/dist/json/importMap-labs.json +30 -18
- package/dist/json/importMap.json +166 -166
- package/dist/json/tags.json +52 -0
- package/dist/json/web-types.json +6315 -5820
- package/dist/vuetify-labs.cjs +781 -118
- package/dist/vuetify-labs.css +3870 -3763
- package/dist/vuetify-labs.d.ts +1078 -63
- package/dist/vuetify-labs.esm.js +782 -119
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +781 -118
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +40 -28
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4830 -4830
- package/dist/vuetify.d.ts +67 -62
- package/dist/vuetify.esm.js +40 -28
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +40 -28
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +936 -938
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VOverlay/locationStrategies.js +16 -10
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/index.js +1 -1
- package/lib/components/index.js.map +1 -1
- package/lib/composables/goto.d.ts +3 -2
- package/lib/composables/goto.js +2 -16
- package/lib/composables/goto.js.map +1 -1
- package/lib/composables/reveal.d.ts +36 -0
- package/lib/composables/reveal.js +30 -0
- package/lib/composables/reveal.js.map +1 -0
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +151 -146
- package/lib/framework.js +1 -1
- package/lib/labs/VPie/VPie.css +105 -0
- package/lib/labs/VPie/VPie.d.ts +891 -0
- package/lib/labs/VPie/VPie.js +291 -0
- package/lib/labs/VPie/VPie.js.map +1 -0
- package/lib/labs/VPie/VPie.sass +109 -0
- package/lib/labs/VPie/VPieSegment.d.ts +310 -0
- package/lib/labs/VPie/VPieSegment.js +103 -0
- package/lib/labs/VPie/VPieSegment.js.map +1 -0
- package/lib/labs/VPie/VPieTooltip.d.ts +279 -0
- package/lib/labs/VPie/VPieTooltip.js +84 -0
- package/lib/labs/VPie/VPieTooltip.js.map +1 -0
- package/lib/labs/VPie/_variables.scss +11 -0
- package/lib/labs/VPie/index.d.ts +3 -0
- package/lib/labs/VPie/index.js +4 -0
- package/lib/labs/VPie/index.js.map +1 -0
- package/lib/labs/VPie/types.d.ts +16 -0
- package/lib/labs/VPie/types.js +2 -0
- package/lib/labs/VPie/types.js.map +1 -0
- package/lib/labs/VPie/utils.d.ts +23 -0
- package/lib/labs/VPie/utils.js +49 -0
- package/lib/labs/VPie/utils.js.map +1 -0
- package/lib/labs/VVideo/VVideo.css +3 -0
- package/lib/labs/VVideo/VVideo.sass +3 -0
- package/lib/labs/VVideo/VVideoControls.js +9 -5
- package/lib/labs/VVideo/VVideoControls.js.map +1 -1
- package/lib/labs/VVideo/VVideoVolume.js +7 -3
- package/lib/labs/VVideo/VVideoVolume.js.map +1 -1
- package/lib/labs/components.d.ts +1 -0
- package/lib/labs/components.js +1 -0
- package/lib/labs/components.js.map +1 -1
- package/lib/util/easing.d.ts +22 -0
- package/lib/util/easing.js +53 -0
- package/lib/util/easing.js.map +1 -1
- package/lib/util/svg-arc-corners.d.ts +4 -0
- package/lib/util/svg-arc-corners.js +73 -0
- package/lib/util/svg-arc-corners.js.map +1 -0
- package/package.json +1 -1
@@ -173,11 +173,23 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
173
173
|
const result = updateLocation();
|
174
174
|
if (result) flipped.push(result.flipped);
|
175
175
|
});
|
176
|
-
|
177
|
-
|
178
|
-
|
176
|
+
let targetBox = new Box({
|
177
|
+
x: 0,
|
178
|
+
y: 0,
|
179
|
+
width: 0,
|
180
|
+
height: 0
|
181
|
+
});
|
182
|
+
watch(data.target, (newTarget, oldTarget) => {
|
179
183
|
if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget);
|
180
|
-
if (
|
184
|
+
if (!Array.isArray(newTarget)) {
|
185
|
+
if (newTarget) observer.observe(newTarget);
|
186
|
+
} else if (!deepEqual(newTarget, oldTarget)) {
|
187
|
+
updateLocation();
|
188
|
+
}
|
189
|
+
}, {
|
190
|
+
immediate: true
|
191
|
+
});
|
192
|
+
watch(data.contentEl, (newContentEl, oldContentEl) => {
|
181
193
|
if (oldContentEl) observer.unobserve(oldContentEl);
|
182
194
|
if (newContentEl) observer.observe(newContentEl);
|
183
195
|
}, {
|
@@ -186,12 +198,6 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
186
198
|
onScopeDispose(() => {
|
187
199
|
observer.disconnect();
|
188
200
|
});
|
189
|
-
let targetBox = new Box({
|
190
|
-
x: 0,
|
191
|
-
y: 0,
|
192
|
-
width: 0,
|
193
|
-
height: 0
|
194
|
-
});
|
195
201
|
|
196
202
|
// eslint-disable-next-line max-statements
|
197
203
|
function updateLocation() {
|
@@ -1 +1 @@
|
|
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","getElementBox","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","visualViewport","onVisualResize","onVisualScroll","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","getClientRects","scrollParents","viewportMargin","document","documentElement","getPropertyValue","viewport","reduce","box","scrollBox","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, getElementBox, 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 visualViewport?.removeEventListener('resize', onVisualResize)\n visualViewport?.removeEventListener('scroll', onVisualScroll)\n updateLocation.value = undefined\n })\n\n window.addEventListener('resize', onResize, { passive: true })\n visualViewport?.addEventListener('resize', onVisualResize, { passive: true })\n visualViewport?.addEventListener('scroll', onVisualScroll, { 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 function onVisualResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n function onVisualScroll (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 (\n deepEqual(values.at(-1), values.at(-3)) &&\n !deepEqual(values.at(-1), values.at(-2))\n ) {\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 (\n Array.isArray(data.target.value) ||\n data.target.value.offsetParent ||\n data.target.value.getClientRects().length\n ) {\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 scrollBox = getElementBox(el)\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":[]}
|
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","getElementBox","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","visualViewport","onVisualResize","onVisualScroll","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","targetBox","width","height","newTarget","oldTarget","unobserve","immediate","contentEl","newContentEl","oldContentEl","disconnect","offsetParent","getClientRects","scrollParents","viewportMargin","document","documentElement","getPropertyValue","viewport","reduce","box","scrollBox","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, getElementBox, 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 visualViewport?.removeEventListener('resize', onVisualResize)\n visualViewport?.removeEventListener('scroll', onVisualScroll)\n updateLocation.value = undefined\n })\n\n window.addEventListener('resize', onResize, { passive: true })\n visualViewport?.addEventListener('resize', onVisualResize, { passive: true })\n visualViewport?.addEventListener('scroll', onVisualScroll, { 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 function onVisualResize (e: Event) {\n updateLocation.value?.(e)\n }\n\n function onVisualScroll (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 (\n deepEqual(values.at(-1), values.at(-3)) &&\n !deepEqual(values.at(-1), values.at(-2))\n ) {\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 let targetBox = new Box({ x: 0, y: 0, width: 0, height: 0 })\n\n watch(data.target, (newTarget, oldTarget) => {\n if (oldTarget && !Array.isArray(oldTarget)) observer.unobserve(oldTarget)\n if (!Array.isArray(newTarget)) {\n if (newTarget) observer.observe(newTarget)\n } else if (!deepEqual(newTarget, oldTarget)) {\n updateLocation()\n }\n }, { immediate: true })\n\n watch(data.contentEl, (newContentEl, oldContentEl) => {\n if (oldContentEl) observer.unobserve(oldContentEl)\n if (newContentEl) observer.observe(newContentEl)\n }, { immediate: true })\n\n onScopeDispose(() => {\n observer.disconnect()\n })\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 (\n Array.isArray(data.target.value) ||\n data.target.value.offsetParent ||\n data.target.value.getClientRects().length\n ) {\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 scrollBox = getElementBox(el)\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":[]}
|
package/lib/components/index.js
CHANGED
@@ -56,7 +56,7 @@ export * from "./VNumberInput/index.js";
|
|
56
56
|
export * from "./VOtpInput/index.js"; // export * from './VOverflowBtn'
|
57
57
|
export * from "./VOverlay/index.js";
|
58
58
|
export * from "./VPagination/index.js";
|
59
|
-
export * from "./VParallax/index.js";
|
59
|
+
export * from "./VParallax/index.js"; // export * from './VPie'
|
60
60
|
export * from "./VProgressCircular/index.js";
|
61
61
|
export * from "./VProgressLinear/index.js";
|
62
62
|
export * from "./VRadio/index.js";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/components/index.ts"],"sourcesContent":["export * from './VApp'\nexport * from './VAppBar'\nexport * from './VAlert'\nexport * from './VAutocomplete'\nexport * from './VAvatar'\nexport * from './VBadge'\nexport * from './VBanner'\nexport * from './VBottomNavigation'\nexport * from './VBottomSheet'\nexport * from './VBreadcrumbs'\nexport * from './VBtn'\nexport * from './VBtnGroup'\nexport * from './VBtnToggle'\n// export * from './VCalendar'\nexport * from './VCard'\nexport * from './VCarousel'\nexport * from './VCheckbox'\nexport * from './VChip'\nexport * from './VChipGroup'\nexport * from './VCode'\nexport * from './VColorPicker'\nexport * from './VCombobox'\nexport * from './VConfirmEdit'\nexport * from './VCounter'\nexport * from './VDataIterator'\nexport * from './VDataTable'\nexport * from './VDatePicker'\nexport * from './VDefaultsProvider'\nexport * from './VDialog'\nexport * from './VDivider'\nexport * from './VEmptyState'\nexport * from './VExpansionPanel'\nexport * from './VFab'\nexport * from './VField'\nexport * from './VFileInput'\nexport * from './VFooter'\nexport * from './VForm'\nexport * from './VGrid'\nexport * from './VHover'\nexport * from './VIcon'\nexport * from './VImg'\nexport * from './VInfiniteScroll'\nexport * from './VInput'\nexport * from './VItemGroup'\nexport * from './VKbd'\nexport * from './VLabel'\nexport * from './VLayout'\nexport * from './VLazy'\nexport * from './VList'\nexport * from './VLocaleProvider'\nexport * from './VMain'\nexport * from './VMenu'\nexport * from './VMessages'\nexport * from './VNavigationDrawer'\nexport * from './VNoSsr'\nexport * from './VNumberInput'\nexport * from './VOtpInput'\n// export * from './VOverflowBtn'\nexport * from './VOverlay'\nexport * from './VPagination'\nexport * from './VParallax'\nexport * from './VProgressCircular'\nexport * from './VProgressLinear'\nexport * from './VRadio'\nexport * from './VRadioGroup'\nexport * from './VRangeSlider'\nexport * from './VRating'\nexport * from './VResponsive'\nexport * from './VSelect'\nexport * from './VSelectionControl'\nexport * from './VSelectionControlGroup'\nexport * from './VSheet'\nexport * from './VSkeletonLoader'\nexport * from './VSlideGroup'\nexport * from './VSlider'\nexport * from './VSnackbar'\nexport * from './VSnackbarQueue'\nexport * from './VSparkline'\nexport * from './VSpeedDial'\nexport * from './VStepper'\nexport * from './VSwitch'\nexport * from './VSystemBar'\nexport * from './VTabs'\nexport * from './VTable'\nexport * from './VTextarea'\nexport * from './VTextField'\nexport * from './VThemeProvider'\nexport * from './VTimeline'\nexport * from './VTimePicker'\nexport * from './VToolbar'\nexport * from './VTooltip'\nexport * from './VTreeview'\nexport * from './VValidation'\n// export * from './VVideo'\nexport * from './VVirtualScroll'\nexport * from './VWindow'\nexport * from './transitions'\n"],"mappings":";;;;;;;;;;;;uCAaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCA4CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/components/index.ts"],"sourcesContent":["export * from './VApp'\nexport * from './VAppBar'\nexport * from './VAlert'\nexport * from './VAutocomplete'\nexport * from './VAvatar'\nexport * from './VBadge'\nexport * from './VBanner'\nexport * from './VBottomNavigation'\nexport * from './VBottomSheet'\nexport * from './VBreadcrumbs'\nexport * from './VBtn'\nexport * from './VBtnGroup'\nexport * from './VBtnToggle'\n// export * from './VCalendar'\nexport * from './VCard'\nexport * from './VCarousel'\nexport * from './VCheckbox'\nexport * from './VChip'\nexport * from './VChipGroup'\nexport * from './VCode'\nexport * from './VColorPicker'\nexport * from './VCombobox'\nexport * from './VConfirmEdit'\nexport * from './VCounter'\nexport * from './VDataIterator'\nexport * from './VDataTable'\nexport * from './VDatePicker'\nexport * from './VDefaultsProvider'\nexport * from './VDialog'\nexport * from './VDivider'\nexport * from './VEmptyState'\nexport * from './VExpansionPanel'\nexport * from './VFab'\nexport * from './VField'\nexport * from './VFileInput'\nexport * from './VFooter'\nexport * from './VForm'\nexport * from './VGrid'\nexport * from './VHover'\nexport * from './VIcon'\nexport * from './VImg'\nexport * from './VInfiniteScroll'\nexport * from './VInput'\nexport * from './VItemGroup'\nexport * from './VKbd'\nexport * from './VLabel'\nexport * from './VLayout'\nexport * from './VLazy'\nexport * from './VList'\nexport * from './VLocaleProvider'\nexport * from './VMain'\nexport * from './VMenu'\nexport * from './VMessages'\nexport * from './VNavigationDrawer'\nexport * from './VNoSsr'\nexport * from './VNumberInput'\nexport * from './VOtpInput'\n// export * from './VOverflowBtn'\nexport * from './VOverlay'\nexport * from './VPagination'\nexport * from './VParallax'\n// export * from './VPie'\nexport * from './VProgressCircular'\nexport * from './VProgressLinear'\nexport * from './VRadio'\nexport * from './VRadioGroup'\nexport * from './VRangeSlider'\nexport * from './VRating'\nexport * from './VResponsive'\nexport * from './VSelect'\nexport * from './VSelectionControl'\nexport * from './VSelectionControlGroup'\nexport * from './VSheet'\nexport * from './VSkeletonLoader'\nexport * from './VSlideGroup'\nexport * from './VSlider'\nexport * from './VSnackbar'\nexport * from './VSnackbarQueue'\nexport * from './VSparkline'\nexport * from './VSpeedDial'\nexport * from './VStepper'\nexport * from './VSwitch'\nexport * from './VSystemBar'\nexport * from './VTabs'\nexport * from './VTable'\nexport * from './VTextarea'\nexport * from './VTextField'\nexport * from './VThemeProvider'\nexport * from './VTimeline'\nexport * from './VTimePicker'\nexport * from './VToolbar'\nexport * from './VTooltip'\nexport * from './VTreeview'\nexport * from './VValidation'\n// export * from './VVideo'\nexport * from './VVirtualScroll'\nexport * from './VWindow'\nexport * from './transitions'\n"],"mappings":";;;;;;;;;;;;uCAaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCA4CA;AAAA;AAAA;AAAA,sCAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAiCA;AAAA;AAAA;AAAA","ignoreList":[]}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import type { ComponentPublicInstance, InjectionKey, Ref } from 'vue';
|
2
2
|
import type { LocaleInstance, RtlInstance } from './locale.js';
|
3
|
+
import type { EasingFunction } from "../util/index.js";
|
3
4
|
export interface GoToInstance {
|
4
5
|
rtl: Ref<boolean>;
|
5
6
|
options: InternalGoToOptions;
|
@@ -9,8 +10,8 @@ export interface InternalGoToOptions {
|
|
9
10
|
duration: number;
|
10
11
|
layout: boolean;
|
11
12
|
offset: number;
|
12
|
-
easing: string |
|
13
|
-
patterns: Record<string,
|
13
|
+
easing: string | EasingFunction;
|
14
|
+
patterns: Record<string, EasingFunction>;
|
14
15
|
}
|
15
16
|
export type GoToOptions = Partial<InternalGoToOptions>;
|
16
17
|
export declare const GoToSymbol: InjectionKey<GoToInstance>;
|
package/lib/composables/goto.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
// Utilities
|
2
2
|
import { inject, toRef } from 'vue';
|
3
3
|
import { useRtl } from "./locale.js";
|
4
|
-
import { clamp, consoleWarn, mergeDeep, refElement } from "../util/index.js"; // Types
|
4
|
+
import { clamp, consoleWarn, easingPatterns, mergeDeep, refElement } from "../util/index.js"; // Types
|
5
5
|
export const GoToSymbol = Symbol.for('vuetify:goto');
|
6
6
|
function genDefaults() {
|
7
7
|
return {
|
@@ -10,21 +10,7 @@ function genDefaults() {
|
|
10
10
|
layout: false,
|
11
11
|
offset: 0,
|
12
12
|
easing: 'easeInOutCubic',
|
13
|
-
patterns:
|
14
|
-
linear: t => t,
|
15
|
-
easeInQuad: t => t ** 2,
|
16
|
-
easeOutQuad: t => t * (2 - t),
|
17
|
-
easeInOutQuad: t => t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t,
|
18
|
-
easeInCubic: t => t ** 3,
|
19
|
-
easeOutCubic: t => --t ** 3 + 1,
|
20
|
-
easeInOutCubic: t => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,
|
21
|
-
easeInQuart: t => t ** 4,
|
22
|
-
easeOutQuart: t => 1 - --t ** 4,
|
23
|
-
easeInOutQuart: t => t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4,
|
24
|
-
easeInQuint: t => t ** 5,
|
25
|
-
easeOutQuint: t => 1 + --t ** 5,
|
26
|
-
easeInOutQuint: t => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5
|
27
|
-
}
|
13
|
+
patterns: easingPatterns
|
28
14
|
};
|
29
15
|
}
|
30
16
|
function getContainer(el) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"goto.js","names":["inject","toRef","useRtl","clamp","consoleWarn","mergeDeep","refElement","GoToSymbol","Symbol","for","genDefaults","container","undefined","duration","layout","offset","easing","patterns","linear","t","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","getContainer","el","getTarget","document","scrollingElement","body","querySelector","getOffset","target","horizontal","rtl","totalOffset","offsetLeft","offsetTop","offsetParent","createGoTo","options","locale","isRtl","scrollTo","_target","_options","goTo","property","value","HTMLElement","parentElement","ease","TypeError","targetLocation","styles","window","getComputedStyle","layoutOffset","getPropertyValue","parseInt","clampTarget","startLocation","Promise","resolve","startTime","performance","now","requestAnimationFrame","step","currentTime","timeElapsed","progress","location","Math","floor","abs","useGoTo","arguments","length","goToInstance","Error","go","scrollWidth","scrollHeight","containerWidth","containerHeight","innerWidth","innerHeight","offsetWidth","offsetHeight","min","max"],"sources":["../../src/composables/goto.ts"],"sourcesContent":["// Utilities\nimport { inject, toRef } from 'vue'\nimport { useRtl } from './locale'\nimport { clamp, consoleWarn, mergeDeep, refElement } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance, InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance, RtlInstance } from './locale'\n\nexport interface GoToInstance {\n rtl: Ref<boolean>\n options: InternalGoToOptions\n}\n\nexport interface InternalGoToOptions {\n container: ComponentPublicInstance | HTMLElement | string\n duration: number\n layout: boolean\n offset: number\n easing: string | ((t: number) => number)\n patterns: Record<string, (t: number) => number>\n}\n\nexport type GoToOptions = Partial<InternalGoToOptions>\n\nexport const GoToSymbol: InjectionKey<GoToInstance> = Symbol.for('vuetify:goto')\n\nfunction genDefaults () {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic',\n patterns: {\n linear: (t: number) => t,\n easeInQuad: (t: number) => t ** 2,\n easeOutQuad: (t: number) => t * (2 - t),\n easeInOutQuad: (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t),\n easeInCubic: (t: number) => t ** 3,\n easeOutCubic: (t: number) => --t ** 3 + 1,\n easeInOutCubic: (t: number) => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n easeInQuart: (t: number) => t ** 4,\n easeOutQuart: (t: number) => 1 - --t ** 4,\n easeInOutQuart: (t: number) => (t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4),\n easeInQuint: (t: number) => t ** 5,\n easeOutQuint: (t: number) => 1 + --t ** 5,\n easeInOutQuint: (t: number) => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5,\n },\n }\n}\n\nfunction getContainer (el?: ComponentPublicInstance | HTMLElement | string) {\n return getTarget(el) ?? (document.scrollingElement || document.body) as HTMLElement\n}\n\nfunction getTarget (el: ComponentPublicInstance | HTMLElement | string | undefined) {\n return (typeof el === 'string') ? document.querySelector<HTMLElement>(el) : refElement(el)\n}\n\nfunction getOffset (target: any, horizontal?: boolean, rtl?: boolean): number {\n if (typeof target === 'number') return horizontal && rtl ? -target : target\n\n let el = getTarget(target)\n let totalOffset = 0\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function createGoTo (\n options: GoToOptions| undefined,\n locale: LocaleInstance & RtlInstance\n): GoToInstance {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options) as InternalGoToOptions,\n }\n}\n\nexport async function scrollTo (\n _target: ComponentPublicInstance | HTMLElement | number | string,\n _options: GoToOptions,\n horizontal?: boolean,\n goTo?: GoToInstance,\n) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop'\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options)\n const rtl = goTo?.rtl.value\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0\n const container = options.container === 'parent' && target instanceof HTMLElement\n ? target.parentElement!\n : getContainer(options.container)\n const ease = typeof options.easing === 'function' ? options.easing : options.patterns[options.easing]\n\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`)\n\n let targetLocation: number\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl)\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl)\n\n if (options.layout) {\n const styles = window.getComputedStyle(target)\n const layoutOffset = styles.getPropertyValue('--v-layout-top')\n\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10)\n }\n }\n\n targetLocation += options.offset\n targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal)\n\n const startLocation = container[property] ?? 0\n\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const startTime = performance.now()\n\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = timeElapsed / options.duration\n const location = Math.floor(\n startLocation +\n (targetLocation - startLocation) *\n ease(clamp(progress, 0, 1))\n )\n\n container[property] = location\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation)\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable')\n return resolve(container[property])\n }\n\n requestAnimationFrame(step)\n }))\n}\n\nexport function useGoTo (_options: GoToOptions = {}) {\n const goToInstance = inject(GoToSymbol)\n const { isRtl } = useRtl()\n\n if (!goToInstance) throw new Error('[Vuetify] Could not find injected goto instance')\n\n const goTo = {\n ...goToInstance,\n // can be set via VLocaleProvider\n rtl: toRef(() => goToInstance.rtl.value || isRtl.value),\n }\n\n async function go (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo)\n }\n\n go.horizontal = async (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo)\n }\n\n return go\n}\n\n/**\n * Clamp target value to achieve a smooth scroll animation\n * when the value goes outside the scroll container size\n */\nfunction clampTarget (\n container: HTMLElement,\n value: number,\n rtl: boolean,\n horizontal: boolean,\n) {\n const { scrollWidth, scrollHeight } = container\n const [containerWidth, containerHeight] = container === document.scrollingElement\n ? [window.innerWidth, window.innerHeight]\n : [container.offsetWidth, container.offsetHeight]\n\n let min: number\n let max: number\n\n if (horizontal) {\n if (rtl) {\n min = -(scrollWidth - containerWidth)\n max = 0\n } else {\n min = 0\n max = scrollWidth - containerWidth\n }\n } else {\n min = 0\n max = scrollHeight + -containerHeight\n }\n\n return clamp(value, min, max)\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"goto.js","names":["inject","toRef","useRtl","clamp","consoleWarn","easingPatterns","mergeDeep","refElement","GoToSymbol","Symbol","for","genDefaults","container","undefined","duration","layout","offset","easing","patterns","getContainer","el","getTarget","document","scrollingElement","body","querySelector","getOffset","target","horizontal","rtl","totalOffset","offsetLeft","offsetTop","offsetParent","createGoTo","options","locale","isRtl","scrollTo","_target","_options","goTo","property","value","HTMLElement","parentElement","ease","TypeError","targetLocation","styles","window","getComputedStyle","layoutOffset","getPropertyValue","parseInt","clampTarget","startLocation","Promise","resolve","startTime","performance","now","requestAnimationFrame","step","currentTime","timeElapsed","progress","location","Math","floor","abs","useGoTo","arguments","length","goToInstance","Error","go","scrollWidth","scrollHeight","containerWidth","containerHeight","innerWidth","innerHeight","offsetWidth","offsetHeight","min","max"],"sources":["../../src/composables/goto.ts"],"sourcesContent":["// Utilities\nimport { inject, toRef } from 'vue'\nimport { useRtl } from './locale'\nimport { clamp, consoleWarn, easingPatterns, mergeDeep, refElement } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance, InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance, RtlInstance } from './locale'\nimport type { EasingFunction } from '@/util'\n\nexport interface GoToInstance {\n rtl: Ref<boolean>\n options: InternalGoToOptions\n}\n\nexport interface InternalGoToOptions {\n container: ComponentPublicInstance | HTMLElement | string\n duration: number\n layout: boolean\n offset: number\n easing: string | EasingFunction\n patterns: Record<string, EasingFunction>\n}\n\nexport type GoToOptions = Partial<InternalGoToOptions>\n\nexport const GoToSymbol: InjectionKey<GoToInstance> = Symbol.for('vuetify:goto')\n\nfunction genDefaults () {\n return {\n container: undefined,\n duration: 300,\n layout: false,\n offset: 0,\n easing: 'easeInOutCubic' satisfies keyof typeof easingPatterns,\n patterns: easingPatterns,\n }\n}\n\nfunction getContainer (el?: ComponentPublicInstance | HTMLElement | string) {\n return getTarget(el) ?? (document.scrollingElement || document.body) as HTMLElement\n}\n\nfunction getTarget (el: ComponentPublicInstance | HTMLElement | string | undefined) {\n return (typeof el === 'string') ? document.querySelector<HTMLElement>(el) : refElement(el)\n}\n\nfunction getOffset (target: any, horizontal?: boolean, rtl?: boolean): number {\n if (typeof target === 'number') return horizontal && rtl ? -target : target\n\n let el = getTarget(target)\n let totalOffset = 0\n while (el) {\n totalOffset += horizontal ? el.offsetLeft : el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function createGoTo (\n options: GoToOptions| undefined,\n locale: LocaleInstance & RtlInstance\n): GoToInstance {\n return {\n rtl: locale.isRtl,\n options: mergeDeep(genDefaults(), options) as InternalGoToOptions,\n }\n}\n\nexport async function scrollTo (\n _target: ComponentPublicInstance | HTMLElement | number | string,\n _options: GoToOptions,\n horizontal?: boolean,\n goTo?: GoToInstance,\n) {\n const property = horizontal ? 'scrollLeft' : 'scrollTop'\n const options = mergeDeep(goTo?.options ?? genDefaults(), _options)\n const rtl = goTo?.rtl.value\n const target = (typeof _target === 'number' ? _target : getTarget(_target)) ?? 0\n const container = options.container === 'parent' && target instanceof HTMLElement\n ? target.parentElement!\n : getContainer(options.container)\n const ease = typeof options.easing === 'function' ? options.easing : options.patterns[options.easing]\n\n if (!ease) throw new TypeError(`Easing function \"${options.easing}\" not found.`)\n\n let targetLocation: number\n if (typeof target === 'number') {\n targetLocation = getOffset(target, horizontal, rtl)\n } else {\n targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl)\n\n if (options.layout) {\n const styles = window.getComputedStyle(target)\n const layoutOffset = styles.getPropertyValue('--v-layout-top')\n\n if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10)\n }\n }\n\n targetLocation += options.offset\n targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal)\n\n const startLocation = container[property] ?? 0\n\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const startTime = performance.now()\n\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = timeElapsed / options.duration\n const location = Math.floor(\n startLocation +\n (targetLocation - startLocation) *\n ease(clamp(progress, 0, 1))\n )\n\n container[property] = location\n\n // Allow for some jitter if target time has elapsed\n if (progress >= 1 && Math.abs(location - container[property]) < 10) {\n return resolve(targetLocation)\n } else if (progress > 2) {\n // The target might not be reachable\n consoleWarn('Scroll target is not reachable')\n return resolve(container[property])\n }\n\n requestAnimationFrame(step)\n }))\n}\n\nexport function useGoTo (_options: GoToOptions = {}) {\n const goToInstance = inject(GoToSymbol)\n const { isRtl } = useRtl()\n\n if (!goToInstance) throw new Error('[Vuetify] Could not find injected goto instance')\n\n const goTo = {\n ...goToInstance,\n // can be set via VLocaleProvider\n rtl: toRef(() => goToInstance.rtl.value || isRtl.value),\n }\n\n async function go (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) {\n return scrollTo(target, mergeDeep(_options, options), false, goTo)\n }\n\n go.horizontal = async (\n target: ComponentPublicInstance | HTMLElement | string | number,\n options?: Partial<GoToOptions>,\n ) => {\n return scrollTo(target, mergeDeep(_options, options), true, goTo)\n }\n\n return go\n}\n\n/**\n * Clamp target value to achieve a smooth scroll animation\n * when the value goes outside the scroll container size\n */\nfunction clampTarget (\n container: HTMLElement,\n value: number,\n rtl: boolean,\n horizontal: boolean,\n) {\n const { scrollWidth, scrollHeight } = container\n const [containerWidth, containerHeight] = container === document.scrollingElement\n ? [window.innerWidth, window.innerHeight]\n : [container.offsetWidth, container.offsetHeight]\n\n let min: number\n let max: number\n\n if (horizontal) {\n if (rtl) {\n min = -(scrollWidth - containerWidth)\n max = 0\n } else {\n min = 0\n max = scrollWidth - containerWidth\n }\n } else {\n min = 0\n max = scrollHeight + -containerHeight\n }\n\n return clamp(value, min, max)\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import type { PropType } from 'vue';
|
2
|
+
export interface RevealProps {
|
3
|
+
reveal: boolean | {
|
4
|
+
duration?: number;
|
5
|
+
};
|
6
|
+
}
|
7
|
+
export declare const makeRevealProps: <Defaults extends {
|
8
|
+
reveal?: unknown;
|
9
|
+
} = {}>(defaults?: Defaults | undefined) => {
|
10
|
+
reveal: unknown extends Defaults["reveal"] ? {
|
11
|
+
type: PropType<boolean | {
|
12
|
+
duration?: number;
|
13
|
+
}>;
|
14
|
+
default: boolean;
|
15
|
+
} : Omit<{
|
16
|
+
type: PropType<boolean | {
|
17
|
+
duration?: number;
|
18
|
+
}>;
|
19
|
+
default: boolean;
|
20
|
+
}, "type" | "default"> & {
|
21
|
+
type: PropType<unknown extends Defaults["reveal"] ? boolean | {
|
22
|
+
duration?: number;
|
23
|
+
} : boolean | {
|
24
|
+
duration?: number;
|
25
|
+
} | Defaults["reveal"]>;
|
26
|
+
default: unknown extends Defaults["reveal"] ? boolean | {
|
27
|
+
duration?: number;
|
28
|
+
} : Defaults["reveal"] | NonNullable<boolean | {
|
29
|
+
duration?: number;
|
30
|
+
}>;
|
31
|
+
};
|
32
|
+
};
|
33
|
+
export declare function useReveal(props: RevealProps): {
|
34
|
+
duration: Readonly<import("vue").Ref<number, number>>;
|
35
|
+
state: import("vue").ShallowRef<string, string>;
|
36
|
+
};
|
@@ -0,0 +1,30 @@
|
|
1
|
+
// Utilities
|
2
|
+
import { onMounted, shallowRef, toRef } from 'vue';
|
3
|
+
import { propsFactory } from "../util/index.js"; // Types
|
4
|
+
// Types
|
5
|
+
// Composables
|
6
|
+
export const makeRevealProps = propsFactory({
|
7
|
+
reveal: {
|
8
|
+
type: [Boolean, Object],
|
9
|
+
default: false
|
10
|
+
}
|
11
|
+
}, 'reveal');
|
12
|
+
export function useReveal(props) {
|
13
|
+
const defaultDuration = 900;
|
14
|
+
const duration = toRef(() => typeof props.reveal === 'object' ? Math.max(0, Number(props.reveal.duration ?? defaultDuration)) : defaultDuration);
|
15
|
+
const state = shallowRef(props.reveal ? 'initial' : 'disabled');
|
16
|
+
onMounted(async () => {
|
17
|
+
if (props.reveal) {
|
18
|
+
state.value = 'initial';
|
19
|
+
await new Promise(resolve => requestAnimationFrame(resolve));
|
20
|
+
state.value = 'pending';
|
21
|
+
await new Promise(resolve => setTimeout(resolve, duration.value));
|
22
|
+
state.value = 'done';
|
23
|
+
}
|
24
|
+
});
|
25
|
+
return {
|
26
|
+
duration,
|
27
|
+
state
|
28
|
+
};
|
29
|
+
}
|
30
|
+
//# sourceMappingURL=reveal.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"reveal.js","names":["onMounted","shallowRef","toRef","propsFactory","makeRevealProps","reveal","type","Boolean","Object","default","useReveal","props","defaultDuration","duration","Math","max","Number","state","value","Promise","resolve","requestAnimationFrame","setTimeout"],"sources":["../../src/composables/reveal.ts"],"sourcesContent":["// Utilities\nimport { onMounted, shallowRef, toRef } from 'vue'\nimport { propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport interface RevealProps {\n reveal: boolean | { duration?: number }\n}\n\n// Composables\nexport const makeRevealProps = propsFactory({\n reveal: {\n type: [Boolean, Object] as PropType<boolean | {\n duration?: number\n }>,\n default: false,\n },\n}, 'reveal')\n\nexport function useReveal (props: RevealProps) {\n const defaultDuration = 900\n const duration = toRef(() => typeof props.reveal === 'object'\n ? Math.max(0, Number(props.reveal.duration ?? defaultDuration))\n : defaultDuration\n )\n\n const state = shallowRef(props.reveal ? 'initial' : 'disabled')\n\n onMounted(async () => {\n if (props.reveal) {\n state.value = 'initial'\n await new Promise(resolve => requestAnimationFrame(resolve))\n state.value = 'pending'\n await new Promise(resolve => setTimeout(resolve, duration.value))\n state.value = 'done'\n }\n })\n\n return {\n duration,\n state,\n }\n}\n"],"mappings":"AAAA;AACA,SAASA,SAAS,EAAEC,UAAU,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACzCC,YAAY,4BAErB;AAGA;AAKA;AACA,OAAO,MAAMC,eAAe,GAAGD,YAAY,CAAC;EAC1CE,MAAM,EAAE;IACNC,IAAI,EAAE,CAACC,OAAO,EAAEC,MAAM,CAEpB;IACFC,OAAO,EAAE;EACX;AACF,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,SAASC,SAASA,CAAEC,KAAkB,EAAE;EAC7C,MAAMC,eAAe,GAAG,GAAG;EAC3B,MAAMC,QAAQ,GAAGX,KAAK,CAAC,MAAM,OAAOS,KAAK,CAACN,MAAM,KAAK,QAAQ,GACzDS,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEC,MAAM,CAACL,KAAK,CAACN,MAAM,CAACQ,QAAQ,IAAID,eAAe,CAAC,CAAC,GAC7DA,eACJ,CAAC;EAED,MAAMK,KAAK,GAAGhB,UAAU,CAACU,KAAK,CAACN,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;EAE/DL,SAAS,CAAC,YAAY;IACpB,IAAIW,KAAK,CAACN,MAAM,EAAE;MAChBY,KAAK,CAACC,KAAK,GAAG,SAAS;MACvB,MAAM,IAAIC,OAAO,CAACC,OAAO,IAAIC,qBAAqB,CAACD,OAAO,CAAC,CAAC;MAC5DH,KAAK,CAACC,KAAK,GAAG,SAAS;MACvB,MAAM,IAAIC,OAAO,CAACC,OAAO,IAAIE,UAAU,CAACF,OAAO,EAAEP,QAAQ,CAACK,KAAK,CAAC,CAAC;MACjED,KAAK,CAACC,KAAK,GAAG,MAAM;IACtB;EACF,CAAC,CAAC;EAEF,OAAO;IACLL,QAAQ;IACRI;EACF,CAAC;AACH","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.9.2-master.2025-07-
|
19
|
+
export const version = "3.9.2-master.2025-07-26";
|
20
20
|
createVuetify.version = version;
|
21
21
|
export { blueprints, components, directives };
|
22
22
|
export * from "./composables/index.js";
|