{ "version": 3, "sources": [ "events.ts" ], "names": [ "contains", "domUtils", "is", "pExtend", "pointerUtils", "elements", "targets", "delegatedEvents", "documents", "add", "element", "type", "listener", "optionalArg", "options", "getOptions", "elementIndex", "indexOf", "target", "events", "typeCount", "push", "removeEventListener", "addEventListener", "supportsOptions", "capture", "remove", "hasOwnProperty", "len", "length", "i", "splice", "addDelegate", "selector", "context", "contexts", "listeners", "selectors", "doc", "delegateListener", "delegateUseCapture", "delegated", "index", "passive", "removeDelegate", "matchFound", "fn", "event", "fakeEvent", "FakeEvent", "eventTarget", "getEventTargets", "matchesSelector", "nodeContains", "currentTarget", "parentNode", "call", "param", "object", "constructor", "originalEvent", "preventOriginalDefault", "preventDefault", "stopPropagation", "stopImmediatePropagation", "supportsPassive", "_elements", "_targets", "init", "window", "document", "createElement" ], "mappings": "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", "sourcesContent": [ "import { contains } from './arr'\nimport * as domUtils from './domUtils'\nimport * as is from './is'\nimport pExtend from './pointerExtend'\nimport * as pointerUtils from './pointerUtils'\n\ntype Listener = (event: Event | FakeEvent) => any\n\nconst elements: EventTarget[] = []\nconst targets: Array<{\n events: { [type: string]: Listener[] }\n typeCount: number\n}> = []\n\nconst delegatedEvents: {\n [type: string]: {\n selectors: string[]\n contexts: Node[]\n listeners: Array>\n }\n} = {}\nconst documents: Document[] = []\n\nfunction add (element: EventTarget, type: string, listener: Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n let elementIndex = elements.indexOf(element)\n let target = targets[elementIndex]\n\n if (!target) {\n target = {\n events: {},\n typeCount: 0,\n }\n\n elementIndex = elements.push(element) - 1\n targets.push(target)\n }\n\n if (!target.events[type]) {\n target.events[type] = []\n target.typeCount++\n }\n\n if (element.removeEventListener && !contains(target.events[type], listener)) {\n element.addEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].push(listener)\n }\n}\n\nfunction remove (element: EventTarget, type: string, listener?: 'all' | Listener, optionalArg?: boolean | any) {\n const options = getOptions(optionalArg)\n const elementIndex = elements.indexOf(element)\n const target = targets[elementIndex]\n\n if (!target || !target.events) {\n return\n }\n\n if (type === 'all') {\n for (type in target.events) {\n if (target.events.hasOwnProperty(type)) {\n remove(element, type, 'all')\n }\n }\n return\n }\n\n if (target.events[type]) {\n const len = target.events[type].length\n\n if (listener === 'all') {\n for (let i = 0; i < len; i++) {\n remove(element, type, target.events[type][i], options)\n }\n return\n }\n else {\n for (let i = 0; i < len; i++) {\n if (element.removeEventListener && target.events[type][i] === listener) {\n element.removeEventListener(type, listener as any, events.supportsOptions ? options : !!options.capture)\n target.events[type].splice(i, 1)\n\n break\n }\n }\n }\n\n if (target.events[type] && target.events[type].length === 0) {\n (target.events[type] as any) = null\n target.typeCount--\n }\n }\n\n if (!target.typeCount) {\n targets.splice(elementIndex, 1)\n elements.splice(elementIndex, 1)\n }\n}\n\nfunction addDelegate (selector: string, context: Node, type: string, listener: Listener, optionalArg?: any) {\n const options = getOptions(optionalArg)\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = {\n contexts : [],\n listeners: [],\n selectors: [],\n }\n\n // add delegate listener functions\n for (const doc of documents) {\n add(doc, type, delegateListener)\n add(doc, type, delegateUseCapture, true)\n }\n }\n\n const delegated = delegatedEvents[type]\n let index\n\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n break\n }\n }\n\n if (index === -1) {\n index = delegated.selectors.length\n\n delegated.selectors.push(selector)\n delegated.contexts.push(context)\n delegated.listeners.push([])\n }\n\n // keep listener and capture and passive flags\n delegated.listeners[index].push([listener, !!options.capture, options.passive])\n}\n\nfunction removeDelegate (\n selector: string,\n context: Document | Interact.Element,\n type: string,\n listener?: Listener,\n optionalArg?: any,\n) {\n const options = getOptions(optionalArg)\n const delegated = delegatedEvents[type]\n let matchFound = false\n let index\n\n if (!delegated) { return }\n\n // count from last index of delegated to 0\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n // look for matching selector and context Node\n if (delegated.selectors[index] === selector &&\n delegated.contexts[index] === context) {\n const listeners = delegated.listeners[index]\n\n // each item of the listeners array is an array: [function, capture, passive]\n for (let i = listeners.length - 1; i >= 0; i--) {\n const [fn, capture, passive] = listeners[i]\n\n // check if the listener functions and capture and passive flags match\n if (fn === listener && capture === !!options.capture && passive === options.passive) {\n // remove the listener from the array of listeners\n listeners.splice(i, 1)\n\n // if all listeners for this interactable have been removed\n // remove the interactable from the delegated arrays\n if (!listeners.length) {\n delegated.selectors.splice(index, 1)\n delegated.contexts.splice(index, 1)\n delegated.listeners.splice(index, 1)\n\n // remove delegate function from context\n remove(context, type, delegateListener)\n remove(context, type, delegateUseCapture, true)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegatedEvents[type] = null\n }\n }\n\n // only remove one listener\n matchFound = true\n break\n }\n }\n\n if (matchFound) { break }\n }\n }\n}\n\n// bound to the interactable context when a DOM event\n// listener is added to a selector interactable\nfunction delegateListener (event: Event, optionalArg?: any) {\n const options = getOptions(optionalArg)\n const fakeEvent = new FakeEvent(event)\n const delegated = delegatedEvents[event.type]\n const [eventTarget] = (pointerUtils.getEventTargets(event))\n let element: Node = eventTarget\n\n // climb up document tree looking for selector matches\n while (is.element(element)) {\n for (let i = 0; i < delegated.selectors.length; i++) {\n const selector = delegated.selectors[i]\n const context = delegated.contexts[i]\n\n if (domUtils.matchesSelector(element, selector) &&\n domUtils.nodeContains(context, eventTarget) &&\n domUtils.nodeContains(context, element)) {\n const listeners = delegated.listeners[i]\n\n fakeEvent.currentTarget = element\n\n for (const [fn, capture, passive] of listeners) {\n if (capture === !!options.capture && passive === options.passive) {\n fn(fakeEvent)\n }\n }\n }\n }\n\n element = domUtils.parentNode(element)\n }\n}\n\nfunction delegateUseCapture (event: Event) {\n return delegateListener.call(this, event, true)\n}\n\nfunction getOptions (param: object) {\n return is.object(param) ? param : { capture: param }\n}\n\nexport class FakeEvent implements Partial {\n currentTarget: EventTarget\n\n constructor (public originalEvent: Event) {\n // duplicate the event so that currentTarget can be changed\n pExtend(this, originalEvent)\n }\n\n preventOriginalDefault () {\n this.originalEvent.preventDefault()\n }\n\n stopPropagation () {\n this.originalEvent.stopPropagation()\n }\n\n stopImmediatePropagation () {\n this.originalEvent.stopImmediatePropagation()\n }\n}\n\nconst events = {\n add,\n remove,\n\n addDelegate,\n removeDelegate,\n\n delegateListener,\n delegateUseCapture,\n delegatedEvents,\n documents,\n\n supportsOptions: false,\n supportsPassive: false,\n\n _elements: elements,\n _targets: targets,\n\n init (window: Window) {\n window.document.createElement('div').addEventListener('test', null, {\n get capture () { return (events.supportsOptions = true) },\n get passive () { return (events.supportsPassive = true) },\n })\n },\n}\n\nexport default events\n" ] }