1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | declare namespace interact {
|
7 | interface Position {
|
8 | x: number
|
9 | y: number
|
10 | }
|
11 |
|
12 | interface SnapPosition {
|
13 | x: number
|
14 | y: number
|
15 | range?: number
|
16 | }
|
17 |
|
18 | interface Rect {
|
19 | top: number
|
20 | left: number
|
21 | bottom: number
|
22 | right: number
|
23 | }
|
24 |
|
25 | interface Rect2 {
|
26 | x: number
|
27 | y: number
|
28 | width: number
|
29 | height: number
|
30 | }
|
31 |
|
32 | interface SnapFunction {
|
33 | ( x: number, y: number ) : SnapPosition
|
34 | }
|
35 |
|
36 | type SnapTarget = SnapPosition | SnapFunction
|
37 | type SnapOptions = {
|
38 | targets?: SnapTarget[]
|
39 |
|
40 | range?: number
|
41 |
|
42 | relativePoints?: Position[]
|
43 |
|
44 | offset?: Position | 'startCoords'
|
45 | }
|
46 |
|
47 | interface InertiaOption {
|
48 | resistance?: number
|
49 | minSpeed?: number
|
50 | endSpeed?: number
|
51 | allowResume?: boolean
|
52 | zeroResumeDelta?: boolean
|
53 | smoothEndDuration?: number
|
54 | }
|
55 | type InertiaOptions = InertiaOption | boolean
|
56 |
|
57 | interface AutoScrollOption {
|
58 | container?: DOMElement
|
59 | margin?: number
|
60 | distance?: number
|
61 | interval?: number
|
62 | }
|
63 | type AutoScrollOptions = AutoScrollOption | boolean
|
64 |
|
65 | type CSSSelector = string
|
66 | type DOMElement = any
|
67 |
|
68 | type RestrictOption = {
|
69 |
|
70 | restriction?: Rect | Rect2 | CSSSelector | DOMElement | 'self' | 'parent'
|
71 |
|
72 | elementRect?: Rect
|
73 |
|
74 | endOnly?: boolean
|
75 | }
|
76 |
|
77 | interface EdgeOptions {
|
78 | top?: boolean | CSSSelector | DOMElement
|
79 | left?: boolean | CSSSelector | DOMElement
|
80 | bottom?: boolean | CSSSelector | DOMElement
|
81 | right?: boolean | CSSSelector | DOMElement
|
82 | }
|
83 |
|
84 | interface DraggableOptions {
|
85 | max?: number
|
86 | maxPerElement?: number
|
87 | manualStart?: boolean
|
88 | snap?: SnapOptions
|
89 | restrict?: RestrictOption;
|
90 | inertia?: InertiaOptions
|
91 | autoScroll?: AutoScrollOptions
|
92 | axis?: 'x' | 'y'
|
93 | onstart?: Listener
|
94 | onmove?: Listener
|
95 | oninertiastart?: Listener
|
96 | onend?: Listener
|
97 | }
|
98 |
|
99 | interface ResizableOptions {
|
100 | max?: number
|
101 | maxPerElement?: number
|
102 | manualStart?: boolean
|
103 | snap?: SnapOptions
|
104 | restrict?: RestrictOption;
|
105 | inertia?: InertiaOptions
|
106 | autoScroll?: AutoScrollOptions
|
107 |
|
108 | square?: boolean,
|
109 | edges?: EdgeOptions
|
110 |
|
111 | axis?: 'x' | 'y'
|
112 |
|
113 | invert?: 'none' | 'negate' | 'reposition'
|
114 | squareResize?: boolean
|
115 | onstart?: Listener
|
116 | onmove?: Listener
|
117 | oninertiastart?: Listener
|
118 | onend?: Listener
|
119 | }
|
120 |
|
121 | interface GesturableOptions {
|
122 | max?: Number,
|
123 | maxPerElement?: Number,
|
124 | manualStart?: Boolean,
|
125 | restrict?: RestrictOption
|
126 | onstart?: Listener
|
127 | onmove?: Listener
|
128 | onend?: Listener
|
129 | }
|
130 |
|
131 | interface DropFunctionChecker {
|
132 | ( dragEvent: any
|
133 | , event: any
|
134 | , dropped: boolean
|
135 | , dropzone: Interactable
|
136 | , dropElement: DOMElement
|
137 | , draggable: Interactable
|
138 | , draggableElement: DOMElement
|
139 | ) : boolean
|
140 | }
|
141 |
|
142 | interface DropZoneOptions {
|
143 | accept?: CSSSelector
|
144 |
|
145 | overlap?: 'pointer' | 'center' | number
|
146 | checker?: DropFunctionChecker
|
147 |
|
148 | ondropactivate?: Listener
|
149 | ondropdeactivate?: Listener
|
150 | ondragenter?: Listener
|
151 | ondragleave?: Listener
|
152 | ondropmove?: Listener
|
153 | ondrop?: Listener
|
154 | }
|
155 |
|
156 | interface InteractEvent {
|
157 |
|
158 |
|
159 |
|
160 | type: string
|
161 | target: DOMElement
|
162 | relatedTarget: DOMElement
|
163 | currentTarget: DOMElement
|
164 | preventDefault ()
|
165 | pageX: number
|
166 | pageY: number
|
167 | clientX: number
|
168 | clientY: number
|
169 | screenX: number
|
170 | screenY: number
|
171 | button: number
|
172 | buttons: number
|
173 | ctrlKey: boolean
|
174 | shiftKey: boolean
|
175 | altKey: boolean
|
176 | metaKey: boolean
|
177 |
|
178 | interactable: Interactable
|
179 | interaction: any
|
180 | x0: number
|
181 | y0: number
|
182 | clientX0: number
|
183 | clientY0: number
|
184 | dx: number
|
185 | dy: number
|
186 | velocityX: number
|
187 | velocityY: number
|
188 | speed: number
|
189 | timeStamp: any
|
190 |
|
191 | dragEnter?: DOMElement
|
192 | dragLeave?: DOMElement
|
193 |
|
194 | axes: Position
|
195 |
|
196 | distance: number
|
197 | angle: number
|
198 | da: number
|
199 | scale: number
|
200 | ds: number
|
201 | box: Rect
|
202 | }
|
203 |
|
204 | interface Listener {
|
205 | ( e: InteractEvent ): void
|
206 | }
|
207 |
|
208 | type OnEventName =
|
209 | 'dragstart'
|
210 | | 'dragmove'
|
211 | | 'draginertiastart'
|
212 | | 'dragend'
|
213 | | 'resizestart'
|
214 | | 'resizemove'
|
215 | | 'resizeinertiastart'
|
216 | | 'resizeend'
|
217 | | 'gesturestart'
|
218 | | 'gesturemove'
|
219 | | 'gestureend'
|
220 |
|
221 | | 'dropactivate'
|
222 | | 'dropdeactivate'
|
223 | | 'dragenter'
|
224 | | 'dragleave'
|
225 | | 'dropmove'
|
226 | | 'drop'
|
227 |
|
228 | | 'down'
|
229 | | 'move'
|
230 | | 'up'
|
231 | | 'cancel'
|
232 | | 'tap'
|
233 | | 'doubletap'
|
234 | | 'hold'
|
235 |
|
236 | interface OnEventFunctions {
|
237 | dragstart?: Listener
|
238 | dragmove?: Listener
|
239 | draginertiastart?: Listener
|
240 | dragend?: Listener
|
241 | resizestart?: Listener
|
242 | resizemove?: Listener
|
243 | resizeinertiastart?: Listener
|
244 | resizeend?: Listener
|
245 | gesturestart?: Listener
|
246 | gesturemove?: Listener
|
247 | gestureend?: Listener
|
248 |
|
249 | dropactivate?: Listener
|
250 | dropdeactivate?: Listener
|
251 | dragenter?: Listener
|
252 | dragleave?: Listener
|
253 | dropmove?: Listener
|
254 | drop?: Listener
|
255 |
|
256 | down?: Listener
|
257 | move?: Listener
|
258 | up?: Listener
|
259 | cancel?: Listener
|
260 | tap?: Listener
|
261 | doubletap?: Listener
|
262 | hold?: Listener
|
263 | }
|
264 |
|
265 | type OnEvent = OnEventName | OnEventName[]
|
266 |
|
267 | interface Interactable {
|
268 | draggable ( opt: DraggableOptions ) : Interactable
|
269 | resizable ( opt: ResizableOptions ) : Interactable
|
270 | gesturable ( opt: GesturableOptions ) : Interactable
|
271 | dropzone ( opt: DropZoneOptions ) : Interactable
|
272 | on ( opt: OnEvent, listener?: Listener ) : Interactable
|
273 | on ( opt: OnEventFunctions ) : Interactable
|
274 | styleCursor ( yesno: boolean ) : Interactable
|
275 | createSnapGrid ( opt: { x: number, y: number, range: number, offset: Position } ) : SnapFunction
|
276 | test ( x : SnapFunction )
|
277 | }
|
278 |
|
279 | interface InteractOptions {
|
280 | context: DOMElement
|
281 | }
|
282 |
|
283 | interface InteractStatic {
|
284 | ( el: DOMElement | CSSSelector, opts?: InteractOptions ): Interactable
|
285 | on ( opt: OnEvent | OnEventFunctions, listener?: Listener ) : Interactable
|
286 | supportsTouch () : boolean
|
287 | supportsPointerEvent () : boolean
|
288 | stop ( event: any ) : InteractStatic
|
289 | pointerMoveTolerance ( tol?: number ) : number | InteractStatic
|
290 |
|
291 | isSet ( any ) : any
|
292 | off ( any ) : any
|
293 | debug ( any ) : any
|
294 | addDocument ( any ) : any
|
295 | removeDocument ( any ) : any
|
296 | }
|
297 | }
|
298 |
|
299 | declare var interact:interact.InteractStatic;
|
300 | export as namespace interact;
|
301 | export = interact;
|