@nativescript-community/gesturehandler 2.0.20 → 2.0.22

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.
@@ -0,0 +1,633 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gesturehandler.android.js","sourceRoot":"../src/","sources":["gesturehandler.android.ts"],"names":[],"mappings":"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"}