Archived
2
0
This repository has been archived on 2024-06-24. You can view files and clone it, but cannot push or open issues or pull requests.

47 lines
1.5 KiB
TypeScript
Raw Normal View History

2020-01-22 17:16:40 +00:00
import { PluginObject } from 'vue'
import anime, { StaggerOptions, AnimeTimelineInstance, AnimeParams, AnimeInstance } from 'animejs'
type FunctionBasedParameter = (element: HTMLElement, index: number, length: number) => number
type AnimeTarget = string | object | HTMLElement | SVGElement | NodeList | null
type AnimeFunc = (params: AnimeParams) => AnimeInstance
interface Anime {
version: string
speed: number
running: AnimeInstance[]
easings: { [EasingFunction: string]: (t: number) => any }
remove(targets: AnimeTarget | ReadonlyArray<AnimeTarget>): void
get(targets: AnimeTarget, prop: string): string | number
path(
path: string | HTMLElement | SVGElement | null,
percent?: number,
): (
prop: string,
) => {
el: HTMLElement | SVGElement
property: string
totalLength: number
}
setDashoffset(el: HTMLElement | SVGElement | null): number
bezier(x1: number, y1: number, x2: number, y2: number): (t: number) => number
stagger(value: number | string | ReadonlyArray<number | string>, options?: StaggerOptions): FunctionBasedParameter
set(targets: AnimeTarget, value: { [AnyAnimatedProperty: string]: any }): void
// Timeline
timeline(params?: AnimeParams | ReadonlyArray<AnimeInstance>): AnimeTimelineInstance
random(min: number, max: number): number
}
declare module 'vue/types/vue' {
interface Vue {
$anime: AnimeFunc & Anime
}
}
const plugin: PluginObject<undefined> = {
install(Vue) {
Vue.prototype.$anime = anime
},
}
export default plugin