123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- (function (factory) {
- if (typeof module === "object" && typeof module.exports === "object") {
- var v = factory(require, exports);
- if (v !== undefined) module.exports = v;
- }
- else if (typeof define === "function" && define.amd) {
- define(["require", "exports", "../util/util", "./recognizers", "../util/dom", "./ui-event-manager"], factory);
- }
- })(function (require, exports) {
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var util_1 = require("../util/util");
- var recognizers_1 = require("./recognizers");
- var dom_1 = require("../util/dom");
- var ui_event_manager_1 = require("./ui-event-manager");
- /**
- * @hidden
- */
- var PanGesture = (function () {
- function PanGesture(plt, element, opts) {
- if (opts === void 0) { opts = {}; }
- this.plt = plt;
- this.element = element;
- util_1.defaults(opts, {
- threshold: 20,
- maxAngle: 40,
- direction: 'x',
- zone: true,
- capture: false,
- passive: false,
- });
- this.events = new ui_event_manager_1.UIEventManager(plt);
- if (opts.domController) {
- this.debouncer = opts.domController.debouncer();
- }
- this.gestute = opts.gesture;
- this.direction = opts.direction;
- this.eventsConfig = {
- element: this.element,
- pointerDown: this.pointerDown.bind(this),
- pointerMove: this.pointerMove.bind(this),
- pointerUp: this.pointerUp.bind(this),
- zone: opts.zone,
- capture: opts.capture,
- passive: opts.passive
- };
- if (opts.threshold > 0) {
- this.detector = new recognizers_1.PanRecognizer(opts.direction, opts.threshold, opts.maxAngle);
- }
- }
- PanGesture.prototype.listen = function () {
- if (!this.isListening) {
- this.pointerEvents = this.events.pointerEvents(this.eventsConfig);
- this.isListening = true;
- }
- };
- PanGesture.prototype.unlisten = function () {
- if (this.isListening) {
- this.gestute && this.gestute.release();
- this.events.unlistenAll();
- this.isListening = false;
- }
- };
- PanGesture.prototype.destroy = function () {
- this.gestute && this.gestute.destroy();
- this.gestute = null;
- this.unlisten();
- this.events.destroy();
- this.events = this.element = this.gestute = null;
- };
- PanGesture.prototype.pointerDown = function (ev) {
- if (this.started) {
- return;
- }
- if (!this.canStart(ev)) {
- return false;
- }
- if (this.gestute) {
- // Release fallback
- this.gestute.release();
- // Start gesture
- if (!this.gestute.start()) {
- return false;
- }
- }
- this.started = true;
- this.captured = false;
- var coord = dom_1.pointerCoord(ev);
- if (this.detector) {
- this.detector.start(coord);
- }
- else {
- if (!this.tryToCapture(ev)) {
- this.started = false;
- this.captured = false;
- this.gestute.release();
- return false;
- }
- }
- return true;
- };
- PanGesture.prototype.pointerMove = function (ev) {
- var _this = this;
- (void 0) /* assert */;
- if (this.captured) {
- this.debouncer.write(function () {
- _this.onDragMove(ev);
- });
- return;
- }
- (void 0) /* assert */;
- var coord = dom_1.pointerCoord(ev);
- if (this.detector.detect(coord)) {
- if (this.detector.pan() !== 0) {
- if (!this.tryToCapture(ev)) {
- this.abort(ev);
- }
- }
- }
- };
- PanGesture.prototype.pointerUp = function (ev) {
- (void 0) /* assert */;
- this.debouncer.cancel();
- this.gestute && this.gestute.release();
- if (this.captured) {
- this.onDragEnd(ev);
- }
- else {
- this.notCaptured(ev);
- }
- this.captured = false;
- this.started = false;
- };
- PanGesture.prototype.tryToCapture = function (ev) {
- (void 0) /* assert */;
- (void 0) /* assert */;
- if (this.gestute && !this.gestute.capture()) {
- return false;
- }
- this.onDragStart(ev);
- this.captured = true;
- return true;
- };
- PanGesture.prototype.abort = function (ev) {
- this.started = false;
- this.captured = false;
- this.gestute.release();
- this.pointerEvents.stop();
- this.notCaptured(ev);
- };
- PanGesture.prototype.getNativeElement = function () {
- return this.element;
- };
- // Implemented in a subclass
- PanGesture.prototype.canStart = function (_ev) { return true; };
- PanGesture.prototype.onDragStart = function (_ev) { };
- PanGesture.prototype.onDragMove = function (_ev) { };
- PanGesture.prototype.onDragEnd = function (_ev) { };
- PanGesture.prototype.notCaptured = function (_ev) { };
- return PanGesture;
- }());
- exports.PanGesture = PanGesture;
- });
- //# sourceMappingURL=pan-gesture.js.map
|