devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
122 lines (119 loc) • 4 kB
JavaScript
/**
* DevExtreme (cjs/__internal/events/gesture/m_swipeable.js)
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _events_engine = _interopRequireDefault(require("../../../common/core/events/core/events_engine"));
var _swipe = require("../../../common/core/events/swipe");
var _index = require("../../../common/core/events/utils/index");
var _iterator = require("../../../core/utils/iterator");
var _public_component = require("../../../core/utils/public_component");
var _dom_component = _interopRequireDefault(require("../../core/widget/dom_component"));
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function(n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) {
({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
}
}
return n
}, _extends.apply(null, arguments)
}
const DX_SWIPEABLE = "dxSwipeable";
const SWIPEABLE_CLASS = "dx-swipeable";
const ACTION_TO_EVENT_MAP = {
onStart: _swipe.start,
onUpdated: _swipe.swipe,
onEnd: _swipe.end,
onCancel: "dxswipecancel"
};
const IMMEDIATE_TIMEOUT = 180;
class Swipeable extends _dom_component.default {
_getDefaultOptions() {
return _extends({}, super._getDefaultOptions(), {
elastic: true,
immediate: false,
immediateTimeout: 180,
direction: "horizontal",
itemSizeFunc: null,
onStart: null,
onUpdated: null,
onEnd: null,
onCancel: null
})
}
_render() {
super._render();
this.$element().addClass("dx-swipeable");
this._attachEventHandlers()
}
_attachEventHandlers() {
this._detachEventHandlers();
if (this.option("disabled")) {
return
}
const {
NAME: NAME
} = this;
this._createEventData();
(0, _iterator.each)(ACTION_TO_EVENT_MAP, ((actionName, eventName) => {
const action = this._createActionByOption(actionName, {
context: this
});
eventName = (0, _index.addNamespace)(eventName, NAME);
_events_engine.default.on(this.$element(), eventName, this._eventData, (e => action({
event: e
})))
}))
}
_createEventData() {
this._eventData = {
elastic: this.option("elastic"),
itemSizeFunc: this.option("itemSizeFunc"),
direction: this.option("direction"),
immediate: this.option("immediate"),
immediateTimeout: this.option("immediateTimeout")
}
}
_detachEventHandlers() {
_events_engine.default.off(this.$element(), `.${DX_SWIPEABLE}`)
}
_optionChanged(args) {
switch (args.name) {
case "disabled":
case "onStart":
case "onUpdated":
case "onEnd":
case "onCancel":
case "elastic":
case "immediate":
case "itemSizeFunc":
case "direction":
this._detachEventHandlers();
this._attachEventHandlers();
break;
case "rtlEnabled":
break;
default:
super._optionChanged(args)
}
}
_useTemplates() {
return false
}
}(0, _public_component.name)(Swipeable, DX_SWIPEABLE);
var _default = exports.default = Swipeable;