Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
m1k1o
GitHub Repository: m1k1o/neko
Path: blob/master/client/src/plugins/anime.ts
1301 views
1
import { PluginObject } from 'vue'
2
import anime, { StaggerOptions, AnimeTimelineInstance, AnimeParams, AnimeInstance } from 'animejs'
3
4
type FunctionBasedParameter = (element: HTMLElement, index: number, length: number) => number
5
type AnimeTarget = string | object | HTMLElement | SVGElement | NodeList | null
6
type AnimeFunc = (params: AnimeParams) => AnimeInstance
7
8
interface Anime {
9
version: string
10
speed: number
11
running: AnimeInstance[]
12
easings: { [EasingFunction: string]: (t: number) => any }
13
remove(targets: AnimeTarget | ReadonlyArray<AnimeTarget>): void
14
get(targets: AnimeTarget, prop: string): string | number
15
path(
16
path: string | HTMLElement | SVGElement | null,
17
percent?: number,
18
): (prop: string) => {
19
el: HTMLElement | SVGElement
20
property: string
21
totalLength: number
22
}
23
setDashoffset(el: HTMLElement | SVGElement | null): number
24
bezier(x1: number, y1: number, x2: number, y2: number): (t: number) => number
25
stagger(value: number | string | ReadonlyArray<number | string>, options?: StaggerOptions): FunctionBasedParameter
26
set(targets: AnimeTarget, value: { [AnyAnimatedProperty: string]: any }): void
27
// Timeline
28
timeline(params?: AnimeParams | ReadonlyArray<AnimeInstance>): AnimeTimelineInstance
29
random(min: number, max: number): number
30
}
31
32
declare module 'vue/types/vue' {
33
interface Vue {
34
$anime: AnimeFunc & Anime
35
}
36
}
37
38
const plugin: PluginObject<undefined> = {
39
install(Vue) {
40
Vue.prototype.$anime = anime
41
},
42
}
43
44
export default plugin
45
46