@egjs/axes
Version:
A module used to change the information of user action entered by various input devices such as touch screen or mouse into the logical virtual coordinates. You can easily create a UI that responds to user actions.
141 lines • 6.25 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { ComponentEvent } from "@egjs/component";
import { getObserver, Observe } from "@cfcs/core";
import { roundNumbers } from "./utils";
var EventManager = (function () {
function EventManager(_axes) {
this._axes = _axes;
this.holdingCount = 0;
}
EventManager.prototype.hold = function (pos, option) {
var roundPos = this._getRoundPos(pos).roundPos;
this._axes.trigger(new ComponentEvent("hold", {
pos: roundPos,
input: option.input || null,
inputEvent: option.event || null,
isTrusted: true,
}));
};
EventManager.prototype.triggerRelease = function (param) {
var _a = this._getRoundPos(param.destPos, param.depaPos), roundPos = _a.roundPos, roundDepa = _a.roundDepa;
param.destPos = roundPos;
param.depaPos = roundDepa;
param.setTo = this._createUserControll(param.destPos, param.duration);
this._axes.trigger(new ComponentEvent("release", __assign(__assign({}, param), { bounceRatio: this._getBounceRatio(roundPos) })));
};
EventManager.prototype.triggerChange = function (pos, depaPos, option, holding) {
var _this = this;
if (holding === void 0) { holding = false; }
var animationManager = this.animationManager;
var axisManager = animationManager.axisManager;
var eventInfo = animationManager.getEventInfo();
var _a = this._getRoundPos(pos, depaPos), roundPos = _a.roundPos, roundDepa = _a.roundDepa;
var moveTo = axisManager.moveTo(roundPos, roundDepa);
var inputEvent = (option === null || option === void 0 ? void 0 : option.event) || (eventInfo === null || eventInfo === void 0 ? void 0 : eventInfo.event) || null;
var param = {
pos: moveTo.pos,
delta: moveTo.delta,
bounceRatio: this._getBounceRatio(moveTo.pos),
holding: holding,
inputEvent: inputEvent,
isTrusted: !!inputEvent,
input: (option === null || option === void 0 ? void 0 : option.input) || (eventInfo === null || eventInfo === void 0 ? void 0 : eventInfo.input) || null,
set: inputEvent ? this._createUserControll(moveTo.pos) : function () { },
};
var event = new ComponentEvent("change", param);
this._axes.trigger(event);
Object.keys(moveTo.pos).forEach(function (axis) {
var p = moveTo.pos[axis];
getObserver(_this._axes, axis, p).current = p;
});
if (inputEvent) {
axisManager.set(param.set().destPos);
}
return !event.isCanceled();
};
EventManager.prototype.triggerAnimationStart = function (param) {
var _a = this._getRoundPos(param.destPos, param.depaPos), roundPos = _a.roundPos, roundDepa = _a.roundDepa;
param.destPos = roundPos;
param.depaPos = roundDepa;
param.setTo = this._createUserControll(param.destPos, param.duration);
var event = new ComponentEvent("animationStart", param);
this._axes.trigger(event);
return !event.isCanceled();
};
EventManager.prototype.triggerAnimationEnd = function (isTrusted) {
if (isTrusted === void 0) { isTrusted = false; }
this._axes.trigger(new ComponentEvent("animationEnd", {
isTrusted: isTrusted,
}));
};
EventManager.prototype.triggerFinish = function (isTrusted) {
if (isTrusted === void 0) { isTrusted = false; }
this._axes.trigger(new ComponentEvent("finish", {
isTrusted: isTrusted,
}));
};
EventManager.prototype.setAnimationManager = function (animationManager) {
this.animationManager = animationManager;
};
EventManager.prototype.destroy = function () {
this._axes.off();
};
EventManager.prototype._createUserControll = function (pos, duration) {
if (duration === void 0) { duration = 0; }
var userControl = {
destPos: __assign({}, pos),
duration: duration,
};
return function (toPos, userDuration) {
if (toPos) {
userControl.destPos = __assign({}, toPos);
}
if (userDuration !== undefined) {
userControl.duration = userDuration;
}
return userControl;
};
};
EventManager.prototype._getRoundPos = function (pos, depaPos) {
var roundUnit = this._axes.options.round;
return {
roundPos: roundNumbers(pos, roundUnit),
roundDepa: roundNumbers(depaPos, roundUnit),
};
};
EventManager.prototype._getBounceRatio = function (pos) {
return this._axes.axisManager.map(pos, function (v, opt) {
if (v < opt.range[0] && opt.bounce[0] !== 0) {
return (opt.range[0] - v) / opt.bounce[0];
}
else if (v > opt.range[1] && opt.bounce[1] !== 0) {
return (v - opt.range[1]) / opt.bounce[1];
}
else {
return 0;
}
});
};
__decorate([
Observe
], EventManager.prototype, "holdingCount", void 0);
return EventManager;
}());
export { EventManager };
//# sourceMappingURL=EventManager.js.map