β¬ οΈ Back to Table of Contents
π useTransition¶
π Analysis Summary¶
| Metric | Count |
|---|---|
| π§ Functions | 15 |
| π¦ Imports | 13 |
| π Variables & Constants | 2 |
| β‘ Async/Await Patterns | 1 |
| π’ Vue Composition API | 3 |
| π Interfaces | 2 |
| π Type Aliases | 3 |
π Table of Contents¶
- Imports
- Variables & Constants
- Async/Await Patterns
- Vue Composition API
- Functions
- Interfaces
- Type Aliases
π οΈ File Location:¶
π packages/core/useTransition/index.ts
π¦ Imports¶
| Name | Source |
|---|---|
ComputedRef |
vue |
MaybeRef |
vue |
MaybeRefOrGetter |
vue |
Ref |
vue |
ConfigurableWindow |
../_configurable |
linear |
@vueuse/shared |
promiseTimeout |
@vueuse/shared |
tryOnScopeDispose |
@vueuse/shared |
computed |
vue |
shallowRef |
vue |
toValue |
vue |
watch |
vue |
defaultWindow |
../_configurable |
Variables & Constants¶
| Name | Type | Kind | Value | Exported |
|---|---|---|---|---|
_TransitionPresets |
{ readonly easeInSine: readonly [0.12... |
const | { easeInSine: [0.12, 0, 0.39, 0], easeOutSine: [0.61, 1, 0.88, 1], easeInOutS... |
β |
TransitionPresets |
Record<"easeInSine" \| "easeOutSine" ... |
const | Object.assign({}, { linear }, _TransitionPresets) as Record<keyof typeof _Tra... |
β |
Async/Await Patterns¶
| Type | Function | Await Expressions | Promise Chains |
|---|---|---|---|
| promise-chain | transition |
none | new Promise(...) |
Vue Composition API¶
| Name | Type | Reactive Variables | Composables |
|---|---|---|---|
watch |
watch | none | none |
watch |
watch | none | none |
computed |
computed | none | none |
Functions¶
transition(source: Ref<T>, from: MaybeRefOrGetter<T>, to: MaybeRefOrGetter<T>, options: TransitionOptions<T>): PromiseLike<void>¶
Transition from one value to another.
Parameters:
sourceany: No descriptionfromany: No descriptiontoany: No descriptionoptionsany: No description
Raw JSDoc
Calls:
toValue (from vue)Date.nownormalizeEasingcreateEasingFunctionoptions.abortresolveeaseinterpolationwindow?.requestAnimationFrametick
Code
export function transition<T>(
source: Ref<T>,
from: MaybeRefOrGetter<T>,
to: MaybeRefOrGetter<T>,
options: TransitionOptions<T> = {},
): PromiseLike<void> {
const {
window = defaultWindow,
} = options
const fromVal = toValue(from)
const toVal = toValue(to)
const duration = toValue(options.duration) ?? 1000
const startedAt = Date.now()
const endAt = Date.now() + duration
const interpolation = typeof options.interpolation === 'function'
? options.interpolation
: defaultInterpolation
const trans = typeof options.easing !== 'undefined'
? normalizeEasing(options.easing)
: normalizeEasing(options.transition)
const ease = typeof trans === 'function'
? trans
: createEasingFunction(trans)
return new Promise<void>((resolve) => {
source.value = fromVal
const tick = () => {
if (options.abort?.()) {
resolve()
return
}
const now = Date.now()
const alpha = ease((now - startedAt) / duration)
source.value = interpolation(fromVal, toVal, alpha) as T
if (now < endAt) {
window?.requestAnimationFrame(tick)
}
else {
source.value = toVal
resolve()
}
}
tick()
})
}
executeTransition(source: Ref<T>, from: MaybeRefOrGetter<T>, to: MaybeRefOrGetter<T>, options: TransitionOptions<T>): PromiseLike<void>¶
Transition from one value to another.
β οΈ DEPRECATED: The
executeTransitionfunction is deprecated, usetransitioninstead.
Parameters:
sourceany: No descriptionfromany: No descriptiontoany: No descriptionoptionsany: No description
Raw JSDoc
Calls:
transition
Code
useTransition(source: [...T], options: UseTransitionOptions<T>): ComputedRef<{ [K in keyof T]: number }>¶
Parameters:
source[...T]optionsUseTransitionOptions<T>
Returns: ComputedRef<{ [K in keyof T]: number }>
Code
createEasingFunction([p0, p1, p2, p3]: CubicBezierPoints): EasingFunction¶
Create an easing function from cubic bezier points.
Calls:
abcgetSlopecalcBeziergetTforX
Code
function createEasingFunction([p0, p1, p2, p3]: CubicBezierPoints): EasingFunction {
const a = (a1: number, a2: number) => 1 - 3 * a2 + 3 * a1
const b = (a1: number, a2: number) => 3 * a2 - 6 * a1
const c = (a1: number) => 3 * a1
const calcBezier = (t: number, a1: number, a2: number) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t
const getSlope = (t: number, a1: number, a2: number) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1)
const getTforX = (x: number) => {
let aGuessT = x
for (let i = 0; i < 4; ++i) {
const currentSlope = getSlope(aGuessT, p0, p2)
if (currentSlope === 0)
return aGuessT
const currentX = calcBezier(aGuessT, p0, p2) - x
aGuessT -= currentX / currentSlope
}
return aGuessT
}
return (x: number) => (p0 === p1 && p2 === p3) ? x : calcBezier(getTforX(x), p1, p3)
}
lerp(a: number, b: number, alpha: number): number¶
Parameters:
anumberbnumberalphanumber
Returns: number
defaultInterpolation(a: T, b: T, t: number): T¶
Parameters:
aTbTtnumber
Returns: T
Calls:
toValue (from vue)lerpArray.isArrayaVal.map
Code
function defaultInterpolation<T>(a: T, b: T, t: number) {
const aVal = toValue(a)
const bVal = toValue(b)
if (typeof aVal === 'number' && typeof bVal === 'number') {
return lerp(aVal, bVal, t) as T
}
if (Array.isArray(aVal) && Array.isArray(bVal)) {
return aVal.map((v, i) => lerp(v, toValue(bVal[i]), t)) as T
}
throw new TypeError('Unknown transition type, specify an interpolation function.')
}
normalizeEasing(easing: MaybeRef<EasingFunction | CubicBezierPoβ¦): any¶
Parameters:
easingMaybeRef<EasingFunction | CubicBezierPoints> | undefined
Returns: any
Calls:
toValue (from vue)
Code
Internal helpers¶
Declared inside another function in this file.
a(a1: number, a2: number): number¶
Parameters:
a1numbera2number
Returns: number
b(a1: number, a2: number): number¶
Parameters:
a1numbera2number
Returns: number
c(a1: number): number¶
Parameters:
a1number
Returns: number
calcBezier(t: number, a1: number, a2: number): number¶
Parameters:
tnumbera1numbera2number
Returns: number
getSlope(t: number, a1: number, a2: number): number¶
Parameters:
tnumbera1numbera2number
Returns: number
getTforX(x: number): number¶
Parameters:
xnumber
Returns: number
Calls:
getSlopecalcBezier
Code
tick(): void¶
Returns: void
Calls:
options.abortresolveDate.noweaseinterpolationwindow?.requestAnimationFrame
Code
sourceVal(): T¶
Returns: T
Calls:
toValue (from vue)Array.isArray(v as any).map
Code
Interfaces¶
TransitionOptions<T>¶
Interface Code
export interface TransitionOptions<T> extends ConfigurableWindow {
/**
* Manually abort a transition
*/
abort?: () => any
/**
* Transition duration in milliseconds
*/
duration?: MaybeRef<number>
/**
* Easing function or cubic bezier points to calculate transition progress
*/
easing?: MaybeRef<EasingFunction | CubicBezierPoints>
/**
* Custom interpolation function
*/
interpolation?: InterpolationFunction<T>
/**
* Easing function or cubic bezier points to calculate transition progress
* @deprecated The `transition` option is deprecated, use `easing` instead.
*/
transition?: MaybeRef<EasingFunction | CubicBezierPoints>
}
Properties¶
| Name | Type | Optional | Description |
|---|---|---|---|
abort |
() => any |
β | not shown |
duration |
MaybeRef<number> |
β | not shown |
easing |
MaybeRef<EasingFunction \| CubicBezierPoints> |
β | not shown |
interpolation |
InterpolationFunction<T> |
β | not shown |
transition |
MaybeRef<EasingFunction \| CubicBezierPoints> |
β | not shown |
UseTransitionOptions<T>¶
Interface Code
export interface UseTransitionOptions<T> extends TransitionOptions<T> {
/**
* Milliseconds to wait before starting transition
*/
delay?: MaybeRef<number>
/**
* Disables the transition
*/
disabled?: MaybeRef<boolean>
/**
* Callback to execute after transition finishes
*/
onFinished?: () => void
/**
* Callback to execute after transition starts
*/
onStarted?: () => void
}
Properties¶
| Name | Type | Optional | Description |
|---|---|---|---|
delay |
MaybeRef<number> |
β | not shown |
disabled |
MaybeRef<boolean> |
β | not shown |
onFinished |
() => void |
β | not shown |
onStarted |
() => void |
β | not shown |
Type Aliases¶
CubicBezierPoints¶
/* * Cubic bezier points /
EasingFunction¶
/* * Easing function /
InterpolationFunction<T>¶
/* * Interpolation function /
Generated by Syntax Scribe