{"version":3,"sources":["jsdelivr-header.js","/npm/propagating-hammerjs@3.0.0/propagating.js"],"names":[],"mappings":"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","file":"/npm/propagating-hammerjs@3.0.0/propagating.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/propagating-hammerjs@3.0.0/propagating.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.propagating = factory());\n})(this, (function () { 'use strict';\n\n  var _firstTarget = null; // singleton, will contain the target element where the touch event started\n\n  /**\n   * Extend an Hammer.js instance with event propagation.\n   *\n   * Features:\n   * - Events emitted by hammer will propagate in order from child to parent\n   *   elements.\n   * - Events are extended with a function `event.stopPropagation()` to stop\n   *   propagation to parent elements.\n   * - An option `preventDefault` to stop all default browser behavior.\n   *\n   * Usage:\n   *   var hammer = propagatingHammer(new Hammer(element));\n   *   var hammer = propagatingHammer(new Hammer(element), {preventDefault: true});\n   *\n   * @param {Hammer.Manager} hammer   An hammer instance.\n   * @param {Object} [options]        Available options:\n   *                                  - `preventDefault: true | false | 'mouse' | 'touch' | 'pen'`.\n   *                                    Enforce preventing the default browser behavior.\n   *                                    Cannot be set to `false`.\n   * @return {Hammer.Manager} Returns the same hammer instance with extended\n   *                          functionality\n   */\n  function propagating(hammer, options) {\n    var _options = options || {\n      preventDefault: false\n    };\n\n    if (hammer.Manager) {\n      // This looks like the Hammer constructor.\n      // Overload the constructors with our own.\n      var Hammer = hammer;\n\n      var PropagatingHammer = function(element, options) {\n        var o = Object.create(_options);\n        if (options) Hammer.assign(o, options);\n        return propagating(new Hammer(element, o), o);\n      };\n      Hammer.assign(PropagatingHammer, Hammer);\n\n      PropagatingHammer.Manager = function (element, options) {\n        var o = Object.create(_options);\n        if (options) Hammer.assign(o, options);\n        return propagating(new Hammer.Manager(element, o), o);\n      };\n\n      return PropagatingHammer;\n    }\n\n    // create a wrapper object which will override the functions\n    // `on`, `off`, `destroy`, and `emit` of the hammer instance\n    var wrapper = Object.create(hammer);\n\n    // attach to DOM element\n    var element = hammer.element;\n\n    if(!element.hammer) element.hammer = [];\n    element.hammer.push(wrapper);\n\n    // register an event to catch the start of a gesture and store the\n    // target in a singleton\n    hammer.on('hammer.input', function (event) {\n      if (_options.preventDefault === true || (_options.preventDefault === event.pointerType)) {\n        event.preventDefault();\n      }\n      if (event.isFirst) {\n        _firstTarget = event.target;\n      }\n    });\n\n    /** @type {Object.<String, Array.<function>>} */\n    wrapper._handlers = {};\n\n    /**\n     * Register a handler for one or multiple events\n     * @param {String} events    A space separated string with events\n     * @param {function} handler A callback function, called as handler(event)\n     * @returns {Hammer.Manager} Returns the hammer instance\n     */\n    wrapper.on = function (events, handler) {\n      // register the handler\n      split(events).forEach(function (event) {\n        var _handlers = wrapper._handlers[event];\n        if (!_handlers) {\n          wrapper._handlers[event] = _handlers = [];\n\n          // register the static, propagated handler\n          hammer.on(event, propagatedHandler);\n        }\n        _handlers.push(handler);\n      });\n\n      return wrapper;\n    };\n\n    /**\n     * Unregister a handler for one or multiple events\n     * @param {String} events      A space separated string with events\n     * @param {function} [handler] Optional. The registered handler. If not\n     *                             provided, all handlers for given events\n     *                             are removed.\n     * @returns {Hammer.Manager}   Returns the hammer instance\n     */\n    wrapper.off = function (events, handler) {\n      // unregister the handler\n      split(events).forEach(function (event) {\n        var _handlers = wrapper._handlers[event];\n        if (_handlers) {\n          _handlers = handler ? _handlers.filter(function (h) {\n            return h !== handler;\n          }) : [];\n\n          if (_handlers.length > 0) {\n            wrapper._handlers[event] = _handlers;\n          }\n          else {\n            // remove static, propagated handler\n            hammer.off(event, propagatedHandler);\n            delete wrapper._handlers[event];\n          }\n        }\n      });\n\n      return wrapper;\n    };\n\n    /**\n     * Emit to the event listeners\n     * @param {string} eventType\n     * @param {Event} event\n     */\n    wrapper.emit = function(eventType, event) {\n      _firstTarget = event.target;\n      hammer.emit(eventType, event);\n    };\n\n    wrapper.destroy = function () {\n      // Detach from DOM element\n      var hammers = hammer.element.hammer;\n      var idx = hammers.indexOf(wrapper);\n      if(idx !== -1) hammers.splice(idx,1);\n      if(!hammers.length) delete hammer.element.hammer;\n\n      // clear all handlers\n      wrapper._handlers = {};\n\n      // call original hammer destroy\n      hammer.destroy();\n    };\n\n    // split a string with space separated words\n    function split(events) {\n      return events.match(/[^ ]+/g);\n    }\n\n    /**\n     * A static event handler, applying event propagation.\n     * @param {Object} event\n     */\n    function propagatedHandler(event) {\n      // let only a single hammer instance handle this event\n      if (event.type !== 'hammer.input') {\n        // it is possible that the same srcEvent is used with multiple hammer events,\n        // we keep track on which events are handled in an object _handled\n        if (!event.srcEvent._handled) {\n          event.srcEvent._handled = {};\n        }\n\n        if (event.srcEvent._handled[event.type]) {\n          return;\n        }\n        else {\n          event.srcEvent._handled[event.type] = true;\n        }\n      }\n\n      // attach a stopPropagation function to the event\n      var stopped = false;\n      event.stopPropagation = function () {\n        stopped = true;\n      };\n\n      //wrap the srcEvent's stopPropagation to also stop hammer propagation:\n      var srcStop = event.srcEvent.stopPropagation.bind(event.srcEvent);\n      if(typeof srcStop == \"function\") {\n        event.srcEvent.stopPropagation = function(){\n          srcStop();\n          event.stopPropagation();\n        };\n      }\n\n      // attach firstTarget property to the event\n      event.firstTarget = _firstTarget;\n\n      // propagate over all elements (until stopped)\n      var elem = _firstTarget.isConnected ? _firstTarget : event.target;\n      while (elem && !stopped) {\n        var elemHammer = elem.hammer;\n        if(elemHammer){\n          var _handlers;\n          for(var k = 0; k < elemHammer.length; k++){\n            _handlers = elemHammer[k]._handlers[event.type];\n            if(_handlers) for (var i = 0; i < _handlers.length && !stopped; i++) {\n              _handlers[i](event);\n            }\n          }\n        }\n        elem = elem.parentNode;\n      }\n    }\n\n    return wrapper;\n  }\n\n  return propagating;\n\n}));\n"]}