UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

95 lines (94 loc) 3.26 kB
/** * DevExtreme (esm/__internal/events/pointer/m_base.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/ */ import eventsEngine from "../../../common/core/events/core/events_engine"; import { getEventTarget } from "../../../common/core/events/utils/event_target"; import { addNamespace, eventSource, fireEvent } from "../../../common/core/events/utils/index"; import Class from "../../../core/class"; import domAdapter from "../../../core/dom_adapter"; import browser from "../../../core/utils/browser"; const POINTER_EVENTS_NAMESPACE = "dxPointerEvents"; const BaseStrategy = Class.inherit({ ctor(eventName, originalEvents) { this._eventName = eventName; this._originalEvents = addNamespace(originalEvents, "dxPointerEvents"); this._handlerCount = 0; this.noBubble = this._isNoBubble() }, _isNoBubble() { const eventName = this._eventName; return "dxpointerenter" === eventName || "dxpointerleave" === eventName }, _handler(e) { const delegateTarget = this._getDelegateTarget(e); const event = { type: this._eventName, pointerType: e.pointerType || eventSource(e), originalEvent: e, delegateTarget: delegateTarget, timeStamp: browser.mozilla ? (new Date).getTime() : e.timeStamp }; const target = getEventTarget(e); event.target = target; return this._fireEvent(event) }, _getDelegateTarget(e) { let delegateTarget; if (this.noBubble) { delegateTarget = e.delegateTarget } return delegateTarget }, _fireEvent: args => fireEvent(args), _setSelector(handleObj) { this._selector = this.noBubble && handleObj ? handleObj.selector : null }, _getSelector() { return this._selector }, setup: () => true, add(element, handleObj) { if (this._handlerCount <= 0 || this.noBubble) { element = this.noBubble ? element : domAdapter.getDocument(); this._setSelector(handleObj); const that = this; eventsEngine.on(element, this._originalEvents, this._getSelector(), (e => { that._handler(e) })) } if (!this.noBubble) { this._handlerCount++ } }, remove(handleObj) { this._setSelector(handleObj); if (!this.noBubble) { this._handlerCount-- } }, teardown(element) { if (this._handlerCount && !this.noBubble) { return } element = this.noBubble ? element : domAdapter.getDocument(); if (".dxPointerEvents" !== this._originalEvents) { eventsEngine.off(element, this._originalEvents, this._getSelector()) } }, dispose(element) { element = this.noBubble ? element : domAdapter.getDocument(); eventsEngine.off(element, this._originalEvents) } }); export default BaseStrategy;