UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

82 lines (81 loc) 3.52 kB
/** * DevExtreme (esm/__internal/integration/jquery/hooks.js) * Version: 25.2.3 * Build date: Fri Dec 12 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import { each } from "../../core/utils/m_iterator"; import { isNumeric } from "../../core/utils/m_type"; import { compare as compareVersion } from "../../core/utils/m_version"; import registerEvent from "../../events/core/m_event_registrator"; import hookTouchProps from "../../events/core/m_hook_touch_props"; import { setEventFixMethod } from "../../events/utils/index"; import jQuery from "jquery"; import useJQueryFn from "./use_jquery"; const useJQuery = useJQueryFn(); if (useJQuery) { if (compareVersion(jQuery.fn.jquery, [3]) < 0) { const POINTER_TYPE_MAP = { 2: "touch", 3: "pen", 4: "mouse" }; each(["MSPointerDown", "MSPointerMove", "MSPointerUp", "MSPointerCancel", "MSPointerOver", "MSPointerOut", "mouseenter", "mouseleave", "pointerdown", "pointermove", "pointerup", "pointercancel", "pointerover", "pointerout", "pointerenter", "pointerleave"], (function() { jQuery.event.fixHooks[this] = { filter(event, originalEvent) { const { pointerType: pointerType } = originalEvent; if (isNumeric(pointerType)) { event.pointerType = POINTER_TYPE_MAP[pointerType] } return event }, props: jQuery.event.mouseHooks.props.concat(["pointerId", "pointerType", "originalTarget", "width", "height", "pressure", "result", "tiltX", "charCode", "tiltY", "detail", "isPrimary", "prevValue"]) } })); each(["touchstart", "touchmove", "touchend", "touchcancel"], (function() { jQuery.event.fixHooks[this] = { filter(event, originalEvent) { hookTouchProps(((name, hook) => { event[name] = hook(originalEvent) })); return event }, props: jQuery.event.mouseHooks.props.concat(["touches", "changedTouches", "targetTouches", "detail", "result", "originalTarget", "charCode", "prevValue"]) } })); jQuery.event.fixHooks.wheel = jQuery.event.mouseHooks; const DX_EVENT_HOOKS = { props: jQuery.event.mouseHooks.props.concat(["pointerType", "pointerId", "pointers"]) }; registerEvent.callbacks.add((name => { jQuery.event.fixHooks[name] = DX_EVENT_HOOKS })); const fix = function(event, originalEvent) { const fixHook = jQuery.event.fixHooks[originalEvent.type] || jQuery.event.mouseHooks; const props = fixHook.props ? jQuery.event.props.concat(fixHook.props) : jQuery.event.props; let propIndex = props.length; while (propIndex -= 1) { const prop = props[propIndex]; event[prop] = originalEvent[prop] } return fixHook.filter ? fixHook.filter(event, originalEvent) : event }; setEventFixMethod(fix) } else { hookTouchProps(((name, hook) => { jQuery.event.addProp(name, hook) })) } }