-
Notifications
You must be signed in to change notification settings - Fork 782
/
plugin.ts
38 lines (29 loc) · 909 Bytes
/
plugin.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import type { Plugin } from '@interactjs/core/scope'
import snappers from '@interactjs/snappers/plugin'
/* eslint-disable import/no-duplicates -- for typescript module augmentations */
import './all'
import './base'
import all from './all'
import base from './base'
/* eslint-enable import/no-duplicates */
declare module '@interactjs/core/InteractStatic' {
export interface InteractStatic {
modifiers: typeof all
}
}
const modifiers: Plugin = {
id: 'modifiers',
install(scope) {
const { interactStatic: interact } = scope
scope.usePlugin(base)
scope.usePlugin(snappers)
interact.modifiers = all
// for backwrads compatibility
for (const type in all) {
const { _defaults, _methods } = all[type as keyof typeof all]
;(_defaults as any)._methods = _methods
;(scope.defaults.perAction as any)[type] = _defaults
}
},
}
export default modifiers