@nativescript-community/gesturehandler 2.0.19 → 2.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,633 +0,0 @@
1
- import { Application, Utils, View } from '@nativescript/core';
2
- import { GestureTypes } from '@nativescript/core/ui/gestures';
3
- import { Page } from '@nativescript/core/ui/page';
4
- import { BaseGestureRootView, BaseNative, GestureHandlerStateEvent, GestureHandlerTouchEvent, GestureState, HandlerType, ManagerBase, ROOT_GESTURE_HANDLER_TAG, ViewDisposeEvent, ViewInitEvent, applyMixins, install as installBase, nativeProperty } from './gesturehandler.common';
5
- import { observe as gestureObserve } from './gestures_override';
6
- export { GestureState, GestureHandlerStateEvent, GestureHandlerTouchEvent, HandlerType, ViewInitEvent, ViewDisposeEvent };
7
- let PageLayout;
8
- class PageGestureExtended extends Page {
9
- initNativeView() {
10
- this.nativeViewProtected.initialize();
11
- }
12
- disposeNativeView() {
13
- this.nativeViewProtected.tearDown();
14
- }
15
- get registry() {
16
- return this.nativeViewProtected && this.nativeViewProtected.registry();
17
- }
18
- }
19
- let installed = false;
20
- let installedOverrides = false;
21
- export class GestureRootView extends BaseGestureRootView {
22
- createNativeView() {
23
- if (!PageLayout) {
24
- PageLayout = com.nativescript.gesturehandler.PageLayout;
25
- }
26
- const layout = new PageLayout(this._context, ROOT_GESTURE_HANDLER_TAG);
27
- return layout;
28
- }
29
- initNativeView() {
30
- super.initNativeView();
31
- this.nativeView.initialize();
32
- }
33
- disposeNativeView() {
34
- super.disposeNativeView();
35
- this.nativeView.tearDown();
36
- }
37
- get registry() {
38
- return this.nativeView && this.nativeView.registry();
39
- }
40
- }
41
- export function install(overrideNGestures = false) {
42
- if (!installed) {
43
- installed = true;
44
- installBase(overrideNGestures);
45
- const NSPage = require('@nativescript/core/ui/page').Page;
46
- NSPage.prototype.createNativeView = function () {
47
- if (!PageLayout) {
48
- PageLayout = com.nativescript.gesturehandler.PageLayout;
49
- }
50
- const layout = new PageLayout(this._context, ROOT_GESTURE_HANDLER_TAG);
51
- //@ts-ignore
52
- if (layout.addRowsFromJSON) {
53
- //@ts-ignore
54
- layout.addRowsFromJSON(JSON.stringify([
55
- { value: 1, type: 0 /* org.nativescript.widgets.GridUnitType.auto */ },
56
- { value: 1, type: 2 /* org.nativescript.widgets.GridUnitType.star */ }
57
- ]));
58
- }
59
- else {
60
- layout.addRow(new org.nativescript.widgets.ItemSpec(1, org.nativescript.widgets.GridUnitType.auto));
61
- layout.addRow(new org.nativescript.widgets.ItemSpec(1, org.nativescript.widgets.GridUnitType.star));
62
- }
63
- // this.gestureRegistry = layout.registry();
64
- return layout;
65
- };
66
- applyMixins(NSPage, [PageGestureExtended]);
67
- }
68
- if (overrideNGestures === true && !installedOverrides) {
69
- installedOverrides = true;
70
- const NSView = require('@nativescript/core/ui/core/view').View;
71
- const NSButtonBase = require('@nativescript/core/ui/button').ButtonBase;
72
- const NSButton = require('@nativescript/core/ui/button').Button;
73
- delete NSButtonBase.tapEvent;
74
- delete NSButton.tapEvent;
75
- // we need to disable on click listener
76
- NSButton.prototype.initNativeView = function () {
77
- NSButtonBase.prototype.initNativeView.call(this);
78
- };
79
- NSButton.prototype.disposeNativeView = function () {
80
- NSButtonBase.prototype.disposeNativeView.call(this);
81
- };
82
- NSView.prototype._observe = function (type, callback, thisArg) {
83
- if (!this._gestureObservers[type]) {
84
- this._gestureObservers[type] = [];
85
- }
86
- this._gestureObservers[type].push(gestureObserve(this, type, callback, thisArg));
87
- if (this.isLoaded && !this.touchListenerIsSet) {
88
- this.setOnTouchListener();
89
- }
90
- };
91
- // NSView.prototype.setOnTouchListener = function () {
92
- // if (!this.nativeViewProtected || !this.getGestureObservers(GestureTypes.touch)) {
93
- // return;
94
- // }
95
- // // do not set noop listener that handles the event (disabled listener) if IsUserInteractionEnabled is
96
- // // false as we might need the ability for the event to pass through to a parent view
97
- // this.touchListener =
98
- // this.touchListener ||
99
- // new android.view.View.OnTouchListener({
100
- // onTouch: (view: android.view.View, event: android.view.MotionEvent) => {
101
- // this.handleGestureTouch(event);
102
- // const nativeView = this.nativeViewProtected;
103
- // if (!nativeView || !nativeView.onTouchEvent) {
104
- // return false;
105
- // }
106
- // return nativeView.onTouchEvent(event);
107
- // },
108
- // });
109
- // this.nativeViewProtected.setOnTouchListener(this.touchListener);
110
- // this.touchListenerIsSet = true;
111
- // console.log('setOnTouchListener', this);
112
- // if (this.nativeViewProtected.setClickable) {
113
- // this.nativeViewProtected.setClickable(this.isUserInteractionEnabled);
114
- // }
115
- // };
116
- }
117
- }
118
- const KEY_HIT_SLOP_LEFT = 'left';
119
- const KEY_HIT_SLOP_TOP = 'top';
120
- const KEY_HIT_SLOP_RIGHT = 'right';
121
- const KEY_HIT_SLOP_BOTTOM = 'bottom';
122
- const KEY_HIT_SLOP_VERTICAL = 'vertical';
123
- const KEY_HIT_SLOP_HORIZONTAL = 'horizontal';
124
- const KEY_HIT_SLOP_WIDTH = 'width';
125
- const KEY_HIT_SLOP_HEIGHT = 'height';
126
- export class Handler extends BaseNative {
127
- constructor() {
128
- super(...arguments);
129
- this.nativeGetterKey = 'nativeView';
130
- this.tag = 0;
131
- }
132
- getExtraData(handler) {
133
- const numberOfPointers = handler.getNumberOfPointers();
134
- const positions = [];
135
- for (let index = 0; index < numberOfPointers; index++) {
136
- positions.push(Utils.layout.toDeviceIndependentPixels(handler.getXAtIndex(index)));
137
- positions.push(Utils.layout.toDeviceIndependentPixels(handler.getYAtIndex(index)));
138
- }
139
- return {
140
- // x: Utils.layout.toDeviceIndependentPixels(handler.getX()),
141
- // y: Utils.layout.toDeviceIndependentPixels(handler.getY()),
142
- positions,
143
- numberOfPointers
144
- };
145
- }
146
- initNativeView(native, options) {
147
- super.initNativeView(native, options);
148
- this.native.setTag(this.tag);
149
- this.touchListener = new com.swmansion.gesturehandler.OnTouchEventListener({
150
- shouldStartGesture: this.handleShouldStartGesture.bind(this),
151
- onTouchEvent: this.onTouchEvent.bind(this),
152
- onStateChange: this.onStateChange.bind(this)
153
- });
154
- native.setOnTouchEventListener(this.touchListener);
155
- this.manager?.get()?.configureInteractions(this, options);
156
- }
157
- disposeNativeView() {
158
- this.native.setInteractionController(null);
159
- this.native.setOnTouchEventListener(null);
160
- this.touchListener = null;
161
- super.disposeNativeView();
162
- }
163
- handleShouldStartGesture(handler, event) {
164
- if (this.shouldStartGesture) {
165
- return this.shouldStartGesture(this.getExtraData(handler));
166
- }
167
- return true;
168
- }
169
- onTouchEvent(handler, event) {
170
- const view = handler.getView();
171
- this.notify({
172
- eventName: GestureHandlerTouchEvent,
173
- object: this,
174
- data: {
175
- state: handler.getState(),
176
- android: view,
177
- extraData: this.getExtraData(handler),
178
- view: view.nsView ? view.nsView?.get() : null
179
- }
180
- });
181
- }
182
- onStateChange(handler, state, prevState) {
183
- const view = handler.getView();
184
- this.notify({
185
- eventName: GestureHandlerStateEvent,
186
- object: this,
187
- data: {
188
- state,
189
- prevState,
190
- android: view,
191
- extraData: this.getExtraData(handler),
192
- view: view.nsView ? view.nsView?.get() : null
193
- }
194
- });
195
- }
196
- setTag(tag) {
197
- this.tag = tag;
198
- if (this.native) {
199
- this.native.setTag(tag);
200
- }
201
- }
202
- getTag() {
203
- return this.tag;
204
- // return this.getNative().getTag();
205
- }
206
- getView() {
207
- return this.getNative().getView();
208
- }
209
- cancel() {
210
- return this.getNative().cancel();
211
- }
212
- attachToView(view) {
213
- if (view === this.attachedView) {
214
- return;
215
- }
216
- if (this.attachedView) {
217
- this.detachFromView(this.attachedView);
218
- }
219
- this.attachedView = view;
220
- this.manager?.get()?.attachGestureHandler(this, view);
221
- }
222
- detachFromView(view) {
223
- if ((view && view !== this.attachedView) || !this.attachedView) {
224
- return;
225
- }
226
- if (!this.attachedView) {
227
- return;
228
- }
229
- this.manager?.get()?.detachGestureHandler(this, this.attachedView);
230
- this.attachedView = null;
231
- }
232
- }
233
- __decorate([
234
- nativeProperty({
235
- nativeSetterName: 'setHitSlop',
236
- nativegetterName: 'getHitSlop',
237
- converter: {
238
- toNative(value) {
239
- const HIT_SLOP_NONE = GestureHandler.HIT_SLOP_NONE;
240
- if (typeof value === 'number') {
241
- const hitSlop = Utils.layout.toDevicePixels(value);
242
- return [hitSlop, hitSlop, hitSlop, hitSlop, HIT_SLOP_NONE, HIT_SLOP_NONE];
243
- }
244
- else {
245
- let left = HIT_SLOP_NONE, top = HIT_SLOP_NONE, right = HIT_SLOP_NONE, bottom = HIT_SLOP_NONE;
246
- let width = HIT_SLOP_NONE, height = HIT_SLOP_NONE;
247
- if (value.hasOwnProperty(KEY_HIT_SLOP_HORIZONTAL)) {
248
- const horizontalPad = Utils.layout.toDevicePixels(value[KEY_HIT_SLOP_HORIZONTAL]);
249
- left = right = horizontalPad;
250
- }
251
- if (value.hasOwnProperty(KEY_HIT_SLOP_VERTICAL)) {
252
- const verticalPad = Utils.layout.toDevicePixels(value[KEY_HIT_SLOP_VERTICAL]);
253
- top = bottom = verticalPad;
254
- }
255
- if (value.hasOwnProperty(KEY_HIT_SLOP_LEFT)) {
256
- left = Utils.layout.toDevicePixels(value[KEY_HIT_SLOP_LEFT]);
257
- }
258
- if (value.hasOwnProperty(KEY_HIT_SLOP_TOP)) {
259
- top = Utils.layout.toDevicePixels(value[KEY_HIT_SLOP_TOP]);
260
- }
261
- if (value.hasKey(KEY_HIT_SLOP_RIGHT)) {
262
- right = Utils.layout.toDevicePixels(value[KEY_HIT_SLOP_RIGHT]);
263
- }
264
- if (value.hasOwnProperty(KEY_HIT_SLOP_BOTTOM)) {
265
- bottom = Utils.layout.toDevicePixels(value[KEY_HIT_SLOP_BOTTOM]);
266
- }
267
- if (value.hasOwnProperty(KEY_HIT_SLOP_WIDTH)) {
268
- width = Utils.layout.toDevicePixels(value[KEY_HIT_SLOP_WIDTH]);
269
- }
270
- if (value.hasOwnProperty(KEY_HIT_SLOP_HEIGHT)) {
271
- height = Utils.layout.toDevicePixels(value[KEY_HIT_SLOP_HEIGHT]);
272
- }
273
- return [left, top, right, bottom, width, height];
274
- }
275
- }
276
- }
277
- })
278
- ], Handler.prototype, "hitSlop", void 0);
279
- __decorate([
280
- nativeProperty
281
- ], Handler.prototype, "enabled", void 0);
282
- __decorate([
283
- nativeProperty
284
- ], Handler.prototype, "shouldCancelWhenOutside", void 0);
285
- export class TapGestureHandler extends Handler {
286
- createNative(options) {
287
- return new com.swmansion.gesturehandler.TapGestureHandler();
288
- }
289
- getExtraData(handler) {
290
- return Object.assign(super.getExtraData(handler), {
291
- x: Utils.layout.toDeviceIndependentPixels(handler.getLastRelativePositionX()),
292
- y: Utils.layout.toDeviceIndependentPixels(handler.getLastRelativePositionY()),
293
- absoluteX: Utils.layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionX()),
294
- absoluteY: Utils.layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionY())
295
- });
296
- }
297
- }
298
- __decorate([
299
- nativeProperty
300
- ], TapGestureHandler.prototype, "numberOfTaps", void 0);
301
- __decorate([
302
- nativeProperty
303
- ], TapGestureHandler.prototype, "maxDurationMs", void 0);
304
- __decorate([
305
- nativeProperty
306
- ], TapGestureHandler.prototype, "maxDelayMs", void 0);
307
- __decorate([
308
- nativeProperty({ nativeSetterName: 'setMaxDx' })
309
- ], TapGestureHandler.prototype, "maxDeltaX", void 0);
310
- __decorate([
311
- nativeProperty({ nativeSetterName: 'setMaxDy' })
312
- ], TapGestureHandler.prototype, "maxDeltaY", void 0);
313
- __decorate([
314
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
315
- ], TapGestureHandler.prototype, "maxDist", void 0);
316
- __decorate([
317
- nativeProperty({ nativeSetterName: 'setMinNumberOfPointers' })
318
- ], TapGestureHandler.prototype, "minPointers", void 0);
319
- export class PanGestureHandler extends Handler {
320
- createNative(options) {
321
- const context = Utils.android.getApplicationContext();
322
- return new com.swmansion.gesturehandler.PanGestureHandler(context);
323
- }
324
- getExtraData(handler) {
325
- return Object.assign(super.getExtraData(handler), {
326
- x: Utils.layout.toDeviceIndependentPixels(handler.getLastRelativePositionX()),
327
- y: Utils.layout.toDeviceIndependentPixels(handler.getLastRelativePositionY()),
328
- absoluteX: Utils.layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionX()),
329
- absoluteY: Utils.layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionY()),
330
- translationX: Utils.layout.toDeviceIndependentPixels(handler.getTranslationX()),
331
- translationY: Utils.layout.toDeviceIndependentPixels(handler.getTranslationY()),
332
- velocityX: Utils.layout.toDeviceIndependentPixels(handler.getVelocityX()),
333
- velocityY: Utils.layout.toDeviceIndependentPixels(handler.getVelocityY())
334
- });
335
- }
336
- }
337
- __decorate([
338
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
339
- ], PanGestureHandler.prototype, "minDist", void 0);
340
- __decorate([
341
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
342
- ], PanGestureHandler.prototype, "activeOffsetXStart", void 0);
343
- __decorate([
344
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
345
- ], PanGestureHandler.prototype, "activeOffsetXEnd", void 0);
346
- __decorate([
347
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
348
- ], PanGestureHandler.prototype, "failOffsetXStart", void 0);
349
- __decorate([
350
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
351
- ], PanGestureHandler.prototype, "failOffsetXEnd", void 0);
352
- __decorate([
353
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
354
- ], PanGestureHandler.prototype, "activeOffsetYStart", void 0);
355
- __decorate([
356
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
357
- ], PanGestureHandler.prototype, "activeOffsetYEnd", void 0);
358
- __decorate([
359
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
360
- ], PanGestureHandler.prototype, "failOffsetYStart", void 0);
361
- __decorate([
362
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
363
- ], PanGestureHandler.prototype, "failOffsetYEnd", void 0);
364
- __decorate([
365
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
366
- ], PanGestureHandler.prototype, "minVelocity", void 0);
367
- __decorate([
368
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
369
- ], PanGestureHandler.prototype, "minVelocityX", void 0);
370
- __decorate([
371
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
372
- ], PanGestureHandler.prototype, "minVelocityY", void 0);
373
- __decorate([
374
- nativeProperty
375
- ], PanGestureHandler.prototype, "minPointers", void 0);
376
- __decorate([
377
- nativeProperty
378
- ], PanGestureHandler.prototype, "maxPointers", void 0);
379
- __decorate([
380
- nativeProperty({ nativeSetterName: 'setAverageTouches' })
381
- ], PanGestureHandler.prototype, "avgTouches", void 0);
382
- __decorate([
383
- nativeProperty
384
- ], PanGestureHandler.prototype, "numberOfPointers", void 0);
385
- export class PinchGestureHandler extends Handler {
386
- createNative(options) {
387
- return new com.swmansion.gesturehandler.PinchGestureHandler();
388
- }
389
- getExtraData(handler) {
390
- return Object.assign(super.getExtraData(handler), {
391
- x: Utils.layout.toDeviceIndependentPixels(handler.getLastRelativePositionX()),
392
- y: Utils.layout.toDeviceIndependentPixels(handler.getLastRelativePositionY()),
393
- absoluteX: Utils.layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionX()),
394
- absoluteY: Utils.layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionY()),
395
- scale: handler.getScale(),
396
- focalX: Utils.layout.toDeviceIndependentPixels(handler.getFocalPointX()),
397
- focalY: Utils.layout.toDeviceIndependentPixels(handler.getFocalPointY()),
398
- velocity: handler.getVelocity()
399
- });
400
- }
401
- }
402
- __decorate([
403
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
404
- ], PinchGestureHandler.prototype, "minSpan", void 0);
405
- const GestureHandler = com.swmansion.gesturehandler.GestureHandler;
406
- export var FlingDirection;
407
- (function (FlingDirection) {
408
- FlingDirection[FlingDirection["DIRECTION_LEFT"] = GestureHandler.DIRECTION_LEFT] = "DIRECTION_LEFT";
409
- FlingDirection[FlingDirection["DIRECTION_UP"] = GestureHandler.DIRECTION_UP] = "DIRECTION_UP";
410
- FlingDirection[FlingDirection["DIRECTION_DOWN"] = GestureHandler.DIRECTION_DOWN] = "DIRECTION_DOWN";
411
- FlingDirection[FlingDirection["DIRECTION_RIGHT"] = GestureHandler.DIRECTION_RIGHT] = "DIRECTION_RIGHT";
412
- })(FlingDirection || (FlingDirection = {}));
413
- function directionToString(direction) {
414
- switch (direction) {
415
- case GestureHandler.DIRECTION_RIGHT:
416
- return 'right';
417
- case GestureHandler.DIRECTION_UP:
418
- return 'up';
419
- case GestureHandler.DIRECTION_DOWN:
420
- return 'down';
421
- default:
422
- return 'left';
423
- }
424
- }
425
- function directionFromString(direction) {
426
- switch (direction) {
427
- case 'right':
428
- return GestureHandler.DIRECTION_RIGHT;
429
- case 'up':
430
- return GestureHandler.DIRECTION_UP;
431
- case 'down':
432
- return GestureHandler.DIRECTION_DOWN;
433
- default:
434
- return GestureHandler.DIRECTION_LEFT;
435
- }
436
- }
437
- export class FlingGestureHandler extends Handler {
438
- createNative(options) {
439
- return new com.swmansion.gesturehandler.FlingGestureHandler();
440
- }
441
- getExtraData(handler) {
442
- return Object.assign(super.getExtraData(handler), {
443
- direction: directionToString(handler.getRecognizedDirection())
444
- });
445
- }
446
- }
447
- __decorate([
448
- nativeProperty
449
- ], FlingGestureHandler.prototype, "numberOfPointers", void 0);
450
- __decorate([
451
- nativeProperty
452
- ], FlingGestureHandler.prototype, "direction", void 0);
453
- export class LongPressGestureHandler extends Handler {
454
- createNative(options) {
455
- const context = Utils.android.getApplicationContext();
456
- return new com.swmansion.gesturehandler.LongPressGestureHandler(context);
457
- }
458
- getExtraData(handler) {
459
- return Object.assign(super.getExtraData(handler), {
460
- x: Utils.layout.toDeviceIndependentPixels(handler.getLastRelativePositionX()),
461
- y: Utils.layout.toDeviceIndependentPixels(handler.getLastRelativePositionY()),
462
- absoluteX: Utils.layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionX()),
463
- absoluteY: Utils.layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionY())
464
- });
465
- }
466
- }
467
- __decorate([
468
- nativeProperty
469
- ], LongPressGestureHandler.prototype, "minDurationMs", void 0);
470
- __decorate([
471
- nativeProperty({ converter: { fromNative: Utils.layout.toDevicePixels } })
472
- ], LongPressGestureHandler.prototype, "maxDist", void 0);
473
- export class RotationGestureHandler extends Handler {
474
- createNative(options) {
475
- return new com.swmansion.gesturehandler.RotationGestureHandler();
476
- }
477
- getExtraData(handler) {
478
- return Object.assign(super.getExtraData(handler), {
479
- x: Utils.layout.toDeviceIndependentPixels(handler.getLastRelativePositionX()),
480
- y: Utils.layout.toDeviceIndependentPixels(handler.getLastRelativePositionY()),
481
- absoluteX: Utils.layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionX()),
482
- absoluteY: Utils.layout.toDeviceIndependentPixels(handler.getLastAbsolutePositionY()),
483
- rotation: handler.getRotation(),
484
- anchorX: Utils.layout.toDeviceIndependentPixels(handler.getAnchorX()),
485
- anchorY: Utils.layout.toDeviceIndependentPixels(handler.getAnchorY()),
486
- velocity: handler.getVelocity()
487
- });
488
- }
489
- }
490
- export class NativeViewGestureHandler extends Handler {
491
- createNative(options) {
492
- return new com.swmansion.gesturehandler.NativeViewGestureHandler();
493
- }
494
- getExtraData(handler) {
495
- return Object.assign(super.getExtraData(handler), {
496
- pointerInside: handler.isWithinBounds()
497
- });
498
- }
499
- }
500
- __decorate([
501
- nativeProperty
502
- ], NativeViewGestureHandler.prototype, "shouldActivateOnStart", void 0);
503
- __decorate([
504
- nativeProperty
505
- ], NativeViewGestureHandler.prototype, "disallowInterruption", void 0);
506
- export class Manager extends ManagerBase {
507
- constructor() {
508
- super(...arguments);
509
- this.viewListeners = new Map();
510
- }
511
- configureInteractions(handler, options = {}) {
512
- this.interactionManager.configureInteractions(handler.getNative(), options.waitFor, options.simultaneousHandlers);
513
- }
514
- get interactionManager() {
515
- if (!this._interactionManager) {
516
- this._interactionManager = new com.nativescript.gesturehandler.GestureHandlerInteractionController();
517
- }
518
- return this._interactionManager;
519
- }
520
- static getInstance() {
521
- if (!Manager.sManager) {
522
- Manager.sManager = new Manager();
523
- }
524
- return Manager.sManager;
525
- }
526
- createGestureHandler(handlerName, handlerTag, config) {
527
- let handler = null;
528
- switch (handlerName) {
529
- case 'tap':
530
- handler = new TapGestureHandler(config);
531
- break;
532
- case 'pan':
533
- handler = new PanGestureHandler(config);
534
- break;
535
- case 'nativeView':
536
- handler = new NativeViewGestureHandler(config);
537
- break;
538
- case 'pinch':
539
- handler = new PinchGestureHandler(config);
540
- break;
541
- case 'fling':
542
- handler = new FlingGestureHandler(config);
543
- break;
544
- case 'rotation':
545
- handler = new RotationGestureHandler(config);
546
- break;
547
- case 'longPress':
548
- handler = new LongPressGestureHandler(config);
549
- break;
550
- }
551
- if (handler) {
552
- handler.manager = new WeakRef(this);
553
- handler.setTag(handlerTag);
554
- }
555
- return handler;
556
- }
557
- findRegistry(view) {
558
- let registry;
559
- const page = view.page;
560
- if (page) {
561
- registry = page.registry;
562
- }
563
- else {
564
- // no root page try to find a parent GestureRootView
565
- let parent = view.parent;
566
- while (parent) {
567
- if (parent instanceof GestureRootView) {
568
- return parent.registry;
569
- }
570
- parent = parent.parent;
571
- }
572
- }
573
- return registry;
574
- }
575
- attachGestureHandlerToView(handler, view) {
576
- const nHandler = handler.getNative();
577
- if (nHandler) {
578
- const registry = this.findRegistry(view);
579
- if (registry) {
580
- registry.registerHandler(nHandler);
581
- registry.attachHandlerToView(nHandler.getTag(), view[handler.nativeGetterKey]);
582
- }
583
- else {
584
- throw new Error('a Page or a GestureRootView is needed to attach a gesture');
585
- }
586
- }
587
- }
588
- detachGestureHandlerFromView(handler, view) {
589
- const nHandler = handler.getNative();
590
- if (nHandler) {
591
- const registry = this.findRegistry(view);
592
- if (registry) {
593
- registry.dropHandler(nHandler.getTag());
594
- }
595
- }
596
- }
597
- attachGestureHandler(handler, view) {
598
- if (view.nativeView) {
599
- this.attachGestureHandlerToView(handler, view);
600
- }
601
- const onInit = () => this.attachGestureHandlerToView(handler, view);
602
- const onDispose = () => this.detachGestureHandlerFromView(handler, view);
603
- view.on(ViewInitEvent, onInit, this);
604
- view.on(ViewDisposeEvent, onDispose, this);
605
- let viewListeners = this.viewListeners.get(view);
606
- if (!viewListeners) {
607
- viewListeners = new Map();
608
- this.viewListeners.set(view, viewListeners);
609
- }
610
- viewListeners.set(handler.getTag(), {
611
- init: onInit,
612
- dispose: onDispose
613
- });
614
- }
615
- detachGestureHandler(handler, view) {
616
- if (view) {
617
- const viewListeners = this.viewListeners.get(view);
618
- if (viewListeners) {
619
- const listeners = viewListeners.get(handler.getTag());
620
- if (listeners) {
621
- view.off(ViewInitEvent, listeners.init, this);
622
- view.off(ViewDisposeEvent, () => listeners.dispose, this);
623
- viewListeners.delete(handler.getTag());
624
- if (viewListeners.size === 0) {
625
- this.viewListeners.delete(view);
626
- }
627
- }
628
- }
629
- }
630
- this.detachGestureHandlerFromView(handler, view);
631
- }
632
- }
633
- //# sourceMappingURL=gesturehandler.android.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gesturehandler.android.js","sourceRoot":"../src/","sources":["gesturehandler.android.ts"],"names":[],"mappings":"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"}