true/false or An object with event\nlisteners to be fired on resize events (object makes the Interactable\nresizable)
","name":"options"}],"returns":[{"type":{"names":["boolean","Interactable"]},"description":"A boolean indicating if this can be the\ntarget of resize elements, or this Interactable
"}],"name":"resizable","longname":"Interactable#resizable","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R000623","___s":true,"attribs":"Returns or sets whether the the cursor should be changed depending on the\naction that would be performed if the mouse were pressed and dragged.
","params":[{"type":{"names":["boolean"]},"optional":true,"name":"newValue"}],"returns":[{"type":{"names":["boolean","Interactable"]},"description":"Remove this interactable from the list of interactables and remove it's\naction capabilities and event listeners
","returns":[{"type":{"names":["interact"]}}],"name":"unset","longname":"Interactable#unset","kind":"function","memberof":"Interactable","scope":"instance","params":[],"___id":"T000002R001310","___s":true,"attribs":"Force a move of the current action at the same coordinates. Useful if\nsnap/restrict has been changed and you want a movement with the new\nsettings.
","name":"move","longname":"Interaction#move","kind":"function","memberof":"Interaction","scope":"instance","params":[],"___id":"T000002R001761","___s":true,"attribs":"able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {object} interact\n */","meta":{"range":[4121,4763],"filename":"Interaction.ts","lineno":155,"columnno":2,"path":"../packages/core","code":{"id":"astnode100018009","name":"Interaction#start","type":"MethodDefinition","paramnames":["action","interactable","element"]},"vars":{"":null},"shortpath":"packages/core/Interaction.ts"},"description":"interact(target)\n .draggable({\n // disable the default drag start by down->move\n manualStart: true\n })\n // start dragging after the user holds the pointer down\n .on('hold', function (event) {\n var interaction = event.interaction\n\n if (!interaction.interacting()) {\n interaction.start({ name: 'drag' },\n event.interactable,\n event.currentTarget)\n }\n})\n
\nStart an action with the given Interactable and Element as tartgets. The\naction must be enabled for the target Interactable and an appropriate\nnumber of pointers must be held down - 1 for drag/resize, 2 for gesture.
\nUse it with interactable.<action>able({ manualStart: false })
to always\nstart actions manually
","params":[{"type":{"names":["object"]},"description":"The action to be performed - drag, resize, etc.
","name":"action"},{"type":{"names":["Interactable"]},"description":"The Interactable to target
","name":"target"},{"type":{"names":["Element"]},"description":"The DOM Element to target
","name":"element"}],"returns":[{"type":{"names":["object"]},"description":"interact
"}],"name":"start","longname":"Interaction#start","kind":"function","memberof":"Interaction","scope":"instance","___id":"T000002R001735","___s":true,"attribs":"","id":"start","signature":"(action, target, element) → {object}","ancestors":[]},{"comment":"/** */","meta":{"range":[8962,9190],"filename":"Interaction.ts","lineno":334,"columnno":2,"path":"../packages/core","code":{"id":"astnode100018711","name":"Interaction#stop","type":"MethodDefinition","paramnames":[]},"vars":{"":null},"shortpath":"packages/core/Interaction.ts"},"name":"stop","longname":"Interaction#stop","kind":"function","memberof":"Interaction","scope":"instance","params":[],"___id":"T000002R001792","___s":true,"attribs":"","id":"stop","signature":"()","ancestors":[]},{"comment":"/** */","meta":{"range":[184,1167],"filename":"PointerEvent.ts","lineno":7,"columnno":2,"path":"../packages/pointer-events","code":{"id":"astnode100035931","name":"module.exports","type":"MethodDefinition","paramnames":["type","pointer","event","eventTarget","interaction","timeStamp"]},"shortpath":"packages/pointer-events/PointerEvent.ts"},"name":"exports","longname":"module.exports","kind":"class","memberof":"module","scope":"static","___id":"T000003R000005","___s":true,"attribs":"","id":"exports","signature":"()","ancestors":[]},{"comment":"/** @module interact */","meta":{"filename":"interact.ts","lineno":1,"columnno":0,"path":"../packages/interact","code":{},"shortpath":"packages/interact/interact.ts"},"kind":"module","name":"interact","longname":"module:interact","___id":"T000004R000002","___s":true,"attribs":"","id":"interact","ancestors":[],"modules":[]},{"comment":"/**\n * Returns an object which exposes internal data\n * @alias module:interact.debug\n *\n * @return {object} An object with properties that outline the current state\n * and expose internal functions and variables\n */","meta":{"range":[4549,4571],"filename":"interact.ts","lineno":210,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100026117","name":"interact.debug","type":"Identifier","value":"debug","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Returns an object which exposes internal data
","alias":"module:interact.debug","returns":[{"type":{"names":["object"]},"description":"An object with properties that outline the current state\nand expose internal functions and variables
"}],"name":"debug","longname":"module:interact.debug","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002537","___s":true,"attribs":"(static) ","id":".debug","ancestors":["interact."],"signature":""},{"comment":"/**\n * Check if an element or selector has been set with the {@link interact}\n * function\n *\n * @alias module:interact.isSet\n *\n * @param {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */","meta":{"range":[1739,1761],"filename":"interact.ts","lineno":95,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100025794","name":"interact.isSet","type":"Identifier","value":"isSet","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Check if an element or selector has been set with the {@link interact}\nfunction
","alias":"module:interact.isSet","params":[{"type":{"names":["Element"]},"description":"The Element being searched for
","name":"element"}],"returns":[{"type":{"names":["boolean"]},"description":"Indicates if the element or CSS selector was previously\npassed to interact
"}],"name":"isSet","longname":"module:interact.isSet","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002521","___s":true,"attribs":"(static) ","id":".isSet","ancestors":["interact."],"signature":""},{"comment":"/**\n * Returns or sets the maximum number of concurrent interactions allowed. By\n * default only 1 interaction is allowed at a time (for backwards\n * compatibility). To allow multiple interactions on the same Interactables and\n * elements, you need to enable it in the draggable, resizable and gesturable\n * `'max'` and `'maxPerElement'` options.\n *\n * @alias module:interact.maxInteractions\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n */","meta":{"range":[2849,2920],"filename":"base.ts","lineno":120,"columnno":2,"path":"../packages/auto-start","code":{"id":"astnode100009663","name":"interact.maxInteractions","type":"ArrowFunctionExpression","paramnames":["newValue"]},"shortpath":"packages/auto-start/base.ts"},"description":"Returns or sets the maximum number of concurrent interactions allowed. By\ndefault only 1 interaction is allowed at a time (for backwards\ncompatibility). To allow multiple interactions on the same Interactables and\nelements, you need to enable it in the draggable, resizable and gesturable\n'max'
and 'maxPerElement'
options.
","alias":"module:interact.maxInteractions","params":[{"type":{"names":["number"]},"optional":true,"description":"Any number. newValue <= 0 means no interactions.
","name":"newValue"}],"name":"maxInteractions","longname":"module:interact.maxInteractions","kind":"function","memberof":"module:interact","scope":"static","___id":"T000002R000939","___s":true,"attribs":"(static) ","id":".maxInteractions","signature":"(newValueopt)","ancestors":["interact."]},{"comment":"/**\n * Removes a global InteractEvent listener or DOM event from `document`\n *\n * @alias module:interact.off\n *\n * @param {string | array | object} type The types of events that were listened\n * for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} options [options] object or useCapture flag for\n * removeEventListener\n * @return {object} interact\n */","meta":{"range":[3567,3585],"filename":"interact.ts","lineno":161,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100025965","name":"interact.off","type":"Identifier","value":"off","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Removes a global InteractEvent listener or DOM event from document
","alias":"module:interact.off","params":[{"type":{"names":["string","array","object"]},"description":"The types of events that were listened\nfor
","name":"type"},{"type":{"names":["function"]},"description":"The listener function to be removed
","name":"listener"},{"type":{"names":["object","boolean"]},"description":"[options] object or useCapture flag for\nremoveEventListener
","name":"options"}],"returns":[{"type":{"names":["object"]},"description":"interact
"}],"name":"off","longname":"module:interact.off","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002530","___s":true,"attribs":"(static) ","id":".off","ancestors":["interact."],"signature":""},{"comment":"/**\n * Add a global listener for an InteractEvent or adds a DOM event to `document`\n *\n * @alias module:interact.on\n *\n * @param {string | array | object} type The types of events to listen for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] object or useCapture flag for\n * addEventListener\n * @return {object} interact\n */","meta":{"range":[2243,2259],"filename":"interact.ts","lineno":110,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100025820","name":"interact.on","type":"Identifier","value":"on","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Add a global listener for an InteractEvent or adds a DOM event to document
","alias":"module:interact.on","params":[{"type":{"names":["string","array","object"]},"description":"The types of events to listen for
","name":"type"},{"type":{"names":["function"]},"description":"The function event (s)
","name":"listener"},{"type":{"names":["object","boolean"]},"optional":true,"description":"object or useCapture flag for\naddEventListener
","name":"options"}],"returns":[{"type":{"names":["object"]},"description":"interact
"}],"name":"on","longname":"module:interact.on","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002523","___s":true,"attribs":"(static) ","id":".on","ancestors":["interact."],"signature":""},{"comment":"/**\n * Returns or sets the distance the pointer must be moved before an action\n * sequence occurs. This also affects tolerance for tap events.\n *\n * @alias module:interact.pointerMoveTolerance\n *\n * @param {number} [newValue] The movement from the start position must be greater than this value\n * @return {interact | number}\n */","meta":{"range":[6195,6247],"filename":"interact.ts","lineno":269,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100026260","name":"interact.pointerMoveTolerance","type":"Identifier","value":"pointerMoveTolerance","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Returns or sets the distance the pointer must be moved before an action\nsequence occurs. This also affects tolerance for tap events.
","alias":"module:interact.pointerMoveTolerance","params":[{"type":{"names":["number"]},"optional":true,"description":"The movement from the start position must be greater than this value
","name":"newValue"}],"returns":[{"type":{"names":["interact","number"]}}],"name":"pointerMoveTolerance","longname":"module:interact.pointerMoveTolerance","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002554","___s":true,"attribs":"(static) ","id":".pointerMoveTolerance","ancestors":["interact."],"signature":""},{"comment":"/**\n * Cancels all interactions (end events are not fired)\n *\n * @alias module:interact.stop\n *\n * @return {object} interact\n */","meta":{"range":[5717,5737],"filename":"interact.ts","lineno":253,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100026234","name":"interact.stop","type":"Identifier","value":"stop","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Cancels all interactions (end events are not fired)
","alias":"module:interact.stop","returns":[{"type":{"names":["object"]},"description":"interact
"}],"name":"stop","longname":"module:interact.stop","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002551","___s":true,"attribs":"(static) ","id":".stop","ancestors":["interact."],"signature":""},{"comment":"/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */","meta":{"range":[5456,5508],"filename":"interact.ts","lineno":243,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100026221","name":"interact.supportsPointerEvent","type":"Identifier","value":"supportsPointerEvent","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"alias":"module:interact.supportsPointerEvent","returns":[{"type":{"names":["boolean"]},"description":"Whether or not the browser supports PointerEvents
"}],"name":"supportsPointerEvent","longname":"module:interact.supportsPointerEvent","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002549","___s":true,"attribs":"(static) ","id":".supportsPointerEvent","ancestors":["interact."],"signature":""},{"comment":"/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */","meta":{"range":[5223,5261],"filename":"interact.ts","lineno":233,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100026208","name":"interact.supportsTouch","type":"Identifier","value":"supportsTouch","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"alias":"module:interact.supportsTouch","returns":[{"type":{"names":["boolean"]},"description":"Whether or not the browser supports touch input
"}],"name":"supportsTouch","longname":"module:interact.supportsTouch","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002547","___s":true,"attribs":"(static) ","id":".supportsTouch","ancestors":["interact."],"signature":""},{"comment":"/**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n * @param {Object} plugin\n * @param {function} plugin.install\n * @return {interact}\n */","meta":{"range":[1337,1355],"filename":"interact.ts","lineno":79,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100025774","name":"interact.use","type":"Identifier","value":"use","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Use a plugin
","alias":"module:interact.use","params":[{"type":{"names":["Object"]},"name":"plugin"},{"type":{"names":["function"]},"name":"plugin.install"}],"returns":[{"type":{"names":["interact"]}}],"name":"use","longname":"module:interact.use","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002519","___s":true,"attribs":"(static) ","id":".use","ancestors":["interact."],"signature":""},{"comment":"/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\n * interact(target).resizable({\n * snapEdges: {\n * targets: [interact.snappers.grid({ x: 100, y: 50 })],\n * },\n * })\n *\n * interact(target).resizable({\n * snapEdges: {\n * targets: [\n * interact.snappers.grid({\n * top: 50,\n * left: 50,\n * bottom: 100,\n * right: 100,\n * }),\n * ],\n * },\n * })\n */","meta":{"filename":"edges.ts","lineno":1,"columnno":0,"path":"../packages/modifiers/snap","code":{},"shortpath":"packages/modifiers/snap/edges.ts"},"kind":"module","name":"modifiers/snapEdges","description":"This module allows snapping of the edges of targets during resize\ninteractions.
","examples":[{"caption":"","code":"interact(target).resizable({\n snapEdges: {\n targets: [interact.snappers.grid({ x: 100, y: 50 })],\n },\n})\n\ninteract(target).resizable({\n snapEdges: {\n targets: [\n interact.snappers.grid({\n top: 50,\n left: 50,\n bottom: 100,\n right: 100,\n }),\n ],\n },\n})"}],"longname":"module:modifiers/snapEdges","___id":"T000004R000003","___s":true,"attribs":"","id":"modifiers/snapEdges","ancestors":[],"modules":[{"comment":"/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\n * interact(target).resizable({\n * snapEdges: {\n * targets: [interact.snappers.grid({ x: 100, y: 50 })],\n * },\n * })\n *\n * interact(target).resizable({\n * snapEdges: {\n * targets: [\n * interact.snappers.grid({\n * top: 50,\n * left: 50,\n * bottom: 100,\n * right: 100,\n * }),\n * ],\n * },\n * })\n */","meta":{"filename":"edges.ts","lineno":1,"columnno":0,"path":"/home/taye/proj/interact.js/packages/modifiers/snap","code":{},"shortpath":"packages/modifiers/snap/edges.ts"},"kind":"module","name":"modifiers/snapEdges","description":"This module allows snapping of the edges of targets during resize\ninteractions.
","examples":[{"caption":"","code":"interact(target).resizable({\n snapEdges: {\n targets: [interact.snappers.grid({ x: 100, y: 50 })],\n },\n})\n\ninteract(target).resizable({\n snapEdges: {\n targets: [\n interact.snappers.grid({\n top: 50,\n left: 50,\n bottom: 100,\n right: 100,\n }),\n ],\n },\n})"}],"longname":"module:modifiers/snapEdges","___id":"T000002R003216","___s":true,"attribs":"","id":"modifiers/snapEdges","ancestors":[]}]},{"kind":"package","longname":"package:undefined","files":["/home/taye/proj/interact.js/packages/actions/actions.spec.ts","/home/taye/proj/interact.js/packages/actions/drag.spec.ts","/home/taye/proj/interact.js/packages/actions/drag.ts","/home/taye/proj/interact.js/packages/actions/drop/drop.spec.ts","/home/taye/proj/interact.js/packages/actions/drop/DropEvent.spec.ts","/home/taye/proj/interact.js/packages/actions/drop/DropEvent.ts","/home/taye/proj/interact.js/packages/actions/drop/index.ts","/home/taye/proj/interact.js/packages/actions/gesture.spec.ts","/home/taye/proj/interact.js/packages/actions/gesture.ts","/home/taye/proj/interact.js/packages/actions/index.ts","/home/taye/proj/interact.js/packages/actions/resize.spec.ts","/home/taye/proj/interact.js/packages/actions/resize.ts","/home/taye/proj/interact.js/packages/auto-scroll/index.ts","/home/taye/proj/interact.js/packages/auto-start/autoStart.spec.ts","/home/taye/proj/interact.js/packages/auto-start/base.ts","/home/taye/proj/interact.js/packages/auto-start/dragAxis.ts","/home/taye/proj/interact.js/packages/auto-start/hold.spec.ts","/home/taye/proj/interact.js/packages/auto-start/hold.ts","/home/taye/proj/interact.js/packages/auto-start/index.ts","/home/taye/proj/interact.js/packages/auto-start/InteractableMethods.ts","/home/taye/proj/interact.js/packages/core/BaseEvent.ts","/home/taye/proj/interact.js/packages/core/defaultOptions.ts","/home/taye/proj/interact.js/packages/core/Eventable.spec.ts","/home/taye/proj/interact.js/packages/core/Eventable.ts","/home/taye/proj/interact.js/packages/core/Interactable.spec.ts","/home/taye/proj/interact.js/packages/core/Interactable.ts","/home/taye/proj/interact.js/packages/core/interactablePreventDefault.spec.ts","/home/taye/proj/interact.js/packages/core/interactablePreventDefault.ts","/home/taye/proj/interact.js/packages/core/InteractableSet.ts","/home/taye/proj/interact.js/packages/core/InteractEvent.ts","/home/taye/proj/interact.js/packages/core/Interaction.spec.ts","/home/taye/proj/interact.js/packages/core/Interaction.ts","/home/taye/proj/interact.js/packages/core/interactionFinder.spec.ts","/home/taye/proj/interact.js/packages/core/interactionFinder.ts","/home/taye/proj/interact.js/packages/core/interactions.spec.ts","/home/taye/proj/interact.js/packages/core/interactions.ts","/home/taye/proj/interact.js/packages/core/PointerInfo.ts","/home/taye/proj/interact.js/packages/core/scope.spec.ts","/home/taye/proj/interact.js/packages/core/scope.ts","/home/taye/proj/interact.js/packages/dev-tools/devTools.spec.ts","/home/taye/proj/interact.js/packages/dev-tools/index.ts","/home/taye/proj/interact.js/packages/inertia/index.ts","/home/taye/proj/interact.js/packages/inertia/inertia.spec.ts","/home/taye/proj/interact.js/packages/interact/index.ts","/home/taye/proj/interact.js/packages/interact/interact.spec.ts","/home/taye/proj/interact.js/packages/interact/interact.ts","/home/taye/proj/interact.js/packages/interactjs/index.ts","/home/taye/proj/interact.js/packages/modifiers/base.spec.ts","/home/taye/proj/interact.js/packages/modifiers/base.ts","/home/taye/proj/interact.js/packages/modifiers/index.ts","/home/taye/proj/interact.js/packages/modifiers/restrict/edges.spec.ts","/home/taye/proj/interact.js/packages/modifiers/restrict/edges.ts","/home/taye/proj/interact.js/packages/modifiers/restrict/pointer.ts","/home/taye/proj/interact.js/packages/modifiers/restrict/size.spec.ts","/home/taye/proj/interact.js/packages/modifiers/restrict/size.ts","/home/taye/proj/interact.js/packages/modifiers/snap/edges.spec.ts","/home/taye/proj/interact.js/packages/modifiers/snap/edges.ts","/home/taye/proj/interact.js/packages/modifiers/snap/pointer.spec.ts","/home/taye/proj/interact.js/packages/modifiers/snap/pointer.ts","/home/taye/proj/interact.js/packages/modifiers/snap/size.spec.ts","/home/taye/proj/interact.js/packages/modifiers/snap/size.ts","/home/taye/proj/interact.js/packages/pointer-events/base.spec.ts","/home/taye/proj/interact.js/packages/pointer-events/base.ts","/home/taye/proj/interact.js/packages/pointer-events/holdRepeat.spec.ts","/home/taye/proj/interact.js/packages/pointer-events/holdRepeat.ts","/home/taye/proj/interact.js/packages/pointer-events/index.ts","/home/taye/proj/interact.js/packages/pointer-events/interactableTargets.ts","/home/taye/proj/interact.js/packages/pointer-events/PointerEvent.spec.ts","/home/taye/proj/interact.js/packages/pointer-events/PointerEvent.ts","/home/taye/proj/interact.js/packages/reflow/index.ts","/home/taye/proj/interact.js/packages/reflow/reflow.spec.ts","/home/taye/proj/interact.js/packages/types/index.ts","/home/taye/proj/interact.js/packages/types/interactjs-test.ts","/home/taye/proj/interact.js/packages/types/types.spec.ts","/home/taye/proj/interact.js/packages/utils/arr.ts","/home/taye/proj/interact.js/packages/utils/browser.ts","/home/taye/proj/interact.js/packages/utils/clone.ts","/home/taye/proj/interact.js/packages/utils/domObjects.ts","/home/taye/proj/interact.js/packages/utils/domUtils.spec.ts","/home/taye/proj/interact.js/packages/utils/domUtils.ts","/home/taye/proj/interact.js/packages/utils/events.ts","/home/taye/proj/interact.js/packages/utils/extend.ts","/home/taye/proj/interact.js/packages/utils/getOriginXY.ts","/home/taye/proj/interact.js/packages/utils/hypot.ts","/home/taye/proj/interact.js/packages/utils/index.ts","/home/taye/proj/interact.js/packages/utils/is.ts","/home/taye/proj/interact.js/packages/utils/isWindow.ts","/home/taye/proj/interact.js/packages/utils/normalizeListeners.spec.ts","/home/taye/proj/interact.js/packages/utils/normalizeListeners.ts","/home/taye/proj/interact.js/packages/utils/pointerExtend.ts","/home/taye/proj/interact.js/packages/utils/pointerUtils.ts","/home/taye/proj/interact.js/packages/utils/raf.ts","/home/taye/proj/interact.js/packages/utils/rect.ts","/home/taye/proj/interact.js/packages/utils/Signals.ts","/home/taye/proj/interact.js/packages/utils/snappers/grid.ts","/home/taye/proj/interact.js/packages/utils/snappers/index.ts","/home/taye/proj/interact.js/packages/utils/window.ts","/home/taye/proj/interact.js/jsdoc/index.md"],"___id":"T000002R004720","___s":true,"attribs":"","id":"package:","ancestors":[]},{"comment":"/**\n * Prevent the default behaviour of the original Event\n */","meta":{"range":[1620,1683],"filename":"PointerEvent.ts","lineno":76,"columnno":2,"path":"../packages/pointer-events","code":{"id":"astnode100036172","name":"preventDefault","type":"MethodDefinition","paramnames":[]},"vars":{"":null},"shortpath":"packages/pointer-events/PointerEvent.ts"},"description":"Prevent the default behaviour of the original Event
","name":"preventDefault","longname":"preventDefault","kind":"function","scope":"global","params":[],"___id":"T000002R003863","___s":true,"attribs":"","id":"preventDefault","signature":"()","ancestors":[]}]
\ No newline at end of file
+[{"comment":"/** @article /home/taye/proj/interact.js/jsdoc/index.md **/","meta":{"filename":"index.md","lineno":1,"columnno":0,"path":"","code":{},"shortpath":"jsdoc/index.md"},"kind":"article","source":"\n
\n","name":"index","filename":"index.md","title":"API Reference","longname":"article:index","description":"
","outfilename":"index.html","scope":"global","___id":"T000002R004724","___s":true,"attribs":"","id":"index","ancestors":[]},{"comment":"/**\n * Don't call listeners on the remaining targets\n */","meta":{"range":[668,771],"filename":"BaseEvent.ts","lineno":39,"columnno":2,"path":"../packages/core","code":{"id":"astnode100011478","name":"BaseEvent#stopImmediatePropagation","type":"MethodDefinition","paramnames":[]},"vars":{"":null},"shortpath":"packages/core/BaseEvent.ts"},"description":"Don't call listeners on the remaining targets
","name":"stopImmediatePropagation","longname":"BaseEvent#stopImmediatePropagation","kind":"function","memberof":"BaseEvent","scope":"instance","params":[],"___id":"T000002R001123","___s":true,"attribs":"","id":"stopImmediatePropagation","signature":"()","ancestors":[]},{"comment":"/**\n * Don't call any other listeners (even on the current target)\n */","meta":{"range":[541,600],"filename":"BaseEvent.ts","lineno":32,"columnno":2,"path":"../packages/core","code":{"id":"astnode100011468","name":"BaseEvent#stopPropagation","type":"MethodDefinition","paramnames":[]},"vars":{"":null},"shortpath":"packages/core/BaseEvent.ts"},"description":"Don't call any other listeners (even on the current target)
","name":"stopPropagation","longname":"BaseEvent#stopPropagation","kind":"function","memberof":"BaseEvent","scope":"instance","params":[],"___id":"T000002R001121","___s":true,"attribs":"","id":"stopPropagation","signature":"()","ancestors":[]},{"comment":"/**\n * Class of events fired on dropzones during drags with acceptable targets.\n */","meta":{"range":[297,757],"filename":"DropEvent.ts","lineno":18,"columnno":2,"path":"../packages/actions/drop","code":{"id":"astnode100002467","name":"DropEvent","type":"MethodDefinition","paramnames":["dropState","dragEvent","type"]},"vars":{"":null},"shortpath":"packages/actions/drop/DropEvent.ts"},"description":"Class of events fired on dropzones during drags with acceptable targets.
","name":"DropEvent","longname":"DropEvent","kind":"class","scope":"global","params":[],"___id":"T000003R000002","___s":true,"attribs":"","id":"DropEvent","signature":"()","ancestors":[]},{"comment":"/**\n * If this is a `dropactivate` event, the dropzone element will be\n * deactivated.\n *\n * If this is a `dragmove` or `dragenter`, a `dragleave` will be fired on the\n * dropzone element and more.\n */","meta":{"range":[978,2068],"filename":"DropEvent.ts","lineno":38,"columnno":2,"path":"../packages/actions/drop","code":{"id":"astnode100002551","name":"DropEvent#reject","type":"MethodDefinition","paramnames":[]},"vars":{"":null},"shortpath":"packages/actions/drop/DropEvent.ts"},"description":"If this is a dropactivate
event, the dropzone element will be\ndeactivated.
\nIf this is a dragmove
or dragenter
, a dragleave
will be fired on the\ndropzone element and more.
","name":"reject","longname":"DropEvent#reject","kind":"function","memberof":"DropEvent","scope":"instance","params":[],"___id":"T000002R000232","___s":true,"attribs":"","id":"reject","signature":"()","ancestors":["DropEvent#"]},{"comment":"/**\n * Returns or sets whether to prevent the browser's default behaviour in\n * response to pointer events. Can be set to:\n * - `'always'` to always prevent\n * - `'never'` to never prevent\n * - `'auto'` to let interact.js try to determine what would be best\n *\n * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n * @return {string | Interactable} The current setting or this Interactable\n */","meta":{"range":[2359,2413],"filename":"interactablePreventDefault.ts","lineno":75,"columnno":2,"path":"../packages/core","code":{"id":"astnode100014197","name":"Interactable.prototype.preventDefault","type":"Identifier","funcscope":"install","value":"preventDefault","paramnames":[]},"shortpath":"packages/core/interactablePreventDefault.ts"},"description":"Returns or sets whether to prevent the browser's default behaviour in\nresponse to pointer events. Can be set to:
\n\n'always'
to always prevent \n'never'
to never prevent \n'auto'
to let interact.js try to determine what would be best \n
","params":[{"type":{"names":["string"]},"optional":true,"description":"'always'
, 'never'
or 'auto'
","name":"newValue"}],"returns":[{"type":{"names":["string","Interactable"]},"description":"The current setting or this Interactable
"}],"name":"preventDefault","longname":"install~Interactable#preventDefault","kind":"member","memberof":"install~Interactable","scope":"instance","___id":"T000002R001340","___s":true,"attribs":"","id":"preventDefault","ancestors":[],"signature":""},{"comment":"/**\n * ```js\n * interact('#draggable').draggable(true)\n *\n * var rectables = interact('rect')\n * rectables\n * .gesturable(true)\n * .on('gesturemove', function (event) {\n * // ...\n * })\n * ```\n *\n * The methods of this variable can be used to set elements as interactables\n * and also to change various default settings.\n *\n * Calling it as a function and passing an element or a valid CSS selector\n * string returns an Interactable object which has various methods to configure\n * it.\n *\n * @global\n *\n * @param {Element | string} target The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */","meta":{"range":[905,1191],"filename":"interact.ts","lineno":43,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100025728","name":"exports.interact","type":"VariableDeclaration"},"shortpath":"packages/interact/interact.ts"},"description":"interact('#draggable').draggable(true)\n\nvar rectables = interact('rect')\nrectables\n .gesturable(true)\n .on('gesturemove', function (event) {\n // ...\n })\n
\nThe methods of this variable can be used to set elements as interactables\nand also to change various default settings.
\nCalling it as a function and passing an element or a valid CSS selector\nstring returns an Interactable object which has various methods to configure\nit.
","scope":"global","params":[{"type":{"names":["Element","string"]},"description":"The HTML or SVG Element to interact with\nor CSS selector
","name":"target"}],"returns":[{"type":{"names":["Interactable"]}}],"name":"interact","longname":"interact","kind":"member","___id":"T000002R002514","___s":true,"attribs":"(constant) ","id":"interact","ancestors":[],"signature":""},{"comment":"/**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */","meta":{"range":[5629,5922],"filename":"index.ts","lineno":210,"columnno":2,"path":"../packages/actions/drop","code":{"id":"astnode100003173","name":"interact.dynamicDrop","type":"FunctionExpression","paramnames":["newValue"]},"vars":{"scope.dynamicDrop":"scope.dynamicDrop"},"shortpath":"packages/actions/drop/index.ts"},"description":"Returns or sets whether the dimensions of dropzone elements are calculated\non every dragmove or only on dragstart for the default dropChecker
","params":[{"type":{"names":["boolean"]},"optional":true,"description":"True to check on each move. False to check only\nbefore start
","name":"newValue"}],"returns":[{"type":{"names":["boolean","interact"]},"description":"The current setting or interact
"}],"name":"dynamicDrop","longname":"interact.dynamicDrop","kind":"function","memberof":"interact","scope":"static","___id":"T000002R000292","___s":true,"attribs":"(static) ","id":".dynamicDrop","signature":"(newValueopt) → {boolean|interact}","ancestors":["interact."]},{"comment":"/** */","meta":{"range":[717,1017],"filename":"Interactable.ts","lineno":25,"columnno":2,"path":"../packages/core","code":{"id":"astnode100012740","name":"exports.Interactable","type":"MethodDefinition","paramnames":["target","options","defaultContext"]},"shortpath":"packages/core/Interactable.ts"},"name":"Interactable","longname":"Interactable","kind":"class","memberof":"Interactable","scope":"instance","___id":"T000003R000003","___s":true,"attribs":"","id":"Interactable","signature":"()","ancestors":[]},{"comment":"/**\n * ```js\n * interact('.resize-drag')\n * .resizable(true)\n * .draggable(true)\n * .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n *\n * if (interact.matchesSelector(event.target, '.drag-handle')) {\n * // force drag with handle target\n * action.name = drag\n * }\n * else {\n * // resize from the top and right edges\n * action.name = 'resize'\n * action.edges = { top: true, right: true }\n * }\n *\n * return action\n * })\n * ```\n *\n * Returns or sets the function used to check action to be performed on\n * pointerDown\n *\n * @param {function | null} [checker] A function which takes a pointer event,\n * defaultAction string, interactable, element and interaction as parameters\n * and returns an object with name property 'drag' 'resize' or 'gesture' and\n * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n * props.\n * @return {Function | Interactable} The checker function or this Interactable\n */","meta":{"range":[3573,3625],"filename":"InteractableMethods.ts","lineno":96,"columnno":2,"path":"../packages/auto-start","code":{"id":"astnode100011135","name":"Interactable.prototype.actionChecker","type":"Identifier","value":"actionChecker","paramnames":[]},"shortpath":"packages/auto-start/InteractableMethods.ts"},"description":"interact('.resize-drag')\n .resizable(true)\n .draggable(true)\n .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n\n if (interact.matchesSelector(event.target, '.drag-handle')) {\n // force drag with handle target\n action.name = drag\n }\n else {\n // resize from the top and right edges\n action.name = 'resize'\n action.edges = { top: true, right: true }\n }\n\n return action\n})\n
\nReturns or sets the function used to check action to be performed on\npointerDown
","params":[{"type":{"names":["function","null"]},"optional":true,"description":"A function which takes a pointer event,\ndefaultAction string, interactable, element and interaction as parameters\nand returns an object with name property 'drag' 'resize' or 'gesture' and\noptionally an edges
object with boolean 'top', 'left', 'bottom' and right\nprops.
","name":"checker"}],"returns":[{"type":{"names":["function","Interactable"]},"description":"The checker function or this Interactable
"}],"name":"actionChecker","longname":"Interactable#actionChecker","kind":"member","memberof":"Interactable","scope":"instance","___id":"T000002R001084","___s":true,"attribs":"","id":"actionChecker","ancestors":["#Interactable#"],"signature":""},{"comment":"/**\n * @deprecated\n *\n * A drag/resize/gesture is started only If the target of the `mousedown`,\n * `pointerdown` or `touchstart` event or any of it's parents match the given\n * CSS selector or Element.\n *\n * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\n * })\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to allow from any element\n * @return {string | Element | object} The current allowFrom value or this\n * Interactable\n */","meta":{"range":[2282,2509],"filename":"InteractableMethods.ts","lineno":69,"columnno":2,"path":"../packages/auto-start","code":{"id":"astnode100011115","name":"Interactable.prototype.allowFrom","type":"CallExpression","value":"","paramnames":[]},"shortpath":"packages/auto-start/InteractableMethods.ts"},"deprecated":"A drag/resize/gesture is started only If the target of the `mousedown`,\n`pointerdown` or `touchstart` event or any of it's parents match the given\nCSS selector or Element.\n\nDon't use this method. Instead set the `allowFrom` option for each action\nor for `pointerEvents`","examples":[{"caption":"","code":"interact(targett)\n .resizable({\n allowFrom: '.resize-handle',\n .pointerEvents({\n allowFrom: '.handle',,\n })"}],"params":[{"type":{"names":["string","Element","null"]},"optional":true,"description":"a CSS selector string, an\nElement or null
to allow from any element
","name":"newValue"}],"returns":[{"type":{"names":["string","Element","object"]},"description":"The current allowFrom value or this\nInteractable
"}],"name":"allowFrom","longname":"Interactable#allowFrom","kind":"member","memberof":"Interactable","scope":"instance","___id":"T000002R001083","___s":true,"attribs":"","id":"allowFrom","ancestors":["#Interactable#"],"signature":""},{"comment":"/**\n * Gets the selector context Node of the Interactable. The default is\n * `window.document`.\n *\n * @return {Node} The context Node of this Interactable\n */","meta":{"range":[5724,5765],"filename":"Interactable.ts","lineno":194,"columnno":2,"path":"../packages/core","code":{"id":"astnode100013277","name":"Interactable#context","type":"MethodDefinition","paramnames":[]},"vars":{"":null},"shortpath":"packages/core/Interactable.ts"},"description":"Gets the selector context Node of the Interactable. The default is\nwindow.document
.
","returns":[{"type":{"names":["Node"]},"description":"The context Node of this Interactable
"}],"name":"context","longname":"Interactable#context","kind":"function","memberof":"Interactable","scope":"instance","params":[],"___id":"T000002R001286","___s":true,"attribs":"","id":"context","signature":"() → {Node}","ancestors":["#Interactable#"]},{"comment":"/**\n * Returns or sets the mouse coordinate types used to calculate the\n * movement of the pointer.\n *\n * @param {string} [newValue] Use 'client' if you will be scrolling while\n * interacting; Use 'page' if you want autoScroll to work\n * @return {string | object} The current deltaSource or this Interactable\n */","meta":{"range":[5359,5548],"filename":"Interactable.ts","lineno":176,"columnno":2,"path":"../packages/core","code":{"id":"astnode100013247","name":"Interactable#deltaSource","type":"MethodDefinition","paramnames":["newValue"]},"vars":{"":null},"shortpath":"packages/core/Interactable.ts"},"description":"Returns or sets the mouse coordinate types used to calculate the\nmovement of the pointer.
","params":[{"type":{"names":["string"]},"optional":true,"description":"Use 'client' if you will be scrolling while\ninteracting; Use 'page' if you want autoScroll to work
","name":"newValue"}],"returns":[{"type":{"names":["string","object"]},"description":"The current deltaSource or this Interactable
"}],"name":"deltaSource","longname":"Interactable#deltaSource","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R001284","___s":true,"attribs":"","id":"deltaSource","signature":"(newValueopt) → {string|object}","ancestors":["#Interactable#"]},{"comment":"/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */","meta":{"range":[3218,3790],"filename":"drag.ts","lineno":99,"columnno":6,"path":"../packages/actions","code":{"id":"astnode100001355","name":"draggable","type":"FunctionExpression","value":"draggable"},"vars":{"this.options.drag.enabled":"Interactable#draggable#options.drag.enabled","this.options.drag.lockAxis":"Interactable#draggable#options.drag.lockAxis","this.options.drag.startAxis":"Interactable#draggable#options.drag.startAxis"},"shortpath":"packages/actions/drag.ts"},"description":"interact(element).draggable({\n onstart: function (event) {},\n onmove : function (event) {},\n onend : function (event) {},\n\n // the axis in which the first movement must be\n // for the drag sequence to start\n // 'xy' by default - any direction\n startAxis: 'x' || 'y' || 'xy',\n\n // 'xy' by default - don't restrict to one axis (move in any direction)\n // 'x' or 'y' to restrict movement to either axis\n // 'start' to restrict movement to the axis the drag started in\n lockAxis: 'x' || 'y' || 'xy' || 'start',\n\n // max number of drags that can happen concurrently\n // with elements of this Interactable. Infinity by default\n max: Infinity,\n\n // max number of drags that can target the same element+Interactable\n // 1 by default\n maxPerElement: 2\n})\n\nvar isDraggable = interact('element').draggable(); // true\n
\nGet or set whether drag actions can be performed on the target
","alias":"Interactable.prototype.draggable","params":[{"type":{"names":["boolean","object"]},"optional":true,"description":"true/false or An object with event\nlisteners to be fired on drag events (object makes the Interactable\ndraggable)
","name":"options"}],"returns":[{"type":{"names":["boolean","Interactable"]},"description":"boolean indicating if this can be the\ntarget of drag events, or this Interctable
"}],"name":"draggable","longname":"Interactable#draggable","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R000105","___s":true,"attribs":"","id":"draggable","signature":"(optionsopt) → {boolean|Interactable}","ancestors":["#Interactable#"]},{"comment":"/**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */","meta":{"range":[5073,5289],"filename":"index.ts","lineno":191,"columnno":2,"path":"../packages/actions/drop","code":{"id":"astnode100003148","name":"Interactable.prototype.dropCheck","type":"FunctionExpression","paramnames":["dragEvent","event","draggable","draggableElement","dropElement","rect"]},"shortpath":"packages/actions/drop/index.ts"},"description":"interact(target)\n.dropChecker(function(dragEvent, // related dragmove or dragend event\n event, // TouchEvent/PointerEvent/MouseEvent\n dropped, // bool result of the default checker\n dropzone, // dropzone Interactable\n dropElement, // dropzone elemnt\n draggable, // draggable Interactable\n draggableElement) {// draggable element\n\n return dropped && event.target.hasAttribute('allow-drop')\n}\n
","name":"dropCheck","longname":"Interactable#dropCheck","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R000291","___s":true,"attribs":"","id":"dropCheck","signature":"()","ancestors":["#Interactable#"]},{"comment":"/**\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {boolean | Interactable} The current setting or this Interactable\n */","meta":{"range":[4310,4410],"filename":"index.ts","lineno":147,"columnno":2,"path":"../packages/actions/drop","code":{"id":"astnode100003133","name":"Interactable.prototype.dropzone","type":"FunctionExpression","paramnames":["options"]},"shortpath":"packages/actions/drop/index.ts"},"description":"interact('.drop').dropzone({\n accept: '.can-drop' || document.getElementById('single-drop'),\n overlap: 'pointer' || 'center' || zeroToOne\n}\n
\nReturns or sets whether draggables can be dropped onto this target to\ntrigger drop events
\nDropzones can receive the following events:
\n\ndropactivate
and dropdeactivate
when an acceptable drag starts and ends \ndragenter
and dragleave
when a draggable enters and leaves the dropzone \ndragmove
when a draggable that has entered the dropzone is moved \ndrop
when a draggable is dropped into this dropzone \n
\nUse the accept
option to allow only elements that match the given CSS\nselector or element. The value can be:
\n\n- an Element - only that element can be dropped into this dropzone.
\n- a string, - the element being dragged must match it as a CSS selector.
\nnull
- accept options is cleared - it accepts any element. \n
\nUse the overlap
option to set how drops are checked for. The allowed\nvalues are:
\n\n'pointer'
, the pointer must be over the dropzone (default) \n'center'
, the draggable element's center must be over the dropzone \n- a number from 0-1 which is the
(intersection area) / (draggable area)
.\ne.g. 0.5
for drop to happen when half of the area of the draggable is\nover the dropzone \n
\nUse the checker
option to specify a function to check if a dragged element\nis over this Interactable.
","params":[{"type":{"names":["boolean","object","null"]},"optional":true,"description":"The new options to be set.
","name":"options"}],"returns":[{"type":{"names":["boolean","Interactable"]},"description":"The current setting or this Interactable
"}],"name":"dropzone","longname":"Interactable#dropzone","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R000290","___s":true,"attribs":"","id":"dropzone","signature":"(optionsopt) → {boolean|Interactable}","ancestors":["#Interactable#"]},{"comment":"/**\n * Calls listeners for the given InteractEvent type bound globally\n * and directly to this Interactable\n *\n * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n * Interactable\n * @return {Interactable} this Interactable\n */","meta":{"range":[7047,7112],"filename":"Interactable.ts","lineno":242,"columnno":2,"path":"../packages/core","code":{"id":"astnode100013430","name":"Interactable#fire","type":"MethodDefinition","paramnames":["iEvent"]},"vars":{"":null},"shortpath":"packages/core/Interactable.ts"},"description":"Calls listeners for the given InteractEvent type bound globally\nand directly to this Interactable
","params":[{"type":{"names":["InteractEvent"]},"description":"The InteractEvent object to be fired on this\nInteractable
","name":"iEvent"}],"returns":[{"type":{"names":["Interactable"]},"description":"this Interactable
"}],"name":"fire","longname":"Interactable#fire","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R001291","___s":true,"attribs":"","id":"fire","signature":"(iEvent) → {Interactable}","ancestors":["#Interactable#"]},{"comment":"/**\n * ```js\n * interact(element).gesturable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // limit multiple gestures.\n * // See the explanation in {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isGestureable = interact(element).gesturable()\n * ```\n *\n * Gets or sets whether multitouch gestures can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on gesture events (makes the Interactable gesturable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of gesture events, or this Interactable\n */","meta":{"range":[1099,1513],"filename":"gesture.ts","lineno":68,"columnno":2,"path":"../packages/actions","code":{"id":"astnode100005536","name":"Interactable.prototype.gesturable","type":"FunctionExpression","paramnames":["options"]},"vars":{"this.options.gesture.enabled":"Interactable#gesturable#options.gesture.enabled"},"shortpath":"packages/actions/gesture.ts"},"description":"interact(element).gesturable({\n onstart: function (event) {},\n onmove : function (event) {},\n onend : function (event) {},\n\n // limit multiple gestures.\n // See the explanation in {@link Interactable.draggable} example\n max: Infinity,\n maxPerElement: 1,\n})\n\nvar isGestureable = interact(element).gesturable()\n
\nGets or sets whether multitouch gestures can be performed on the target
","params":[{"type":{"names":["boolean","object"]},"optional":true,"description":"true/false or An object with event\nlisteners to be fired on gesture events (makes the Interactable gesturable)
","name":"options"}],"returns":[{"type":{"names":["boolean","Interactable"]},"description":"A boolean indicating if this can be the\ntarget of gesture events, or this Interactable
"}],"name":"gesturable","longname":"Interactable#gesturable","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R000507","___s":true,"attribs":"","id":"gesturable","signature":"(optionsopt) → {boolean|Interactable}","ancestors":["#Interactable#"]},{"comment":"/**\n * The default function to get an Interactables bounding rect. Can be\n * overridden using {@link Interactable.rectChecker}.\n *\n * @param {Element} [element] The element to measure.\n * @return {object} The object's bounding rectangle.\n */","meta":{"range":[3423,3665],"filename":"Interactable.ts","lineno":105,"columnno":2,"path":"../packages/core","code":{"id":"astnode100013097","name":"Interactable#getRect","type":"MethodDefinition","paramnames":["element"]},"vars":{"":null},"shortpath":"packages/core/Interactable.ts"},"description":"The default function to get an Interactables bounding rect. Can be\noverridden using {@link Interactable.rectChecker}.
","params":[{"type":{"names":["Element"]},"optional":true,"description":"The element to measure.
","name":"element"}],"returns":[{"type":{"names":["object"]},"description":"The object's bounding rectangle.
"}],"name":"getRect","longname":"Interactable#getRect","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R001274","___s":true,"attribs":"","id":"getRect","signature":"(elementopt) → {object}","ancestors":["#Interactable#"]},{"comment":"/**\n * ```js\n * interact(element, { ignoreFrom: document.getElementById('no-action') })\n * // or\n * interact(element).ignoreFrom('input, textarea, a')\n * ```\n * @deprecated\n * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n * of it's parents match the given CSS selector or Element, no\n * drag/resize/gesture is started.\n *\n * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\n * })\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to not ignore any elements\n * @return {string | Element | object} The current ignoreFrom value or this\n * Interactable\n */","meta":{"range":[1323,1554],"filename":"InteractableMethods.ts","lineno":37,"columnno":2,"path":"../packages/auto-start","code":{"id":"astnode100011095","name":"Interactable.prototype.ignoreFrom","type":"CallExpression","value":"","paramnames":[]},"shortpath":"packages/auto-start/InteractableMethods.ts"},"description":"interact(element, { ignoreFrom: document.getElementById('no-action') })\n// or\ninteract(element).ignoreFrom('input, textarea, a')\n
","deprecated":"If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\nof it's parents match the given CSS selector or Element, no\ndrag/resize/gesture is started.\n\nDon't use this method. Instead set the `ignoreFrom` option for each action\nor for `pointerEvents`","examples":[{"caption":"","code":"interact(targett)\n .draggable({\n ignoreFrom: 'input, textarea, a[href]'',\n })\n .pointerEvents({\n ignoreFrom: '[no-pointer]',\n })"}],"params":[{"type":{"names":["string","Element","null"]},"optional":true,"description":"a CSS selector string, an\nElement or null
to not ignore any elements
","name":"newValue"}],"returns":[{"type":{"names":["string","Element","object"]},"description":"The current ignoreFrom value or this\nInteractable
"}],"name":"ignoreFrom","longname":"Interactable#ignoreFrom","kind":"member","memberof":"Interactable","scope":"instance","___id":"T000002R001082","___s":true,"attribs":"","id":"ignoreFrom","ancestors":["#Interactable#"],"signature":""},{"comment":"/**\n * Removes an InteractEvent, pointerEvent or DOM event listener.\n *\n * @param {string | array | object} types The types of events that were\n * listened for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * removeEventListener\n * @return {Interactable} This Interactable\n */","meta":{"range":[8982,9074],"filename":"Interactable.ts","lineno":301,"columnno":2,"path":"../packages/core","code":{"id":"astnode100013593","name":"Interactable#off","type":"MethodDefinition","paramnames":["types","listener","options"]},"vars":{"":null},"shortpath":"packages/core/Interactable.ts"},"description":"Removes an InteractEvent, pointerEvent or DOM event listener.
","params":[{"type":{"names":["string","array","object"]},"description":"The types of events that were\nlistened for
","name":"types"},{"type":{"names":["function","array","object"]},"optional":true,"description":"The event listener function(s)
","name":"listener"},{"type":{"names":["object","boolean"]},"optional":true,"description":"options object or useCapture flag for\nremoveEventListener
","name":"options"}],"returns":[{"type":{"names":["Interactable"]},"description":"This Interactable
"}],"name":"off","longname":"Interactable#off","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R001301","___s":true,"attribs":"","id":"off","signature":"(types, listeneropt, optionsopt) → {Interactable}","ancestors":["#Interactable#"]},{"comment":"/**\n * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n *\n * @param {string | array | object} types The types of events to listen\n * for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * addEventListener\n * @return {Interactable} This Interactable\n */","meta":{"range":[8479,8569],"filename":"Interactable.ts","lineno":287,"columnno":2,"path":"../packages/core","code":{"id":"astnode100013577","name":"Interactable#on","type":"MethodDefinition","paramnames":["types","listener","options"]},"vars":{"":null},"shortpath":"packages/core/Interactable.ts"},"description":"Binds a listener for an InteractEvent, pointerEvent or DOM event.
","params":[{"type":{"names":["string","array","object"]},"description":"The types of events to listen\nfor
","name":"types"},{"type":{"names":["function","array","object"]},"optional":true,"description":"The event listener function(s)
","name":"listener"},{"type":{"names":["object","boolean"]},"optional":true,"description":"options object or useCapture flag for\naddEventListener
","name":"options"}],"returns":[{"type":{"names":["Interactable"]},"description":"This Interactable
"}],"name":"on","longname":"Interactable#on","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R001300","___s":true,"attribs":"","id":"on","signature":"(types, listeneropt, optionsopt) → {Interactable}","ancestors":["#Interactable#"]},{"comment":"/**\n * Gets or sets the origin of the Interactable's element. The x and y\n * of the origin will be subtracted from action event coordinates.\n *\n * @param {Element | object | string} [origin] An HTML or SVG Element whose\n * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n * or any CSS selector\n *\n * @return {object} The current origin or this Interactable\n */","meta":{"range":[4948,5025],"filename":"Interactable.ts","lineno":162,"columnno":2,"path":"../packages/core","code":{"id":"astnode100013235","name":"Interactable#origin","type":"MethodDefinition","paramnames":["newValue"]},"vars":{"":null},"shortpath":"packages/core/Interactable.ts"},"description":"Gets or sets the origin of the Interactable's element. The x and y\nof the origin will be subtracted from action event coordinates.
","params":[{"type":{"names":["Element","object","string"]},"optional":true,"description":"An HTML or SVG Element whose\nrect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\nor any CSS selector
","name":"origin"}],"returns":[{"type":{"names":["object"]},"description":"The current origin or this Interactable
"}],"name":"origin","longname":"Interactable#origin","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R001283","___s":true,"attribs":"","id":"origin","signature":"(originopt) → {object}","ancestors":["#Interactable#"]},{"comment":"/**\n * Returns or sets the function used to calculate the interactable's\n * element's rectangle\n *\n * @param {function} [checker] A function which returns this Interactable's\n * bounding rectangle. See {@link Interactable.getRect}\n * @return {function | object} The checker function or this Interactable\n */","meta":{"range":[3994,4210],"filename":"Interactable.ts","lineno":124,"columnno":2,"path":"../packages/core","code":{"id":"astnode100013146","name":"Interactable#rectChecker","type":"MethodDefinition","paramnames":["checker"]},"vars":{"":null},"shortpath":"packages/core/Interactable.ts"},"description":"Returns or sets the function used to calculate the interactable's\nelement's rectangle
","params":[{"type":{"names":["function"]},"optional":true,"description":"A function which returns this Interactable's\nbounding rectangle. See {@link Interactable.getRect}
","name":"checker"}],"returns":[{"type":{"names":["function","object"]},"description":"The checker function or this Interactable
"}],"name":"rectChecker","longname":"Interactable#rectChecker","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R001277","___s":true,"attribs":"","id":"rectChecker","signature":"(checkeropt) → {function|object}","ancestors":["#Interactable#"]},{"comment":"/**\n * ```js\n * const interactable = interact(target)\n * const drag = { name: drag, axis: 'x' }\n * const resize = { name: resize, edges: { left: true, bottom: true }\n *\n * interactable.reflow(drag)\n * interactable.reflow(resize)\n * ```\n *\n * Start an action sequence to re-apply modifiers, check drops, etc.\n *\n * @param { Object } action The action to begin\n * @param { string } action.name The name of the action\n * @returns { Promise }\n */","meta":{"range":[1432,1527],"filename":"index.ts","lineno":54,"columnno":2,"path":"../packages/reflow","code":{"id":"astnode100036377","name":"Interactable.prototype.reflow","type":"FunctionExpression","paramnames":["action"]},"shortpath":"packages/reflow/index.ts"},"description":"const interactable = interact(target)\nconst drag = { name: drag, axis: 'x' }\nconst resize = { name: resize, edges: { left: true, bottom: true }\n\ninteractable.reflow(drag)\ninteractable.reflow(resize)\n
\nStart an action sequence to re-apply modifiers, check drops, etc.
","params":[{"type":{"names":["Object"]},"description":"The action to begin
","name":"action","subparams":[{"type":{"names":["string"]},"description":"The name of the action
","name":"name"}]},null],"returns":[{"type":{"names":["Promise."]}}],"name":"reflow","longname":"Interactable#reflow","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R003877","___s":true,"attribs":"","id":"reflow","signature":"(action) → {Promise.<Interactable>}","ancestors":["#Interactable#"]},{"comment":"/**\n * ```js\n * interact(element).resizable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * edges: {\n * top : true, // Use pointer coords to check for resize.\n * left : false, // Disable resizing from left edge.\n * bottom: '.resize-s',// Resize if pointer target matches selector\n * right : handleEl // Resize if pointer target is the given Element\n * },\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height are adjusted at a 1:1 ratio.\n * square: false,\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height maintain the aspect ratio they had when resizing started.\n * preserveAspectRatio: false,\n *\n * // a value of 'none' will limit the resize rect to a minimum of 0x0\n * // 'negate' will allow the rect to have negative width/height\n * // 'reposition' will keep the width/height positive by swapping\n * // the top and bottom edges and/or swapping the left and right edges\n * invert: 'none' || 'negate' || 'reposition'\n *\n * // limit multiple resizes.\n * // See the explanation in the {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isResizeable = interact(element).resizable()\n * ```\n *\n * Gets or sets whether resize actions can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on resize events (object makes the Interactable\n * resizable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of resize elements, or this Interactable\n */","meta":{"range":[2842,2945],"filename":"resize.ts","lineno":84,"columnno":2,"path":"../packages/actions","code":{"id":"astnode100006601","name":"Interactable.prototype.resizable","type":"FunctionExpression","paramnames":["options"]},"shortpath":"packages/actions/resize.ts"},"description":"interact(element).resizable({\n onstart: function (event) {},\n onmove : function (event) {},\n onend : function (event) {},\n\n edges: {\n top : true, // Use pointer coords to check for resize.\n left : false, // Disable resizing from left edge.\n bottom: '.resize-s',// Resize if pointer target matches selector\n right : handleEl // Resize if pointer target is the given Element\n },\n\n // Width and height can be adjusted independently. When `true`, width and\n // height are adjusted at a 1:1 ratio.\n square: false,\n\n // Width and height can be adjusted independently. When `true`, width and\n // height maintain the aspect ratio they had when resizing started.\n preserveAspectRatio: false,\n\n // a value of 'none' will limit the resize rect to a minimum of 0x0\n // 'negate' will allow the rect to have negative width/height\n // 'reposition' will keep the width/height positive by swapping\n // the top and bottom edges and/or swapping the left and right edges\n invert: 'none' || 'negate' || 'reposition'\n\n // limit multiple resizes.\n // See the explanation in the {@link Interactable.draggable} example\n max: Infinity,\n maxPerElement: 1,\n})\n\nvar isResizeable = interact(element).resizable()\n
\nGets or sets whether resize actions can be performed on the target
","params":[{"type":{"names":["boolean","object"]},"optional":true,"description":"true/false or An object with event\nlisteners to be fired on resize events (object makes the Interactable\nresizable)
","name":"options"}],"returns":[{"type":{"names":["boolean","Interactable"]},"description":"A boolean indicating if this can be the\ntarget of resize elements, or this Interactable
"}],"name":"resizable","longname":"Interactable#resizable","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R000623","___s":true,"attribs":"","id":"resizable","signature":"(optionsopt) → {boolean|Interactable}","ancestors":["#Interactable#"]},{"comment":"/**\n * Reset the options of this Interactable\n *\n * @param {object} options The new settings to apply\n * @return {object} This Interactable\n */","meta":{"range":[9235,9853],"filename":"Interactable.ts","lineno":315,"columnno":2,"path":"../packages/core","code":{"id":"astnode100013609","name":"Interactable#set","type":"MethodDefinition","paramnames":["options"]},"vars":{"":null},"shortpath":"packages/core/Interactable.ts"},"description":"Reset the options of this Interactable
","params":[{"type":{"names":["object"]},"description":"The new settings to apply
","name":"options"}],"returns":[{"type":{"names":["object"]},"description":"This Interactable
"}],"name":"set","longname":"Interactable#set","kind":"function","memberof":"Interactable","scope":"instance","___id":"T000002R001302","___s":true,"attribs":"","id":"set","signature":"(options) → {object}","ancestors":["#Interactable#"]},{"comment":"/**\n * Returns or sets whether the the cursor should be changed depending on the\n * action that would be performed if the mouse were pressed and dragged.\n *\n * @param {boolean} [newValue]\n * @return {boolean | Interactable} The current setting or this Interactable\n */","meta":{"range":[3913,3961],"filename":"InteractableMethods.ts","lineno":129,"columnno":2,"path":"../packages/auto-start","code":{"id":"astnode100011143","name":"Interactable.prototype.styleCursor","type":"Identifier","value":"styleCursor","paramnames":[]},"shortpath":"packages/auto-start/InteractableMethods.ts"},"description":"Returns or sets whether the the cursor should be changed depending on the\naction that would be performed if the mouse were pressed and dragged.
","params":[{"type":{"names":["boolean"]},"optional":true,"name":"newValue"}],"returns":[{"type":{"names":["boolean","Interactable"]},"description":"The current setting or this Interactable
"}],"name":"styleCursor","longname":"Interactable#styleCursor","kind":"member","memberof":"Interactable","scope":"instance","___id":"T000002R001085","___s":true,"attribs":"","id":"styleCursor","ancestors":["#Interactable#"],"signature":""},{"comment":"/**\n * Remove this interactable from the list of interactables and remove it's\n * action capabilities and event listeners\n *\n * @return {interact}\n */","meta":{"range":[10021,10835],"filename":"Interactable.ts","lineno":348,"columnno":2,"path":"../packages/core","code":{"id":"astnode100013722","name":"Interactable#unset","type":"MethodDefinition","paramnames":[]},"vars":{"":null},"shortpath":"packages/core/Interactable.ts"},"description":"Remove this interactable from the list of interactables and remove it's\naction capabilities and event listeners
","returns":[{"type":{"names":["interact"]}}],"name":"unset","longname":"Interactable#unset","kind":"function","memberof":"Interactable","scope":"instance","params":[],"___id":"T000002R001310","___s":true,"attribs":"","id":"unset","signature":"() → {interact}","ancestors":["#Interactable#"]},{"comment":"/** */","meta":{"range":[516,2942],"filename":"InteractEvent.ts","lineno":20,"columnno":2,"path":"../packages/core","code":{"id":"astnode100014806","name":"exports.InteractEvent","type":"MethodDefinition","paramnames":["interaction","event","actionName","phase","element","related","preEnd","type"]},"vars":{"":null},"shortpath":"packages/core/InteractEvent.ts"},"name":"InteractEvent","longname":"InteractEvent#InteractEvent","kind":"class","memberof":"InteractEvent","scope":"instance","params":[],"___id":"T000003R000004","___s":true,"attribs":"","id":"InteractEvent","signature":"()","ancestors":[]},{"comment":"/**\n * Don't call listeners on the remaining targets\n */","meta":{"range":[4733,4836],"filename":"InteractEvent.ts","lineno":193,"columnno":2,"path":"../packages/core","code":{"id":"astnode100015652","name":"InteractEvent#stopImmediatePropagation","type":"MethodDefinition","paramnames":[]},"vars":{"":null},"shortpath":"packages/core/InteractEvent.ts"},"description":"Don't call listeners on the remaining targets
","name":"stopImmediatePropagation","longname":"InteractEvent#stopImmediatePropagation","kind":"function","memberof":"InteractEvent","scope":"instance","params":[],"___id":"T000002R001486","___s":true,"attribs":"","id":"stopImmediatePropagation","signature":"()","ancestors":[]},{"comment":"/**\n * Don't call any other listeners (even on the current target)\n */","meta":{"range":[4918,4977],"filename":"InteractEvent.ts","lineno":200,"columnno":2,"path":"../packages/core","code":{"id":"astnode100015666","name":"InteractEvent#stopPropagation","type":"MethodDefinition","paramnames":[]},"vars":{"":null},"shortpath":"packages/core/InteractEvent.ts"},"description":"Don't call any other listeners (even on the current target)
","name":"stopPropagation","longname":"InteractEvent#stopPropagation","kind":"function","memberof":"InteractEvent","scope":"instance","params":[],"___id":"T000002R001489","___s":true,"attribs":"","id":"stopPropagation","signature":"()","ancestors":[]},{"comment":"/**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('move', function (event) {\n * if (event.pageX > 1000) {\n * // end the current action\n * event.interaction.end()\n * // stop all further listeners from being called\n * event.stopImmediatePropagation()\n * }\n * })\n * ```\n *\n * @param {PointerEvent} [event]\n */","meta":{"range":[8453,8812],"filename":"Interaction.ts","lineno":324,"columnno":2,"path":"../packages/core","code":{"id":"astnode100018626","name":"Interaction#end","type":"MethodDefinition","paramnames":["event"]},"vars":{"":null},"shortpath":"packages/core/Interaction.ts"},"description":"interact(target)\n .draggable(true)\n .on('move', function (event) {\n if (event.pageX > 1000) {\n // end the current action\n event.interaction.end()\n // stop all further listeners from being called\n event.stopImmediatePropagation()\n }\n })\n
","params":[{"type":{"names":["PointerEvent"]},"optional":true,"name":"event"}],"name":"end","longname":"Interaction#end","kind":"function","memberof":"Interaction","scope":"instance","___id":"T000002R001781","___s":true,"attribs":"","id":"end","signature":"(eventopt)","ancestors":[]},{"comment":"/**\n * @alias Interaction.prototype.move\n */","meta":{"range":[1550,1702],"filename":"Interaction.ts","lineno":97,"columnno":2,"path":"../packages/core","code":{"id":"astnode100017829","name":"doMove","type":"ClassProperty"},"shortpath":"packages/core/Interaction.ts"},"alias":"Interaction.prototype.move","name":"move","longname":"Interaction#move","kind":"member","memberof":"Interaction","scope":"instance","___id":"T000002R001709","___s":true,"attribs":"","id":"move","ancestors":[],"signature":""},{"comment":"/**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('dragmove', function (event) {\n * if (someCondition) {\n * // change the snap settings\n * event.interactable.draggable({ snap: { targets: [] }})\n * // fire another move event with re-calculated snap\n * event.interaction.move()\n * }\n * })\n * ```\n *\n * Force a move of the current action at the same coordinates. Useful if\n * snap/restrict has been changed and you want a movement with the new\n * settings.\n */","meta":{"range":[6988,7295],"filename":"Interaction.ts","lineno":263,"columnno":2,"path":"../packages/core","code":{"id":"astnode100018464","name":"Interaction#move","type":"MethodDefinition","paramnames":["signalArg"]},"vars":{"":null},"shortpath":"packages/core/Interaction.ts"},"description":"interact(target)\n .draggable(true)\n .on('dragmove', function (event) {\n if (someCondition) {\n // change the snap settings\n event.interactable.draggable({ snap: { targets: [] }})\n // fire another move event with re-calculated snap\n event.interaction.move()\n }\n })\n
\nForce a move of the current action at the same coordinates. Useful if\nsnap/restrict has been changed and you want a movement with the new\nsettings.
","name":"move","longname":"Interaction#move","kind":"function","memberof":"Interaction","scope":"instance","params":[],"___id":"T000002R001761","___s":true,"attribs":"","id":"move","signature":"()","ancestors":[]},{"comment":"/**\n * ```js\n * interact(target)\n * .draggable({\n * // disable the default drag start by down->move\n * manualStart: true\n * })\n * // start dragging after the user holds the pointer down\n * .on('hold', function (event) {\n * var interaction = event.interaction\n *\n * if (!interaction.interacting()) {\n * interaction.start({ name: 'drag' },\n * event.interactable,\n * event.currentTarget)\n * }\n * })\n * ```\n *\n * Start an action with the given Interactable and Element as tartgets. The\n * action must be enabled for the target Interactable and an appropriate\n * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n *\n * Use it with `interactable.able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {object} interact\n */","meta":{"range":[4121,4763],"filename":"Interaction.ts","lineno":155,"columnno":2,"path":"../packages/core","code":{"id":"astnode100018009","name":"Interaction#start","type":"MethodDefinition","paramnames":["action","interactable","element"]},"vars":{"":null},"shortpath":"packages/core/Interaction.ts"},"description":"interact(target)\n .draggable({\n // disable the default drag start by down->move\n manualStart: true\n })\n // start dragging after the user holds the pointer down\n .on('hold', function (event) {\n var interaction = event.interaction\n\n if (!interaction.interacting()) {\n interaction.start({ name: 'drag' },\n event.interactable,\n event.currentTarget)\n }\n})\n
\nStart an action with the given Interactable and Element as tartgets. The\naction must be enabled for the target Interactable and an appropriate\nnumber of pointers must be held down - 1 for drag/resize, 2 for gesture.
\nUse it with interactable.<action>able({ manualStart: false })
to always\nstart actions manually
","params":[{"type":{"names":["object"]},"description":"The action to be performed - drag, resize, etc.
","name":"action"},{"type":{"names":["Interactable"]},"description":"The Interactable to target
","name":"target"},{"type":{"names":["Element"]},"description":"The DOM Element to target
","name":"element"}],"returns":[{"type":{"names":["object"]},"description":"interact
"}],"name":"start","longname":"Interaction#start","kind":"function","memberof":"Interaction","scope":"instance","___id":"T000002R001735","___s":true,"attribs":"","id":"start","signature":"(action, target, element) → {object}","ancestors":[]},{"comment":"/** */","meta":{"range":[8962,9190],"filename":"Interaction.ts","lineno":334,"columnno":2,"path":"../packages/core","code":{"id":"astnode100018711","name":"Interaction#stop","type":"MethodDefinition","paramnames":[]},"vars":{"":null},"shortpath":"packages/core/Interaction.ts"},"name":"stop","longname":"Interaction#stop","kind":"function","memberof":"Interaction","scope":"instance","params":[],"___id":"T000002R001792","___s":true,"attribs":"","id":"stop","signature":"()","ancestors":[]},{"comment":"/** */","meta":{"range":[184,1167],"filename":"PointerEvent.ts","lineno":7,"columnno":2,"path":"../packages/pointer-events","code":{"id":"astnode100036013","name":"module.exports","type":"MethodDefinition","paramnames":["type","pointer","event","eventTarget","interaction","timeStamp"]},"shortpath":"packages/pointer-events/PointerEvent.ts"},"name":"exports","longname":"module.exports","kind":"class","memberof":"module","scope":"static","___id":"T000003R000005","___s":true,"attribs":"","id":"exports","signature":"()","ancestors":[]},{"comment":"/** @module interact */","meta":{"filename":"interact.ts","lineno":1,"columnno":0,"path":"../packages/interact","code":{},"shortpath":"packages/interact/interact.ts"},"kind":"module","name":"interact","longname":"module:interact","___id":"T000004R000002","___s":true,"attribs":"","id":"interact","ancestors":[],"modules":[]},{"comment":"/**\n * Returns an object which exposes internal data\n * @alias module:interact.debug\n *\n * @return {object} An object with properties that outline the current state\n * and expose internal functions and variables\n */","meta":{"range":[4549,4571],"filename":"interact.ts","lineno":210,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100026117","name":"interact.debug","type":"Identifier","value":"debug","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Returns an object which exposes internal data
","alias":"module:interact.debug","returns":[{"type":{"names":["object"]},"description":"An object with properties that outline the current state\nand expose internal functions and variables
"}],"name":"debug","longname":"module:interact.debug","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002537","___s":true,"attribs":"(static) ","id":".debug","ancestors":["interact."],"signature":""},{"comment":"/**\n * Check if an element or selector has been set with the {@link interact}\n * function\n *\n * @alias module:interact.isSet\n *\n * @param {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */","meta":{"range":[1739,1761],"filename":"interact.ts","lineno":95,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100025794","name":"interact.isSet","type":"Identifier","value":"isSet","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Check if an element or selector has been set with the {@link interact}\nfunction
","alias":"module:interact.isSet","params":[{"type":{"names":["Element"]},"description":"The Element being searched for
","name":"element"}],"returns":[{"type":{"names":["boolean"]},"description":"Indicates if the element or CSS selector was previously\npassed to interact
"}],"name":"isSet","longname":"module:interact.isSet","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002521","___s":true,"attribs":"(static) ","id":".isSet","ancestors":["interact."],"signature":""},{"comment":"/**\n * Returns or sets the maximum number of concurrent interactions allowed. By\n * default only 1 interaction is allowed at a time (for backwards\n * compatibility). To allow multiple interactions on the same Interactables and\n * elements, you need to enable it in the draggable, resizable and gesturable\n * `'max'` and `'maxPerElement'` options.\n *\n * @alias module:interact.maxInteractions\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n */","meta":{"range":[2849,2920],"filename":"base.ts","lineno":120,"columnno":2,"path":"../packages/auto-start","code":{"id":"astnode100009663","name":"interact.maxInteractions","type":"ArrowFunctionExpression","paramnames":["newValue"]},"shortpath":"packages/auto-start/base.ts"},"description":"Returns or sets the maximum number of concurrent interactions allowed. By\ndefault only 1 interaction is allowed at a time (for backwards\ncompatibility). To allow multiple interactions on the same Interactables and\nelements, you need to enable it in the draggable, resizable and gesturable\n'max'
and 'maxPerElement'
options.
","alias":"module:interact.maxInteractions","params":[{"type":{"names":["number"]},"optional":true,"description":"Any number. newValue <= 0 means no interactions.
","name":"newValue"}],"name":"maxInteractions","longname":"module:interact.maxInteractions","kind":"function","memberof":"module:interact","scope":"static","___id":"T000002R000939","___s":true,"attribs":"(static) ","id":".maxInteractions","signature":"(newValueopt)","ancestors":["interact."]},{"comment":"/**\n * Removes a global InteractEvent listener or DOM event from `document`\n *\n * @alias module:interact.off\n *\n * @param {string | array | object} type The types of events that were listened\n * for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} options [options] object or useCapture flag for\n * removeEventListener\n * @return {object} interact\n */","meta":{"range":[3567,3585],"filename":"interact.ts","lineno":161,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100025965","name":"interact.off","type":"Identifier","value":"off","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Removes a global InteractEvent listener or DOM event from document
","alias":"module:interact.off","params":[{"type":{"names":["string","array","object"]},"description":"The types of events that were listened\nfor
","name":"type"},{"type":{"names":["function"]},"description":"The listener function to be removed
","name":"listener"},{"type":{"names":["object","boolean"]},"description":"[options] object or useCapture flag for\nremoveEventListener
","name":"options"}],"returns":[{"type":{"names":["object"]},"description":"interact
"}],"name":"off","longname":"module:interact.off","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002530","___s":true,"attribs":"(static) ","id":".off","ancestors":["interact."],"signature":""},{"comment":"/**\n * Add a global listener for an InteractEvent or adds a DOM event to `document`\n *\n * @alias module:interact.on\n *\n * @param {string | array | object} type The types of events to listen for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] object or useCapture flag for\n * addEventListener\n * @return {object} interact\n */","meta":{"range":[2243,2259],"filename":"interact.ts","lineno":110,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100025820","name":"interact.on","type":"Identifier","value":"on","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Add a global listener for an InteractEvent or adds a DOM event to document
","alias":"module:interact.on","params":[{"type":{"names":["string","array","object"]},"description":"The types of events to listen for
","name":"type"},{"type":{"names":["function"]},"description":"The function event (s)
","name":"listener"},{"type":{"names":["object","boolean"]},"optional":true,"description":"object or useCapture flag for\naddEventListener
","name":"options"}],"returns":[{"type":{"names":["object"]},"description":"interact
"}],"name":"on","longname":"module:interact.on","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002523","___s":true,"attribs":"(static) ","id":".on","ancestors":["interact."],"signature":""},{"comment":"/**\n * Returns or sets the distance the pointer must be moved before an action\n * sequence occurs. This also affects tolerance for tap events.\n *\n * @alias module:interact.pointerMoveTolerance\n *\n * @param {number} [newValue] The movement from the start position must be greater than this value\n * @return {interact | number}\n */","meta":{"range":[6195,6247],"filename":"interact.ts","lineno":269,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100026260","name":"interact.pointerMoveTolerance","type":"Identifier","value":"pointerMoveTolerance","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Returns or sets the distance the pointer must be moved before an action\nsequence occurs. This also affects tolerance for tap events.
","alias":"module:interact.pointerMoveTolerance","params":[{"type":{"names":["number"]},"optional":true,"description":"The movement from the start position must be greater than this value
","name":"newValue"}],"returns":[{"type":{"names":["interact","number"]}}],"name":"pointerMoveTolerance","longname":"module:interact.pointerMoveTolerance","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002554","___s":true,"attribs":"(static) ","id":".pointerMoveTolerance","ancestors":["interact."],"signature":""},{"comment":"/**\n * Cancels all interactions (end events are not fired)\n *\n * @alias module:interact.stop\n *\n * @return {object} interact\n */","meta":{"range":[5717,5737],"filename":"interact.ts","lineno":253,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100026234","name":"interact.stop","type":"Identifier","value":"stop","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Cancels all interactions (end events are not fired)
","alias":"module:interact.stop","returns":[{"type":{"names":["object"]},"description":"interact
"}],"name":"stop","longname":"module:interact.stop","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002551","___s":true,"attribs":"(static) ","id":".stop","ancestors":["interact."],"signature":""},{"comment":"/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */","meta":{"range":[5456,5508],"filename":"interact.ts","lineno":243,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100026221","name":"interact.supportsPointerEvent","type":"Identifier","value":"supportsPointerEvent","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"alias":"module:interact.supportsPointerEvent","returns":[{"type":{"names":["boolean"]},"description":"Whether or not the browser supports PointerEvents
"}],"name":"supportsPointerEvent","longname":"module:interact.supportsPointerEvent","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002549","___s":true,"attribs":"(static) ","id":".supportsPointerEvent","ancestors":["interact."],"signature":""},{"comment":"/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */","meta":{"range":[5223,5261],"filename":"interact.ts","lineno":233,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100026208","name":"interact.supportsTouch","type":"Identifier","value":"supportsTouch","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"alias":"module:interact.supportsTouch","returns":[{"type":{"names":["boolean"]},"description":"Whether or not the browser supports touch input
"}],"name":"supportsTouch","longname":"module:interact.supportsTouch","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002547","___s":true,"attribs":"(static) ","id":".supportsTouch","ancestors":["interact."],"signature":""},{"comment":"/**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n * @param {Object} plugin\n * @param {function} plugin.install\n * @return {interact}\n */","meta":{"range":[1337,1355],"filename":"interact.ts","lineno":79,"columnno":0,"path":"../packages/interact","code":{"id":"astnode100025774","name":"interact.use","type":"Identifier","value":"use","paramnames":[]},"shortpath":"packages/interact/interact.ts"},"description":"Use a plugin
","alias":"module:interact.use","params":[{"type":{"names":["Object"]},"name":"plugin"},{"type":{"names":["function"]},"name":"plugin.install"}],"returns":[{"type":{"names":["interact"]}}],"name":"use","longname":"module:interact.use","kind":"member","memberof":"module:interact","scope":"static","___id":"T000002R002519","___s":true,"attribs":"(static) ","id":".use","ancestors":["interact."],"signature":""},{"comment":"/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\n * interact(target).resizable({\n * snapEdges: {\n * targets: [interact.snappers.grid({ x: 100, y: 50 })],\n * },\n * })\n *\n * interact(target).resizable({\n * snapEdges: {\n * targets: [\n * interact.snappers.grid({\n * top: 50,\n * left: 50,\n * bottom: 100,\n * right: 100,\n * }),\n * ],\n * },\n * })\n */","meta":{"filename":"edges.ts","lineno":1,"columnno":0,"path":"../packages/modifiers/snap","code":{},"shortpath":"packages/modifiers/snap/edges.ts"},"kind":"module","name":"modifiers/snapEdges","description":"This module allows snapping of the edges of targets during resize\ninteractions.
","examples":[{"caption":"","code":"interact(target).resizable({\n snapEdges: {\n targets: [interact.snappers.grid({ x: 100, y: 50 })],\n },\n})\n\ninteract(target).resizable({\n snapEdges: {\n targets: [\n interact.snappers.grid({\n top: 50,\n left: 50,\n bottom: 100,\n right: 100,\n }),\n ],\n },\n})"}],"longname":"module:modifiers/snapEdges","___id":"T000004R000003","___s":true,"attribs":"","id":"modifiers/snapEdges","ancestors":[],"modules":[{"comment":"/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\n * interact(target).resizable({\n * snapEdges: {\n * targets: [interact.snappers.grid({ x: 100, y: 50 })],\n * },\n * })\n *\n * interact(target).resizable({\n * snapEdges: {\n * targets: [\n * interact.snappers.grid({\n * top: 50,\n * left: 50,\n * bottom: 100,\n * right: 100,\n * }),\n * ],\n * },\n * })\n */","meta":{"filename":"edges.ts","lineno":1,"columnno":0,"path":"/home/taye/proj/interact.js/packages/modifiers/snap","code":{},"shortpath":"packages/modifiers/snap/edges.ts"},"kind":"module","name":"modifiers/snapEdges","description":"This module allows snapping of the edges of targets during resize\ninteractions.
","examples":[{"caption":"","code":"interact(target).resizable({\n snapEdges: {\n targets: [interact.snappers.grid({ x: 100, y: 50 })],\n },\n})\n\ninteract(target).resizable({\n snapEdges: {\n targets: [\n interact.snappers.grid({\n top: 50,\n left: 50,\n bottom: 100,\n right: 100,\n }),\n ],\n },\n})"}],"longname":"module:modifiers/snapEdges","___id":"T000002R003221","___s":true,"attribs":"","id":"modifiers/snapEdges","ancestors":[]}]},{"kind":"package","longname":"package:undefined","files":["/home/taye/proj/interact.js/packages/actions/actions.spec.ts","/home/taye/proj/interact.js/packages/actions/drag.spec.ts","/home/taye/proj/interact.js/packages/actions/drag.ts","/home/taye/proj/interact.js/packages/actions/drop/drop.spec.ts","/home/taye/proj/interact.js/packages/actions/drop/DropEvent.spec.ts","/home/taye/proj/interact.js/packages/actions/drop/DropEvent.ts","/home/taye/proj/interact.js/packages/actions/drop/index.ts","/home/taye/proj/interact.js/packages/actions/gesture.spec.ts","/home/taye/proj/interact.js/packages/actions/gesture.ts","/home/taye/proj/interact.js/packages/actions/index.ts","/home/taye/proj/interact.js/packages/actions/resize.spec.ts","/home/taye/proj/interact.js/packages/actions/resize.ts","/home/taye/proj/interact.js/packages/auto-scroll/index.ts","/home/taye/proj/interact.js/packages/auto-start/autoStart.spec.ts","/home/taye/proj/interact.js/packages/auto-start/base.ts","/home/taye/proj/interact.js/packages/auto-start/dragAxis.ts","/home/taye/proj/interact.js/packages/auto-start/hold.spec.ts","/home/taye/proj/interact.js/packages/auto-start/hold.ts","/home/taye/proj/interact.js/packages/auto-start/index.ts","/home/taye/proj/interact.js/packages/auto-start/InteractableMethods.ts","/home/taye/proj/interact.js/packages/core/BaseEvent.ts","/home/taye/proj/interact.js/packages/core/defaultOptions.ts","/home/taye/proj/interact.js/packages/core/Eventable.spec.ts","/home/taye/proj/interact.js/packages/core/Eventable.ts","/home/taye/proj/interact.js/packages/core/Interactable.spec.ts","/home/taye/proj/interact.js/packages/core/Interactable.ts","/home/taye/proj/interact.js/packages/core/interactablePreventDefault.spec.ts","/home/taye/proj/interact.js/packages/core/interactablePreventDefault.ts","/home/taye/proj/interact.js/packages/core/InteractableSet.ts","/home/taye/proj/interact.js/packages/core/InteractEvent.ts","/home/taye/proj/interact.js/packages/core/Interaction.spec.ts","/home/taye/proj/interact.js/packages/core/Interaction.ts","/home/taye/proj/interact.js/packages/core/interactionFinder.spec.ts","/home/taye/proj/interact.js/packages/core/interactionFinder.ts","/home/taye/proj/interact.js/packages/core/interactions.spec.ts","/home/taye/proj/interact.js/packages/core/interactions.ts","/home/taye/proj/interact.js/packages/core/PointerInfo.ts","/home/taye/proj/interact.js/packages/core/scope.spec.ts","/home/taye/proj/interact.js/packages/core/scope.ts","/home/taye/proj/interact.js/packages/dev-tools/devTools.spec.ts","/home/taye/proj/interact.js/packages/dev-tools/index.ts","/home/taye/proj/interact.js/packages/inertia/index.ts","/home/taye/proj/interact.js/packages/inertia/inertia.spec.ts","/home/taye/proj/interact.js/packages/interact/index.ts","/home/taye/proj/interact.js/packages/interact/interact.spec.ts","/home/taye/proj/interact.js/packages/interact/interact.ts","/home/taye/proj/interact.js/packages/interactjs/index.ts","/home/taye/proj/interact.js/packages/modifiers/base.spec.ts","/home/taye/proj/interact.js/packages/modifiers/base.ts","/home/taye/proj/interact.js/packages/modifiers/index.ts","/home/taye/proj/interact.js/packages/modifiers/restrict/edges.spec.ts","/home/taye/proj/interact.js/packages/modifiers/restrict/edges.ts","/home/taye/proj/interact.js/packages/modifiers/restrict/pointer.ts","/home/taye/proj/interact.js/packages/modifiers/restrict/size.spec.ts","/home/taye/proj/interact.js/packages/modifiers/restrict/size.ts","/home/taye/proj/interact.js/packages/modifiers/snap/edges.spec.ts","/home/taye/proj/interact.js/packages/modifiers/snap/edges.ts","/home/taye/proj/interact.js/packages/modifiers/snap/pointer.spec.ts","/home/taye/proj/interact.js/packages/modifiers/snap/pointer.ts","/home/taye/proj/interact.js/packages/modifiers/snap/size.spec.ts","/home/taye/proj/interact.js/packages/modifiers/snap/size.ts","/home/taye/proj/interact.js/packages/pointer-events/base.spec.ts","/home/taye/proj/interact.js/packages/pointer-events/base.ts","/home/taye/proj/interact.js/packages/pointer-events/holdRepeat.spec.ts","/home/taye/proj/interact.js/packages/pointer-events/holdRepeat.ts","/home/taye/proj/interact.js/packages/pointer-events/index.ts","/home/taye/proj/interact.js/packages/pointer-events/interactableTargets.ts","/home/taye/proj/interact.js/packages/pointer-events/PointerEvent.spec.ts","/home/taye/proj/interact.js/packages/pointer-events/PointerEvent.ts","/home/taye/proj/interact.js/packages/reflow/index.ts","/home/taye/proj/interact.js/packages/reflow/reflow.spec.ts","/home/taye/proj/interact.js/packages/types/index.ts","/home/taye/proj/interact.js/packages/types/interactjs-test.ts","/home/taye/proj/interact.js/packages/types/types.spec.ts","/home/taye/proj/interact.js/packages/utils/arr.ts","/home/taye/proj/interact.js/packages/utils/browser.ts","/home/taye/proj/interact.js/packages/utils/clone.ts","/home/taye/proj/interact.js/packages/utils/domObjects.ts","/home/taye/proj/interact.js/packages/utils/domUtils.spec.ts","/home/taye/proj/interact.js/packages/utils/domUtils.ts","/home/taye/proj/interact.js/packages/utils/events.ts","/home/taye/proj/interact.js/packages/utils/extend.ts","/home/taye/proj/interact.js/packages/utils/getOriginXY.ts","/home/taye/proj/interact.js/packages/utils/hypot.ts","/home/taye/proj/interact.js/packages/utils/index.ts","/home/taye/proj/interact.js/packages/utils/is.ts","/home/taye/proj/interact.js/packages/utils/isWindow.ts","/home/taye/proj/interact.js/packages/utils/normalizeListeners.spec.ts","/home/taye/proj/interact.js/packages/utils/normalizeListeners.ts","/home/taye/proj/interact.js/packages/utils/pointerExtend.ts","/home/taye/proj/interact.js/packages/utils/pointerUtils.ts","/home/taye/proj/interact.js/packages/utils/raf.ts","/home/taye/proj/interact.js/packages/utils/rect.ts","/home/taye/proj/interact.js/packages/utils/Signals.ts","/home/taye/proj/interact.js/packages/utils/snappers/grid.ts","/home/taye/proj/interact.js/packages/utils/snappers/index.ts","/home/taye/proj/interact.js/packages/utils/window.ts","/home/taye/proj/interact.js/jsdoc/index.md"],"___id":"T000002R004725","___s":true,"attribs":"","id":"package:","ancestors":[]},{"comment":"/**\n * Prevent the default behaviour of the original Event\n */","meta":{"range":[1620,1683],"filename":"PointerEvent.ts","lineno":76,"columnno":2,"path":"../packages/pointer-events","code":{"id":"astnode100036254","name":"preventDefault","type":"MethodDefinition","paramnames":[]},"vars":{"":null},"shortpath":"packages/pointer-events/PointerEvent.ts"},"description":"Prevent the default behaviour of the original Event
","name":"preventDefault","longname":"preventDefault","kind":"function","scope":"global","params":[],"___id":"T000002R003868","___s":true,"attribs":"","id":"preventDefault","signature":"()","ancestors":[]}]
\ No newline at end of file
diff --git a/packages/interactjs/dist/interact.js b/packages/interactjs/dist/interact.js
index ad77aa64a..1f0297a2f 100644
--- a/packages/interactjs/dist/interact.js
+++ b/packages/interactjs/dist/interact.js
@@ -1,5 +1,5 @@
/**
- * interact.js 1.4.12
+ * interact.js 1.4.13
*
* Copyright (c) 2012-2019 Taye Adeyemi
* Released under the MIT License.
@@ -7965,8 +7965,8 @@ function __set_34(arg) {
var rect = ___rect_34["default"].xywhToTlbr(interaction.resizeRects.inverted);
- var minSize = ___rect_34["default"].tlbrToXywh(_edges["default"].getRestrictionRect(options.min, interaction)) || noMin;
- var maxSize = ___rect_34["default"].tlbrToXywh(_edges["default"].getRestrictionRect(options.max, interaction)) || noMax;
+ var minSize = ___rect_34["default"].tlbrToXywh(_edges["default"].getRestrictionRect(options.min, interaction, arg.coords)) || noMin;
+ var maxSize = ___rect_34["default"].tlbrToXywh(_edges["default"].getRestrictionRect(options.max, interaction, arg.coords)) || noMax;
state.options = {
enabled: options.enabled,
endOnly: options.endOnly,
@@ -9660,7 +9660,7 @@ function __init_27(window) {
} // eslint-disable-next-line no-undef
-_interact["default"].version = "1.4.12";
+_interact["default"].version = "1.4.13";
var ___default_27 = _interact["default"];
_$interact_27["default"] = ___default_27;
diff --git a/packages/interactjs/dist/interact.js.map b/packages/interactjs/dist/interact.js.map
index 48ce10655..9045d31cb 100644
--- a/packages/interactjs/dist/interact.js.map
+++ b/packages/interactjs/dist/interact.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../../scripts/header.js","../../node_modules/browser-pack-flat/_prelude","../core/scope.ts","../core/interactions.ts","../core/Interaction.ts","../utils/arr.ts","../utils/domObjects.ts","../utils/isWindow.ts","../utils/window.ts","../utils/is.ts","../utils/browser.ts","../utils/domUtils.ts","../utils/clone.ts","../utils/pointerExtend.ts","../utils/hypot.ts","../utils/pointerUtils.ts","../utils/events.ts","../utils/extend.ts","../utils/rect.ts","../utils/getOriginXY.ts","../utils/normalizeListeners.ts","../utils/raf.ts","../utils/Signals.ts","../utils/index.ts","../core/defaultOptions.ts","../core/Eventable.ts","../core/Interactable.ts","../core/InteractableSet.ts","../core/BaseEvent.ts","../core/InteractEvent.ts","../core/PointerInfo.ts","../core/interactionFinder.ts","../actions/drag.ts","../actions/drop/DropEvent.ts","../actions/drop/index.ts","../actions/gesture.ts","../actions/resize.ts","../actions/index.ts","../auto-scroll/index.ts","../auto-start/InteractableMethods.ts","../auto-start/base.ts","../auto-start/dragAxis.ts","../auto-start/hold.ts","../auto-start/index.ts","../core/interactablePreventDefault.ts","../dev-tools/index.ts","../modifiers/base.ts","../inertia/index.ts","../modifiers/restrict/pointer.ts","../modifiers/restrict/edges.ts","../modifiers/restrict/size.ts","../modifiers/snap/pointer.ts","../modifiers/snap/size.ts","../modifiers/snap/edges.ts","../modifiers/index.ts","../pointer-events/PointerEvent.ts","../pointer-events/base.ts","../pointer-events/holdRepeat.ts","../pointer-events/interactableTargets.ts","../pointer-events/index.ts","../reflow/index.ts","../interact/interact.ts","../interact/index.ts","../types/index.ts","../utils/snappers/grid.ts","../utils/snappers/index.ts","index.ts","../../node_modules/browser-pack-flat/_postlude"],"names":[],"mappings":"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","file":"interact.js","sourceRoot":"","sourcesContent":["/**\n * interact.js 1.4.12\n *\n * Copyright (c) 2012-2019 Taye Adeyemi \n * Released under the MIT License.\n * https://raw.github.com/taye/interact.js/master/LICENSE\n */\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.interact = f()}})(function(){var define,module,exports;\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\n","import * as utils from '@interactjs/utils'\nimport domObjects from '@interactjs/utils/domObjects'\nimport defaults from './defaultOptions'\nimport Eventable from './Eventable'\nimport InteractableBase from './Interactable'\nimport InteractableSet from './InteractableSet'\nimport InteractEvent from './InteractEvent'\nimport interactions from './interactions'\n\nconst {\n win,\n browser,\n raf,\n Signals,\n events,\n} = utils\n\nexport enum ActionName {\n}\n\nexport interface Actions {\n names: ActionName[]\n methodDict: { [key: string]: string }\n eventTypes: string[]\n}\n\nexport function createScope () {\n return new Scope()\n}\n\nexport type Defaults = typeof defaults\n\nexport interface Plugin {\n id?: string\n install (scope: Scope, options?: any): void\n [key: string]: any\n}\n\nexport class Scope {\n id = `__interact_scope_${Math.floor(Math.random() * 100)}`\n signals = new Signals()\n browser = browser\n events = events\n utils = utils\n defaults: Defaults = utils.clone(defaults) as Defaults\n Eventable = Eventable\n actions: Actions = {\n names: [],\n methodDict: {},\n eventTypes: [],\n }\n\n InteractEvent = InteractEvent\n Interactable!: typeof InteractableBase\n interactables = new InteractableSet(this)\n\n // main window\n _win!: Window\n\n // main document\n document!: Document\n\n // main window\n window!: Window\n\n // all documents being listened to\n documents: Array<{ doc: Document, options: any }> = []\n\n _plugins: Plugin[] = []\n _pluginMap: { [id: string]: Plugin } = {}\n\n constructor () {\n const scope = this as Scope\n\n ; (this as { Interactable: typeof InteractableBase }).Interactable = class Interactable extends InteractableBase implements InteractableBase {\n get _defaults () { return scope.defaults }\n\n set (options: any) {\n super.set(options)\n\n scope.interactables.signals.fire('set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset () {\n super.unset()\n for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n const interaction = scope.interactions.list[i]\n\n if (interaction.interactable === this) {\n interaction.stop()\n scope.interactions.signals.fire('destroy', { interaction })\n interaction.destroy()\n\n if (scope.interactions.list.length > 2) {\n scope.interactions.list.splice(i, 1)\n }\n }\n }\n\n scope.interactables.signals.fire('unset', { interactable: this })\n }\n }\n }\n\n onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n init (window: Window) {\n return initScope(this, window)\n }\n\n pluginIsInstalled (plugin: Plugin) {\n return this._pluginMap[plugin.id] || this._plugins.indexOf(plugin) !== -1\n }\n\n usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) { this._pluginMap[plugin.id] = plugin }\n\n plugin.install(this, options)\n this._plugins.push(plugin)\n\n return this\n }\n\n addDocument (doc: Document, options?: any): void | false {\n // do nothing if document is already known\n if (this.getDocIndex(doc) !== -1) { return false }\n\n const window = win.getWindow(doc)\n\n options = options ? utils.extend({}, options) : {}\n\n this.documents.push({ doc, options })\n events.documents.push(doc)\n\n // don't add an unload event for the main document\n // so that the page may be cached in browser history\n if (doc !== this.document) {\n events.add(window, 'unload', this.onWindowUnload)\n }\n\n this.signals.fire('add-document', { doc, window, scope: this, options })\n }\n\n removeDocument (doc: Document) {\n const index = this.getDocIndex(doc)\n\n const window = win.getWindow(doc)\n const options = this.documents[index].options\n\n events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n events.documents.splice(index, 1)\n\n this.signals.fire('remove-document', { doc, window, scope: this, options })\n }\n\n getDocIndex (doc: Document) {\n for (let i = 0; i < this.documents.length; i++) {\n if (this.documents[i].doc === doc) {\n return i\n }\n }\n\n return -1\n }\n\n getDocOptions (doc: Document) {\n const docIndex = this.getDocIndex(doc)\n\n return docIndex === -1 ? null : this.documents[docIndex].options\n }\n\n now () {\n return ((this.window as any).Date as typeof Date || Date).now()\n }\n}\n\nexport function initScope (scope: Scope, window: Window) {\n win.init(window)\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n events.init(window)\n\n scope.usePlugin(interactions)\n scope.document = window.document\n scope.window = window\n\n return scope\n}\n","import browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\nimport Signals from '@interactjs/utils/Signals'\nimport InteractionBase from './Interaction'\nimport finder, { SearchDetails } from './interactionFinder'\nimport { Scope } from './scope'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n signals: Signals\n new: (options: any) => InteractionBase\n list: InteractionBase[]\n listeners: { [type: string]: Interact.Listener }\n docEvents: Array<{ type: string, listener: Interact.Listener }>\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n}\n\nconst methodNames = [\n 'pointerDown', 'pointerMove', 'pointerUp',\n 'updatePointer', 'removePointer', 'windowBlur',\n]\n\nfunction install (scope: Scope) {\n const signals = new Signals()\n\n const listeners = {} as any\n\n for (const method of methodNames) {\n listeners[method] = doOnInteractions(method, scope)\n }\n\n const pEventTypes = browser.pEventTypes\n let docEvents: typeof scope.interactions.docEvents\n\n if (domObjects.PointerEvent) {\n docEvents = [\n { type: pEventTypes.down, listener: releasePointersOnRemovedEls },\n { type: pEventTypes.down, listener: listeners.pointerDown },\n { type: pEventTypes.move, listener: listeners.pointerMove },\n { type: pEventTypes.up, listener: listeners.pointerUp },\n { type: pEventTypes.cancel, listener: listeners.pointerUp },\n ]\n }\n else {\n docEvents = [\n { type: 'mousedown', listener: listeners.pointerDown },\n { type: 'mousemove', listener: listeners.pointerMove },\n { type: 'mouseup', listener: listeners.pointerUp },\n\n { type: 'touchstart', listener: releasePointersOnRemovedEls },\n { type: 'touchstart', listener: listeners.pointerDown },\n { type: 'touchmove', listener: listeners.pointerMove },\n { type: 'touchend', listener: listeners.pointerUp },\n { type: 'touchcancel', listener: listeners.pointerUp },\n ]\n }\n\n docEvents.push({\n type: 'blur',\n listener (event) {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event)\n }\n },\n })\n\n scope.signals.on('add-document', onDocSignal)\n scope.signals.on('remove-document', onDocSignal)\n\n // for ignoring browser's simulated mouse events\n scope.prevTouchTime = 0\n\n scope.Interaction = class Interaction extends InteractionBase {\n get pointerMoveTolerance () {\n return scope.interactions.pointerMoveTolerance\n }\n\n set pointerMoveTolerance (value) {\n scope.interactions.pointerMoveTolerance = value\n }\n\n _now () { return scope.now() }\n }\n\n scope.interactions = {\n signals,\n // all active and idle interactions\n list: [],\n new (options: { pointerType?: string, signals?: Signals }) {\n options.signals = signals\n\n const interaction = new scope.Interaction(options as Required)\n\n scope.interactions.list.push(interaction)\n return interaction\n },\n listeners,\n docEvents,\n pointerMoveTolerance: 1,\n }\n\n function releasePointersOnRemovedEls () {\n // for all inactive touch interactions with pointers down\n for (const interaction of scope.interactions.list) {\n if (!interaction.pointerIsDown ||\n interaction.pointerType !== 'touch' ||\n interaction._interacting) {\n continue\n }\n\n // if a pointer is down on an element that is no longer in the DOM tree\n for (const pointer of interaction.pointers) {\n if (!scope.documents.some(({ doc }) => nodeContains(doc, pointer.downTarget))) {\n // remove the pointer from the interaction\n interaction.removePointer(pointer.pointer, pointer.event)\n }\n }\n }\n }\n}\n\nfunction doOnInteractions (method, scope) {\n return function (event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches = [] // [ [pointer, interaction], ...]\n\n if (/^touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\n for (const changedTouch of event.changedTouches) {\n const pointer = changedTouch\n const pointerId = pointerUtils.getPointerId(pointer)\n const searchDetails: SearchDetails = {\n pointer,\n pointerId,\n pointerType,\n eventType: event.type,\n eventTarget,\n curEventTarget,\n scope,\n }\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n }\n else {\n let invalidPointer = false\n\n if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n // ignore mouse events while touch interactions are active\n for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown\n }\n\n // try to ignore mouse events that are simulated by the browser\n // after a touch event\n invalidPointer = invalidPointer ||\n (scope.now() - scope.prevTouchTime < 500) ||\n // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n event.timeStamp === 0\n }\n\n if (!invalidPointer) {\n const searchDetails = {\n pointer: event,\n pointerId: pointerUtils.getPointerId(event),\n pointerType,\n eventType: event.type,\n curEventTarget,\n eventTarget,\n scope,\n }\n\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n }\n\n // eslint-disable-next-line no-shadow\n for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n interaction[method](pointer, event, eventTarget, curEventTarget)\n }\n }\n}\n\nfunction getInteraction (searchDetails: SearchDetails) {\n const { pointerType, scope } = searchDetails\n\n const foundInteraction = finder.search(searchDetails)\n const signalArg = { interaction: foundInteraction, searchDetails }\n\n scope.interactions.signals.fire('find', signalArg)\n\n return signalArg.interaction || scope.interactions.new({ pointerType })\n}\n\nfunction onDocSignal ({ doc, scope, options }, signalName) {\n const { docEvents } = scope.interactions\n const eventMethod = signalName.indexOf('add') === 0\n ? events.add : events.remove\n\n if (scope.browser.isIOS && !options.events) {\n options.events = { passive: false }\n }\n\n // delegate event listener\n for (const eventType in events.delegatedEvents) {\n eventMethod(doc, eventType, events.delegateListener)\n eventMethod(doc, eventType, events.delegateUseCapture, true)\n }\n\n const eventOptions = options && options.events\n\n for (const { type, listener } of docEvents) {\n eventMethod(doc, type, listener, eventOptions)\n }\n}\n\nexport default {\n id: 'core/interactions',\n install,\n onDocSignal,\n doOnInteractions,\n methodNames,\n}\n","import * as utils from '@interactjs/utils'\nimport Interactable from './Interactable'\nimport InteractEvent, { EventPhase } from './InteractEvent'\nimport PointerInfo from './PointerInfo'\nimport { ActionName } from './scope'\n\nexport interface ActionProps {\n name: T\n axis?: 'x' | 'y' | 'xy'\n edges?: {\n [edge in keyof Interact.Rect]?: boolean\n }\n}\n\nexport interface StartAction extends ActionProps {\n name: ActionName | string\n}\n\nexport enum _ProxyValues {\n interactable = '',\n element = '',\n prepared = '',\n pointerIsDown = '',\n pointerWasMoved = '',\n _proxy = ''\n}\n\nexport enum _ProxyMethods {\n start = '',\n move = '',\n end = '',\n stop = '',\n interacting = ''\n}\n\nexport type _InteractionProxy = Pick<\n Interaction,\n keyof typeof _ProxyValues | keyof typeof _ProxyMethods\n>\n\nexport class Interaction {\n // current interactable being interacted with\n interactable: Interactable = null\n\n // the target element of the interactable\n element: Element = null\n rect: Interact.Rect & Interact.Size\n edges: {\n [P in keyof Interact.Rect]?: boolean\n }\n\n _signals: utils.Signals\n\n // action that's ready to be fired on next move event\n prepared: ActionProps = {\n name : null,\n axis : null,\n edges: null,\n }\n\n pointerType: string\n\n // keep track of added pointers\n pointers: PointerInfo[] = []\n\n // pointerdown/mousedown/touchstart event\n downEvent: Interact.PointerEventType = null\n\n downPointer: Interact.PointerType = {} as Interact.PointerType\n\n _latestPointer: {\n pointer: Interact.EventTarget\n event: Interact.PointerEventType\n eventTarget: Node,\n } = {\n pointer: null,\n event: null,\n eventTarget: null,\n }\n\n // previous action event\n prevEvent: InteractEvent = null\n\n pointerIsDown = false\n pointerWasMoved = false\n _interacting = false\n _ending = false\n _stopped = true\n _proxy: _InteractionProxy = null\n\n simulation = null\n\n get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\n */\n doMove = utils.warnOnce(\n function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n },\n 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords = {\n // Starting InteractEvent pointer coordinates\n start: utils.pointer.newCoords(),\n // Previous native pointer move event coordinates\n prev: utils.pointer.newCoords(),\n // current native pointer move event coordinates\n cur: utils.pointer.newCoords(),\n // Change in coordinates and time of the pointer\n delta: utils.pointer.newCoords(),\n // pointer velocity\n velocity: utils.pointer.newCoords(),\n }\n\n /** */\n constructor ({ pointerType, signals }: { pointerType?: string, signals: utils.Signals }) {\n this._signals = signals\n this.pointerType = pointerType\n\n const that = this\n\n this._proxy = {} as _InteractionProxy\n\n for (const key in _ProxyValues) {\n Object.defineProperty(this._proxy, key, {\n get () { return that[key] },\n })\n }\n\n for (const key in _ProxyMethods) {\n Object.defineProperty(this._proxy, key, {\n value: (...args) => that[key](...args),\n })\n }\n\n this._signals.fire('new', { interaction: this })\n }\n\n pointerDown (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n\n this._signals.fire('down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n interaction: this,\n })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable({\n * // disable the default drag start by down->move\n * manualStart: true\n * })\n * // start dragging after the user holds the pointer down\n * .on('hold', function (event) {\n * var interaction = event.interaction\n *\n * if (!interaction.interacting()) {\n * interaction.start({ name: 'drag' },\n * event.interactable,\n * event.currentTarget)\n * }\n * })\n * ```\n *\n * Start an action with the given Interactable and Element as tartgets. The\n * action must be enabled for the target Interactable and an appropriate\n * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n *\n * Use it with `interactable.able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {object} interact\n */\n start (action: StartAction, interactable: Interactable, element: Element) {\n if (this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === ActionName.Gesture ? 2 : 1) ||\n !interactable.options[action.name].enabled) {\n return false\n }\n\n utils.copyAction(this.prepared, action)\n\n this.interactable = interactable\n this.element = element\n this.rect = interactable.getRect(element)\n this.edges = this.prepared.edges\n this._stopped = false\n this._interacting = this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: EventPhase.Start,\n }) && !this._stopped\n\n return this._interacting\n }\n\n pointerMove (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node) {\n if (!this.simulation && !(this.modifiers && this.modifiers.endPrevented)) {\n this.updatePointer(pointer, event, eventTarget, false)\n utils.pointer.setCoords(this.coords.cur, this.pointers.map((p) => p.pointer), this._now())\n }\n\n const duplicateMove = (this.coords.cur.page.x === this.coords.prev.page.x &&\n this.coords.cur.page.y === this.coords.prev.page.y &&\n this.coords.cur.client.x === this.coords.prev.client.x &&\n this.coords.cur.client.y === this.coords.prev.client.y)\n\n let dx\n let dy\n\n // register movement greater than pointerMoveTolerance\n if (this.pointerIsDown && !this.pointerWasMoved) {\n dx = this.coords.cur.client.x - this.coords.start.client.x\n dy = this.coords.cur.client.y - this.coords.start.client.y\n\n this.pointerWasMoved = utils.hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const signalArg = {\n pointer,\n pointerIndex: this.getPointerIndex(pointer),\n event,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n utils.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n utils.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._signals.fire('move', signalArg)\n\n if (!duplicateMove) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n this.move(signalArg)\n }\n\n if (this.pointerWasMoved) {\n utils.pointer.copyCoords(this.coords.prev, this.coords.cur)\n }\n }\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('dragmove', function (event) {\n * if (someCondition) {\n * // change the snap settings\n * event.interactable.draggable({ snap: { targets: [] }})\n * // fire another move event with re-calculated snap\n * event.interaction.move()\n * }\n * })\n * ```\n *\n * Force a move of the current action at the same coordinates. Useful if\n * snap/restrict has been changed and you want a movement with the new\n * settings.\n */\n move (signalArg?) {\n signalArg = utils.extend({\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n }, signalArg || {})\n\n signalArg.phase = EventPhase.Move\n\n this._doPhase(signalArg)\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node, curEventTarget: EventTarget) {\n let pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n }\n\n this._signals.fire(/cancel$/i.test(event.type) ? 'cancel' : 'up', {\n pointer,\n pointerIndex,\n event,\n eventTarget,\n curEventTarget,\n interaction: this,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.pointerIsDown = false\n this.removePointer(pointer, event)\n }\n\n documentBlur (event) {\n this.end(event)\n this._signals.fire('blur', { event, interaction: this })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('move', function (event) {\n * if (event.pageX > 1000) {\n * // end the current action\n * event.interaction.end()\n * // stop all further listeners from being called\n * event.stopImmediatePropagation()\n * }\n * })\n * ```\n *\n * @param {PointerEvent} [event]\n */\n end (event?: Interact.PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: EventPhase.End,\n })\n }\n\n this._ending = false\n\n if (endPhaseResult === true) {\n this.stop()\n }\n }\n\n currentAction () {\n return this._interacting ? this.prepared.name : null\n }\n\n interacting () {\n return this._interacting\n }\n\n /** */\n stop () {\n this._signals.fire('stop', { interaction: this })\n\n this.interactable = this.element = null\n\n this._interacting = false\n this._stopped = true\n this.prepared.name = this.prevEvent = null\n }\n\n getPointerIndex (pointer) {\n const pointerId = utils.pointer.getPointerId(pointer)\n\n // mouse and pen interactions may have only one pointer\n return (this.pointerType === 'mouse' || this.pointerType === 'pen')\n ? this.pointers.length - 1\n : utils.arr.findIndex(this.pointers, (curPointer) => curPointer.id === pointerId)\n }\n\n getPointerInfo (pointer) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n updatePointer (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node, down?: boolean) {\n const id = utils.pointer.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false\n ? false\n : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(\n id,\n pointer,\n event,\n null,\n null,\n )\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n }\n else {\n pointerInfo.pointer = pointer\n }\n\n if (down) {\n this.pointerIsDown = true\n\n if (!this.interacting()) {\n utils.pointer.setCoords(this.coords.start, this.pointers.map((p) => p.pointer), this._now())\n\n utils.pointer.copyCoords(this.coords.cur, this.coords.start)\n utils.pointer.copyCoords(this.coords.prev, this.coords.start)\n utils.pointer.pointerExtend(this.downPointer, pointer)\n\n this.downEvent = event\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n\n this.pointerWasMoved = false\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget)\n\n this._signals.fire('update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: this,\n })\n\n return pointerIndex\n }\n\n removePointer (pointer: Interact.PointerType, event: Interact.PointerEventType) {\n const pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) { return }\n\n const pointerInfo = this.pointers[pointerIndex]\n\n this._signals.fire('remove-pointer', {\n pointer,\n event,\n pointerIndex,\n pointerInfo,\n interaction: this,\n })\n\n this.pointers.splice(pointerIndex, 1)\n }\n\n _updateLatestPointer (pointer, event, eventTarget) {\n this._latestPointer.pointer = pointer\n this._latestPointer.event = event\n this._latestPointer.eventTarget = eventTarget\n }\n\n destroy () {\n this._latestPointer.pointer = null\n this._latestPointer.event = null\n this._latestPointer.eventTarget = null\n }\n\n _createPreparedEvent (event: Interact.PointerEventType, phase: EventPhase, preEnd: boolean, type: string) {\n const actionName = this.prepared.name\n\n return new InteractEvent(this, event, actionName, phase, this.element, null, preEnd, type)\n }\n\n _fireEvent (iEvent) {\n this.interactable.fire(iEvent)\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent\n }\n }\n\n _doPhase (signalArg: Partial) {\n const { event, phase, preEnd, type } = signalArg\n const beforeResult = this._signals.fire(`before-action-${phase}`, signalArg)\n\n if (beforeResult === false) {\n return false\n }\n\n const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type)\n const { rect } = this\n\n if (rect) {\n // update the rect modifications\n const edges = this.edges || this.prepared.edges || { left: true, right: true, top: true, bottom: true }\n\n if (edges.top) { rect.top += iEvent.delta.y }\n if (edges.bottom) { rect.bottom += iEvent.delta.y }\n if (edges.left) { rect.left += iEvent.delta.x }\n if (edges.right) { rect.right += iEvent.delta.x }\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n this._signals.fire(`action-${phase}`, signalArg)\n\n this._fireEvent(iEvent)\n\n this._signals.fire(`after-action-${phase}`, signalArg)\n\n return true\n }\n\n _now () { return Date.now() }\n}\n\nexport default Interaction\nexport { PointerInfo }\n","export function contains (array, target) {\n return array.indexOf(target) !== -1\n}\n\nexport function remove (array, target) {\n return array.splice(array.indexOf(target), 1)\n}\n\nexport function merge (target, source) {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport function from (source) {\n return merge([], source)\n}\n\nexport function findIndex (array, func) {\n for (let i = 0; i < array.length; i++) {\n if (func(array[i], i, array)) {\n return i\n }\n }\n\n return -1\n}\n\nexport function find (array, func) {\n return array[findIndex(array, func)]\n}\n","const domObjects: {\n init: any,\n document: Document,\n DocumentFragment: typeof DocumentFragment,\n SVGElement: typeof SVGElement,\n SVGSVGElement: typeof SVGSVGElement,\n SVGElementInstance: any,\n Element: typeof Element,\n HTMLElement: typeof HTMLElement,\n Event: typeof Event,\n Touch: typeof Touch,\n PointerEvent: typeof PointerEvent,\n} =\n{\n init,\n document: null as any,\n DocumentFragment: null as any,\n SVGElement: null as any,\n SVGSVGElement: null as any,\n // eslint-disable-next-line no-undef\n SVGElementInstance: null as any,\n Element: null as any,\n HTMLElement: null as any,\n Event: null as any,\n Touch: null as any,\n PointerEvent: null as any,\n}\n\nfunction blank () {}\n\nexport default domObjects\n\nfunction init (window: Window) {\n const win = window as any\n\n domObjects.document = win.document\n domObjects.DocumentFragment = win.DocumentFragment || blank\n domObjects.SVGElement = win.SVGElement || blank\n domObjects.SVGSVGElement = win.SVGSVGElement || blank\n domObjects.SVGElementInstance = win.SVGElementInstance || blank\n domObjects.Element = win.Element || blank\n domObjects.HTMLElement = win.HTMLElement || domObjects.Element\n\n domObjects.Event = win.Event\n domObjects.Touch = win.Touch || blank\n domObjects.PointerEvent = (win.PointerEvent || win.MSPointerEvent)\n}\n","export default (thing) => !!(thing && thing.Window) && (thing instanceof thing.Window)\n","import isWindow from './isWindow'\n\nconst win = {\n realWindow: undefined as Window,\n window: undefined as Window,\n getWindow,\n init,\n}\n\nexport function init (window: Window & { wrap?: (...args) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n win.realWindow = window\n\n // create a TextNode\n const el = window.document.createTextNode('')\n\n // check if it's wrapped by a polyfill\n if (el.ownerDocument !== window.document &&\n typeof window.wrap === 'function' &&\n window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win.window = window\n}\n\nif (typeof window === 'undefined') {\n win.window = undefined\n win.realWindow = undefined\n}\nelse {\n init(window)\n}\n\nexport function getWindow (node) {\n if (isWindow(node)) {\n return node\n }\n\n const rootNode = (node.ownerDocument || node)\n\n return rootNode.defaultView || win.window\n}\n\nwin.init = init\n\nexport default win\n","// tslint:disable variable-name\n\nimport isWindow from './isWindow'\nimport win from './window'\n\nexport const window = (thing: any): thing is Window =>\n thing === win.window || isWindow(thing)\n\nexport const docFrag = (thing: any): thing is DocumentFragment =>\n object(thing) && thing.nodeType === 11\n\nexport const object = (thing: any): thing is { [index: string]: any } =>\n !!thing && (typeof thing === 'object')\n\nexport const func = (thing: any): thing is (...args: any) => any =>\n typeof thing === 'function'\n\nexport const number = (thing: any): thing is number =>\n typeof thing === 'number'\n\nexport const bool = (thing: any): thing is boolean =>\n typeof thing === 'boolean'\n\nexport const string = (thing: any): thing is string =>\n typeof thing === 'string'\n\nexport const element = (thing: any): thing is Element => {\n if (!thing || (typeof thing !== 'object')) { return false }\n\n const _window = win.getWindow(thing) || win.window\n\n return (/object|function/.test(typeof _window.Element)\n ? thing instanceof _window.Element // DOM2\n : thing.nodeType === 1 && typeof thing.nodeName === 'string')\n}\n\nexport const plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) &&\n !!thing.constructor &&\n /function Object\\b/.test(thing.constructor.toString())\n\nexport const array = (thing: any): thing is any[] =>\n (object(thing) &&\n (typeof thing.length !== 'undefined') &&\n func(thing.splice))\n","import domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nconst browser = {\n init,\n supportsTouch: null as boolean,\n supportsPointerEvent: null as boolean,\n isIOS7: null as boolean,\n isIOS: null as boolean,\n isIe9: null as boolean,\n isOperaMobile: null as boolean,\n prefixedMatchesSelector: null as string,\n pEventTypes: null as {\n up: string,\n down: string,\n over: string,\n out: string,\n move: string,\n cancel: string,\n },\n wheelEvent: null as string,\n}\n\nfunction init (window) {\n const Element = domObjects.Element\n const navigator = win.window.navigator\n\n // Does the browser support touch input?\n browser.supportsTouch = ('ontouchstart' in window) ||\n (is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch)\n\n // Does the browser support PointerEvents\n browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent\n\n browser.isIOS = (/iP(hone|od|ad)/.test(navigator.platform))\n\n // scrolling doesn't change the result of getClientRects on iOS 7\n browser.isIOS7 = (/iP(hone|od|ad)/.test(navigator.platform) &&\n /OS 7[^\\d]/.test(navigator.appVersion))\n\n browser.isIe9 = /MSIE 9/.test(navigator.userAgent)\n\n // Opera Mobile must be handled differently\n browser.isOperaMobile = (navigator.appName === 'Opera' &&\n browser.supportsTouch &&\n /Presto/.test(navigator.userAgent))\n\n // prefix matchesSelector\n browser.prefixedMatchesSelector = 'matches' in Element.prototype\n ? 'matches'\n : 'webkitMatchesSelector' in Element.prototype\n ? 'webkitMatchesSelector'\n : 'mozMatchesSelector' in Element.prototype\n ? 'mozMatchesSelector'\n : 'oMatchesSelector' in Element.prototype\n ? 'oMatchesSelector'\n : 'msMatchesSelector'\n\n browser.pEventTypes = (browser.supportsPointerEvent\n ? (domObjects.PointerEvent === window.MSPointerEvent\n ? {\n up: 'MSPointerUp',\n down: 'MSPointerDown',\n over: 'mouseover',\n out: 'mouseout',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel',\n }\n : {\n up: 'pointerup',\n down: 'pointerdown',\n over: 'pointerover',\n out: 'pointerout',\n move: 'pointermove',\n cancel: 'pointercancel',\n })\n : null)\n\n // because Webkit and Opera still use 'mousewheel' event type\n browser.wheelEvent = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import browser from './browser'\nimport domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nexport function nodeContains (parent: Node, child: Node) {\n while (child) {\n if (child === parent) {\n return true\n }\n\n child = child.parentNode\n }\n\n return false\n}\n\nexport function closest (element, selector) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) { return element }\n\n element = parentNode(element)\n }\n\n return null\n}\n\nexport function parentNode (node) {\n let parent = node.parentNode\n\n if (is.docFrag(parent)) {\n // skip past #shado-root fragments\n // tslint:disable-next-line\n while ((parent = (parent as any).host) && is.docFrag(parent)) {\n continue\n }\n\n return parent\n }\n\n return parent\n}\n\nexport function matchesSelector (element, selector) {\n // remove /deep/ from selectors if shadowDOM polyfill is used\n if (win.window !== win.realWindow) {\n selector = selector.replace(/\\/deep\\//g, ' ')\n }\n\n return element[browser.prefixedMatchesSelector](selector)\n}\n\nconst getParent = (el) => el.parentNode ? el.parentNode : el.host\n\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements) {\n let deepestZoneParents = []\n let dropzoneParents = []\n let dropzone\n let deepestZone = elements[0]\n let index = deepestZone ? 0 : -1\n let parent\n let child\n let i\n let n\n\n for (i = 1; i < elements.length; i++) {\n dropzone = elements[i]\n\n // an element might belong to multiple selector dropzones\n if (!dropzone || dropzone === deepestZone) {\n continue\n }\n\n if (!deepestZone) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n // check if the deepest or current are document.documentElement or document.rootElement\n // - if the current dropzone is, do nothing and continue\n if (dropzone.parentNode === dropzone.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current dropzone and continue to next\n else if (deepestZone.parentNode === dropzone.ownerDocument) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n if (!deepestZoneParents.length) {\n parent = deepestZone\n while (getParent(parent) && getParent(parent) !== parent.ownerDocument) {\n deepestZoneParents.unshift(parent)\n parent = getParent(parent)\n }\n }\n\n // if this element is an svg element and the current deepest is\n // an HTMLElement\n if (deepestZone instanceof domObjects.HTMLElement &&\n dropzone instanceof domObjects.SVGElement &&\n !(dropzone instanceof domObjects.SVGSVGElement)) {\n if (dropzone === deepestZone.parentNode) {\n continue\n }\n\n parent = dropzone.ownerSVGElement\n }\n else {\n parent = dropzone\n }\n\n dropzoneParents = []\n\n while (parent.parentNode !== parent.ownerDocument) {\n dropzoneParents.unshift(parent)\n parent = getParent(parent)\n }\n\n n = 0\n\n // get (position of last common ancestor) + 1\n while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n n++\n }\n\n const parents = [\n dropzoneParents[n - 1],\n dropzoneParents[n],\n deepestZoneParents[n],\n ]\n\n child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestZone = dropzone\n index = i\n deepestZoneParents = []\n\n break\n }\n else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n\n return index\n}\n\nexport function matchesUpTo (element: Element, selector: string, limit: Node) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true\n }\n\n element = parentNode(element)\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement (element) {\n return (element instanceof domObjects.SVGElementInstance\n ? element.correspondingUseElement\n : element)\n}\n\nexport function getScrollXY (relevantWindow) {\n relevantWindow = relevantWindow || win.window\n return {\n x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop,\n }\n}\n\nexport function getElementClientRect (element) {\n const clientRect = (element instanceof domObjects.SVGElement\n ? element.getBoundingClientRect()\n : element.getClientRects()[0])\n\n return clientRect && {\n left : clientRect.left,\n right : clientRect.right,\n top : clientRect.top,\n bottom: clientRect.bottom,\n width : clientRect.width || clientRect.right - clientRect.left,\n height: clientRect.height || clientRect.bottom - clientRect.top,\n }\n}\n\nexport function getElementRect (element) {\n const clientRect = getElementClientRect(element)\n\n if (!browser.isIOS7 && clientRect) {\n const scroll = getScrollXY(win.getWindow(element))\n\n clientRect.left += scroll.x\n clientRect.right += scroll.x\n clientRect.top += scroll.y\n clientRect.bottom += scroll.y\n }\n\n return clientRect\n}\n\nexport function getPath (node) {\n const path = []\n\n while (node) {\n path.push(node)\n node = parentNode(node)\n }\n\n return path\n}\n\nexport function trySelector (value) {\n if (!is.string(value)) { return false }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n","import * as arr from './arr'\nimport * as is from './is'\n\nexport default function clone (source: T): Partial {\n const dest = {} as Partial\n\n for (const prop in source) {\n const value = source[prop]\n\n if (is.plainObject(value)) {\n dest[prop] = clone(value) as any\n }\n else if (is.array(value)) {\n dest[prop] = arr.from(value)\n }\n else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n","export interface PointerExtend {\n webkit: RegExp\n [prefix: string]: RegExp\n}\n\nfunction pointerExtend (dest, source) {\n for (const prop in source) {\n const prefixedPropREs = pointerExtend.prefixedPropREs\n let deprecated = false\n\n // skip deprecated prefixed properties\n for (const vendor in prefixedPropREs) {\n if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n deprecated = true\n break\n }\n }\n\n if (!deprecated && typeof source[prop] !== 'function') {\n dest[prop] = source[prop]\n }\n }\n return dest\n}\n\npointerExtend.prefixedPropREs = {\n webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n}\n\nexport default pointerExtend\n","export default (x, y) => Math.sqrt(x * x + y * y)\n","import browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport * as is from './is'\nimport pointerExtend from './pointerExtend'\n\nconst pointerUtils = {\n copyCoords (dest, src) {\n dest.page = dest.page || {}\n dest.page.x = src.page.x\n dest.page.y = src.page.y\n\n dest.client = dest.client || {}\n dest.client.x = src.client.x\n dest.client.y = src.client.y\n\n dest.timeStamp = src.timeStamp\n },\n\n setCoordDeltas (targetObj, prev, cur) {\n targetObj.page.x = cur.page.x - prev.page.x\n targetObj.page.y = cur.page.y - prev.page.y\n targetObj.client.x = cur.client.x - prev.client.x\n targetObj.client.y = cur.client.y - prev.client.y\n targetObj.timeStamp = cur.timeStamp - prev.timeStamp\n },\n\n setCoordVelocity (targetObj, delta) {\n const dt = Math.max(delta.timeStamp / 1000, 0.001)\n\n targetObj.page.x = delta.page.x / dt\n targetObj.page.y = delta.page.y / dt\n targetObj.client.x = delta.client.x / dt\n targetObj.client.y = delta.client.y / dt\n targetObj.timeStamp = dt\n },\n\n isNativePointer (pointer) {\n return (pointer instanceof dom.Event || pointer instanceof dom.Touch)\n },\n\n // Get specified X/Y coords for mouse or event.touches[0]\n getXY (type, pointer, xy) {\n xy = xy || {}\n type = type || 'page'\n\n xy.x = pointer[type + 'X']\n xy.y = pointer[type + 'Y']\n\n return xy\n },\n\n getPageXY (pointer: Interact.PointerType | Interact.InteractEvent, page?: Interact.Point) {\n page = page || { x: 0, y: 0 }\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n pointerUtils.getXY('screen', pointer, page)\n\n page.x += window.scrollX\n page.y += window.scrollY\n }\n else {\n pointerUtils.getXY('page', pointer, page)\n }\n\n return page\n },\n\n getClientXY (pointer, client) {\n client = client || {}\n\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n pointerUtils.getXY('screen', pointer, client)\n }\n else {\n pointerUtils.getXY('client', pointer, client)\n }\n\n return client\n },\n\n getPointerId (pointer) {\n return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier\n },\n\n setCoords (targetObj, pointers: any[], timeStamp: number) {\n const pointer = (pointers.length > 1\n ? pointerUtils.pointerAverage(pointers)\n : pointers[0])\n\n const tmpXY = {} as { x: number, y: number }\n\n pointerUtils.getPageXY(pointer, tmpXY)\n targetObj.page.x = tmpXY.x\n targetObj.page.y = tmpXY.y\n\n pointerUtils.getClientXY(pointer, tmpXY)\n targetObj.client.x = tmpXY.x\n targetObj.client.y = tmpXY.y\n\n targetObj.timeStamp = timeStamp\n },\n\n pointerExtend,\n\n getTouchPair (event) {\n const touches = []\n\n // array of touches is supplied\n if (is.array(event)) {\n touches[0] = event[0]\n touches[1] = event[1]\n }\n // an event\n else {\n if (event.type === 'touchend') {\n if (event.touches.length === 1) {\n touches[0] = event.touches[0]\n touches[1] = event.changedTouches[0]\n }\n else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\n }\n else {\n touches[0] = event.touches[0]\n touches[1] = event.touches[1]\n }\n }\n\n return touches\n },\n\n pointerAverage (pointers: PointerEvent[] | Event[]) {\n const average = {\n pageX : 0,\n pageY : 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop] += pointer[prop]\n }\n }\n for (const prop in average) {\n average[prop] /= pointers.length\n }\n\n return average\n },\n\n touchBBox (event: Event | Array<(Interact.PointerType) | TouchEvent>) {\n if (!(event as any).length &&\n !((event as TouchEvent).touches &&\n (event as TouchEvent).touches.length > 1)) {\n return null\n }\n\n const touches = pointerUtils.getTouchPair(event)\n const minX = Math.min(touches[0].pageX, touches[1].pageX)\n const minY = Math.min(touches[0].pageY, touches[1].pageY)\n const maxX = Math.max(touches[0].pageX, touches[1].pageX)\n const maxY = Math.max(touches[0].pageY, touches[1].pageY)\n\n return {\n x: minX,\n y: minY,\n left: minX,\n top: minY,\n right: maxX,\n bottom: maxY,\n width: maxX - minX,\n height: maxY - minY,\n }\n },\n\n touchDistance (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.getTouchPair(event)\n\n const dx = touches[0][sourceX] - touches[1][sourceX]\n const dy = touches[0][sourceY] - touches[1][sourceY]\n\n return hypot(dx, dy)\n },\n\n touchAngle (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.getTouchPair(event)\n const dx = touches[1][sourceX] - touches[0][sourceX]\n const dy = touches[1][sourceY] - touches[0][sourceY]\n const angle = 180 * Math.atan2(dy, dx) / Math.PI\n\n return angle\n },\n\n getPointerType (pointer) {\n return is.string(pointer.pointerType)\n ? pointer.pointerType\n : is.number(pointer.pointerType)\n ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType]\n // if the PointerEvent API isn't available, then the \"pointer\" must\n // be either a MouseEvent, TouchEvent, or Touch object\n : /touch/.test(pointer.type) || pointer instanceof dom.Touch\n ? 'touch'\n : 'mouse'\n },\n\n // [ event.target, event.currentTarget ]\n getEventTargets (event) {\n const path = is.func(event.composedPath) ? event.composedPath() : event.path\n\n return [\n domUtils.getActualElement(path ? path[0] : event.target),\n domUtils.getActualElement(event.currentTarget),\n ]\n },\n\n newCoords () {\n return {\n page : { x: 0, y: 0 },\n client : { x: 0, y: 0 },\n timeStamp: 0,\n }\n },\n\n coordsToEvent (coords: MockCoords) {\n const event = {\n coords,\n get page () { return this.coords.page },\n get client () { return this.coords.client },\n get timeStamp () { return this.coords.timeStamp },\n get pageX () { return this.coords.page.x },\n get pageY () { return this.coords.page.y },\n get clientX () { return this.coords.client.x },\n get clientY () { return this.coords.client.y },\n get pointerId () { return this.coords.pointerId },\n get target () { return this.coords.target },\n get type () { return this.coords.type },\n get pointerType () { return this.coords.pointerType },\n }\n\n return event as typeof event & Interact.PointerType & Interact.PointerEventType\n },\n}\n\nexport default pointerUtils\n\nexport interface MockCoords {\n page: Interact.Point\n client: Interact.Point\n timeStamp?: number\n pointerId?: any\n target?: any\n type?: string\n pointerType?: string\n}\n","import { contains } from './arr'\nimport * as domUtils from './domUtils'\nimport * as is from './is'\nimport pExtend from './pointerExtend'\nimport 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 (!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 (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 (selector, context, type, listener?, optionalArg?: any) {\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 = 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) {\n return is.object(param) ? param : { capture: param }\n}\n\nexport class FakeEvent implements Partial {\n currentTarget: EventTarget\n\n constructor (public originalEvent) {\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","export default function extend> (dest: U, source: T) {\n for (const prop in source) {\n (dest as unknown as T)[prop] = source[prop]\n }\n return dest as T & U\n}\n","import { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport * as is from './is'\n\nexport function getStringOptionResult (value, interactable, element) {\n if (!is.string(value)) {\n return null\n }\n\n if (value === 'parent') {\n value = parentNode(element)\n }\n else if (value === 'self') {\n value = interactable.getRect(element)\n }\n else {\n value = closest(element, value)\n }\n\n return value\n}\n\nexport function resolveRectLike (value, interactable?, element?, functionArgs?) {\n value = getStringOptionResult(value, interactable, element) || value\n\n if (is.func(value)) {\n value = value.apply(null, functionArgs)\n }\n\n if (is.element(value)) {\n value = getElementRect(value)\n }\n\n return value\n}\n\nexport function rectToXY (rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n}\n\nexport function xywhToTlbr (rect) {\n if (rect && !('left' in rect && 'top' in rect)) {\n rect = extend({}, rect)\n\n rect.left = rect.x || 0\n rect.top = rect.y || 0\n rect.right = rect.right || (rect.left + rect.width)\n rect.bottom = rect.bottom || (rect.top + rect.height)\n }\n\n return rect\n}\n\nexport function tlbrToXywh (rect) {\n if (rect && !('x' in rect && 'y' in rect)) {\n rect = extend({}, rect)\n\n rect.x = rect.left || 0\n rect.y = rect.top || 0\n rect.width = rect.width || (rect.right - rect.x)\n rect.height = rect.height || (rect.bottom - rect.y)\n }\n\n return rect\n}\n\nexport default {\n getStringOptionResult,\n resolveRectLike,\n rectToXY,\n xywhToTlbr,\n tlbrToXywh,\n}\n","import { rectToXY, resolveRectLike } from './rect'\n\nexport default function (target, element, action?) {\n const actionOptions = target.options[action]\n const actionOrigin = actionOptions && actionOptions.origin\n const origin = actionOrigin || target.options.origin\n\n const originRect = resolveRectLike(origin, target, element, [target && element])\n\n return rectToXY(originRect) || { x: 0, y: 0 }\n}\n","import extend from './extend'\nimport * as is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Interact.Listener[]\n}\n\nexport default function normalize (\n type: Interact.EventTypes,\n listeners?: Interact.ListenersArg | Interact.ListenersArg[],\n result?: NormalizedListeners,\n): NormalizedListeners {\n result = result || {}\n\n if (is.string(type) && type.search(' ') !== -1) {\n type = split(type)\n }\n\n if (is.array(type)) {\n return type.reduce(\n (acc, t) => extend(acc, normalize(t, listeners, result)),\n result\n )\n }\n\n // ({ type: fn }) -> ('', { type: fn })\n if (is.object(type)) {\n listeners = type\n type = ''\n }\n\n if (is.func(listeners)) {\n result[type] = result[type] || []\n result[type].push(listeners)\n }\n else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result)\n }\n }\n else if (is.object(listeners)) {\n for (const prefix in listeners) {\n const combinedTypes = split(prefix).map((p) => `${type}${p}`)\n\n normalize(combinedTypes, listeners[prefix], result)\n }\n }\n\n return result as NormalizedListeners\n}\n\nfunction split (type: string) {\n return type.trim().split(/ +/)\n}\n","let lastTime = 0\nlet request\nlet cancel\n\nfunction init (window) {\n request = window.requestAnimationFrame\n cancel = window.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = window[`${vendor}RequestAnimationFrame`]\n cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`]\n }\n }\n\n if (!request) {\n request = (callback) => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n // eslint-disable-next-line standard/no-callback-literal\n const token = setTimeout(() => { callback(currTime + timeToCall) },\n timeToCall)\n\n lastTime = currTime + timeToCall\n return token\n }\n\n cancel = (token) => clearTimeout(token)\n }\n}\n\nexport default {\n request: (callback) => request(callback),\n cancel: (token) => cancel(token),\n init,\n}\n","export type SignalListener = (signalArg: PartialSignalArg, sinalName?: string) => (void | boolean)\n\nexport interface SignalArg {\n interaction: Interact.Interaction\n Interactable: Interact.Interactable\n iEvent: Interact.InteractEvent\n element: Interact.EventTarget\n coords: Interact.Point\n event: Interact.PointerEventType\n phase: Interact.EventPhase\n [index: string]: any\n}\n\nexport type PartialSignalArg = Partial\n\nclass Signals {\n listeners: {\n [signalName: string]: SignalListener[],\n } = {}\n\n on (name: string, listener: SignalListener) {\n if (!this.listeners[name]) {\n this.listeners[name] = [listener]\n return\n }\n\n this.listeners[name].push(listener)\n }\n\n off (name: string, listener: SignalListener) {\n if (!this.listeners[name]) { return }\n\n const index = this.listeners[name].indexOf(listener)\n\n if (index !== -1) {\n this.listeners[name].splice(index, 1)\n }\n }\n\n fire (name: string, arg: Partial): void | false {\n const targetListeners = this.listeners[name]\n\n if (!targetListeners) { return }\n\n for (const listener of targetListeners) {\n if (listener(arg, name) === false) {\n return false\n }\n }\n }\n}\n\nexport default Signals\n","import * as arr from './arr'\nimport * as dom from './domUtils'\nimport * as is from './is'\nimport win from './window'\n\nexport function warnOnce (this: T, method: (...args: any) => any, message: string) {\n let warned = false\n\n // eslint-disable-next-line no-shadow\n return function (this: T) {\n if (!warned) {\n (win as any).window.console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nexport function _getQBezierValue (t: number, p1: number, p2: number, p3: number) {\n const iT = 1 - t\n return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3\n}\n\nexport function getQuadraticCurvePoint (\n startX: number, startY: number, cpX: number, cpY: number, endX: number, endY: number, position: number) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nexport function easeOutQuad (t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport function copyAction (dest: Interact.ActionProps, src: Interact.ActionProps) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport { default as browser } from './browser'\nexport { default as clone } from './clone'\nexport { default as events } from './events'\nexport { default as extend } from './extend'\nexport { default as getOriginXY } from './getOriginXY'\nexport { default as hypot } from './hypot'\nexport { default as normalizeListeners } from './normalizeListeners'\nexport { default as pointer } from './pointerUtils'\nexport { default as raf } from './raf'\nexport { default as rect } from './rect'\nexport { default as Signals } from './Signals'\nexport { win, arr, dom, is }\n","// tslint:disable no-empty-interface\n\nexport interface Defaults {\n base: BaseDefaults\n perAction: PerActionDefaults\n actions: ActionDefaults\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ActionDefaults {\n}\n\nexport interface BaseDefaults {\n preventDefault?: 'auto' | 'never' | string\n deltaSource?: 'page' | 'client'\n context?: Window | Document | Element\n [key: string]: any\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Interact.Point | string | Element\n listeners?: Interact.Listeners\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n}\n\nexport type Options = Partial & Partial & {\n [P in keyof ActionDefaults]?: Partial\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, Interact.OrBoolean {}\n\nexport const defaults: Defaults = {\n base: {\n preventDefault: 'auto',\n deltaSource: 'page',\n },\n\n perAction: {\n enabled: false,\n origin: { x: 0, y: 0 },\n },\n\n actions: {} as ActionDefaults,\n}\n\nexport default defaults\n","import * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport normalize, { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\nimport { EventPhase, InteractEvent } from './InteractEvent'\nimport { ActionName } from './scope'\n\nfunction fireUntilImmediateStopped<\nT extends ActionName,\nP extends EventPhase,\n> (event: InteractEvent, listeners: Interact.Listener[]) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) { break }\n\n listener(event)\n }\n}\n\nclass Eventable {\n options: any\n types: NormalizedListeners = {}\n propagationStopped = false\n immediatePropagationStopped = false\n global: any\n\n constructor (options?: { [index: string]: any }) {\n this.options = extend({}, options || {})\n }\n\n fire (event: any) {\n let listeners\n const global = this.global\n\n // Interactable#on() listeners\n // tslint:disable no-conditional-assignment\n if ((listeners = this.types[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n\n // interact.on() listeners\n if (!event.propagationStopped && global && (listeners = global[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n }\n\n on (type: string, listener: Interact.ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n this.types[type] = arr.merge(this.types[type] || [], listeners[type])\n }\n }\n\n off (type: string, listener: Interact.ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n const eventList = this.types[type]\n\n if (!eventList || !eventList.length) { continue }\n\n for (const subListener of listeners[type]) {\n const index = eventList.indexOf(subListener)\n\n if (index !== -1) {\n eventList.splice(index, 1)\n }\n }\n }\n }\n}\n\nexport default Eventable\n","import * as arr from '@interactjs/utils/arr'\nimport browser from '@interactjs/utils/browser'\nimport clone from '@interactjs/utils/clone'\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\nimport { ActionDefaults, Defaults, Options } from './defaultOptions'\nimport Eventable from './Eventable'\nimport { Actions } from './scope'\n\ntype IgnoreValue = string | Element | boolean\n\n/** */\nexport class Interactable implements Partial {\n protected get _defaults (): Defaults {\n return {\n base: {},\n perAction: {},\n actions: {} as ActionDefaults,\n }\n }\n\n readonly options!: Required\n readonly _actions: Actions\n readonly target: Interact.Target\n readonly events = new Eventable()\n readonly _context: Document | Element\n readonly _win: Window\n readonly _doc: Document\n\n /** */\n constructor (target: Interact.Target, options: any, defaultContext: Document | Element) {\n this._actions = options.actions\n this.target = target\n this._context = options.context || defaultContext\n this._win = getWindow(trySelector(target) ? this._context : target)\n this._doc = this._win.document\n\n this.set(options)\n }\n\n setOnEvents (actionName: string, phases: NonNullable) {\n if (is.func(phases.onstart)) { this.on(`${actionName}start`, phases.onstart) }\n if (is.func(phases.onmove)) { this.on(`${actionName}move`, phases.onmove) }\n if (is.func(phases.onend)) { this.on(`${actionName}end`, phases.onend) }\n if (is.func(phases.oninertiastart)) { this.on(`${actionName}inertiastart`, phases.oninertiastart) }\n\n return this\n }\n\n updatePerActionListeners (actionName, prev, cur) {\n if (is.array(prev) || is.object(prev)) {\n this.off(actionName, prev)\n }\n\n if (is.array(cur) || is.object(cur)) {\n this.on(actionName, cur)\n }\n }\n\n setPerAction (actionName, options: Interact.OrBoolean) {\n const defaults = this._defaults\n\n // for all the default per-action options\n for (const optionName in options) {\n const actionOptions = this.options[actionName]\n const optionValue = options[optionName]\n const isArray = is.array(optionValue)\n\n // remove old event listeners and add new ones\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue)\n }\n\n // if the option value is an array\n if (isArray) {\n actionOptions[optionName] = arr.from(optionValue)\n }\n // if the option value is an object\n else if (!isArray && is.plainObject(optionValue)) {\n // copy the object\n actionOptions[optionName] = extend(\n actionOptions[optionName] || {},\n clone(optionValue))\n\n // set anabled field to true if it exists in the defaults\n if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n actionOptions[optionName].enabled = optionValue.enabled !== false\n }\n }\n // if the option value is a boolean and the default is an object\n else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n actionOptions[optionName].enabled = optionValue\n }\n // if it's anything else, do a plain assignment\n else {\n actionOptions[optionName] = optionValue\n }\n }\n }\n\n /**\n * The default function to get an Interactables bounding rect. Can be\n * overridden using {@link Interactable.rectChecker}.\n *\n * @param {Element} [element] The element to measure.\n * @return {object} The object's bounding rectangle.\n */\n getRect (element: Element) {\n element = element || (is.element(this.target)\n ? this.target\n : null)\n\n if (is.string(this.target)) {\n element = element || this._context.querySelector(this.target)\n }\n\n return getElementRect(element)\n }\n\n /**\n * Returns or sets the function used to calculate the interactable's\n * element's rectangle\n *\n * @param {function} [checker] A function which returns this Interactable's\n * bounding rectangle. See {@link Interactable.getRect}\n * @return {function | object} The checker function or this Interactable\n */\n rectChecker (checker: (element: Element) => any) {\n if (is.func(checker)) {\n this.getRect = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.getRect\n\n return this\n }\n\n return this.getRect\n }\n\n _backCompatOption (optionName, newValue) {\n if (trySelector(newValue) || is.object(newValue)) {\n this.options[optionName] = newValue\n\n for (const action of this._actions.names) {\n this.options[action][optionName] = newValue\n }\n\n return this\n }\n\n return this.options[optionName]\n }\n\n /**\n * Gets or sets the origin of the Interactable's element. The x and y\n * of the origin will be subtracted from action event coordinates.\n *\n * @param {Element | object | string} [origin] An HTML or SVG Element whose\n * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n * or any CSS selector\n *\n * @return {object} The current origin or this Interactable\n */\n origin (newValue) {\n return this._backCompatOption('origin', newValue)\n }\n\n /**\n * Returns or sets the mouse coordinate types used to calculate the\n * movement of the pointer.\n *\n * @param {string} [newValue] Use 'client' if you will be scrolling while\n * interacting; Use 'page' if you want autoScroll to work\n * @return {string | object} The current deltaSource or this Interactable\n */\n deltaSource (newValue) {\n if (newValue === 'page' || newValue === 'client') {\n this.options.deltaSource = newValue\n\n return this\n }\n\n return this.options.deltaSource\n }\n\n /**\n * Gets the selector context Node of the Interactable. The default is\n * `window.document`.\n *\n * @return {Node} The context Node of this Interactable\n */\n context () {\n return this._context\n }\n\n inContext (element) {\n return (this._context === element.ownerDocument ||\n nodeContains(this._context, element))\n }\n\n testIgnoreAllow (this: Interactable, options: { ignoreFrom: IgnoreValue, allowFrom: IgnoreValue }, targetNode: Node, eventTarget: Element) {\n return (!this.testIgnore(options.ignoreFrom, targetNode, eventTarget) &&\n this.testAllow(options.allowFrom, targetNode, eventTarget))\n }\n\n testAllow (this: Interactable, allowFrom: IgnoreValue, targetNode: Node, element: Element) {\n if (!allowFrom) { return true }\n\n if (!is.element(element)) { return false }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, targetNode)\n }\n else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element)\n }\n\n return false\n }\n\n testIgnore (this: Interactable, ignoreFrom: IgnoreValue, targetNode: Node, element: Element) {\n if (!ignoreFrom || !is.element(element)) { return false }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, targetNode)\n }\n else if (is.element(ignoreFrom)) {\n return nodeContains(ignoreFrom, element)\n }\n\n return false\n }\n\n /**\n * Calls listeners for the given InteractEvent type bound globally\n * and directly to this Interactable\n *\n * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n * Interactable\n * @return {Interactable} this Interactable\n */\n fire (iEvent) {\n this.events.fire(iEvent)\n\n return this\n }\n\n _onOff (method: 'on' | 'off', typeArg: Interact.EventTypes, listenerArg?: Interact.ListenersArg | null, options?: any) {\n if (is.object(typeArg) && !is.array(typeArg)) {\n options = listenerArg\n listenerArg = null\n }\n\n const addRemove = method === 'on' ? 'add' : 'remove'\n const listeners = normalizeListeners(typeArg, listenerArg)\n\n for (let type in listeners) {\n if (type === 'wheel') { type = browser.wheelEvent }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (arr.contains(this._actions.eventTypes, type)) {\n this.events[method](type, listener)\n }\n // delegated event\n else if (is.string(this.target)) {\n events[`${addRemove}Delegate`](this.target, this._context, type, listener, options)\n }\n // remove listener from this Interatable's element\n else {\n (events[addRemove] as typeof events.remove)(this.target, type, listener, options)\n }\n }\n }\n\n return this\n }\n\n /**\n * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n *\n * @param {string | array | object} types The types of events to listen\n * for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * addEventListener\n * @return {Interactable} This Interactable\n */\n on (types: Interact.EventTypes, listener?: Interact.ListenersArg, options?: any) {\n return this._onOff('on', types, listener, options)\n }\n\n /**\n * Removes an InteractEvent, pointerEvent or DOM event listener.\n *\n * @param {string | array | object} types The types of events that were\n * listened for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * removeEventListener\n * @return {Interactable} This Interactable\n */\n off (types: string | string[] | Interact.EventTypes, listener?: Interact.ListenersArg, options?: any) {\n return this._onOff('off', types, listener, options)\n }\n\n /**\n * Reset the options of this Interactable\n *\n * @param {object} options The new settings to apply\n * @return {object} This Interactable\n */\n set (options: Interact.OptionsArg) {\n const defaults = this._defaults\n\n if (!is.object(options)) {\n options = {}\n }\n\n (this.options as Required) = clone(defaults.base) as Required\n\n for (const actionName in this._actions.methodDict) {\n const methodName = this._actions.methodDict[actionName]\n\n this.options[actionName] = {}\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n\n this[methodName](options[actionName])\n }\n\n for (const setting in options) {\n if (is.func(this[setting])) {\n this[setting](options[setting])\n }\n }\n\n return this\n }\n\n /**\n * Remove this interactable from the list of interactables and remove it's\n * action capabilities and event listeners\n *\n * @return {interact}\n */\n unset () {\n events.remove(this.target as Node, 'all')\n\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in events.delegatedEvents) {\n const delegated = events.delegatedEvents[type]\n\n if (delegated.selectors[0] === this.target &&\n delegated.contexts[0] === this._context) {\n delegated.selectors.splice(0, 1)\n delegated.contexts.splice(0, 1)\n delegated.listeners.splice(0, 1)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegated[type] = null\n }\n }\n\n events.remove(this._context, type, events.delegateListener)\n events.remove(this._context, type, events.delegateUseCapture, true)\n }\n }\n else {\n events.remove(this.target as Node, 'all')\n }\n }\n}\n\nexport default Interactable\n","import * as arr from '@interactjs/utils/arr'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport Signals from '@interactjs/utils/Signals'\n\nexport default class InteractableSet {\n signals = new Signals()\n\n // all set interactables\n list: Interact.Interactable[] = []\n\n selectorMap: {\n [selector: string]: Array<{ context: Document | Element, interactable: Interact.Interactable }>\n } = {}\n\n constructor (protected scope: Interact.Scope) {\n this.signals.on('unset', ({ interactable }) => {\n const { target, _context: context } = interactable\n const targetMappings = is.string(target)\n ? this.selectorMap[target]\n : target[this.scope.id]\n\n const targetIndex = targetMappings.findIndex((m) => m.context === context)\n if (targetMappings[targetIndex]) {\n // Destroying mappingInfo's context and interactable\n targetMappings[targetIndex].context = null\n targetMappings[targetIndex].interactable = null\n }\n targetMappings.splice(targetIndex, 1)\n })\n }\n\n new (target: Interact.Target, options?: any): Interact.Interactable {\n options = extend(options || {}, {\n actions: this.scope.actions,\n })\n const interactable = new this.scope.Interactable(target, options, this.scope.document)\n const mappingInfo = { context: interactable._context, interactable }\n\n this.scope.addDocument(interactable._doc)\n this.list.push(interactable)\n\n if (is.string(target)) {\n if (!this.selectorMap[target]) { this.selectorMap[target] = [] }\n this.selectorMap[target].push(mappingInfo)\n } else {\n if (!interactable.target[this.scope.id]) {\n Object.defineProperty(target, this.scope.id, {\n value: [],\n configurable: true,\n })\n }\n\n target[this.scope.id].push(mappingInfo)\n }\n\n this.signals.fire('new', {\n target,\n options,\n interactable,\n win: this.scope._win,\n })\n\n return interactable\n }\n\n get (target: Interact.Target, options) {\n const context = (options && options.context) || this.scope.document\n const isSelector = is.string(target)\n const targetMappings = isSelector\n ? this.selectorMap[target as string]\n : target[this.scope.id]\n\n if (!targetMappings) { return null }\n\n const found = arr.find(\n targetMappings,\n (m) => m.context === context &&\n (isSelector || m.interactable.inContext(target)))\n\n return found && found.interactable\n }\n\n forEachMatch (node: Node, callback: (interactable: any) => any) {\n for (const interactable of this.list) {\n let ret\n\n if ((is.string(interactable.target)\n // target is a selector and the element matches\n ? (is.element(node) && domUtils.matchesSelector(node, interactable.target))\n // target is the element\n : node === interactable.target) &&\n // the element is in context\n (interactable.inContext(node))) {\n ret = callback(interactable)\n }\n\n if (ret !== undefined) {\n return ret\n }\n }\n }\n}\n","import Interactable from './Interactable'\nimport Interaction from './Interaction'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class BaseEvent {\n type: string\n target: EventTarget\n currentTarget: EventTarget\n interactable: Interactable\n _interaction: Interaction\n timeStamp: any\n immediatePropagationStopped = false\n propagationStopped = false\n\n get interaction () {\n return this._interaction._proxy\n }\n\n constructor (interaction) {\n this._interaction = interaction\n }\n\n preventDefault () {}\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n\nexport default BaseEvent\n","import extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport BaseEvent from './BaseEvent'\nimport defaults from './defaultOptions'\nimport Interaction from './Interaction'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class InteractEvent<\n T extends ActionName = any,\n P extends EventPhase = EventPhase._NONE,\n> extends BaseEvent {\n target: Element\n currentTarget: Element\n relatedTarget: Element\n screenX?: number\n screenY?: number\n button: number\n buttons: number\n ctrlKey: boolean\n shiftKey: boolean\n altKey: boolean\n metaKey: boolean\n page: Interact.Point\n client: Interact.Point\n delta: Interact.Point\n rect: Interact.FullRect\n x0: number\n y0: number\n t0: number\n dt: number\n duration: number\n clientX0: number\n clientY0: number\n velocity: Interact.Point\n speed: number\n swipe: ReturnType['getSwipe']>\n timeStamp: any\n // drag\n dragEnter?: Element\n dragLeave?: Element\n // resize\n axes?: Interact.Point\n preEnd?: boolean\n\n /** */\n constructor (\n interaction: Interaction,\n event: Interact.PointerEventType,\n actionName: T,\n phase: P,\n element: Element,\n related?: Element,\n preEnd?: boolean,\n type?: string,\n ) {\n super(interaction)\n\n element = element || interaction.element\n\n const target = interaction.interactable\n // FIXME: add deltaSource to defaults\n const deltaSource = (((target && target.options) || defaults) as any).deltaSource as 'page' | 'client'\n const origin = getOriginXY(target, element, actionName)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const prevEvent = starting ? this : interaction.prevEvent\n const coords = starting\n ? interaction.coords.start\n : ending\n ? { page: prevEvent.page, client: prevEvent.client, timeStamp: interaction.coords.cur.timeStamp }\n : interaction.coords.cur\n\n this.page = extend({}, coords.page)\n this.client = extend({}, coords.client)\n this.rect = extend({}, interaction.rect)\n this.timeStamp = coords.timeStamp\n\n if (!ending) {\n this.page.x -= origin.x\n this.page.y -= origin.y\n\n this.client.x -= origin.x\n this.client.y -= origin.y\n }\n\n this.ctrlKey = event.ctrlKey\n this.altKey = event.altKey\n this.shiftKey = event.shiftKey\n this.metaKey = event.metaKey\n this.button = (event as MouseEvent).button\n this.buttons = (event as MouseEvent).buttons\n this.target = element\n this.currentTarget = element\n this.relatedTarget = related || null\n this.preEnd = preEnd\n this.type = type || (actionName + (phase || ''))\n this.interactable = target\n\n this.t0 = starting\n ? interaction.pointers[interaction.pointers.length - 1].downTime\n : prevEvent.t0\n\n this.x0 = interaction.coords.start.page.x - origin.x\n this.y0 = interaction.coords.start.page.y - origin.y\n this.clientX0 = interaction.coords.start.client.x - origin.x\n this.clientY0 = interaction.coords.start.client.y - origin.y\n\n if (starting || ending) {\n this.delta = { x: 0, y: 0 }\n }\n else {\n this.delta = {\n x: this[deltaSource].x - prevEvent[deltaSource].x,\n y: this[deltaSource].y - prevEvent[deltaSource].y,\n }\n }\n\n this.dt = interaction.coords.delta.timeStamp\n this.duration = this.timeStamp - this.t0\n\n // velocity and speed in pixels per second\n this.velocity = extend({}, interaction.coords.velocity[deltaSource])\n this.speed = hypot(this.velocity.x, this.velocity.y)\n\n this.swipe = (ending || phase === 'inertiastart') ? this.getSwipe() : null\n }\n\n get pageX () { return this.page.x }\n set pageX (value) { this.page.x = value }\n get pageY () { return this.page.y }\n set pageY (value) { this.page.y = value }\n\n get clientX () { return this.client.x }\n set clientX (value) { this.client.x = value }\n get clientY () { return this.client.y }\n set clientY (value) { this.client.y = value }\n\n get dx () { return this.delta.x }\n set dx (value) { this.delta.x = value }\n get dy () { return this.delta.y }\n set dy (value) { this.delta.y = value }\n\n get velocityX () { return this.velocity.x }\n set velocityX (value) { this.velocity.x = value }\n get velocityY () { return this.velocity.y }\n set velocityY (value) { this.velocity.y = value }\n\n getSwipe () {\n const interaction = this._interaction\n\n if (interaction.prevEvent.speed < 600 ||\n this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n return null\n }\n\n let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI\n const overlap = 22.5\n\n if (angle < 0) {\n angle += 360\n }\n\n const left = 135 - overlap <= angle && angle < 225 + overlap\n const up = 225 - overlap <= angle && angle < 315 + overlap\n\n const right = !left && (315 - overlap <= angle || angle < 45 + overlap)\n const down = !up && 45 - overlap <= angle && angle < 135 + overlap\n\n return {\n up,\n down,\n left,\n right,\n angle,\n speed: interaction.prevEvent.speed,\n velocity: {\n x: interaction.prevEvent.velocityX,\n y: interaction.prevEvent.velocityY,\n },\n }\n }\n\n preventDefault () {}\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n}\n\nexport default InteractEvent\n","export class PointerInfo {\n constructor (\n public id: number,\n public pointer: Interact.PointerType,\n public event: Interact.PointerEventType,\n public downTime: number,\n public downTarget: Node,\n ) {}\n}\n\nexport default PointerInfo\n","import * as dom from '@interactjs/utils/domUtils'\n\nexport interface SearchDetails {\n pointer: Interact.PointerType\n pointerId: number\n pointerType: string\n eventType: string\n eventTarget: Interact.EventTarget\n curEventTarget: Interact.EventTarget\n scope: Interact.Scope\n}\n\nconst finder = {\n methodOrder: [ 'simulationResume', 'mouseOrPen', 'hasPointer', 'idle' ],\n\n search (details) {\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details)\n\n if (interaction) {\n return interaction\n }\n }\n },\n\n // try to resume simulation with a new pointer\n simulationResume ({ pointerType, eventType, eventTarget, scope }: SearchDetails) {\n if (!/down|start/i.test(eventType)) {\n return null\n }\n\n for (const interaction of scope.interactions.list) {\n let element = eventTarget\n\n if (interaction.simulation && interaction.simulation.allowResume &&\n (interaction.pointerType === pointerType)) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction\n }\n element = dom.parentNode(element)\n }\n }\n }\n\n return null\n },\n\n // if it's a mouse or pen interaction\n mouseOrPen ({ pointerId, pointerType, eventType, scope }: SearchDetails) {\n if (pointerType !== 'mouse' && pointerType !== 'pen') {\n return null\n }\n\n let firstNonActive\n\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType) {\n // if it's a down event, skip interactions with running simulations\n if (interaction.simulation && !hasPointerId(interaction, pointerId)) { continue }\n\n // if the interaction is active, return it immediately\n if (interaction.interacting()) {\n return interaction\n }\n // otherwise save it and look for another active interaction\n else if (!firstNonActive) {\n firstNonActive = interaction\n }\n }\n }\n\n // if no active mouse interaction was found use the first inactive mouse\n // interaction\n if (firstNonActive) {\n return firstNonActive\n }\n\n // find any mouse or pen interaction.\n // ignore the interaction if the eventType is a *down, and a simulation\n // is active\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get interaction that has this pointer\n hasPointer ({ pointerId, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n if (hasPointerId(interaction, pointerId)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get first idle interaction with a matching pointerType\n idle ({ pointerType, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n // if there's already a pointer held down\n if (interaction.pointers.length === 1) {\n const target = interaction.interactable\n // don't add this pointer if there is a target interactable and it\n // isn't gesturable\n if (target && !target.options.gesture.enabled) {\n continue\n }\n }\n // maximum of 2 pointers per interaction\n else if (interaction.pointers.length >= 2) {\n continue\n }\n\n if (!interaction.interacting() && (pointerType === interaction.pointerType)) {\n return interaction\n }\n }\n\n return null\n },\n}\n\nfunction hasPointerId (interaction: Interact.Interaction, pointerId: number) {\n return interaction.pointers.some(({ id }) => id === pointerId)\n}\n\nexport default finder\n","import { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drag: Interact.DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Drag]?: typeof drag\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Drag = 'drag'\n }\n}\n\n(ActionName as any).Drag = 'drag'\n\nexport type DragEvent = Interact.InteractEvent\n\nexport type DraggableMethod = Interact.ActionMethod\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('before-action-move', beforeMove)\n interactions.signals.on('action-resume', beforeMove)\n\n // dragmove\n interactions.signals.on('action-move', move)\n\n Interactable.prototype.draggable = drag.draggable\n\n actions[ActionName.Drag] = drag\n actions.names.push(ActionName.Drag)\n arr.merge(actions.eventTypes, [\n 'dragstart',\n 'dragmove',\n 'draginertiastart',\n 'dragresume',\n 'dragend',\n ])\n actions.methodDict.drag = 'draggable'\n\n defaults.actions.drag = drag.defaults\n}\n\nfunction beforeMove ({ interaction }) {\n if (interaction.prepared.name !== 'drag') { return }\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x') {\n interaction.coords.cur.page.y = interaction.coords.start.page.y\n interaction.coords.cur.client.y = interaction.coords.start.client.y\n\n interaction.coords.velocity.client.y = 0\n interaction.coords.velocity.page.y = 0\n }\n else if (axis === 'y') {\n interaction.coords.cur.page.x = interaction.coords.start.page.x\n interaction.coords.cur.client.x = interaction.coords.start.client.x\n\n interaction.coords.velocity.client.x = 0\n interaction.coords.velocity.page.x = 0\n }\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'drag') { return }\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x' || axis === 'y') {\n const opposite = axis === 'x' ? 'y' : 'x'\n\n iEvent.page[opposite] = interaction.coords.start.page[opposite]\n iEvent.client[opposite] = interaction.coords.start.client[opposite]\n iEvent.delta[opposite] = 0\n }\n}\n\n/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\nconst draggable: DraggableMethod = function draggable (this: Interact.Interactable, options?: Interact.DraggableOptions | boolean): any {\n if (is.object(options)) {\n this.options.drag.enabled = options.enabled !== false\n this.setPerAction('drag', options)\n this.setOnEvents('drag', options)\n\n if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n this.options.drag.lockAxis = options.lockAxis\n }\n if (/^(xy|x|y)$/.test(options.startAxis)) {\n this.options.drag.startAxis = options.startAxis\n }\n\n return this\n }\n\n if (is.bool(options)) {\n this.options.drag.enabled = options\n\n return this\n }\n\n return this.options.drag\n}\n\nconst drag: Interact.Plugin = {\n id: 'actions/drag',\n install,\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis : 'xy',\n lockAxis : 'xy',\n } as Interact.DropzoneOptions,\n\n checker (_pointer, _event, interactable) {\n const dragOptions = interactable.options.drag\n\n return dragOptions.enabled\n ? {\n name: 'drag',\n axis: (dragOptions.lockAxis === 'start'\n ? dragOptions.startAxis\n : dragOptions.lockAxis),\n }\n : null\n },\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n","import BaseEvent from '@interactjs/core/BaseEvent'\nimport Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport Interaction from '@interactjs/core/Interaction'\nimport { ActionName } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\n\nclass DropEvent extends BaseEvent {\n target: Element\n dropzone: Interactable\n dragEvent: InteractEvent\n relatedTarget: Element\n draggable: Interactable\n timeStamp: number\n propagationStopped = false\n immediatePropagationStopped = false\n\n /**\n * Class of events fired on dropzones during drags with acceptable targets.\n */\n constructor (dropState: Interaction['dropState'], dragEvent: InteractEvent, type: string) {\n super(dragEvent._interaction)\n\n const { element, dropzone } = type === 'dragleave'\n ? dropState.prev\n : dropState.cur\n\n this.type = type\n this.target = element\n this.currentTarget = element\n this.dropzone = dropzone\n this.dragEvent = dragEvent\n this.relatedTarget = dragEvent.target\n this.draggable = dragEvent.interactable\n this.timeStamp = dragEvent.timeStamp\n }\n\n /**\n * If this is a `dropactivate` event, the dropzone element will be\n * deactivated.\n *\n * If this is a `dragmove` or `dragenter`, a `dragleave` will be fired on the\n * dropzone element and more.\n */\n reject () {\n const { dropState } = this._interaction\n\n if (\n (this.type !== 'dropactivate') && (\n !this.dropzone ||\n dropState.cur.dropzone !== this.dropzone ||\n dropState.cur.element !== this.target)) {\n return\n }\n\n dropState.prev.dropzone = this.dropzone\n dropState.prev.element = this.target\n\n dropState.rejected = true\n dropState.events.enter = null\n\n this.stopImmediatePropagation()\n\n if (this.type === 'dropactivate') {\n const activeDrops = dropState.activeDrops\n const index = arr.findIndex(activeDrops, ({ dropzone, element }) =>\n dropzone === this.dropzone && element === this.target)\n\n dropState.activeDrops = [\n ...activeDrops.slice(0, index),\n ...activeDrops.slice(index + 1),\n ]\n\n const deactivateEvent = new DropEvent(dropState, this.dragEvent, 'dropdeactivate')\n\n deactivateEvent.dropzone = this.dropzone\n deactivateEvent.target = this.target\n\n this.dropzone.fire(deactivateEvent)\n }\n else {\n this.dropzone.fire(new DropEvent(dropState, this.dragEvent, 'dragleave'))\n }\n }\n\n preventDefault () {}\n\n stopPropagation () {\n this.propagationStopped = true\n }\n\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n\nexport default DropEvent\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport drag from '../drag'\nimport DropEvent from './DropEvent'\n\nexport interface DropzoneMethod {\n (options: Interact.DropzoneOptions | boolean): Interact.Interactable\n (): Interact.DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interactable,\n draggableElement: Element,\n dropElemen: Element,\n rect: any\n ) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n dropState?: {\n cur: {\n dropzone: Interactable, // the dropzone a drag target might be dropped into\n element: Element, // the element at the time of checking\n },\n prev: {\n dropzone: Interactable, // the dropzone that was recently dragged away from\n element: Element, // the element at the time of checking\n },\n rejected: boolean, // wheather the potential drop was rejected from a listener\n events: any, // the drop events related to the current drag event\n activeDrops: Array<{\n dropzone: Interactable\n element: Element\n rect: Interact.Rect\n }>,\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drop: Interact.DropzoneOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n dynamicDrop?: boolean\n }\n}\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n dynamicDrop: (newValue?: boolean) => boolean | Interact.interact\n }\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interact,\n /** @lends Interactable */\n Interactable, // eslint-disable-line no-shadow\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n interactions.signals.on('before-action-start', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n interaction.dropState = {\n cur: {\n dropzone: null,\n element: null,\n },\n prev: {\n dropzone: null,\n element: null,\n },\n rejected: null,\n events: null,\n activeDrops: null,\n }\n })\n\n interactions.signals.on('after-action-start', ({ interaction, event, iEvent: dragEvent }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n // reset active dropzones\n dropState.activeDrops = null\n dropState.events = null\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n dropState.events = getDropEvents(interaction, event, dragEvent)\n\n if (dropState.events.activate) {\n fireActivationEvents(dropState.activeDrops, dropState.events.activate)\n }\n })\n\n // FIXME proper signal types\n interactions.signals.on('action-move', (arg) => onEventCreated(arg as any, scope))\n interactions.signals.on('action-end', (arg) => onEventCreated(arg as any, scope))\n\n interactions.signals.on('after-action-move', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n interaction.dropState.events = {}\n })\n\n interactions.signals.on('after-action-end', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n if (dropState) {\n dropState.activeDrops = null\n dropState.events = null\n dropState.cur.dropzone = null\n dropState.cur.element = null\n dropState.prev.dropzone = null\n dropState.prev.element = null\n dropState.rejected = false\n }\n })\n\n /**\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n }\n\n /**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */\n Interactable.prototype.dropCheck = function (this: Interact.Interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\n return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect)\n }\n\n /**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\n interact.dynamicDrop = function (newValue?: boolean) {\n if (utils.is.bool(newValue)) {\n // if (dragging && scope.dynamicDrop !== newValue && !newValue) {\n // calcRects(dropzones)\n // }\n\n scope.dynamicDrop = newValue\n\n return interact\n }\n return scope.dynamicDrop\n }\n\n utils.arr.merge(actions.eventTypes, [\n 'dragenter',\n 'dragleave',\n 'dropactivate',\n 'dropdeactivate',\n 'dropmove',\n 'drop',\n ])\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }, draggableElement) {\n const drops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const dropzone of interactables.list) {\n if (!dropzone.options.drop.enabled) { continue }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if ((utils.is.element(accept) && accept !== draggableElement) ||\n (utils.is.string(accept) &&\n !utils.dom.matchesSelector(draggableElement, accept)) ||\n (utils.is.func(accept) && !accept({ dropzone, draggableElement }))) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = utils.is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : utils.is.array(dropzone.target) ? dropzone.target : [dropzone.target]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops, event) {\n // loop through all active dropzones and trigger event\n for (const { dropzone, element } of activeDrops) {\n event.dropzone = dropzone\n\n // set current element as event target\n event.target = element\n dropzone.fire(event)\n event.propagationStopped = event.immediatePropagationStopped = false\n }\n}\n\n// return a new array of possible drops. getActiveDrops should always be\n// called when a drag has just started or a drag event happens while\n// dynamicDrop is true\nfunction getActiveDrops (scope: Scope, dragElement: Element) {\n // get dropzones and their elements that could receive the draggable\n const activeDrops = collectDrops(scope, dragElement)\n\n for (const activeDrop of activeDrops) {\n activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element)\n }\n\n return activeDrops\n}\n\nfunction getDrop ({ dropState, interactable: draggable, element: dragElement }: Partial, dragEvent, pointerEvent) {\n const validDrops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const { dropzone, element: dropzoneElement, rect } of dropState.activeDrops) {\n validDrops.push(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null)\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = utils.dom.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interact.Interaction, _pointerEvent, dragEvent) {\n const { dropState } = interaction\n const dropEvents = {\n enter : null,\n leave : null,\n activate : null,\n deactivate: null,\n move : null,\n drop : null,\n }\n\n if (dragEvent.type === 'dragstart') {\n dropEvents.activate = new DropEvent(dropState, dragEvent, 'dropactivate')\n\n dropEvents.activate.target = null\n dropEvents.activate.dropzone = null\n }\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = new DropEvent(dropState, dragEvent, 'dropdeactivate')\n\n dropEvents.deactivate.target = null\n dropEvents.deactivate.dropzone = null\n }\n\n if (dropState.rejected) {\n return dropEvents\n }\n\n if (dropState.cur.element !== dropState.prev.element) {\n // if there was a previous dropzone, create a dragleave event\n if (dropState.prev.dropzone) {\n dropEvents.leave = new DropEvent(dropState, dragEvent, 'dragleave')\n\n dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element\n dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone\n }\n // if dropzone is not null, create a dragenter event\n if (dropState.cur.dropzone) {\n dropEvents.enter = new DropEvent(dropState, dragEvent, 'dragenter')\n\n dragEvent.dragEnter = dropState.cur.element\n dragEvent.dropzone = dropState.cur.dropzone\n }\n }\n\n if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {\n dropEvents.drop = new DropEvent(dropState, dragEvent, 'drop')\n\n dragEvent.dropzone = dropState.cur.dropzone\n dragEvent.relatedTarget = dropState.cur.element\n }\n if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {\n dropEvents.move = new DropEvent(dropState, dragEvent, 'dropmove')\n\n dropEvents.move.dragmove = dragEvent\n dragEvent.dropzone = dropState.cur.dropzone\n }\n\n return dropEvents\n}\n\nfunction fireDropEvents (interaction: Interact.Interaction, events) {\n const { dropState } = interaction\n const {\n activeDrops,\n cur,\n prev,\n } = dropState\n\n if (events.leave) { prev.dropzone.fire(events.leave) }\n if (events.move) { cur.dropzone.fire(events.move) }\n if (events.enter) { cur.dropzone.fire(events.enter) }\n if (events.drop) { cur.dropzone.fire(events.drop) }\n\n if (events.deactivate) {\n fireActivationEvents(activeDrops, events.deactivate)\n }\n\n dropState.prev.dropzone = cur.dropzone\n dropState.prev.element = cur.element\n}\n\nfunction onEventCreated ({ interaction, iEvent, event }: Interact.SignalArg, scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return }\n\n const { dropState } = interaction\n\n if (scope.dynamicDrop) {\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n }\n\n const dragEvent = iEvent\n const dropResult = getDrop(interaction, dragEvent, event)\n\n // update rejected status\n dropState.rejected = dropState.rejected &&\n !!dropResult &&\n dropResult.dropzone === dropState.cur.dropzone &&\n dropResult.element === dropState.cur.element\n\n dropState.cur.dropzone = dropResult && dropResult.dropzone\n dropState.cur.element = dropResult && dropResult.element\n\n dropState.events = getDropEvents(interaction, event, dragEvent)\n}\n\nfunction dropzoneMethod (interactable: Interact.Interactable): Interact.DropzoneOptions\nfunction dropzoneMethod (interactable: Interact.Interactable, options: Interact.DropzoneOptions | boolean)\nfunction dropzoneMethod (interactable: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n if (utils.is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = utils.normalizeListeners(options.listeners)\n // rename 'drop' to '' as it will be prefixed with 'drop'\n const corrected = Object.keys(normalized).reduce((acc, type) => {\n const correctedType = /^(enter|leave)/.test(type)\n ? `drag${type}`\n : /^(activate|deactivate|move)/.test(type)\n ? `drop${type}`\n : type\n\n acc[correctedType] = normalized[type]\n\n return acc\n }, {})\n\n interactable.off(interactable.options.drop.listeners)\n interactable.on(corrected)\n interactable.options.drop.listeners = corrected\n }\n\n if (utils.is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }\n if (utils.is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }\n if (utils.is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }\n if (utils.is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }\n if (utils.is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }\n if (utils.is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n }\n else if (utils.is.number(options.overlap)) {\n interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0)\n }\n if ('accept' in options) {\n interactable.options.drop.accept = options.accept\n }\n if ('checker' in options) {\n interactable.options.drop.checker = options.checker\n }\n\n return interactable\n }\n\n if (utils.is.bool(options)) {\n interactable.options.drop.enabled = options\n\n return interactable\n }\n\n return interactable.options.drop\n}\n\nfunction dropCheckMethod (\n interactable: Interact.Interactable,\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interact.Interactable,\n draggableElement: Element,\n dropElement: Element,\n rect: any\n) {\n let dropped = false\n\n // if the dropzone has no rect (eg. display: none)\n // call the custom dropChecker or just return false\n if (!(rect = rect || interactable.getRect(dropElement))) {\n return (interactable.options.drop.checker\n ? interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n : false)\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = utils.getOriginXY(draggable, draggableElement, 'drag')\n const page = utils.pointer.getPageXY(dragEvent)\n\n page.x += origin.x\n page.y += origin.y\n\n const horizontal = (page.x > rect.left) && (page.x < rect.right)\n const vertical = (page.y > rect.top) && (page.y < rect.bottom)\n\n dropped = horizontal && vertical\n }\n\n const dragRect = draggable.getRect(draggableElement)\n\n if (dragRect && dropOverlap === 'center') {\n const cx = dragRect.left + dragRect.width / 2\n const cy = dragRect.top + dragRect.height / 2\n\n dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom\n }\n\n if (dragRect && utils.is.number(dropOverlap)) {\n const overlapArea = (Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) *\n Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top)))\n\n const overlapRatio = overlapArea / (dragRect.width * dragRect.height)\n\n dropped = overlapRatio >= dropOverlap\n }\n\n if (interactable.options.drop.checker) {\n dropped = interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n }\n\n return dropped\n}\n\nconst drop = {\n id: 'actions/drop',\n install,\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept : null,\n overlap: 'pointer',\n } as Interact.DropzoneOptions,\n}\n\nexport default drop\n","import InteractEvent from '@interactjs/core/InteractEvent'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\n\nexport type GesturableMethod = Interact.ActionMethod\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n gesture?: {\n angle: number, // angle from first to second touch\n distance: number,\n scale: number, // gesture.distance / gesture.startDistance\n startAngle: number, // angle of line joining two touches\n startDistance: number, // distance between two touches of touchStart\n }\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n gesturable: GesturableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n gesture: Interact.GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Gesture]?: typeof gesture\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Gesture = 'gesture'\n }\n}\n\n(ActionName as any).Gesture = 'gesture'\n\nexport interface GestureEvent extends Interact.InteractEvent {\n distance: number\n angle: number\n da: number // angle change\n scale: number // ratio of distance start to current event\n ds: number // scale change\n box: Interact.Rect // enclosing box of all points\n touches: Interact.PointerType[]\n}\n\nexport interface GestureSignalArg extends Interact.SignalArg {\n iEvent: GestureEvent\n interaction: Interact.Interaction\n event: Interact.PointerEventType | GestureEvent\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = scope\n\n /**\n * ```js\n * interact(element).gesturable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // limit multiple gestures.\n * // See the explanation in {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isGestureable = interact(element).gesturable()\n * ```\n *\n * Gets or sets whether multitouch gestures can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on gesture events (makes the Interactable gesturable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of gesture events, or this Interactable\n */\n Interactable.prototype.gesturable = function (this: Interact.Interactable, options: Interact.GesturableOptions | boolean) {\n if (utils.is.object(options)) {\n this.options.gesture.enabled = options.enabled !== false\n this.setPerAction('gesture', options)\n this.setOnEvents('gesture', options)\n\n return this\n }\n\n if (utils.is.bool(options)) {\n this.options.gesture.enabled = options\n\n return this\n }\n\n return this.options.gesture as Interact.Options\n } as GesturableMethod\n\n interactions.signals.on('action-start', updateGestureProps)\n interactions.signals.on('action-move', updateGestureProps)\n interactions.signals.on('action-end', updateGestureProps)\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0,\n }\n })\n\n actions[ActionName.Gesture] = gesture\n actions.names.push(ActionName.Gesture)\n utils.arr.merge(actions.eventTypes, [\n 'gesturestart',\n 'gesturemove',\n 'gestureend',\n ])\n actions.methodDict.gesture = 'gesturable'\n\n defaults.actions.gesture = gesture.defaults\n}\n\nconst gesture = {\n id: 'actions/gesture',\n install,\n defaults: {\n },\n\n checker (_pointer, _event, _interactable, _element, interaction: { pointers: { length: number; }; }) {\n if (interaction.pointers.length >= 2) {\n return { name: 'gesture' }\n }\n\n return null\n },\n\n getCursor () {\n return ''\n },\n}\n\nfunction updateGestureProps ({ interaction, iEvent, event, phase }: GestureSignalArg) {\n if (interaction.prepared.name !== 'gesture') { return }\n\n const pointers = interaction.pointers.map((p) => p.pointer)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const deltaSource = interaction.interactable.options.deltaSource\n\n iEvent.touches = [pointers[0], pointers[1]]\n\n if (starting) {\n iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = 1\n iEvent.ds = 0\n iEvent.angle = utils.pointer.touchAngle(pointers, deltaSource)\n iEvent.da = 0\n\n interaction.gesture.startDistance = iEvent.distance\n interaction.gesture.startAngle = iEvent.angle\n }\n else if (ending || event instanceof InteractEvent) {\n const prevEvent = interaction.prevEvent as GestureEvent\n\n iEvent.distance = prevEvent.distance\n iEvent.box = prevEvent.box\n iEvent.scale = prevEvent.scale\n iEvent.ds = 0\n iEvent.angle = prevEvent.angle\n iEvent.da = 0\n }\n else {\n iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance\n iEvent.angle = utils.pointer.touchAngle(pointers, deltaSource)\n\n iEvent.ds = iEvent.scale - interaction.gesture.scale\n iEvent.da = iEvent.angle - interaction.gesture.angle\n }\n\n interaction.gesture.distance = iEvent.distance\n interaction.gesture.angle = iEvent.angle\n\n if (utils.is.number(iEvent.scale) &&\n iEvent.scale !== Infinity &&\n !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale\n }\n}\n\nexport default gesture\n","import { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as dom from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\nexport type ResizableMethod = Interact.ActionMethod\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n resizable: ResizableMethod\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n resizeAxes: 'x' | 'y' | 'xy'\n resizeRects: {\n start: Interact.FullRect\n current: Interact.Rect\n inverted: Interact.FullRect\n previous: Interact.FullRect\n delta: Interact.FullRect\n }\n resizeStartAspectRatio: number\n }\n\n interface ActionProps {\n _linkedEdges?: { [key: string]: boolean }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n resize: Interact.ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Resize]?: typeof resize\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Resize = 'resize'\n }\n}\n\n(ActionName as any).Resize = 'resize'\n\nexport interface ResizeEvent extends Interact.InteractEvent {\n deltaRect?: Interact.FullRect\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n browser,\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n interactions,\n defaults,\n } = scope\n\n // Less Precision with touch input\n\n interactions.signals.on('new', (interaction) => {\n interaction.resizeAxes = 'xy'\n })\n\n interactions.signals.on('action-start', start)\n interactions.signals.on('action-move', move)\n\n interactions.signals.on('action-start', updateEventAxes)\n interactions.signals.on('action-move', updateEventAxes)\n\n resize.cursors = initCursors(browser)\n resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10\n\n /**\n * ```js\n * interact(element).resizable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * edges: {\n * top : true, // Use pointer coords to check for resize.\n * left : false, // Disable resizing from left edge.\n * bottom: '.resize-s',// Resize if pointer target matches selector\n * right : handleEl // Resize if pointer target is the given Element\n * },\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height are adjusted at a 1:1 ratio.\n * square: false,\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height maintain the aspect ratio they had when resizing started.\n * preserveAspectRatio: false,\n *\n * // a value of 'none' will limit the resize rect to a minimum of 0x0\n * // 'negate' will allow the rect to have negative width/height\n * // 'reposition' will keep the width/height positive by swapping\n * // the top and bottom edges and/or swapping the left and right edges\n * invert: 'none' || 'negate' || 'reposition'\n *\n * // limit multiple resizes.\n * // See the explanation in the {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isResizeable = interact(element).resizable()\n * ```\n *\n * Gets or sets whether resize actions can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on resize events (object makes the Interactable\n * resizable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of resize elements, or this Interactable\n */\n Interactable.prototype.resizable = function (this: Interact.Interactable, options: Interact.ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as ResizableMethod\n\n actions[ActionName.Resize] = resize\n actions.names.push(ActionName.Resize)\n arr.merge(actions.eventTypes, [\n 'resizestart',\n 'resizemove',\n 'resizeinertiastart',\n 'resizeresume',\n 'resizeend',\n ])\n actions.methodDict.resize = 'resizable'\n\n defaults.actions.resize = resize.defaults\n}\n\nconst resize = {\n id: 'actions/resize',\n install,\n defaults: {\n square: false,\n preserveAspectRatio: false,\n axis: 'xy',\n\n // use default margin\n margin: NaN,\n\n // object with props left, right, top, bottom which are\n // true/false values to resize when the pointer is over that edge,\n // CSS selectors to match the handles for each direction\n // or the Elements for each handle\n edges: null,\n\n // a value of 'none' will limit the resize rect to a minimum of 0x0\n // 'negate' will alow the rect to have negative width/height\n // 'reposition' will keep the width/height positive by swapping\n // the top and bottom edges and/or swapping the left and right edges\n invert: 'none',\n } as Interact.ResizableOptions,\n\n checker (\n _pointer: Interact.PointerType,\n _event: Interact.PointerEventType,\n interactable: Interact.Interactable,\n element: Element,\n interaction: Interaction,\n rect: Interact.Rect\n ) {\n if (!rect) { return null }\n\n const page = extend({}, interaction.coords.cur.page)\n const options = interactable.options\n\n if (options.resize.enabled) {\n const resizeOptions = options.resize\n const resizeEdges: { [edge: string]: boolean } = { left: false, right: false, top: false, bottom: false }\n\n // if using resize.edges\n if (is.object(resizeOptions.edges)) {\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(edge,\n resizeOptions.edges[edge],\n page,\n interaction._latestPointer.eventTarget,\n element,\n rect,\n resizeOptions.margin || this.defaultMargin)\n }\n\n resizeEdges.left = resizeEdges.left && !resizeEdges.right\n resizeEdges.top = resizeEdges.top && !resizeEdges.bottom\n\n if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n return {\n name: 'resize',\n edges: resizeEdges,\n }\n }\n }\n else {\n const right = options.resize.axis !== 'y' && page.x > (rect.right - this.defaultMargin)\n const bottom = options.resize.axis !== 'x' && page.y > (rect.bottom - this.defaultMargin)\n\n if (right || bottom) {\n return {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : ''),\n }\n }\n }\n }\n\n return null\n },\n\n cursors: null as unknown as ReturnType,\n\n getCursor (action: ActionProps) {\n const cursors = resize.cursors as { [key: string]: string }\n if (action.axis) {\n return cursors[action.name + action.axis]\n }\n else if (action.edges) {\n let cursorKey = ''\n const edgeNames = ['top', 'bottom', 'left', 'right']\n\n for (let i = 0; i < 4; i++) {\n if (action.edges[edgeNames[i]]) {\n cursorKey += edgeNames[i]\n }\n }\n\n return cursors[cursorKey]\n }\n\n return null\n },\n\n defaultMargin: null as unknown as number,\n}\n\nfunction resizable (interactable: Interact.Interactable, options: Interact.OrBoolean | boolean, scope: Scope) {\n if (is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false\n interactable.setPerAction('resize', options)\n interactable.setOnEvents('resize', options)\n\n if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis\n }\n else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis\n }\n\n if (is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio\n }\n else if (is.bool(options.square)) {\n interactable.options.resize.square = options.square\n }\n\n return interactable\n }\n if (is.bool(options)) {\n interactable.options.resize.enabled = options\n\n return interactable\n }\n return interactable.options.resize\n}\n\nfunction checkResizeEdge (name: string, value: any, page: Interact.Point, element: Node, interactableElement: Element, rect: Interact.Rect, margin: number) {\n // false, '', undefined, null\n if (!value) { return false }\n\n // true value, use pointer coords and element rect\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = is.number(rect.width) ? rect.width : rect.right - rect.left\n const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top\n\n // don't use margin greater than half the relevent dimension\n margin = Math.min(margin, (name === 'left' || name === 'right' ? width : height) / 2)\n\n if (width < 0) {\n if (name === 'left') { name = 'right' }\n else if (name === 'right') { name = 'left' }\n }\n if (height < 0) {\n if (name === 'top') { name = 'bottom' }\n else if (name === 'bottom') { name = 'top' }\n }\n\n if (name === 'left') { return page.x < ((width >= 0 ? rect.left : rect.right) + margin) }\n if (name === 'top') { return page.y < ((height >= 0 ? rect.top : rect.bottom) + margin) }\n\n if (name === 'right') { return page.x > ((width >= 0 ? rect.right : rect.left) - margin) }\n if (name === 'bottom') { return page.y > ((height >= 0 ? rect.bottom : rect.top) - margin) }\n }\n\n // the remaining checks require an element\n if (!is.element(element)) { return false }\n\n return is.element(value)\n // the value is an element to use as a resize handle\n ? value === element\n // otherwise check if element matches value as selector\n : dom.matchesUpTo(element, value, interactableElement)\n}\n\nfunction initCursors (browser: typeof import ('@interactjs/utils/browser').default) {\n return (browser.isIe9 ? {\n x : 'e-resize',\n y : 's-resize',\n xy: 'se-resize',\n\n top : 'n-resize',\n left : 'w-resize',\n bottom : 's-resize',\n right : 'e-resize',\n topleft : 'se-resize',\n bottomright: 'se-resize',\n topright : 'ne-resize',\n bottomleft : 'ne-resize',\n } : {\n x : 'ew-resize',\n y : 'ns-resize',\n xy: 'nwse-resize',\n\n top : 'ns-resize',\n left : 'ew-resize',\n bottom : 'ns-resize',\n right : 'ew-resize',\n topleft : 'nwse-resize',\n bottomright: 'nwse-resize',\n topright : 'nesw-resize',\n bottomleft : 'nesw-resize',\n })\n}\n\nfunction start ({ iEvent, interaction }: Interact.SignalArg) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return\n }\n\n const startRect = interaction.rect\n const resizeOptions = interaction.interactable.options.resize\n\n /*\n * When using the `resizable.square` or `resizable.preserveAspectRatio` options, resizing from one edge\n * will affect another. E.g. with `resizable.square`, resizing to make the right edge larger will make\n * the bottom edge larger by the same amount. We call these 'linked' edges. Any linked edges will depend\n * on the active edges and the edge being interacted with.\n */\n if (resizeOptions.square || resizeOptions.preserveAspectRatio) {\n const linkedEdges = extend({}, interaction.prepared.edges)\n\n linkedEdges.top = linkedEdges.top || (linkedEdges.left && !linkedEdges.bottom)\n linkedEdges.left = linkedEdges.left || (linkedEdges.top && !linkedEdges.right)\n linkedEdges.bottom = linkedEdges.bottom || (linkedEdges.right && !linkedEdges.top)\n linkedEdges.right = linkedEdges.right || (linkedEdges.bottom && !linkedEdges.left)\n\n interaction.prepared._linkedEdges = linkedEdges\n }\n else {\n interaction.prepared._linkedEdges = null\n }\n\n // if using `resizable.preserveAspectRatio` option, record aspect ratio at the start of the resize\n if (resizeOptions.preserveAspectRatio) {\n interaction.resizeStartAspectRatio = startRect.width / startRect.height\n }\n\n interaction.resizeRects = {\n start : startRect,\n current : extend({}, startRect),\n inverted : extend({}, startRect),\n previous : extend({}, startRect),\n delta : {\n left: 0,\n right : 0,\n width : 0,\n top : 0,\n bottom: 0,\n height: 0,\n },\n }\n\n iEvent.rect = interaction.resizeRects.inverted\n ; (iEvent as ResizeEvent).deltaRect = interaction.resizeRects.delta\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) { return }\n\n const resizeOptions = interaction.interactable.options.resize\n const invert = resizeOptions.invert\n const invertible = invert === 'reposition' || invert === 'negate'\n\n let edges = interaction.prepared.edges\n\n // eslint-disable-next-line no-shadow\n const start = interaction.resizeRects.start\n const current = interaction.resizeRects.current\n const inverted = interaction.resizeRects.inverted\n const deltaRect = interaction.resizeRects.delta\n const previous = extend(interaction.resizeRects.previous, inverted)\n const originalEdges = edges\n\n const eventDelta = extend({}, iEvent.delta)\n\n if (resizeOptions.preserveAspectRatio || resizeOptions.square) {\n // `resize.preserveAspectRatio` takes precedence over `resize.square`\n const startAspectRatio = resizeOptions.preserveAspectRatio\n ? interaction.resizeStartAspectRatio\n : 1\n\n edges = interaction.prepared._linkedEdges\n\n if ((originalEdges.left && originalEdges.bottom) ||\n (originalEdges.right && originalEdges.top)) {\n eventDelta.y = -eventDelta.x / startAspectRatio\n }\n else if (originalEdges.left || originalEdges.right) { eventDelta.y = eventDelta.x / startAspectRatio }\n else if (originalEdges.top || originalEdges.bottom) { eventDelta.x = eventDelta.y * startAspectRatio }\n }\n\n // update the 'current' rect without modifications\n if (edges.top) { current.top += eventDelta.y }\n if (edges.bottom) { current.bottom += eventDelta.y }\n if (edges.left) { current.left += eventDelta.x }\n if (edges.right) { current.right += eventDelta.x }\n\n if (invertible) {\n // if invertible, copy the current rect\n extend(inverted, current)\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n let swap\n\n if (inverted.top > inverted.bottom) {\n swap = inverted.top\n\n inverted.top = inverted.bottom\n inverted.bottom = swap\n }\n if (inverted.left > inverted.right) {\n swap = inverted.left\n\n inverted.left = inverted.right\n inverted.right = swap\n }\n }\n }\n else {\n // if not invertible, restrict to minimum of 0x0 rect\n inverted.top = Math.min(current.top, start.bottom)\n inverted.bottom = Math.max(current.bottom, start.top)\n inverted.left = Math.min(current.left, start.right)\n inverted.right = Math.max(current.right, start.left)\n }\n\n inverted.width = inverted.right - inverted.left\n inverted.height = inverted.bottom - inverted.top\n\n for (const edge in inverted) {\n deltaRect[edge] = inverted[edge] - previous[edge]\n }\n\n iEvent.edges = interaction.prepared.edges\n iEvent.rect = inverted\n iEvent.deltaRect = deltaRect\n}\n\nfunction updateEventAxes ({ interaction, iEvent, action }) {\n if (action !== 'resize' || !interaction.resizeAxes) { return }\n\n const options = interaction.interactable.options\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = iEvent.delta.y\n }\n else {\n iEvent.delta.y = iEvent.delta.x\n }\n iEvent.axes = 'xy'\n }\n else {\n iEvent.axes = interaction.resizeAxes\n\n if (interaction.resizeAxes === 'x') {\n iEvent.delta.y = 0\n }\n else if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = 0\n }\n }\n}\n\nexport default resize\n","import { Scope } from '@interactjs/core/scope'\nimport drag, { DragEvent } from './drag'\nimport drop from './drop'\nimport gesture, { GestureEvent } from './gesture'\nimport resize, { ResizeEvent } from './resize'\n\nfunction install (scope: Scope) {\n scope.usePlugin(gesture)\n scope.usePlugin(resize)\n scope.usePlugin(drag)\n scope.usePlugin(drop)\n}\n\nconst id = 'actions'\n\nexport {\n id,\n install,\n gesture,\n GestureEvent,\n resize,\n ResizeEvent,\n drag,\n DragEvent,\n drop,\n}\n","import * as domUtils from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ntype Scope = import ('@interactjs/core/scope').Scope\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoScroll: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoScroll?: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n autoScroll?: Interact.AutoScrollOption\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n defaults,\n actions,\n } = scope\n\n scope.autoScroll = autoScroll\n autoScroll.now = () => scope.now()\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.autoScroll = null\n })\n\n interactions.signals.on('destroy', ({ interaction }) => {\n interaction.autoScroll = null\n autoScroll.stop()\n if (autoScroll.interaction) {\n autoScroll.interaction = null\n }\n })\n\n interactions.signals.on('stop', autoScroll.stop)\n\n interactions.signals.on('action-move', (arg: any) => autoScroll.onInteractionMove(arg))\n\n actions.eventTypes.push('autoscroll')\n defaults.perAction.autoScroll = autoScroll.defaults\n}\n\nconst autoScroll = {\n defaults: {\n enabled : false,\n margin : 60,\n\n // the item that is scrolled (Window or HTMLElement)\n container: null as Window | Element,\n\n // the scroll speed in pixels per second\n speed : 300,\n } as Interact.AutoScrollOption,\n\n now: Date.now,\n\n interaction: null,\n i: null, // the handle returned by window.setInterval\n x: 0,\n y: 0, // Direction each pulse is to scroll in\n\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n\n start (interaction: Interact.Interaction) {\n autoScroll.isScrolling = true\n raf.cancel(autoScroll.i)\n\n interaction.autoScroll = autoScroll\n autoScroll.interaction = interaction\n autoScroll.prevTime = autoScroll.now()\n autoScroll.i = raf.request(autoScroll.scroll)\n },\n\n stop () {\n autoScroll.isScrolling = false\n if (autoScroll.interaction) {\n autoScroll.interaction.autoScroll = null\n }\n raf.cancel(autoScroll.i)\n },\n\n // scroll the window by the values in scroll.x/y\n scroll () {\n const { interaction } = autoScroll\n const { interactable, element } = interaction\n const options = interactable.options[autoScroll.interaction.prepared.name].autoScroll\n const container = getContainer(options.container, interactable, element)\n const now = autoScroll.now()\n // change in time in seconds\n const dt = (now - autoScroll.prevTime) / 1000\n // displacement\n const s = options.speed * dt\n\n if (s >= 1) {\n const scrollBy = {\n x: autoScroll.x * s,\n y: autoScroll.y * s,\n }\n\n if (scrollBy.x || scrollBy.y) {\n const prevScroll = getScroll(container)\n\n if (is.window(container)) {\n container.scrollBy(scrollBy.x, scrollBy.y)\n }\n else if (container) {\n container.scrollLeft += scrollBy.x\n container.scrollTop += scrollBy.y\n }\n\n const curScroll = getScroll(container)\n const delta = {\n x: curScroll.x - prevScroll.x,\n y: curScroll.y - prevScroll.y,\n }\n\n if (delta.x || delta.y) {\n interactable.fire({\n type: 'autoscroll',\n target: element,\n interactable,\n delta,\n interaction,\n container,\n })\n }\n }\n\n autoScroll.prevTime = now\n }\n\n if (autoScroll.isScrolling) {\n raf.cancel(autoScroll.i)\n autoScroll.i = raf.request(autoScroll.scroll)\n }\n },\n check (interactable, actionName) {\n const options = interactable.options\n\n return options[actionName].autoScroll && options[actionName].autoScroll.enabled\n },\n onInteractionMove ({ interaction, pointer }) {\n if (!(interaction.interacting() &&\n autoScroll.check(interaction.interactable, interaction.prepared.name))) {\n return\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0\n return\n }\n\n let top\n let right\n let bottom\n let left\n\n const { interactable, element } = interaction\n const options = interactable.options[interaction.prepared.name].autoScroll\n const container = getContainer(options.container, interactable, element)\n\n if (is.window(container)) {\n left = pointer.clientX < autoScroll.margin\n top = pointer.clientY < autoScroll.margin\n right = pointer.clientX > container.innerWidth - autoScroll.margin\n bottom = pointer.clientY > container.innerHeight - autoScroll.margin\n }\n else {\n const rect = domUtils.getElementClientRect(container)\n\n left = pointer.clientX < rect.left + autoScroll.margin\n top = pointer.clientY < rect.top + autoScroll.margin\n right = pointer.clientX > rect.right - autoScroll.margin\n bottom = pointer.clientY > rect.bottom - autoScroll.margin\n }\n\n autoScroll.x = (right ? 1 : left ? -1 : 0)\n autoScroll.y = (bottom ? 1 : top ? -1 : 0)\n\n if (!autoScroll.isScrolling) {\n // set the autoScroll properties to those of the target\n autoScroll.margin = options.margin\n autoScroll.speed = options.speed\n\n autoScroll.start(interaction)\n }\n },\n}\n\nexport function getContainer (value, interactable, element) {\n return (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n}\n\nexport function getScroll (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta ({ interaction, element }, func) {\n const scrollOptions = interaction && interaction.interactable.options[interaction.prepared.name].autoScroll\n\n if (!scrollOptions || !scrollOptions.enabled) {\n func()\n return { x: 0, y: 0 }\n }\n\n const scrollContainer = getContainer(\n scrollOptions.container,\n interaction.interactable,\n element\n )\n\n const prevSize = getScroll(scrollContainer)\n func()\n const curSize = getScroll(scrollContainer)\n\n return {\n x: curSize.x - prevSize.x,\n y: curSize.y - prevSize.y,\n }\n}\n\nexport default {\n id: 'auto-scroll',\n install,\n}\n","import { warnOnce } from '@interactjs/utils'\nimport * as is from '@interactjs/utils/is'\n\n// TODO: there seems to be a @babel/preset-typescript bug causing regular import\n// syntax to remain in js output\ntype Scope = import ('@interactjs/core/scope').Scope\ntype Actions = import ('@interactjs/core/scope').Actions\ntype Interaction = import ('@interactjs/core/Interaction').default\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n getAction: typeof getAction\n defaultActionChecker: (pointer: any, event: any, interaction: any, element: any) => any\n styleCursor: typeof styleCursor\n actionChecker: typeof actionChecker\n ignoreFrom: (...args: any) => boolean\n allowFrom: (...args: any) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n pointerIsDown: boolean\n }\n}\n\nfunction install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n actions,\n } = scope\n\n Interactable.prototype.getAction = getAction\n\n /**\n * ```js\n * interact(element, { ignoreFrom: document.getElementById('no-action') })\n * // or\n * interact(element).ignoreFrom('input, textarea, a')\n * ```\n * @deprecated\n * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n * of it's parents match the given CSS selector or Element, no\n * drag/resize/gesture is started.\n *\n * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\n * })\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to not ignore any elements\n * @return {string | Element | object} The current ignoreFrom value or this\n * Interactable\n */\n Interactable.prototype.ignoreFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('ignoreFrom', newValue)\n }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).')\n\n /**\n * @deprecated\n *\n * A drag/resize/gesture is started only If the target of the `mousedown`,\n * `pointerdown` or `touchstart` event or any of it's parents match the given\n * CSS selector or Element.\n *\n * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\n * })\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to allow from any element\n * @return {string | Element | object} The current allowFrom value or this\n * Interactable\n */\n Interactable.prototype.allowFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('allowFrom', newValue)\n }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).')\n\n /**\n * ```js\n * interact('.resize-drag')\n * .resizable(true)\n * .draggable(true)\n * .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n *\n * if (interact.matchesSelector(event.target, '.drag-handle')) {\n * // force drag with handle target\n * action.name = drag\n * }\n * else {\n * // resize from the top and right edges\n * action.name = 'resize'\n * action.edges = { top: true, right: true }\n * }\n *\n * return action\n * })\n * ```\n *\n * Returns or sets the function used to check action to be performed on\n * pointerDown\n *\n * @param {function | null} [checker] A function which takes a pointer event,\n * defaultAction string, interactable, element and interaction as parameters\n * and returns an object with name property 'drag' 'resize' or 'gesture' and\n * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n * props.\n * @return {Function | Interactable} The checker function or this Interactable\n */\n Interactable.prototype.actionChecker = actionChecker\n\n /**\n * Returns or sets whether the the cursor should be changed depending on the\n * action that would be performed if the mouse were pressed and dragged.\n *\n * @param {boolean} [newValue]\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.styleCursor = styleCursor\n\n Interactable.prototype.defaultActionChecker = function (this: Interactable, pointer, event, interaction, element) {\n return defaultActionChecker(this, pointer, event, interaction, element, actions)\n }\n}\n\nfunction getAction (this: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element): Interact.ActionProps {\n const action = this.defaultActionChecker(pointer, event, interaction, element)\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction)\n }\n\n return action\n}\n\nfunction defaultActionChecker (interactable: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element, actions: Actions) {\n const rect = interactable.getRect(element)\n const buttons = (event as MouseEvent).buttons || ({\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16,\n })[(event as MouseEvent).button as 0 | 1 | 3 | 4]\n let action = null\n\n for (const actionName of actions.names) {\n // check mouseButton setting if the pointer is down\n if (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & interactable.options[actionName].mouseButtons) === 0) {\n continue\n }\n\n action = (actions[actionName as keyof Actions] as any).checker(pointer, event, interactable, element, interaction, rect)\n\n if (action) {\n return action\n }\n }\n}\n\nfunction styleCursor (this: Interactable, newValue?: boolean) {\n if (is.bool(newValue)) {\n this.options.styleCursor = newValue\n\n return this\n }\n\n if (newValue === null) {\n delete this.options.styleCursor\n\n return this\n }\n\n return this.options.styleCursor\n}\n\nfunction actionChecker (this: Interactable, checker: any) {\n if (is.func(checker)) {\n this.options.actionChecker = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.options.actionChecker\n\n return this\n }\n\n return this.options.actionChecker\n}\n\nexport default {\n id: 'auto-start/interactableMethods',\n install,\n}\n","import * as utils from '@interactjs/utils'\nimport InteractableMethods from './InteractableMethods'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n maxInteractions: (newValue: any) => any\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoStart: AutoStart\n maxInteractions: (...args: any) => any\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n actionChecker?\n styleCursor?\n }\n\n interface PerActionDefaults {\n manualStart?: boolean\n max?: number\n maxPerElement?: number\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons?: 0 | 1 | 2 | 4 | 16\n }\n}\n\nexport interface AutoStart {\n // Allow this many interactions to happen simultaneously\n maxInteractions: number\n withinInteractionLimit: typeof withinInteractionLimit\n cursorElement: HTMLElement\n signals: utils.Signals\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n interact,\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(InteractableMethods)\n\n // set cursor style on mousedown\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n // set cursor style on mousemove\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.pointerType !== 'mouse' ||\n interaction.pointerIsDown ||\n interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n interactions.signals.on('move', (arg) => {\n const { interaction } = arg\n\n if (!interaction.pointerIsDown ||\n interaction.interacting() ||\n !interaction.pointerWasMoved ||\n !interaction.prepared.name) {\n return\n }\n\n scope.autoStart.signals.fire('before-start', arg)\n\n const { interactable } = interaction\n\n if (interaction.prepared.name && interactable) {\n // check manualStart and interaction limit\n if (interactable.options[interaction.prepared.name].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n interaction.stop()\n }\n else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n }\n }\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n const { interactable } = interaction\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n })\n\n defaults.base.actionChecker = null\n defaults.base.styleCursor = true\n\n utils.extend(defaults.perAction, {\n manualStart: false,\n max: Infinity,\n maxPerElement: 1,\n allowFrom: null,\n ignoreFrom: null,\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons: 1,\n })\n\n /**\n * Returns or sets the maximum number of concurrent interactions allowed. By\n * default only 1 interaction is allowed at a time (for backwards\n * compatibility). To allow multiple interactions on the same Interactables and\n * elements, you need to enable it in the draggable, resizable and gesturable\n * `'max'` and `'maxPerElement'` options.\n *\n * @alias module:interact.maxInteractions\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n */\n interact.maxInteractions = (newValue) => maxInteractions(newValue, scope)\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit,\n cursorElement: null,\n signals: new utils.Signals(),\n }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction (action, interactable, element, eventTarget, scope) {\n if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n interactable.options[action.name].enabled &&\n withinInteractionLimit(interactable, element, action, scope)) {\n return action\n }\n\n return null\n}\n\nfunction validateMatches (interaction: Interact.Interaction, pointer, event, matches: Interact.Interactable[], matchElements: Element[], eventTarget: Element, scope: Interact.Scope) {\n for (let i = 0, len = matches.length; i < len; i++) {\n const match = matches[i]\n const matchElement = matchElements[i]\n const matchAction = match.getAction(pointer, event, interaction, matchElement)\n\n if (!matchAction) { continue }\n\n const action = validateAction(\n matchAction,\n match,\n matchElement,\n eventTarget,\n scope)\n\n if (action) {\n return {\n action,\n interactable: match,\n element: matchElement,\n }\n }\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction getActionInfo (interaction: Interact.Interaction, pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Element, scope: Interact.Scope) {\n let matches = []\n let matchElements = []\n\n let element = eventTarget\n\n function pushMatches (interactable) {\n matches.push(interactable)\n matchElements.push(element)\n }\n\n while (utils.is.element(element)) {\n matches = []\n matchElements = []\n\n scope.interactables.forEachMatch(element, pushMatches)\n\n const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope)\n\n if (actionInfo.action &&\n !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo\n }\n\n element = utils.dom.parentNode(element)\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (interaction: Interact.Interaction, { action, interactable, element }, scope: Interact.Scope) {\n action = action || {}\n\n if (interaction.interactable && interaction.interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n\n interaction.interactable = interactable\n interaction.element = element\n utils.copyAction(interaction.prepared, action)\n\n interaction.rect = interactable && action.name\n ? interactable.getRect(element)\n : null\n\n if (interactable && interactable.options.styleCursor) {\n const cursor = action ? scope.actions[action.name].getCursor(action) : ''\n setCursor(interaction.element as HTMLElement, cursor, scope)\n }\n\n scope.autoStart.signals.fire('prepared', { interaction })\n}\n\nfunction withinInteractionLimit (interactable: Interact.Interactable, element: Element, action, scope: Interact.Scope) {\n const options = interactable.options\n const maxActions = options[action.name].max\n const maxPerElement = options[action.name].maxPerElement\n const autoStartMax = scope.autoStart.maxInteractions\n let activeInteractions = 0\n let interactableCount = 0\n let elementCount = 0\n\n // no actions if any of these values == 0\n if (!(maxActions && maxPerElement && autoStartMax)) { return false }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name\n\n if (!interaction.interacting()) { continue }\n\n activeInteractions++\n\n if (activeInteractions >= autoStartMax) {\n return false\n }\n\n if (interaction.interactable !== interactable) { continue }\n\n interactableCount += otherAction === action.name ? 1 : 0\n\n if (interactableCount >= maxActions) {\n return false\n }\n\n if (interaction.element === element) {\n elementCount++\n\n if (otherAction === action.name && elementCount >= maxPerElement) {\n return false\n }\n }\n }\n\n return autoStartMax > 0\n}\n\nfunction maxInteractions (newValue, scope: Interact.Scope) {\n if (utils.is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue\n\n return this\n }\n\n return scope.autoStart.maxInteractions\n}\n\nfunction setCursor (element: HTMLElement, cursor, scope: Interact.Scope) {\n if (scope.autoStart.cursorElement) {\n scope.autoStart.cursorElement.style.cursor = ''\n }\n\n element.ownerDocument.documentElement.style.cursor = cursor\n element.style.cursor = cursor\n scope.autoStart.cursorElement = cursor ? element : null\n}\n\nexport default {\n id: 'auto-start/base',\n install,\n maxInteractions,\n withinInteractionLimit,\n validateAction,\n} as Interact.Plugin\n","import { ActionName } from '@interactjs/core/scope'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport autoStart from './base'\n\ntype Scope = import ('@interactjs/core/scope').Scope\n\nfunction install (scope: Scope) {\n scope.autoStart.signals.on('before-start', ({ interaction, eventTarget, dx, dy }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n // check if a drag is in the correct axis\n const absX = Math.abs(dx)\n const absY = Math.abs(dy)\n const targetOptions = interaction.interactable.options.drag\n const startAxis = targetOptions.startAxis\n const currentAxis = (absX > absY ? 'x' : absX < absY ? 'y' : 'xy')\n\n interaction.prepared.axis = targetOptions.lockAxis === 'start'\n ? currentAxis[0] as 'x' | 'y' // always lock to one axis even if currentAxis === 'xy'\n : targetOptions.lockAxis\n\n // if the movement isn't in the startAxis of the interactable\n if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n // cancel the prepared action\n interaction.prepared.name = null\n\n // then try to get a drag from another ineractable\n let element = eventTarget\n\n const getDraggable = function (interactable) {\n if (interactable === interaction.interactable) { return }\n\n const options = interaction.interactable.options.drag\n\n if (!options.manualStart &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(\n interaction.downPointer, interaction.downEvent, interaction, element)\n\n if (action &&\n action.name === ActionName.Drag &&\n checkStartAxis(currentAxis, interactable) &&\n autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\n return interactable\n }\n }\n }\n\n // check all interactables\n while (is.element(element)) {\n const interactable = scope.interactables.forEachMatch(element, getDraggable)\n\n if (interactable) {\n interaction.prepared.name = ActionName.Drag\n interaction.interactable = interactable\n interaction.element = element\n break\n }\n\n element = parentNode(element)\n }\n }\n })\n\n function checkStartAxis (startAxis, interactable) {\n if (!interactable) { return false }\n\n const thisAxis = interactable.options[ActionName.Drag].startAxis\n\n return (startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis)\n }\n}\n\nexport default {\n id: 'auto-start/dragAxis',\n install,\n}\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n hold?: number\n delay?: number\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoStartHoldTimer?: any\n }\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n autoStart,\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n defaults.perAction.hold = 0\n defaults.perAction.delay = 0\n\n interactions.signals.on('new', (interaction) => {\n interaction.autoStartHoldTimer = null\n })\n\n autoStart.signals.on('prepared', ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.autoStartHoldTimer = setTimeout(() => {\n interaction.start(interaction.prepared, interaction.interactable, interaction.element)\n }, hold)\n }\n })\n\n interactions.signals.on('move', ({ interaction, duplicate }) => {\n if (interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer)\n }\n })\n\n // prevent regular down->move autoStart\n autoStart.signals.on('before-start', ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.prepared.name = null\n }\n })\n}\n\nfunction getHoldDuration (interaction) {\n const actionName = interaction.prepared && interaction.prepared.name\n\n if (!actionName) { return null }\n\n const options = interaction.interactable.options\n\n return options[actionName].hold || options[actionName].delay\n}\n\nexport default {\n id: 'auto-start/hold',\n install,\n getHoldDuration,\n}\n","import autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n\nfunction install (scope) {\n scope.usePlugin(autoStart)\n scope.usePlugin(hold)\n scope.usePlugin(dragAxis)\n}\n\nconst id = 'auto-start'\n\nexport {\n id,\n install,\n autoStart,\n hold,\n dragAxis,\n}\n","import { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport * as is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n preventDefault: typeof preventDefault\n checkAndPreventDefault: (event: Event) => void\n }\n}\n\nfunction preventDefault (this: Interact.Interactable, newValue?: 'always' | 'never' | 'auto') {\n if (/^(always|never|auto)$/.test(newValue)) {\n this.options.preventDefault = newValue\n return this\n }\n\n if (is.bool(newValue)) {\n this.options.preventDefault = newValue ? 'always' : 'never'\n return this\n }\n\n return this.options.preventDefault\n}\n\nfunction checkAndPreventDefault (interactable: Interact.Interactable, scope: Interact.Scope, event: Event) {\n const setting = interactable.options.preventDefault\n\n if (setting === 'never') { return }\n\n if (setting === 'always') {\n event.preventDefault()\n return\n }\n\n // setting === 'auto'\n\n // if the browser supports passive event listeners and isn't running on iOS,\n // don't preventDefault of touch{start,move} events. CSS touch-action and\n // user-select should be used instead of calling event.preventDefault().\n if (events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n const doc = getWindow(event.target).document\n const docOptions = scope.getDocOptions(doc)\n\n if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n return\n }\n }\n\n // don't preventDefault of pointerdown events\n if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n return\n }\n\n // don't preventDefault on editable elements\n if (is.element(event.target) &&\n matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n return\n }\n\n event.preventDefault()\n}\n\nfunction onInteractionEvent ({ interaction, event }: Interact.SignalArg) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event as Event)\n }\n}\n\nexport function install (scope: Interact.Scope) {\n /** @lends Interactable */\n const Interactable = scope.Interactable\n\n /**\n * Returns or sets whether to prevent the browser's default behaviour in\n * response to pointer events. Can be set to:\n * - `'always'` to always prevent\n * - `'never'` to never prevent\n * - `'auto'` to let interact.js try to determine what would be best\n *\n * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n * @return {string | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.preventDefault = preventDefault\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event)\n }\n\n for (const eventSignal of ['down', 'move', 'up', 'cancel']) {\n scope.interactions.signals.on(eventSignal, onInteractionEvent)\n }\n\n // prevent native HTML5 drag on interact.js target elements\n scope.interactions.docEvents.push({\n type: 'dragstart',\n listener (event) {\n for (const interaction of scope.interactions.list) {\n if (interaction.element &&\n (interaction.element === event.target ||\n nodeContains(interaction.element, event.target))) {\n interaction.interactable.checkAndPreventDefault(event)\n return\n }\n }\n },\n })\n}\n\nexport type Install = typeof install\n\nexport default {\n id: 'core/interactablePreventDefault',\n install,\n}\n","/* eslint-disable no-console */\n/* global process */\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport win from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n logger: Logger\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n devTools?: DevToolsOptions\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n devTools?: Interact.OptionMethod\n }\n}\n\nexport interface DevToolsOptions {\n ignore: { [P in keyof typeof CheckName]?: boolean }\n}\n\nexport interface Logger {\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n log: (...args: any[]) => void\n}\n\nexport interface Check {\n name: string\n text: string\n perform: (interaction: Interact.Interaction) => boolean\n getInfo: (interaction: Interact.Interaction) => any[]\n}\n\nenum CheckName {\n touchAction = '',\n boxSizing = '',\n noListeners = '',\n}\n\nconst prefix = '[interact.js] '\nconst links = {\n touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing',\n}\n\nconst isProduction = process.env.NODE_ENV === 'production'\n\n// eslint-disable-next-line no-restricted-syntax\nfunction install (scope: Interact.Scope, { logger }: { logger?: Logger } = {}) {\n const {\n interactions,\n Interactable,\n defaults,\n } = scope\n logger = logger || console\n\n interactions.signals.on('action-start', ({ interaction }) => {\n for (const check of checks) {\n const options = interaction.interactable && interaction.interactable.options[interaction.prepared.name]\n\n if (\n !(options && options.devTools && options.devTools.ignore[check.name]) &&\n check.perform(interaction)\n ) {\n logger.warn(prefix + check.text, ...check.getInfo(interaction))\n }\n }\n })\n\n defaults.base.devTools = {\n ignore: {},\n }\n\n Interactable.prototype.devTools = function (options?) {\n if (options) {\n extend(this.options.devTools, options)\n return this\n }\n\n return this.options.devTools\n }\n}\n\nconst checks: Check[] = [\n {\n name: 'touchAction',\n perform ({ element }) {\n return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/)\n },\n getInfo ({ element }) {\n return [\n element,\n links.touchAction,\n ]\n },\n text: 'Consider adding CSS \"touch-action: none\" to this element\\n',\n },\n\n {\n name: 'boxSizing',\n perform (interaction) {\n const { element } = interaction\n\n return interaction.prepared.name === 'resize' &&\n element instanceof domObjects.HTMLElement &&\n !hasStyle(element, 'boxSizing', /border-box/)\n },\n text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n getInfo ({ element }) {\n return [\n element,\n links.boxSizing,\n ]\n },\n },\n\n {\n name: 'noListeners',\n perform (interaction) {\n const actionName = interaction.prepared.name\n const moveListeners = interaction.interactable.events.types[`${actionName}move`] || []\n\n return !moveListeners.length\n },\n getInfo (interaction) {\n return [\n interaction.prepared.name,\n interaction.interactable,\n ]\n },\n text: 'There are no listeners set for this action',\n },\n]\n\nfunction hasStyle (element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n return styleRe.test(element.style[prop] || win.window.getComputedStyle(element)[prop])\n}\n\nfunction parentHasStyle (element: Element, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n let parent = element as HTMLElement\n\n while (is.element(parent)) {\n if (hasStyle(parent, prop, styleRe)) {\n return true\n }\n\n parent = parentNode(parent)\n }\n\n return false\n}\n\nconst id = 'dev-tools'\nconst defaultExport = isProduction\n ? { id, install: () => {} }\n : {\n id,\n install,\n checks,\n CheckName,\n links,\n prefix,\n }\n\nexport default defaultExport\n","import { Scope } from '@interactjs/core/scope'\nimport extend from '@interactjs/utils/extend'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n modifiers?: {\n states: any[]\n offsets: any\n startOffset: any\n startDelta: Interact.Point\n result?: {\n delta: {\n x: number\n y: number\n }\n rectDelta: {\n left: number\n right: number\n top: number\n bottom: number\n }\n coords: Interact.Point\n changed: boolean\n },\n endPrevented: boolean\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n modifiers?: Array>\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.defaults.perAction.modifiers = []\n scope.modifiers = {}\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.modifiers = {\n startOffset: { left: 0, right: 0, top: 0, bottom: 0 },\n offsets: {},\n states: null,\n result: null,\n endPrevented: false,\n startDelta: null,\n }\n })\n\n interactions.signals.on('before-action-start', (arg) => {\n start(arg as any, arg.interaction.coords.start.page, scope.modifiers)\n })\n\n interactions.signals.on('action-resume', (arg) => {\n stop(arg as Required)\n start(arg as Required, arg.interaction.coords.cur.page, scope.modifiers)\n beforeMove(arg as Required)\n })\n\n interactions.signals.on('after-action-move', restoreCoords as any)\n interactions.signals.on('before-action-move', beforeMove)\n\n interactions.signals.on('before-action-start', setCoords)\n interactions.signals.on('after-action-start', restoreCoords as any)\n\n interactions.signals.on('before-action-end', beforeEnd)\n interactions.signals.on('stop', stop)\n}\n\nfunction start (\n { interaction, phase }: Interact.SignalArg,\n pageCoords: Interact.Point,\n registeredModifiers,\n) {\n const { interactable, element } = interaction\n const modifierList = getModifierList(interaction, registeredModifiers)\n const states = prepareStates(modifierList)\n\n const rect = extend({}, interaction.rect)\n\n if (!('width' in rect)) { rect.width = rect.right - rect.left }\n if (!('height' in rect)) { rect.height = rect.bottom - rect.top }\n\n const startOffset = getRectOffset(rect, pageCoords)\n\n interaction.modifiers.startOffset = startOffset\n interaction.modifiers.startDelta = { x: 0, y: 0 }\n\n const arg: Partial = {\n interaction,\n interactable,\n element,\n pageCoords,\n phase,\n rect,\n startOffset,\n states,\n preEnd: false,\n requireEndOnly: false,\n }\n\n interaction.modifiers.states = states\n interaction.modifiers.result = null\n startAll(arg)\n\n arg.pageCoords = extend({}, interaction.coords.start.page)\n\n const result = interaction.modifiers.result = setAll(arg)\n\n return result\n}\n\nexport function startAll (arg) {\n for (const state of arg.states) {\n if (state.methods.start) {\n arg.state = state\n state.methods.start(arg)\n }\n }\n}\n\nexport function setAll (arg: Partial) {\n const {\n interaction,\n modifiersState = interaction.modifiers,\n prevCoords = modifiersState.result\n ? modifiersState.result.coords\n : interaction.coords.prev.page,\n phase,\n preEnd,\n requireEndOnly,\n rect,\n skipModifiers,\n } = arg\n\n const states = skipModifiers\n ? arg.states.slice(skipModifiers)\n : arg.states\n\n arg.coords = extend({}, arg.pageCoords)\n arg.rect = extend({}, rect)\n\n const result = {\n delta: { x: 0, y: 0 },\n rectDelta: {\n left : 0,\n right : 0,\n top : 0,\n bottom: 0,\n },\n coords: arg.coords,\n changed: true,\n }\n\n for (const state of states) {\n const { options } = state\n\n if (!state.methods.set ||\n !shouldDo(options, preEnd, requireEndOnly, phase)) { continue }\n\n arg.state = state\n state.methods.set(arg)\n }\n\n result.delta.x = arg.coords.x - arg.pageCoords.x\n result.delta.y = arg.coords.y - arg.pageCoords.y\n\n let rectChanged = false\n\n if (rect) {\n result.rectDelta.left = arg.rect.left - rect.left\n result.rectDelta.right = arg.rect.right - rect.right\n result.rectDelta.top = arg.rect.top - rect.top\n result.rectDelta.bottom = arg.rect.bottom - rect.bottom\n\n rectChanged = result.rectDelta.left !== 0 ||\n result.rectDelta.right !== 0 ||\n result.rectDelta.top !== 0 ||\n result.rectDelta.bottom !== 0\n }\n\n result.changed = prevCoords.x !== result.coords.x ||\n prevCoords.y !== result.coords.y ||\n rectChanged\n\n return result\n}\n\nfunction beforeMove (arg: Interact.SignalArg): void | false {\n const { interaction, phase, preEnd, skipModifiers } = arg\n const { interactable, element } = interaction\n const modifierResult = setAll(\n {\n interaction,\n interactable,\n element,\n preEnd,\n phase,\n pageCoords: interaction.coords.cur.page,\n rect: interaction.rect,\n states: interaction.modifiers.states,\n requireEndOnly: false,\n skipModifiers,\n })\n\n interaction.modifiers.result = modifierResult\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (!modifierResult.changed && interaction.interacting()) {\n return false\n }\n\n setCoords(arg)\n}\n\nfunction beforeEnd (arg): void | false {\n const { interaction, event, noPreEnd } = arg\n const states = interaction.modifiers.states\n\n if (noPreEnd || !states || !states.length) {\n return\n }\n\n let didPreEnd = false\n\n for (const state of states) {\n arg.state = state\n const { options, methods } = state\n\n const endResult = methods.beforeEnd && methods.beforeEnd(arg)\n\n if (endResult === false) {\n interaction.modifiers.endPrevented = true\n return false\n }\n\n // if the endOnly option is true for any modifier\n if (!didPreEnd && shouldDo(options, true, true)) {\n // fire a move event at the modified coordinates\n interaction.move({ event, preEnd: true })\n didPreEnd = true\n }\n }\n}\n\nfunction stop (arg: Interact.SignalArg) {\n const { interaction } = arg\n const states = interaction.modifiers.states\n\n if (!states || !states.length) {\n return\n }\n\n const modifierArg = extend({\n states,\n interactable: interaction.interactable,\n element: interaction.element,\n }, arg)\n\n restoreCoords(arg)\n\n for (const state of states) {\n modifierArg.state = state\n\n if (state.methods.stop) { state.methods.stop(modifierArg) }\n }\n\n arg.interaction.modifiers.states = null\n arg.interaction.modifiers.endPrevented = false\n}\n\nfunction getModifierList (interaction, registeredModifiers) {\n const actionOptions = interaction.interactable.options[interaction.prepared.name]\n const actionModifiers = actionOptions.modifiers\n\n if (actionModifiers && actionModifiers.length) {\n return actionModifiers\n .filter((modifier) => !modifier.options || modifier.options.enabled !== false)\n .map((modifier) => {\n if (!modifier.methods && modifier.type) {\n return registeredModifiers[modifier.type](modifier)\n }\n\n return modifier\n })\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n .map((type) => {\n const options = actionOptions[type]\n\n return options && options.enabled && {\n options,\n methods: options._methods,\n }\n })\n .filter((m) => !!m)\n}\n\nexport function prepareStates (modifierList) {\n const states = []\n\n for (let index = 0; index < modifierList.length; index++) {\n const { options, methods, name } = modifierList[index]\n\n if (options && options.enabled === false) { continue }\n\n const state = {\n options,\n methods,\n index,\n name,\n }\n\n states.push(state)\n }\n\n return states\n}\n\nfunction setCoords (arg) {\n const { interaction, phase } = arg\n const curCoords = arg.curCoords || interaction.coords.cur\n const startCoords = arg.startCoords || interaction.coords.start\n const { result, startDelta } = interaction.modifiers\n const curDelta = result.delta\n\n if (phase === 'start') {\n extend(interaction.modifiers.startDelta, result.delta)\n }\n\n for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\n coordsSet.page.x += delta.x\n coordsSet.page.y += delta.y\n coordsSet.client.x += delta.x\n coordsSet.client.y += delta.y\n }\n\n const { rectDelta } = interaction.modifiers.result\n const rect = arg.rect || interaction.rect\n\n rect.left += rectDelta.left\n rect.right += rectDelta.right\n rect.top += rectDelta.top\n rect.bottom += rectDelta.bottom\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n}\n\nfunction restoreCoords ({ interaction: { coords, rect, modifiers } }: Interact.SignalArg) {\n if (!modifiers.result) { return }\n\n const { startDelta } = modifiers\n const { delta: curDelta, rectDelta } = modifiers.result\n\n const coordsAndDeltas = [\n [coords.start, startDelta],\n [coords.cur, curDelta],\n ]\n\n for (const [coordsSet, delta] of coordsAndDeltas as any) {\n coordsSet.page.x -= delta.x\n coordsSet.page.y -= delta.y\n coordsSet.client.x -= delta.x\n coordsSet.client.y -= delta.y\n }\n\n rect.left -= rectDelta.left\n rect.right -= rectDelta.right\n rect.top -= rectDelta.top\n rect.bottom -= rectDelta.bottom\n}\n\nfunction shouldDo (options, preEnd?: boolean, requireEndOnly?: boolean, phase?: string) {\n return options\n ? options.enabled !== false &&\n (preEnd || !options.endOnly) &&\n (!requireEndOnly || options.endOnly || options.alwaysOnEnd) &&\n (options.setStart || phase !== 'start')\n : !requireEndOnly\n}\n\nfunction getRectOffset (rect, coords) {\n return rect\n ? {\n left : coords.x - rect.left,\n top : coords.y - rect.top,\n right : rect.right - coords.x,\n bottom: rect.bottom - coords.y,\n }\n : {\n left : 0,\n top : 0,\n right : 0,\n bottom: 0,\n }\n}\n\nfunction makeModifier<\n Options extends { enabled?: boolean, [key: string]: any }\n> (module: { defaults: Options, [key: string]: any }, name?: string) {\n const { defaults } = module\n const methods = {\n start: module.start,\n set: module.set,\n beforeEnd: module.beforeEnd,\n stop: module.stop,\n }\n\n const modifier = (options?: Partial) => {\n options = options || {}\n\n options.enabled = options.enabled !== false\n\n // add missing defaults to options\n for (const prop in defaults) {\n if (!(prop in options)) {\n options[prop] = defaults[prop]\n }\n }\n\n return { options, methods, name }\n }\n\n if (typeof name === 'string') {\n // for backwrads compatibility\n modifier._defaults = defaults\n modifier._methods = methods\n }\n\n return modifier\n}\n\nexport default {\n id: 'modifiers/base',\n install,\n startAll,\n setAll,\n prepareStates,\n start,\n beforeMove,\n beforeEnd,\n stop,\n shouldDo,\n getModifierList,\n getRectOffset,\n makeModifier,\n} as Interact.Plugin\n\nexport {\n makeModifier,\n}\n","import { EventPhase } from '@interactjs/core/InteractEvent'\nimport modifiers from '@interactjs/modifiers/base'\nimport * as utils from '@interactjs/utils'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Resume = 'resume',\n InertiaStart = 'inertiastart',\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n inertia?: {\n active: boolean\n smoothEnd: boolean\n allowResume: boolean\n\n startEvent?: Interact.InteractEvent\n upCoords: {\n page: Interact.Point\n client: Interact.Point\n timeStamp: number\n }\n\n xe?: number\n ye?: number\n sx?: number\n sy?: number\n\n t0?: number\n te?: number\n v0?: number\n vx0?: number\n vy0?: number\n duration?: number\n modifiedXe?: number\n modifiedYe?: number\n\n lambda_v0?: number // eslint-disable-line camelcase\n one_ve_v0?: number // eslint-disable-line camelcase\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n inertia?: {\n enabled?: boolean,\n resistance?: number, // the lambda in exponential decay\n minSpeed?: number, // target speed must be above this for inertia to start\n endSpeed?: number, // the speed at which inertia is slow enough to stop\n allowResume?: true, // allow resuming an action in inertia phase\n smoothEndDuration?: number, // animate to snap/restrict endOnly if there's no inertia\n } | boolean // FIXME\n }\n}\n\n(EventPhase as any).Resume = 'resume'\n; (EventPhase as any).InertiaStart = 'inertiastart'\n\nfunction install (scope: Interact.Scope) {\n const {\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.inertia = {\n active : false,\n smoothEnd : false,\n allowResume: false,\n upCoords : {} as any,\n timeout : null,\n }\n })\n\n // FIXME proper signal typing\n interactions.signals.on('before-action-end', (arg) => release(arg as any, scope))\n interactions.signals.on('down', (arg) => resume(arg as any, scope))\n interactions.signals.on('stop', (arg) => stop(arg as any))\n\n defaults.perAction.inertia = {\n enabled : false,\n resistance : 10, // the lambda in exponential decay\n minSpeed : 100, // target speed must be above this for inertia to start\n endSpeed : 10, // the speed at which inertia is slow enough to stop\n allowResume : true, // allow resuming an action in inertia phase\n smoothEndDuration: 300, // animate to snap/restrict endOnly if there's no inertia\n }\n\n scope.usePlugin(modifiers)\n}\n\nfunction resume (\n { interaction, event, pointer, eventTarget }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n // Check if the down event hits the current inertia target\n if (state.active) {\n let element = eventTarget\n\n // climb up the DOM tree from the event target\n while (utils.is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n // stop inertia\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n\n // update pointers to the down event's coordinates\n interaction.updatePointer(pointer, event, eventTarget, true)\n utils.pointer.setCoords(\n interaction.coords.cur,\n interaction.pointers.map((p) => p.pointer),\n interaction._now()\n )\n\n // fire appropriate signals\n const signalArg = {\n interaction,\n }\n\n scope.interactions.signals.fire('action-resume', signalArg)\n\n // fire a reume event\n const resumeEvent = new scope.InteractEvent(\n interaction, event, interaction.prepared.name, EventPhase.Resume, interaction.element)\n\n interaction._fireEvent(resumeEvent)\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n break\n }\n\n element = utils.dom.parentNode(element)\n }\n }\n}\n\nfunction release (\n { interaction, event, noPreEnd }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n if (!interaction.interacting() ||\n (interaction.simulation && interaction.simulation.active) ||\n noPreEnd) {\n return null\n }\n\n const options = getOptions(interaction)\n\n const now = interaction._now()\n const { client: velocityClient } = interaction.coords.velocity\n const pointerSpeed = utils.hypot(velocityClient.x, velocityClient.y)\n\n let smoothEnd = false\n let modifierResult: ReturnType\n\n // check if inertia should be started\n const inertiaPossible = (options && options.enabled &&\n interaction.prepared.name !== 'gesture' &&\n event !== state.startEvent)\n\n const inertia = (inertiaPossible &&\n (now - interaction.coords.cur.timeStamp) < 50 &&\n pointerSpeed > options.minSpeed &&\n pointerSpeed > options.endSpeed)\n\n const modifierArg = {\n interaction,\n pageCoords: utils.extend({}, interaction.coords.cur.page),\n states: inertiaPossible && interaction.modifiers.states.map(\n (modifierStatus) => utils.extend({}, modifierStatus)\n ),\n preEnd: true,\n prevCoords: undefined,\n requireEndOnly: null,\n }\n\n // smoothEnd\n if (inertiaPossible && !inertia) {\n modifierArg.prevCoords = interaction.prevEvent.page\n modifierArg.requireEndOnly = false\n modifierResult = modifiers.setAll(modifierArg)\n\n if (modifierResult.changed) {\n smoothEnd = true\n }\n }\n\n if (!(inertia || smoothEnd)) { return null }\n\n utils.pointer.copyCoords(state.upCoords, interaction.coords.cur)\n\n interaction.pointers[0].pointer = state.startEvent = new scope.InteractEvent(\n interaction,\n event,\n // FIXME add proper typing Action.name\n interaction.prepared.name as T,\n EventPhase.InertiaStart,\n interaction.element,\n )\n\n state.t0 = now\n\n state.active = true\n state.allowResume = options.allowResume\n interaction.simulation = state\n\n interaction.interactable.fire(state.startEvent)\n\n if (inertia) {\n state.vx0 = interaction.coords.velocity.client.x\n state.vy0 = interaction.coords.velocity.client.y\n state.v0 = pointerSpeed\n\n calcInertia(interaction, state)\n\n utils.extend(modifierArg.pageCoords, interaction.coords.cur.page)\n\n modifierArg.pageCoords.x += state.xe\n modifierArg.pageCoords.y += state.ye\n modifierArg.prevCoords = undefined\n modifierArg.requireEndOnly = true\n\n modifierResult = modifiers.setAll(modifierArg)\n\n state.modifiedXe += modifierResult.delta.x\n state.modifiedYe += modifierResult.delta.y\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.smoothEnd = true\n state.xe = modifierResult.delta.x\n state.ye = modifierResult.delta.y\n\n state.sx = state.sy = 0\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n\n return false\n}\n\nfunction stop ({ interaction }: Interact.SignalArg) {\n const state = interaction.inertia\n if (state.active) {\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction calcInertia (interaction: Interact.Interaction, state) {\n const options = getOptions(interaction)\n const lambda = options.resistance\n const inertiaDur = -Math.log(options.endSpeed / state.v0) / lambda\n\n state.x0 = interaction.prevEvent.page.x\n state.y0 = interaction.prevEvent.page.y\n state.t0 = state.startEvent.timeStamp / 1000\n state.sx = state.sy = 0\n\n state.modifiedXe = state.xe = (state.vx0 - inertiaDur) / lambda\n state.modifiedYe = state.ye = (state.vy0 - inertiaDur) / lambda\n state.te = inertiaDur\n\n state.lambda_v0 = lambda / state.v0\n state.one_ve_v0 = 1 - options.endSpeed / state.v0\n}\n\nfunction inertiaTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n utils.pointer.setCoordDeltas(interaction.coords.delta, interaction.coords.prev, interaction.coords.cur)\n utils.pointer.setCoordVelocity(interaction.coords.velocity, interaction.coords.delta)\n\n const state = interaction.inertia\n const options = getOptions(interaction)\n const lambda = options.resistance\n const t = interaction._now() / 1000 - state.t0\n\n if (t < state.te) {\n const progress = 1 - (Math.exp(-lambda * t) - state.lambda_v0) / state.one_ve_v0\n\n if (state.modifiedXe === state.xe && state.modifiedYe === state.ye) {\n state.sx = state.xe * progress\n state.sy = state.ye * progress\n }\n else {\n const quadPoint = utils.getQuadraticCurvePoint(\n 0, 0,\n state.xe, state.ye,\n state.modifiedXe, state.modifiedYe,\n progress)\n\n state.sx = quadPoint.x\n state.sy = quadPoint.y\n }\n\n interaction.move()\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.sx = state.modifiedXe\n state.sy = state.modifiedYe\n\n interaction.move()\n interaction.end(state.startEvent)\n state.active = false\n interaction.simulation = null\n }\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n}\n\nfunction smothEndTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n\n const state = interaction.inertia\n const t = interaction._now() - state.t0\n const { smoothEndDuration: duration } = getOptions(interaction)\n\n if (t < duration) {\n state.sx = utils.easeOutQuad(t, 0, state.xe, duration)\n state.sy = utils.easeOutQuad(t, 0, state.ye, duration)\n\n interaction.move()\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n else {\n state.sx = state.xe\n state.sy = state.ye\n\n interaction.move()\n interaction.end(state.startEvent)\n\n state.smoothEnd =\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction updateInertiaCoords (interaction: Interact.Interaction) {\n const state = interaction.inertia\n\n // return if inertia isn't running\n if (!state.active) { return }\n\n const pageUp = state.upCoords.page\n const clientUp = state.upCoords.client\n\n utils.pointer.setCoords(interaction.coords.cur, [ {\n pageX : pageUp.x + state.sx,\n pageY : pageUp.y + state.sy,\n clientX: clientUp.x + state.sx,\n clientY: clientUp.y + state.sy,\n } ], interaction._now())\n}\n\nfunction getOptions ({ interactable, prepared }: Interact.Interaction) {\n return interactable &&\n interactable.options &&\n prepared.name &&\n interactable.options[prepared.name].inertia\n}\n\nexport default {\n id: 'inertia',\n install,\n calcInertia,\n inertiaTick,\n smothEndTick,\n updateInertiaCoords,\n}\n","import * as is from '@interactjs/utils/is'\nimport rectUtils from '@interactjs/utils/rect'\n\nfunction start ({ rect, startOffset, state }) {\n const { options } = state\n const { elementRect } = options\n const offset = {} as { [key: string]: number }\n\n if (rect && elementRect) {\n offset.left = startOffset.left - (rect.width * elementRect.left)\n offset.top = startOffset.top - (rect.height * elementRect.top)\n\n offset.right = startOffset.right - (rect.width * (1 - elementRect.right))\n offset.bottom = startOffset.bottom - (rect.height * (1 - elementRect.bottom))\n }\n else {\n offset.left = offset.top = offset.right = offset.bottom = 0\n }\n\n state.offset = offset\n}\n\nfunction set ({ coords, interaction, state }) {\n const { options, offset } = state\n\n const restriction = getRestrictionRect(options.restriction, interaction, coords)\n\n if (!restriction) { return state }\n\n const rect = restriction\n\n // object is assumed to have\n // x, y, width, height or\n // left, top, right, bottom\n if ('x' in restriction && 'y' in restriction) {\n coords.x = Math.max(Math.min(rect.x + rect.width - offset.right, coords.x), rect.x + offset.left)\n coords.y = Math.max(Math.min(rect.y + rect.height - offset.bottom, coords.y), rect.y + offset.top)\n }\n else {\n coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left)\n coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top)\n }\n}\n\nfunction getRestrictionRect (value, interaction, coords?: Interact.Point) {\n if (is.func(value)) {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction])\n } else {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element)\n }\n}\n\nconst restrict = {\n start,\n set,\n getRestrictionRect,\n defaults: {\n enabled: false,\n restriction: null,\n elementRect: null,\n },\n}\n\nexport default restrict\n","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictEdges: {\n// inner: { top: 200, left: 200, right: 400, bottom: 400 },\n// outer: { top: 0, left: 0, right: 600, bottom: 600 },\n// },\n// })\n\nimport Interaction from '@interactjs/core/Interaction'\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrict from './pointer'\n\nconst { getRestrictionRect } = restrict\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity }\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity }\n\nfunction start ({ interaction, state }: { interaction: Interaction, state: any }) {\n const { options } = state\n const startOffset = interaction.modifiers.startOffset\n let offset\n\n if (options) {\n const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page)\n\n offset = rectUtils.rectToXY(offsetRect)\n }\n\n offset = offset || { x: 0, y: 0 }\n\n state.offset = {\n top: offset.y + startOffset.top,\n left: offset.x + startOffset.left,\n bottom: offset.y - startOffset.bottom,\n right: offset.x - startOffset.right,\n }\n}\n\nfunction set ({ coords, interaction, state }: {\n coords: Interact.Point,\n interaction: Interaction,\n state: any\n}) {\n const { offset, options } = state\n const edges = interaction.prepared._linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const page = extend({}, coords)\n const inner = getRestrictionRect(options.inner, interaction, page) || {}\n const outer = getRestrictionRect(options.outer, interaction, page) || {}\n\n fixRect(inner, noInner)\n fixRect(outer, noOuter)\n\n if (edges.top) {\n coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top)\n }\n else if (edges.bottom) {\n coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom)\n }\n if (edges.left) {\n coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left)\n }\n else if (edges.right) {\n coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right)\n }\n}\n\nfunction fixRect (rect, defaults) {\n for (const edge of ['top', 'left', 'bottom', 'right']) {\n if (!(edge in rect)) {\n rect[edge] = defaults[edge]\n }\n }\n\n return rect\n}\n\nconst restrictEdges = {\n noInner,\n noOuter,\n getRestrictionRect,\n start,\n set,\n defaults: {\n enabled: false,\n inner: null,\n outer: null,\n offset: null,\n },\n}\n\nexport default restrictEdges\n","// This module adds the options.resize.restrictSize setting which sets min and\n// max width and height for the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictSize: {\n// min: { width: -600, height: -600 },\n// max: { width: 600, height: 600 },\n// },\n// })\n\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrictEdges from './edges'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nfunction start (arg) {\n return restrictEdges.start(arg)\n}\n\nfunction set (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const rect = rectUtils.xywhToTlbr(interaction.resizeRects.inverted)\n\n const minSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.min, interaction)) || noMin\n const maxSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.max, interaction)) || noMax\n\n state.options = {\n enabled: options.enabled,\n endOnly: options.endOnly,\n inner: extend({}, restrictEdges.noInner),\n outer: extend({}, restrictEdges.noOuter),\n }\n\n if (edges.top) {\n state.options.inner.top = rect.bottom - minSize.height\n state.options.outer.top = rect.bottom - maxSize.height\n }\n else if (edges.bottom) {\n state.options.inner.bottom = rect.top + minSize.height\n state.options.outer.bottom = rect.top + maxSize.height\n }\n if (edges.left) {\n state.options.inner.left = rect.right - minSize.width\n state.options.outer.left = rect.right - maxSize.width\n }\n else if (edges.right) {\n state.options.inner.right = rect.left + minSize.width\n state.options.outer.right = rect.left + maxSize.width\n }\n\n restrictEdges.set(arg)\n\n state.options = options\n}\n\nconst restrictSize = {\n start,\n set,\n defaults: {\n enabled: false,\n min: null,\n max: null,\n },\n}\n\nexport default restrictSize\n","import * as utils from '@interactjs/utils'\n\nfunction start (arg: Interact.SignalArg) {\n const { interaction, interactable, element, rect, state, startOffset } = arg\n const { options } = state\n const offsets = []\n const origin = options.offsetWithOrigin\n ? getOrigin(arg)\n : { x: 0, y: 0 }\n\n let snapOffset\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.coords.start.page.x,\n y: interaction.coords.start.page.y,\n }\n }\n else {\n const offsetRect = utils.rect.resolveRectLike(options.offset, interactable, element, [interaction])\n\n snapOffset = utils.rect.rectToXY(offsetRect) || { x: 0, y: 0 }\n snapOffset.x += origin.x\n snapOffset.y += origin.y\n }\n\n const relativePoints = options.relativePoints || []\n\n if (rect && options.relativePoints && options.relativePoints.length) {\n for (let index = 0; index < relativePoints.length; index++) {\n const relativePoint = relativePoints[index]\n\n offsets.push({\n index,\n relativePoint,\n x: startOffset.left - (rect.width * relativePoint.x) + snapOffset.x,\n y: startOffset.top - (rect.height * relativePoint.y) + snapOffset.y,\n })\n }\n }\n else {\n offsets.push(utils.extend({\n index: 0,\n relativePoint: null,\n }, snapOffset))\n }\n\n state.offsets = offsets\n}\n\nfunction set (arg: Interact.SignalArg) {\n const { interaction, coords, state } = arg\n const { options, offsets } = state\n\n const origin = utils.getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name)\n const page = utils.extend({}, coords)\n const targets = []\n let target\n\n if (!options.offsetWithOrigin) {\n page.x -= origin.x\n page.y -= origin.y\n }\n\n state.realX = page.x\n state.realY = page.y\n\n for (const offset of offsets) {\n const relativeX = page.x - offset.x\n const relativeY = page.y - offset.y\n\n for (let index = 0, len = options.targets.length; index < len; index++) {\n const snapTarget = options.targets[index]\n if (utils.is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction, offset, index)\n }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\n\n targets.push({\n x: (utils.is.number(target.x) ? target.x : relativeX) + offset.x,\n y: (utils.is.number(target.y) ? target.y : relativeY) + offset.y,\n\n range: utils.is.number(target.range) ? target.range : options.range,\n })\n }\n }\n\n const closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n dx: 0,\n dy: 0,\n }\n\n for (let i = 0, len = targets.length; i < len; i++) {\n target = targets[i]\n\n const range = target.range\n const dx = target.x - page.x\n const dy = target.y - page.y\n const distance = utils.hypot(dx, dy)\n let inRange = distance <= range\n\n // Infinite targets count as being out of range\n // compared to non infinite ones that are in range\n if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n inRange = false\n }\n\n if (!closest.target || (inRange\n // is the closest target in range?\n ? (closest.inRange && range !== Infinity\n // the pointer is relatively deeper in this target\n ? distance / range < closest.distance / closest.range\n // this target has Infinite range and the closest doesn't\n : (range === Infinity && closest.range !== Infinity) ||\n // OR this target is closer that the previous closest\n distance < closest.distance)\n // The other is not in range and the pointer is closer to this target\n : (!closest.inRange && distance < closest.distance))) {\n closest.target = target\n closest.distance = distance\n closest.range = range\n closest.inRange = inRange\n closest.dx = dx\n closest.dy = dy\n\n state.range = range\n }\n }\n\n if (closest.inRange) {\n coords.x = closest.target.x\n coords.y = closest.target.y\n }\n\n state.closest = closest\n}\n\nfunction getOrigin (arg: Partial) {\n const optionsOrigin = utils.rect.rectToXY(\n utils.rect.resolveRectLike(arg.state.options.origin)\n )\n const origin = optionsOrigin || utils.getOriginXY(\n arg.interactable,\n arg.interaction.element,\n arg.interaction.prepared.name,\n )\n\n return origin\n}\n\nconst snap = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n offsetWithOrigin: true,\n\n relativePoints: null,\n },\n}\n\nexport default snap\n","// This module allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport snap from './pointer'\n\nfunction start (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.edges\n\n if (!edges) { return null }\n\n arg.state = {\n options: {\n relativePoints: [{\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1,\n }],\n origin: { x: 0, y: 0 },\n offset: options.offset || 'self',\n range: options.range,\n },\n }\n\n state.targetFields = state.targetFields || [\n ['width', 'height'],\n ['x', 'y'],\n ]\n\n snap.start(arg)\n state.offsets = arg.state.offsets\n\n arg.state = state\n}\n\nfunction set (arg) {\n const { interaction, state, coords } = arg\n const { options, offsets } = state\n const relative = {\n x: coords.x - offsets[0].x,\n y: coords.y - offsets[0].y,\n }\n\n state.options = extend({}, options)\n state.options.targets = []\n\n for (const snapTarget of (options.targets || [])) {\n let target\n\n if (is.func(snapTarget)) {\n target = snapTarget(relative.x, relative.y, interaction)\n }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\n\n for (const [xField, yField] of state.targetFields) {\n if (xField in target || yField in target) {\n target.x = target[xField]\n target.y = target[yField]\n\n break\n }\n }\n\n state.options.targets.push(target)\n }\n\n snap.set(arg)\n\n state.options = options\n}\n\nconst snapSize = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n },\n}\n\nexport default snapSize\n","/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\n * interact(target).resizable({\n * snapEdges: {\n * targets: [interact.snappers.grid({ x: 100, y: 50 })],\n * },\n * })\n *\n * interact(target).resizable({\n * snapEdges: {\n * targets: [\n * interact.snappers.grid({\n * top: 50,\n * left: 50,\n * bottom: 100,\n * right: 100,\n * }),\n * ],\n * },\n * })\n */\n\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport snapSize from './size'\n\nfunction start (arg) {\n const edges = arg.interaction.prepared.edges\n\n if (!edges) { return null }\n\n arg.state.targetFields = arg.state.targetFields || [\n [edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom'],\n ]\n\n return snapSize.start(arg)\n}\n\nfunction set (arg) {\n return snapSize.set(arg)\n}\n\nconst snapEdges = {\n start,\n set,\n defaults: extend(clone(snapSize.defaults), {\n offset: { x: 0, y: 0 },\n }),\n}\n\nexport default snapEdges\n","import base from './base'\nimport restrictEdgesModule from './restrict/edges'\nimport restrictModule from './restrict/pointer'\nimport restrictSizeModule from './restrict/size'\nimport snapEdgesModule from './snap/edges'\nimport snapModule from './snap/pointer'\nimport snapSizeModule from './snap/size'\n\nconst { makeModifier } = base\n\nexport const snap = makeModifier(snapModule, 'snap')\nexport const snapSize = makeModifier(snapSizeModule, 'snapSize')\nexport const snapEdges = makeModifier(snapEdgesModule, 'snapEdges')\nexport const restrict = makeModifier(restrictModule, 'restrict')\nexport const restrictEdges = makeModifier(restrictEdgesModule, 'restrictEdges')\nexport const restrictSize = makeModifier(restrictSizeModule, 'restrictSize')\n","import BaseEvent from '@interactjs/core/BaseEvent'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\n\n/** */\nexport default class PointerEvent extends BaseEvent {\n type: T\n originalEvent: Interact.PointerEventType\n pointerId: number\n pointerType: string\n double: boolean\n pageX: number\n pageY: number\n clientX: number\n clientY: number\n dt: number\n eventable: any\n\n /** */\n constructor (\n type: T,\n pointer: Interact.PointerType | PointerEvent,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n interaction: Interact.Interaction,\n timeStamp: number,\n ) {\n super(interaction)\n pointerUtils.pointerExtend(this, event)\n\n if (event !== pointer) {\n pointerUtils.pointerExtend(this, pointer)\n }\n\n this.timeStamp = timeStamp\n this.originalEvent = event\n this.type = type\n this.pointerId = pointerUtils.getPointerId(pointer)\n this.pointerType = pointerUtils.getPointerType(pointer)\n this.target = eventTarget\n this.currentTarget = null\n\n if (type === 'tap') {\n const pointerIndex = interaction.getPointerIndex(pointer)\n this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime\n\n const interval = this.timeStamp - interaction.tapTime\n\n this.double = !!(interaction.prevTap &&\n interaction.prevTap.type !== 'doubletap' &&\n interaction.prevTap.target === this.target &&\n interval < 500)\n }\n else if (type === 'doubletap') {\n this.dt = (pointer as PointerEvent<'tap'>).timeStamp - interaction.tapTime\n }\n }\n\n _subtractOrigin ({ x: originX, y: originY }) {\n this.pageX -= originX\n this.pageY -= originY\n this.clientX -= originX\n this.clientY -= originY\n\n return this\n }\n\n _addOrigin ({ x: originX, y: originY }) {\n this.pageX += originX\n this.pageY += originY\n this.clientX += originX\n this.clientY += originY\n\n return this\n }\n\n /**\n * Prevent the default behaviour of the original Event\n */\n preventDefault () {\n this.originalEvent.preventDefault()\n }\n}\n","import { PerActionDefaults } from '@interactjs/core/defaultOptions'\nimport Eventable from '@interactjs/core/Eventable'\nimport Interaction from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport PointerEvent from './PointerEvent'\n\nexport type EventTargetList = Array<{\n node: Node,\n eventable: Eventable,\n props: { [key: string]: any },\n}>\n\nexport interface PointerEventOptions extends PerActionDefaults {\n enabled?: undefined // not used\n holdDuration?: number,\n ignoreFrom?: any,\n allowFrom?: any,\n origin?: Interact.Point | string | Element\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n pointerEvents: typeof pointerEvents\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n prevTap?: PointerEvent\n tapTime?: number\n }\n}\n\ndeclare module '@interactjs/core/PointerInfo' {\n interface PointerInfo {\n hold?: {\n duration: number\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n pointerEvents: Interact.Options\n }\n}\n\nconst signals = new utils.Signals()\nconst simpleSignals = [ 'down', 'up', 'cancel' ]\nconst simpleEvents = [ 'down', 'up', 'cancel' ]\n\nconst defaults: PointerEventOptions = {\n holdDuration: 600,\n ignoreFrom : null,\n allowFrom : null,\n origin : { x: 0, y: 0 },\n}\n\nconst pointerEvents = {\n id: 'pointer-events/base',\n install,\n signals,\n PointerEvent,\n fire,\n collectEventTargets,\n createSignalListener,\n defaults,\n types: [\n 'down',\n 'move',\n 'up',\n 'cancel',\n 'tap',\n 'doubletap',\n 'hold',\n ],\n}\n\nfunction fire (arg: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n targets?: EventTargetList,\n pointerEvent?: PointerEvent,\n type: T\n}, scope: Interact.Scope) {\n const {\n interaction, pointer, event, eventTarget,\n type = (arg as any).pointerEvent.type,\n targets = collectEventTargets(arg),\n } = arg\n\n const {\n pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now()),\n } = arg\n\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n targets,\n type,\n pointerEvent,\n }\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i]\n\n for (const prop in target.props || {}) {\n (pointerEvent as any)[prop] = target.props[prop]\n }\n\n const origin = utils.getOriginXY(target.eventable, target.node)\n\n pointerEvent._subtractOrigin(origin)\n pointerEvent.eventable = target.eventable\n pointerEvent.currentTarget = target.node\n\n target.eventable.fire(pointerEvent)\n\n pointerEvent._addOrigin(origin)\n\n if (pointerEvent.immediatePropagationStopped ||\n (pointerEvent.propagationStopped &&\n (i + 1) < targets.length && targets[i + 1].node !== pointerEvent.currentTarget)) {\n break\n }\n }\n\n signals.fire('fired', signalArg)\n\n if (type === 'tap') {\n // if pointerEvent should make a double tap, create and fire a doubletap\n // PointerEvent and use that as the prevTap\n const prevTap = pointerEvent.double\n ? fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'doubletap',\n }, scope)\n : pointerEvent\n\n interaction.prevTap = prevTap\n interaction.tapTime = prevTap.timeStamp\n }\n\n return pointerEvent\n}\n\nfunction collectEventTargets ({ interaction, pointer, event, eventTarget, type }: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n type: T\n}) {\n const pointerIndex = interaction.getPointerIndex(pointer)\n const pointerInfo = interaction.pointers[pointerIndex]\n\n // do not fire a tap event if the pointer was moved before being lifted\n if (type === 'tap' && (interaction.pointerWasMoved ||\n // or if the pointerup target is different to the pointerdown target\n !(pointerInfo && pointerInfo.downTarget === eventTarget))) {\n return []\n }\n\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n path,\n targets: [] as EventTargetList,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter((target) =>\n target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration)\n }\n\n return signalArg.targets\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.pointerEvents = pointerEvents\n scope.defaults.actions.pointerEvents = pointerEvents.defaults\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.prevTap = null // the most recent tap event on this interaction\n interaction.tapTime = 0 // time of the most recent tap event\n })\n\n interactions.signals.on('update-pointer', ({ down, pointerInfo }) => {\n if (!down && pointerInfo.hold) {\n return\n }\n\n pointerInfo.hold = { duration: Infinity, timeout: null }\n })\n\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget, duplicateMove }) => {\n const pointerIndex = interaction.getPointerIndex(pointer)\n\n if (!duplicateMove && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n\n fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'move',\n }, scope)\n }\n })\n\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget, pointerIndex }) => {\n const timer = interaction.pointers[pointerIndex].hold\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'hold',\n targets: [] as EventTargetList,\n path,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (!signalArg.targets.length) { return }\n\n let minDuration = Infinity\n\n for (const target of signalArg.targets) {\n const holdDuration = target.eventable.options.holdDuration\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration\n }\n }\n\n timer.duration = minDuration\n timer.timeout = setTimeout(() => {\n fire({\n interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n }, scope)\n }, minDuration)\n })\n\n for (const signalName of ['up', 'cancel']) {\n interactions.signals.on(signalName, ({ interaction, pointerIndex }) => {\n if (interaction.pointers[pointerIndex].hold) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n })\n }\n\n for (let i = 0; i < simpleSignals.length; i++) {\n interactions.signals.on(simpleSignals[i], createSignalListener(simpleEvents[i], scope))\n }\n\n interactions.signals.on('up', ({ interaction, pointer, event, eventTarget }) => {\n if (!interaction.pointerWasMoved) {\n fire({ interaction, eventTarget, pointer, event, type: 'tap' }, scope)\n }\n })\n}\n\nfunction createSignalListener (type: string, scope) {\n return function ({ interaction, pointer, event, eventTarget }: any) {\n fire({ interaction, eventTarget, pointer, event, type }, scope)\n }\n}\n\nexport default pointerEvents\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n holdIntervalHandle?: any\n }\n}\n\ndeclare module '@interactjs/pointer-events/base' {\n interface PointerEventOptions {\n holdRepeatInterval?: number\n }\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n pointerEvents,\n interactions,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n pointerEvents.signals.on('new', onNew)\n pointerEvents.signals.on('fired', (arg) => onFired(arg as any, scope))\n\n for (const signal of ['move', 'up', 'cancel', 'endall']) {\n interactions.signals.on(signal, endHoldRepeat)\n }\n\n // don't repeat by default\n pointerEvents.defaults.holdRepeatInterval = 0\n pointerEvents.types.push('holdrepeat')\n}\n\nfunction onNew ({ pointerEvent }) {\n if (pointerEvent.type !== 'hold') { return }\n\n pointerEvent.count = (pointerEvent.count || 0) + 1\n}\n\nfunction onFired (\n { interaction, pointerEvent, eventTarget, targets }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n if (pointerEvent.type !== 'hold' || !targets.length) { return }\n\n // get the repeat interval from the first eventable\n const interval = targets[0].eventable.options.holdRepeatInterval\n\n // don't repeat if the interval is 0 or less\n if (interval <= 0) { return }\n\n // set a timeout to fire the holdrepeat event\n interaction.holdIntervalHandle = setTimeout(() => {\n scope.pointerEvents.fire({\n interaction,\n eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent,\n }, scope)\n }, interval)\n}\n\nfunction endHoldRepeat ({ interaction }) {\n // set the interaction's holdStopTime property\n // to stop further holdRepeat events\n if (interaction.holdIntervalHandle) {\n clearInterval(interaction.holdIntervalHandle)\n interaction.holdIntervalHandle = null\n }\n}\n\nexport default {\n id: 'pointer-events/holdRepeat',\n install,\n} as Interact.Plugin\n","import { Scope } from '@interactjs/core/scope'\nimport { merge } from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\n\ntype Interactable = import ('@interactjs/core/Interactable').default\ntype EventTargetList = import ('./base').EventTargetList\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n pointerEvents: typeof pointerEventsMethod\n __backCompatOption: (optionName: string, newValue: any) => any\n }\n}\n\nfunction install (scope: Scope) {\n const {\n pointerEvents,\n actions,\n Interactable,\n interactables,\n } = scope\n\n pointerEvents.signals.on('collect-targets', ({\n targets,\n node,\n type,\n eventTarget,\n }: {\n targets: EventTargetList,\n node: Node,\n type: string,\n eventTarget: Element,\n }) => {\n scope.interactables.forEachMatch(node, (interactable: Interactable) => {\n const eventable = interactable.events\n const options = eventable.options\n\n if (\n eventable.types[type] &&\n eventable.types[type].length &&\n interactable.testIgnoreAllow(options, node, eventTarget)) {\n targets.push({\n node,\n eventable,\n props: { interactable },\n })\n }\n })\n })\n\n interactables.signals.on('new', ({ interactable }) => {\n interactable.events.getRect = function (element: Element) {\n return interactable.getRect(element)\n }\n })\n\n interactables.signals.on('set', ({ interactable, options }) => {\n extend(interactable.events.options, pointerEvents.defaults)\n extend(interactable.events.options, options.pointerEvents || {})\n })\n\n merge(actions.eventTypes, pointerEvents.types)\n\n Interactable.prototype.pointerEvents = pointerEventsMethod\n\n const __backCompatOption = Interactable.prototype._backCompatOption\n\n Interactable.prototype._backCompatOption = function (optionName, newValue) {\n const ret = __backCompatOption.call(this, optionName, newValue)\n\n if (ret === this) {\n this.events.options[optionName] = newValue\n }\n\n return ret\n }\n}\n\nfunction pointerEventsMethod (this: Interactable, options: any) {\n extend(this.events.options, options)\n\n return this\n}\n\nexport default {\n id: 'pointer-events/interactableTargets',\n install,\n}\n","import pointerEvents from './base'\nimport holdRepeat from './holdRepeat'\nimport interactableTargets from './interactableTargets'\n\nfunction install (scope) {\n scope.usePlugin(pointerEvents)\n scope.usePlugin(holdRepeat)\n scope.usePlugin(interactableTargets)\n}\n\nconst id = 'pointer-events'\n\nexport { id, pointerEvents, holdRepeat, interactableTargets, install }\n","import Interactable from '@interactjs/core/Interactable'\nimport { EventPhase } from '@interactjs/core/InteractEvent'\nimport { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport { arr, extend, is, pointer as pointerUtils, rect as rectUtils, win } from '@interactjs/utils'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n reflow: (action: ActionProps) => ReturnType\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n _reflowPromise: Promise\n _reflowResolve: () => void\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Reflow = 'reflow',\n }\n}\n\n(EventPhase as any).Reflow = 'reflow'\n\nexport function install (scope: Scope) {\n const {\n actions,\n interactions,\n /** @lends Interactable */\n // eslint-disable-next-line no-shadow\n Interactable,\n } = scope\n\n // add action reflow event types\n for (const actionName of actions.names) {\n actions.eventTypes.push(`${actionName}reflow`)\n }\n\n // remove completed reflow interactions\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.pointerType === EventPhase.Reflow) {\n if (interaction._reflowResolve) {\n interaction._reflowResolve()\n }\n\n arr.remove(scope.interactions.list, interaction)\n }\n })\n\n /**\n * ```js\n * const interactable = interact(target)\n * const drag = { name: drag, axis: 'x' }\n * const resize = { name: resize, edges: { left: true, bottom: true }\n *\n * interactable.reflow(drag)\n * interactable.reflow(resize)\n * ```\n *\n * Start an action sequence to re-apply modifiers, check drops, etc.\n *\n * @param { Object } action The action to begin\n * @param { string } action.name The name of the action\n * @returns { Promise }\n */\n Interactable.prototype.reflow = function (action) {\n return reflow(this, action, scope)\n }\n}\n\nfunction reflow (interactable: Interactable, action: ActionProps, scope: Scope): Promise {\n const elements = is.string(interactable.target)\n ? arr.from(interactable._context.querySelectorAll(interactable.target))\n : [interactable.target]\n\n // tslint:disable-next-line variable-name\n const Promise = (win.window as any).Promise\n const promises: Array> | null = Promise ? [] : null\n\n for (const element of elements) {\n const rect = interactable.getRect(element)\n\n if (!rect) { break }\n\n const runningInteraction = arr.find(\n scope.interactions.list,\n (interaction: Interaction) => {\n return interaction.interacting() &&\n interaction.interactable === interactable &&\n interaction.element === element &&\n interaction.prepared.name === action.name\n })\n let reflowPromise: Promise\n\n if (runningInteraction) {\n runningInteraction.move()\n\n if (promises) {\n reflowPromise = runningInteraction._reflowPromise || new Promise((resolve: any) => {\n runningInteraction._reflowResolve = resolve\n })\n }\n }\n else {\n const xywh = rectUtils.tlbrToXywh(rect)\n const coords = {\n page : { x: xywh.x, y: xywh.y },\n client : { x: xywh.x, y: xywh.y },\n timeStamp: scope.now(),\n }\n\n const event = pointerUtils.coordsToEvent(coords)\n reflowPromise = startReflow(scope, interactable, element, action, event)\n }\n\n if (promises) {\n promises.push(reflowPromise)\n }\n }\n\n return promises && Promise.all(promises).then(() => interactable)\n}\n\nfunction startReflow (scope: Scope, interactable: Interactable, element: Element, action: ActionProps, event: any) {\n const interaction = scope.interactions.new({ pointerType: 'reflow' })\n const signalArg = {\n interaction,\n event,\n pointer: event,\n eventTarget: element,\n phase: EventPhase.Reflow,\n }\n\n interaction.interactable = interactable\n interaction.element = element\n interaction.prepared = extend({}, action)\n interaction.prevEvent = event\n interaction.updatePointer(event, event, element, true)\n\n interaction._doPhase(signalArg)\n\n const reflowPromise = (win.window as unknown as any).Promise\n ? new (win.window as unknown as any).Promise((resolve: any) => {\n interaction._reflowResolve = resolve\n })\n : null\n\n interaction._reflowPromise = reflowPromise\n interaction.start(action, interactable, element)\n\n if (interaction._interacting) {\n interaction.move(signalArg)\n interaction.end(event)\n }\n else {\n interaction.stop()\n }\n\n interaction.removePointer(event, event)\n interaction.pointerIsDown = false\n\n return reflowPromise\n}\n\nexport default {\n id: 'reflow',\n install,\n} as Interact.Plugin\n","/** @module interact */\n\nimport { Options } from '@interactjs/core/defaultOptions'\nimport Interactable from '@interactjs/core/Interactable'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport browser from '@interactjs/utils/browser'\nimport events from '@interactjs/utils/events'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n interact: InteractStatic\n }\n}\n\nexport interface InteractStatic {\n (target: Interact.Target, options?: Options): Interactable\n on: typeof on\n pointerMoveTolerance: typeof pointerMoveTolerance\n stop: typeof stop\n supportsPointerEvent: typeof supportsPointerEvent\n supportsTouch: typeof supportsTouch\n debug: typeof debug\n off: typeof off\n isSet: typeof isSet\n use: typeof use\n getPointerAverage: typeof utils.pointer.pointerAverage\n getTouchBBox: typeof utils.pointer.touchBBox\n getTouchDistance: typeof utils.pointer.touchDistance\n getTouchAngle: typeof utils.pointer.touchAngle\n getElementRect: typeof utils.dom.getElementRect\n getElementClientRect: typeof utils.dom.getElementClientRect\n matchesSelector: typeof utils.dom.matchesSelector\n closest: typeof utils.dom.closest\n addDocument: typeof scope.addDocument\n removeDocument: typeof scope.removeDocument\n version: string\n}\n\nconst globalEvents: any = {}\nconst scope = new Scope()\n\n/**\n * ```js\n * interact('#draggable').draggable(true)\n *\n * var rectables = interact('rect')\n * rectables\n * .gesturable(true)\n * .on('gesturemove', function (event) {\n * // ...\n * })\n * ```\n *\n * The methods of this variable can be used to set elements as interactables\n * and also to change various default settings.\n *\n * Calling it as a function and passing an element or a valid CSS selector\n * string returns an Interactable object which has various methods to configure\n * it.\n *\n * @global\n *\n * @param {Element | string} target The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */\nexport const interact: InteractStatic = function interact (target: Interact.Target, options?: any) {\n let interactable = scope.interactables.get(target, options)\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options)\n interactable.events.global = globalEvents\n }\n\n return interactable\n} as InteractStatic\n\n/**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n * @param {Object} plugin\n * @param {function} plugin.install\n * @return {interact}\n */\ninteract.use = use\nfunction use (plugin: Interact.Plugin, options?: { [key: string]: any }) {\n scope.usePlugin(plugin, options)\n\n return interact\n}\n\n/**\n * Check if an element or selector has been set with the {@link interact}\n * function\n *\n * @alias module:interact.isSet\n *\n * @param {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\ninteract.isSet = isSet\nfunction isSet (target: Element, options?: any) {\n return !!scope.interactables.get(target, options && options.context)\n}\n\n/**\n * Add a global listener for an InteractEvent or adds a DOM event to `document`\n *\n * @alias module:interact.on\n *\n * @param {string | array | object} type The types of events to listen for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] object or useCapture flag for\n * addEventListener\n * @return {object} interact\n */\ninteract.on = on\nfunction on (type: string | Interact.EventTypes, listener: Interact.ListenersArg, options?) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of (type as any[])) {\n interact.on(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.on(prop, (type as Interact.EventTypes)[prop], listener)\n }\n\n return interact\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (utils.arr.contains(scope.actions.eventTypes, type)) {\n // if this type of event was never bound\n if (!globalEvents[type]) {\n globalEvents[type] = [listener]\n }\n else {\n globalEvents[type].push(listener)\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n events.add(scope.document, type, listener as Interact.Listener, { options })\n }\n\n return interact\n}\n\n/**\n * Removes a global InteractEvent listener or DOM event from `document`\n *\n * @alias module:interact.off\n *\n * @param {string | array | object} type The types of events that were listened\n * for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} options [options] object or useCapture flag for\n * removeEventListener\n * @return {object} interact\n */\ninteract.off = off\nfunction off (type, listener, options) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of type) {\n interact.off(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.off(prop, type[prop], listener)\n }\n\n return interact\n }\n\n if (!utils.arr.contains(scope.actions.eventTypes, type)) {\n events.remove(scope.document, type, listener, options)\n }\n else {\n let index\n\n if (type in globalEvents &&\n (index = globalEvents[type].indexOf(listener)) !== -1) {\n globalEvents[type].splice(index, 1)\n }\n }\n\n return interact\n}\n\n/**\n * Returns an object which exposes internal data\n * @alias module:interact.debug\n *\n * @return {object} An object with properties that outline the current state\n * and expose internal functions and variables\n */\ninteract.debug = debug\nfunction debug () {\n return scope\n}\n\n// expose the functions used to calculate multi-touch properties\ninteract.getPointerAverage = utils.pointer.pointerAverage\ninteract.getTouchBBox = utils.pointer.touchBBox\ninteract.getTouchDistance = utils.pointer.touchDistance\ninteract.getTouchAngle = utils.pointer.touchAngle\n\ninteract.getElementRect = utils.dom.getElementRect\ninteract.getElementClientRect = utils.dom.getElementClientRect\ninteract.matchesSelector = utils.dom.matchesSelector\ninteract.closest = utils.dom.closest\n\n/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\ninteract.supportsTouch = supportsTouch\nfunction supportsTouch () {\n return browser.supportsTouch\n}\n\n/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\ninteract.supportsPointerEvent = supportsPointerEvent\nfunction supportsPointerEvent () {\n return browser.supportsPointerEvent\n}\n\n/**\n * Cancels all interactions (end events are not fired)\n *\n * @alias module:interact.stop\n *\n * @return {object} interact\n */\ninteract.stop = stop\nfunction stop () {\n for (const interaction of scope.interactions.list) {\n interaction.stop()\n }\n\n return interact\n}\n\n/**\n * Returns or sets the distance the pointer must be moved before an action\n * sequence occurs. This also affects tolerance for tap events.\n *\n * @alias module:interact.pointerMoveTolerance\n *\n * @param {number} [newValue] The movement from the start position must be greater than this value\n * @return {interact | number}\n */\ninteract.pointerMoveTolerance = pointerMoveTolerance\nfunction pointerMoveTolerance (newValue) {\n if (utils.is.number(newValue)) {\n scope.interactions.pointerMoveTolerance = newValue\n\n return interact\n }\n\n return scope.interactions.pointerMoveTolerance\n}\n\nscope.interactables.signals.on('unset', ({ interactable }) => {\n scope.interactables.list.splice(scope.interactables.list.indexOf(interactable), 1)\n\n // Stop related interactions when an Interactable is unset\n for (const interaction of scope.interactions.list) {\n if (interaction.interactable === interactable && interaction.interacting() && !interaction._ending) {\n interaction.stop()\n }\n }\n})\n\ninteract.addDocument = (doc, options) => scope.addDocument(doc, options)\ninteract.removeDocument = (doc) => scope.removeDocument(doc)\n\nscope.interact = interact\n\nexport { scope }\nexport default interact\n","import * as actions from '@interactjs/actions'\nimport autoScroll from '@interactjs/auto-scroll'\nimport * as autoStart from '@interactjs/auto-start'\nimport interactablePreventDefault from '@interactjs/core/interactablePreventDefault'\nimport devTools from '@interactjs/dev-tools'\nimport inertia from '@interactjs/inertia'\nimport * as modifiers from '@interactjs/modifiers'\nimport modifiersBase from '@interactjs/modifiers/base'\nimport * as pointerEvents from '@interactjs/pointer-events'\nimport reflow from '@interactjs/reflow'\nimport interact, { scope } from './interact'\n\nexport function init (window: Window) {\n scope.init(window)\n\n interact.use(interactablePreventDefault)\n\n // inertia\n interact.use(inertia)\n\n // pointerEvents\n interact.use(pointerEvents)\n\n // autoStart, hold\n interact.use(autoStart)\n\n // drag and drop, resize, gesture\n interact.use(actions)\n\n // snap, resize, etc.\n interact.use(modifiersBase)\n\n // for backwrads compatibility\n for (const type in modifiers) {\n const { _defaults, _methods } = modifiers[type]\n\n _defaults._methods = _methods\n scope.defaults.perAction[type] = _defaults\n }\n\n // autoScroll\n interact.use(autoScroll)\n\n // reflow\n interact.use(reflow)\n\n // eslint-disable-next-line no-undef\n if (process.env.NODE_ENV !== 'production') {\n interact.use(devTools)\n }\n\n return interact\n}\n\n// eslint-disable-next-line no-undef\ninteract.version = process.env.npm_package_version\n\nexport default interact\nexport {\n interact,\n actions,\n autoScroll,\n interactablePreventDefault,\n inertia,\n modifiersBase as modifiers,\n pointerEvents,\n reflow,\n}\n","/// \n","function createGrid (grid: (Interact.Rect | Interact.Point) & { range?: number, limits: Interact.Rect, offset: Interact.Point }) {\n const coordFields = [\n ['x', 'y'],\n ['left', 'top'],\n ['right', 'bottom'],\n ['width', 'height'],\n ].filter(([xField, yField]) => xField in grid || yField in grid)\n\n return function (x, y) {\n const {\n range,\n limits = {\n left : -Infinity,\n right : Infinity,\n top : -Infinity,\n bottom: Infinity,\n },\n offset = { x: 0, y: 0 },\n } = grid\n\n const result = { range }\n\n for (const [xField, yField] of coordFields) {\n const gridx = Math.round((x - offset.x) / grid[xField])\n const gridy = Math.round((y - offset.y) / grid[yField])\n\n result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x))\n result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y))\n }\n\n return result\n }\n}\n\nexport default createGrid\n","import grid from './grid'\n\nexport { grid }\n","import interact, { init as initInteract } from '@interactjs/interact'\nimport * as modifiers from '@interactjs/modifiers'\nimport '@interactjs/types'\nimport extend from '@interactjs/utils/extend'\nimport * as snappers from '@interactjs/utils/snappers'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n modifiers?: any\n snappers?: typeof snappers & { [key: string]: any }\n createSnapGrid?: typeof snappers.grid\n }\n}\n\nif (typeof window === 'object' && !!window) {\n init(window)\n}\n\nexport function init (win: Window) {\n initInteract(win)\n\n return interact.use({\n id: 'interactjs',\n install (scope) {\n interact.modifiers = extend(scope.modifiers, modifiers)\n interact.snappers = snappers\n interact.createSnapGrid = interact.snappers.grid\n },\n })\n}\n\nexport default interact\ninteract['default'] = interact // tslint:disable-line no-string-literal\ninteract['init'] = init // tslint:disable-line no-string-literal\n\nif (typeof module === 'object' && !!module) {\n module.exports = interact\n}\n","\nreturn _$index_29;\n\n});\n"]}
\ No newline at end of file
+{"version":3,"sources":["../../scripts/header.js","../../node_modules/browser-pack-flat/_prelude","../core/scope.ts","../core/interactions.ts","../core/Interaction.ts","../utils/arr.ts","../utils/domObjects.ts","../utils/isWindow.ts","../utils/window.ts","../utils/is.ts","../utils/browser.ts","../utils/domUtils.ts","../utils/clone.ts","../utils/pointerExtend.ts","../utils/hypot.ts","../utils/pointerUtils.ts","../utils/events.ts","../utils/extend.ts","../utils/rect.ts","../utils/getOriginXY.ts","../utils/normalizeListeners.ts","../utils/raf.ts","../utils/Signals.ts","../utils/index.ts","../core/defaultOptions.ts","../core/Eventable.ts","../core/Interactable.ts","../core/InteractableSet.ts","../core/BaseEvent.ts","../core/InteractEvent.ts","../core/PointerInfo.ts","../core/interactionFinder.ts","../actions/drag.ts","../actions/drop/DropEvent.ts","../actions/drop/index.ts","../actions/gesture.ts","../actions/resize.ts","../actions/index.ts","../auto-scroll/index.ts","../auto-start/InteractableMethods.ts","../auto-start/base.ts","../auto-start/dragAxis.ts","../auto-start/hold.ts","../auto-start/index.ts","../core/interactablePreventDefault.ts","../dev-tools/index.ts","../modifiers/base.ts","../inertia/index.ts","../modifiers/restrict/pointer.ts","../modifiers/restrict/edges.ts","../modifiers/restrict/size.ts","../modifiers/snap/pointer.ts","../modifiers/snap/size.ts","../modifiers/snap/edges.ts","../modifiers/index.ts","../pointer-events/PointerEvent.ts","../pointer-events/base.ts","../pointer-events/holdRepeat.ts","../pointer-events/interactableTargets.ts","../pointer-events/index.ts","../reflow/index.ts","../interact/interact.ts","../interact/index.ts","../types/index.ts","../utils/snappers/grid.ts","../utils/snappers/index.ts","index.ts","../../node_modules/browser-pack-flat/_postlude"],"names":[],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;ACLA,ADMA;ACLA,ADMA;ACLA;;;;;;;;;;ACFA,IAAA,KAAA,GAAA,uBAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,sBAAA,CAAA,eAAA,CAAA,CAAA;;AACA,IAAA,eAAA,GAAA,sBAAA,CAAA,mBAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,sBAAA,CAAA,cAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,sBAAA,CAAA,iBAAA,CAAA,CAAA;;AACA,IAAA,gBAAA,GAAA,sBAAA,CAAA,oBAAA,CAAA,CAAA;;AACA,IAAA,cAAA,GAAA,sBAAA,CAAA,kBAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,sBAAA,CAAA,qBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGE,GAAA,GAKE,KAAA,CALF,GAAA;IACA,OAAA,GAIE,KAAA,CAJF,OAAA;IACA,GAAA,GAGE,KAAA,CAHF,GAAA;IACA,OAAA,GAEE,KAAA,CAFF,OAAA;IACA,MAAA,GACE,KAAA,CADF,MAAA,CAAA;AAGF,IAAY,UAAZ,CAAA;;;AAAA,CAAA,UAAY,UAAZ,EAAsB,EAAtB,EAAY,UAAU,KAAA,OAAA,CAAA,UAAA,GAAV,UAAU,GAAA,EAAA,CAAtB,CAAA,CAAA;;AASM,SAAU,WAAV,GAAqB;EACzB,OAAO,IAAI,KAAJ,EAAP,CAAA;CACD;;IAUY,KAAA;;;EAiCX,SAAA,KAAA,GAAA;IAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;IAAA,eAAA,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;;IAhCA,IAAA,CAAA,EAAA,GAAA,mBAAA,CAAA,MAAA,CAAyB,IAAI,CAAC,KAAL,CAAW,IAAI,CAAC,MAAL,EAAA,GAAgB,GAA3B,CAAzB,CAAA,CAAA;IACA,IAAA,CAAA,OAAA,GAAU,IAAI,OAAJ,EAAV,CAAA;IACA,IAAA,CAAA,OAAA,GAAU,OAAV,CAAA;IACA,IAAA,CAAA,MAAA,GAAS,MAAT,CAAA;IACA,IAAA,CAAA,KAAA,GAAQ,KAAR,CAAA;IACA,IAAA,CAAA,QAAA,GAAqB,KAAK,CAAC,KAAN,CAAY,eAAA,CAAA,SAAA,CAAZ,CAArB,CAAA;IACA,IAAA,CAAA,SAAA,GAAY,UAAA,CAAA,SAAA,CAAZ,CAAA;IACA,IAAA,CAAA,OAAA,GAAmB;MACjB,KAAK,EAAE,EADU;MAEjB,UAAU,EAAE,EAFK;MAGjB,UAAU,EAAE,EAAA;KAHd,CAAA;IAMA,IAAA,CAAA,aAAA,GAAgB,cAAA,CAAA,SAAA,CAAhB,CAAA;IAEA,IAAA,CAAA,aAAA,GAAgB,IAAI,gBAAA,CAAA,SAAA,CAAJ,CAAoB,IAApB,CAAhB,CAiBA;;IALA,IAAA,CAAA,SAAA,GAAoD,EAApD,CAAA;IAEA,IAAA,CAAA,QAAA,GAAqB,EAArB,CAAA;IACA,IAAA,CAAA,UAAA,GAAuC,EAAvC,CAAA;;IAwCA,IAAA,CAAA,cAAA,GAAiB,UAAC,KAAD,EAAA;MAAA,OAA8B,KAAI,CAAC,cAAL,CAAoB,KAAK,CAAC,MAA1B,CAA9B,CAAA;KAAjB,CAAA;;IArCE,IAAM,KAAK,GAAG,IAAd,CAAA;;IAEG,IAAA,CAAmD,YAAnD;;IAAA,UAAA,iBAAA,EAAA;MAAA,SAAA,CAAA,YAAA,EAAA,iBAAA,CAAA,CAAA;;MAAA,SAAA,YAAA,GAAA;QAAA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;;QAAA,OAAA,0BAAA,CAAA,IAAA,EAAA,eAAA,CAAA,YAAA,CAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA,CAAA;OAAA;;MAAA,YAAA,CAAA,YAAA,EAAA,CAAA;QAAA,GAAA,EAAA,KAAA;QAAA,KAAA,EAAA,SAAA,GAAA,CAGI,OAHJ,EAGgB;UACf,IAAA,CAAA,eAAA,CAAA,YAAA,CAAA,SAAA,CAAA,EAAA,KAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAU,OAAV,CAAA,CAAA;;UAEA,KAAK,CAAC,aAAN,CAAoB,OAApB,CAA4B,IAA5B,CAAiC,KAAjC,EAAwC;YACtC,OAAO,EAAP,OADsC;YAEtC,YAAY,EAAE,IAAA;WAFhB,CAAA,CAAA;UAKA,OAAO,IAAP,CAAA;SACD;OAZA,EAAA;QAAA,GAAA,EAAA,OAAA;QAAA,KAAA,EAAA,SAAA,KAAA,GAcI;UACH,IAAA,CAAA,eAAA,CAAA,YAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;;UACA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,YAAN,CAAmB,IAAnB,CAAwB,MAAxB,GAAiC,CAA9C,EAAiD,CAAC,IAAI,CAAtD,EAAyD,CAAC,EAA1D,EAA8D;YAC5D,IAAM,WAAW,GAAG,KAAK,CAAC,YAAN,CAAmB,IAAnB,CAAwB,CAAxB,CAApB,CAAA;;YAEA,IAAI,WAAW,CAAC,YAAZ,KAA6B,IAAjC,EAAuC;cACrC,WAAW,CAAC,IAAZ,EAAA,CAAA;cACA,KAAK,CAAC,YAAN,CAAmB,OAAnB,CAA2B,IAA3B,CAAgC,SAAhC,EAA2C;gBAAE,WAAW,EAAX,WAAA;eAA7C,CAAA,CAAA;cACA,WAAW,CAAC,OAAZ,EAAA,CAAA;;cAEA,IAAI,KAAK,CAAC,YAAN,CAAmB,IAAnB,CAAwB,MAAxB,GAAiC,CAArC,EAAwC;gBACtC,KAAK,CAAC,YAAN,CAAmB,IAAnB,CAAwB,MAAxB,CAA+B,CAA/B,EAAkC,CAAlC,CAAA,CAAA;eACD;aACF;WACF;;UAED,KAAK,CAAC,aAAN,CAAoB,OAApB,CAA4B,IAA5B,CAAiC,OAAjC,EAA0C;YAAE,YAAY,EAAE,IAAA;WAA1D,CAAA,CAAA;SACD;OA/BA,EAAA;QAAA,GAAA,EAAA,WAAA;QAAA,GAAA,EAAA,SAAA,GAAA,GACY;UAAM,OAAO,KAAK,CAAC,QAAb,CAAA;SAAuB;OADzC,CAAA,CAAA,CAAA;;MAAA,OAAA,YAAA,CAAA;KAAA,CAA6F,aAAA,CAAA,SAAA,CAA7F,CAAA,CAAA;GAiCJ;;;;yBAIK,MAAA,EAAc;MAClB,OAAO,SAAS,CAAC,IAAD,EAAO,MAAP,CAAhB,CAAA;KACD;;;sCAEkB,MAAA,EAAc;MAC/B,OAAO,IAAA,CAAK,UAAL,CAAgB,MAAM,CAAC,EAAvB,CAAA,IAA8B,IAAA,CAAK,QAAL,CAAc,OAAd,CAAsB,MAAtB,CAAA,KAAkC,CAAC,CAAxE,CAAA;KACD;;;8BAEU,MAAA,EAAgB,OAAA,EAAgC;MACzD,IAAI,IAAA,CAAK,iBAAL,CAAuB,MAAvB,CAAJ,EAAoC;QAClC,OAAO,IAAP,CAAA;OACD;;MAED,IAAI,MAAM,CAAC,EAAX,EAAe;QAAE,IAAA,CAAK,UAAL,CAAgB,MAAM,CAAC,EAAvB,CAAA,GAA6B,MAA7B,CAAA;OAAqC;;MAEtD,MAAM,CAAC,OAAP,CAAe,IAAf,EAAqB,OAArB,CAAA,CAAA;;MACA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,MAAnB,CAAA,CAAA;;MAEA,OAAO,IAAP,CAAA;KACD;;;gCAEY,GAAA,EAAe,OAAA,EAAa;;MAEvC,IAAI,IAAA,CAAK,WAAL,CAAiB,GAAjB,CAAA,KAA0B,CAAC,CAA/B,EAAkC;QAAE,OAAO,KAAP,CAAA;OAAc;;MAElD,IAAM,MAAM,GAAG,GAAG,CAAC,SAAJ,CAAc,GAAd,CAAf,CAAA;MAEA,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,OAAjB,CAAH,GAA+B,EAAhD,CAAA;MAEA,IAAA,CAAK,SAAL,CAAe,IAAf,CAAoB;QAAE,GAAG,EAAH,GAAF;QAAO,OAAO,EAAP,OAAA;OAA3B,CAAA,CAAA;MACA,MAAM,CAAC,SAAP,CAAiB,IAAjB,CAAsB,GAAtB,CAAA,CATuC;;;MAavC,IAAI,GAAG,KAAK,IAAA,CAAK,QAAjB,EAA2B;QACzB,MAAM,CAAC,GAAP,CAAW,MAAX,EAAmB,QAAnB,EAA6B,IAAA,CAAK,cAAlC,CAAA,CAAA;OACD;;MAED,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,cAAlB,EAAkC;QAAE,GAAG,EAAH,GAAF;QAAO,MAAM,EAAN,MAAP;QAAe,KAAK,EAAE,IAAtB;QAA4B,OAAO,EAAP,OAAA;OAA9D,CAAA,CAAA;KACD;;;mCAEe,GAAA,EAAa;MAC3B,IAAM,KAAK,GAAG,IAAA,CAAK,WAAL,CAAiB,GAAjB,CAAd,CAAA;MAEA,IAAM,MAAM,GAAG,GAAG,CAAC,SAAJ,CAAc,GAAd,CAAf,CAAA;MACA,IAAM,OAAO,GAAG,IAAA,CAAK,SAAL,CAAe,KAAf,CAAA,CAAsB,OAAtC,CAAA;MAEA,MAAM,CAAC,MAAP,CAAc,MAAd,EAAsB,QAAtB,EAAgC,IAAA,CAAK,cAArC,CAAA,CAAA;MAEA,IAAA,CAAK,SAAL,CAAe,MAAf,CAAsB,KAAtB,EAA6B,CAA7B,CAAA,CAAA;MACA,MAAM,CAAC,SAAP,CAAiB,MAAjB,CAAwB,KAAxB,EAA+B,CAA/B,CAAA,CAAA;MAEA,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,iBAAlB,EAAqC;QAAE,GAAG,EAAH,GAAF;QAAO,MAAM,EAAN,MAAP;QAAe,KAAK,EAAE,IAAtB;QAA4B,OAAO,EAAP,OAAA;OAAjE,CAAA,CAAA;KACD;;;gCAEY,GAAA,EAAa;MACxB,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,IAAA,CAAK,SAAL,CAAe,MAAnC,EAA2C,CAAC,EAA5C,EAAgD;QAC9C,IAAI,IAAA,CAAK,SAAL,CAAe,CAAf,CAAA,CAAkB,GAAlB,KAA0B,GAA9B,EAAmC;UACjC,OAAO,CAAP,CAAA;SACD;OACF;;MAED,OAAO,CAAC,CAAR,CAAA;KACD;;;kCAEc,GAAA,EAAa;MAC1B,IAAM,QAAQ,GAAG,IAAA,CAAK,WAAL,CAAiB,GAAjB,CAAjB,CAAA;MAEA,OAAO,QAAQ,KAAK,CAAC,CAAd,GAAkB,IAAlB,GAAyB,IAAA,CAAK,SAAL,CAAe,QAAf,CAAA,CAAyB,OAAzD,CAAA;KACD;;;0BAEE;MACD,OAAO,CAAE,IAAA,CAAK,MAAL,CAAoB,IAApB,IAA2C,IAA7C,EAAmD,GAAnD,EAAP,CAAA;KACD;;;;;;;;AAGG,SAAU,SAAV,CAAqB,KAArB,EAAmC,MAAnC,EAAiD;EACrD,GAAG,CAAC,IAAJ,CAAS,MAAT,CAAA,CAAA;;EACA,WAAA,CAAA,SAAA,CAAA,CAAW,IAAX,CAAgB,MAAhB,CAAA,CAAA;;EACA,OAAO,CAAC,IAAR,CAAa,MAAb,CAAA,CAAA;EACA,GAAG,CAAC,IAAJ,CAAS,MAAT,CAAA,CAAA;EACA,MAAM,CAAC,IAAP,CAAY,MAAZ,CAAA,CAAA;EAEA,KAAK,CAAC,SAAN,CAAgB,aAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EACA,KAAK,CAAC,QAAN,GAAiB,MAAM,CAAC,QAAxB,CAAA;EACA,KAAK,CAAC,MAAN,GAAe,MAAf,CAAA;EAEA,OAAO,KAAP,CAAA;CACD;;;;;;;;;;;ACvMD,IAAA,QAAA,GAAA,sBAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,sBAAA,CAAA,eAAA,CAAA,CAAA;;AACA,0EAAA;;AACA,IAAA,OAAA,GAAA,sBAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,sBAAA,CAAA,iBAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,sBAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,sBAAA,CAAA,oBAAA,CAAA,CAAA;;AACA,IAAA,kBAAA,GAAA,sBAAA,CAAA,sBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,WAAW,GAAG,CAClB,aADkB,EACH,aADG,EACY,WADZ,EAElB,eAFkB,EAED,eAFC,EAEgB,YAFhB,CAApB,CAAA;;AAKA,SAAS,OAAT,CAAkB,KAAlB,EAA8B;EAC5B,IAAM,OAAO,GAAG,IAAI,QAAA,CAAA,SAAA,CAAJ,EAAhB,CAAA;EAEA,IAAM,SAAS,GAAG,EAAlB,CAAA;;EAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,WAArB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAkC;IAA7B,IAAM,MAAM,GAAI,WAAJ,CAAA,EAAA,CAAZ,CAAA;IACH,SAAS,CAAC,MAAD,CAAT,GAAoB,gBAAgB,CAAC,MAAD,EAAS,KAAT,CAApC,CAAA;GACD;;EAED,IAAM,WAAW,GAAG,QAAA,CAAA,SAAA,CAAA,CAAQ,WAA5B,CAAA;EACA,IAAI,SAAJ,CAAA;;EAEA,IAAI,WAAA,CAAA,SAAA,CAAA,CAAW,YAAf,EAA6B;IAC3B,SAAS,GAAG,CACV;MAAE,IAAI,EAAE,WAAW,CAAC,IAApB;MAA4B,QAAQ,EAAE,2BAAA;KAD5B,EAEV;MAAE,IAAI,EAAE,WAAW,CAAC,IAApB;MAA4B,QAAQ,EAAE,SAAS,CAAC,WAAA;KAFtC,EAGV;MAAE,IAAI,EAAE,WAAW,CAAC,IAApB;MAA4B,QAAQ,EAAE,SAAS,CAAC,WAAA;KAHtC,EAIV;MAAE,IAAI,EAAE,WAAW,CAAC,EAApB;MAA4B,QAAQ,EAAE,SAAS,CAAC,SAAA;KAJtC,EAKV;MAAE,IAAI,EAAE,WAAW,CAAC,MAApB;MAA4B,QAAQ,EAAE,SAAS,CAAC,SAAA;KALtC,CAAZ,CAAA;GADF,MASK;IACH,SAAS,GAAG,CACV;MAAE,IAAI,EAAE,WAAR;MAAqB,QAAQ,EAAE,SAAS,CAAC,WAAA;KAD/B,EAEV;MAAE,IAAI,EAAE,WAAR;MAAqB,QAAQ,EAAE,SAAS,CAAC,WAAA;KAF/B,EAGV;MAAE,IAAI,EAAE,SAAR;MAAmB,QAAQ,EAAE,SAAS,CAAC,SAAA;KAH7B,EAKV;MAAE,IAAI,EAAE,YAAR;MAAsB,QAAQ,EAAE,2BAAA;KALtB,EAMV;MAAE,IAAI,EAAE,YAAR;MAAsB,QAAQ,EAAE,SAAS,CAAC,WAAA;KANhC,EAOV;MAAE,IAAI,EAAE,WAAR;MAAqB,QAAQ,EAAE,SAAS,CAAC,WAAA;KAP/B,EAQV;MAAE,IAAI,EAAE,UAAR;MAAoB,QAAQ,EAAE,SAAS,CAAC,SAAA;KAR9B,EASV;MAAE,IAAI,EAAE,aAAR;MAAuB,QAAQ,EAAE,SAAS,CAAC,SAAA;KATjC,CAAZ,CAAA;GAWD;;EAED,SAAS,CAAC,IAAV,CAAe;IACb,IAAI,EAAE,MADO;IAEb,QAFa,EAAA,SAAA,QAAA,CAEH,KAFG,EAEE;MACb,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;QAAA,IAAA,IAAA,CAAA;;QAAA,IAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;QAAA,IAAxC,WAAwC,GAAA,IAAA,CAAA;QACjD,WAAW,CAAC,YAAZ,CAAyB,KAAzB,CAAA,CAAA;OACD;KACF;GANH,CAAA,CAAA;EASA,KAAK,CAAC,OAAN,CAAc,EAAd,CAAiB,cAAjB,EAAiC,WAAjC,CAAA,CAAA;EACA,KAAK,CAAC,OAAN,CAAc,EAAd,CAAiB,iBAAjB,EAAoC,WAApC,CAAA,CA7C4B;;EAgD5B,KAAK,CAAC,aAAN,GAAsB,CAAtB,CAAA;;EAEA,KAAK,CAAC,WAAN;;EAAA,UAAA,gBAAA,EAAA;IAAA,SAAA,CAAA,WAAA,EAAA,gBAAA,CAAA,CAAA;;IAAA,SAAA,WAAA,GAAA;MAAA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;;MAAA,OAAA,0BAAA,CAAA,IAAA,EAAA,eAAA,CAAA,WAAA,CAAA,CAAA,KAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA,CAAA;KAAA;;IAAA,YAAA,CAAA,WAAA,EAAA,CAAA;MAAA,GAAA,EAAA,MAAA;MAAA,KAAA,EAAA,SAAA,IAAA,GASM;QAAM,OAAO,KAAK,CAAC,GAAN,EAAP,CAAA;OAAoB;KAThC,EAAA;MAAA,GAAA,EAAA,sBAAA;MAAA,GAAA,EAAA,SAAA,GAAA,GAC0B;QACtB,OAAO,KAAK,CAAC,YAAN,CAAmB,oBAA1B,CAAA;OAFJ;MAAA,GAAA,EAAA,SAAA,GAAA,CAK4B,KAL5B,EAKiC;QAC7B,KAAK,CAAC,YAAN,CAAmB,oBAAnB,GAA0C,KAA1C,CAAA;OACD;KAPH,CAAA,CAAA,CAAA;;IAAA,OAAA,WAAA,CAAA;GAAA,CAA8C,YAAA,CAAA,SAAA,CAA9C,CAAA,CAAA;;EAYA,KAAK,CAAC,YAAN,GAAqB;IACnB,OAAO,EAAP,OADmB;;IAGnB,IAAI,EAAE,EAHa;IAAA,KAAA,EAAA,SAAA,IAAA,CAId,OAJc,EAIsC;MACvD,OAAO,CAAC,OAAR,GAAkB,OAAlB,CAAA;MAEA,IAAM,WAAW,GAAG,IAAI,KAAK,CAAC,WAAV,CAAsB,OAAtB,CAApB,CAAA;MAEA,KAAK,CAAC,YAAN,CAAmB,IAAnB,CAAwB,IAAxB,CAA6B,WAA7B,CAAA,CAAA;MACA,OAAO,WAAP,CAAA;KAViB;IAYnB,SAAS,EAAT,SAZmB;IAanB,SAAS,EAAT,SAbmB;IAcnB,oBAAoB,EAAE,CAAA;GAdxB,CAAA;;EAiBA,SAAS,2BAAT,GAAoC;;IAElC,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;;MACjD,IAAI,CAAC,WAAW,CAAC,aAAb,IACF,WAAW,CAAC,WAAZ,KAA4B,OAD1B,IAEF,WAAW,CAAC,YAFd,EAE4B;QAC1B,SAAA;OAJ+C;;;MAAA,IAAA,KAAA,GAAA,SAAA,KAAA,GAAA;QAAA,KAAA,GAQ3B,WAAW,CAAC,QARe,CAAA,GAAA,CAAA,CAAA;QAAA,IAQtC,OARsC,GAAA,KAAA,CAAA;;QAS/C,IAAI,CAAC,KAAK,CAAC,SAAN,CAAgB,IAAhB,CAAqB,UAAA,KAAA,EAAA;UAAA,IAAG,GAAH,GAAA,KAAA,CAAG,GAAH,CAAA;UAAA,OAAa,CAAA,CAAA,EAAA,aAAA,CAAA,YAAA,EAAa,GAAb,EAAkB,OAAO,CAAC,UAA1B,CAAb,CAAA;SAArB,CAAL,EAA+E;;UAE7E,WAAW,CAAC,aAAZ,CAA0B,OAAO,CAAC,OAAlC,EAA2C,OAAO,CAAC,KAAnD,CAAA,CAAA;SACD;OAZ8C,CAAA;;MAQjD,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAsB,WAAW,CAAC,QAAlC,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4C;QAAA,IAAA,KAAA,CAAA;;QAAA,KAAA,EAAA,CAAA;OAK3C;KACF;GACF;CACF;;AAED,SAAS,gBAAT,CAA2B,MAA3B,EAAmC,KAAnC,EAAwC;EACtC,OAAO,UAAU,KAAV,EAAe;IACpB,IAAM,YAAY,GAAG,KAAK,CAAC,YAAN,CAAmB,IAAxC,CAAA;;IAEA,IAAM,WAAW,GAAG,aAAA,CAAA,SAAA,CAAA,CAAa,cAAb,CAA4B,KAA5B,CAApB,CAAA;;IAHoB,IAAA,qBAAA,GAIkB,aAAA,CAAA,SAAA,CAAA,CAAa,eAAb,CAA6B,KAA7B,CAJlB;QAAA,sBAAA,GAAA,cAAA,CAAA,qBAAA,EAAA,CAAA,CAAA;QAIb,WAJa,GAAA,sBAAA,CAAA,CAAA,CAAA;QAIA,cAJA,GAAA,sBAAA,CAAA,CAAA,CAAA,CAAA;;IAKpB,IAAM,OAAO,GAAG,EAAhB,CALoB;;IAOpB,IAAI,QAAA,CAAS,IAAT,CAAc,KAAK,CAAC,IAApB,CAAJ,EAA+B;MAC7B,KAAK,CAAC,aAAN,GAAsB,KAAK,CAAC,GAAN,EAAtB,CAAA;;MAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA2B,KAAK,CAAC,cAAjC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAiD;QAAA,IAAA,KAAA,CAAA;;QAAA,KAAA,GAAtB,KAAK,CAAC,cAAgB,CAAA,GAAA,CAAA,CAAA;QAAA,IAAtC,YAAsC,GAAA,KAAA,CAAA;QAC/C,IAAM,OAAO,GAAG,YAAhB,CAAA;;QACA,IAAM,SAAS,GAAG,aAAA,CAAA,SAAA,CAAA,CAAa,YAAb,CAA0B,OAA1B,CAAlB,CAAA;;QACA,IAAM,aAAa,GAAkB;UACnC,OAAO,EAAP,OADmC;UAEnC,SAAS,EAAT,SAFmC;UAGnC,WAAW,EAAX,WAHmC;UAInC,SAAS,EAAE,KAAK,CAAC,IAJkB;UAKnC,WAAW,EAAX,WALmC;UAMnC,cAAc,EAAd,cANmC;UAOnC,KAAK,EAAL,KAAA;SAPF,CAAA;QASA,IAAM,WAAW,GAAG,cAAc,CAAC,aAAD,CAAlC,CAAA;QAEA,OAAO,CAAC,IAAR,CAAa,CACX,aAAa,CAAC,OADH,EAEX,aAAa,CAAC,WAFH,EAGX,aAAa,CAAC,cAHH,EAIX,WAJW,CAAb,CAAA,CAAA;OAMD;KAvBH,MAyBK;MACH,IAAI,cAAc,GAAG,KAArB,CAAA;;MAEA,IAAI,CAAC,QAAA,CAAA,SAAA,CAAA,CAAQ,oBAAT,IAAiC,OAAA,CAAQ,IAAR,CAAa,KAAK,CAAC,IAAnB,CAArC,EAA+D;;QAE7D,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,YAAY,CAAC,MAAjB,IAA2B,CAAC,cAA5C,EAA4D,CAAC,EAA7D,EAAiE;UAC/D,cAAc,GAAG,YAAY,CAAC,CAAD,CAAZ,CAAgB,WAAhB,KAAgC,OAAhC,IAA2C,YAAY,CAAC,CAAD,CAAZ,CAAgB,aAA5E,CAAA;SAH2D;;;;QAQ7D,cAAc,GAAG,cAAc,IAC5B,KAAK,CAAC,GAAN,EAAA,GAAc,KAAK,CAAC,aAApB,GAAoC,GADtB;QAGf,KAAK,CAAC,SAAN,KAAoB,CAHtB,CAAA;OAID;;MAED,IAAI,CAAC,cAAL,EAAqB;QACnB,IAAM,cAAa,GAAG;UACpB,OAAO,EAAE,KADW;UAEpB,SAAS,EAAE,aAAA,CAAA,SAAA,CAAA,CAAa,YAAb,CAA0B,KAA1B,CAFS;UAGpB,WAAW,EAAX,WAHoB;UAIpB,SAAS,EAAE,KAAK,CAAC,IAJG;UAKpB,cAAc,EAAd,cALoB;UAMpB,WAAW,EAAX,WANoB;UAOpB,KAAK,EAAL,KAAA;SAPF,CAAA;;QAUA,IAAM,YAAW,GAAG,cAAc,CAAC,cAAD,CAAlC,CAAA;;QAEA,OAAO,CAAC,IAAR,CAAa,CACX,cAAa,CAAC,OADH,EAEX,cAAa,CAAC,WAFH,EAGX,cAAa,CAAC,cAHH,EAIX,YAJW,CAAb,CAAA,CAAA;OAMD;KApEiB;;;IAwEpB,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAkE,OAAlE,CAAA,MAAA,EAAA,GAAA,EAAA,EAA2E;MAAA,IAAA,WAAA,GAAA,cAAA,CAAT,OAAS,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA;UAA/D,QAA+D,GAAA,WAAA,CAAA,CAAA,CAAA;UAAtD,YAAsD,GAAA,WAAA,CAAA,CAAA,CAAA;UAAzC,eAAyC,GAAA,WAAA,CAAA,CAAA,CAAA;UAAzB,aAAyB,GAAA,WAAA,CAAA,CAAA,CAAA,CAAA;;MACzE,aAAW,CAAC,MAAD,CAAX,CAAoB,QAApB,EAA6B,KAA7B,EAAoC,YAApC,EAAiD,eAAjD,CAAA,CAAA;KACD;GA1EH,CAAA;CA4ED;;AAED,SAAS,cAAT,CAAyB,aAAzB,EAAqD;EAAA,IAC3C,WAD2C,GACpB,aADoB,CAC3C,WAD2C;MAC9B,KAD8B,GACpB,aADoB,CAC9B,KAD8B,CAAA;;EAGnD,IAAM,gBAAgB,GAAG,kBAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,aAAd,CAAzB,CAAA;;EACA,IAAM,SAAS,GAAG;IAAE,WAAW,EAAE,gBAAf;IAAiC,aAAa,EAAb,aAAA;GAAnD,CAAA;EAEA,KAAK,CAAC,YAAN,CAAmB,OAAnB,CAA2B,IAA3B,CAAgC,MAAhC,EAAwC,SAAxC,CAAA,CAAA;EAEA,OAAO,SAAS,CAAC,WAAV,IAAyB,KAAK,CAAC,YAAN,CAAA,KAAA,CAAA,CAAuB;IAAE,WAAW,EAAX,WAAA;GAAzB,CAAhC,CAAA;CACD;;AAED,SAAS,WAAT,CAAA,KAAA,EAA+C,UAA/C,EAAyD;EAAA,IAAjC,GAAiC,GAAA,KAAA,CAAjC,GAAiC;MAA5B,KAA4B,GAAA,KAAA,CAA5B,KAA4B;MAArB,OAAqB,GAAA,KAAA,CAArB,OAAqB,CAAA;EAAA,IAC/C,SAD+C,GACjC,KAAK,CAAC,YAD2B,CAC/C,SAD+C,CAAA;EAEvD,IAAM,WAAW,GAAG,UAAU,CAAC,OAAX,CAAmB,KAAnB,CAAA,KAA8B,CAA9B,GAChB,OAAA,CAAA,SAAA,CAAA,CAAO,GADS,GACH,OAAA,CAAA,SAAA,CAAA,CAAO,MADxB,CAAA;;EAGA,IAAI,KAAK,CAAC,OAAN,CAAc,KAAd,IAAuB,CAAC,OAAO,CAAC,MAApC,EAA4C;IAC1C,OAAO,CAAC,MAAR,GAAiB;MAAE,OAAO,EAAE,KAAA;KAA5B,CAAA;GANqD;;;EAUvD,KAAK,IAAM,SAAX,IAAwB,OAAA,CAAA,SAAA,CAAA,CAAO,eAA/B,EAAgD;IAC9C,WAAW,CAAC,GAAD,EAAM,SAAN,EAAiB,OAAA,CAAA,SAAA,CAAA,CAAO,gBAAxB,CAAX,CAAA;IACA,WAAW,CAAC,GAAD,EAAM,SAAN,EAAiB,OAAA,CAAA,SAAA,CAAA,CAAO,kBAAxB,EAA4C,IAA5C,CAAX,CAAA;GACD;;EAED,IAAM,YAAY,GAAG,OAAO,IAAI,OAAO,CAAC,MAAxC,CAAA;;EAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAiC,SAAjC,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4C;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAX,SAAW,CAAA,GAAA,CAAA,CAAA;IAAA,IAAA,KAAA,GAAA,KAAA;QAA/B,IAA+B,GAAA,KAAA,CAA/B,IAA+B;QAAzB,QAAyB,GAAA,KAAA,CAAzB,QAAyB,CAAA;IAC1C,WAAW,CAAC,GAAD,EAAM,IAAN,EAAY,QAAZ,EAAsB,YAAtB,CAAX,CAAA;GACD;CACF;;eAEc;EACb,EAAE,EAAE,mBADS;EAEb,OAAO,EAAP,OAFa;EAGb,WAAW,EAAX,WAHa;EAIb,gBAAgB,EAAhB,gBAJa;EAKb,WAAW,EAAX,WAAA;;;;;;;;;;;;;;;;;;;ACtPF,IAAA,KAAA,GAAA,uBAAA,CAAA,UAAA,CAAA,CAAA;;AAEA,IAAA,cAAA,GAAA,uBAAA,CAAA,kBAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,sBAAA,CAAA,gBAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,cAAA,CAAA;;;;;;;;;;;;AAcA,IAAY,YAAZ,CAAA;;;;AAAA,CAAA,UAAY,YAAZ,EAAwB;EACtB,YAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA;EACA,YAAA,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA;EACA,YAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA;EACA,YAAA,CAAA,eAAA,CAAA,GAAA,EAAA,CAAA;EACA,YAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA;EACA,YAAA,CAAA,QAAA,CAAA,GAAA,EAAA,CAAA;CANF,EAAY,YAAY,KAAA,OAAA,CAAA,YAAA,GAAZ,YAAY,GAAA,EAAA,CAAxB,CAAA,CAAA;;AASA,IAAY,aAAZ,CAAA;;;;AAAA,CAAA,UAAY,aAAZ,EAAyB;EACvB,aAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA;EACA,aAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA;EACA,aAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA;EACA,aAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA;EACA,aAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA;CALF,EAAY,aAAa,KAAA,OAAA,CAAA,aAAA,GAAb,aAAa,GAAA,EAAA,CAAzB,CAAA,CAAA;;IAaa;;;;EA+EX,SAAA,WAAA,CAAA,IAAA,EAAuF;IAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;IAAA,IAAxE,WAAwE,GAAA,IAAA,CAAxE,WAAwE;QAA3D,OAA2D,GAAA,IAAA,CAA3D,OAA2D,CAAA;;IAAA,eAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;;;IA7EvF,IAAA,CAAA,YAAA,GAA6B,IAA7B,CA6EuF;;IA1EvF,IAAA,CAAA,OAAA,GAAmB,IAAnB,CA0EuF;;IAjEvF,IAAA,CAAA,QAAA,GAA2B;MACzB,IAAI,EAAG,IADkB;MAEzB,IAAI,EAAG,IAFkB;MAGzB,KAAK,EAAE,IAAA;KAHT,CAiEuF;;IAxDvF,IAAA,CAAA,QAAA,GAA0B,EAA1B,CAwDuF;;IArDvF,IAAA,CAAA,SAAA,GAAuC,IAAvC,CAAA;IAEA,IAAA,CAAA,WAAA,GAAoC,EAApC,CAAA;IAEA,IAAA,CAAA,cAAA,GAII;MACF,OAAO,EAAE,IADP;MAEF,KAAK,EAAE,IAFL;MAGF,WAAW,EAAE,IAAA;KAPf,CAiDuF;;IAtCvF,IAAA,CAAA,SAAA,GAA8B,IAA9B,CAAA;IAEA,IAAA,CAAA,aAAA,GAAgB,KAAhB,CAAA;IACA,IAAA,CAAA,eAAA,GAAkB,KAAlB,CAAA;IACA,IAAA,CAAA,YAAA,GAAe,KAAf,CAAA;IACA,IAAA,CAAA,OAAA,GAAU,KAAV,CAAA;IACA,IAAA,CAAA,QAAA,GAAW,IAAX,CAAA;IACA,IAAA,CAAA,MAAA,GAA4B,IAA5B,CAAA;IAEA,IAAA,CAAA,UAAA,GAAa,IAAb,CAAA;;;;;IASA,IAAA,CAAA,MAAA,GAAS,KAAK,CAAC,QAAN,CACP,UAA6B,SAA7B,EAA2C;MACzC,IAAA,CAAK,IAAL,CAAU,SAAV,CAAA,CAAA;KAFK,EAIP,wEAJO,CAAT,CAAA;IAMA,IAAA,CAAA,MAAA,GAAS;;MAEP,KAAK,EAAE,KAAK,CAAC,OAAN,CAAc,SAAd,EAFA;;MAIP,IAAI,EAAE,KAAK,CAAC,OAAN,CAAc,SAAd,EAJC;;MAMP,GAAG,EAAE,KAAK,CAAC,OAAN,CAAc,SAAd,EANE;;MAQP,KAAK,EAAE,KAAK,CAAC,OAAN,CAAc,SAAd,EARA;;MAUP,QAAQ,EAAE,KAAK,CAAC,OAAN,CAAc,SAAd,EAAA;KAVZ,CAAA;IAeE,IAAA,CAAK,QAAL,GAAgB,OAAhB,CAAA;IACA,IAAA,CAAK,WAAL,GAAmB,WAAnB,CAAA;IAEA,IAAM,IAAI,GAAG,IAAb,CAAA;IAEA,IAAA,CAAK,MAAL,GAAc,EAAd,CAAA;;IANqF,IAAA,KAAA,GAAA,SAAA,KAAA,CAQ1E,GAR0E,EAAA;MASnF,MAAM,CAAC,cAAP,CAAsB,KAAI,CAAC,MAA3B,EAAmC,GAAnC,EAAwC;QACtC,GADsC,EAAA,SAAA,GAAA,GACnC;UAAM,OAAO,IAAI,CAAC,GAAD,CAAX,CAAA;SAAkB;OAD7B,CAAA,CAAA;KATmF,CAAA;;IAQrF,KAAK,IAAM,GAAX,IAAkB,YAAlB,EAAgC;MAAA,KAAA,CAArB,GAAqB,CAAA,CAAA;KAI/B;;IAZoF,IAAA,MAAA,GAAA,SAAA,MAAA,CAc1E,GAd0E,EAAA;MAenF,MAAM,CAAC,cAAP,CAAsB,KAAI,CAAC,MAA3B,EAAmC,GAAnC,EAAwC;QACtC,KAAK,EAAE,SAAA,KAAA,GAAA;UAAA,OAAa,IAAI,CAAC,GAAD,CAAJ,CAAA,KAAA,CAAA,IAAI,EAAA,SAAA,CAAjB,CAAA;SAAA;OADT,CAAA,CAAA;KAfmF,CAAA;;IAcrF,KAAK,IAAM,GAAX,IAAkB,aAAlB,EAAiC;MAAA,MAAA,CAAtB,GAAsB,CAAA,CAAA;KAIhC;;IAED,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,KAAnB,EAA0B;MAAE,WAAW,EAAE,IAAA;KAAzC,CAAA,CAAA;GACD;;;;gCAEY,SAA+B,OAAkC,aAAiB;MAC7F,IAAM,YAAY,GAAG,IAAA,CAAK,aAAL,CAAmB,OAAnB,EAA4B,KAA5B,EAAmC,WAAnC,EAAgD,IAAhD,CAArB,CAAA;;MAEA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,MAAnB,EAA2B;QACzB,OAAO,EAAP,OADyB;QAEzB,KAAK,EAAL,KAFyB;QAGzB,WAAW,EAAX,WAHyB;QAIzB,YAAY,EAAZ,YAJyB;QAKzB,WAAW,EAAE,IAAA;OALf,CAAA,CAAA;KAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAiCM,QAAqB,cAA4B,SAAgB;MACtE,IAAI,IAAA,CAAK,WAAL,EAAA,IACA,CAAC,IAAA,CAAK,aADN,IAEA,IAAA,CAAK,QAAL,CAAc,MAAd,IAAwB,MAAM,CAAC,IAAP,KAAgB,MAAA,CAAA,UAAA,CAAW,OAA3B,GAAqC,CAArC,GAAyC,CAAjE,CAFA,IAGA,CAAC,YAAY,CAAC,OAAb,CAAqB,MAAM,CAAC,IAA5B,CAAA,CAAkC,OAHvC,EAGgD;QAC9C,OAAO,KAAP,CAAA;OACD;;MAED,KAAK,CAAC,UAAN,CAAiB,IAAA,CAAK,QAAtB,EAAgC,MAAhC,CAAA,CAAA;MAEA,IAAA,CAAK,YAAL,GAAoB,YAApB,CAAA;MACA,IAAA,CAAK,OAAL,GAAoB,OAApB,CAAA;MACA,IAAA,CAAK,IAAL,GAAoB,YAAY,CAAC,OAAb,CAAqB,OAArB,CAApB,CAAA;MACA,IAAA,CAAK,KAAL,GAAoB,IAAA,CAAK,QAAL,CAAc,KAAlC,CAAA;MACA,IAAA,CAAK,QAAL,GAAoB,KAApB,CAAA;MACA,IAAA,CAAK,YAAL,GAAoB,IAAA,CAAK,QAAL,CAAc;QAChC,WAAW,EAAE,IADmB;QAEhC,KAAK,EAAE,IAAA,CAAK,SAFoB;QAGhC,KAAK,EAAE,cAAA,CAAA,UAAA,CAAW,KAAA;OAHA,CAAA,IAId,CAAC,IAAA,CAAK,QAJZ,CAAA;MAMA,OAAO,IAAA,CAAK,YAAZ,CAAA;KACD;;;gCAEY,SAA+B,OAAkC,aAAiB;MAC7F,IAAI,CAAC,IAAA,CAAK,UAAN,IAAoB,EAAE,IAAA,CAAK,SAAL,IAAkB,IAAA,CAAK,SAAL,CAAe,YAAnC,CAAxB,EAA0E;QACxE,IAAA,CAAK,aAAL,CAAmB,OAAnB,EAA4B,KAA5B,EAAmC,WAAnC,EAAgD,KAAhD,CAAA,CAAA;QACA,KAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,IAAA,CAAK,MAAL,CAAY,GAApC,EAAyC,IAAA,CAAK,QAAL,CAAc,GAAd,CAAkB,UAAC,CAAD,EAAA;UAAA,OAAO,CAAC,CAAC,OAAT,CAAA;SAAlB,CAAzC,EAA8E,IAAA,CAAK,IAAL,EAA9E,CAAA,CAAA;OACD;;MAED,IAAM,aAAa,GAAI,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,IAAhB,CAAqB,CAArB,KAA2B,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,IAAjB,CAAsB,CAAjD,IACA,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,IAAhB,CAAqB,CAArB,KAA2B,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,IAAjB,CAAsB,CADjD,IAEA,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,MAAhB,CAAuB,CAAvB,KAA6B,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,MAAjB,CAAwB,CAFrD,IAGA,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,MAAhB,CAAuB,CAAvB,KAA6B,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,MAAjB,CAAwB,CAH5E,CAAA;MAKA,IAAI,EAAJ,CAAA;MACA,IAAI,EAAJ,CAZ6F;;MAe7F,IAAI,IAAA,CAAK,aAAL,IAAsB,CAAC,IAAA,CAAK,eAAhC,EAAiD;QAC/C,EAAE,GAAG,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,MAAhB,CAAuB,CAAvB,GAA2B,IAAA,CAAK,MAAL,CAAY,KAAZ,CAAkB,MAAlB,CAAyB,CAAzD,CAAA;QACA,EAAE,GAAG,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,MAAhB,CAAuB,CAAvB,GAA2B,IAAA,CAAK,MAAL,CAAY,KAAZ,CAAkB,MAAlB,CAAyB,CAAzD,CAAA;QAEA,IAAA,CAAK,eAAL,GAAuB,KAAK,CAAC,KAAN,CAAY,EAAZ,EAAgB,EAAhB,CAAA,GAAsB,IAAA,CAAK,oBAAlD,CAAA;OACD;;MAED,IAAM,SAAS,GAAG;QAChB,OAAO,EAAP,OADgB;QAEhB,YAAY,EAAE,IAAA,CAAK,eAAL,CAAqB,OAArB,CAFE;QAGhB,KAAK,EAAL,KAHgB;QAIhB,WAAW,EAAX,WAJgB;QAKhB,EAAE,EAAF,EALgB;QAMhB,EAAE,EAAF,EANgB;QAOhB,SAAS,EAAE,aAPK;QAQhB,WAAW,EAAE,IAAA;OARf,CAAA;;MAWA,IAAI,CAAC,aAAL,EAAoB;;QAElB,KAAK,CAAC,OAAN,CAAc,cAAd,CAA6B,IAAA,CAAK,MAAL,CAAY,KAAzC,EAAgD,IAAA,CAAK,MAAL,CAAY,IAA5D,EAAkE,IAAA,CAAK,MAAL,CAAY,GAA9E,CAAA,CAAA;QACA,KAAK,CAAC,OAAN,CAAc,gBAAd,CAA+B,IAAA,CAAK,MAAL,CAAY,QAA3C,EAAqD,IAAA,CAAK,MAAL,CAAY,KAAjE,CAAA,CAAA;OACD;;MAED,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,MAAnB,EAA2B,SAA3B,CAAA,CAAA;;MAEA,IAAI,CAAC,aAAL,EAAoB;;QAElB,IAAI,IAAA,CAAK,WAAL,EAAJ,EAAwB;UACtB,IAAA,CAAK,IAAL,CAAU,SAAV,CAAA,CAAA;SACD;;QAED,IAAI,IAAA,CAAK,eAAT,EAA0B;UACxB,KAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,IAAA,CAAK,MAAL,CAAY,IAArC,EAA2C,IAAA,CAAK,MAAL,CAAY,GAAvD,CAAA,CAAA;SACD;OACF;KACF;;;;;;;;;;;;;;;;;;;;;;yBAoBK,WAAU;MACd,SAAS,GAAG,KAAK,CAAC,MAAN,CAAa;QACvB,OAAO,EAAE,IAAA,CAAK,cAAL,CAAoB,OADN;QAEvB,KAAK,EAAE,IAAA,CAAK,cAAL,CAAoB,KAFJ;QAGvB,WAAW,EAAE,IAAA,CAAK,cAAL,CAAoB,WAHV;QAIvB,WAAW,EAAE,IAAA;OAJH,EAKT,SAAS,IAAI,EALJ,CAAZ,CAAA;MAOA,SAAS,CAAC,KAAV,GAAkB,cAAA,CAAA,UAAA,CAAW,IAA7B,CAAA;;MAEA,IAAA,CAAK,QAAL,CAAc,SAAd,CAAA,CAAA;;;;;8BAIS,SAA+B,OAAkC,aAAmB,gBAA2B;MACxH,IAAI,YAAY,GAAG,IAAA,CAAK,eAAL,CAAqB,OAArB,CAAnB,CAAA;;MAEA,IAAI,YAAY,KAAK,CAAC,CAAtB,EAAyB;QACvB,YAAY,GAAG,IAAA,CAAK,aAAL,CAAmB,OAAnB,EAA4B,KAA5B,EAAmC,WAAnC,EAAgD,KAAhD,CAAf,CAAA;OACD;;MAED,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,UAAA,CAAW,IAAX,CAAgB,KAAK,CAAC,IAAtB,CAAA,GAA8B,QAA9B,GAAyC,IAA5D,EAAkE;QAChE,OAAO,EAAP,OADgE;QAEhE,YAAY,EAAZ,YAFgE;QAGhE,KAAK,EAAL,KAHgE;QAIhE,WAAW,EAAX,WAJgE;QAKhE,cAAc,EAAd,cALgE;QAMhE,WAAW,EAAE,IAAA;OANf,CAAA,CAAA;;MASA,IAAI,CAAC,IAAA,CAAK,UAAV,EAAsB;QACpB,IAAA,CAAK,GAAL,CAAS,KAAT,CAAA,CAAA;OACD;;MAED,IAAA,CAAK,aAAL,GAAqB,KAArB,CAAA;MACA,IAAA,CAAK,aAAL,CAAmB,OAAnB,EAA4B,KAA5B,CAAA,CAAA;KACD;;;iCAEa,OAAK;MACjB,IAAA,CAAK,GAAL,CAAS,KAAT,CAAA,CAAA;;MACA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,MAAnB,EAA2B;QAAE,KAAK,EAAL,KAAF;QAAS,WAAW,EAAE,IAAA;OAAjD,CAAA,CAAA;KACD;;;;;;;;;;;;;;;;;;;;wBAkBI,OAAiC;MACpC,IAAA,CAAK,OAAL,GAAe,IAAf,CAAA;MACA,KAAK,GAAG,KAAK,IAAI,IAAA,CAAK,cAAL,CAAoB,KAArC,CAAA;MACA,IAAI,cAAJ,CAAA;;MAEA,IAAI,IAAA,CAAK,WAAL,EAAJ,EAAwB;QACtB,cAAc,GAAG,IAAA,CAAK,QAAL,CAAc;UAC7B,KAAK,EAAL,KAD6B;UAE7B,WAAW,EAAE,IAFgB;UAG7B,KAAK,EAAE,cAAA,CAAA,UAAA,CAAW,GAAA;SAHH,CAAjB,CAAA;OAKD;;MAED,IAAA,CAAK,OAAL,GAAe,KAAf,CAAA;;MAEA,IAAI,cAAc,KAAK,IAAvB,EAA6B;QAC3B,IAAA,CAAK,IAAL,EAAA,CAAA;OACD;KACF;;;oCAEY;MACX,OAAO,IAAA,CAAK,YAAL,GAAoB,IAAA,CAAK,QAAL,CAAc,IAAlC,GAAyC,IAAhD,CAAA;KACD;;;kCAEU;MACT,OAAO,IAAA,CAAK,YAAZ,CAAA;KACD;;;;;2BAGG;MACF,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,MAAnB,EAA2B;QAAE,WAAW,EAAE,IAAA;OAA1C,CAAA,CAAA;;MAEA,IAAA,CAAK,YAAL,GAAoB,IAAA,CAAK,OAAL,GAAe,IAAnC,CAAA;MAEA,IAAA,CAAK,YAAL,GAAoB,KAApB,CAAA;MACA,IAAA,CAAK,QAAL,GAAgB,IAAhB,CAAA;MACA,IAAA,CAAK,QAAL,CAAc,IAAd,GAAqB,IAAA,CAAK,SAAL,GAAiB,IAAtC,CAAA;KACD;;;oCAEgB,SAAO;MACtB,IAAM,SAAS,GAAG,KAAK,CAAC,OAAN,CAAc,YAAd,CAA2B,OAA3B,CAAlB,CADsB;;MAItB,OAAQ,IAAA,CAAK,WAAL,KAAqB,OAArB,IAAgC,IAAA,CAAK,WAAL,KAAqB,KAAtD,GACH,IAAA,CAAK,QAAL,CAAc,MAAd,GAAuB,CADpB,GAEH,KAAK,CAAC,GAAN,CAAU,SAAV,CAAoB,IAAA,CAAK,QAAzB,EAAmC,UAAC,UAAD,EAAA;QAAA,OAAgB,UAAU,CAAC,EAAX,KAAkB,SAAlC,CAAA;OAAnC,CAFJ,CAAA;KAGD;;;mCAEe,SAAO;MACrB,OAAO,IAAA,CAAK,QAAL,CAAc,IAAA,CAAK,eAAL,CAAqB,OAArB,CAAd,CAAP,CAAA;KACD;;;kCAEc,SAA+B,OAAkC,aAAmB,MAAc;MAC/G,IAAM,EAAE,GAAG,KAAK,CAAC,OAAN,CAAc,YAAd,CAA2B,OAA3B,CAAX,CAAA;MACA,IAAI,YAAY,GAAG,IAAA,CAAK,eAAL,CAAqB,OAArB,CAAnB,CAAA;MACA,IAAI,WAAW,GAAG,IAAA,CAAK,QAAL,CAAc,YAAd,CAAlB,CAAA;MAEA,IAAI,GAAG,IAAI,KAAK,KAAT,GACH,KADG,GAEH,IAAI,IAAI,gBAAA,CAAiB,IAAjB,CAAsB,KAAK,CAAC,IAA5B,CAFZ,CAAA;;MAIA,IAAI,CAAC,WAAL,EAAkB;QAChB,WAAW,GAAG,IAAI,YAAA,CAAA,SAAA,CAAJ,CACZ,EADY,EAEZ,OAFY,EAGZ,KAHY,EAIZ,IAJY,EAKZ,IALY,CAAd,CAAA;QAQA,YAAY,GAAG,IAAA,CAAK,QAAL,CAAc,MAA7B,CAAA;QACA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,WAAnB,CAAA,CAAA;OAVF,MAYK;QACH,WAAW,CAAC,OAAZ,GAAsB,OAAtB,CAAA;OACD;;MAED,IAAI,IAAJ,EAAU;QACR,IAAA,CAAK,aAAL,GAAqB,IAArB,CAAA;;QAEA,IAAI,CAAC,IAAA,CAAK,WAAL,EAAL,EAAyB;UACvB,KAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,IAAA,CAAK,MAAL,CAAY,KAApC,EAA2C,IAAA,CAAK,QAAL,CAAc,GAAd,CAAkB,UAAC,CAAD,EAAA;YAAA,OAAO,CAAC,CAAC,OAAT,CAAA;WAAlB,CAA3C,EAAgF,IAAA,CAAK,IAAL,EAAhF,CAAA,CAAA;UAEA,KAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,IAAA,CAAK,MAAL,CAAY,GAArC,EAA0C,IAAA,CAAK,MAAL,CAAY,KAAtD,CAAA,CAAA;UACA,KAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,IAAA,CAAK,MAAL,CAAY,IAArC,EAA2C,IAAA,CAAK,MAAL,CAAY,KAAvD,CAAA,CAAA;UACA,KAAK,CAAC,OAAN,CAAc,aAAd,CAA4B,IAAA,CAAK,WAAjC,EAA8C,OAA9C,CAAA,CAAA;UAEA,IAAA,CAAK,SAAL,GAAiB,KAAjB,CAAA;UACA,WAAW,CAAC,QAAZ,GAAuB,IAAA,CAAK,MAAL,CAAY,GAAZ,CAAgB,SAAvC,CAAA;UACA,WAAW,CAAC,UAAZ,GAAyB,WAAzB,CAAA;UAEA,IAAA,CAAK,eAAL,GAAuB,KAAvB,CAAA;SACD;OACF;;MAED,IAAA,CAAK,oBAAL,CAA0B,OAA1B,EAAmC,KAAnC,EAA0C,WAA1C,CAAA,CAAA;;MAEA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,gBAAnB,EAAqC;QACnC,OAAO,EAAP,OADmC;QAEnC,KAAK,EAAL,KAFmC;QAGnC,WAAW,EAAX,WAHmC;QAInC,IAAI,EAAJ,IAJmC;QAKnC,WAAW,EAAX,WALmC;QAMnC,YAAY,EAAZ,YANmC;QAOnC,WAAW,EAAE,IAAA;OAPf,CAAA,CAAA;;MAUA,OAAO,YAAP,CAAA;KACD;;;kCAEc,SAA+B,OAAgC;MAC5E,IAAM,YAAY,GAAG,IAAA,CAAK,eAAL,CAAqB,OAArB,CAArB,CAAA;;MAEA,IAAI,YAAY,KAAK,CAAC,CAAtB,EAAyB;QAAE,OAAA;OAAQ;;MAEnC,IAAM,WAAW,GAAG,IAAA,CAAK,QAAL,CAAc,YAAd,CAApB,CAAA;;MAEA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,gBAAnB,EAAqC;QACnC,OAAO,EAAP,OADmC;QAEnC,KAAK,EAAL,KAFmC;QAGnC,YAAY,EAAZ,YAHmC;QAInC,WAAW,EAAX,WAJmC;QAKnC,WAAW,EAAE,IAAA;OALf,CAAA,CAAA;;MAQA,IAAA,CAAK,QAAL,CAAc,MAAd,CAAqB,YAArB,EAAmC,CAAnC,CAAA,CAAA;KACD;;;yCAEqB,SAAS,OAAO,aAAW;MAC/C,IAAA,CAAK,cAAL,CAAoB,OAApB,GAA8B,OAA9B,CAAA;MACA,IAAA,CAAK,cAAL,CAAoB,KAApB,GAA4B,KAA5B,CAAA;MACA,IAAA,CAAK,cAAL,CAAoB,WAApB,GAAkC,WAAlC,CAAA;KACD;;;8BAEM;MACL,IAAA,CAAK,cAAL,CAAoB,OAApB,GAA8B,IAA9B,CAAA;MACA,IAAA,CAAK,cAAL,CAAoB,KAApB,GAA4B,IAA5B,CAAA;MACA,IAAA,CAAK,cAAL,CAAoB,WAApB,GAAkC,IAAlC,CAAA;KACD;;;yCAEqB,OAAkC,OAAmB,QAAiB,MAAY;MACtG,IAAM,UAAU,GAAG,IAAA,CAAK,QAAL,CAAc,IAAjC,CAAA;MAEA,OAAO,IAAI,cAAA,CAAA,SAAA,CAAJ,CAAkB,IAAlB,EAAwB,KAAxB,EAA+B,UAA/B,EAA2C,KAA3C,EAAkD,IAAA,CAAK,OAAvD,EAAgE,IAAhE,EAAsE,MAAtE,EAA8E,IAA9E,CAAP,CAAA;KACD;;;+BAEW,QAAM;MAChB,IAAA,CAAK,YAAL,CAAkB,IAAlB,CAAuB,MAAvB,CAAA,CAAA;;MAEA,IAAI,CAAC,IAAA,CAAK,SAAN,IAAmB,MAAM,CAAC,SAAP,IAAoB,IAAA,CAAK,SAAL,CAAe,SAA1D,EAAqE;QACnE,IAAA,CAAK,SAAL,GAAiB,MAAjB,CAAA;OACD;KACF;;;6BAES,WAAsC;MAAA,IACtC,KADsC,GACP,SADO,CACtC,KADsC;UAC/B,KAD+B,GACP,SADO,CAC/B,KAD+B;UACxB,MADwB,GACP,SADO,CACxB,MADwB;UAChB,IADgB,GACP,SADO,CAChB,IADgB,CAAA;;MAE9C,IAAM,YAAY,GAAG,IAAA,CAAK,QAAL,CAAc,IAAd,CAAA,gBAAA,CAAA,MAAA,CAAoC,KAApC,CAAA,EAA6C,SAA7C,CAArB,CAAA;;MAEA,IAAI,YAAY,KAAK,KAArB,EAA4B;QAC1B,OAAO,KAAP,CAAA;OACD;;MAED,IAAM,MAAM,GAAG,SAAS,CAAC,MAAV,GAAmB,IAAA,CAAK,oBAAL,CAA0B,KAA1B,EAAiC,KAAjC,EAAwC,MAAxC,EAAgD,IAAhD,CAAlC,CAAA;;MAR8C,IAStC,IATsC,GAS7B,IAT6B,CAStC,IATsC,CAAA;;MAW9C,IAAI,IAAJ,EAAU;;QAER,IAAM,KAAK,GAAG,IAAA,CAAK,KAAL,IAAc,IAAA,CAAK,QAAL,CAAc,KAA5B,IAAqC;UAAE,IAAI,EAAE,IAAR;UAAc,KAAK,EAAE,IAArB;UAA2B,GAAG,EAAE,IAAhC;UAAsC,MAAM,EAAE,IAAA;SAAjG,CAAA;;QAEA,IAAI,KAAK,CAAC,GAAV,EAAkB;UAAE,IAAI,CAAC,GAAL,IAAe,MAAM,CAAC,KAAP,CAAa,CAA5B,CAAA;SAA+B;;QACnD,IAAI,KAAK,CAAC,MAAV,EAAkB;UAAE,IAAI,CAAC,MAAL,IAAe,MAAM,CAAC,KAAP,CAAa,CAA5B,CAAA;SAA+B;;QACnD,IAAI,KAAK,CAAC,IAAV,EAAkB;UAAE,IAAI,CAAC,IAAL,IAAe,MAAM,CAAC,KAAP,CAAa,CAA5B,CAAA;SAA+B;;QACnD,IAAI,KAAK,CAAC,KAAV,EAAkB;UAAE,IAAI,CAAC,KAAL,IAAe,MAAM,CAAC,KAAP,CAAa,CAA5B,CAAA;SAA+B;;QAEnD,IAAI,CAAC,KAAL,GAAa,IAAI,CAAC,KAAL,GAAa,IAAI,CAAC,IAA/B,CAAA;QACA,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,GAAjC,CAAA;OACD;;MAED,IAAA,CAAK,QAAL,CAAc,IAAd,CAAA,SAAA,CAAA,MAAA,CAA6B,KAA7B,CAAA,EAAsC,SAAtC,CAAA,CAAA;;MAEA,IAAA,CAAK,UAAL,CAAgB,MAAhB,CAAA,CAAA;;MAEA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAA,eAAA,CAAA,MAAA,CAAmC,KAAnC,CAAA,EAA4C,SAA5C,CAAA,CAAA;;MAEA,OAAO,IAAP,CAAA;KACD;;;2BAEG;MAAM,OAAO,IAAI,CAAC,GAAL,EAAP,CAAA;KAAmB;;;wBAlbL;MACtB,OAAO,CAAP,CAAA;KACD;;;;;;;eAmbY;;;;;;;;;;;;;;;;;ACjhBT,SAAU,QAAV,CAAoB,KAApB,EAA2B,MAA3B,EAAiC;EACrC,OAAO,KAAK,CAAC,OAAN,CAAc,MAAd,CAAA,KAA0B,CAAC,CAAlC,CAAA;CACD;;AAEK,SAAU,MAAV,CAAkB,KAAlB,EAAyB,MAAzB,EAA+B;EACnC,OAAO,KAAK,CAAC,MAAN,CAAa,KAAK,CAAC,OAAN,CAAc,MAAd,CAAb,EAAoC,CAApC,CAAP,CAAA;CACD;;AAEK,SAAU,KAAV,CAAiB,MAAjB,EAAyB,MAAzB,EAA+B;EACnC,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAmB,MAAnB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA2B;IAAA,IAAA,IAAA,CAAA;;IAAA,IAAA,GAAR,MAAQ,CAAA,EAAA,CAAA,CAAA;IAAA,IAAhB,IAAgB,GAAA,IAAA,CAAA;IACzB,MAAM,CAAC,IAAP,CAAY,IAAZ,CAAA,CAAA;GACD;;EAED,OAAO,MAAP,CAAA;CACD;;AAEK,SAAU,IAAV,CAAgB,MAAhB,EAAsB;EAC1B,OAAO,KAAK,CAAC,EAAD,EAAK,MAAL,CAAZ,CAAA;CACD;;AAEK,SAAU,SAAV,CAAqB,KAArB,EAA4B,IAA5B,EAAgC;EACpC,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,KAAK,CAAC,MAA1B,EAAkC,CAAC,EAAnC,EAAuC;IACrC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAD,CAAN,EAAW,CAAX,EAAc,KAAd,CAAR,EAA8B;MAC5B,OAAO,CAAP,CAAA;KACD;GACF;;EAED,OAAO,CAAC,CAAR,CAAA;CACD;;AAEK,SAAU,IAAV,CAAgB,KAAhB,EAAuB,IAAvB,EAA2B;EAC/B,OAAO,KAAK,CAAC,SAAS,CAAC,KAAD,EAAQ,IAAR,CAAV,CAAZ,CAAA;CACD;;;;;;;;;AChCD,IAAM,UAAU,GAahB;EACE,IAAI,EAAJ,IADF;EAEE,QAAQ,EAAE,IAFZ;EAGE,gBAAgB,EAAE,IAHpB;EAIE,UAAU,EAAE,IAJd;EAKE,aAAa,EAAE,IALjB;;EAOE,kBAAkB,EAAE,IAPtB;EAQE,OAAO,EAAE,IARX;EASE,WAAW,EAAE,IATf;EAUE,KAAK,EAAE,IAVT;EAWE,KAAK,EAAE,IAXT;EAYE,YAAY,EAAE,IAAA;CAzBhB,CAAA;;AA4BA,SAAS,KAAT,GAAc,EAAM;;eAEL;;;AAEf,SAAS,IAAT,CAAe,MAAf,EAA6B;EAC3B,IAAM,GAAG,GAAG,MAAZ,CAAA;EAEA,UAAU,CAAC,QAAX,GAAgC,GAAG,CAAC,QAApC,CAAA;EACA,UAAU,CAAC,gBAAX,GAAgC,GAAG,CAAC,gBAAJ,IAA0B,KAA1D,CAAA;EACA,UAAU,CAAC,UAAX,GAAgC,GAAG,CAAC,UAAJ,IAA0B,KAA1D,CAAA;EACA,UAAU,CAAC,aAAX,GAAgC,GAAG,CAAC,aAAJ,IAA0B,KAA1D,CAAA;EACA,UAAU,CAAC,kBAAX,GAAgC,GAAG,CAAC,kBAAJ,IAA0B,KAA1D,CAAA;EACA,UAAU,CAAC,OAAX,GAAgC,GAAG,CAAC,OAAJ,IAA0B,KAA1D,CAAA;EACA,UAAU,CAAC,WAAX,GAAgC,GAAG,CAAC,WAAJ,IAA0B,UAAU,CAAC,OAArE,CAAA;EAEA,UAAU,CAAC,KAAX,GAA0B,GAAG,CAAC,KAA9B,CAAA;EACA,UAAU,CAAC,KAAX,GAA0B,GAAG,CAAC,KAAJ,IAAa,KAAvC,CAAA;EACA,UAAU,CAAC,YAAX,GAA2B,GAAG,CAAC,YAAJ,IAAoB,GAAG,CAAC,cAAnD,CAAA;CACD;;;;;;;;;;oBC9Cc,SAAA,QAAA,CAAC,KAAD,EAAA;EAAA,OAAW,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,MAAjB,CAAD,IAA8B,KAAK,YAAY,KAAK,CAAC,MAAhE,CAAA;;;;;;;;;;;;;;;ACAf,IAAA,SAAA,GAAA,sBAAA,CAAA,aAAA,CAAA,CAAA;;;;AAEA,IAAM,GAAG,GAAG;EACV,UAAU,EAAE,SADF;EAEV,MAAM,EAAE,SAFE;EAGV,SAAS,EAAT,SAHU;EAIV,IAAI,EAAJ,SAAA;CAJF,CAAA;;AAOM,SAAU,SAAV,CAAgB,MAAhB,EAA4D;;EAGhE,GAAG,CAAC,UAAJ,GAAiB,MAAjB,CAHgE;;EAMhE,IAAM,EAAE,GAAG,MAAM,CAAC,QAAP,CAAgB,cAAhB,CAA+B,EAA/B,CAAX,CANgE;;EAShE,IAAI,EAAE,CAAC,aAAH,KAAqB,MAAM,CAAC,QAA5B,IACA,OAAO,MAAM,CAAC,IAAd,KAAuB,UADvB,IAEF,MAAM,CAAC,IAAP,CAAY,EAAZ,CAAA,KAAoB,EAFtB,EAE0B;;IAExB,MAAM,GAAG,MAAM,CAAC,IAAP,CAAY,MAAZ,CAAT,CAAA;GACD;;EAED,GAAG,CAAC,MAAJ,GAAa,MAAb,CAAA;CACD;;AAED,IAAI,OAAO,MAAP,KAAkB,WAAtB,EAAmC;EACjC,GAAG,CAAC,MAAJ,GAAiB,SAAjB,CAAA;EACA,GAAG,CAAC,UAAJ,GAAiB,SAAjB,CAAA;CAFF,MAIK;EACH,SAAI,CAAC,MAAD,CAAJ,CAAA;CACD;;AAEK,SAAU,SAAV,CAAqB,IAArB,EAAyB;EAC7B,IAAI,CAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CAAA,EAAS,IAAT,CAAJ,EAAoB;IAClB,OAAO,IAAP,CAAA;GACD;;EAED,IAAM,QAAQ,GAAI,IAAI,CAAC,aAAL,IAAsB,IAAxC,CAAA;EAEA,OAAO,QAAQ,CAAC,WAAT,IAAwB,GAAG,CAAC,MAAnC,CAAA;CACD;;AAED,GAAG,CAAC,IAAJ,GAAW,SAAX,CAAA;oBAEe;;;;;;;;;;;AC9Cf,IAAA,cAAA,GAAA,2BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;AAEO,IAAM,WAAM,GAAG,SAAT,MAAS,CAAC,KAAD,EAAA;EAAA,OACpB,KAAK,KAAK,QAAA,CAAA,SAAA,CAAA,CAAI,MAAd,IAAwB,CAAA,CAAA,EAAA,cAAA,CAAA,SAAA,CAAA,EAAS,KAAT,CADJ,CAAA;CAAf,CAAA;;;;AAGA,IAAM,OAAO,GAAG,SAAV,OAAU,CAAC,KAAD,EAAA;EAAA,OACrB,MAAM,CAAC,KAAD,CAAN,IAAiB,KAAK,CAAC,QAAN,KAAmB,EADf,CAAA;CAAhB,CAAA;;;;AAGA,IAAM,MAAM,GAAG,SAAT,MAAS,CAAC,KAAD,EAAA;EAAA,OACpB,CAAC,CAAC,KAAF,IAAY,OAAA,CAAO,KAAP,CAAA,KAAiB,QADT,CAAA;CAAf,CAAA;;;;AAGA,IAAM,IAAI,GAAG,SAAP,IAAO,CAAC,KAAD,EAAA;EAAA,OAClB,OAAO,KAAP,KAAiB,UADC,CAAA;CAAb,CAAA;;;;AAGA,IAAM,MAAM,GAAG,SAAT,MAAS,CAAC,KAAD,EAAA;EAAA,OACpB,OAAO,KAAP,KAAiB,QADG,CAAA;CAAf,CAAA;;;;AAGA,IAAM,IAAI,GAAG,SAAP,IAAO,CAAC,KAAD,EAAA;EAAA,OAClB,OAAO,KAAP,KAAiB,SADC,CAAA;CAAb,CAAA;;;;AAGA,IAAM,MAAM,GAAG,SAAT,MAAS,CAAC,KAAD,EAAA;EAAA,OACpB,OAAO,KAAP,KAAiB,QADG,CAAA;CAAf,CAAA;;;;AAGA,IAAM,OAAO,GAAG,SAAV,OAAU,CAAC,KAAD,EAAiC;EACtD,IAAI,CAAC,KAAD,IAAW,OAAA,CAAO,KAAP,CAAA,KAAiB,QAAhC,EAA2C;IAAE,OAAO,KAAP,CAAA;GAAc;;EAE3D,IAAM,OAAO,GAAG,QAAA,CAAA,SAAA,CAAA,CAAI,SAAJ,CAAc,KAAd,CAAA,IAAwB,QAAA,CAAA,SAAA,CAAA,CAAI,MAA5C,CAAA;;EAEA,OAAQ,iBAAA,CAAkB,IAAlB,CAAA,OAAA,CAA8B,OAAO,CAAC,OAAtC,CAAA,CAAA,GACJ,KAAK,YAAY,OAAO,CAAC,OADrB;IAEJ,KAAK,CAAC,QAAN,KAAmB,CAAnB,IAAwB,OAAO,KAAK,CAAC,QAAb,KAA0B,QAFtD,CAAA;CALK,CAAA;;;;AAUA,IAAM,WAAW,GAAkB,SAA7B,WAA6B,CAAC,KAAD,EAAA;EAAA,OACxC,MAAM,CAAC,KAAD,CAAN,IACA,CAAC,CAAC,KAAK,CAAC,WADR,IAEA,mBAAA,CAAoB,IAApB,CAAyB,KAAK,CAAC,WAAN,CAAkB,QAAlB,EAAzB,CAHwC,CAAA;CAAnC,CAAA;;;;AAKA,IAAM,KAAK,GAAG,SAAR,KAAQ,CAAC,KAAD,EAAA;EAAA,OAClB,MAAM,CAAC,KAAD,CAAN,IACA,OAAO,KAAK,CAAC,MAAb,KAAwB,WADxB,IAED,IAAI,CAAC,KAAK,CAAC,MAAP,CAHe,CAAA;CAAd,CAAA;;;;;;;;;;;;ACzCP,IAAA,WAAA,GAAA,2BAAA,CAAA,eAAA,CAAA,CAAA;;AACA,IAAA,EAAA,GAAA,uBAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;AAEA,IAAM,OAAO,GAAG;EACd,IAAI,EAAJ,SADc;EAEd,aAAa,EAAE,IAFD;EAGd,oBAAoB,EAAE,IAHR;EAId,MAAM,EAAE,IAJM;EAKd,KAAK,EAAE,IALO;EAMd,KAAK,EAAE,IANO;EAOd,aAAa,EAAE,IAPD;EAQd,uBAAuB,EAAE,IARX;EASd,WAAW,EAAE,IATC;EAiBd,UAAU,EAAE,IAAA;CAjBd,CAAA;;AAoBA,SAAS,SAAT,CAAe,MAAf,EAAqB;EACnB,IAAM,OAAO,GAAG,WAAA,CAAA,SAAA,CAAA,CAAW,OAA3B,CAAA;EACA,IAAM,SAAS,GAAI,OAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,SAA9B,CAFmB;;EAKnB,OAAO,CAAC,aAAR,GAAyB,cAAA,IAAkB,MAAnB,IACrB,EAAE,CAAC,IAAH,CAAQ,MAAM,CAAC,aAAf,CAAA,IAAiC,WAAA,CAAA,SAAA,CAAA,CAAW,QAAX,YAA+B,MAAM,CAAC,aAD1E,CALmB;;EASnB,OAAO,CAAC,oBAAR,GAA+B,SAAS,CAAC,cAAV,KAA6B,KAA7B,IAAsC,CAAC,CAAC,WAAA,CAAA,SAAA,CAAA,CAAW,YAAlF,CAAA;EAEA,OAAO,CAAC,KAAR,GAAiB,gBAAA,CAAiB,IAAjB,CAAsB,SAAS,CAAC,QAAhC,CAAjB,CAXmB;;EAcnB,OAAO,CAAC,MAAR,GAAkB,gBAAA,CAAiB,IAAjB,CAAsB,SAAS,CAAC,QAAhC,CAAA,IACT,WAAA,CAAY,IAAZ,CAAiB,SAAS,CAAC,UAA3B,CADT,CAAA;EAGA,OAAO,CAAC,KAAR,GAAgB,QAAA,CAAS,IAAT,CAAc,SAAS,CAAC,SAAxB,CAAhB,CAjBmB;;EAoBnB,OAAO,CAAC,aAAR,GAAyB,SAAS,CAAC,OAAV,KAAsB,OAAtB,IACvB,OAAO,CAAC,aADe,IAEvB,QAAA,CAAS,IAAT,CAAc,SAAS,CAAC,SAAxB,CAFF,CApBmB;;EAyBnB,OAAO,CAAC,uBAAR,GAAkC,SAAA,IAAa,OAAO,CAAC,SAArB,GAC9B,SAD8B,GAE9B,uBAAA,IAA2B,OAAO,CAAC,SAAnC,GACE,uBADF,GAEE,oBAAA,IAAwB,OAAO,CAAC,SAAhC,GACE,oBADF,GAEE,kBAAA,IAAsB,OAAO,CAAC,SAA9B,GACE,kBADF,GAEE,mBARV,CAAA;EAUA,OAAO,CAAC,WAAR,GAAuB,OAAO,CAAC,oBAAR,GAClB,WAAA,CAAA,SAAA,CAAA,CAAW,YAAX,KAA4B,MAAM,CAAC,cAAnC,GACC;IACA,EAAE,EAAM,aADR;IAEA,IAAI,EAAI,eAFR;IAGA,IAAI,EAAI,WAHR;IAIA,GAAG,EAAK,UAJR;IAKA,IAAI,EAAI,eALR;IAMA,MAAM,EAAE,iBAAA;GAPT,GASC;IACA,EAAE,EAAM,WADR;IAEA,IAAI,EAAI,aAFR;IAGA,IAAI,EAAI,aAHR;IAIA,GAAG,EAAK,YAJR;IAKA,IAAI,EAAI,aALR;IAMA,MAAM,EAAE,eAAA;GAhBS,GAkBnB,IAlBJ,CAnCmB;;EAwDnB,OAAO,CAAC,UAAR,GAAqB,cAAA,IAAkB,WAAA,CAAA,SAAA,CAAA,CAAW,QAA7B,GAAwC,YAAxC,GAAuD,OAA5E,CAAA;CACD;;oBAEc;;;;;;;;;;;;;;;;;;;;;;ACnFf,IAAA,QAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,gBAAA,GAAA,2BAAA,CAAA,eAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;AAEM,SAAU,YAAV,CAAwB,MAAxB,EAAsC,KAAtC,EAAiD;EACrD,OAAO,KAAP,EAAc;IACZ,IAAI,KAAK,KAAK,MAAd,EAAsB;MACpB,OAAO,IAAP,CAAA;KACD;;IAED,KAAK,GAAG,KAAK,CAAC,UAAd,CAAA;GACD;;EAED,OAAO,KAAP,CAAA;CACD;;AAEK,SAAU,OAAV,CAAmB,OAAnB,EAA4B,QAA5B,EAAoC;EACxC,OAAO,OAAE,CAAC,OAAH,CAAW,OAAX,CAAP,EAA4B;IAC1B,IAAI,eAAe,CAAC,OAAD,EAAU,QAAV,CAAnB,EAAwC;MAAE,OAAO,OAAP,CAAA;KAAgB;;IAE1D,OAAO,GAAG,UAAU,CAAC,OAAD,CAApB,CAAA;GACD;;EAED,OAAO,IAAP,CAAA;CACD;;AAEK,SAAU,UAAV,CAAsB,IAAtB,EAA0B;EAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,UAAlB,CAAA;;EAEA,IAAI,OAAE,CAAC,OAAH,CAAW,MAAX,CAAJ,EAAwB;;;IAGtB,OAAO,CAAC,MAAM,GAAI,MAAc,CAAC,IAA1B,KAAmC,OAAE,CAAC,OAAH,CAAW,MAAX,CAA1C,EAA8D;MAC5D,SAAA;KACD;;IAED,OAAO,MAAP,CAAA;GACD;;EAED,OAAO,MAAP,CAAA;CACD;;AAEK,SAAU,eAAV,CAA2B,OAA3B,EAAoC,QAApC,EAA4C;;EAEhD,IAAI,YAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,KAAe,YAAA,CAAA,SAAA,CAAA,CAAI,UAAvB,EAAmC;IACjC,QAAQ,GAAG,QAAQ,CAAC,OAAT,CAAiB,WAAjB,EAA8B,GAA9B,CAAX,CAAA;GACD;;EAED,OAAO,OAAO,CAAC,QAAA,CAAA,SAAA,CAAA,CAAQ,uBAAT,CAAP,CAAyC,QAAzC,CAAP,CAAA;CACD;;AAED,IAAM,SAAS,GAAG,SAAZ,SAAY,CAAC,EAAD,EAAA;EAAA,OAAQ,EAAE,CAAC,UAAH,GAAgB,EAAE,CAAC,UAAnB,GAAgC,EAAE,CAAC,IAA3C,CAAA;CAAlB;;;AAGM,SAAU,qBAAV,CAAiC,QAAjC,EAAyC;EAC7C,IAAI,kBAAkB,GAAG,EAAzB,CAAA;EACA,IAAI,eAAe,GAAG,EAAtB,CAAA;EACA,IAAI,QAAJ,CAAA;EACA,IAAI,WAAW,GAAG,QAAQ,CAAC,CAAD,CAA1B,CAAA;EACA,IAAI,KAAK,GAAG,WAAW,GAAG,CAAH,GAAO,CAAC,CAA/B,CAAA;EACA,IAAI,MAAJ,CAAA;EACA,IAAI,KAAJ,CAAA;EACA,IAAI,CAAJ,CAAA;EACA,IAAI,CAAJ,CAAA;;EAEA,KAAK,CAAC,GAAG,CAAT,EAAY,CAAC,GAAG,QAAQ,CAAC,MAAzB,EAAiC,CAAC,EAAlC,EAAsC;IACpC,QAAQ,GAAG,QAAQ,CAAC,CAAD,CAAnB,CADoC;;IAIpC,IAAI,CAAC,QAAD,IAAa,QAAQ,KAAK,WAA9B,EAA2C;MACzC,SAAA;KACD;;IAED,IAAI,CAAC,WAAL,EAAkB;MAChB,WAAW,GAAG,QAAd,CAAA;MACA,KAAK,GAAG,CAAR,CAAA;MACA,SAAA;KAXkC;;;;IAgBpC,IAAI,QAAQ,CAAC,UAAT,KAAwB,QAAQ,CAAC,aAArC,EAAoD;MAClD,SAAA;KADF;SAIK,IAAI,WAAW,CAAC,UAAZ,KAA2B,QAAQ,CAAC,aAAxC,EAAuD;QAC1D,WAAW,GAAG,QAAd,CAAA;QACA,KAAK,GAAG,CAAR,CAAA;QACA,SAAA;OACD;;IAED,IAAI,CAAC,kBAAkB,CAAC,MAAxB,EAAgC;MAC9B,MAAM,GAAG,WAAT,CAAA;;MACA,OAAO,SAAS,CAAC,MAAD,CAAT,IAAqB,SAAS,CAAC,MAAD,CAAT,KAAsB,MAAM,CAAC,aAAzD,EAAwE;QACtE,kBAAkB,CAAC,OAAnB,CAA2B,MAA3B,CAAA,CAAA;QACA,MAAM,GAAG,SAAS,CAAC,MAAD,CAAlB,CAAA;OACD;KA/BiC;;;;IAoCpC,IAAI,WAAW,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,WAAlC,IACA,QAAQ,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,UAD/B,IAEA,EAAE,QAAQ,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,aAAjC,CAFJ,EAEqD;MACnD,IAAI,QAAQ,KAAK,WAAW,CAAC,UAA7B,EAAyC;QACvC,SAAA;OACD;;MAED,MAAM,GAAG,QAAQ,CAAC,eAAlB,CAAA;KAPF,MASK;MACH,MAAM,GAAG,QAAT,CAAA;KACD;;IAED,eAAe,GAAG,EAAlB,CAAA;;IAEA,OAAO,MAAM,CAAC,UAAP,KAAsB,MAAM,CAAC,aAApC,EAAmD;MACjD,eAAe,CAAC,OAAhB,CAAwB,MAAxB,CAAA,CAAA;MACA,MAAM,GAAG,SAAS,CAAC,MAAD,CAAlB,CAAA;KACD;;IAED,CAAC,GAAG,CAAJ,CAxDoC;;IA2DpC,OAAO,eAAe,CAAC,CAAD,CAAf,IAAsB,eAAe,CAAC,CAAD,CAAf,KAAuB,kBAAkB,CAAC,CAAD,CAAtE,EAA2E;MACzE,CAAC,EAAA,CAAA;KACF;;IAED,IAAM,OAAO,GAAG,CACd,eAAe,CAAC,CAAC,GAAG,CAAL,CADD,EAEd,eAAe,CAAC,CAAD,CAFD,EAGd,kBAAkB,CAAC,CAAD,CAHJ,CAAhB,CAAA;IAMA,KAAK,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,SAAnB,CAAA;;IAEA,OAAO,KAAP,EAAc;MACZ,IAAI,KAAK,KAAK,OAAO,CAAC,CAAD,CAArB,EAA0B;QACxB,WAAW,GAAG,QAAd,CAAA;QACA,KAAK,GAAG,CAAR,CAAA;QACA,kBAAkB,GAAG,EAArB,CAAA;QAEA,MAAA;OALF,MAOK,IAAI,KAAK,KAAK,OAAO,CAAC,CAAD,CAArB,EAA0B;QAC7B,MAAA;OACD;;MAED,KAAK,GAAG,KAAK,CAAC,eAAd,CAAA;KACD;GACF;;EAED,OAAO,KAAP,CAAA;CACD;;AAEK,SAAU,WAAV,CAAuB,OAAvB,EAAyC,QAAzC,EAA2D,KAA3D,EAAsE;EAC1E,OAAO,OAAE,CAAC,OAAH,CAAW,OAAX,CAAP,EAA4B;IAC1B,IAAI,eAAe,CAAC,OAAD,EAAU,QAAV,CAAnB,EAAwC;MACtC,OAAO,IAAP,CAAA;KACD;;IAED,OAAO,GAAG,UAAU,CAAC,OAAD,CAApB,CAAA;;IAEA,IAAI,OAAO,KAAK,KAAhB,EAAuB;MACrB,OAAO,eAAe,CAAC,OAAD,EAAU,QAAV,CAAtB,CAAA;KACD;GACF;;EAED,OAAO,KAAP,CAAA;CACD;;AAEK,SAAU,gBAAV,CAA4B,OAA5B,EAAmC;EACvC,OAAQ,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,kBAA9B,GACJ,OAAO,CAAC,uBADJ,GAEJ,OAFJ,CAAA;CAGD;;AAEK,SAAU,WAAV,CAAuB,cAAvB,EAAqC;EACzC,cAAc,GAAG,cAAc,IAAI,YAAA,CAAA,SAAA,CAAA,CAAI,MAAvC,CAAA;EACA,OAAO;IACL,CAAC,EAAE,cAAc,CAAC,OAAf,IAA0B,cAAc,CAAC,QAAf,CAAwB,eAAxB,CAAwC,UADhE;IAEL,CAAC,EAAE,cAAc,CAAC,OAAf,IAA0B,cAAc,CAAC,QAAf,CAAwB,eAAxB,CAAwC,SAAA;GAFvE,CAAA;CAID;;AAEK,SAAU,oBAAV,CAAgC,OAAhC,EAAuC;EAC3C,IAAM,UAAU,GAAI,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,UAA9B,GAChB,OAAO,CAAC,qBAAR,EADgB,GAEhB,OAAO,CAAC,cAAR,EAAA,CAAyB,CAAzB,CAFJ,CAAA;EAIA,OAAO,UAAU,IAAI;IACnB,IAAI,EAAI,UAAU,CAAC,IADA;IAEnB,KAAK,EAAG,UAAU,CAAC,KAFA;IAGnB,GAAG,EAAK,UAAU,CAAC,GAHA;IAInB,MAAM,EAAE,UAAU,CAAC,MAJA;IAKnB,KAAK,EAAG,UAAU,CAAC,KAAX,IAAqB,UAAU,CAAC,KAAX,GAAoB,UAAU,CAAC,IALzC;IAMnB,MAAM,EAAE,UAAU,CAAC,MAAX,IAAqB,UAAU,CAAC,MAAX,GAAoB,UAAU,CAAC,GAAA;GAN9D,CAAA;CAQD;;AAEK,SAAU,cAAV,CAA0B,OAA1B,EAAiC;EACrC,IAAM,UAAU,GAAG,oBAAoB,CAAC,OAAD,CAAvC,CAAA;;EAEA,IAAI,CAAC,QAAA,CAAA,SAAA,CAAA,CAAQ,MAAT,IAAmB,UAAvB,EAAmC;IACjC,IAAM,MAAM,GAAG,WAAW,CAAC,YAAA,CAAA,SAAA,CAAA,CAAI,SAAJ,CAAc,OAAd,CAAD,CAA1B,CAAA;IAEA,UAAU,CAAC,IAAX,IAAqB,MAAM,CAAC,CAA5B,CAAA;IACA,UAAU,CAAC,KAAX,IAAqB,MAAM,CAAC,CAA5B,CAAA;IACA,UAAU,CAAC,GAAX,IAAqB,MAAM,CAAC,CAA5B,CAAA;IACA,UAAU,CAAC,MAAX,IAAqB,MAAM,CAAC,CAA5B,CAAA;GACD;;EAED,OAAO,UAAP,CAAA;CACD;;AAEK,SAAU,OAAV,CAAmB,IAAnB,EAAuB;EAC3B,IAAM,IAAI,GAAG,EAAb,CAAA;;EAEA,OAAO,IAAP,EAAa;IACX,IAAI,CAAC,IAAL,CAAU,IAAV,CAAA,CAAA;IACA,IAAI,GAAG,UAAU,CAAC,IAAD,CAAjB,CAAA;GACD;;EAED,OAAO,IAAP,CAAA;CACD;;AAEK,SAAU,WAAV,CAAuB,KAAvB,EAA4B;EAChC,IAAI,CAAC,OAAE,CAAC,MAAH,CAAU,KAAV,CAAL,EAAuB;IAAE,OAAO,KAAP,CAAA;GADO;;;EAIhC,gBAAA,CAAA,SAAA,CAAA,CAAW,QAAX,CAAoB,aAApB,CAAkC,KAAlC,CAAA,CAAA;;EACA,OAAO,IAAP,CAAA;CACD;;;;;;;;;;ACzOD,IAAA,GAAA,GAAA,4BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;;;AAEc,SAAU,KAAV,CAAmD,MAAnD,EAA4D;EACxE,IAAM,IAAI,GAAG,EAAb,CAAA;;EAEA,KAAK,IAAM,IAAX,IAAmB,MAAnB,EAA2B;IACzB,IAAM,KAAK,GAAG,MAAM,CAAC,IAAD,CAApB,CAAA;;IAEA,IAAI,OAAE,CAAC,WAAH,CAAe,KAAf,CAAJ,EAA2B;MACzB,IAAI,CAAC,IAAD,CAAJ,GAAa,KAAK,CAAC,KAAD,CAAlB,CAAA;KADF,MAGK,IAAI,OAAE,CAAC,KAAH,CAAS,KAAT,CAAJ,EAAqB;MACxB,IAAI,CAAC,IAAD,CAAJ,GAAa,GAAG,CAAC,IAAJ,CAAS,KAAT,CAAb,CAAA;KADG,MAGA;MACH,IAAI,CAAC,IAAD,CAAJ,GAAa,KAAb,CAAA;KACD;GACF;;EAED,OAAO,IAAP,CAAA;CACD;;;;;;;;;;AChBD,SAAS,aAAT,CAAwB,IAAxB,EAA8B,MAA9B,EAAoC;EAClC,KAAK,IAAM,IAAX,IAAmB,MAAnB,EAA2B;IACzB,IAAM,eAAe,GAAG,aAAa,CAAC,eAAtC,CAAA;IACA,IAAI,UAAU,GAAG,KAAjB,CAFyB;;IAKzB,KAAK,IAAM,MAAX,IAAqB,eAArB,EAAsC;MACpC,IAAI,IAAI,CAAC,OAAL,CAAa,MAAb,CAAA,KAAyB,CAAzB,IAA8B,eAAe,CAAC,MAAD,CAAf,CAAwB,IAAxB,CAA6B,IAA7B,CAAlC,EAAsE;QACpE,UAAU,GAAG,IAAb,CAAA;QACA,MAAA;OACD;KACF;;IAED,IAAI,CAAC,UAAD,IAAe,OAAO,MAAM,CAAC,IAAD,CAAb,KAAwB,UAA3C,EAAuD;MACrD,IAAI,CAAC,IAAD,CAAJ,GAAa,MAAM,CAAC,IAAD,CAAnB,CAAA;KACD;GACF;;EACD,OAAO,IAAP,CAAA;CACD;;AAED,aAAa,CAAC,eAAd,GAAgC;EAC9B,MAAM,EAAE,gDAAA;CADV,CAAA;oBAIe;;;;;;;;;;;oBC7BA,SAAA,QAAA,CAAC,CAAD,EAAI,CAAJ,EAAA;EAAA,OAAW,IAAI,CAAC,IAAL,CAAU,CAAC,GAAG,CAAJ,GAAQ,CAAC,GAAG,CAAtB,CAAX,CAAA;;;;;;;;;;;;;ACAf,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,gBAAA,GAAA,2BAAA,CAAA,eAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,cAAA,GAAA,2BAAA,CAAA,kBAAA,CAAA,CAAA;;;;;;AAEA,IAAM,YAAY,GAAG;EACnB,UADmB,EAAA,SAAA,UAAA,CACP,IADO,EACD,GADC,EACE;IACnB,IAAI,CAAC,IAAL,GAAY,IAAI,CAAC,IAAL,IAAa,EAAzB,CAAA;IACA,IAAI,CAAC,IAAL,CAAU,CAAV,GAAc,GAAG,CAAC,IAAJ,CAAS,CAAvB,CAAA;IACA,IAAI,CAAC,IAAL,CAAU,CAAV,GAAc,GAAG,CAAC,IAAJ,CAAS,CAAvB,CAAA;IAEA,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,MAAL,IAAe,EAA7B,CAAA;IACA,IAAI,CAAC,MAAL,CAAY,CAAZ,GAAgB,GAAG,CAAC,MAAJ,CAAW,CAA3B,CAAA;IACA,IAAI,CAAC,MAAL,CAAY,CAAZ,GAAgB,GAAG,CAAC,MAAJ,CAAW,CAA3B,CAAA;IAEA,IAAI,CAAC,SAAL,GAAiB,GAAG,CAAC,SAArB,CAAA;GAViB;EAanB,cAbmB,EAAA,SAAA,cAAA,CAaH,SAbG,EAaQ,IAbR,EAac,GAbd,EAaiB;IAClC,SAAS,CAAC,IAAV,CAAe,CAAf,GAAsB,GAAG,CAAC,IAAJ,CAAS,CAAT,GAAgB,IAAI,CAAC,IAAL,CAAU,CAAhD,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,GAAsB,GAAG,CAAC,IAAJ,CAAS,CAAT,GAAgB,IAAI,CAAC,IAAL,CAAU,CAAhD,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAsB,GAAG,CAAC,MAAJ,CAAW,CAAX,GAAgB,IAAI,CAAC,MAAL,CAAY,CAAlD,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAsB,GAAG,CAAC,MAAJ,CAAW,CAAX,GAAgB,IAAI,CAAC,MAAL,CAAY,CAAlD,CAAA;IACA,SAAS,CAAC,SAAV,GAAsB,GAAG,CAAC,SAAJ,GAAgB,IAAI,CAAC,SAA3C,CAAA;GAlBiB;EAqBnB,gBArBmB,EAAA,SAAA,gBAAA,CAqBD,SArBC,EAqBU,KArBV,EAqBe;IAChC,IAAM,EAAE,GAAG,IAAI,CAAC,GAAL,CAAS,KAAK,CAAC,SAAN,GAAkB,IAA3B,EAAiC,KAAjC,CAAX,CAAA;IAEA,SAAS,CAAC,IAAV,CAAe,CAAf,GAAqB,KAAK,CAAC,IAAN,CAAW,CAAX,GAAe,EAApC,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,GAAqB,KAAK,CAAC,IAAN,CAAW,CAAX,GAAe,EAApC,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAqB,KAAK,CAAC,MAAN,CAAa,CAAb,GAAiB,EAAtC,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAqB,KAAK,CAAC,MAAN,CAAa,CAAb,GAAiB,EAAtC,CAAA;IACA,SAAS,CAAC,SAAV,GAAsB,EAAtB,CAAA;GA5BiB;EA+BnB,eA/BmB,EAAA,SAAA,eAAA,CA+BD,OA/BC,EA+BM;IACvB,OAAQ,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAI,KAAvB,IAAgC,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAI,KAA/D,CAAA;GAhCiB;;EAoCnB,KApCmB,EAAA,SAAA,KAAA,CAoCZ,IApCY,EAoCN,OApCM,EAoCG,EApCH,EAoCK;IACtB,EAAE,GAAG,EAAE,IAAI,EAAX,CAAA;IACA,IAAI,GAAG,IAAI,IAAI,MAAf,CAAA;IAEA,EAAE,CAAC,CAAH,GAAO,OAAO,CAAC,IAAI,GAAG,GAAR,CAAd,CAAA;IACA,EAAE,CAAC,CAAH,GAAO,OAAO,CAAC,IAAI,GAAG,GAAR,CAAd,CAAA;IAEA,OAAO,EAAP,CAAA;GA3CiB;EA8CnB,SA9CmB,EAAA,SAAA,SAAA,CA8CR,OA9CQ,EA8CgD,IA9ChD,EA8CqE;IACtF,IAAI,GAAG,IAAI,IAAI;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KAA1B,CADsF;;IAItF,IAAI,aAAA,CAAA,SAAA,CAAA,CAAQ,aAAR,IAAyB,YAAY,CAAC,eAAb,CAA6B,OAA7B,CAA7B,EAAoE;MAClE,YAAY,CAAC,KAAb,CAAmB,QAAnB,EAA6B,OAA7B,EAAsC,IAAtC,CAAA,CAAA;MAEA,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,OAAjB,CAAA;MACA,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,OAAjB,CAAA;KAJF,MAMK;MACH,YAAY,CAAC,KAAb,CAAmB,MAAnB,EAA2B,OAA3B,EAAoC,IAApC,CAAA,CAAA;KACD;;IAED,OAAO,IAAP,CAAA;GA5DiB;EA+DnB,WA/DmB,EAAA,SAAA,WAAA,CA+DN,OA/DM,EA+DG,MA/DH,EA+DS;IAC1B,MAAM,GAAG,MAAM,IAAI,EAAnB,CAAA;;IAEA,IAAI,aAAA,CAAA,SAAA,CAAA,CAAQ,aAAR,IAAyB,YAAY,CAAC,eAAb,CAA6B,OAA7B,CAA7B,EAAoE;;MAElE,YAAY,CAAC,KAAb,CAAmB,QAAnB,EAA6B,OAA7B,EAAsC,MAAtC,CAAA,CAAA;KAFF,MAIK;MACH,YAAY,CAAC,KAAb,CAAmB,QAAnB,EAA6B,OAA7B,EAAsC,MAAtC,CAAA,CAAA;KACD;;IAED,OAAO,MAAP,CAAA;GA1EiB;EA6EnB,YA7EmB,EAAA,SAAA,YAAA,CA6EL,OA7EK,EA6EE;IACnB,OAAO,OAAE,CAAC,MAAH,CAAU,OAAO,CAAC,SAAlB,CAAA,GAA+B,OAAO,CAAC,SAAvC,GAAmD,OAAO,CAAC,UAAlE,CAAA;GA9EiB;EAiFnB,SAjFmB,EAAA,SAAA,SAAA,CAiFR,SAjFQ,EAiFG,QAjFH,EAiFoB,SAjFpB,EAiFqC;IACtD,IAAM,OAAO,GAAI,QAAQ,CAAC,MAAT,GAAkB,CAAlB,GACb,YAAY,CAAC,cAAb,CAA4B,QAA5B,CADa,GAEb,QAAQ,CAAC,CAAD,CAFZ,CAAA;IAIA,IAAM,KAAK,GAAG,EAAd,CAAA;IAEA,YAAY,CAAC,SAAb,CAAuB,OAAvB,EAAgC,KAAhC,CAAA,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,GAAmB,KAAK,CAAC,CAAzB,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,GAAmB,KAAK,CAAC,CAAzB,CAAA;IAEA,YAAY,CAAC,WAAb,CAAyB,OAAzB,EAAkC,KAAlC,CAAA,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAqB,KAAK,CAAC,CAA3B,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,GAAqB,KAAK,CAAC,CAA3B,CAAA;IAEA,SAAS,CAAC,SAAV,GAAsB,SAAtB,CAAA;GAhGiB;EAmGnB,aAAa,EAAb,cAAA,CAAA,SAAA,CAnGmB;EAqGnB,YArGmB,EAAA,SAAA,YAAA,CAqGL,KArGK,EAqGA;IACjB,IAAM,OAAO,GAAG,EAAhB,CADiB;;IAIjB,IAAI,OAAE,CAAC,KAAH,CAAS,KAAT,CAAJ,EAAqB;MACnB,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,CAAD,CAAlB,CAAA;MACA,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,CAAD,CAAlB,CAAA;KAFF;SAKK;QACH,IAAI,KAAK,CAAC,IAAN,KAAe,UAAnB,EAA+B;UAC7B,IAAI,KAAK,CAAC,OAAN,CAAc,MAAd,KAAyB,CAA7B,EAAgC;YAC9B,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,OAAN,CAAc,CAAd,CAAb,CAAA;YACA,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,cAAN,CAAqB,CAArB,CAAb,CAAA;WAFF,MAIK,IAAI,KAAK,CAAC,OAAN,CAAc,MAAd,KAAyB,CAA7B,EAAgC;YACnC,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,cAAN,CAAqB,CAArB,CAAb,CAAA;YACA,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,cAAN,CAAqB,CAArB,CAAb,CAAA;WACD;SARH,MAUK;UACH,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,OAAN,CAAc,CAAd,CAAb,CAAA;UACA,OAAO,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,OAAN,CAAc,CAAd,CAAb,CAAA;SACD;OACF;;IAED,OAAO,OAAP,CAAA;GA/HiB;EAkInB,cAlImB,EAAA,SAAA,cAAA,CAkIH,QAlIG,EAkI+B;IAChD,IAAM,OAAO,GAAG;MACd,KAAK,EAAI,CADK;MAEd,KAAK,EAAI,CAFK;MAGd,OAAO,EAAE,CAHK;MAId,OAAO,EAAE,CAJK;MAKd,OAAO,EAAE,CALK;MAMd,OAAO,EAAE,CAAA;KANX,CAAA;;IASA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAsB,QAAtB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAgC;MAAA,IAAA,IAAA,CAAA;;MAAA,IAAA,GAAV,QAAU,CAAA,EAAA,CAAA,CAAA;MAAA,IAArB,OAAqB,GAAA,IAAA,CAAA;;MAC9B,KAAK,IAAM,KAAX,IAAmB,OAAnB,EAA4B;QAC1B,OAAO,CAAC,KAAD,CAAP,IAAiB,OAAO,CAAC,KAAD,CAAxB,CAAA;OACD;KACF;;IACD,KAAK,IAAM,IAAX,IAAmB,OAAnB,EAA4B;MAC1B,OAAO,CAAC,IAAD,CAAP,IAAiB,QAAQ,CAAC,MAA1B,CAAA;KACD;;IAED,OAAO,OAAP,CAAA;GArJiB;EAwJnB,SAxJmB,EAAA,SAAA,SAAA,CAwJR,KAxJQ,EAwJiD;IAClE,IAAI,CAAE,KAAa,CAAC,MAAhB,IACA,EAAG,KAAoB,CAAC,OAArB,IACA,KAAoB,CAAC,OAArB,CAA6B,MAA7B,GAAsC,CADzC,CADJ,EAEiD;MAC/C,OAAO,IAAP,CAAA;KACD;;IAED,IAAM,OAAO,GAAG,YAAY,CAAC,YAAb,CAA0B,KAA1B,CAAhB,CAAA;IACA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,CAAD,CAAP,CAAW,KAApB,EAA2B,OAAO,CAAC,CAAD,CAAP,CAAW,KAAtC,CAAb,CAAA;IACA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,CAAD,CAAP,CAAW,KAApB,EAA2B,OAAO,CAAC,CAAD,CAAP,CAAW,KAAtC,CAAb,CAAA;IACA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,CAAD,CAAP,CAAW,KAApB,EAA2B,OAAO,CAAC,CAAD,CAAP,CAAW,KAAtC,CAAb,CAAA;IACA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,CAAD,CAAP,CAAW,KAApB,EAA2B,OAAO,CAAC,CAAD,CAAP,CAAW,KAAtC,CAAb,CAAA;IAEA,OAAO;MACL,CAAC,EAAE,IADE;MAEL,CAAC,EAAE,IAFE;MAGL,IAAI,EAAE,IAHD;MAIL,GAAG,EAAE,IAJA;MAKL,KAAK,EAAE,IALF;MAML,MAAM,EAAE,IANH;MAOL,KAAK,EAAE,IAAI,GAAG,IAPT;MAQL,MAAM,EAAE,IAAI,GAAG,IAAA;KARjB,CAAA;GArKiB;EAiLnB,aAjLmB,EAAA,SAAA,aAAA,CAiLJ,KAjLI,EAiLG,WAjLH,EAiLc;IAC/B,IAAM,OAAO,GAAG,WAAW,GAAG,GAA9B,CAAA;IACA,IAAM,OAAO,GAAG,WAAW,GAAG,GAA9B,CAAA;IACA,IAAM,OAAO,GAAG,YAAY,CAAC,YAAb,CAA0B,KAA1B,CAAhB,CAAA;IAEA,IAAM,EAAE,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAA,GAAsB,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAjC,CAAA;IACA,IAAM,EAAE,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAA,GAAsB,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAjC,CAAA;IAEA,OAAO,CAAA,CAAA,EAAA,MAAA,CAAA,SAAA,CAAA,EAAM,EAAN,EAAU,EAAV,CAAP,CAAA;GAzLiB;EA4LnB,UA5LmB,EAAA,SAAA,UAAA,CA4LP,KA5LO,EA4LA,WA5LA,EA4LW;IAC5B,IAAM,OAAO,GAAG,WAAW,GAAG,GAA9B,CAAA;IACA,IAAM,OAAO,GAAG,WAAW,GAAG,GAA9B,CAAA;IACA,IAAM,OAAO,GAAG,YAAY,CAAC,YAAb,CAA0B,KAA1B,CAAhB,CAAA;IACA,IAAM,EAAE,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAA,GAAsB,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAjC,CAAA;IACA,IAAM,EAAE,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAA,GAAsB,OAAO,CAAC,CAAD,CAAP,CAAW,OAAX,CAAjC,CAAA;IACA,IAAM,KAAK,GAAG,GAAA,GAAM,IAAI,CAAC,KAAL,CAAW,EAAX,EAAe,EAAf,CAAN,GAA2B,IAAI,CAAC,EAA9C,CAAA;IAEA,OAAQ,KAAR,CAAA;GApMiB;EAuMnB,cAvMmB,EAAA,SAAA,cAAA,CAuMH,OAvMG,EAuMI;IACrB,OAAO,OAAE,CAAC,MAAH,CAAU,OAAO,CAAC,WAAlB,CAAA,GACH,OAAO,CAAC,WADL,GAEH,OAAE,CAAC,MAAH,CAAU,OAAO,CAAC,WAAlB,CAAA,GACE,CAAC,SAAD,EAAY,SAAZ,EAAuB,OAAvB,EAAgC,KAAhC,EAAuC,OAAvC,CAAA,CAAgD,OAAO,CAAC,WAAxD,CADF;;MAIE,OAAA,CAAQ,IAAR,CAAa,OAAO,CAAC,IAArB,CAAA,IAA8B,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAI,KAArD,GACE,OADF,GAEE,OARR,CAAA;GAxMiB;;EAoNnB,eApNmB,EAAA,SAAA,eAAA,CAoNF,KApNE,EAoNG;IACpB,IAAM,IAAI,GAAG,OAAE,CAAC,IAAH,CAAQ,KAAK,CAAC,YAAd,CAAA,GAA8B,KAAK,CAAC,YAAN,EAA9B,GAAqD,KAAK,CAAC,IAAxE,CAAA;IAEA,OAAO,CACL,QAAQ,CAAC,gBAAT,CAA0B,IAAI,GAAG,IAAI,CAAC,CAAD,CAAP,GAAa,KAAK,CAAC,MAAjD,CADK,EAEL,QAAQ,CAAC,gBAAT,CAA0B,KAAK,CAAC,aAAhC,CAFK,CAAP,CAAA;GAvNiB;EA6NnB,SA7NmB,EAAA,SAAA,SAAA,GA6NV;IACP,OAAO;MACL,IAAI,EAAO;QAAE,CAAC,EAAE,CAAL;QAAQ,CAAC,EAAE,CAAA;OADjB;MAEL,MAAM,EAAK;QAAE,CAAC,EAAE,CAAL;QAAQ,CAAC,EAAE,CAAA;OAFjB;MAGL,SAAS,EAAE,CAAA;KAHb,CAAA;GA9NiB;EAqOnB,aArOmB,EAAA,SAAA,aAAA,CAqOJ,MArOI,EAqOc;IAC/B,IAAM,KAAK,GAAG;MACZ,MAAM,EAAN,MADY;;MAEZ,IAAI,IAAJ,GAAQ;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,IAAnB,CAAA;OAFF;;MAGZ,IAAI,MAAJ,GAAU;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,MAAnB,CAAA;OAHJ;;MAIZ,IAAI,SAAJ,GAAa;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,SAAnB,CAAA;OAJP;;MAKZ,IAAI,KAAJ,GAAS;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,CAAxB,CAAA;OALH;;MAMZ,IAAI,KAAJ,GAAS;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,CAAxB,CAAA;OANH;;MAOZ,IAAI,OAAJ,GAAW;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,MAAZ,CAAmB,CAA1B,CAAA;OAPL;;MAQZ,IAAI,OAAJ,GAAW;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,MAAZ,CAAmB,CAA1B,CAAA;OARL;;MASZ,IAAI,SAAJ,GAAa;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,SAAnB,CAAA;OATP;;MAUZ,IAAI,MAAJ,GAAU;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,MAAnB,CAAA;OAVJ;;MAWZ,IAAI,IAAJ,GAAQ;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,IAAnB,CAAA;OAXF;;MAYZ,IAAI,WAAJ,GAAe;QAAM,OAAO,IAAA,CAAK,MAAL,CAAY,WAAnB,CAAA;OAAgC;;KAZvD,CAAA;IAeA,OAAO,KAAP,CAAA;GACD;CAtPH,CAAA;oBAyPe;;;;;;;;;;;AChQf,gDAAA;;AACA,IAAA,aAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,mBAAA,GAAA,2BAAA,CAAA,kBAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,iBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;AAIA,IAAM,QAAQ,GAAkB,EAAhC,CAAA;AACA,IAAM,OAAO,GAGR,EAHL,CAAA;AAKA,IAAM,eAAe,GAMjB,EANJ,CAAA;AAOA,IAAM,SAAS,GAAe,EAA9B,CAAA;;AAEA,SAAS,GAAT,CAAc,OAAd,EAAoC,IAApC,EAAkD,QAAlD,EAAsE,WAAtE,EAAiG;EAC/F,IAAM,OAAO,GAAG,UAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAI,YAAY,GAAG,QAAQ,CAAC,OAAT,CAAiB,OAAjB,CAAnB,CAAA;EACA,IAAI,MAAM,GAAG,OAAO,CAAC,YAAD,CAApB,CAAA;;EAEA,IAAI,CAAC,MAAL,EAAa;IACX,MAAM,GAAG;MACP,MAAM,EAAE,EADD;MAEP,SAAS,EAAE,CAAA;KAFb,CAAA;IAKA,YAAY,GAAG,QAAQ,CAAC,IAAT,CAAc,OAAd,CAAA,GAAyB,CAAxC,CAAA;IACA,OAAO,CAAC,IAAR,CAAa,MAAb,CAAA,CAAA;GACD;;EAED,IAAI,CAAC,MAAM,CAAC,MAAP,CAAc,IAAd,CAAL,EAA0B;IACxB,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,GAAsB,EAAtB,CAAA;IACA,MAAM,CAAC,SAAP,EAAA,CAAA;GACD;;EAED,IAAI,CAAC,CAAA,CAAA,EAAA,QAAA,CAAA,QAAA,EAAS,MAAM,CAAC,MAAP,CAAc,IAAd,CAAT,EAA8B,QAA9B,CAAL,EAA8C;IAC5C,OAAO,CAAC,gBAAR,CAAyB,IAAzB,EAA+B,QAA/B,EAAgD,MAAM,CAAC,eAAP,GAAyB,OAAzB,GAAmC,CAAC,CAAC,OAAO,CAAC,OAA7F,CAAA,CAAA;IACA,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,IAApB,CAAyB,QAAzB,CAAA,CAAA;GACD;CACF;;AAED,SAAS,WAAT,CAAiB,OAAjB,EAAuC,IAAvC,EAAqD,QAArD,EAAkF,WAAlF,EAA6G;EAC3G,IAAM,OAAO,GAAG,UAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAM,YAAY,GAAG,QAAQ,CAAC,OAAT,CAAiB,OAAjB,CAArB,CAAA;EACA,IAAM,MAAM,GAAG,OAAO,CAAC,YAAD,CAAtB,CAAA;;EAEA,IAAI,CAAC,MAAD,IAAW,CAAC,MAAM,CAAC,MAAvB,EAA+B;IAC7B,OAAA;GACD;;EAED,IAAI,IAAI,KAAK,KAAb,EAAoB;IAClB,KAAK,IAAL,IAAa,MAAM,CAAC,MAApB,EAA4B;MAC1B,IAAI,MAAM,CAAC,MAAP,CAAc,cAAd,CAA6B,IAA7B,CAAJ,EAAwC;QACtC,WAAM,CAAC,OAAD,EAAU,IAAV,EAAgB,KAAhB,CAAN,CAAA;OACD;KACF;;IACD,OAAA;GACD;;EAED,IAAI,MAAM,CAAC,MAAP,CAAc,IAAd,CAAJ,EAAyB;IACvB,IAAM,GAAG,GAAG,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,MAAhC,CAAA;;IAEA,IAAI,QAAQ,KAAK,KAAjB,EAAwB;MACtB,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,GAApB,EAAyB,CAAC,EAA1B,EAA8B;QAC5B,WAAM,CAAC,OAAD,EAAU,IAAV,EAAgB,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,CAApB,CAAhB,EAAwC,OAAxC,CAAN,CAAA;OACD;;MACD,OAAA;KAJF,MAMK;MACH,KAAK,IAAI,EAAC,GAAG,CAAb,EAAgB,EAAC,GAAG,GAApB,EAAyB,EAAC,EAA1B,EAA8B;QAC5B,IAAI,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,EAApB,CAAA,KAA2B,QAA/B,EAAyC;UACvC,OAAO,CAAC,mBAAR,CAA4B,IAA5B,EAAkC,QAAlC,EAAmD,MAAM,CAAC,eAAP,GAAyB,OAAzB,GAAmC,CAAC,CAAC,OAAO,CAAC,OAAhG,CAAA,CAAA;UACA,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,MAApB,CAA2B,EAA3B,EAA8B,CAA9B,CAAA,CAAA;UAEA,MAAA;SACD;OACF;KACF;;IAED,IAAI,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,IAAuB,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,CAAoB,MAApB,KAA+B,CAA1D,EAA6D;MAC1D,MAAM,CAAC,MAAP,CAAc,IAAd,CAAA,GAA8B,IAA9B,CAAA;MACD,MAAM,CAAC,SAAP,EAAA,CAAA;KACD;GACF;;EAED,IAAI,CAAC,MAAM,CAAC,SAAZ,EAAuB;IACrB,OAAO,CAAC,MAAR,CAAe,YAAf,EAA6B,CAA7B,CAAA,CAAA;IACA,QAAQ,CAAC,MAAT,CAAgB,YAAhB,EAA8B,CAA9B,CAAA,CAAA;GACD;CACF;;AAED,SAAS,WAAT,CAAsB,QAAtB,EAAwC,OAAxC,EAAuD,IAAvD,EAAqE,QAArE,EAAyF,WAAzF,EAA0G;EACxG,IAAM,OAAO,GAAG,UAAU,CAAC,WAAD,CAA1B,CAAA;;EACA,IAAI,CAAC,eAAe,CAAC,IAAD,CAApB,EAA4B;IAC1B,eAAe,CAAC,IAAD,CAAf,GAAwB;MACtB,QAAQ,EAAG,EADW;MAEtB,SAAS,EAAE,EAFW;MAGtB,SAAS,EAAE,EAAA;KAHb,CAD0B;;IAQ1B,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAkB,SAAlB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA6B;MAAxB,IAAM,GAAG,GAAI,SAAJ,CAAA,GAAA,CAAT,CAAA;MACH,GAAG,CAAC,GAAD,EAAM,IAAN,EAAY,gBAAZ,CAAH,CAAA;MACA,GAAG,CAAC,GAAD,EAAM,IAAN,EAAY,kBAAZ,EAAgC,IAAhC,CAAH,CAAA;KACD;GACF;;EAED,IAAM,SAAS,GAAG,eAAe,CAAC,IAAD,CAAjC,CAAA;EACA,IAAI,KAAJ,CAAA;;EAEA,KAAK,KAAK,GAAG,SAAS,CAAC,SAAV,CAAoB,MAApB,GAA6B,CAA1C,EAA6C,KAAK,IAAI,CAAtD,EAAyD,KAAK,EAA9D,EAAkE;IAChE,IAAI,SAAS,CAAC,SAAV,CAAoB,KAApB,CAAA,KAA+B,QAA/B,IACA,SAAS,CAAC,QAAV,CAAmB,KAAnB,CAAA,KAA8B,OADlC,EAC2C;MACzC,MAAA;KACD;GACF;;EAED,IAAI,KAAK,KAAK,CAAC,CAAf,EAAkB;IAChB,KAAK,GAAG,SAAS,CAAC,SAAV,CAAoB,MAA5B,CAAA;IAEA,SAAS,CAAC,SAAV,CAAoB,IAApB,CAAyB,QAAzB,CAAA,CAAA;IACA,SAAS,CAAC,QAAV,CAAmB,IAAnB,CAAwB,OAAxB,CAAA,CAAA;IACA,SAAS,CAAC,SAAV,CAAoB,IAApB,CAAyB,EAAzB,CAAA,CAAA;GA/BsG;;;EAmCxG,SAAS,CAAC,SAAV,CAAoB,KAApB,CAAA,CAA2B,IAA3B,CAAgC,CAAC,QAAD,EAAW,CAAC,CAAC,OAAO,CAAC,OAArB,EAA8B,OAAO,CAAC,OAAtC,CAAhC,CAAA,CAAA;CACD;;AAED,SAAS,cAAT,CAAyB,QAAzB,EAAmC,OAAnC,EAA4C,IAA5C,EAAkD,QAAlD,EAA6D,WAA7D,EAA8E;EAC5E,IAAM,OAAO,GAAG,UAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAM,SAAS,GAAG,eAAe,CAAC,IAAD,CAAjC,CAAA;EACA,IAAI,UAAU,GAAG,KAAjB,CAAA;EACA,IAAI,KAAJ,CAAA;;EAEA,IAAI,CAAC,SAAL,EAAgB;IAAE,OAAA;GAN0D;;;EAS5E,KAAK,KAAK,GAAG,SAAS,CAAC,SAAV,CAAoB,MAApB,GAA6B,CAA1C,EAA6C,KAAK,IAAI,CAAtD,EAAyD,KAAK,EAA9D,EAAkE;;IAEhE,IAAI,SAAS,CAAC,SAAV,CAAoB,KAApB,CAAA,KAA+B,QAA/B,IACA,SAAS,CAAC,QAAV,CAAmB,KAAnB,CAAA,KAA8B,OADlC,EAC2C;MACzC,IAAM,SAAS,GAAG,SAAS,CAAC,SAAV,CAAoB,KAApB,CAAlB,CADyC;;MAIzC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAV,GAAmB,CAAhC,EAAmC,CAAC,IAAI,CAAxC,EAA2C,CAAC,EAA5C,EAAgD;QAAA,IAAA,YAAA,GAAA,cAAA,CACf,SAAS,CAAC,CAAD,CADM,EAAA,CAAA,CAAA;YACvC,EADuC,GAAA,YAAA,CAAA,CAAA,CAAA;YACnC,OADmC,GAAA,YAAA,CAAA,CAAA,CAAA;YAC1B,OAD0B,GAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;;QAI9C,IAAI,EAAE,KAAK,QAAP,IAAmB,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,OAAzC,IAAoD,OAAO,KAAK,OAAO,CAAC,OAA5E,EAAqF;;UAEnF,SAAS,CAAC,MAAV,CAAiB,CAAjB,EAAoB,CAApB,CAAA,CAFmF;;;UAMnF,IAAI,CAAC,SAAS,CAAC,MAAf,EAAuB;YACrB,SAAS,CAAC,SAAV,CAAoB,MAApB,CAA2B,KAA3B,EAAkC,CAAlC,CAAA,CAAA;YACA,SAAS,CAAC,QAAV,CAAmB,MAAnB,CAA0B,KAA1B,EAAiC,CAAjC,CAAA,CAAA;YACA,SAAS,CAAC,SAAV,CAAoB,MAApB,CAA2B,KAA3B,EAAkC,CAAlC,CAAA,CAHqB;;YAMrB,WAAM,CAAC,OAAD,EAAU,IAAV,EAAgB,gBAAhB,CAAN,CAAA;YACA,WAAM,CAAC,OAAD,EAAU,IAAV,EAAgB,kBAAhB,EAAoC,IAApC,CAAN,CAPqB;;YAUrB,IAAI,CAAC,SAAS,CAAC,SAAV,CAAoB,MAAzB,EAAiC;cAC/B,eAAe,CAAC,IAAD,CAAf,GAAwB,IAAxB,CAAA;aACD;WAlBgF;;;UAsBnF,UAAU,GAAG,IAAb,CAAA;UACA,MAAA;SACD;OACF;;MAED,IAAI,UAAJ,EAAgB;QAAE,MAAA;OAAO;KAC1B;GACF;;;;;AAKH,SAAS,gBAAT,CAA2B,KAA3B,EAAyC,WAAzC,EAA0D;EACxD,IAAM,OAAO,GAAG,UAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAM,SAAS,GAAG,IAAI,SAAJ,CAAc,KAAd,CAAlB,CAAA;EACA,IAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,IAAP,CAAjC,CAAA;;EAHwD,IAAA,qBAAA,GAIjC,aAAA,CAAA,SAAA,CAAA,CAAa,eAAb,CAA6B,KAA7B,CAJiC;MAAA,sBAAA,GAAA,cAAA,CAAA,qBAAA,EAAA,CAAA,CAAA;MAIjD,WAJiD,GAAA,sBAAA,CAAA,CAAA,CAAA,CAAA;;EAKxD,IAAI,OAAO,GAAG,WAAd,CALwD;;EAQxD,OAAO,OAAE,CAAC,OAAH,CAAW,OAAX,CAAP,EAA4B;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,SAAS,CAAC,SAAV,CAAoB,MAAxC,EAAgD,CAAC,EAAjD,EAAqD;MACnD,IAAM,QAAQ,GAAG,SAAS,CAAC,SAAV,CAAoB,CAApB,CAAjB,CAAA;MACA,IAAM,OAAO,GAAG,SAAS,CAAC,QAAV,CAAmB,CAAnB,CAAhB,CAAA;;MAEA,IAAI,aAAQ,CAAC,eAAT,CAAyB,OAAzB,EAAkC,QAAlC,CAAA,IACA,aAAQ,CAAC,YAAT,CAAsB,OAAtB,EAA+B,WAA/B,CADA,IAEA,aAAQ,CAAC,YAAT,CAAsB,OAAtB,EAA+B,OAA/B,CAFJ,EAE6C;QAC3C,IAAM,SAAS,GAAG,SAAS,CAAC,SAAV,CAAoB,CAApB,CAAlB,CAAA;QAEA,SAAS,CAAC,aAAV,GAA0B,OAA1B,CAAA;;QAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAqC,SAArC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAgD;UAAA,IAAA,IAAA,CAAA;;UAAA,IAAA,GAAX,SAAW,CAAA,GAAA,CAAA,CAAA;;UAAA,IAAA,KAAA,GAAA,IAAA;cAAA,KAAA,GAAA,cAAA,CAAA,KAAA,EAAA,CAAA,CAAA;cAApC,EAAoC,GAAA,KAAA,CAAA,CAAA,CAAA;cAAhC,OAAgC,GAAA,KAAA,CAAA,CAAA,CAAA;cAAvB,OAAuB,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;UAC9C,IAAI,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,OAAtB,IAAiC,OAAO,KAAK,OAAO,CAAC,OAAzD,EAAkE;YAChE,EAAE,CAAC,SAAD,CAAF,CAAA;WACD;SACF;OACF;KACF;;IAED,OAAO,GAAG,aAAQ,CAAC,UAAT,CAAoB,OAApB,CAAV,CAAA;GACD;CACF;;AAED,SAAS,kBAAT,CAA6B,KAA7B,EAAyC;EACvC,OAAO,gBAAgB,CAAC,IAAjB,CAAsB,IAAtB,EAA4B,KAA5B,EAAmC,IAAnC,CAAP,CAAA;CACD;;AAED,SAAS,UAAT,CAAqB,KAArB,EAA0B;EACxB,OAAO,OAAE,CAAC,MAAH,CAAU,KAAV,CAAA,GAAmB,KAAnB,GAA2B;IAAE,OAAO,EAAE,KAAA;GAA7C,CAAA;CACD;;IAEY;;;EAGX,SAAA,SAAA,CAAoB,aAApB,EAAiC;IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;IAAb,IAAA,CAAA,aAAA,GAAA,aAAA,CAAa;;IAE/B,CAAA,CAAA,EAAA,mBAAA,CAAA,SAAA,CAAA,EAAQ,IAAR,EAAc,aAAd,CAAA,CAAA;GACD;;;;6CAEqB;MACpB,IAAA,CAAK,aAAL,CAAmB,cAAnB,EAAA,CAAA;KACD;;;sCAEc;MACb,IAAA,CAAK,aAAL,CAAmB,eAAnB,EAAA,CAAA;KACD;;;+CAEuB;MACtB,IAAA,CAAK,aAAL,CAAmB,wBAAnB,EAAA,CAAA;KACD;;;;;;;AAGH,IAAM,MAAM,GAAG;EACb,GAAG,EAAH,GADa;EAEb,MAAM,EAAN,WAFa;EAIb,WAAW,EAAX,WAJa;EAKb,cAAc,EAAd,cALa;EAOb,gBAAgB,EAAhB,gBAPa;EAQb,kBAAkB,EAAlB,kBARa;EASb,eAAe,EAAf,eATa;EAUb,SAAS,EAAT,SAVa;EAYb,eAAe,EAAE,KAZJ;EAab,eAAe,EAAE,KAbJ;EAeb,SAAS,EAAE,QAfE;EAgBb,QAAQ,EAAE,OAhBG;EAkBb,IAlBa,EAAA,SAAA,IAAA,CAkBP,MAlBO,EAkBO;IAClB,MAAM,CAAC,QAAP,CAAgB,aAAhB,CAA8B,KAA9B,CAAA,CAAqC,gBAArC,CAAsD,MAAtD,EAA8D,IAA9D,EAAoE;MAClE,IAAI,OAAJ,GAAW;QAAM,OAAQ,MAAM,CAAC,eAAP,GAAyB,IAAjC,CAAA;OADiD;;MAElE,IAAI,OAAJ,GAAW;QAAM,OAAQ,MAAM,CAAC,eAAP,GAAyB,IAAjC,CAAA;OAAwC;;KAF3D,CAAA,CAAA;GAID;CAvBH,CAAA;oBA0Be;;;;;;;;;;;ACtRD,SAAU,MAAV,CAA2C,IAA3C,EAAoD,MAApD,EAA6D;EACzE,KAAK,IAAM,IAAX,IAAmB,MAAnB,EAA2B;IACxB,IAAqB,CAAC,IAAD,CAArB,GAA8B,MAAM,CAAC,IAAD,CAApC,CAAA;GACF;;EACD,OAAO,IAAP,CAAA;CACD;;;;;;;;;;;;;;;ACLD,0DAAA;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;;;;;AAEM,SAAU,qBAAV,CAAiC,KAAjC,EAAwC,YAAxC,EAAsD,OAAtD,EAA6D;EACjE,IAAI,CAAC,OAAE,CAAC,MAAH,CAAU,KAAV,CAAL,EAAuB;IACrB,OAAO,IAAP,CAAA;GACD;;EAED,IAAI,KAAK,KAAK,QAAd,EAAwB;IACtB,KAAK,GAAG,CAAA,CAAA,EAAA,aAAA,CAAA,UAAA,EAAW,OAAX,CAAR,CAAA;GADF,MAGK,IAAI,KAAK,KAAK,MAAd,EAAsB;IACzB,KAAK,GAAG,YAAY,CAAC,OAAb,CAAqB,OAArB,CAAR,CAAA;GADG,MAGA;IACH,KAAK,GAAG,CAAA,CAAA,EAAA,aAAA,CAAA,OAAA,EAAQ,OAAR,EAAiB,KAAjB,CAAR,CAAA;GACD;;EAED,OAAO,KAAP,CAAA;CACD;;AAEK,SAAU,eAAV,CAA2B,KAA3B,EAAkC,YAAlC,EAAiD,OAAjD,EAA2D,YAA3D,EAAwE;EAC5E,KAAK,GAAG,qBAAqB,CAAC,KAAD,EAAQ,YAAR,EAAsB,OAAtB,CAArB,IAAuD,KAA/D,CAAA;;EAEA,IAAI,OAAE,CAAC,IAAH,CAAQ,KAAR,CAAJ,EAAoB;IAClB,KAAK,GAAG,KAAK,CAAC,KAAN,CAAY,IAAZ,EAAkB,YAAlB,CAAR,CAAA;GACD;;EAED,IAAI,OAAE,CAAC,OAAH,CAAW,KAAX,CAAJ,EAAuB;IACrB,KAAK,GAAG,CAAA,CAAA,EAAA,aAAA,CAAA,cAAA,EAAe,KAAf,CAAR,CAAA;GACD;;EAED,OAAO,KAAP,CAAA;CACD;;AAEK,SAAU,QAAV,CAAoB,IAApB,EAAwB;EAC5B,OAAQ,IAAI,IAAI;IACd,CAAC,EAAE,GAAA,IAAO,IAAP,GAAc,IAAI,CAAC,CAAnB,GAAuB,IAAI,CAAC,IADjB;IAEd,CAAC,EAAE,GAAA,IAAO,IAAP,GAAc,IAAI,CAAC,CAAnB,GAAuB,IAAI,CAAC,GAAA;GAFjC,CAAA;CAID;;AAEK,SAAU,UAAV,CAAsB,IAAtB,EAA0B;EAC9B,IAAI,IAAI,IAAI,EAAE,MAAA,IAAU,IAAV,IAAkB,KAAA,IAAS,IAA7B,CAAZ,EAAgD;IAC9C,IAAI,GAAG,CAAA,CAAA,EAAA,OAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,IAAX,CAAP,CAAA;IAEA,IAAI,CAAC,IAAL,GAAc,IAAI,CAAC,CAAL,IAAU,CAAxB,CAAA;IACA,IAAI,CAAC,GAAL,GAAc,IAAI,CAAC,CAAL,IAAU,CAAxB,CAAA;IACA,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,KAAL,IAAiB,IAAI,CAAC,IAAL,GAAY,IAAI,CAAC,KAAhD,CAAA;IACA,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,MAAL,IAAiB,IAAI,CAAC,GAAL,GAAW,IAAI,CAAC,MAA/C,CAAA;GACD;;EAED,OAAO,IAAP,CAAA;CACD;;AAEK,SAAU,UAAV,CAAsB,IAAtB,EAA0B;EAC9B,IAAI,IAAI,IAAI,EAAE,GAAA,IAAO,IAAP,IAAe,GAAA,IAAO,IAAxB,CAAZ,EAA2C;IACzC,IAAI,GAAG,CAAA,CAAA,EAAA,OAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,IAAX,CAAP,CAAA;IAEA,IAAI,CAAC,CAAL,GAAc,IAAI,CAAC,IAAL,IAAa,CAA3B,CAAA;IACA,IAAI,CAAC,CAAL,GAAc,IAAI,CAAC,GAAL,IAAa,CAA3B,CAAA;IACA,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,KAAL,IAAgB,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,CAAjD,CAAA;IACA,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,MAAL,IAAgB,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,CAAjD,CAAA;GACD;;EAED,OAAO,IAAP,CAAA;CACD;;oBAEc;EACb,qBAAqB,EAArB,qBADa;EAEb,eAAe,EAAf,eAFa;EAGb,QAAQ,EAAR,QAHa;EAIb,UAAU,EAAV,UAJa;EAKb,UAAU,EAAV,UAAA;;;;;;;;;;;;AC1EF,kDAAA;;AAEc,SAAA,aAAA,CAAW,MAAX,EAAmB,OAAnB,EAA4B,MAA5B,EAAmC;EAC/C,IAAM,aAAa,GAAG,MAAM,CAAC,OAAP,CAAe,MAAf,CAAtB,CAAA;EACA,IAAM,YAAY,GAAG,aAAa,IAAI,aAAa,CAAC,MAApD,CAAA;EACA,IAAM,MAAM,GAAG,YAAY,IAAI,MAAM,CAAC,OAAP,CAAe,MAA9C,CAAA;EAEA,IAAM,UAAU,GAAG,CAAA,CAAA,EAAA,SAAA,CAAA,eAAA,EAAgB,MAAhB,EAAwB,MAAxB,EAAgC,OAAhC,EAAyC,CAAC,MAAM,IAAI,OAAX,CAAzC,CAAnB,CAAA;EAEA,OAAO,CAAA,CAAA,EAAA,SAAA,CAAA,QAAA,EAAS,UAAT,CAAA,IAAwB;IAAE,CAAC,EAAE,CAAL;IAAQ,CAAC,EAAE,CAAA;GAA1C,CAAA;CACD;;;;;;;;;;ACVD,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;;;;;AAMc,SAAU,SAAV,CACZ,IADY,EAEZ,SAFY,EAGZ,MAHY,EAGgB;EAE5B,MAAM,GAAG,MAAM,IAAI,EAAnB,CAAA;;EAEA,IAAI,OAAE,CAAC,MAAH,CAAU,IAAV,CAAA,IAAmB,IAAI,CAAC,MAAL,CAAY,GAAZ,CAAA,KAAqB,CAAC,CAA7C,EAAgD;IAC9C,IAAI,GAAG,KAAK,CAAC,IAAD,CAAZ,CAAA;GACD;;EAED,IAAI,OAAE,CAAC,KAAH,CAAS,IAAT,CAAJ,EAAoB;IAClB,OAAO,IAAI,CAAC,MAAL,CACL,UAAC,GAAD,EAAM,CAAN,EAAA;MAAA,OAAY,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,GAAP,EAAY,SAAS,CAAC,CAAD,EAAI,SAAJ,EAAe,MAAf,CAArB,CAAZ,CAAA;KADK,EAEL,MAFK,CAAP,CAAA;GAT0B;;;EAgB5B,IAAI,OAAE,CAAC,MAAH,CAAU,IAAV,CAAJ,EAAqB;IACnB,SAAS,GAAG,IAAZ,CAAA;IACA,IAAI,GAAG,EAAP,CAAA;GACD;;EAED,IAAI,OAAE,CAAC,IAAH,CAAQ,SAAR,CAAJ,EAAwB;IACtB,MAAM,CAAC,IAAD,CAAN,GAAe,MAAM,CAAC,IAAD,CAAN,IAAgB,EAA/B,CAAA;IACA,MAAM,CAAC,IAAD,CAAN,CAAa,IAAb,CAAkB,SAAlB,CAAA,CAAA;GAFF,MAIK,IAAI,OAAE,CAAC,KAAH,CAAS,SAAT,CAAJ,EAAyB;IAC5B,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAgB,SAAhB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA2B;MAAA,IAAA,IAAA,CAAA;;MAAA,IAAA,GAAX,SAAW,CAAA,EAAA,CAAA,CAAA;MAAA,IAAhB,CAAgB,GAAA,IAAA,CAAA;MACzB,SAAS,CAAC,IAAD,EAAO,CAAP,EAAU,MAAV,CAAT,CAAA;KACD;GAHE,MAKA,IAAI,OAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;IAC7B,KAAK,IAAM,MAAX,IAAqB,SAArB,EAAgC;MAC9B,IAAM,aAAa,GAAG,KAAK,CAAC,MAAD,CAAL,CAAc,GAAd,CAAkB,UAAC,CAAD,EAAA;QAAA,OAAA,EAAA,CAAA,MAAA,CAAU,IAAV,CAAA,CAAA,MAAA,CAAiB,CAAjB,CAAA,CAAA;OAAlB,CAAtB,CAAA;MAEA,SAAS,CAAC,aAAD,EAAgB,SAAS,CAAC,MAAD,CAAzB,EAAmC,MAAnC,CAAT,CAAA;KACD;GACF;;EAED,OAAO,MAAP,CAAA;CACD;;AAED,SAAS,KAAT,CAAgB,IAAhB,EAA4B;EAC1B,OAAO,IAAI,CAAC,IAAL,EAAA,CAAY,KAAZ,CAAkB,IAAlB,CAAP,CAAA;CACD;;;;;;;;;ACrDD,IAAI,QAAQ,GAAG,CAAf,CAAA;;AACA,IAAI,QAAJ,CAAA;;AACA,IAAI,OAAJ,CAAA;;AAEA,SAAS,SAAT,CAAe,MAAf,EAAqB;EACnB,QAAO,GAAG,MAAM,CAAC,qBAAjB,CAAA;EACA,OAAM,GAAG,MAAM,CAAC,oBAAhB,CAAA;;EAEA,IAAI,CAAC,QAAL,EAAc;IACZ,IAAM,OAAO,GAAG,CAAC,IAAD,EAAO,KAAP,EAAc,QAAd,EAAwB,GAAxB,CAAhB,CAAA;;IAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,OAArB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA8B;MAAzB,IAAM,MAAM,GAAI,OAAJ,CAAA,EAAA,CAAZ,CAAA;MACH,QAAO,GAAG,MAAM,CAAA,EAAA,CAAA,MAAA,CAAI,MAAJ,EAAA,uBAAA,CAAA,CAAhB,CAAA;MACA,OAAM,GAAG,MAAM,CAAA,EAAA,CAAA,MAAA,CAAI,MAAJ,EAAA,sBAAA,CAAA,CAAN,IAA2C,MAAM,CAAA,EAAA,CAAA,MAAA,CAAI,MAAJ,EAAA,6BAAA,CAAA,CAA1D,CAAA;KACD;GACF;;EAED,IAAI,CAAC,QAAL,EAAc;IACZ,QAAO,GAAG,SAAA,OAAA,CAAC,QAAD,EAAa;MACrB,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAL,EAAjB,CAAA;MACA,IAAM,UAAU,GAAG,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,EAAA,IAAM,QAAQ,GAAG,QAAjB,CAAZ,CAAnB,CAFqB;;MAIrB,IAAM,KAAK,GAAG,UAAU,CAAC,YAAK;QAAG,QAAQ,CAAC,QAAQ,GAAG,UAAZ,CAAR,CAAA;OAAT,EACtB,UADsB,CAAxB,CAAA;MAGA,QAAQ,GAAG,QAAQ,GAAG,UAAtB,CAAA;MACA,OAAO,KAAP,CAAA;KARF,CAAA;;IAWA,OAAM,GAAG,SAAA,MAAA,CAAC,KAAD,EAAA;MAAA,OAAW,YAAY,CAAC,KAAD,CAAvB,CAAA;KAAT,CAAA;GACD;CACF;;oBAEc;EACb,OAAO,EAAE,SAAA,OAAA,CAAC,QAAD,EAAA;IAAA,OAAc,QAAO,CAAC,QAAD,CAArB,CAAA;GADI;EAEb,MAAM,EAAE,SAAA,MAAA,CAAC,KAAD,EAAA;IAAA,OAAW,OAAM,CAAC,KAAD,CAAjB,CAAA;GAFK;EAGb,IAAI,EAAJ,SAAA;;;;;;;;;;;;;;;;;;ICrBI;;;EAAN,SAAA,OAAA,GAAA;IAAA,oBAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;;IACE,IAAA,CAAA,SAAA,GAEI,EAFJ,CAAA;GAkCD;;;;uBA9BK,MAAc,UAAwB;MACxC,IAAI,CAAC,IAAA,CAAK,SAAL,CAAe,IAAf,CAAL,EAA2B;QACzB,IAAA,CAAK,SAAL,CAAe,IAAf,CAAA,GAAuB,CAAC,QAAD,CAAvB,CAAA;QACA,OAAA;OACD;;MAED,IAAA,CAAK,SAAL,CAAe,IAAf,CAAA,CAAqB,IAArB,CAA0B,QAA1B,CAAA,CAAA;KACD;;;wBAEI,MAAc,UAAwB;MACzC,IAAI,CAAC,IAAA,CAAK,SAAL,CAAe,IAAf,CAAL,EAA2B;QAAE,OAAA;OAAQ;;MAErC,IAAM,KAAK,GAAG,IAAA,CAAK,SAAL,CAAe,IAAf,CAAA,CAAqB,OAArB,CAA6B,QAA7B,CAAd,CAAA;;MAEA,IAAI,KAAK,KAAK,CAAC,CAAf,EAAkB;QAChB,IAAA,CAAK,SAAL,CAAe,IAAf,CAAA,CAAqB,MAArB,CAA4B,KAA5B,EAAmC,CAAnC,CAAA,CAAA;OACD;KACF;;;yBAEK,MAAc,KAAuB;MACzC,IAAM,eAAe,GAAG,IAAA,CAAK,SAAL,CAAe,IAAf,CAAxB,CAAA;;MAEA,IAAI,CAAC,eAAL,EAAsB;QAAE,OAAA;OAAQ;;MAEhC,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAuB,eAAvB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAwC;QAAA,IAAA,IAAA,CAAA;;QAAA,IAAA,GAAjB,eAAiB,CAAA,EAAA,CAAA,CAAA;QAAA,IAA7B,QAA6B,GAAA,IAAA,CAAA;;QACtC,IAAI,QAAQ,CAAC,GAAD,EAAM,IAAN,CAAR,KAAwB,KAA5B,EAAmC;UACjC,OAAO,KAAP,CAAA;SACD;OACF;KACF;;;;;;oBAGY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpDf,IAAA,QAAA,GAAA,4BAAA,CAAA,QAAA,CAAA,CAAA;;;;AACA,IAAA,GAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AA4CA,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,gBAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,mBAAA,GAAA,2BAAA,CAAA,uBAAA,CAAA,CAAA;;AACA,IAAA,kBAAA,GAAA,2BAAA,CAAA,iBAAA,CAAA,CAAA;;AACA,IAAA,IAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;;;;;AApDM,SAAU,QAAV,CAAgC,MAAhC,EAA+D,OAA/D,EAA8E;EAClF,IAAI,MAAM,GAAG,KAAb,CADkF;;EAIlF,OAAO,YAAA;IACL,IAAI,CAAC,MAAL,EAAa;MACV,YAAA,CAAA,SAAA,CAAA,CAAY,MAAZ,CAAmB,OAAnB,CAA2B,IAA3B,CAAgC,OAAhC,CAAA,CAAA;;MACD,MAAM,GAAG,IAAT,CAAA;KACD;;IAED,OAAO,MAAM,CAAC,KAAP,CAAa,IAAb,EAAmB,SAAnB,CAAP,CAAA;GANF,CAAA;;;;AAWI,SAAU,gBAAV,CAA4B,CAA5B,EAAuC,EAAvC,EAAmD,EAAnD,EAA+D,EAA/D,EAAyE;EAC7E,IAAM,EAAE,GAAG,CAAA,GAAI,CAAf,CAAA;EACA,OAAO,EAAE,GAAG,EAAL,GAAU,EAAV,GAAe,CAAA,GAAI,EAAJ,GAAS,CAAT,GAAa,EAA5B,GAAiC,CAAC,GAAG,CAAJ,GAAQ,EAAhD,CAAA;CACD;;AAEK,SAAU,sBAAV,CACJ,MADI,EACY,MADZ,EAC4B,GAD5B,EACyC,GADzC,EACsD,IADtD,EACoE,IADpE,EACkF,QADlF,EACkG;EACtG,OAAO;IACL,CAAC,EAAG,gBAAgB,CAAC,QAAD,EAAW,MAAX,EAAmB,GAAnB,EAAwB,IAAxB,CADf;IAEL,CAAC,EAAG,gBAAgB,CAAC,QAAD,EAAW,MAAX,EAAmB,GAAnB,EAAwB,IAAxB,CAAA;GAFtB,CAAA;;;;AAOI,SAAU,WAAV,CAAuB,CAAvB,EAAkC,CAAlC,EAA6C,CAA7C,EAAwD,CAAxD,EAAiE;EACrE,CAAC,IAAI,CAAL,CAAA;EACA,OAAO,CAAC,CAAD,GAAK,CAAL,IAAU,CAAC,GAAG,CAAd,CAAA,GAAmB,CAA1B,CAAA;CACD;;AAEK,SAAU,UAAV,CAAsB,IAAtB,EAAkD,GAAlD,EAA2E;EAC/E,IAAI,CAAC,IAAL,GAAa,GAAG,CAAC,IAAjB,CAAA;EACA,IAAI,CAAC,IAAL,GAAa,GAAG,CAAC,IAAjB,CAAA;EACA,IAAI,CAAC,KAAL,GAAa,GAAG,CAAC,KAAjB,CAAA;EAEA,OAAO,IAAP,CAAA;CACD;;;;;;;;;;ACVM,IAAM,QAAQ,GAAa;EAChC,IAAI,EAAE;IACJ,cAAc,EAAE,MADZ;IAEJ,WAAW,EAAE,MAAA;GAHiB;EAMhC,SAAS,EAAE;IACT,OAAO,EAAE,KADA;IAET,MAAM,EAAE;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KAAX;GARsB;EAWhC,OAAO,EAAE,EAAA;CAXJ,CAAA;;oBAcQ;;;;;;;;;;;ACjDf,IAAA,QAAA,GAAA,4BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,wBAAA,GAAA,2BAAA,CAAA,uBAAA,CAAA,CAAA;;;;;;;;;;;;AAIA,SAAS,yBAAT,CAGG,KAHH,EAG+B,SAH/B,EAG6D;EAC3D,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAuB,SAAvB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAkC;IAAA,IAAA,IAAA,CAAA;;IAAA,IAAA,GAAX,SAAW,CAAA,EAAA,CAAA,CAAA;IAAA,IAAvB,QAAuB,GAAA,IAAA,CAAA;;IAChC,IAAI,KAAK,CAAC,2BAAV,EAAuC;MAAE,MAAA;KAAO;;IAEhD,QAAQ,CAAC,KAAD,CAAR,CAAA;GACD;CACF;;IAEK;;;EAOJ,SAAA,SAAA,CAAa,OAAb,EAA+C;IAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;IAL/C,IAAA,CAAA,KAAA,GAA6B,EAA7B,CAAA;IACA,IAAA,CAAA,kBAAA,GAAqB,KAArB,CAAA;IACA,IAAA,CAAA,2BAAA,GAA8B,KAA9B,CAAA;IAIE,IAAA,CAAK,OAAL,GAAe,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,OAAO,IAAI,EAAtB,CAAf,CAAA;GACD;;;;yBAEK,OAAU;MACd,IAAI,SAAJ,CAAA;MACA,IAAM,MAAM,GAAG,IAAA,CAAK,MAApB,CAFc;;;MAMd,IAAK,SAAS,GAAG,IAAA,CAAK,KAAL,CAAW,KAAK,CAAC,IAAjB,CAAjB,EAA0C;QACxC,yBAAyB,CAAC,KAAD,EAAQ,SAAR,CAAzB,CAAA;OAPY;;;MAWd,IAAI,CAAC,KAAK,CAAC,kBAAP,IAA6B,MAA7B,KAAwC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAP,CAA1D,CAAJ,EAA8E;QAC5E,yBAAyB,CAAC,KAAD,EAAQ,SAAR,CAAzB,CAAA;OACD;KACF;;;uBAEG,MAAc,UAA+B;MAC/C,IAAM,SAAS,GAAG,CAAA,CAAA,EAAA,wBAAA,CAAA,SAAA,CAAA,EAAU,IAAV,EAAgB,QAAhB,CAAlB,CAAA;;MAEA,KAAK,IAAL,IAAa,SAAb,EAAwB;QACtB,IAAA,CAAK,KAAL,CAAW,IAAX,CAAA,GAAmB,QAAG,CAAC,KAAJ,CAAU,IAAA,CAAK,KAAL,CAAW,IAAX,CAAA,IAAoB,EAA9B,EAAkC,SAAS,CAAC,IAAD,CAA3C,CAAnB,CAAA;OACD;KACF;;;wBAEI,MAAc,UAA+B;MAChD,IAAM,SAAS,GAAG,CAAA,CAAA,EAAA,wBAAA,CAAA,SAAA,CAAA,EAAU,IAAV,EAAgB,QAAhB,CAAlB,CAAA;;MAEA,KAAK,IAAL,IAAa,SAAb,EAAwB;QACtB,IAAM,SAAS,GAAG,IAAA,CAAK,KAAL,CAAW,IAAX,CAAlB,CAAA;;QAEA,IAAI,CAAC,SAAD,IAAc,CAAC,SAAS,CAAC,MAA7B,EAAqC;UAAE,SAAA;SAAU;;QAEjD,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,SAAS,CAAC,IAAD,CAAnC,CAAA,MAAA,EAAA,GAAA,EAAA,EAA2C;UAAA,IAAA,KAAA,CAAA;;UAAA,KAAA,GAAjB,SAAS,CAAC,IAAD,CAAQ,CAAA,GAAA,CAAA,CAAA;UAAA,IAAhC,WAAgC,GAAA,KAAA,CAAA;UACzC,IAAM,KAAK,GAAG,SAAS,CAAC,OAAV,CAAkB,WAAlB,CAAd,CAAA;;UAEA,IAAI,KAAK,KAAK,CAAC,CAAf,EAAkB;YAChB,SAAS,CAAC,MAAV,CAAiB,KAAjB,EAAwB,CAAxB,CAAA,CAAA;WACD;SACF;OACF;KACF;;;;;;oBAGY;;;;;;;;;;;ACvEf,IAAA,QAAA,GAAA,4BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,0EAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,wBAAA,GAAA,2BAAA,CAAA,uBAAA,CAAA,CAAA;;AACA,sEAAA;;AAEA,IAAA,UAAA,GAAA,2BAAA,CAAA,cAAA,CAAA,CAAA;;;;;;;;;;;;;IAMa;;;;EAkBX,SAAA,YAAA,CAAa,MAAb,EAAsC,OAAtC,EAAoD,cAApD,EAAsF;IAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;;IAN7E,IAAA,CAAA,MAAA,GAAS,IAAI,UAAA,CAAA,SAAA,CAAJ,EAAT,CAAA;IAOP,IAAA,CAAK,QAAL,GAAgB,OAAO,CAAC,OAAxB,CAAA;IACA,IAAA,CAAK,MAAL,GAAgB,MAAhB,CAAA;IACA,IAAA,CAAK,QAAL,GAAgB,OAAO,CAAC,OAAR,IAAmB,cAAnC,CAAA;IACA,IAAA,CAAK,IAAL,GAAgB,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,EAAU,CAAA,CAAA,EAAA,aAAA,CAAA,WAAA,EAAY,MAAZ,CAAA,GAAsB,IAAA,CAAK,QAA3B,GAAsC,MAAhD,CAAhB,CAAA;IACA,IAAA,CAAK,IAAL,GAAgB,IAAA,CAAK,IAAL,CAAU,QAA1B,CAAA;IAEA,IAAA,CAAK,GAAL,CAAS,OAAT,CAAA,CAAA;GACD;;;;gCAEY,YAAoB,QAAwB;MACvD,IAAI,OAAE,CAAC,IAAH,CAAQ,MAAM,CAAC,OAAf,CAAJ,EAA6B;QAAE,IAAA,CAAK,EAAL,CAAA,EAAA,CAAA,MAAA,CAAW,UAAX,EAAA,OAAA,CAAA,EAA8B,MAAM,CAAC,OAArC,CAAA,CAAA;OAA+C;;MAC9E,IAAI,OAAE,CAAC,IAAH,CAAQ,MAAM,CAAC,MAAf,CAAJ,EAA4B;QAAE,IAAA,CAAK,EAAL,CAAA,EAAA,CAAA,MAAA,CAAW,UAAX,EAAA,MAAA,CAAA,EAA6B,MAAM,CAAC,MAApC,CAAA,CAAA;OAA6C;;MAC3E,IAAI,OAAE,CAAC,IAAH,CAAQ,MAAM,CAAC,KAAf,CAAJ,EAA2B;QAAE,IAAA,CAAK,EAAL,CAAA,EAAA,CAAA,MAAA,CAAW,UAAX,EAAA,KAAA,CAAA,EAA4B,MAAM,CAAC,KAAnC,CAAA,CAAA;OAA2C;;MACxE,IAAI,OAAE,CAAC,IAAH,CAAQ,MAAM,CAAC,cAAf,CAAJ,EAAoC;QAAE,IAAA,CAAK,EAAL,CAAA,EAAA,CAAA,MAAA,CAAW,UAAX,EAAA,cAAA,CAAA,EAAqC,MAAM,CAAC,cAA5C,CAAA,CAAA;OAA6D;;MAEnG,OAAO,IAAP,CAAA;KACD;;;6CAEyB,YAAY,MAAM,KAAG;MAC7C,IAAI,OAAE,CAAC,KAAH,CAAS,IAAT,CAAA,IAAkB,OAAE,CAAC,MAAH,CAAU,IAAV,CAAtB,EAAuC;QACrC,IAAA,CAAK,GAAL,CAAS,UAAT,EAAqB,IAArB,CAAA,CAAA;OACD;;MAED,IAAI,OAAE,CAAC,KAAH,CAAS,GAAT,CAAA,IAAiB,OAAE,CAAC,MAAH,CAAU,GAAV,CAArB,EAAqC;QACnC,IAAA,CAAK,EAAL,CAAQ,UAAR,EAAoB,GAApB,CAAA,CAAA;OACD;KACF;;;iCAEa,YAAY,SAAoC;MAC5D,IAAM,QAAQ,GAAG,IAAA,CAAK,SAAtB,CAD4D;;MAI5D,KAAK,IAAM,UAAX,IAAyB,OAAzB,EAAkC;QAChC,IAAM,aAAa,GAAG,IAAA,CAAK,OAAL,CAAa,UAAb,CAAtB,CAAA;QACA,IAAM,WAAW,GAAG,OAAO,CAAC,UAAD,CAA3B,CAAA;QACA,IAAM,OAAO,GAAG,OAAE,CAAC,KAAH,CAAS,WAAT,CAAhB,CAHgC;;QAMhC,IAAI,UAAU,KAAK,WAAnB,EAAgC;UAC9B,IAAA,CAAK,wBAAL,CAA8B,UAA9B,EAA0C,aAAa,CAAC,SAAxD,EAAmE,WAAnE,CAAA,CAAA;SAP8B;;;QAWhC,IAAI,OAAJ,EAAa;UACX,aAAa,CAAC,UAAD,CAAb,GAA4B,QAAG,CAAC,IAAJ,CAAS,WAAT,CAA5B,CAAA;SADF;aAIK,IAAI,CAAC,OAAD,IAAY,OAAE,CAAC,WAAH,CAAe,WAAf,CAAhB,EAA6C;;YAEhD,aAAa,CAAC,UAAD,CAAb,GAA4B,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAC1B,aAAa,CAAC,UAAD,CAAb,IAA6B,EADH,EAE1B,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAM,WAAN,CAF0B,CAA5B,CAFgD;;YAOhD,IAAI,OAAE,CAAC,MAAH,CAAU,QAAQ,CAAC,SAAT,CAAmB,UAAnB,CAAV,CAAA,IAA6C,SAAA,IAAa,QAAQ,CAAC,SAAT,CAAmB,UAAnB,CAA9D,EAA8F;cAC5F,aAAa,CAAC,UAAD,CAAb,CAA0B,OAA1B,GAAoC,WAAW,CAAC,OAAZ,KAAwB,KAA5D,CAAA;aACD;WATE;eAYA,IAAI,OAAE,CAAC,IAAH,CAAQ,WAAR,CAAA,IAAwB,OAAE,CAAC,MAAH,CAAU,QAAQ,CAAC,SAAT,CAAmB,UAAnB,CAAV,CAA5B,EAAuE;cAC1E,aAAa,CAAC,UAAD,CAAb,CAA0B,OAA1B,GAAoC,WAApC,CAAA;aADG;iBAIA;gBACH,aAAa,CAAC,UAAD,CAAb,GAA4B,WAA5B,CAAA;eACD;OACF;KACF;;;;;;;;;;;4BASQ,SAAgB;MACvB,OAAO,GAAG,OAAO,KAAK,OAAE,CAAC,OAAH,CAAW,IAAA,CAAK,MAAhB,CAAA,GAClB,IAAA,CAAK,MADa,GAElB,IAFa,CAAjB,CAAA;;MAIA,IAAI,OAAE,CAAC,MAAH,CAAU,IAAA,CAAK,MAAf,CAAJ,EAA4B;QAC1B,OAAO,GAAG,OAAO,IAAI,IAAA,CAAK,QAAL,CAAc,aAAd,CAA4B,IAAA,CAAK,MAAjC,CAArB,CAAA;OACD;;MAED,OAAO,CAAA,CAAA,EAAA,aAAA,CAAA,cAAA,EAAe,OAAf,CAAP,CAAA;KACD;;;;;;;;;;;;gCAUY,SAAkC;MAC7C,IAAI,OAAE,CAAC,IAAH,CAAQ,OAAR,CAAJ,EAAsB;QACpB,IAAA,CAAK,OAAL,GAAe,OAAf,CAAA;QAEA,OAAO,IAAP,CAAA;OACD;;MAED,IAAI,OAAO,KAAK,IAAhB,EAAsB;QACpB,OAAO,IAAA,CAAK,OAAZ,CAAA;QAEA,OAAO,IAAP,CAAA;OACD;;MAED,OAAO,IAAA,CAAK,OAAZ,CAAA;KACD;;;sCAEkB,YAAY,UAAQ;MACrC,IAAI,CAAA,CAAA,EAAA,aAAA,CAAA,WAAA,EAAY,QAAZ,CAAA,IAAyB,OAAE,CAAC,MAAH,CAAU,QAAV,CAA7B,EAAkD;QAChD,IAAA,CAAK,OAAL,CAAa,UAAb,CAAA,GAA2B,QAA3B,CAAA;;QAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,IAAA,CAAK,QAAL,CAAc,KAAnC,CAAA,MAAA,EAAA,EAAA,EAAA,EAA0C;UAAA,IAAA,IAAA,CAAA;;UAAA,IAAA,GAArB,IAAA,CAAK,QAAL,CAAc,KAAO,CAAA,EAAA,CAAA,CAAA;UAAA,IAA/B,MAA+B,GAAA,IAAA,CAAA;UACxC,IAAA,CAAK,OAAL,CAAa,MAAb,CAAA,CAAqB,UAArB,CAAA,GAAmC,QAAnC,CAAA;SACD;;QAED,OAAO,IAAP,CAAA;OACD;;MAED,OAAO,IAAA,CAAK,OAAL,CAAa,UAAb,CAAP,CAAA;KACD;;;;;;;;;;;;;;2BAYO,UAAQ;MACd,OAAO,IAAA,CAAK,iBAAL,CAAuB,QAAvB,EAAiC,QAAjC,CAAP,CAAA;KACD;;;;;;;;;;;;gCAUY,UAAQ;MACnB,IAAI,QAAQ,KAAK,MAAb,IAAuB,QAAQ,KAAK,QAAxC,EAAkD;QAChD,IAAA,CAAK,OAAL,CAAa,WAAb,GAA2B,QAA3B,CAAA;QAEA,OAAO,IAAP,CAAA;OACD;;MAED,OAAO,IAAA,CAAK,OAAL,CAAa,WAApB,CAAA;KACD;;;;;;;;;;8BAQM;MACL,OAAO,IAAA,CAAK,QAAZ,CAAA;KACD;;;8BAEU,SAAO;MAChB,OAAQ,IAAA,CAAK,QAAL,KAAkB,OAAO,CAAC,aAA1B,IACA,CAAA,CAAA,EAAA,aAAA,CAAA,YAAA,EAAa,IAAA,CAAK,QAAlB,EAA4B,OAA5B,CADR,CAAA;KAED;;;oCAEoC,SAA8D,YAAkB,aAAoB;MACvI,OAAQ,CAAC,IAAA,CAAK,UAAL,CAAgB,OAAO,CAAC,UAAxB,EAAoC,UAApC,EAAgD,WAAhD,CAAD,IACA,IAAA,CAAK,SAAL,CAAe,OAAO,CAAC,SAAvB,EAAkC,UAAlC,EAA8C,WAA9C,CADR,CAAA;KAED;;;8BAE8B,WAAwB,YAAkB,SAAgB;MACvF,IAAI,CAAC,SAAL,EAAgB;QAAE,OAAO,IAAP,CAAA;OAAa;;MAE/B,IAAI,CAAC,OAAE,CAAC,OAAH,CAAW,OAAX,CAAL,EAA0B;QAAE,OAAO,KAAP,CAAA;OAAc;;MAE1C,IAAI,OAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;QACxB,OAAO,CAAA,CAAA,EAAA,aAAA,CAAA,WAAA,EAAY,OAAZ,EAAqB,SAArB,EAAgC,UAAhC,CAAP,CAAA;OADF,MAGK,IAAI,OAAE,CAAC,OAAH,CAAW,SAAX,CAAJ,EAA2B;QAC9B,OAAO,CAAA,CAAA,EAAA,aAAA,CAAA,YAAA,EAAa,SAAb,EAAwB,OAAxB,CAAP,CAAA;OACD;;MAED,OAAO,KAAP,CAAA;KACD;;;+BAE+B,YAAyB,YAAkB,SAAgB;MACzF,IAAI,CAAC,UAAD,IAAe,CAAC,OAAE,CAAC,OAAH,CAAW,OAAX,CAApB,EAAyC;QAAE,OAAO,KAAP,CAAA;OAAc;;MAEzD,IAAI,OAAE,CAAC,MAAH,CAAU,UAAV,CAAJ,EAA2B;QACzB,OAAO,CAAA,CAAA,EAAA,aAAA,CAAA,WAAA,EAAY,OAAZ,EAAqB,UAArB,EAAiC,UAAjC,CAAP,CAAA;OADF,MAGK,IAAI,OAAE,CAAC,OAAH,CAAW,UAAX,CAAJ,EAA4B;QAC/B,OAAO,CAAA,CAAA,EAAA,aAAA,CAAA,YAAA,EAAa,UAAb,EAAyB,OAAzB,CAAP,CAAA;OACD;;MAED,OAAO,KAAP,CAAA;KACD;;;;;;;;;;;;yBAUK,QAAM;MACV,IAAA,CAAK,MAAL,CAAY,IAAZ,CAAiB,MAAjB,CAAA,CAAA;MAEA,OAAO,IAAP,CAAA;KACD;;;2BAEO,QAAsB,SAA8B,aAA4C,SAAa;MACnH,IAAI,OAAE,CAAC,MAAH,CAAU,OAAV,CAAA,IAAsB,CAAC,OAAE,CAAC,KAAH,CAAS,OAAT,CAA3B,EAA8C;QAC5C,OAAO,GAAG,WAAV,CAAA;QACA,WAAW,GAAG,IAAd,CAAA;OACD;;MAED,IAAM,SAAS,GAAG,MAAM,KAAK,IAAX,GAAkB,KAAlB,GAA0B,QAA5C,CAAA;MACA,IAAM,SAAS,GAAG,CAAA,CAAA,EAAA,wBAAA,CAAA,SAAA,CAAA,EAAmB,OAAnB,EAA4B,WAA5B,CAAlB,CAAA;;MAEA,KAAK,IAAI,IAAT,IAAiB,SAAjB,EAA4B;QAC1B,IAAI,IAAI,KAAK,OAAb,EAAsB;UAAE,IAAI,GAAG,aAAA,CAAA,SAAA,CAAA,CAAQ,UAAf,CAAA;SAA2B;;QAEnD,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAuB,SAAS,CAAC,IAAD,CAAhC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAwC;UAAA,IAAA,KAAA,CAAA;;UAAA,KAAA,GAAjB,SAAS,CAAC,IAAD,CAAQ,CAAA,GAAA,CAAA,CAAA;UAAA,IAA7B,QAA6B,GAAA,KAAA,CAAA;;;UAEtC,IAAI,QAAG,CAAC,QAAJ,CAAa,IAAA,CAAK,QAAL,CAAc,UAA3B,EAAuC,IAAvC,CAAJ,EAAkD;YAChD,IAAA,CAAK,MAAL,CAAY,MAAZ,CAAA,CAAoB,IAApB,EAA0B,QAA1B,CAAA,CAAA;WADF;eAIK,IAAI,OAAE,CAAC,MAAH,CAAU,IAAA,CAAK,MAAf,CAAJ,EAA4B;cAC/B,YAAA,CAAA,SAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAU,SAAV,EAAA,UAAA,CAAA,CAAA,CAA+B,IAAA,CAAK,MAApC,EAA4C,IAAA,CAAK,QAAjD,EAA2D,IAA3D,EAAiE,QAAjE,EAA2E,OAA3E,CAAA,CAAA;aADG;iBAIA;gBACF,YAAA,CAAA,SAAA,CAAA,CAAO,SAAP,CAAA,CAA2C,IAAA,CAAK,MAAhD,EAAwD,IAAxD,EAA8D,QAA9D,EAAwE,OAAxE,CAAA,CAAA;eACF;SACF;OACF;;MAED,OAAO,IAAP,CAAA;KACD;;;;;;;;;;;;;;uBAYG,OAA4B,UAAkC,SAAa;MAC7E,OAAO,IAAA,CAAK,MAAL,CAAY,IAAZ,EAAkB,KAAlB,EAAyB,QAAzB,EAAmC,OAAnC,CAAP,CAAA;KACD;;;;;;;;;;;;;;wBAYI,OAAgD,UAAkC,SAAa;MAClG,OAAO,IAAA,CAAK,MAAL,CAAY,KAAZ,EAAmB,KAAnB,EAA0B,QAA1B,EAAoC,OAApC,CAAP,CAAA;KACD;;;;;;;;;;wBAQI,SAA4B;MAC/B,IAAM,QAAQ,GAAG,IAAA,CAAK,SAAtB,CAAA;;MAEA,IAAI,CAAC,OAAE,CAAC,MAAH,CAAU,OAAV,CAAL,EAAyB;QACvB,OAAO,GAAG,EAAV,CAAA;OACD;;MAEA,IAAA,CAAK,OAAL,GAAqC,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAM,QAAQ,CAAC,IAAf,CAArC,CAAA;;MAED,KAAK,IAAM,UAAX,IAAyB,IAAA,CAAK,QAAL,CAAc,UAAvC,EAAmD;QACjD,IAAM,UAAU,GAAG,IAAA,CAAK,QAAL,CAAc,UAAd,CAAyB,UAAzB,CAAnB,CAAA;QAEA,IAAA,CAAK,OAAL,CAAa,UAAb,CAAA,GAA2B,EAA3B,CAAA;QACA,IAAA,CAAK,YAAL,CAAkB,UAAlB,EAA8B,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,QAAQ,CAAC,SAApB,CAAP,EAAuC,QAAQ,CAAC,OAAT,CAAiB,UAAjB,CAAvC,CAA9B,CAAA,CAAA;QAEA,IAAA,CAAK,UAAL,CAAA,CAAiB,OAAO,CAAC,UAAD,CAAxB,CAAA,CAAA;OACD;;MAED,KAAK,IAAM,OAAX,IAAsB,OAAtB,EAA+B;QAC7B,IAAI,OAAE,CAAC,IAAH,CAAQ,IAAA,CAAK,OAAL,CAAR,CAAJ,EAA4B;UAC1B,IAAA,CAAK,OAAL,CAAA,CAAc,OAAO,CAAC,OAAD,CAArB,CAAA,CAAA;SACD;OACF;;MAED,OAAO,IAAP,CAAA;KACD;;;;;;;;;;4BAQI;MACH,YAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,IAAA,CAAK,MAAnB,EAAmC,KAAnC,CAAA,CAAA;;MAEA,IAAI,OAAE,CAAC,MAAH,CAAU,IAAA,CAAK,MAAf,CAAJ,EAA4B;;QAE1B,KAAK,IAAM,IAAX,IAAmB,YAAA,CAAA,SAAA,CAAA,CAAO,eAA1B,EAA2C;UACzC,IAAM,SAAS,GAAG,YAAA,CAAA,SAAA,CAAA,CAAO,eAAP,CAAuB,IAAvB,CAAlB,CAAA;;UAEA,IAAI,SAAS,CAAC,SAAV,CAAoB,CAApB,CAAA,KAA2B,IAAA,CAAK,MAAhC,IACA,SAAS,CAAC,QAAV,CAAmB,CAAnB,CAAA,KAA0B,IAAA,CAAK,QADnC,EAC6C;YAC3C,SAAS,CAAC,SAAV,CAAoB,MAApB,CAA2B,CAA3B,EAA8B,CAA9B,CAAA,CAAA;YACA,SAAS,CAAC,QAAV,CAAmB,MAAnB,CAA0B,CAA1B,EAA6B,CAA7B,CAAA,CAAA;YACA,SAAS,CAAC,SAAV,CAAoB,MAApB,CAA2B,CAA3B,EAA8B,CAA9B,CAAA,CAH2C;;YAM3C,IAAI,CAAC,SAAS,CAAC,SAAV,CAAoB,MAAzB,EAAiC;cAC/B,SAAS,CAAC,IAAD,CAAT,GAAkB,IAAlB,CAAA;aACD;WACF;;UAED,YAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,IAAA,CAAK,QAAnB,EAA6B,IAA7B,EAAmC,YAAA,CAAA,SAAA,CAAA,CAAO,gBAA1C,CAAA,CAAA;;UACA,YAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,IAAA,CAAK,QAAnB,EAA6B,IAA7B,EAAmC,YAAA,CAAA,SAAA,CAAA,CAAO,kBAA1C,EAA8D,IAA9D,CAAA,CAAA;SACD;OAnBH,MAqBK;QACH,YAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,IAAA,CAAK,MAAnB,EAAmC,KAAnC,CAAA,CAAA;OACD;KACF;;;wBA3WsB;MACrB,OAAO;QACL,IAAI,EAAE,EADD;QAEL,SAAS,EAAE,EAFN;QAGL,OAAO,EAAE,EAAA;OAHX,CAAA;KAKD;;;;;;;oBAwWY;;;;;;;;;;;AC/Xf,IAAA,QAAA,GAAA,4BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;;;;;;;;;;;IAEqB;;;EAUnB,SAAA,eAAA,CAAuB,KAAvB,EAA4C;IAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;IAAA,oBAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAA;;IAArB,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;IATvB,IAAA,CAAA,OAAA,GAAU,IAAI,aAAA,CAAA,SAAA,CAAJ,EAAV,CAS4C;;IAN5C,IAAA,CAAA,IAAA,GAAgC,EAAhC,CAAA;IAEA,IAAA,CAAA,WAAA,GAEI,EAFJ,CAAA;IAKE,IAAA,CAAK,OAAL,CAAa,EAAb,CAAgB,OAAhB,EAAyB,UAAA,IAAA,EAAqB;MAAA,IAAlB,YAAkB,GAAA,IAAA,CAAlB,YAAkB,CAAA;MAAA,IACpC,MADoC,GACN,YADM,CACpC,MADoC;UAClB,OADkB,GACN,YADM,CAC5B,QAD4B,CAAA;MAE5C,IAAM,cAAc,GAAG,OAAE,CAAC,MAAH,CAAU,MAAV,CAAA,GACnB,KAAI,CAAC,WAAL,CAAiB,MAAjB,CADmB,GAEnB,MAAM,CAAC,KAAI,CAAC,KAAL,CAAW,EAAZ,CAFV,CAAA;MAIA,IAAM,WAAW,GAAG,cAAc,CAAC,SAAf,CAAyB,UAAC,CAAD,EAAA;QAAA,OAAO,CAAC,CAAC,OAAF,KAAc,OAArB,CAAA;OAAzB,CAApB,CAAA;;MACA,IAAI,cAAc,CAAC,WAAD,CAAlB,EAAiC;;QAE/B,cAAc,CAAC,WAAD,CAAd,CAA4B,OAA5B,GAAsC,IAAtC,CAAA;QACA,cAAc,CAAC,WAAD,CAAd,CAA4B,YAA5B,GAA2C,IAA3C,CAAA;OACD;;MACD,cAAc,CAAC,MAAf,CAAsB,WAAtB,EAAmC,CAAnC,CAAA,CAAA;KAZF,CAAA,CAAA;GAcD;;;;yBAEI,QAAyB,SAAa;MACzC,OAAO,GAAG,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,OAAO,IAAI,EAAlB,EAAsB;QAC9B,OAAO,EAAE,IAAA,CAAK,KAAL,CAAW,OAAA;OADZ,CAAV,CAAA;MAGA,IAAM,YAAY,GAAG,IAAI,IAAA,CAAK,KAAL,CAAW,YAAf,CAA4B,MAA5B,EAAoC,OAApC,EAA6C,IAAA,CAAK,KAAL,CAAW,QAAxD,CAArB,CAAA;MACA,IAAM,WAAW,GAAG;QAAE,OAAO,EAAE,YAAY,CAAC,QAAxB;QAAkC,YAAY,EAAZ,YAAA;OAAtD,CAAA;MAEA,IAAA,CAAK,KAAL,CAAW,WAAX,CAAuB,YAAY,CAAC,IAApC,CAAA,CAAA;MACA,IAAA,CAAK,IAAL,CAAU,IAAV,CAAe,YAAf,CAAA,CAAA;;MAEA,IAAI,OAAE,CAAC,MAAH,CAAU,MAAV,CAAJ,EAAuB;QACrB,IAAI,CAAC,IAAA,CAAK,WAAL,CAAiB,MAAjB,CAAL,EAA+B;UAAE,IAAA,CAAK,WAAL,CAAiB,MAAjB,CAAA,GAA2B,EAA3B,CAAA;SAA+B;;QAChE,IAAA,CAAK,WAAL,CAAiB,MAAjB,CAAA,CAAyB,IAAzB,CAA8B,WAA9B,CAAA,CAAA;OAFF,MAGO;QACL,IAAI,CAAC,YAAY,CAAC,MAAb,CAAoB,IAAA,CAAK,KAAL,CAAW,EAA/B,CAAL,EAAyC;UACvC,MAAM,CAAC,cAAP,CAAsB,MAAtB,EAA8B,IAAA,CAAK,KAAL,CAAW,EAAzC,EAA6C;YAC3C,KAAK,EAAE,EADoC;YAE3C,YAAY,EAAE,IAAA;WAFhB,CAAA,CAAA;SAID;;QAED,MAAM,CAAC,IAAA,CAAK,KAAL,CAAW,EAAZ,CAAN,CAAsB,IAAtB,CAA2B,WAA3B,CAAA,CAAA;OACD;;MAED,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,KAAlB,EAAyB;QACvB,MAAM,EAAN,MADuB;QAEvB,OAAO,EAAP,OAFuB;QAGvB,YAAY,EAAZ,YAHuB;QAIvB,GAAG,EAAE,IAAA,CAAK,KAAL,CAAW,IAAA;OAJlB,CAAA,CAAA;MAOA,OAAO,YAAP,CAAA;KACD;;;wBAEI,QAAyB,SAAO;MACnC,IAAM,OAAO,GAAI,OAAO,IAAI,OAAO,CAAC,OAApB,IAAgC,IAAA,CAAK,KAAL,CAAW,QAA3D,CAAA;MACA,IAAM,UAAU,GAAG,OAAE,CAAC,MAAH,CAAU,MAAV,CAAnB,CAAA;MACA,IAAM,cAAc,GAAG,UAAU,GAC7B,IAAA,CAAK,WAAL,CAAiB,MAAjB,CAD6B,GAE7B,MAAM,CAAC,IAAA,CAAK,KAAL,CAAW,EAAZ,CAFV,CAAA;;MAIA,IAAI,CAAC,cAAL,EAAqB;QAAE,OAAO,IAAP,CAAA;OAAa;;MAEpC,IAAM,KAAK,GAAG,QAAG,CAAC,IAAJ,CACZ,cADY,EAEZ,UAAC,CAAD,EAAA;QAAA,OAAO,CAAC,CAAC,OAAF,KAAc,OAAd,KACJ,UAAU,IAAI,CAAC,CAAC,YAAF,CAAe,SAAf,CAAyB,MAAzB,CADV,CAAP,CAAA;OAFY,CAAd,CAAA;MAKA,OAAO,KAAK,IAAI,KAAK,CAAC,YAAtB,CAAA;KACD;;;iCAEa,MAAY,UAAoC;MAC5D,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAA2B,IAAA,CAAK,IAAhC,CAAA,MAAA,EAAA,EAAA,EAAA,EAAsC;QAAA,IAAA,KAAA,CAAA;;QAAA,KAAA,GAAX,IAAA,CAAK,IAAM,CAAA,EAAA,CAAA,CAAA;QAAA,IAA3B,YAA2B,GAAA,KAAA,CAAA;QACpC,IAAI,GAAG,GAAA,KAAA,CAAP,CAAA;;QAEA,IAAI,CAAC,OAAE,CAAC,MAAH,CAAU,YAAY,CAAC,MAAvB,CAAA;UAEA,OAAE,CAAC,OAAH,CAAW,IAAX,CAAA,IAAoB,aAAQ,CAAC,eAAT,CAAyB,IAAzB,EAA+B,YAAY,CAAC,MAA5C,CAFpB;QAID,IAAI,KAAK,YAAY,CAAC,MAJtB;QAMD,YAAY,CAAC,SAAb,CAAuB,IAAvB,CANH,EAMkC;UAChC,GAAG,GAAG,QAAQ,CAAC,YAAD,CAAd,CAAA;SACD;;QAED,IAAI,GAAG,KAAK,SAAZ,EAAuB;UACrB,OAAO,GAAP,CAAA;SACD;OACF;KACF;;;;;;;;;;;;;;;;;;;;;;AClGH,IAAY,UAAZ,CAAA;;;AAAA,CAAA,UAAY,UAAZ,EAAsB;EACpB,UAAA,CAAA,OAAA,CAAA,GAAA,OAAA,CAAA;EACA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAA,CAAA;EACA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAA,CAAA;EACA,UAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA;CAJF,EAAY,UAAU,KAAA,cAAA,CAAA,UAAA,GAAV,UAAU,GAAA,EAAA,CAAtB,CAAA,CAAA;;IAOa;;;EAcX,SAAA,SAAA,CAAa,WAAb,EAAwB;IAAA,oBAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;IAPxB,IAAA,CAAA,2BAAA,GAA8B,KAA9B,CAAA;IACA,IAAA,CAAA,kBAAA,GAAqB,KAArB,CAAA;IAOE,IAAA,CAAK,YAAL,GAAoB,WAApB,CAAA;GACD;;;;qCAEa,EAAM;;;;;;;sCAKL;MACb,IAAA,CAAK,kBAAL,GAA0B,IAA1B,CAAA;KACD;;;;;;;+CAKuB;MACtB,IAAA,CAAK,2BAAL,GAAmC,IAAA,CAAK,kBAAL,GAA0B,IAA7D,CAAA;KACD;;;wBAtBc;MACb,OAAO,IAAA,CAAK,YAAL,CAAkB,MAAzB,CAAA;KACD;;;;;;;oBAuBY;;;;;;;;;;;AC9Cf,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,iBAAA,GAAA,2BAAA,CAAA,gBAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,cAAA,CAAA,CAAA;;AACA,IAAA,eAAA,GAAA,2BAAA,CAAA,mBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAY,eAAZ,CAAA;;;AAAA,CAAA,UAAY,UAAZ,EAAsB;EACpB,UAAA,CAAA,OAAA,CAAA,GAAA,OAAA,CAAA;EACA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAA,CAAA;EACA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAA,CAAA;EACA,UAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA;CAJF,EAAY,eAAU,KAAA,kBAAA,CAAA,UAAA,GAAV,eAAU,GAAA,EAAA,CAAtB,CAAA,CAAA;;IAOa;;;;;;EAsCX,SAAA,aAAA,CACE,WADF,EAEE,KAFF,EAGE,UAHF,EAIE,KAJF,EAKE,OALF,EAME,OANF,EAOE,MAPF,EAQE,IARF,EAQe;IAAA,IAAA,KAAA,CAAA;;IAAA,oBAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;;IAEb,KAAA,GAAA,0BAAA,CAAA,IAAA,EAAA,eAAA,CAAA,aAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAM,WAAN,CAAA,CAAA,CAAA;IAEA,OAAO,GAAG,OAAO,IAAI,WAAW,CAAC,OAAjC,CAAA;IAEA,IAAM,MAAM,GAAQ,WAAW,CAAC,YAAhC,CANa;;IAQb,IAAM,WAAW,GAAI,CAAE,MAAM,IAAI,MAAM,CAAC,OAAlB,IAA8B,eAAA,CAAA,SAAA,CAA/B,EAAiD,WAAtE,CAAA;IACA,IAAM,MAAM,GAAQ,CAAA,CAAA,EAAA,iBAAA,CAAA,SAAA,CAAA,EAAY,MAAZ,EAAoB,OAApB,EAA6B,UAA7B,CAApB,CAAA;IACA,IAAM,QAAQ,GAAM,KAAK,KAAK,OAA9B,CAAA;IACA,IAAM,MAAM,GAAQ,KAAK,KAAK,KAA9B,CAAA;IACA,IAAM,SAAS,GAAK,QAAQ,GAAA,sBAAA,CAAA,KAAA,CAAA,GAAU,WAAW,CAAC,SAAlD,CAAA;IACA,IAAM,MAAM,GAAQ,QAAQ,GACxB,WAAW,CAAC,MAAZ,CAAmB,KADK,GAExB,MAAM,GACJ;MAAE,IAAI,EAAE,SAAS,CAAC,IAAlB;MAAwB,MAAM,EAAE,SAAS,CAAC,MAA1C;MAAkD,SAAS,EAAE,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,SAAA;KADhF,GAEJ,WAAW,CAAC,MAAZ,CAAmB,GAJzB,CAAA;IAMA,KAAA,CAAK,IAAL,GAAiB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,MAAM,CAAC,IAAlB,CAAjB,CAAA;IACA,KAAA,CAAK,MAAL,GAAiB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,MAAM,CAAC,MAAlB,CAAjB,CAAA;IACA,KAAA,CAAK,IAAL,GAAiB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,WAAW,CAAC,IAAvB,CAAjB,CAAA;IACA,KAAA,CAAK,SAAL,GAAiB,MAAM,CAAC,SAAxB,CAAA;;IAEA,IAAI,CAAC,MAAL,EAAa;MACX,KAAA,CAAK,IAAL,CAAU,CAAV,IAAe,MAAM,CAAC,CAAtB,CAAA;MACA,KAAA,CAAK,IAAL,CAAU,CAAV,IAAe,MAAM,CAAC,CAAtB,CAAA;MAEA,KAAA,CAAK,MAAL,CAAY,CAAZ,IAAiB,MAAM,CAAC,CAAxB,CAAA;MACA,KAAA,CAAK,MAAL,CAAY,CAAZ,IAAiB,MAAM,CAAC,CAAxB,CAAA;KACD;;IAED,KAAA,CAAK,OAAL,GAAqB,KAAK,CAAC,OAA3B,CAAA;IACA,KAAA,CAAK,MAAL,GAAqB,KAAK,CAAC,MAA3B,CAAA;IACA,KAAA,CAAK,QAAL,GAAqB,KAAK,CAAC,QAA3B,CAAA;IACA,KAAA,CAAK,OAAL,GAAqB,KAAK,CAAC,OAA3B,CAAA;IACA,KAAA,CAAK,MAAL,GAAsB,KAAoB,CAAC,MAA3C,CAAA;IACA,KAAA,CAAK,OAAL,GAAsB,KAAoB,CAAC,OAA3C,CAAA;IACA,KAAA,CAAK,MAAL,GAAqB,OAArB,CAAA;IACA,KAAA,CAAK,aAAL,GAAqB,OAArB,CAAA;IACA,KAAA,CAAK,aAAL,GAAqB,OAAO,IAAI,IAAhC,CAAA;IACA,KAAA,CAAK,MAAL,GAAqB,MAArB,CAAA;IACA,KAAA,CAAK,IAAL,GAAqB,IAAI,IAAK,UAAU,IAAI,KAAK,IAAI,EAAb,CAAxC,CAAA;IACA,KAAA,CAAK,YAAL,GAAqB,MAArB,CAAA;IAEA,KAAA,CAAK,EAAL,GAAU,QAAQ,GACd,WAAW,CAAC,QAAZ,CAAqB,WAAW,CAAC,QAAZ,CAAqB,MAArB,GAA8B,CAAnD,CAAA,CAAsD,QADxC,GAEd,SAAS,CAAC,EAFd,CAAA;IAIA,KAAA,CAAK,EAAL,GAAgB,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CAA9B,GAAkC,MAAM,CAAC,CAAzD,CAAA;IACA,KAAA,CAAK,EAAL,GAAgB,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CAA9B,GAAkC,MAAM,CAAC,CAAzD,CAAA;IACA,KAAA,CAAK,QAAL,GAAgB,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,MAAzB,CAAgC,CAAhC,GAAoC,MAAM,CAAC,CAA3D,CAAA;IACA,KAAA,CAAK,QAAL,GAAgB,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,MAAzB,CAAgC,CAAhC,GAAoC,MAAM,CAAC,CAA3D,CAAA;;IAEA,IAAI,QAAQ,IAAI,MAAhB,EAAwB;MACtB,KAAA,CAAK,KAAL,GAAa;QAAE,CAAC,EAAE,CAAL;QAAQ,CAAC,EAAE,CAAA;OAAxB,CAAA;KADF,MAGK;MACH,KAAA,CAAK,KAAL,GAAa;QACX,CAAC,EAAE,KAAA,CAAK,WAAL,CAAA,CAAkB,CAAlB,GAAsB,SAAS,CAAC,WAAD,CAAT,CAAuB,CADrC;QAEX,CAAC,EAAE,KAAA,CAAK,WAAL,CAAA,CAAkB,CAAlB,GAAsB,SAAS,CAAC,WAAD,CAAT,CAAuB,CAAA;OAFlD,CAAA;KAID;;IAED,KAAA,CAAK,EAAL,GAAiB,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,SAA1C,CAAA;IACA,KAAA,CAAK,QAAL,GAAiB,KAAA,CAAK,SAAL,GAAiB,KAAA,CAAK,EAAvC,CAjEa;;IAoEb,KAAA,CAAK,QAAL,GAAgB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,WAA5B,CAAX,CAAhB,CAAA;IACA,KAAA,CAAK,KAAL,GAAa,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAM,KAAA,CAAK,QAAL,CAAc,CAApB,EAAuB,KAAA,CAAK,QAAL,CAAc,CAArC,CAAb,CAAA;IAEA,KAAA,CAAK,KAAL,GAAc,MAAM,IAAI,KAAK,KAAK,cAArB,GAAuC,KAAA,CAAK,QAAL,EAAvC,GAAyD,IAAtE,CAAA;IAvEa,OAAA,KAAA,CAAA;GAwEd;;;;+BAsBO;MACN,IAAM,WAAW,GAAG,IAAA,CAAK,YAAzB,CAAA;;MAEA,IAAI,WAAW,CAAC,SAAZ,CAAsB,KAAtB,GAA8B,GAA9B,IACA,IAAA,CAAK,SAAL,GAAiB,WAAW,CAAC,SAAZ,CAAsB,SAAvC,GAAmD,GADvD,EAC4D;QAC1D,OAAO,IAAP,CAAA;OACD;;MAED,IAAI,KAAK,GAAG,GAAA,GAAM,IAAI,CAAC,KAAL,CAAW,WAAW,CAAC,SAAZ,CAAsB,SAAjC,EAA4C,WAAW,CAAC,SAAZ,CAAsB,SAAlE,CAAN,GAAqF,IAAI,CAAC,EAAtG,CAAA;MACA,IAAM,OAAO,GAAG,IAAhB,CAAA;;MAEA,IAAI,KAAK,GAAG,CAAZ,EAAe;QACb,KAAK,IAAI,GAAT,CAAA;OACD;;MAED,IAAM,IAAI,GAAG,GAAA,GAAM,OAAN,IAAiB,KAAjB,IAA0B,KAAK,GAAG,GAAA,GAAM,OAArD,CAAA;MACA,IAAM,EAAE,GAAK,GAAA,GAAM,OAAN,IAAiB,KAAjB,IAA0B,KAAK,GAAG,GAAA,GAAM,OAArD,CAAA;MAEA,IAAM,KAAK,GAAG,CAAC,IAAD,KAAU,GAAA,GAAM,OAAN,IAAiB,KAAjB,IAA0B,KAAK,GAAI,EAAA,GAAK,OAAlD,CAAd,CAAA;MACA,IAAM,IAAI,GAAI,CAAC,EAAD,IAAW,EAAA,GAAK,OAAL,IAAgB,KAA3B,IAAoC,KAAK,GAAG,GAAA,GAAM,OAAhE,CAAA;MAEA,OAAO;QACL,EAAE,EAAF,EADK;QAEL,IAAI,EAAJ,IAFK;QAGL,IAAI,EAAJ,IAHK;QAIL,KAAK,EAAL,KAJK;QAKL,KAAK,EAAL,KALK;QAML,KAAK,EAAE,WAAW,CAAC,SAAZ,CAAsB,KANxB;QAOL,QAAQ,EAAE;UACR,CAAC,EAAE,WAAW,CAAC,SAAZ,CAAsB,SADjB;UAER,CAAC,EAAE,WAAW,CAAC,SAAZ,CAAsB,SAAA;SAFjB;OAPZ,CAAA;KAYD;;;qCAEa,EAAM;;;;;;;+CAKI;MACtB,IAAA,CAAK,2BAAL,GAAmC,IAAA,CAAK,kBAAL,GAA0B,IAA7D,CAAA;KACD;;;;;;;sCAKc;MACb,IAAA,CAAK,kBAAL,GAA0B,IAA1B,CAAA;KACD;;;wBArEQ;MAAM,OAAO,IAAA,CAAK,IAAL,CAAU,CAAjB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,IAAL,CAAU,CAAV,GAAc,KAAd,CAAA;KAAqB;;;wBAChC;MAAM,OAAO,IAAA,CAAK,IAAL,CAAU,CAAjB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,IAAL,CAAU,CAAV,GAAc,KAAd,CAAA;KAAqB;;;wBAE9B;MAAM,OAAO,IAAA,CAAK,MAAL,CAAY,CAAnB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,MAAL,CAAY,CAAZ,GAAgB,KAAhB,CAAA;KAAuB;;;wBAClC;MAAM,OAAO,IAAA,CAAK,MAAL,CAAY,CAAnB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,MAAL,CAAY,CAAZ,GAAgB,KAAhB,CAAA;KAAuB;;;wBAEvC;MAAM,OAAO,IAAA,CAAK,KAAL,CAAW,CAAlB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,KAAL,CAAW,CAAX,GAAe,KAAf,CAAA;KAAsB;;;wBACjC;MAAM,OAAO,IAAA,CAAK,KAAL,CAAW,CAAlB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,KAAL,CAAW,CAAX,GAAe,KAAf,CAAA;KAAsB;;;wBAE1B;MAAM,OAAO,IAAA,CAAK,QAAL,CAAc,CAArB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,QAAL,CAAc,CAAd,GAAkB,KAAlB,CAAA;KAAyB;;;wBACpC;MAAM,OAAO,IAAA,CAAK,QAAL,CAAc,CAArB,CAAA;;sBACJ,OAAK;MAAI,IAAA,CAAK,QAAL,CAAc,CAAd,GAAkB,KAAlB,CAAA;KAAyB;;;;EAvIzC,WAAA,CAAA,SAAA;;;oBA6LK;;;;;;;;;;;;;IC/MF,cACX,SAAA,WAAA,CACS,EADT,EAES,OAFT,EAGS,KAHT,EAIS,QAJT,EAKS,UALT,EAKyB;EAAA,oBAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;;EAJhB,IAAA,CAAA,EAAA,GAAA,EAAA,CAAA;EACA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;EACA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;EACA,IAAA,CAAA,QAAA,GAAA,QAAA,CAAA;EACA,IAAA,CAAA,UAAA,GAAA,UAAA,CAAA;;;;oBAII;;;;;;;;;;;ACVf,IAAA,QAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;;;AAYA,IAAM,MAAM,GAAG;EACb,WAAW,EAAE,CAAE,kBAAF,EAAsB,YAAtB,EAAoC,YAApC,EAAkD,MAAlD,CADA;EAGb,MAHa,EAAA,SAAA,MAAA,CAGL,OAHK,EAGE;IACb,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,MAAM,CAAC,WAA5B,CAAA,MAAA,EAAA,EAAA,EAAA,EAAyC;MAAA,IAAA,IAAA,CAAA;;MAAA,IAAA,GAApB,MAAM,CAAC,WAAa,CAAA,EAAA,CAAA,CAAA;MAAA,IAA9B,MAA8B,GAAA,IAAA,CAAA;MACvC,IAAM,WAAW,GAAG,MAAM,CAAC,MAAD,CAAN,CAAe,OAAf,CAApB,CAAA;;MAEA,IAAI,WAAJ,EAAiB;QACf,OAAO,WAAP,CAAA;OACD;KACF;GAVU;;EAcb,gBAda,EAAA,SAAA,gBAAA,CAAA,KAAA,EAckE;IAAA,IAA3D,WAA2D,GAAA,KAAA,CAA3D,WAA2D;QAA9C,SAA8C,GAAA,KAAA,CAA9C,SAA8C;QAAnC,WAAmC,GAAA,KAAA,CAAnC,WAAmC;QAAtB,KAAsB,GAAA,KAAA,CAAtB,KAAsB,CAAA;;IAC7E,IAAI,CAAC,aAAA,CAAc,IAAd,CAAmB,SAAnB,CAAL,EAAoC;MAClC,OAAO,IAAP,CAAA;KACD;;IAED,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;MACjD,IAAI,OAAO,GAAG,WAAd,CAAA;;MAEA,IAAI,WAAW,CAAC,UAAZ,IAA0B,WAAW,CAAC,UAAZ,CAAuB,WAAjD,IACC,WAAW,CAAC,WAAZ,KAA4B,WADjC,EAC+C;QAC7C,OAAO,OAAP,EAAgB;;UAEd,IAAI,OAAO,KAAK,WAAW,CAAC,OAA5B,EAAqC;YACnC,OAAO,WAAP,CAAA;WACD;;UACD,OAAO,GAAG,QAAG,CAAC,UAAJ,CAAe,OAAf,CAAV,CAAA;SACD;OACF;KACF;;IAED,OAAO,IAAP,CAAA;GAlCW;;EAsCb,UAtCa,EAAA,SAAA,UAAA,CAAA,KAAA,EAsC0D;IAAA,IAAzD,SAAyD,GAAA,KAAA,CAAzD,SAAyD;QAA9C,WAA8C,GAAA,KAAA,CAA9C,WAA8C;QAAjC,SAAiC,GAAA,KAAA,CAAjC,SAAiC;QAAtB,KAAsB,GAAA,KAAA,CAAtB,KAAsB,CAAA;;IACrE,IAAI,WAAW,KAAK,OAAhB,IAA2B,WAAW,KAAK,KAA/C,EAAsD;MACpD,OAAO,IAAP,CAAA;KACD;;IAED,IAAI,cAAJ,CAAA;;IAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;;MACjD,IAAI,WAAW,CAAC,WAAZ,KAA4B,WAAhC,EAA6C;;QAE3C,IAAI,WAAW,CAAC,UAAZ,IAA0B,CAAC,YAAY,CAAC,WAAD,EAAc,SAAd,CAA3C,EAAqE;UAAE,SAAA;SAF5B;;;QAK3C,IAAI,WAAW,CAAC,WAAZ,EAAJ,EAA+B;UAC7B,OAAO,WAAP,CAAA;SADF;aAIK,IAAI,CAAC,cAAL,EAAqB;YACxB,cAAc,GAAG,WAAjB,CAAA;WACD;OACF;KApBkE;;;;IAyBrE,IAAI,cAAJ,EAAoB;MAClB,OAAO,cAAP,CAAA;KA1BmE;;;;;IAgCrE,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,YAAwC,GAAA,KAAA,CAAA;;MACjD,IAAI,YAAW,CAAC,WAAZ,KAA4B,WAA5B,IAA2C,EAAE,OAAA,CAAQ,IAAR,CAAa,SAAb,CAAA,IAA2B,YAAW,CAAC,UAAzC,CAA/C,EAAqG;QACnG,OAAO,YAAP,CAAA;OACD;KACF;;IAED,OAAO,IAAP,CAAA;GA5EW;;EAgFb,UAhFa,EAAA,SAAA,UAAA,CAAA,KAAA,EAgFkC;IAAA,IAAjC,SAAiC,GAAA,KAAA,CAAjC,SAAiC;QAAtB,KAAsB,GAAA,KAAA,CAAtB,KAAsB,CAAA;;IAC7C,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;;MACjD,IAAI,YAAY,CAAC,WAAD,EAAc,SAAd,CAAhB,EAA0C;QACxC,OAAO,WAAP,CAAA;OACD;KACF;;IAED,OAAO,IAAP,CAAA;GAvFW;;EA2Fb,IA3Fa,EAAA,SAAA,IAAA,CAAA,KAAA,EA2F8B;IAAA,IAAnC,WAAmC,GAAA,KAAA,CAAnC,WAAmC;QAAtB,KAAsB,GAAA,KAAA,CAAtB,KAAsB,CAAA;;IACzC,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,MAAA,CAAA;;MAAA,MAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAxC,WAAwC,GAAA,MAAA,CAAA;;;MAEjD,IAAI,WAAW,CAAC,QAAZ,CAAqB,MAArB,KAAgC,CAApC,EAAuC;QACrC,IAAM,MAAM,GAAG,WAAW,CAAC,YAA3B,CADqC;;;QAIrC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAP,CAAe,OAAf,CAAuB,OAAtC,EAA+C;UAC7C,SAAA;SACD;OANH;WASK,IAAI,WAAW,CAAC,QAAZ,CAAqB,MAArB,IAA+B,CAAnC,EAAsC;UACzC,SAAA;SACD;;MAED,IAAI,CAAC,WAAW,CAAC,WAAZ,EAAD,IAA+B,WAAW,KAAK,WAAW,CAAC,WAA/D,EAA6E;QAC3E,OAAO,WAAP,CAAA;OACD;KACF;;IAED,OAAO,IAAP,CAAA;GACD;CAjHH,CAAA;;AAoHA,SAAS,YAAT,CAAuB,WAAvB,EAA0D,SAA1D,EAA2E;EACzE,OAAO,WAAW,CAAC,QAAZ,CAAqB,IAArB,CAA0B,UAAA,MAAA,EAAA;IAAA,IAAG,EAAH,GAAA,MAAA,CAAG,EAAH,CAAA;IAAA,OAAY,EAAE,KAAK,SAAnB,CAAA;GAA1B,CAAP,CAAA;CACD;;oBAEc;;;;;;;;;;;ACpIf,IAAA,UAAA,GAAA,cAAA,CAAA;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,OAAA,CAAA,CAAA;;;;AAyBC,UAAA,CAAA,UAAA,CAAmB,IAAnB,GAA0B,MAA1B,CAAA;;AAMD,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,OAF0B,GAMxB,KANwB,CAE1B,OAF0B;MAG1B,YAH0B,GAMxB,KANwB,CAG1B,YAH0B;MAI1B,YAJ0B,GAMxB,KANwB,CAI1B,YAJ0B;MAK1B,QAL0B,GAMxB,KANwB,CAK1B,QAL0B,CAAA;EAQ5B,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,oBAAxB,EAA8C,UAA9C,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,eAAxB,EAAyC,UAAzC,CAAA,CAT4B;;EAY5B,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,IAAvC,CAAA,CAAA;EAEA,YAAY,CAAC,SAAb,CAAuB,SAAvB,GAAmC,IAAI,CAAC,SAAxC,CAAA;EAEA,OAAO,CAAC,UAAA,CAAA,UAAA,CAAW,IAAZ,CAAP,GAA2B,IAA3B,CAAA;EACA,OAAO,CAAC,KAAR,CAAc,IAAd,CAAmB,UAAA,CAAA,UAAA,CAAW,IAA9B,CAAA,CAAA;EACA,OAAG,CAAC,KAAJ,CAAU,OAAO,CAAC,UAAlB,EAA8B,CAC5B,WAD4B,EAE5B,UAF4B,EAG5B,kBAH4B,EAI5B,YAJ4B,EAK5B,SAL4B,CAA9B,CAAA,CAAA;EAOA,OAAO,CAAC,UAAR,CAAmB,IAAnB,GAA0B,WAA1B,CAAA;EAEA,QAAQ,CAAC,OAAT,CAAiB,IAAjB,GAAwB,IAAI,CAAC,QAA7B,CAAA;CACD;;AAED,SAAS,UAAT,CAAA,IAAA,EAAoC;EAAA,IAAb,WAAa,GAAA,IAAA,CAAb,WAAa,CAAA;;EAClC,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;IAAE,OAAA;GAAQ;;EAEpD,IAAM,IAAI,GAAG,WAAW,CAAC,QAAZ,CAAqB,IAAlC,CAAA;;EAEA,IAAI,IAAI,KAAK,GAAb,EAAkB;IAChB,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IAAvB,CAA4B,CAA5B,GAAkC,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CAAhE,CAAA;IACA,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,MAAvB,CAA8B,CAA9B,GAAkC,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,MAAzB,CAAgC,CAAlE,CAAA;IAEA,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,MAA5B,CAAmC,CAAnC,GAAuC,CAAvC,CAAA;IACA,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,IAA5B,CAAiC,CAAjC,GAAuC,CAAvC,CAAA;GALF,MAOK,IAAI,IAAI,KAAK,GAAb,EAAkB;IACrB,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IAAvB,CAA4B,CAA5B,GAAkC,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CAAhE,CAAA;IACA,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,MAAvB,CAA8B,CAA9B,GAAkC,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,MAAzB,CAAgC,CAAlE,CAAA;IAEA,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,MAA5B,CAAmC,CAAnC,GAAuC,CAAvC,CAAA;IACA,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,IAA5B,CAAiC,CAAjC,GAAuC,CAAvC,CAAA;GACD;CACF;;AAED,SAAS,IAAT,CAAA,KAAA,EAAsC;EAAA,IAArB,MAAqB,GAAA,KAAA,CAArB,MAAqB;MAAb,WAAa,GAAA,KAAA,CAAb,WAAa,CAAA;;EACpC,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;IAAE,OAAA;GAAQ;;EAEpD,IAAM,IAAI,GAAG,WAAW,CAAC,QAAZ,CAAqB,IAAlC,CAAA;;EAEA,IAAI,IAAI,KAAK,GAAT,IAAgB,IAAI,KAAK,GAA7B,EAAkC;IAChC,IAAM,QAAQ,GAAG,IAAI,KAAK,GAAT,GAAe,GAAf,GAAqB,GAAtC,CAAA;IAEA,MAAM,CAAC,IAAP,CAAY,QAAZ,CAAA,GAA0B,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,QAA9B,CAA1B,CAAA;IACA,MAAM,CAAC,MAAP,CAAc,QAAd,CAAA,GAA0B,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,MAAzB,CAAgC,QAAhC,CAA1B,CAAA;IACA,MAAM,CAAC,KAAP,CAAa,QAAb,CAAA,GAAyB,CAAzB,CAAA;GACD;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCD,IAAM,SAAS,GAAoB,SAAS,SAAT,CAAiD,OAAjD,EAA8F;EAC/H,IAAI,MAAE,CAAC,MAAH,CAAU,OAAV,CAAJ,EAAwB;IACtB,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,OAAlB,GAA4B,OAAO,CAAC,OAAR,KAAoB,KAAhD,CAAA;IACA,IAAA,CAAK,YAAL,CAAkB,MAAlB,EAA0B,OAA1B,CAAA,CAAA;IACA,IAAA,CAAK,WAAL,CAAiB,MAAjB,EAAyB,OAAzB,CAAA,CAAA;;IAEA,IAAI,kBAAA,CAAmB,IAAnB,CAAwB,OAAO,CAAC,QAAhC,CAAJ,EAA+C;MAC7C,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,QAAlB,GAA6B,OAAO,CAAC,QAArC,CAAA;KACD;;IACD,IAAI,YAAA,CAAa,IAAb,CAAkB,OAAO,CAAC,SAA1B,CAAJ,EAA0C;MACxC,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,SAAlB,GAA8B,OAAO,CAAC,SAAtC,CAAA;KACD;;IAED,OAAO,IAAP,CAAA;GACD;;EAED,IAAI,MAAE,CAAC,IAAH,CAAQ,OAAR,CAAJ,EAAsB;IACpB,IAAA,CAAK,OAAL,CAAa,IAAb,CAAkB,OAAlB,GAA4B,OAA5B,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,OAAO,IAAA,CAAK,OAAL,CAAa,IAApB,CAAA;CAtBF,CAAA;;AAyBA,IAAM,IAAI,GAAoB;EAC5B,EAAE,EAAE,cADwB;EAE5B,OAAO,EAAP,WAF4B;EAG5B,SAAS,EAAT,SAH4B;EAI5B,UAAU,EAAV,UAJ4B;EAK5B,IAAI,EAAJ,IAL4B;EAM5B,QAAQ,EAAE;IACR,SAAS,EAAG,IADJ;IAER,QAAQ,EAAI,IAAA;GARc;EAW5B,OAX4B,EAAA,SAAA,OAAA,CAWnB,QAXmB,EAWT,MAXS,EAWD,YAXC,EAWW;IACrC,IAAM,WAAW,GAAG,YAAY,CAAC,OAAb,CAAqB,IAAzC,CAAA;IAEA,OAAO,WAAW,CAAC,OAAZ,GACH;MACA,IAAI,EAAE,MADN;MAEA,IAAI,EAAG,WAAW,CAAC,QAAZ,KAAyB,OAAzB,GACH,WAAW,CAAC,SADT,GAEH,WAAW,CAAC,QAAA;KALb,GAOH,IAPJ,CAAA;GAd0B;EAwB5B,SAxB4B,EAAA,SAAA,SAAA,GAwBnB;IACP,OAAO,MAAP,CAAA;GACD;CA1BH,CAAA;mBA6Be;;;;;;;;;;;AC/Lf,IAAA,eAAA,GAAA,0BAAA,CAAA,cAAA,CAAA,CAAA;;AAKA,IAAA,OAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEM;;;;;;;;EAaJ,SAAA,SAAA,CAAa,SAAb,EAAkD,SAAlD,EAA4E,IAA5E,EAAwF;IAAA,IAAA,KAAA,CAAA;;IAAA,mBAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;;IACtF,KAAA,GAAA,8BAAA,CAAA,IAAA,EAAA,mBAAA,CAAA,SAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAM,SAAS,CAAC,YAAhB,CAAA,CAAA,CAAA;IAPF,KAAA,CAAA,kBAAA,GAAqB,KAArB,CAAA;IACA,KAAA,CAAA,2BAAA,GAA8B,KAA9B,CAAA;;IAKwF,IAAA,IAAA,GAGxD,IAAI,KAAK,WAAT,GAC1B,SAAS,CAAC,IADgB,GAE1B,SAAS,CAAC,GALwE;QAG9E,OAH8E,GAAA,IAAA,CAG9E,OAH8E;QAGrE,QAHqE,GAAA,IAAA,CAGrE,QAHqE,CAAA;;IAOtF,KAAA,CAAK,IAAL,GAAqB,IAArB,CAAA;IACA,KAAA,CAAK,MAAL,GAAqB,OAArB,CAAA;IACA,KAAA,CAAK,aAAL,GAAqB,OAArB,CAAA;IACA,KAAA,CAAK,QAAL,GAAqB,QAArB,CAAA;IACA,KAAA,CAAK,SAAL,GAAqB,SAArB,CAAA;IACA,KAAA,CAAK,aAAL,GAAqB,SAAS,CAAC,MAA/B,CAAA;IACA,KAAA,CAAK,SAAL,GAAqB,SAAS,CAAC,YAA/B,CAAA;IACA,KAAA,CAAK,SAAL,GAAqB,SAAS,CAAC,SAA/B,CAAA;IAdsF,OAAA,KAAA,CAAA;GAevF;;;;;;;;;;;;6BASK;MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;MAAA,IACI,SADJ,GACkB,IAAA,CAAK,YADvB,CACI,SADJ,CAAA;;MAGJ,IACG,IAAA,CAAK,IAAL,KAAc,cAAf,KACE,CAAC,IAAA,CAAK,QAAN,IACA,SAAS,CAAC,GAAV,CAAc,QAAd,KAA2B,IAAA,CAAK,QADhC,IAEA,SAAS,CAAC,GAAV,CAAc,OAAd,KAA0B,IAAA,CAAK,MAHjC,CADF,EAI4C;QAC1C,OAAA;OACD;;MAED,SAAS,CAAC,IAAV,CAAe,QAAf,GAA0B,IAAA,CAAK,QAA/B,CAAA;MACA,SAAS,CAAC,IAAV,CAAe,OAAf,GAAyB,IAAA,CAAK,MAA9B,CAAA;MAEA,SAAS,CAAC,QAAV,GAAqB,IAArB,CAAA;MACA,SAAS,CAAC,MAAV,CAAiB,KAAjB,GAAyB,IAAzB,CAAA;MAEA,IAAA,CAAK,wBAAL,EAAA,CAAA;;MAEA,IAAI,IAAA,CAAK,IAAL,KAAc,cAAlB,EAAkC;QAChC,IAAM,WAAW,GAAG,SAAS,CAAC,WAA9B,CAAA;QACA,IAAM,KAAK,GAAG,OAAG,CAAC,SAAJ,CAAc,WAAd,EAA2B,UAAA,KAAA,EAAA;UAAA,IAAG,QAAH,GAAA,KAAA,CAAG,QAAH;cAAa,OAAb,GAAA,KAAA,CAAa,OAAb,CAAA;UAAA,OACvC,QAAQ,KAAK,MAAI,CAAC,QAAlB,IAA8B,OAAO,KAAK,MAAI,CAAC,MADR,CAAA;SAA3B,CAAd,CAAA;QAGA,SAAS,CAAC,WAAV,GAAA,EAAA,CAAA,MAAA,CAAA,kBAAA,CACK,WAAW,CAAC,KAAZ,CAAkB,CAAlB,EAAqB,KAArB,CADL,CAAA,EAAA,kBAAA,CAEK,WAAW,CAAC,KAAZ,CAAkB,KAAK,GAAG,CAA1B,CAFL,CAAA,CAAA,CAAA;QAKA,IAAM,eAAe,GAAG,IAAI,SAAJ,CAAc,SAAd,EAAyB,IAAA,CAAK,SAA9B,EAAyC,gBAAzC,CAAxB,CAAA;QAEA,eAAe,CAAC,QAAhB,GAA2B,IAAA,CAAK,QAAhC,CAAA;QACA,eAAe,CAAC,MAAhB,GAAyB,IAAA,CAAK,MAA9B,CAAA;QAEA,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,eAAnB,CAAA,CAAA;OAfF,MAiBK;QACH,IAAA,CAAK,QAAL,CAAc,IAAd,CAAmB,IAAI,SAAJ,CAAc,SAAd,EAAyB,IAAA,CAAK,SAA9B,EAAyC,WAAzC,CAAnB,CAAA,CAAA;OACD;KACF;;;qCAEa,EAAM;;;sCAEL;MACb,IAAA,CAAK,kBAAL,GAA0B,IAA1B,CAAA;KACD;;;+CAEuB;MACtB,IAAA,CAAK,2BAAL,GAAmC,IAAA,CAAK,kBAAL,GAA0B,IAA7D,CAAA;KACD;;;;EAtFqB,eAAA,CAAA,SAAA;;mBAyFT;;;;;;;;;;;AC7Ff,IAAA,SAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,KAAA,GAAA,0BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,0BAAA,CAAA,aAAA,CAAA,CAAA;;;;;;AA6DA,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,OAF0B,GASxB,KATwB,CAE1B,OAF0B;MAI1B,QAJ0B,GASxB,KATwB,CAI1B,QAJ0B;MAM1B,YAN0B,GASxB,KATwB,CAM1B,YAN0B;MAO1B,YAP0B,GASxB,KATwB,CAO1B,YAP0B;MAQ1B,QAR0B,GASxB,KATwB,CAQ1B,QAR0B,CAAA;EAW5B,KAAK,CAAC,SAAN,CAAgB,KAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,qBAAxB,EAA+C,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;;IACjE,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KAAQ;;IAEpD,WAAW,CAAC,SAAZ,GAAwB;MACtB,GAAG,EAAE;QACH,QAAQ,EAAE,IADP;QAEH,OAAO,EAAE,IAAA;OAHW;MAKtB,IAAI,EAAE;QACJ,QAAQ,EAAE,IADN;QAEJ,OAAO,EAAE,IAAA;OAPW;MAStB,QAAQ,EAAE,IATY;MAUtB,MAAM,EAAE,IAVc;MAWtB,WAAW,EAAE,IAAA;KAXf,CAAA;GAHF,CAAA,CAAA;EAkBA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,oBAAxB,EAA8C,UAAA,KAAA,EAA8C;IAAA,IAA3C,WAA2C,GAAA,KAAA,CAA3C,WAA2C;QAA9B,KAA8B,GAAA,KAAA,CAA9B,KAA8B;QAAf,SAAe,GAAA,KAAA,CAAvB,MAAuB,CAAA;;IAC1F,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KAAQ;;IADsC,IAGlF,SAHkF,GAGpE,WAHoE,CAGlF,SAHkF,CAAA;;IAM1F,SAAS,CAAC,WAAV,GAAwB,IAAxB,CAAA;IACA,SAAS,CAAC,MAAV,GAAmB,IAAnB,CAAA;IACA,SAAS,CAAC,WAAV,GAAwB,cAAc,CAAC,KAAD,EAAQ,WAAW,CAAC,OAApB,CAAtC,CAAA;IACA,SAAS,CAAC,MAAV,GAAmB,aAAa,CAAC,WAAD,EAAc,KAAd,EAAqB,SAArB,CAAhC,CAAA;;IAEA,IAAI,SAAS,CAAC,MAAV,CAAiB,QAArB,EAA+B;MAC7B,oBAAoB,CAAC,SAAS,CAAC,WAAX,EAAwB,SAAS,CAAC,MAAV,CAAiB,QAAzC,CAApB,CAAA;KACD;GAbH,CAAA,CA/B4B;;EAgD5B,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,UAAC,GAAD,EAAA;IAAA,OAAS,cAAc,CAAC,GAAD,EAAa,KAAb,CAAvB,CAAA;GAAvC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,YAAxB,EAAsC,UAAC,GAAD,EAAA;IAAA,OAAS,cAAc,CAAC,GAAD,EAAa,KAAb,CAAvB,CAAA;GAAtC,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,mBAAxB,EAA6C,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAC/D,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KAAQ;;IAEpD,cAAc,CAAC,WAAD,EAAc,WAAW,CAAC,SAAZ,CAAsB,MAApC,CAAd,CAAA;IACA,WAAW,CAAC,SAAZ,CAAsB,MAAtB,GAA+B,EAA/B,CAAA;GAJF,CAAA,CAAA;EAOA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,kBAAxB,EAA4C,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAC9D,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KAAQ;;IAEpD,cAAc,CAAC,WAAD,EAAc,WAAW,CAAC,SAAZ,CAAsB,MAApC,CAAd,CAAA;GAHF,CAAA,CAAA;EAMA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAClD,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KAAQ;;IADF,IAG1C,SAH0C,GAG5B,WAH4B,CAG1C,SAH0C,CAAA;;IAKlD,IAAI,SAAJ,EAAe;MACb,SAAS,CAAC,WAAV,GAAwB,IAAxB,CAAA;MACA,SAAS,CAAC,MAAV,GAAmB,IAAnB,CAAA;MACA,SAAS,CAAC,GAAV,CAAc,QAAd,GAAyB,IAAzB,CAAA;MACA,SAAS,CAAC,GAAV,CAAc,OAAd,GAAwB,IAAxB,CAAA;MACA,SAAS,CAAC,IAAV,CAAe,QAAf,GAA0B,IAA1B,CAAA;MACA,SAAS,CAAC,IAAV,CAAe,OAAf,GAAyB,IAAzB,CAAA;MACA,SAAS,CAAC,QAAV,GAAqB,KAArB,CAAA;KACD;GAbH,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwDA,YAAY,CAAC,SAAb,CAAuB,QAAvB,GAAkC,UAAuC,OAAvC,EAAmF;IACnH,OAAO,cAAc,CAAC,IAAD,EAAO,OAAP,CAArB,CAAA;GADF,CAAA;;;;;;;;;;;;;;;;;;EAmBA,YAAY,CAAC,SAAb,CAAuB,SAAvB,GAAmC,UAAuC,SAAvC,EAAkD,KAAlD,EAAyD,SAAzD,EAAoE,gBAApE,EAAsF,WAAtF,EAAmG,IAAnG,EAAuG;IACxI,OAAO,eAAe,CAAC,IAAD,EAAO,SAAP,EAAkB,KAAlB,EAAyB,SAAzB,EAAoC,gBAApC,EAAsD,WAAtD,EAAmE,IAAnE,CAAtB,CAAA;GADF,CAAA;;;;;;;;;;;EAYA,QAAQ,CAAC,WAAT,GAAuB,UAAU,QAAV,EAA4B;IACjD,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,QAAd,CAAJ,EAA6B;;;;MAK3B,KAAK,CAAC,WAAN,GAAoB,QAApB,CAAA;MAEA,OAAO,QAAP,CAAA;KACD;;IACD,OAAO,KAAK,CAAC,WAAb,CAAA;GAVF,CAAA;;EAaA,SAAK,CAAC,GAAN,CAAU,KAAV,CAAgB,OAAO,CAAC,UAAxB,EAAoC,CAClC,WADkC,EAElC,WAFkC,EAGlC,cAHkC,EAIlC,gBAJkC,EAKlC,UALkC,EAMlC,MANkC,CAApC,CAAA,CAAA;EAQA,OAAO,CAAC,UAAR,CAAmB,IAAnB,GAA0B,UAA1B,CAAA;EAEA,KAAK,CAAC,WAAN,GAAoB,KAApB,CAAA;EAEA,QAAQ,CAAC,OAAT,CAAiB,IAAjB,GAAwB,IAAI,CAAC,QAA7B,CAAA;CACD;;AAED,SAAS,YAAT,CAAA,KAAA,EAA0C,gBAA1C,EAA0D;EAAA,IAAjC,aAAiC,GAAA,KAAA,CAAjC,aAAiC,CAAA;EACxD,IAAM,KAAK,GAAG,EAAd,CADwD;;EAIxD,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAuB,aAAa,CAAC,IAArC,CAAA,MAAA,EAAA,EAAA,EAAA,EAA2C;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAApB,aAAa,CAAC,IAAM,CAAA,EAAA,CAAA,CAAA;IAAA,IAAhC,QAAgC,GAAA,KAAA,CAAA;;IACzC,IAAI,CAAC,QAAQ,CAAC,OAAT,CAAiB,IAAjB,CAAsB,OAA3B,EAAoC;MAAE,SAAA;KAAU;;IAEhD,IAAM,MAAM,GAAG,QAAQ,CAAC,OAAT,CAAiB,IAAjB,CAAsB,MAArC,CAHyC;;IAMzC,IAAK,SAAK,CAAC,EAAN,CAAS,OAAT,CAAiB,MAAjB,CAAA,IAA4B,MAAM,KAAK,gBAAxC,IACC,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,MAAhB,CAAA,IACD,CAAC,SAAK,CAAC,GAAN,CAAU,eAAV,CAA0B,gBAA1B,EAA4C,MAA5C,CAFD,IAGC,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,MAAd,CAAA,IAAyB,CAAC,MAAM,CAAC;MAAE,QAAQ,EAAR,QAAF;MAAY,gBAAgB,EAAhB,gBAAA;KAAb,CAHrC,EAGwE;MACtE,SAAA;KAVuC;;;IAczC,IAAM,YAAY,GAAG,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,QAAQ,CAAC,MAAzB,CAAA,GACjB,QAAQ,CAAC,QAAT,CAAkB,gBAAlB,CAAmC,QAAQ,CAAC,MAA5C,CADiB,GAEjB,SAAK,CAAC,EAAN,CAAS,KAAT,CAAe,QAAQ,CAAC,MAAxB,CAAA,GAAkC,QAAQ,CAAC,MAA3C,GAAoD,CAAC,QAAQ,CAAC,MAAV,CAFxD,CAAA;;IAIA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA8B,YAA9B,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4C;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAd,YAAc,CAAA,GAAA,CAAA,CAAA;MAAA,IAAjC,eAAiC,GAAA,KAAA,CAAA;;MAC1C,IAAI,eAAe,KAAK,gBAAxB,EAA0C;QACxC,KAAK,CAAC,IAAN,CAAW;UACT,QAAQ,EAAR,QADS;UAET,OAAO,EAAE,eAAA;SAFX,CAAA,CAAA;OAID;KACF;GACF;;EAED,OAAO,KAAP,CAAA;CACD;;AAED,SAAS,oBAAT,CAA+B,WAA/B,EAA4C,KAA5C,EAAiD;;EAE/C,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoC,WAApC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAiD;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAb,WAAa,CAAA,GAAA,CAAA,CAAA;IAAA,IAAA,MAAA,GAAA,KAAA;QAApC,QAAoC,GAAA,MAAA,CAApC,QAAoC;QAA1B,OAA0B,GAAA,MAAA,CAA1B,OAA0B,CAAA;IAC/C,KAAK,CAAC,QAAN,GAAiB,QAAjB,CAD+C;;IAI/C,KAAK,CAAC,MAAN,GAAe,OAAf,CAAA;IACA,QAAQ,CAAC,IAAT,CAAc,KAAd,CAAA,CAAA;IACA,KAAK,CAAC,kBAAN,GAA2B,KAAK,CAAC,2BAAN,GAAoC,KAA/D,CAAA;GACD;;;;;;AAMH,SAAS,cAAT,CAAyB,KAAzB,EAAuC,WAAvC,EAA2D;;EAEzD,IAAM,WAAW,GAAG,YAAY,CAAC,KAAD,EAAQ,WAAR,CAAhC,CAAA;;EAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAyB,WAAzB,CAAA,MAAA,EAAA,GAAA,EAAA,EAAsC;IAAA,IAAA,MAAA,CAAA;;IAAA,MAAA,GAAb,WAAa,CAAA,GAAA,CAAA,CAAA;IAAA,IAA3B,UAA2B,GAAA,MAAA,CAAA;IACpC,UAAU,CAAC,IAAX,GAAkB,UAAU,CAAC,QAAX,CAAoB,OAApB,CAA4B,UAAU,CAAC,OAAvC,CAAlB,CAAA;GACD;;EAED,OAAO,WAAP,CAAA;CACD;;AAED,SAAS,OAAT,CAAA,MAAA,EAA+G,SAA/G,EAA0H,YAA1H,EAAsI;EAAA,IAAlH,SAAkH,GAAA,MAAA,CAAlH,SAAkH;MAAzF,SAAyF,GAAA,MAAA,CAAvG,YAAuG;MAArE,WAAqE,GAAA,MAAA,CAA9E,OAA8E,CAAA;EACpI,IAAM,UAAU,GAAG,EAAnB,CADoI;;EAIpI,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA2D,SAAS,CAAC,WAArE,CAAA,MAAA,EAAA,GAAA,EAAA,EAAkF;IAAA,IAAA,MAAA,CAAA;;IAAA,MAAA,GAAvB,SAAS,CAAC,WAAa,CAAA,GAAA,CAAA,CAAA;IAAA,IAAA,MAAA,GAAA,MAAA;QAArE,QAAqE,GAAA,MAAA,CAArE,QAAqE;QAAlD,eAAkD,GAAA,MAAA,CAA3D,OAA2D;QAAjC,IAAiC,GAAA,MAAA,CAAjC,IAAiC,CAAA;IAChF,UAAU,CAAC,IAAX,CAAgB,QAAQ,CAAC,SAAT,CAAmB,SAAnB,EAA8B,YAA9B,EAA4C,SAA5C,EAAuD,WAAvD,EAAoE,eAApE,EAAqF,IAArF,CAAA,GACZ,eADY,GAEZ,IAFJ,CAAA,CAAA;GALkI;;;EAWpI,IAAM,SAAS,GAAG,SAAK,CAAC,GAAN,CAAU,qBAAV,CAAgC,UAAhC,CAAlB,CAAA;EAEA,OAAO,SAAS,CAAC,WAAV,CAAsB,SAAtB,CAAA,IAAoC,IAA3C,CAAA;CACD;;AAED,SAAS,aAAT,CAAwB,WAAxB,EAA2D,aAA3D,EAA0E,SAA1E,EAAmF;EAAA,IACzE,SADyE,GAC3D,WAD2D,CACzE,SADyE,CAAA;EAEjF,IAAM,UAAU,GAAG;IACjB,KAAK,EAAO,IADK;IAEjB,KAAK,EAAO,IAFK;IAGjB,QAAQ,EAAI,IAHK;IAIjB,UAAU,EAAE,IAJK;IAKjB,IAAI,EAAQ,IALK;IAMjB,IAAI,EAAQ,IAAA;GANd,CAAA;;EASA,IAAI,SAAS,CAAC,IAAV,KAAmB,WAAvB,EAAoC;IAClC,UAAU,CAAC,QAAX,GAAsB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,cAApC,CAAtB,CAAA;IAEA,UAAU,CAAC,QAAX,CAAoB,MAApB,GAA+B,IAA/B,CAAA;IACA,UAAU,CAAC,QAAX,CAAoB,QAApB,GAA+B,IAA/B,CAAA;GACD;;EACD,IAAI,SAAS,CAAC,IAAV,KAAmB,SAAvB,EAAkC;IAChC,UAAU,CAAC,UAAX,GAAwB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,gBAApC,CAAxB,CAAA;IAEA,UAAU,CAAC,UAAX,CAAsB,MAAtB,GAAiC,IAAjC,CAAA;IACA,UAAU,CAAC,UAAX,CAAsB,QAAtB,GAAiC,IAAjC,CAAA;GACD;;EAED,IAAI,SAAS,CAAC,QAAd,EAAwB;IACtB,OAAO,UAAP,CAAA;GACD;;EAED,IAAI,SAAS,CAAC,GAAV,CAAc,OAAd,KAA0B,SAAS,CAAC,IAAV,CAAe,OAA7C,EAAsD;;IAEpD,IAAI,SAAS,CAAC,IAAV,CAAe,QAAnB,EAA6B;MAC3B,UAAU,CAAC,KAAX,GAAmB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,WAApC,CAAnB,CAAA;MAEA,SAAS,CAAC,SAAV,GAAyB,UAAU,CAAC,KAAX,CAAiB,MAAjB,GAA4B,SAAS,CAAC,IAAV,CAAe,OAApE,CAAA;MACA,SAAS,CAAC,YAAV,GAAyB,UAAU,CAAC,KAAX,CAAiB,QAAjB,GAA4B,SAAS,CAAC,IAAV,CAAe,QAApE,CAAA;KANkD;;;IASpD,IAAI,SAAS,CAAC,GAAV,CAAc,QAAlB,EAA4B;MAC1B,UAAU,CAAC,KAAX,GAAmB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,WAApC,CAAnB,CAAA;MAEA,SAAS,CAAC,SAAV,GAAsB,SAAS,CAAC,GAAV,CAAc,OAApC,CAAA;MACA,SAAS,CAAC,QAAV,GAAqB,SAAS,CAAC,GAAV,CAAc,QAAnC,CAAA;KACD;GACF;;EAED,IAAI,SAAS,CAAC,IAAV,KAAmB,SAAnB,IAAgC,SAAS,CAAC,GAAV,CAAc,QAAlD,EAA4D;IAC1D,UAAU,CAAC,IAAX,GAAkB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,MAApC,CAAlB,CAAA;IAEA,SAAS,CAAC,QAAV,GAAqB,SAAS,CAAC,GAAV,CAAc,QAAnC,CAAA;IACA,SAAS,CAAC,aAAV,GAA0B,SAAS,CAAC,GAAV,CAAc,OAAxC,CAAA;GACD;;EACD,IAAI,SAAS,CAAC,IAAV,KAAmB,UAAnB,IAAiC,SAAS,CAAC,GAAV,CAAc,QAAnD,EAA6D;IAC3D,UAAU,CAAC,IAAX,GAAkB,IAAI,UAAA,CAAA,SAAA,CAAJ,CAAc,SAAd,EAAyB,SAAzB,EAAoC,UAApC,CAAlB,CAAA;IAEA,UAAU,CAAC,IAAX,CAAgB,QAAhB,GAA2B,SAA3B,CAAA;IACA,SAAS,CAAC,QAAV,GAAqB,SAAS,CAAC,GAAV,CAAc,QAAnC,CAAA;GACD;;EAED,OAAO,UAAP,CAAA;CACD;;AAED,SAAS,cAAT,CAAyB,WAAzB,EAA4D,MAA5D,EAAkE;EAAA,IACxD,SADwD,GAC1C,WAD0C,CACxD,SADwD,CAAA;EAAA,IAG9D,WAH8D,GAM5D,SAN4D,CAG9D,WAH8D;MAI9D,GAJ8D,GAM5D,SAN4D,CAI9D,GAJ8D;MAK9D,IAL8D,GAM5D,SAN4D,CAK9D,IAL8D,CAAA;;EAQhE,IAAI,MAAM,CAAC,KAAX,EAAkB;IAAE,IAAI,CAAC,QAAL,CAAc,IAAd,CAAmB,MAAM,CAAC,KAA1B,CAAA,CAAA;GAAkC;;EACtD,IAAI,MAAM,CAAC,IAAX,EAAiB;IAAE,GAAG,CAAC,QAAJ,CAAa,IAAb,CAAkB,MAAM,CAAC,IAAzB,CAAA,CAAA;GAAgC;;EACnD,IAAI,MAAM,CAAC,KAAX,EAAkB;IAAE,GAAG,CAAC,QAAJ,CAAa,IAAb,CAAkB,MAAM,CAAC,KAAzB,CAAA,CAAA;GAAiC;;EACrD,IAAI,MAAM,CAAC,IAAX,EAAiB;IAAE,GAAG,CAAC,QAAJ,CAAa,IAAb,CAAkB,MAAM,CAAC,IAAzB,CAAA,CAAA;GAAgC;;EAEnD,IAAI,MAAM,CAAC,UAAX,EAAuB;IACrB,oBAAoB,CAAC,WAAD,EAAc,MAAM,CAAC,UAArB,CAApB,CAAA;GACD;;EAED,SAAS,CAAC,IAAV,CAAe,QAAf,GAA2B,GAAG,CAAC,QAA/B,CAAA;EACA,SAAS,CAAC,IAAV,CAAe,OAAf,GAAyB,GAAG,CAAC,OAA7B,CAAA;CACD;;AAED,SAAS,cAAT,CAAA,MAAA,EAA6E,KAA7E,EAAkF;EAAA,IAAvD,WAAuD,GAAA,MAAA,CAAvD,WAAuD;MAA1C,MAA0C,GAAA,MAAA,CAA1C,MAA0C;MAAlC,KAAkC,GAAA,MAAA,CAAlC,KAAkC,CAAA;;EAChF,IAAI,MAAM,CAAC,IAAP,KAAgB,UAAhB,IAA8B,MAAM,CAAC,IAAP,KAAgB,SAAlD,EAA6D;IAAE,OAAA;GAAQ;;EADS,IAGxE,SAHwE,GAG1D,WAH0D,CAGxE,SAHwE,CAAA;;EAKhF,IAAI,KAAK,CAAC,WAAV,EAAuB;IACrB,SAAS,CAAC,WAAV,GAAwB,cAAc,CAAC,KAAD,EAAQ,WAAW,CAAC,OAApB,CAAtC,CAAA;GACD;;EAED,IAAM,SAAS,GAAG,MAAlB,CAAA;EACA,IAAM,UAAU,GAAG,OAAO,CAAC,WAAD,EAAc,SAAd,EAAyB,KAAzB,CAA1B,CAVgF;;EAahF,SAAS,CAAC,QAAV,GAAqB,SAAS,CAAC,QAAV,IACnB,CAAC,CAAC,UADiB,IAEnB,UAAU,CAAC,QAAX,KAAwB,SAAS,CAAC,GAAV,CAAc,QAFnB,IAGnB,UAAU,CAAC,OAAX,KAAuB,SAAS,CAAC,GAAV,CAAc,OAHvC,CAAA;EAKA,SAAS,CAAC,GAAV,CAAc,QAAd,GAA0B,UAAU,IAAI,UAAU,CAAC,QAAnD,CAAA;EACA,SAAS,CAAC,GAAV,CAAc,OAAd,GAAwB,UAAU,IAAI,UAAU,CAAC,OAAjD,CAAA;EAEA,SAAS,CAAC,MAAV,GAAmB,aAAa,CAAC,WAAD,EAAc,KAAd,EAAqB,SAArB,CAAhC,CAAA;CACD;;AAID,SAAS,cAAT,CAAyB,YAAzB,EAA8D,OAA9D,EAA0G;EACxG,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,OAAhB,CAAJ,EAA8B;IAC5B,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GAAoC,OAAO,CAAC,OAAR,KAAoB,KAAxD,CAAA;;IAEA,IAAI,OAAO,CAAC,SAAZ,EAAuB;MACrB,IAAM,UAAU,GAAG,SAAK,CAAC,kBAAN,CAAyB,OAAO,CAAC,SAAjC,CAAnB,CADqB;;MAGrB,IAAM,SAAS,GAAG,MAAM,CAAC,IAAP,CAAY,UAAZ,CAAA,CAAwB,MAAxB,CAA+B,UAAC,GAAD,EAAM,IAAN,EAAc;QAC7D,IAAM,aAAa,GAAG,gBAAA,CAAiB,IAAjB,CAAsB,IAAtB,CAAA,GAAA,MAAA,CAAA,MAAA,CACX,IADW,CAAA,GAElB,6BAAA,CAA8B,IAA9B,CAAmC,IAAnC,CAAA,GAAA,MAAA,CAAA,MAAA,CACS,IADT,CAAA,GAEE,IAJN,CAAA;QAMA,GAAG,CAAC,aAAD,CAAH,GAAqB,UAAU,CAAC,IAAD,CAA/B,CAAA;QAEA,OAAO,GAAP,CAAA;OATgB,EAUf,EAVe,CAAlB,CAAA;MAYA,YAAY,CAAC,GAAb,CAAiB,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,SAA3C,CAAA,CAAA;MACA,YAAY,CAAC,EAAb,CAAgB,SAAhB,CAAA,CAAA;MACA,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,SAA1B,GAAsC,SAAtC,CAAA;KACD;;IAED,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,MAAtB,CAAJ,EAAmC;MAAE,YAAY,CAAC,EAAb,CAAgB,MAAhB,EAAwB,OAAO,CAAC,MAAhC,CAAA,CAAA;KAAyC;;IAC9E,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,cAAtB,CAAJ,EAA2C;MAAE,YAAY,CAAC,EAAb,CAAgB,cAAhB,EAAgC,OAAO,CAAC,cAAxC,CAAA,CAAA;KAAyD;;IACtG,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,gBAAtB,CAAJ,EAA6C;MAAE,YAAY,CAAC,EAAb,CAAgB,gBAAhB,EAAkC,OAAO,CAAC,gBAA1C,CAAA,CAAA;KAA6D;;IAC5G,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,WAAtB,CAAJ,EAAwC;MAAE,YAAY,CAAC,EAAb,CAAgB,WAAhB,EAA6B,OAAO,CAAC,WAArC,CAAA,CAAA;KAAmD;;IAC7F,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,WAAtB,CAAJ,EAAwC;MAAE,YAAY,CAAC,EAAb,CAAgB,WAAhB,EAA6B,OAAO,CAAC,WAArC,CAAA,CAAA;KAAmD;;IAC7F,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAO,CAAC,UAAtB,CAAJ,EAAuC;MAAE,YAAY,CAAC,EAAb,CAAgB,UAAhB,EAA4B,OAAO,CAAC,UAApC,CAAA,CAAA;KAAiD;;IAE1F,IAAI,oBAAA,CAAqB,IAArB,CAA0B,OAAO,CAAC,OAAlC,CAAJ,EAA0D;MACxD,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GAAoC,OAAO,CAAC,OAA5C,CAAA;KADF,MAGK,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,OAAO,CAAC,OAAxB,CAAJ,EAAsC;MACzC,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GAAoC,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,OAAO,CAAC,OAApB,CAAT,EAAuC,CAAvC,CAApC,CAAA;KACD;;IACD,IAAI,QAAA,IAAY,OAAhB,EAAyB;MACvB,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,MAA1B,GAAmC,OAAO,CAAC,MAA3C,CAAA;KACD;;IACD,IAAI,SAAA,IAAa,OAAjB,EAA0B;MACxB,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GAAoC,OAAO,CAAC,OAA5C,CAAA;KACD;;IAED,OAAO,YAAP,CAAA;GACD;;EAED,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAd,CAAJ,EAA4B;IAC1B,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GAAoC,OAApC,CAAA;IAEA,OAAO,YAAP,CAAA;GACD;;EAED,OAAO,YAAY,CAAC,OAAb,CAAqB,IAA5B,CAAA;CACD;;AAED,SAAS,eAAT,CACE,YADF,EAEE,SAFF,EAGE,KAHF,EAIE,SAJF,EAKE,gBALF,EAME,WANF,EAOE,IAPF,EAOW;EAET,IAAI,OAAO,GAAG,KAAd,CAFS;;;EAMT,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,YAAY,CAAC,OAAb,CAAqB,WAArB,CAAjB,CAAJ,EAAyD;IACvD,OAAQ,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,GACJ,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,CAAkC,SAAlC,EAA6C,KAA7C,EAAoD,OAApD,EAA6D,YAA7D,EAA2E,WAA3E,EAAwF,SAAxF,EAAmG,gBAAnG,CADI,GAEJ,KAFJ,CAAA;GAGD;;EAED,IAAM,WAAW,GAAG,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA9C,CAAA;;EAEA,IAAI,WAAW,KAAK,SAApB,EAA+B;IAC7B,IAAM,MAAM,GAAG,SAAK,CAAC,WAAN,CAAkB,SAAlB,EAA6B,gBAA7B,EAA+C,MAA/C,CAAf,CAAA;IACA,IAAM,IAAI,GAAG,SAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,SAAxB,CAAb,CAAA;IAEA,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,CAAjB,CAAA;IACA,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,CAAjB,CAAA;IAEA,IAAM,UAAU,GAAI,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,IAAf,IAAyB,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,KAA1D,CAAA;IACA,IAAM,QAAQ,GAAM,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,GAAf,IAAwB,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,MAAzD,CAAA;IAEA,OAAO,GAAG,UAAU,IAAI,QAAxB,CAAA;GACD;;EAED,IAAM,QAAQ,GAAG,SAAS,CAAC,OAAV,CAAkB,gBAAlB,CAAjB,CAAA;;EAEA,IAAI,QAAQ,IAAI,WAAW,KAAK,QAAhC,EAA0C;IACxC,IAAM,EAAE,GAAG,QAAQ,CAAC,IAAT,GAAgB,QAAQ,CAAC,KAAT,GAAkB,CAA7C,CAAA;IACA,IAAM,EAAE,GAAG,QAAQ,CAAC,GAAT,GAAgB,QAAQ,CAAC,MAAT,GAAkB,CAA7C,CAAA;IAEA,OAAO,GAAG,EAAE,IAAI,IAAI,CAAC,IAAX,IAAmB,EAAE,IAAI,IAAI,CAAC,KAA9B,IAAuC,EAAE,IAAI,IAAI,CAAC,GAAlD,IAAyD,EAAE,IAAI,IAAI,CAAC,MAA9E,CAAA;GACD;;EAED,IAAI,QAAQ,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,WAAhB,CAAhB,EAA8C;IAC5C,IAAM,WAAW,GAAK,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,KAAd,EAAqB,QAAQ,CAAC,KAA9B,CAAA,GAAuC,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,IAAd,EAAoB,QAAQ,CAAC,IAA7B,CAAnD,CAAA,GACA,IAAI,CAAC,GAAL,CAAS,CAAT,EAAY,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,MAAd,EAAsB,QAAQ,CAAC,MAA/B,CAAA,GAAyC,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAd,EAAmB,QAAQ,CAAC,GAA5B,CAArD,CADtB,CAAA;IAGA,IAAM,YAAY,GAAG,WAAW,IAAI,QAAQ,CAAC,KAAT,GAAiB,QAAQ,CAAC,MAA9B,CAAhC,CAAA;IAEA,OAAO,GAAG,YAAY,IAAI,WAA1B,CAAA;GACD;;EAED,IAAI,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA9B,EAAuC;IACrC,OAAO,GAAG,YAAY,CAAC,OAAb,CAAqB,IAArB,CAA0B,OAA1B,CAAkC,SAAlC,EAA6C,KAA7C,EAAoD,OAApD,EAA6D,YAA7D,EAA2E,WAA3E,EAAwF,SAAxF,EAAmG,gBAAnG,CAAV,CAAA;GACD;;EAED,OAAO,OAAP,CAAA;CACD;;AAED,IAAM,IAAI,GAAG;EACX,EAAE,EAAE,cADO;EAEX,OAAO,EAAP,WAFW;EAGX,cAAc,EAAd,cAHW;EAIX,OAAO,EAAP,OAJW;EAKX,aAAa,EAAb,aALW;EAMX,cAAc,EAAd,cANW;EAOX,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,MAAM,EAAG,IAFD;IAGR,OAAO,EAAE,SAAA;GAHD;CAPZ,CAAA;mBAce;;;;;;;;;;;AC/iBf,IAAA,kBAAA,GAAA,0BAAA,CAAA,kBAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,cAAA,CAAA;;AACA,IAAA,SAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;;;;;AAuCC,UAAA,CAAA,UAAA,CAAmB,OAAnB,GAA6B,SAA7B,CAAA;;AAkBD,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,OAF0B,GAMxB,KANwB,CAE1B,OAF0B;MAG1B,YAH0B,GAMxB,KANwB,CAG1B,YAH0B;MAI1B,YAJ0B,GAMxB,KANwB,CAI1B,YAJ0B;MAK1B,QAL0B,GAMxB,KANwB,CAK1B,QAL0B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;EA+B5B,YAAY,CAAC,SAAb,CAAuB,UAAvB,GAAoC,UAAuC,OAAvC,EAAoF;IACtH,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,OAAhB,CAAJ,EAA8B;MAC5B,IAAA,CAAK,OAAL,CAAa,OAAb,CAAqB,OAArB,GAA+B,OAAO,CAAC,OAAR,KAAoB,KAAnD,CAAA;MACA,IAAA,CAAK,YAAL,CAAkB,SAAlB,EAA6B,OAA7B,CAAA,CAAA;MACA,IAAA,CAAK,WAAL,CAAiB,SAAjB,EAA4B,OAA5B,CAAA,CAAA;MAEA,OAAO,IAAP,CAAA;KACD;;IAED,IAAI,SAAK,CAAC,EAAN,CAAS,IAAT,CAAc,OAAd,CAAJ,EAA4B;MAC1B,IAAA,CAAK,OAAL,CAAa,OAAb,CAAqB,OAArB,GAA+B,OAA/B,CAAA;MAEA,OAAO,IAAP,CAAA;KACD;;IAED,OAAO,IAAA,CAAK,OAAL,CAAa,OAApB,CAAA;GAfF,CAAA;;EAkBA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,cAAxB,EAAwC,kBAAxC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,kBAAvC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,YAAxB,EAAsC,kBAAtC,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;IACjD,WAAW,CAAC,OAAZ,GAAsB;MACpB,KAAK,EAAE,CADa;MAEpB,QAAQ,EAAE,CAFU;MAGpB,KAAK,EAAE,CAHa;MAIpB,UAAU,EAAE,CAJQ;MAKpB,aAAa,EAAE,CAAA;KALjB,CAAA;GADF,CAAA,CAAA;EAUA,OAAO,CAAC,UAAA,CAAA,UAAA,CAAW,OAAZ,CAAP,GAA8B,OAA9B,CAAA;EACA,OAAO,CAAC,KAAR,CAAc,IAAd,CAAmB,UAAA,CAAA,UAAA,CAAW,OAA9B,CAAA,CAAA;EACA,SAAK,CAAC,GAAN,CAAU,KAAV,CAAgB,OAAO,CAAC,UAAxB,EAAoC,CAClC,cADkC,EAElC,aAFkC,EAGlC,YAHkC,CAApC,CAAA,CAAA;EAKA,OAAO,CAAC,UAAR,CAAmB,OAAnB,GAA6B,YAA7B,CAAA;EAEA,QAAQ,CAAC,OAAT,CAAiB,OAAjB,GAA2B,OAAO,CAAC,QAAnC,CAAA;CACD;;AAED,IAAM,OAAO,GAAG;EACd,EAAE,EAAE,iBADU;EAEd,OAAO,EAAP,WAFc;EAGd,QAAQ,EAAE,EAHI;EAMd,OANc,EAAA,SAAA,OAAA,CAML,QANK,EAMK,MANL,EAMa,aANb,EAM4B,QAN5B,EAMsC,WANtC,EAMqF;IACjG,IAAI,WAAW,CAAC,QAAZ,CAAqB,MAArB,IAA+B,CAAnC,EAAsC;MACpC,OAAO;QAAE,IAAI,EAAE,SAAA;OAAf,CAAA;KACD;;IAED,OAAO,IAAP,CAAA;GAXY;EAcd,SAdc,EAAA,SAAA,SAAA,GAcL;IACP,OAAO,EAAP,CAAA;GACD;CAhBH,CAAA;;AAmBA,SAAS,kBAAT,CAAA,KAAA,EAAoF;EAAA,IAArD,WAAqD,GAAA,KAAA,CAArD,WAAqD;MAAxC,MAAwC,GAAA,KAAA,CAAxC,MAAwC;MAAhC,KAAgC,GAAA,KAAA,CAAhC,KAAgC;MAAzB,KAAyB,GAAA,KAAA,CAAzB,KAAyB,CAAA;;EAClF,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,SAAlC,EAA6C;IAAE,OAAA;GAAQ;;EAEvD,IAAM,QAAQ,GAAG,WAAW,CAAC,QAAZ,CAAqB,GAArB,CAAyB,UAAC,CAAD,EAAA;IAAA,OAAO,CAAC,CAAC,OAAT,CAAA;GAAzB,CAAjB,CAAA;EACA,IAAM,QAAQ,GAAG,KAAK,KAAK,OAA3B,CAAA;EACA,IAAM,MAAM,GAAG,KAAK,KAAK,KAAzB,CAAA;EACA,IAAM,WAAW,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,WAArD,CAAA;EAEA,MAAM,CAAC,OAAP,GAAiB,CAAC,QAAQ,CAAC,CAAD,CAAT,EAAc,QAAQ,CAAC,CAAD,CAAtB,CAAjB,CAAA;;EAEA,IAAI,QAAJ,EAAc;IACZ,MAAM,CAAC,QAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,aAAd,CAA4B,QAA5B,EAAsC,WAAtC,CAAlB,CAAA;IACA,MAAM,CAAC,GAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,QAAxB,CAAlB,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,CAAlB,CAAA;IACA,MAAM,CAAC,EAAP,GAAkB,CAAlB,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,QAAzB,EAAmC,WAAnC,CAAlB,CAAA;IACA,MAAM,CAAC,EAAP,GAAkB,CAAlB,CAAA;IAEA,WAAW,CAAC,OAAZ,CAAoB,aAApB,GAAoC,MAAM,CAAC,QAA3C,CAAA;IACA,WAAW,CAAC,OAAZ,CAAoB,UAApB,GAAiC,MAAM,CAAC,KAAxC,CAAA;GATF,MAWK,IAAI,MAAM,IAAI,KAAK,YAAY,kBAAA,CAAA,SAAA,CAA/B,EAA8C;IACjD,IAAM,SAAS,GAAG,WAAW,CAAC,SAA9B,CAAA;IAEA,MAAM,CAAC,QAAP,GAAkB,SAAS,CAAC,QAA5B,CAAA;IACA,MAAM,CAAC,GAAP,GAAkB,SAAS,CAAC,GAA5B,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,SAAS,CAAC,KAA5B,CAAA;IACA,MAAM,CAAC,EAAP,GAAkB,CAAlB,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,SAAS,CAAC,KAA5B,CAAA;IACA,MAAM,CAAC,EAAP,GAAkB,CAAlB,CAAA;GARG,MAUA;IACH,MAAM,CAAC,QAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,aAAd,CAA4B,QAA5B,EAAsC,WAAtC,CAAlB,CAAA;IACA,MAAM,CAAC,GAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,QAAxB,CAAlB,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,MAAM,CAAC,QAAP,GAAkB,WAAW,CAAC,OAAZ,CAAoB,aAAxD,CAAA;IACA,MAAM,CAAC,KAAP,GAAkB,SAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,QAAzB,EAAmC,WAAnC,CAAlB,CAAA;IAEA,MAAM,CAAC,EAAP,GAAY,MAAM,CAAC,KAAP,GAAe,WAAW,CAAC,OAAZ,CAAoB,KAA/C,CAAA;IACA,MAAM,CAAC,EAAP,GAAY,MAAM,CAAC,KAAP,GAAe,WAAW,CAAC,OAAZ,CAAoB,KAA/C,CAAA;GACD;;EAED,WAAW,CAAC,OAAZ,CAAoB,QAApB,GAA+B,MAAM,CAAC,QAAtC,CAAA;EACA,WAAW,CAAC,OAAZ,CAAoB,KAApB,GAA4B,MAAM,CAAC,KAAnC,CAAA;;EAEA,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,MAAM,CAAC,KAAvB,CAAA,IACA,MAAM,CAAC,KAAP,KAAiB,QADjB,IAEA,CAAC,KAAK,CAAC,MAAM,CAAC,KAAR,CAFV,EAE0B;IACxB,WAAW,CAAC,OAAZ,CAAoB,KAApB,GAA4B,MAAM,CAAC,KAAnC,CAAA;GACD;CACF;;mBAEc;;;;;;;;;;;AC3Mf,IAAA,UAAA,GAAA,cAAA,CAAA;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,0BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,OAAA,CAAA,CAAA;;;;;;AA+CC,UAAA,CAAA,UAAA,CAAmB,MAAnB,GAA4B,QAA5B,CAAA;;AAMD,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,OAF0B,GAQxB,KARwB,CAE1B,OAF0B;MAG1B,OAH0B,GAQxB,KARwB,CAG1B,OAH0B;MAK1B,YAL0B,GAQxB,KARwB,CAK1B,YAL0B;MAM1B,YAN0B,GAQxB,KARwB,CAM1B,YAN0B;MAO1B,QAP0B,GAQxB,KARwB,CAO1B,QAP0B,CAAA;;EAY5B,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAC,WAAD,EAAgB;IAC7C,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAAA;GADF,CAAA,CAAA;EAIA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,cAAxB,EAAwC,KAAxC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,QAAvC,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,cAAxB,EAAwC,eAAxC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,eAAvC,CAAA,CAAA;EAEA,MAAM,CAAC,OAAP,GAAiB,WAAW,CAAC,OAAD,CAA5B,CAAA;EACA,MAAM,CAAC,aAAP,GAAuB,OAAO,CAAC,aAAR,IAAyB,OAAO,CAAC,oBAAjC,GAAwD,EAAxD,GAA6D,EAApF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CA,YAAY,CAAC,SAAb,CAAuB,SAAvB,GAAmC,UAAuC,OAAvC,EAAmF;IACpH,OAAO,SAAS,CAAC,IAAD,EAAO,OAAP,EAAgB,KAAhB,CAAhB,CAAA;GADF,CAAA;;EAIA,OAAO,CAAC,UAAA,CAAA,UAAA,CAAW,MAAZ,CAAP,GAA6B,MAA7B,CAAA;EACA,OAAO,CAAC,KAAR,CAAc,IAAd,CAAmB,UAAA,CAAA,UAAA,CAAW,MAA9B,CAAA,CAAA;EACA,OAAG,CAAC,KAAJ,CAAU,OAAO,CAAC,UAAlB,EAA8B,CAC5B,aAD4B,EAE5B,YAF4B,EAG5B,oBAH4B,EAI5B,cAJ4B,EAK5B,WAL4B,CAA9B,CAAA,CAAA;EAOA,OAAO,CAAC,UAAR,CAAmB,MAAnB,GAA4B,WAA5B,CAAA;EAEA,QAAQ,CAAC,OAAT,CAAiB,MAAjB,GAA0B,MAAM,CAAC,QAAjC,CAAA;CACD;;AAED,IAAM,MAAM,GAAG;EACb,EAAE,EAAE,gBADS;EAEb,OAAO,EAAP,WAFa;EAGb,QAAQ,EAAE;IACR,MAAM,EAAE,KADA;IAER,mBAAmB,EAAE,KAFb;IAGR,IAAI,EAAE,IAHE;;IAMR,MAAM,EAAE,GANA;;;;;IAYR,KAAK,EAAE,IAZC;;;;;IAkBR,MAAM,EAAE,MAAA;GArBG;EAwBb,OAxBa,EAAA,SAAA,OAAA,CAyBX,QAzBW,EA0BX,MA1BW,EA2BX,YA3BW,EA4BX,OA5BW,EA6BX,WA7BW,EA8BX,IA9BW,EA8BQ;IAEnB,IAAI,CAAC,IAAL,EAAW;MAAE,OAAO,IAAP,CAAA;KAAa;;IAE1B,IAAM,IAAI,GAAG,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IAAlC,CAAb,CAAA;IACA,IAAM,OAAO,GAAG,YAAY,CAAC,OAA7B,CAAA;;IAEA,IAAI,OAAO,CAAC,MAAR,CAAe,OAAnB,EAA4B;MAC1B,IAAM,aAAa,GAAG,OAAO,CAAC,MAA9B,CAAA;MACA,IAAM,WAAW,GAAgC;QAAE,IAAI,EAAE,KAAR;QAAe,KAAK,EAAE,KAAtB;QAA6B,GAAG,EAAE,KAAlC;QAAyC,MAAM,EAAE,KAAA;OAAlG,CAF0B;;MAK1B,IAAI,MAAE,CAAC,MAAH,CAAU,aAAa,CAAC,KAAxB,CAAJ,EAAoC;QAClC,KAAK,IAAM,IAAX,IAAmB,WAAnB,EAAgC;UAC9B,WAAW,CAAC,IAAD,CAAX,GAAoB,eAAe,CAAC,IAAD,EACjC,aAAa,CAAC,KAAd,CAAoB,IAApB,CADiC,EAEjC,IAFiC,EAGjC,WAAW,CAAC,cAAZ,CAA2B,WAHM,EAIjC,OAJiC,EAKjC,IALiC,EAMjC,aAAa,CAAC,MAAd,IAAwB,IAAA,CAAK,aANI,CAAnC,CAAA;SAOD;;QAED,WAAW,CAAC,IAAZ,GAAmB,WAAW,CAAC,IAAZ,IAAoB,CAAC,WAAW,CAAC,KAApD,CAAA;QACA,WAAW,CAAC,GAAZ,GAAmB,WAAW,CAAC,GAAZ,IAAoB,CAAC,WAAW,CAAC,MAApD,CAAA;;QAEA,IAAI,WAAW,CAAC,IAAZ,IAAoB,WAAW,CAAC,KAAhC,IAAyC,WAAW,CAAC,GAArD,IAA4D,WAAW,CAAC,MAA5E,EAAoF;UAClF,OAAO;YACL,IAAI,EAAE,QADD;YAEL,KAAK,EAAE,WAAA;WAFT,CAAA;SAID;OAnBH,MAqBK;QACH,IAAM,KAAK,GAAI,OAAO,CAAC,MAAR,CAAe,IAAf,KAAwB,GAAxB,IAA+B,IAAI,CAAC,CAAL,GAAU,IAAI,CAAC,KAAL,GAAc,IAAA,CAAK,aAA3E,CAAA;QACA,IAAM,MAAM,GAAG,OAAO,CAAC,MAAR,CAAe,IAAf,KAAwB,GAAxB,IAA+B,IAAI,CAAC,CAAL,GAAU,IAAI,CAAC,MAAL,GAAc,IAAA,CAAK,aAA3E,CAAA;;QAEA,IAAI,KAAK,IAAI,MAAb,EAAqB;UACnB,OAAO;YACL,IAAI,EAAE,QADD;YAEL,IAAI,EAAE,CAAC,KAAK,GAAG,GAAH,GAAS,EAAf,KAAsB,MAAM,GAAG,GAAH,GAAS,EAArC,CAAA;WAFR,CAAA;SAID;OACF;KACF;;IAED,OAAO,IAAP,CAAA;GA5EW;EA+Eb,OAAO,EAAE,IA/EI;EAiFb,SAjFa,EAAA,SAAA,SAAA,CAiFF,MAjFE,EAiFiB;IAC5B,IAAM,OAAO,GAAG,MAAM,CAAC,OAAvB,CAAA;;IACA,IAAI,MAAM,CAAC,IAAX,EAAiB;MACf,OAAO,OAAO,CAAC,MAAM,CAAC,IAAP,GAAc,MAAM,CAAC,IAAtB,CAAd,CAAA;KADF,MAGK,IAAI,MAAM,CAAC,KAAX,EAAkB;MACrB,IAAI,SAAS,GAAG,EAAhB,CAAA;MACA,IAAM,SAAS,GAAG,CAAC,KAAD,EAAQ,QAAR,EAAkB,MAAlB,EAA0B,OAA1B,CAAlB,CAAA;;MAEA,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,CAApB,EAAuB,CAAC,EAAxB,EAA4B;QAC1B,IAAI,MAAM,CAAC,KAAP,CAAa,SAAS,CAAC,CAAD,CAAtB,CAAJ,EAAgC;UAC9B,SAAS,IAAI,SAAS,CAAC,CAAD,CAAtB,CAAA;SACD;OACF;;MAED,OAAO,OAAO,CAAC,SAAD,CAAd,CAAA;KACD;;IAED,OAAO,IAAP,CAAA;GAnGW;EAsGb,aAAa,EAAE,IAAA;CAtGjB,CAAA;;AAyGA,SAAS,SAAT,CAAoB,YAApB,EAAyD,OAAzD,EAA2H,KAA3H,EAAuI;EACrI,IAAI,MAAE,CAAC,MAAH,CAAU,OAAV,CAAJ,EAAwB;IACtB,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,OAA5B,GAAsC,OAAO,CAAC,OAAR,KAAoB,KAA1D,CAAA;IACA,YAAY,CAAC,YAAb,CAA0B,QAA1B,EAAoC,OAApC,CAAA,CAAA;IACA,YAAY,CAAC,WAAb,CAAyB,QAAzB,EAAmC,OAAnC,CAAA,CAAA;;IAEA,IAAI,MAAE,CAAC,MAAH,CAAU,OAAO,CAAC,IAAlB,CAAA,IAA2B,cAAA,CAAe,IAAf,CAAoB,OAAO,CAAC,IAA5B,CAA/B,EAAkE;MAChE,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,IAA5B,GAAmC,OAAO,CAAC,IAA3C,CAAA;KADF,MAGK,IAAI,OAAO,CAAC,IAAR,KAAiB,IAArB,EAA2B;MAC9B,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,IAA5B,GAAmC,KAAK,CAAC,QAAN,CAAe,OAAf,CAAuB,MAAvB,CAA8B,IAAjE,CAAA;KACD;;IAED,IAAI,MAAE,CAAC,IAAH,CAAQ,OAAO,CAAC,mBAAhB,CAAJ,EAA0C;MACxC,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,mBAA5B,GAAkD,OAAO,CAAC,mBAA1D,CAAA;KADF,MAGK,IAAI,MAAE,CAAC,IAAH,CAAQ,OAAO,CAAC,MAAhB,CAAJ,EAA6B;MAChC,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,MAA5B,GAAqC,OAAO,CAAC,MAA7C,CAAA;KACD;;IAED,OAAO,YAAP,CAAA;GACD;;EACD,IAAI,MAAE,CAAC,IAAH,CAAQ,OAAR,CAAJ,EAAsB;IACpB,YAAY,CAAC,OAAb,CAAqB,MAArB,CAA4B,OAA5B,GAAsC,OAAtC,CAAA;IAEA,OAAO,YAAP,CAAA;GACD;;EACD,OAAO,YAAY,CAAC,OAAb,CAAqB,MAA5B,CAAA;CACD;;AAED,SAAS,eAAT,CAA0B,IAA1B,EAAwC,KAAxC,EAAoD,IAApD,EAA0E,OAA1E,EAAyF,mBAAzF,EAAuH,IAAvH,EAA4I,MAA5I,EAA0J;;EAExJ,IAAI,CAAC,KAAL,EAAY;IAAE,OAAO,KAAP,CAAA;GAF0I;;;EAKxJ,IAAI,KAAK,KAAK,IAAd,EAAoB;;IAElB,IAAM,KAAK,GAAI,MAAE,CAAC,MAAH,CAAU,IAAI,CAAC,KAAf,CAAA,GAAwB,IAAI,CAAC,KAA7B,GAAsC,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,IAAxE,CAAA;IACA,IAAM,MAAM,GAAG,MAAE,CAAC,MAAH,CAAU,IAAI,CAAC,MAAf,CAAA,GAAyB,IAAI,CAAC,MAA9B,GAAuC,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,GAAzE,CAHkB;;IAMlB,MAAM,GAAG,IAAI,CAAC,GAAL,CAAS,MAAT,EAAiB,CAAC,IAAI,KAAK,MAAT,IAAmB,IAAI,KAAK,OAA5B,GAAsC,KAAtC,GAA8C,MAA/C,IAAyD,CAA1E,CAAT,CAAA;;IAEA,IAAI,KAAK,GAAG,CAAZ,EAAe;MACb,IAAS,IAAI,KAAK,MAAlB,EAA2B;QAAE,IAAI,GAAG,OAAP,CAAA;OAA7B,MACK,IAAI,IAAI,KAAK,OAAb,EAAsB;QAAE,IAAI,GAAG,MAAP,CAAA;OAAgB;KAC9C;;IACD,IAAI,MAAM,GAAG,CAAb,EAAgB;MACd,IAAS,IAAI,KAAK,KAAlB,EAA4B;QAAE,IAAI,GAAG,QAAP,CAAA;OAA9B,MACK,IAAI,IAAI,KAAK,QAAb,EAAuB;QAAE,IAAI,GAAG,KAAP,CAAA;OAAiB;KAChD;;IAED,IAAI,IAAI,KAAK,MAAb,EAAqB;MAAE,OAAO,IAAI,CAAC,CAAL,GAAU,CAAC,KAAK,IAAK,CAAV,GAAc,IAAI,CAAC,IAAnB,GAA0B,IAAI,CAAC,KAAhC,IAAyC,MAA1D,CAAA;KAAmE;;IAC1F,IAAI,IAAI,KAAK,KAAb,EAAoB;MAAE,OAAO,IAAI,CAAC,CAAL,GAAU,CAAC,MAAM,IAAI,CAAV,GAAc,IAAI,CAAC,GAAnB,GAAyB,IAAI,CAAC,MAA/B,IAAyC,MAA1D,CAAA;KAAmE;;IAEzF,IAAI,IAAI,KAAK,OAAb,EAAsB;MAAE,OAAO,IAAI,CAAC,CAAL,GAAU,CAAC,KAAK,IAAK,CAAV,GAAc,IAAI,CAAC,KAAnB,GAA2B,IAAI,CAAC,IAAjC,IAAyC,MAA1D,CAAA;KAAmE;;IAC3F,IAAI,IAAI,KAAK,QAAb,EAAuB;MAAE,OAAO,IAAI,CAAC,CAAL,GAAU,CAAC,MAAM,IAAI,CAAV,GAAc,IAAI,CAAC,MAAnB,GAA4B,IAAI,CAAC,GAAlC,IAAyC,MAA1D,CAAA;KAAmE;GA1B0D;;;EA8BxJ,IAAI,CAAC,MAAE,CAAC,OAAH,CAAW,OAAX,CAAL,EAA0B;IAAE,OAAO,KAAP,CAAA;GAAc;;EAE1C,OAAO,MAAE,CAAC,OAAH,CAAW,KAAX,CAAA;IAEH,KAAK,KAAK,OAFP;IAIH,OAAG,CAAC,WAAJ,CAAgB,OAAhB,EAAyB,KAAzB,EAAgC,mBAAhC,CAJJ,CAAA;CAKD;;AAED,SAAS,WAAT,CAAsB,OAAtB,EAAkF;EAChF,OAAQ,OAAO,CAAC,KAAR,GAAgB;IACtB,CAAC,EAAG,UADkB;IAEtB,CAAC,EAAG,UAFkB;IAGtB,EAAE,EAAE,WAHkB;IAKtB,GAAG,EAAU,UALS;IAMtB,IAAI,EAAS,UANS;IAOtB,MAAM,EAAO,UAPS;IAQtB,KAAK,EAAQ,UARS;IAStB,OAAO,EAAM,WATS;IAUtB,WAAW,EAAE,WAVS;IAWtB,QAAQ,EAAK,WAXS;IAYtB,UAAU,EAAG,WAAA;GAZP,GAaJ;IACF,CAAC,EAAG,WADF;IAEF,CAAC,EAAG,WAFF;IAGF,EAAE,EAAE,aAHF;IAKF,GAAG,EAAU,WALX;IAMF,IAAI,EAAS,WANX;IAOF,MAAM,EAAO,WAPX;IAQF,KAAK,EAAQ,WARX;IASF,OAAO,EAAM,aATX;IAUF,WAAW,EAAE,aAVX;IAWF,QAAQ,EAAK,aAXX;IAYF,UAAU,EAAG,aAAA;GAzBf,CAAA;CA2BD;;AAED,SAAS,KAAT,CAAA,IAAA,EAA2D;EAAA,IAAzC,MAAyC,GAAA,IAAA,CAAzC,MAAyC;MAAjC,WAAiC,GAAA,IAAA,CAAjC,WAAiC,CAAA;;EACzD,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,QAA9B,IAA0C,CAAC,WAAW,CAAC,QAAZ,CAAqB,KAApE,EAA2E;IACzE,OAAA;GACD;;EAED,IAAM,SAAS,GAAG,WAAW,CAAC,IAA9B,CAAA;EACA,IAAM,aAAa,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,MAAvD,CAAA;;;;;;;;EAQA,IAAI,aAAa,CAAC,MAAd,IAAwB,aAAa,CAAC,mBAA1C,EAA+D;IAC7D,IAAM,WAAW,GAAG,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,WAAW,CAAC,QAAZ,CAAqB,KAAhC,CAApB,CAAA;IAEA,WAAW,CAAC,GAAZ,GAAqB,WAAW,CAAC,GAAZ,IAAuB,WAAW,CAAC,IAAZ,IAAsB,CAAC,WAAW,CAAC,MAA/E,CAAA;IACA,WAAW,CAAC,IAAZ,GAAqB,WAAW,CAAC,IAAZ,IAAuB,WAAW,CAAC,GAAZ,IAAsB,CAAC,WAAW,CAAC,KAA/E,CAAA;IACA,WAAW,CAAC,MAAZ,GAAqB,WAAW,CAAC,MAAZ,IAAuB,WAAW,CAAC,KAAZ,IAAsB,CAAC,WAAW,CAAC,GAA/E,CAAA;IACA,WAAW,CAAC,KAAZ,GAAqB,WAAW,CAAC,KAAZ,IAAuB,WAAW,CAAC,MAAZ,IAAsB,CAAC,WAAW,CAAC,IAA/E,CAAA;IAEA,WAAW,CAAC,QAAZ,CAAqB,YAArB,GAAoC,WAApC,CAAA;GARF,MAUK;IACH,WAAW,CAAC,QAAZ,CAAqB,YAArB,GAAoC,IAApC,CAAA;GAzBuD;;;EA6BzD,IAAI,aAAa,CAAC,mBAAlB,EAAuC;IACrC,WAAW,CAAC,sBAAZ,GAAqC,SAAS,CAAC,KAAV,GAAkB,SAAS,CAAC,MAAjE,CAAA;GACD;;EAED,WAAW,CAAC,WAAZ,GAA0B;IACxB,KAAK,EAAO,SADY;IAExB,OAAO,EAAK,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,SAAX,CAFY;IAGxB,QAAQ,EAAI,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,SAAX,CAHY;IAIxB,QAAQ,EAAI,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,SAAX,CAJY;IAKxB,KAAK,EAAO;MACV,IAAI,EAAE,CADI;MAEV,KAAK,EAAG,CAFE;MAGV,KAAK,EAAG,CAHE;MAIV,GAAG,EAAG,CAJI;MAKV,MAAM,EAAE,CALE;MAMV,MAAM,EAAE,CAAA;KANE;GALd,CAAA;EAeA,MAAM,CAAC,IAAP,GAAc,WAAW,CAAC,WAAZ,CAAwB,QAAtC,CAAA;EACG,MAAsB,CAAC,SAAvB,GAAmC,WAAW,CAAC,WAAZ,CAAwB,KAA3D,CAAA;CACJ;;AAED,SAAS,QAAT,CAAA,KAAA,EAAsC;EAAA,IAArB,MAAqB,GAAA,KAAA,CAArB,MAAqB;MAAb,WAAa,GAAA,KAAA,CAAb,WAAa,CAAA;;EACpC,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,QAA9B,IAA0C,CAAC,WAAW,CAAC,QAAZ,CAAqB,KAApE,EAA2E;IAAE,OAAA;GAAQ;;EAErF,IAAM,aAAa,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,MAAvD,CAAA;EACA,IAAM,MAAM,GAAG,aAAa,CAAC,MAA7B,CAAA;EACA,IAAM,UAAU,GAAG,MAAM,KAAK,YAAX,IAA2B,MAAM,KAAK,QAAzD,CAAA;EAEA,IAAI,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,KAAjC,CAPoC;;EAUpC,IAAM,KAAK,GAAQ,WAAW,CAAC,WAAZ,CAAwB,KAA3C,CAAA;EACA,IAAM,OAAO,GAAM,WAAW,CAAC,WAAZ,CAAwB,OAA3C,CAAA;EACA,IAAM,QAAQ,GAAK,WAAW,CAAC,WAAZ,CAAwB,QAA3C,CAAA;EACA,IAAM,SAAS,GAAI,WAAW,CAAC,WAAZ,CAAwB,KAA3C,CAAA;EACA,IAAM,QAAQ,GAAK,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAO,WAAW,CAAC,WAAZ,CAAwB,QAA/B,EAAyC,QAAzC,CAAnB,CAAA;EACA,IAAM,aAAa,GAAG,KAAtB,CAAA;EAEA,IAAM,UAAU,GAAG,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,MAAM,CAAC,KAAlB,CAAnB,CAAA;;EAEA,IAAI,aAAa,CAAC,mBAAd,IAAqC,aAAa,CAAC,MAAvD,EAA+D;;IAE7D,IAAM,gBAAgB,GAAG,aAAa,CAAC,mBAAd,GACrB,WAAW,CAAC,sBADS,GAErB,CAFJ,CAAA;IAIA,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,YAA7B,CAAA;;IAEA,IAAK,aAAa,CAAC,IAAd,IAAsB,aAAa,CAAC,MAArC,IACC,aAAa,CAAC,KAAd,IAAuB,aAAa,CAAC,GAD1C,EACgD;MAC9C,UAAU,CAAC,CAAX,GAAe,CAAC,UAAU,CAAC,CAAZ,GAAgB,gBAA/B,CAAA;KAFF,MAIK,IAAI,aAAa,CAAC,IAAd,IAAsB,aAAa,CAAC,KAAxC,EAA+C;MAAE,UAAU,CAAC,CAAX,GAAe,UAAU,CAAC,CAAX,GAAe,gBAA9B,CAAA;KAAjD,MACA,IAAI,aAAa,CAAC,GAAd,IAAsB,aAAa,CAAC,MAAxC,EAAgD;MAAE,UAAU,CAAC,CAAX,GAAe,UAAU,CAAC,CAAX,GAAe,gBAA9B,CAAA;KAAgD;GAhCrE;;;EAoCpC,IAAI,KAAK,CAAC,GAAV,EAAe;IAAE,OAAO,CAAC,GAAR,IAAkB,UAAU,CAAC,CAA7B,CAAA;GAAgC;;EACjD,IAAI,KAAK,CAAC,MAAV,EAAkB;IAAE,OAAO,CAAC,MAAR,IAAkB,UAAU,CAAC,CAA7B,CAAA;GAAgC;;EACpD,IAAI,KAAK,CAAC,IAAV,EAAgB;IAAE,OAAO,CAAC,IAAR,IAAkB,UAAU,CAAC,CAA7B,CAAA;GAAgC;;EAClD,IAAI,KAAK,CAAC,KAAV,EAAiB;IAAE,OAAO,CAAC,KAAR,IAAkB,UAAU,CAAC,CAA7B,CAAA;GAAgC;;EAEnD,IAAI,UAAJ,EAAgB;;IAEd,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAO,QAAP,EAAiB,OAAjB,CAAA,CAAA;;IAEA,IAAI,MAAM,KAAK,YAAf,EAA6B;;MAE3B,IAAI,IAAJ,CAAA;;MAEA,IAAI,QAAQ,CAAC,GAAT,GAAe,QAAQ,CAAC,MAA5B,EAAoC;QAClC,IAAI,GAAG,QAAQ,CAAC,GAAhB,CAAA;QAEA,QAAQ,CAAC,GAAT,GAAe,QAAQ,CAAC,MAAxB,CAAA;QACA,QAAQ,CAAC,MAAT,GAAkB,IAAlB,CAAA;OACD;;MACD,IAAI,QAAQ,CAAC,IAAT,GAAgB,QAAQ,CAAC,KAA7B,EAAoC;QAClC,IAAI,GAAG,QAAQ,CAAC,IAAhB,CAAA;QAEA,QAAQ,CAAC,IAAT,GAAgB,QAAQ,CAAC,KAAzB,CAAA;QACA,QAAQ,CAAC,KAAT,GAAiB,IAAjB,CAAA;OACD;KACF;GApBH,MAsBK;;IAEH,QAAQ,CAAC,GAAT,GAAkB,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,GAAjB,EAAsB,KAAK,CAAC,MAA5B,CAAlB,CAAA;IACA,QAAQ,CAAC,MAAT,GAAkB,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,MAAjB,EAAyB,KAAK,CAAC,GAA/B,CAAlB,CAAA;IACA,QAAQ,CAAC,IAAT,GAAkB,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,IAAjB,EAAuB,KAAK,CAAC,KAA7B,CAAlB,CAAA;IACA,QAAQ,CAAC,KAAT,GAAkB,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,KAAjB,EAAwB,KAAK,CAAC,IAA9B,CAAlB,CAAA;GACD;;EAED,QAAQ,CAAC,KAAT,GAAkB,QAAQ,CAAC,KAAT,GAAkB,QAAQ,CAAC,IAA7C,CAAA;EACA,QAAQ,CAAC,MAAT,GAAkB,QAAQ,CAAC,MAAT,GAAkB,QAAQ,CAAC,GAA7C,CAAA;;EAEA,KAAK,IAAM,IAAX,IAAmB,QAAnB,EAA6B;IAC3B,SAAS,CAAC,IAAD,CAAT,GAAkB,QAAQ,CAAC,IAAD,CAAR,GAAiB,QAAQ,CAAC,IAAD,CAA3C,CAAA;GACD;;EAED,MAAM,CAAC,KAAP,GAAe,WAAW,CAAC,QAAZ,CAAqB,KAApC,CAAA;EACA,MAAM,CAAC,IAAP,GAAc,QAAd,CAAA;EACA,MAAM,CAAC,SAAP,GAAmB,SAAnB,CAAA;CACD;;AAED,SAAS,eAAT,CAAA,KAAA,EAAyD;EAAA,IAA7B,WAA6B,GAAA,KAAA,CAA7B,WAA6B;MAAhB,MAAgB,GAAA,KAAA,CAAhB,MAAgB;MAAR,MAAQ,GAAA,KAAA,CAAR,MAAQ,CAAA;;EACvD,IAAI,MAAM,KAAK,QAAX,IAAuB,CAAC,WAAW,CAAC,UAAxC,EAAoD;IAAE,OAAA;GAAQ;;EAE9D,IAAM,OAAO,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzC,CAAA;;EAEA,IAAI,OAAO,CAAC,MAAR,CAAe,MAAnB,EAA2B;IACzB,IAAI,WAAW,CAAC,UAAZ,KAA2B,GAA/B,EAAoC;MAClC,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,MAAM,CAAC,KAAP,CAAa,CAA9B,CAAA;KADF,MAGK;MACH,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,MAAM,CAAC,KAAP,CAAa,CAA9B,CAAA;KACD;;IACD,MAAM,CAAC,IAAP,GAAc,IAAd,CAAA;GAPF,MASK;IACH,MAAM,CAAC,IAAP,GAAc,WAAW,CAAC,UAA1B,CAAA;;IAEA,IAAI,WAAW,CAAC,UAAZ,KAA2B,GAA/B,EAAoC;MAClC,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,CAAjB,CAAA;KADF,MAGK,IAAI,WAAW,CAAC,UAAZ,KAA2B,GAA/B,EAAoC;MACvC,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,CAAjB,CAAA;KACD;GACF;CACF;;mBAEc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9ff,IAAA,SAAA,GAAA,0BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,KAAA,GAAA,0BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,0BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,0BAAA,CAAA,UAAA,CAAA,CAAA;;;;AAEA,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAC5B,KAAK,CAAC,SAAN,CAAgB,QAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EACA,KAAK,CAAC,SAAN,CAAgB,OAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EACA,KAAK,CAAC,SAAN,CAAgB,SAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EACA,KAAK,CAAC,SAAN,CAAgB,KAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;CACD;;AAED,IAAM,EAAE,GAAG,SAAX,CAAA;;;;;;;;;;;;;;;ACbA,IAAA,YAAA,GAAA,2BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,0BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,kEAAA;;AACA,sEAAA;;;;;;AAsBA,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,YAF0B,GAKxB,KALwB,CAE1B,YAF0B;MAG1B,QAH0B,GAKxB,KALwB,CAG1B,QAH0B;MAI1B,OAJ0B,GAKxB,KALwB,CAI1B,OAJ0B,CAAA;EAO5B,KAAK,CAAC,UAAN,GAAmB,UAAnB,CAAA;;EACA,UAAU,CAAC,GAAX,GAAiB,YAAA;IAAA,OAAM,KAAK,CAAC,GAAN,EAAN,CAAA;GAAjB,CAAA;;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;IACjD,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAAA;GADF,CAAA,CAAA;EAIA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,SAAxB,EAAmC,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;IACrD,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAAA;IACA,UAAU,CAAC,IAAX,EAAA,CAAA;;IACA,IAAI,UAAU,CAAC,WAAf,EAA4B;MAC1B,UAAU,CAAC,WAAX,GAAyB,IAAzB,CAAA;KACD;GALH,CAAA,CAAA;EAQA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAU,CAAC,IAA3C,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAxB,EAAuC,UAAC,GAAD,EAAA;IAAA,OAAc,UAAU,CAAC,iBAAX,CAA6B,GAA7B,CAAd,CAAA;GAAvC,CAAA,CAAA;EAEA,OAAO,CAAC,UAAR,CAAmB,IAAnB,CAAwB,YAAxB,CAAA,CAAA;EACA,QAAQ,CAAC,SAAT,CAAmB,UAAnB,GAAgC,UAAU,CAAC,QAA3C,CAAA;CACD;;AAED,IAAM,UAAU,GAAG;EACjB,QAAQ,EAAE;IACR,OAAO,EAAI,KADH;IAER,MAAM,EAAK,EAFH;;IAKR,SAAS,EAAE,IALH;;IAQR,KAAK,EAAM,GAAA;GATI;EAYjB,GAAG,EAAE,IAAI,CAAC,GAZO;EAcjB,WAAW,EAAE,IAdI;EAejB,CAAC,EAAE,IAfc;EAgBjB,CAAC,EAAE,CAhBc;EAiBjB,CAAC,EAAE,CAjBc;EAmBjB,WAAW,EAAE,KAnBI;EAoBjB,QAAQ,EAAE,CApBO;EAqBjB,MAAM,EAAE,CArBS;EAsBjB,KAAK,EAAE,CAtBU;EAwBjB,KAxBiB,EAAA,SAAA,KAAA,CAwBV,WAxBU,EAwBuB;IACtC,UAAU,CAAC,WAAX,GAAyB,IAAzB,CAAA;;IACA,QAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,UAAU,CAAC,CAAtB,CAAA,CAAA;;IAEA,WAAW,CAAC,UAAZ,GAAyB,UAAzB,CAAA;IACA,UAAU,CAAC,WAAX,GAAyB,WAAzB,CAAA;IACA,UAAU,CAAC,QAAX,GAAsB,UAAU,CAAC,GAAX,EAAtB,CAAA;IACA,UAAU,CAAC,CAAX,GAAe,QAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,UAAU,CAAC,MAAvB,CAAf,CAAA;GA/Be;EAkCjB,IAlCiB,EAAA,SAAA,IAAA,GAkCb;IACF,UAAU,CAAC,WAAX,GAAyB,KAAzB,CAAA;;IACA,IAAI,UAAU,CAAC,WAAf,EAA4B;MAC1B,UAAU,CAAC,WAAX,CAAuB,UAAvB,GAAoC,IAApC,CAAA;KACD;;IACD,QAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,UAAU,CAAC,CAAtB,CAAA,CAAA;GAvCe;;EA2CjB,MA3CiB,EAAA,SAAA,MAAA,GA2CX;IAAA,IACI,WADJ,GACoB,UADpB,CACI,WADJ,CAAA;IAAA,IAEI,YAFJ,GAE8B,WAF9B,CAEI,YAFJ;QAEkB,OAFlB,GAE8B,WAF9B,CAEkB,OAFlB,CAAA;IAGJ,IAAM,OAAO,GAAG,YAAY,CAAC,OAAb,CAAqB,UAAU,CAAC,WAAX,CAAuB,QAAvB,CAAgC,IAArD,CAAA,CAA2D,UAA3E,CAAA;IACA,IAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,SAAT,EAAoB,YAApB,EAAkC,OAAlC,CAA9B,CAAA;IACA,IAAM,GAAG,GAAG,UAAU,CAAC,GAAX,EAAZ,CALI;;IAOJ,IAAM,EAAE,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,QAAlB,IAA8B,IAAzC,CAPI;;IASJ,IAAM,CAAC,GAAG,OAAO,CAAC,KAAR,GAAgB,EAA1B,CAAA;;IAEA,IAAI,CAAC,IAAI,CAAT,EAAY;MACV,IAAM,QAAQ,GAAG;QACf,CAAC,EAAE,UAAU,CAAC,CAAX,GAAe,CADH;QAEf,CAAC,EAAE,UAAU,CAAC,CAAX,GAAe,CAAA;OAFpB,CAAA;;MAKA,IAAI,QAAQ,CAAC,CAAT,IAAc,QAAQ,CAAC,CAA3B,EAA8B;QAC5B,IAAM,UAAU,GAAG,SAAS,CAAC,SAAD,CAA5B,CAAA;;QAEA,IAAI,MAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;UACxB,SAAS,CAAC,QAAV,CAAmB,QAAQ,CAAC,CAA5B,EAA+B,QAAQ,CAAC,CAAxC,CAAA,CAAA;SADF,MAGK,IAAI,SAAJ,EAAe;UAClB,SAAS,CAAC,UAAV,IAAwB,QAAQ,CAAC,CAAjC,CAAA;UACA,SAAS,CAAC,SAAV,IAAwB,QAAQ,CAAC,CAAjC,CAAA;SACD;;QAED,IAAM,SAAS,GAAG,SAAS,CAAC,SAAD,CAA3B,CAAA;QACA,IAAM,KAAK,GAAG;UACZ,CAAC,EAAE,SAAS,CAAC,CAAV,GAAc,UAAU,CAAC,CADhB;UAEZ,CAAC,EAAE,SAAS,CAAC,CAAV,GAAc,UAAU,CAAC,CAAA;SAF9B,CAAA;;QAKA,IAAI,KAAK,CAAC,CAAN,IAAW,KAAK,CAAC,CAArB,EAAwB;UACtB,YAAY,CAAC,IAAb,CAAkB;YAChB,IAAI,EAAE,YADU;YAEhB,MAAM,EAAE,OAFQ;YAGhB,YAAY,EAAZ,YAHgB;YAIhB,KAAK,EAAL,KAJgB;YAKhB,WAAW,EAAX,WALgB;YAMhB,SAAS,EAAT,SAAA;WANF,CAAA,CAAA;SAQD;OACF;;MAED,UAAU,CAAC,QAAX,GAAsB,GAAtB,CAAA;KACD;;IAED,IAAI,UAAU,CAAC,WAAf,EAA4B;MAC1B,QAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,UAAU,CAAC,CAAtB,CAAA,CAAA;;MACA,UAAU,CAAC,CAAX,GAAe,QAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,UAAU,CAAC,MAAvB,CAAf,CAAA;KACD;GA/Fc;EAiGjB,KAjGiB,EAAA,SAAA,KAAA,CAiGV,YAjGU,EAiGI,UAjGJ,EAiGc;IAC7B,IAAM,OAAO,GAAG,YAAY,CAAC,OAA7B,CAAA;IAEA,OAAO,OAAO,CAAC,UAAD,CAAP,CAAoB,UAApB,IAAkC,OAAO,CAAC,UAAD,CAAP,CAAoB,UAApB,CAA+B,OAAxE,CAAA;GApGe;EAsGjB,iBAtGiB,EAAA,SAAA,iBAAA,CAAA,KAAA,EAsG0B;IAAA,IAAtB,WAAsB,GAAA,KAAA,CAAtB,WAAsB;QAAT,OAAS,GAAA,KAAA,CAAT,OAAS,CAAA;;IACzC,IAAI,EAAE,WAAW,CAAC,WAAZ,EAAA,IACA,UAAU,CAAC,KAAX,CAAiB,WAAW,CAAC,YAA7B,EAA2C,WAAW,CAAC,QAAZ,CAAqB,IAAhE,CADF,CAAJ,EAC8E;MAC5E,OAAA;KACD;;IAED,IAAI,WAAW,CAAC,UAAhB,EAA4B;MAC1B,UAAU,CAAC,CAAX,GAAe,UAAU,CAAC,CAAX,GAAe,CAA9B,CAAA;MACA,OAAA;KACD;;IAED,IAAI,GAAJ,CAAA;IACA,IAAI,KAAJ,CAAA;IACA,IAAI,MAAJ,CAAA;IACA,IAAI,IAAJ,CAAA;IAdyC,IAgBjC,YAhBiC,GAgBP,WAhBO,CAgBjC,YAhBiC;QAgBnB,OAhBmB,GAgBP,WAhBO,CAgBnB,OAhBmB,CAAA;IAiBzC,IAAM,OAAO,GAAG,YAAY,CAAC,OAAb,CAAqB,WAAW,CAAC,QAAZ,CAAqB,IAA1C,CAAA,CAAgD,UAAhE,CAAA;IACA,IAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,SAAT,EAAoB,YAApB,EAAkC,OAAlC,CAA9B,CAAA;;IAEA,IAAI,MAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;MACxB,IAAI,GAAK,OAAO,CAAC,OAAR,GAAkB,UAAU,CAAC,MAAtC,CAAA;MACA,GAAG,GAAM,OAAO,CAAC,OAAR,GAAkB,UAAU,CAAC,MAAtC,CAAA;MACA,KAAK,GAAI,OAAO,CAAC,OAAR,GAAkB,SAAS,CAAC,UAAV,GAAwB,UAAU,CAAC,MAA9D,CAAA;MACA,MAAM,GAAG,OAAO,CAAC,OAAR,GAAkB,SAAS,CAAC,WAAV,GAAwB,UAAU,CAAC,MAA9D,CAAA;KAJF,MAMK;MACH,IAAM,IAAI,GAAG,YAAQ,CAAC,oBAAT,CAA8B,SAA9B,CAAb,CAAA;MAEA,IAAI,GAAK,OAAO,CAAC,OAAR,GAAkB,IAAI,CAAC,IAAL,GAAc,UAAU,CAAC,MAApD,CAAA;MACA,GAAG,GAAM,OAAO,CAAC,OAAR,GAAkB,IAAI,CAAC,GAAL,GAAc,UAAU,CAAC,MAApD,CAAA;MACA,KAAK,GAAI,OAAO,CAAC,OAAR,GAAkB,IAAI,CAAC,KAAL,GAAc,UAAU,CAAC,MAApD,CAAA;MACA,MAAM,GAAG,OAAO,CAAC,OAAR,GAAkB,IAAI,CAAC,MAAL,GAAc,UAAU,CAAC,MAApD,CAAA;KACD;;IAED,UAAU,CAAC,CAAX,GAAgB,KAAK,GAAG,CAAH,GAAO,IAAI,GAAG,CAAC,CAAJ,GAAQ,CAAxC,CAAA;IACA,UAAU,CAAC,CAAX,GAAgB,MAAM,GAAG,CAAH,GAAQ,GAAG,GAAG,CAAC,CAAJ,GAAQ,CAAzC,CAAA;;IAEA,IAAI,CAAC,UAAU,CAAC,WAAhB,EAA6B;;MAE3B,UAAU,CAAC,MAAX,GAAoB,OAAO,CAAC,MAA5B,CAAA;MACA,UAAU,CAAC,KAAX,GAAoB,OAAO,CAAC,KAA5B,CAAA;MAEA,UAAU,CAAC,KAAX,CAAiB,WAAjB,CAAA,CAAA;KACD;GACF;CAnJH,CAAA;;AAsJM,SAAU,YAAV,CAAwB,KAAxB,EAA+B,YAA/B,EAA6C,OAA7C,EAAoD;EACxD,OAAO,CAAC,MAAE,CAAC,MAAH,CAAU,KAAV,CAAA,GAAmB,CAAA,CAAA,EAAA,SAAA,CAAA,qBAAA,EAAsB,KAAtB,EAA6B,YAA7B,EAA2C,OAA3C,CAAnB,GAAyE,KAA1E,KAAoF,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,EAAU,OAAV,CAA3F,CAAA;CACD;;AAEK,SAAU,SAAV,CAAqB,SAArB,EAA8B;EAClC,IAAI,MAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;IAAE,SAAS,GAAG,MAAM,CAAC,QAAP,CAAgB,IAA5B,CAAA;GAAkC;;EAE9D,OAAO;IAAE,CAAC,EAAE,SAAS,CAAC,UAAf;IAA2B,CAAC,EAAE,SAAS,CAAC,SAAA;GAA/C,CAAA;CACD;;AAEK,SAAU,aAAV,CAAyB,SAAzB,EAAkC;EACtC,IAAI,MAAE,CAAC,MAAH,CAAU,SAAV,CAAJ,EAA0B;IAAE,SAAS,GAAG,MAAM,CAAC,QAAP,CAAgB,IAA5B,CAAA;GAAkC;;EAE9D,OAAO;IAAE,CAAC,EAAE,SAAS,CAAC,WAAf;IAA4B,CAAC,EAAE,SAAS,CAAC,YAAA;GAAhD,CAAA;CACD;;AAEK,SAAU,kBAAV,CAAA,KAAA,EAAwD,IAAxD,EAA4D;EAAA,IAA5B,WAA4B,GAAA,KAAA,CAA5B,WAA4B;MAAf,OAAe,GAAA,KAAA,CAAf,OAAe,CAAA;EAChE,IAAM,aAAa,GAAG,WAAW,IAAI,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,WAAW,CAAC,QAAZ,CAAqB,IAAtD,CAAA,CAA4D,UAAjG,CAAA;;EAEA,IAAI,CAAC,aAAD,IAAkB,CAAC,aAAa,CAAC,OAArC,EAA8C;IAC5C,IAAI,EAAA,CAAA;IACJ,OAAO;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KAAlB,CAAA;GACD;;EAED,IAAM,eAAe,GAAG,YAAY,CAClC,aAAa,CAAC,SADoB,EAElC,WAAW,CAAC,YAFsB,EAGlC,OAHkC,CAApC,CAAA;EAMA,IAAM,QAAQ,GAAG,SAAS,CAAC,eAAD,CAA1B,CAAA;EACA,IAAI,EAAA,CAAA;EACJ,IAAM,OAAO,GAAG,SAAS,CAAC,eAAD,CAAzB,CAAA;EAEA,OAAO;IACL,CAAC,EAAE,OAAO,CAAC,CAAR,GAAY,QAAQ,CAAC,CADnB;IAEL,CAAC,EAAE,OAAO,CAAC,CAAR,GAAY,QAAQ,CAAC,CAAA;GAF1B,CAAA;CAID;;mBAEc;EACb,EAAE,EAAE,aADS;EAEb,OAAO,EAAP,WAAA;;;;;;;;;;;;ACxPF,8DAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,OAAA,CAAA,CAAA;;;;AA0BA,SAAS,WAAT,CAAkB,KAAlB,EAA8B;EAAA,IAG1B,YAH0B,GAKxB,KALwB,CAG1B,YAH0B;MAI1B,OAJ0B,GAKxB,KALwB,CAI1B,OAJ0B,CAAA;EAO5B,YAAY,CAAC,SAAb,CAAuB,SAAvB,GAAmC,SAAnC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BA,YAAY,CAAC,SAAb,CAAuB,UAAvB,GAAoC,CAAA,CAAA,EAAA,UAAA,CAAA,QAAA,EAAS,UAA8B,QAA9B,EAAsC;IACjF,OAAO,IAAA,CAAK,iBAAL,CAAuB,YAAvB,EAAqC,QAArC,CAAP,CAAA;GADkC,EAEjC,mGAFiC,CAApC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;EA2BA,YAAY,CAAC,SAAb,CAAuB,SAAvB,GAAmC,CAAA,CAAA,EAAA,UAAA,CAAA,QAAA,EAAS,UAA8B,QAA9B,EAAsC;IAChF,OAAO,IAAA,CAAK,iBAAL,CAAuB,WAAvB,EAAoC,QAApC,CAAP,CAAA;GADiC,EAEhC,iGAFgC,CAAnC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCA,YAAY,CAAC,SAAb,CAAuB,aAAvB,GAAuC,aAAvC,CAAA;;;;;;;;;EASA,YAAY,CAAC,SAAb,CAAuB,WAAvB,GAAqC,WAArC,CAAA;;EAEA,YAAY,CAAC,SAAb,CAAuB,oBAAvB,GAA8C,UAA8B,OAA9B,EAAuC,KAAvC,EAA8C,WAA9C,EAA2D,OAA3D,EAAkE;IAC9G,OAAO,oBAAoB,CAAC,IAAD,EAAO,OAAP,EAAgB,KAAhB,EAAuB,WAAvB,EAAoC,OAApC,EAA6C,OAA7C,CAA3B,CAAA;GADF,CAAA;CAGD;;AAED,SAAS,SAAT,CAAwC,OAAxC,EAAuE,KAAvE,EAAyG,WAAzG,EAAmI,OAAnI,EAAmJ;EACjJ,IAAM,MAAM,GAAG,IAAA,CAAK,oBAAL,CAA0B,OAA1B,EAAmC,KAAnC,EAA0C,WAA1C,EAAuD,OAAvD,CAAf,CAAA;;EAEA,IAAI,IAAA,CAAK,OAAL,CAAa,aAAjB,EAAgC;IAC9B,OAAO,IAAA,CAAK,OAAL,CAAa,aAAb,CAA2B,OAA3B,EAAoC,KAApC,EAA2C,MAA3C,EAAmD,IAAnD,EAAyD,OAAzD,EAAkE,WAAlE,CAAP,CAAA;GACD;;EAED,OAAO,MAAP,CAAA;CACD;;AAED,SAAS,oBAAT,CAA+B,YAA/B,EAA2D,OAA3D,EAA0F,KAA1F,EAA4H,WAA5H,EAAsJ,OAAtJ,EAAwK,OAAxK,EAAwL;EACtL,IAAM,IAAI,GAAG,YAAY,CAAC,OAAb,CAAqB,OAArB,CAAb,CAAA;EACA,IAAM,OAAO,GAAI,KAAoB,CAAC,OAArB,IAAiC;IAChD,CAAA,EAAG,CAD6C;IAEhD,CAAA,EAAG,CAF6C;IAGhD,CAAA,EAAG,CAH6C;IAIhD,CAAA,EAAG,EAAA;GAJ4C,CAK7C,KAAoB,CAAC,MALwB,CAAjD,CAAA;EAMA,IAAI,MAAM,GAAG,IAAb,CAAA;;EAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAyB,OAAO,CAAC,KAAjC,CAAA,MAAA,EAAA,EAAA,EAAA,EAAwC;IAAA,IAAA,IAAA,CAAA;;IAAA,IAAA,GAAf,OAAO,CAAC,KAAO,CAAA,EAAA,CAAA,CAAA;IAAA,IAA7B,UAA6B,GAAA,IAAA,CAAA;;;IAEtC,IAAI,WAAW,CAAC,aAAZ,IACA,eAAA,CAAgB,IAAhB,CAAqB,WAAW,CAAC,WAAjC,CADA,IAEF,CAAC,OAAO,GAAG,YAAY,CAAC,OAAb,CAAqB,UAArB,CAAA,CAAiC,YAA5C,MAA8D,CAFhE,EAEmE;MACjE,SAAA;KACD;;IAED,MAAM,GAAI,OAAO,CAAC,UAAD,CAAP,CAA6C,OAA7C,CAAqD,OAArD,EAA8D,KAA9D,EAAqE,YAArE,EAAmF,OAAnF,EAA4F,WAA5F,EAAyG,IAAzG,CAAV,CAAA;;IAEA,IAAI,MAAJ,EAAY;MACV,OAAO,MAAP,CAAA;KACD;GACF;CACF;;AAED,SAAS,WAAT,CAA0C,QAA1C,EAA4D;EAC1D,IAAI,MAAE,CAAC,IAAH,CAAQ,QAAR,CAAJ,EAAuB;IACrB,IAAA,CAAK,OAAL,CAAa,WAAb,GAA2B,QAA3B,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,IAAI,QAAQ,KAAK,IAAjB,EAAuB;IACrB,OAAO,IAAA,CAAK,OAAL,CAAa,WAApB,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,OAAO,IAAA,CAAK,OAAL,CAAa,WAApB,CAAA;CACD;;AAED,SAAS,aAAT,CAA4C,OAA5C,EAAwD;EACtD,IAAI,MAAE,CAAC,IAAH,CAAQ,OAAR,CAAJ,EAAsB;IACpB,IAAA,CAAK,OAAL,CAAa,aAAb,GAA6B,OAA7B,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,IAAI,OAAO,KAAK,IAAhB,EAAsB;IACpB,OAAO,IAAA,CAAK,OAAL,CAAa,aAApB,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,OAAO,IAAA,CAAK,OAAL,CAAa,aAApB,CAAA;CACD;;mBAEc;EACb,EAAE,EAAE,gCADS;EAEb,OAAO,EAAP,WAAA;;;;;;;;;;;;ACpNF,IAAA,SAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,oBAAA,GAAA,0BAAA,CAAA,uBAAA,CAAA,CAAA;;;;;;AA0CA,SAAS,WAAT,CAAkB,KAAlB,EAAuC;EAAA,IAEnC,QAFmC,GAKjC,KALiC,CAEnC,QAFmC;MAGnC,YAHmC,GAKjC,KALiC,CAGnC,YAHmC;MAInC,QAJmC,GAKjC,KALiC,CAInC,QAJmC,CAAA;EAOrC,KAAK,CAAC,SAAN,CAAgB,oBAAA,CAAA,SAAA,CAAhB,CAAA,CAPqC;;EAUrC,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,IAAA,EAAiD;IAAA,IAA9C,WAA8C,GAAA,IAAA,CAA9C,WAA8C;QAAjC,OAAiC,GAAA,IAAA,CAAjC,OAAiC;QAAxB,KAAwB,GAAA,IAAA,CAAxB,KAAwB;QAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;;IAC/E,IAAI,WAAW,CAAC,WAAZ,EAAJ,EAA+B;MAAE,OAAA;KAAQ;;IAEzC,IAAM,UAAU,GAAG,aAAa,CAAC,WAAD,EAAc,OAAd,EAAuB,KAAvB,EAA8B,WAA9B,EAA2C,KAA3C,CAAhC,CAAA;IACA,OAAO,CAAC,WAAD,EAAc,UAAd,EAA0B,KAA1B,CAAP,CAAA;GAJF,CAAA,CAVqC;;EAkBrC,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAAiD;IAAA,IAA9C,WAA8C,GAAA,KAAA,CAA9C,WAA8C;QAAjC,OAAiC,GAAA,KAAA,CAAjC,OAAiC;QAAxB,KAAwB,GAAA,KAAA,CAAxB,KAAwB;QAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAC/E,IAAI,WAAW,CAAC,WAAZ,KAA4B,OAA5B,IACA,WAAW,CAAC,aADZ,IAEA,WAAW,CAAC,WAAZ,EAFJ,EAE+B;MAAE,OAAA;KAAQ;;IAEzC,IAAM,UAAU,GAAG,aAAa,CAAC,WAAD,EAAc,OAAd,EAAuB,KAAvB,EAA8B,WAA9B,EAA2C,KAA3C,CAAhC,CAAA;IACA,OAAO,CAAC,WAAD,EAAc,UAAd,EAA0B,KAA1B,CAAP,CAAA;GANF,CAAA,CAAA;EASA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAC,GAAD,EAAQ;IAAA,IAC9B,WAD8B,GACd,GADc,CAC9B,WAD8B,CAAA;;IAGtC,IAAI,CAAC,WAAW,CAAC,aAAb,IACA,WAAW,CAAC,WAAZ,EADA,IAEA,CAAC,WAAW,CAAC,eAFb,IAGA,CAAC,WAAW,CAAC,QAAZ,CAAqB,IAH1B,EAGgC;MAC9B,OAAA;KACD;;IAED,KAAK,CAAC,SAAN,CAAgB,OAAhB,CAAwB,IAAxB,CAA6B,cAA7B,EAA6C,GAA7C,CAAA,CAAA;IAVsC,IAY9B,YAZ8B,GAYb,WAZa,CAY9B,YAZ8B,CAAA;;IActC,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,IAA6B,YAAjC,EAA+C;;MAE7C,IAAI,YAAY,CAAC,OAAb,CAAqB,WAAW,CAAC,QAAZ,CAAqB,IAA1C,CAAA,CAAgD,WAAhD,IACA,CAAC,sBAAsB,CAAC,YAAD,EAAe,WAAW,CAAC,OAA3B,EAAoC,WAAW,CAAC,QAAhD,EAA0D,KAA1D,CAD3B,EAC6F;QAC3F,WAAW,CAAC,IAAZ,EAAA,CAAA;OAFF,MAIK;QACH,WAAW,CAAC,KAAZ,CAAkB,WAAW,CAAC,QAA9B,EAAwC,YAAxC,EAAsD,WAAW,CAAC,OAAlE,CAAA,CAAA;OACD;KACF;GAvBH,CAAA,CAAA;EA0BA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;IAAA,IAC1C,YAD0C,GACzB,WADyB,CAC1C,YAD0C,CAAA;;IAGlD,IAAI,YAAY,IAAI,YAAY,CAAC,OAAb,CAAqB,WAAzC,EAAsD;MACpD,SAAS,CAAC,WAAW,CAAC,OAAb,EAAqC,EAArC,EAAyC,KAAzC,CAAT,CAAA;KACD;GALH,CAAA,CAAA;EAQA,QAAQ,CAAC,IAAT,CAAc,aAAd,GAA8B,IAA9B,CAAA;EACA,QAAQ,CAAC,IAAT,CAAc,WAAd,GAA4B,IAA5B,CAAA;EAEA,SAAK,CAAC,MAAN,CAAa,QAAQ,CAAC,SAAtB,EAAiC;IAC/B,WAAW,EAAE,KADkB;IAE/B,GAAG,EAAE,QAF0B;IAG/B,aAAa,EAAE,CAHgB;IAI/B,SAAS,EAAG,IAJmB;IAK/B,UAAU,EAAE,IALmB;;;IAS/B,YAAY,EAAE,CAAA;GAThB,CAAA,CAAA;;;;;;;;;;;;;EAuBA,QAAQ,CAAC,eAAT,GAA2B,UAAC,QAAD,EAAA;IAAA,OAAc,eAAe,CAAC,QAAD,EAAW,KAAX,CAA7B,CAAA;GAA3B,CAAA;;EAEA,KAAK,CAAC,SAAN,GAAkB;;IAEhB,eAAe,EAAE,QAFD;IAGhB,sBAAsB,EAAtB,sBAHgB;IAIhB,aAAa,EAAE,IAJC;IAKhB,OAAO,EAAE,IAAI,SAAK,CAAC,OAAV,EAAA;GALX,CAAA;;;;;AAWF,SAAS,cAAT,CAAyB,MAAzB,EAAiC,YAAjC,EAA+C,OAA/C,EAAwD,WAAxD,EAAqE,KAArE,EAA0E;EACxE,IAAI,YAAY,CAAC,eAAb,CAA6B,YAAY,CAAC,OAAb,CAAqB,MAAM,CAAC,IAA5B,CAA7B,EAAgE,OAAhE,EAAyE,WAAzE,CAAA,IACA,YAAY,CAAC,OAAb,CAAqB,MAAM,CAAC,IAA5B,CAAA,CAAkC,OADlC,IAEA,sBAAsB,CAAC,YAAD,EAAe,OAAf,EAAwB,MAAxB,EAAgC,KAAhC,CAF1B,EAEkE;IAChE,OAAO,MAAP,CAAA;GACD;;EAED,OAAO,IAAP,CAAA;CACD;;AAED,SAAS,eAAT,CAA0B,WAA1B,EAA6D,OAA7D,EAAsE,KAAtE,EAA6E,OAA7E,EAA+G,aAA/G,EAAyI,WAAzI,EAA+J,KAA/J,EAAoL;EAClL,KAAK,IAAI,CAAC,GAAG,CAAR,EAAW,GAAG,GAAG,OAAO,CAAC,MAA9B,EAAsC,CAAC,GAAG,GAA1C,EAA+C,CAAC,EAAhD,EAAoD;IAClD,IAAM,KAAK,GAAG,OAAO,CAAC,CAAD,CAArB,CAAA;IACA,IAAM,YAAY,GAAG,aAAa,CAAC,CAAD,CAAlC,CAAA;IACA,IAAM,WAAW,GAAG,KAAK,CAAC,SAAN,CAAgB,OAAhB,EAAyB,KAAzB,EAAgC,WAAhC,EAA6C,YAA7C,CAApB,CAAA;;IAEA,IAAI,CAAC,WAAL,EAAkB;MAAE,SAAA;KAAU;;IAE9B,IAAM,MAAM,GAAG,cAAc,CAC3B,WAD2B,EAE3B,KAF2B,EAG3B,YAH2B,EAI3B,WAJ2B,EAK3B,KAL2B,CAA7B,CAAA;;IAOA,IAAI,MAAJ,EAAY;MACV,OAAO;QACL,MAAM,EAAN,MADK;QAEL,YAAY,EAAE,KAFT;QAGL,OAAO,EAAE,YAAA;OAHX,CAAA;KAKD;GACF;;EAED,OAAO;IAAE,MAAM,EAAE,IAAV;IAAgB,YAAY,EAAE,IAA9B;IAAoC,OAAO,EAAE,IAAA;GAApD,CAAA;CACD;;AAED,SAAS,aAAT,CAAwB,WAAxB,EAA2D,OAA3D,EAA0F,KAA1F,EAA4H,WAA5H,EAAkJ,KAAlJ,EAAuK;EACrK,IAAI,OAAO,GAAG,EAAd,CAAA;EACA,IAAI,aAAa,GAAG,EAApB,CAAA;EAEA,IAAI,OAAO,GAAG,WAAd,CAAA;;EAEA,SAAS,WAAT,CAAsB,YAAtB,EAAkC;IAChC,OAAO,CAAC,IAAR,CAAa,YAAb,CAAA,CAAA;IACA,aAAa,CAAC,IAAd,CAAmB,OAAnB,CAAA,CAAA;GACD;;EAED,OAAO,SAAK,CAAC,EAAN,CAAS,OAAT,CAAiB,OAAjB,CAAP,EAAkC;IAChC,OAAO,GAAG,EAAV,CAAA;IACA,aAAa,GAAG,EAAhB,CAAA;IAEA,KAAK,CAAC,aAAN,CAAoB,YAApB,CAAiC,OAAjC,EAA0C,WAA1C,CAAA,CAAA;IAEA,IAAM,UAAU,GAAG,eAAe,CAAC,WAAD,EAAc,OAAd,EAAuB,KAAvB,EAA8B,OAA9B,EAAuC,aAAvC,EAAsD,WAAtD,EAAmE,KAAnE,CAAlC,CAAA;;IAEA,IAAI,UAAU,CAAC,MAAX,IACF,CAAC,UAAU,CAAC,YAAX,CAAwB,OAAxB,CAAgC,UAAU,CAAC,MAAX,CAAkB,IAAlD,CAAA,CAAwD,WAD3D,EACwE;MACtE,OAAO,UAAP,CAAA;KACD;;IAED,OAAO,GAAG,SAAK,CAAC,GAAN,CAAU,UAAV,CAAqB,OAArB,CAAV,CAAA;GACD;;EAED,OAAO;IAAE,MAAM,EAAE,IAAV;IAAgB,YAAY,EAAE,IAA9B;IAAoC,OAAO,EAAE,IAAA;GAApD,CAAA;CACD;;AAED,SAAS,OAAT,CAAkB,WAAlB,EAAA,KAAA,EAAwF,KAAxF,EAA6G;EAAA,IAAtD,MAAsD,GAAA,KAAA,CAAtD,MAAsD;MAA9C,YAA8C,GAAA,KAAA,CAA9C,YAA8C;MAAhC,OAAgC,GAAA,KAAA,CAAhC,OAAgC,CAAA;EAC3G,MAAM,GAAG,MAAM,IAAI,EAAnB,CAAA;;EAEA,IAAI,WAAW,CAAC,YAAZ,IAA4B,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,WAAjE,EAA8E;IAC5E,SAAS,CAAC,WAAW,CAAC,OAAb,EAAqC,EAArC,EAAyC,KAAzC,CAAT,CAAA;GACD;;EAED,WAAW,CAAC,YAAZ,GAA2B,YAA3B,CAAA;EACA,WAAW,CAAC,OAAZ,GAAsB,OAAtB,CAAA;EACA,SAAK,CAAC,UAAN,CAAiB,WAAW,CAAC,QAA7B,EAAuC,MAAvC,CAAA,CAAA;EAEA,WAAW,CAAC,IAAZ,GAAmB,YAAY,IAAI,MAAM,CAAC,IAAvB,GACf,YAAY,CAAC,OAAb,CAAqB,OAArB,CADe,GAEf,IAFJ,CAAA;;EAIA,IAAI,YAAY,IAAI,YAAY,CAAC,OAAb,CAAqB,WAAzC,EAAsD;IACpD,IAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,OAAN,CAAc,MAAM,CAAC,IAArB,CAAA,CAA2B,SAA3B,CAAqC,MAArC,CAAH,GAAkD,EAAvE,CAAA;IACA,SAAS,CAAC,WAAW,CAAC,OAAb,EAAqC,MAArC,EAA6C,KAA7C,CAAT,CAAA;GACD;;EAED,KAAK,CAAC,SAAN,CAAgB,OAAhB,CAAwB,IAAxB,CAA6B,UAA7B,EAAyC;IAAE,WAAW,EAAX,WAAA;GAA3C,CAAA,CAAA;CACD;;AAED,SAAS,sBAAT,CAAiC,YAAjC,EAAsE,OAAtE,EAAwF,MAAxF,EAAgG,KAAhG,EAAqH;EACnH,IAAM,OAAO,GAAG,YAAY,CAAC,OAA7B,CAAA;EACA,IAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAR,CAAP,CAAqB,GAAxC,CAAA;EACA,IAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,IAAR,CAAP,CAAqB,aAA3C,CAAA;EACA,IAAM,YAAY,GAAG,KAAK,CAAC,SAAN,CAAgB,eAArC,CAAA;EACA,IAAI,kBAAkB,GAAG,CAAzB,CAAA;EACA,IAAI,iBAAiB,GAAG,CAAxB,CAAA;EACA,IAAI,YAAY,GAAG,CAAnB,CAPmH;;EAUnH,IAAI,EAAE,UAAU,IAAI,aAAd,IAA+B,YAAjC,CAAJ,EAAoD;IAAE,OAAO,KAAP,CAAA;GAAc;;EAEpE,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,EAAA,EAAA,EAAmD;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,EAAA,CAAA,CAAA;IAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;IACjD,IAAM,WAAW,GAAG,WAAW,CAAC,QAAZ,CAAqB,IAAzC,CAAA;;IAEA,IAAI,CAAC,WAAW,CAAC,WAAZ,EAAL,EAAgC;MAAE,SAAA;KAAU;;IAE5C,kBAAkB,EAAA,CAAA;;IAElB,IAAI,kBAAkB,IAAI,YAA1B,EAAwC;MACtC,OAAO,KAAP,CAAA;KACD;;IAED,IAAI,WAAW,CAAC,YAAZ,KAA6B,YAAjC,EAA+C;MAAE,SAAA;KAAU;;IAE3D,iBAAiB,IAAI,WAAW,KAAK,MAAM,CAAC,IAAvB,GAA8B,CAA9B,GAAkC,CAAvD,CAAA;;IAEA,IAAI,iBAAiB,IAAI,UAAzB,EAAqC;MACnC,OAAO,KAAP,CAAA;KACD;;IAED,IAAI,WAAW,CAAC,OAAZ,KAAwB,OAA5B,EAAqC;MACnC,YAAY,EAAA,CAAA;;MAEZ,IAAI,WAAW,KAAK,MAAM,CAAC,IAAvB,IAA+B,YAAY,IAAI,aAAnD,EAAkE;QAChE,OAAO,KAAP,CAAA;OACD;KACF;GACF;;EAED,OAAO,YAAY,GAAG,CAAtB,CAAA;CACD;;AAED,SAAS,eAAT,CAA0B,QAA1B,EAAoC,KAApC,EAAyD;EACvD,IAAI,SAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,QAAhB,CAAJ,EAA+B;IAC7B,KAAK,CAAC,SAAN,CAAgB,eAAhB,GAAkC,QAAlC,CAAA;IAEA,OAAO,IAAP,CAAA;GACD;;EAED,OAAO,KAAK,CAAC,SAAN,CAAgB,eAAvB,CAAA;CACD;;AAED,SAAS,SAAT,CAAoB,OAApB,EAA0C,MAA1C,EAAkD,KAAlD,EAAuE;EACrE,IAAI,KAAK,CAAC,SAAN,CAAgB,aAApB,EAAmC;IACjC,KAAK,CAAC,SAAN,CAAgB,aAAhB,CAA8B,KAA9B,CAAoC,MAApC,GAA6C,EAA7C,CAAA;GACD;;EAED,OAAO,CAAC,aAAR,CAAsB,eAAtB,CAAsC,KAAtC,CAA4C,MAA5C,GAAqD,MAArD,CAAA;EACA,OAAO,CAAC,KAAR,CAAc,MAAd,GAAuB,MAAvB,CAAA;EACA,KAAK,CAAC,SAAN,CAAgB,aAAhB,GAAgC,MAAM,GAAG,OAAH,GAAa,IAAnD,CAAA;CACD;;mBAEc;EACb,EAAE,EAAE,iBADS;EAEb,OAAO,EAAP,WAFa;EAGb,eAAe,EAAf,eAHa;EAIb,sBAAsB,EAAtB,sBAJa;EAKb,cAAc,EAAd,cAAA;;;;;;;;;;;;AC7SF,IAAA,WAAA,GAAA,cAAA,CAAA;;AACA,0EAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,KAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;;;;;AAIA,SAAS,YAAT,CAAkB,KAAlB,EAA8B;EAC5B,KAAK,CAAC,SAAN,CAAgB,OAAhB,CAAwB,EAAxB,CAA2B,cAA3B,EAA4C,UAAA,IAAA,EAAyC;IAAA,IAAtC,WAAsC,GAAA,IAAA,CAAtC,WAAsC;QAAzB,WAAyB,GAAA,IAAA,CAAzB,WAAyB;QAAZ,EAAY,GAAA,IAAA,CAAZ,EAAY;QAAR,EAAQ,GAAA,IAAA,CAAR,EAAQ,CAAA;;IACnF,IAAI,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAlC,EAA0C;MAAE,OAAA;KADuC;;;IAInF,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,EAAT,CAAb,CAAA;IACA,IAAM,IAAI,GAAG,IAAI,CAAC,GAAL,CAAS,EAAT,CAAb,CAAA;IACA,IAAM,aAAa,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,IAAvD,CAAA;IACA,IAAM,SAAS,GAAG,aAAa,CAAC,SAAhC,CAAA;IACA,IAAM,WAAW,GAAI,IAAI,GAAG,IAAP,GAAc,GAAd,GAAoB,IAAI,GAAG,IAAP,GAAc,GAAd,GAAoB,IAA7D,CAAA;IAEA,WAAW,CAAC,QAAZ,CAAqB,IAArB,GAA4B,aAAa,CAAC,QAAd,KAA2B,OAA3B,GACxB,WAAW,CAAC,CAAD,CADa;MAExB,aAAa,CAAC,QAFlB,CAVmF;;IAenF,IAAI,WAAW,KAAK,IAAhB,IAAwB,SAAS,KAAK,IAAtC,IAA8C,SAAS,KAAK,WAAhE,EAA6E;;MAE3E,WAAW,CAAC,QAAZ,CAAqB,IAArB,GAA4B,IAA5B,CAF2E;;MAK3E,IAAI,OAAO,GAAG,WAAd,CAAA;;MAEA,IAAM,YAAY,GAAG,SAAf,YAAe,CAAU,YAAV,EAAsB;QACzC,IAAI,YAAY,KAAK,WAAW,CAAC,YAAjC,EAA+C;UAAE,OAAA;SAAQ;;QAEzD,IAAM,OAAO,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,IAAjD,CAAA;;QAEA,IAAI,CAAC,OAAO,CAAC,WAAT,IACA,YAAY,CAAC,eAAb,CAA6B,OAA7B,EAAsC,OAAtC,EAA+C,WAA/C,CADJ,EACiE;UAC/D,IAAM,MAAM,GAAG,YAAY,CAAC,SAAb,CACb,WAAW,CAAC,WADC,EACY,WAAW,CAAC,SADxB,EACmC,WADnC,EACgD,OADhD,CAAf,CAAA;;UAGA,IAAI,MAAM,IACN,MAAM,CAAC,IAAP,KAAgB,WAAA,CAAA,UAAA,CAAW,IAD3B,IAEA,cAAc,CAAC,WAAD,EAAc,YAAd,CAFd,IAGA,KAAA,CAAA,SAAA,CAAA,CAAU,cAAV,CAAyB,MAAzB,EAAiC,YAAjC,EAA+C,OAA/C,EAAwD,WAAxD,EAAqE,KAArE,CAHJ,EAGiF;YAC/E,OAAO,YAAP,CAAA;WACD;SACF;OAhBH,CAP2E;;;MA2B3E,OAAO,OAAE,CAAC,OAAH,CAAW,OAAX,CAAP,EAA4B;QAC1B,IAAM,YAAY,GAAG,KAAK,CAAC,aAAN,CAAoB,YAApB,CAAiC,OAAjC,EAA0C,YAA1C,CAArB,CAAA;;QAEA,IAAI,YAAJ,EAAkB;UAChB,WAAW,CAAC,QAAZ,CAAqB,IAArB,GAA4B,WAAA,CAAA,UAAA,CAAW,IAAvC,CAAA;UACA,WAAW,CAAC,YAAZ,GAA2B,YAA3B,CAAA;UACA,WAAW,CAAC,OAAZ,GAAsB,OAAtB,CAAA;UACA,MAAA;SACD;;QAED,OAAO,GAAG,CAAA,CAAA,EAAA,aAAA,CAAA,UAAA,EAAW,OAAX,CAAV,CAAA;OACD;KACF;GAtDH,CAAA,CAAA;;EAyDA,SAAS,cAAT,CAAyB,SAAzB,EAAoC,YAApC,EAAgD;IAC9C,IAAI,CAAC,YAAL,EAAmB;MAAE,OAAO,KAAP,CAAA;KAAc;;IAEnC,IAAM,QAAQ,GAAG,YAAY,CAAC,OAAb,CAAqB,WAAA,CAAA,UAAA,CAAW,IAAhC,CAAA,CAAsC,SAAvD,CAAA;IAEA,OAAQ,SAAS,KAAK,IAAd,IAAsB,QAAQ,KAAK,IAAnC,IAA2C,QAAQ,KAAK,SAAhE,CAAA;GACD;CACF;;oBAEc;EACb,EAAE,EAAE,qBADS;EAEb,OAAO,EAAP,YAAA;;;;;;;;;;;;AC5EF,IAAA,UAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;;;AAeA,SAAS,YAAT,CAAkB,KAAlB,EAAuC;EAAA,IAEnC,SAFmC,GAKjC,KALiC,CAEnC,SAFmC;MAGnC,YAHmC,GAKjC,KALiC,CAGnC,YAHmC;MAInC,QAJmC,GAKjC,KALiC,CAInC,QAJmC,CAAA;EAOrC,KAAK,CAAC,SAAN,CAAgB,UAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EAEA,QAAQ,CAAC,SAAT,CAAmB,IAAnB,GAA0B,CAA1B,CAAA;EACA,QAAQ,CAAC,SAAT,CAAmB,KAAnB,GAA2B,CAA3B,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAC,WAAD,EAAgB;IAC7C,WAAW,CAAC,kBAAZ,GAAiC,IAAjC,CAAA;GADF,CAAA,CAAA;EAIA,SAAS,CAAC,OAAV,CAAkB,EAAlB,CAAqB,UAArB,EAAiC,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;IACnD,IAAM,IAAI,GAAG,eAAe,CAAC,WAAD,CAA5B,CAAA;;IAEA,IAAI,IAAI,GAAG,CAAX,EAAc;MACZ,WAAW,CAAC,kBAAZ,GAAiC,UAAU,CAAC,YAAK;QAC/C,WAAW,CAAC,KAAZ,CAAkB,WAAW,CAAC,QAA9B,EAAwC,WAAW,CAAC,YAApD,EAAkE,WAAW,CAAC,OAA9E,CAAA,CAAA;OADyC,EAExC,IAFwC,CAA3C,CAAA;KAGD;GAPH,CAAA,CAAA;EAUA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAA+B;IAAA,IAA5B,WAA4B,GAAA,KAAA,CAA5B,WAA4B;QAAf,SAAe,GAAA,KAAA,CAAf,SAAe,CAAA;;IAC7D,IAAI,WAAW,CAAC,eAAZ,IAA+B,CAAC,SAApC,EAA+C;MAC7C,YAAY,CAAC,WAAW,CAAC,kBAAb,CAAZ,CAAA;KACD;GAHH,CAAA,CA1BqC;;EAiCrC,SAAS,CAAC,OAAV,CAAkB,EAAlB,CAAqB,cAArB,EAAqC,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;IACvD,IAAM,IAAI,GAAG,eAAe,CAAC,WAAD,CAA5B,CAAA;;IAEA,IAAI,IAAI,GAAG,CAAX,EAAc;MACZ,WAAW,CAAC,QAAZ,CAAqB,IAArB,GAA4B,IAA5B,CAAA;KACD;GALH,CAAA,CAAA;CAOD;;AAED,SAAS,eAAT,CAA0B,WAA1B,EAAqC;EACnC,IAAM,UAAU,GAAG,WAAW,CAAC,QAAZ,IAAwB,WAAW,CAAC,QAAZ,CAAqB,IAAhE,CAAA;;EAEA,IAAI,CAAC,UAAL,EAAiB;IAAE,OAAO,IAAP,CAAA;GAAa;;EAEhC,IAAM,OAAO,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzC,CAAA;EAEA,OAAO,OAAO,CAAC,UAAD,CAAP,CAAoB,IAApB,IAA4B,OAAO,CAAC,UAAD,CAAP,CAAoB,KAAvD,CAAA;CACD;;oBAEc;EACb,EAAE,EAAE,iBADS;EAEb,OAAO,EAAP,YAFa;EAGb,eAAe,EAAf,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtEF,IAAA,UAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,2BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,KAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;AAEA,SAAS,YAAT,CAAkB,KAAlB,EAAuB;EACrB,KAAK,CAAC,SAAN,CAAgB,UAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EACA,KAAK,CAAC,SAAN,CAAgB,KAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EACA,KAAK,CAAC,SAAN,CAAgB,SAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;CACD;;AAED,IAAM,OAAE,GAAG,YAAX,CAAA;;;;;;;;;;;;ACVA,0EAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,sEAAA;;;;;;AASA,SAAS,cAAT,CAAsD,QAAtD,EAA4F;EAC1F,IAAI,uBAAA,CAAwB,IAAxB,CAA6B,QAA7B,CAAJ,EAA4C;IAC1C,IAAA,CAAK,OAAL,CAAa,cAAb,GAA8B,QAA9B,CAAA;IACA,OAAO,IAAP,CAAA;GACD;;EAED,IAAI,OAAE,CAAC,IAAH,CAAQ,QAAR,CAAJ,EAAuB;IACrB,IAAA,CAAK,OAAL,CAAa,cAAb,GAA8B,QAAQ,GAAG,QAAH,GAAc,OAApD,CAAA;IACA,OAAO,IAAP,CAAA;GACD;;EAED,OAAO,IAAA,CAAK,OAAL,CAAa,cAApB,CAAA;CACD;;AAED,SAAS,sBAAT,CAAiC,YAAjC,EAAsE,KAAtE,EAA6F,KAA7F,EAAyG;EACvG,IAAM,OAAO,GAAG,YAAY,CAAC,OAAb,CAAqB,cAArC,CAAA;;EAEA,IAAI,OAAO,KAAK,OAAhB,EAAyB;IAAE,OAAA;GAAQ;;EAEnC,IAAI,OAAO,KAAK,QAAhB,EAA0B;IACxB,KAAK,CAAC,cAAN,EAAA,CAAA;IACA,OAAA;GAPqG;;;;;;EAevG,IAAI,YAAA,CAAA,SAAA,CAAA,CAAO,eAAP,IAA0B,qBAAA,CAAsB,IAAtB,CAA2B,KAAK,CAAC,IAAjC,CAA9B,EAAsE;IACpE,IAAM,GAAG,GAAG,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,EAAU,KAAK,CAAC,MAAhB,CAAA,CAAwB,QAApC,CAAA;IACA,IAAM,UAAU,GAAG,KAAK,CAAC,aAAN,CAAoB,GAApB,CAAnB,CAAA;;IAEA,IAAI,EAAE,UAAU,IAAI,UAAU,CAAC,MAA3B,CAAA,IAAsC,UAAU,CAAC,MAAX,CAAkB,OAAlB,KAA8B,KAAxE,EAA+E;MAC7E,OAAA;KACD;GArBoG;;;EAyBvG,IAAI,sCAAA,CAAuC,IAAvC,CAA4C,KAAK,CAAC,IAAlD,CAAJ,EAA6D;IAC3D,OAAA;GA1BqG;;;EA8BvG,IAAI,OAAE,CAAC,OAAH,CAAW,KAAK,CAAC,MAAjB,CAAA,IACA,CAAA,CAAA,EAAA,aAAA,CAAA,eAAA,EAAgB,KAAK,CAAC,MAAtB,EAA8B,uEAA9B,CADJ,EAC4G;IAC1G,OAAA;GACD;;EAED,KAAK,CAAC,cAAN,EAAA,CAAA;CACD;;AAED,SAAS,kBAAT,CAAA,IAAA,EAAuE;EAAA,IAAxC,WAAwC,GAAA,IAAA,CAAxC,WAAwC;MAA3B,KAA2B,GAAA,IAAA,CAA3B,KAA2B,CAAA;;EACrE,IAAI,WAAW,CAAC,YAAhB,EAA8B;IAC5B,WAAW,CAAC,YAAZ,CAAyB,sBAAzB,CAAgD,KAAhD,CAAA,CAAA;GACD;CACF;;AAEK,SAAU,YAAV,CAAmB,KAAnB,EAAwC;;EAE5C,IAAM,YAAY,GAAG,KAAK,CAAC,YAA3B,CAAA;;;;;;;;;;;;EAYA,YAAY,CAAC,SAAb,CAAuB,cAAvB,GAAwC,cAAxC,CAAA;;EAEA,YAAY,CAAC,SAAb,CAAuB,sBAAvB,GAAgD,UAAU,KAAV,EAAe;IAC7D,OAAO,sBAAsB,CAAC,IAAD,EAAO,KAAP,EAAc,KAAd,CAA7B,CAAA;GADF,CAAA;;EAhB4C,IAAA,IAAA,GAoBlB,CAAC,MAAD,EAAS,MAAT,EAAiB,IAAjB,EAAuB,QAAvB,CApBkB,CAAA;;EAoB5C,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAA4D;IAAvD,IAAM,WAAW,GAAA,IAAA,CAAA,EAAA,CAAjB,CAAA;IACH,KAAK,CAAC,YAAN,CAAmB,OAAnB,CAA2B,EAA3B,CAA8B,WAA9B,EAA2C,kBAA3C,CAAA,CAAA;GArB0C;;;EAyB5C,KAAK,CAAC,YAAN,CAAmB,SAAnB,CAA6B,IAA7B,CAAkC;IAChC,IAAI,EAAE,WAD0B;IAEhC,QAFgC,EAAA,SAAA,QAAA,CAEtB,KAFsB,EAEjB;MACb,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;QAAA,IAAA,KAAA,CAAA;;QAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;QAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;;QACjD,IAAI,WAAW,CAAC,OAAZ,KACD,WAAW,CAAC,OAAZ,KAAwB,KAAK,CAAC,MAA9B,IACA,CAAA,CAAA,EAAA,aAAA,CAAA,YAAA,EAAa,WAAW,CAAC,OAAzB,EAAkC,KAAK,CAAC,MAAxC,CAFC,CAAJ,EAEqD;UACnD,WAAW,CAAC,YAAZ,CAAyB,sBAAzB,CAAgD,KAAhD,CAAA,CAAA;UACA,OAAA;SACD;OACF;KACF;GAXH,CAAA,CAAA;CAaD;;oBAIc;EACb,EAAE,EAAE,iCADS;EAEb,OAAO,EAAP,YAAA;;;;;;;;;;;;AChHF,IAAA,gBAAA,GAAA,2BAAA,CAAA,eAAA,CAAA,CAAA;;AACA,0EAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;;;;;;;;;AAqCA,IAAK,SAAL,CAAA;;AAAA,CAAA,UAAK,SAAL,EAAc;EACZ,SAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA;EACA,SAAA,CAAA,WAAA,CAAA,GAAA,EAAA,CAAA;EACA,SAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA;CAHF,EAAK,SAAS,KAAT,SAAS,GAAA,EAAA,CAAd,CAAA,CAAA;;AAMA,IAAM,MAAM,GAAI,gBAAhB,CAAA;AACA,IAAM,KAAK,GAAG;EACZ,WAAW,EAAE,+DADD;EAEZ,SAAS,EAAE,6DAAA;CAFb,CAAA;AAKA,IAAM,YAAY,GAAG,YAAY,KAAA,YAAa,CAAA;;AAG9C,SAAS,YAAT,CAAkB,KAAlB,EAA6E;EAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAF,EAAE;MAAlC,MAAkC,GAAA,IAAA,CAAlC,MAAkC,CAAA;;EAAA,IAEzE,YAFyE,GAKvE,KALuE,CAEzE,YAFyE;MAGzE,YAHyE,GAKvE,KALuE,CAGzE,YAHyE;MAIzE,QAJyE,GAKvE,KALuE,CAIzE,QAJyE,CAAA;EAM3E,MAAM,GAAG,MAAM,IAAI,OAAnB,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,cAAxB,EAAwC,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAC1D,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAoB,MAApB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA4B;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAR,MAAQ,CAAA,EAAA,CAAA,CAAA;MAAA,IAAjB,KAAiB,GAAA,KAAA,CAAA;MAC1B,IAAM,OAAO,GAAG,WAAW,CAAC,YAAZ,IAA4B,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,WAAW,CAAC,QAAZ,CAAqB,IAAtD,CAA5C,CAAA;;MAEA,IACE,EAAE,OAAO,IAAI,OAAO,CAAC,QAAnB,IAA+B,OAAO,CAAC,QAAR,CAAiB,MAAjB,CAAwB,KAAK,CAAC,IAA9B,CAAjC,CAAA,IACA,KAAK,CAAC,OAAN,CAAc,WAAd,CAFF,EAGE;QAAA,IAAA,OAAA,CAAA;;QACA,CAAA,OAAA,GAAA,MAAM,EAAC,IAAP,CAAA,KAAA,CAAA,OAAA,EAAA,CAAY,MAAM,GAAG,KAAK,CAAC,IAA3B,CAAA,CAAA,MAAA,CAAA,uBAAA,CAAoC,KAAK,CAAC,OAAN,CAAc,WAAd,CAApC,CAAA,CAAA,CAAA,CAAA;OACD;KACF;GAVH,CAAA,CAAA;EAaA,QAAQ,CAAC,IAAT,CAAc,QAAd,GAAyB;IACvB,MAAM,EAAE,EAAA;GADV,CAAA;;EAIA,YAAY,CAAC,SAAb,CAAuB,QAAvB,GAAkC,UAAU,OAAV,EAAkB;IAClD,IAAI,OAAJ,EAAa;MACX,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,IAAA,CAAK,OAAL,CAAa,QAApB,EAA8B,OAA9B,CAAA,CAAA;MACA,OAAO,IAAP,CAAA;KACD;;IAED,OAAO,IAAA,CAAK,OAAL,CAAa,QAApB,CAAA;GANF,CAAA;CAQD;;AAED,IAAM,MAAM,GAAY,CACtB;EACE,IAAI,EAAE,aADR;EAEE,OAFF,EAAA,SAAA,OAAA,CAAA,KAAA,EAEsB;IAAA,IAAT,OAAS,GAAA,KAAA,CAAT,OAAS,CAAA;IAClB,OAAO,CAAC,cAAc,CAAC,OAAD,EAAU,aAAV,EAAyB,iBAAzB,CAAtB,CAAA;GAHJ;EAKE,OALF,EAAA,SAAA,OAAA,CAAA,KAAA,EAKsB;IAAA,IAAT,OAAS,GAAA,KAAA,CAAT,OAAS,CAAA;IAClB,OAAO,CACL,OADK,EAEL,KAAK,CAAC,WAFD,CAAP,CAAA;GANJ;EAWE,IAAI,EAAE,4DAAA;CAZc,EAetB;EACE,IAAI,EAAE,WADR;EAEE,OAFF,EAAA,SAAA,OAAA,CAEW,WAFX,EAEsB;IAAA,IACV,OADU,GACE,WADF,CACV,OADU,CAAA;IAGlB,OAAO,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,QAA9B,IACL,OAAO,YAAY,gBAAA,CAAA,SAAA,CAAA,CAAW,WADzB,IAEL,CAAC,QAAQ,CAAC,OAAD,EAAU,WAAV,EAAuB,YAAvB,CAFX,CAAA;GALJ;EASE,IAAI,EAAE,wEATR;EAUE,OAVF,EAAA,SAAA,OAAA,CAAA,KAAA,EAUsB;IAAA,IAAT,OAAS,GAAA,KAAA,CAAT,OAAS,CAAA;IAClB,OAAO,CACL,OADK,EAEL,KAAK,CAAC,SAFD,CAAP,CAAA;GAID;CA9BmB,EAiCtB;EACE,IAAI,EAAE,aADR;EAEE,OAFF,EAAA,SAAA,OAAA,CAEW,WAFX,EAEsB;IAClB,IAAM,UAAU,GAAG,WAAW,CAAC,QAAZ,CAAqB,IAAxC,CAAA;IACA,IAAM,aAAa,GAAG,WAAW,CAAC,YAAZ,CAAyB,MAAzB,CAAgC,KAAhC,CAAA,EAAA,CAAA,MAAA,CAAyC,UAAzC,EAAA,MAAA,CAAA,CAAA,IAA8D,EAApF,CAAA;IAEA,OAAO,CAAC,aAAa,CAAC,MAAtB,CAAA;GANJ;EAQE,OARF,EAAA,SAAA,OAAA,CAQW,WARX,EAQsB;IAClB,OAAO,CACL,WAAW,CAAC,QAAZ,CAAqB,IADhB,EAEL,WAAW,CAAC,YAFP,CAAP,CAAA;GATJ;EAcE,IAAI,EAAE,4CAAA;CA/Cc,CAAxB,CAAA;;AAmDA,SAAS,QAAT,CAAmB,OAAnB,EAAyC,IAAzC,EAA0E,OAA1E,EAAyF;EACvF,OAAO,OAAO,CAAC,IAAR,CAAa,OAAO,CAAC,KAAR,CAAc,IAAd,CAAA,IAAuB,YAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,gBAAX,CAA4B,OAA5B,CAAA,CAAqC,IAArC,CAApC,CAAP,CAAA;CACD;;AAED,SAAS,cAAT,CAAyB,OAAzB,EAA2C,IAA3C,EAA4E,OAA5E,EAA2F;EACzF,IAAI,MAAM,GAAG,OAAb,CAAA;;EAEA,OAAO,OAAE,CAAC,OAAH,CAAW,MAAX,CAAP,EAA2B;IACzB,IAAI,QAAQ,CAAC,MAAD,EAAS,IAAT,EAAe,OAAf,CAAZ,EAAqC;MACnC,OAAO,IAAP,CAAA;KACD;;IAED,MAAM,GAAG,CAAA,CAAA,EAAA,aAAA,CAAA,UAAA,EAAW,MAAX,CAAT,CAAA;GACD;;EAED,OAAO,KAAP,CAAA;CACD;;AAED,IAAM,OAAE,GAAG,WAAX,CAAA;AACA,IAAM,aAAa,GAAG,YAAY,GAC9B;EAAE,EAAE,EAAF,OAAF;EAAM,OAAO,EAAE,SAAA,OAAA,GAAK,EAAG;CADO,GAE9B;EACA,EAAE,EAAF,OADA;EAEA,OAAO,EAAP,YAFA;EAGA,MAAM,EAAN,MAHA;EAIA,SAAS,EAAT,SAJA;EAKA,KAAK,EAAL,KALA;EAMA,MAAM,EAAN,MAAA;CARJ,CAAA;oBAWe;;;;;;;;;;;;;;;AC7Kf,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;;;;;;;AAwCA,SAAS,YAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,YAF0B,GAGxB,KAHwB,CAE1B,YAF0B,CAAA;EAK5B,KAAK,CAAC,QAAN,CAAe,SAAf,CAAyB,SAAzB,GAAqC,EAArC,CAAA;EACA,KAAK,CAAC,SAAN,GAAkB,EAAlB,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;IACjD,WAAW,CAAC,SAAZ,GAAwB;MACtB,WAAW,EAAE;QAAE,IAAI,EAAE,CAAR;QAAW,KAAK,EAAE,CAAlB;QAAqB,GAAG,EAAE,CAA1B;QAA6B,MAAM,EAAE,CAAA;OAD5B;MAEtB,OAAO,EAAE,EAFa;MAGtB,MAAM,EAAE,IAHc;MAItB,MAAM,EAAE,IAJc;MAKtB,YAAY,EAAE,KALQ;MAMtB,UAAU,EAAE,IAAA;KANd,CAAA;GADF,CAAA,CAAA;EAWA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,qBAAxB,EAA+C,UAAC,GAAD,EAAQ;IACrD,UAAK,CAAC,GAAD,EAAa,GAAG,CAAC,WAAJ,CAAgB,MAAhB,CAAuB,KAAvB,CAA6B,IAA1C,EAAgD,KAAK,CAAC,SAAtD,CAAL,CAAA;GADF,CAAA,CAAA;EAIA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,eAAxB,EAAyC,UAAC,GAAD,EAAQ;IAC/C,IAAI,CAAC,GAAD,CAAJ,CAAA;IACA,UAAK,CAAC,GAAD,EAAsC,GAAG,CAAC,WAAJ,CAAgB,MAAhB,CAAuB,GAAvB,CAA2B,IAAjE,EAAuE,KAAK,CAAC,SAA7E,CAAL,CAAA;IACA,eAAU,CAAC,GAAD,CAAV,CAAA;GAHF,CAAA,CAAA;EAMA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,mBAAxB,EAA6C,aAA7C,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,oBAAxB,EAA8C,eAA9C,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,qBAAxB,EAA+C,SAA/C,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,oBAAxB,EAA8C,aAA9C,CAAA,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,mBAAxB,EAA6C,SAA7C,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,IAAhC,CAAA,CAAA;CACD;;AAED,SAAS,UAAT,CAAA,KAAA,EAEE,UAFF,EAGE,mBAHF,EAGqB;EAAA,IAFjB,WAEiB,GAAA,KAAA,CAFjB,WAEiB;MAFJ,KAEI,GAAA,KAAA,CAFJ,KAEI,CAAA;EAAA,IAEX,YAFW,GAEe,WAFf,CAEX,YAFW;MAEG,OAFH,GAEe,WAFf,CAEG,OAFH,CAAA;EAGnB,IAAM,YAAY,GAAG,eAAe,CAAC,WAAD,EAAc,mBAAd,CAApC,CAAA;EACA,IAAM,MAAM,GAAG,aAAa,CAAC,YAAD,CAA5B,CAAA;EAEA,IAAM,IAAI,GAAG,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,WAAW,CAAC,IAAvB,CAAb,CAAA;;EAEA,IAAI,EAAE,OAAA,IAAY,IAAd,CAAJ,EAAyB;IAAE,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,KAAL,GAAc,IAAI,CAAC,IAAjC,CAAA;GAAuC;;EAClE,IAAI,EAAE,QAAA,IAAY,IAAd,CAAJ,EAAyB;IAAE,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,GAAjC,CAAA;GAAuC;;EAElE,IAAM,WAAW,GAAG,aAAa,CAAC,IAAD,EAAO,UAAP,CAAjC,CAAA;EAEA,WAAW,CAAC,SAAZ,CAAsB,WAAtB,GAAoC,WAApC,CAAA;EACA,WAAW,CAAC,SAAZ,CAAsB,UAAtB,GAAmC;IAAE,CAAC,EAAE,CAAL;IAAQ,CAAC,EAAE,CAAA;GAA9C,CAAA;EAEA,IAAM,GAAG,GAAgC;IACvC,WAAW,EAAX,WADuC;IAEvC,YAAY,EAAZ,YAFuC;IAGvC,OAAO,EAAP,OAHuC;IAIvC,UAAU,EAAV,UAJuC;IAKvC,KAAK,EAAL,KALuC;IAMvC,IAAI,EAAJ,IANuC;IAOvC,WAAW,EAAX,WAPuC;IAQvC,MAAM,EAAN,MARuC;IASvC,MAAM,EAAE,KAT+B;IAUvC,cAAc,EAAE,KAAA;GAVlB,CAAA;EAaA,WAAW,CAAC,SAAZ,CAAsB,MAAtB,GAA+B,MAA/B,CAAA;EACA,WAAW,CAAC,SAAZ,CAAsB,MAAtB,GAA+B,IAA/B,CAAA;EACA,QAAQ,CAAC,GAAD,CAAR,CAAA;EAEA,GAAG,CAAC,UAAJ,GAAiB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAApC,CAAjB,CAAA;EAEA,IAAM,MAAM,GAAG,WAAW,CAAC,SAAZ,CAAsB,MAAtB,GAA+B,MAAM,CAAC,GAAD,CAApD,CAAA;EAEA,OAAO,MAAP,CAAA;CACD;;AAEK,SAAU,QAAV,CAAoB,GAApB,EAAuB;EAC3B,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAoB,GAAG,CAAC,MAAxB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAgC;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAZ,GAAG,CAAC,MAAQ,CAAA,EAAA,CAAA,CAAA;IAAA,IAArB,KAAqB,GAAA,KAAA,CAAA;;IAC9B,IAAI,KAAK,CAAC,OAAN,CAAc,KAAlB,EAAyB;MACvB,GAAG,CAAC,KAAJ,GAAY,KAAZ,CAAA;MACA,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,GAApB,CAAA,CAAA;KACD;GACF;CACF;;AAEK,SAAU,MAAV,CAAkB,GAAlB,EAAkD;EAAA,IAEpD,WAFoD,GAYlD,GAZkD,CAEpD,WAFoD;MAAA,mBAAA,GAYlD,GAZkD,CAGpD,cAHoD;MAGpD,cAHoD,GAAA,mBAAA,KAAA,KAAA,CAAA,GAGnC,WAAW,CAAC,SAHuB,GAAA,mBAAA;MAAA,eAAA,GAYlD,GAZkD,CAIpD,UAJoD;MAIpD,UAJoD,GAAA,eAAA,KAAA,KAAA,CAAA,GAIvC,cAAc,CAAC,MAAf,GACT,cAAc,CAAC,MAAf,CAAsB,MADb,GAET,WAAW,CAAC,MAAZ,CAAmB,IAAnB,CAAwB,IANwB,GAAA,eAAA;MAOpD,KAPoD,GAYlD,GAZkD,CAOpD,KAPoD;MAQpD,MARoD,GAYlD,GAZkD,CAQpD,MARoD;MASpD,cAToD,GAYlD,GAZkD,CASpD,cAToD;MAUpD,IAVoD,GAYlD,GAZkD,CAUpD,IAVoD;MAWpD,aAXoD,GAYlD,GAZkD,CAWpD,aAXoD,CAAA;EActD,IAAM,MAAM,GAAG,aAAa,GACxB,GAAG,CAAC,MAAJ,CAAW,KAAX,CAAiB,aAAjB,CADwB,GAExB,GAAG,CAAC,MAFR,CAAA;EAIA,GAAG,CAAC,MAAJ,GAAa,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,GAAG,CAAC,UAAf,CAAb,CAAA;EACA,GAAG,CAAC,IAAJ,GAAW,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,IAAX,CAAX,CAAA;EAEA,IAAM,MAAM,GAAG;IACb,KAAK,EAAE;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KADL;IAEb,SAAS,EAAE;MACT,IAAI,EAAI,CADC;MAET,KAAK,EAAG,CAFC;MAGT,GAAG,EAAK,CAHC;MAIT,MAAM,EAAE,CAAA;KANG;IAQb,MAAM,EAAE,GAAG,CAAC,MARC;IASb,OAAO,EAAE,IAAA;GATX,CAAA;;EAYA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoB,MAApB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4B;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAR,MAAQ,CAAA,GAAA,CAAA,CAAA;IAAA,IAAjB,KAAiB,GAAA,KAAA,CAAA;IAAA,IAClB,OADkB,GACN,KADM,CAClB,OADkB,CAAA;;IAG1B,IAAI,CAAC,KAAK,CAAC,OAAN,CAAc,GAAf,IACF,CAAC,QAAQ,CAAC,OAAD,EAAU,MAAV,EAAkB,cAAlB,EAAkC,KAAlC,CADX,EACqD;MAAE,SAAA;KAAU;;IAEjE,GAAG,CAAC,KAAJ,GAAY,KAAZ,CAAA;IACA,KAAK,CAAC,OAAN,CAAc,GAAd,CAAkB,GAAlB,CAAA,CAAA;GACD;;EAED,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,GAAG,CAAC,MAAJ,CAAW,CAAX,GAAe,GAAG,CAAC,UAAJ,CAAe,CAA/C,CAAA;EACA,MAAM,CAAC,KAAP,CAAa,CAAb,GAAiB,GAAG,CAAC,MAAJ,CAAW,CAAX,GAAe,GAAG,CAAC,UAAJ,CAAe,CAA/C,CAAA;EAEA,IAAI,WAAW,GAAG,KAAlB,CAAA;;EAEA,IAAI,IAAJ,EAAU;IACR,MAAM,CAAC,SAAP,CAAiB,IAAjB,GAA0B,GAAG,CAAC,IAAJ,CAAS,IAAT,GAAgB,IAAI,CAAC,IAA/C,CAAA;IACA,MAAM,CAAC,SAAP,CAAiB,KAAjB,GAA0B,GAAG,CAAC,IAAJ,CAAS,KAAT,GAAiB,IAAI,CAAC,KAAhD,CAAA;IACA,MAAM,CAAC,SAAP,CAAiB,GAAjB,GAA0B,GAAG,CAAC,IAAJ,CAAS,GAAT,GAAe,IAAI,CAAC,GAA9C,CAAA;IACA,MAAM,CAAC,SAAP,CAAiB,MAAjB,GAA0B,GAAG,CAAC,IAAJ,CAAS,MAAT,GAAkB,IAAI,CAAC,MAAjD,CAAA;IAEA,WAAW,GAAG,MAAM,CAAC,SAAP,CAAiB,IAAjB,KAA0B,CAA1B,IACZ,MAAM,CAAC,SAAP,CAAiB,KAAjB,KAA2B,CADf,IAEZ,MAAM,CAAC,SAAP,CAAiB,GAAjB,KAAyB,CAFb,IAGZ,MAAM,CAAC,SAAP,CAAiB,MAAjB,KAA4B,CAH9B,CAAA;GAID;;EAED,MAAM,CAAC,OAAP,GAAiB,UAAU,CAAC,CAAX,KAAiB,MAAM,CAAC,MAAP,CAAc,CAA/B,IACf,UAAU,CAAC,CAAX,KAAiB,MAAM,CAAC,MAAP,CAAc,CADhB,IAEf,WAFF,CAAA;EAIA,OAAO,MAAP,CAAA;CACD;;AAED,SAAS,eAAT,CAAqB,GAArB,EAA4C;EAAA,IAClC,WADkC,GACY,GADZ,CAClC,WADkC;MACrB,KADqB,GACY,GADZ,CACrB,KADqB;MACd,MADc,GACY,GADZ,CACd,MADc;MACN,aADM,GACY,GADZ,CACN,aADM,CAAA;EAAA,IAElC,YAFkC,GAER,WAFQ,CAElC,YAFkC;MAEpB,OAFoB,GAER,WAFQ,CAEpB,OAFoB,CAAA;EAG1C,IAAM,cAAc,GAAG,MAAM,CAC3B;IACE,WAAW,EAAX,WADF;IAEE,YAAY,EAAZ,YAFF;IAGE,OAAO,EAAP,OAHF;IAIE,MAAM,EAAN,MAJF;IAKE,KAAK,EAAL,KALF;IAME,UAAU,EAAE,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IANrC;IAOE,IAAI,EAAE,WAAW,CAAC,IAPpB;IAQE,MAAM,EAAE,WAAW,CAAC,SAAZ,CAAsB,MARhC;IASE,cAAc,EAAE,KATlB;IAUE,aAAa,EAAb,aAAA;GAXyB,CAA7B,CAAA;EAcA,WAAW,CAAC,SAAZ,CAAsB,MAAtB,GAA+B,cAA/B,CAjB0C;;;EAqB1C,IAAI,CAAC,cAAc,CAAC,OAAhB,IAA2B,WAAW,CAAC,WAAZ,EAA/B,EAA0D;IACxD,OAAO,KAAP,CAAA;GACD;;EAED,SAAS,CAAC,GAAD,CAAT,CAAA;CACD;;AAED,SAAS,SAAT,CAAoB,GAApB,EAAuB;EAAA,IACb,WADa,GACoB,GADpB,CACb,WADa;MACA,KADA,GACoB,GADpB,CACA,KADA;MACO,QADP,GACoB,GADpB,CACO,QADP,CAAA;EAErB,IAAM,MAAM,GAAG,WAAW,CAAC,SAAZ,CAAsB,MAArC,CAAA;;EAEA,IAAI,QAAQ,IAAI,CAAC,MAAb,IAAuB,CAAC,MAAM,CAAC,MAAnC,EAA2C;IACzC,OAAA;GACD;;EAED,IAAI,SAAS,GAAG,KAAhB,CAAA;;EAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoB,MAApB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4B;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAR,MAAQ,CAAA,GAAA,CAAA,CAAA;IAAA,IAAjB,KAAiB,GAAA,KAAA,CAAA;IAC1B,GAAG,CAAC,KAAJ,GAAY,KAAZ,CAAA;IAD0B,IAElB,OAFkB,GAEG,KAFH,CAElB,OAFkB;QAET,OAFS,GAEG,KAFH,CAET,OAFS,CAAA;IAI1B,IAAM,SAAS,GAAG,OAAO,CAAC,SAAR,IAAqB,OAAO,CAAC,SAAR,CAAkB,GAAlB,CAAvC,CAAA;;IAEA,IAAI,SAAS,KAAK,KAAlB,EAAyB;MACvB,WAAW,CAAC,SAAZ,CAAsB,YAAtB,GAAqC,IAArC,CAAA;MACA,OAAO,KAAP,CAAA;KARwB;;;IAY1B,IAAI,CAAC,SAAD,IAAc,QAAQ,CAAC,OAAD,EAAU,IAAV,EAAgB,IAAhB,CAA1B,EAAiD;;MAE/C,WAAW,CAAC,IAAZ,CAAiB;QAAE,KAAK,EAAL,KAAF;QAAS,MAAM,EAAE,IAAA;OAAlC,CAAA,CAAA;MACA,SAAS,GAAG,IAAZ,CAAA;KACD;GACF;CACF;;AAED,SAAS,IAAT,CAAe,GAAf,EAAsC;EAAA,IAC5B,WAD4B,GACZ,GADY,CAC5B,WAD4B,CAAA;EAEpC,IAAM,MAAM,GAAG,WAAW,CAAC,SAAZ,CAAsB,MAArC,CAAA;;EAEA,IAAI,CAAC,MAAD,IAAW,CAAC,MAAM,CAAC,MAAvB,EAA+B;IAC7B,OAAA;GACD;;EAED,IAAM,WAAW,GAAG,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO;IACzB,MAAM,EAAN,MADyB;IAEzB,YAAY,EAAE,WAAW,CAAC,YAFD;IAGzB,OAAO,EAAE,WAAW,CAAC,OAAA;GAHH,EAIjB,GAJiB,CAApB,CAAA;EAMA,aAAa,CAAC,GAAD,CAAb,CAAA;;EAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAoB,MAApB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4B;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAR,MAAQ,CAAA,GAAA,CAAA,CAAA;IAAA,IAAjB,KAAiB,GAAA,KAAA,CAAA;IAC1B,WAAW,CAAC,KAAZ,GAAoB,KAApB,CAAA;;IAEA,IAAI,KAAK,CAAC,OAAN,CAAc,IAAlB,EAAwB;MAAE,KAAK,CAAC,OAAN,CAAc,IAAd,CAAmB,WAAnB,CAAA,CAAA;KAAiC;GAC5D;;EAED,GAAG,CAAC,WAAJ,CAAgB,SAAhB,CAA0B,MAA1B,GAAmC,IAAnC,CAAA;EACA,GAAG,CAAC,WAAJ,CAAgB,SAAhB,CAA0B,YAA1B,GAAyC,KAAzC,CAAA;CACD;;AAED,SAAS,eAAT,CAA0B,WAA1B,EAAuC,mBAAvC,EAA0D;EACxD,IAAM,aAAa,GAAG,WAAW,CAAC,YAAZ,CAAyB,OAAzB,CAAiC,WAAW,CAAC,QAAZ,CAAqB,IAAtD,CAAtB,CAAA;EACA,IAAM,eAAe,GAAG,aAAa,CAAC,SAAtC,CAAA;;EAEA,IAAI,eAAe,IAAI,eAAe,CAAC,MAAvC,EAA+C;IAC7C,OAAO,eAAe,CACnB,MADI,CACG,UAAC,QAAD,EAAA;MAAA,OAAc,CAAC,QAAQ,CAAC,OAAV,IAAqB,QAAQ,CAAC,OAAT,CAAiB,OAAjB,KAA6B,KAAhE,CAAA;KADH,CAAA,CAEJ,GAFI,CAEA,UAAC,QAAD,EAAa;MAChB,IAAI,CAAC,QAAQ,CAAC,OAAV,IAAqB,QAAQ,CAAC,IAAlC,EAAwC;QACtC,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAV,CAAnB,CAAmC,QAAnC,CAAP,CAAA;OACD;;MAED,OAAO,QAAP,CAAA;KAPG,CAAP,CAAA;GASD;;EAED,OAAO,CAAC,MAAD,EAAS,UAAT,EAAqB,WAArB,EAAkC,UAAlC,EAA8C,eAA9C,EAA+D,cAA/D,CAAA,CACJ,GADI,CACA,UAAC,IAAD,EAAS;IACZ,IAAM,OAAO,GAAG,aAAa,CAAC,IAAD,CAA7B,CAAA;IAEA,OAAO,OAAO,IAAI,OAAO,CAAC,OAAnB,IAA8B;MACnC,OAAO,EAAP,OADmC;MAEnC,OAAO,EAAE,OAAO,CAAC,QAAA;KAFnB,CAAA;GAJG,CAAA,CASJ,MATI,CASG,UAAC,CAAD,EAAA;IAAA,OAAO,CAAC,CAAC,CAAT,CAAA;GATH,CAAP,CAAA;CAUD;;AAEK,SAAU,aAAV,CAAyB,YAAzB,EAAqC;EACzC,IAAM,MAAM,GAAG,EAAf,CAAA;;EAEA,KAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,YAAY,CAAC,MAAzC,EAAiD,KAAK,EAAtD,EAA0D;IAAA,IAAA,mBAAA,GACrB,YAAY,CAAC,KAAD,CADS;QAChD,OADgD,GAAA,mBAAA,CAChD,OADgD;QACvC,OADuC,GAAA,mBAAA,CACvC,OADuC;QAC9B,IAD8B,GAAA,mBAAA,CAC9B,IAD8B,CAAA;;IAGxD,IAAI,OAAO,IAAI,OAAO,CAAC,OAAR,KAAoB,KAAnC,EAA0C;MAAE,SAAA;KAAU;;IAEtD,IAAM,KAAK,GAAG;MACZ,OAAO,EAAP,OADY;MAEZ,OAAO,EAAP,OAFY;MAGZ,KAAK,EAAL,KAHY;MAIZ,IAAI,EAAJ,IAAA;KAJF,CAAA;IAOA,MAAM,CAAC,IAAP,CAAY,KAAZ,CAAA,CAAA;GACD;;EAED,OAAO,MAAP,CAAA;CACD;;AAED,SAAS,SAAT,CAAoB,GAApB,EAAuB;EAAA,IACb,WADa,GACU,GADV,CACb,WADa;MACA,KADA,GACU,GADV,CACA,KADA,CAAA;EAErB,IAAM,SAAS,GAAG,GAAG,CAAC,SAAJ,IAAiB,WAAW,CAAC,MAAZ,CAAmB,GAAtD,CAAA;EACA,IAAM,WAAW,GAAG,GAAG,CAAC,WAAJ,IAAmB,WAAW,CAAC,MAAZ,CAAmB,KAA1D,CAAA;EAHqB,IAAA,qBAAA,GAIU,WAAW,CAAC,SAJtB;MAIb,MAJa,GAAA,qBAAA,CAIb,MAJa;MAIL,UAJK,GAAA,qBAAA,CAIL,UAJK,CAAA;EAKrB,IAAM,QAAQ,GAAG,MAAM,CAAC,KAAxB,CAAA;;EAEA,IAAI,KAAK,KAAK,OAAd,EAAuB;IACrB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,WAAW,CAAC,SAAZ,CAAsB,UAA7B,EAAyC,MAAM,CAAC,KAAhD,CAAA,CAAA;GACD;;EAToB,IAAA,IAAA,GAWY,CAAC,CAAC,WAAD,EAAc,UAAd,CAAD,EAA4B,CAAC,SAAD,EAAY,QAAZ,CAA5B,CAXZ,CAAA;;EAWrB,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAA,IAAA,CAAA,MAAA,EAAA,GAAA,EAAA,EAAqF;IAAA,IAAA,OAAA,GAAA,mBAAA,CAAA,IAAA,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA;QAAzE,SAAyE,GAAA,OAAA,CAAA,CAAA,CAAA;QAA9D,KAA8D,GAAA,OAAA,CAAA,CAAA,CAAA,CAAA;;IACnF,SAAS,CAAC,IAAV,CAAe,CAAf,IAAsB,KAAK,CAAC,CAA5B,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,IAAsB,KAAK,CAAC,CAA5B,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,IAAsB,KAAK,CAAC,CAA5B,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,IAAsB,KAAK,CAAC,CAA5B,CAAA;GACD;;EAhBoB,IAkBb,SAlBa,GAkBC,WAAW,CAAC,SAAZ,CAAsB,MAlBvB,CAkBb,SAlBa,CAAA;EAmBrB,IAAM,IAAI,GAAG,GAAG,CAAC,IAAJ,IAAY,WAAW,CAAC,IAArC,CAAA;EAEA,IAAI,CAAC,IAAL,IAAe,SAAS,CAAC,IAAzB,CAAA;EACA,IAAI,CAAC,KAAL,IAAe,SAAS,CAAC,KAAzB,CAAA;EACA,IAAI,CAAC,GAAL,IAAe,SAAS,CAAC,GAAzB,CAAA;EACA,IAAI,CAAC,MAAL,IAAe,SAAS,CAAC,MAAzB,CAAA;EAEA,IAAI,CAAC,KAAL,GAAa,IAAI,CAAC,KAAL,GAAa,IAAI,CAAC,IAA/B,CAAA;EACA,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,MAAL,GAAc,IAAI,CAAC,GAAjC,CAAA;CACD;;AAED,SAAS,aAAT,CAAA,KAAA,EAAwF;EAAA,IAAA,iBAAA,GAAA,KAAA,CAA9D,WAA8D;MAA/C,MAA+C,GAAA,iBAAA,CAA/C,MAA+C;MAAvC,IAAuC,GAAA,iBAAA,CAAvC,IAAuC;MAAjC,SAAiC,GAAA,iBAAA,CAAjC,SAAiC,CAAA;;EACtF,IAAI,CAAC,SAAS,CAAC,MAAf,EAAuB;IAAE,OAAA;GAAQ;;EADqD,IAG9E,UAH8E,GAG/D,SAH+D,CAG9E,UAH8E,CAAA;EAAA,IAAA,iBAAA,GAI/C,SAAS,CAAC,MAJqC;MAIvE,QAJuE,GAAA,iBAAA,CAI9E,KAJ8E;MAI7D,SAJ6D,GAAA,iBAAA,CAI7D,SAJ6D,CAAA;EAMtF,IAAM,eAAe,GAAG,CACtB,CAAC,MAAM,CAAC,KAAR,EAAe,UAAf,CADsB,EAEtB,CAAC,MAAM,CAAC,GAAR,EAAa,QAAb,CAFsB,CAAxB,CAAA;;EAKA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAiC,eAAjC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAyD;IAAA,IAAA,mBAAA,GAAA,mBAAA,CAAxB,eAAwB,CAAA,GAAA,CAAA,EAAA,CAAA,CAAA;QAA7C,SAA6C,GAAA,mBAAA,CAAA,CAAA,CAAA;QAAlC,KAAkC,GAAA,mBAAA,CAAA,CAAA,CAAA,CAAA;;IACvD,SAAS,CAAC,IAAV,CAAe,CAAf,IAAoB,KAAK,CAAC,CAA1B,CAAA;IACA,SAAS,CAAC,IAAV,CAAe,CAAf,IAAoB,KAAK,CAAC,CAA1B,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,IAAsB,KAAK,CAAC,CAA5B,CAAA;IACA,SAAS,CAAC,MAAV,CAAiB,CAAjB,IAAsB,KAAK,CAAC,CAA5B,CAAA;GACD;;EAED,IAAI,CAAC,IAAL,IAAa,SAAS,CAAC,IAAvB,CAAA;EACA,IAAI,CAAC,KAAL,IAAc,SAAS,CAAC,KAAxB,CAAA;EACA,IAAI,CAAC,GAAL,IAAY,SAAS,CAAC,GAAtB,CAAA;EACA,IAAI,CAAC,MAAL,IAAe,SAAS,CAAC,MAAzB,CAAA;CACD;;AAED,SAAS,QAAT,CAAmB,OAAnB,EAA4B,MAA5B,EAA8C,cAA9C,EAAwE,KAAxE,EAAsF;EACpF,OAAO,OAAO,GACV,OAAO,CAAC,OAAR,KAAoB,KAApB,KACC,MAAM,IAAI,CAAC,OAAO,CAAC,OADpB,CAAA,KAEC,CAAC,cAAD,IAAmB,OAAO,CAAC,OAA3B,IAAsC,OAAO,CAAC,WAF/C,CAAA,KAGC,OAAO,CAAC,QAAR,IAAoB,KAAK,KAAK,OAH/B,CADU,GAKV,CAAC,cALL,CAAA;CAMD;;AAED,SAAS,aAAT,CAAwB,IAAxB,EAA8B,MAA9B,EAAoC;EAClC,OAAO,IAAI,GACP;IACA,IAAI,EAAI,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,IADxB;IAEA,GAAG,EAAK,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAFxB;IAGA,KAAK,EAAG,IAAI,CAAC,KAAL,GAAc,MAAM,CAAC,CAH7B;IAIA,MAAM,EAAE,IAAI,CAAC,MAAL,GAAc,MAAM,CAAC,CAAA;GALtB,GAOP;IACA,IAAI,EAAI,CADR;IAEA,GAAG,EAAK,CAFR;IAGA,KAAK,EAAG,CAHR;IAIA,MAAM,EAAE,CAAA;GAXZ,CAAA;CAaD;;AAED,SAAS,YAAT,CAEG,MAFH,EAEsD,IAFtD,EAEmE;EAAA,IACzD,QADyD,GAC5C,MAD4C,CACzD,QADyD,CAAA;EAEjE,IAAM,OAAO,GAAG;IACd,KAAK,EAAE,MAAM,CAAC,KADA;IAEd,GAAG,EAAE,MAAM,CAAC,GAFE;IAGd,SAAS,EAAE,MAAM,CAAC,SAHJ;IAId,IAAI,EAAE,MAAM,CAAC,IAAA;GAJf,CAAA;;EAOA,IAAM,QAAQ,GAAG,SAAX,QAAW,CAAC,OAAD,EAA+B;IAC9C,OAAO,GAAG,OAAO,IAAI,EAArB,CAAA;IAEA,OAAO,CAAC,OAAR,GAAkB,OAAO,CAAC,OAAR,KAAoB,KAAtC,CAH8C;;IAM9C,KAAK,IAAM,IAAX,IAAmB,QAAnB,EAA6B;MAC3B,IAAI,EAAE,IAAI,IAAI,OAAV,CAAJ,EAAwB;QACtB,OAAO,CAAC,IAAD,CAAP,GAAgB,QAAQ,CAAC,IAAD,CAAxB,CAAA;OACD;KACF;;IAED,OAAO;MAAE,OAAO,EAAP,OAAF;MAAW,OAAO,EAAP,OAAX;MAAoB,IAAI,EAAJ,IAAA;KAA3B,CAAA;GAZF,CAAA;;EAeA,IAAI,OAAO,IAAP,KAAgB,QAApB,EAA8B;;IAE5B,QAAQ,CAAC,SAAT,GAAqB,QAArB,CAAA;IACA,QAAQ,CAAC,QAAT,GAAoB,OAApB,CAAA;GACD;;EAED,OAAO,QAAP,CAAA;CACD;;oBAEc;EACb,EAAE,EAAE,gBADS;EAEb,OAAO,EAAP,YAFa;EAGb,QAAQ,EAAR,QAHa;EAIb,MAAM,EAAN,MAJa;EAKb,aAAa,EAAb,aALa;EAMb,KAAK,EAAL,UANa;EAOb,UAAU,EAAV,eAPa;EAQb,SAAS,EAAT,SARa;EASb,IAAI,EAAJ,IATa;EAUb,QAAQ,EAAR,QAVa;EAWb,eAAe,EAAf,eAXa;EAYb,aAAa,EAAb,aAZa;EAab,YAAY,EAAZ,YAAA;;;;;;;;;;;;AC3cF,mFAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,4BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,2BAAA,CAAA,QAAA,CAAA,CAAA;;;;;;AA0DC,kBAAA,CAAA,UAAA,CAAmB,MAAnB,GAA4B,QAA5B,CAAA;AACE,kBAAA,CAAA,UAAA,CAAmB,YAAnB,GAAkC,cAAlC,CAAA;;AAEH,SAAS,YAAT,CAAkB,KAAlB,EAAuC;EAAA,IAEnC,YAFmC,GAIjC,KAJiC,CAEnC,YAFmC;MAGnC,QAHmC,GAIjC,KAJiC,CAGnC,QAHmC,CAAA;EAMrC,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAA,IAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,IAAA,CAAjB,WAAiB,CAAA;IACjD,WAAW,CAAC,OAAZ,GAAsB;MACpB,MAAM,EAAO,KADO;MAEpB,SAAS,EAAI,KAFO;MAGpB,WAAW,EAAE,KAHO;MAIpB,QAAQ,EAAK,EAJO;MAKpB,OAAO,EAAM,IAAA;KALf,CAAA;GADF,CAAA,CANqC;;EAiBrC,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,mBAAxB,EAA6C,UAAC,GAAD,EAAA;IAAA,OAAS,OAAO,CAAC,GAAD,EAAa,KAAb,CAAhB,CAAA;GAA7C,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAC,GAAD,EAAA;IAAA,OAAS,MAAM,CAAC,GAAD,EAAa,KAAb,CAAf,CAAA;GAAhC,CAAA,CAAA;EACA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAC,GAAD,EAAA;IAAA,OAAS,SAAI,CAAC,GAAD,CAAb,CAAA;GAAhC,CAAA,CAAA;EAEA,QAAQ,CAAC,SAAT,CAAmB,OAAnB,GAA6B;IAC3B,OAAO,EAAY,KADQ;IAE3B,UAAU,EAAS,EAFQ;IAG3B,QAAQ,EAAW,GAHQ;IAI3B,QAAQ,EAAW,EAJQ;IAK3B,WAAW,EAAQ,IALQ;IAM3B,iBAAiB,EAAE,GAAA;GANrB,CAAA;EASA,KAAK,CAAC,SAAN,CAAgB,UAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;CACD;;AAED,SAAS,MAAT,CAAA,KAAA,EAEE,KAFF,EAEuB;EAAA,IADnB,WACmB,GAAA,KAAA,CADnB,WACmB;MADN,KACM,GAAA,KAAA,CADN,KACM;MADC,OACD,GAAA,KAAA,CADC,OACD;MADU,WACV,GAAA,KAAA,CADU,WACV,CAAA;EAErB,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAFqB;;EAKrB,IAAI,KAAK,CAAC,MAAV,EAAkB;IAChB,IAAI,OAAO,GAAG,WAAd,CADgB;;IAIhB,OAAO,UAAK,CAAC,EAAN,CAAS,OAAT,CAAiB,OAAjB,CAAP,EAAkC;;MAEhC,IAAI,OAAO,KAAK,WAAW,CAAC,OAA5B,EAAqC;;QAEnC,SAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,KAAK,CAAC,OAAjB,CAAA,CAAA;;QACA,KAAK,CAAC,MAAN,GAAe,KAAf,CAAA;QACA,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAJmC;;QAOnC,WAAW,CAAC,aAAZ,CAA0B,OAA1B,EAAmC,KAAnC,EAA0C,WAA1C,EAAuD,IAAvD,CAAA,CAAA;QACA,UAAK,CAAC,OAAN,CAAc,SAAd,CACE,WAAW,CAAC,MAAZ,CAAmB,GADrB,EAEE,WAAW,CAAC,QAAZ,CAAqB,GAArB,CAAyB,UAAC,CAAD,EAAA;UAAA,OAAO,CAAC,CAAC,OAAT,CAAA;SAAzB,CAFF,EAGE,WAAW,CAAC,IAAZ,EAHF,CAAA,CARmC;;QAenC,IAAM,SAAS,GAAG;UAChB,WAAW,EAAX,WAAA;SADF,CAAA;QAIA,KAAK,CAAC,YAAN,CAAmB,OAAnB,CAA2B,IAA3B,CAAgC,eAAhC,EAAiD,SAAjD,CAAA,CAnBmC;;QAsBnC,IAAM,WAAW,GAAG,IAAI,KAAK,CAAC,aAAV,CAClB,WADkB,EACL,KADK,EACE,WAAW,CAAC,QAAZ,CAAqB,IADvB,EAC6B,kBAAA,CAAA,UAAA,CAAW,MADxC,EACgD,WAAW,CAAC,OAD5D,CAApB,CAAA;;QAGA,WAAW,CAAC,UAAZ,CAAuB,WAAvB,CAAA,CAAA;;QAEA,UAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,WAAW,CAAC,MAAZ,CAAmB,IAA5C,EAAkD,WAAW,CAAC,MAAZ,CAAmB,GAArE,CAAA,CAAA;QACA,MAAA;OACD;;MAED,OAAO,GAAG,UAAK,CAAC,GAAN,CAAU,UAAV,CAAqB,OAArB,CAAV,CAAA;KACD;GACF;CACF;;AAED,SAAS,OAAT,CAAA,KAAA,EAEE,KAFF,EAEuB;EAAA,IADnB,WACmB,GAAA,KAAA,CADnB,WACmB;MADN,KACM,GAAA,KAAA,CADN,KACM;MADC,QACD,GAAA,KAAA,CADC,QACD,CAAA;EAErB,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAAA;;EAEA,IAAI,CAAC,WAAW,CAAC,WAAZ,EAAD,IACD,WAAW,CAAC,UAAZ,IAA0B,WAAW,CAAC,UAAZ,CAAuB,MADhD,IAEJ,QAFA,EAEU;IACR,OAAO,IAAP,CAAA;GACD;;EAED,IAAM,OAAO,GAAG,eAAU,CAAC,WAAD,CAA1B,CAAA;;EAEA,IAAM,GAAG,GAAG,WAAW,CAAC,IAAZ,EAAZ,CAAA;;EAZqB,IAaL,cAbK,GAac,WAAW,CAAC,MAAZ,CAAmB,QAbjC,CAab,MAba,CAAA;EAcrB,IAAM,YAAY,GAAG,UAAK,CAAC,KAAN,CAAY,cAAc,CAAC,CAA3B,EAA8B,cAAc,CAAC,CAA7C,CAArB,CAAA;EAEA,IAAI,SAAS,GAAG,KAAhB,CAAA;EACA,IAAI,cAAJ,CAjBqB;;EAoBrB,IAAM,eAAe,GAAI,OAAO,IAAI,OAAO,CAAC,OAAnB,IACN,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,SADxB,IAEN,KAAK,KAAK,KAAK,CAAC,UAFnC,CAAA;EAIA,IAAM,OAAO,GAAI,eAAe,IAC7B,GAAG,GAAG,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,SAA9B,GAA2C,EAD5B,IAEf,YAAY,GAAG,OAAO,CAAC,QAFR,IAGf,YAAY,GAAG,OAAO,CAAC,QAHzB,CAAA;EAKA,IAAM,WAAW,GAAG;IAClB,WAAW,EAAX,WADkB;IAElB,UAAU,EAAE,UAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IAAxC,CAFM;IAGlB,MAAM,EAAE,eAAe,IAAI,WAAW,CAAC,SAAZ,CAAsB,MAAtB,CAA6B,GAA7B,CACzB,UAAC,cAAD,EAAA;MAAA,OAAoB,UAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,cAAjB,CAApB,CAAA;KADyB,CAHT;IAMlB,MAAM,EAAE,IANU;IAOlB,UAAU,EAAE,SAPM;IAQlB,cAAc,EAAE,IAAA;GARlB,CA7BqB;;EAyCrB,IAAI,eAAe,IAAI,CAAC,OAAxB,EAAiC;IAC/B,WAAW,CAAC,UAAZ,GAAyB,WAAW,CAAC,SAAZ,CAAsB,IAA/C,CAAA;IACA,WAAW,CAAC,cAAZ,GAA6B,KAA7B,CAAA;IACA,cAAc,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,MAAV,CAAiB,WAAjB,CAAjB,CAAA;;IAEA,IAAI,cAAc,CAAC,OAAnB,EAA4B;MAC1B,SAAS,GAAG,IAAZ,CAAA;KACD;GACF;;EAED,IAAI,EAAE,OAAO,IAAI,SAAb,CAAJ,EAA6B;IAAE,OAAO,IAAP,CAAA;GAAa;;EAE5C,UAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,KAAK,CAAC,QAA/B,EAAyC,WAAW,CAAC,MAAZ,CAAmB,GAA5D,CAAA,CAAA;EAEA,WAAW,CAAC,QAAZ,CAAqB,CAArB,CAAA,CAAwB,OAAxB,GAAkC,KAAK,CAAC,UAAN,GAAmB,IAAI,KAAK,CAAC,aAAV,CACnD,WADmD,EAEnD,KAFmD;EAInD,WAAW,CAAC,QAAZ,CAAqB,IAJ8B,EAKnD,kBAAA,CAAA,UAAA,CAAW,YALwC,EAMnD,WAAW,CAAC,OANuC,CAArD,CAAA;EASA,KAAK,CAAC,EAAN,GAAW,GAAX,CAAA;EAEA,KAAK,CAAC,MAAN,GAAe,IAAf,CAAA;EACA,KAAK,CAAC,WAAN,GAAoB,OAAO,CAAC,WAA5B,CAAA;EACA,WAAW,CAAC,UAAZ,GAAyB,KAAzB,CAAA;EAEA,WAAW,CAAC,YAAZ,CAAyB,IAAzB,CAA8B,KAAK,CAAC,UAApC,CAAA,CAAA;;EAEA,IAAI,OAAJ,EAAa;IACX,KAAK,CAAC,GAAN,GAAY,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,MAA5B,CAAmC,CAA/C,CAAA;IACA,KAAK,CAAC,GAAN,GAAY,WAAW,CAAC,MAAZ,CAAmB,QAAnB,CAA4B,MAA5B,CAAmC,CAA/C,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,YAAX,CAAA;IAEA,WAAW,CAAC,WAAD,EAAc,KAAd,CAAX,CAAA;IAEA,UAAK,CAAC,MAAN,CAAa,WAAW,CAAC,UAAzB,EAAqC,WAAW,CAAC,MAAZ,CAAmB,GAAnB,CAAuB,IAA5D,CAAA,CAAA;IAEA,WAAW,CAAC,UAAZ,CAAuB,CAAvB,IAA4B,KAAK,CAAC,EAAlC,CAAA;IACA,WAAW,CAAC,UAAZ,CAAuB,CAAvB,IAA4B,KAAK,CAAC,EAAlC,CAAA;IACA,WAAW,CAAC,UAAZ,GAAyB,SAAzB,CAAA;IACA,WAAW,CAAC,cAAZ,GAA6B,IAA7B,CAAA;IAEA,cAAc,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,MAAV,CAAiB,WAAjB,CAAjB,CAAA;IAEA,KAAK,CAAC,UAAN,IAAoB,cAAc,CAAC,KAAf,CAAqB,CAAzC,CAAA;IACA,KAAK,CAAC,UAAN,IAAoB,cAAc,CAAC,KAAf,CAAqB,CAAzC,CAAA;IAEA,KAAK,CAAC,OAAN,GAAgB,SAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,YAAA;MAAA,OAAM,WAAW,CAAC,WAAD,CAAjB,CAAA;KAAZ,CAAhB,CAAA;GAnBF,MAqBK;IACH,KAAK,CAAC,SAAN,GAAkB,IAAlB,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,cAAc,CAAC,KAAf,CAAqB,CAAhC,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,cAAc,CAAC,KAAf,CAAqB,CAAhC,CAAA;IAEA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAN,GAAW,CAAtB,CAAA;IAEA,KAAK,CAAC,OAAN,GAAgB,SAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,YAAA;MAAA,OAAM,YAAY,CAAC,WAAD,CAAlB,CAAA;KAAZ,CAAhB,CAAA;GACD;;EAED,OAAO,KAAP,CAAA;CACD;;AAED,SAAS,SAAT,CAAA,KAAA,EAAkD;EAAA,IAAjC,WAAiC,GAAA,KAAA,CAAjC,WAAiC,CAAA;EAChD,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAAA;;EACA,IAAI,KAAK,CAAC,MAAV,EAAkB;IAChB,SAAA,CAAA,SAAA,CAAA,CAAI,MAAJ,CAAW,KAAK,CAAC,OAAjB,CAAA,CAAA;;IACA,KAAK,CAAC,MAAN,GAAe,KAAf,CAAA;IACA,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAAA;GACD;CACF;;AAED,SAAS,WAAT,CAAsB,WAAtB,EAAyD,KAAzD,EAA8D;EAC5D,IAAM,OAAO,GAAG,eAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAM,MAAM,GAAG,OAAO,CAAC,UAAvB,CAAA;EACA,IAAM,UAAU,GAAG,CAAC,IAAI,CAAC,GAAL,CAAS,OAAO,CAAC,QAAR,GAAmB,KAAK,CAAC,EAAlC,CAAD,GAAyC,MAA5D,CAAA;EAEA,KAAK,CAAC,EAAN,GAAW,WAAW,CAAC,SAAZ,CAAsB,IAAtB,CAA2B,CAAtC,CAAA;EACA,KAAK,CAAC,EAAN,GAAW,WAAW,CAAC,SAAZ,CAAsB,IAAtB,CAA2B,CAAtC,CAAA;EACA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,UAAN,CAAiB,SAAjB,GAA6B,IAAxC,CAAA;EACA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAN,GAAW,CAAtB,CAAA;EAEA,KAAK,CAAC,UAAN,GAAmB,KAAK,CAAC,EAAN,GAAW,CAAC,KAAK,CAAC,GAAN,GAAY,UAAb,IAA2B,MAAzD,CAAA;EACA,KAAK,CAAC,UAAN,GAAmB,KAAK,CAAC,EAAN,GAAW,CAAC,KAAK,CAAC,GAAN,GAAY,UAAb,IAA2B,MAAzD,CAAA;EACA,KAAK,CAAC,EAAN,GAAW,UAAX,CAAA;EAEA,KAAK,CAAC,SAAN,GAAkB,MAAM,GAAG,KAAK,CAAC,EAAjC,CAAA;EACA,KAAK,CAAC,SAAN,GAAkB,CAAA,GAAI,OAAO,CAAC,QAAR,GAAmB,KAAK,CAAC,EAA/C,CAAA;CACD;;AAED,SAAS,WAAT,CAAsB,WAAtB,EAAuD;EACrD,mBAAmB,CAAC,WAAD,CAAnB,CAAA;EACA,UAAK,CAAC,OAAN,CAAc,cAAd,CAA6B,WAAW,CAAC,MAAZ,CAAmB,KAAhD,EAAuD,WAAW,CAAC,MAAZ,CAAmB,IAA1E,EAAgF,WAAW,CAAC,MAAZ,CAAmB,GAAnG,CAAA,CAAA;EACA,UAAK,CAAC,OAAN,CAAc,gBAAd,CAA+B,WAAW,CAAC,MAAZ,CAAmB,QAAlD,EAA4D,WAAW,CAAC,MAAZ,CAAmB,KAA/E,CAAA,CAAA;EAEA,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAAA;EACA,IAAM,OAAO,GAAG,eAAU,CAAC,WAAD,CAA1B,CAAA;EACA,IAAM,MAAM,GAAG,OAAO,CAAC,UAAvB,CAAA;EACA,IAAM,CAAC,GAAG,WAAW,CAAC,IAAZ,EAAA,GAAqB,IAArB,GAA4B,KAAK,CAAC,EAA5C,CAAA;;EAEA,IAAI,CAAC,GAAG,KAAK,CAAC,EAAd,EAAkB;IAChB,IAAM,QAAQ,GAAI,CAAA,GAAI,CAAC,IAAI,CAAC,GAAL,CAAS,CAAC,MAAD,GAAU,CAAnB,CAAA,GAAwB,KAAK,CAAC,SAA/B,IAA4C,KAAK,CAAC,SAAxE,CAAA;;IAEA,IAAI,KAAK,CAAC,UAAN,KAAqB,KAAK,CAAC,EAA3B,IAAiC,KAAK,CAAC,UAAN,KAAqB,KAAK,CAAC,EAAhE,EAAoE;MAClE,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAN,GAAW,QAAtB,CAAA;MACA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAN,GAAW,QAAtB,CAAA;KAFF,MAIK;MACH,IAAM,SAAS,GAAG,UAAK,CAAC,sBAAN,CAChB,CADgB,EACb,CADa,EAEhB,KAAK,CAAC,EAFU,EAEN,KAAK,CAAC,EAFA,EAGhB,KAAK,CAAC,UAHU,EAGE,KAAK,CAAC,UAHR,EAIhB,QAJgB,CAAlB,CAAA;MAMA,KAAK,CAAC,EAAN,GAAW,SAAS,CAAC,CAArB,CAAA;MACA,KAAK,CAAC,EAAN,GAAW,SAAS,CAAC,CAArB,CAAA;KACD;;IAED,WAAW,CAAC,IAAZ,EAAA,CAAA;IAEA,KAAK,CAAC,OAAN,GAAgB,SAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,YAAA;MAAA,OAAM,WAAW,CAAC,WAAD,CAAjB,CAAA;KAAZ,CAAhB,CAAA;GApBF,MAsBK;IACH,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,UAAjB,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,UAAjB,CAAA;IAEA,WAAW,CAAC,IAAZ,EAAA,CAAA;IACA,WAAW,CAAC,GAAZ,CAAgB,KAAK,CAAC,UAAtB,CAAA,CAAA;IACA,KAAK,CAAC,MAAN,GAAe,KAAf,CAAA;IACA,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAAA;GACD;;EAED,UAAK,CAAC,OAAN,CAAc,UAAd,CAAyB,WAAW,CAAC,MAAZ,CAAmB,IAA5C,EAAkD,WAAW,CAAC,MAAZ,CAAmB,GAArE,CAAA,CAAA;CACD;;AAED,SAAS,YAAT,CAAuB,WAAvB,EAAwD;EACtD,mBAAmB,CAAC,WAAD,CAAnB,CAAA;EAEA,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAAA;EACA,IAAM,CAAC,GAAG,WAAW,CAAC,IAAZ,EAAA,GAAqB,KAAK,CAAC,EAArC,CAAA;;EAJsD,IAAA,WAAA,GAKd,eAAU,CAAC,WAAD,CALI;MAK3B,QAL2B,GAAA,WAAA,CAK9C,iBAL8C,CAAA;;EAOtD,IAAI,CAAC,GAAG,QAAR,EAAkB;IAChB,KAAK,CAAC,EAAN,GAAW,UAAK,CAAC,WAAN,CAAkB,CAAlB,EAAqB,CAArB,EAAwB,KAAK,CAAC,EAA9B,EAAkC,QAAlC,CAAX,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,UAAK,CAAC,WAAN,CAAkB,CAAlB,EAAqB,CAArB,EAAwB,KAAK,CAAC,EAA9B,EAAkC,QAAlC,CAAX,CAAA;IAEA,WAAW,CAAC,IAAZ,EAAA,CAAA;IAEA,KAAK,CAAC,OAAN,GAAgB,SAAA,CAAA,SAAA,CAAA,CAAI,OAAJ,CAAY,YAAA;MAAA,OAAM,YAAY,CAAC,WAAD,CAAlB,CAAA;KAAZ,CAAhB,CAAA;GANF,MAQK;IACH,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAjB,CAAA;IACA,KAAK,CAAC,EAAN,GAAW,KAAK,CAAC,EAAjB,CAAA;IAEA,WAAW,CAAC,IAAZ,EAAA,CAAA;IACA,WAAW,CAAC,GAAZ,CAAgB,KAAK,CAAC,UAAtB,CAAA,CAAA;IAEA,KAAK,CAAC,SAAN,GACE,KAAK,CAAC,MAAN,GAAe,KADjB,CAAA;IAEA,WAAW,CAAC,UAAZ,GAAyB,IAAzB,CAAA;GACD;CACF;;AAED,SAAS,mBAAT,CAA8B,WAA9B,EAA+D;EAC7D,IAAM,KAAK,GAAG,WAAW,CAAC,OAA1B,CAD6D;;EAI7D,IAAI,CAAC,KAAK,CAAC,MAAX,EAAmB;IAAE,OAAA;GAAQ;;EAE7B,IAAM,MAAM,GAAK,KAAK,CAAC,QAAN,CAAe,IAAhC,CAAA;EACA,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAN,CAAe,MAAhC,CAAA;EAEA,UAAK,CAAC,OAAN,CAAc,SAAd,CAAwB,WAAW,CAAC,MAAZ,CAAmB,GAA3C,EAAgD,CAAE;IAChD,KAAK,EAAI,MAAM,CAAC,CAAP,GAAa,KAAK,CAAC,EADoB;IAEhD,KAAK,EAAI,MAAM,CAAC,CAAP,GAAa,KAAK,CAAC,EAFoB;IAGhD,OAAO,EAAE,QAAQ,CAAC,CAAT,GAAa,KAAK,CAAC,EAHoB;IAIhD,OAAO,EAAE,QAAQ,CAAC,CAAT,GAAa,KAAK,CAAC,EAAA;GAJkB,CAAhD,EAKK,WAAW,CAAC,IAAZ,EALL,CAAA,CAAA;CAMD;;AAED,SAAS,eAAT,CAAA,KAAA,EAAqE;EAAA,IAA9C,YAA8C,GAAA,KAAA,CAA9C,YAA8C;MAAhC,QAAgC,GAAA,KAAA,CAAhC,QAAgC,CAAA;EACnE,OAAO,YAAY,IACjB,YAAY,CAAC,OADR,IAEL,QAAQ,CAAC,IAFJ,IAGL,YAAY,CAAC,OAAb,CAAqB,QAAQ,CAAC,IAA9B,CAAA,CAAoC,OAHtC,CAAA;CAID;;oBAEc;EACb,EAAE,EAAE,SADS;EAEb,OAAO,EAAP,YAFa;EAGb,WAAW,EAAX,WAHa;EAIb,WAAW,EAAX,WAJa;EAKb,YAAY,EAAZ,YALa;EAMb,mBAAmB,EAAnB,mBAAA;;;;;;;;;;;;AChYF,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;;;AAEA,SAAS,UAAT,CAAA,IAAA,EAA4C;EAAA,IAA1B,IAA0B,GAAA,IAAA,CAA1B,IAA0B;MAApB,WAAoB,GAAA,IAAA,CAApB,WAAoB;MAAP,KAAO,GAAA,IAAA,CAAP,KAAO,CAAA;EAAA,IAClC,OADkC,GACtB,KADsB,CAClC,OADkC,CAAA;EAAA,IAElC,WAFkC,GAElB,OAFkB,CAElC,WAFkC,CAAA;EAG1C,IAAM,MAAM,GAAG,EAAf,CAAA;;EAEA,IAAI,IAAI,IAAI,WAAZ,EAAyB;IACvB,MAAM,CAAC,IAAP,GAAc,WAAW,CAAC,IAAZ,GAAoB,IAAI,CAAC,KAAL,GAAc,WAAW,CAAC,IAA5D,CAAA;IACA,MAAM,CAAC,GAAP,GAAc,WAAW,CAAC,GAAZ,GAAoB,IAAI,CAAC,MAAL,GAAc,WAAW,CAAC,GAA5D,CAAA;IAEA,MAAM,CAAC,KAAP,GAAgB,WAAW,CAAC,KAAZ,GAAsB,IAAI,CAAC,KAAL,IAAe,CAAA,GAAI,WAAW,CAAC,KAA/B,CAAtC,CAAA;IACA,MAAM,CAAC,MAAP,GAAgB,WAAW,CAAC,MAAZ,GAAsB,IAAI,CAAC,MAAL,IAAe,CAAA,GAAI,WAAW,CAAC,MAA/B,CAAtC,CAAA;GALF,MAOK;IACH,MAAM,CAAC,IAAP,GAAc,MAAM,CAAC,GAAP,GAAa,MAAM,CAAC,KAAP,GAAe,MAAM,CAAC,MAAP,GAAgB,CAA1D,CAAA;GACD;;EAED,KAAK,CAAC,MAAN,GAAe,MAAf,CAAA;CACD;;AAED,SAAS,GAAT,CAAA,KAAA,EAA4C;EAAA,IAA5B,MAA4B,GAAA,KAAA,CAA5B,MAA4B;MAApB,WAAoB,GAAA,KAAA,CAApB,WAAoB;MAAP,KAAO,GAAA,KAAA,CAAP,KAAO,CAAA;EAAA,IAClC,OADkC,GACd,KADc,CAClC,OADkC;MACzB,MADyB,GACd,KADc,CACzB,MADyB,CAAA;EAG1C,IAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAT,EAAsB,WAAtB,EAAmC,MAAnC,CAAtC,CAAA;;EAEA,IAAI,CAAC,WAAL,EAAkB;IAAE,OAAO,KAAP,CAAA;GAAc;;EAElC,IAAM,IAAI,GAAG,WAAb,CAP0C;;;;EAY1C,IAAI,GAAA,IAAO,WAAP,IAAsB,GAAA,IAAO,WAAjC,EAA8C;IAC5C,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,KAAd,GAAuB,MAAM,CAAC,KAAvC,EAA8C,MAAM,CAAC,CAArD,CAAT,EAAkE,IAAI,CAAC,CAAL,GAAS,MAAM,CAAC,IAAlF,CAAX,CAAA;IACA,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,CAAL,GAAS,IAAI,CAAC,MAAd,GAAuB,MAAM,CAAC,MAAvC,EAA+C,MAAM,CAAC,CAAtD,CAAT,EAAmE,IAAI,CAAC,CAAL,GAAS,MAAM,CAAC,GAAnF,CAAX,CAAA;GAFF,MAIK;IACH,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,KAAL,GAAc,MAAM,CAAC,KAA9B,EAAqC,MAAM,CAAC,CAA5C,CAAT,EAAyD,IAAI,CAAC,IAAL,GAAY,MAAM,CAAC,IAA5E,CAAX,CAAA;IACA,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,MAAL,GAAc,MAAM,CAAC,MAA9B,EAAsC,MAAM,CAAC,CAA7C,CAAT,EAA0D,IAAI,CAAC,GAAL,GAAY,MAAM,CAAC,GAA7E,CAAX,CAAA;GACD;CACF;;AAED,SAAS,kBAAT,CAA6B,KAA7B,EAAoC,WAApC,EAAiD,MAAjD,EAAwE;EACtE,IAAI,OAAE,CAAC,IAAH,CAAQ,KAAR,CAAJ,EAAoB;IAClB,OAAO,UAAA,CAAA,SAAA,CAAA,CAAU,eAAV,CAA0B,KAA1B,EAAiC,WAAW,CAAC,YAA7C,EAA2D,WAAW,CAAC,OAAvE,EAAgF,CAAC,MAAM,CAAC,CAAR,EAAW,MAAM,CAAC,CAAlB,EAAqB,WAArB,CAAhF,CAAP,CAAA;GADF,MAEO;IACL,OAAO,UAAA,CAAA,SAAA,CAAA,CAAU,eAAV,CAA0B,KAA1B,EAAiC,WAAW,CAAC,YAA7C,EAA2D,WAAW,CAAC,OAAvE,CAAP,CAAA;GACD;CACF;;AAED,IAAM,QAAQ,GAAG;EACf,KAAK,EAAL,UADe;EAEf,GAAG,EAAH,GAFe;EAGf,kBAAkB,EAAlB,kBAHe;EAIf,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,WAAW,EAAE,IAFL;IAGR,WAAW,EAAE,IAAA;GAHL;CAJZ,CAAA;oBAWe;;;;;;;;;;;ACnDf,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;;;;;;;;;;;;;IAEQ,0BAAuB,QAAA,CAAA,SAAA,EAAvB;AACR,IAAM,OAAO,GAAG;EAAE,GAAG,EAAE,CAAC,QAAR;EAAkB,IAAI,EAAE,CAAC,QAAzB;EAAmC,MAAM,EAAE,CAAC,QAA5C;EAAsD,KAAK,EAAE,CAAC,QAAA;CAA9E,CAAA;AACA,IAAM,OAAO,GAAG;EAAE,GAAG,EAAE,CAAC,QAAR;EAAkB,IAAI,EAAE,CAAC,QAAzB;EAAmC,MAAM,EAAE,CAAC,QAA5C;EAAsD,KAAK,EAAE,CAAC,QAAA;CAA9E,CAAA;;AAEA,SAAS,UAAT,CAAA,IAAA,EAAgF;EAAA,IAA9D,WAA8D,GAAA,IAAA,CAA9D,WAA8D;MAAjD,KAAiD,GAAA,IAAA,CAAjD,KAAiD,CAAA;EAAA,IACtE,OADsE,GAC1D,KAD0D,CACtE,OADsE,CAAA;EAE9E,IAAM,WAAW,GAAG,WAAW,CAAC,SAAZ,CAAsB,WAA1C,CAAA;EACA,IAAI,MAAJ,CAAA;;EAEA,IAAI,OAAJ,EAAa;IACX,IAAM,UAAU,GAAG,uBAAkB,CAAC,OAAO,CAAC,MAAT,EAAiB,WAAjB,EAA8B,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAvD,CAArC,CAAA;IAEA,MAAM,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,QAAV,CAAmB,UAAnB,CAAT,CAAA;GACD;;EAED,MAAM,GAAG,MAAM,IAAI;IAAE,CAAC,EAAE,CAAL;IAAQ,CAAC,EAAE,CAAA;GAA9B,CAAA;EAEA,KAAK,CAAC,MAAN,GAAe;IACb,GAAG,EAAK,MAAM,CAAC,CAAP,GAAW,WAAW,CAAC,GADlB;IAEb,IAAI,EAAI,MAAM,CAAC,CAAP,GAAW,WAAW,CAAC,IAFlB;IAGb,MAAM,EAAE,MAAM,CAAC,CAAP,GAAW,WAAW,CAAC,MAHlB;IAIb,KAAK,EAAG,MAAM,CAAC,CAAP,GAAW,WAAW,CAAC,KAAA;GAJjC,CAAA;CAMD;;AAED,SAAS,QAAT,CAAA,KAAA,EAIC;EAAA,IAJe,MAIf,GAAA,KAAA,CAJe,MAIf;MAJuB,WAIvB,GAAA,KAAA,CAJuB,WAIvB;MAJoC,KAIpC,GAAA,KAAA,CAJoC,KAIpC,CAAA;EAAA,IACS,MADT,GAC6B,KAD7B,CACS,MADT;MACiB,OADjB,GAC6B,KAD7B,CACiB,OADjB,CAAA;EAEC,IAAM,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,YAArB,IAAqC,WAAW,CAAC,QAAZ,CAAqB,KAAxE,CAAA;;EAEA,IAAI,CAAC,KAAL,EAAY;IACV,OAAA;GACD;;EAED,IAAM,IAAI,GAAG,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,MAAX,CAAb,CAAA;EACA,IAAM,KAAK,GAAG,uBAAkB,CAAC,OAAO,CAAC,KAAT,EAAgB,WAAhB,EAA6B,IAA7B,CAAlB,IAAwD,EAAtE,CAAA;EACA,IAAM,KAAK,GAAG,uBAAkB,CAAC,OAAO,CAAC,KAAT,EAAgB,WAAhB,EAA6B,IAA7B,CAAlB,IAAwD,EAAtE,CAAA;EAEA,OAAO,CAAC,KAAD,EAAQ,OAAR,CAAP,CAAA;EACA,OAAO,CAAC,KAAD,EAAQ,OAAR,CAAP,CAAA;;EAEA,IAAI,KAAK,CAAC,GAAV,EAAe;IACb,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,KAAK,CAAC,GAAN,GAAe,MAAM,CAAC,GAA/B,EAAuC,IAAI,CAAC,CAA5C,CAAT,EAAyD,KAAK,CAAC,GAAN,GAAe,MAAM,CAAC,GAA/E,CAAX,CAAA;GADF,MAGK,IAAI,KAAK,CAAC,MAAV,EAAkB;IACrB,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,KAAK,CAAC,MAAN,GAAe,MAAM,CAAC,MAA/B,EAAuC,IAAI,CAAC,CAA5C,CAAT,EAAyD,KAAK,CAAC,MAAN,GAAe,MAAM,CAAC,MAA/E,CAAX,CAAA;GACD;;EACD,IAAI,KAAK,CAAC,IAAV,EAAgB;IACd,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,KAAK,CAAC,IAAN,GAAe,MAAM,CAAC,IAA/B,EAAuC,IAAI,CAAC,CAA5C,CAAT,EAAyD,KAAK,CAAC,IAAN,GAAe,MAAM,CAAC,IAA/E,CAAX,CAAA;GADF,MAGK,IAAI,KAAK,CAAC,KAAV,EAAiB;IACpB,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,GAAL,CAAS,IAAI,CAAC,GAAL,CAAS,KAAK,CAAC,KAAN,GAAe,MAAM,CAAC,KAA/B,EAAuC,IAAI,CAAC,CAA5C,CAAT,EAAyD,KAAK,CAAC,KAAN,GAAe,MAAM,CAAC,KAA/E,CAAX,CAAA;GACD;CACF;;AAED,SAAS,OAAT,CAAkB,IAAlB,EAAwB,QAAxB,EAAgC;EAAA,IAAA,IAAA,GACX,CAAC,KAAD,EAAQ,MAAR,EAAgB,QAAhB,EAA0B,OAA1B,CADW,CAAA;;EAC9B,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAuD;IAAlD,IAAM,IAAI,GAAA,IAAA,CAAA,EAAA,CAAV,CAAA;;IACH,IAAI,EAAE,IAAI,IAAI,IAAV,CAAJ,EAAqB;MACnB,IAAI,CAAC,IAAD,CAAJ,GAAa,QAAQ,CAAC,IAAD,CAArB,CAAA;KACD;GACF;;EAED,OAAO,IAAP,CAAA;CACD;;AAED,IAAM,aAAa,GAAG;EACpB,OAAO,EAAP,OADoB;EAEpB,OAAO,EAAP,OAFoB;EAGpB,kBAAkB,EAAlB,uBAHoB;EAIpB,KAAK,EAAL,UAJoB;EAKpB,GAAG,EAAH,QALoB;EAMpB,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,KAAK,EAAE,IAFC;IAGR,KAAK,EAAE,IAHC;IAIR,MAAM,EAAE,IAAA;GAJA;CANZ,CAAA;oBAce;;;;;;;;;;;ACvFf,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;;;;;;;;;;;;;AAEA,IAAM,KAAK,GAAG;EAAE,KAAK,EAAE,CAAC,QAAV;EAAoB,MAAM,EAAE,CAAC,QAAA;CAA3C,CAAA;AACA,IAAM,KAAK,GAAG;EAAE,KAAK,EAAE,CAAC,QAAV;EAAoB,MAAM,EAAE,CAAC,QAAA;CAA3C,CAAA;;AAEA,SAAS,UAAT,CAAgB,GAAhB,EAAmB;EACjB,OAAO,MAAA,CAAA,SAAA,CAAA,CAAc,KAAd,CAAoB,GAApB,CAAP,CAAA;CACD;;AAED,SAAS,QAAT,CAAc,GAAd,EAAiB;EAAA,IACP,WADO,GACgB,GADhB,CACP,WADO;MACM,KADN,GACgB,GADhB,CACM,KADN,CAAA;EAAA,IAEP,OAFO,GAEK,KAFL,CAEP,OAFO,CAAA;EAGf,IAAM,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,WAArB,IAAoC,WAAW,CAAC,QAAZ,CAAqB,KAAvE,CAAA;;EAEA,IAAI,CAAC,KAAL,EAAY;IACV,OAAA;GACD;;EAED,IAAM,IAAI,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,UAAV,CAAqB,WAAW,CAAC,WAAZ,CAAwB,QAA7C,CAAb,CAAA;;EAEA,IAAM,OAAO,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,UAAV,CAAqB,MAAA,CAAA,SAAA,CAAA,CAAc,kBAAd,CAAiC,OAAO,CAAC,GAAzC,EAA8C,WAA9C,EAA2D,GAAG,CAAC,MAA/D,CAArB,CAAA,IAAgG,KAAhH,CAAA;EACA,IAAM,OAAO,GAAG,UAAA,CAAA,SAAA,CAAA,CAAU,UAAV,CAAqB,MAAA,CAAA,SAAA,CAAA,CAAc,kBAAd,CAAiC,OAAO,CAAC,GAAzC,EAA8C,WAA9C,EAA2D,GAAG,CAAC,MAA/D,CAArB,CAAA,IAAgG,KAAhH,CAAA;EAEA,KAAK,CAAC,OAAN,GAAgB;IACd,OAAO,EAAE,OAAO,CAAC,OADH;IAEd,OAAO,EAAE,OAAO,CAAC,OAFH;IAGd,KAAK,EAAE,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,MAAA,CAAA,SAAA,CAAA,CAAc,OAAzB,CAHO;IAId,KAAK,EAAE,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,MAAA,CAAA,SAAA,CAAA,CAAc,OAAzB,CAAA;GAJT,CAAA;;EAOA,IAAI,KAAK,CAAC,GAAV,EAAe;IACb,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,GAApB,GAA0B,IAAI,CAAC,MAAL,GAAc,OAAO,CAAC,MAAhD,CAAA;IACA,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,GAApB,GAA0B,IAAI,CAAC,MAAL,GAAc,OAAO,CAAC,MAAhD,CAAA;GAFF,MAIK,IAAI,KAAK,CAAC,MAAV,EAAkB;IACrB,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,MAApB,GAA6B,IAAI,CAAC,GAAL,GAAW,OAAO,CAAC,MAAhD,CAAA;IACA,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,MAApB,GAA6B,IAAI,CAAC,GAAL,GAAW,OAAO,CAAC,MAAhD,CAAA;GACD;;EACD,IAAI,KAAK,CAAC,IAAV,EAAgB;IACd,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,IAApB,GAA2B,IAAI,CAAC,KAAL,GAAa,OAAO,CAAC,KAAhD,CAAA;IACA,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,IAApB,GAA2B,IAAI,CAAC,KAAL,GAAa,OAAO,CAAC,KAAhD,CAAA;GAFF,MAIK,IAAI,KAAK,CAAC,KAAV,EAAiB;IACpB,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,KAApB,GAA4B,IAAI,CAAC,IAAL,GAAY,OAAO,CAAC,KAAhD,CAAA;IACA,KAAK,CAAC,OAAN,CAAc,KAAd,CAAoB,KAApB,GAA4B,IAAI,CAAC,IAAL,GAAY,OAAO,CAAC,KAAhD,CAAA;GACD;;EAED,MAAA,CAAA,SAAA,CAAA,CAAc,GAAd,CAAkB,GAAlB,CAAA,CAAA;;EAEA,KAAK,CAAC,OAAN,GAAgB,OAAhB,CAAA;CACD;;AAED,IAAM,YAAY,GAAG;EACnB,KAAK,EAAL,UADmB;EAEnB,GAAG,EAAH,QAFmB;EAGnB,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,GAAG,EAAE,IAFG;IAGR,GAAG,EAAE,IAAA;GAHG;CAHZ,CAAA;oBAUe;;;;;;;;;;;AC3Ef,IAAA,UAAA,GAAA,4BAAA,CAAA,UAAA,CAAA,CAAA;;;;AAEA,SAAS,UAAT,CAAgB,GAAhB,EAAuC;EAAA,IAC7B,WAD6B,GACoC,GADpC,CAC7B,WAD6B;MAChB,YADgB,GACoC,GADpC,CAChB,YADgB;MACF,OADE,GACoC,GADpC,CACF,OADE;MACO,IADP,GACoC,GADpC,CACO,IADP;MACa,KADb,GACoC,GADpC,CACa,KADb;MACoB,WADpB,GACoC,GADpC,CACoB,WADpB,CAAA;EAAA,IAE7B,OAF6B,GAEjB,KAFiB,CAE7B,OAF6B,CAAA;EAGrC,IAAM,OAAO,GAAG,EAAhB,CAAA;EACA,IAAM,MAAM,GAAG,OAAO,CAAC,gBAAR,GACX,SAAS,CAAC,GAAD,CADE,GAEX;IAAE,CAAC,EAAE,CAAL;IAAQ,CAAC,EAAE,CAAA;GAFf,CAAA;EAIA,IAAI,UAAJ,CAAA;;EAEA,IAAI,OAAO,CAAC,MAAR,KAAmB,aAAvB,EAAsC;IACpC,UAAU,GAAG;MACX,CAAC,EAAE,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CADtB;MAEX,CAAC,EAAE,WAAW,CAAC,MAAZ,CAAmB,KAAnB,CAAyB,IAAzB,CAA8B,CAAA;KAFnC,CAAA;GADF,MAMM;IACJ,IAAM,UAAU,GAAG,UAAK,CAAC,IAAN,CAAW,eAAX,CAA2B,OAAO,CAAC,MAAnC,EAA2C,YAA3C,EAAyD,OAAzD,EAAkE,CAAC,WAAD,CAAlE,CAAnB,CAAA;IAEA,UAAU,GAAG,UAAK,CAAC,IAAN,CAAW,QAAX,CAAoB,UAApB,CAAA,IAAmC;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KAA3D,CAAA;IACA,UAAU,CAAC,CAAX,IAAgB,MAAM,CAAC,CAAvB,CAAA;IACA,UAAU,CAAC,CAAX,IAAgB,MAAM,CAAC,CAAvB,CAAA;GACD;;EAED,IAAM,cAAc,GAAG,OAAO,CAAC,cAAR,IAA0B,EAAjD,CAAA;;EAEA,IAAI,IAAI,IAAI,OAAO,CAAC,cAAhB,IAAkC,OAAO,CAAC,cAAR,CAAuB,MAA7D,EAAqE;IACnE,KAAK,IAAI,KAAK,GAAG,CAAjB,EAAoB,KAAK,GAAG,cAAc,CAAC,MAA3C,EAAmD,KAAK,EAAxD,EAA4D;MAC1D,IAAM,aAAa,GAAG,cAAc,CAAC,KAAD,CAApC,CAAA;MAEA,OAAO,CAAC,IAAR,CAAa;QACX,KAAK,EAAL,KADW;QAEX,aAAa,EAAb,aAFW;QAGX,CAAC,EAAE,WAAW,CAAC,IAAZ,GAAoB,IAAI,CAAC,KAAL,GAAc,aAAa,CAAC,CAAhD,GAAqD,UAAU,CAAC,CAHxD;QAIX,CAAC,EAAE,WAAW,CAAC,GAAZ,GAAoB,IAAI,CAAC,MAAL,GAAc,aAAa,CAAC,CAAhD,GAAqD,UAAU,CAAC,CAAA;OAJrE,CAAA,CAAA;KAMD;GAVH,MAYK;IACH,OAAO,CAAC,IAAR,CAAa,UAAK,CAAC,MAAN,CAAa;MACxB,KAAK,EAAE,CADiB;MAExB,aAAa,EAAE,IAAA;KAFJ,EAGV,UAHU,CAAb,CAAA,CAAA;GAID;;EAED,KAAK,CAAC,OAAN,GAAgB,OAAhB,CAAA;CACD;;AAED,SAAS,QAAT,CAAc,GAAd,EAAqC;EAAA,IAC3B,WAD2B,GACI,GADJ,CAC3B,WAD2B;MACd,MADc,GACI,GADJ,CACd,MADc;MACN,KADM,GACI,GADJ,CACN,KADM,CAAA;EAAA,IAE3B,OAF2B,GAEN,KAFM,CAE3B,OAF2B;MAElB,OAFkB,GAEN,KAFM,CAElB,OAFkB,CAAA;EAInC,IAAM,MAAM,GAAG,UAAK,CAAC,WAAN,CAAkB,WAAW,CAAC,YAA9B,EAA4C,WAAW,CAAC,OAAxD,EAAiE,WAAW,CAAC,QAAZ,CAAqB,IAAtF,CAAf,CAAA;EACA,IAAM,IAAI,GAAG,UAAK,CAAC,MAAN,CAAa,EAAb,EAAiB,MAAjB,CAAb,CAAA;EACA,IAAM,OAAO,GAAG,EAAhB,CAAA;EACA,IAAI,MAAJ,CAAA;;EAEA,IAAI,CAAC,OAAO,CAAC,gBAAb,EAA+B;IAC7B,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,CAAjB,CAAA;IACA,IAAI,CAAC,CAAL,IAAU,MAAM,CAAC,CAAjB,CAAA;GACD;;EAED,KAAK,CAAC,KAAN,GAAc,IAAI,CAAC,CAAnB,CAAA;EACA,KAAK,CAAC,KAAN,GAAc,IAAI,CAAC,CAAnB,CAAA;;EAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAqB,OAArB,CAAA,MAAA,EAAA,EAAA,EAAA,EAA8B;IAAA,IAAA,IAAA,CAAA;;IAAA,IAAA,GAAT,OAAS,CAAA,EAAA,CAAA,CAAA;IAAA,IAAnB,MAAmB,GAAA,IAAA,CAAA;IAC5B,IAAM,SAAS,GAAG,IAAI,CAAC,CAAL,GAAS,MAAM,CAAC,CAAlC,CAAA;IACA,IAAM,SAAS,GAAG,IAAI,CAAC,CAAL,GAAS,MAAM,CAAC,CAAlC,CAAA;;IAEA,KAAK,IAAI,KAAK,GAAG,CAAZ,EAAe,IAAG,GAAG,OAAO,CAAC,OAAR,CAAgB,MAA1C,EAAkD,KAAK,GAAG,IAA1D,EAA+D,KAAK,EAApE,EAAwE;MACtE,IAAM,UAAU,GAAG,OAAO,CAAC,OAAR,CAAgB,KAAhB,CAAnB,CAAA;;MACA,IAAI,UAAK,CAAC,EAAN,CAAS,IAAT,CAAc,UAAd,CAAJ,EAA+B;QAC7B,MAAM,GAAG,UAAU,CAAC,SAAD,EAAY,SAAZ,EAAuB,WAAvB,EAAoC,MAApC,EAA4C,KAA5C,CAAnB,CAAA;OADF,MAGK;QACH,MAAM,GAAG,UAAT,CAAA;OACD;;MAED,IAAI,CAAC,MAAL,EAAa;QAAE,SAAA;OAAU;;MAEzB,OAAO,CAAC,IAAR,CAAa;QACX,CAAC,EAAE,CAAC,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,MAAM,CAAC,CAAvB,CAAA,GAA4B,MAAM,CAAC,CAAnC,GAAuC,SAAxC,IAAqD,MAAM,CAAC,CADpD;QAEX,CAAC,EAAE,CAAC,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,MAAM,CAAC,CAAvB,CAAA,GAA4B,MAAM,CAAC,CAAnC,GAAuC,SAAxC,IAAqD,MAAM,CAAC,CAFpD;QAIX,KAAK,EAAE,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,MAAM,CAAC,KAAvB,CAAA,GAAgC,MAAM,CAAC,KAAvC,GAA+C,OAAO,CAAC,KAAA;OAJhE,CAAA,CAAA;KAMD;GACF;;EAED,IAAM,OAAO,GAAG;IACd,MAAM,EAAE,IADM;IAEd,OAAO,EAAE,KAFK;IAGd,QAAQ,EAAE,CAHI;IAId,KAAK,EAAE,CAJO;IAKd,EAAE,EAAE,CALU;IAMd,EAAE,EAAE,CAAA;GANN,CAAA;;EASA,KAAK,IAAI,CAAC,GAAG,CAAR,EAAW,GAAG,GAAG,OAAO,CAAC,MAA9B,EAAsC,CAAC,GAAG,GAA1C,EAA+C,CAAC,EAAhD,EAAoD;IAClD,MAAM,GAAG,OAAO,CAAC,CAAD,CAAhB,CAAA;IAEA,IAAM,KAAK,GAAG,MAAM,CAAC,KAArB,CAAA;IACA,IAAM,EAAE,GAAG,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,CAA3B,CAAA;IACA,IAAM,EAAE,GAAG,MAAM,CAAC,CAAP,GAAW,IAAI,CAAC,CAA3B,CAAA;IACA,IAAM,QAAQ,GAAG,UAAK,CAAC,KAAN,CAAY,EAAZ,EAAgB,EAAhB,CAAjB,CAAA;IACA,IAAI,OAAO,GAAG,QAAQ,IAAI,KAA1B,CAPkD;;;IAWlD,IAAI,KAAK,KAAK,QAAV,IAAsB,OAAO,CAAC,OAA9B,IAAyC,OAAO,CAAC,KAAR,KAAkB,QAA/D,EAAyE;MACvE,OAAO,GAAG,KAAV,CAAA;KACD;;IAED,IAAI,CAAC,OAAO,CAAC,MAAT,KAAoB,OAAO;MAE1B,OAAO,CAAC,OAAR,IAAmB,KAAK,KAAK,QAA7B;MAEC,QAAQ,GAAG,KAAX,GAAmB,OAAO,CAAC,QAAR,GAAmB,OAAO,CAAC,KAF/C;MAIE,KAAK,KAAK,QAAV,IAAsB,OAAO,CAAC,KAAR,KAAkB,QAAzC;IAEA,QAAQ,GAAG,OAAO,CAAC,QARM;IAU1B,CAAC,OAAO,CAAC,OAAT,IAAoB,QAAQ,GAAG,OAAO,CAAC,QAVxC,CAAJ,EAUwD;MACtD,OAAO,CAAC,MAAR,GAAiB,MAAjB,CAAA;MACA,OAAO,CAAC,QAAR,GAAmB,QAAnB,CAAA;MACA,OAAO,CAAC,KAAR,GAAgB,KAAhB,CAAA;MACA,OAAO,CAAC,OAAR,GAAkB,OAAlB,CAAA;MACA,OAAO,CAAC,EAAR,GAAa,EAAb,CAAA;MACA,OAAO,CAAC,EAAR,GAAa,EAAb,CAAA;MAEA,KAAK,CAAC,KAAN,GAAc,KAAd,CAAA;KACD;GACF;;EAED,IAAI,OAAO,CAAC,OAAZ,EAAqB;IACnB,MAAM,CAAC,CAAP,GAAW,OAAO,CAAC,MAAR,CAAe,CAA1B,CAAA;IACA,MAAM,CAAC,CAAP,GAAW,OAAO,CAAC,MAAR,CAAe,CAA1B,CAAA;GACD;;EAED,KAAK,CAAC,OAAN,GAAgB,OAAhB,CAAA;CACD;;AAED,SAAS,SAAT,CAAoB,GAApB,EAAoD;EAClD,IAAM,aAAa,GAAG,UAAK,CAAC,IAAN,CAAW,QAAX,CACpB,UAAK,CAAC,IAAN,CAAW,eAAX,CAA2B,GAAG,CAAC,KAAJ,CAAU,OAAV,CAAkB,MAA7C,CADoB,CAAtB,CAAA;EAGA,IAAM,MAAM,GAAG,aAAa,IAAI,UAAK,CAAC,WAAN,CAC9B,GAAG,CAAC,YAD0B,EAE9B,GAAG,CAAC,WAAJ,CAAgB,OAFc,EAG9B,GAAG,CAAC,WAAJ,CAAgB,QAAhB,CAAyB,IAHK,CAAhC,CAAA;EAMA,OAAO,MAAP,CAAA;CACD;;AAED,IAAM,IAAI,GAAG;EACX,KAAK,EAAL,UADW;EAEX,GAAG,EAAH,QAFW;EAGX,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,KAAK,EAAI,QAFD;IAGR,OAAO,EAAE,IAHD;IAIR,MAAM,EAAE,IAJA;IAKR,gBAAgB,EAAE,IALV;IAOR,cAAc,EAAE,IAAA;GAPR;CAHZ,CAAA;oBAce;;;;;;;;;;;ACzKf,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,4BAAA,CAAA,OAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;;;;;;;;;;;;;AAEA,SAAS,UAAT,CAAgB,GAAhB,EAAmB;EAAA,IACT,WADS,GACc,GADd,CACT,WADS;MACI,KADJ,GACc,GADd,CACI,KADJ,CAAA;EAAA,IAET,OAFS,GAEG,KAFH,CAET,OAFS,CAAA;EAGjB,IAAM,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,KAAnC,CAAA;;EAEA,IAAI,CAAC,KAAL,EAAY;IAAE,OAAO,IAAP,CAAA;GAAa;;EAE3B,GAAG,CAAC,KAAJ,GAAY;IACV,OAAO,EAAE;MACP,cAAc,EAAE,CAAC;QACf,CAAC,EAAE,KAAK,CAAC,IAAN,GAAa,CAAb,GAAiB,CADL;QAEf,CAAC,EAAE,KAAK,CAAC,GAAN,GAAY,CAAZ,GAAgB,CAAA;OAFL,CADT;MAKP,MAAM,EAAE;QAAE,CAAC,EAAE,CAAL;QAAQ,CAAC,EAAE,CAAA;OALZ;MAMP,MAAM,EAAE,OAAO,CAAC,MAAR,IAAkB,MANnB;MAOP,KAAK,EAAE,OAAO,CAAC,KAAA;KAPR;GADX,CAAA;EAYA,KAAK,CAAC,YAAN,GAAqB,KAAK,CAAC,YAAN,IAAsB,CACzC,CAAC,OAAD,EAAU,QAAV,CADyC,EAEzC,CAAC,GAAD,EAAM,GAAN,CAFyC,CAA3C,CAAA;;EAKA,aAAA,CAAA,SAAA,CAAA,CAAK,KAAL,CAAW,GAAX,CAAA,CAAA;;EACA,KAAK,CAAC,OAAN,GAAgB,GAAG,CAAC,KAAJ,CAAU,OAA1B,CAAA;EAEA,GAAG,CAAC,KAAJ,GAAY,KAAZ,CAAA;CACD;;AAED,SAAS,QAAT,CAAc,GAAd,EAAiB;EAAA,IACP,WADO,GACwB,GADxB,CACP,WADO;MACM,KADN,GACwB,GADxB,CACM,KADN;MACa,MADb,GACwB,GADxB,CACa,MADb,CAAA;EAAA,IAEP,OAFO,GAEc,KAFd,CAEP,OAFO;MAEE,OAFF,GAEc,KAFd,CAEE,OAFF,CAAA;EAGf,IAAM,QAAQ,GAAG;IACf,CAAC,EAAE,MAAM,CAAC,CAAP,GAAW,OAAO,CAAC,CAAD,CAAP,CAAW,CADV;IAEf,CAAC,EAAE,MAAM,CAAC,CAAP,GAAW,OAAO,CAAC,CAAD,CAAP,CAAW,CAAA;GAF3B,CAAA;EAKA,KAAK,CAAC,OAAN,GAAgB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,EAAP,EAAW,OAAX,CAAhB,CAAA;EACA,KAAK,CAAC,OAAN,CAAc,OAAd,GAAwB,EAAxB,CAAA;;EAEA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,CAA0B,OAAO,CAAC,OAAR,IAAmB,EAA7C,EAAA,MAAA,EAAA,EAAA,EAAA,EAAkD;IAAA,IAAA,IAAA,CAAA;;IAAA,IAAA,GAAA,CAAxB,OAAO,CAAC,OAAR,IAAmB,EAAK,EAAA,EAAA,CAAA,CAAA;IAAA,IAAvC,UAAuC,GAAA,IAAA,CAAA;IAChD,IAAI,MAAM,GAAA,KAAA,CAAV,CAAA;;IAEA,IAAI,OAAE,CAAC,IAAH,CAAQ,UAAR,CAAJ,EAAyB;MACvB,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAV,EAAa,QAAQ,CAAC,CAAtB,EAAyB,WAAzB,CAAnB,CAAA;KADF,MAGK;MACH,MAAM,GAAG,UAAT,CAAA;KACD;;IAED,IAAI,CAAC,MAAL,EAAa;MAAE,SAAA;KAAU;;IAEzB,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA+B,KAAK,CAAC,YAArC,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAApB,KAAK,CAAC,YAAc,CAAA,GAAA,CAAA,CAAA;;MAAA,IAAA,KAAA,GAAA,KAAA;UAAA,KAAA,GAAA,mBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;UAAvC,MAAuC,GAAA,KAAA,CAAA,CAAA,CAAA;UAA/B,MAA+B,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;MACjD,IAAI,MAAM,IAAI,MAAV,IAAoB,MAAM,IAAI,MAAlC,EAA0C;QACxC,MAAM,CAAC,CAAP,GAAW,MAAM,CAAC,MAAD,CAAjB,CAAA;QACA,MAAM,CAAC,CAAP,GAAW,MAAM,CAAC,MAAD,CAAjB,CAAA;QAEA,MAAA;OACD;KACF;;IAED,KAAK,CAAC,OAAN,CAAc,OAAd,CAAsB,IAAtB,CAA2B,MAA3B,CAAA,CAAA;GACD;;EAED,aAAA,CAAA,SAAA,CAAA,CAAK,GAAL,CAAS,GAAT,CAAA,CAAA;;EAEA,KAAK,CAAC,OAAN,GAAgB,OAAhB,CAAA;CACD;;AAED,IAAM,QAAQ,GAAG;EACf,KAAK,EAAL,UADe;EAEf,GAAG,EAAH,QAFe;EAGf,QAAQ,EAAE;IACR,OAAO,EAAE,KADD;IAER,KAAK,EAAI,QAFD;IAGR,OAAO,EAAE,IAHD;IAIR,MAAM,EAAE,IAAA;GAJA;CAHZ,CAAA;oBAWe;;;;;;;;;;;AC5Df,IAAA,WAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,KAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,UAAT,CAAgB,GAAhB,EAAmB;EACjB,IAAM,KAAK,GAAG,GAAG,CAAC,WAAJ,CAAgB,QAAhB,CAAyB,KAAvC,CAAA;;EAEA,IAAI,CAAC,KAAL,EAAY;IAAE,OAAO,IAAP,CAAA;GAAa;;EAE3B,GAAG,CAAC,KAAJ,CAAU,YAAV,GAAyB,GAAG,CAAC,KAAJ,CAAU,YAAV,IAA0B,CACjD,CAAC,KAAK,CAAC,IAAN,GAAa,MAAb,GAAsB,OAAvB,EAAgC,KAAK,CAAC,GAAN,GAAY,KAAZ,GAAoB,QAApD,CADiD,CAAnD,CAAA;EAIA,OAAO,KAAA,CAAA,SAAA,CAAA,CAAS,KAAT,CAAe,GAAf,CAAP,CAAA;CACD;;AAED,SAAS,QAAT,CAAc,GAAd,EAAiB;EACf,OAAO,KAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,GAAb,CAAP,CAAA;CACD;;AAED,IAAM,SAAS,GAAG;EAChB,KAAK,EAAL,UADgB;EAEhB,GAAG,EAAH,QAFgB;EAGhB,QAAQ,EAAE,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,CAAA,CAAA,EAAA,WAAA,CAAA,SAAA,CAAA,EAAM,KAAA,CAAA,SAAA,CAAA,CAAS,QAAf,CAAP,EAAiC;IACzC,MAAM,EAAE;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KAAX;GADA,CAAA;CAHZ,CAAA;oBAQe;;;;;;;;;;;ACxDf,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,MAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;IAEQ,oBAAiB,UAAA,CAAA,SAAA,EAAjB;AAED,IAAM,SAAI,GAAG,iBAAY,CAAC,SAAA,CAAA,SAAA,CAAD,EAAa,MAAb,CAAzB,CAAA;;AACA,IAAM,aAAQ,GAAG,iBAAY,CAAC,MAAA,CAAA,SAAA,CAAD,EAAiB,UAAjB,CAA7B,CAAA;;AACA,IAAM,cAAS,GAAG,iBAAY,CAAC,OAAA,CAAA,SAAA,CAAD,EAAkB,WAAlB,CAA9B,CAAA;;AACA,IAAM,aAAQ,GAAG,iBAAY,CAAC,aAAA,CAAA,SAAA,CAAD,EAAiB,UAAjB,CAA7B,CAAA;;AACA,IAAM,kBAAa,GAAG,iBAAY,CAAC,WAAA,CAAA,SAAA,CAAD,EAAsB,eAAtB,CAAlC,CAAA;;AACA,IAAM,iBAAY,GAAG,iBAAY,CAAC,UAAA,CAAA,SAAA,CAAD,EAAqB,cAArB,CAAjC,CAAA;;;;;;;;;;;ACfP,IAAA,gBAAA,GAAA,2BAAA,CAAA,cAAA,CAAA,CAAA;;AACA,IAAA,kBAAA,GAAA,2BAAA,CAAA,iBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;IAGqB;;;;;;EAcnB,SAAA,YAAA,CACE,IADF,EAEE,OAFF,EAGE,KAHF,EAIE,WAJF,EAKE,WALF,EAME,SANF,EAMmB;IAAA,IAAA,KAAA,CAAA;;IAAA,oBAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;;IAEjB,KAAA,GAAA,+BAAA,CAAA,IAAA,EAAA,oBAAA,CAAA,YAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAM,WAAN,CAAA,CAAA,CAAA;;IACA,kBAAA,CAAA,SAAA,CAAA,CAAa,aAAb,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAiC,KAAjC,CAAA,CAAA;;IAEA,IAAI,KAAK,KAAK,OAAd,EAAuB;MACrB,kBAAA,CAAA,SAAA,CAAA,CAAa,aAAb,CAAA,2BAAA,CAAA,KAAA,CAAA,EAAiC,OAAjC,CAAA,CAAA;KACD;;IAED,KAAA,CAAK,SAAL,GAAqB,SAArB,CAAA;IACA,KAAA,CAAK,aAAL,GAAqB,KAArB,CAAA;IACA,KAAA,CAAK,IAAL,GAAqB,IAArB,CAAA;IACA,KAAA,CAAK,SAAL,GAAqB,kBAAA,CAAA,SAAA,CAAA,CAAa,YAAb,CAA0B,OAA1B,CAArB,CAAA;IACA,KAAA,CAAK,WAAL,GAAqB,kBAAA,CAAA,SAAA,CAAA,CAAa,cAAb,CAA4B,OAA5B,CAArB,CAAA;IACA,KAAA,CAAK,MAAL,GAAqB,WAArB,CAAA;IACA,KAAA,CAAK,aAAL,GAAqB,IAArB,CAAA;;IAEA,IAAI,IAAI,KAAK,KAAb,EAAoB;MAClB,IAAM,YAAY,GAAG,WAAW,CAAC,eAAZ,CAA4B,OAA5B,CAArB,CAAA;MACA,KAAA,CAAK,EAAL,GAAU,KAAA,CAAK,SAAL,GAAiB,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,QAA9D,CAAA;MAEA,IAAM,QAAQ,GAAG,KAAA,CAAK,SAAL,GAAiB,WAAW,CAAC,OAA9C,CAAA;MAEA,KAAA,CAAA,QAAA,CAAA,GAAc,CAAC,EAAE,WAAW,CAAC,OAAZ,IACf,WAAW,CAAC,OAAZ,CAAoB,IAApB,KAA6B,WADd,IAEf,WAAW,CAAC,OAAZ,CAAoB,MAApB,KAA+B,KAAA,CAAK,MAFrB,IAGf,QAAQ,GAAG,GAHE,CAAf,CAAA;KANF,MAWK,IAAI,IAAI,KAAK,WAAb,EAA0B;MAC7B,KAAA,CAAK,EAAL,GAAW,OAA+B,CAAC,SAAhC,GAA4C,WAAW,CAAC,OAAnE,CAAA;KACD;;IA9BgB,OAAA,KAAA,CAAA;GA+BlB;;;;0CAE0C;MAAA,IAArB,OAAqB,GAAA,IAAA,CAAxB,CAAwB;UAAT,OAAS,GAAA,IAAA,CAAZ,CAAY,CAAA;MACzC,IAAA,CAAK,KAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,KAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,OAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,OAAL,IAAgB,OAAhB,CAAA;MAEA,OAAO,IAAP,CAAA;KACD;;;sCAEqC;MAAA,IAArB,OAAqB,GAAA,KAAA,CAAxB,CAAwB;UAAT,OAAS,GAAA,KAAA,CAAZ,CAAY,CAAA;MACpC,IAAA,CAAK,KAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,KAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,OAAL,IAAgB,OAAhB,CAAA;MACA,IAAA,CAAK,OAAL,IAAgB,OAAhB,CAAA;MAEA,OAAO,IAAP,CAAA;KACD;;;;;;;qCAKa;MACZ,IAAA,CAAK,aAAL,CAAmB,cAAnB,EAAA,CAAA;KACD;;;;EA5EyD,gBAAA,CAAA,SAAA;;;;;;;;;;;;ACA5D,IAAA,UAAA,GAAA,4BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,iBAAA,CAAA,CAAA;;;;;;AA4CA,IAAM,OAAO,GAAS,IAAI,UAAK,CAAC,OAAV,EAAtB,CAAA;AACA,IAAM,aAAa,GAAG,CAAE,MAAF,EAAU,IAAV,EAAgB,QAAhB,CAAtB,CAAA;AACA,IAAM,YAAY,GAAI,CAAE,MAAF,EAAU,IAAV,EAAgB,QAAhB,CAAtB,CAAA;AAEA,IAAM,aAAQ,GAAwB;EACpC,YAAY,EAAE,GADsB;EAEpC,UAAU,EAAI,IAFsB;EAGpC,SAAS,EAAK,IAHsB;EAIpC,MAAM,EAAQ;IAAE,CAAC,EAAE,CAAL;IAAQ,CAAC,EAAE,CAAA;GAAX;CAJhB,CAAA;AAOA,IAAM,aAAa,GAAG;EACpB,EAAE,EAAE,qBADgB;EAEpB,OAAO,EAAP,YAFoB;EAGpB,OAAO,EAAP,OAHoB;EAIpB,YAAY,EAAZ,aAAA,CAAA,SAAA,CAJoB;EAKpB,IAAI,EAAJ,IALoB;EAMpB,mBAAmB,EAAnB,mBANoB;EAOpB,oBAAoB,EAApB,oBAPoB;EAQpB,QAAQ,EAAR,aARoB;EASpB,KAAK,EAAE,CACL,MADK,EAEL,MAFK,EAGL,IAHK,EAIL,QAJK,EAKL,KALK,EAML,WANK,EAOL,MAPK,CAAA;CATT,CAAA;;AAoBA,SAAS,IAAT,CAAiC,GAAjC,EAQG,KARH,EAQwB;EAAA,IAEpB,WAFoB,GAKlB,GALkB,CAEpB,WAFoB;MAEP,OAFO,GAKlB,GALkB,CAEP,OAFO;MAEE,KAFF,GAKlB,GALkB,CAEE,KAFF;MAES,WAFT,GAKlB,GALkB,CAES,WAFT;MAAA,SAAA,GAKlB,GALkB,CAGpB,IAHoB;MAGpB,IAHoB,GAAA,SAAA,KAAA,KAAA,CAAA,GAGZ,GAAW,CAAC,YAAZ,CAAyB,IAHb,GAAA,SAAA;MAAA,YAAA,GAKlB,GALkB,CAIpB,OAJoB;MAIpB,OAJoB,GAAA,YAAA,KAAA,KAAA,CAAA,GAIV,mBAAmB,CAAC,GAAD,CAJT,GAAA,YAAA,CAAA;EAAA,IAAA,iBAAA,GASlB,GATkB,CAQpB,YARoB;MAQpB,YARoB,GAAA,iBAAA,KAAA,KAAA,CAAA,GAQL,IAAI,aAAA,CAAA,SAAA,CAAJ,CAAiB,IAAjB,EAAuB,OAAvB,EAAgC,KAAhC,EAAuC,WAAvC,EAAoD,WAApD,EAAiE,KAAK,CAAC,GAAN,EAAjE,CARK,GAAA,iBAAA,CAAA;EAWtB,IAAM,SAAS,GAAG;IAChB,WAAW,EAAX,WADgB;IAEhB,OAAO,EAAP,OAFgB;IAGhB,KAAK,EAAL,KAHgB;IAIhB,WAAW,EAAX,WAJgB;IAKhB,OAAO,EAAP,OALgB;IAMhB,IAAI,EAAJ,IANgB;IAOhB,YAAY,EAAZ,YAAA;GAPF,CAAA;;EAUA,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,OAAO,CAAC,MAA5B,EAAoC,CAAC,EAArC,EAAyC;IACvC,IAAM,MAAM,GAAG,OAAO,CAAC,CAAD,CAAtB,CAAA;;IAEA,KAAK,IAAM,IAAX,IAAmB,MAAM,CAAC,KAAP,IAAgB,EAAnC,EAAuC;MACpC,YAAoB,CAAC,IAAD,CAApB,GAA6B,MAAM,CAAC,KAAP,CAAa,IAAb,CAA7B,CAAA;KACF;;IAED,IAAM,MAAM,GAAG,UAAK,CAAC,WAAN,CAAkB,MAAM,CAAC,SAAzB,EAAoC,MAAM,CAAC,IAA3C,CAAf,CAAA;;IAEA,YAAY,CAAC,eAAb,CAA6B,MAA7B,CAAA,CAAA;;IACA,YAAY,CAAC,SAAb,GAAyB,MAAM,CAAC,SAAhC,CAAA;IACA,YAAY,CAAC,aAAb,GAA6B,MAAM,CAAC,IAApC,CAAA;IAEA,MAAM,CAAC,SAAP,CAAiB,IAAjB,CAAsB,YAAtB,CAAA,CAAA;;IAEA,YAAY,CAAC,UAAb,CAAwB,MAAxB,CAAA,CAAA;;IAEA,IAAI,YAAY,CAAC,2BAAb,IACC,YAAY,CAAC,kBAAb,IACI,CAAC,GAAG,CAAL,GAAU,OAAO,CAAC,MADrB,IAC+B,OAAO,CAAC,CAAC,GAAG,CAAL,CAAP,CAAe,IAAf,KAAwB,YAAY,CAAC,aAFzE,EAEyF;MACvF,MAAA;KACD;GACF;;EAED,OAAO,CAAC,IAAR,CAAa,OAAb,EAAsB,SAAtB,CAAA,CAAA;;EAEA,IAAI,IAAI,KAAK,KAAb,EAAoB;;;IAGlB,IAAM,OAAO,GAAG,YAAY,CAAA,QAAA,CAAZ,GACZ,IAAI,CAAC;MACL,WAAW,EAAX,WADK;MAEL,OAAO,EAAP,OAFK;MAGL,KAAK,EAAL,KAHK;MAIL,WAAW,EAAX,WAJK;MAKL,IAAI,EAAE,WAAA;KALF,EAMH,KANG,CADQ,GAQZ,YARJ,CAAA;IAUA,WAAW,CAAC,OAAZ,GAAsB,OAAtB,CAAA;IACA,WAAW,CAAC,OAAZ,GAAsB,OAAO,CAAC,SAA9B,CAAA;GACD;;EAED,OAAO,YAAP,CAAA;CACD;;AAED,SAAS,mBAAT,CAAA,IAAA,EAMC;EAAA,IANiD,WAMjD,GAAA,IAAA,CANiD,WAMjD;MAN8D,OAM9D,GAAA,IAAA,CAN8D,OAM9D;MANuE,KAMvE,GAAA,IAAA,CANuE,KAMvE;MAN8E,WAM9E,GAAA,IAAA,CAN8E,WAM9E;MAN2F,IAM3F,GAAA,IAAA,CAN2F,IAM3F,CAAA;EACC,IAAM,YAAY,GAAG,WAAW,CAAC,eAAZ,CAA4B,OAA5B,CAArB,CAAA;EACA,IAAM,WAAW,GAAG,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAApB,CAFD;;EAKC,IAAI,IAAI,KAAK,KAAT,KAAmB,WAAW,CAAC,eAAZ;EAEnB,EAAE,WAAW,IAAI,WAAW,CAAC,UAAZ,KAA2B,WAA5C,CAFA,CAAJ,EAE+D;IAC7D,OAAO,EAAP,CAAA;GACD;;EAED,IAAM,IAAI,GAAG,UAAK,CAAC,GAAN,CAAU,OAAV,CAAkB,WAAlB,CAAb,CAAA;EACA,IAAM,SAAS,GAAG;IAChB,WAAW,EAAX,WADgB;IAEhB,OAAO,EAAP,OAFgB;IAGhB,KAAK,EAAL,KAHgB;IAIhB,WAAW,EAAX,WAJgB;IAKhB,IAAI,EAAJ,IALgB;IAMhB,IAAI,EAAJ,IANgB;IAOhB,OAAO,EAAE,EAPO;IAQhB,IAAI,EAAE,IAAA;GARR,CAAA;;EAWA,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAmB,IAAnB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAyB;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAN,IAAM,CAAA,EAAA,CAAA,CAAA;IAAA,IAAd,IAAc,GAAA,KAAA,CAAA;IACvB,SAAS,CAAC,IAAV,GAAiB,IAAjB,CAAA;IAEA,OAAO,CAAC,IAAR,CAAa,iBAAb,EAAgC,SAAhC,CAAA,CAAA;GACD;;EAED,IAAI,IAAI,KAAK,MAAb,EAAqB;IACnB,SAAS,CAAC,OAAV,GAAoB,SAAS,CAAC,OAAV,CAAkB,MAAlB,CAAyB,UAAC,MAAD,EAAA;MAAA,OAC3C,MAAM,CAAC,SAAP,CAAiB,OAAjB,CAAyB,YAAzB,KAA0C,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,IAAnC,CAAwC,QADvC,CAAA;KAAzB,CAApB,CAAA;GAED;;EAED,OAAO,SAAS,CAAC,OAAjB,CAAA;CACD;;AAED,SAAS,YAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,YAF0B,GAGxB,KAHwB,CAE1B,YAF0B,CAAA;EAK5B,KAAK,CAAC,aAAN,GAAsB,aAAtB,CAAA;EACA,KAAK,CAAC,QAAN,CAAe,OAAf,CAAuB,aAAvB,GAAuC,aAAa,CAAC,QAArD,CAAA;EAEA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,KAAxB,EAA+B,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;IACjD,WAAW,CAAC,OAAZ,GAAyB,IAAzB,CADiD;;IAEjD,WAAW,CAAC,OAAZ,GAAyB,CAAzB,CAFiD;GAAnD,CAAA,CAAA;EAKA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,gBAAxB,EAA0C,UAAA,KAAA,EAA0B;IAAA,IAAvB,IAAuB,GAAA,KAAA,CAAvB,IAAuB;QAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAClE,IAAI,CAAC,IAAD,IAAS,WAAW,CAAC,IAAzB,EAA+B;MAC7B,OAAA;KACD;;IAED,WAAW,CAAC,IAAZ,GAAmB;MAAE,QAAQ,EAAE,QAAZ;MAAsB,OAAO,EAAE,IAAA;KAAlD,CAAA;GALF,CAAA,CAAA;EAQA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAAgE;IAAA,IAA7D,WAA6D,GAAA,KAAA,CAA7D,WAA6D;QAAhD,OAAgD,GAAA,KAAA,CAAhD,OAAgD;QAAvC,KAAuC,GAAA,KAAA,CAAvC,KAAuC;QAAhC,WAAgC,GAAA,KAAA,CAAhC,WAAgC;QAAnB,aAAmB,GAAA,KAAA,CAAnB,aAAmB,CAAA;IAC9F,IAAM,YAAY,GAAG,WAAW,CAAC,eAAZ,CAA4B,OAA5B,CAArB,CAAA;;IAEA,IAAI,CAAC,aAAD,KAAmB,CAAC,WAAW,CAAC,aAAb,IAA8B,WAAW,CAAC,eAA7D,CAAJ,EAAmF;MACjF,IAAI,WAAW,CAAC,aAAhB,EAA+B;QAC7B,YAAY,CAAC,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,IAAnC,CAAwC,OAAzC,CAAZ,CAAA;OACD;;MAED,IAAI,CAAC;QACH,WAAW,EAAX,WADG;QAEH,OAAO,EAAP,OAFG;QAGH,KAAK,EAAL,KAHG;QAIH,WAAW,EAAX,WAJG;QAKH,IAAI,EAAE,MAAA;OALJ,EAMD,KANC,CAAJ,CAAA;KAOD;GAfH,CAAA,CAAA;EAkBA,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAA+D;IAAA,IAA5D,WAA4D,GAAA,KAAA,CAA5D,WAA4D;QAA/C,OAA+C,GAAA,KAAA,CAA/C,OAA+C;QAAtC,KAAsC,GAAA,KAAA,CAAtC,KAAsC;QAA/B,WAA+B,GAAA,KAAA,CAA/B,WAA+B;QAAlB,YAAkB,GAAA,KAAA,CAAlB,YAAkB,CAAA;IAC7F,IAAM,KAAK,GAAG,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,IAAjD,CAAA;IACA,IAAM,IAAI,GAAG,UAAK,CAAC,GAAN,CAAU,OAAV,CAAkB,WAAlB,CAAb,CAAA;IACA,IAAM,SAAS,GAAG;MAChB,WAAW,EAAX,WADgB;MAEhB,OAAO,EAAP,OAFgB;MAGhB,KAAK,EAAL,KAHgB;MAIhB,WAAW,EAAX,WAJgB;MAKhB,IAAI,EAAE,MALU;MAMhB,OAAO,EAAE,EANO;MAOhB,IAAI,EAAJ,IAPgB;MAQhB,IAAI,EAAE,IAAA;KARR,CAAA;;IAWA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAmB,IAAnB,CAAA,MAAA,EAAA,GAAA,EAAA,EAAyB;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAN,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAd,IAAc,GAAA,KAAA,CAAA;MACvB,SAAS,CAAC,IAAV,GAAiB,IAAjB,CAAA;MAEA,OAAO,CAAC,IAAR,CAAa,iBAAb,EAAgC,SAAhC,CAAA,CAAA;KACD;;IAED,IAAI,CAAC,SAAS,CAAC,OAAV,CAAkB,MAAvB,EAA+B;MAAE,OAAA;KAAQ;;IAEzC,IAAI,WAAW,GAAG,QAAlB,CAAA;;IAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAqB,SAAS,CAAC,OAA/B,CAAA,MAAA,EAAA,GAAA,EAAA,EAAwC;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAnB,SAAS,CAAC,OAAS,CAAA,GAAA,CAAA,CAAA;MAAA,IAA7B,MAA6B,GAAA,KAAA,CAAA;MACtC,IAAM,YAAY,GAAG,MAAM,CAAC,SAAP,CAAiB,OAAjB,CAAyB,YAA9C,CAAA;;MAEA,IAAI,YAAY,GAAG,WAAnB,EAAgC;QAC9B,WAAW,GAAG,YAAd,CAAA;OACD;KACF;;IAED,KAAK,CAAC,QAAN,GAAiB,WAAjB,CAAA;IACA,KAAK,CAAC,OAAN,GAAgB,UAAU,CAAC,YAAK;MAC9B,IAAI,CAAC;QACH,WAAW,EAAX,WADG;QAEH,WAAW,EAAX,WAFG;QAGH,OAAO,EAAP,OAHG;QAIH,KAAK,EAAL,KAJG;QAKH,IAAI,EAAE,MAAA;OALJ,EAMD,KANC,CAAJ,CAAA;KADwB,EAQvB,WARuB,CAA1B,CAAA;GAjCF,CAAA,CAAA;EAvC4B,IAAA,IAAA,GAmFH,CAAC,IAAD,EAAO,QAAP,CAnFG,CAAA;;EAmF5B,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAA,IAAA,CAAA,MAAA,EAAA,GAAA,EAAA,EAA2C;IAAtC,IAAM,UAAU,GAAA,IAAA,CAAA,GAAA,CAAhB,CAAA;IACH,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,UAAxB,EAAoC,UAAA,MAAA,EAAkC;MAAA,IAA/B,WAA+B,GAAA,MAAA,CAA/B,WAA+B;UAAlB,YAAkB,GAAA,MAAA,CAAlB,YAAkB,CAAA;;MACpE,IAAI,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,IAAvC,EAA6C;QAC3C,YAAY,CAAC,WAAW,CAAC,QAAZ,CAAqB,YAArB,CAAA,CAAmC,IAAnC,CAAwC,OAAzC,CAAZ,CAAA;OACD;KAHH,CAAA,CAAA;GAKD;;EAED,KAAK,IAAI,CAAC,GAAG,CAAb,EAAgB,CAAC,GAAG,aAAa,CAAC,MAAlC,EAA0C,CAAC,EAA3C,EAA+C;IAC7C,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,aAAa,CAAC,CAAD,CAArC,EAA0C,oBAAoB,CAAC,YAAY,CAAC,CAAD,CAAb,EAAkB,KAAlB,CAA9D,CAAA,CAAA;GACD;;EAED,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,IAAxB,EAA8B,UAAA,KAAA,EAAiD;IAAA,IAA9C,WAA8C,GAAA,KAAA,CAA9C,WAA8C;QAAjC,OAAiC,GAAA,KAAA,CAAjC,OAAiC;QAAxB,KAAwB,GAAA,KAAA,CAAxB,KAAwB;QAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAC7E,IAAI,CAAC,WAAW,CAAC,eAAjB,EAAkC;MAChC,IAAI,CAAC;QAAE,WAAW,EAAX,WAAF;QAAe,WAAW,EAAX,WAAf;QAA4B,OAAO,EAAP,OAA5B;QAAqC,KAAK,EAAL,KAArC;QAA4C,IAAI,EAAE,KAAA;OAAnD,EAA4D,KAA5D,CAAJ,CAAA;KACD;GAHH,CAAA,CAAA;CAKD;;AAED,SAAS,oBAAT,CAA+B,IAA/B,EAA6C,KAA7C,EAAkD;EAChD,OAAO,UAAA,MAAA,EAA2D;IAAA,IAA/C,WAA+C,GAAA,MAAA,CAA/C,WAA+C;QAAlC,OAAkC,GAAA,MAAA,CAAlC,OAAkC;QAAzB,KAAyB,GAAA,MAAA,CAAzB,KAAyB;QAAlB,WAAkB,GAAA,MAAA,CAAlB,WAAkB,CAAA;IAChE,IAAI,CAAC;MAAE,WAAW,EAAX,WAAF;MAAe,WAAW,EAAX,WAAf;MAA4B,OAAO,EAAP,OAA5B;MAAqC,KAAK,EAAL,KAArC;MAA4C,IAAI,EAAJ,IAAA;KAA7C,EAAqD,KAArD,CAAJ,CAAA;GADF,CAAA;CAGD;;oBAEc;;;;;;;;;;;AClTf,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;AAcA,SAAS,YAAT,CAAkB,KAAlB,EAAuC;EAAA,IAEnC,aAFmC,GAIjC,KAJiC,CAEnC,aAFmC;MAGnC,YAHmC,GAIjC,KAJiC,CAGnC,YAHmC,CAAA;EAMrC,KAAK,CAAC,SAAN,CAAgB,UAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EAEA,aAAa,CAAC,OAAd,CAAsB,EAAtB,CAAyB,KAAzB,EAAgC,KAAhC,CAAA,CAAA;EACA,aAAa,CAAC,OAAd,CAAsB,EAAtB,CAAyB,OAAzB,EAAkC,UAAC,GAAD,EAAA;IAAA,OAAS,OAAO,CAAC,GAAD,EAAa,KAAb,CAAhB,CAAA;GAAlC,CAAA,CAAA;EATqC,IAAA,IAAA,GAWhB,CAAC,MAAD,EAAS,IAAT,EAAe,QAAf,EAAyB,QAAzB,CAXgB,CAAA;;EAWrC,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,EAAyD;IAApD,IAAM,MAAM,GAAA,IAAA,CAAA,EAAA,CAAZ,CAAA;IACH,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,aAAhC,CAAA,CAAA;GAZmC;;;EAgBrC,aAAa,CAAC,QAAd,CAAuB,kBAAvB,GAA4C,CAA5C,CAAA;EACA,aAAa,CAAC,KAAd,CAAoB,IAApB,CAAyB,YAAzB,CAAA,CAAA;CACD;;AAED,SAAS,KAAT,CAAA,IAAA,EAAgC;EAAA,IAAd,YAAc,GAAA,IAAA,CAAd,YAAc,CAAA;;EAC9B,IAAI,YAAY,CAAC,IAAb,KAAsB,MAA1B,EAAkC;IAAE,OAAA;GAAQ;;EAE5C,YAAY,CAAC,KAAb,GAAqB,CAAC,YAAY,CAAC,KAAb,IAAsB,CAAvB,IAA4B,CAAjD,CAAA;CACD;;AAED,SAAS,OAAT,CAAA,KAAA,EAEE,KAFF,EAEuB;EAAA,IADnB,WACmB,GAAA,KAAA,CADnB,WACmB;MADN,YACM,GAAA,KAAA,CADN,YACM;MADQ,WACR,GAAA,KAAA,CADQ,WACR;MADqB,OACrB,GAAA,KAAA,CADqB,OACrB,CAAA;;EAErB,IAAI,YAAY,CAAC,IAAb,KAAsB,MAAtB,IAAgC,CAAC,OAAO,CAAC,MAA7C,EAAqD;IAAE,OAAA;GAFlC;;;EAKrB,IAAM,QAAQ,GAAG,OAAO,CAAC,CAAD,CAAP,CAAW,SAAX,CAAqB,OAArB,CAA6B,kBAA9C,CALqB;;EAQrB,IAAI,QAAQ,IAAI,CAAhB,EAAmB;IAAE,OAAA;GARA;;;EAWrB,WAAW,CAAC,kBAAZ,GAAiC,UAAU,CAAC,YAAK;IAC/C,KAAK,CAAC,aAAN,CAAoB,IAApB,CAAyB;MACvB,WAAW,EAAX,WADuB;MAEvB,WAAW,EAAX,WAFuB;MAGvB,IAAI,EAAE,MAHiB;MAIvB,OAAO,EAAE,YAJc;MAKvB,KAAK,EAAE,YAAA;KALT,EAMG,KANH,CAAA,CAAA;GADyC,EAQxC,QARwC,CAA3C,CAAA;CASD;;AAED,SAAS,aAAT,CAAA,KAAA,EAAuC;EAAA,IAAb,WAAa,GAAA,KAAA,CAAb,WAAa,CAAA;;;;EAGrC,IAAI,WAAW,CAAC,kBAAhB,EAAoC;IAClC,aAAa,CAAC,WAAW,CAAC,kBAAb,CAAb,CAAA;IACA,WAAW,CAAC,kBAAZ,GAAiC,IAAjC,CAAA;GACD;CACF;;oBAEc;EACb,EAAE,EAAE,2BADS;EAEb,OAAO,EAAP,YAAA;;;;;;;;;;;;AC1EF,gEAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;AAYA,SAAS,YAAT,CAAkB,KAAlB,EAA8B;EAAA,IAE1B,aAF0B,GAMxB,KANwB,CAE1B,aAF0B;MAG1B,OAH0B,GAMxB,KANwB,CAG1B,OAH0B;MAI1B,YAJ0B,GAMxB,KANwB,CAI1B,YAJ0B;MAK1B,aAL0B,GAMxB,KANwB,CAK1B,aAL0B,CAAA;EAQ5B,aAAa,CAAC,OAAd,CAAsB,EAAtB,CAAyB,iBAAzB,EAA4C,UAAA,IAAA,EAUvC;IAAA,IATH,OASG,GAAA,IAAA,CATH,OASG;QARH,IAQG,GAAA,IAAA,CARH,IAQG;QAPH,IAOG,GAAA,IAAA,CAPH,IAOG;QANH,WAMG,GAAA,IAAA,CANH,WAMG,CAAA;IACH,KAAK,CAAC,aAAN,CAAoB,YAApB,CAAiC,IAAjC,EAAuC,UAAC,YAAD,EAA+B;MACpE,IAAM,SAAS,GAAG,YAAY,CAAC,MAA/B,CAAA;MACA,IAAM,OAAO,GAAG,SAAS,CAAC,OAA1B,CAAA;;MAEA,IACE,SAAS,CAAC,KAAV,CAAgB,IAAhB,CAAA,IACA,SAAS,CAAC,KAAV,CAAgB,IAAhB,CAAA,CAAsB,MADtB,IAEA,YAAY,CAAC,eAAb,CAA6B,OAA7B,EAAsC,IAAtC,EAA4C,WAA5C,CAHF,EAG4D;QAC1D,OAAO,CAAC,IAAR,CAAa;UACX,IAAI,EAAJ,IADW;UAEX,SAAS,EAAT,SAFW;UAGX,KAAK,EAAE;YAAE,YAAY,EAAZ,YAAA;WAAF;SAHT,CAAA,CAAA;OAKD;KAbH,CAAA,CAAA;GAXF,CAAA,CAAA;EA4BA,aAAa,CAAC,OAAd,CAAsB,EAAtB,CAAyB,KAAzB,EAAgC,UAAA,KAAA,EAAqB;IAAA,IAAlB,YAAkB,GAAA,KAAA,CAAlB,YAAkB,CAAA;;IACnD,YAAY,CAAC,MAAb,CAAoB,OAApB,GAA8B,UAAU,OAAV,EAA0B;MACtD,OAAO,YAAY,CAAC,OAAb,CAAqB,OAArB,CAAP,CAAA;KADF,CAAA;GADF,CAAA,CAAA;EAMA,aAAa,CAAC,OAAd,CAAsB,EAAtB,CAAyB,KAAzB,EAAgC,UAAA,KAAA,EAA8B;IAAA,IAA3B,YAA2B,GAAA,KAAA,CAA3B,YAA2B;QAAb,OAAa,GAAA,KAAA,CAAb,OAAa,CAAA;IAC5D,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,YAAY,CAAC,MAAb,CAAoB,OAA3B,EAAoC,aAAa,CAAC,QAAlD,CAAA,CAAA;IACA,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,YAAY,CAAC,MAAb,CAAoB,OAA3B,EAAoC,OAAO,CAAC,aAAR,IAAyB,EAA7D,CAAA,CAAA;GAFF,CAAA,CAAA;EAKA,CAAA,CAAA,EAAA,QAAA,CAAA,KAAA,EAAM,OAAO,CAAC,UAAd,EAA0B,aAAa,CAAC,KAAxC,CAAA,CAAA;EAEA,YAAY,CAAC,SAAb,CAAuB,aAAvB,GAAuC,mBAAvC,CAAA;EAEA,IAAM,kBAAkB,GAAG,YAAY,CAAC,SAAb,CAAuB,iBAAlD,CAAA;;EAEA,YAAY,CAAC,SAAb,CAAuB,iBAAvB,GAA2C,UAAU,UAAV,EAAsB,QAAtB,EAA8B;IACvE,IAAM,GAAG,GAAG,kBAAkB,CAAC,IAAnB,CAAwB,IAAxB,EAA8B,UAA9B,EAA0C,QAA1C,CAAZ,CAAA;;IAEA,IAAI,GAAG,KAAK,IAAZ,EAAkB;MAChB,IAAA,CAAK,MAAL,CAAY,OAAZ,CAAoB,UAApB,CAAA,GAAkC,QAAlC,CAAA;KACD;;IAED,OAAO,GAAP,CAAA;GAPF,CAAA;CASD;;AAED,SAAS,mBAAT,CAAkD,OAAlD,EAA8D;EAC5D,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,IAAA,CAAK,MAAL,CAAY,OAAnB,EAA4B,OAA5B,CAAA,CAAA;EAEA,OAAO,IAAP,CAAA;CACD;;oBAEc;EACb,EAAE,EAAE,oCADS;EAEb,OAAO,EAAP,YAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtFF,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,eAAA,CAAA,CAAA;;AACA,IAAA,oBAAA,GAAA,2BAAA,CAAA,wBAAA,CAAA,CAAA;;;;AAEA,SAAS,YAAT,CAAkB,KAAlB,EAAuB;EACrB,KAAK,CAAC,SAAN,CAAgB,UAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EACA,KAAK,CAAC,SAAN,CAAgB,WAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;EACA,KAAK,CAAC,SAAN,CAAgB,oBAAA,CAAA,SAAA,CAAhB,CAAA,CAAA;CACD;;AAED,IAAM,OAAE,GAAG,gBAAX,CAAA;;;;;;;;;;;;ACTA,mFAAA;;AAGA,8DAAA;;AAsBC,kBAAA,CAAA,UAAA,CAAmB,MAAnB,GAA4B,QAA5B,CAAA;;AAEK,SAAU,YAAV,CAAmB,KAAnB,EAA+B;EAAA,IAEjC,OAFiC,GAO/B,KAP+B,CAEjC,OAFiC;MAGjC,YAHiC,GAO/B,KAP+B,CAGjC,YAHiC;MAMjC,YANiC,GAO/B,KAP+B,CAMjC,YANiC,CAAA;;EAUnC,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAyB,OAAO,CAAC,KAAjC,CAAA,MAAA,EAAA,EAAA,EAAA,EAAwC;IAAA,IAAA,IAAA,CAAA;;IAAA,IAAA,GAAf,OAAO,CAAC,KAAO,CAAA,EAAA,CAAA,CAAA;IAAA,IAA7B,UAA6B,GAAA,IAAA,CAAA;IACtC,OAAO,CAAC,UAAR,CAAmB,IAAnB,CAAA,EAAA,CAAA,MAAA,CAA2B,UAA3B,EAAA,QAAA,CAAA,CAAA,CAAA;GAXiC;;;EAenC,YAAY,CAAC,OAAb,CAAqB,EAArB,CAAwB,MAAxB,EAAgC,UAAA,KAAA,EAAoB;IAAA,IAAjB,WAAiB,GAAA,KAAA,CAAjB,WAAiB,CAAA;;IAClD,IAAI,WAAW,CAAC,WAAZ,KAA4B,kBAAA,CAAA,UAAA,CAAW,MAA3C,EAAmD;MACjD,IAAI,WAAW,CAAC,cAAhB,EAAgC;QAC9B,WAAW,CAAC,cAAZ,EAAA,CAAA;OACD;;MAED,UAAA,CAAA,GAAA,CAAI,MAAJ,CAAW,KAAK,CAAC,YAAN,CAAmB,IAA9B,EAAoC,WAApC,CAAA,CAAA;KACD;GAPH,CAAA,CAAA;;;;;;;;;;;;;;;;;;EA0BA,YAAY,CAAC,SAAb,CAAuB,MAAvB,GAAgC,UAAU,MAAV,EAAgB;IAC9C,OAAO,MAAM,CAAC,IAAD,EAAO,MAAP,EAAe,KAAf,CAAb,CAAA;GADF,CAAA;CAGD;;AAED,SAAS,MAAT,CAAiB,YAAjB,EAA6C,MAA7C,EAAkE,KAAlE,EAA8E;EAC5E,IAAM,QAAQ,GAAG,UAAA,CAAA,EAAA,CAAG,MAAH,CAAU,YAAY,CAAC,MAAvB,CAAA,GACb,UAAA,CAAA,GAAA,CAAI,IAAJ,CAAS,YAAY,CAAC,QAAb,CAAsB,gBAAtB,CAAuC,YAAY,CAAC,MAApD,CAAT,CADa,GAEb,CAAC,YAAY,CAAC,MAAd,CAFJ,CAD4E;;EAM5E,IAAM,OAAO,GAAI,UAAA,CAAA,GAAA,CAAI,MAAJ,CAAmB,OAApC,CAAA;EACA,IAAM,QAAQ,GAAgC,OAAO,GAAG,EAAH,GAAQ,IAA7D,CAAA;;EAP4E,IAAA,KAAA,GAAA,SAAA,KAAA,GAAA;IAAA,KAAA,GAStD,QATsD,CAAA,GAAA,CAAA,CAAA;IAAA,IASjE,OATiE,GAAA,KAAA,CAAA;IAU1E,IAAM,IAAI,GAAG,YAAY,CAAC,OAAb,CAAqB,OAArB,CAAb,CAAA;;IAEA,IAAI,CAAC,IAAL,EAAW;MAAE,OAAA,OAAA,CAAA;KAAO;;IAEpB,IAAM,kBAAkB,GAAG,UAAA,CAAA,GAAA,CAAI,IAAJ,CACzB,KAAK,CAAC,YAAN,CAAmB,IADM,EAEzB,UAAC,WAAD,EAA6B;MAC3B,OAAO,WAAW,CAAC,WAAZ,EAAA,IACL,WAAW,CAAC,YAAZ,KAA6B,YADxB,IAEL,WAAW,CAAC,OAAZ,KAAwB,OAFnB,IAGL,WAAW,CAAC,QAAZ,CAAqB,IAArB,KAA8B,MAAM,CAAC,IAHvC,CAAA;KAHuB,CAA3B,CAAA;;IAQA,IAAI,aAA4B,GAAA,KAAA,CAAhC,CAAA;;IAEA,IAAI,kBAAJ,EAAwB;MACtB,kBAAkB,CAAC,IAAnB,EAAA,CAAA;;MAEA,IAAI,QAAJ,EAAc;QACZ,aAAa,GAAG,kBAAkB,CAAC,cAAnB,IAAqC,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAiB;UAChF,kBAAkB,CAAC,cAAnB,GAAoC,OAApC,CAAA;SADmD,CAArD,CAAA;OAGD;KAPH,MASK;MACH,IAAM,IAAI,GAAG,UAAA,CAAA,IAAA,CAAU,UAAV,CAAqB,IAArB,CAAb,CAAA;;MACA,IAAM,MAAM,GAAG;QACb,IAAI,EAAO;UAAE,CAAC,EAAE,IAAI,CAAC,CAAV;UAAa,CAAC,EAAE,IAAI,CAAC,CAAA;SADnB;QAEb,MAAM,EAAK;UAAE,CAAC,EAAE,IAAI,CAAC,CAAV;UAAa,CAAC,EAAE,IAAI,CAAC,CAAA;SAFnB;QAGb,SAAS,EAAE,KAAK,CAAC,GAAN,EAAA;OAHb,CAAA;;MAMA,IAAM,KAAK,GAAG,UAAA,CAAA,OAAA,CAAa,aAAb,CAA2B,MAA3B,CAAd,CAAA;;MACA,aAAa,GAAG,WAAW,CAAC,KAAD,EAAQ,YAAR,EAAsB,OAAtB,EAA+B,MAA/B,EAAuC,KAAvC,CAA3B,CAAA;KACD;;IAED,IAAI,QAAJ,EAAc;MACZ,QAAQ,CAAC,IAAT,CAAc,aAAd,CAAA,CAAA;KACD;GA/CyE,CAAA;;EAS5E,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAsB,QAAtB,CAAA,MAAA,EAAA,GAAA,EAAA,EAAgC;IAAA,IAAA,KAAA,CAAA;;IAAA,IAAA,IAAA,GAAA,KAAA,EAAA,CAAA;;IAAA,IAAA,IAAA,KAAA,OAAA,EAGjB,MAAA;GAoCd;;EAED,OAAO,QAAQ,IAAI,OAAO,CAAC,GAAR,CAAY,QAAZ,CAAA,CAAsB,IAAtB,CAA2B,YAAA;IAAA,OAAM,YAAN,CAAA;GAA3B,CAAnB,CAAA;CACD;;AAED,SAAS,WAAT,CAAsB,KAAtB,EAAoC,YAApC,EAAgE,OAAhE,EAAkF,MAAlF,EAAuG,KAAvG,EAAiH;EAC/G,IAAM,WAAW,GAAG,KAAK,CAAC,YAAN,CAAA,KAAA,CAAA,CAAuB;IAAE,WAAW,EAAE,QAAA;GAAtC,CAApB,CAAA;EACA,IAAM,SAAS,GAAG;IAChB,WAAW,EAAX,WADgB;IAEhB,KAAK,EAAL,KAFgB;IAGhB,OAAO,EAAE,KAHO;IAIhB,WAAW,EAAE,OAJG;IAKhB,KAAK,EAAE,kBAAA,CAAA,UAAA,CAAW,MAAA;GALpB,CAAA;EAQA,WAAW,CAAC,YAAZ,GAA2B,YAA3B,CAAA;EACA,WAAW,CAAC,OAAZ,GAAsB,OAAtB,CAAA;EACA,WAAW,CAAC,QAAZ,GAAuB,CAAA,CAAA,EAAA,UAAA,CAAA,MAAA,EAAO,EAAP,EAAW,MAAX,CAAvB,CAAA;EACA,WAAW,CAAC,SAAZ,GAAwB,KAAxB,CAAA;EACA,WAAW,CAAC,aAAZ,CAA0B,KAA1B,EAAiC,KAAjC,EAAwC,OAAxC,EAAiD,IAAjD,CAAA,CAAA;;EAEA,WAAW,CAAC,QAAZ,CAAqB,SAArB,CAAA,CAAA;;EAEA,IAAM,aAAa,GAAI,UAAA,CAAA,GAAA,CAAI,MAAJ,CAA8B,OAA9B,GACnB,IAAK,UAAA,CAAA,GAAA,CAAI,MAAJ,CAA8B,OAAnC,CAA2C,UAAC,OAAD,EAAiB;IAC5D,WAAW,CAAC,cAAZ,GAA6B,OAA7B,CAAA;GADA,CADmB,GAInB,IAJJ,CAAA;EAMA,WAAW,CAAC,cAAZ,GAA6B,aAA7B,CAAA;EACA,WAAW,CAAC,KAAZ,CAAkB,MAAlB,EAA0B,YAA1B,EAAwC,OAAxC,CAAA,CAAA;;EAEA,IAAI,WAAW,CAAC,YAAhB,EAA8B;IAC5B,WAAW,CAAC,IAAZ,CAAiB,SAAjB,CAAA,CAAA;IACA,WAAW,CAAC,GAAZ,CAAgB,KAAhB,CAAA,CAAA;GAFF,MAIK;IACH,WAAW,CAAC,IAAZ,EAAA,CAAA;GACD;;EAED,WAAW,CAAC,aAAZ,CAA0B,KAA1B,EAAiC,KAAjC,CAAA,CAAA;EACA,WAAW,CAAC,aAAZ,GAA4B,KAA5B,CAAA;EAEA,OAAO,aAAP,CAAA;CACD;;oBAEc;EACb,EAAE,EAAE,QADS;EAEb,OAAO,EAAP,YAAA;;;;;;;;;;;;ACtKF,IAAA,WAAA,GAAA,cAAA,CAAA;;AACA,IAAA,UAAA,GAAA,4BAAA,CAAA,UAAA,CAAA,CAAA;;AACA,IAAA,aAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;;;;;;AAgCA,IAAM,YAAY,GAAQ,EAA1B,CAAA;AACA,IAAM,KAAK,GAAG,IAAI,WAAA,CAAA,KAAJ,EAAd,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BO,IAAM,QAAQ,GAAmB,SAAS,QAAT,CAAmB,MAAnB,EAA4C,OAA5C,EAAyD;EAC/F,IAAI,YAAY,GAAG,KAAK,CAAC,aAAN,CAAoB,GAApB,CAAwB,MAAxB,EAAgC,OAAhC,CAAnB,CAAA;;EAEA,IAAI,CAAC,YAAL,EAAmB;IACjB,YAAY,GAAG,KAAK,CAAC,aAAN,CAAA,KAAA,CAAA,CAAwB,MAAxB,EAAgC,OAAhC,CAAf,CAAA;IACA,YAAY,CAAC,MAAb,CAAoB,MAApB,GAA6B,YAA7B,CAAA;GACD;;EAED,OAAO,YAAP,CAAA;CARK,CAAA;;;;;;;;;;;;;AAoBP,QAAQ,CAAC,GAAT,GAAe,GAAf,CAAA;;AACA,SAAS,GAAT,CAAc,MAAd,EAAuC,OAAvC,EAAuE;EACrE,KAAK,CAAC,SAAN,CAAgB,MAAhB,EAAwB,OAAxB,CAAA,CAAA;EAEA,OAAO,QAAP,CAAA;CACD;;;;;;;;;;;;;AAYD,QAAQ,CAAC,KAAT,GAAiB,KAAjB,CAAA;;AACA,SAAS,KAAT,CAAgB,MAAhB,EAAiC,OAAjC,EAA8C;EAC5C,OAAO,CAAC,CAAC,KAAK,CAAC,aAAN,CAAoB,GAApB,CAAwB,MAAxB,EAAgC,OAAO,IAAI,OAAO,CAAC,OAAnD,CAAT,CAAA;CACD;;;;;;;;;;;;;;AAaD,QAAQ,CAAC,EAAT,GAAc,EAAd,CAAA;;AACA,SAAS,EAAT,CAAa,IAAb,EAAiD,QAAjD,EAAkF,OAAlF,EAA0F;EACxF,IAAI,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,IAAhB,CAAA,IAAyB,IAAI,CAAC,MAAL,CAAY,GAAZ,CAAA,KAAqB,CAAC,CAAnD,EAAsD;IACpD,IAAI,GAAG,IAAI,CAAC,IAAL,EAAA,CAAY,KAAZ,CAAkB,IAAlB,CAAP,CAAA;GACD;;EAED,IAAI,UAAK,CAAC,EAAN,CAAS,KAAT,CAAe,IAAf,CAAJ,EAA0B;IACxB,KAAA,IAAA,EAAA,GAAA,CAAA,EAAA,EAAA,GAAyB,IAAzB,CAAA,MAAA,EAAA,EAAA,EAAA,EAAyC;MAAA,IAAA,IAAA,CAAA;;MAAA,IAAA,GAAhB,IAAgB,CAAA,EAAA,CAAA,CAAA;MAAA,IAA9B,SAA8B,GAAA,IAAA,CAAA;MACvC,QAAQ,CAAC,EAAT,CAAY,SAAZ,EAAuB,QAAvB,EAAiC,OAAjC,CAAA,CAAA;KACD;;IAED,OAAO,QAAP,CAAA;GACD;;EAED,IAAI,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,IAAhB,CAAJ,EAA2B;IACzB,KAAK,IAAM,IAAX,IAAmB,IAAnB,EAAyB;MACvB,QAAQ,CAAC,EAAT,CAAY,IAAZ,EAAmB,IAA4B,CAAC,IAAD,CAA/C,EAAuD,QAAvD,CAAA,CAAA;KACD;;IAED,OAAO,QAAP,CAAA;GAlBsF;;;EAsBxF,IAAI,UAAK,CAAC,GAAN,CAAU,QAAV,CAAmB,KAAK,CAAC,OAAN,CAAc,UAAjC,EAA6C,IAA7C,CAAJ,EAAwD;;IAEtD,IAAI,CAAC,YAAY,CAAC,IAAD,CAAjB,EAAyB;MACvB,YAAY,CAAC,IAAD,CAAZ,GAAqB,CAAC,QAAD,CAArB,CAAA;KADF,MAGK;MACH,YAAY,CAAC,IAAD,CAAZ,CAAmB,IAAnB,CAAwB,QAAxB,CAAA,CAAA;KACD;GAPH;OAUK;MACH,YAAA,CAAA,SAAA,CAAA,CAAO,GAAP,CAAW,KAAK,CAAC,QAAjB,EAA2B,IAA3B,EAAiC,QAAjC,EAAgE;QAAE,OAAO,EAAP,OAAA;OAAlE,CAAA,CAAA;KACD;;EAED,OAAO,QAAP,CAAA;CACD;;;;;;;;;;;;;;;AAcD,QAAQ,CAAC,GAAT,GAAe,GAAf,CAAA;;AACA,SAAS,GAAT,CAAc,IAAd,EAAoB,QAApB,EAA8B,OAA9B,EAAqC;EACnC,IAAI,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,IAAhB,CAAA,IAAyB,IAAI,CAAC,MAAL,CAAY,GAAZ,CAAA,KAAqB,CAAC,CAAnD,EAAsD;IACpD,IAAI,GAAG,IAAI,CAAC,IAAL,EAAA,CAAY,KAAZ,CAAkB,IAAlB,CAAP,CAAA;GACD;;EAED,IAAI,UAAK,CAAC,EAAN,CAAS,KAAT,CAAe,IAAf,CAAJ,EAA0B;IACxB,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAAwB,IAAxB,CAAA,MAAA,EAAA,GAAA,EAAA,EAA8B;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAN,IAAM,CAAA,GAAA,CAAA,CAAA;MAAA,IAAnB,SAAmB,GAAA,KAAA,CAAA;MAC5B,QAAQ,CAAC,GAAT,CAAa,SAAb,EAAwB,QAAxB,EAAkC,OAAlC,CAAA,CAAA;KACD;;IAED,OAAO,QAAP,CAAA;GACD;;EAED,IAAI,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,IAAhB,CAAJ,EAA2B;IACzB,KAAK,IAAM,IAAX,IAAmB,IAAnB,EAAyB;MACvB,QAAQ,CAAC,GAAT,CAAa,IAAb,EAAmB,IAAI,CAAC,IAAD,CAAvB,EAA+B,QAA/B,CAAA,CAAA;KACD;;IAED,OAAO,QAAP,CAAA;GACD;;EAED,IAAI,CAAC,UAAK,CAAC,GAAN,CAAU,QAAV,CAAmB,KAAK,CAAC,OAAN,CAAc,UAAjC,EAA6C,IAA7C,CAAL,EAAyD;IACvD,YAAA,CAAA,SAAA,CAAA,CAAO,MAAP,CAAc,KAAK,CAAC,QAApB,EAA8B,IAA9B,EAAoC,QAApC,EAA8C,OAA9C,CAAA,CAAA;GADF,MAGK;IACH,IAAI,KAAJ,CAAA;;IAEA,IAAI,IAAI,IAAI,YAAR,IACA,CAAC,KAAK,GAAG,YAAY,CAAC,IAAD,CAAZ,CAAmB,OAAnB,CAA2B,QAA3B,CAAT,MAAmD,CAAC,CADxD,EAC2D;MACzD,YAAY,CAAC,IAAD,CAAZ,CAAmB,MAAnB,CAA0B,KAA1B,EAAiC,CAAjC,CAAA,CAAA;KACD;GACF;;EAED,OAAO,QAAP,CAAA;CACD;;;;;;;;;;AASD,QAAQ,CAAC,KAAT,GAAiB,KAAjB,CAAA;;AACA,SAAS,KAAT,GAAc;EACZ,OAAO,KAAP,CAAA;;;;AAIF,QAAQ,CAAC,iBAAT,GAA8B,UAAK,CAAC,OAAN,CAAc,cAA5C,CAAA;AACA,QAAQ,CAAC,YAAT,GAA8B,UAAK,CAAC,OAAN,CAAc,SAA5C,CAAA;AACA,QAAQ,CAAC,gBAAT,GAA8B,UAAK,CAAC,OAAN,CAAc,aAA5C,CAAA;AACA,QAAQ,CAAC,aAAT,GAA8B,UAAK,CAAC,OAAN,CAAc,UAA5C,CAAA;AAEA,QAAQ,CAAC,cAAT,GAAgC,UAAK,CAAC,GAAN,CAAU,cAA1C,CAAA;AACA,QAAQ,CAAC,oBAAT,GAAgC,UAAK,CAAC,GAAN,CAAU,oBAA1C,CAAA;AACA,QAAQ,CAAC,eAAT,GAAgC,UAAK,CAAC,GAAN,CAAU,eAA1C,CAAA;AACA,QAAQ,CAAC,OAAT,GAAgC,UAAK,CAAC,GAAN,CAAU,OAA1C,CAAA;;;;;;;AAOA,QAAQ,CAAC,aAAT,GAAyB,aAAzB,CAAA;;AACA,SAAS,aAAT,GAAsB;EACpB,OAAO,aAAA,CAAA,SAAA,CAAA,CAAQ,aAAf,CAAA;CACD;;;;;;;;AAOD,QAAQ,CAAC,oBAAT,GAAgC,oBAAhC,CAAA;;AACA,SAAS,oBAAT,GAA6B;EAC3B,OAAO,aAAA,CAAA,SAAA,CAAA,CAAQ,oBAAf,CAAA;CACD;;;;;;;;;;AASD,QAAQ,CAAC,IAAT,GAAgB,SAAhB,CAAA;;AACA,SAAS,SAAT,GAAa;EACX,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;IAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;IACjD,WAAW,CAAC,IAAZ,EAAA,CAAA;GACD;;EAED,OAAO,QAAP,CAAA;CACD;;;;;;;;;;;;AAWD,QAAQ,CAAC,oBAAT,GAAgC,oBAAhC,CAAA;;AACA,SAAS,oBAAT,CAA+B,QAA/B,EAAuC;EACrC,IAAI,UAAK,CAAC,EAAN,CAAS,MAAT,CAAgB,QAAhB,CAAJ,EAA+B;IAC7B,KAAK,CAAC,YAAN,CAAmB,oBAAnB,GAA0C,QAA1C,CAAA;IAEA,OAAO,QAAP,CAAA;GACD;;EAED,OAAO,KAAK,CAAC,YAAN,CAAmB,oBAA1B,CAAA;CACD;;AAED,KAAK,CAAC,aAAN,CAAoB,OAApB,CAA4B,EAA5B,CAA+B,OAA/B,EAAwC,UAAA,KAAA,EAAqB;EAAA,IAAlB,YAAkB,GAAA,KAAA,CAAlB,YAAkB,CAAA;EAC3D,KAAK,CAAC,aAAN,CAAoB,IAApB,CAAyB,MAAzB,CAAgC,KAAK,CAAC,aAAN,CAAoB,IAApB,CAAyB,OAAzB,CAAiC,YAAjC,CAAhC,EAAgF,CAAhF,CAAA,CAD2D;;EAI3D,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA0B,KAAK,CAAC,YAAN,CAAmB,IAA7C,CAAA,MAAA,EAAA,GAAA,EAAA,EAAmD;IAAA,IAAA,KAAA,CAAA;;IAAA,KAAA,GAAzB,KAAK,CAAC,YAAN,CAAmB,IAAM,CAAA,GAAA,CAAA,CAAA;IAAA,IAAxC,WAAwC,GAAA,KAAA,CAAA;;IACjD,IAAI,WAAW,CAAC,YAAZ,KAA6B,YAA7B,IAA6C,WAAW,CAAC,WAAZ,EAA7C,IAA0E,CAAC,WAAW,CAAC,OAA3F,EAAoG;MAClG,WAAW,CAAC,IAAZ,EAAA,CAAA;KACD;GACF;CARH,CAAA,CAAA;;AAWA,QAAQ,CAAC,WAAT,GAAuB,UAAC,GAAD,EAAM,OAAN,EAAA;EAAA,OAAkB,KAAK,CAAC,WAAN,CAAkB,GAAlB,EAAuB,OAAvB,CAAlB,CAAA;CAAvB,CAAA;;AACA,QAAQ,CAAC,cAAT,GAA0B,UAAC,GAAD,EAAA;EAAA,OAAS,KAAK,CAAC,cAAN,CAAqB,GAArB,CAAT,CAAA;CAA1B,CAAA;;AAEA,KAAK,CAAC,QAAN,GAAiB,QAAjB,CAAA;oBAGe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjTf,IAAA,OAAA,GAAA,4BAAA,CAAA,WAAA,CAAA,CAAA;;;;AACA,IAAA,WAAA,GAAA,2BAAA,CAAA,cAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,4BAAA,CAAA,cAAA,CAAA,CAAA;;AACA,IAAA,2BAAA,GAAA,2BAAA,CAAA,+BAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,2BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,2BAAA,CAAA,YAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,4BAAA,CAAA,cAAA,CAAA,CAAA;;AACA,IAAA,UAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;AACA,IAAA,kBAAA,GAAA,4BAAA,CAAA,kBAAA,CAAA,CAAA;;;;AACA,IAAA,OAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,SAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;;;;;AAEM,SAAU,SAAV,CAAgB,MAAhB,EAA8B;EAClC,SAAA,CAAA,KAAA,CAAM,IAAN,CAAW,MAAX,CAAA,CAAA;;EAEA,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,2BAAA,CAAA,SAAA,CAAb,CAAA,CAHkC;;;EAMlC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,QAAA,CAAA,SAAA,CAAb,CAAA,CANkC;;;EASlC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,kBAAb,CAAA,CATkC;;;EAYlC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,SAAb,CAAA,CAZkC;;;EAelC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,OAAb,CAAA,CAfkC;;;EAkBlC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,UAAA,CAAA,SAAA,CAAb,CAAA,CAlBkC;;;EAqBlC,KAAK,IAAM,IAAX,IAAmB,SAAnB,EAA8B;IAAA,IAAA,eAAA,GACI,SAAS,CAAC,IAAD,CADb;QACpB,SADoB,GAAA,eAAA,CACpB,SADoB;QACT,QADS,GAAA,eAAA,CACT,QADS,CAAA;IAG5B,SAAS,CAAC,QAAV,GAAqB,QAArB,CAAA;IACA,SAAA,CAAA,KAAA,CAAM,QAAN,CAAe,SAAf,CAAyB,IAAzB,CAAA,GAAiC,SAAjC,CAAA;GAzBgC;;;EA6BlC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,WAAA,CAAA,SAAA,CAAb,CAAA,CA7BkC;;;EAgClC,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,OAAA,CAAA,SAAA,CAAb,CAAA,CAhCkC;;;EAmClC,IAAI,YAAY,KAAA,YAAa,EAAA;IAC3B,SAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa,SAAA,CAAA,SAAA,CAAb,CAAA,CAAA;GACD;;EAED,OAAO,SAAA,CAAA,SAAA,CAAP,CAAA;;;;AAIF,SAAA,CAAA,SAAA,CAAA,CAAS,OAAT,GAAmB,QAAQ,CAAA;oBAEZ,SAAA,CAAA,SAAA;;;;ACzDf;;;;;;;;;;;;;;;;;;;ACAA,SAAS,UAAT,CAAqB,IAArB,EAA+H;EAC7H,IAAM,WAAW,GAAG,CAClB,CAAC,GAAD,EAAM,GAAN,CADkB,EAElB,CAAC,MAAD,EAAS,KAAT,CAFkB,EAGlB,CAAC,OAAD,EAAU,QAAV,CAHkB,EAIlB,CAAC,OAAD,EAAU,QAAV,CAJkB,CAAA,CAKlB,MALkB,CAKX,UAAA,IAAA,EAAA;IAAA,IAAA,KAAA,GAAA,mBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;QAAE,MAAF,GAAA,KAAA,CAAA,CAAA,CAAA;QAAU,MAAV,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;IAAA,OAAsB,MAAM,IAAI,IAAV,IAAkB,MAAM,IAAI,IAAlD,CAAA;GALW,CAApB,CAAA;EAOA,OAAO,UAAU,CAAV,EAAa,CAAb,EAAc;IAAA,IAEjB,KAFiB,GAUf,IAVe,CAEjB,KAFiB;QAAA,YAAA,GAUf,IAVe,CAGjB,MAHiB;QAGjB,MAHiB,GAAA,YAAA,KAAA,KAAA,CAAA,GAGR;MACP,IAAI,EAAI,CAAC,QADF;MAEP,KAAK,EAAI,QAFF;MAGP,GAAG,EAAK,CAAC,QAHF;MAIP,MAAM,EAAG,QAAA;KAPM,GAAA,YAAA;QAAA,YAAA,GAUf,IAVe,CASjB,MATiB;QASjB,MATiB,GAAA,YAAA,KAAA,KAAA,CAAA,GASR;MAAE,CAAC,EAAE,CAAL;MAAQ,CAAC,EAAE,CAAA;KATH,GAAA,YAAA,CAAA;IAYnB,IAAM,MAAM,GAAG;MAAE,KAAK,EAAL,KAAA;KAAjB,CAAA;;IAEA,KAAA,IAAA,GAAA,GAAA,CAAA,EAAA,GAAA,GAA+B,WAA/B,CAAA,MAAA,EAAA,GAAA,EAAA,EAA4C;MAAA,IAAA,KAAA,CAAA;;MAAA,KAAA,GAAb,WAAa,CAAA,GAAA,CAAA,CAAA;;MAAA,IAAA,KAAA,GAAA,KAAA;UAAA,KAAA,GAAA,mBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;UAAhC,MAAgC,GAAA,KAAA,CAAA,CAAA,CAAA;UAAxB,MAAwB,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;MAC1C,IAAM,KAAK,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,CAAC,GAAG,MAAM,CAAC,CAAZ,IAAiB,IAAI,CAAC,MAAD,CAAhC,CAAd,CAAA;MACA,IAAM,KAAK,GAAG,IAAI,CAAC,KAAL,CAAW,CAAC,CAAC,GAAG,MAAM,CAAC,CAAZ,IAAiB,IAAI,CAAC,MAAD,CAAhC,CAAd,CAAA;MAEA,MAAM,CAAC,MAAD,CAAN,GAAiB,IAAI,CAAC,GAAL,CAAS,MAAM,CAAC,IAAhB,EAAsB,IAAI,CAAC,GAAL,CAAS,MAAM,CAAC,KAAhB,EAAuB,KAAK,GAAG,IAAI,CAAC,MAAD,CAAZ,GAAuB,MAAM,CAAC,CAArD,CAAtB,CAAjB,CAAA;MACA,MAAM,CAAC,MAAD,CAAN,GAAiB,IAAI,CAAC,GAAL,CAAS,MAAM,CAAC,GAAhB,EAAqB,IAAI,CAAC,GAAL,CAAS,MAAM,CAAC,MAAhB,EAAwB,KAAK,GAAG,IAAI,CAAC,MAAD,CAAZ,GAAuB,MAAM,CAAC,CAAtD,CAArB,CAAjB,CAAA;KACD;;IAED,OAAO,MAAP,CAAA;GAtBF,CAAA;CAwBD;;oBAEc;;;;;;;;;;;;;;;;AClCf,IAAA,KAAA,GAAA,2BAAA,CAAA,SAAA,CAAA,CAAA;;;;;;;;;;;;;ACAA,IAAA,cAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;AACA,IAAA,cAAA,GAAA,4BAAA,CAAA,cAAA,CAAA,CAAA;;AACA,UAAA,CAAA;;AACA,IAAA,YAAA,GAAA,2BAAA,CAAA,WAAA,CAAA,CAAA;;AACA,IAAA,QAAA,GAAA,4BAAA,CAAA,aAAA,CAAA,CAAA;;;;;;;;AAUA,IAAI,CAAA,OAAO,MAAP,KAAA,WAAA,GAAA,WAAA,GAAA,YAAA,CAAO,MAAP,CAAA,MAAkB,QAAlB,IAA8B,CAAC,CAAC,MAApC,EAA4C;EAC1C,SAAI,CAAC,MAAD,CAAJ,CAAA;CACD;;AAEM,SAAS,SAAT,CAAe,GAAf,EAA4B;EACjC,CAAA,CAAA,EAAA,cAAA,CAAA,IAAA,EAAa,GAAb,CAAA,CAAA;EAEA,OAAO,cAAA,CAAA,SAAA,CAAA,CAAS,GAAT,CAAa;IAClB,EAAE,EAAE,YADc;IAElB,OAFkB,EAAA,SAAA,OAAA,CAET,KAFS,EAEF;MACd,cAAA,CAAA,SAAA,CAAA,CAAS,SAAT,GAAqB,CAAA,CAAA,EAAA,YAAA,CAAA,SAAA,CAAA,EAAO,KAAK,CAAC,SAAb,EAAwB,cAAxB,CAArB,CAAA;MACA,cAAA,CAAA,SAAA,CAAA,CAAS,QAAT,GAAoB,QAApB,CAAA;MACA,cAAA,CAAA,SAAA,CAAA,CAAS,cAAT,GAA0B,cAAA,CAAA,SAAA,CAAA,CAAS,QAAT,CAAkB,IAA5C,CAAA;KACD;GANI,CAAP,CAAA;CAQD;;oBAEc,cAAA,CAAA,SAAA;;AACf,cAAA,CAAA,SAAA,CAAA,CAAS,SAAT,CAAA,GAAsB,cAAA,CAAA,SAAA,CAAtB;;AACA,cAAA,CAAA,SAAA,CAAA,CAAS,MAAT,CAAA,GAAmB,SAAnB;;AAEA,IAAI,CAAA,QAAA,KAAA,WAAA,GAAA,WAAA,GAAA,YAAA,CAAO,UAAP,CAAA,MAAkB,QAAlB,IAA8B,CAAC,CAAC,UAApC,EAA4C;EAC1C,kBAAA,GAAiB,cAAA,CAAA,SAAA,CAAjB,CAAA;CACD;;ACrCD;AACA;AACA;AACA;AACA","file":"interact.js","sourceRoot":"","sourcesContent":["/**\n * interact.js 1.4.13\n *\n * Copyright (c) 2012-2019 Taye Adeyemi \n * Released under the MIT License.\n * https://raw.github.com/taye/interact.js/master/LICENSE\n */\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.interact = f()}})(function(){var define,module,exports;\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\n","import * as utils from '@interactjs/utils'\nimport domObjects from '@interactjs/utils/domObjects'\nimport defaults from './defaultOptions'\nimport Eventable from './Eventable'\nimport InteractableBase from './Interactable'\nimport InteractableSet from './InteractableSet'\nimport InteractEvent from './InteractEvent'\nimport interactions from './interactions'\n\nconst {\n win,\n browser,\n raf,\n Signals,\n events,\n} = utils\n\nexport enum ActionName {\n}\n\nexport interface Actions {\n names: ActionName[]\n methodDict: { [key: string]: string }\n eventTypes: string[]\n}\n\nexport function createScope () {\n return new Scope()\n}\n\nexport type Defaults = typeof defaults\n\nexport interface Plugin {\n id?: string\n install (scope: Scope, options?: any): void\n [key: string]: any\n}\n\nexport class Scope {\n id = `__interact_scope_${Math.floor(Math.random() * 100)}`\n signals = new Signals()\n browser = browser\n events = events\n utils = utils\n defaults: Defaults = utils.clone(defaults) as Defaults\n Eventable = Eventable\n actions: Actions = {\n names: [],\n methodDict: {},\n eventTypes: [],\n }\n\n InteractEvent = InteractEvent\n Interactable!: typeof InteractableBase\n interactables = new InteractableSet(this)\n\n // main window\n _win!: Window\n\n // main document\n document!: Document\n\n // main window\n window!: Window\n\n // all documents being listened to\n documents: Array<{ doc: Document, options: any }> = []\n\n _plugins: Plugin[] = []\n _pluginMap: { [id: string]: Plugin } = {}\n\n constructor () {\n const scope = this as Scope\n\n ; (this as { Interactable: typeof InteractableBase }).Interactable = class Interactable extends InteractableBase implements InteractableBase {\n get _defaults () { return scope.defaults }\n\n set (options: any) {\n super.set(options)\n\n scope.interactables.signals.fire('set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset () {\n super.unset()\n for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n const interaction = scope.interactions.list[i]\n\n if (interaction.interactable === this) {\n interaction.stop()\n scope.interactions.signals.fire('destroy', { interaction })\n interaction.destroy()\n\n if (scope.interactions.list.length > 2) {\n scope.interactions.list.splice(i, 1)\n }\n }\n }\n\n scope.interactables.signals.fire('unset', { interactable: this })\n }\n }\n }\n\n onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n init (window: Window) {\n return initScope(this, window)\n }\n\n pluginIsInstalled (plugin: Plugin) {\n return this._pluginMap[plugin.id] || this._plugins.indexOf(plugin) !== -1\n }\n\n usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) { this._pluginMap[plugin.id] = plugin }\n\n plugin.install(this, options)\n this._plugins.push(plugin)\n\n return this\n }\n\n addDocument (doc: Document, options?: any): void | false {\n // do nothing if document is already known\n if (this.getDocIndex(doc) !== -1) { return false }\n\n const window = win.getWindow(doc)\n\n options = options ? utils.extend({}, options) : {}\n\n this.documents.push({ doc, options })\n events.documents.push(doc)\n\n // don't add an unload event for the main document\n // so that the page may be cached in browser history\n if (doc !== this.document) {\n events.add(window, 'unload', this.onWindowUnload)\n }\n\n this.signals.fire('add-document', { doc, window, scope: this, options })\n }\n\n removeDocument (doc: Document) {\n const index = this.getDocIndex(doc)\n\n const window = win.getWindow(doc)\n const options = this.documents[index].options\n\n events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n events.documents.splice(index, 1)\n\n this.signals.fire('remove-document', { doc, window, scope: this, options })\n }\n\n getDocIndex (doc: Document) {\n for (let i = 0; i < this.documents.length; i++) {\n if (this.documents[i].doc === doc) {\n return i\n }\n }\n\n return -1\n }\n\n getDocOptions (doc: Document) {\n const docIndex = this.getDocIndex(doc)\n\n return docIndex === -1 ? null : this.documents[docIndex].options\n }\n\n now () {\n return ((this.window as any).Date as typeof Date || Date).now()\n }\n}\n\nexport function initScope (scope: Scope, window: Window) {\n win.init(window)\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n events.init(window)\n\n scope.usePlugin(interactions)\n scope.document = window.document\n scope.window = window\n\n return scope\n}\n","import browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\nimport Signals from '@interactjs/utils/Signals'\nimport InteractionBase from './Interaction'\nimport finder, { SearchDetails } from './interactionFinder'\nimport { Scope } from './scope'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n signals: Signals\n new: (options: any) => InteractionBase\n list: InteractionBase[]\n listeners: { [type: string]: Interact.Listener }\n docEvents: Array<{ type: string, listener: Interact.Listener }>\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n}\n\nconst methodNames = [\n 'pointerDown', 'pointerMove', 'pointerUp',\n 'updatePointer', 'removePointer', 'windowBlur',\n]\n\nfunction install (scope: Scope) {\n const signals = new Signals()\n\n const listeners = {} as any\n\n for (const method of methodNames) {\n listeners[method] = doOnInteractions(method, scope)\n }\n\n const pEventTypes = browser.pEventTypes\n let docEvents: typeof scope.interactions.docEvents\n\n if (domObjects.PointerEvent) {\n docEvents = [\n { type: pEventTypes.down, listener: releasePointersOnRemovedEls },\n { type: pEventTypes.down, listener: listeners.pointerDown },\n { type: pEventTypes.move, listener: listeners.pointerMove },\n { type: pEventTypes.up, listener: listeners.pointerUp },\n { type: pEventTypes.cancel, listener: listeners.pointerUp },\n ]\n }\n else {\n docEvents = [\n { type: 'mousedown', listener: listeners.pointerDown },\n { type: 'mousemove', listener: listeners.pointerMove },\n { type: 'mouseup', listener: listeners.pointerUp },\n\n { type: 'touchstart', listener: releasePointersOnRemovedEls },\n { type: 'touchstart', listener: listeners.pointerDown },\n { type: 'touchmove', listener: listeners.pointerMove },\n { type: 'touchend', listener: listeners.pointerUp },\n { type: 'touchcancel', listener: listeners.pointerUp },\n ]\n }\n\n docEvents.push({\n type: 'blur',\n listener (event) {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event)\n }\n },\n })\n\n scope.signals.on('add-document', onDocSignal)\n scope.signals.on('remove-document', onDocSignal)\n\n // for ignoring browser's simulated mouse events\n scope.prevTouchTime = 0\n\n scope.Interaction = class Interaction extends InteractionBase {\n get pointerMoveTolerance () {\n return scope.interactions.pointerMoveTolerance\n }\n\n set pointerMoveTolerance (value) {\n scope.interactions.pointerMoveTolerance = value\n }\n\n _now () { return scope.now() }\n }\n\n scope.interactions = {\n signals,\n // all active and idle interactions\n list: [],\n new (options: { pointerType?: string, signals?: Signals }) {\n options.signals = signals\n\n const interaction = new scope.Interaction(options as Required)\n\n scope.interactions.list.push(interaction)\n return interaction\n },\n listeners,\n docEvents,\n pointerMoveTolerance: 1,\n }\n\n function releasePointersOnRemovedEls () {\n // for all inactive touch interactions with pointers down\n for (const interaction of scope.interactions.list) {\n if (!interaction.pointerIsDown ||\n interaction.pointerType !== 'touch' ||\n interaction._interacting) {\n continue\n }\n\n // if a pointer is down on an element that is no longer in the DOM tree\n for (const pointer of interaction.pointers) {\n if (!scope.documents.some(({ doc }) => nodeContains(doc, pointer.downTarget))) {\n // remove the pointer from the interaction\n interaction.removePointer(pointer.pointer, pointer.event)\n }\n }\n }\n }\n}\n\nfunction doOnInteractions (method, scope) {\n return function (event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches = [] // [ [pointer, interaction], ...]\n\n if (/^touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\n for (const changedTouch of event.changedTouches) {\n const pointer = changedTouch\n const pointerId = pointerUtils.getPointerId(pointer)\n const searchDetails: SearchDetails = {\n pointer,\n pointerId,\n pointerType,\n eventType: event.type,\n eventTarget,\n curEventTarget,\n scope,\n }\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n }\n else {\n let invalidPointer = false\n\n if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n // ignore mouse events while touch interactions are active\n for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown\n }\n\n // try to ignore mouse events that are simulated by the browser\n // after a touch event\n invalidPointer = invalidPointer ||\n (scope.now() - scope.prevTouchTime < 500) ||\n // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n event.timeStamp === 0\n }\n\n if (!invalidPointer) {\n const searchDetails = {\n pointer: event,\n pointerId: pointerUtils.getPointerId(event),\n pointerType,\n eventType: event.type,\n curEventTarget,\n eventTarget,\n scope,\n }\n\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n }\n\n // eslint-disable-next-line no-shadow\n for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n interaction[method](pointer, event, eventTarget, curEventTarget)\n }\n }\n}\n\nfunction getInteraction (searchDetails: SearchDetails) {\n const { pointerType, scope } = searchDetails\n\n const foundInteraction = finder.search(searchDetails)\n const signalArg = { interaction: foundInteraction, searchDetails }\n\n scope.interactions.signals.fire('find', signalArg)\n\n return signalArg.interaction || scope.interactions.new({ pointerType })\n}\n\nfunction onDocSignal ({ doc, scope, options }, signalName) {\n const { docEvents } = scope.interactions\n const eventMethod = signalName.indexOf('add') === 0\n ? events.add : events.remove\n\n if (scope.browser.isIOS && !options.events) {\n options.events = { passive: false }\n }\n\n // delegate event listener\n for (const eventType in events.delegatedEvents) {\n eventMethod(doc, eventType, events.delegateListener)\n eventMethod(doc, eventType, events.delegateUseCapture, true)\n }\n\n const eventOptions = options && options.events\n\n for (const { type, listener } of docEvents) {\n eventMethod(doc, type, listener, eventOptions)\n }\n}\n\nexport default {\n id: 'core/interactions',\n install,\n onDocSignal,\n doOnInteractions,\n methodNames,\n}\n","import * as utils from '@interactjs/utils'\nimport Interactable from './Interactable'\nimport InteractEvent, { EventPhase } from './InteractEvent'\nimport PointerInfo from './PointerInfo'\nimport { ActionName } from './scope'\n\nexport interface ActionProps {\n name: T\n axis?: 'x' | 'y' | 'xy'\n edges?: {\n [edge in keyof Interact.Rect]?: boolean\n }\n}\n\nexport interface StartAction extends ActionProps {\n name: ActionName | string\n}\n\nexport enum _ProxyValues {\n interactable = '',\n element = '',\n prepared = '',\n pointerIsDown = '',\n pointerWasMoved = '',\n _proxy = ''\n}\n\nexport enum _ProxyMethods {\n start = '',\n move = '',\n end = '',\n stop = '',\n interacting = ''\n}\n\nexport type _InteractionProxy = Pick<\n Interaction,\n keyof typeof _ProxyValues | keyof typeof _ProxyMethods\n>\n\nexport class Interaction {\n // current interactable being interacted with\n interactable: Interactable = null\n\n // the target element of the interactable\n element: Element = null\n rect: Interact.Rect & Interact.Size\n edges: {\n [P in keyof Interact.Rect]?: boolean\n }\n\n _signals: utils.Signals\n\n // action that's ready to be fired on next move event\n prepared: ActionProps = {\n name : null,\n axis : null,\n edges: null,\n }\n\n pointerType: string\n\n // keep track of added pointers\n pointers: PointerInfo[] = []\n\n // pointerdown/mousedown/touchstart event\n downEvent: Interact.PointerEventType = null\n\n downPointer: Interact.PointerType = {} as Interact.PointerType\n\n _latestPointer: {\n pointer: Interact.EventTarget\n event: Interact.PointerEventType\n eventTarget: Node,\n } = {\n pointer: null,\n event: null,\n eventTarget: null,\n }\n\n // previous action event\n prevEvent: InteractEvent = null\n\n pointerIsDown = false\n pointerWasMoved = false\n _interacting = false\n _ending = false\n _stopped = true\n _proxy: _InteractionProxy = null\n\n simulation = null\n\n get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\n */\n doMove = utils.warnOnce(\n function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n },\n 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords = {\n // Starting InteractEvent pointer coordinates\n start: utils.pointer.newCoords(),\n // Previous native pointer move event coordinates\n prev: utils.pointer.newCoords(),\n // current native pointer move event coordinates\n cur: utils.pointer.newCoords(),\n // Change in coordinates and time of the pointer\n delta: utils.pointer.newCoords(),\n // pointer velocity\n velocity: utils.pointer.newCoords(),\n }\n\n /** */\n constructor ({ pointerType, signals }: { pointerType?: string, signals: utils.Signals }) {\n this._signals = signals\n this.pointerType = pointerType\n\n const that = this\n\n this._proxy = {} as _InteractionProxy\n\n for (const key in _ProxyValues) {\n Object.defineProperty(this._proxy, key, {\n get () { return that[key] },\n })\n }\n\n for (const key in _ProxyMethods) {\n Object.defineProperty(this._proxy, key, {\n value: (...args) => that[key](...args),\n })\n }\n\n this._signals.fire('new', { interaction: this })\n }\n\n pointerDown (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n\n this._signals.fire('down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n interaction: this,\n })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable({\n * // disable the default drag start by down->move\n * manualStart: true\n * })\n * // start dragging after the user holds the pointer down\n * .on('hold', function (event) {\n * var interaction = event.interaction\n *\n * if (!interaction.interacting()) {\n * interaction.start({ name: 'drag' },\n * event.interactable,\n * event.currentTarget)\n * }\n * })\n * ```\n *\n * Start an action with the given Interactable and Element as tartgets. The\n * action must be enabled for the target Interactable and an appropriate\n * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n *\n * Use it with `interactable.able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {object} interact\n */\n start (action: StartAction, interactable: Interactable, element: Element) {\n if (this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === ActionName.Gesture ? 2 : 1) ||\n !interactable.options[action.name].enabled) {\n return false\n }\n\n utils.copyAction(this.prepared, action)\n\n this.interactable = interactable\n this.element = element\n this.rect = interactable.getRect(element)\n this.edges = this.prepared.edges\n this._stopped = false\n this._interacting = this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: EventPhase.Start,\n }) && !this._stopped\n\n return this._interacting\n }\n\n pointerMove (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node) {\n if (!this.simulation && !(this.modifiers && this.modifiers.endPrevented)) {\n this.updatePointer(pointer, event, eventTarget, false)\n utils.pointer.setCoords(this.coords.cur, this.pointers.map((p) => p.pointer), this._now())\n }\n\n const duplicateMove = (this.coords.cur.page.x === this.coords.prev.page.x &&\n this.coords.cur.page.y === this.coords.prev.page.y &&\n this.coords.cur.client.x === this.coords.prev.client.x &&\n this.coords.cur.client.y === this.coords.prev.client.y)\n\n let dx\n let dy\n\n // register movement greater than pointerMoveTolerance\n if (this.pointerIsDown && !this.pointerWasMoved) {\n dx = this.coords.cur.client.x - this.coords.start.client.x\n dy = this.coords.cur.client.y - this.coords.start.client.y\n\n this.pointerWasMoved = utils.hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const signalArg = {\n pointer,\n pointerIndex: this.getPointerIndex(pointer),\n event,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n utils.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n utils.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._signals.fire('move', signalArg)\n\n if (!duplicateMove) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n this.move(signalArg)\n }\n\n if (this.pointerWasMoved) {\n utils.pointer.copyCoords(this.coords.prev, this.coords.cur)\n }\n }\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('dragmove', function (event) {\n * if (someCondition) {\n * // change the snap settings\n * event.interactable.draggable({ snap: { targets: [] }})\n * // fire another move event with re-calculated snap\n * event.interaction.move()\n * }\n * })\n * ```\n *\n * Force a move of the current action at the same coordinates. Useful if\n * snap/restrict has been changed and you want a movement with the new\n * settings.\n */\n move (signalArg?) {\n signalArg = utils.extend({\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n }, signalArg || {})\n\n signalArg.phase = EventPhase.Move\n\n this._doPhase(signalArg)\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node, curEventTarget: EventTarget) {\n let pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n }\n\n this._signals.fire(/cancel$/i.test(event.type) ? 'cancel' : 'up', {\n pointer,\n pointerIndex,\n event,\n eventTarget,\n curEventTarget,\n interaction: this,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.pointerIsDown = false\n this.removePointer(pointer, event)\n }\n\n documentBlur (event) {\n this.end(event)\n this._signals.fire('blur', { event, interaction: this })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('move', function (event) {\n * if (event.pageX > 1000) {\n * // end the current action\n * event.interaction.end()\n * // stop all further listeners from being called\n * event.stopImmediatePropagation()\n * }\n * })\n * ```\n *\n * @param {PointerEvent} [event]\n */\n end (event?: Interact.PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: EventPhase.End,\n })\n }\n\n this._ending = false\n\n if (endPhaseResult === true) {\n this.stop()\n }\n }\n\n currentAction () {\n return this._interacting ? this.prepared.name : null\n }\n\n interacting () {\n return this._interacting\n }\n\n /** */\n stop () {\n this._signals.fire('stop', { interaction: this })\n\n this.interactable = this.element = null\n\n this._interacting = false\n this._stopped = true\n this.prepared.name = this.prevEvent = null\n }\n\n getPointerIndex (pointer) {\n const pointerId = utils.pointer.getPointerId(pointer)\n\n // mouse and pen interactions may have only one pointer\n return (this.pointerType === 'mouse' || this.pointerType === 'pen')\n ? this.pointers.length - 1\n : utils.arr.findIndex(this.pointers, (curPointer) => curPointer.id === pointerId)\n }\n\n getPointerInfo (pointer) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n updatePointer (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node, down?: boolean) {\n const id = utils.pointer.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false\n ? false\n : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(\n id,\n pointer,\n event,\n null,\n null,\n )\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n }\n else {\n pointerInfo.pointer = pointer\n }\n\n if (down) {\n this.pointerIsDown = true\n\n if (!this.interacting()) {\n utils.pointer.setCoords(this.coords.start, this.pointers.map((p) => p.pointer), this._now())\n\n utils.pointer.copyCoords(this.coords.cur, this.coords.start)\n utils.pointer.copyCoords(this.coords.prev, this.coords.start)\n utils.pointer.pointerExtend(this.downPointer, pointer)\n\n this.downEvent = event\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n\n this.pointerWasMoved = false\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget)\n\n this._signals.fire('update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: this,\n })\n\n return pointerIndex\n }\n\n removePointer (pointer: Interact.PointerType, event: Interact.PointerEventType) {\n const pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) { return }\n\n const pointerInfo = this.pointers[pointerIndex]\n\n this._signals.fire('remove-pointer', {\n pointer,\n event,\n pointerIndex,\n pointerInfo,\n interaction: this,\n })\n\n this.pointers.splice(pointerIndex, 1)\n }\n\n _updateLatestPointer (pointer, event, eventTarget) {\n this._latestPointer.pointer = pointer\n this._latestPointer.event = event\n this._latestPointer.eventTarget = eventTarget\n }\n\n destroy () {\n this._latestPointer.pointer = null\n this._latestPointer.event = null\n this._latestPointer.eventTarget = null\n }\n\n _createPreparedEvent (event: Interact.PointerEventType, phase: EventPhase, preEnd: boolean, type: string) {\n const actionName = this.prepared.name\n\n return new InteractEvent(this, event, actionName, phase, this.element, null, preEnd, type)\n }\n\n _fireEvent (iEvent) {\n this.interactable.fire(iEvent)\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent\n }\n }\n\n _doPhase (signalArg: Partial) {\n const { event, phase, preEnd, type } = signalArg\n const beforeResult = this._signals.fire(`before-action-${phase}`, signalArg)\n\n if (beforeResult === false) {\n return false\n }\n\n const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type)\n const { rect } = this\n\n if (rect) {\n // update the rect modifications\n const edges = this.edges || this.prepared.edges || { left: true, right: true, top: true, bottom: true }\n\n if (edges.top) { rect.top += iEvent.delta.y }\n if (edges.bottom) { rect.bottom += iEvent.delta.y }\n if (edges.left) { rect.left += iEvent.delta.x }\n if (edges.right) { rect.right += iEvent.delta.x }\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n this._signals.fire(`action-${phase}`, signalArg)\n\n this._fireEvent(iEvent)\n\n this._signals.fire(`after-action-${phase}`, signalArg)\n\n return true\n }\n\n _now () { return Date.now() }\n}\n\nexport default Interaction\nexport { PointerInfo }\n","export function contains (array, target) {\n return array.indexOf(target) !== -1\n}\n\nexport function remove (array, target) {\n return array.splice(array.indexOf(target), 1)\n}\n\nexport function merge (target, source) {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport function from (source) {\n return merge([], source)\n}\n\nexport function findIndex (array, func) {\n for (let i = 0; i < array.length; i++) {\n if (func(array[i], i, array)) {\n return i\n }\n }\n\n return -1\n}\n\nexport function find (array, func) {\n return array[findIndex(array, func)]\n}\n","const domObjects: {\n init: any,\n document: Document,\n DocumentFragment: typeof DocumentFragment,\n SVGElement: typeof SVGElement,\n SVGSVGElement: typeof SVGSVGElement,\n SVGElementInstance: any,\n Element: typeof Element,\n HTMLElement: typeof HTMLElement,\n Event: typeof Event,\n Touch: typeof Touch,\n PointerEvent: typeof PointerEvent,\n} =\n{\n init,\n document: null as any,\n DocumentFragment: null as any,\n SVGElement: null as any,\n SVGSVGElement: null as any,\n // eslint-disable-next-line no-undef\n SVGElementInstance: null as any,\n Element: null as any,\n HTMLElement: null as any,\n Event: null as any,\n Touch: null as any,\n PointerEvent: null as any,\n}\n\nfunction blank () {}\n\nexport default domObjects\n\nfunction init (window: Window) {\n const win = window as any\n\n domObjects.document = win.document\n domObjects.DocumentFragment = win.DocumentFragment || blank\n domObjects.SVGElement = win.SVGElement || blank\n domObjects.SVGSVGElement = win.SVGSVGElement || blank\n domObjects.SVGElementInstance = win.SVGElementInstance || blank\n domObjects.Element = win.Element || blank\n domObjects.HTMLElement = win.HTMLElement || domObjects.Element\n\n domObjects.Event = win.Event\n domObjects.Touch = win.Touch || blank\n domObjects.PointerEvent = (win.PointerEvent || win.MSPointerEvent)\n}\n","export default (thing) => !!(thing && thing.Window) && (thing instanceof thing.Window)\n","import isWindow from './isWindow'\n\nconst win = {\n realWindow: undefined as Window,\n window: undefined as Window,\n getWindow,\n init,\n}\n\nexport function init (window: Window & { wrap?: (...args) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n win.realWindow = window\n\n // create a TextNode\n const el = window.document.createTextNode('')\n\n // check if it's wrapped by a polyfill\n if (el.ownerDocument !== window.document &&\n typeof window.wrap === 'function' &&\n window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win.window = window\n}\n\nif (typeof window === 'undefined') {\n win.window = undefined\n win.realWindow = undefined\n}\nelse {\n init(window)\n}\n\nexport function getWindow (node) {\n if (isWindow(node)) {\n return node\n }\n\n const rootNode = (node.ownerDocument || node)\n\n return rootNode.defaultView || win.window\n}\n\nwin.init = init\n\nexport default win\n","// tslint:disable variable-name\n\nimport isWindow from './isWindow'\nimport win from './window'\n\nexport const window = (thing: any): thing is Window =>\n thing === win.window || isWindow(thing)\n\nexport const docFrag = (thing: any): thing is DocumentFragment =>\n object(thing) && thing.nodeType === 11\n\nexport const object = (thing: any): thing is { [index: string]: any } =>\n !!thing && (typeof thing === 'object')\n\nexport const func = (thing: any): thing is (...args: any) => any =>\n typeof thing === 'function'\n\nexport const number = (thing: any): thing is number =>\n typeof thing === 'number'\n\nexport const bool = (thing: any): thing is boolean =>\n typeof thing === 'boolean'\n\nexport const string = (thing: any): thing is string =>\n typeof thing === 'string'\n\nexport const element = (thing: any): thing is Element => {\n if (!thing || (typeof thing !== 'object')) { return false }\n\n const _window = win.getWindow(thing) || win.window\n\n return (/object|function/.test(typeof _window.Element)\n ? thing instanceof _window.Element // DOM2\n : thing.nodeType === 1 && typeof thing.nodeName === 'string')\n}\n\nexport const plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) &&\n !!thing.constructor &&\n /function Object\\b/.test(thing.constructor.toString())\n\nexport const array = (thing: any): thing is any[] =>\n (object(thing) &&\n (typeof thing.length !== 'undefined') &&\n func(thing.splice))\n","import domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nconst browser = {\n init,\n supportsTouch: null as boolean,\n supportsPointerEvent: null as boolean,\n isIOS7: null as boolean,\n isIOS: null as boolean,\n isIe9: null as boolean,\n isOperaMobile: null as boolean,\n prefixedMatchesSelector: null as string,\n pEventTypes: null as {\n up: string,\n down: string,\n over: string,\n out: string,\n move: string,\n cancel: string,\n },\n wheelEvent: null as string,\n}\n\nfunction init (window) {\n const Element = domObjects.Element\n const navigator = win.window.navigator\n\n // Does the browser support touch input?\n browser.supportsTouch = ('ontouchstart' in window) ||\n (is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch)\n\n // Does the browser support PointerEvents\n browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent\n\n browser.isIOS = (/iP(hone|od|ad)/.test(navigator.platform))\n\n // scrolling doesn't change the result of getClientRects on iOS 7\n browser.isIOS7 = (/iP(hone|od|ad)/.test(navigator.platform) &&\n /OS 7[^\\d]/.test(navigator.appVersion))\n\n browser.isIe9 = /MSIE 9/.test(navigator.userAgent)\n\n // Opera Mobile must be handled differently\n browser.isOperaMobile = (navigator.appName === 'Opera' &&\n browser.supportsTouch &&\n /Presto/.test(navigator.userAgent))\n\n // prefix matchesSelector\n browser.prefixedMatchesSelector = 'matches' in Element.prototype\n ? 'matches'\n : 'webkitMatchesSelector' in Element.prototype\n ? 'webkitMatchesSelector'\n : 'mozMatchesSelector' in Element.prototype\n ? 'mozMatchesSelector'\n : 'oMatchesSelector' in Element.prototype\n ? 'oMatchesSelector'\n : 'msMatchesSelector'\n\n browser.pEventTypes = (browser.supportsPointerEvent\n ? (domObjects.PointerEvent === window.MSPointerEvent\n ? {\n up: 'MSPointerUp',\n down: 'MSPointerDown',\n over: 'mouseover',\n out: 'mouseout',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel',\n }\n : {\n up: 'pointerup',\n down: 'pointerdown',\n over: 'pointerover',\n out: 'pointerout',\n move: 'pointermove',\n cancel: 'pointercancel',\n })\n : null)\n\n // because Webkit and Opera still use 'mousewheel' event type\n browser.wheelEvent = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import browser from './browser'\nimport domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nexport function nodeContains (parent: Node, child: Node) {\n while (child) {\n if (child === parent) {\n return true\n }\n\n child = child.parentNode\n }\n\n return false\n}\n\nexport function closest (element, selector) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) { return element }\n\n element = parentNode(element)\n }\n\n return null\n}\n\nexport function parentNode (node) {\n let parent = node.parentNode\n\n if (is.docFrag(parent)) {\n // skip past #shado-root fragments\n // tslint:disable-next-line\n while ((parent = (parent as any).host) && is.docFrag(parent)) {\n continue\n }\n\n return parent\n }\n\n return parent\n}\n\nexport function matchesSelector (element, selector) {\n // remove /deep/ from selectors if shadowDOM polyfill is used\n if (win.window !== win.realWindow) {\n selector = selector.replace(/\\/deep\\//g, ' ')\n }\n\n return element[browser.prefixedMatchesSelector](selector)\n}\n\nconst getParent = (el) => el.parentNode ? el.parentNode : el.host\n\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements) {\n let deepestZoneParents = []\n let dropzoneParents = []\n let dropzone\n let deepestZone = elements[0]\n let index = deepestZone ? 0 : -1\n let parent\n let child\n let i\n let n\n\n for (i = 1; i < elements.length; i++) {\n dropzone = elements[i]\n\n // an element might belong to multiple selector dropzones\n if (!dropzone || dropzone === deepestZone) {\n continue\n }\n\n if (!deepestZone) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n // check if the deepest or current are document.documentElement or document.rootElement\n // - if the current dropzone is, do nothing and continue\n if (dropzone.parentNode === dropzone.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current dropzone and continue to next\n else if (deepestZone.parentNode === dropzone.ownerDocument) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n if (!deepestZoneParents.length) {\n parent = deepestZone\n while (getParent(parent) && getParent(parent) !== parent.ownerDocument) {\n deepestZoneParents.unshift(parent)\n parent = getParent(parent)\n }\n }\n\n // if this element is an svg element and the current deepest is\n // an HTMLElement\n if (deepestZone instanceof domObjects.HTMLElement &&\n dropzone instanceof domObjects.SVGElement &&\n !(dropzone instanceof domObjects.SVGSVGElement)) {\n if (dropzone === deepestZone.parentNode) {\n continue\n }\n\n parent = dropzone.ownerSVGElement\n }\n else {\n parent = dropzone\n }\n\n dropzoneParents = []\n\n while (parent.parentNode !== parent.ownerDocument) {\n dropzoneParents.unshift(parent)\n parent = getParent(parent)\n }\n\n n = 0\n\n // get (position of last common ancestor) + 1\n while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n n++\n }\n\n const parents = [\n dropzoneParents[n - 1],\n dropzoneParents[n],\n deepestZoneParents[n],\n ]\n\n child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestZone = dropzone\n index = i\n deepestZoneParents = []\n\n break\n }\n else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n\n return index\n}\n\nexport function matchesUpTo (element: Element, selector: string, limit: Node) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true\n }\n\n element = parentNode(element)\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement (element) {\n return (element instanceof domObjects.SVGElementInstance\n ? element.correspondingUseElement\n : element)\n}\n\nexport function getScrollXY (relevantWindow) {\n relevantWindow = relevantWindow || win.window\n return {\n x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop,\n }\n}\n\nexport function getElementClientRect (element) {\n const clientRect = (element instanceof domObjects.SVGElement\n ? element.getBoundingClientRect()\n : element.getClientRects()[0])\n\n return clientRect && {\n left : clientRect.left,\n right : clientRect.right,\n top : clientRect.top,\n bottom: clientRect.bottom,\n width : clientRect.width || clientRect.right - clientRect.left,\n height: clientRect.height || clientRect.bottom - clientRect.top,\n }\n}\n\nexport function getElementRect (element) {\n const clientRect = getElementClientRect(element)\n\n if (!browser.isIOS7 && clientRect) {\n const scroll = getScrollXY(win.getWindow(element))\n\n clientRect.left += scroll.x\n clientRect.right += scroll.x\n clientRect.top += scroll.y\n clientRect.bottom += scroll.y\n }\n\n return clientRect\n}\n\nexport function getPath (node) {\n const path = []\n\n while (node) {\n path.push(node)\n node = parentNode(node)\n }\n\n return path\n}\n\nexport function trySelector (value) {\n if (!is.string(value)) { return false }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n","import * as arr from './arr'\nimport * as is from './is'\n\nexport default function clone (source: T): Partial {\n const dest = {} as Partial\n\n for (const prop in source) {\n const value = source[prop]\n\n if (is.plainObject(value)) {\n dest[prop] = clone(value) as any\n }\n else if (is.array(value)) {\n dest[prop] = arr.from(value)\n }\n else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n","export interface PointerExtend {\n webkit: RegExp\n [prefix: string]: RegExp\n}\n\nfunction pointerExtend (dest, source) {\n for (const prop in source) {\n const prefixedPropREs = pointerExtend.prefixedPropREs\n let deprecated = false\n\n // skip deprecated prefixed properties\n for (const vendor in prefixedPropREs) {\n if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n deprecated = true\n break\n }\n }\n\n if (!deprecated && typeof source[prop] !== 'function') {\n dest[prop] = source[prop]\n }\n }\n return dest\n}\n\npointerExtend.prefixedPropREs = {\n webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n}\n\nexport default pointerExtend\n","export default (x, y) => Math.sqrt(x * x + y * y)\n","import browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport * as is from './is'\nimport pointerExtend from './pointerExtend'\n\nconst pointerUtils = {\n copyCoords (dest, src) {\n dest.page = dest.page || {}\n dest.page.x = src.page.x\n dest.page.y = src.page.y\n\n dest.client = dest.client || {}\n dest.client.x = src.client.x\n dest.client.y = src.client.y\n\n dest.timeStamp = src.timeStamp\n },\n\n setCoordDeltas (targetObj, prev, cur) {\n targetObj.page.x = cur.page.x - prev.page.x\n targetObj.page.y = cur.page.y - prev.page.y\n targetObj.client.x = cur.client.x - prev.client.x\n targetObj.client.y = cur.client.y - prev.client.y\n targetObj.timeStamp = cur.timeStamp - prev.timeStamp\n },\n\n setCoordVelocity (targetObj, delta) {\n const dt = Math.max(delta.timeStamp / 1000, 0.001)\n\n targetObj.page.x = delta.page.x / dt\n targetObj.page.y = delta.page.y / dt\n targetObj.client.x = delta.client.x / dt\n targetObj.client.y = delta.client.y / dt\n targetObj.timeStamp = dt\n },\n\n isNativePointer (pointer) {\n return (pointer instanceof dom.Event || pointer instanceof dom.Touch)\n },\n\n // Get specified X/Y coords for mouse or event.touches[0]\n getXY (type, pointer, xy) {\n xy = xy || {}\n type = type || 'page'\n\n xy.x = pointer[type + 'X']\n xy.y = pointer[type + 'Y']\n\n return xy\n },\n\n getPageXY (pointer: Interact.PointerType | Interact.InteractEvent, page?: Interact.Point) {\n page = page || { x: 0, y: 0 }\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n pointerUtils.getXY('screen', pointer, page)\n\n page.x += window.scrollX\n page.y += window.scrollY\n }\n else {\n pointerUtils.getXY('page', pointer, page)\n }\n\n return page\n },\n\n getClientXY (pointer, client) {\n client = client || {}\n\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n pointerUtils.getXY('screen', pointer, client)\n }\n else {\n pointerUtils.getXY('client', pointer, client)\n }\n\n return client\n },\n\n getPointerId (pointer) {\n return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier\n },\n\n setCoords (targetObj, pointers: any[], timeStamp: number) {\n const pointer = (pointers.length > 1\n ? pointerUtils.pointerAverage(pointers)\n : pointers[0])\n\n const tmpXY = {} as { x: number, y: number }\n\n pointerUtils.getPageXY(pointer, tmpXY)\n targetObj.page.x = tmpXY.x\n targetObj.page.y = tmpXY.y\n\n pointerUtils.getClientXY(pointer, tmpXY)\n targetObj.client.x = tmpXY.x\n targetObj.client.y = tmpXY.y\n\n targetObj.timeStamp = timeStamp\n },\n\n pointerExtend,\n\n getTouchPair (event) {\n const touches = []\n\n // array of touches is supplied\n if (is.array(event)) {\n touches[0] = event[0]\n touches[1] = event[1]\n }\n // an event\n else {\n if (event.type === 'touchend') {\n if (event.touches.length === 1) {\n touches[0] = event.touches[0]\n touches[1] = event.changedTouches[0]\n }\n else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\n }\n else {\n touches[0] = event.touches[0]\n touches[1] = event.touches[1]\n }\n }\n\n return touches\n },\n\n pointerAverage (pointers: PointerEvent[] | Event[]) {\n const average = {\n pageX : 0,\n pageY : 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop] += pointer[prop]\n }\n }\n for (const prop in average) {\n average[prop] /= pointers.length\n }\n\n return average\n },\n\n touchBBox (event: Event | Array<(Interact.PointerType) | TouchEvent>) {\n if (!(event as any).length &&\n !((event as TouchEvent).touches &&\n (event as TouchEvent).touches.length > 1)) {\n return null\n }\n\n const touches = pointerUtils.getTouchPair(event)\n const minX = Math.min(touches[0].pageX, touches[1].pageX)\n const minY = Math.min(touches[0].pageY, touches[1].pageY)\n const maxX = Math.max(touches[0].pageX, touches[1].pageX)\n const maxY = Math.max(touches[0].pageY, touches[1].pageY)\n\n return {\n x: minX,\n y: minY,\n left: minX,\n top: minY,\n right: maxX,\n bottom: maxY,\n width: maxX - minX,\n height: maxY - minY,\n }\n },\n\n touchDistance (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.getTouchPair(event)\n\n const dx = touches[0][sourceX] - touches[1][sourceX]\n const dy = touches[0][sourceY] - touches[1][sourceY]\n\n return hypot(dx, dy)\n },\n\n touchAngle (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.getTouchPair(event)\n const dx = touches[1][sourceX] - touches[0][sourceX]\n const dy = touches[1][sourceY] - touches[0][sourceY]\n const angle = 180 * Math.atan2(dy, dx) / Math.PI\n\n return angle\n },\n\n getPointerType (pointer) {\n return is.string(pointer.pointerType)\n ? pointer.pointerType\n : is.number(pointer.pointerType)\n ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType]\n // if the PointerEvent API isn't available, then the \"pointer\" must\n // be either a MouseEvent, TouchEvent, or Touch object\n : /touch/.test(pointer.type) || pointer instanceof dom.Touch\n ? 'touch'\n : 'mouse'\n },\n\n // [ event.target, event.currentTarget ]\n getEventTargets (event) {\n const path = is.func(event.composedPath) ? event.composedPath() : event.path\n\n return [\n domUtils.getActualElement(path ? path[0] : event.target),\n domUtils.getActualElement(event.currentTarget),\n ]\n },\n\n newCoords () {\n return {\n page : { x: 0, y: 0 },\n client : { x: 0, y: 0 },\n timeStamp: 0,\n }\n },\n\n coordsToEvent (coords: MockCoords) {\n const event = {\n coords,\n get page () { return this.coords.page },\n get client () { return this.coords.client },\n get timeStamp () { return this.coords.timeStamp },\n get pageX () { return this.coords.page.x },\n get pageY () { return this.coords.page.y },\n get clientX () { return this.coords.client.x },\n get clientY () { return this.coords.client.y },\n get pointerId () { return this.coords.pointerId },\n get target () { return this.coords.target },\n get type () { return this.coords.type },\n get pointerType () { return this.coords.pointerType },\n }\n\n return event as typeof event & Interact.PointerType & Interact.PointerEventType\n },\n}\n\nexport default pointerUtils\n\nexport interface MockCoords {\n page: Interact.Point\n client: Interact.Point\n timeStamp?: number\n pointerId?: any\n target?: any\n type?: string\n pointerType?: string\n}\n","import { contains } from './arr'\nimport * as domUtils from './domUtils'\nimport * as is from './is'\nimport pExtend from './pointerExtend'\nimport 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 (!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 (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 (selector, context, type, listener?, optionalArg?: any) {\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 = 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) {\n return is.object(param) ? param : { capture: param }\n}\n\nexport class FakeEvent implements Partial {\n currentTarget: EventTarget\n\n constructor (public originalEvent) {\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","export default function extend> (dest: U, source: T) {\n for (const prop in source) {\n (dest as unknown as T)[prop] = source[prop]\n }\n return dest as T & U\n}\n","import { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport * as is from './is'\n\nexport function getStringOptionResult (value, interactable, element) {\n if (!is.string(value)) {\n return null\n }\n\n if (value === 'parent') {\n value = parentNode(element)\n }\n else if (value === 'self') {\n value = interactable.getRect(element)\n }\n else {\n value = closest(element, value)\n }\n\n return value\n}\n\nexport function resolveRectLike (value, interactable?, element?, functionArgs?) {\n value = getStringOptionResult(value, interactable, element) || value\n\n if (is.func(value)) {\n value = value.apply(null, functionArgs)\n }\n\n if (is.element(value)) {\n value = getElementRect(value)\n }\n\n return value\n}\n\nexport function rectToXY (rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n}\n\nexport function xywhToTlbr (rect) {\n if (rect && !('left' in rect && 'top' in rect)) {\n rect = extend({}, rect)\n\n rect.left = rect.x || 0\n rect.top = rect.y || 0\n rect.right = rect.right || (rect.left + rect.width)\n rect.bottom = rect.bottom || (rect.top + rect.height)\n }\n\n return rect\n}\n\nexport function tlbrToXywh (rect) {\n if (rect && !('x' in rect && 'y' in rect)) {\n rect = extend({}, rect)\n\n rect.x = rect.left || 0\n rect.y = rect.top || 0\n rect.width = rect.width || (rect.right - rect.x)\n rect.height = rect.height || (rect.bottom - rect.y)\n }\n\n return rect\n}\n\nexport default {\n getStringOptionResult,\n resolveRectLike,\n rectToXY,\n xywhToTlbr,\n tlbrToXywh,\n}\n","import { rectToXY, resolveRectLike } from './rect'\n\nexport default function (target, element, action?) {\n const actionOptions = target.options[action]\n const actionOrigin = actionOptions && actionOptions.origin\n const origin = actionOrigin || target.options.origin\n\n const originRect = resolveRectLike(origin, target, element, [target && element])\n\n return rectToXY(originRect) || { x: 0, y: 0 }\n}\n","import extend from './extend'\nimport * as is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Interact.Listener[]\n}\n\nexport default function normalize (\n type: Interact.EventTypes,\n listeners?: Interact.ListenersArg | Interact.ListenersArg[],\n result?: NormalizedListeners,\n): NormalizedListeners {\n result = result || {}\n\n if (is.string(type) && type.search(' ') !== -1) {\n type = split(type)\n }\n\n if (is.array(type)) {\n return type.reduce(\n (acc, t) => extend(acc, normalize(t, listeners, result)),\n result\n )\n }\n\n // ({ type: fn }) -> ('', { type: fn })\n if (is.object(type)) {\n listeners = type\n type = ''\n }\n\n if (is.func(listeners)) {\n result[type] = result[type] || []\n result[type].push(listeners)\n }\n else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result)\n }\n }\n else if (is.object(listeners)) {\n for (const prefix in listeners) {\n const combinedTypes = split(prefix).map((p) => `${type}${p}`)\n\n normalize(combinedTypes, listeners[prefix], result)\n }\n }\n\n return result as NormalizedListeners\n}\n\nfunction split (type: string) {\n return type.trim().split(/ +/)\n}\n","let lastTime = 0\nlet request\nlet cancel\n\nfunction init (window) {\n request = window.requestAnimationFrame\n cancel = window.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = window[`${vendor}RequestAnimationFrame`]\n cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`]\n }\n }\n\n if (!request) {\n request = (callback) => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n // eslint-disable-next-line standard/no-callback-literal\n const token = setTimeout(() => { callback(currTime + timeToCall) },\n timeToCall)\n\n lastTime = currTime + timeToCall\n return token\n }\n\n cancel = (token) => clearTimeout(token)\n }\n}\n\nexport default {\n request: (callback) => request(callback),\n cancel: (token) => cancel(token),\n init,\n}\n","export type SignalListener = (signalArg: PartialSignalArg, sinalName?: string) => (void | boolean)\n\nexport interface SignalArg {\n interaction: Interact.Interaction\n Interactable: Interact.Interactable\n iEvent: Interact.InteractEvent\n element: Interact.EventTarget\n coords: Interact.Point\n event: Interact.PointerEventType\n phase: Interact.EventPhase\n [index: string]: any\n}\n\nexport type PartialSignalArg = Partial\n\nclass Signals {\n listeners: {\n [signalName: string]: SignalListener[],\n } = {}\n\n on (name: string, listener: SignalListener) {\n if (!this.listeners[name]) {\n this.listeners[name] = [listener]\n return\n }\n\n this.listeners[name].push(listener)\n }\n\n off (name: string, listener: SignalListener) {\n if (!this.listeners[name]) { return }\n\n const index = this.listeners[name].indexOf(listener)\n\n if (index !== -1) {\n this.listeners[name].splice(index, 1)\n }\n }\n\n fire (name: string, arg: Partial): void | false {\n const targetListeners = this.listeners[name]\n\n if (!targetListeners) { return }\n\n for (const listener of targetListeners) {\n if (listener(arg, name) === false) {\n return false\n }\n }\n }\n}\n\nexport default Signals\n","import * as arr from './arr'\nimport * as dom from './domUtils'\nimport * as is from './is'\nimport win from './window'\n\nexport function warnOnce (this: T, method: (...args: any) => any, message: string) {\n let warned = false\n\n // eslint-disable-next-line no-shadow\n return function (this: T) {\n if (!warned) {\n (win as any).window.console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nexport function _getQBezierValue (t: number, p1: number, p2: number, p3: number) {\n const iT = 1 - t\n return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3\n}\n\nexport function getQuadraticCurvePoint (\n startX: number, startY: number, cpX: number, cpY: number, endX: number, endY: number, position: number) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nexport function easeOutQuad (t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport function copyAction (dest: Interact.ActionProps, src: Interact.ActionProps) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport { default as browser } from './browser'\nexport { default as clone } from './clone'\nexport { default as events } from './events'\nexport { default as extend } from './extend'\nexport { default as getOriginXY } from './getOriginXY'\nexport { default as hypot } from './hypot'\nexport { default as normalizeListeners } from './normalizeListeners'\nexport { default as pointer } from './pointerUtils'\nexport { default as raf } from './raf'\nexport { default as rect } from './rect'\nexport { default as Signals } from './Signals'\nexport { win, arr, dom, is }\n","// tslint:disable no-empty-interface\n\nexport interface Defaults {\n base: BaseDefaults\n perAction: PerActionDefaults\n actions: ActionDefaults\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ActionDefaults {\n}\n\nexport interface BaseDefaults {\n preventDefault?: 'auto' | 'never' | string\n deltaSource?: 'page' | 'client'\n context?: Window | Document | Element\n [key: string]: any\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Interact.Point | string | Element\n listeners?: Interact.Listeners\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n}\n\nexport type Options = Partial & Partial & {\n [P in keyof ActionDefaults]?: Partial\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, Interact.OrBoolean {}\n\nexport const defaults: Defaults = {\n base: {\n preventDefault: 'auto',\n deltaSource: 'page',\n },\n\n perAction: {\n enabled: false,\n origin: { x: 0, y: 0 },\n },\n\n actions: {} as ActionDefaults,\n}\n\nexport default defaults\n","import * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport normalize, { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\nimport { EventPhase, InteractEvent } from './InteractEvent'\nimport { ActionName } from './scope'\n\nfunction fireUntilImmediateStopped<\nT extends ActionName,\nP extends EventPhase,\n> (event: InteractEvent, listeners: Interact.Listener[]) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) { break }\n\n listener(event)\n }\n}\n\nclass Eventable {\n options: any\n types: NormalizedListeners = {}\n propagationStopped = false\n immediatePropagationStopped = false\n global: any\n\n constructor (options?: { [index: string]: any }) {\n this.options = extend({}, options || {})\n }\n\n fire (event: any) {\n let listeners\n const global = this.global\n\n // Interactable#on() listeners\n // tslint:disable no-conditional-assignment\n if ((listeners = this.types[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n\n // interact.on() listeners\n if (!event.propagationStopped && global && (listeners = global[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n }\n\n on (type: string, listener: Interact.ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n this.types[type] = arr.merge(this.types[type] || [], listeners[type])\n }\n }\n\n off (type: string, listener: Interact.ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n const eventList = this.types[type]\n\n if (!eventList || !eventList.length) { continue }\n\n for (const subListener of listeners[type]) {\n const index = eventList.indexOf(subListener)\n\n if (index !== -1) {\n eventList.splice(index, 1)\n }\n }\n }\n }\n}\n\nexport default Eventable\n","import * as arr from '@interactjs/utils/arr'\nimport browser from '@interactjs/utils/browser'\nimport clone from '@interactjs/utils/clone'\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\nimport { ActionDefaults, Defaults, Options } from './defaultOptions'\nimport Eventable from './Eventable'\nimport { Actions } from './scope'\n\ntype IgnoreValue = string | Element | boolean\n\n/** */\nexport class Interactable implements Partial {\n protected get _defaults (): Defaults {\n return {\n base: {},\n perAction: {},\n actions: {} as ActionDefaults,\n }\n }\n\n readonly options!: Required\n readonly _actions: Actions\n readonly target: Interact.Target\n readonly events = new Eventable()\n readonly _context: Document | Element\n readonly _win: Window\n readonly _doc: Document\n\n /** */\n constructor (target: Interact.Target, options: any, defaultContext: Document | Element) {\n this._actions = options.actions\n this.target = target\n this._context = options.context || defaultContext\n this._win = getWindow(trySelector(target) ? this._context : target)\n this._doc = this._win.document\n\n this.set(options)\n }\n\n setOnEvents (actionName: string, phases: NonNullable) {\n if (is.func(phases.onstart)) { this.on(`${actionName}start`, phases.onstart) }\n if (is.func(phases.onmove)) { this.on(`${actionName}move`, phases.onmove) }\n if (is.func(phases.onend)) { this.on(`${actionName}end`, phases.onend) }\n if (is.func(phases.oninertiastart)) { this.on(`${actionName}inertiastart`, phases.oninertiastart) }\n\n return this\n }\n\n updatePerActionListeners (actionName, prev, cur) {\n if (is.array(prev) || is.object(prev)) {\n this.off(actionName, prev)\n }\n\n if (is.array(cur) || is.object(cur)) {\n this.on(actionName, cur)\n }\n }\n\n setPerAction (actionName, options: Interact.OrBoolean) {\n const defaults = this._defaults\n\n // for all the default per-action options\n for (const optionName in options) {\n const actionOptions = this.options[actionName]\n const optionValue = options[optionName]\n const isArray = is.array(optionValue)\n\n // remove old event listeners and add new ones\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue)\n }\n\n // if the option value is an array\n if (isArray) {\n actionOptions[optionName] = arr.from(optionValue)\n }\n // if the option value is an object\n else if (!isArray && is.plainObject(optionValue)) {\n // copy the object\n actionOptions[optionName] = extend(\n actionOptions[optionName] || {},\n clone(optionValue))\n\n // set anabled field to true if it exists in the defaults\n if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n actionOptions[optionName].enabled = optionValue.enabled !== false\n }\n }\n // if the option value is a boolean and the default is an object\n else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n actionOptions[optionName].enabled = optionValue\n }\n // if it's anything else, do a plain assignment\n else {\n actionOptions[optionName] = optionValue\n }\n }\n }\n\n /**\n * The default function to get an Interactables bounding rect. Can be\n * overridden using {@link Interactable.rectChecker}.\n *\n * @param {Element} [element] The element to measure.\n * @return {object} The object's bounding rectangle.\n */\n getRect (element: Element) {\n element = element || (is.element(this.target)\n ? this.target\n : null)\n\n if (is.string(this.target)) {\n element = element || this._context.querySelector(this.target)\n }\n\n return getElementRect(element)\n }\n\n /**\n * Returns or sets the function used to calculate the interactable's\n * element's rectangle\n *\n * @param {function} [checker] A function which returns this Interactable's\n * bounding rectangle. See {@link Interactable.getRect}\n * @return {function | object} The checker function or this Interactable\n */\n rectChecker (checker: (element: Element) => any) {\n if (is.func(checker)) {\n this.getRect = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.getRect\n\n return this\n }\n\n return this.getRect\n }\n\n _backCompatOption (optionName, newValue) {\n if (trySelector(newValue) || is.object(newValue)) {\n this.options[optionName] = newValue\n\n for (const action of this._actions.names) {\n this.options[action][optionName] = newValue\n }\n\n return this\n }\n\n return this.options[optionName]\n }\n\n /**\n * Gets or sets the origin of the Interactable's element. The x and y\n * of the origin will be subtracted from action event coordinates.\n *\n * @param {Element | object | string} [origin] An HTML or SVG Element whose\n * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n * or any CSS selector\n *\n * @return {object} The current origin or this Interactable\n */\n origin (newValue) {\n return this._backCompatOption('origin', newValue)\n }\n\n /**\n * Returns or sets the mouse coordinate types used to calculate the\n * movement of the pointer.\n *\n * @param {string} [newValue] Use 'client' if you will be scrolling while\n * interacting; Use 'page' if you want autoScroll to work\n * @return {string | object} The current deltaSource or this Interactable\n */\n deltaSource (newValue) {\n if (newValue === 'page' || newValue === 'client') {\n this.options.deltaSource = newValue\n\n return this\n }\n\n return this.options.deltaSource\n }\n\n /**\n * Gets the selector context Node of the Interactable. The default is\n * `window.document`.\n *\n * @return {Node} The context Node of this Interactable\n */\n context () {\n return this._context\n }\n\n inContext (element) {\n return (this._context === element.ownerDocument ||\n nodeContains(this._context, element))\n }\n\n testIgnoreAllow (this: Interactable, options: { ignoreFrom: IgnoreValue, allowFrom: IgnoreValue }, targetNode: Node, eventTarget: Element) {\n return (!this.testIgnore(options.ignoreFrom, targetNode, eventTarget) &&\n this.testAllow(options.allowFrom, targetNode, eventTarget))\n }\n\n testAllow (this: Interactable, allowFrom: IgnoreValue, targetNode: Node, element: Element) {\n if (!allowFrom) { return true }\n\n if (!is.element(element)) { return false }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, targetNode)\n }\n else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element)\n }\n\n return false\n }\n\n testIgnore (this: Interactable, ignoreFrom: IgnoreValue, targetNode: Node, element: Element) {\n if (!ignoreFrom || !is.element(element)) { return false }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, targetNode)\n }\n else if (is.element(ignoreFrom)) {\n return nodeContains(ignoreFrom, element)\n }\n\n return false\n }\n\n /**\n * Calls listeners for the given InteractEvent type bound globally\n * and directly to this Interactable\n *\n * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n * Interactable\n * @return {Interactable} this Interactable\n */\n fire (iEvent) {\n this.events.fire(iEvent)\n\n return this\n }\n\n _onOff (method: 'on' | 'off', typeArg: Interact.EventTypes, listenerArg?: Interact.ListenersArg | null, options?: any) {\n if (is.object(typeArg) && !is.array(typeArg)) {\n options = listenerArg\n listenerArg = null\n }\n\n const addRemove = method === 'on' ? 'add' : 'remove'\n const listeners = normalizeListeners(typeArg, listenerArg)\n\n for (let type in listeners) {\n if (type === 'wheel') { type = browser.wheelEvent }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (arr.contains(this._actions.eventTypes, type)) {\n this.events[method](type, listener)\n }\n // delegated event\n else if (is.string(this.target)) {\n events[`${addRemove}Delegate`](this.target, this._context, type, listener, options)\n }\n // remove listener from this Interatable's element\n else {\n (events[addRemove] as typeof events.remove)(this.target, type, listener, options)\n }\n }\n }\n\n return this\n }\n\n /**\n * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n *\n * @param {string | array | object} types The types of events to listen\n * for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * addEventListener\n * @return {Interactable} This Interactable\n */\n on (types: Interact.EventTypes, listener?: Interact.ListenersArg, options?: any) {\n return this._onOff('on', types, listener, options)\n }\n\n /**\n * Removes an InteractEvent, pointerEvent or DOM event listener.\n *\n * @param {string | array | object} types The types of events that were\n * listened for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * removeEventListener\n * @return {Interactable} This Interactable\n */\n off (types: string | string[] | Interact.EventTypes, listener?: Interact.ListenersArg, options?: any) {\n return this._onOff('off', types, listener, options)\n }\n\n /**\n * Reset the options of this Interactable\n *\n * @param {object} options The new settings to apply\n * @return {object} This Interactable\n */\n set (options: Interact.OptionsArg) {\n const defaults = this._defaults\n\n if (!is.object(options)) {\n options = {}\n }\n\n (this.options as Required) = clone(defaults.base) as Required\n\n for (const actionName in this._actions.methodDict) {\n const methodName = this._actions.methodDict[actionName]\n\n this.options[actionName] = {}\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n\n this[methodName](options[actionName])\n }\n\n for (const setting in options) {\n if (is.func(this[setting])) {\n this[setting](options[setting])\n }\n }\n\n return this\n }\n\n /**\n * Remove this interactable from the list of interactables and remove it's\n * action capabilities and event listeners\n *\n * @return {interact}\n */\n unset () {\n events.remove(this.target as Node, 'all')\n\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in events.delegatedEvents) {\n const delegated = events.delegatedEvents[type]\n\n if (delegated.selectors[0] === this.target &&\n delegated.contexts[0] === this._context) {\n delegated.selectors.splice(0, 1)\n delegated.contexts.splice(0, 1)\n delegated.listeners.splice(0, 1)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegated[type] = null\n }\n }\n\n events.remove(this._context, type, events.delegateListener)\n events.remove(this._context, type, events.delegateUseCapture, true)\n }\n }\n else {\n events.remove(this.target as Node, 'all')\n }\n }\n}\n\nexport default Interactable\n","import * as arr from '@interactjs/utils/arr'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport Signals from '@interactjs/utils/Signals'\n\nexport default class InteractableSet {\n signals = new Signals()\n\n // all set interactables\n list: Interact.Interactable[] = []\n\n selectorMap: {\n [selector: string]: Array<{ context: Document | Element, interactable: Interact.Interactable }>\n } = {}\n\n constructor (protected scope: Interact.Scope) {\n this.signals.on('unset', ({ interactable }) => {\n const { target, _context: context } = interactable\n const targetMappings = is.string(target)\n ? this.selectorMap[target]\n : target[this.scope.id]\n\n const targetIndex = targetMappings.findIndex((m) => m.context === context)\n if (targetMappings[targetIndex]) {\n // Destroying mappingInfo's context and interactable\n targetMappings[targetIndex].context = null\n targetMappings[targetIndex].interactable = null\n }\n targetMappings.splice(targetIndex, 1)\n })\n }\n\n new (target: Interact.Target, options?: any): Interact.Interactable {\n options = extend(options || {}, {\n actions: this.scope.actions,\n })\n const interactable = new this.scope.Interactable(target, options, this.scope.document)\n const mappingInfo = { context: interactable._context, interactable }\n\n this.scope.addDocument(interactable._doc)\n this.list.push(interactable)\n\n if (is.string(target)) {\n if (!this.selectorMap[target]) { this.selectorMap[target] = [] }\n this.selectorMap[target].push(mappingInfo)\n } else {\n if (!interactable.target[this.scope.id]) {\n Object.defineProperty(target, this.scope.id, {\n value: [],\n configurable: true,\n })\n }\n\n target[this.scope.id].push(mappingInfo)\n }\n\n this.signals.fire('new', {\n target,\n options,\n interactable,\n win: this.scope._win,\n })\n\n return interactable\n }\n\n get (target: Interact.Target, options) {\n const context = (options && options.context) || this.scope.document\n const isSelector = is.string(target)\n const targetMappings = isSelector\n ? this.selectorMap[target as string]\n : target[this.scope.id]\n\n if (!targetMappings) { return null }\n\n const found = arr.find(\n targetMappings,\n (m) => m.context === context &&\n (isSelector || m.interactable.inContext(target)))\n\n return found && found.interactable\n }\n\n forEachMatch (node: Node, callback: (interactable: any) => any) {\n for (const interactable of this.list) {\n let ret\n\n if ((is.string(interactable.target)\n // target is a selector and the element matches\n ? (is.element(node) && domUtils.matchesSelector(node, interactable.target))\n // target is the element\n : node === interactable.target) &&\n // the element is in context\n (interactable.inContext(node))) {\n ret = callback(interactable)\n }\n\n if (ret !== undefined) {\n return ret\n }\n }\n }\n}\n","import Interactable from './Interactable'\nimport Interaction from './Interaction'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class BaseEvent {\n type: string\n target: EventTarget\n currentTarget: EventTarget\n interactable: Interactable\n _interaction: Interaction\n timeStamp: any\n immediatePropagationStopped = false\n propagationStopped = false\n\n get interaction () {\n return this._interaction._proxy\n }\n\n constructor (interaction) {\n this._interaction = interaction\n }\n\n preventDefault () {}\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n\nexport default BaseEvent\n","import extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport BaseEvent from './BaseEvent'\nimport defaults from './defaultOptions'\nimport Interaction from './Interaction'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class InteractEvent<\n T extends ActionName = any,\n P extends EventPhase = EventPhase._NONE,\n> extends BaseEvent {\n target: Element\n currentTarget: Element\n relatedTarget: Element\n screenX?: number\n screenY?: number\n button: number\n buttons: number\n ctrlKey: boolean\n shiftKey: boolean\n altKey: boolean\n metaKey: boolean\n page: Interact.Point\n client: Interact.Point\n delta: Interact.Point\n rect: Interact.FullRect\n x0: number\n y0: number\n t0: number\n dt: number\n duration: number\n clientX0: number\n clientY0: number\n velocity: Interact.Point\n speed: number\n swipe: ReturnType['getSwipe']>\n timeStamp: any\n // drag\n dragEnter?: Element\n dragLeave?: Element\n // resize\n axes?: Interact.Point\n preEnd?: boolean\n\n /** */\n constructor (\n interaction: Interaction,\n event: Interact.PointerEventType,\n actionName: T,\n phase: P,\n element: Element,\n related?: Element,\n preEnd?: boolean,\n type?: string,\n ) {\n super(interaction)\n\n element = element || interaction.element\n\n const target = interaction.interactable\n // FIXME: add deltaSource to defaults\n const deltaSource = (((target && target.options) || defaults) as any).deltaSource as 'page' | 'client'\n const origin = getOriginXY(target, element, actionName)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const prevEvent = starting ? this : interaction.prevEvent\n const coords = starting\n ? interaction.coords.start\n : ending\n ? { page: prevEvent.page, client: prevEvent.client, timeStamp: interaction.coords.cur.timeStamp }\n : interaction.coords.cur\n\n this.page = extend({}, coords.page)\n this.client = extend({}, coords.client)\n this.rect = extend({}, interaction.rect)\n this.timeStamp = coords.timeStamp\n\n if (!ending) {\n this.page.x -= origin.x\n this.page.y -= origin.y\n\n this.client.x -= origin.x\n this.client.y -= origin.y\n }\n\n this.ctrlKey = event.ctrlKey\n this.altKey = event.altKey\n this.shiftKey = event.shiftKey\n this.metaKey = event.metaKey\n this.button = (event as MouseEvent).button\n this.buttons = (event as MouseEvent).buttons\n this.target = element\n this.currentTarget = element\n this.relatedTarget = related || null\n this.preEnd = preEnd\n this.type = type || (actionName + (phase || ''))\n this.interactable = target\n\n this.t0 = starting\n ? interaction.pointers[interaction.pointers.length - 1].downTime\n : prevEvent.t0\n\n this.x0 = interaction.coords.start.page.x - origin.x\n this.y0 = interaction.coords.start.page.y - origin.y\n this.clientX0 = interaction.coords.start.client.x - origin.x\n this.clientY0 = interaction.coords.start.client.y - origin.y\n\n if (starting || ending) {\n this.delta = { x: 0, y: 0 }\n }\n else {\n this.delta = {\n x: this[deltaSource].x - prevEvent[deltaSource].x,\n y: this[deltaSource].y - prevEvent[deltaSource].y,\n }\n }\n\n this.dt = interaction.coords.delta.timeStamp\n this.duration = this.timeStamp - this.t0\n\n // velocity and speed in pixels per second\n this.velocity = extend({}, interaction.coords.velocity[deltaSource])\n this.speed = hypot(this.velocity.x, this.velocity.y)\n\n this.swipe = (ending || phase === 'inertiastart') ? this.getSwipe() : null\n }\n\n get pageX () { return this.page.x }\n set pageX (value) { this.page.x = value }\n get pageY () { return this.page.y }\n set pageY (value) { this.page.y = value }\n\n get clientX () { return this.client.x }\n set clientX (value) { this.client.x = value }\n get clientY () { return this.client.y }\n set clientY (value) { this.client.y = value }\n\n get dx () { return this.delta.x }\n set dx (value) { this.delta.x = value }\n get dy () { return this.delta.y }\n set dy (value) { this.delta.y = value }\n\n get velocityX () { return this.velocity.x }\n set velocityX (value) { this.velocity.x = value }\n get velocityY () { return this.velocity.y }\n set velocityY (value) { this.velocity.y = value }\n\n getSwipe () {\n const interaction = this._interaction\n\n if (interaction.prevEvent.speed < 600 ||\n this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n return null\n }\n\n let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI\n const overlap = 22.5\n\n if (angle < 0) {\n angle += 360\n }\n\n const left = 135 - overlap <= angle && angle < 225 + overlap\n const up = 225 - overlap <= angle && angle < 315 + overlap\n\n const right = !left && (315 - overlap <= angle || angle < 45 + overlap)\n const down = !up && 45 - overlap <= angle && angle < 135 + overlap\n\n return {\n up,\n down,\n left,\n right,\n angle,\n speed: interaction.prevEvent.speed,\n velocity: {\n x: interaction.prevEvent.velocityX,\n y: interaction.prevEvent.velocityY,\n },\n }\n }\n\n preventDefault () {}\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n}\n\nexport default InteractEvent\n","export class PointerInfo {\n constructor (\n public id: number,\n public pointer: Interact.PointerType,\n public event: Interact.PointerEventType,\n public downTime: number,\n public downTarget: Node,\n ) {}\n}\n\nexport default PointerInfo\n","import * as dom from '@interactjs/utils/domUtils'\n\nexport interface SearchDetails {\n pointer: Interact.PointerType\n pointerId: number\n pointerType: string\n eventType: string\n eventTarget: Interact.EventTarget\n curEventTarget: Interact.EventTarget\n scope: Interact.Scope\n}\n\nconst finder = {\n methodOrder: [ 'simulationResume', 'mouseOrPen', 'hasPointer', 'idle' ],\n\n search (details) {\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details)\n\n if (interaction) {\n return interaction\n }\n }\n },\n\n // try to resume simulation with a new pointer\n simulationResume ({ pointerType, eventType, eventTarget, scope }: SearchDetails) {\n if (!/down|start/i.test(eventType)) {\n return null\n }\n\n for (const interaction of scope.interactions.list) {\n let element = eventTarget\n\n if (interaction.simulation && interaction.simulation.allowResume &&\n (interaction.pointerType === pointerType)) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction\n }\n element = dom.parentNode(element)\n }\n }\n }\n\n return null\n },\n\n // if it's a mouse or pen interaction\n mouseOrPen ({ pointerId, pointerType, eventType, scope }: SearchDetails) {\n if (pointerType !== 'mouse' && pointerType !== 'pen') {\n return null\n }\n\n let firstNonActive\n\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType) {\n // if it's a down event, skip interactions with running simulations\n if (interaction.simulation && !hasPointerId(interaction, pointerId)) { continue }\n\n // if the interaction is active, return it immediately\n if (interaction.interacting()) {\n return interaction\n }\n // otherwise save it and look for another active interaction\n else if (!firstNonActive) {\n firstNonActive = interaction\n }\n }\n }\n\n // if no active mouse interaction was found use the first inactive mouse\n // interaction\n if (firstNonActive) {\n return firstNonActive\n }\n\n // find any mouse or pen interaction.\n // ignore the interaction if the eventType is a *down, and a simulation\n // is active\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get interaction that has this pointer\n hasPointer ({ pointerId, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n if (hasPointerId(interaction, pointerId)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get first idle interaction with a matching pointerType\n idle ({ pointerType, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n // if there's already a pointer held down\n if (interaction.pointers.length === 1) {\n const target = interaction.interactable\n // don't add this pointer if there is a target interactable and it\n // isn't gesturable\n if (target && !target.options.gesture.enabled) {\n continue\n }\n }\n // maximum of 2 pointers per interaction\n else if (interaction.pointers.length >= 2) {\n continue\n }\n\n if (!interaction.interacting() && (pointerType === interaction.pointerType)) {\n return interaction\n }\n }\n\n return null\n },\n}\n\nfunction hasPointerId (interaction: Interact.Interaction, pointerId: number) {\n return interaction.pointers.some(({ id }) => id === pointerId)\n}\n\nexport default finder\n","import { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drag: Interact.DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Drag]?: typeof drag\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Drag = 'drag'\n }\n}\n\n(ActionName as any).Drag = 'drag'\n\nexport type DragEvent = Interact.InteractEvent\n\nexport type DraggableMethod = Interact.ActionMethod\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('before-action-move', beforeMove)\n interactions.signals.on('action-resume', beforeMove)\n\n // dragmove\n interactions.signals.on('action-move', move)\n\n Interactable.prototype.draggable = drag.draggable\n\n actions[ActionName.Drag] = drag\n actions.names.push(ActionName.Drag)\n arr.merge(actions.eventTypes, [\n 'dragstart',\n 'dragmove',\n 'draginertiastart',\n 'dragresume',\n 'dragend',\n ])\n actions.methodDict.drag = 'draggable'\n\n defaults.actions.drag = drag.defaults\n}\n\nfunction beforeMove ({ interaction }) {\n if (interaction.prepared.name !== 'drag') { return }\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x') {\n interaction.coords.cur.page.y = interaction.coords.start.page.y\n interaction.coords.cur.client.y = interaction.coords.start.client.y\n\n interaction.coords.velocity.client.y = 0\n interaction.coords.velocity.page.y = 0\n }\n else if (axis === 'y') {\n interaction.coords.cur.page.x = interaction.coords.start.page.x\n interaction.coords.cur.client.x = interaction.coords.start.client.x\n\n interaction.coords.velocity.client.x = 0\n interaction.coords.velocity.page.x = 0\n }\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'drag') { return }\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x' || axis === 'y') {\n const opposite = axis === 'x' ? 'y' : 'x'\n\n iEvent.page[opposite] = interaction.coords.start.page[opposite]\n iEvent.client[opposite] = interaction.coords.start.client[opposite]\n iEvent.delta[opposite] = 0\n }\n}\n\n/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\nconst draggable: DraggableMethod = function draggable (this: Interact.Interactable, options?: Interact.DraggableOptions | boolean): any {\n if (is.object(options)) {\n this.options.drag.enabled = options.enabled !== false\n this.setPerAction('drag', options)\n this.setOnEvents('drag', options)\n\n if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n this.options.drag.lockAxis = options.lockAxis\n }\n if (/^(xy|x|y)$/.test(options.startAxis)) {\n this.options.drag.startAxis = options.startAxis\n }\n\n return this\n }\n\n if (is.bool(options)) {\n this.options.drag.enabled = options\n\n return this\n }\n\n return this.options.drag\n}\n\nconst drag: Interact.Plugin = {\n id: 'actions/drag',\n install,\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis : 'xy',\n lockAxis : 'xy',\n } as Interact.DropzoneOptions,\n\n checker (_pointer, _event, interactable) {\n const dragOptions = interactable.options.drag\n\n return dragOptions.enabled\n ? {\n name: 'drag',\n axis: (dragOptions.lockAxis === 'start'\n ? dragOptions.startAxis\n : dragOptions.lockAxis),\n }\n : null\n },\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n","import BaseEvent from '@interactjs/core/BaseEvent'\nimport Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport Interaction from '@interactjs/core/Interaction'\nimport { ActionName } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\n\nclass DropEvent extends BaseEvent {\n target: Element\n dropzone: Interactable\n dragEvent: InteractEvent\n relatedTarget: Element\n draggable: Interactable\n timeStamp: number\n propagationStopped = false\n immediatePropagationStopped = false\n\n /**\n * Class of events fired on dropzones during drags with acceptable targets.\n */\n constructor (dropState: Interaction['dropState'], dragEvent: InteractEvent, type: string) {\n super(dragEvent._interaction)\n\n const { element, dropzone } = type === 'dragleave'\n ? dropState.prev\n : dropState.cur\n\n this.type = type\n this.target = element\n this.currentTarget = element\n this.dropzone = dropzone\n this.dragEvent = dragEvent\n this.relatedTarget = dragEvent.target\n this.draggable = dragEvent.interactable\n this.timeStamp = dragEvent.timeStamp\n }\n\n /**\n * If this is a `dropactivate` event, the dropzone element will be\n * deactivated.\n *\n * If this is a `dragmove` or `dragenter`, a `dragleave` will be fired on the\n * dropzone element and more.\n */\n reject () {\n const { dropState } = this._interaction\n\n if (\n (this.type !== 'dropactivate') && (\n !this.dropzone ||\n dropState.cur.dropzone !== this.dropzone ||\n dropState.cur.element !== this.target)) {\n return\n }\n\n dropState.prev.dropzone = this.dropzone\n dropState.prev.element = this.target\n\n dropState.rejected = true\n dropState.events.enter = null\n\n this.stopImmediatePropagation()\n\n if (this.type === 'dropactivate') {\n const activeDrops = dropState.activeDrops\n const index = arr.findIndex(activeDrops, ({ dropzone, element }) =>\n dropzone === this.dropzone && element === this.target)\n\n dropState.activeDrops = [\n ...activeDrops.slice(0, index),\n ...activeDrops.slice(index + 1),\n ]\n\n const deactivateEvent = new DropEvent(dropState, this.dragEvent, 'dropdeactivate')\n\n deactivateEvent.dropzone = this.dropzone\n deactivateEvent.target = this.target\n\n this.dropzone.fire(deactivateEvent)\n }\n else {\n this.dropzone.fire(new DropEvent(dropState, this.dragEvent, 'dragleave'))\n }\n }\n\n preventDefault () {}\n\n stopPropagation () {\n this.propagationStopped = true\n }\n\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n\nexport default DropEvent\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport drag from '../drag'\nimport DropEvent from './DropEvent'\n\nexport interface DropzoneMethod {\n (options: Interact.DropzoneOptions | boolean): Interact.Interactable\n (): Interact.DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interactable,\n draggableElement: Element,\n dropElemen: Element,\n rect: any\n ) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n dropState?: {\n cur: {\n dropzone: Interactable, // the dropzone a drag target might be dropped into\n element: Element, // the element at the time of checking\n },\n prev: {\n dropzone: Interactable, // the dropzone that was recently dragged away from\n element: Element, // the element at the time of checking\n },\n rejected: boolean, // wheather the potential drop was rejected from a listener\n events: any, // the drop events related to the current drag event\n activeDrops: Array<{\n dropzone: Interactable\n element: Element\n rect: Interact.Rect\n }>,\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drop: Interact.DropzoneOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n dynamicDrop?: boolean\n }\n}\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n dynamicDrop: (newValue?: boolean) => boolean | Interact.interact\n }\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interact,\n /** @lends Interactable */\n Interactable, // eslint-disable-line no-shadow\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n interactions.signals.on('before-action-start', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n interaction.dropState = {\n cur: {\n dropzone: null,\n element: null,\n },\n prev: {\n dropzone: null,\n element: null,\n },\n rejected: null,\n events: null,\n activeDrops: null,\n }\n })\n\n interactions.signals.on('after-action-start', ({ interaction, event, iEvent: dragEvent }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n // reset active dropzones\n dropState.activeDrops = null\n dropState.events = null\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n dropState.events = getDropEvents(interaction, event, dragEvent)\n\n if (dropState.events.activate) {\n fireActivationEvents(dropState.activeDrops, dropState.events.activate)\n }\n })\n\n // FIXME proper signal types\n interactions.signals.on('action-move', (arg) => onEventCreated(arg as any, scope))\n interactions.signals.on('action-end', (arg) => onEventCreated(arg as any, scope))\n\n interactions.signals.on('after-action-move', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n interaction.dropState.events = {}\n })\n\n interactions.signals.on('after-action-end', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n if (dropState) {\n dropState.activeDrops = null\n dropState.events = null\n dropState.cur.dropzone = null\n dropState.cur.element = null\n dropState.prev.dropzone = null\n dropState.prev.element = null\n dropState.rejected = false\n }\n })\n\n /**\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n }\n\n /**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */\n Interactable.prototype.dropCheck = function (this: Interact.Interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\n return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect)\n }\n\n /**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\n interact.dynamicDrop = function (newValue?: boolean) {\n if (utils.is.bool(newValue)) {\n // if (dragging && scope.dynamicDrop !== newValue && !newValue) {\n // calcRects(dropzones)\n // }\n\n scope.dynamicDrop = newValue\n\n return interact\n }\n return scope.dynamicDrop\n }\n\n utils.arr.merge(actions.eventTypes, [\n 'dragenter',\n 'dragleave',\n 'dropactivate',\n 'dropdeactivate',\n 'dropmove',\n 'drop',\n ])\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }, draggableElement) {\n const drops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const dropzone of interactables.list) {\n if (!dropzone.options.drop.enabled) { continue }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if ((utils.is.element(accept) && accept !== draggableElement) ||\n (utils.is.string(accept) &&\n !utils.dom.matchesSelector(draggableElement, accept)) ||\n (utils.is.func(accept) && !accept({ dropzone, draggableElement }))) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = utils.is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : utils.is.array(dropzone.target) ? dropzone.target : [dropzone.target]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops, event) {\n // loop through all active dropzones and trigger event\n for (const { dropzone, element } of activeDrops) {\n event.dropzone = dropzone\n\n // set current element as event target\n event.target = element\n dropzone.fire(event)\n event.propagationStopped = event.immediatePropagationStopped = false\n }\n}\n\n// return a new array of possible drops. getActiveDrops should always be\n// called when a drag has just started or a drag event happens while\n// dynamicDrop is true\nfunction getActiveDrops (scope: Scope, dragElement: Element) {\n // get dropzones and their elements that could receive the draggable\n const activeDrops = collectDrops(scope, dragElement)\n\n for (const activeDrop of activeDrops) {\n activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element)\n }\n\n return activeDrops\n}\n\nfunction getDrop ({ dropState, interactable: draggable, element: dragElement }: Partial, dragEvent, pointerEvent) {\n const validDrops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const { dropzone, element: dropzoneElement, rect } of dropState.activeDrops) {\n validDrops.push(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null)\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = utils.dom.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interact.Interaction, _pointerEvent, dragEvent) {\n const { dropState } = interaction\n const dropEvents = {\n enter : null,\n leave : null,\n activate : null,\n deactivate: null,\n move : null,\n drop : null,\n }\n\n if (dragEvent.type === 'dragstart') {\n dropEvents.activate = new DropEvent(dropState, dragEvent, 'dropactivate')\n\n dropEvents.activate.target = null\n dropEvents.activate.dropzone = null\n }\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = new DropEvent(dropState, dragEvent, 'dropdeactivate')\n\n dropEvents.deactivate.target = null\n dropEvents.deactivate.dropzone = null\n }\n\n if (dropState.rejected) {\n return dropEvents\n }\n\n if (dropState.cur.element !== dropState.prev.element) {\n // if there was a previous dropzone, create a dragleave event\n if (dropState.prev.dropzone) {\n dropEvents.leave = new DropEvent(dropState, dragEvent, 'dragleave')\n\n dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element\n dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone\n }\n // if dropzone is not null, create a dragenter event\n if (dropState.cur.dropzone) {\n dropEvents.enter = new DropEvent(dropState, dragEvent, 'dragenter')\n\n dragEvent.dragEnter = dropState.cur.element\n dragEvent.dropzone = dropState.cur.dropzone\n }\n }\n\n if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {\n dropEvents.drop = new DropEvent(dropState, dragEvent, 'drop')\n\n dragEvent.dropzone = dropState.cur.dropzone\n dragEvent.relatedTarget = dropState.cur.element\n }\n if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {\n dropEvents.move = new DropEvent(dropState, dragEvent, 'dropmove')\n\n dropEvents.move.dragmove = dragEvent\n dragEvent.dropzone = dropState.cur.dropzone\n }\n\n return dropEvents\n}\n\nfunction fireDropEvents (interaction: Interact.Interaction, events) {\n const { dropState } = interaction\n const {\n activeDrops,\n cur,\n prev,\n } = dropState\n\n if (events.leave) { prev.dropzone.fire(events.leave) }\n if (events.move) { cur.dropzone.fire(events.move) }\n if (events.enter) { cur.dropzone.fire(events.enter) }\n if (events.drop) { cur.dropzone.fire(events.drop) }\n\n if (events.deactivate) {\n fireActivationEvents(activeDrops, events.deactivate)\n }\n\n dropState.prev.dropzone = cur.dropzone\n dropState.prev.element = cur.element\n}\n\nfunction onEventCreated ({ interaction, iEvent, event }: Interact.SignalArg, scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return }\n\n const { dropState } = interaction\n\n if (scope.dynamicDrop) {\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n }\n\n const dragEvent = iEvent\n const dropResult = getDrop(interaction, dragEvent, event)\n\n // update rejected status\n dropState.rejected = dropState.rejected &&\n !!dropResult &&\n dropResult.dropzone === dropState.cur.dropzone &&\n dropResult.element === dropState.cur.element\n\n dropState.cur.dropzone = dropResult && dropResult.dropzone\n dropState.cur.element = dropResult && dropResult.element\n\n dropState.events = getDropEvents(interaction, event, dragEvent)\n}\n\nfunction dropzoneMethod (interactable: Interact.Interactable): Interact.DropzoneOptions\nfunction dropzoneMethod (interactable: Interact.Interactable, options: Interact.DropzoneOptions | boolean)\nfunction dropzoneMethod (interactable: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n if (utils.is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = utils.normalizeListeners(options.listeners)\n // rename 'drop' to '' as it will be prefixed with 'drop'\n const corrected = Object.keys(normalized).reduce((acc, type) => {\n const correctedType = /^(enter|leave)/.test(type)\n ? `drag${type}`\n : /^(activate|deactivate|move)/.test(type)\n ? `drop${type}`\n : type\n\n acc[correctedType] = normalized[type]\n\n return acc\n }, {})\n\n interactable.off(interactable.options.drop.listeners)\n interactable.on(corrected)\n interactable.options.drop.listeners = corrected\n }\n\n if (utils.is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }\n if (utils.is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }\n if (utils.is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }\n if (utils.is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }\n if (utils.is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }\n if (utils.is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n }\n else if (utils.is.number(options.overlap)) {\n interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0)\n }\n if ('accept' in options) {\n interactable.options.drop.accept = options.accept\n }\n if ('checker' in options) {\n interactable.options.drop.checker = options.checker\n }\n\n return interactable\n }\n\n if (utils.is.bool(options)) {\n interactable.options.drop.enabled = options\n\n return interactable\n }\n\n return interactable.options.drop\n}\n\nfunction dropCheckMethod (\n interactable: Interact.Interactable,\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interact.Interactable,\n draggableElement: Element,\n dropElement: Element,\n rect: any\n) {\n let dropped = false\n\n // if the dropzone has no rect (eg. display: none)\n // call the custom dropChecker or just return false\n if (!(rect = rect || interactable.getRect(dropElement))) {\n return (interactable.options.drop.checker\n ? interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n : false)\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = utils.getOriginXY(draggable, draggableElement, 'drag')\n const page = utils.pointer.getPageXY(dragEvent)\n\n page.x += origin.x\n page.y += origin.y\n\n const horizontal = (page.x > rect.left) && (page.x < rect.right)\n const vertical = (page.y > rect.top) && (page.y < rect.bottom)\n\n dropped = horizontal && vertical\n }\n\n const dragRect = draggable.getRect(draggableElement)\n\n if (dragRect && dropOverlap === 'center') {\n const cx = dragRect.left + dragRect.width / 2\n const cy = dragRect.top + dragRect.height / 2\n\n dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom\n }\n\n if (dragRect && utils.is.number(dropOverlap)) {\n const overlapArea = (Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) *\n Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top)))\n\n const overlapRatio = overlapArea / (dragRect.width * dragRect.height)\n\n dropped = overlapRatio >= dropOverlap\n }\n\n if (interactable.options.drop.checker) {\n dropped = interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n }\n\n return dropped\n}\n\nconst drop = {\n id: 'actions/drop',\n install,\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept : null,\n overlap: 'pointer',\n } as Interact.DropzoneOptions,\n}\n\nexport default drop\n","import InteractEvent from '@interactjs/core/InteractEvent'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\n\nexport type GesturableMethod = Interact.ActionMethod\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n gesture?: {\n angle: number, // angle from first to second touch\n distance: number,\n scale: number, // gesture.distance / gesture.startDistance\n startAngle: number, // angle of line joining two touches\n startDistance: number, // distance between two touches of touchStart\n }\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n gesturable: GesturableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n gesture: Interact.GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Gesture]?: typeof gesture\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Gesture = 'gesture'\n }\n}\n\n(ActionName as any).Gesture = 'gesture'\n\nexport interface GestureEvent extends Interact.InteractEvent {\n distance: number\n angle: number\n da: number // angle change\n scale: number // ratio of distance start to current event\n ds: number // scale change\n box: Interact.Rect // enclosing box of all points\n touches: Interact.PointerType[]\n}\n\nexport interface GestureSignalArg extends Interact.SignalArg {\n iEvent: GestureEvent\n interaction: Interact.Interaction\n event: Interact.PointerEventType | GestureEvent\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = scope\n\n /**\n * ```js\n * interact(element).gesturable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // limit multiple gestures.\n * // See the explanation in {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isGestureable = interact(element).gesturable()\n * ```\n *\n * Gets or sets whether multitouch gestures can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on gesture events (makes the Interactable gesturable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of gesture events, or this Interactable\n */\n Interactable.prototype.gesturable = function (this: Interact.Interactable, options: Interact.GesturableOptions | boolean) {\n if (utils.is.object(options)) {\n this.options.gesture.enabled = options.enabled !== false\n this.setPerAction('gesture', options)\n this.setOnEvents('gesture', options)\n\n return this\n }\n\n if (utils.is.bool(options)) {\n this.options.gesture.enabled = options\n\n return this\n }\n\n return this.options.gesture as Interact.Options\n } as GesturableMethod\n\n interactions.signals.on('action-start', updateGestureProps)\n interactions.signals.on('action-move', updateGestureProps)\n interactions.signals.on('action-end', updateGestureProps)\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0,\n }\n })\n\n actions[ActionName.Gesture] = gesture\n actions.names.push(ActionName.Gesture)\n utils.arr.merge(actions.eventTypes, [\n 'gesturestart',\n 'gesturemove',\n 'gestureend',\n ])\n actions.methodDict.gesture = 'gesturable'\n\n defaults.actions.gesture = gesture.defaults\n}\n\nconst gesture = {\n id: 'actions/gesture',\n install,\n defaults: {\n },\n\n checker (_pointer, _event, _interactable, _element, interaction: { pointers: { length: number; }; }) {\n if (interaction.pointers.length >= 2) {\n return { name: 'gesture' }\n }\n\n return null\n },\n\n getCursor () {\n return ''\n },\n}\n\nfunction updateGestureProps ({ interaction, iEvent, event, phase }: GestureSignalArg) {\n if (interaction.prepared.name !== 'gesture') { return }\n\n const pointers = interaction.pointers.map((p) => p.pointer)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const deltaSource = interaction.interactable.options.deltaSource\n\n iEvent.touches = [pointers[0], pointers[1]]\n\n if (starting) {\n iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = 1\n iEvent.ds = 0\n iEvent.angle = utils.pointer.touchAngle(pointers, deltaSource)\n iEvent.da = 0\n\n interaction.gesture.startDistance = iEvent.distance\n interaction.gesture.startAngle = iEvent.angle\n }\n else if (ending || event instanceof InteractEvent) {\n const prevEvent = interaction.prevEvent as GestureEvent\n\n iEvent.distance = prevEvent.distance\n iEvent.box = prevEvent.box\n iEvent.scale = prevEvent.scale\n iEvent.ds = 0\n iEvent.angle = prevEvent.angle\n iEvent.da = 0\n }\n else {\n iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance\n iEvent.angle = utils.pointer.touchAngle(pointers, deltaSource)\n\n iEvent.ds = iEvent.scale - interaction.gesture.scale\n iEvent.da = iEvent.angle - interaction.gesture.angle\n }\n\n interaction.gesture.distance = iEvent.distance\n interaction.gesture.angle = iEvent.angle\n\n if (utils.is.number(iEvent.scale) &&\n iEvent.scale !== Infinity &&\n !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale\n }\n}\n\nexport default gesture\n","import { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as dom from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\nexport type ResizableMethod = Interact.ActionMethod\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n resizable: ResizableMethod\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n resizeAxes: 'x' | 'y' | 'xy'\n resizeRects: {\n start: Interact.FullRect\n current: Interact.Rect\n inverted: Interact.FullRect\n previous: Interact.FullRect\n delta: Interact.FullRect\n }\n resizeStartAspectRatio: number\n }\n\n interface ActionProps {\n _linkedEdges?: { [key: string]: boolean }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n resize: Interact.ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Resize]?: typeof resize\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Resize = 'resize'\n }\n}\n\n(ActionName as any).Resize = 'resize'\n\nexport interface ResizeEvent extends Interact.InteractEvent {\n deltaRect?: Interact.FullRect\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n browser,\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n interactions,\n defaults,\n } = scope\n\n // Less Precision with touch input\n\n interactions.signals.on('new', (interaction) => {\n interaction.resizeAxes = 'xy'\n })\n\n interactions.signals.on('action-start', start)\n interactions.signals.on('action-move', move)\n\n interactions.signals.on('action-start', updateEventAxes)\n interactions.signals.on('action-move', updateEventAxes)\n\n resize.cursors = initCursors(browser)\n resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10\n\n /**\n * ```js\n * interact(element).resizable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * edges: {\n * top : true, // Use pointer coords to check for resize.\n * left : false, // Disable resizing from left edge.\n * bottom: '.resize-s',// Resize if pointer target matches selector\n * right : handleEl // Resize if pointer target is the given Element\n * },\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height are adjusted at a 1:1 ratio.\n * square: false,\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height maintain the aspect ratio they had when resizing started.\n * preserveAspectRatio: false,\n *\n * // a value of 'none' will limit the resize rect to a minimum of 0x0\n * // 'negate' will allow the rect to have negative width/height\n * // 'reposition' will keep the width/height positive by swapping\n * // the top and bottom edges and/or swapping the left and right edges\n * invert: 'none' || 'negate' || 'reposition'\n *\n * // limit multiple resizes.\n * // See the explanation in the {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isResizeable = interact(element).resizable()\n * ```\n *\n * Gets or sets whether resize actions can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on resize events (object makes the Interactable\n * resizable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of resize elements, or this Interactable\n */\n Interactable.prototype.resizable = function (this: Interact.Interactable, options: Interact.ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as ResizableMethod\n\n actions[ActionName.Resize] = resize\n actions.names.push(ActionName.Resize)\n arr.merge(actions.eventTypes, [\n 'resizestart',\n 'resizemove',\n 'resizeinertiastart',\n 'resizeresume',\n 'resizeend',\n ])\n actions.methodDict.resize = 'resizable'\n\n defaults.actions.resize = resize.defaults\n}\n\nconst resize = {\n id: 'actions/resize',\n install,\n defaults: {\n square: false,\n preserveAspectRatio: false,\n axis: 'xy',\n\n // use default margin\n margin: NaN,\n\n // object with props left, right, top, bottom which are\n // true/false values to resize when the pointer is over that edge,\n // CSS selectors to match the handles for each direction\n // or the Elements for each handle\n edges: null,\n\n // a value of 'none' will limit the resize rect to a minimum of 0x0\n // 'negate' will alow the rect to have negative width/height\n // 'reposition' will keep the width/height positive by swapping\n // the top and bottom edges and/or swapping the left and right edges\n invert: 'none',\n } as Interact.ResizableOptions,\n\n checker (\n _pointer: Interact.PointerType,\n _event: Interact.PointerEventType,\n interactable: Interact.Interactable,\n element: Element,\n interaction: Interaction,\n rect: Interact.Rect\n ) {\n if (!rect) { return null }\n\n const page = extend({}, interaction.coords.cur.page)\n const options = interactable.options\n\n if (options.resize.enabled) {\n const resizeOptions = options.resize\n const resizeEdges: { [edge: string]: boolean } = { left: false, right: false, top: false, bottom: false }\n\n // if using resize.edges\n if (is.object(resizeOptions.edges)) {\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(edge,\n resizeOptions.edges[edge],\n page,\n interaction._latestPointer.eventTarget,\n element,\n rect,\n resizeOptions.margin || this.defaultMargin)\n }\n\n resizeEdges.left = resizeEdges.left && !resizeEdges.right\n resizeEdges.top = resizeEdges.top && !resizeEdges.bottom\n\n if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n return {\n name: 'resize',\n edges: resizeEdges,\n }\n }\n }\n else {\n const right = options.resize.axis !== 'y' && page.x > (rect.right - this.defaultMargin)\n const bottom = options.resize.axis !== 'x' && page.y > (rect.bottom - this.defaultMargin)\n\n if (right || bottom) {\n return {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : ''),\n }\n }\n }\n }\n\n return null\n },\n\n cursors: null as unknown as ReturnType,\n\n getCursor (action: ActionProps) {\n const cursors = resize.cursors as { [key: string]: string }\n if (action.axis) {\n return cursors[action.name + action.axis]\n }\n else if (action.edges) {\n let cursorKey = ''\n const edgeNames = ['top', 'bottom', 'left', 'right']\n\n for (let i = 0; i < 4; i++) {\n if (action.edges[edgeNames[i]]) {\n cursorKey += edgeNames[i]\n }\n }\n\n return cursors[cursorKey]\n }\n\n return null\n },\n\n defaultMargin: null as unknown as number,\n}\n\nfunction resizable (interactable: Interact.Interactable, options: Interact.OrBoolean | boolean, scope: Scope) {\n if (is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false\n interactable.setPerAction('resize', options)\n interactable.setOnEvents('resize', options)\n\n if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis\n }\n else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis\n }\n\n if (is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio\n }\n else if (is.bool(options.square)) {\n interactable.options.resize.square = options.square\n }\n\n return interactable\n }\n if (is.bool(options)) {\n interactable.options.resize.enabled = options\n\n return interactable\n }\n return interactable.options.resize\n}\n\nfunction checkResizeEdge (name: string, value: any, page: Interact.Point, element: Node, interactableElement: Element, rect: Interact.Rect, margin: number) {\n // false, '', undefined, null\n if (!value) { return false }\n\n // true value, use pointer coords and element rect\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = is.number(rect.width) ? rect.width : rect.right - rect.left\n const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top\n\n // don't use margin greater than half the relevent dimension\n margin = Math.min(margin, (name === 'left' || name === 'right' ? width : height) / 2)\n\n if (width < 0) {\n if (name === 'left') { name = 'right' }\n else if (name === 'right') { name = 'left' }\n }\n if (height < 0) {\n if (name === 'top') { name = 'bottom' }\n else if (name === 'bottom') { name = 'top' }\n }\n\n if (name === 'left') { return page.x < ((width >= 0 ? rect.left : rect.right) + margin) }\n if (name === 'top') { return page.y < ((height >= 0 ? rect.top : rect.bottom) + margin) }\n\n if (name === 'right') { return page.x > ((width >= 0 ? rect.right : rect.left) - margin) }\n if (name === 'bottom') { return page.y > ((height >= 0 ? rect.bottom : rect.top) - margin) }\n }\n\n // the remaining checks require an element\n if (!is.element(element)) { return false }\n\n return is.element(value)\n // the value is an element to use as a resize handle\n ? value === element\n // otherwise check if element matches value as selector\n : dom.matchesUpTo(element, value, interactableElement)\n}\n\nfunction initCursors (browser: typeof import ('@interactjs/utils/browser').default) {\n return (browser.isIe9 ? {\n x : 'e-resize',\n y : 's-resize',\n xy: 'se-resize',\n\n top : 'n-resize',\n left : 'w-resize',\n bottom : 's-resize',\n right : 'e-resize',\n topleft : 'se-resize',\n bottomright: 'se-resize',\n topright : 'ne-resize',\n bottomleft : 'ne-resize',\n } : {\n x : 'ew-resize',\n y : 'ns-resize',\n xy: 'nwse-resize',\n\n top : 'ns-resize',\n left : 'ew-resize',\n bottom : 'ns-resize',\n right : 'ew-resize',\n topleft : 'nwse-resize',\n bottomright: 'nwse-resize',\n topright : 'nesw-resize',\n bottomleft : 'nesw-resize',\n })\n}\n\nfunction start ({ iEvent, interaction }: Interact.SignalArg) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return\n }\n\n const startRect = interaction.rect\n const resizeOptions = interaction.interactable.options.resize\n\n /*\n * When using the `resizable.square` or `resizable.preserveAspectRatio` options, resizing from one edge\n * will affect another. E.g. with `resizable.square`, resizing to make the right edge larger will make\n * the bottom edge larger by the same amount. We call these 'linked' edges. Any linked edges will depend\n * on the active edges and the edge being interacted with.\n */\n if (resizeOptions.square || resizeOptions.preserveAspectRatio) {\n const linkedEdges = extend({}, interaction.prepared.edges)\n\n linkedEdges.top = linkedEdges.top || (linkedEdges.left && !linkedEdges.bottom)\n linkedEdges.left = linkedEdges.left || (linkedEdges.top && !linkedEdges.right)\n linkedEdges.bottom = linkedEdges.bottom || (linkedEdges.right && !linkedEdges.top)\n linkedEdges.right = linkedEdges.right || (linkedEdges.bottom && !linkedEdges.left)\n\n interaction.prepared._linkedEdges = linkedEdges\n }\n else {\n interaction.prepared._linkedEdges = null\n }\n\n // if using `resizable.preserveAspectRatio` option, record aspect ratio at the start of the resize\n if (resizeOptions.preserveAspectRatio) {\n interaction.resizeStartAspectRatio = startRect.width / startRect.height\n }\n\n interaction.resizeRects = {\n start : startRect,\n current : extend({}, startRect),\n inverted : extend({}, startRect),\n previous : extend({}, startRect),\n delta : {\n left: 0,\n right : 0,\n width : 0,\n top : 0,\n bottom: 0,\n height: 0,\n },\n }\n\n iEvent.rect = interaction.resizeRects.inverted\n ; (iEvent as ResizeEvent).deltaRect = interaction.resizeRects.delta\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) { return }\n\n const resizeOptions = interaction.interactable.options.resize\n const invert = resizeOptions.invert\n const invertible = invert === 'reposition' || invert === 'negate'\n\n let edges = interaction.prepared.edges\n\n // eslint-disable-next-line no-shadow\n const start = interaction.resizeRects.start\n const current = interaction.resizeRects.current\n const inverted = interaction.resizeRects.inverted\n const deltaRect = interaction.resizeRects.delta\n const previous = extend(interaction.resizeRects.previous, inverted)\n const originalEdges = edges\n\n const eventDelta = extend({}, iEvent.delta)\n\n if (resizeOptions.preserveAspectRatio || resizeOptions.square) {\n // `resize.preserveAspectRatio` takes precedence over `resize.square`\n const startAspectRatio = resizeOptions.preserveAspectRatio\n ? interaction.resizeStartAspectRatio\n : 1\n\n edges = interaction.prepared._linkedEdges\n\n if ((originalEdges.left && originalEdges.bottom) ||\n (originalEdges.right && originalEdges.top)) {\n eventDelta.y = -eventDelta.x / startAspectRatio\n }\n else if (originalEdges.left || originalEdges.right) { eventDelta.y = eventDelta.x / startAspectRatio }\n else if (originalEdges.top || originalEdges.bottom) { eventDelta.x = eventDelta.y * startAspectRatio }\n }\n\n // update the 'current' rect without modifications\n if (edges.top) { current.top += eventDelta.y }\n if (edges.bottom) { current.bottom += eventDelta.y }\n if (edges.left) { current.left += eventDelta.x }\n if (edges.right) { current.right += eventDelta.x }\n\n if (invertible) {\n // if invertible, copy the current rect\n extend(inverted, current)\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n let swap\n\n if (inverted.top > inverted.bottom) {\n swap = inverted.top\n\n inverted.top = inverted.bottom\n inverted.bottom = swap\n }\n if (inverted.left > inverted.right) {\n swap = inverted.left\n\n inverted.left = inverted.right\n inverted.right = swap\n }\n }\n }\n else {\n // if not invertible, restrict to minimum of 0x0 rect\n inverted.top = Math.min(current.top, start.bottom)\n inverted.bottom = Math.max(current.bottom, start.top)\n inverted.left = Math.min(current.left, start.right)\n inverted.right = Math.max(current.right, start.left)\n }\n\n inverted.width = inverted.right - inverted.left\n inverted.height = inverted.bottom - inverted.top\n\n for (const edge in inverted) {\n deltaRect[edge] = inverted[edge] - previous[edge]\n }\n\n iEvent.edges = interaction.prepared.edges\n iEvent.rect = inverted\n iEvent.deltaRect = deltaRect\n}\n\nfunction updateEventAxes ({ interaction, iEvent, action }) {\n if (action !== 'resize' || !interaction.resizeAxes) { return }\n\n const options = interaction.interactable.options\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = iEvent.delta.y\n }\n else {\n iEvent.delta.y = iEvent.delta.x\n }\n iEvent.axes = 'xy'\n }\n else {\n iEvent.axes = interaction.resizeAxes\n\n if (interaction.resizeAxes === 'x') {\n iEvent.delta.y = 0\n }\n else if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = 0\n }\n }\n}\n\nexport default resize\n","import { Scope } from '@interactjs/core/scope'\nimport drag, { DragEvent } from './drag'\nimport drop from './drop'\nimport gesture, { GestureEvent } from './gesture'\nimport resize, { ResizeEvent } from './resize'\n\nfunction install (scope: Scope) {\n scope.usePlugin(gesture)\n scope.usePlugin(resize)\n scope.usePlugin(drag)\n scope.usePlugin(drop)\n}\n\nconst id = 'actions'\n\nexport {\n id,\n install,\n gesture,\n GestureEvent,\n resize,\n ResizeEvent,\n drag,\n DragEvent,\n drop,\n}\n","import * as domUtils from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ntype Scope = import ('@interactjs/core/scope').Scope\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoScroll: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoScroll?: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n autoScroll?: Interact.AutoScrollOption\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n defaults,\n actions,\n } = scope\n\n scope.autoScroll = autoScroll\n autoScroll.now = () => scope.now()\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.autoScroll = null\n })\n\n interactions.signals.on('destroy', ({ interaction }) => {\n interaction.autoScroll = null\n autoScroll.stop()\n if (autoScroll.interaction) {\n autoScroll.interaction = null\n }\n })\n\n interactions.signals.on('stop', autoScroll.stop)\n\n interactions.signals.on('action-move', (arg: any) => autoScroll.onInteractionMove(arg))\n\n actions.eventTypes.push('autoscroll')\n defaults.perAction.autoScroll = autoScroll.defaults\n}\n\nconst autoScroll = {\n defaults: {\n enabled : false,\n margin : 60,\n\n // the item that is scrolled (Window or HTMLElement)\n container: null as Window | Element,\n\n // the scroll speed in pixels per second\n speed : 300,\n } as Interact.AutoScrollOption,\n\n now: Date.now,\n\n interaction: null,\n i: null, // the handle returned by window.setInterval\n x: 0,\n y: 0, // Direction each pulse is to scroll in\n\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n\n start (interaction: Interact.Interaction) {\n autoScroll.isScrolling = true\n raf.cancel(autoScroll.i)\n\n interaction.autoScroll = autoScroll\n autoScroll.interaction = interaction\n autoScroll.prevTime = autoScroll.now()\n autoScroll.i = raf.request(autoScroll.scroll)\n },\n\n stop () {\n autoScroll.isScrolling = false\n if (autoScroll.interaction) {\n autoScroll.interaction.autoScroll = null\n }\n raf.cancel(autoScroll.i)\n },\n\n // scroll the window by the values in scroll.x/y\n scroll () {\n const { interaction } = autoScroll\n const { interactable, element } = interaction\n const options = interactable.options[autoScroll.interaction.prepared.name].autoScroll\n const container = getContainer(options.container, interactable, element)\n const now = autoScroll.now()\n // change in time in seconds\n const dt = (now - autoScroll.prevTime) / 1000\n // displacement\n const s = options.speed * dt\n\n if (s >= 1) {\n const scrollBy = {\n x: autoScroll.x * s,\n y: autoScroll.y * s,\n }\n\n if (scrollBy.x || scrollBy.y) {\n const prevScroll = getScroll(container)\n\n if (is.window(container)) {\n container.scrollBy(scrollBy.x, scrollBy.y)\n }\n else if (container) {\n container.scrollLeft += scrollBy.x\n container.scrollTop += scrollBy.y\n }\n\n const curScroll = getScroll(container)\n const delta = {\n x: curScroll.x - prevScroll.x,\n y: curScroll.y - prevScroll.y,\n }\n\n if (delta.x || delta.y) {\n interactable.fire({\n type: 'autoscroll',\n target: element,\n interactable,\n delta,\n interaction,\n container,\n })\n }\n }\n\n autoScroll.prevTime = now\n }\n\n if (autoScroll.isScrolling) {\n raf.cancel(autoScroll.i)\n autoScroll.i = raf.request(autoScroll.scroll)\n }\n },\n check (interactable, actionName) {\n const options = interactable.options\n\n return options[actionName].autoScroll && options[actionName].autoScroll.enabled\n },\n onInteractionMove ({ interaction, pointer }) {\n if (!(interaction.interacting() &&\n autoScroll.check(interaction.interactable, interaction.prepared.name))) {\n return\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0\n return\n }\n\n let top\n let right\n let bottom\n let left\n\n const { interactable, element } = interaction\n const options = interactable.options[interaction.prepared.name].autoScroll\n const container = getContainer(options.container, interactable, element)\n\n if (is.window(container)) {\n left = pointer.clientX < autoScroll.margin\n top = pointer.clientY < autoScroll.margin\n right = pointer.clientX > container.innerWidth - autoScroll.margin\n bottom = pointer.clientY > container.innerHeight - autoScroll.margin\n }\n else {\n const rect = domUtils.getElementClientRect(container)\n\n left = pointer.clientX < rect.left + autoScroll.margin\n top = pointer.clientY < rect.top + autoScroll.margin\n right = pointer.clientX > rect.right - autoScroll.margin\n bottom = pointer.clientY > rect.bottom - autoScroll.margin\n }\n\n autoScroll.x = (right ? 1 : left ? -1 : 0)\n autoScroll.y = (bottom ? 1 : top ? -1 : 0)\n\n if (!autoScroll.isScrolling) {\n // set the autoScroll properties to those of the target\n autoScroll.margin = options.margin\n autoScroll.speed = options.speed\n\n autoScroll.start(interaction)\n }\n },\n}\n\nexport function getContainer (value, interactable, element) {\n return (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n}\n\nexport function getScroll (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta ({ interaction, element }, func) {\n const scrollOptions = interaction && interaction.interactable.options[interaction.prepared.name].autoScroll\n\n if (!scrollOptions || !scrollOptions.enabled) {\n func()\n return { x: 0, y: 0 }\n }\n\n const scrollContainer = getContainer(\n scrollOptions.container,\n interaction.interactable,\n element\n )\n\n const prevSize = getScroll(scrollContainer)\n func()\n const curSize = getScroll(scrollContainer)\n\n return {\n x: curSize.x - prevSize.x,\n y: curSize.y - prevSize.y,\n }\n}\n\nexport default {\n id: 'auto-scroll',\n install,\n}\n","import { warnOnce } from '@interactjs/utils'\nimport * as is from '@interactjs/utils/is'\n\n// TODO: there seems to be a @babel/preset-typescript bug causing regular import\n// syntax to remain in js output\ntype Scope = import ('@interactjs/core/scope').Scope\ntype Actions = import ('@interactjs/core/scope').Actions\ntype Interaction = import ('@interactjs/core/Interaction').default\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n getAction: typeof getAction\n defaultActionChecker: (pointer: any, event: any, interaction: any, element: any) => any\n styleCursor: typeof styleCursor\n actionChecker: typeof actionChecker\n ignoreFrom: (...args: any) => boolean\n allowFrom: (...args: any) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n pointerIsDown: boolean\n }\n}\n\nfunction install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n actions,\n } = scope\n\n Interactable.prototype.getAction = getAction\n\n /**\n * ```js\n * interact(element, { ignoreFrom: document.getElementById('no-action') })\n * // or\n * interact(element).ignoreFrom('input, textarea, a')\n * ```\n * @deprecated\n * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n * of it's parents match the given CSS selector or Element, no\n * drag/resize/gesture is started.\n *\n * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\n * })\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to not ignore any elements\n * @return {string | Element | object} The current ignoreFrom value or this\n * Interactable\n */\n Interactable.prototype.ignoreFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('ignoreFrom', newValue)\n }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).')\n\n /**\n * @deprecated\n *\n * A drag/resize/gesture is started only If the target of the `mousedown`,\n * `pointerdown` or `touchstart` event or any of it's parents match the given\n * CSS selector or Element.\n *\n * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\n * })\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to allow from any element\n * @return {string | Element | object} The current allowFrom value or this\n * Interactable\n */\n Interactable.prototype.allowFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('allowFrom', newValue)\n }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).')\n\n /**\n * ```js\n * interact('.resize-drag')\n * .resizable(true)\n * .draggable(true)\n * .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n *\n * if (interact.matchesSelector(event.target, '.drag-handle')) {\n * // force drag with handle target\n * action.name = drag\n * }\n * else {\n * // resize from the top and right edges\n * action.name = 'resize'\n * action.edges = { top: true, right: true }\n * }\n *\n * return action\n * })\n * ```\n *\n * Returns or sets the function used to check action to be performed on\n * pointerDown\n *\n * @param {function | null} [checker] A function which takes a pointer event,\n * defaultAction string, interactable, element and interaction as parameters\n * and returns an object with name property 'drag' 'resize' or 'gesture' and\n * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n * props.\n * @return {Function | Interactable} The checker function or this Interactable\n */\n Interactable.prototype.actionChecker = actionChecker\n\n /**\n * Returns or sets whether the the cursor should be changed depending on the\n * action that would be performed if the mouse were pressed and dragged.\n *\n * @param {boolean} [newValue]\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.styleCursor = styleCursor\n\n Interactable.prototype.defaultActionChecker = function (this: Interactable, pointer, event, interaction, element) {\n return defaultActionChecker(this, pointer, event, interaction, element, actions)\n }\n}\n\nfunction getAction (this: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element): Interact.ActionProps {\n const action = this.defaultActionChecker(pointer, event, interaction, element)\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction)\n }\n\n return action\n}\n\nfunction defaultActionChecker (interactable: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element, actions: Actions) {\n const rect = interactable.getRect(element)\n const buttons = (event as MouseEvent).buttons || ({\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16,\n })[(event as MouseEvent).button as 0 | 1 | 3 | 4]\n let action = null\n\n for (const actionName of actions.names) {\n // check mouseButton setting if the pointer is down\n if (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & interactable.options[actionName].mouseButtons) === 0) {\n continue\n }\n\n action = (actions[actionName as keyof Actions] as any).checker(pointer, event, interactable, element, interaction, rect)\n\n if (action) {\n return action\n }\n }\n}\n\nfunction styleCursor (this: Interactable, newValue?: boolean) {\n if (is.bool(newValue)) {\n this.options.styleCursor = newValue\n\n return this\n }\n\n if (newValue === null) {\n delete this.options.styleCursor\n\n return this\n }\n\n return this.options.styleCursor\n}\n\nfunction actionChecker (this: Interactable, checker: any) {\n if (is.func(checker)) {\n this.options.actionChecker = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.options.actionChecker\n\n return this\n }\n\n return this.options.actionChecker\n}\n\nexport default {\n id: 'auto-start/interactableMethods',\n install,\n}\n","import * as utils from '@interactjs/utils'\nimport InteractableMethods from './InteractableMethods'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n maxInteractions: (newValue: any) => any\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoStart: AutoStart\n maxInteractions: (...args: any) => any\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n actionChecker?\n styleCursor?\n }\n\n interface PerActionDefaults {\n manualStart?: boolean\n max?: number\n maxPerElement?: number\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons?: 0 | 1 | 2 | 4 | 16\n }\n}\n\nexport interface AutoStart {\n // Allow this many interactions to happen simultaneously\n maxInteractions: number\n withinInteractionLimit: typeof withinInteractionLimit\n cursorElement: HTMLElement\n signals: utils.Signals\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n interact,\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(InteractableMethods)\n\n // set cursor style on mousedown\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n // set cursor style on mousemove\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.pointerType !== 'mouse' ||\n interaction.pointerIsDown ||\n interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n interactions.signals.on('move', (arg) => {\n const { interaction } = arg\n\n if (!interaction.pointerIsDown ||\n interaction.interacting() ||\n !interaction.pointerWasMoved ||\n !interaction.prepared.name) {\n return\n }\n\n scope.autoStart.signals.fire('before-start', arg)\n\n const { interactable } = interaction\n\n if (interaction.prepared.name && interactable) {\n // check manualStart and interaction limit\n if (interactable.options[interaction.prepared.name].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n interaction.stop()\n }\n else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n }\n }\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n const { interactable } = interaction\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n })\n\n defaults.base.actionChecker = null\n defaults.base.styleCursor = true\n\n utils.extend(defaults.perAction, {\n manualStart: false,\n max: Infinity,\n maxPerElement: 1,\n allowFrom: null,\n ignoreFrom: null,\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons: 1,\n })\n\n /**\n * Returns or sets the maximum number of concurrent interactions allowed. By\n * default only 1 interaction is allowed at a time (for backwards\n * compatibility). To allow multiple interactions on the same Interactables and\n * elements, you need to enable it in the draggable, resizable and gesturable\n * `'max'` and `'maxPerElement'` options.\n *\n * @alias module:interact.maxInteractions\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n */\n interact.maxInteractions = (newValue) => maxInteractions(newValue, scope)\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit,\n cursorElement: null,\n signals: new utils.Signals(),\n }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction (action, interactable, element, eventTarget, scope) {\n if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n interactable.options[action.name].enabled &&\n withinInteractionLimit(interactable, element, action, scope)) {\n return action\n }\n\n return null\n}\n\nfunction validateMatches (interaction: Interact.Interaction, pointer, event, matches: Interact.Interactable[], matchElements: Element[], eventTarget: Element, scope: Interact.Scope) {\n for (let i = 0, len = matches.length; i < len; i++) {\n const match = matches[i]\n const matchElement = matchElements[i]\n const matchAction = match.getAction(pointer, event, interaction, matchElement)\n\n if (!matchAction) { continue }\n\n const action = validateAction(\n matchAction,\n match,\n matchElement,\n eventTarget,\n scope)\n\n if (action) {\n return {\n action,\n interactable: match,\n element: matchElement,\n }\n }\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction getActionInfo (interaction: Interact.Interaction, pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Element, scope: Interact.Scope) {\n let matches = []\n let matchElements = []\n\n let element = eventTarget\n\n function pushMatches (interactable) {\n matches.push(interactable)\n matchElements.push(element)\n }\n\n while (utils.is.element(element)) {\n matches = []\n matchElements = []\n\n scope.interactables.forEachMatch(element, pushMatches)\n\n const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope)\n\n if (actionInfo.action &&\n !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo\n }\n\n element = utils.dom.parentNode(element)\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (interaction: Interact.Interaction, { action, interactable, element }, scope: Interact.Scope) {\n action = action || {}\n\n if (interaction.interactable && interaction.interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n\n interaction.interactable = interactable\n interaction.element = element\n utils.copyAction(interaction.prepared, action)\n\n interaction.rect = interactable && action.name\n ? interactable.getRect(element)\n : null\n\n if (interactable && interactable.options.styleCursor) {\n const cursor = action ? scope.actions[action.name].getCursor(action) : ''\n setCursor(interaction.element as HTMLElement, cursor, scope)\n }\n\n scope.autoStart.signals.fire('prepared', { interaction })\n}\n\nfunction withinInteractionLimit (interactable: Interact.Interactable, element: Element, action, scope: Interact.Scope) {\n const options = interactable.options\n const maxActions = options[action.name].max\n const maxPerElement = options[action.name].maxPerElement\n const autoStartMax = scope.autoStart.maxInteractions\n let activeInteractions = 0\n let interactableCount = 0\n let elementCount = 0\n\n // no actions if any of these values == 0\n if (!(maxActions && maxPerElement && autoStartMax)) { return false }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name\n\n if (!interaction.interacting()) { continue }\n\n activeInteractions++\n\n if (activeInteractions >= autoStartMax) {\n return false\n }\n\n if (interaction.interactable !== interactable) { continue }\n\n interactableCount += otherAction === action.name ? 1 : 0\n\n if (interactableCount >= maxActions) {\n return false\n }\n\n if (interaction.element === element) {\n elementCount++\n\n if (otherAction === action.name && elementCount >= maxPerElement) {\n return false\n }\n }\n }\n\n return autoStartMax > 0\n}\n\nfunction maxInteractions (newValue, scope: Interact.Scope) {\n if (utils.is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue\n\n return this\n }\n\n return scope.autoStart.maxInteractions\n}\n\nfunction setCursor (element: HTMLElement, cursor, scope: Interact.Scope) {\n if (scope.autoStart.cursorElement) {\n scope.autoStart.cursorElement.style.cursor = ''\n }\n\n element.ownerDocument.documentElement.style.cursor = cursor\n element.style.cursor = cursor\n scope.autoStart.cursorElement = cursor ? element : null\n}\n\nexport default {\n id: 'auto-start/base',\n install,\n maxInteractions,\n withinInteractionLimit,\n validateAction,\n} as Interact.Plugin\n","import { ActionName } from '@interactjs/core/scope'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport autoStart from './base'\n\ntype Scope = import ('@interactjs/core/scope').Scope\n\nfunction install (scope: Scope) {\n scope.autoStart.signals.on('before-start', ({ interaction, eventTarget, dx, dy }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n // check if a drag is in the correct axis\n const absX = Math.abs(dx)\n const absY = Math.abs(dy)\n const targetOptions = interaction.interactable.options.drag\n const startAxis = targetOptions.startAxis\n const currentAxis = (absX > absY ? 'x' : absX < absY ? 'y' : 'xy')\n\n interaction.prepared.axis = targetOptions.lockAxis === 'start'\n ? currentAxis[0] as 'x' | 'y' // always lock to one axis even if currentAxis === 'xy'\n : targetOptions.lockAxis\n\n // if the movement isn't in the startAxis of the interactable\n if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n // cancel the prepared action\n interaction.prepared.name = null\n\n // then try to get a drag from another ineractable\n let element = eventTarget\n\n const getDraggable = function (interactable) {\n if (interactable === interaction.interactable) { return }\n\n const options = interaction.interactable.options.drag\n\n if (!options.manualStart &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(\n interaction.downPointer, interaction.downEvent, interaction, element)\n\n if (action &&\n action.name === ActionName.Drag &&\n checkStartAxis(currentAxis, interactable) &&\n autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\n return interactable\n }\n }\n }\n\n // check all interactables\n while (is.element(element)) {\n const interactable = scope.interactables.forEachMatch(element, getDraggable)\n\n if (interactable) {\n interaction.prepared.name = ActionName.Drag\n interaction.interactable = interactable\n interaction.element = element\n break\n }\n\n element = parentNode(element)\n }\n }\n })\n\n function checkStartAxis (startAxis, interactable) {\n if (!interactable) { return false }\n\n const thisAxis = interactable.options[ActionName.Drag].startAxis\n\n return (startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis)\n }\n}\n\nexport default {\n id: 'auto-start/dragAxis',\n install,\n}\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n hold?: number\n delay?: number\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoStartHoldTimer?: any\n }\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n autoStart,\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n defaults.perAction.hold = 0\n defaults.perAction.delay = 0\n\n interactions.signals.on('new', (interaction) => {\n interaction.autoStartHoldTimer = null\n })\n\n autoStart.signals.on('prepared', ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.autoStartHoldTimer = setTimeout(() => {\n interaction.start(interaction.prepared, interaction.interactable, interaction.element)\n }, hold)\n }\n })\n\n interactions.signals.on('move', ({ interaction, duplicate }) => {\n if (interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer)\n }\n })\n\n // prevent regular down->move autoStart\n autoStart.signals.on('before-start', ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.prepared.name = null\n }\n })\n}\n\nfunction getHoldDuration (interaction) {\n const actionName = interaction.prepared && interaction.prepared.name\n\n if (!actionName) { return null }\n\n const options = interaction.interactable.options\n\n return options[actionName].hold || options[actionName].delay\n}\n\nexport default {\n id: 'auto-start/hold',\n install,\n getHoldDuration,\n}\n","import autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n\nfunction install (scope) {\n scope.usePlugin(autoStart)\n scope.usePlugin(hold)\n scope.usePlugin(dragAxis)\n}\n\nconst id = 'auto-start'\n\nexport {\n id,\n install,\n autoStart,\n hold,\n dragAxis,\n}\n","import { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport * as is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n preventDefault: typeof preventDefault\n checkAndPreventDefault: (event: Event) => void\n }\n}\n\nfunction preventDefault (this: Interact.Interactable, newValue?: 'always' | 'never' | 'auto') {\n if (/^(always|never|auto)$/.test(newValue)) {\n this.options.preventDefault = newValue\n return this\n }\n\n if (is.bool(newValue)) {\n this.options.preventDefault = newValue ? 'always' : 'never'\n return this\n }\n\n return this.options.preventDefault\n}\n\nfunction checkAndPreventDefault (interactable: Interact.Interactable, scope: Interact.Scope, event: Event) {\n const setting = interactable.options.preventDefault\n\n if (setting === 'never') { return }\n\n if (setting === 'always') {\n event.preventDefault()\n return\n }\n\n // setting === 'auto'\n\n // if the browser supports passive event listeners and isn't running on iOS,\n // don't preventDefault of touch{start,move} events. CSS touch-action and\n // user-select should be used instead of calling event.preventDefault().\n if (events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n const doc = getWindow(event.target).document\n const docOptions = scope.getDocOptions(doc)\n\n if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n return\n }\n }\n\n // don't preventDefault of pointerdown events\n if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n return\n }\n\n // don't preventDefault on editable elements\n if (is.element(event.target) &&\n matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n return\n }\n\n event.preventDefault()\n}\n\nfunction onInteractionEvent ({ interaction, event }: Interact.SignalArg) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event as Event)\n }\n}\n\nexport function install (scope: Interact.Scope) {\n /** @lends Interactable */\n const Interactable = scope.Interactable\n\n /**\n * Returns or sets whether to prevent the browser's default behaviour in\n * response to pointer events. Can be set to:\n * - `'always'` to always prevent\n * - `'never'` to never prevent\n * - `'auto'` to let interact.js try to determine what would be best\n *\n * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n * @return {string | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.preventDefault = preventDefault\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event)\n }\n\n for (const eventSignal of ['down', 'move', 'up', 'cancel']) {\n scope.interactions.signals.on(eventSignal, onInteractionEvent)\n }\n\n // prevent native HTML5 drag on interact.js target elements\n scope.interactions.docEvents.push({\n type: 'dragstart',\n listener (event) {\n for (const interaction of scope.interactions.list) {\n if (interaction.element &&\n (interaction.element === event.target ||\n nodeContains(interaction.element, event.target))) {\n interaction.interactable.checkAndPreventDefault(event)\n return\n }\n }\n },\n })\n}\n\nexport type Install = typeof install\n\nexport default {\n id: 'core/interactablePreventDefault',\n install,\n}\n","/* eslint-disable no-console */\n/* global process */\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport win from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n logger: Logger\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n devTools?: DevToolsOptions\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n devTools?: Interact.OptionMethod\n }\n}\n\nexport interface DevToolsOptions {\n ignore: { [P in keyof typeof CheckName]?: boolean }\n}\n\nexport interface Logger {\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n log: (...args: any[]) => void\n}\n\nexport interface Check {\n name: string\n text: string\n perform: (interaction: Interact.Interaction) => boolean\n getInfo: (interaction: Interact.Interaction) => any[]\n}\n\nenum CheckName {\n touchAction = '',\n boxSizing = '',\n noListeners = '',\n}\n\nconst prefix = '[interact.js] '\nconst links = {\n touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing',\n}\n\nconst isProduction = process.env.NODE_ENV === 'production'\n\n// eslint-disable-next-line no-restricted-syntax\nfunction install (scope: Interact.Scope, { logger }: { logger?: Logger } = {}) {\n const {\n interactions,\n Interactable,\n defaults,\n } = scope\n logger = logger || console\n\n interactions.signals.on('action-start', ({ interaction }) => {\n for (const check of checks) {\n const options = interaction.interactable && interaction.interactable.options[interaction.prepared.name]\n\n if (\n !(options && options.devTools && options.devTools.ignore[check.name]) &&\n check.perform(interaction)\n ) {\n logger.warn(prefix + check.text, ...check.getInfo(interaction))\n }\n }\n })\n\n defaults.base.devTools = {\n ignore: {},\n }\n\n Interactable.prototype.devTools = function (options?) {\n if (options) {\n extend(this.options.devTools, options)\n return this\n }\n\n return this.options.devTools\n }\n}\n\nconst checks: Check[] = [\n {\n name: 'touchAction',\n perform ({ element }) {\n return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/)\n },\n getInfo ({ element }) {\n return [\n element,\n links.touchAction,\n ]\n },\n text: 'Consider adding CSS \"touch-action: none\" to this element\\n',\n },\n\n {\n name: 'boxSizing',\n perform (interaction) {\n const { element } = interaction\n\n return interaction.prepared.name === 'resize' &&\n element instanceof domObjects.HTMLElement &&\n !hasStyle(element, 'boxSizing', /border-box/)\n },\n text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n getInfo ({ element }) {\n return [\n element,\n links.boxSizing,\n ]\n },\n },\n\n {\n name: 'noListeners',\n perform (interaction) {\n const actionName = interaction.prepared.name\n const moveListeners = interaction.interactable.events.types[`${actionName}move`] || []\n\n return !moveListeners.length\n },\n getInfo (interaction) {\n return [\n interaction.prepared.name,\n interaction.interactable,\n ]\n },\n text: 'There are no listeners set for this action',\n },\n]\n\nfunction hasStyle (element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n return styleRe.test(element.style[prop] || win.window.getComputedStyle(element)[prop])\n}\n\nfunction parentHasStyle (element: Element, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n let parent = element as HTMLElement\n\n while (is.element(parent)) {\n if (hasStyle(parent, prop, styleRe)) {\n return true\n }\n\n parent = parentNode(parent)\n }\n\n return false\n}\n\nconst id = 'dev-tools'\nconst defaultExport = isProduction\n ? { id, install: () => {} }\n : {\n id,\n install,\n checks,\n CheckName,\n links,\n prefix,\n }\n\nexport default defaultExport\n","import { Scope } from '@interactjs/core/scope'\nimport extend from '@interactjs/utils/extend'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n modifiers?: {\n states: any[]\n offsets: any\n startOffset: any\n startDelta: Interact.Point\n result?: {\n delta: {\n x: number\n y: number\n }\n rectDelta: {\n left: number\n right: number\n top: number\n bottom: number\n }\n coords: Interact.Point\n changed: boolean\n },\n endPrevented: boolean\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n modifiers?: Array>\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.defaults.perAction.modifiers = []\n scope.modifiers = {}\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.modifiers = {\n startOffset: { left: 0, right: 0, top: 0, bottom: 0 },\n offsets: {},\n states: null,\n result: null,\n endPrevented: false,\n startDelta: null,\n }\n })\n\n interactions.signals.on('before-action-start', (arg) => {\n start(arg as any, arg.interaction.coords.start.page, scope.modifiers)\n })\n\n interactions.signals.on('action-resume', (arg) => {\n stop(arg as Required)\n start(arg as Required, arg.interaction.coords.cur.page, scope.modifiers)\n beforeMove(arg as Required)\n })\n\n interactions.signals.on('after-action-move', restoreCoords as any)\n interactions.signals.on('before-action-move', beforeMove)\n\n interactions.signals.on('before-action-start', setCoords)\n interactions.signals.on('after-action-start', restoreCoords as any)\n\n interactions.signals.on('before-action-end', beforeEnd)\n interactions.signals.on('stop', stop)\n}\n\nfunction start (\n { interaction, phase }: Interact.SignalArg,\n pageCoords: Interact.Point,\n registeredModifiers,\n) {\n const { interactable, element } = interaction\n const modifierList = getModifierList(interaction, registeredModifiers)\n const states = prepareStates(modifierList)\n\n const rect = extend({}, interaction.rect)\n\n if (!('width' in rect)) { rect.width = rect.right - rect.left }\n if (!('height' in rect)) { rect.height = rect.bottom - rect.top }\n\n const startOffset = getRectOffset(rect, pageCoords)\n\n interaction.modifiers.startOffset = startOffset\n interaction.modifiers.startDelta = { x: 0, y: 0 }\n\n const arg: Partial = {\n interaction,\n interactable,\n element,\n pageCoords,\n phase,\n rect,\n startOffset,\n states,\n preEnd: false,\n requireEndOnly: false,\n }\n\n interaction.modifiers.states = states\n interaction.modifiers.result = null\n startAll(arg)\n\n arg.pageCoords = extend({}, interaction.coords.start.page)\n\n const result = interaction.modifiers.result = setAll(arg)\n\n return result\n}\n\nexport function startAll (arg) {\n for (const state of arg.states) {\n if (state.methods.start) {\n arg.state = state\n state.methods.start(arg)\n }\n }\n}\n\nexport function setAll (arg: Partial) {\n const {\n interaction,\n modifiersState = interaction.modifiers,\n prevCoords = modifiersState.result\n ? modifiersState.result.coords\n : interaction.coords.prev.page,\n phase,\n preEnd,\n requireEndOnly,\n rect,\n skipModifiers,\n } = arg\n\n const states = skipModifiers\n ? arg.states.slice(skipModifiers)\n : arg.states\n\n arg.coords = extend({}, arg.pageCoords)\n arg.rect = extend({}, rect)\n\n const result = {\n delta: { x: 0, y: 0 },\n rectDelta: {\n left : 0,\n right : 0,\n top : 0,\n bottom: 0,\n },\n coords: arg.coords,\n changed: true,\n }\n\n for (const state of states) {\n const { options } = state\n\n if (!state.methods.set ||\n !shouldDo(options, preEnd, requireEndOnly, phase)) { continue }\n\n arg.state = state\n state.methods.set(arg)\n }\n\n result.delta.x = arg.coords.x - arg.pageCoords.x\n result.delta.y = arg.coords.y - arg.pageCoords.y\n\n let rectChanged = false\n\n if (rect) {\n result.rectDelta.left = arg.rect.left - rect.left\n result.rectDelta.right = arg.rect.right - rect.right\n result.rectDelta.top = arg.rect.top - rect.top\n result.rectDelta.bottom = arg.rect.bottom - rect.bottom\n\n rectChanged = result.rectDelta.left !== 0 ||\n result.rectDelta.right !== 0 ||\n result.rectDelta.top !== 0 ||\n result.rectDelta.bottom !== 0\n }\n\n result.changed = prevCoords.x !== result.coords.x ||\n prevCoords.y !== result.coords.y ||\n rectChanged\n\n return result\n}\n\nfunction beforeMove (arg: Interact.SignalArg): void | false {\n const { interaction, phase, preEnd, skipModifiers } = arg\n const { interactable, element } = interaction\n const modifierResult = setAll(\n {\n interaction,\n interactable,\n element,\n preEnd,\n phase,\n pageCoords: interaction.coords.cur.page,\n rect: interaction.rect,\n states: interaction.modifiers.states,\n requireEndOnly: false,\n skipModifiers,\n })\n\n interaction.modifiers.result = modifierResult\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (!modifierResult.changed && interaction.interacting()) {\n return false\n }\n\n setCoords(arg)\n}\n\nfunction beforeEnd (arg): void | false {\n const { interaction, event, noPreEnd } = arg\n const states = interaction.modifiers.states\n\n if (noPreEnd || !states || !states.length) {\n return\n }\n\n let didPreEnd = false\n\n for (const state of states) {\n arg.state = state\n const { options, methods } = state\n\n const endResult = methods.beforeEnd && methods.beforeEnd(arg)\n\n if (endResult === false) {\n interaction.modifiers.endPrevented = true\n return false\n }\n\n // if the endOnly option is true for any modifier\n if (!didPreEnd && shouldDo(options, true, true)) {\n // fire a move event at the modified coordinates\n interaction.move({ event, preEnd: true })\n didPreEnd = true\n }\n }\n}\n\nfunction stop (arg: Interact.SignalArg) {\n const { interaction } = arg\n const states = interaction.modifiers.states\n\n if (!states || !states.length) {\n return\n }\n\n const modifierArg = extend({\n states,\n interactable: interaction.interactable,\n element: interaction.element,\n }, arg)\n\n restoreCoords(arg)\n\n for (const state of states) {\n modifierArg.state = state\n\n if (state.methods.stop) { state.methods.stop(modifierArg) }\n }\n\n arg.interaction.modifiers.states = null\n arg.interaction.modifiers.endPrevented = false\n}\n\nfunction getModifierList (interaction, registeredModifiers) {\n const actionOptions = interaction.interactable.options[interaction.prepared.name]\n const actionModifiers = actionOptions.modifiers\n\n if (actionModifiers && actionModifiers.length) {\n return actionModifiers\n .filter((modifier) => !modifier.options || modifier.options.enabled !== false)\n .map((modifier) => {\n if (!modifier.methods && modifier.type) {\n return registeredModifiers[modifier.type](modifier)\n }\n\n return modifier\n })\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n .map((type) => {\n const options = actionOptions[type]\n\n return options && options.enabled && {\n options,\n methods: options._methods,\n }\n })\n .filter((m) => !!m)\n}\n\nexport function prepareStates (modifierList) {\n const states = []\n\n for (let index = 0; index < modifierList.length; index++) {\n const { options, methods, name } = modifierList[index]\n\n if (options && options.enabled === false) { continue }\n\n const state = {\n options,\n methods,\n index,\n name,\n }\n\n states.push(state)\n }\n\n return states\n}\n\nfunction setCoords (arg) {\n const { interaction, phase } = arg\n const curCoords = arg.curCoords || interaction.coords.cur\n const startCoords = arg.startCoords || interaction.coords.start\n const { result, startDelta } = interaction.modifiers\n const curDelta = result.delta\n\n if (phase === 'start') {\n extend(interaction.modifiers.startDelta, result.delta)\n }\n\n for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\n coordsSet.page.x += delta.x\n coordsSet.page.y += delta.y\n coordsSet.client.x += delta.x\n coordsSet.client.y += delta.y\n }\n\n const { rectDelta } = interaction.modifiers.result\n const rect = arg.rect || interaction.rect\n\n rect.left += rectDelta.left\n rect.right += rectDelta.right\n rect.top += rectDelta.top\n rect.bottom += rectDelta.bottom\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n}\n\nfunction restoreCoords ({ interaction: { coords, rect, modifiers } }: Interact.SignalArg) {\n if (!modifiers.result) { return }\n\n const { startDelta } = modifiers\n const { delta: curDelta, rectDelta } = modifiers.result\n\n const coordsAndDeltas = [\n [coords.start, startDelta],\n [coords.cur, curDelta],\n ]\n\n for (const [coordsSet, delta] of coordsAndDeltas as any) {\n coordsSet.page.x -= delta.x\n coordsSet.page.y -= delta.y\n coordsSet.client.x -= delta.x\n coordsSet.client.y -= delta.y\n }\n\n rect.left -= rectDelta.left\n rect.right -= rectDelta.right\n rect.top -= rectDelta.top\n rect.bottom -= rectDelta.bottom\n}\n\nfunction shouldDo (options, preEnd?: boolean, requireEndOnly?: boolean, phase?: string) {\n return options\n ? options.enabled !== false &&\n (preEnd || !options.endOnly) &&\n (!requireEndOnly || options.endOnly || options.alwaysOnEnd) &&\n (options.setStart || phase !== 'start')\n : !requireEndOnly\n}\n\nfunction getRectOffset (rect, coords) {\n return rect\n ? {\n left : coords.x - rect.left,\n top : coords.y - rect.top,\n right : rect.right - coords.x,\n bottom: rect.bottom - coords.y,\n }\n : {\n left : 0,\n top : 0,\n right : 0,\n bottom: 0,\n }\n}\n\nfunction makeModifier<\n Options extends { enabled?: boolean, [key: string]: any }\n> (module: { defaults: Options, [key: string]: any }, name?: string) {\n const { defaults } = module\n const methods = {\n start: module.start,\n set: module.set,\n beforeEnd: module.beforeEnd,\n stop: module.stop,\n }\n\n const modifier = (options?: Partial) => {\n options = options || {}\n\n options.enabled = options.enabled !== false\n\n // add missing defaults to options\n for (const prop in defaults) {\n if (!(prop in options)) {\n options[prop] = defaults[prop]\n }\n }\n\n return { options, methods, name }\n }\n\n if (typeof name === 'string') {\n // for backwrads compatibility\n modifier._defaults = defaults\n modifier._methods = methods\n }\n\n return modifier\n}\n\nexport default {\n id: 'modifiers/base',\n install,\n startAll,\n setAll,\n prepareStates,\n start,\n beforeMove,\n beforeEnd,\n stop,\n shouldDo,\n getModifierList,\n getRectOffset,\n makeModifier,\n} as Interact.Plugin\n\nexport {\n makeModifier,\n}\n","import { EventPhase } from '@interactjs/core/InteractEvent'\nimport modifiers from '@interactjs/modifiers/base'\nimport * as utils from '@interactjs/utils'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Resume = 'resume',\n InertiaStart = 'inertiastart',\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n inertia?: {\n active: boolean\n smoothEnd: boolean\n allowResume: boolean\n\n startEvent?: Interact.InteractEvent\n upCoords: {\n page: Interact.Point\n client: Interact.Point\n timeStamp: number\n }\n\n xe?: number\n ye?: number\n sx?: number\n sy?: number\n\n t0?: number\n te?: number\n v0?: number\n vx0?: number\n vy0?: number\n duration?: number\n modifiedXe?: number\n modifiedYe?: number\n\n lambda_v0?: number // eslint-disable-line camelcase\n one_ve_v0?: number // eslint-disable-line camelcase\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n inertia?: {\n enabled?: boolean,\n resistance?: number, // the lambda in exponential decay\n minSpeed?: number, // target speed must be above this for inertia to start\n endSpeed?: number, // the speed at which inertia is slow enough to stop\n allowResume?: true, // allow resuming an action in inertia phase\n smoothEndDuration?: number, // animate to snap/restrict endOnly if there's no inertia\n } | boolean // FIXME\n }\n}\n\n(EventPhase as any).Resume = 'resume'\n; (EventPhase as any).InertiaStart = 'inertiastart'\n\nfunction install (scope: Interact.Scope) {\n const {\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.inertia = {\n active : false,\n smoothEnd : false,\n allowResume: false,\n upCoords : {} as any,\n timeout : null,\n }\n })\n\n // FIXME proper signal typing\n interactions.signals.on('before-action-end', (arg) => release(arg as any, scope))\n interactions.signals.on('down', (arg) => resume(arg as any, scope))\n interactions.signals.on('stop', (arg) => stop(arg as any))\n\n defaults.perAction.inertia = {\n enabled : false,\n resistance : 10, // the lambda in exponential decay\n minSpeed : 100, // target speed must be above this for inertia to start\n endSpeed : 10, // the speed at which inertia is slow enough to stop\n allowResume : true, // allow resuming an action in inertia phase\n smoothEndDuration: 300, // animate to snap/restrict endOnly if there's no inertia\n }\n\n scope.usePlugin(modifiers)\n}\n\nfunction resume (\n { interaction, event, pointer, eventTarget }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n // Check if the down event hits the current inertia target\n if (state.active) {\n let element = eventTarget\n\n // climb up the DOM tree from the event target\n while (utils.is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n // stop inertia\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n\n // update pointers to the down event's coordinates\n interaction.updatePointer(pointer, event, eventTarget, true)\n utils.pointer.setCoords(\n interaction.coords.cur,\n interaction.pointers.map((p) => p.pointer),\n interaction._now()\n )\n\n // fire appropriate signals\n const signalArg = {\n interaction,\n }\n\n scope.interactions.signals.fire('action-resume', signalArg)\n\n // fire a reume event\n const resumeEvent = new scope.InteractEvent(\n interaction, event, interaction.prepared.name, EventPhase.Resume, interaction.element)\n\n interaction._fireEvent(resumeEvent)\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n break\n }\n\n element = utils.dom.parentNode(element)\n }\n }\n}\n\nfunction release (\n { interaction, event, noPreEnd }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n if (!interaction.interacting() ||\n (interaction.simulation && interaction.simulation.active) ||\n noPreEnd) {\n return null\n }\n\n const options = getOptions(interaction)\n\n const now = interaction._now()\n const { client: velocityClient } = interaction.coords.velocity\n const pointerSpeed = utils.hypot(velocityClient.x, velocityClient.y)\n\n let smoothEnd = false\n let modifierResult: ReturnType\n\n // check if inertia should be started\n const inertiaPossible = (options && options.enabled &&\n interaction.prepared.name !== 'gesture' &&\n event !== state.startEvent)\n\n const inertia = (inertiaPossible &&\n (now - interaction.coords.cur.timeStamp) < 50 &&\n pointerSpeed > options.minSpeed &&\n pointerSpeed > options.endSpeed)\n\n const modifierArg = {\n interaction,\n pageCoords: utils.extend({}, interaction.coords.cur.page),\n states: inertiaPossible && interaction.modifiers.states.map(\n (modifierStatus) => utils.extend({}, modifierStatus)\n ),\n preEnd: true,\n prevCoords: undefined,\n requireEndOnly: null,\n }\n\n // smoothEnd\n if (inertiaPossible && !inertia) {\n modifierArg.prevCoords = interaction.prevEvent.page\n modifierArg.requireEndOnly = false\n modifierResult = modifiers.setAll(modifierArg)\n\n if (modifierResult.changed) {\n smoothEnd = true\n }\n }\n\n if (!(inertia || smoothEnd)) { return null }\n\n utils.pointer.copyCoords(state.upCoords, interaction.coords.cur)\n\n interaction.pointers[0].pointer = state.startEvent = new scope.InteractEvent(\n interaction,\n event,\n // FIXME add proper typing Action.name\n interaction.prepared.name as T,\n EventPhase.InertiaStart,\n interaction.element,\n )\n\n state.t0 = now\n\n state.active = true\n state.allowResume = options.allowResume\n interaction.simulation = state\n\n interaction.interactable.fire(state.startEvent)\n\n if (inertia) {\n state.vx0 = interaction.coords.velocity.client.x\n state.vy0 = interaction.coords.velocity.client.y\n state.v0 = pointerSpeed\n\n calcInertia(interaction, state)\n\n utils.extend(modifierArg.pageCoords, interaction.coords.cur.page)\n\n modifierArg.pageCoords.x += state.xe\n modifierArg.pageCoords.y += state.ye\n modifierArg.prevCoords = undefined\n modifierArg.requireEndOnly = true\n\n modifierResult = modifiers.setAll(modifierArg)\n\n state.modifiedXe += modifierResult.delta.x\n state.modifiedYe += modifierResult.delta.y\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.smoothEnd = true\n state.xe = modifierResult.delta.x\n state.ye = modifierResult.delta.y\n\n state.sx = state.sy = 0\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n\n return false\n}\n\nfunction stop ({ interaction }: Interact.SignalArg) {\n const state = interaction.inertia\n if (state.active) {\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction calcInertia (interaction: Interact.Interaction, state) {\n const options = getOptions(interaction)\n const lambda = options.resistance\n const inertiaDur = -Math.log(options.endSpeed / state.v0) / lambda\n\n state.x0 = interaction.prevEvent.page.x\n state.y0 = interaction.prevEvent.page.y\n state.t0 = state.startEvent.timeStamp / 1000\n state.sx = state.sy = 0\n\n state.modifiedXe = state.xe = (state.vx0 - inertiaDur) / lambda\n state.modifiedYe = state.ye = (state.vy0 - inertiaDur) / lambda\n state.te = inertiaDur\n\n state.lambda_v0 = lambda / state.v0\n state.one_ve_v0 = 1 - options.endSpeed / state.v0\n}\n\nfunction inertiaTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n utils.pointer.setCoordDeltas(interaction.coords.delta, interaction.coords.prev, interaction.coords.cur)\n utils.pointer.setCoordVelocity(interaction.coords.velocity, interaction.coords.delta)\n\n const state = interaction.inertia\n const options = getOptions(interaction)\n const lambda = options.resistance\n const t = interaction._now() / 1000 - state.t0\n\n if (t < state.te) {\n const progress = 1 - (Math.exp(-lambda * t) - state.lambda_v0) / state.one_ve_v0\n\n if (state.modifiedXe === state.xe && state.modifiedYe === state.ye) {\n state.sx = state.xe * progress\n state.sy = state.ye * progress\n }\n else {\n const quadPoint = utils.getQuadraticCurvePoint(\n 0, 0,\n state.xe, state.ye,\n state.modifiedXe, state.modifiedYe,\n progress)\n\n state.sx = quadPoint.x\n state.sy = quadPoint.y\n }\n\n interaction.move()\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.sx = state.modifiedXe\n state.sy = state.modifiedYe\n\n interaction.move()\n interaction.end(state.startEvent)\n state.active = false\n interaction.simulation = null\n }\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n}\n\nfunction smothEndTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n\n const state = interaction.inertia\n const t = interaction._now() - state.t0\n const { smoothEndDuration: duration } = getOptions(interaction)\n\n if (t < duration) {\n state.sx = utils.easeOutQuad(t, 0, state.xe, duration)\n state.sy = utils.easeOutQuad(t, 0, state.ye, duration)\n\n interaction.move()\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n else {\n state.sx = state.xe\n state.sy = state.ye\n\n interaction.move()\n interaction.end(state.startEvent)\n\n state.smoothEnd =\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction updateInertiaCoords (interaction: Interact.Interaction) {\n const state = interaction.inertia\n\n // return if inertia isn't running\n if (!state.active) { return }\n\n const pageUp = state.upCoords.page\n const clientUp = state.upCoords.client\n\n utils.pointer.setCoords(interaction.coords.cur, [ {\n pageX : pageUp.x + state.sx,\n pageY : pageUp.y + state.sy,\n clientX: clientUp.x + state.sx,\n clientY: clientUp.y + state.sy,\n } ], interaction._now())\n}\n\nfunction getOptions ({ interactable, prepared }: Interact.Interaction) {\n return interactable &&\n interactable.options &&\n prepared.name &&\n interactable.options[prepared.name].inertia\n}\n\nexport default {\n id: 'inertia',\n install,\n calcInertia,\n inertiaTick,\n smothEndTick,\n updateInertiaCoords,\n}\n","import * as is from '@interactjs/utils/is'\nimport rectUtils from '@interactjs/utils/rect'\n\nfunction start ({ rect, startOffset, state }) {\n const { options } = state\n const { elementRect } = options\n const offset = {} as { [key: string]: number }\n\n if (rect && elementRect) {\n offset.left = startOffset.left - (rect.width * elementRect.left)\n offset.top = startOffset.top - (rect.height * elementRect.top)\n\n offset.right = startOffset.right - (rect.width * (1 - elementRect.right))\n offset.bottom = startOffset.bottom - (rect.height * (1 - elementRect.bottom))\n }\n else {\n offset.left = offset.top = offset.right = offset.bottom = 0\n }\n\n state.offset = offset\n}\n\nfunction set ({ coords, interaction, state }) {\n const { options, offset } = state\n\n const restriction = getRestrictionRect(options.restriction, interaction, coords)\n\n if (!restriction) { return state }\n\n const rect = restriction\n\n // object is assumed to have\n // x, y, width, height or\n // left, top, right, bottom\n if ('x' in restriction && 'y' in restriction) {\n coords.x = Math.max(Math.min(rect.x + rect.width - offset.right, coords.x), rect.x + offset.left)\n coords.y = Math.max(Math.min(rect.y + rect.height - offset.bottom, coords.y), rect.y + offset.top)\n }\n else {\n coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left)\n coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top)\n }\n}\n\nfunction getRestrictionRect (value, interaction, coords?: Interact.Point) {\n if (is.func(value)) {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction])\n } else {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element)\n }\n}\n\nconst restrict = {\n start,\n set,\n getRestrictionRect,\n defaults: {\n enabled: false,\n restriction: null,\n elementRect: null,\n },\n}\n\nexport default restrict\n","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictEdges: {\n// inner: { top: 200, left: 200, right: 400, bottom: 400 },\n// outer: { top: 0, left: 0, right: 600, bottom: 600 },\n// },\n// })\n\nimport Interaction from '@interactjs/core/Interaction'\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrict from './pointer'\n\nconst { getRestrictionRect } = restrict\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity }\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity }\n\nfunction start ({ interaction, state }: { interaction: Interaction, state: any }) {\n const { options } = state\n const startOffset = interaction.modifiers.startOffset\n let offset\n\n if (options) {\n const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page)\n\n offset = rectUtils.rectToXY(offsetRect)\n }\n\n offset = offset || { x: 0, y: 0 }\n\n state.offset = {\n top: offset.y + startOffset.top,\n left: offset.x + startOffset.left,\n bottom: offset.y - startOffset.bottom,\n right: offset.x - startOffset.right,\n }\n}\n\nfunction set ({ coords, interaction, state }: {\n coords: Interact.Point,\n interaction: Interaction,\n state: any\n}) {\n const { offset, options } = state\n const edges = interaction.prepared._linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const page = extend({}, coords)\n const inner = getRestrictionRect(options.inner, interaction, page) || {}\n const outer = getRestrictionRect(options.outer, interaction, page) || {}\n\n fixRect(inner, noInner)\n fixRect(outer, noOuter)\n\n if (edges.top) {\n coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top)\n }\n else if (edges.bottom) {\n coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom)\n }\n if (edges.left) {\n coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left)\n }\n else if (edges.right) {\n coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right)\n }\n}\n\nfunction fixRect (rect, defaults) {\n for (const edge of ['top', 'left', 'bottom', 'right']) {\n if (!(edge in rect)) {\n rect[edge] = defaults[edge]\n }\n }\n\n return rect\n}\n\nconst restrictEdges = {\n noInner,\n noOuter,\n getRestrictionRect,\n start,\n set,\n defaults: {\n enabled: false,\n inner: null,\n outer: null,\n offset: null,\n },\n}\n\nexport default restrictEdges\n","// This module adds the options.resize.restrictSize setting which sets min and\n// max width and height for the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictSize: {\n// min: { width: -600, height: -600 },\n// max: { width: 600, height: 600 },\n// },\n// })\n\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrictEdges from './edges'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nfunction start (arg) {\n return restrictEdges.start(arg)\n}\n\nfunction set (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const rect = rectUtils.xywhToTlbr(interaction.resizeRects.inverted)\n\n const minSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.min, interaction, arg.coords)) || noMin\n const maxSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.max, interaction, arg.coords)) || noMax\n\n state.options = {\n enabled: options.enabled,\n endOnly: options.endOnly,\n inner: extend({}, restrictEdges.noInner),\n outer: extend({}, restrictEdges.noOuter),\n }\n\n if (edges.top) {\n state.options.inner.top = rect.bottom - minSize.height\n state.options.outer.top = rect.bottom - maxSize.height\n }\n else if (edges.bottom) {\n state.options.inner.bottom = rect.top + minSize.height\n state.options.outer.bottom = rect.top + maxSize.height\n }\n if (edges.left) {\n state.options.inner.left = rect.right - minSize.width\n state.options.outer.left = rect.right - maxSize.width\n }\n else if (edges.right) {\n state.options.inner.right = rect.left + minSize.width\n state.options.outer.right = rect.left + maxSize.width\n }\n\n restrictEdges.set(arg)\n\n state.options = options\n}\n\nconst restrictSize = {\n start,\n set,\n defaults: {\n enabled: false,\n min: null,\n max: null,\n },\n}\n\nexport default restrictSize\n","import * as utils from '@interactjs/utils'\n\nfunction start (arg: Interact.SignalArg) {\n const { interaction, interactable, element, rect, state, startOffset } = arg\n const { options } = state\n const offsets = []\n const origin = options.offsetWithOrigin\n ? getOrigin(arg)\n : { x: 0, y: 0 }\n\n let snapOffset\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.coords.start.page.x,\n y: interaction.coords.start.page.y,\n }\n }\n else {\n const offsetRect = utils.rect.resolveRectLike(options.offset, interactable, element, [interaction])\n\n snapOffset = utils.rect.rectToXY(offsetRect) || { x: 0, y: 0 }\n snapOffset.x += origin.x\n snapOffset.y += origin.y\n }\n\n const relativePoints = options.relativePoints || []\n\n if (rect && options.relativePoints && options.relativePoints.length) {\n for (let index = 0; index < relativePoints.length; index++) {\n const relativePoint = relativePoints[index]\n\n offsets.push({\n index,\n relativePoint,\n x: startOffset.left - (rect.width * relativePoint.x) + snapOffset.x,\n y: startOffset.top - (rect.height * relativePoint.y) + snapOffset.y,\n })\n }\n }\n else {\n offsets.push(utils.extend({\n index: 0,\n relativePoint: null,\n }, snapOffset))\n }\n\n state.offsets = offsets\n}\n\nfunction set (arg: Interact.SignalArg) {\n const { interaction, coords, state } = arg\n const { options, offsets } = state\n\n const origin = utils.getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name)\n const page = utils.extend({}, coords)\n const targets = []\n let target\n\n if (!options.offsetWithOrigin) {\n page.x -= origin.x\n page.y -= origin.y\n }\n\n state.realX = page.x\n state.realY = page.y\n\n for (const offset of offsets) {\n const relativeX = page.x - offset.x\n const relativeY = page.y - offset.y\n\n for (let index = 0, len = options.targets.length; index < len; index++) {\n const snapTarget = options.targets[index]\n if (utils.is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction, offset, index)\n }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\n\n targets.push({\n x: (utils.is.number(target.x) ? target.x : relativeX) + offset.x,\n y: (utils.is.number(target.y) ? target.y : relativeY) + offset.y,\n\n range: utils.is.number(target.range) ? target.range : options.range,\n })\n }\n }\n\n const closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n dx: 0,\n dy: 0,\n }\n\n for (let i = 0, len = targets.length; i < len; i++) {\n target = targets[i]\n\n const range = target.range\n const dx = target.x - page.x\n const dy = target.y - page.y\n const distance = utils.hypot(dx, dy)\n let inRange = distance <= range\n\n // Infinite targets count as being out of range\n // compared to non infinite ones that are in range\n if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n inRange = false\n }\n\n if (!closest.target || (inRange\n // is the closest target in range?\n ? (closest.inRange && range !== Infinity\n // the pointer is relatively deeper in this target\n ? distance / range < closest.distance / closest.range\n // this target has Infinite range and the closest doesn't\n : (range === Infinity && closest.range !== Infinity) ||\n // OR this target is closer that the previous closest\n distance < closest.distance)\n // The other is not in range and the pointer is closer to this target\n : (!closest.inRange && distance < closest.distance))) {\n closest.target = target\n closest.distance = distance\n closest.range = range\n closest.inRange = inRange\n closest.dx = dx\n closest.dy = dy\n\n state.range = range\n }\n }\n\n if (closest.inRange) {\n coords.x = closest.target.x\n coords.y = closest.target.y\n }\n\n state.closest = closest\n}\n\nfunction getOrigin (arg: Partial) {\n const optionsOrigin = utils.rect.rectToXY(\n utils.rect.resolveRectLike(arg.state.options.origin)\n )\n const origin = optionsOrigin || utils.getOriginXY(\n arg.interactable,\n arg.interaction.element,\n arg.interaction.prepared.name,\n )\n\n return origin\n}\n\nconst snap = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n offsetWithOrigin: true,\n\n relativePoints: null,\n },\n}\n\nexport default snap\n","// This module allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport snap from './pointer'\n\nfunction start (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.edges\n\n if (!edges) { return null }\n\n arg.state = {\n options: {\n relativePoints: [{\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1,\n }],\n origin: { x: 0, y: 0 },\n offset: options.offset || 'self',\n range: options.range,\n },\n }\n\n state.targetFields = state.targetFields || [\n ['width', 'height'],\n ['x', 'y'],\n ]\n\n snap.start(arg)\n state.offsets = arg.state.offsets\n\n arg.state = state\n}\n\nfunction set (arg) {\n const { interaction, state, coords } = arg\n const { options, offsets } = state\n const relative = {\n x: coords.x - offsets[0].x,\n y: coords.y - offsets[0].y,\n }\n\n state.options = extend({}, options)\n state.options.targets = []\n\n for (const snapTarget of (options.targets || [])) {\n let target\n\n if (is.func(snapTarget)) {\n target = snapTarget(relative.x, relative.y, interaction)\n }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\n\n for (const [xField, yField] of state.targetFields) {\n if (xField in target || yField in target) {\n target.x = target[xField]\n target.y = target[yField]\n\n break\n }\n }\n\n state.options.targets.push(target)\n }\n\n snap.set(arg)\n\n state.options = options\n}\n\nconst snapSize = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n },\n}\n\nexport default snapSize\n","/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\n * interact(target).resizable({\n * snapEdges: {\n * targets: [interact.snappers.grid({ x: 100, y: 50 })],\n * },\n * })\n *\n * interact(target).resizable({\n * snapEdges: {\n * targets: [\n * interact.snappers.grid({\n * top: 50,\n * left: 50,\n * bottom: 100,\n * right: 100,\n * }),\n * ],\n * },\n * })\n */\n\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport snapSize from './size'\n\nfunction start (arg) {\n const edges = arg.interaction.prepared.edges\n\n if (!edges) { return null }\n\n arg.state.targetFields = arg.state.targetFields || [\n [edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom'],\n ]\n\n return snapSize.start(arg)\n}\n\nfunction set (arg) {\n return snapSize.set(arg)\n}\n\nconst snapEdges = {\n start,\n set,\n defaults: extend(clone(snapSize.defaults), {\n offset: { x: 0, y: 0 },\n }),\n}\n\nexport default snapEdges\n","import base from './base'\nimport restrictEdgesModule from './restrict/edges'\nimport restrictModule from './restrict/pointer'\nimport restrictSizeModule from './restrict/size'\nimport snapEdgesModule from './snap/edges'\nimport snapModule from './snap/pointer'\nimport snapSizeModule from './snap/size'\n\nconst { makeModifier } = base\n\nexport const snap = makeModifier(snapModule, 'snap')\nexport const snapSize = makeModifier(snapSizeModule, 'snapSize')\nexport const snapEdges = makeModifier(snapEdgesModule, 'snapEdges')\nexport const restrict = makeModifier(restrictModule, 'restrict')\nexport const restrictEdges = makeModifier(restrictEdgesModule, 'restrictEdges')\nexport const restrictSize = makeModifier(restrictSizeModule, 'restrictSize')\n","import BaseEvent from '@interactjs/core/BaseEvent'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\n\n/** */\nexport default class PointerEvent extends BaseEvent {\n type: T\n originalEvent: Interact.PointerEventType\n pointerId: number\n pointerType: string\n double: boolean\n pageX: number\n pageY: number\n clientX: number\n clientY: number\n dt: number\n eventable: any\n\n /** */\n constructor (\n type: T,\n pointer: Interact.PointerType | PointerEvent,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n interaction: Interact.Interaction,\n timeStamp: number,\n ) {\n super(interaction)\n pointerUtils.pointerExtend(this, event)\n\n if (event !== pointer) {\n pointerUtils.pointerExtend(this, pointer)\n }\n\n this.timeStamp = timeStamp\n this.originalEvent = event\n this.type = type\n this.pointerId = pointerUtils.getPointerId(pointer)\n this.pointerType = pointerUtils.getPointerType(pointer)\n this.target = eventTarget\n this.currentTarget = null\n\n if (type === 'tap') {\n const pointerIndex = interaction.getPointerIndex(pointer)\n this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime\n\n const interval = this.timeStamp - interaction.tapTime\n\n this.double = !!(interaction.prevTap &&\n interaction.prevTap.type !== 'doubletap' &&\n interaction.prevTap.target === this.target &&\n interval < 500)\n }\n else if (type === 'doubletap') {\n this.dt = (pointer as PointerEvent<'tap'>).timeStamp - interaction.tapTime\n }\n }\n\n _subtractOrigin ({ x: originX, y: originY }) {\n this.pageX -= originX\n this.pageY -= originY\n this.clientX -= originX\n this.clientY -= originY\n\n return this\n }\n\n _addOrigin ({ x: originX, y: originY }) {\n this.pageX += originX\n this.pageY += originY\n this.clientX += originX\n this.clientY += originY\n\n return this\n }\n\n /**\n * Prevent the default behaviour of the original Event\n */\n preventDefault () {\n this.originalEvent.preventDefault()\n }\n}\n","import { PerActionDefaults } from '@interactjs/core/defaultOptions'\nimport Eventable from '@interactjs/core/Eventable'\nimport Interaction from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport PointerEvent from './PointerEvent'\n\nexport type EventTargetList = Array<{\n node: Node,\n eventable: Eventable,\n props: { [key: string]: any },\n}>\n\nexport interface PointerEventOptions extends PerActionDefaults {\n enabled?: undefined // not used\n holdDuration?: number,\n ignoreFrom?: any,\n allowFrom?: any,\n origin?: Interact.Point | string | Element\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n pointerEvents: typeof pointerEvents\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n prevTap?: PointerEvent\n tapTime?: number\n }\n}\n\ndeclare module '@interactjs/core/PointerInfo' {\n interface PointerInfo {\n hold?: {\n duration: number\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n pointerEvents: Interact.Options\n }\n}\n\nconst signals = new utils.Signals()\nconst simpleSignals = [ 'down', 'up', 'cancel' ]\nconst simpleEvents = [ 'down', 'up', 'cancel' ]\n\nconst defaults: PointerEventOptions = {\n holdDuration: 600,\n ignoreFrom : null,\n allowFrom : null,\n origin : { x: 0, y: 0 },\n}\n\nconst pointerEvents = {\n id: 'pointer-events/base',\n install,\n signals,\n PointerEvent,\n fire,\n collectEventTargets,\n createSignalListener,\n defaults,\n types: [\n 'down',\n 'move',\n 'up',\n 'cancel',\n 'tap',\n 'doubletap',\n 'hold',\n ],\n}\n\nfunction fire (arg: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n targets?: EventTargetList,\n pointerEvent?: PointerEvent,\n type: T\n}, scope: Interact.Scope) {\n const {\n interaction, pointer, event, eventTarget,\n type = (arg as any).pointerEvent.type,\n targets = collectEventTargets(arg),\n } = arg\n\n const {\n pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now()),\n } = arg\n\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n targets,\n type,\n pointerEvent,\n }\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i]\n\n for (const prop in target.props || {}) {\n (pointerEvent as any)[prop] = target.props[prop]\n }\n\n const origin = utils.getOriginXY(target.eventable, target.node)\n\n pointerEvent._subtractOrigin(origin)\n pointerEvent.eventable = target.eventable\n pointerEvent.currentTarget = target.node\n\n target.eventable.fire(pointerEvent)\n\n pointerEvent._addOrigin(origin)\n\n if (pointerEvent.immediatePropagationStopped ||\n (pointerEvent.propagationStopped &&\n (i + 1) < targets.length && targets[i + 1].node !== pointerEvent.currentTarget)) {\n break\n }\n }\n\n signals.fire('fired', signalArg)\n\n if (type === 'tap') {\n // if pointerEvent should make a double tap, create and fire a doubletap\n // PointerEvent and use that as the prevTap\n const prevTap = pointerEvent.double\n ? fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'doubletap',\n }, scope)\n : pointerEvent\n\n interaction.prevTap = prevTap\n interaction.tapTime = prevTap.timeStamp\n }\n\n return pointerEvent\n}\n\nfunction collectEventTargets ({ interaction, pointer, event, eventTarget, type }: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n type: T\n}) {\n const pointerIndex = interaction.getPointerIndex(pointer)\n const pointerInfo = interaction.pointers[pointerIndex]\n\n // do not fire a tap event if the pointer was moved before being lifted\n if (type === 'tap' && (interaction.pointerWasMoved ||\n // or if the pointerup target is different to the pointerdown target\n !(pointerInfo && pointerInfo.downTarget === eventTarget))) {\n return []\n }\n\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n path,\n targets: [] as EventTargetList,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter((target) =>\n target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration)\n }\n\n return signalArg.targets\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.pointerEvents = pointerEvents\n scope.defaults.actions.pointerEvents = pointerEvents.defaults\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.prevTap = null // the most recent tap event on this interaction\n interaction.tapTime = 0 // time of the most recent tap event\n })\n\n interactions.signals.on('update-pointer', ({ down, pointerInfo }) => {\n if (!down && pointerInfo.hold) {\n return\n }\n\n pointerInfo.hold = { duration: Infinity, timeout: null }\n })\n\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget, duplicateMove }) => {\n const pointerIndex = interaction.getPointerIndex(pointer)\n\n if (!duplicateMove && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n\n fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'move',\n }, scope)\n }\n })\n\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget, pointerIndex }) => {\n const timer = interaction.pointers[pointerIndex].hold\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'hold',\n targets: [] as EventTargetList,\n path,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (!signalArg.targets.length) { return }\n\n let minDuration = Infinity\n\n for (const target of signalArg.targets) {\n const holdDuration = target.eventable.options.holdDuration\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration\n }\n }\n\n timer.duration = minDuration\n timer.timeout = setTimeout(() => {\n fire({\n interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n }, scope)\n }, minDuration)\n })\n\n for (const signalName of ['up', 'cancel']) {\n interactions.signals.on(signalName, ({ interaction, pointerIndex }) => {\n if (interaction.pointers[pointerIndex].hold) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n })\n }\n\n for (let i = 0; i < simpleSignals.length; i++) {\n interactions.signals.on(simpleSignals[i], createSignalListener(simpleEvents[i], scope))\n }\n\n interactions.signals.on('up', ({ interaction, pointer, event, eventTarget }) => {\n if (!interaction.pointerWasMoved) {\n fire({ interaction, eventTarget, pointer, event, type: 'tap' }, scope)\n }\n })\n}\n\nfunction createSignalListener (type: string, scope) {\n return function ({ interaction, pointer, event, eventTarget }: any) {\n fire({ interaction, eventTarget, pointer, event, type }, scope)\n }\n}\n\nexport default pointerEvents\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n holdIntervalHandle?: any\n }\n}\n\ndeclare module '@interactjs/pointer-events/base' {\n interface PointerEventOptions {\n holdRepeatInterval?: number\n }\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n pointerEvents,\n interactions,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n pointerEvents.signals.on('new', onNew)\n pointerEvents.signals.on('fired', (arg) => onFired(arg as any, scope))\n\n for (const signal of ['move', 'up', 'cancel', 'endall']) {\n interactions.signals.on(signal, endHoldRepeat)\n }\n\n // don't repeat by default\n pointerEvents.defaults.holdRepeatInterval = 0\n pointerEvents.types.push('holdrepeat')\n}\n\nfunction onNew ({ pointerEvent }) {\n if (pointerEvent.type !== 'hold') { return }\n\n pointerEvent.count = (pointerEvent.count || 0) + 1\n}\n\nfunction onFired (\n { interaction, pointerEvent, eventTarget, targets }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n if (pointerEvent.type !== 'hold' || !targets.length) { return }\n\n // get the repeat interval from the first eventable\n const interval = targets[0].eventable.options.holdRepeatInterval\n\n // don't repeat if the interval is 0 or less\n if (interval <= 0) { return }\n\n // set a timeout to fire the holdrepeat event\n interaction.holdIntervalHandle = setTimeout(() => {\n scope.pointerEvents.fire({\n interaction,\n eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent,\n }, scope)\n }, interval)\n}\n\nfunction endHoldRepeat ({ interaction }) {\n // set the interaction's holdStopTime property\n // to stop further holdRepeat events\n if (interaction.holdIntervalHandle) {\n clearInterval(interaction.holdIntervalHandle)\n interaction.holdIntervalHandle = null\n }\n}\n\nexport default {\n id: 'pointer-events/holdRepeat',\n install,\n} as Interact.Plugin\n","import { Scope } from '@interactjs/core/scope'\nimport { merge } from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\n\ntype Interactable = import ('@interactjs/core/Interactable').default\ntype EventTargetList = import ('./base').EventTargetList\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n pointerEvents: typeof pointerEventsMethod\n __backCompatOption: (optionName: string, newValue: any) => any\n }\n}\n\nfunction install (scope: Scope) {\n const {\n pointerEvents,\n actions,\n Interactable,\n interactables,\n } = scope\n\n pointerEvents.signals.on('collect-targets', ({\n targets,\n node,\n type,\n eventTarget,\n }: {\n targets: EventTargetList,\n node: Node,\n type: string,\n eventTarget: Element,\n }) => {\n scope.interactables.forEachMatch(node, (interactable: Interactable) => {\n const eventable = interactable.events\n const options = eventable.options\n\n if (\n eventable.types[type] &&\n eventable.types[type].length &&\n interactable.testIgnoreAllow(options, node, eventTarget)) {\n targets.push({\n node,\n eventable,\n props: { interactable },\n })\n }\n })\n })\n\n interactables.signals.on('new', ({ interactable }) => {\n interactable.events.getRect = function (element: Element) {\n return interactable.getRect(element)\n }\n })\n\n interactables.signals.on('set', ({ interactable, options }) => {\n extend(interactable.events.options, pointerEvents.defaults)\n extend(interactable.events.options, options.pointerEvents || {})\n })\n\n merge(actions.eventTypes, pointerEvents.types)\n\n Interactable.prototype.pointerEvents = pointerEventsMethod\n\n const __backCompatOption = Interactable.prototype._backCompatOption\n\n Interactable.prototype._backCompatOption = function (optionName, newValue) {\n const ret = __backCompatOption.call(this, optionName, newValue)\n\n if (ret === this) {\n this.events.options[optionName] = newValue\n }\n\n return ret\n }\n}\n\nfunction pointerEventsMethod (this: Interactable, options: any) {\n extend(this.events.options, options)\n\n return this\n}\n\nexport default {\n id: 'pointer-events/interactableTargets',\n install,\n}\n","import pointerEvents from './base'\nimport holdRepeat from './holdRepeat'\nimport interactableTargets from './interactableTargets'\n\nfunction install (scope) {\n scope.usePlugin(pointerEvents)\n scope.usePlugin(holdRepeat)\n scope.usePlugin(interactableTargets)\n}\n\nconst id = 'pointer-events'\n\nexport { id, pointerEvents, holdRepeat, interactableTargets, install }\n","import Interactable from '@interactjs/core/Interactable'\nimport { EventPhase } from '@interactjs/core/InteractEvent'\nimport { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport { arr, extend, is, pointer as pointerUtils, rect as rectUtils, win } from '@interactjs/utils'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n reflow: (action: ActionProps) => ReturnType\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n _reflowPromise: Promise\n _reflowResolve: () => void\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Reflow = 'reflow',\n }\n}\n\n(EventPhase as any).Reflow = 'reflow'\n\nexport function install (scope: Scope) {\n const {\n actions,\n interactions,\n /** @lends Interactable */\n // eslint-disable-next-line no-shadow\n Interactable,\n } = scope\n\n // add action reflow event types\n for (const actionName of actions.names) {\n actions.eventTypes.push(`${actionName}reflow`)\n }\n\n // remove completed reflow interactions\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.pointerType === EventPhase.Reflow) {\n if (interaction._reflowResolve) {\n interaction._reflowResolve()\n }\n\n arr.remove(scope.interactions.list, interaction)\n }\n })\n\n /**\n * ```js\n * const interactable = interact(target)\n * const drag = { name: drag, axis: 'x' }\n * const resize = { name: resize, edges: { left: true, bottom: true }\n *\n * interactable.reflow(drag)\n * interactable.reflow(resize)\n * ```\n *\n * Start an action sequence to re-apply modifiers, check drops, etc.\n *\n * @param { Object } action The action to begin\n * @param { string } action.name The name of the action\n * @returns { Promise }\n */\n Interactable.prototype.reflow = function (action) {\n return reflow(this, action, scope)\n }\n}\n\nfunction reflow (interactable: Interactable, action: ActionProps, scope: Scope): Promise {\n const elements = is.string(interactable.target)\n ? arr.from(interactable._context.querySelectorAll(interactable.target))\n : [interactable.target]\n\n // tslint:disable-next-line variable-name\n const Promise = (win.window as any).Promise\n const promises: Array> | null = Promise ? [] : null\n\n for (const element of elements) {\n const rect = interactable.getRect(element)\n\n if (!rect) { break }\n\n const runningInteraction = arr.find(\n scope.interactions.list,\n (interaction: Interaction) => {\n return interaction.interacting() &&\n interaction.interactable === interactable &&\n interaction.element === element &&\n interaction.prepared.name === action.name\n })\n let reflowPromise: Promise\n\n if (runningInteraction) {\n runningInteraction.move()\n\n if (promises) {\n reflowPromise = runningInteraction._reflowPromise || new Promise((resolve: any) => {\n runningInteraction._reflowResolve = resolve\n })\n }\n }\n else {\n const xywh = rectUtils.tlbrToXywh(rect)\n const coords = {\n page : { x: xywh.x, y: xywh.y },\n client : { x: xywh.x, y: xywh.y },\n timeStamp: scope.now(),\n }\n\n const event = pointerUtils.coordsToEvent(coords)\n reflowPromise = startReflow(scope, interactable, element, action, event)\n }\n\n if (promises) {\n promises.push(reflowPromise)\n }\n }\n\n return promises && Promise.all(promises).then(() => interactable)\n}\n\nfunction startReflow (scope: Scope, interactable: Interactable, element: Element, action: ActionProps, event: any) {\n const interaction = scope.interactions.new({ pointerType: 'reflow' })\n const signalArg = {\n interaction,\n event,\n pointer: event,\n eventTarget: element,\n phase: EventPhase.Reflow,\n }\n\n interaction.interactable = interactable\n interaction.element = element\n interaction.prepared = extend({}, action)\n interaction.prevEvent = event\n interaction.updatePointer(event, event, element, true)\n\n interaction._doPhase(signalArg)\n\n const reflowPromise = (win.window as unknown as any).Promise\n ? new (win.window as unknown as any).Promise((resolve: any) => {\n interaction._reflowResolve = resolve\n })\n : null\n\n interaction._reflowPromise = reflowPromise\n interaction.start(action, interactable, element)\n\n if (interaction._interacting) {\n interaction.move(signalArg)\n interaction.end(event)\n }\n else {\n interaction.stop()\n }\n\n interaction.removePointer(event, event)\n interaction.pointerIsDown = false\n\n return reflowPromise\n}\n\nexport default {\n id: 'reflow',\n install,\n} as Interact.Plugin\n","/** @module interact */\n\nimport { Options } from '@interactjs/core/defaultOptions'\nimport Interactable from '@interactjs/core/Interactable'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport browser from '@interactjs/utils/browser'\nimport events from '@interactjs/utils/events'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n interact: InteractStatic\n }\n}\n\nexport interface InteractStatic {\n (target: Interact.Target, options?: Options): Interactable\n on: typeof on\n pointerMoveTolerance: typeof pointerMoveTolerance\n stop: typeof stop\n supportsPointerEvent: typeof supportsPointerEvent\n supportsTouch: typeof supportsTouch\n debug: typeof debug\n off: typeof off\n isSet: typeof isSet\n use: typeof use\n getPointerAverage: typeof utils.pointer.pointerAverage\n getTouchBBox: typeof utils.pointer.touchBBox\n getTouchDistance: typeof utils.pointer.touchDistance\n getTouchAngle: typeof utils.pointer.touchAngle\n getElementRect: typeof utils.dom.getElementRect\n getElementClientRect: typeof utils.dom.getElementClientRect\n matchesSelector: typeof utils.dom.matchesSelector\n closest: typeof utils.dom.closest\n addDocument: typeof scope.addDocument\n removeDocument: typeof scope.removeDocument\n version: string\n}\n\nconst globalEvents: any = {}\nconst scope = new Scope()\n\n/**\n * ```js\n * interact('#draggable').draggable(true)\n *\n * var rectables = interact('rect')\n * rectables\n * .gesturable(true)\n * .on('gesturemove', function (event) {\n * // ...\n * })\n * ```\n *\n * The methods of this variable can be used to set elements as interactables\n * and also to change various default settings.\n *\n * Calling it as a function and passing an element or a valid CSS selector\n * string returns an Interactable object which has various methods to configure\n * it.\n *\n * @global\n *\n * @param {Element | string} target The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */\nexport const interact: InteractStatic = function interact (target: Interact.Target, options?: any) {\n let interactable = scope.interactables.get(target, options)\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options)\n interactable.events.global = globalEvents\n }\n\n return interactable\n} as InteractStatic\n\n/**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n * @param {Object} plugin\n * @param {function} plugin.install\n * @return {interact}\n */\ninteract.use = use\nfunction use (plugin: Interact.Plugin, options?: { [key: string]: any }) {\n scope.usePlugin(plugin, options)\n\n return interact\n}\n\n/**\n * Check if an element or selector has been set with the {@link interact}\n * function\n *\n * @alias module:interact.isSet\n *\n * @param {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\ninteract.isSet = isSet\nfunction isSet (target: Element, options?: any) {\n return !!scope.interactables.get(target, options && options.context)\n}\n\n/**\n * Add a global listener for an InteractEvent or adds a DOM event to `document`\n *\n * @alias module:interact.on\n *\n * @param {string | array | object} type The types of events to listen for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] object or useCapture flag for\n * addEventListener\n * @return {object} interact\n */\ninteract.on = on\nfunction on (type: string | Interact.EventTypes, listener: Interact.ListenersArg, options?) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of (type as any[])) {\n interact.on(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.on(prop, (type as Interact.EventTypes)[prop], listener)\n }\n\n return interact\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (utils.arr.contains(scope.actions.eventTypes, type)) {\n // if this type of event was never bound\n if (!globalEvents[type]) {\n globalEvents[type] = [listener]\n }\n else {\n globalEvents[type].push(listener)\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n events.add(scope.document, type, listener as Interact.Listener, { options })\n }\n\n return interact\n}\n\n/**\n * Removes a global InteractEvent listener or DOM event from `document`\n *\n * @alias module:interact.off\n *\n * @param {string | array | object} type The types of events that were listened\n * for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} options [options] object or useCapture flag for\n * removeEventListener\n * @return {object} interact\n */\ninteract.off = off\nfunction off (type, listener, options) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of type) {\n interact.off(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.off(prop, type[prop], listener)\n }\n\n return interact\n }\n\n if (!utils.arr.contains(scope.actions.eventTypes, type)) {\n events.remove(scope.document, type, listener, options)\n }\n else {\n let index\n\n if (type in globalEvents &&\n (index = globalEvents[type].indexOf(listener)) !== -1) {\n globalEvents[type].splice(index, 1)\n }\n }\n\n return interact\n}\n\n/**\n * Returns an object which exposes internal data\n * @alias module:interact.debug\n *\n * @return {object} An object with properties that outline the current state\n * and expose internal functions and variables\n */\ninteract.debug = debug\nfunction debug () {\n return scope\n}\n\n// expose the functions used to calculate multi-touch properties\ninteract.getPointerAverage = utils.pointer.pointerAverage\ninteract.getTouchBBox = utils.pointer.touchBBox\ninteract.getTouchDistance = utils.pointer.touchDistance\ninteract.getTouchAngle = utils.pointer.touchAngle\n\ninteract.getElementRect = utils.dom.getElementRect\ninteract.getElementClientRect = utils.dom.getElementClientRect\ninteract.matchesSelector = utils.dom.matchesSelector\ninteract.closest = utils.dom.closest\n\n/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\ninteract.supportsTouch = supportsTouch\nfunction supportsTouch () {\n return browser.supportsTouch\n}\n\n/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\ninteract.supportsPointerEvent = supportsPointerEvent\nfunction supportsPointerEvent () {\n return browser.supportsPointerEvent\n}\n\n/**\n * Cancels all interactions (end events are not fired)\n *\n * @alias module:interact.stop\n *\n * @return {object} interact\n */\ninteract.stop = stop\nfunction stop () {\n for (const interaction of scope.interactions.list) {\n interaction.stop()\n }\n\n return interact\n}\n\n/**\n * Returns or sets the distance the pointer must be moved before an action\n * sequence occurs. This also affects tolerance for tap events.\n *\n * @alias module:interact.pointerMoveTolerance\n *\n * @param {number} [newValue] The movement from the start position must be greater than this value\n * @return {interact | number}\n */\ninteract.pointerMoveTolerance = pointerMoveTolerance\nfunction pointerMoveTolerance (newValue) {\n if (utils.is.number(newValue)) {\n scope.interactions.pointerMoveTolerance = newValue\n\n return interact\n }\n\n return scope.interactions.pointerMoveTolerance\n}\n\nscope.interactables.signals.on('unset', ({ interactable }) => {\n scope.interactables.list.splice(scope.interactables.list.indexOf(interactable), 1)\n\n // Stop related interactions when an Interactable is unset\n for (const interaction of scope.interactions.list) {\n if (interaction.interactable === interactable && interaction.interacting() && !interaction._ending) {\n interaction.stop()\n }\n }\n})\n\ninteract.addDocument = (doc, options) => scope.addDocument(doc, options)\ninteract.removeDocument = (doc) => scope.removeDocument(doc)\n\nscope.interact = interact\n\nexport { scope }\nexport default interact\n","import * as actions from '@interactjs/actions'\nimport autoScroll from '@interactjs/auto-scroll'\nimport * as autoStart from '@interactjs/auto-start'\nimport interactablePreventDefault from '@interactjs/core/interactablePreventDefault'\nimport devTools from '@interactjs/dev-tools'\nimport inertia from '@interactjs/inertia'\nimport * as modifiers from '@interactjs/modifiers'\nimport modifiersBase from '@interactjs/modifiers/base'\nimport * as pointerEvents from '@interactjs/pointer-events'\nimport reflow from '@interactjs/reflow'\nimport interact, { scope } from './interact'\n\nexport function init (window: Window) {\n scope.init(window)\n\n interact.use(interactablePreventDefault)\n\n // inertia\n interact.use(inertia)\n\n // pointerEvents\n interact.use(pointerEvents)\n\n // autoStart, hold\n interact.use(autoStart)\n\n // drag and drop, resize, gesture\n interact.use(actions)\n\n // snap, resize, etc.\n interact.use(modifiersBase)\n\n // for backwrads compatibility\n for (const type in modifiers) {\n const { _defaults, _methods } = modifiers[type]\n\n _defaults._methods = _methods\n scope.defaults.perAction[type] = _defaults\n }\n\n // autoScroll\n interact.use(autoScroll)\n\n // reflow\n interact.use(reflow)\n\n // eslint-disable-next-line no-undef\n if (process.env.NODE_ENV !== 'production') {\n interact.use(devTools)\n }\n\n return interact\n}\n\n// eslint-disable-next-line no-undef\ninteract.version = process.env.npm_package_version\n\nexport default interact\nexport {\n interact,\n actions,\n autoScroll,\n interactablePreventDefault,\n inertia,\n modifiersBase as modifiers,\n pointerEvents,\n reflow,\n}\n","/// \n","function createGrid (grid: (Interact.Rect | Interact.Point) & { range?: number, limits: Interact.Rect, offset: Interact.Point }) {\n const coordFields = [\n ['x', 'y'],\n ['left', 'top'],\n ['right', 'bottom'],\n ['width', 'height'],\n ].filter(([xField, yField]) => xField in grid || yField in grid)\n\n return function (x, y) {\n const {\n range,\n limits = {\n left : -Infinity,\n right : Infinity,\n top : -Infinity,\n bottom: Infinity,\n },\n offset = { x: 0, y: 0 },\n } = grid\n\n const result = { range }\n\n for (const [xField, yField] of coordFields) {\n const gridx = Math.round((x - offset.x) / grid[xField])\n const gridy = Math.round((y - offset.y) / grid[yField])\n\n result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x))\n result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y))\n }\n\n return result\n }\n}\n\nexport default createGrid\n","import grid from './grid'\n\nexport { grid }\n","import interact, { init as initInteract } from '@interactjs/interact'\nimport * as modifiers from '@interactjs/modifiers'\nimport '@interactjs/types'\nimport extend from '@interactjs/utils/extend'\nimport * as snappers from '@interactjs/utils/snappers'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n modifiers?: any\n snappers?: typeof snappers & { [key: string]: any }\n createSnapGrid?: typeof snappers.grid\n }\n}\n\nif (typeof window === 'object' && !!window) {\n init(window)\n}\n\nexport function init (win: Window) {\n initInteract(win)\n\n return interact.use({\n id: 'interactjs',\n install (scope) {\n interact.modifiers = extend(scope.modifiers, modifiers)\n interact.snappers = snappers\n interact.createSnapGrid = interact.snappers.grid\n },\n })\n}\n\nexport default interact\ninteract['default'] = interact // tslint:disable-line no-string-literal\ninteract['init'] = init // tslint:disable-line no-string-literal\n\nif (typeof module === 'object' && !!module) {\n module.exports = interact\n}\n","\nreturn _$index_29;\n\n});\n"]}
\ No newline at end of file
diff --git a/packages/interactjs/dist/interact.min.js b/packages/interactjs/dist/interact.min.js
index b2b5325d3..c7652c6eb 100644
--- a/packages/interactjs/dist/interact.min.js
+++ b/packages/interactjs/dist/interact.min.js
@@ -1,4 +1,4 @@
-/* interact.js 1.4.12 | https://raw.github.com/taye/interact.js/master/LICENSE */
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).interact=e()}}(function(){function e(t){var n;return function(e){return n||t(n={exports:{},parent:e},n.exports),n.exports}}var g=e(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Scope=t.ActionName=void 0;var o=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(et),n=c(S),i=c(bt),a=c(Pt),s=c(Dt),l=c(qt),u=c(sn),r=c(E({}));function c(e){return e&&e.__esModule?e:{default:e}}function f(e){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function p(e,t){return!t||"object"!==f(t)&&"function"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}function d(e,t,n){return(d="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=v(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(n):o.value}})(e,t,n||e)}function v(e){return(v=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function g(e,t){return(g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function y(e,t){for(var n=0;nthis.pointerMoveTolerance);var a={pointer:e,pointerIndex:this.getPointerIndex(e),event:t,eventTarget:n,dx:r,dy:o,duplicate:i,interaction:this};i||(f.pointer.setCoordDeltas(this.coords.delta,this.coords.prev,this.coords.cur),f.pointer.setCoordVelocity(this.coords.velocity,this.coords.delta)),this._signals.fire("move",a),i||(this.interacting()&&this.move(a),this.pointerWasMoved&&f.pointer.copyCoords(this.coords.prev,this.coords.cur))}},{key:"move",value:function(e){(e=f.extend({pointer:this._latestPointer.pointer,event:this._latestPointer.event,eventTarget:this._latestPointer.eventTarget,interaction:this},e||{})).phase=i.EventPhase.Move,this._doPhase(e)}},{key:"pointerUp",value:function(e,t,n,r){var o=this.getPointerIndex(e);-1===o&&(o=this.updatePointer(e,t,n,!1)),this._signals.fire(/cancel$/i.test(t.type)?"cancel":"up",{pointer:e,pointerIndex:o,event:t,eventTarget:n,curEventTarget:r,interaction:this}),this.simulation||this.end(t),this.pointerIsDown=!1,this.removePointer(e,t)}},{key:"documentBlur",value:function(e){this.end(e),this._signals.fire("blur",{event:e,interaction:this})}},{key:"end",value:function(e){var t;this._ending=!0,e=e||this._latestPointer.event,this.interacting()&&(t=this._doPhase({event:e,interaction:this,phase:i.EventPhase.End})),!(this._ending=!1)===t&&this.stop()}},{key:"currentAction",value:function(){return this._interacting?this.prepared.name:null}},{key:"interacting",value:function(){return this._interacting}},{key:"stop",value:function(){this._signals.fire("stop",{interaction:this}),this.interactable=this.element=null,this._interacting=!1,this._stopped=!0,this.prepared.name=this.prevEvent=null}},{key:"getPointerIndex",value:function(e){var t=f.pointer.getPointerId(e);return"mouse"===this.pointerType||"pen"===this.pointerType?this.pointers.length-1:f.arr.findIndex(this.pointers,function(e){return e.id===t})}},{key:"getPointerInfo",value:function(e){return this.pointers[this.getPointerIndex(e)]}},{key:"updatePointer",value:function(e,t,n,r){var o=f.pointer.getPointerId(e),i=this.getPointerIndex(e),a=this.pointers[i];return r=!1!==r&&(r||/(down|start)$/i.test(t.type)),a?a.pointer=e:(a=new s.default(o,e,t,null,null),i=this.pointers.length,this.pointers.push(a)),r&&(this.pointerIsDown=!0,this.interacting()||(f.pointer.setCoords(this.coords.start,this.pointers.map(function(e){return e.pointer}),this._now()),f.pointer.copyCoords(this.coords.cur,this.coords.start),f.pointer.copyCoords(this.coords.prev,this.coords.start),f.pointer.pointerExtend(this.downPointer,e),this.downEvent=t,a.downTime=this.coords.cur.timeStamp,a.downTarget=n,this.pointerWasMoved=!1)),this._updateLatestPointer(e,t,n),this._signals.fire("update-pointer",{pointer:e,event:t,eventTarget:n,down:r,pointerInfo:a,pointerIndex:i,interaction:this}),i}},{key:"removePointer",value:function(e,t){var n=this.getPointerIndex(e);if(-1!==n){var r=this.pointers[n];this._signals.fire("remove-pointer",{pointer:e,event:t,pointerIndex:n,pointerInfo:r,interaction:this}),this.pointers.splice(n,1)}}},{key:"_updateLatestPointer",value:function(e,t,n){this._latestPointer.pointer=e,this._latestPointer.event=t,this._latestPointer.eventTarget=n}},{key:"destroy",value:function(){this._latestPointer.pointer=null,this._latestPointer.event=null,this._latestPointer.eventTarget=null}},{key:"_createPreparedEvent",value:function(e,t,n,r){var o=this.prepared.name;return new i.default(this,e,o,t,this.element,null,n,r)}},{key:"_fireEvent",value:function(e){this.interactable.fire(e),(!this.prevEvent||e.timeStamp>=this.prevEvent.timeStamp)&&(this.prevEvent=e)}},{key:"_doPhase",value:function(e){var t=e.event,n=e.phase,r=e.preEnd,o=e.type;if(!1===this._signals.fire("before-action-".concat(n),e))return!1;var i=e.iEvent=this._createPreparedEvent(t,n,r,o),a=this.rect;if(a){var s=this.edges||this.prepared.edges||{left:!0,right:!0,top:!0,bottom:!0};s.top&&(a.top+=i.delta.y),s.bottom&&(a.bottom+=i.delta.y),s.left&&(a.left+=i.delta.x),s.right&&(a.right+=i.delta.x),a.width=a.right-a.left,a.height=a.bottom-a.top}return this._signals.fire("action-".concat(n),e),this._fireEvent(i),this._signals.fire("after-action-".concat(n),e),!0}},{key:"_now",value:function(){return Date.now()}},{key:"pointerMoveTolerance",get:function(){return 1}}]),l}(),v=t.Interaction=d;t.default=v}),s={};function t(e,t){for(var n=0;na.left&&c.xa.top&&c.y=a.left&&v<=a.right&&g>=a.top&&g<=a.bottom}if(d&&Jn.is.number(l)){var h=Math.max(0,Math.min(a.right,d.right)-Math.max(a.left,d.left))*Math.max(0,Math.min(a.bottom,d.bottom)-Math.max(a.top,d.top))/(d.width*d.height);s=l<=h}e.options.drop.checker&&(s=e.options.drop.checker(t,n,s,e,i,r,o));return s}(this,e,t,n,r,o,i)},t.dynamicDrop=function(e){return Jn.is.bool(e)?(i.dynamicDrop=e,t):i.dynamicDrop},Jn.arr.merge(e.eventTypes,["dragenter","dragleave","dropactivate","dropdeactivate","dropmove","drop"]),e.methodDict.drop="dropzone",i.dynamicDrop=!1,o.actions.drop=lr.defaults},getActiveDrops:rr,getDrop:or,getDropEvents:ir,fireDropEvents:ar,defaults:{enabled:!1,accept:null,overlap:"pointer"}},ur=lr;Qn.default=ur;var cr={};Object.defineProperty(cr,"__esModule",{value:!0}),cr.default=void 0;var fr,pr=(fr=sn)&&fr.__esModule?fr:{default:fr},dr=g({}),vr=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(et);dr.ActionName.Gesture="gesture";var gr={id:"actions/gesture",install:function(e){var t=e.actions,n=e.Interactable,r=e.interactions,o=e.defaults;n.prototype.gesturable=function(e){return vr.is.object(e)?(this.options.gesture.enabled=!1!==e.enabled,this.setPerAction("gesture",e),this.setOnEvents("gesture",e),this):vr.is.bool(e)?(this.options.gesture.enabled=e,this):this.options.gesture},r.signals.on("action-start",hr),r.signals.on("action-move",hr),r.signals.on("action-end",hr),r.signals.on("new",function(e){e.interaction.gesture={angle:0,distance:0,scale:1,startAngle:0,startDistance:0}}),t[dr.ActionName.Gesture]=gr,t.names.push(dr.ActionName.Gesture),vr.arr.merge(t.eventTypes,["gesturestart","gesturemove","gestureend"]),t.methodDict.gesture="gesturable",o.actions.gesture=gr.defaults},defaults:{},checker:function(e,t,n,r,o){return 2<=o.pointers.length?{name:"gesture"}:null},getCursor:function(){return""}};function hr(e){var t=e.interaction,n=e.iEvent,r=e.event,o=e.phase;if("gesture"===t.prepared.name){var i=t.pointers.map(function(e){return e.pointer}),a="start"===o,s="end"===o,l=t.interactable.options.deltaSource;if(n.touches=[i[0],i[1]],a)n.distance=vr.pointer.touchDistance(i,l),n.box=vr.pointer.touchBBox(i),n.scale=1,n.ds=0,n.angle=vr.pointer.touchAngle(i,l),n.da=0,t.gesture.startDistance=n.distance,t.gesture.startAngle=n.angle;else if(s||r instanceof pr.default){var u=t.prevEvent;n.distance=u.distance,n.box=u.box,n.scale=u.scale,n.ds=0,n.angle=u.angle,n.da=0}else n.distance=vr.pointer.touchDistance(i,l),n.box=vr.pointer.touchBBox(i),n.scale=n.distance/t.gesture.startDistance,n.angle=vr.pointer.touchAngle(i,l),n.ds=n.scale-t.gesture.scale,n.da=n.angle-t.gesture.angle;t.gesture.distance=n.distance,t.gesture.angle=n.angle,vr.is.number(n.scale)&&n.scale!==1/0&&!isNaN(n.scale)&&(t.gesture.scale=n.scale)}}var yr=gr;cr.default=yr;var mr={};Object.defineProperty(mr,"__esModule",{value:!0}),mr.default=void 0;var br,wr=g({}),Or=jr(s),Pr=jr(z),_r=(br=Te)&&br.__esModule?br:{default:br},xr=jr(y);function jr(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}var Mr={id:"actions/resize",install:function(t){var e=t.actions,n=t.browser,r=t.Interactable,o=t.interactions,i=t.defaults;o.signals.on("new",function(e){e.resizeAxes="xy"}),o.signals.on("action-start",Sr),o.signals.on("action-move",Tr),o.signals.on("action-start",Dr),o.signals.on("action-move",Dr),Mr.cursors=function(e){return e.isIe9?{x:"e-resize",y:"s-resize",xy:"se-resize",top:"n-resize",left:"w-resize",bottom:"s-resize",right:"e-resize",topleft:"se-resize",bottomright:"se-resize",topright:"ne-resize",bottomleft:"ne-resize"}:{x:"ew-resize",y:"ns-resize",xy:"nwse-resize",top:"ns-resize",left:"ew-resize",bottom:"ns-resize",right:"ew-resize",topleft:"nwse-resize",bottomright:"nwse-resize",topright:"nesw-resize",bottomleft:"nesw-resize"}}(n),Mr.defaultMargin=n.supportsTouch||n.supportsPointerEvent?20:10,r.prototype.resizable=function(e){return function(e,t,n){if(xr.object(t))return e.options.resize.enabled=!1!==t.enabled,e.setPerAction("resize",t),e.setOnEvents("resize",t),xr.string(t.axis)&&/^x$|^y$|^xy$/.test(t.axis)?e.options.resize.axis=t.axis:null===t.axis&&(e.options.resize.axis=n.defaults.actions.resize.axis),xr.bool(t.preserveAspectRatio)?e.options.resize.preserveAspectRatio=t.preserveAspectRatio:xr.bool(t.square)&&(e.options.resize.square=t.square),e;if(xr.bool(t))return e.options.resize.enabled=t,e;return e.options.resize}(this,e,t)},e[wr.ActionName.Resize]=Mr,e.names.push(wr.ActionName.Resize),Or.merge(e.eventTypes,["resizestart","resizemove","resizeinertiastart","resizeresume","resizeend"]),e.methodDict.resize="resizable",i.actions.resize=Mr.defaults},defaults:{square:!(wr.ActionName.Resize="resize"),preserveAspectRatio:!1,axis:"xy",margin:NaN,edges:null,invert:"none"},checker:function(e,t,n,r,o,i){if(!i)return null;var a=(0,_r.default)({},o.coords.cur.page),s=n.options;if(s.resize.enabled){var l=s.resize,u={left:!1,right:!1,top:!1,bottom:!1};if(xr.object(l.edges)){for(var c in u)u[c]=Er(c,l.edges[c],a,o._latestPointer.eventTarget,r,i,l.margin||this.defaultMargin);if(u.left=u.left&&!u.right,u.top=u.top&&!u.bottom,u.left||u.right||u.top||u.bottom)return{name:"resize",edges:u}}else{var f="y"!==s.resize.axis&&a.x>i.right-this.defaultMargin,p="x"!==s.resize.axis&&a.y>i.bottom-this.defaultMargin;if(f||p)return{name:"resize",axes:(f?"x":"")+(p?"y":"")}}}return null},cursors:null,getCursor:function(e){var t=Mr.cursors;if(e.axis)return t[e.name+e.axis];if(e.edges){for(var n="",r=["top","bottom","left","right"],o=0;o<4;o++)e.edges[r[o]]&&(n+=r[o]);return t[n]}return null},defaultMargin:null};function Er(e,t,n,r,o,i,a){if(!t)return!1;if(!0===t){var s=xr.number(i.width)?i.width:i.right-i.left,l=xr.number(i.height)?i.height:i.bottom-i.top;if(a=Math.min(a,("left"===e||"right"===e?s:l)/2),s<0&&("left"===e?e="right":"right"===e&&(e="left")),l<0&&("top"===e?e="bottom":"bottom"===e&&(e="top")),"left"===e)return n.x<(0<=s?i.left:i.right)+a;if("top"===e)return n.y<(0<=l?i.top:i.bottom)+a;if("right"===e)return n.x>(0<=s?i.right:i.left)-a;if("bottom"===e)return n.y>(0<=l?i.bottom:i.top)-a}return!!xr.element(r)&&(xr.element(t)?t===r:Pr.matchesUpTo(r,t,o))}function Sr(e){var t=e.iEvent,n=e.interaction;if("resize"===n.prepared.name&&n.prepared.edges){var r=n.rect,o=n.interactable.options.resize;if(o.square||o.preserveAspectRatio){var i=(0,_r.default)({},n.prepared.edges);i.top=i.top||i.left&&!i.bottom,i.left=i.left||i.top&&!i.right,i.bottom=i.bottom||i.right&&!i.top,i.right=i.right||i.bottom&&!i.left,n.prepared._linkedEdges=i}else n.prepared._linkedEdges=null;o.preserveAspectRatio&&(n.resizeStartAspectRatio=r.width/r.height),n.resizeRects={start:r,current:(0,_r.default)({},r),inverted:(0,_r.default)({},r),previous:(0,_r.default)({},r),delta:{left:0,right:0,width:0,top:0,bottom:0,height:0}},t.rect=n.resizeRects.inverted,t.deltaRect=n.resizeRects.delta}}function Tr(e){var t=e.iEvent,n=e.interaction;if("resize"===n.prepared.name&&n.prepared.edges){var r,o=n.interactable.options.resize,i=o.invert,a="reposition"===i||"negate"===i,s=n.prepared.edges,l=n.resizeRects.start,u=n.resizeRects.current,c=n.resizeRects.inverted,f=n.resizeRects.delta,p=(0,_r.default)(n.resizeRects.previous,c),d=s,v=(0,_r.default)({},t.delta);if(o.preserveAspectRatio||o.square){var g=o.preserveAspectRatio?n.resizeStartAspectRatio:1;s=n.prepared._linkedEdges,d.left&&d.bottom||d.right&&d.top?v.y=-v.x/g:d.left||d.right?v.y=v.x/g:(d.top||d.bottom)&&(v.x=v.y*g)}if(s.top&&(u.top+=v.y),s.bottom&&(u.bottom+=v.y),s.left&&(u.left+=v.x),s.right&&(u.right+=v.x),a){if((0,_r.default)(c,u),"reposition"===i)c.top>c.bottom&&(r=c.top,c.top=c.bottom,c.bottom=r),c.left>c.right&&(r=c.left,c.left=c.right,c.right=r)}else c.top=Math.min(u.top,l.bottom),c.bottom=Math.max(u.bottom,l.top),c.left=Math.min(u.left,l.right),c.right=Math.max(u.right,l.left);for(var h in c.width=c.right-c.left,c.height=c.bottom-c.top,c)f[h]=c[h]-p[h];t.edges=n.prepared.edges,t.rect=c,t.deltaRect=f}}function Dr(e){var t=e.interaction,n=e.iEvent;"resize"===e.action&&t.resizeAxes&&(t.interactable.options.resize.square?("y"===t.resizeAxes?n.delta.x=n.delta.y:n.delta.y=n.delta.x,n.axes="xy"):(n.axes=t.resizeAxes,"x"===t.resizeAxes?n.delta.y=0:"y"===t.resizeAxes&&(n.delta.x=0)))}var kr=Mr;mr.default=kr;var Ir={};Object.defineProperty(Ir,"__esModule",{value:!0}),Ir.install=function(e){e.usePlugin(Cr.default),e.usePlugin(Rr.default),e.usePlugin(zr.default),e.usePlugin(Ar.default)},Object.defineProperty(Ir,"drag",{enumerable:!0,get:function(){return zr.default}}),Object.defineProperty(Ir,"drop",{enumerable:!0,get:function(){return Ar.default}}),Object.defineProperty(Ir,"gesture",{enumerable:!0,get:function(){return Cr.default}}),Object.defineProperty(Ir,"resize",{enumerable:!0,get:function(){return Rr.default}}),Ir.id=void 0;var zr=Xr(kn),Ar=Xr(Qn),Cr=Xr(cr),Rr=Xr(mr);function Xr(e){return e&&e.__esModule?e:{default:e}}Ir.id="actions";var Yr={};Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.getContainer=Gr,Yr.getScroll=Ur,Yr.getScrollSize=function(e){Wr.window(e)&&(e=window.document.body);return{x:e.scrollWidth,y:e.scrollHeight}},Yr.getScrollSizeDelta=function(e,t){var n=e.interaction,r=e.element,o=n&&n.interactable.options[n.prepared.name].autoScroll;if(!o||!o.enabled)return t(),{x:0,y:0};var i=Gr(o.container,n.interactable,r),a=Ur(i);t();var s=Ur(i);return{x:s.x-a.x,y:s.y-a.y}},Yr.default=void 0;var Nr,Fr=Vr(z),Wr=Vr(y),Lr=(Nr=Ue)&&Nr.__esModule?Nr:{default:Nr};function Vr(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}var qr={defaults:{enabled:!1,margin:60,container:null,speed:300},now:Date.now,interaction:null,i:null,x:0,y:0,isScrolling:!1,prevTime:0,margin:0,speed:0,start:function(e){qr.isScrolling=!0,Lr.default.cancel(qr.i),(e.autoScroll=qr).interaction=e,qr.prevTime=qr.now(),qr.i=Lr.default.request(qr.scroll)},stop:function(){qr.isScrolling=!1,qr.interaction&&(qr.interaction.autoScroll=null),Lr.default.cancel(qr.i)},scroll:function(){var e=qr.interaction,t=e.interactable,n=e.element,r=t.options[qr.interaction.prepared.name].autoScroll,o=Gr(r.container,t,n),i=qr.now(),a=(i-qr.prevTime)/1e3,s=r.speed*a;if(1<=s){var l={x:qr.x*s,y:qr.y*s};if(l.x||l.y){var u=Ur(o);Wr.window(o)?o.scrollBy(l.x,l.y):o&&(o.scrollLeft+=l.x,o.scrollTop+=l.y);var c=Ur(o),f={x:c.x-u.x,y:c.y-u.y};(f.x||f.y)&&t.fire({type:"autoscroll",target:n,interactable:t,delta:f,interaction:e,container:o})}qr.prevTime=i}qr.isScrolling&&(Lr.default.cancel(qr.i),qr.i=Lr.default.request(qr.scroll))},check:function(e,t){var n=e.options;return n[t].autoScroll&&n[t].autoScroll.enabled},onInteractionMove:function(e){var t=e.interaction,n=e.pointer;if(t.interacting()&&qr.check(t.interactable,t.prepared.name))if(t.simulation)qr.x=qr.y=0;else{var r,o,i,a,s=t.interactable,l=t.element,u=s.options[t.prepared.name].autoScroll,c=Gr(u.container,s,l);if(Wr.window(c))a=n.clientXc.innerWidth-qr.margin,i=n.clientY>c.innerHeight-qr.margin;else{var f=Fr.getElementClientRect(c);a=n.clientXf.right-qr.margin,i=n.clientY>f.bottom-qr.margin}qr.x=o?1:a?-1:0,qr.y=i?1:r?-1:0,qr.isScrolling||(qr.margin=u.margin,qr.speed=u.speed,qr.start(t))}}};function Gr(e,t,n){return(Wr.string(e)?(0,De.getStringOptionResult)(e,t,n):e)||(0,u.getWindow)(n)}function Ur(e){return Wr.window(e)&&(e=window.document.body),{x:e.scrollLeft,y:e.scrollTop}}var Br={id:"auto-scroll",install:function(e){var t=e.interactions,n=e.defaults,r=e.actions;(e.autoScroll=qr).now=function(){return e.now()},t.signals.on("new",function(e){e.interaction.autoScroll=null}),t.signals.on("destroy",function(e){e.interaction.autoScroll=null,qr.stop(),qr.interaction&&(qr.interaction=null)}),t.signals.on("stop",qr.stop),t.signals.on("action-move",function(e){return qr.onInteractionMove(e)}),r.eventTypes.push("autoscroll"),n.perAction.autoScroll=qr.defaults}};Yr.default=Br;var Hr={};Object.defineProperty(Hr,"__esModule",{value:!0}),Hr.default=void 0;var $r=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(y);function Kr(e,t,n,r){var o=this.defaultActionChecker(e,t,n,r);return this.options.actionChecker?this.options.actionChecker(e,t,o,this,r,n):o}function Qr(e){return $r.bool(e)?(this.options.styleCursor=e,this):null===e?(delete this.options.styleCursor,this):this.options.styleCursor}function Jr(e){return $r.func(e)?(this.options.actionChecker=e,this):null===e?(delete this.options.actionChecker,this):this.options.actionChecker}var Zr={id:"auto-start/interactableMethods",install:function(e){var t=e.Interactable,o=e.actions;t.prototype.getAction=Kr,t.prototype.ignoreFrom=(0,et.warnOnce)(function(e){return this._backCompatOption("ignoreFrom",e)},"Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue})."),t.prototype.allowFrom=(0,et.warnOnce)(function(e){return this._backCompatOption("allowFrom",e)},"Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue})."),t.prototype.actionChecker=Jr,t.prototype.styleCursor=Qr,t.prototype.defaultActionChecker=function(e,t,n,r){return function(e,t,n,r,o,i){for(var a=e.getRect(o),s=n.buttons||{0:1,1:4,3:8,4:16}[n.button],l=null,u=0;us.minSpeed&&c>s.endSpeed,v={interaction:n,pageCoords:ui.extend({},n.coords.cur.page),states:p&&n.modifiers.states.map(function(e){return ui.extend({},e)}),preEnd:!0,prevCoords:void 0,requireEndOnly:null};p&&!d&&(v.prevCoords=n.prevEvent.page,v.requireEndOnly=!1,(a=li.default.setAll(v)).changed&&(f=!0));if(!d&&!f)return null;ui.pointer.copyCoords(i.upCoords,n.coords.cur),n.pointers[0].pointer=i.startEvent=new t.InteractEvent(n,r,n.prepared.name,sn.EventPhase.InertiaStart,n.element),i.t0=l,i.active=!0,i.allowResume=s.allowResume,n.simulation=i,n.interactable.fire(i.startEvent),d?(i.vx0=n.coords.velocity.client.x,i.vy0=n.coords.velocity.client.y,i.v0=c,pi(n,i),ui.extend(v.pageCoords,n.coords.cur.page),v.pageCoords.x+=i.xe,v.pageCoords.y+=i.ye,v.prevCoords=void 0,v.requireEndOnly=!0,a=li.default.setAll(v),i.modifiedXe+=a.delta.x,i.modifiedYe+=a.delta.y,i.timeout=ci.default.request(function(){return di(n)})):(i.smoothEnd=!0,i.xe=a.delta.x,i.ye=a.delta.y,i.sx=i.sy=0,i.timeout=ci.default.request(function(){return vi(n)}));return!1}(e,t)}),e.signals.on("down",function(e){return function(e,t){var n=e.interaction,r=e.event,o=e.pointer,i=e.eventTarget,a=n.inertia;if(a.active)for(var s=i;ui.is.element(s);){if(s===n.element){ci.default.cancel(a.timeout),a.active=!1,n.simulation=null,n.updatePointer(o,r,i,!0),ui.pointer.setCoords(n.coords.cur,n.pointers.map(function(e){return e.pointer}),n._now());var l={interaction:n};t.interactions.signals.fire("action-resume",l);var u=new t.InteractEvent(n,r,n.prepared.name,sn.EventPhase.Resume,n.element);n._fireEvent(u),ui.pointer.copyCoords(n.coords.prev,n.coords.cur);break}s=ui.dom.parentNode(s)}}(e,t)}),e.signals.on("stop",function(e){return function(e){var t=e.interaction,n=t.inertia;n.active&&(ci.default.cancel(n.timeout),n.active=!1,t.simulation=null)}(e)}),n.perAction.inertia={enabled:!1,resistance:10,minSpeed:100,endSpeed:10,allowResume:!0,smoothEndDuration:300},t.usePlugin(li.default)},calcInertia:pi,inertiaTick:di,smothEndTick:vi,updateInertiaCoords:gi};si.default=yi;var mi={};Object.defineProperty(mi,"__esModule",{value:!0}),mi.default=void 0;var bi,wi=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(y),Oi=(bi=De)&&bi.__esModule?bi:{default:bi};function Pi(e,t,n){return wi.func(e)?Oi.default.resolveRectLike(e,t.interactable,t.element,[n.x,n.y,t]):Oi.default.resolveRectLike(e,t.interactable,t.element)}var _i={start:function(e){var t=e.rect,n=e.startOffset,r=e.state,o=r.options.elementRect,i={};t&&o?(i.left=n.left-t.width*o.left,i.top=n.top-t.height*o.top,i.right=n.right-t.width*(1-o.right),i.bottom=n.bottom-t.height*(1-o.bottom)):i.left=i.top=i.right=i.bottom=0,r.offset=i},set:function(e){var t=e.coords,n=e.interaction,r=e.state,o=r.options,i=r.offset,a=Pi(o.restriction,n,t);if(!a)return r;var s=a;"x"in a&&"y"in a?(t.x=Math.max(Math.min(s.x+s.width-i.right,t.x),s.x+i.left),t.y=Math.max(Math.min(s.y+s.height-i.bottom,t.y),s.y+i.top)):(t.x=Math.max(Math.min(s.right-i.right,t.x),s.left+i.left),t.y=Math.max(Math.min(s.bottom-i.bottom,t.y),s.top+i.top))},getRestrictionRect:Pi,defaults:{enabled:!1,restriction:null,elementRect:null}};mi.default=_i;var xi={};Object.defineProperty(xi,"__esModule",{value:!0}),xi.default=void 0;var ji=Ei(Te),Mi=Ei(De);function Ei(e){return e&&e.__esModule?e:{default:e}}var Si=Ei(mi).default.getRestrictionRect,Ti={top:1/0,left:1/0,bottom:-1/0,right:-1/0},Di={top:-1/0,left:-1/0,bottom:1/0,right:1/0};function ki(e,t){for(var n=["top","left","bottom","right"],r=0;rthis.pointerMoveTolerance);var a={pointer:e,pointerIndex:this.getPointerIndex(e),event:t,eventTarget:n,dx:r,dy:o,duplicate:i,interaction:this};i||(f.pointer.setCoordDeltas(this.coords.delta,this.coords.prev,this.coords.cur),f.pointer.setCoordVelocity(this.coords.velocity,this.coords.delta)),this._signals.fire("move",a),i||(this.interacting()&&this.move(a),this.pointerWasMoved&&f.pointer.copyCoords(this.coords.prev,this.coords.cur))}},{key:"move",value:function(e){(e=f.extend({pointer:this._latestPointer.pointer,event:this._latestPointer.event,eventTarget:this._latestPointer.eventTarget,interaction:this},e||{})).phase=i.EventPhase.Move,this._doPhase(e)}},{key:"pointerUp",value:function(e,t,n,r){var o=this.getPointerIndex(e);-1===o&&(o=this.updatePointer(e,t,n,!1)),this._signals.fire(/cancel$/i.test(t.type)?"cancel":"up",{pointer:e,pointerIndex:o,event:t,eventTarget:n,curEventTarget:r,interaction:this}),this.simulation||this.end(t),this.pointerIsDown=!1,this.removePointer(e,t)}},{key:"documentBlur",value:function(e){this.end(e),this._signals.fire("blur",{event:e,interaction:this})}},{key:"end",value:function(e){var t;this._ending=!0,e=e||this._latestPointer.event,this.interacting()&&(t=this._doPhase({event:e,interaction:this,phase:i.EventPhase.End})),!(this._ending=!1)===t&&this.stop()}},{key:"currentAction",value:function(){return this._interacting?this.prepared.name:null}},{key:"interacting",value:function(){return this._interacting}},{key:"stop",value:function(){this._signals.fire("stop",{interaction:this}),this.interactable=this.element=null,this._interacting=!1,this._stopped=!0,this.prepared.name=this.prevEvent=null}},{key:"getPointerIndex",value:function(e){var t=f.pointer.getPointerId(e);return"mouse"===this.pointerType||"pen"===this.pointerType?this.pointers.length-1:f.arr.findIndex(this.pointers,function(e){return e.id===t})}},{key:"getPointerInfo",value:function(e){return this.pointers[this.getPointerIndex(e)]}},{key:"updatePointer",value:function(e,t,n,r){var o=f.pointer.getPointerId(e),i=this.getPointerIndex(e),a=this.pointers[i];return r=!1!==r&&(r||/(down|start)$/i.test(t.type)),a?a.pointer=e:(a=new s.default(o,e,t,null,null),i=this.pointers.length,this.pointers.push(a)),r&&(this.pointerIsDown=!0,this.interacting()||(f.pointer.setCoords(this.coords.start,this.pointers.map(function(e){return e.pointer}),this._now()),f.pointer.copyCoords(this.coords.cur,this.coords.start),f.pointer.copyCoords(this.coords.prev,this.coords.start),f.pointer.pointerExtend(this.downPointer,e),this.downEvent=t,a.downTime=this.coords.cur.timeStamp,a.downTarget=n,this.pointerWasMoved=!1)),this._updateLatestPointer(e,t,n),this._signals.fire("update-pointer",{pointer:e,event:t,eventTarget:n,down:r,pointerInfo:a,pointerIndex:i,interaction:this}),i}},{key:"removePointer",value:function(e,t){var n=this.getPointerIndex(e);if(-1!==n){var r=this.pointers[n];this._signals.fire("remove-pointer",{pointer:e,event:t,pointerIndex:n,pointerInfo:r,interaction:this}),this.pointers.splice(n,1)}}},{key:"_updateLatestPointer",value:function(e,t,n){this._latestPointer.pointer=e,this._latestPointer.event=t,this._latestPointer.eventTarget=n}},{key:"destroy",value:function(){this._latestPointer.pointer=null,this._latestPointer.event=null,this._latestPointer.eventTarget=null}},{key:"_createPreparedEvent",value:function(e,t,n,r){var o=this.prepared.name;return new i.default(this,e,o,t,this.element,null,n,r)}},{key:"_fireEvent",value:function(e){this.interactable.fire(e),(!this.prevEvent||e.timeStamp>=this.prevEvent.timeStamp)&&(this.prevEvent=e)}},{key:"_doPhase",value:function(e){var t=e.event,n=e.phase,r=e.preEnd,o=e.type;if(!1===this._signals.fire("before-action-".concat(n),e))return!1;var i=e.iEvent=this._createPreparedEvent(t,n,r,o),a=this.rect;if(a){var s=this.edges||this.prepared.edges||{left:!0,right:!0,top:!0,bottom:!0};s.top&&(a.top+=i.delta.y),s.bottom&&(a.bottom+=i.delta.y),s.left&&(a.left+=i.delta.x),s.right&&(a.right+=i.delta.x),a.width=a.right-a.left,a.height=a.bottom-a.top}return this._signals.fire("action-".concat(n),e),this._fireEvent(i),this._signals.fire("after-action-".concat(n),e),!0}},{key:"_now",value:function(){return Date.now()}},{key:"pointerMoveTolerance",get:function(){return 1}}]),l}(),v=t.Interaction=d;t.default=v}),s={};function t(e,t){for(var n=0;na.left&&c.xa.top&&c.y=a.left&&v<=a.right&&g>=a.top&&g<=a.bottom}if(d&&Jn.is.number(l)){var h=Math.max(0,Math.min(a.right,d.right)-Math.max(a.left,d.left))*Math.max(0,Math.min(a.bottom,d.bottom)-Math.max(a.top,d.top))/(d.width*d.height);s=l<=h}e.options.drop.checker&&(s=e.options.drop.checker(t,n,s,e,i,r,o));return s}(this,e,t,n,r,o,i)},t.dynamicDrop=function(e){return Jn.is.bool(e)?(i.dynamicDrop=e,t):i.dynamicDrop},Jn.arr.merge(e.eventTypes,["dragenter","dragleave","dropactivate","dropdeactivate","dropmove","drop"]),e.methodDict.drop="dropzone",i.dynamicDrop=!1,o.actions.drop=lr.defaults},getActiveDrops:rr,getDrop:or,getDropEvents:ir,fireDropEvents:ar,defaults:{enabled:!1,accept:null,overlap:"pointer"}},ur=lr;Qn.default=ur;var cr={};Object.defineProperty(cr,"__esModule",{value:!0}),cr.default=void 0;var fr,pr=(fr=sn)&&fr.__esModule?fr:{default:fr},dr=g({}),vr=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(et);dr.ActionName.Gesture="gesture";var gr={id:"actions/gesture",install:function(e){var t=e.actions,n=e.Interactable,r=e.interactions,o=e.defaults;n.prototype.gesturable=function(e){return vr.is.object(e)?(this.options.gesture.enabled=!1!==e.enabled,this.setPerAction("gesture",e),this.setOnEvents("gesture",e),this):vr.is.bool(e)?(this.options.gesture.enabled=e,this):this.options.gesture},r.signals.on("action-start",hr),r.signals.on("action-move",hr),r.signals.on("action-end",hr),r.signals.on("new",function(e){e.interaction.gesture={angle:0,distance:0,scale:1,startAngle:0,startDistance:0}}),t[dr.ActionName.Gesture]=gr,t.names.push(dr.ActionName.Gesture),vr.arr.merge(t.eventTypes,["gesturestart","gesturemove","gestureend"]),t.methodDict.gesture="gesturable",o.actions.gesture=gr.defaults},defaults:{},checker:function(e,t,n,r,o){return 2<=o.pointers.length?{name:"gesture"}:null},getCursor:function(){return""}};function hr(e){var t=e.interaction,n=e.iEvent,r=e.event,o=e.phase;if("gesture"===t.prepared.name){var i=t.pointers.map(function(e){return e.pointer}),a="start"===o,s="end"===o,l=t.interactable.options.deltaSource;if(n.touches=[i[0],i[1]],a)n.distance=vr.pointer.touchDistance(i,l),n.box=vr.pointer.touchBBox(i),n.scale=1,n.ds=0,n.angle=vr.pointer.touchAngle(i,l),n.da=0,t.gesture.startDistance=n.distance,t.gesture.startAngle=n.angle;else if(s||r instanceof pr.default){var u=t.prevEvent;n.distance=u.distance,n.box=u.box,n.scale=u.scale,n.ds=0,n.angle=u.angle,n.da=0}else n.distance=vr.pointer.touchDistance(i,l),n.box=vr.pointer.touchBBox(i),n.scale=n.distance/t.gesture.startDistance,n.angle=vr.pointer.touchAngle(i,l),n.ds=n.scale-t.gesture.scale,n.da=n.angle-t.gesture.angle;t.gesture.distance=n.distance,t.gesture.angle=n.angle,vr.is.number(n.scale)&&n.scale!==1/0&&!isNaN(n.scale)&&(t.gesture.scale=n.scale)}}var yr=gr;cr.default=yr;var mr={};Object.defineProperty(mr,"__esModule",{value:!0}),mr.default=void 0;var br,wr=g({}),Or=jr(s),Pr=jr(z),_r=(br=Te)&&br.__esModule?br:{default:br},xr=jr(y);function jr(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}var Mr={id:"actions/resize",install:function(t){var e=t.actions,n=t.browser,r=t.Interactable,o=t.interactions,i=t.defaults;o.signals.on("new",function(e){e.resizeAxes="xy"}),o.signals.on("action-start",Sr),o.signals.on("action-move",Tr),o.signals.on("action-start",Dr),o.signals.on("action-move",Dr),Mr.cursors=function(e){return e.isIe9?{x:"e-resize",y:"s-resize",xy:"se-resize",top:"n-resize",left:"w-resize",bottom:"s-resize",right:"e-resize",topleft:"se-resize",bottomright:"se-resize",topright:"ne-resize",bottomleft:"ne-resize"}:{x:"ew-resize",y:"ns-resize",xy:"nwse-resize",top:"ns-resize",left:"ew-resize",bottom:"ns-resize",right:"ew-resize",topleft:"nwse-resize",bottomright:"nwse-resize",topright:"nesw-resize",bottomleft:"nesw-resize"}}(n),Mr.defaultMargin=n.supportsTouch||n.supportsPointerEvent?20:10,r.prototype.resizable=function(e){return function(e,t,n){if(xr.object(t))return e.options.resize.enabled=!1!==t.enabled,e.setPerAction("resize",t),e.setOnEvents("resize",t),xr.string(t.axis)&&/^x$|^y$|^xy$/.test(t.axis)?e.options.resize.axis=t.axis:null===t.axis&&(e.options.resize.axis=n.defaults.actions.resize.axis),xr.bool(t.preserveAspectRatio)?e.options.resize.preserveAspectRatio=t.preserveAspectRatio:xr.bool(t.square)&&(e.options.resize.square=t.square),e;if(xr.bool(t))return e.options.resize.enabled=t,e;return e.options.resize}(this,e,t)},e[wr.ActionName.Resize]=Mr,e.names.push(wr.ActionName.Resize),Or.merge(e.eventTypes,["resizestart","resizemove","resizeinertiastart","resizeresume","resizeend"]),e.methodDict.resize="resizable",i.actions.resize=Mr.defaults},defaults:{square:!(wr.ActionName.Resize="resize"),preserveAspectRatio:!1,axis:"xy",margin:NaN,edges:null,invert:"none"},checker:function(e,t,n,r,o,i){if(!i)return null;var a=(0,_r.default)({},o.coords.cur.page),s=n.options;if(s.resize.enabled){var l=s.resize,u={left:!1,right:!1,top:!1,bottom:!1};if(xr.object(l.edges)){for(var c in u)u[c]=Er(c,l.edges[c],a,o._latestPointer.eventTarget,r,i,l.margin||this.defaultMargin);if(u.left=u.left&&!u.right,u.top=u.top&&!u.bottom,u.left||u.right||u.top||u.bottom)return{name:"resize",edges:u}}else{var f="y"!==s.resize.axis&&a.x>i.right-this.defaultMargin,p="x"!==s.resize.axis&&a.y>i.bottom-this.defaultMargin;if(f||p)return{name:"resize",axes:(f?"x":"")+(p?"y":"")}}}return null},cursors:null,getCursor:function(e){var t=Mr.cursors;if(e.axis)return t[e.name+e.axis];if(e.edges){for(var n="",r=["top","bottom","left","right"],o=0;o<4;o++)e.edges[r[o]]&&(n+=r[o]);return t[n]}return null},defaultMargin:null};function Er(e,t,n,r,o,i,a){if(!t)return!1;if(!0===t){var s=xr.number(i.width)?i.width:i.right-i.left,l=xr.number(i.height)?i.height:i.bottom-i.top;if(a=Math.min(a,("left"===e||"right"===e?s:l)/2),s<0&&("left"===e?e="right":"right"===e&&(e="left")),l<0&&("top"===e?e="bottom":"bottom"===e&&(e="top")),"left"===e)return n.x<(0<=s?i.left:i.right)+a;if("top"===e)return n.y<(0<=l?i.top:i.bottom)+a;if("right"===e)return n.x>(0<=s?i.right:i.left)-a;if("bottom"===e)return n.y>(0<=l?i.bottom:i.top)-a}return!!xr.element(r)&&(xr.element(t)?t===r:Pr.matchesUpTo(r,t,o))}function Sr(e){var t=e.iEvent,n=e.interaction;if("resize"===n.prepared.name&&n.prepared.edges){var r=n.rect,o=n.interactable.options.resize;if(o.square||o.preserveAspectRatio){var i=(0,_r.default)({},n.prepared.edges);i.top=i.top||i.left&&!i.bottom,i.left=i.left||i.top&&!i.right,i.bottom=i.bottom||i.right&&!i.top,i.right=i.right||i.bottom&&!i.left,n.prepared._linkedEdges=i}else n.prepared._linkedEdges=null;o.preserveAspectRatio&&(n.resizeStartAspectRatio=r.width/r.height),n.resizeRects={start:r,current:(0,_r.default)({},r),inverted:(0,_r.default)({},r),previous:(0,_r.default)({},r),delta:{left:0,right:0,width:0,top:0,bottom:0,height:0}},t.rect=n.resizeRects.inverted,t.deltaRect=n.resizeRects.delta}}function Tr(e){var t=e.iEvent,n=e.interaction;if("resize"===n.prepared.name&&n.prepared.edges){var r,o=n.interactable.options.resize,i=o.invert,a="reposition"===i||"negate"===i,s=n.prepared.edges,l=n.resizeRects.start,u=n.resizeRects.current,c=n.resizeRects.inverted,f=n.resizeRects.delta,p=(0,_r.default)(n.resizeRects.previous,c),d=s,v=(0,_r.default)({},t.delta);if(o.preserveAspectRatio||o.square){var g=o.preserveAspectRatio?n.resizeStartAspectRatio:1;s=n.prepared._linkedEdges,d.left&&d.bottom||d.right&&d.top?v.y=-v.x/g:d.left||d.right?v.y=v.x/g:(d.top||d.bottom)&&(v.x=v.y*g)}if(s.top&&(u.top+=v.y),s.bottom&&(u.bottom+=v.y),s.left&&(u.left+=v.x),s.right&&(u.right+=v.x),a){if((0,_r.default)(c,u),"reposition"===i)c.top>c.bottom&&(r=c.top,c.top=c.bottom,c.bottom=r),c.left>c.right&&(r=c.left,c.left=c.right,c.right=r)}else c.top=Math.min(u.top,l.bottom),c.bottom=Math.max(u.bottom,l.top),c.left=Math.min(u.left,l.right),c.right=Math.max(u.right,l.left);for(var h in c.width=c.right-c.left,c.height=c.bottom-c.top,c)f[h]=c[h]-p[h];t.edges=n.prepared.edges,t.rect=c,t.deltaRect=f}}function Dr(e){var t=e.interaction,n=e.iEvent;"resize"===e.action&&t.resizeAxes&&(t.interactable.options.resize.square?("y"===t.resizeAxes?n.delta.x=n.delta.y:n.delta.y=n.delta.x,n.axes="xy"):(n.axes=t.resizeAxes,"x"===t.resizeAxes?n.delta.y=0:"y"===t.resizeAxes&&(n.delta.x=0)))}var kr=Mr;mr.default=kr;var Ir={};Object.defineProperty(Ir,"__esModule",{value:!0}),Ir.install=function(e){e.usePlugin(Cr.default),e.usePlugin(Rr.default),e.usePlugin(zr.default),e.usePlugin(Ar.default)},Object.defineProperty(Ir,"drag",{enumerable:!0,get:function(){return zr.default}}),Object.defineProperty(Ir,"drop",{enumerable:!0,get:function(){return Ar.default}}),Object.defineProperty(Ir,"gesture",{enumerable:!0,get:function(){return Cr.default}}),Object.defineProperty(Ir,"resize",{enumerable:!0,get:function(){return Rr.default}}),Ir.id=void 0;var zr=Xr(kn),Ar=Xr(Qn),Cr=Xr(cr),Rr=Xr(mr);function Xr(e){return e&&e.__esModule?e:{default:e}}Ir.id="actions";var Yr={};Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.getContainer=Gr,Yr.getScroll=Ur,Yr.getScrollSize=function(e){Wr.window(e)&&(e=window.document.body);return{x:e.scrollWidth,y:e.scrollHeight}},Yr.getScrollSizeDelta=function(e,t){var n=e.interaction,r=e.element,o=n&&n.interactable.options[n.prepared.name].autoScroll;if(!o||!o.enabled)return t(),{x:0,y:0};var i=Gr(o.container,n.interactable,r),a=Ur(i);t();var s=Ur(i);return{x:s.x-a.x,y:s.y-a.y}},Yr.default=void 0;var Nr,Fr=Vr(z),Wr=Vr(y),Lr=(Nr=Ue)&&Nr.__esModule?Nr:{default:Nr};function Vr(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}var qr={defaults:{enabled:!1,margin:60,container:null,speed:300},now:Date.now,interaction:null,i:null,x:0,y:0,isScrolling:!1,prevTime:0,margin:0,speed:0,start:function(e){qr.isScrolling=!0,Lr.default.cancel(qr.i),(e.autoScroll=qr).interaction=e,qr.prevTime=qr.now(),qr.i=Lr.default.request(qr.scroll)},stop:function(){qr.isScrolling=!1,qr.interaction&&(qr.interaction.autoScroll=null),Lr.default.cancel(qr.i)},scroll:function(){var e=qr.interaction,t=e.interactable,n=e.element,r=t.options[qr.interaction.prepared.name].autoScroll,o=Gr(r.container,t,n),i=qr.now(),a=(i-qr.prevTime)/1e3,s=r.speed*a;if(1<=s){var l={x:qr.x*s,y:qr.y*s};if(l.x||l.y){var u=Ur(o);Wr.window(o)?o.scrollBy(l.x,l.y):o&&(o.scrollLeft+=l.x,o.scrollTop+=l.y);var c=Ur(o),f={x:c.x-u.x,y:c.y-u.y};(f.x||f.y)&&t.fire({type:"autoscroll",target:n,interactable:t,delta:f,interaction:e,container:o})}qr.prevTime=i}qr.isScrolling&&(Lr.default.cancel(qr.i),qr.i=Lr.default.request(qr.scroll))},check:function(e,t){var n=e.options;return n[t].autoScroll&&n[t].autoScroll.enabled},onInteractionMove:function(e){var t=e.interaction,n=e.pointer;if(t.interacting()&&qr.check(t.interactable,t.prepared.name))if(t.simulation)qr.x=qr.y=0;else{var r,o,i,a,s=t.interactable,l=t.element,u=s.options[t.prepared.name].autoScroll,c=Gr(u.container,s,l);if(Wr.window(c))a=n.clientXc.innerWidth-qr.margin,i=n.clientY>c.innerHeight-qr.margin;else{var f=Fr.getElementClientRect(c);a=n.clientXf.right-qr.margin,i=n.clientY>f.bottom-qr.margin}qr.x=o?1:a?-1:0,qr.y=i?1:r?-1:0,qr.isScrolling||(qr.margin=u.margin,qr.speed=u.speed,qr.start(t))}}};function Gr(e,t,n){return(Wr.string(e)?(0,De.getStringOptionResult)(e,t,n):e)||(0,u.getWindow)(n)}function Ur(e){return Wr.window(e)&&(e=window.document.body),{x:e.scrollLeft,y:e.scrollTop}}var Br={id:"auto-scroll",install:function(e){var t=e.interactions,n=e.defaults,r=e.actions;(e.autoScroll=qr).now=function(){return e.now()},t.signals.on("new",function(e){e.interaction.autoScroll=null}),t.signals.on("destroy",function(e){e.interaction.autoScroll=null,qr.stop(),qr.interaction&&(qr.interaction=null)}),t.signals.on("stop",qr.stop),t.signals.on("action-move",function(e){return qr.onInteractionMove(e)}),r.eventTypes.push("autoscroll"),n.perAction.autoScroll=qr.defaults}};Yr.default=Br;var Hr={};Object.defineProperty(Hr,"__esModule",{value:!0}),Hr.default=void 0;var $r=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(y);function Kr(e,t,n,r){var o=this.defaultActionChecker(e,t,n,r);return this.options.actionChecker?this.options.actionChecker(e,t,o,this,r,n):o}function Qr(e){return $r.bool(e)?(this.options.styleCursor=e,this):null===e?(delete this.options.styleCursor,this):this.options.styleCursor}function Jr(e){return $r.func(e)?(this.options.actionChecker=e,this):null===e?(delete this.options.actionChecker,this):this.options.actionChecker}var Zr={id:"auto-start/interactableMethods",install:function(e){var t=e.Interactable,o=e.actions;t.prototype.getAction=Kr,t.prototype.ignoreFrom=(0,et.warnOnce)(function(e){return this._backCompatOption("ignoreFrom",e)},"Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue})."),t.prototype.allowFrom=(0,et.warnOnce)(function(e){return this._backCompatOption("allowFrom",e)},"Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue})."),t.prototype.actionChecker=Jr,t.prototype.styleCursor=Qr,t.prototype.defaultActionChecker=function(e,t,n,r){return function(e,t,n,r,o,i){for(var a=e.getRect(o),s=n.buttons||{0:1,1:4,3:8,4:16}[n.button],l=null,u=0;us.minSpeed&&c>s.endSpeed,v={interaction:n,pageCoords:ui.extend({},n.coords.cur.page),states:p&&n.modifiers.states.map(function(e){return ui.extend({},e)}),preEnd:!0,prevCoords:void 0,requireEndOnly:null};p&&!d&&(v.prevCoords=n.prevEvent.page,v.requireEndOnly=!1,(a=li.default.setAll(v)).changed&&(f=!0));if(!d&&!f)return null;ui.pointer.copyCoords(i.upCoords,n.coords.cur),n.pointers[0].pointer=i.startEvent=new t.InteractEvent(n,r,n.prepared.name,sn.EventPhase.InertiaStart,n.element),i.t0=l,i.active=!0,i.allowResume=s.allowResume,n.simulation=i,n.interactable.fire(i.startEvent),d?(i.vx0=n.coords.velocity.client.x,i.vy0=n.coords.velocity.client.y,i.v0=c,pi(n,i),ui.extend(v.pageCoords,n.coords.cur.page),v.pageCoords.x+=i.xe,v.pageCoords.y+=i.ye,v.prevCoords=void 0,v.requireEndOnly=!0,a=li.default.setAll(v),i.modifiedXe+=a.delta.x,i.modifiedYe+=a.delta.y,i.timeout=ci.default.request(function(){return di(n)})):(i.smoothEnd=!0,i.xe=a.delta.x,i.ye=a.delta.y,i.sx=i.sy=0,i.timeout=ci.default.request(function(){return vi(n)}));return!1}(e,t)}),e.signals.on("down",function(e){return function(e,t){var n=e.interaction,r=e.event,o=e.pointer,i=e.eventTarget,a=n.inertia;if(a.active)for(var s=i;ui.is.element(s);){if(s===n.element){ci.default.cancel(a.timeout),a.active=!1,n.simulation=null,n.updatePointer(o,r,i,!0),ui.pointer.setCoords(n.coords.cur,n.pointers.map(function(e){return e.pointer}),n._now());var l={interaction:n};t.interactions.signals.fire("action-resume",l);var u=new t.InteractEvent(n,r,n.prepared.name,sn.EventPhase.Resume,n.element);n._fireEvent(u),ui.pointer.copyCoords(n.coords.prev,n.coords.cur);break}s=ui.dom.parentNode(s)}}(e,t)}),e.signals.on("stop",function(e){return function(e){var t=e.interaction,n=t.inertia;n.active&&(ci.default.cancel(n.timeout),n.active=!1,t.simulation=null)}(e)}),n.perAction.inertia={enabled:!1,resistance:10,minSpeed:100,endSpeed:10,allowResume:!0,smoothEndDuration:300},t.usePlugin(li.default)},calcInertia:pi,inertiaTick:di,smothEndTick:vi,updateInertiaCoords:gi};si.default=yi;var mi={};Object.defineProperty(mi,"__esModule",{value:!0}),mi.default=void 0;var bi,wi=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}}(y),Oi=(bi=De)&&bi.__esModule?bi:{default:bi};function Pi(e,t,n){return wi.func(e)?Oi.default.resolveRectLike(e,t.interactable,t.element,[n.x,n.y,t]):Oi.default.resolveRectLike(e,t.interactable,t.element)}var _i={start:function(e){var t=e.rect,n=e.startOffset,r=e.state,o=r.options.elementRect,i={};t&&o?(i.left=n.left-t.width*o.left,i.top=n.top-t.height*o.top,i.right=n.right-t.width*(1-o.right),i.bottom=n.bottom-t.height*(1-o.bottom)):i.left=i.top=i.right=i.bottom=0,r.offset=i},set:function(e){var t=e.coords,n=e.interaction,r=e.state,o=r.options,i=r.offset,a=Pi(o.restriction,n,t);if(!a)return r;var s=a;"x"in a&&"y"in a?(t.x=Math.max(Math.min(s.x+s.width-i.right,t.x),s.x+i.left),t.y=Math.max(Math.min(s.y+s.height-i.bottom,t.y),s.y+i.top)):(t.x=Math.max(Math.min(s.right-i.right,t.x),s.left+i.left),t.y=Math.max(Math.min(s.bottom-i.bottom,t.y),s.top+i.top))},getRestrictionRect:Pi,defaults:{enabled:!1,restriction:null,elementRect:null}};mi.default=_i;var xi={};Object.defineProperty(xi,"__esModule",{value:!0}),xi.default=void 0;var ji=Ei(Te),Mi=Ei(De);function Ei(e){return e&&e.__esModule?e:{default:e}}var Si=Ei(mi).default.getRestrictionRect,Ti={top:1/0,left:1/0,bottom:-1/0,right:-1/0},Di={top:-1/0,left:-1/0,bottom:1/0,right:1/0};function ki(e,t){for(var n=["top","left","bottom","right"],r=0;r\n * Released under the MIT License.\n * https://raw.github.com/taye/interact.js/master/LICENSE\n */\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.interact = f()}})(function(){var define,module,exports;\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\n","import * as utils from '@interactjs/utils'\nimport domObjects from '@interactjs/utils/domObjects'\nimport defaults from './defaultOptions'\nimport Eventable from './Eventable'\nimport InteractableBase from './Interactable'\nimport InteractableSet from './InteractableSet'\nimport InteractEvent from './InteractEvent'\nimport interactions from './interactions'\n\nconst {\n win,\n browser,\n raf,\n Signals,\n events,\n} = utils\n\nexport enum ActionName {\n}\n\nexport interface Actions {\n names: ActionName[]\n methodDict: { [key: string]: string }\n eventTypes: string[]\n}\n\nexport function createScope () {\n return new Scope()\n}\n\nexport type Defaults = typeof defaults\n\nexport interface Plugin {\n id?: string\n install (scope: Scope, options?: any): void\n [key: string]: any\n}\n\nexport class Scope {\n id = `__interact_scope_${Math.floor(Math.random() * 100)}`\n signals = new Signals()\n browser = browser\n events = events\n utils = utils\n defaults: Defaults = utils.clone(defaults) as Defaults\n Eventable = Eventable\n actions: Actions = {\n names: [],\n methodDict: {},\n eventTypes: [],\n }\n\n InteractEvent = InteractEvent\n Interactable!: typeof InteractableBase\n interactables = new InteractableSet(this)\n\n // main window\n _win!: Window\n\n // main document\n document!: Document\n\n // main window\n window!: Window\n\n // all documents being listened to\n documents: Array<{ doc: Document, options: any }> = []\n\n _plugins: Plugin[] = []\n _pluginMap: { [id: string]: Plugin } = {}\n\n constructor () {\n const scope = this as Scope\n\n ; (this as { Interactable: typeof InteractableBase }).Interactable = class Interactable extends InteractableBase implements InteractableBase {\n get _defaults () { return scope.defaults }\n\n set (options: any) {\n super.set(options)\n\n scope.interactables.signals.fire('set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset () {\n super.unset()\n for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n const interaction = scope.interactions.list[i]\n\n if (interaction.interactable === this) {\n interaction.stop()\n scope.interactions.signals.fire('destroy', { interaction })\n interaction.destroy()\n\n if (scope.interactions.list.length > 2) {\n scope.interactions.list.splice(i, 1)\n }\n }\n }\n\n scope.interactables.signals.fire('unset', { interactable: this })\n }\n }\n }\n\n onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n init (window: Window) {\n return initScope(this, window)\n }\n\n pluginIsInstalled (plugin: Plugin) {\n return this._pluginMap[plugin.id] || this._plugins.indexOf(plugin) !== -1\n }\n\n usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) { this._pluginMap[plugin.id] = plugin }\n\n plugin.install(this, options)\n this._plugins.push(plugin)\n\n return this\n }\n\n addDocument (doc: Document, options?: any): void | false {\n // do nothing if document is already known\n if (this.getDocIndex(doc) !== -1) { return false }\n\n const window = win.getWindow(doc)\n\n options = options ? utils.extend({}, options) : {}\n\n this.documents.push({ doc, options })\n events.documents.push(doc)\n\n // don't add an unload event for the main document\n // so that the page may be cached in browser history\n if (doc !== this.document) {\n events.add(window, 'unload', this.onWindowUnload)\n }\n\n this.signals.fire('add-document', { doc, window, scope: this, options })\n }\n\n removeDocument (doc: Document) {\n const index = this.getDocIndex(doc)\n\n const window = win.getWindow(doc)\n const options = this.documents[index].options\n\n events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n events.documents.splice(index, 1)\n\n this.signals.fire('remove-document', { doc, window, scope: this, options })\n }\n\n getDocIndex (doc: Document) {\n for (let i = 0; i < this.documents.length; i++) {\n if (this.documents[i].doc === doc) {\n return i\n }\n }\n\n return -1\n }\n\n getDocOptions (doc: Document) {\n const docIndex = this.getDocIndex(doc)\n\n return docIndex === -1 ? null : this.documents[docIndex].options\n }\n\n now () {\n return ((this.window as any).Date as typeof Date || Date).now()\n }\n}\n\nexport function initScope (scope: Scope, window: Window) {\n win.init(window)\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n events.init(window)\n\n scope.usePlugin(interactions)\n scope.document = window.document\n scope.window = window\n\n return scope\n}\n","import browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\nimport Signals from '@interactjs/utils/Signals'\nimport InteractionBase from './Interaction'\nimport finder, { SearchDetails } from './interactionFinder'\nimport { Scope } from './scope'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n signals: Signals\n new: (options: any) => InteractionBase\n list: InteractionBase[]\n listeners: { [type: string]: Interact.Listener }\n docEvents: Array<{ type: string, listener: Interact.Listener }>\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n}\n\nconst methodNames = [\n 'pointerDown', 'pointerMove', 'pointerUp',\n 'updatePointer', 'removePointer', 'windowBlur',\n]\n\nfunction install (scope: Scope) {\n const signals = new Signals()\n\n const listeners = {} as any\n\n for (const method of methodNames) {\n listeners[method] = doOnInteractions(method, scope)\n }\n\n const pEventTypes = browser.pEventTypes\n let docEvents: typeof scope.interactions.docEvents\n\n if (domObjects.PointerEvent) {\n docEvents = [\n { type: pEventTypes.down, listener: releasePointersOnRemovedEls },\n { type: pEventTypes.down, listener: listeners.pointerDown },\n { type: pEventTypes.move, listener: listeners.pointerMove },\n { type: pEventTypes.up, listener: listeners.pointerUp },\n { type: pEventTypes.cancel, listener: listeners.pointerUp },\n ]\n }\n else {\n docEvents = [\n { type: 'mousedown', listener: listeners.pointerDown },\n { type: 'mousemove', listener: listeners.pointerMove },\n { type: 'mouseup', listener: listeners.pointerUp },\n\n { type: 'touchstart', listener: releasePointersOnRemovedEls },\n { type: 'touchstart', listener: listeners.pointerDown },\n { type: 'touchmove', listener: listeners.pointerMove },\n { type: 'touchend', listener: listeners.pointerUp },\n { type: 'touchcancel', listener: listeners.pointerUp },\n ]\n }\n\n docEvents.push({\n type: 'blur',\n listener (event) {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event)\n }\n },\n })\n\n scope.signals.on('add-document', onDocSignal)\n scope.signals.on('remove-document', onDocSignal)\n\n // for ignoring browser's simulated mouse events\n scope.prevTouchTime = 0\n\n scope.Interaction = class Interaction extends InteractionBase {\n get pointerMoveTolerance () {\n return scope.interactions.pointerMoveTolerance\n }\n\n set pointerMoveTolerance (value) {\n scope.interactions.pointerMoveTolerance = value\n }\n\n _now () { return scope.now() }\n }\n\n scope.interactions = {\n signals,\n // all active and idle interactions\n list: [],\n new (options: { pointerType?: string, signals?: Signals }) {\n options.signals = signals\n\n const interaction = new scope.Interaction(options as Required)\n\n scope.interactions.list.push(interaction)\n return interaction\n },\n listeners,\n docEvents,\n pointerMoveTolerance: 1,\n }\n\n function releasePointersOnRemovedEls () {\n // for all inactive touch interactions with pointers down\n for (const interaction of scope.interactions.list) {\n if (!interaction.pointerIsDown ||\n interaction.pointerType !== 'touch' ||\n interaction._interacting) {\n continue\n }\n\n // if a pointer is down on an element that is no longer in the DOM tree\n for (const pointer of interaction.pointers) {\n if (!scope.documents.some(({ doc }) => nodeContains(doc, pointer.downTarget))) {\n // remove the pointer from the interaction\n interaction.removePointer(pointer.pointer, pointer.event)\n }\n }\n }\n }\n}\n\nfunction doOnInteractions (method, scope) {\n return function (event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches = [] // [ [pointer, interaction], ...]\n\n if (/^touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\n for (const changedTouch of event.changedTouches) {\n const pointer = changedTouch\n const pointerId = pointerUtils.getPointerId(pointer)\n const searchDetails: SearchDetails = {\n pointer,\n pointerId,\n pointerType,\n eventType: event.type,\n eventTarget,\n curEventTarget,\n scope,\n }\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n }\n else {\n let invalidPointer = false\n\n if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n // ignore mouse events while touch interactions are active\n for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown\n }\n\n // try to ignore mouse events that are simulated by the browser\n // after a touch event\n invalidPointer = invalidPointer ||\n (scope.now() - scope.prevTouchTime < 500) ||\n // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n event.timeStamp === 0\n }\n\n if (!invalidPointer) {\n const searchDetails = {\n pointer: event,\n pointerId: pointerUtils.getPointerId(event),\n pointerType,\n eventType: event.type,\n curEventTarget,\n eventTarget,\n scope,\n }\n\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n }\n\n // eslint-disable-next-line no-shadow\n for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n interaction[method](pointer, event, eventTarget, curEventTarget)\n }\n }\n}\n\nfunction getInteraction (searchDetails: SearchDetails) {\n const { pointerType, scope } = searchDetails\n\n const foundInteraction = finder.search(searchDetails)\n const signalArg = { interaction: foundInteraction, searchDetails }\n\n scope.interactions.signals.fire('find', signalArg)\n\n return signalArg.interaction || scope.interactions.new({ pointerType })\n}\n\nfunction onDocSignal ({ doc, scope, options }, signalName) {\n const { docEvents } = scope.interactions\n const eventMethod = signalName.indexOf('add') === 0\n ? events.add : events.remove\n\n if (scope.browser.isIOS && !options.events) {\n options.events = { passive: false }\n }\n\n // delegate event listener\n for (const eventType in events.delegatedEvents) {\n eventMethod(doc, eventType, events.delegateListener)\n eventMethod(doc, eventType, events.delegateUseCapture, true)\n }\n\n const eventOptions = options && options.events\n\n for (const { type, listener } of docEvents) {\n eventMethod(doc, type, listener, eventOptions)\n }\n}\n\nexport default {\n id: 'core/interactions',\n install,\n onDocSignal,\n doOnInteractions,\n methodNames,\n}\n","import * as utils from '@interactjs/utils'\nimport Interactable from './Interactable'\nimport InteractEvent, { EventPhase } from './InteractEvent'\nimport PointerInfo from './PointerInfo'\nimport { ActionName } from './scope'\n\nexport interface ActionProps {\n name: T\n axis?: 'x' | 'y' | 'xy'\n edges?: {\n [edge in keyof Interact.Rect]?: boolean\n }\n}\n\nexport interface StartAction extends ActionProps {\n name: ActionName | string\n}\n\nexport enum _ProxyValues {\n interactable = '',\n element = '',\n prepared = '',\n pointerIsDown = '',\n pointerWasMoved = '',\n _proxy = ''\n}\n\nexport enum _ProxyMethods {\n start = '',\n move = '',\n end = '',\n stop = '',\n interacting = ''\n}\n\nexport type _InteractionProxy = Pick<\n Interaction,\n keyof typeof _ProxyValues | keyof typeof _ProxyMethods\n>\n\nexport class Interaction {\n // current interactable being interacted with\n interactable: Interactable = null\n\n // the target element of the interactable\n element: Element = null\n rect: Interact.Rect & Interact.Size\n edges: {\n [P in keyof Interact.Rect]?: boolean\n }\n\n _signals: utils.Signals\n\n // action that's ready to be fired on next move event\n prepared: ActionProps = {\n name : null,\n axis : null,\n edges: null,\n }\n\n pointerType: string\n\n // keep track of added pointers\n pointers: PointerInfo[] = []\n\n // pointerdown/mousedown/touchstart event\n downEvent: Interact.PointerEventType = null\n\n downPointer: Interact.PointerType = {} as Interact.PointerType\n\n _latestPointer: {\n pointer: Interact.EventTarget\n event: Interact.PointerEventType\n eventTarget: Node,\n } = {\n pointer: null,\n event: null,\n eventTarget: null,\n }\n\n // previous action event\n prevEvent: InteractEvent = null\n\n pointerIsDown = false\n pointerWasMoved = false\n _interacting = false\n _ending = false\n _stopped = true\n _proxy: _InteractionProxy = null\n\n simulation = null\n\n get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\n */\n doMove = utils.warnOnce(\n function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n },\n 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords = {\n // Starting InteractEvent pointer coordinates\n start: utils.pointer.newCoords(),\n // Previous native pointer move event coordinates\n prev: utils.pointer.newCoords(),\n // current native pointer move event coordinates\n cur: utils.pointer.newCoords(),\n // Change in coordinates and time of the pointer\n delta: utils.pointer.newCoords(),\n // pointer velocity\n velocity: utils.pointer.newCoords(),\n }\n\n /** */\n constructor ({ pointerType, signals }: { pointerType?: string, signals: utils.Signals }) {\n this._signals = signals\n this.pointerType = pointerType\n\n const that = this\n\n this._proxy = {} as _InteractionProxy\n\n for (const key in _ProxyValues) {\n Object.defineProperty(this._proxy, key, {\n get () { return that[key] },\n })\n }\n\n for (const key in _ProxyMethods) {\n Object.defineProperty(this._proxy, key, {\n value: (...args) => that[key](...args),\n })\n }\n\n this._signals.fire('new', { interaction: this })\n }\n\n pointerDown (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n\n this._signals.fire('down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n interaction: this,\n })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable({\n * // disable the default drag start by down->move\n * manualStart: true\n * })\n * // start dragging after the user holds the pointer down\n * .on('hold', function (event) {\n * var interaction = event.interaction\n *\n * if (!interaction.interacting()) {\n * interaction.start({ name: 'drag' },\n * event.interactable,\n * event.currentTarget)\n * }\n * })\n * ```\n *\n * Start an action with the given Interactable and Element as tartgets. The\n * action must be enabled for the target Interactable and an appropriate\n * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n *\n * Use it with `interactable.able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {object} interact\n */\n start (action: StartAction, interactable: Interactable, element: Element) {\n if (this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === ActionName.Gesture ? 2 : 1) ||\n !interactable.options[action.name].enabled) {\n return false\n }\n\n utils.copyAction(this.prepared, action)\n\n this.interactable = interactable\n this.element = element\n this.rect = interactable.getRect(element)\n this.edges = this.prepared.edges\n this._stopped = false\n this._interacting = this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: EventPhase.Start,\n }) && !this._stopped\n\n return this._interacting\n }\n\n pointerMove (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node) {\n if (!this.simulation && !(this.modifiers && this.modifiers.endPrevented)) {\n this.updatePointer(pointer, event, eventTarget, false)\n utils.pointer.setCoords(this.coords.cur, this.pointers.map((p) => p.pointer), this._now())\n }\n\n const duplicateMove = (this.coords.cur.page.x === this.coords.prev.page.x &&\n this.coords.cur.page.y === this.coords.prev.page.y &&\n this.coords.cur.client.x === this.coords.prev.client.x &&\n this.coords.cur.client.y === this.coords.prev.client.y)\n\n let dx\n let dy\n\n // register movement greater than pointerMoveTolerance\n if (this.pointerIsDown && !this.pointerWasMoved) {\n dx = this.coords.cur.client.x - this.coords.start.client.x\n dy = this.coords.cur.client.y - this.coords.start.client.y\n\n this.pointerWasMoved = utils.hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const signalArg = {\n pointer,\n pointerIndex: this.getPointerIndex(pointer),\n event,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n utils.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n utils.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._signals.fire('move', signalArg)\n\n if (!duplicateMove) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n this.move(signalArg)\n }\n\n if (this.pointerWasMoved) {\n utils.pointer.copyCoords(this.coords.prev, this.coords.cur)\n }\n }\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('dragmove', function (event) {\n * if (someCondition) {\n * // change the snap settings\n * event.interactable.draggable({ snap: { targets: [] }})\n * // fire another move event with re-calculated snap\n * event.interaction.move()\n * }\n * })\n * ```\n *\n * Force a move of the current action at the same coordinates. Useful if\n * snap/restrict has been changed and you want a movement with the new\n * settings.\n */\n move (signalArg?) {\n signalArg = utils.extend({\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n }, signalArg || {})\n\n signalArg.phase = EventPhase.Move\n\n this._doPhase(signalArg)\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node, curEventTarget: EventTarget) {\n let pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n }\n\n this._signals.fire(/cancel$/i.test(event.type) ? 'cancel' : 'up', {\n pointer,\n pointerIndex,\n event,\n eventTarget,\n curEventTarget,\n interaction: this,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.pointerIsDown = false\n this.removePointer(pointer, event)\n }\n\n documentBlur (event) {\n this.end(event)\n this._signals.fire('blur', { event, interaction: this })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('move', function (event) {\n * if (event.pageX > 1000) {\n * // end the current action\n * event.interaction.end()\n * // stop all further listeners from being called\n * event.stopImmediatePropagation()\n * }\n * })\n * ```\n *\n * @param {PointerEvent} [event]\n */\n end (event?: Interact.PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: EventPhase.End,\n })\n }\n\n this._ending = false\n\n if (endPhaseResult === true) {\n this.stop()\n }\n }\n\n currentAction () {\n return this._interacting ? this.prepared.name : null\n }\n\n interacting () {\n return this._interacting\n }\n\n /** */\n stop () {\n this._signals.fire('stop', { interaction: this })\n\n this.interactable = this.element = null\n\n this._interacting = false\n this._stopped = true\n this.prepared.name = this.prevEvent = null\n }\n\n getPointerIndex (pointer) {\n const pointerId = utils.pointer.getPointerId(pointer)\n\n // mouse and pen interactions may have only one pointer\n return (this.pointerType === 'mouse' || this.pointerType === 'pen')\n ? this.pointers.length - 1\n : utils.arr.findIndex(this.pointers, (curPointer) => curPointer.id === pointerId)\n }\n\n getPointerInfo (pointer) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n updatePointer (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node, down?: boolean) {\n const id = utils.pointer.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false\n ? false\n : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(\n id,\n pointer,\n event,\n null,\n null,\n )\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n }\n else {\n pointerInfo.pointer = pointer\n }\n\n if (down) {\n this.pointerIsDown = true\n\n if (!this.interacting()) {\n utils.pointer.setCoords(this.coords.start, this.pointers.map((p) => p.pointer), this._now())\n\n utils.pointer.copyCoords(this.coords.cur, this.coords.start)\n utils.pointer.copyCoords(this.coords.prev, this.coords.start)\n utils.pointer.pointerExtend(this.downPointer, pointer)\n\n this.downEvent = event\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n\n this.pointerWasMoved = false\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget)\n\n this._signals.fire('update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: this,\n })\n\n return pointerIndex\n }\n\n removePointer (pointer: Interact.PointerType, event: Interact.PointerEventType) {\n const pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) { return }\n\n const pointerInfo = this.pointers[pointerIndex]\n\n this._signals.fire('remove-pointer', {\n pointer,\n event,\n pointerIndex,\n pointerInfo,\n interaction: this,\n })\n\n this.pointers.splice(pointerIndex, 1)\n }\n\n _updateLatestPointer (pointer, event, eventTarget) {\n this._latestPointer.pointer = pointer\n this._latestPointer.event = event\n this._latestPointer.eventTarget = eventTarget\n }\n\n destroy () {\n this._latestPointer.pointer = null\n this._latestPointer.event = null\n this._latestPointer.eventTarget = null\n }\n\n _createPreparedEvent (event: Interact.PointerEventType, phase: EventPhase, preEnd: boolean, type: string) {\n const actionName = this.prepared.name\n\n return new InteractEvent(this, event, actionName, phase, this.element, null, preEnd, type)\n }\n\n _fireEvent (iEvent) {\n this.interactable.fire(iEvent)\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent\n }\n }\n\n _doPhase (signalArg: Partial) {\n const { event, phase, preEnd, type } = signalArg\n const beforeResult = this._signals.fire(`before-action-${phase}`, signalArg)\n\n if (beforeResult === false) {\n return false\n }\n\n const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type)\n const { rect } = this\n\n if (rect) {\n // update the rect modifications\n const edges = this.edges || this.prepared.edges || { left: true, right: true, top: true, bottom: true }\n\n if (edges.top) { rect.top += iEvent.delta.y }\n if (edges.bottom) { rect.bottom += iEvent.delta.y }\n if (edges.left) { rect.left += iEvent.delta.x }\n if (edges.right) { rect.right += iEvent.delta.x }\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n this._signals.fire(`action-${phase}`, signalArg)\n\n this._fireEvent(iEvent)\n\n this._signals.fire(`after-action-${phase}`, signalArg)\n\n return true\n }\n\n _now () { return Date.now() }\n}\n\nexport default Interaction\nexport { PointerInfo }\n","export function contains (array, target) {\n return array.indexOf(target) !== -1\n}\n\nexport function remove (array, target) {\n return array.splice(array.indexOf(target), 1)\n}\n\nexport function merge (target, source) {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport function from (source) {\n return merge([], source)\n}\n\nexport function findIndex (array, func) {\n for (let i = 0; i < array.length; i++) {\n if (func(array[i], i, array)) {\n return i\n }\n }\n\n return -1\n}\n\nexport function find (array, func) {\n return array[findIndex(array, func)]\n}\n","const domObjects: {\n init: any,\n document: Document,\n DocumentFragment: typeof DocumentFragment,\n SVGElement: typeof SVGElement,\n SVGSVGElement: typeof SVGSVGElement,\n SVGElementInstance: any,\n Element: typeof Element,\n HTMLElement: typeof HTMLElement,\n Event: typeof Event,\n Touch: typeof Touch,\n PointerEvent: typeof PointerEvent,\n} =\n{\n init,\n document: null as any,\n DocumentFragment: null as any,\n SVGElement: null as any,\n SVGSVGElement: null as any,\n // eslint-disable-next-line no-undef\n SVGElementInstance: null as any,\n Element: null as any,\n HTMLElement: null as any,\n Event: null as any,\n Touch: null as any,\n PointerEvent: null as any,\n}\n\nfunction blank () {}\n\nexport default domObjects\n\nfunction init (window: Window) {\n const win = window as any\n\n domObjects.document = win.document\n domObjects.DocumentFragment = win.DocumentFragment || blank\n domObjects.SVGElement = win.SVGElement || blank\n domObjects.SVGSVGElement = win.SVGSVGElement || blank\n domObjects.SVGElementInstance = win.SVGElementInstance || blank\n domObjects.Element = win.Element || blank\n domObjects.HTMLElement = win.HTMLElement || domObjects.Element\n\n domObjects.Event = win.Event\n domObjects.Touch = win.Touch || blank\n domObjects.PointerEvent = (win.PointerEvent || win.MSPointerEvent)\n}\n","export default (thing) => !!(thing && thing.Window) && (thing instanceof thing.Window)\n","import isWindow from './isWindow'\n\nconst win = {\n realWindow: undefined as Window,\n window: undefined as Window,\n getWindow,\n init,\n}\n\nexport function init (window: Window & { wrap?: (...args) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n win.realWindow = window\n\n // create a TextNode\n const el = window.document.createTextNode('')\n\n // check if it's wrapped by a polyfill\n if (el.ownerDocument !== window.document &&\n typeof window.wrap === 'function' &&\n window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win.window = window\n}\n\nif (typeof window === 'undefined') {\n win.window = undefined\n win.realWindow = undefined\n}\nelse {\n init(window)\n}\n\nexport function getWindow (node) {\n if (isWindow(node)) {\n return node\n }\n\n const rootNode = (node.ownerDocument || node)\n\n return rootNode.defaultView || win.window\n}\n\nwin.init = init\n\nexport default win\n","// tslint:disable variable-name\n\nimport isWindow from './isWindow'\nimport win from './window'\n\nexport const window = (thing: any): thing is Window =>\n thing === win.window || isWindow(thing)\n\nexport const docFrag = (thing: any): thing is DocumentFragment =>\n object(thing) && thing.nodeType === 11\n\nexport const object = (thing: any): thing is { [index: string]: any } =>\n !!thing && (typeof thing === 'object')\n\nexport const func = (thing: any): thing is (...args: any) => any =>\n typeof thing === 'function'\n\nexport const number = (thing: any): thing is number =>\n typeof thing === 'number'\n\nexport const bool = (thing: any): thing is boolean =>\n typeof thing === 'boolean'\n\nexport const string = (thing: any): thing is string =>\n typeof thing === 'string'\n\nexport const element = (thing: any): thing is Element => {\n if (!thing || (typeof thing !== 'object')) { return false }\n\n const _window = win.getWindow(thing) || win.window\n\n return (/object|function/.test(typeof _window.Element)\n ? thing instanceof _window.Element // DOM2\n : thing.nodeType === 1 && typeof thing.nodeName === 'string')\n}\n\nexport const plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) &&\n !!thing.constructor &&\n /function Object\\b/.test(thing.constructor.toString())\n\nexport const array = (thing: any): thing is any[] =>\n (object(thing) &&\n (typeof thing.length !== 'undefined') &&\n func(thing.splice))\n","import domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nconst browser = {\n init,\n supportsTouch: null as boolean,\n supportsPointerEvent: null as boolean,\n isIOS7: null as boolean,\n isIOS: null as boolean,\n isIe9: null as boolean,\n isOperaMobile: null as boolean,\n prefixedMatchesSelector: null as string,\n pEventTypes: null as {\n up: string,\n down: string,\n over: string,\n out: string,\n move: string,\n cancel: string,\n },\n wheelEvent: null as string,\n}\n\nfunction init (window) {\n const Element = domObjects.Element\n const navigator = win.window.navigator\n\n // Does the browser support touch input?\n browser.supportsTouch = ('ontouchstart' in window) ||\n (is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch)\n\n // Does the browser support PointerEvents\n browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent\n\n browser.isIOS = (/iP(hone|od|ad)/.test(navigator.platform))\n\n // scrolling doesn't change the result of getClientRects on iOS 7\n browser.isIOS7 = (/iP(hone|od|ad)/.test(navigator.platform) &&\n /OS 7[^\\d]/.test(navigator.appVersion))\n\n browser.isIe9 = /MSIE 9/.test(navigator.userAgent)\n\n // Opera Mobile must be handled differently\n browser.isOperaMobile = (navigator.appName === 'Opera' &&\n browser.supportsTouch &&\n /Presto/.test(navigator.userAgent))\n\n // prefix matchesSelector\n browser.prefixedMatchesSelector = 'matches' in Element.prototype\n ? 'matches'\n : 'webkitMatchesSelector' in Element.prototype\n ? 'webkitMatchesSelector'\n : 'mozMatchesSelector' in Element.prototype\n ? 'mozMatchesSelector'\n : 'oMatchesSelector' in Element.prototype\n ? 'oMatchesSelector'\n : 'msMatchesSelector'\n\n browser.pEventTypes = (browser.supportsPointerEvent\n ? (domObjects.PointerEvent === window.MSPointerEvent\n ? {\n up: 'MSPointerUp',\n down: 'MSPointerDown',\n over: 'mouseover',\n out: 'mouseout',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel',\n }\n : {\n up: 'pointerup',\n down: 'pointerdown',\n over: 'pointerover',\n out: 'pointerout',\n move: 'pointermove',\n cancel: 'pointercancel',\n })\n : null)\n\n // because Webkit and Opera still use 'mousewheel' event type\n browser.wheelEvent = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import browser from './browser'\nimport domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nexport function nodeContains (parent: Node, child: Node) {\n while (child) {\n if (child === parent) {\n return true\n }\n\n child = child.parentNode\n }\n\n return false\n}\n\nexport function closest (element, selector) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) { return element }\n\n element = parentNode(element)\n }\n\n return null\n}\n\nexport function parentNode (node) {\n let parent = node.parentNode\n\n if (is.docFrag(parent)) {\n // skip past #shado-root fragments\n // tslint:disable-next-line\n while ((parent = (parent as any).host) && is.docFrag(parent)) {\n continue\n }\n\n return parent\n }\n\n return parent\n}\n\nexport function matchesSelector (element, selector) {\n // remove /deep/ from selectors if shadowDOM polyfill is used\n if (win.window !== win.realWindow) {\n selector = selector.replace(/\\/deep\\//g, ' ')\n }\n\n return element[browser.prefixedMatchesSelector](selector)\n}\n\nconst getParent = (el) => el.parentNode ? el.parentNode : el.host\n\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements) {\n let deepestZoneParents = []\n let dropzoneParents = []\n let dropzone\n let deepestZone = elements[0]\n let index = deepestZone ? 0 : -1\n let parent\n let child\n let i\n let n\n\n for (i = 1; i < elements.length; i++) {\n dropzone = elements[i]\n\n // an element might belong to multiple selector dropzones\n if (!dropzone || dropzone === deepestZone) {\n continue\n }\n\n if (!deepestZone) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n // check if the deepest or current are document.documentElement or document.rootElement\n // - if the current dropzone is, do nothing and continue\n if (dropzone.parentNode === dropzone.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current dropzone and continue to next\n else if (deepestZone.parentNode === dropzone.ownerDocument) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n if (!deepestZoneParents.length) {\n parent = deepestZone\n while (getParent(parent) && getParent(parent) !== parent.ownerDocument) {\n deepestZoneParents.unshift(parent)\n parent = getParent(parent)\n }\n }\n\n // if this element is an svg element and the current deepest is\n // an HTMLElement\n if (deepestZone instanceof domObjects.HTMLElement &&\n dropzone instanceof domObjects.SVGElement &&\n !(dropzone instanceof domObjects.SVGSVGElement)) {\n if (dropzone === deepestZone.parentNode) {\n continue\n }\n\n parent = dropzone.ownerSVGElement\n }\n else {\n parent = dropzone\n }\n\n dropzoneParents = []\n\n while (parent.parentNode !== parent.ownerDocument) {\n dropzoneParents.unshift(parent)\n parent = getParent(parent)\n }\n\n n = 0\n\n // get (position of last common ancestor) + 1\n while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n n++\n }\n\n const parents = [\n dropzoneParents[n - 1],\n dropzoneParents[n],\n deepestZoneParents[n],\n ]\n\n child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestZone = dropzone\n index = i\n deepestZoneParents = []\n\n break\n }\n else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n\n return index\n}\n\nexport function matchesUpTo (element: Element, selector: string, limit: Node) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true\n }\n\n element = parentNode(element)\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement (element) {\n return (element instanceof domObjects.SVGElementInstance\n ? element.correspondingUseElement\n : element)\n}\n\nexport function getScrollXY (relevantWindow) {\n relevantWindow = relevantWindow || win.window\n return {\n x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop,\n }\n}\n\nexport function getElementClientRect (element) {\n const clientRect = (element instanceof domObjects.SVGElement\n ? element.getBoundingClientRect()\n : element.getClientRects()[0])\n\n return clientRect && {\n left : clientRect.left,\n right : clientRect.right,\n top : clientRect.top,\n bottom: clientRect.bottom,\n width : clientRect.width || clientRect.right - clientRect.left,\n height: clientRect.height || clientRect.bottom - clientRect.top,\n }\n}\n\nexport function getElementRect (element) {\n const clientRect = getElementClientRect(element)\n\n if (!browser.isIOS7 && clientRect) {\n const scroll = getScrollXY(win.getWindow(element))\n\n clientRect.left += scroll.x\n clientRect.right += scroll.x\n clientRect.top += scroll.y\n clientRect.bottom += scroll.y\n }\n\n return clientRect\n}\n\nexport function getPath (node) {\n const path = []\n\n while (node) {\n path.push(node)\n node = parentNode(node)\n }\n\n return path\n}\n\nexport function trySelector (value) {\n if (!is.string(value)) { return false }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n","import * as arr from './arr'\nimport * as is from './is'\n\nexport default function clone (source: T): Partial {\n const dest = {} as Partial\n\n for (const prop in source) {\n const value = source[prop]\n\n if (is.plainObject(value)) {\n dest[prop] = clone(value) as any\n }\n else if (is.array(value)) {\n dest[prop] = arr.from(value)\n }\n else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n","export interface PointerExtend {\n webkit: RegExp\n [prefix: string]: RegExp\n}\n\nfunction pointerExtend (dest, source) {\n for (const prop in source) {\n const prefixedPropREs = pointerExtend.prefixedPropREs\n let deprecated = false\n\n // skip deprecated prefixed properties\n for (const vendor in prefixedPropREs) {\n if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n deprecated = true\n break\n }\n }\n\n if (!deprecated && typeof source[prop] !== 'function') {\n dest[prop] = source[prop]\n }\n }\n return dest\n}\n\npointerExtend.prefixedPropREs = {\n webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n}\n\nexport default pointerExtend\n","export default (x, y) => Math.sqrt(x * x + y * y)\n","import browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport * as is from './is'\nimport pointerExtend from './pointerExtend'\n\nconst pointerUtils = {\n copyCoords (dest, src) {\n dest.page = dest.page || {}\n dest.page.x = src.page.x\n dest.page.y = src.page.y\n\n dest.client = dest.client || {}\n dest.client.x = src.client.x\n dest.client.y = src.client.y\n\n dest.timeStamp = src.timeStamp\n },\n\n setCoordDeltas (targetObj, prev, cur) {\n targetObj.page.x = cur.page.x - prev.page.x\n targetObj.page.y = cur.page.y - prev.page.y\n targetObj.client.x = cur.client.x - prev.client.x\n targetObj.client.y = cur.client.y - prev.client.y\n targetObj.timeStamp = cur.timeStamp - prev.timeStamp\n },\n\n setCoordVelocity (targetObj, delta) {\n const dt = Math.max(delta.timeStamp / 1000, 0.001)\n\n targetObj.page.x = delta.page.x / dt\n targetObj.page.y = delta.page.y / dt\n targetObj.client.x = delta.client.x / dt\n targetObj.client.y = delta.client.y / dt\n targetObj.timeStamp = dt\n },\n\n isNativePointer (pointer) {\n return (pointer instanceof dom.Event || pointer instanceof dom.Touch)\n },\n\n // Get specified X/Y coords for mouse or event.touches[0]\n getXY (type, pointer, xy) {\n xy = xy || {}\n type = type || 'page'\n\n xy.x = pointer[type + 'X']\n xy.y = pointer[type + 'Y']\n\n return xy\n },\n\n getPageXY (pointer: Interact.PointerType | Interact.InteractEvent, page?: Interact.Point) {\n page = page || { x: 0, y: 0 }\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n pointerUtils.getXY('screen', pointer, page)\n\n page.x += window.scrollX\n page.y += window.scrollY\n }\n else {\n pointerUtils.getXY('page', pointer, page)\n }\n\n return page\n },\n\n getClientXY (pointer, client) {\n client = client || {}\n\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n pointerUtils.getXY('screen', pointer, client)\n }\n else {\n pointerUtils.getXY('client', pointer, client)\n }\n\n return client\n },\n\n getPointerId (pointer) {\n return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier\n },\n\n setCoords (targetObj, pointers: any[], timeStamp: number) {\n const pointer = (pointers.length > 1\n ? pointerUtils.pointerAverage(pointers)\n : pointers[0])\n\n const tmpXY = {} as { x: number, y: number }\n\n pointerUtils.getPageXY(pointer, tmpXY)\n targetObj.page.x = tmpXY.x\n targetObj.page.y = tmpXY.y\n\n pointerUtils.getClientXY(pointer, tmpXY)\n targetObj.client.x = tmpXY.x\n targetObj.client.y = tmpXY.y\n\n targetObj.timeStamp = timeStamp\n },\n\n pointerExtend,\n\n getTouchPair (event) {\n const touches = []\n\n // array of touches is supplied\n if (is.array(event)) {\n touches[0] = event[0]\n touches[1] = event[1]\n }\n // an event\n else {\n if (event.type === 'touchend') {\n if (event.touches.length === 1) {\n touches[0] = event.touches[0]\n touches[1] = event.changedTouches[0]\n }\n else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\n }\n else {\n touches[0] = event.touches[0]\n touches[1] = event.touches[1]\n }\n }\n\n return touches\n },\n\n pointerAverage (pointers: PointerEvent[] | Event[]) {\n const average = {\n pageX : 0,\n pageY : 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop] += pointer[prop]\n }\n }\n for (const prop in average) {\n average[prop] /= pointers.length\n }\n\n return average\n },\n\n touchBBox (event: Event | Array<(Interact.PointerType) | TouchEvent>) {\n if (!(event as any).length &&\n !((event as TouchEvent).touches &&\n (event as TouchEvent).touches.length > 1)) {\n return null\n }\n\n const touches = pointerUtils.getTouchPair(event)\n const minX = Math.min(touches[0].pageX, touches[1].pageX)\n const minY = Math.min(touches[0].pageY, touches[1].pageY)\n const maxX = Math.max(touches[0].pageX, touches[1].pageX)\n const maxY = Math.max(touches[0].pageY, touches[1].pageY)\n\n return {\n x: minX,\n y: minY,\n left: minX,\n top: minY,\n right: maxX,\n bottom: maxY,\n width: maxX - minX,\n height: maxY - minY,\n }\n },\n\n touchDistance (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.getTouchPair(event)\n\n const dx = touches[0][sourceX] - touches[1][sourceX]\n const dy = touches[0][sourceY] - touches[1][sourceY]\n\n return hypot(dx, dy)\n },\n\n touchAngle (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.getTouchPair(event)\n const dx = touches[1][sourceX] - touches[0][sourceX]\n const dy = touches[1][sourceY] - touches[0][sourceY]\n const angle = 180 * Math.atan2(dy, dx) / Math.PI\n\n return angle\n },\n\n getPointerType (pointer) {\n return is.string(pointer.pointerType)\n ? pointer.pointerType\n : is.number(pointer.pointerType)\n ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType]\n // if the PointerEvent API isn't available, then the \"pointer\" must\n // be either a MouseEvent, TouchEvent, or Touch object\n : /touch/.test(pointer.type) || pointer instanceof dom.Touch\n ? 'touch'\n : 'mouse'\n },\n\n // [ event.target, event.currentTarget ]\n getEventTargets (event) {\n const path = is.func(event.composedPath) ? event.composedPath() : event.path\n\n return [\n domUtils.getActualElement(path ? path[0] : event.target),\n domUtils.getActualElement(event.currentTarget),\n ]\n },\n\n newCoords () {\n return {\n page : { x: 0, y: 0 },\n client : { x: 0, y: 0 },\n timeStamp: 0,\n }\n },\n\n coordsToEvent (coords: MockCoords) {\n const event = {\n coords,\n get page () { return this.coords.page },\n get client () { return this.coords.client },\n get timeStamp () { return this.coords.timeStamp },\n get pageX () { return this.coords.page.x },\n get pageY () { return this.coords.page.y },\n get clientX () { return this.coords.client.x },\n get clientY () { return this.coords.client.y },\n get pointerId () { return this.coords.pointerId },\n get target () { return this.coords.target },\n get type () { return this.coords.type },\n get pointerType () { return this.coords.pointerType },\n }\n\n return event as typeof event & Interact.PointerType & Interact.PointerEventType\n },\n}\n\nexport default pointerUtils\n\nexport interface MockCoords {\n page: Interact.Point\n client: Interact.Point\n timeStamp?: number\n pointerId?: any\n target?: any\n type?: string\n pointerType?: string\n}\n","import { contains } from './arr'\nimport * as domUtils from './domUtils'\nimport * as is from './is'\nimport pExtend from './pointerExtend'\nimport 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 (!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 (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 (selector, context, type, listener?, optionalArg?: any) {\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 = 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) {\n return is.object(param) ? param : { capture: param }\n}\n\nexport class FakeEvent implements Partial {\n currentTarget: EventTarget\n\n constructor (public originalEvent) {\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","export default function extend> (dest: U, source: T) {\n for (const prop in source) {\n (dest as unknown as T)[prop] = source[prop]\n }\n return dest as T & U\n}\n","import { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport * as is from './is'\n\nexport function getStringOptionResult (value, interactable, element) {\n if (!is.string(value)) {\n return null\n }\n\n if (value === 'parent') {\n value = parentNode(element)\n }\n else if (value === 'self') {\n value = interactable.getRect(element)\n }\n else {\n value = closest(element, value)\n }\n\n return value\n}\n\nexport function resolveRectLike (value, interactable?, element?, functionArgs?) {\n value = getStringOptionResult(value, interactable, element) || value\n\n if (is.func(value)) {\n value = value.apply(null, functionArgs)\n }\n\n if (is.element(value)) {\n value = getElementRect(value)\n }\n\n return value\n}\n\nexport function rectToXY (rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n}\n\nexport function xywhToTlbr (rect) {\n if (rect && !('left' in rect && 'top' in rect)) {\n rect = extend({}, rect)\n\n rect.left = rect.x || 0\n rect.top = rect.y || 0\n rect.right = rect.right || (rect.left + rect.width)\n rect.bottom = rect.bottom || (rect.top + rect.height)\n }\n\n return rect\n}\n\nexport function tlbrToXywh (rect) {\n if (rect && !('x' in rect && 'y' in rect)) {\n rect = extend({}, rect)\n\n rect.x = rect.left || 0\n rect.y = rect.top || 0\n rect.width = rect.width || (rect.right - rect.x)\n rect.height = rect.height || (rect.bottom - rect.y)\n }\n\n return rect\n}\n\nexport default {\n getStringOptionResult,\n resolveRectLike,\n rectToXY,\n xywhToTlbr,\n tlbrToXywh,\n}\n","import { rectToXY, resolveRectLike } from './rect'\n\nexport default function (target, element, action?) {\n const actionOptions = target.options[action]\n const actionOrigin = actionOptions && actionOptions.origin\n const origin = actionOrigin || target.options.origin\n\n const originRect = resolveRectLike(origin, target, element, [target && element])\n\n return rectToXY(originRect) || { x: 0, y: 0 }\n}\n","import extend from './extend'\nimport * as is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Interact.Listener[]\n}\n\nexport default function normalize (\n type: Interact.EventTypes,\n listeners?: Interact.ListenersArg | Interact.ListenersArg[],\n result?: NormalizedListeners,\n): NormalizedListeners {\n result = result || {}\n\n if (is.string(type) && type.search(' ') !== -1) {\n type = split(type)\n }\n\n if (is.array(type)) {\n return type.reduce(\n (acc, t) => extend(acc, normalize(t, listeners, result)),\n result\n )\n }\n\n // ({ type: fn }) -> ('', { type: fn })\n if (is.object(type)) {\n listeners = type\n type = ''\n }\n\n if (is.func(listeners)) {\n result[type] = result[type] || []\n result[type].push(listeners)\n }\n else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result)\n }\n }\n else if (is.object(listeners)) {\n for (const prefix in listeners) {\n const combinedTypes = split(prefix).map((p) => `${type}${p}`)\n\n normalize(combinedTypes, listeners[prefix], result)\n }\n }\n\n return result as NormalizedListeners\n}\n\nfunction split (type: string) {\n return type.trim().split(/ +/)\n}\n","let lastTime = 0\nlet request\nlet cancel\n\nfunction init (window) {\n request = window.requestAnimationFrame\n cancel = window.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = window[`${vendor}RequestAnimationFrame`]\n cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`]\n }\n }\n\n if (!request) {\n request = (callback) => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n // eslint-disable-next-line standard/no-callback-literal\n const token = setTimeout(() => { callback(currTime + timeToCall) },\n timeToCall)\n\n lastTime = currTime + timeToCall\n return token\n }\n\n cancel = (token) => clearTimeout(token)\n }\n}\n\nexport default {\n request: (callback) => request(callback),\n cancel: (token) => cancel(token),\n init,\n}\n","export type SignalListener = (signalArg: PartialSignalArg, sinalName?: string) => (void | boolean)\n\nexport interface SignalArg {\n interaction: Interact.Interaction\n Interactable: Interact.Interactable\n iEvent: Interact.InteractEvent\n element: Interact.EventTarget\n coords: Interact.Point\n event: Interact.PointerEventType\n phase: Interact.EventPhase\n [index: string]: any\n}\n\nexport type PartialSignalArg = Partial\n\nclass Signals {\n listeners: {\n [signalName: string]: SignalListener[],\n } = {}\n\n on (name: string, listener: SignalListener) {\n if (!this.listeners[name]) {\n this.listeners[name] = [listener]\n return\n }\n\n this.listeners[name].push(listener)\n }\n\n off (name: string, listener: SignalListener) {\n if (!this.listeners[name]) { return }\n\n const index = this.listeners[name].indexOf(listener)\n\n if (index !== -1) {\n this.listeners[name].splice(index, 1)\n }\n }\n\n fire (name: string, arg: Partial): void | false {\n const targetListeners = this.listeners[name]\n\n if (!targetListeners) { return }\n\n for (const listener of targetListeners) {\n if (listener(arg, name) === false) {\n return false\n }\n }\n }\n}\n\nexport default Signals\n","import * as arr from './arr'\nimport * as dom from './domUtils'\nimport * as is from './is'\nimport win from './window'\n\nexport function warnOnce (this: T, method: (...args: any) => any, message: string) {\n let warned = false\n\n // eslint-disable-next-line no-shadow\n return function (this: T) {\n if (!warned) {\n (win as any).window.console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nexport function _getQBezierValue (t: number, p1: number, p2: number, p3: number) {\n const iT = 1 - t\n return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3\n}\n\nexport function getQuadraticCurvePoint (\n startX: number, startY: number, cpX: number, cpY: number, endX: number, endY: number, position: number) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nexport function easeOutQuad (t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport function copyAction (dest: Interact.ActionProps, src: Interact.ActionProps) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport { default as browser } from './browser'\nexport { default as clone } from './clone'\nexport { default as events } from './events'\nexport { default as extend } from './extend'\nexport { default as getOriginXY } from './getOriginXY'\nexport { default as hypot } from './hypot'\nexport { default as normalizeListeners } from './normalizeListeners'\nexport { default as pointer } from './pointerUtils'\nexport { default as raf } from './raf'\nexport { default as rect } from './rect'\nexport { default as Signals } from './Signals'\nexport { win, arr, dom, is }\n","// tslint:disable no-empty-interface\n\nexport interface Defaults {\n base: BaseDefaults\n perAction: PerActionDefaults\n actions: ActionDefaults\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ActionDefaults {\n}\n\nexport interface BaseDefaults {\n preventDefault?: 'auto' | 'never' | string\n deltaSource?: 'page' | 'client'\n context?: Window | Document | Element\n [key: string]: any\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Interact.Point | string | Element\n listeners?: Interact.Listeners\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n}\n\nexport type Options = Partial & Partial & {\n [P in keyof ActionDefaults]?: Partial\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, Interact.OrBoolean {}\n\nexport const defaults: Defaults = {\n base: {\n preventDefault: 'auto',\n deltaSource: 'page',\n },\n\n perAction: {\n enabled: false,\n origin: { x: 0, y: 0 },\n },\n\n actions: {} as ActionDefaults,\n}\n\nexport default defaults\n","import * as arr from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\nimport normalize, { NormalizedListeners } from '@interactjs/utils/normalizeListeners'\nimport { EventPhase, InteractEvent } from './InteractEvent'\nimport { ActionName } from './scope'\n\nfunction fireUntilImmediateStopped<\nT extends ActionName,\nP extends EventPhase,\n> (event: InteractEvent, listeners: Interact.Listener[]) {\n for (const listener of listeners) {\n if (event.immediatePropagationStopped) { break }\n\n listener(event)\n }\n}\n\nclass Eventable {\n options: any\n types: NormalizedListeners = {}\n propagationStopped = false\n immediatePropagationStopped = false\n global: any\n\n constructor (options?: { [index: string]: any }) {\n this.options = extend({}, options || {})\n }\n\n fire (event: any) {\n let listeners\n const global = this.global\n\n // Interactable#on() listeners\n // tslint:disable no-conditional-assignment\n if ((listeners = this.types[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n\n // interact.on() listeners\n if (!event.propagationStopped && global && (listeners = global[event.type])) {\n fireUntilImmediateStopped(event, listeners)\n }\n }\n\n on (type: string, listener: Interact.ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n this.types[type] = arr.merge(this.types[type] || [], listeners[type])\n }\n }\n\n off (type: string, listener: Interact.ListenersArg) {\n const listeners = normalize(type, listener)\n\n for (type in listeners) {\n const eventList = this.types[type]\n\n if (!eventList || !eventList.length) { continue }\n\n for (const subListener of listeners[type]) {\n const index = eventList.indexOf(subListener)\n\n if (index !== -1) {\n eventList.splice(index, 1)\n }\n }\n }\n }\n}\n\nexport default Eventable\n","import * as arr from '@interactjs/utils/arr'\nimport browser from '@interactjs/utils/browser'\nimport clone from '@interactjs/utils/clone'\nimport { getElementRect, matchesUpTo, nodeContains, trySelector } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport normalizeListeners from '@interactjs/utils/normalizeListeners'\nimport { getWindow } from '@interactjs/utils/window'\nimport { ActionDefaults, Defaults, Options } from './defaultOptions'\nimport Eventable from './Eventable'\nimport { Actions } from './scope'\n\ntype IgnoreValue = string | Element | boolean\n\n/** */\nexport class Interactable implements Partial {\n protected get _defaults (): Defaults {\n return {\n base: {},\n perAction: {},\n actions: {} as ActionDefaults,\n }\n }\n\n readonly options!: Required\n readonly _actions: Actions\n readonly target: Interact.Target\n readonly events = new Eventable()\n readonly _context: Document | Element\n readonly _win: Window\n readonly _doc: Document\n\n /** */\n constructor (target: Interact.Target, options: any, defaultContext: Document | Element) {\n this._actions = options.actions\n this.target = target\n this._context = options.context || defaultContext\n this._win = getWindow(trySelector(target) ? this._context : target)\n this._doc = this._win.document\n\n this.set(options)\n }\n\n setOnEvents (actionName: string, phases: NonNullable) {\n if (is.func(phases.onstart)) { this.on(`${actionName}start`, phases.onstart) }\n if (is.func(phases.onmove)) { this.on(`${actionName}move`, phases.onmove) }\n if (is.func(phases.onend)) { this.on(`${actionName}end`, phases.onend) }\n if (is.func(phases.oninertiastart)) { this.on(`${actionName}inertiastart`, phases.oninertiastart) }\n\n return this\n }\n\n updatePerActionListeners (actionName, prev, cur) {\n if (is.array(prev) || is.object(prev)) {\n this.off(actionName, prev)\n }\n\n if (is.array(cur) || is.object(cur)) {\n this.on(actionName, cur)\n }\n }\n\n setPerAction (actionName, options: Interact.OrBoolean) {\n const defaults = this._defaults\n\n // for all the default per-action options\n for (const optionName in options) {\n const actionOptions = this.options[actionName]\n const optionValue = options[optionName]\n const isArray = is.array(optionValue)\n\n // remove old event listeners and add new ones\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue)\n }\n\n // if the option value is an array\n if (isArray) {\n actionOptions[optionName] = arr.from(optionValue)\n }\n // if the option value is an object\n else if (!isArray && is.plainObject(optionValue)) {\n // copy the object\n actionOptions[optionName] = extend(\n actionOptions[optionName] || {},\n clone(optionValue))\n\n // set anabled field to true if it exists in the defaults\n if (is.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n actionOptions[optionName].enabled = optionValue.enabled !== false\n }\n }\n // if the option value is a boolean and the default is an object\n else if (is.bool(optionValue) && is.object(defaults.perAction[optionName])) {\n actionOptions[optionName].enabled = optionValue\n }\n // if it's anything else, do a plain assignment\n else {\n actionOptions[optionName] = optionValue\n }\n }\n }\n\n /**\n * The default function to get an Interactables bounding rect. Can be\n * overridden using {@link Interactable.rectChecker}.\n *\n * @param {Element} [element] The element to measure.\n * @return {object} The object's bounding rectangle.\n */\n getRect (element: Element) {\n element = element || (is.element(this.target)\n ? this.target\n : null)\n\n if (is.string(this.target)) {\n element = element || this._context.querySelector(this.target)\n }\n\n return getElementRect(element)\n }\n\n /**\n * Returns or sets the function used to calculate the interactable's\n * element's rectangle\n *\n * @param {function} [checker] A function which returns this Interactable's\n * bounding rectangle. See {@link Interactable.getRect}\n * @return {function | object} The checker function or this Interactable\n */\n rectChecker (checker: (element: Element) => any) {\n if (is.func(checker)) {\n this.getRect = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.getRect\n\n return this\n }\n\n return this.getRect\n }\n\n _backCompatOption (optionName, newValue) {\n if (trySelector(newValue) || is.object(newValue)) {\n this.options[optionName] = newValue\n\n for (const action of this._actions.names) {\n this.options[action][optionName] = newValue\n }\n\n return this\n }\n\n return this.options[optionName]\n }\n\n /**\n * Gets or sets the origin of the Interactable's element. The x and y\n * of the origin will be subtracted from action event coordinates.\n *\n * @param {Element | object | string} [origin] An HTML or SVG Element whose\n * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n * or any CSS selector\n *\n * @return {object} The current origin or this Interactable\n */\n origin (newValue) {\n return this._backCompatOption('origin', newValue)\n }\n\n /**\n * Returns or sets the mouse coordinate types used to calculate the\n * movement of the pointer.\n *\n * @param {string} [newValue] Use 'client' if you will be scrolling while\n * interacting; Use 'page' if you want autoScroll to work\n * @return {string | object} The current deltaSource or this Interactable\n */\n deltaSource (newValue) {\n if (newValue === 'page' || newValue === 'client') {\n this.options.deltaSource = newValue\n\n return this\n }\n\n return this.options.deltaSource\n }\n\n /**\n * Gets the selector context Node of the Interactable. The default is\n * `window.document`.\n *\n * @return {Node} The context Node of this Interactable\n */\n context () {\n return this._context\n }\n\n inContext (element) {\n return (this._context === element.ownerDocument ||\n nodeContains(this._context, element))\n }\n\n testIgnoreAllow (this: Interactable, options: { ignoreFrom: IgnoreValue, allowFrom: IgnoreValue }, targetNode: Node, eventTarget: Element) {\n return (!this.testIgnore(options.ignoreFrom, targetNode, eventTarget) &&\n this.testAllow(options.allowFrom, targetNode, eventTarget))\n }\n\n testAllow (this: Interactable, allowFrom: IgnoreValue, targetNode: Node, element: Element) {\n if (!allowFrom) { return true }\n\n if (!is.element(element)) { return false }\n\n if (is.string(allowFrom)) {\n return matchesUpTo(element, allowFrom, targetNode)\n }\n else if (is.element(allowFrom)) {\n return nodeContains(allowFrom, element)\n }\n\n return false\n }\n\n testIgnore (this: Interactable, ignoreFrom: IgnoreValue, targetNode: Node, element: Element) {\n if (!ignoreFrom || !is.element(element)) { return false }\n\n if (is.string(ignoreFrom)) {\n return matchesUpTo(element, ignoreFrom, targetNode)\n }\n else if (is.element(ignoreFrom)) {\n return nodeContains(ignoreFrom, element)\n }\n\n return false\n }\n\n /**\n * Calls listeners for the given InteractEvent type bound globally\n * and directly to this Interactable\n *\n * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n * Interactable\n * @return {Interactable} this Interactable\n */\n fire (iEvent) {\n this.events.fire(iEvent)\n\n return this\n }\n\n _onOff (method: 'on' | 'off', typeArg: Interact.EventTypes, listenerArg?: Interact.ListenersArg | null, options?: any) {\n if (is.object(typeArg) && !is.array(typeArg)) {\n options = listenerArg\n listenerArg = null\n }\n\n const addRemove = method === 'on' ? 'add' : 'remove'\n const listeners = normalizeListeners(typeArg, listenerArg)\n\n for (let type in listeners) {\n if (type === 'wheel') { type = browser.wheelEvent }\n\n for (const listener of listeners[type]) {\n // if it is an action event type\n if (arr.contains(this._actions.eventTypes, type)) {\n this.events[method](type, listener)\n }\n // delegated event\n else if (is.string(this.target)) {\n events[`${addRemove}Delegate`](this.target, this._context, type, listener, options)\n }\n // remove listener from this Interatable's element\n else {\n (events[addRemove] as typeof events.remove)(this.target, type, listener, options)\n }\n }\n }\n\n return this\n }\n\n /**\n * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n *\n * @param {string | array | object} types The types of events to listen\n * for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * addEventListener\n * @return {Interactable} This Interactable\n */\n on (types: Interact.EventTypes, listener?: Interact.ListenersArg, options?: any) {\n return this._onOff('on', types, listener, options)\n }\n\n /**\n * Removes an InteractEvent, pointerEvent or DOM event listener.\n *\n * @param {string | array | object} types The types of events that were\n * listened for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * removeEventListener\n * @return {Interactable} This Interactable\n */\n off (types: string | string[] | Interact.EventTypes, listener?: Interact.ListenersArg, options?: any) {\n return this._onOff('off', types, listener, options)\n }\n\n /**\n * Reset the options of this Interactable\n *\n * @param {object} options The new settings to apply\n * @return {object} This Interactable\n */\n set (options: Interact.OptionsArg) {\n const defaults = this._defaults\n\n if (!is.object(options)) {\n options = {}\n }\n\n (this.options as Required) = clone(defaults.base) as Required\n\n for (const actionName in this._actions.methodDict) {\n const methodName = this._actions.methodDict[actionName]\n\n this.options[actionName] = {}\n this.setPerAction(actionName, extend(extend({}, defaults.perAction), defaults.actions[actionName]))\n\n this[methodName](options[actionName])\n }\n\n for (const setting in options) {\n if (is.func(this[setting])) {\n this[setting](options[setting])\n }\n }\n\n return this\n }\n\n /**\n * Remove this interactable from the list of interactables and remove it's\n * action capabilities and event listeners\n *\n * @return {interact}\n */\n unset () {\n events.remove(this.target as Node, 'all')\n\n if (is.string(this.target)) {\n // remove delegated events\n for (const type in events.delegatedEvents) {\n const delegated = events.delegatedEvents[type]\n\n if (delegated.selectors[0] === this.target &&\n delegated.contexts[0] === this._context) {\n delegated.selectors.splice(0, 1)\n delegated.contexts.splice(0, 1)\n delegated.listeners.splice(0, 1)\n\n // remove the arrays if they are empty\n if (!delegated.selectors.length) {\n delegated[type] = null\n }\n }\n\n events.remove(this._context, type, events.delegateListener)\n events.remove(this._context, type, events.delegateUseCapture, true)\n }\n }\n else {\n events.remove(this.target as Node, 'all')\n }\n }\n}\n\nexport default Interactable\n","import * as arr from '@interactjs/utils/arr'\nimport * as domUtils from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport Signals from '@interactjs/utils/Signals'\n\nexport default class InteractableSet {\n signals = new Signals()\n\n // all set interactables\n list: Interact.Interactable[] = []\n\n selectorMap: {\n [selector: string]: Array<{ context: Document | Element, interactable: Interact.Interactable }>\n } = {}\n\n constructor (protected scope: Interact.Scope) {\n this.signals.on('unset', ({ interactable }) => {\n const { target, _context: context } = interactable\n const targetMappings = is.string(target)\n ? this.selectorMap[target]\n : target[this.scope.id]\n\n const targetIndex = targetMappings.findIndex((m) => m.context === context)\n if (targetMappings[targetIndex]) {\n // Destroying mappingInfo's context and interactable\n targetMappings[targetIndex].context = null\n targetMappings[targetIndex].interactable = null\n }\n targetMappings.splice(targetIndex, 1)\n })\n }\n\n new (target: Interact.Target, options?: any): Interact.Interactable {\n options = extend(options || {}, {\n actions: this.scope.actions,\n })\n const interactable = new this.scope.Interactable(target, options, this.scope.document)\n const mappingInfo = { context: interactable._context, interactable }\n\n this.scope.addDocument(interactable._doc)\n this.list.push(interactable)\n\n if (is.string(target)) {\n if (!this.selectorMap[target]) { this.selectorMap[target] = [] }\n this.selectorMap[target].push(mappingInfo)\n } else {\n if (!interactable.target[this.scope.id]) {\n Object.defineProperty(target, this.scope.id, {\n value: [],\n configurable: true,\n })\n }\n\n target[this.scope.id].push(mappingInfo)\n }\n\n this.signals.fire('new', {\n target,\n options,\n interactable,\n win: this.scope._win,\n })\n\n return interactable\n }\n\n get (target: Interact.Target, options) {\n const context = (options && options.context) || this.scope.document\n const isSelector = is.string(target)\n const targetMappings = isSelector\n ? this.selectorMap[target as string]\n : target[this.scope.id]\n\n if (!targetMappings) { return null }\n\n const found = arr.find(\n targetMappings,\n (m) => m.context === context &&\n (isSelector || m.interactable.inContext(target)))\n\n return found && found.interactable\n }\n\n forEachMatch (node: Node, callback: (interactable: any) => any) {\n for (const interactable of this.list) {\n let ret\n\n if ((is.string(interactable.target)\n // target is a selector and the element matches\n ? (is.element(node) && domUtils.matchesSelector(node, interactable.target))\n // target is the element\n : node === interactable.target) &&\n // the element is in context\n (interactable.inContext(node))) {\n ret = callback(interactable)\n }\n\n if (ret !== undefined) {\n return ret\n }\n }\n }\n}\n","import Interactable from './Interactable'\nimport Interaction from './Interaction'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class BaseEvent {\n type: string\n target: EventTarget\n currentTarget: EventTarget\n interactable: Interactable\n _interaction: Interaction\n timeStamp: any\n immediatePropagationStopped = false\n propagationStopped = false\n\n get interaction () {\n return this._interaction._proxy\n }\n\n constructor (interaction) {\n this._interaction = interaction\n }\n\n preventDefault () {}\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n\nexport default BaseEvent\n","import extend from '@interactjs/utils/extend'\nimport getOriginXY from '@interactjs/utils/getOriginXY'\nimport hypot from '@interactjs/utils/hypot'\nimport BaseEvent from './BaseEvent'\nimport defaults from './defaultOptions'\nimport Interaction from './Interaction'\nimport { ActionName } from './scope'\n\nexport enum EventPhase {\n Start = 'start',\n Move = 'move',\n End = 'end',\n _NONE = '',\n}\n\nexport class InteractEvent<\n T extends ActionName = any,\n P extends EventPhase = EventPhase._NONE,\n> extends BaseEvent {\n target: Element\n currentTarget: Element\n relatedTarget: Element\n screenX?: number\n screenY?: number\n button: number\n buttons: number\n ctrlKey: boolean\n shiftKey: boolean\n altKey: boolean\n metaKey: boolean\n page: Interact.Point\n client: Interact.Point\n delta: Interact.Point\n rect: Interact.FullRect\n x0: number\n y0: number\n t0: number\n dt: number\n duration: number\n clientX0: number\n clientY0: number\n velocity: Interact.Point\n speed: number\n swipe: ReturnType['getSwipe']>\n timeStamp: any\n // drag\n dragEnter?: Element\n dragLeave?: Element\n // resize\n axes?: Interact.Point\n preEnd?: boolean\n\n /** */\n constructor (\n interaction: Interaction,\n event: Interact.PointerEventType,\n actionName: T,\n phase: P,\n element: Element,\n related?: Element,\n preEnd?: boolean,\n type?: string,\n ) {\n super(interaction)\n\n element = element || interaction.element\n\n const target = interaction.interactable\n // FIXME: add deltaSource to defaults\n const deltaSource = (((target && target.options) || defaults) as any).deltaSource as 'page' | 'client'\n const origin = getOriginXY(target, element, actionName)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const prevEvent = starting ? this : interaction.prevEvent\n const coords = starting\n ? interaction.coords.start\n : ending\n ? { page: prevEvent.page, client: prevEvent.client, timeStamp: interaction.coords.cur.timeStamp }\n : interaction.coords.cur\n\n this.page = extend({}, coords.page)\n this.client = extend({}, coords.client)\n this.rect = extend({}, interaction.rect)\n this.timeStamp = coords.timeStamp\n\n if (!ending) {\n this.page.x -= origin.x\n this.page.y -= origin.y\n\n this.client.x -= origin.x\n this.client.y -= origin.y\n }\n\n this.ctrlKey = event.ctrlKey\n this.altKey = event.altKey\n this.shiftKey = event.shiftKey\n this.metaKey = event.metaKey\n this.button = (event as MouseEvent).button\n this.buttons = (event as MouseEvent).buttons\n this.target = element\n this.currentTarget = element\n this.relatedTarget = related || null\n this.preEnd = preEnd\n this.type = type || (actionName + (phase || ''))\n this.interactable = target\n\n this.t0 = starting\n ? interaction.pointers[interaction.pointers.length - 1].downTime\n : prevEvent.t0\n\n this.x0 = interaction.coords.start.page.x - origin.x\n this.y0 = interaction.coords.start.page.y - origin.y\n this.clientX0 = interaction.coords.start.client.x - origin.x\n this.clientY0 = interaction.coords.start.client.y - origin.y\n\n if (starting || ending) {\n this.delta = { x: 0, y: 0 }\n }\n else {\n this.delta = {\n x: this[deltaSource].x - prevEvent[deltaSource].x,\n y: this[deltaSource].y - prevEvent[deltaSource].y,\n }\n }\n\n this.dt = interaction.coords.delta.timeStamp\n this.duration = this.timeStamp - this.t0\n\n // velocity and speed in pixels per second\n this.velocity = extend({}, interaction.coords.velocity[deltaSource])\n this.speed = hypot(this.velocity.x, this.velocity.y)\n\n this.swipe = (ending || phase === 'inertiastart') ? this.getSwipe() : null\n }\n\n get pageX () { return this.page.x }\n set pageX (value) { this.page.x = value }\n get pageY () { return this.page.y }\n set pageY (value) { this.page.y = value }\n\n get clientX () { return this.client.x }\n set clientX (value) { this.client.x = value }\n get clientY () { return this.client.y }\n set clientY (value) { this.client.y = value }\n\n get dx () { return this.delta.x }\n set dx (value) { this.delta.x = value }\n get dy () { return this.delta.y }\n set dy (value) { this.delta.y = value }\n\n get velocityX () { return this.velocity.x }\n set velocityX (value) { this.velocity.x = value }\n get velocityY () { return this.velocity.y }\n set velocityY (value) { this.velocity.y = value }\n\n getSwipe () {\n const interaction = this._interaction\n\n if (interaction.prevEvent.speed < 600 ||\n this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n return null\n }\n\n let angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI\n const overlap = 22.5\n\n if (angle < 0) {\n angle += 360\n }\n\n const left = 135 - overlap <= angle && angle < 225 + overlap\n const up = 225 - overlap <= angle && angle < 315 + overlap\n\n const right = !left && (315 - overlap <= angle || angle < 45 + overlap)\n const down = !up && 45 - overlap <= angle && angle < 135 + overlap\n\n return {\n up,\n down,\n left,\n right,\n angle,\n speed: interaction.prevEvent.speed,\n velocity: {\n x: interaction.prevEvent.velocityX,\n y: interaction.prevEvent.velocityY,\n },\n }\n }\n\n preventDefault () {}\n\n /**\n * Don't call listeners on the remaining targets\n */\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n\n /**\n * Don't call any other listeners (even on the current target)\n */\n stopPropagation () {\n this.propagationStopped = true\n }\n}\n\nexport default InteractEvent\n","export class PointerInfo {\n constructor (\n public id: number,\n public pointer: Interact.PointerType,\n public event: Interact.PointerEventType,\n public downTime: number,\n public downTarget: Node,\n ) {}\n}\n\nexport default PointerInfo\n","import * as dom from '@interactjs/utils/domUtils'\n\nexport interface SearchDetails {\n pointer: Interact.PointerType\n pointerId: number\n pointerType: string\n eventType: string\n eventTarget: Interact.EventTarget\n curEventTarget: Interact.EventTarget\n scope: Interact.Scope\n}\n\nconst finder = {\n methodOrder: [ 'simulationResume', 'mouseOrPen', 'hasPointer', 'idle' ],\n\n search (details) {\n for (const method of finder.methodOrder) {\n const interaction = finder[method](details)\n\n if (interaction) {\n return interaction\n }\n }\n },\n\n // try to resume simulation with a new pointer\n simulationResume ({ pointerType, eventType, eventTarget, scope }: SearchDetails) {\n if (!/down|start/i.test(eventType)) {\n return null\n }\n\n for (const interaction of scope.interactions.list) {\n let element = eventTarget\n\n if (interaction.simulation && interaction.simulation.allowResume &&\n (interaction.pointerType === pointerType)) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction\n }\n element = dom.parentNode(element)\n }\n }\n }\n\n return null\n },\n\n // if it's a mouse or pen interaction\n mouseOrPen ({ pointerId, pointerType, eventType, scope }: SearchDetails) {\n if (pointerType !== 'mouse' && pointerType !== 'pen') {\n return null\n }\n\n let firstNonActive\n\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType) {\n // if it's a down event, skip interactions with running simulations\n if (interaction.simulation && !hasPointerId(interaction, pointerId)) { continue }\n\n // if the interaction is active, return it immediately\n if (interaction.interacting()) {\n return interaction\n }\n // otherwise save it and look for another active interaction\n else if (!firstNonActive) {\n firstNonActive = interaction\n }\n }\n }\n\n // if no active mouse interaction was found use the first inactive mouse\n // interaction\n if (firstNonActive) {\n return firstNonActive\n }\n\n // find any mouse or pen interaction.\n // ignore the interaction if the eventType is a *down, and a simulation\n // is active\n for (const interaction of scope.interactions.list) {\n if (interaction.pointerType === pointerType && !(/down/i.test(eventType) && interaction.simulation)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get interaction that has this pointer\n hasPointer ({ pointerId, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n if (hasPointerId(interaction, pointerId)) {\n return interaction\n }\n }\n\n return null\n },\n\n // get first idle interaction with a matching pointerType\n idle ({ pointerType, scope }: SearchDetails) {\n for (const interaction of scope.interactions.list) {\n // if there's already a pointer held down\n if (interaction.pointers.length === 1) {\n const target = interaction.interactable\n // don't add this pointer if there is a target interactable and it\n // isn't gesturable\n if (target && !target.options.gesture.enabled) {\n continue\n }\n }\n // maximum of 2 pointers per interaction\n else if (interaction.pointers.length >= 2) {\n continue\n }\n\n if (!interaction.interacting() && (pointerType === interaction.pointerType)) {\n return interaction\n }\n }\n\n return null\n },\n}\n\nfunction hasPointerId (interaction: Interact.Interaction, pointerId: number) {\n return interaction.pointers.some(({ id }) => id === pointerId)\n}\n\nexport default finder\n","import { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as is from '@interactjs/utils/is'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n draggable: DraggableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drag: Interact.DraggableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Drag]?: typeof drag\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Drag = 'drag'\n }\n}\n\n(ActionName as any).Drag = 'drag'\n\nexport type DragEvent = Interact.InteractEvent\n\nexport type DraggableMethod = Interact.ActionMethod\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('before-action-move', beforeMove)\n interactions.signals.on('action-resume', beforeMove)\n\n // dragmove\n interactions.signals.on('action-move', move)\n\n Interactable.prototype.draggable = drag.draggable\n\n actions[ActionName.Drag] = drag\n actions.names.push(ActionName.Drag)\n arr.merge(actions.eventTypes, [\n 'dragstart',\n 'dragmove',\n 'draginertiastart',\n 'dragresume',\n 'dragend',\n ])\n actions.methodDict.drag = 'draggable'\n\n defaults.actions.drag = drag.defaults\n}\n\nfunction beforeMove ({ interaction }) {\n if (interaction.prepared.name !== 'drag') { return }\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x') {\n interaction.coords.cur.page.y = interaction.coords.start.page.y\n interaction.coords.cur.client.y = interaction.coords.start.client.y\n\n interaction.coords.velocity.client.y = 0\n interaction.coords.velocity.page.y = 0\n }\n else if (axis === 'y') {\n interaction.coords.cur.page.x = interaction.coords.start.page.x\n interaction.coords.cur.client.x = interaction.coords.start.client.x\n\n interaction.coords.velocity.client.x = 0\n interaction.coords.velocity.page.x = 0\n }\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'drag') { return }\n\n const axis = interaction.prepared.axis\n\n if (axis === 'x' || axis === 'y') {\n const opposite = axis === 'x' ? 'y' : 'x'\n\n iEvent.page[opposite] = interaction.coords.start.page[opposite]\n iEvent.client[opposite] = interaction.coords.start.client[opposite]\n iEvent.delta[opposite] = 0\n }\n}\n\n/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\nconst draggable: DraggableMethod = function draggable (this: Interact.Interactable, options?: Interact.DraggableOptions | boolean): any {\n if (is.object(options)) {\n this.options.drag.enabled = options.enabled !== false\n this.setPerAction('drag', options)\n this.setOnEvents('drag', options)\n\n if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n this.options.drag.lockAxis = options.lockAxis\n }\n if (/^(xy|x|y)$/.test(options.startAxis)) {\n this.options.drag.startAxis = options.startAxis\n }\n\n return this\n }\n\n if (is.bool(options)) {\n this.options.drag.enabled = options\n\n return this\n }\n\n return this.options.drag\n}\n\nconst drag: Interact.Plugin = {\n id: 'actions/drag',\n install,\n draggable,\n beforeMove,\n move,\n defaults: {\n startAxis : 'xy',\n lockAxis : 'xy',\n } as Interact.DropzoneOptions,\n\n checker (_pointer, _event, interactable) {\n const dragOptions = interactable.options.drag\n\n return dragOptions.enabled\n ? {\n name: 'drag',\n axis: (dragOptions.lockAxis === 'start'\n ? dragOptions.startAxis\n : dragOptions.lockAxis),\n }\n : null\n },\n\n getCursor () {\n return 'move'\n },\n}\n\nexport default drag\n","import BaseEvent from '@interactjs/core/BaseEvent'\nimport Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport Interaction from '@interactjs/core/Interaction'\nimport { ActionName } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\n\nclass DropEvent extends BaseEvent {\n target: Element\n dropzone: Interactable\n dragEvent: InteractEvent\n relatedTarget: Element\n draggable: Interactable\n timeStamp: number\n propagationStopped = false\n immediatePropagationStopped = false\n\n /**\n * Class of events fired on dropzones during drags with acceptable targets.\n */\n constructor (dropState: Interaction['dropState'], dragEvent: InteractEvent, type: string) {\n super(dragEvent._interaction)\n\n const { element, dropzone } = type === 'dragleave'\n ? dropState.prev\n : dropState.cur\n\n this.type = type\n this.target = element\n this.currentTarget = element\n this.dropzone = dropzone\n this.dragEvent = dragEvent\n this.relatedTarget = dragEvent.target\n this.draggable = dragEvent.interactable\n this.timeStamp = dragEvent.timeStamp\n }\n\n /**\n * If this is a `dropactivate` event, the dropzone element will be\n * deactivated.\n *\n * If this is a `dragmove` or `dragenter`, a `dragleave` will be fired on the\n * dropzone element and more.\n */\n reject () {\n const { dropState } = this._interaction\n\n if (\n (this.type !== 'dropactivate') && (\n !this.dropzone ||\n dropState.cur.dropzone !== this.dropzone ||\n dropState.cur.element !== this.target)) {\n return\n }\n\n dropState.prev.dropzone = this.dropzone\n dropState.prev.element = this.target\n\n dropState.rejected = true\n dropState.events.enter = null\n\n this.stopImmediatePropagation()\n\n if (this.type === 'dropactivate') {\n const activeDrops = dropState.activeDrops\n const index = arr.findIndex(activeDrops, ({ dropzone, element }) =>\n dropzone === this.dropzone && element === this.target)\n\n dropState.activeDrops = [\n ...activeDrops.slice(0, index),\n ...activeDrops.slice(index + 1),\n ]\n\n const deactivateEvent = new DropEvent(dropState, this.dragEvent, 'dropdeactivate')\n\n deactivateEvent.dropzone = this.dropzone\n deactivateEvent.target = this.target\n\n this.dropzone.fire(deactivateEvent)\n }\n else {\n this.dropzone.fire(new DropEvent(dropState, this.dragEvent, 'dragleave'))\n }\n }\n\n preventDefault () {}\n\n stopPropagation () {\n this.propagationStopped = true\n }\n\n stopImmediatePropagation () {\n this.immediatePropagationStopped = this.propagationStopped = true\n }\n}\n\nexport default DropEvent\n","import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport drag from '../drag'\nimport DropEvent from './DropEvent'\n\nexport interface DropzoneMethod {\n (options: Interact.DropzoneOptions | boolean): Interact.Interactable\n (): Interact.DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interactable,\n draggableElement: Element,\n dropElemen: Element,\n rect: any\n ) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n dropState?: {\n cur: {\n dropzone: Interactable, // the dropzone a drag target might be dropped into\n element: Element, // the element at the time of checking\n },\n prev: {\n dropzone: Interactable, // the dropzone that was recently dragged away from\n element: Element, // the element at the time of checking\n },\n rejected: boolean, // wheather the potential drop was rejected from a listener\n events: any, // the drop events related to the current drag event\n activeDrops: Array<{\n dropzone: Interactable\n element: Element\n rect: Interact.Rect\n }>,\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drop: Interact.DropzoneOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n dynamicDrop?: boolean\n }\n}\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n dynamicDrop: (newValue?: boolean) => boolean | Interact.interact\n }\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interact,\n /** @lends Interactable */\n Interactable, // eslint-disable-line no-shadow\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n interactions.signals.on('before-action-start', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n interaction.dropState = {\n cur: {\n dropzone: null,\n element: null,\n },\n prev: {\n dropzone: null,\n element: null,\n },\n rejected: null,\n events: null,\n activeDrops: null,\n }\n })\n\n interactions.signals.on('after-action-start', ({ interaction, event, iEvent: dragEvent }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n // reset active dropzones\n dropState.activeDrops = null\n dropState.events = null\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n dropState.events = getDropEvents(interaction, event, dragEvent)\n\n if (dropState.events.activate) {\n fireActivationEvents(dropState.activeDrops, dropState.events.activate)\n }\n })\n\n // FIXME proper signal types\n interactions.signals.on('action-move', (arg) => onEventCreated(arg as any, scope))\n interactions.signals.on('action-end', (arg) => onEventCreated(arg as any, scope))\n\n interactions.signals.on('after-action-move', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n interaction.dropState.events = {}\n })\n\n interactions.signals.on('after-action-end', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n if (dropState) {\n dropState.activeDrops = null\n dropState.events = null\n dropState.cur.dropzone = null\n dropState.cur.element = null\n dropState.prev.dropzone = null\n dropState.prev.element = null\n dropState.rejected = false\n }\n })\n\n /**\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n }\n\n /**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */\n Interactable.prototype.dropCheck = function (this: Interact.Interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\n return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect)\n }\n\n /**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\n interact.dynamicDrop = function (newValue?: boolean) {\n if (utils.is.bool(newValue)) {\n // if (dragging && scope.dynamicDrop !== newValue && !newValue) {\n // calcRects(dropzones)\n // }\n\n scope.dynamicDrop = newValue\n\n return interact\n }\n return scope.dynamicDrop\n }\n\n utils.arr.merge(actions.eventTypes, [\n 'dragenter',\n 'dragleave',\n 'dropactivate',\n 'dropdeactivate',\n 'dropmove',\n 'drop',\n ])\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }, draggableElement) {\n const drops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const dropzone of interactables.list) {\n if (!dropzone.options.drop.enabled) { continue }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if ((utils.is.element(accept) && accept !== draggableElement) ||\n (utils.is.string(accept) &&\n !utils.dom.matchesSelector(draggableElement, accept)) ||\n (utils.is.func(accept) && !accept({ dropzone, draggableElement }))) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = utils.is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : utils.is.array(dropzone.target) ? dropzone.target : [dropzone.target]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops, event) {\n // loop through all active dropzones and trigger event\n for (const { dropzone, element } of activeDrops) {\n event.dropzone = dropzone\n\n // set current element as event target\n event.target = element\n dropzone.fire(event)\n event.propagationStopped = event.immediatePropagationStopped = false\n }\n}\n\n// return a new array of possible drops. getActiveDrops should always be\n// called when a drag has just started or a drag event happens while\n// dynamicDrop is true\nfunction getActiveDrops (scope: Scope, dragElement: Element) {\n // get dropzones and their elements that could receive the draggable\n const activeDrops = collectDrops(scope, dragElement)\n\n for (const activeDrop of activeDrops) {\n activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element)\n }\n\n return activeDrops\n}\n\nfunction getDrop ({ dropState, interactable: draggable, element: dragElement }: Partial, dragEvent, pointerEvent) {\n const validDrops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const { dropzone, element: dropzoneElement, rect } of dropState.activeDrops) {\n validDrops.push(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null)\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = utils.dom.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interact.Interaction, _pointerEvent, dragEvent) {\n const { dropState } = interaction\n const dropEvents = {\n enter : null,\n leave : null,\n activate : null,\n deactivate: null,\n move : null,\n drop : null,\n }\n\n if (dragEvent.type === 'dragstart') {\n dropEvents.activate = new DropEvent(dropState, dragEvent, 'dropactivate')\n\n dropEvents.activate.target = null\n dropEvents.activate.dropzone = null\n }\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = new DropEvent(dropState, dragEvent, 'dropdeactivate')\n\n dropEvents.deactivate.target = null\n dropEvents.deactivate.dropzone = null\n }\n\n if (dropState.rejected) {\n return dropEvents\n }\n\n if (dropState.cur.element !== dropState.prev.element) {\n // if there was a previous dropzone, create a dragleave event\n if (dropState.prev.dropzone) {\n dropEvents.leave = new DropEvent(dropState, dragEvent, 'dragleave')\n\n dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element\n dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone\n }\n // if dropzone is not null, create a dragenter event\n if (dropState.cur.dropzone) {\n dropEvents.enter = new DropEvent(dropState, dragEvent, 'dragenter')\n\n dragEvent.dragEnter = dropState.cur.element\n dragEvent.dropzone = dropState.cur.dropzone\n }\n }\n\n if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {\n dropEvents.drop = new DropEvent(dropState, dragEvent, 'drop')\n\n dragEvent.dropzone = dropState.cur.dropzone\n dragEvent.relatedTarget = dropState.cur.element\n }\n if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {\n dropEvents.move = new DropEvent(dropState, dragEvent, 'dropmove')\n\n dropEvents.move.dragmove = dragEvent\n dragEvent.dropzone = dropState.cur.dropzone\n }\n\n return dropEvents\n}\n\nfunction fireDropEvents (interaction: Interact.Interaction, events) {\n const { dropState } = interaction\n const {\n activeDrops,\n cur,\n prev,\n } = dropState\n\n if (events.leave) { prev.dropzone.fire(events.leave) }\n if (events.move) { cur.dropzone.fire(events.move) }\n if (events.enter) { cur.dropzone.fire(events.enter) }\n if (events.drop) { cur.dropzone.fire(events.drop) }\n\n if (events.deactivate) {\n fireActivationEvents(activeDrops, events.deactivate)\n }\n\n dropState.prev.dropzone = cur.dropzone\n dropState.prev.element = cur.element\n}\n\nfunction onEventCreated ({ interaction, iEvent, event }: Interact.SignalArg, scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return }\n\n const { dropState } = interaction\n\n if (scope.dynamicDrop) {\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n }\n\n const dragEvent = iEvent\n const dropResult = getDrop(interaction, dragEvent, event)\n\n // update rejected status\n dropState.rejected = dropState.rejected &&\n !!dropResult &&\n dropResult.dropzone === dropState.cur.dropzone &&\n dropResult.element === dropState.cur.element\n\n dropState.cur.dropzone = dropResult && dropResult.dropzone\n dropState.cur.element = dropResult && dropResult.element\n\n dropState.events = getDropEvents(interaction, event, dragEvent)\n}\n\nfunction dropzoneMethod (interactable: Interact.Interactable): Interact.DropzoneOptions\nfunction dropzoneMethod (interactable: Interact.Interactable, options: Interact.DropzoneOptions | boolean)\nfunction dropzoneMethod (interactable: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n if (utils.is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = utils.normalizeListeners(options.listeners)\n // rename 'drop' to '' as it will be prefixed with 'drop'\n const corrected = Object.keys(normalized).reduce((acc, type) => {\n const correctedType = /^(enter|leave)/.test(type)\n ? `drag${type}`\n : /^(activate|deactivate|move)/.test(type)\n ? `drop${type}`\n : type\n\n acc[correctedType] = normalized[type]\n\n return acc\n }, {})\n\n interactable.off(interactable.options.drop.listeners)\n interactable.on(corrected)\n interactable.options.drop.listeners = corrected\n }\n\n if (utils.is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }\n if (utils.is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }\n if (utils.is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }\n if (utils.is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }\n if (utils.is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }\n if (utils.is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n }\n else if (utils.is.number(options.overlap)) {\n interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0)\n }\n if ('accept' in options) {\n interactable.options.drop.accept = options.accept\n }\n if ('checker' in options) {\n interactable.options.drop.checker = options.checker\n }\n\n return interactable\n }\n\n if (utils.is.bool(options)) {\n interactable.options.drop.enabled = options\n\n return interactable\n }\n\n return interactable.options.drop\n}\n\nfunction dropCheckMethod (\n interactable: Interact.Interactable,\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interact.Interactable,\n draggableElement: Element,\n dropElement: Element,\n rect: any\n) {\n let dropped = false\n\n // if the dropzone has no rect (eg. display: none)\n // call the custom dropChecker or just return false\n if (!(rect = rect || interactable.getRect(dropElement))) {\n return (interactable.options.drop.checker\n ? interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n : false)\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = utils.getOriginXY(draggable, draggableElement, 'drag')\n const page = utils.pointer.getPageXY(dragEvent)\n\n page.x += origin.x\n page.y += origin.y\n\n const horizontal = (page.x > rect.left) && (page.x < rect.right)\n const vertical = (page.y > rect.top) && (page.y < rect.bottom)\n\n dropped = horizontal && vertical\n }\n\n const dragRect = draggable.getRect(draggableElement)\n\n if (dragRect && dropOverlap === 'center') {\n const cx = dragRect.left + dragRect.width / 2\n const cy = dragRect.top + dragRect.height / 2\n\n dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom\n }\n\n if (dragRect && utils.is.number(dropOverlap)) {\n const overlapArea = (Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) *\n Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top)))\n\n const overlapRatio = overlapArea / (dragRect.width * dragRect.height)\n\n dropped = overlapRatio >= dropOverlap\n }\n\n if (interactable.options.drop.checker) {\n dropped = interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n }\n\n return dropped\n}\n\nconst drop = {\n id: 'actions/drop',\n install,\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept : null,\n overlap: 'pointer',\n } as Interact.DropzoneOptions,\n}\n\nexport default drop\n","import InteractEvent from '@interactjs/core/InteractEvent'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\n\nexport type GesturableMethod = Interact.ActionMethod\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n gesture?: {\n angle: number, // angle from first to second touch\n distance: number,\n scale: number, // gesture.distance / gesture.startDistance\n startAngle: number, // angle of line joining two touches\n startDistance: number, // distance between two touches of touchStart\n }\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n gesturable: GesturableMethod\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n gesture: Interact.GesturableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Gesture]?: typeof gesture\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Gesture = 'gesture'\n }\n}\n\n(ActionName as any).Gesture = 'gesture'\n\nexport interface GestureEvent extends Interact.InteractEvent {\n distance: number\n angle: number\n da: number // angle change\n scale: number // ratio of distance start to current event\n ds: number // scale change\n box: Interact.Rect // enclosing box of all points\n touches: Interact.PointerType[]\n}\n\nexport interface GestureSignalArg extends Interact.SignalArg {\n iEvent: GestureEvent\n interaction: Interact.Interaction\n event: Interact.PointerEventType | GestureEvent\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n Interactable,\n interactions,\n defaults,\n } = scope\n\n /**\n * ```js\n * interact(element).gesturable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // limit multiple gestures.\n * // See the explanation in {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isGestureable = interact(element).gesturable()\n * ```\n *\n * Gets or sets whether multitouch gestures can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on gesture events (makes the Interactable gesturable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of gesture events, or this Interactable\n */\n Interactable.prototype.gesturable = function (this: Interact.Interactable, options: Interact.GesturableOptions | boolean) {\n if (utils.is.object(options)) {\n this.options.gesture.enabled = options.enabled !== false\n this.setPerAction('gesture', options)\n this.setOnEvents('gesture', options)\n\n return this\n }\n\n if (utils.is.bool(options)) {\n this.options.gesture.enabled = options\n\n return this\n }\n\n return this.options.gesture as Interact.Options\n } as GesturableMethod\n\n interactions.signals.on('action-start', updateGestureProps)\n interactions.signals.on('action-move', updateGestureProps)\n interactions.signals.on('action-end', updateGestureProps)\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0,\n }\n })\n\n actions[ActionName.Gesture] = gesture\n actions.names.push(ActionName.Gesture)\n utils.arr.merge(actions.eventTypes, [\n 'gesturestart',\n 'gesturemove',\n 'gestureend',\n ])\n actions.methodDict.gesture = 'gesturable'\n\n defaults.actions.gesture = gesture.defaults\n}\n\nconst gesture = {\n id: 'actions/gesture',\n install,\n defaults: {\n },\n\n checker (_pointer, _event, _interactable, _element, interaction: { pointers: { length: number; }; }) {\n if (interaction.pointers.length >= 2) {\n return { name: 'gesture' }\n }\n\n return null\n },\n\n getCursor () {\n return ''\n },\n}\n\nfunction updateGestureProps ({ interaction, iEvent, event, phase }: GestureSignalArg) {\n if (interaction.prepared.name !== 'gesture') { return }\n\n const pointers = interaction.pointers.map((p) => p.pointer)\n const starting = phase === 'start'\n const ending = phase === 'end'\n const deltaSource = interaction.interactable.options.deltaSource\n\n iEvent.touches = [pointers[0], pointers[1]]\n\n if (starting) {\n iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = 1\n iEvent.ds = 0\n iEvent.angle = utils.pointer.touchAngle(pointers, deltaSource)\n iEvent.da = 0\n\n interaction.gesture.startDistance = iEvent.distance\n interaction.gesture.startAngle = iEvent.angle\n }\n else if (ending || event instanceof InteractEvent) {\n const prevEvent = interaction.prevEvent as GestureEvent\n\n iEvent.distance = prevEvent.distance\n iEvent.box = prevEvent.box\n iEvent.scale = prevEvent.scale\n iEvent.ds = 0\n iEvent.angle = prevEvent.angle\n iEvent.da = 0\n }\n else {\n iEvent.distance = utils.pointer.touchDistance(pointers, deltaSource)\n iEvent.box = utils.pointer.touchBBox(pointers)\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance\n iEvent.angle = utils.pointer.touchAngle(pointers, deltaSource)\n\n iEvent.ds = iEvent.scale - interaction.gesture.scale\n iEvent.da = iEvent.angle - interaction.gesture.angle\n }\n\n interaction.gesture.distance = iEvent.distance\n interaction.gesture.angle = iEvent.angle\n\n if (utils.is.number(iEvent.scale) &&\n iEvent.scale !== Infinity &&\n !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale\n }\n}\n\nexport default gesture\n","import { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as arr from '@interactjs/utils/arr'\nimport * as dom from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\n\nexport type EdgeName = 'top' | 'left' | 'bottom' | 'right'\n\nexport type ResizableMethod = Interact.ActionMethod\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n resizable: ResizableMethod\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n resizeAxes: 'x' | 'y' | 'xy'\n resizeRects: {\n start: Interact.FullRect\n current: Interact.Rect\n inverted: Interact.FullRect\n previous: Interact.FullRect\n delta: Interact.FullRect\n }\n resizeStartAspectRatio: number\n }\n\n interface ActionProps {\n _linkedEdges?: { [key: string]: boolean }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n resize: Interact.ResizableOptions\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Actions {\n [ActionName.Resize]?: typeof resize\n }\n\n // eslint-disable-next-line no-shadow\n enum ActionName {\n Resize = 'resize'\n }\n}\n\n(ActionName as any).Resize = 'resize'\n\nexport interface ResizeEvent extends Interact.InteractEvent {\n deltaRect?: Interact.FullRect\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n browser,\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n interactions,\n defaults,\n } = scope\n\n // Less Precision with touch input\n\n interactions.signals.on('new', (interaction) => {\n interaction.resizeAxes = 'xy'\n })\n\n interactions.signals.on('action-start', start)\n interactions.signals.on('action-move', move)\n\n interactions.signals.on('action-start', updateEventAxes)\n interactions.signals.on('action-move', updateEventAxes)\n\n resize.cursors = initCursors(browser)\n resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10\n\n /**\n * ```js\n * interact(element).resizable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * edges: {\n * top : true, // Use pointer coords to check for resize.\n * left : false, // Disable resizing from left edge.\n * bottom: '.resize-s',// Resize if pointer target matches selector\n * right : handleEl // Resize if pointer target is the given Element\n * },\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height are adjusted at a 1:1 ratio.\n * square: false,\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height maintain the aspect ratio they had when resizing started.\n * preserveAspectRatio: false,\n *\n * // a value of 'none' will limit the resize rect to a minimum of 0x0\n * // 'negate' will allow the rect to have negative width/height\n * // 'reposition' will keep the width/height positive by swapping\n * // the top and bottom edges and/or swapping the left and right edges\n * invert: 'none' || 'negate' || 'reposition'\n *\n * // limit multiple resizes.\n * // See the explanation in the {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isResizeable = interact(element).resizable()\n * ```\n *\n * Gets or sets whether resize actions can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on resize events (object makes the Interactable\n * resizable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of resize elements, or this Interactable\n */\n Interactable.prototype.resizable = function (this: Interact.Interactable, options: Interact.ResizableOptions | boolean) {\n return resizable(this, options, scope)\n } as ResizableMethod\n\n actions[ActionName.Resize] = resize\n actions.names.push(ActionName.Resize)\n arr.merge(actions.eventTypes, [\n 'resizestart',\n 'resizemove',\n 'resizeinertiastart',\n 'resizeresume',\n 'resizeend',\n ])\n actions.methodDict.resize = 'resizable'\n\n defaults.actions.resize = resize.defaults\n}\n\nconst resize = {\n id: 'actions/resize',\n install,\n defaults: {\n square: false,\n preserveAspectRatio: false,\n axis: 'xy',\n\n // use default margin\n margin: NaN,\n\n // object with props left, right, top, bottom which are\n // true/false values to resize when the pointer is over that edge,\n // CSS selectors to match the handles for each direction\n // or the Elements for each handle\n edges: null,\n\n // a value of 'none' will limit the resize rect to a minimum of 0x0\n // 'negate' will alow the rect to have negative width/height\n // 'reposition' will keep the width/height positive by swapping\n // the top and bottom edges and/or swapping the left and right edges\n invert: 'none',\n } as Interact.ResizableOptions,\n\n checker (\n _pointer: Interact.PointerType,\n _event: Interact.PointerEventType,\n interactable: Interact.Interactable,\n element: Element,\n interaction: Interaction,\n rect: Interact.Rect\n ) {\n if (!rect) { return null }\n\n const page = extend({}, interaction.coords.cur.page)\n const options = interactable.options\n\n if (options.resize.enabled) {\n const resizeOptions = options.resize\n const resizeEdges: { [edge: string]: boolean } = { left: false, right: false, top: false, bottom: false }\n\n // if using resize.edges\n if (is.object(resizeOptions.edges)) {\n for (const edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(edge,\n resizeOptions.edges[edge],\n page,\n interaction._latestPointer.eventTarget,\n element,\n rect,\n resizeOptions.margin || this.defaultMargin)\n }\n\n resizeEdges.left = resizeEdges.left && !resizeEdges.right\n resizeEdges.top = resizeEdges.top && !resizeEdges.bottom\n\n if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n return {\n name: 'resize',\n edges: resizeEdges,\n }\n }\n }\n else {\n const right = options.resize.axis !== 'y' && page.x > (rect.right - this.defaultMargin)\n const bottom = options.resize.axis !== 'x' && page.y > (rect.bottom - this.defaultMargin)\n\n if (right || bottom) {\n return {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : ''),\n }\n }\n }\n }\n\n return null\n },\n\n cursors: null as unknown as ReturnType,\n\n getCursor (action: ActionProps) {\n const cursors = resize.cursors as { [key: string]: string }\n if (action.axis) {\n return cursors[action.name + action.axis]\n }\n else if (action.edges) {\n let cursorKey = ''\n const edgeNames = ['top', 'bottom', 'left', 'right']\n\n for (let i = 0; i < 4; i++) {\n if (action.edges[edgeNames[i]]) {\n cursorKey += edgeNames[i]\n }\n }\n\n return cursors[cursorKey]\n }\n\n return null\n },\n\n defaultMargin: null as unknown as number,\n}\n\nfunction resizable (interactable: Interact.Interactable, options: Interact.OrBoolean | boolean, scope: Scope) {\n if (is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false\n interactable.setPerAction('resize', options)\n interactable.setOnEvents('resize', options)\n\n if (is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis\n }\n else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis\n }\n\n if (is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio\n }\n else if (is.bool(options.square)) {\n interactable.options.resize.square = options.square\n }\n\n return interactable\n }\n if (is.bool(options)) {\n interactable.options.resize.enabled = options\n\n return interactable\n }\n return interactable.options.resize\n}\n\nfunction checkResizeEdge (name: string, value: any, page: Interact.Point, element: Node, interactableElement: Element, rect: Interact.Rect, margin: number) {\n // false, '', undefined, null\n if (!value) { return false }\n\n // true value, use pointer coords and element rect\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n const width = is.number(rect.width) ? rect.width : rect.right - rect.left\n const height = is.number(rect.height) ? rect.height : rect.bottom - rect.top\n\n // don't use margin greater than half the relevent dimension\n margin = Math.min(margin, (name === 'left' || name === 'right' ? width : height) / 2)\n\n if (width < 0) {\n if (name === 'left') { name = 'right' }\n else if (name === 'right') { name = 'left' }\n }\n if (height < 0) {\n if (name === 'top') { name = 'bottom' }\n else if (name === 'bottom') { name = 'top' }\n }\n\n if (name === 'left') { return page.x < ((width >= 0 ? rect.left : rect.right) + margin) }\n if (name === 'top') { return page.y < ((height >= 0 ? rect.top : rect.bottom) + margin) }\n\n if (name === 'right') { return page.x > ((width >= 0 ? rect.right : rect.left) - margin) }\n if (name === 'bottom') { return page.y > ((height >= 0 ? rect.bottom : rect.top) - margin) }\n }\n\n // the remaining checks require an element\n if (!is.element(element)) { return false }\n\n return is.element(value)\n // the value is an element to use as a resize handle\n ? value === element\n // otherwise check if element matches value as selector\n : dom.matchesUpTo(element, value, interactableElement)\n}\n\nfunction initCursors (browser: typeof import ('@interactjs/utils/browser').default) {\n return (browser.isIe9 ? {\n x : 'e-resize',\n y : 's-resize',\n xy: 'se-resize',\n\n top : 'n-resize',\n left : 'w-resize',\n bottom : 's-resize',\n right : 'e-resize',\n topleft : 'se-resize',\n bottomright: 'se-resize',\n topright : 'ne-resize',\n bottomleft : 'ne-resize',\n } : {\n x : 'ew-resize',\n y : 'ns-resize',\n xy: 'nwse-resize',\n\n top : 'ns-resize',\n left : 'ew-resize',\n bottom : 'ns-resize',\n right : 'ew-resize',\n topleft : 'nwse-resize',\n bottomright: 'nwse-resize',\n topright : 'nesw-resize',\n bottomleft : 'nesw-resize',\n })\n}\n\nfunction start ({ iEvent, interaction }: Interact.SignalArg) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return\n }\n\n const startRect = interaction.rect\n const resizeOptions = interaction.interactable.options.resize\n\n /*\n * When using the `resizable.square` or `resizable.preserveAspectRatio` options, resizing from one edge\n * will affect another. E.g. with `resizable.square`, resizing to make the right edge larger will make\n * the bottom edge larger by the same amount. We call these 'linked' edges. Any linked edges will depend\n * on the active edges and the edge being interacted with.\n */\n if (resizeOptions.square || resizeOptions.preserveAspectRatio) {\n const linkedEdges = extend({}, interaction.prepared.edges)\n\n linkedEdges.top = linkedEdges.top || (linkedEdges.left && !linkedEdges.bottom)\n linkedEdges.left = linkedEdges.left || (linkedEdges.top && !linkedEdges.right)\n linkedEdges.bottom = linkedEdges.bottom || (linkedEdges.right && !linkedEdges.top)\n linkedEdges.right = linkedEdges.right || (linkedEdges.bottom && !linkedEdges.left)\n\n interaction.prepared._linkedEdges = linkedEdges\n }\n else {\n interaction.prepared._linkedEdges = null\n }\n\n // if using `resizable.preserveAspectRatio` option, record aspect ratio at the start of the resize\n if (resizeOptions.preserveAspectRatio) {\n interaction.resizeStartAspectRatio = startRect.width / startRect.height\n }\n\n interaction.resizeRects = {\n start : startRect,\n current : extend({}, startRect),\n inverted : extend({}, startRect),\n previous : extend({}, startRect),\n delta : {\n left: 0,\n right : 0,\n width : 0,\n top : 0,\n bottom: 0,\n height: 0,\n },\n }\n\n iEvent.rect = interaction.resizeRects.inverted\n ; (iEvent as ResizeEvent).deltaRect = interaction.resizeRects.delta\n}\n\nfunction move ({ iEvent, interaction }) {\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) { return }\n\n const resizeOptions = interaction.interactable.options.resize\n const invert = resizeOptions.invert\n const invertible = invert === 'reposition' || invert === 'negate'\n\n let edges = interaction.prepared.edges\n\n // eslint-disable-next-line no-shadow\n const start = interaction.resizeRects.start\n const current = interaction.resizeRects.current\n const inverted = interaction.resizeRects.inverted\n const deltaRect = interaction.resizeRects.delta\n const previous = extend(interaction.resizeRects.previous, inverted)\n const originalEdges = edges\n\n const eventDelta = extend({}, iEvent.delta)\n\n if (resizeOptions.preserveAspectRatio || resizeOptions.square) {\n // `resize.preserveAspectRatio` takes precedence over `resize.square`\n const startAspectRatio = resizeOptions.preserveAspectRatio\n ? interaction.resizeStartAspectRatio\n : 1\n\n edges = interaction.prepared._linkedEdges\n\n if ((originalEdges.left && originalEdges.bottom) ||\n (originalEdges.right && originalEdges.top)) {\n eventDelta.y = -eventDelta.x / startAspectRatio\n }\n else if (originalEdges.left || originalEdges.right) { eventDelta.y = eventDelta.x / startAspectRatio }\n else if (originalEdges.top || originalEdges.bottom) { eventDelta.x = eventDelta.y * startAspectRatio }\n }\n\n // update the 'current' rect without modifications\n if (edges.top) { current.top += eventDelta.y }\n if (edges.bottom) { current.bottom += eventDelta.y }\n if (edges.left) { current.left += eventDelta.x }\n if (edges.right) { current.right += eventDelta.x }\n\n if (invertible) {\n // if invertible, copy the current rect\n extend(inverted, current)\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n let swap\n\n if (inverted.top > inverted.bottom) {\n swap = inverted.top\n\n inverted.top = inverted.bottom\n inverted.bottom = swap\n }\n if (inverted.left > inverted.right) {\n swap = inverted.left\n\n inverted.left = inverted.right\n inverted.right = swap\n }\n }\n }\n else {\n // if not invertible, restrict to minimum of 0x0 rect\n inverted.top = Math.min(current.top, start.bottom)\n inverted.bottom = Math.max(current.bottom, start.top)\n inverted.left = Math.min(current.left, start.right)\n inverted.right = Math.max(current.right, start.left)\n }\n\n inverted.width = inverted.right - inverted.left\n inverted.height = inverted.bottom - inverted.top\n\n for (const edge in inverted) {\n deltaRect[edge] = inverted[edge] - previous[edge]\n }\n\n iEvent.edges = interaction.prepared.edges\n iEvent.rect = inverted\n iEvent.deltaRect = deltaRect\n}\n\nfunction updateEventAxes ({ interaction, iEvent, action }) {\n if (action !== 'resize' || !interaction.resizeAxes) { return }\n\n const options = interaction.interactable.options\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = iEvent.delta.y\n }\n else {\n iEvent.delta.y = iEvent.delta.x\n }\n iEvent.axes = 'xy'\n }\n else {\n iEvent.axes = interaction.resizeAxes\n\n if (interaction.resizeAxes === 'x') {\n iEvent.delta.y = 0\n }\n else if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = 0\n }\n }\n}\n\nexport default resize\n","import { Scope } from '@interactjs/core/scope'\nimport drag, { DragEvent } from './drag'\nimport drop from './drop'\nimport gesture, { GestureEvent } from './gesture'\nimport resize, { ResizeEvent } from './resize'\n\nfunction install (scope: Scope) {\n scope.usePlugin(gesture)\n scope.usePlugin(resize)\n scope.usePlugin(drag)\n scope.usePlugin(drop)\n}\n\nconst id = 'actions'\n\nexport {\n id,\n install,\n gesture,\n GestureEvent,\n resize,\n ResizeEvent,\n drag,\n DragEvent,\n drop,\n}\n","import * as domUtils from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport raf from '@interactjs/utils/raf'\nimport { getStringOptionResult } from '@interactjs/utils/rect'\nimport { getWindow } from '@interactjs/utils/window'\n\ntype Scope = import ('@interactjs/core/scope').Scope\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoScroll: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoScroll?: typeof autoScroll\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n autoScroll?: Interact.AutoScrollOption\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n defaults,\n actions,\n } = scope\n\n scope.autoScroll = autoScroll\n autoScroll.now = () => scope.now()\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.autoScroll = null\n })\n\n interactions.signals.on('destroy', ({ interaction }) => {\n interaction.autoScroll = null\n autoScroll.stop()\n if (autoScroll.interaction) {\n autoScroll.interaction = null\n }\n })\n\n interactions.signals.on('stop', autoScroll.stop)\n\n interactions.signals.on('action-move', (arg: any) => autoScroll.onInteractionMove(arg))\n\n actions.eventTypes.push('autoscroll')\n defaults.perAction.autoScroll = autoScroll.defaults\n}\n\nconst autoScroll = {\n defaults: {\n enabled : false,\n margin : 60,\n\n // the item that is scrolled (Window or HTMLElement)\n container: null as Window | Element,\n\n // the scroll speed in pixels per second\n speed : 300,\n } as Interact.AutoScrollOption,\n\n now: Date.now,\n\n interaction: null,\n i: null, // the handle returned by window.setInterval\n x: 0,\n y: 0, // Direction each pulse is to scroll in\n\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n\n start (interaction: Interact.Interaction) {\n autoScroll.isScrolling = true\n raf.cancel(autoScroll.i)\n\n interaction.autoScroll = autoScroll\n autoScroll.interaction = interaction\n autoScroll.prevTime = autoScroll.now()\n autoScroll.i = raf.request(autoScroll.scroll)\n },\n\n stop () {\n autoScroll.isScrolling = false\n if (autoScroll.interaction) {\n autoScroll.interaction.autoScroll = null\n }\n raf.cancel(autoScroll.i)\n },\n\n // scroll the window by the values in scroll.x/y\n scroll () {\n const { interaction } = autoScroll\n const { interactable, element } = interaction\n const options = interactable.options[autoScroll.interaction.prepared.name].autoScroll\n const container = getContainer(options.container, interactable, element)\n const now = autoScroll.now()\n // change in time in seconds\n const dt = (now - autoScroll.prevTime) / 1000\n // displacement\n const s = options.speed * dt\n\n if (s >= 1) {\n const scrollBy = {\n x: autoScroll.x * s,\n y: autoScroll.y * s,\n }\n\n if (scrollBy.x || scrollBy.y) {\n const prevScroll = getScroll(container)\n\n if (is.window(container)) {\n container.scrollBy(scrollBy.x, scrollBy.y)\n }\n else if (container) {\n container.scrollLeft += scrollBy.x\n container.scrollTop += scrollBy.y\n }\n\n const curScroll = getScroll(container)\n const delta = {\n x: curScroll.x - prevScroll.x,\n y: curScroll.y - prevScroll.y,\n }\n\n if (delta.x || delta.y) {\n interactable.fire({\n type: 'autoscroll',\n target: element,\n interactable,\n delta,\n interaction,\n container,\n })\n }\n }\n\n autoScroll.prevTime = now\n }\n\n if (autoScroll.isScrolling) {\n raf.cancel(autoScroll.i)\n autoScroll.i = raf.request(autoScroll.scroll)\n }\n },\n check (interactable, actionName) {\n const options = interactable.options\n\n return options[actionName].autoScroll && options[actionName].autoScroll.enabled\n },\n onInteractionMove ({ interaction, pointer }) {\n if (!(interaction.interacting() &&\n autoScroll.check(interaction.interactable, interaction.prepared.name))) {\n return\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0\n return\n }\n\n let top\n let right\n let bottom\n let left\n\n const { interactable, element } = interaction\n const options = interactable.options[interaction.prepared.name].autoScroll\n const container = getContainer(options.container, interactable, element)\n\n if (is.window(container)) {\n left = pointer.clientX < autoScroll.margin\n top = pointer.clientY < autoScroll.margin\n right = pointer.clientX > container.innerWidth - autoScroll.margin\n bottom = pointer.clientY > container.innerHeight - autoScroll.margin\n }\n else {\n const rect = domUtils.getElementClientRect(container)\n\n left = pointer.clientX < rect.left + autoScroll.margin\n top = pointer.clientY < rect.top + autoScroll.margin\n right = pointer.clientX > rect.right - autoScroll.margin\n bottom = pointer.clientY > rect.bottom - autoScroll.margin\n }\n\n autoScroll.x = (right ? 1 : left ? -1 : 0)\n autoScroll.y = (bottom ? 1 : top ? -1 : 0)\n\n if (!autoScroll.isScrolling) {\n // set the autoScroll properties to those of the target\n autoScroll.margin = options.margin\n autoScroll.speed = options.speed\n\n autoScroll.start(interaction)\n }\n },\n}\n\nexport function getContainer (value, interactable, element) {\n return (is.string(value) ? getStringOptionResult(value, interactable, element) : value) || getWindow(element)\n}\n\nexport function getScroll (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollLeft, y: container.scrollTop }\n}\n\nexport function getScrollSize (container) {\n if (is.window(container)) { container = window.document.body }\n\n return { x: container.scrollWidth, y: container.scrollHeight }\n}\n\nexport function getScrollSizeDelta ({ interaction, element }, func) {\n const scrollOptions = interaction && interaction.interactable.options[interaction.prepared.name].autoScroll\n\n if (!scrollOptions || !scrollOptions.enabled) {\n func()\n return { x: 0, y: 0 }\n }\n\n const scrollContainer = getContainer(\n scrollOptions.container,\n interaction.interactable,\n element\n )\n\n const prevSize = getScroll(scrollContainer)\n func()\n const curSize = getScroll(scrollContainer)\n\n return {\n x: curSize.x - prevSize.x,\n y: curSize.y - prevSize.y,\n }\n}\n\nexport default {\n id: 'auto-scroll',\n install,\n}\n","import { warnOnce } from '@interactjs/utils'\nimport * as is from '@interactjs/utils/is'\n\n// TODO: there seems to be a @babel/preset-typescript bug causing regular import\n// syntax to remain in js output\ntype Scope = import ('@interactjs/core/scope').Scope\ntype Actions = import ('@interactjs/core/scope').Actions\ntype Interaction = import ('@interactjs/core/Interaction').default\ntype Interactable = import ('@interactjs/core/Interactable').default\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n getAction: typeof getAction\n defaultActionChecker: (pointer: any, event: any, interaction: any, element: any) => any\n styleCursor: typeof styleCursor\n actionChecker: typeof actionChecker\n ignoreFrom: (...args: any) => boolean\n allowFrom: (...args: any) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n pointerIsDown: boolean\n }\n}\n\nfunction install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable, // tslint:disable-line no-shadowed-variable\n actions,\n } = scope\n\n Interactable.prototype.getAction = getAction\n\n /**\n * ```js\n * interact(element, { ignoreFrom: document.getElementById('no-action') })\n * // or\n * interact(element).ignoreFrom('input, textarea, a')\n * ```\n * @deprecated\n * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n * of it's parents match the given CSS selector or Element, no\n * drag/resize/gesture is started.\n *\n * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\n * })\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to not ignore any elements\n * @return {string | Element | object} The current ignoreFrom value or this\n * Interactable\n */\n Interactable.prototype.ignoreFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('ignoreFrom', newValue)\n }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).')\n\n /**\n * @deprecated\n *\n * A drag/resize/gesture is started only If the target of the `mousedown`,\n * `pointerdown` or `touchstart` event or any of it's parents match the given\n * CSS selector or Element.\n *\n * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\n * })\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to allow from any element\n * @return {string | Element | object} The current allowFrom value or this\n * Interactable\n */\n Interactable.prototype.allowFrom = warnOnce(function (this: Interactable, newValue) {\n return this._backCompatOption('allowFrom', newValue)\n }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).')\n\n /**\n * ```js\n * interact('.resize-drag')\n * .resizable(true)\n * .draggable(true)\n * .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n *\n * if (interact.matchesSelector(event.target, '.drag-handle')) {\n * // force drag with handle target\n * action.name = drag\n * }\n * else {\n * // resize from the top and right edges\n * action.name = 'resize'\n * action.edges = { top: true, right: true }\n * }\n *\n * return action\n * })\n * ```\n *\n * Returns or sets the function used to check action to be performed on\n * pointerDown\n *\n * @param {function | null} [checker] A function which takes a pointer event,\n * defaultAction string, interactable, element and interaction as parameters\n * and returns an object with name property 'drag' 'resize' or 'gesture' and\n * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n * props.\n * @return {Function | Interactable} The checker function or this Interactable\n */\n Interactable.prototype.actionChecker = actionChecker\n\n /**\n * Returns or sets whether the the cursor should be changed depending on the\n * action that would be performed if the mouse were pressed and dragged.\n *\n * @param {boolean} [newValue]\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.styleCursor = styleCursor\n\n Interactable.prototype.defaultActionChecker = function (this: Interactable, pointer, event, interaction, element) {\n return defaultActionChecker(this, pointer, event, interaction, element, actions)\n }\n}\n\nfunction getAction (this: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element): Interact.ActionProps {\n const action = this.defaultActionChecker(pointer, event, interaction, element)\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction)\n }\n\n return action\n}\n\nfunction defaultActionChecker (interactable: Interactable, pointer: Interact.PointerType, event: Interact.PointerEventType, interaction: Interaction, element: Element, actions: Actions) {\n const rect = interactable.getRect(element)\n const buttons = (event as MouseEvent).buttons || ({\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16,\n })[(event as MouseEvent).button as 0 | 1 | 3 | 4]\n let action = null\n\n for (const actionName of actions.names) {\n // check mouseButton setting if the pointer is down\n if (interaction.pointerIsDown &&\n /mouse|pointer/.test(interaction.pointerType) &&\n (buttons & interactable.options[actionName].mouseButtons) === 0) {\n continue\n }\n\n action = (actions[actionName as keyof Actions] as any).checker(pointer, event, interactable, element, interaction, rect)\n\n if (action) {\n return action\n }\n }\n}\n\nfunction styleCursor (this: Interactable, newValue?: boolean) {\n if (is.bool(newValue)) {\n this.options.styleCursor = newValue\n\n return this\n }\n\n if (newValue === null) {\n delete this.options.styleCursor\n\n return this\n }\n\n return this.options.styleCursor\n}\n\nfunction actionChecker (this: Interactable, checker: any) {\n if (is.func(checker)) {\n this.options.actionChecker = checker\n\n return this\n }\n\n if (checker === null) {\n delete this.options.actionChecker\n\n return this\n }\n\n return this.options.actionChecker\n}\n\nexport default {\n id: 'auto-start/interactableMethods',\n install,\n}\n","import * as utils from '@interactjs/utils'\nimport InteractableMethods from './InteractableMethods'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n maxInteractions: (newValue: any) => any\n }\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n autoStart: AutoStart\n maxInteractions: (...args: any) => any\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n actionChecker?\n styleCursor?\n }\n\n interface PerActionDefaults {\n manualStart?: boolean\n max?: number\n maxPerElement?: number\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons?: 0 | 1 | 2 | 4 | 16\n }\n}\n\nexport interface AutoStart {\n // Allow this many interactions to happen simultaneously\n maxInteractions: number\n withinInteractionLimit: typeof withinInteractionLimit\n cursorElement: HTMLElement\n signals: utils.Signals\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n interact,\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(InteractableMethods)\n\n // set cursor style on mousedown\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n // set cursor style on mousemove\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget }) => {\n if (interaction.pointerType !== 'mouse' ||\n interaction.pointerIsDown ||\n interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n })\n\n interactions.signals.on('move', (arg) => {\n const { interaction } = arg\n\n if (!interaction.pointerIsDown ||\n interaction.interacting() ||\n !interaction.pointerWasMoved ||\n !interaction.prepared.name) {\n return\n }\n\n scope.autoStart.signals.fire('before-start', arg)\n\n const { interactable } = interaction\n\n if (interaction.prepared.name && interactable) {\n // check manualStart and interaction limit\n if (interactable.options[interaction.prepared.name].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n interaction.stop()\n }\n else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n }\n }\n })\n\n interactions.signals.on('stop', ({ interaction }) => {\n const { interactable } = interaction\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n })\n\n defaults.base.actionChecker = null\n defaults.base.styleCursor = true\n\n utils.extend(defaults.perAction, {\n manualStart: false,\n max: Infinity,\n maxPerElement: 1,\n allowFrom: null,\n ignoreFrom: null,\n\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons: 1,\n })\n\n /**\n * Returns or sets the maximum number of concurrent interactions allowed. By\n * default only 1 interaction is allowed at a time (for backwards\n * compatibility). To allow multiple interactions on the same Interactables and\n * elements, you need to enable it in the draggable, resizable and gesturable\n * `'max'` and `'maxPerElement'` options.\n *\n * @alias module:interact.maxInteractions\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n */\n interact.maxInteractions = (newValue) => maxInteractions(newValue, scope)\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit,\n cursorElement: null,\n signals: new utils.Signals(),\n }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction (action, interactable, element, eventTarget, scope) {\n if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) &&\n interactable.options[action.name].enabled &&\n withinInteractionLimit(interactable, element, action, scope)) {\n return action\n }\n\n return null\n}\n\nfunction validateMatches (interaction: Interact.Interaction, pointer, event, matches: Interact.Interactable[], matchElements: Element[], eventTarget: Element, scope: Interact.Scope) {\n for (let i = 0, len = matches.length; i < len; i++) {\n const match = matches[i]\n const matchElement = matchElements[i]\n const matchAction = match.getAction(pointer, event, interaction, matchElement)\n\n if (!matchAction) { continue }\n\n const action = validateAction(\n matchAction,\n match,\n matchElement,\n eventTarget,\n scope)\n\n if (action) {\n return {\n action,\n interactable: match,\n element: matchElement,\n }\n }\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction getActionInfo (interaction: Interact.Interaction, pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Element, scope: Interact.Scope) {\n let matches = []\n let matchElements = []\n\n let element = eventTarget\n\n function pushMatches (interactable) {\n matches.push(interactable)\n matchElements.push(element)\n }\n\n while (utils.is.element(element)) {\n matches = []\n matchElements = []\n\n scope.interactables.forEachMatch(element, pushMatches)\n\n const actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope)\n\n if (actionInfo.action &&\n !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo\n }\n\n element = utils.dom.parentNode(element)\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (interaction: Interact.Interaction, { action, interactable, element }, scope: Interact.Scope) {\n action = action || {}\n\n if (interaction.interactable && interaction.interactable.options.styleCursor) {\n setCursor(interaction.element as HTMLElement, '', scope)\n }\n\n interaction.interactable = interactable\n interaction.element = element\n utils.copyAction(interaction.prepared, action)\n\n interaction.rect = interactable && action.name\n ? interactable.getRect(element)\n : null\n\n if (interactable && interactable.options.styleCursor) {\n const cursor = action ? scope.actions[action.name].getCursor(action) : ''\n setCursor(interaction.element as HTMLElement, cursor, scope)\n }\n\n scope.autoStart.signals.fire('prepared', { interaction })\n}\n\nfunction withinInteractionLimit (interactable: Interact.Interactable, element: Element, action, scope: Interact.Scope) {\n const options = interactable.options\n const maxActions = options[action.name].max\n const maxPerElement = options[action.name].maxPerElement\n const autoStartMax = scope.autoStart.maxInteractions\n let activeInteractions = 0\n let interactableCount = 0\n let elementCount = 0\n\n // no actions if any of these values == 0\n if (!(maxActions && maxPerElement && autoStartMax)) { return false }\n\n for (const interaction of scope.interactions.list) {\n const otherAction = interaction.prepared.name\n\n if (!interaction.interacting()) { continue }\n\n activeInteractions++\n\n if (activeInteractions >= autoStartMax) {\n return false\n }\n\n if (interaction.interactable !== interactable) { continue }\n\n interactableCount += otherAction === action.name ? 1 : 0\n\n if (interactableCount >= maxActions) {\n return false\n }\n\n if (interaction.element === element) {\n elementCount++\n\n if (otherAction === action.name && elementCount >= maxPerElement) {\n return false\n }\n }\n }\n\n return autoStartMax > 0\n}\n\nfunction maxInteractions (newValue, scope: Interact.Scope) {\n if (utils.is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue\n\n return this\n }\n\n return scope.autoStart.maxInteractions\n}\n\nfunction setCursor (element: HTMLElement, cursor, scope: Interact.Scope) {\n if (scope.autoStart.cursorElement) {\n scope.autoStart.cursorElement.style.cursor = ''\n }\n\n element.ownerDocument.documentElement.style.cursor = cursor\n element.style.cursor = cursor\n scope.autoStart.cursorElement = cursor ? element : null\n}\n\nexport default {\n id: 'auto-start/base',\n install,\n maxInteractions,\n withinInteractionLimit,\n validateAction,\n} as Interact.Plugin\n","import { ActionName } from '@interactjs/core/scope'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport * as is from '@interactjs/utils/is'\nimport autoStart from './base'\n\ntype Scope = import ('@interactjs/core/scope').Scope\n\nfunction install (scope: Scope) {\n scope.autoStart.signals.on('before-start', ({ interaction, eventTarget, dx, dy }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n // check if a drag is in the correct axis\n const absX = Math.abs(dx)\n const absY = Math.abs(dy)\n const targetOptions = interaction.interactable.options.drag\n const startAxis = targetOptions.startAxis\n const currentAxis = (absX > absY ? 'x' : absX < absY ? 'y' : 'xy')\n\n interaction.prepared.axis = targetOptions.lockAxis === 'start'\n ? currentAxis[0] as 'x' | 'y' // always lock to one axis even if currentAxis === 'xy'\n : targetOptions.lockAxis\n\n // if the movement isn't in the startAxis of the interactable\n if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n // cancel the prepared action\n interaction.prepared.name = null\n\n // then try to get a drag from another ineractable\n let element = eventTarget\n\n const getDraggable = function (interactable) {\n if (interactable === interaction.interactable) { return }\n\n const options = interaction.interactable.options.drag\n\n if (!options.manualStart &&\n interactable.testIgnoreAllow(options, element, eventTarget)) {\n const action = interactable.getAction(\n interaction.downPointer, interaction.downEvent, interaction, element)\n\n if (action &&\n action.name === ActionName.Drag &&\n checkStartAxis(currentAxis, interactable) &&\n autoStart.validateAction(action, interactable, element, eventTarget, scope)) {\n return interactable\n }\n }\n }\n\n // check all interactables\n while (is.element(element)) {\n const interactable = scope.interactables.forEachMatch(element, getDraggable)\n\n if (interactable) {\n interaction.prepared.name = ActionName.Drag\n interaction.interactable = interactable\n interaction.element = element\n break\n }\n\n element = parentNode(element)\n }\n }\n })\n\n function checkStartAxis (startAxis, interactable) {\n if (!interactable) { return false }\n\n const thisAxis = interactable.options[ActionName.Drag].startAxis\n\n return (startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis)\n }\n}\n\nexport default {\n id: 'auto-start/dragAxis',\n install,\n}\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n hold?: number\n delay?: number\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n autoStartHoldTimer?: any\n }\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n autoStart,\n interactions,\n defaults,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n defaults.perAction.hold = 0\n defaults.perAction.delay = 0\n\n interactions.signals.on('new', (interaction) => {\n interaction.autoStartHoldTimer = null\n })\n\n autoStart.signals.on('prepared', ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.autoStartHoldTimer = setTimeout(() => {\n interaction.start(interaction.prepared, interaction.interactable, interaction.element)\n }, hold)\n }\n })\n\n interactions.signals.on('move', ({ interaction, duplicate }) => {\n if (interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer)\n }\n })\n\n // prevent regular down->move autoStart\n autoStart.signals.on('before-start', ({ interaction }) => {\n const hold = getHoldDuration(interaction)\n\n if (hold > 0) {\n interaction.prepared.name = null\n }\n })\n}\n\nfunction getHoldDuration (interaction) {\n const actionName = interaction.prepared && interaction.prepared.name\n\n if (!actionName) { return null }\n\n const options = interaction.interactable.options\n\n return options[actionName].hold || options[actionName].delay\n}\n\nexport default {\n id: 'auto-start/hold',\n install,\n getHoldDuration,\n}\n","import autoStart from './base'\nimport dragAxis from './dragAxis'\nimport hold from './hold'\n\nfunction install (scope) {\n scope.usePlugin(autoStart)\n scope.usePlugin(hold)\n scope.usePlugin(dragAxis)\n}\n\nconst id = 'auto-start'\n\nexport {\n id,\n install,\n autoStart,\n hold,\n dragAxis,\n}\n","import { matchesSelector, nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport * as is from '@interactjs/utils/is'\nimport { getWindow } from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n preventDefault: typeof preventDefault\n checkAndPreventDefault: (event: Event) => void\n }\n}\n\nfunction preventDefault (this: Interact.Interactable, newValue?: 'always' | 'never' | 'auto') {\n if (/^(always|never|auto)$/.test(newValue)) {\n this.options.preventDefault = newValue\n return this\n }\n\n if (is.bool(newValue)) {\n this.options.preventDefault = newValue ? 'always' : 'never'\n return this\n }\n\n return this.options.preventDefault\n}\n\nfunction checkAndPreventDefault (interactable: Interact.Interactable, scope: Interact.Scope, event: Event) {\n const setting = interactable.options.preventDefault\n\n if (setting === 'never') { return }\n\n if (setting === 'always') {\n event.preventDefault()\n return\n }\n\n // setting === 'auto'\n\n // if the browser supports passive event listeners and isn't running on iOS,\n // don't preventDefault of touch{start,move} events. CSS touch-action and\n // user-select should be used instead of calling event.preventDefault().\n if (events.supportsPassive && /^touch(start|move)$/.test(event.type)) {\n const doc = getWindow(event.target).document\n const docOptions = scope.getDocOptions(doc)\n\n if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n return\n }\n }\n\n // don't preventDefault of pointerdown events\n if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n return\n }\n\n // don't preventDefault on editable elements\n if (is.element(event.target) &&\n matchesSelector(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n return\n }\n\n event.preventDefault()\n}\n\nfunction onInteractionEvent ({ interaction, event }: Interact.SignalArg) {\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event as Event)\n }\n}\n\nexport function install (scope: Interact.Scope) {\n /** @lends Interactable */\n const Interactable = scope.Interactable\n\n /**\n * Returns or sets whether to prevent the browser's default behaviour in\n * response to pointer events. Can be set to:\n * - `'always'` to always prevent\n * - `'never'` to never prevent\n * - `'auto'` to let interact.js try to determine what would be best\n *\n * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n * @return {string | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.preventDefault = preventDefault\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event)\n }\n\n for (const eventSignal of ['down', 'move', 'up', 'cancel']) {\n scope.interactions.signals.on(eventSignal, onInteractionEvent)\n }\n\n // prevent native HTML5 drag on interact.js target elements\n scope.interactions.docEvents.push({\n type: 'dragstart',\n listener (event) {\n for (const interaction of scope.interactions.list) {\n if (interaction.element &&\n (interaction.element === event.target ||\n nodeContains(interaction.element, event.target))) {\n interaction.interactable.checkAndPreventDefault(event)\n return\n }\n }\n },\n })\n}\n\nexport type Install = typeof install\n\nexport default {\n id: 'core/interactablePreventDefault',\n install,\n}\n","/* eslint-disable no-console */\n/* global process */\nimport domObjects from '@interactjs/utils/domObjects'\nimport { parentNode } from '@interactjs/utils/domUtils'\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport win from '@interactjs/utils/window'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n logger: Logger\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n devTools?: DevToolsOptions\n }\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n devTools?: Interact.OptionMethod\n }\n}\n\nexport interface DevToolsOptions {\n ignore: { [P in keyof typeof CheckName]?: boolean }\n}\n\nexport interface Logger {\n warn: (...args: any[]) => void\n error: (...args: any[]) => void\n log: (...args: any[]) => void\n}\n\nexport interface Check {\n name: string\n text: string\n perform: (interaction: Interact.Interaction) => boolean\n getInfo: (interaction: Interact.Interaction) => any[]\n}\n\nenum CheckName {\n touchAction = '',\n boxSizing = '',\n noListeners = '',\n}\n\nconst prefix = '[interact.js] '\nconst links = {\n touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing',\n}\n\nconst isProduction = process.env.NODE_ENV === 'production'\n\n// eslint-disable-next-line no-restricted-syntax\nfunction install (scope: Interact.Scope, { logger }: { logger?: Logger } = {}) {\n const {\n interactions,\n Interactable,\n defaults,\n } = scope\n logger = logger || console\n\n interactions.signals.on('action-start', ({ interaction }) => {\n for (const check of checks) {\n const options = interaction.interactable && interaction.interactable.options[interaction.prepared.name]\n\n if (\n !(options && options.devTools && options.devTools.ignore[check.name]) &&\n check.perform(interaction)\n ) {\n logger.warn(prefix + check.text, ...check.getInfo(interaction))\n }\n }\n })\n\n defaults.base.devTools = {\n ignore: {},\n }\n\n Interactable.prototype.devTools = function (options?) {\n if (options) {\n extend(this.options.devTools, options)\n return this\n }\n\n return this.options.devTools\n }\n}\n\nconst checks: Check[] = [\n {\n name: 'touchAction',\n perform ({ element }) {\n return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/)\n },\n getInfo ({ element }) {\n return [\n element,\n links.touchAction,\n ]\n },\n text: 'Consider adding CSS \"touch-action: none\" to this element\\n',\n },\n\n {\n name: 'boxSizing',\n perform (interaction) {\n const { element } = interaction\n\n return interaction.prepared.name === 'resize' &&\n element instanceof domObjects.HTMLElement &&\n !hasStyle(element, 'boxSizing', /border-box/)\n },\n text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n getInfo ({ element }) {\n return [\n element,\n links.boxSizing,\n ]\n },\n },\n\n {\n name: 'noListeners',\n perform (interaction) {\n const actionName = interaction.prepared.name\n const moveListeners = interaction.interactable.events.types[`${actionName}move`] || []\n\n return !moveListeners.length\n },\n getInfo (interaction) {\n return [\n interaction.prepared.name,\n interaction.interactable,\n ]\n },\n text: 'There are no listeners set for this action',\n },\n]\n\nfunction hasStyle (element: HTMLElement, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n return styleRe.test(element.style[prop] || win.window.getComputedStyle(element)[prop])\n}\n\nfunction parentHasStyle (element: Element, prop: keyof CSSStyleDeclaration, styleRe: RegExp) {\n let parent = element as HTMLElement\n\n while (is.element(parent)) {\n if (hasStyle(parent, prop, styleRe)) {\n return true\n }\n\n parent = parentNode(parent)\n }\n\n return false\n}\n\nconst id = 'dev-tools'\nconst defaultExport = isProduction\n ? { id, install: () => {} }\n : {\n id,\n install,\n checks,\n CheckName,\n links,\n prefix,\n }\n\nexport default defaultExport\n","import { Scope } from '@interactjs/core/scope'\nimport extend from '@interactjs/utils/extend'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n modifiers?: any\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n modifiers?: {\n states: any[]\n offsets: any\n startOffset: any\n startDelta: Interact.Point\n result?: {\n delta: {\n x: number\n y: number\n }\n rectDelta: {\n left: number\n right: number\n top: number\n bottom: number\n }\n coords: Interact.Point\n changed: boolean\n },\n endPrevented: boolean\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n modifiers?: Array>\n }\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.defaults.perAction.modifiers = []\n scope.modifiers = {}\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.modifiers = {\n startOffset: { left: 0, right: 0, top: 0, bottom: 0 },\n offsets: {},\n states: null,\n result: null,\n endPrevented: false,\n startDelta: null,\n }\n })\n\n interactions.signals.on('before-action-start', (arg) => {\n start(arg as any, arg.interaction.coords.start.page, scope.modifiers)\n })\n\n interactions.signals.on('action-resume', (arg) => {\n stop(arg as Required)\n start(arg as Required, arg.interaction.coords.cur.page, scope.modifiers)\n beforeMove(arg as Required)\n })\n\n interactions.signals.on('after-action-move', restoreCoords as any)\n interactions.signals.on('before-action-move', beforeMove)\n\n interactions.signals.on('before-action-start', setCoords)\n interactions.signals.on('after-action-start', restoreCoords as any)\n\n interactions.signals.on('before-action-end', beforeEnd)\n interactions.signals.on('stop', stop)\n}\n\nfunction start (\n { interaction, phase }: Interact.SignalArg,\n pageCoords: Interact.Point,\n registeredModifiers,\n) {\n const { interactable, element } = interaction\n const modifierList = getModifierList(interaction, registeredModifiers)\n const states = prepareStates(modifierList)\n\n const rect = extend({}, interaction.rect)\n\n if (!('width' in rect)) { rect.width = rect.right - rect.left }\n if (!('height' in rect)) { rect.height = rect.bottom - rect.top }\n\n const startOffset = getRectOffset(rect, pageCoords)\n\n interaction.modifiers.startOffset = startOffset\n interaction.modifiers.startDelta = { x: 0, y: 0 }\n\n const arg: Partial = {\n interaction,\n interactable,\n element,\n pageCoords,\n phase,\n rect,\n startOffset,\n states,\n preEnd: false,\n requireEndOnly: false,\n }\n\n interaction.modifiers.states = states\n interaction.modifiers.result = null\n startAll(arg)\n\n arg.pageCoords = extend({}, interaction.coords.start.page)\n\n const result = interaction.modifiers.result = setAll(arg)\n\n return result\n}\n\nexport function startAll (arg) {\n for (const state of arg.states) {\n if (state.methods.start) {\n arg.state = state\n state.methods.start(arg)\n }\n }\n}\n\nexport function setAll (arg: Partial) {\n const {\n interaction,\n modifiersState = interaction.modifiers,\n prevCoords = modifiersState.result\n ? modifiersState.result.coords\n : interaction.coords.prev.page,\n phase,\n preEnd,\n requireEndOnly,\n rect,\n skipModifiers,\n } = arg\n\n const states = skipModifiers\n ? arg.states.slice(skipModifiers)\n : arg.states\n\n arg.coords = extend({}, arg.pageCoords)\n arg.rect = extend({}, rect)\n\n const result = {\n delta: { x: 0, y: 0 },\n rectDelta: {\n left : 0,\n right : 0,\n top : 0,\n bottom: 0,\n },\n coords: arg.coords,\n changed: true,\n }\n\n for (const state of states) {\n const { options } = state\n\n if (!state.methods.set ||\n !shouldDo(options, preEnd, requireEndOnly, phase)) { continue }\n\n arg.state = state\n state.methods.set(arg)\n }\n\n result.delta.x = arg.coords.x - arg.pageCoords.x\n result.delta.y = arg.coords.y - arg.pageCoords.y\n\n let rectChanged = false\n\n if (rect) {\n result.rectDelta.left = arg.rect.left - rect.left\n result.rectDelta.right = arg.rect.right - rect.right\n result.rectDelta.top = arg.rect.top - rect.top\n result.rectDelta.bottom = arg.rect.bottom - rect.bottom\n\n rectChanged = result.rectDelta.left !== 0 ||\n result.rectDelta.right !== 0 ||\n result.rectDelta.top !== 0 ||\n result.rectDelta.bottom !== 0\n }\n\n result.changed = prevCoords.x !== result.coords.x ||\n prevCoords.y !== result.coords.y ||\n rectChanged\n\n return result\n}\n\nfunction beforeMove (arg: Interact.SignalArg): void | false {\n const { interaction, phase, preEnd, skipModifiers } = arg\n const { interactable, element } = interaction\n const modifierResult = setAll(\n {\n interaction,\n interactable,\n element,\n preEnd,\n phase,\n pageCoords: interaction.coords.cur.page,\n rect: interaction.rect,\n states: interaction.modifiers.states,\n requireEndOnly: false,\n skipModifiers,\n })\n\n interaction.modifiers.result = modifierResult\n\n // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n if (!modifierResult.changed && interaction.interacting()) {\n return false\n }\n\n setCoords(arg)\n}\n\nfunction beforeEnd (arg): void | false {\n const { interaction, event, noPreEnd } = arg\n const states = interaction.modifiers.states\n\n if (noPreEnd || !states || !states.length) {\n return\n }\n\n let didPreEnd = false\n\n for (const state of states) {\n arg.state = state\n const { options, methods } = state\n\n const endResult = methods.beforeEnd && methods.beforeEnd(arg)\n\n if (endResult === false) {\n interaction.modifiers.endPrevented = true\n return false\n }\n\n // if the endOnly option is true for any modifier\n if (!didPreEnd && shouldDo(options, true, true)) {\n // fire a move event at the modified coordinates\n interaction.move({ event, preEnd: true })\n didPreEnd = true\n }\n }\n}\n\nfunction stop (arg: Interact.SignalArg) {\n const { interaction } = arg\n const states = interaction.modifiers.states\n\n if (!states || !states.length) {\n return\n }\n\n const modifierArg = extend({\n states,\n interactable: interaction.interactable,\n element: interaction.element,\n }, arg)\n\n restoreCoords(arg)\n\n for (const state of states) {\n modifierArg.state = state\n\n if (state.methods.stop) { state.methods.stop(modifierArg) }\n }\n\n arg.interaction.modifiers.states = null\n arg.interaction.modifiers.endPrevented = false\n}\n\nfunction getModifierList (interaction, registeredModifiers) {\n const actionOptions = interaction.interactable.options[interaction.prepared.name]\n const actionModifiers = actionOptions.modifiers\n\n if (actionModifiers && actionModifiers.length) {\n return actionModifiers\n .filter((modifier) => !modifier.options || modifier.options.enabled !== false)\n .map((modifier) => {\n if (!modifier.methods && modifier.type) {\n return registeredModifiers[modifier.type](modifier)\n }\n\n return modifier\n })\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize']\n .map((type) => {\n const options = actionOptions[type]\n\n return options && options.enabled && {\n options,\n methods: options._methods,\n }\n })\n .filter((m) => !!m)\n}\n\nexport function prepareStates (modifierList) {\n const states = []\n\n for (let index = 0; index < modifierList.length; index++) {\n const { options, methods, name } = modifierList[index]\n\n if (options && options.enabled === false) { continue }\n\n const state = {\n options,\n methods,\n index,\n name,\n }\n\n states.push(state)\n }\n\n return states\n}\n\nfunction setCoords (arg) {\n const { interaction, phase } = arg\n const curCoords = arg.curCoords || interaction.coords.cur\n const startCoords = arg.startCoords || interaction.coords.start\n const { result, startDelta } = interaction.modifiers\n const curDelta = result.delta\n\n if (phase === 'start') {\n extend(interaction.modifiers.startDelta, result.delta)\n }\n\n for (const [coordsSet, delta] of [[startCoords, startDelta], [curCoords, curDelta]]) {\n coordsSet.page.x += delta.x\n coordsSet.page.y += delta.y\n coordsSet.client.x += delta.x\n coordsSet.client.y += delta.y\n }\n\n const { rectDelta } = interaction.modifiers.result\n const rect = arg.rect || interaction.rect\n\n rect.left += rectDelta.left\n rect.right += rectDelta.right\n rect.top += rectDelta.top\n rect.bottom += rectDelta.bottom\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n}\n\nfunction restoreCoords ({ interaction: { coords, rect, modifiers } }: Interact.SignalArg) {\n if (!modifiers.result) { return }\n\n const { startDelta } = modifiers\n const { delta: curDelta, rectDelta } = modifiers.result\n\n const coordsAndDeltas = [\n [coords.start, startDelta],\n [coords.cur, curDelta],\n ]\n\n for (const [coordsSet, delta] of coordsAndDeltas as any) {\n coordsSet.page.x -= delta.x\n coordsSet.page.y -= delta.y\n coordsSet.client.x -= delta.x\n coordsSet.client.y -= delta.y\n }\n\n rect.left -= rectDelta.left\n rect.right -= rectDelta.right\n rect.top -= rectDelta.top\n rect.bottom -= rectDelta.bottom\n}\n\nfunction shouldDo (options, preEnd?: boolean, requireEndOnly?: boolean, phase?: string) {\n return options\n ? options.enabled !== false &&\n (preEnd || !options.endOnly) &&\n (!requireEndOnly || options.endOnly || options.alwaysOnEnd) &&\n (options.setStart || phase !== 'start')\n : !requireEndOnly\n}\n\nfunction getRectOffset (rect, coords) {\n return rect\n ? {\n left : coords.x - rect.left,\n top : coords.y - rect.top,\n right : rect.right - coords.x,\n bottom: rect.bottom - coords.y,\n }\n : {\n left : 0,\n top : 0,\n right : 0,\n bottom: 0,\n }\n}\n\nfunction makeModifier<\n Options extends { enabled?: boolean, [key: string]: any }\n> (module: { defaults: Options, [key: string]: any }, name?: string) {\n const { defaults } = module\n const methods = {\n start: module.start,\n set: module.set,\n beforeEnd: module.beforeEnd,\n stop: module.stop,\n }\n\n const modifier = (options?: Partial) => {\n options = options || {}\n\n options.enabled = options.enabled !== false\n\n // add missing defaults to options\n for (const prop in defaults) {\n if (!(prop in options)) {\n options[prop] = defaults[prop]\n }\n }\n\n return { options, methods, name }\n }\n\n if (typeof name === 'string') {\n // for backwrads compatibility\n modifier._defaults = defaults\n modifier._methods = methods\n }\n\n return modifier\n}\n\nexport default {\n id: 'modifiers/base',\n install,\n startAll,\n setAll,\n prepareStates,\n start,\n beforeMove,\n beforeEnd,\n stop,\n shouldDo,\n getModifierList,\n getRectOffset,\n makeModifier,\n} as Interact.Plugin\n\nexport {\n makeModifier,\n}\n","import { EventPhase } from '@interactjs/core/InteractEvent'\nimport modifiers from '@interactjs/modifiers/base'\nimport * as utils from '@interactjs/utils'\nimport raf from '@interactjs/utils/raf'\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Resume = 'resume',\n InertiaStart = 'inertiastart',\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n inertia?: {\n active: boolean\n smoothEnd: boolean\n allowResume: boolean\n\n startEvent?: Interact.InteractEvent\n upCoords: {\n page: Interact.Point\n client: Interact.Point\n timeStamp: number\n }\n\n xe?: number\n ye?: number\n sx?: number\n sy?: number\n\n t0?: number\n te?: number\n v0?: number\n vx0?: number\n vy0?: number\n duration?: number\n modifiedXe?: number\n modifiedYe?: number\n\n lambda_v0?: number // eslint-disable-line camelcase\n one_ve_v0?: number // eslint-disable-line camelcase\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface PerActionDefaults {\n inertia?: {\n enabled?: boolean,\n resistance?: number, // the lambda in exponential decay\n minSpeed?: number, // target speed must be above this for inertia to start\n endSpeed?: number, // the speed at which inertia is slow enough to stop\n allowResume?: true, // allow resuming an action in inertia phase\n smoothEndDuration?: number, // animate to snap/restrict endOnly if there's no inertia\n } | boolean // FIXME\n }\n}\n\n(EventPhase as any).Resume = 'resume'\n; (EventPhase as any).InertiaStart = 'inertiastart'\n\nfunction install (scope: Interact.Scope) {\n const {\n interactions,\n defaults,\n } = scope\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.inertia = {\n active : false,\n smoothEnd : false,\n allowResume: false,\n upCoords : {} as any,\n timeout : null,\n }\n })\n\n // FIXME proper signal typing\n interactions.signals.on('before-action-end', (arg) => release(arg as any, scope))\n interactions.signals.on('down', (arg) => resume(arg as any, scope))\n interactions.signals.on('stop', (arg) => stop(arg as any))\n\n defaults.perAction.inertia = {\n enabled : false,\n resistance : 10, // the lambda in exponential decay\n minSpeed : 100, // target speed must be above this for inertia to start\n endSpeed : 10, // the speed at which inertia is slow enough to stop\n allowResume : true, // allow resuming an action in inertia phase\n smoothEndDuration: 300, // animate to snap/restrict endOnly if there's no inertia\n }\n\n scope.usePlugin(modifiers)\n}\n\nfunction resume (\n { interaction, event, pointer, eventTarget }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n // Check if the down event hits the current inertia target\n if (state.active) {\n let element = eventTarget\n\n // climb up the DOM tree from the event target\n while (utils.is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n // stop inertia\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n\n // update pointers to the down event's coordinates\n interaction.updatePointer(pointer, event, eventTarget, true)\n utils.pointer.setCoords(\n interaction.coords.cur,\n interaction.pointers.map((p) => p.pointer),\n interaction._now()\n )\n\n // fire appropriate signals\n const signalArg = {\n interaction,\n }\n\n scope.interactions.signals.fire('action-resume', signalArg)\n\n // fire a reume event\n const resumeEvent = new scope.InteractEvent(\n interaction, event, interaction.prepared.name, EventPhase.Resume, interaction.element)\n\n interaction._fireEvent(resumeEvent)\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n break\n }\n\n element = utils.dom.parentNode(element)\n }\n }\n}\n\nfunction release (\n { interaction, event, noPreEnd }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n const state = interaction.inertia\n\n if (!interaction.interacting() ||\n (interaction.simulation && interaction.simulation.active) ||\n noPreEnd) {\n return null\n }\n\n const options = getOptions(interaction)\n\n const now = interaction._now()\n const { client: velocityClient } = interaction.coords.velocity\n const pointerSpeed = utils.hypot(velocityClient.x, velocityClient.y)\n\n let smoothEnd = false\n let modifierResult: ReturnType\n\n // check if inertia should be started\n const inertiaPossible = (options && options.enabled &&\n interaction.prepared.name !== 'gesture' &&\n event !== state.startEvent)\n\n const inertia = (inertiaPossible &&\n (now - interaction.coords.cur.timeStamp) < 50 &&\n pointerSpeed > options.minSpeed &&\n pointerSpeed > options.endSpeed)\n\n const modifierArg = {\n interaction,\n pageCoords: utils.extend({}, interaction.coords.cur.page),\n states: inertiaPossible && interaction.modifiers.states.map(\n (modifierStatus) => utils.extend({}, modifierStatus)\n ),\n preEnd: true,\n prevCoords: undefined,\n requireEndOnly: null,\n }\n\n // smoothEnd\n if (inertiaPossible && !inertia) {\n modifierArg.prevCoords = interaction.prevEvent.page\n modifierArg.requireEndOnly = false\n modifierResult = modifiers.setAll(modifierArg)\n\n if (modifierResult.changed) {\n smoothEnd = true\n }\n }\n\n if (!(inertia || smoothEnd)) { return null }\n\n utils.pointer.copyCoords(state.upCoords, interaction.coords.cur)\n\n interaction.pointers[0].pointer = state.startEvent = new scope.InteractEvent(\n interaction,\n event,\n // FIXME add proper typing Action.name\n interaction.prepared.name as T,\n EventPhase.InertiaStart,\n interaction.element,\n )\n\n state.t0 = now\n\n state.active = true\n state.allowResume = options.allowResume\n interaction.simulation = state\n\n interaction.interactable.fire(state.startEvent)\n\n if (inertia) {\n state.vx0 = interaction.coords.velocity.client.x\n state.vy0 = interaction.coords.velocity.client.y\n state.v0 = pointerSpeed\n\n calcInertia(interaction, state)\n\n utils.extend(modifierArg.pageCoords, interaction.coords.cur.page)\n\n modifierArg.pageCoords.x += state.xe\n modifierArg.pageCoords.y += state.ye\n modifierArg.prevCoords = undefined\n modifierArg.requireEndOnly = true\n\n modifierResult = modifiers.setAll(modifierArg)\n\n state.modifiedXe += modifierResult.delta.x\n state.modifiedYe += modifierResult.delta.y\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.smoothEnd = true\n state.xe = modifierResult.delta.x\n state.ye = modifierResult.delta.y\n\n state.sx = state.sy = 0\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n\n return false\n}\n\nfunction stop ({ interaction }: Interact.SignalArg) {\n const state = interaction.inertia\n if (state.active) {\n raf.cancel(state.timeout)\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction calcInertia (interaction: Interact.Interaction, state) {\n const options = getOptions(interaction)\n const lambda = options.resistance\n const inertiaDur = -Math.log(options.endSpeed / state.v0) / lambda\n\n state.x0 = interaction.prevEvent.page.x\n state.y0 = interaction.prevEvent.page.y\n state.t0 = state.startEvent.timeStamp / 1000\n state.sx = state.sy = 0\n\n state.modifiedXe = state.xe = (state.vx0 - inertiaDur) / lambda\n state.modifiedYe = state.ye = (state.vy0 - inertiaDur) / lambda\n state.te = inertiaDur\n\n state.lambda_v0 = lambda / state.v0\n state.one_ve_v0 = 1 - options.endSpeed / state.v0\n}\n\nfunction inertiaTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n utils.pointer.setCoordDeltas(interaction.coords.delta, interaction.coords.prev, interaction.coords.cur)\n utils.pointer.setCoordVelocity(interaction.coords.velocity, interaction.coords.delta)\n\n const state = interaction.inertia\n const options = getOptions(interaction)\n const lambda = options.resistance\n const t = interaction._now() / 1000 - state.t0\n\n if (t < state.te) {\n const progress = 1 - (Math.exp(-lambda * t) - state.lambda_v0) / state.one_ve_v0\n\n if (state.modifiedXe === state.xe && state.modifiedYe === state.ye) {\n state.sx = state.xe * progress\n state.sy = state.ye * progress\n }\n else {\n const quadPoint = utils.getQuadraticCurvePoint(\n 0, 0,\n state.xe, state.ye,\n state.modifiedXe, state.modifiedYe,\n progress)\n\n state.sx = quadPoint.x\n state.sy = quadPoint.y\n }\n\n interaction.move()\n\n state.timeout = raf.request(() => inertiaTick(interaction))\n }\n else {\n state.sx = state.modifiedXe\n state.sy = state.modifiedYe\n\n interaction.move()\n interaction.end(state.startEvent)\n state.active = false\n interaction.simulation = null\n }\n\n utils.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur)\n}\n\nfunction smothEndTick (interaction: Interact.Interaction) {\n updateInertiaCoords(interaction)\n\n const state = interaction.inertia\n const t = interaction._now() - state.t0\n const { smoothEndDuration: duration } = getOptions(interaction)\n\n if (t < duration) {\n state.sx = utils.easeOutQuad(t, 0, state.xe, duration)\n state.sy = utils.easeOutQuad(t, 0, state.ye, duration)\n\n interaction.move()\n\n state.timeout = raf.request(() => smothEndTick(interaction))\n }\n else {\n state.sx = state.xe\n state.sy = state.ye\n\n interaction.move()\n interaction.end(state.startEvent)\n\n state.smoothEnd =\n state.active = false\n interaction.simulation = null\n }\n}\n\nfunction updateInertiaCoords (interaction: Interact.Interaction) {\n const state = interaction.inertia\n\n // return if inertia isn't running\n if (!state.active) { return }\n\n const pageUp = state.upCoords.page\n const clientUp = state.upCoords.client\n\n utils.pointer.setCoords(interaction.coords.cur, [ {\n pageX : pageUp.x + state.sx,\n pageY : pageUp.y + state.sy,\n clientX: clientUp.x + state.sx,\n clientY: clientUp.y + state.sy,\n } ], interaction._now())\n}\n\nfunction getOptions ({ interactable, prepared }: Interact.Interaction) {\n return interactable &&\n interactable.options &&\n prepared.name &&\n interactable.options[prepared.name].inertia\n}\n\nexport default {\n id: 'inertia',\n install,\n calcInertia,\n inertiaTick,\n smothEndTick,\n updateInertiaCoords,\n}\n","import * as is from '@interactjs/utils/is'\nimport rectUtils from '@interactjs/utils/rect'\n\nfunction start ({ rect, startOffset, state }) {\n const { options } = state\n const { elementRect } = options\n const offset = {} as { [key: string]: number }\n\n if (rect && elementRect) {\n offset.left = startOffset.left - (rect.width * elementRect.left)\n offset.top = startOffset.top - (rect.height * elementRect.top)\n\n offset.right = startOffset.right - (rect.width * (1 - elementRect.right))\n offset.bottom = startOffset.bottom - (rect.height * (1 - elementRect.bottom))\n }\n else {\n offset.left = offset.top = offset.right = offset.bottom = 0\n }\n\n state.offset = offset\n}\n\nfunction set ({ coords, interaction, state }) {\n const { options, offset } = state\n\n const restriction = getRestrictionRect(options.restriction, interaction, coords)\n\n if (!restriction) { return state }\n\n const rect = restriction\n\n // object is assumed to have\n // x, y, width, height or\n // left, top, right, bottom\n if ('x' in restriction && 'y' in restriction) {\n coords.x = Math.max(Math.min(rect.x + rect.width - offset.right, coords.x), rect.x + offset.left)\n coords.y = Math.max(Math.min(rect.y + rect.height - offset.bottom, coords.y), rect.y + offset.top)\n }\n else {\n coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left)\n coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top)\n }\n}\n\nfunction getRestrictionRect (value, interaction, coords?: Interact.Point) {\n if (is.func(value)) {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction])\n } else {\n return rectUtils.resolveRectLike(value, interaction.interactable, interaction.element)\n }\n}\n\nconst restrict = {\n start,\n set,\n getRestrictionRect,\n defaults: {\n enabled: false,\n restriction: null,\n elementRect: null,\n },\n}\n\nexport default restrict\n","// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictEdges: {\n// inner: { top: 200, left: 200, right: 400, bottom: 400 },\n// outer: { top: 0, left: 0, right: 600, bottom: 600 },\n// },\n// })\n\nimport Interaction from '@interactjs/core/Interaction'\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrict from './pointer'\n\nconst { getRestrictionRect } = restrict\nconst noInner = { top: +Infinity, left: +Infinity, bottom: -Infinity, right: -Infinity }\nconst noOuter = { top: -Infinity, left: -Infinity, bottom: +Infinity, right: +Infinity }\n\nfunction start ({ interaction, state }: { interaction: Interaction, state: any }) {\n const { options } = state\n const startOffset = interaction.modifiers.startOffset\n let offset\n\n if (options) {\n const offsetRect = getRestrictionRect(options.offset, interaction, interaction.coords.start.page)\n\n offset = rectUtils.rectToXY(offsetRect)\n }\n\n offset = offset || { x: 0, y: 0 }\n\n state.offset = {\n top: offset.y + startOffset.top,\n left: offset.x + startOffset.left,\n bottom: offset.y - startOffset.bottom,\n right: offset.x - startOffset.right,\n }\n}\n\nfunction set ({ coords, interaction, state }: {\n coords: Interact.Point,\n interaction: Interaction,\n state: any\n}) {\n const { offset, options } = state\n const edges = interaction.prepared._linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const page = extend({}, coords)\n const inner = getRestrictionRect(options.inner, interaction, page) || {}\n const outer = getRestrictionRect(options.outer, interaction, page) || {}\n\n fixRect(inner, noInner)\n fixRect(outer, noOuter)\n\n if (edges.top) {\n coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top)\n }\n else if (edges.bottom) {\n coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom)\n }\n if (edges.left) {\n coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left)\n }\n else if (edges.right) {\n coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right)\n }\n}\n\nfunction fixRect (rect, defaults) {\n for (const edge of ['top', 'left', 'bottom', 'right']) {\n if (!(edge in rect)) {\n rect[edge] = defaults[edge]\n }\n }\n\n return rect\n}\n\nconst restrictEdges = {\n noInner,\n noOuter,\n getRestrictionRect,\n start,\n set,\n defaults: {\n enabled: false,\n inner: null,\n outer: null,\n offset: null,\n },\n}\n\nexport default restrictEdges\n","// This module adds the options.resize.restrictSize setting which sets min and\n// max width and height for the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictSize: {\n// min: { width: -600, height: -600 },\n// max: { width: 600, height: 600 },\n// },\n// })\n\nimport extend from '@interactjs/utils/extend'\nimport rectUtils from '@interactjs/utils/rect'\nimport restrictEdges from './edges'\n\nconst noMin = { width: -Infinity, height: -Infinity }\nconst noMax = { width: +Infinity, height: +Infinity }\n\nfunction start (arg) {\n return restrictEdges.start(arg)\n}\n\nfunction set (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.linkedEdges || interaction.prepared.edges\n\n if (!edges) {\n return\n }\n\n const rect = rectUtils.xywhToTlbr(interaction.resizeRects.inverted)\n\n const minSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.min, interaction)) || noMin\n const maxSize = rectUtils.tlbrToXywh(restrictEdges.getRestrictionRect(options.max, interaction)) || noMax\n\n state.options = {\n enabled: options.enabled,\n endOnly: options.endOnly,\n inner: extend({}, restrictEdges.noInner),\n outer: extend({}, restrictEdges.noOuter),\n }\n\n if (edges.top) {\n state.options.inner.top = rect.bottom - minSize.height\n state.options.outer.top = rect.bottom - maxSize.height\n }\n else if (edges.bottom) {\n state.options.inner.bottom = rect.top + minSize.height\n state.options.outer.bottom = rect.top + maxSize.height\n }\n if (edges.left) {\n state.options.inner.left = rect.right - minSize.width\n state.options.outer.left = rect.right - maxSize.width\n }\n else if (edges.right) {\n state.options.inner.right = rect.left + minSize.width\n state.options.outer.right = rect.left + maxSize.width\n }\n\n restrictEdges.set(arg)\n\n state.options = options\n}\n\nconst restrictSize = {\n start,\n set,\n defaults: {\n enabled: false,\n min: null,\n max: null,\n },\n}\n\nexport default restrictSize\n","import * as utils from '@interactjs/utils'\n\nfunction start (arg: Interact.SignalArg) {\n const { interaction, interactable, element, rect, state, startOffset } = arg\n const { options } = state\n const offsets = []\n const origin = options.offsetWithOrigin\n ? getOrigin(arg)\n : { x: 0, y: 0 }\n\n let snapOffset\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.coords.start.page.x,\n y: interaction.coords.start.page.y,\n }\n }\n else {\n const offsetRect = utils.rect.resolveRectLike(options.offset, interactable, element, [interaction])\n\n snapOffset = utils.rect.rectToXY(offsetRect) || { x: 0, y: 0 }\n snapOffset.x += origin.x\n snapOffset.y += origin.y\n }\n\n const relativePoints = options.relativePoints || []\n\n if (rect && options.relativePoints && options.relativePoints.length) {\n for (let index = 0; index < relativePoints.length; index++) {\n const relativePoint = relativePoints[index]\n\n offsets.push({\n index,\n relativePoint,\n x: startOffset.left - (rect.width * relativePoint.x) + snapOffset.x,\n y: startOffset.top - (rect.height * relativePoint.y) + snapOffset.y,\n })\n }\n }\n else {\n offsets.push(utils.extend({\n index: 0,\n relativePoint: null,\n }, snapOffset))\n }\n\n state.offsets = offsets\n}\n\nfunction set (arg: Interact.SignalArg) {\n const { interaction, coords, state } = arg\n const { options, offsets } = state\n\n const origin = utils.getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name)\n const page = utils.extend({}, coords)\n const targets = []\n let target\n\n if (!options.offsetWithOrigin) {\n page.x -= origin.x\n page.y -= origin.y\n }\n\n state.realX = page.x\n state.realY = page.y\n\n for (const offset of offsets) {\n const relativeX = page.x - offset.x\n const relativeY = page.y - offset.y\n\n for (let index = 0, len = options.targets.length; index < len; index++) {\n const snapTarget = options.targets[index]\n if (utils.is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction, offset, index)\n }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\n\n targets.push({\n x: (utils.is.number(target.x) ? target.x : relativeX) + offset.x,\n y: (utils.is.number(target.y) ? target.y : relativeY) + offset.y,\n\n range: utils.is.number(target.range) ? target.range : options.range,\n })\n }\n }\n\n const closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n dx: 0,\n dy: 0,\n }\n\n for (let i = 0, len = targets.length; i < len; i++) {\n target = targets[i]\n\n const range = target.range\n const dx = target.x - page.x\n const dy = target.y - page.y\n const distance = utils.hypot(dx, dy)\n let inRange = distance <= range\n\n // Infinite targets count as being out of range\n // compared to non infinite ones that are in range\n if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n inRange = false\n }\n\n if (!closest.target || (inRange\n // is the closest target in range?\n ? (closest.inRange && range !== Infinity\n // the pointer is relatively deeper in this target\n ? distance / range < closest.distance / closest.range\n // this target has Infinite range and the closest doesn't\n : (range === Infinity && closest.range !== Infinity) ||\n // OR this target is closer that the previous closest\n distance < closest.distance)\n // The other is not in range and the pointer is closer to this target\n : (!closest.inRange && distance < closest.distance))) {\n closest.target = target\n closest.distance = distance\n closest.range = range\n closest.inRange = inRange\n closest.dx = dx\n closest.dy = dy\n\n state.range = range\n }\n }\n\n if (closest.inRange) {\n coords.x = closest.target.x\n coords.y = closest.target.y\n }\n\n state.closest = closest\n}\n\nfunction getOrigin (arg: Partial) {\n const optionsOrigin = utils.rect.rectToXY(\n utils.rect.resolveRectLike(arg.state.options.origin)\n )\n const origin = optionsOrigin || utils.getOriginXY(\n arg.interactable,\n arg.interaction.element,\n arg.interaction.prepared.name,\n )\n\n return origin\n}\n\nconst snap = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n offsetWithOrigin: true,\n\n relativePoints: null,\n },\n}\n\nexport default snap\n","// This module allows snapping of the size of targets during resize\n// interactions.\n\nimport extend from '@interactjs/utils/extend'\nimport * as is from '@interactjs/utils/is'\nimport snap from './pointer'\n\nfunction start (arg) {\n const { interaction, state } = arg\n const { options } = state\n const edges = interaction.prepared.edges\n\n if (!edges) { return null }\n\n arg.state = {\n options: {\n relativePoints: [{\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1,\n }],\n origin: { x: 0, y: 0 },\n offset: options.offset || 'self',\n range: options.range,\n },\n }\n\n state.targetFields = state.targetFields || [\n ['width', 'height'],\n ['x', 'y'],\n ]\n\n snap.start(arg)\n state.offsets = arg.state.offsets\n\n arg.state = state\n}\n\nfunction set (arg) {\n const { interaction, state, coords } = arg\n const { options, offsets } = state\n const relative = {\n x: coords.x - offsets[0].x,\n y: coords.y - offsets[0].y,\n }\n\n state.options = extend({}, options)\n state.options.targets = []\n\n for (const snapTarget of (options.targets || [])) {\n let target\n\n if (is.func(snapTarget)) {\n target = snapTarget(relative.x, relative.y, interaction)\n }\n else {\n target = snapTarget\n }\n\n if (!target) { continue }\n\n for (const [xField, yField] of state.targetFields) {\n if (xField in target || yField in target) {\n target.x = target[xField]\n target.y = target[yField]\n\n break\n }\n }\n\n state.options.targets.push(target)\n }\n\n snap.set(arg)\n\n state.options = options\n}\n\nconst snapSize = {\n start,\n set,\n defaults: {\n enabled: false,\n range : Infinity,\n targets: null,\n offset: null,\n },\n}\n\nexport default snapSize\n","/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\n * interact(target).resizable({\n * snapEdges: {\n * targets: [interact.snappers.grid({ x: 100, y: 50 })],\n * },\n * })\n *\n * interact(target).resizable({\n * snapEdges: {\n * targets: [\n * interact.snappers.grid({\n * top: 50,\n * left: 50,\n * bottom: 100,\n * right: 100,\n * }),\n * ],\n * },\n * })\n */\n\nimport clone from '@interactjs/utils/clone'\nimport extend from '@interactjs/utils/extend'\nimport snapSize from './size'\n\nfunction start (arg) {\n const edges = arg.interaction.prepared.edges\n\n if (!edges) { return null }\n\n arg.state.targetFields = arg.state.targetFields || [\n [edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom'],\n ]\n\n return snapSize.start(arg)\n}\n\nfunction set (arg) {\n return snapSize.set(arg)\n}\n\nconst snapEdges = {\n start,\n set,\n defaults: extend(clone(snapSize.defaults), {\n offset: { x: 0, y: 0 },\n }),\n}\n\nexport default snapEdges\n","import base from './base'\nimport restrictEdgesModule from './restrict/edges'\nimport restrictModule from './restrict/pointer'\nimport restrictSizeModule from './restrict/size'\nimport snapEdgesModule from './snap/edges'\nimport snapModule from './snap/pointer'\nimport snapSizeModule from './snap/size'\n\nconst { makeModifier } = base\n\nexport const snap = makeModifier(snapModule, 'snap')\nexport const snapSize = makeModifier(snapSizeModule, 'snapSize')\nexport const snapEdges = makeModifier(snapEdgesModule, 'snapEdges')\nexport const restrict = makeModifier(restrictModule, 'restrict')\nexport const restrictEdges = makeModifier(restrictEdgesModule, 'restrictEdges')\nexport const restrictSize = makeModifier(restrictSizeModule, 'restrictSize')\n","import BaseEvent from '@interactjs/core/BaseEvent'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\n\n/** */\nexport default class PointerEvent extends BaseEvent {\n type: T\n originalEvent: Interact.PointerEventType\n pointerId: number\n pointerType: string\n double: boolean\n pageX: number\n pageY: number\n clientX: number\n clientY: number\n dt: number\n eventable: any\n\n /** */\n constructor (\n type: T,\n pointer: Interact.PointerType | PointerEvent,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n interaction: Interact.Interaction,\n timeStamp: number,\n ) {\n super(interaction)\n pointerUtils.pointerExtend(this, event)\n\n if (event !== pointer) {\n pointerUtils.pointerExtend(this, pointer)\n }\n\n this.timeStamp = timeStamp\n this.originalEvent = event\n this.type = type\n this.pointerId = pointerUtils.getPointerId(pointer)\n this.pointerType = pointerUtils.getPointerType(pointer)\n this.target = eventTarget\n this.currentTarget = null\n\n if (type === 'tap') {\n const pointerIndex = interaction.getPointerIndex(pointer)\n this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime\n\n const interval = this.timeStamp - interaction.tapTime\n\n this.double = !!(interaction.prevTap &&\n interaction.prevTap.type !== 'doubletap' &&\n interaction.prevTap.target === this.target &&\n interval < 500)\n }\n else if (type === 'doubletap') {\n this.dt = (pointer as PointerEvent<'tap'>).timeStamp - interaction.tapTime\n }\n }\n\n _subtractOrigin ({ x: originX, y: originY }) {\n this.pageX -= originX\n this.pageY -= originY\n this.clientX -= originX\n this.clientY -= originY\n\n return this\n }\n\n _addOrigin ({ x: originX, y: originY }) {\n this.pageX += originX\n this.pageY += originY\n this.clientX += originX\n this.clientY += originY\n\n return this\n }\n\n /**\n * Prevent the default behaviour of the original Event\n */\n preventDefault () {\n this.originalEvent.preventDefault()\n }\n}\n","import { PerActionDefaults } from '@interactjs/core/defaultOptions'\nimport Eventable from '@interactjs/core/Eventable'\nimport Interaction from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport PointerEvent from './PointerEvent'\n\nexport type EventTargetList = Array<{\n node: Node,\n eventable: Eventable,\n props: { [key: string]: any },\n}>\n\nexport interface PointerEventOptions extends PerActionDefaults {\n enabled?: undefined // not used\n holdDuration?: number,\n ignoreFrom?: any,\n allowFrom?: any,\n origin?: Interact.Point | string | Element\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n pointerEvents: typeof pointerEvents\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n prevTap?: PointerEvent\n tapTime?: number\n }\n}\n\ndeclare module '@interactjs/core/PointerInfo' {\n interface PointerInfo {\n hold?: {\n duration: number\n timeout: any\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n pointerEvents: Interact.Options\n }\n}\n\nconst signals = new utils.Signals()\nconst simpleSignals = [ 'down', 'up', 'cancel' ]\nconst simpleEvents = [ 'down', 'up', 'cancel' ]\n\nconst defaults: PointerEventOptions = {\n holdDuration: 600,\n ignoreFrom : null,\n allowFrom : null,\n origin : { x: 0, y: 0 },\n}\n\nconst pointerEvents = {\n id: 'pointer-events/base',\n install,\n signals,\n PointerEvent,\n fire,\n collectEventTargets,\n createSignalListener,\n defaults,\n types: [\n 'down',\n 'move',\n 'up',\n 'cancel',\n 'tap',\n 'doubletap',\n 'hold',\n ],\n}\n\nfunction fire (arg: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n targets?: EventTargetList,\n pointerEvent?: PointerEvent,\n type: T\n}, scope: Interact.Scope) {\n const {\n interaction, pointer, event, eventTarget,\n type = (arg as any).pointerEvent.type,\n targets = collectEventTargets(arg),\n } = arg\n\n const {\n pointerEvent = new PointerEvent(type, pointer, event, eventTarget, interaction, scope.now()),\n } = arg\n\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n targets,\n type,\n pointerEvent,\n }\n\n for (let i = 0; i < targets.length; i++) {\n const target = targets[i]\n\n for (const prop in target.props || {}) {\n (pointerEvent as any)[prop] = target.props[prop]\n }\n\n const origin = utils.getOriginXY(target.eventable, target.node)\n\n pointerEvent._subtractOrigin(origin)\n pointerEvent.eventable = target.eventable\n pointerEvent.currentTarget = target.node\n\n target.eventable.fire(pointerEvent)\n\n pointerEvent._addOrigin(origin)\n\n if (pointerEvent.immediatePropagationStopped ||\n (pointerEvent.propagationStopped &&\n (i + 1) < targets.length && targets[i + 1].node !== pointerEvent.currentTarget)) {\n break\n }\n }\n\n signals.fire('fired', signalArg)\n\n if (type === 'tap') {\n // if pointerEvent should make a double tap, create and fire a doubletap\n // PointerEvent and use that as the prevTap\n const prevTap = pointerEvent.double\n ? fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'doubletap',\n }, scope)\n : pointerEvent\n\n interaction.prevTap = prevTap\n interaction.tapTime = prevTap.timeStamp\n }\n\n return pointerEvent\n}\n\nfunction collectEventTargets ({ interaction, pointer, event, eventTarget, type }: {\n interaction: Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n type: T\n}) {\n const pointerIndex = interaction.getPointerIndex(pointer)\n const pointerInfo = interaction.pointers[pointerIndex]\n\n // do not fire a tap event if the pointer was moved before being lifted\n if (type === 'tap' && (interaction.pointerWasMoved ||\n // or if the pointerup target is different to the pointerdown target\n !(pointerInfo && pointerInfo.downTarget === eventTarget))) {\n return []\n }\n\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type,\n path,\n targets: [] as EventTargetList,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter((target) =>\n target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration)\n }\n\n return signalArg.targets\n}\n\nfunction install (scope: Scope) {\n const {\n interactions,\n } = scope\n\n scope.pointerEvents = pointerEvents\n scope.defaults.actions.pointerEvents = pointerEvents.defaults\n\n interactions.signals.on('new', ({ interaction }) => {\n interaction.prevTap = null // the most recent tap event on this interaction\n interaction.tapTime = 0 // time of the most recent tap event\n })\n\n interactions.signals.on('update-pointer', ({ down, pointerInfo }) => {\n if (!down && pointerInfo.hold) {\n return\n }\n\n pointerInfo.hold = { duration: Infinity, timeout: null }\n })\n\n interactions.signals.on('move', ({ interaction, pointer, event, eventTarget, duplicateMove }) => {\n const pointerIndex = interaction.getPointerIndex(pointer)\n\n if (!duplicateMove && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n\n fire({\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'move',\n }, scope)\n }\n })\n\n interactions.signals.on('down', ({ interaction, pointer, event, eventTarget, pointerIndex }) => {\n const timer = interaction.pointers[pointerIndex].hold\n const path = utils.dom.getPath(eventTarget)\n const signalArg = {\n interaction,\n pointer,\n event,\n eventTarget,\n type: 'hold',\n targets: [] as EventTargetList,\n path,\n node: null,\n }\n\n for (const node of path) {\n signalArg.node = node\n\n signals.fire('collect-targets', signalArg)\n }\n\n if (!signalArg.targets.length) { return }\n\n let minDuration = Infinity\n\n for (const target of signalArg.targets) {\n const holdDuration = target.eventable.options.holdDuration\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration\n }\n }\n\n timer.duration = minDuration\n timer.timeout = setTimeout(() => {\n fire({\n interaction,\n eventTarget,\n pointer,\n event,\n type: 'hold',\n }, scope)\n }, minDuration)\n })\n\n for (const signalName of ['up', 'cancel']) {\n interactions.signals.on(signalName, ({ interaction, pointerIndex }) => {\n if (interaction.pointers[pointerIndex].hold) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout)\n }\n })\n }\n\n for (let i = 0; i < simpleSignals.length; i++) {\n interactions.signals.on(simpleSignals[i], createSignalListener(simpleEvents[i], scope))\n }\n\n interactions.signals.on('up', ({ interaction, pointer, event, eventTarget }) => {\n if (!interaction.pointerWasMoved) {\n fire({ interaction, eventTarget, pointer, event, type: 'tap' }, scope)\n }\n })\n}\n\nfunction createSignalListener (type: string, scope) {\n return function ({ interaction, pointer, event, eventTarget }: any) {\n fire({ interaction, eventTarget, pointer, event, type }, scope)\n }\n}\n\nexport default pointerEvents\n","import basePlugin from './base'\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n holdIntervalHandle?: any\n }\n}\n\ndeclare module '@interactjs/pointer-events/base' {\n interface PointerEventOptions {\n holdRepeatInterval?: number\n }\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n pointerEvents,\n interactions,\n } = scope\n\n scope.usePlugin(basePlugin)\n\n pointerEvents.signals.on('new', onNew)\n pointerEvents.signals.on('fired', (arg) => onFired(arg as any, scope))\n\n for (const signal of ['move', 'up', 'cancel', 'endall']) {\n interactions.signals.on(signal, endHoldRepeat)\n }\n\n // don't repeat by default\n pointerEvents.defaults.holdRepeatInterval = 0\n pointerEvents.types.push('holdrepeat')\n}\n\nfunction onNew ({ pointerEvent }) {\n if (pointerEvent.type !== 'hold') { return }\n\n pointerEvent.count = (pointerEvent.count || 0) + 1\n}\n\nfunction onFired (\n { interaction, pointerEvent, eventTarget, targets }: Interact.SignalArg,\n scope: Interact.Scope\n) {\n if (pointerEvent.type !== 'hold' || !targets.length) { return }\n\n // get the repeat interval from the first eventable\n const interval = targets[0].eventable.options.holdRepeatInterval\n\n // don't repeat if the interval is 0 or less\n if (interval <= 0) { return }\n\n // set a timeout to fire the holdrepeat event\n interaction.holdIntervalHandle = setTimeout(() => {\n scope.pointerEvents.fire({\n interaction,\n eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent,\n }, scope)\n }, interval)\n}\n\nfunction endHoldRepeat ({ interaction }) {\n // set the interaction's holdStopTime property\n // to stop further holdRepeat events\n if (interaction.holdIntervalHandle) {\n clearInterval(interaction.holdIntervalHandle)\n interaction.holdIntervalHandle = null\n }\n}\n\nexport default {\n id: 'pointer-events/holdRepeat',\n install,\n} as Interact.Plugin\n","import { Scope } from '@interactjs/core/scope'\nimport { merge } from '@interactjs/utils/arr'\nimport extend from '@interactjs/utils/extend'\n\ntype Interactable = import ('@interactjs/core/Interactable').default\ntype EventTargetList = import ('./base').EventTargetList\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n pointerEvents: typeof pointerEventsMethod\n __backCompatOption: (optionName: string, newValue: any) => any\n }\n}\n\nfunction install (scope: Scope) {\n const {\n pointerEvents,\n actions,\n Interactable,\n interactables,\n } = scope\n\n pointerEvents.signals.on('collect-targets', ({\n targets,\n node,\n type,\n eventTarget,\n }: {\n targets: EventTargetList,\n node: Node,\n type: string,\n eventTarget: Element,\n }) => {\n scope.interactables.forEachMatch(node, (interactable: Interactable) => {\n const eventable = interactable.events\n const options = eventable.options\n\n if (\n eventable.types[type] &&\n eventable.types[type].length &&\n interactable.testIgnoreAllow(options, node, eventTarget)) {\n targets.push({\n node,\n eventable,\n props: { interactable },\n })\n }\n })\n })\n\n interactables.signals.on('new', ({ interactable }) => {\n interactable.events.getRect = function (element: Element) {\n return interactable.getRect(element)\n }\n })\n\n interactables.signals.on('set', ({ interactable, options }) => {\n extend(interactable.events.options, pointerEvents.defaults)\n extend(interactable.events.options, options.pointerEvents || {})\n })\n\n merge(actions.eventTypes, pointerEvents.types)\n\n Interactable.prototype.pointerEvents = pointerEventsMethod\n\n const __backCompatOption = Interactable.prototype._backCompatOption\n\n Interactable.prototype._backCompatOption = function (optionName, newValue) {\n const ret = __backCompatOption.call(this, optionName, newValue)\n\n if (ret === this) {\n this.events.options[optionName] = newValue\n }\n\n return ret\n }\n}\n\nfunction pointerEventsMethod (this: Interactable, options: any) {\n extend(this.events.options, options)\n\n return this\n}\n\nexport default {\n id: 'pointer-events/interactableTargets',\n install,\n}\n","import pointerEvents from './base'\nimport holdRepeat from './holdRepeat'\nimport interactableTargets from './interactableTargets'\n\nfunction install (scope) {\n scope.usePlugin(pointerEvents)\n scope.usePlugin(holdRepeat)\n scope.usePlugin(interactableTargets)\n}\n\nconst id = 'pointer-events'\n\nexport { id, pointerEvents, holdRepeat, interactableTargets, install }\n","import Interactable from '@interactjs/core/Interactable'\nimport { EventPhase } from '@interactjs/core/InteractEvent'\nimport { ActionProps, Interaction } from '@interactjs/core/Interaction'\nimport { Scope } from '@interactjs/core/scope'\nimport { arr, extend, is, pointer as pointerUtils, rect as rectUtils, win } from '@interactjs/utils'\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n reflow: (action: ActionProps) => ReturnType\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n _reflowPromise: Promise\n _reflowResolve: () => void\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n // eslint-disable-next-line no-shadow\n enum EventPhase {\n Reflow = 'reflow',\n }\n}\n\n(EventPhase as any).Reflow = 'reflow'\n\nexport function install (scope: Scope) {\n const {\n actions,\n interactions,\n /** @lends Interactable */\n // eslint-disable-next-line no-shadow\n Interactable,\n } = scope\n\n // add action reflow event types\n for (const actionName of actions.names) {\n actions.eventTypes.push(`${actionName}reflow`)\n }\n\n // remove completed reflow interactions\n interactions.signals.on('stop', ({ interaction }) => {\n if (interaction.pointerType === EventPhase.Reflow) {\n if (interaction._reflowResolve) {\n interaction._reflowResolve()\n }\n\n arr.remove(scope.interactions.list, interaction)\n }\n })\n\n /**\n * ```js\n * const interactable = interact(target)\n * const drag = { name: drag, axis: 'x' }\n * const resize = { name: resize, edges: { left: true, bottom: true }\n *\n * interactable.reflow(drag)\n * interactable.reflow(resize)\n * ```\n *\n * Start an action sequence to re-apply modifiers, check drops, etc.\n *\n * @param { Object } action The action to begin\n * @param { string } action.name The name of the action\n * @returns { Promise }\n */\n Interactable.prototype.reflow = function (action) {\n return reflow(this, action, scope)\n }\n}\n\nfunction reflow (interactable: Interactable, action: ActionProps, scope: Scope): Promise {\n const elements = is.string(interactable.target)\n ? arr.from(interactable._context.querySelectorAll(interactable.target))\n : [interactable.target]\n\n // tslint:disable-next-line variable-name\n const Promise = (win.window as any).Promise\n const promises: Array> | null = Promise ? [] : null\n\n for (const element of elements) {\n const rect = interactable.getRect(element)\n\n if (!rect) { break }\n\n const runningInteraction = arr.find(\n scope.interactions.list,\n (interaction: Interaction) => {\n return interaction.interacting() &&\n interaction.interactable === interactable &&\n interaction.element === element &&\n interaction.prepared.name === action.name\n })\n let reflowPromise: Promise\n\n if (runningInteraction) {\n runningInteraction.move()\n\n if (promises) {\n reflowPromise = runningInteraction._reflowPromise || new Promise((resolve: any) => {\n runningInteraction._reflowResolve = resolve\n })\n }\n }\n else {\n const xywh = rectUtils.tlbrToXywh(rect)\n const coords = {\n page : { x: xywh.x, y: xywh.y },\n client : { x: xywh.x, y: xywh.y },\n timeStamp: scope.now(),\n }\n\n const event = pointerUtils.coordsToEvent(coords)\n reflowPromise = startReflow(scope, interactable, element, action, event)\n }\n\n if (promises) {\n promises.push(reflowPromise)\n }\n }\n\n return promises && Promise.all(promises).then(() => interactable)\n}\n\nfunction startReflow (scope: Scope, interactable: Interactable, element: Element, action: ActionProps, event: any) {\n const interaction = scope.interactions.new({ pointerType: 'reflow' })\n const signalArg = {\n interaction,\n event,\n pointer: event,\n eventTarget: element,\n phase: EventPhase.Reflow,\n }\n\n interaction.interactable = interactable\n interaction.element = element\n interaction.prepared = extend({}, action)\n interaction.prevEvent = event\n interaction.updatePointer(event, event, element, true)\n\n interaction._doPhase(signalArg)\n\n const reflowPromise = (win.window as unknown as any).Promise\n ? new (win.window as unknown as any).Promise((resolve: any) => {\n interaction._reflowResolve = resolve\n })\n : null\n\n interaction._reflowPromise = reflowPromise\n interaction.start(action, interactable, element)\n\n if (interaction._interacting) {\n interaction.move(signalArg)\n interaction.end(event)\n }\n else {\n interaction.stop()\n }\n\n interaction.removePointer(event, event)\n interaction.pointerIsDown = false\n\n return reflowPromise\n}\n\nexport default {\n id: 'reflow',\n install,\n} as Interact.Plugin\n","/** @module interact */\n\nimport { Options } from '@interactjs/core/defaultOptions'\nimport Interactable from '@interactjs/core/Interactable'\nimport { Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils'\nimport browser from '@interactjs/utils/browser'\nimport events from '@interactjs/utils/events'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n interact: InteractStatic\n }\n}\n\nexport interface InteractStatic {\n (target: Interact.Target, options?: Options): Interactable\n on: typeof on\n pointerMoveTolerance: typeof pointerMoveTolerance\n stop: typeof stop\n supportsPointerEvent: typeof supportsPointerEvent\n supportsTouch: typeof supportsTouch\n debug: typeof debug\n off: typeof off\n isSet: typeof isSet\n use: typeof use\n getPointerAverage: typeof utils.pointer.pointerAverage\n getTouchBBox: typeof utils.pointer.touchBBox\n getTouchDistance: typeof utils.pointer.touchDistance\n getTouchAngle: typeof utils.pointer.touchAngle\n getElementRect: typeof utils.dom.getElementRect\n getElementClientRect: typeof utils.dom.getElementClientRect\n matchesSelector: typeof utils.dom.matchesSelector\n closest: typeof utils.dom.closest\n addDocument: typeof scope.addDocument\n removeDocument: typeof scope.removeDocument\n version: string\n}\n\nconst globalEvents: any = {}\nconst scope = new Scope()\n\n/**\n * ```js\n * interact('#draggable').draggable(true)\n *\n * var rectables = interact('rect')\n * rectables\n * .gesturable(true)\n * .on('gesturemove', function (event) {\n * // ...\n * })\n * ```\n *\n * The methods of this variable can be used to set elements as interactables\n * and also to change various default settings.\n *\n * Calling it as a function and passing an element or a valid CSS selector\n * string returns an Interactable object which has various methods to configure\n * it.\n *\n * @global\n *\n * @param {Element | string} target The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */\nexport const interact: InteractStatic = function interact (target: Interact.Target, options?: any) {\n let interactable = scope.interactables.get(target, options)\n\n if (!interactable) {\n interactable = scope.interactables.new(target, options)\n interactable.events.global = globalEvents\n }\n\n return interactable\n} as InteractStatic\n\n/**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n * @param {Object} plugin\n * @param {function} plugin.install\n * @return {interact}\n */\ninteract.use = use\nfunction use (plugin: Interact.Plugin, options?: { [key: string]: any }) {\n scope.usePlugin(plugin, options)\n\n return interact\n}\n\n/**\n * Check if an element or selector has been set with the {@link interact}\n * function\n *\n * @alias module:interact.isSet\n *\n * @param {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\ninteract.isSet = isSet\nfunction isSet (target: Element, options?: any) {\n return !!scope.interactables.get(target, options && options.context)\n}\n\n/**\n * Add a global listener for an InteractEvent or adds a DOM event to `document`\n *\n * @alias module:interact.on\n *\n * @param {string | array | object} type The types of events to listen for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] object or useCapture flag for\n * addEventListener\n * @return {object} interact\n */\ninteract.on = on\nfunction on (type: string | Interact.EventTypes, listener: Interact.ListenersArg, options?) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of (type as any[])) {\n interact.on(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.on(prop, (type as Interact.EventTypes)[prop], listener)\n }\n\n return interact\n }\n\n // if it is an InteractEvent type, add listener to globalEvents\n if (utils.arr.contains(scope.actions.eventTypes, type)) {\n // if this type of event was never bound\n if (!globalEvents[type]) {\n globalEvents[type] = [listener]\n }\n else {\n globalEvents[type].push(listener)\n }\n }\n // If non InteractEvent type, addEventListener to document\n else {\n events.add(scope.document, type, listener as Interact.Listener, { options })\n }\n\n return interact\n}\n\n/**\n * Removes a global InteractEvent listener or DOM event from `document`\n *\n * @alias module:interact.off\n *\n * @param {string | array | object} type The types of events that were listened\n * for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} options [options] object or useCapture flag for\n * removeEventListener\n * @return {object} interact\n */\ninteract.off = off\nfunction off (type, listener, options) {\n if (utils.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/)\n }\n\n if (utils.is.array(type)) {\n for (const eventType of type) {\n interact.off(eventType, listener, options)\n }\n\n return interact\n }\n\n if (utils.is.object(type)) {\n for (const prop in type) {\n interact.off(prop, type[prop], listener)\n }\n\n return interact\n }\n\n if (!utils.arr.contains(scope.actions.eventTypes, type)) {\n events.remove(scope.document, type, listener, options)\n }\n else {\n let index\n\n if (type in globalEvents &&\n (index = globalEvents[type].indexOf(listener)) !== -1) {\n globalEvents[type].splice(index, 1)\n }\n }\n\n return interact\n}\n\n/**\n * Returns an object which exposes internal data\n * @alias module:interact.debug\n *\n * @return {object} An object with properties that outline the current state\n * and expose internal functions and variables\n */\ninteract.debug = debug\nfunction debug () {\n return scope\n}\n\n// expose the functions used to calculate multi-touch properties\ninteract.getPointerAverage = utils.pointer.pointerAverage\ninteract.getTouchBBox = utils.pointer.touchBBox\ninteract.getTouchDistance = utils.pointer.touchDistance\ninteract.getTouchAngle = utils.pointer.touchAngle\n\ninteract.getElementRect = utils.dom.getElementRect\ninteract.getElementClientRect = utils.dom.getElementClientRect\ninteract.matchesSelector = utils.dom.matchesSelector\ninteract.closest = utils.dom.closest\n\n/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\ninteract.supportsTouch = supportsTouch\nfunction supportsTouch () {\n return browser.supportsTouch\n}\n\n/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\ninteract.supportsPointerEvent = supportsPointerEvent\nfunction supportsPointerEvent () {\n return browser.supportsPointerEvent\n}\n\n/**\n * Cancels all interactions (end events are not fired)\n *\n * @alias module:interact.stop\n *\n * @return {object} interact\n */\ninteract.stop = stop\nfunction stop () {\n for (const interaction of scope.interactions.list) {\n interaction.stop()\n }\n\n return interact\n}\n\n/**\n * Returns or sets the distance the pointer must be moved before an action\n * sequence occurs. This also affects tolerance for tap events.\n *\n * @alias module:interact.pointerMoveTolerance\n *\n * @param {number} [newValue] The movement from the start position must be greater than this value\n * @return {interact | number}\n */\ninteract.pointerMoveTolerance = pointerMoveTolerance\nfunction pointerMoveTolerance (newValue) {\n if (utils.is.number(newValue)) {\n scope.interactions.pointerMoveTolerance = newValue\n\n return interact\n }\n\n return scope.interactions.pointerMoveTolerance\n}\n\nscope.interactables.signals.on('unset', ({ interactable }) => {\n scope.interactables.list.splice(scope.interactables.list.indexOf(interactable), 1)\n\n // Stop related interactions when an Interactable is unset\n for (const interaction of scope.interactions.list) {\n if (interaction.interactable === interactable && interaction.interacting() && !interaction._ending) {\n interaction.stop()\n }\n }\n})\n\ninteract.addDocument = (doc, options) => scope.addDocument(doc, options)\ninteract.removeDocument = (doc) => scope.removeDocument(doc)\n\nscope.interact = interact\n\nexport { scope }\nexport default interact\n","import * as actions from '@interactjs/actions'\nimport autoScroll from '@interactjs/auto-scroll'\nimport * as autoStart from '@interactjs/auto-start'\nimport interactablePreventDefault from '@interactjs/core/interactablePreventDefault'\nimport devTools from '@interactjs/dev-tools'\nimport inertia from '@interactjs/inertia'\nimport * as modifiers from '@interactjs/modifiers'\nimport modifiersBase from '@interactjs/modifiers/base'\nimport * as pointerEvents from '@interactjs/pointer-events'\nimport reflow from '@interactjs/reflow'\nimport interact, { scope } from './interact'\n\nexport function init (window: Window) {\n scope.init(window)\n\n interact.use(interactablePreventDefault)\n\n // inertia\n interact.use(inertia)\n\n // pointerEvents\n interact.use(pointerEvents)\n\n // autoStart, hold\n interact.use(autoStart)\n\n // drag and drop, resize, gesture\n interact.use(actions)\n\n // snap, resize, etc.\n interact.use(modifiersBase)\n\n // for backwrads compatibility\n for (const type in modifiers) {\n const { _defaults, _methods } = modifiers[type]\n\n _defaults._methods = _methods\n scope.defaults.perAction[type] = _defaults\n }\n\n // autoScroll\n interact.use(autoScroll)\n\n // reflow\n interact.use(reflow)\n\n // eslint-disable-next-line no-undef\n if (process.env.NODE_ENV !== 'production') {\n interact.use(devTools)\n }\n\n return interact\n}\n\n// eslint-disable-next-line no-undef\ninteract.version = process.env.npm_package_version\n\nexport default interact\nexport {\n interact,\n actions,\n autoScroll,\n interactablePreventDefault,\n inertia,\n modifiersBase as modifiers,\n pointerEvents,\n reflow,\n}\n","function createGrid (grid: (Interact.Rect | Interact.Point) & { range?: number, limits: Interact.Rect, offset: Interact.Point }) {\n const coordFields = [\n ['x', 'y'],\n ['left', 'top'],\n ['right', 'bottom'],\n ['width', 'height'],\n ].filter(([xField, yField]) => xField in grid || yField in grid)\n\n return function (x, y) {\n const {\n range,\n limits = {\n left : -Infinity,\n right : Infinity,\n top : -Infinity,\n bottom: Infinity,\n },\n offset = { x: 0, y: 0 },\n } = grid\n\n const result = { range }\n\n for (const [xField, yField] of coordFields) {\n const gridx = Math.round((x - offset.x) / grid[xField])\n const gridy = Math.round((y - offset.y) / grid[yField])\n\n result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x))\n result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y))\n }\n\n return result\n }\n}\n\nexport default createGrid\n","import grid from './grid'\n\nexport { grid }\n","import interact, { init as initInteract } from '@interactjs/interact'\nimport * as modifiers from '@interactjs/modifiers'\nimport '@interactjs/types'\nimport extend from '@interactjs/utils/extend'\nimport * as snappers from '@interactjs/utils/snappers'\n\ndeclare module '@interactjs/interact/interact' {\n interface InteractStatic {\n modifiers?: any\n snappers?: typeof snappers & { [key: string]: any }\n createSnapGrid?: typeof snappers.grid\n }\n}\n\nif (typeof window === 'object' && !!window) {\n init(window)\n}\n\nexport function init (win: Window) {\n initInteract(win)\n\n return interact.use({\n id: 'interactjs',\n install (scope) {\n interact.modifiers = extend(scope.modifiers, modifiers)\n interact.snappers = snappers\n interact.createSnapGrid = interact.snappers.grid\n },\n })\n}\n\nexport default interact\ninteract['default'] = interact // tslint:disable-line no-string-literal\ninteract['init'] = init // tslint:disable-line no-string-literal\n\nif (typeof module === 'object' && !!module) {\n module.exports = interact\n}\n","\nreturn _$index_29;\n\n});\n"]}
\ No newline at end of file
+{"version":3,"sources":["../../scripts/minHeader.js","../../scripts/header.js","../../node_modules/browser-pack-flat/_prelude","../core/scope.ts","../core/interactions.ts","../core/Interaction.ts","../utils/arr.ts","../utils/domObjects.ts","../utils/isWindow.ts","../utils/window.ts","../utils/is.ts","../utils/browser.ts","../utils/domUtils.ts","../utils/clone.ts","../utils/pointerExtend.ts","../utils/hypot.ts","../utils/pointerUtils.ts","../utils/events.ts","../utils/extend.ts","../utils/rect.ts","../utils/getOriginXY.ts","../utils/normalizeListeners.ts","../utils/raf.ts","../utils/Signals.ts","../utils/index.ts","../core/defaultOptions.ts","../core/Eventable.ts","../core/Interactable.ts","../core/InteractableSet.ts","../core/BaseEvent.ts","../core/InteractEvent.ts","../core/PointerInfo.ts","../core/interactionFinder.ts","../actions/drag.ts","../actions/drop/DropEvent.ts","../actions/drop/index.ts","../actions/gesture.ts","../actions/resize.ts","../actions/index.ts","../auto-scroll/index.ts","../auto-start/InteractableMethods.ts","../auto-start/base.ts","../auto-start/dragAxis.ts","../auto-start/hold.ts","../auto-start/index.ts","../core/interactablePreventDefault.ts","../dev-tools/index.ts","../modifiers/base.ts","../inertia/index.ts","../modifiers/restrict/pointer.ts","../modifiers/restrict/edges.ts","../modifiers/restrict/size.ts","../modifiers/snap/pointer.ts","../modifiers/snap/size.ts","../modifiers/snap/edges.ts","../modifiers/index.ts","../pointer-events/PointerEvent.ts","../pointer-events/base.ts","../pointer-events/holdRepeat.ts","../pointer-events/interactableTargets.ts","../pointer-events/index.ts","../reflow/index.ts","../interact/interact.ts","../interact/index.ts","../utils/snappers/grid.ts","../utils/snappers/index.ts","index.ts","../../node_modules/browser-pack-flat/_postlude"],"names":[],"mappings":"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","file":"interact.min.js","sourceRoot":"","sourcesContent":["/* interact.js 1.4.13 | https://raw.github.com/taye/interact.js/master/LICENSE */\n","/**\n * interact.js 1.4.13\n *\n * Copyright (c) 2012-2019 Taye Adeyemi \n * Released under the MIT License.\n * https://raw.github.com/taye/interact.js/master/LICENSE\n */\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.interact = f()}})(function(){var define,module,exports;\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\n","import * as utils from '@interactjs/utils'\nimport domObjects from '@interactjs/utils/domObjects'\nimport defaults from './defaultOptions'\nimport Eventable from './Eventable'\nimport InteractableBase from './Interactable'\nimport InteractableSet from './InteractableSet'\nimport InteractEvent from './InteractEvent'\nimport interactions from './interactions'\n\nconst {\n win,\n browser,\n raf,\n Signals,\n events,\n} = utils\n\nexport enum ActionName {\n}\n\nexport interface Actions {\n names: ActionName[]\n methodDict: { [key: string]: string }\n eventTypes: string[]\n}\n\nexport function createScope () {\n return new Scope()\n}\n\nexport type Defaults = typeof defaults\n\nexport interface Plugin {\n id?: string\n install (scope: Scope, options?: any): void\n [key: string]: any\n}\n\nexport class Scope {\n id = `__interact_scope_${Math.floor(Math.random() * 100)}`\n signals = new Signals()\n browser = browser\n events = events\n utils = utils\n defaults: Defaults = utils.clone(defaults) as Defaults\n Eventable = Eventable\n actions: Actions = {\n names: [],\n methodDict: {},\n eventTypes: [],\n }\n\n InteractEvent = InteractEvent\n Interactable!: typeof InteractableBase\n interactables = new InteractableSet(this)\n\n // main window\n _win!: Window\n\n // main document\n document!: Document\n\n // main window\n window!: Window\n\n // all documents being listened to\n documents: Array<{ doc: Document, options: any }> = []\n\n _plugins: Plugin[] = []\n _pluginMap: { [id: string]: Plugin } = {}\n\n constructor () {\n const scope = this as Scope\n\n ; (this as { Interactable: typeof InteractableBase }).Interactable = class Interactable extends InteractableBase implements InteractableBase {\n get _defaults () { return scope.defaults }\n\n set (options: any) {\n super.set(options)\n\n scope.interactables.signals.fire('set', {\n options,\n interactable: this,\n })\n\n return this\n }\n\n unset () {\n super.unset()\n for (let i = scope.interactions.list.length - 1; i >= 0; i--) {\n const interaction = scope.interactions.list[i]\n\n if (interaction.interactable === this) {\n interaction.stop()\n scope.interactions.signals.fire('destroy', { interaction })\n interaction.destroy()\n\n if (scope.interactions.list.length > 2) {\n scope.interactions.list.splice(i, 1)\n }\n }\n }\n\n scope.interactables.signals.fire('unset', { interactable: this })\n }\n }\n }\n\n onWindowUnload = (event: BeforeUnloadEvent) => this.removeDocument(event.target as Document)\n\n init (window: Window) {\n return initScope(this, window)\n }\n\n pluginIsInstalled (plugin: Plugin) {\n return this._pluginMap[plugin.id] || this._plugins.indexOf(plugin) !== -1\n }\n\n usePlugin (plugin: Plugin, options?: { [key: string]: any }) {\n if (this.pluginIsInstalled(plugin)) {\n return this\n }\n\n if (plugin.id) { this._pluginMap[plugin.id] = plugin }\n\n plugin.install(this, options)\n this._plugins.push(plugin)\n\n return this\n }\n\n addDocument (doc: Document, options?: any): void | false {\n // do nothing if document is already known\n if (this.getDocIndex(doc) !== -1) { return false }\n\n const window = win.getWindow(doc)\n\n options = options ? utils.extend({}, options) : {}\n\n this.documents.push({ doc, options })\n events.documents.push(doc)\n\n // don't add an unload event for the main document\n // so that the page may be cached in browser history\n if (doc !== this.document) {\n events.add(window, 'unload', this.onWindowUnload)\n }\n\n this.signals.fire('add-document', { doc, window, scope: this, options })\n }\n\n removeDocument (doc: Document) {\n const index = this.getDocIndex(doc)\n\n const window = win.getWindow(doc)\n const options = this.documents[index].options\n\n events.remove(window, 'unload', this.onWindowUnload)\n\n this.documents.splice(index, 1)\n events.documents.splice(index, 1)\n\n this.signals.fire('remove-document', { doc, window, scope: this, options })\n }\n\n getDocIndex (doc: Document) {\n for (let i = 0; i < this.documents.length; i++) {\n if (this.documents[i].doc === doc) {\n return i\n }\n }\n\n return -1\n }\n\n getDocOptions (doc: Document) {\n const docIndex = this.getDocIndex(doc)\n\n return docIndex === -1 ? null : this.documents[docIndex].options\n }\n\n now () {\n return ((this.window as any).Date as typeof Date || Date).now()\n }\n}\n\nexport function initScope (scope: Scope, window: Window) {\n win.init(window)\n domObjects.init(window)\n browser.init(window)\n raf.init(window)\n events.init(window)\n\n scope.usePlugin(interactions)\n scope.document = window.document\n scope.window = window\n\n return scope\n}\n","import browser from '@interactjs/utils/browser'\nimport domObjects from '@interactjs/utils/domObjects'\nimport { nodeContains } from '@interactjs/utils/domUtils'\nimport events from '@interactjs/utils/events'\nimport pointerUtils from '@interactjs/utils/pointerUtils'\nimport Signals from '@interactjs/utils/Signals'\nimport InteractionBase from './Interaction'\nimport finder, { SearchDetails } from './interactionFinder'\nimport { Scope } from './scope'\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n Interaction: typeof InteractionBase\n interactions: {\n signals: Signals\n new: (options: any) => InteractionBase\n list: InteractionBase[]\n listeners: { [type: string]: Interact.Listener }\n docEvents: Array<{ type: string, listener: Interact.Listener }>\n pointerMoveTolerance: number\n }\n prevTouchTime: number\n }\n}\n\nconst methodNames = [\n 'pointerDown', 'pointerMove', 'pointerUp',\n 'updatePointer', 'removePointer', 'windowBlur',\n]\n\nfunction install (scope: Scope) {\n const signals = new Signals()\n\n const listeners = {} as any\n\n for (const method of methodNames) {\n listeners[method] = doOnInteractions(method, scope)\n }\n\n const pEventTypes = browser.pEventTypes\n let docEvents: typeof scope.interactions.docEvents\n\n if (domObjects.PointerEvent) {\n docEvents = [\n { type: pEventTypes.down, listener: releasePointersOnRemovedEls },\n { type: pEventTypes.down, listener: listeners.pointerDown },\n { type: pEventTypes.move, listener: listeners.pointerMove },\n { type: pEventTypes.up, listener: listeners.pointerUp },\n { type: pEventTypes.cancel, listener: listeners.pointerUp },\n ]\n }\n else {\n docEvents = [\n { type: 'mousedown', listener: listeners.pointerDown },\n { type: 'mousemove', listener: listeners.pointerMove },\n { type: 'mouseup', listener: listeners.pointerUp },\n\n { type: 'touchstart', listener: releasePointersOnRemovedEls },\n { type: 'touchstart', listener: listeners.pointerDown },\n { type: 'touchmove', listener: listeners.pointerMove },\n { type: 'touchend', listener: listeners.pointerUp },\n { type: 'touchcancel', listener: listeners.pointerUp },\n ]\n }\n\n docEvents.push({\n type: 'blur',\n listener (event) {\n for (const interaction of scope.interactions.list) {\n interaction.documentBlur(event)\n }\n },\n })\n\n scope.signals.on('add-document', onDocSignal)\n scope.signals.on('remove-document', onDocSignal)\n\n // for ignoring browser's simulated mouse events\n scope.prevTouchTime = 0\n\n scope.Interaction = class Interaction extends InteractionBase {\n get pointerMoveTolerance () {\n return scope.interactions.pointerMoveTolerance\n }\n\n set pointerMoveTolerance (value) {\n scope.interactions.pointerMoveTolerance = value\n }\n\n _now () { return scope.now() }\n }\n\n scope.interactions = {\n signals,\n // all active and idle interactions\n list: [],\n new (options: { pointerType?: string, signals?: Signals }) {\n options.signals = signals\n\n const interaction = new scope.Interaction(options as Required)\n\n scope.interactions.list.push(interaction)\n return interaction\n },\n listeners,\n docEvents,\n pointerMoveTolerance: 1,\n }\n\n function releasePointersOnRemovedEls () {\n // for all inactive touch interactions with pointers down\n for (const interaction of scope.interactions.list) {\n if (!interaction.pointerIsDown ||\n interaction.pointerType !== 'touch' ||\n interaction._interacting) {\n continue\n }\n\n // if a pointer is down on an element that is no longer in the DOM tree\n for (const pointer of interaction.pointers) {\n if (!scope.documents.some(({ doc }) => nodeContains(doc, pointer.downTarget))) {\n // remove the pointer from the interaction\n interaction.removePointer(pointer.pointer, pointer.event)\n }\n }\n }\n }\n}\n\nfunction doOnInteractions (method, scope) {\n return function (event) {\n const interactions = scope.interactions.list\n\n const pointerType = pointerUtils.getPointerType(event)\n const [eventTarget, curEventTarget] = pointerUtils.getEventTargets(event)\n const matches = [] // [ [pointer, interaction], ...]\n\n if (/^touch/.test(event.type)) {\n scope.prevTouchTime = scope.now()\n\n for (const changedTouch of event.changedTouches) {\n const pointer = changedTouch\n const pointerId = pointerUtils.getPointerId(pointer)\n const searchDetails: SearchDetails = {\n pointer,\n pointerId,\n pointerType,\n eventType: event.type,\n eventTarget,\n curEventTarget,\n scope,\n }\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n }\n else {\n let invalidPointer = false\n\n if (!browser.supportsPointerEvent && /mouse/.test(event.type)) {\n // ignore mouse events while touch interactions are active\n for (let i = 0; i < interactions.length && !invalidPointer; i++) {\n invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown\n }\n\n // try to ignore mouse events that are simulated by the browser\n // after a touch event\n invalidPointer = invalidPointer ||\n (scope.now() - scope.prevTouchTime < 500) ||\n // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n event.timeStamp === 0\n }\n\n if (!invalidPointer) {\n const searchDetails = {\n pointer: event,\n pointerId: pointerUtils.getPointerId(event),\n pointerType,\n eventType: event.type,\n curEventTarget,\n eventTarget,\n scope,\n }\n\n const interaction = getInteraction(searchDetails)\n\n matches.push([\n searchDetails.pointer,\n searchDetails.eventTarget,\n searchDetails.curEventTarget,\n interaction,\n ])\n }\n }\n\n // eslint-disable-next-line no-shadow\n for (const [pointer, eventTarget, curEventTarget, interaction] of matches) {\n interaction[method](pointer, event, eventTarget, curEventTarget)\n }\n }\n}\n\nfunction getInteraction (searchDetails: SearchDetails) {\n const { pointerType, scope } = searchDetails\n\n const foundInteraction = finder.search(searchDetails)\n const signalArg = { interaction: foundInteraction, searchDetails }\n\n scope.interactions.signals.fire('find', signalArg)\n\n return signalArg.interaction || scope.interactions.new({ pointerType })\n}\n\nfunction onDocSignal ({ doc, scope, options }, signalName) {\n const { docEvents } = scope.interactions\n const eventMethod = signalName.indexOf('add') === 0\n ? events.add : events.remove\n\n if (scope.browser.isIOS && !options.events) {\n options.events = { passive: false }\n }\n\n // delegate event listener\n for (const eventType in events.delegatedEvents) {\n eventMethod(doc, eventType, events.delegateListener)\n eventMethod(doc, eventType, events.delegateUseCapture, true)\n }\n\n const eventOptions = options && options.events\n\n for (const { type, listener } of docEvents) {\n eventMethod(doc, type, listener, eventOptions)\n }\n}\n\nexport default {\n id: 'core/interactions',\n install,\n onDocSignal,\n doOnInteractions,\n methodNames,\n}\n","import * as utils from '@interactjs/utils'\nimport Interactable from './Interactable'\nimport InteractEvent, { EventPhase } from './InteractEvent'\nimport PointerInfo from './PointerInfo'\nimport { ActionName } from './scope'\n\nexport interface ActionProps {\n name: T\n axis?: 'x' | 'y' | 'xy'\n edges?: {\n [edge in keyof Interact.Rect]?: boolean\n }\n}\n\nexport interface StartAction extends ActionProps {\n name: ActionName | string\n}\n\nexport enum _ProxyValues {\n interactable = '',\n element = '',\n prepared = '',\n pointerIsDown = '',\n pointerWasMoved = '',\n _proxy = ''\n}\n\nexport enum _ProxyMethods {\n start = '',\n move = '',\n end = '',\n stop = '',\n interacting = ''\n}\n\nexport type _InteractionProxy = Pick<\n Interaction,\n keyof typeof _ProxyValues | keyof typeof _ProxyMethods\n>\n\nexport class Interaction {\n // current interactable being interacted with\n interactable: Interactable = null\n\n // the target element of the interactable\n element: Element = null\n rect: Interact.Rect & Interact.Size\n edges: {\n [P in keyof Interact.Rect]?: boolean\n }\n\n _signals: utils.Signals\n\n // action that's ready to be fired on next move event\n prepared: ActionProps = {\n name : null,\n axis : null,\n edges: null,\n }\n\n pointerType: string\n\n // keep track of added pointers\n pointers: PointerInfo[] = []\n\n // pointerdown/mousedown/touchstart event\n downEvent: Interact.PointerEventType = null\n\n downPointer: Interact.PointerType = {} as Interact.PointerType\n\n _latestPointer: {\n pointer: Interact.EventTarget\n event: Interact.PointerEventType\n eventTarget: Node,\n } = {\n pointer: null,\n event: null,\n eventTarget: null,\n }\n\n // previous action event\n prevEvent: InteractEvent = null\n\n pointerIsDown = false\n pointerWasMoved = false\n _interacting = false\n _ending = false\n _stopped = true\n _proxy: _InteractionProxy = null\n\n simulation = null\n\n get pointerMoveTolerance () {\n return 1\n }\n\n /**\n * @alias Interaction.prototype.move\n */\n doMove = utils.warnOnce(\n function (this: Interaction, signalArg: any) {\n this.move(signalArg)\n },\n 'The interaction.doMove() method has been renamed to interaction.move()')\n\n coords = {\n // Starting InteractEvent pointer coordinates\n start: utils.pointer.newCoords(),\n // Previous native pointer move event coordinates\n prev: utils.pointer.newCoords(),\n // current native pointer move event coordinates\n cur: utils.pointer.newCoords(),\n // Change in coordinates and time of the pointer\n delta: utils.pointer.newCoords(),\n // pointer velocity\n velocity: utils.pointer.newCoords(),\n }\n\n /** */\n constructor ({ pointerType, signals }: { pointerType?: string, signals: utils.Signals }) {\n this._signals = signals\n this.pointerType = pointerType\n\n const that = this\n\n this._proxy = {} as _InteractionProxy\n\n for (const key in _ProxyValues) {\n Object.defineProperty(this._proxy, key, {\n get () { return that[key] },\n })\n }\n\n for (const key in _ProxyMethods) {\n Object.defineProperty(this._proxy, key, {\n value: (...args) => that[key](...args),\n })\n }\n\n this._signals.fire('new', { interaction: this })\n }\n\n pointerDown (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node) {\n const pointerIndex = this.updatePointer(pointer, event, eventTarget, true)\n\n this._signals.fire('down', {\n pointer,\n event,\n eventTarget,\n pointerIndex,\n interaction: this,\n })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable({\n * // disable the default drag start by down->move\n * manualStart: true\n * })\n * // start dragging after the user holds the pointer down\n * .on('hold', function (event) {\n * var interaction = event.interaction\n *\n * if (!interaction.interacting()) {\n * interaction.start({ name: 'drag' },\n * event.interactable,\n * event.currentTarget)\n * }\n * })\n * ```\n *\n * Start an action with the given Interactable and Element as tartgets. The\n * action must be enabled for the target Interactable and an appropriate\n * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n *\n * Use it with `interactable.able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {object} interact\n */\n start (action: StartAction, interactable: Interactable, element: Element) {\n if (this.interacting() ||\n !this.pointerIsDown ||\n this.pointers.length < (action.name === ActionName.Gesture ? 2 : 1) ||\n !interactable.options[action.name].enabled) {\n return false\n }\n\n utils.copyAction(this.prepared, action)\n\n this.interactable = interactable\n this.element = element\n this.rect = interactable.getRect(element)\n this.edges = this.prepared.edges\n this._stopped = false\n this._interacting = this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: EventPhase.Start,\n }) && !this._stopped\n\n return this._interacting\n }\n\n pointerMove (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node) {\n if (!this.simulation && !(this.modifiers && this.modifiers.endPrevented)) {\n this.updatePointer(pointer, event, eventTarget, false)\n utils.pointer.setCoords(this.coords.cur, this.pointers.map((p) => p.pointer), this._now())\n }\n\n const duplicateMove = (this.coords.cur.page.x === this.coords.prev.page.x &&\n this.coords.cur.page.y === this.coords.prev.page.y &&\n this.coords.cur.client.x === this.coords.prev.client.x &&\n this.coords.cur.client.y === this.coords.prev.client.y)\n\n let dx\n let dy\n\n // register movement greater than pointerMoveTolerance\n if (this.pointerIsDown && !this.pointerWasMoved) {\n dx = this.coords.cur.client.x - this.coords.start.client.x\n dy = this.coords.cur.client.y - this.coords.start.client.y\n\n this.pointerWasMoved = utils.hypot(dx, dy) > this.pointerMoveTolerance\n }\n\n const signalArg = {\n pointer,\n pointerIndex: this.getPointerIndex(pointer),\n event,\n eventTarget,\n dx,\n dy,\n duplicate: duplicateMove,\n interaction: this,\n }\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n utils.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur)\n utils.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta)\n }\n\n this._signals.fire('move', signalArg)\n\n if (!duplicateMove) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n this.move(signalArg)\n }\n\n if (this.pointerWasMoved) {\n utils.pointer.copyCoords(this.coords.prev, this.coords.cur)\n }\n }\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('dragmove', function (event) {\n * if (someCondition) {\n * // change the snap settings\n * event.interactable.draggable({ snap: { targets: [] }})\n * // fire another move event with re-calculated snap\n * event.interaction.move()\n * }\n * })\n * ```\n *\n * Force a move of the current action at the same coordinates. Useful if\n * snap/restrict has been changed and you want a movement with the new\n * settings.\n */\n move (signalArg?) {\n signalArg = utils.extend({\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this,\n }, signalArg || {})\n\n signalArg.phase = EventPhase.Move\n\n this._doPhase(signalArg)\n }\n\n // End interact move events and stop auto-scroll unless simulation is running\n pointerUp (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node, curEventTarget: EventTarget) {\n let pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false)\n }\n\n this._signals.fire(/cancel$/i.test(event.type) ? 'cancel' : 'up', {\n pointer,\n pointerIndex,\n event,\n eventTarget,\n curEventTarget,\n interaction: this,\n })\n\n if (!this.simulation) {\n this.end(event)\n }\n\n this.pointerIsDown = false\n this.removePointer(pointer, event)\n }\n\n documentBlur (event) {\n this.end(event)\n this._signals.fire('blur', { event, interaction: this })\n }\n\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('move', function (event) {\n * if (event.pageX > 1000) {\n * // end the current action\n * event.interaction.end()\n * // stop all further listeners from being called\n * event.stopImmediatePropagation()\n * }\n * })\n * ```\n *\n * @param {PointerEvent} [event]\n */\n end (event?: Interact.PointerEventType) {\n this._ending = true\n event = event || this._latestPointer.event\n let endPhaseResult\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event,\n interaction: this,\n phase: EventPhase.End,\n })\n }\n\n this._ending = false\n\n if (endPhaseResult === true) {\n this.stop()\n }\n }\n\n currentAction () {\n return this._interacting ? this.prepared.name : null\n }\n\n interacting () {\n return this._interacting\n }\n\n /** */\n stop () {\n this._signals.fire('stop', { interaction: this })\n\n this.interactable = this.element = null\n\n this._interacting = false\n this._stopped = true\n this.prepared.name = this.prevEvent = null\n }\n\n getPointerIndex (pointer) {\n const pointerId = utils.pointer.getPointerId(pointer)\n\n // mouse and pen interactions may have only one pointer\n return (this.pointerType === 'mouse' || this.pointerType === 'pen')\n ? this.pointers.length - 1\n : utils.arr.findIndex(this.pointers, (curPointer) => curPointer.id === pointerId)\n }\n\n getPointerInfo (pointer) {\n return this.pointers[this.getPointerIndex(pointer)]\n }\n\n updatePointer (pointer: Interact.PointerType, event: Interact.PointerEventType, eventTarget: Node, down?: boolean) {\n const id = utils.pointer.getPointerId(pointer)\n let pointerIndex = this.getPointerIndex(pointer)\n let pointerInfo = this.pointers[pointerIndex]\n\n down = down === false\n ? false\n : down || /(down|start)$/i.test(event.type)\n\n if (!pointerInfo) {\n pointerInfo = new PointerInfo(\n id,\n pointer,\n event,\n null,\n null,\n )\n\n pointerIndex = this.pointers.length\n this.pointers.push(pointerInfo)\n }\n else {\n pointerInfo.pointer = pointer\n }\n\n if (down) {\n this.pointerIsDown = true\n\n if (!this.interacting()) {\n utils.pointer.setCoords(this.coords.start, this.pointers.map((p) => p.pointer), this._now())\n\n utils.pointer.copyCoords(this.coords.cur, this.coords.start)\n utils.pointer.copyCoords(this.coords.prev, this.coords.start)\n utils.pointer.pointerExtend(this.downPointer, pointer)\n\n this.downEvent = event\n pointerInfo.downTime = this.coords.cur.timeStamp\n pointerInfo.downTarget = eventTarget\n\n this.pointerWasMoved = false\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget)\n\n this._signals.fire('update-pointer', {\n pointer,\n event,\n eventTarget,\n down,\n pointerInfo,\n pointerIndex,\n interaction: this,\n })\n\n return pointerIndex\n }\n\n removePointer (pointer: Interact.PointerType, event: Interact.PointerEventType) {\n const pointerIndex = this.getPointerIndex(pointer)\n\n if (pointerIndex === -1) { return }\n\n const pointerInfo = this.pointers[pointerIndex]\n\n this._signals.fire('remove-pointer', {\n pointer,\n event,\n pointerIndex,\n pointerInfo,\n interaction: this,\n })\n\n this.pointers.splice(pointerIndex, 1)\n }\n\n _updateLatestPointer (pointer, event, eventTarget) {\n this._latestPointer.pointer = pointer\n this._latestPointer.event = event\n this._latestPointer.eventTarget = eventTarget\n }\n\n destroy () {\n this._latestPointer.pointer = null\n this._latestPointer.event = null\n this._latestPointer.eventTarget = null\n }\n\n _createPreparedEvent (event: Interact.PointerEventType, phase: EventPhase, preEnd: boolean, type: string) {\n const actionName = this.prepared.name\n\n return new InteractEvent(this, event, actionName, phase, this.element, null, preEnd, type)\n }\n\n _fireEvent (iEvent) {\n this.interactable.fire(iEvent)\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent\n }\n }\n\n _doPhase (signalArg: Partial) {\n const { event, phase, preEnd, type } = signalArg\n const beforeResult = this._signals.fire(`before-action-${phase}`, signalArg)\n\n if (beforeResult === false) {\n return false\n }\n\n const iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type)\n const { rect } = this\n\n if (rect) {\n // update the rect modifications\n const edges = this.edges || this.prepared.edges || { left: true, right: true, top: true, bottom: true }\n\n if (edges.top) { rect.top += iEvent.delta.y }\n if (edges.bottom) { rect.bottom += iEvent.delta.y }\n if (edges.left) { rect.left += iEvent.delta.x }\n if (edges.right) { rect.right += iEvent.delta.x }\n\n rect.width = rect.right - rect.left\n rect.height = rect.bottom - rect.top\n }\n\n this._signals.fire(`action-${phase}`, signalArg)\n\n this._fireEvent(iEvent)\n\n this._signals.fire(`after-action-${phase}`, signalArg)\n\n return true\n }\n\n _now () { return Date.now() }\n}\n\nexport default Interaction\nexport { PointerInfo }\n","export function contains (array, target) {\n return array.indexOf(target) !== -1\n}\n\nexport function remove (array, target) {\n return array.splice(array.indexOf(target), 1)\n}\n\nexport function merge (target, source) {\n for (const item of source) {\n target.push(item)\n }\n\n return target\n}\n\nexport function from (source) {\n return merge([], source)\n}\n\nexport function findIndex (array, func) {\n for (let i = 0; i < array.length; i++) {\n if (func(array[i], i, array)) {\n return i\n }\n }\n\n return -1\n}\n\nexport function find (array, func) {\n return array[findIndex(array, func)]\n}\n","const domObjects: {\n init: any,\n document: Document,\n DocumentFragment: typeof DocumentFragment,\n SVGElement: typeof SVGElement,\n SVGSVGElement: typeof SVGSVGElement,\n SVGElementInstance: any,\n Element: typeof Element,\n HTMLElement: typeof HTMLElement,\n Event: typeof Event,\n Touch: typeof Touch,\n PointerEvent: typeof PointerEvent,\n} =\n{\n init,\n document: null as any,\n DocumentFragment: null as any,\n SVGElement: null as any,\n SVGSVGElement: null as any,\n // eslint-disable-next-line no-undef\n SVGElementInstance: null as any,\n Element: null as any,\n HTMLElement: null as any,\n Event: null as any,\n Touch: null as any,\n PointerEvent: null as any,\n}\n\nfunction blank () {}\n\nexport default domObjects\n\nfunction init (window: Window) {\n const win = window as any\n\n domObjects.document = win.document\n domObjects.DocumentFragment = win.DocumentFragment || blank\n domObjects.SVGElement = win.SVGElement || blank\n domObjects.SVGSVGElement = win.SVGSVGElement || blank\n domObjects.SVGElementInstance = win.SVGElementInstance || blank\n domObjects.Element = win.Element || blank\n domObjects.HTMLElement = win.HTMLElement || domObjects.Element\n\n domObjects.Event = win.Event\n domObjects.Touch = win.Touch || blank\n domObjects.PointerEvent = (win.PointerEvent || win.MSPointerEvent)\n}\n","export default (thing) => !!(thing && thing.Window) && (thing instanceof thing.Window)\n","import isWindow from './isWindow'\n\nconst win = {\n realWindow: undefined as Window,\n window: undefined as Window,\n getWindow,\n init,\n}\n\nexport function init (window: Window & { wrap?: (...args) => any }) {\n // get wrapped window if using Shadow DOM polyfill\n\n win.realWindow = window\n\n // create a TextNode\n const el = window.document.createTextNode('')\n\n // check if it's wrapped by a polyfill\n if (el.ownerDocument !== window.document &&\n typeof window.wrap === 'function' &&\n window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window)\n }\n\n win.window = window\n}\n\nif (typeof window === 'undefined') {\n win.window = undefined\n win.realWindow = undefined\n}\nelse {\n init(window)\n}\n\nexport function getWindow (node) {\n if (isWindow(node)) {\n return node\n }\n\n const rootNode = (node.ownerDocument || node)\n\n return rootNode.defaultView || win.window\n}\n\nwin.init = init\n\nexport default win\n","// tslint:disable variable-name\n\nimport isWindow from './isWindow'\nimport win from './window'\n\nexport const window = (thing: any): thing is Window =>\n thing === win.window || isWindow(thing)\n\nexport const docFrag = (thing: any): thing is DocumentFragment =>\n object(thing) && thing.nodeType === 11\n\nexport const object = (thing: any): thing is { [index: string]: any } =>\n !!thing && (typeof thing === 'object')\n\nexport const func = (thing: any): thing is (...args: any) => any =>\n typeof thing === 'function'\n\nexport const number = (thing: any): thing is number =>\n typeof thing === 'number'\n\nexport const bool = (thing: any): thing is boolean =>\n typeof thing === 'boolean'\n\nexport const string = (thing: any): thing is string =>\n typeof thing === 'string'\n\nexport const element = (thing: any): thing is Element => {\n if (!thing || (typeof thing !== 'object')) { return false }\n\n const _window = win.getWindow(thing) || win.window\n\n return (/object|function/.test(typeof _window.Element)\n ? thing instanceof _window.Element // DOM2\n : thing.nodeType === 1 && typeof thing.nodeName === 'string')\n}\n\nexport const plainObject: typeof object = (thing: any): thing is { [index: string]: any } =>\n object(thing) &&\n !!thing.constructor &&\n /function Object\\b/.test(thing.constructor.toString())\n\nexport const array = (thing: any): thing is any[] =>\n (object(thing) &&\n (typeof thing.length !== 'undefined') &&\n func(thing.splice))\n","import domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nconst browser = {\n init,\n supportsTouch: null as boolean,\n supportsPointerEvent: null as boolean,\n isIOS7: null as boolean,\n isIOS: null as boolean,\n isIe9: null as boolean,\n isOperaMobile: null as boolean,\n prefixedMatchesSelector: null as string,\n pEventTypes: null as {\n up: string,\n down: string,\n over: string,\n out: string,\n move: string,\n cancel: string,\n },\n wheelEvent: null as string,\n}\n\nfunction init (window) {\n const Element = domObjects.Element\n const navigator = win.window.navigator\n\n // Does the browser support touch input?\n browser.supportsTouch = ('ontouchstart' in window) ||\n (is.func(window.DocumentTouch) && domObjects.document instanceof window.DocumentTouch)\n\n // Does the browser support PointerEvents\n browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!domObjects.PointerEvent\n\n browser.isIOS = (/iP(hone|od|ad)/.test(navigator.platform))\n\n // scrolling doesn't change the result of getClientRects on iOS 7\n browser.isIOS7 = (/iP(hone|od|ad)/.test(navigator.platform) &&\n /OS 7[^\\d]/.test(navigator.appVersion))\n\n browser.isIe9 = /MSIE 9/.test(navigator.userAgent)\n\n // Opera Mobile must be handled differently\n browser.isOperaMobile = (navigator.appName === 'Opera' &&\n browser.supportsTouch &&\n /Presto/.test(navigator.userAgent))\n\n // prefix matchesSelector\n browser.prefixedMatchesSelector = 'matches' in Element.prototype\n ? 'matches'\n : 'webkitMatchesSelector' in Element.prototype\n ? 'webkitMatchesSelector'\n : 'mozMatchesSelector' in Element.prototype\n ? 'mozMatchesSelector'\n : 'oMatchesSelector' in Element.prototype\n ? 'oMatchesSelector'\n : 'msMatchesSelector'\n\n browser.pEventTypes = (browser.supportsPointerEvent\n ? (domObjects.PointerEvent === window.MSPointerEvent\n ? {\n up: 'MSPointerUp',\n down: 'MSPointerDown',\n over: 'mouseover',\n out: 'mouseout',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel',\n }\n : {\n up: 'pointerup',\n down: 'pointerdown',\n over: 'pointerover',\n out: 'pointerout',\n move: 'pointermove',\n cancel: 'pointercancel',\n })\n : null)\n\n // because Webkit and Opera still use 'mousewheel' event type\n browser.wheelEvent = 'onmousewheel' in domObjects.document ? 'mousewheel' : 'wheel'\n}\n\nexport default browser\n","import browser from './browser'\nimport domObjects from './domObjects'\nimport * as is from './is'\nimport win from './window'\n\nexport function nodeContains (parent: Node, child: Node) {\n while (child) {\n if (child === parent) {\n return true\n }\n\n child = child.parentNode\n }\n\n return false\n}\n\nexport function closest (element, selector) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) { return element }\n\n element = parentNode(element)\n }\n\n return null\n}\n\nexport function parentNode (node) {\n let parent = node.parentNode\n\n if (is.docFrag(parent)) {\n // skip past #shado-root fragments\n // tslint:disable-next-line\n while ((parent = (parent as any).host) && is.docFrag(parent)) {\n continue\n }\n\n return parent\n }\n\n return parent\n}\n\nexport function matchesSelector (element, selector) {\n // remove /deep/ from selectors if shadowDOM polyfill is used\n if (win.window !== win.realWindow) {\n selector = selector.replace(/\\/deep\\//g, ' ')\n }\n\n return element[browser.prefixedMatchesSelector](selector)\n}\n\nconst getParent = (el) => el.parentNode ? el.parentNode : el.host\n\n// Test for the element that's \"above\" all other qualifiers\nexport function indexOfDeepestElement (elements) {\n let deepestZoneParents = []\n let dropzoneParents = []\n let dropzone\n let deepestZone = elements[0]\n let index = deepestZone ? 0 : -1\n let parent\n let child\n let i\n let n\n\n for (i = 1; i < elements.length; i++) {\n dropzone = elements[i]\n\n // an element might belong to multiple selector dropzones\n if (!dropzone || dropzone === deepestZone) {\n continue\n }\n\n if (!deepestZone) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n // check if the deepest or current are document.documentElement or document.rootElement\n // - if the current dropzone is, do nothing and continue\n if (dropzone.parentNode === dropzone.ownerDocument) {\n continue\n }\n // - if deepest is, update with the current dropzone and continue to next\n else if (deepestZone.parentNode === dropzone.ownerDocument) {\n deepestZone = dropzone\n index = i\n continue\n }\n\n if (!deepestZoneParents.length) {\n parent = deepestZone\n while (getParent(parent) && getParent(parent) !== parent.ownerDocument) {\n deepestZoneParents.unshift(parent)\n parent = getParent(parent)\n }\n }\n\n // if this element is an svg element and the current deepest is\n // an HTMLElement\n if (deepestZone instanceof domObjects.HTMLElement &&\n dropzone instanceof domObjects.SVGElement &&\n !(dropzone instanceof domObjects.SVGSVGElement)) {\n if (dropzone === deepestZone.parentNode) {\n continue\n }\n\n parent = dropzone.ownerSVGElement\n }\n else {\n parent = dropzone\n }\n\n dropzoneParents = []\n\n while (parent.parentNode !== parent.ownerDocument) {\n dropzoneParents.unshift(parent)\n parent = getParent(parent)\n }\n\n n = 0\n\n // get (position of last common ancestor) + 1\n while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n n++\n }\n\n const parents = [\n dropzoneParents[n - 1],\n dropzoneParents[n],\n deepestZoneParents[n],\n ]\n\n child = parents[0].lastChild\n\n while (child) {\n if (child === parents[1]) {\n deepestZone = dropzone\n index = i\n deepestZoneParents = []\n\n break\n }\n else if (child === parents[2]) {\n break\n }\n\n child = child.previousSibling\n }\n }\n\n return index\n}\n\nexport function matchesUpTo (element: Element, selector: string, limit: Node) {\n while (is.element(element)) {\n if (matchesSelector(element, selector)) {\n return true\n }\n\n element = parentNode(element)\n\n if (element === limit) {\n return matchesSelector(element, selector)\n }\n }\n\n return false\n}\n\nexport function getActualElement (element) {\n return (element instanceof domObjects.SVGElementInstance\n ? element.correspondingUseElement\n : element)\n}\n\nexport function getScrollXY (relevantWindow) {\n relevantWindow = relevantWindow || win.window\n return {\n x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop,\n }\n}\n\nexport function getElementClientRect (element) {\n const clientRect = (element instanceof domObjects.SVGElement\n ? element.getBoundingClientRect()\n : element.getClientRects()[0])\n\n return clientRect && {\n left : clientRect.left,\n right : clientRect.right,\n top : clientRect.top,\n bottom: clientRect.bottom,\n width : clientRect.width || clientRect.right - clientRect.left,\n height: clientRect.height || clientRect.bottom - clientRect.top,\n }\n}\n\nexport function getElementRect (element) {\n const clientRect = getElementClientRect(element)\n\n if (!browser.isIOS7 && clientRect) {\n const scroll = getScrollXY(win.getWindow(element))\n\n clientRect.left += scroll.x\n clientRect.right += scroll.x\n clientRect.top += scroll.y\n clientRect.bottom += scroll.y\n }\n\n return clientRect\n}\n\nexport function getPath (node) {\n const path = []\n\n while (node) {\n path.push(node)\n node = parentNode(node)\n }\n\n return path\n}\n\nexport function trySelector (value) {\n if (!is.string(value)) { return false }\n\n // an exception will be raised if it is invalid\n domObjects.document.querySelector(value)\n return true\n}\n","import * as arr from './arr'\nimport * as is from './is'\n\nexport default function clone (source: T): Partial {\n const dest = {} as Partial\n\n for (const prop in source) {\n const value = source[prop]\n\n if (is.plainObject(value)) {\n dest[prop] = clone(value) as any\n }\n else if (is.array(value)) {\n dest[prop] = arr.from(value)\n }\n else {\n dest[prop] = value\n }\n }\n\n return dest\n}\n","export interface PointerExtend {\n webkit: RegExp\n [prefix: string]: RegExp\n}\n\nfunction pointerExtend (dest, source) {\n for (const prop in source) {\n const prefixedPropREs = pointerExtend.prefixedPropREs\n let deprecated = false\n\n // skip deprecated prefixed properties\n for (const vendor in prefixedPropREs) {\n if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n deprecated = true\n break\n }\n }\n\n if (!deprecated && typeof source[prop] !== 'function') {\n dest[prop] = source[prop]\n }\n }\n return dest\n}\n\npointerExtend.prefixedPropREs = {\n webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,\n}\n\nexport default pointerExtend\n","export default (x, y) => Math.sqrt(x * x + y * y)\n","import browser from './browser'\nimport dom from './domObjects'\nimport * as domUtils from './domUtils'\nimport hypot from './hypot'\nimport * as is from './is'\nimport pointerExtend from './pointerExtend'\n\nconst pointerUtils = {\n copyCoords (dest, src) {\n dest.page = dest.page || {}\n dest.page.x = src.page.x\n dest.page.y = src.page.y\n\n dest.client = dest.client || {}\n dest.client.x = src.client.x\n dest.client.y = src.client.y\n\n dest.timeStamp = src.timeStamp\n },\n\n setCoordDeltas (targetObj, prev, cur) {\n targetObj.page.x = cur.page.x - prev.page.x\n targetObj.page.y = cur.page.y - prev.page.y\n targetObj.client.x = cur.client.x - prev.client.x\n targetObj.client.y = cur.client.y - prev.client.y\n targetObj.timeStamp = cur.timeStamp - prev.timeStamp\n },\n\n setCoordVelocity (targetObj, delta) {\n const dt = Math.max(delta.timeStamp / 1000, 0.001)\n\n targetObj.page.x = delta.page.x / dt\n targetObj.page.y = delta.page.y / dt\n targetObj.client.x = delta.client.x / dt\n targetObj.client.y = delta.client.y / dt\n targetObj.timeStamp = dt\n },\n\n isNativePointer (pointer) {\n return (pointer instanceof dom.Event || pointer instanceof dom.Touch)\n },\n\n // Get specified X/Y coords for mouse or event.touches[0]\n getXY (type, pointer, xy) {\n xy = xy || {}\n type = type || 'page'\n\n xy.x = pointer[type + 'X']\n xy.y = pointer[type + 'Y']\n\n return xy\n },\n\n getPageXY (pointer: Interact.PointerType | Interact.InteractEvent, page?: Interact.Point) {\n page = page || { x: 0, y: 0 }\n\n // Opera Mobile handles the viewport and scrolling oddly\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n pointerUtils.getXY('screen', pointer, page)\n\n page.x += window.scrollX\n page.y += window.scrollY\n }\n else {\n pointerUtils.getXY('page', pointer, page)\n }\n\n return page\n },\n\n getClientXY (pointer, client) {\n client = client || {}\n\n if (browser.isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n pointerUtils.getXY('screen', pointer, client)\n }\n else {\n pointerUtils.getXY('client', pointer, client)\n }\n\n return client\n },\n\n getPointerId (pointer) {\n return is.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier\n },\n\n setCoords (targetObj, pointers: any[], timeStamp: number) {\n const pointer = (pointers.length > 1\n ? pointerUtils.pointerAverage(pointers)\n : pointers[0])\n\n const tmpXY = {} as { x: number, y: number }\n\n pointerUtils.getPageXY(pointer, tmpXY)\n targetObj.page.x = tmpXY.x\n targetObj.page.y = tmpXY.y\n\n pointerUtils.getClientXY(pointer, tmpXY)\n targetObj.client.x = tmpXY.x\n targetObj.client.y = tmpXY.y\n\n targetObj.timeStamp = timeStamp\n },\n\n pointerExtend,\n\n getTouchPair (event) {\n const touches = []\n\n // array of touches is supplied\n if (is.array(event)) {\n touches[0] = event[0]\n touches[1] = event[1]\n }\n // an event\n else {\n if (event.type === 'touchend') {\n if (event.touches.length === 1) {\n touches[0] = event.touches[0]\n touches[1] = event.changedTouches[0]\n }\n else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0]\n touches[1] = event.changedTouches[1]\n }\n }\n else {\n touches[0] = event.touches[0]\n touches[1] = event.touches[1]\n }\n }\n\n return touches\n },\n\n pointerAverage (pointers: PointerEvent[] | Event[]) {\n const average = {\n pageX : 0,\n pageY : 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0,\n }\n\n for (const pointer of pointers) {\n for (const prop in average) {\n average[prop] += pointer[prop]\n }\n }\n for (const prop in average) {\n average[prop] /= pointers.length\n }\n\n return average\n },\n\n touchBBox (event: Event | Array<(Interact.PointerType) | TouchEvent>) {\n if (!(event as any).length &&\n !((event as TouchEvent).touches &&\n (event as TouchEvent).touches.length > 1)) {\n return null\n }\n\n const touches = pointerUtils.getTouchPair(event)\n const minX = Math.min(touches[0].pageX, touches[1].pageX)\n const minY = Math.min(touches[0].pageY, touches[1].pageY)\n const maxX = Math.max(touches[0].pageX, touches[1].pageX)\n const maxY = Math.max(touches[0].pageY, touches[1].pageY)\n\n return {\n x: minX,\n y: minY,\n left: minX,\n top: minY,\n right: maxX,\n bottom: maxY,\n width: maxX - minX,\n height: maxY - minY,\n }\n },\n\n touchDistance (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.getTouchPair(event)\n\n const dx = touches[0][sourceX] - touches[1][sourceX]\n const dy = touches[0][sourceY] - touches[1][sourceY]\n\n return hypot(dx, dy)\n },\n\n touchAngle (event, deltaSource) {\n const sourceX = deltaSource + 'X'\n const sourceY = deltaSource + 'Y'\n const touches = pointerUtils.getTouchPair(event)\n const dx = touches[1][sourceX] - touches[0][sourceX]\n const dy = touches[1][sourceY] - touches[0][sourceY]\n const angle = 180 * Math.atan2(dy, dx) / Math.PI\n\n return angle\n },\n\n getPointerType (pointer) {\n return is.string(pointer.pointerType)\n ? pointer.pointerType\n : is.number(pointer.pointerType)\n ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType]\n // if the PointerEvent API isn't available, then the \"pointer\" must\n // be either a MouseEvent, TouchEvent, or Touch object\n : /touch/.test(pointer.type) || pointer instanceof dom.Touch\n ? 'touch'\n : 'mouse'\n },\n\n // [ event.target, event.currentTarget ]\n getEventTargets (event) {\n const path = is.func(event.composedPath) ? event.composedPath() : event.path\n\n return [\n domUtils.getActualElement(path ? path[0] : event.target),\n domUtils.getActualElement(event.currentTarget),\n ]\n },\n\n newCoords () {\n return {\n page : { x: 0, y: 0 },\n client : { x: 0, y: 0 },\n timeStamp: 0,\n }\n },\n\n coordsToEvent (coords: MockCoords) {\n const event = {\n coords,\n get page () { return this.coords.page },\n get client () { return this.coords.client },\n get timeStamp () { return this.coords.timeStamp },\n get pageX () { return this.coords.page.x },\n get pageY () { return this.coords.page.y },\n get clientX () { return this.coords.client.x },\n get clientY () { return this.coords.client.y },\n get pointerId () { return this.coords.pointerId },\n get target () { return this.coords.target },\n get type () { return this.coords.type },\n get pointerType () { return this.coords.pointerType },\n }\n\n return event as typeof event & Interact.PointerType & Interact.PointerEventType\n },\n}\n\nexport default pointerUtils\n\nexport interface MockCoords {\n page: Interact.Point\n client: Interact.Point\n timeStamp?: number\n pointerId?: any\n target?: any\n type?: string\n pointerType?: string\n}\n","import { contains } from './arr'\nimport * as domUtils from './domUtils'\nimport * as is from './is'\nimport pExtend from './pointerExtend'\nimport 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 (!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 (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 (selector, context, type, listener?, optionalArg?: any) {\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 = 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) {\n return is.object(param) ? param : { capture: param }\n}\n\nexport class FakeEvent implements Partial {\n currentTarget: EventTarget\n\n constructor (public originalEvent) {\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","export default function extend> (dest: U, source: T) {\n for (const prop in source) {\n (dest as unknown as T)[prop] = source[prop]\n }\n return dest as T & U\n}\n","import { closest, getElementRect, parentNode } from './domUtils'\nimport extend from './extend'\nimport * as is from './is'\n\nexport function getStringOptionResult (value, interactable, element) {\n if (!is.string(value)) {\n return null\n }\n\n if (value === 'parent') {\n value = parentNode(element)\n }\n else if (value === 'self') {\n value = interactable.getRect(element)\n }\n else {\n value = closest(element, value)\n }\n\n return value\n}\n\nexport function resolveRectLike (value, interactable?, element?, functionArgs?) {\n value = getStringOptionResult(value, interactable, element) || value\n\n if (is.func(value)) {\n value = value.apply(null, functionArgs)\n }\n\n if (is.element(value)) {\n value = getElementRect(value)\n }\n\n return value\n}\n\nexport function rectToXY (rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top,\n }\n}\n\nexport function xywhToTlbr (rect) {\n if (rect && !('left' in rect && 'top' in rect)) {\n rect = extend({}, rect)\n\n rect.left = rect.x || 0\n rect.top = rect.y || 0\n rect.right = rect.right || (rect.left + rect.width)\n rect.bottom = rect.bottom || (rect.top + rect.height)\n }\n\n return rect\n}\n\nexport function tlbrToXywh (rect) {\n if (rect && !('x' in rect && 'y' in rect)) {\n rect = extend({}, rect)\n\n rect.x = rect.left || 0\n rect.y = rect.top || 0\n rect.width = rect.width || (rect.right - rect.x)\n rect.height = rect.height || (rect.bottom - rect.y)\n }\n\n return rect\n}\n\nexport default {\n getStringOptionResult,\n resolveRectLike,\n rectToXY,\n xywhToTlbr,\n tlbrToXywh,\n}\n","import { rectToXY, resolveRectLike } from './rect'\n\nexport default function (target, element, action?) {\n const actionOptions = target.options[action]\n const actionOrigin = actionOptions && actionOptions.origin\n const origin = actionOrigin || target.options.origin\n\n const originRect = resolveRectLike(origin, target, element, [target && element])\n\n return rectToXY(originRect) || { x: 0, y: 0 }\n}\n","import extend from './extend'\nimport * as is from './is'\n\nexport interface NormalizedListeners {\n [type: string]: Interact.Listener[]\n}\n\nexport default function normalize (\n type: Interact.EventTypes,\n listeners?: Interact.ListenersArg | Interact.ListenersArg[],\n result?: NormalizedListeners,\n): NormalizedListeners {\n result = result || {}\n\n if (is.string(type) && type.search(' ') !== -1) {\n type = split(type)\n }\n\n if (is.array(type)) {\n return type.reduce(\n (acc, t) => extend(acc, normalize(t, listeners, result)),\n result\n )\n }\n\n // ({ type: fn }) -> ('', { type: fn })\n if (is.object(type)) {\n listeners = type\n type = ''\n }\n\n if (is.func(listeners)) {\n result[type] = result[type] || []\n result[type].push(listeners)\n }\n else if (is.array(listeners)) {\n for (const l of listeners) {\n normalize(type, l, result)\n }\n }\n else if (is.object(listeners)) {\n for (const prefix in listeners) {\n const combinedTypes = split(prefix).map((p) => `${type}${p}`)\n\n normalize(combinedTypes, listeners[prefix], result)\n }\n }\n\n return result as NormalizedListeners\n}\n\nfunction split (type: string) {\n return type.trim().split(/ +/)\n}\n","let lastTime = 0\nlet request\nlet cancel\n\nfunction init (window) {\n request = window.requestAnimationFrame\n cancel = window.cancelAnimationFrame\n\n if (!request) {\n const vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (const vendor of vendors) {\n request = window[`${vendor}RequestAnimationFrame`]\n cancel = window[`${vendor}CancelAnimationFrame`] || window[`${vendor}CancelRequestAnimationFrame`]\n }\n }\n\n if (!request) {\n request = (callback) => {\n const currTime = Date.now()\n const timeToCall = Math.max(0, 16 - (currTime - lastTime))\n // eslint-disable-next-line standard/no-callback-literal\n const token = setTimeout(() => { callback(currTime + timeToCall) },\n timeToCall)\n\n lastTime = currTime + timeToCall\n return token\n }\n\n cancel = (token) => clearTimeout(token)\n }\n}\n\nexport default {\n request: (callback) => request(callback),\n cancel: (token) => cancel(token),\n init,\n}\n","export type SignalListener = (signalArg: PartialSignalArg, sinalName?: string) => (void | boolean)\n\nexport interface SignalArg {\n interaction: Interact.Interaction\n Interactable: Interact.Interactable\n iEvent: Interact.InteractEvent\n element: Interact.EventTarget\n coords: Interact.Point\n event: Interact.PointerEventType\n phase: Interact.EventPhase\n [index: string]: any\n}\n\nexport type PartialSignalArg = Partial\n\nclass Signals {\n listeners: {\n [signalName: string]: SignalListener[],\n } = {}\n\n on (name: string, listener: SignalListener) {\n if (!this.listeners[name]) {\n this.listeners[name] = [listener]\n return\n }\n\n this.listeners[name].push(listener)\n }\n\n off (name: string, listener: SignalListener) {\n if (!this.listeners[name]) { return }\n\n const index = this.listeners[name].indexOf(listener)\n\n if (index !== -1) {\n this.listeners[name].splice(index, 1)\n }\n }\n\n fire (name: string, arg: Partial): void | false {\n const targetListeners = this.listeners[name]\n\n if (!targetListeners) { return }\n\n for (const listener of targetListeners) {\n if (listener(arg, name) === false) {\n return false\n }\n }\n }\n}\n\nexport default Signals\n","import * as arr from './arr'\nimport * as dom from './domUtils'\nimport * as is from './is'\nimport win from './window'\n\nexport function warnOnce (this: T, method: (...args: any) => any, message: string) {\n let warned = false\n\n // eslint-disable-next-line no-shadow\n return function (this: T) {\n if (!warned) {\n (win as any).window.console.warn(message)\n warned = true\n }\n\n return method.apply(this, arguments)\n }\n}\n\n// http://stackoverflow.com/a/5634528/2280888\nexport function _getQBezierValue (t: number, p1: number, p2: number, p3: number) {\n const iT = 1 - t\n return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3\n}\n\nexport function getQuadraticCurvePoint (\n startX: number, startY: number, cpX: number, cpY: number, endX: number, endY: number, position: number) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY),\n }\n}\n\n// http://gizma.com/easing/\nexport function easeOutQuad (t: number, b: number, c: number, d: number) {\n t /= d\n return -c * t * (t - 2) + b\n}\n\nexport function copyAction (dest: Interact.ActionProps, src: Interact.ActionProps) {\n dest.name = src.name\n dest.axis = src.axis\n dest.edges = src.edges\n\n return dest\n}\n\nexport { default as browser } from './browser'\nexport { default as clone } from './clone'\nexport { default as events } from './events'\nexport { default as extend } from './extend'\nexport { default as getOriginXY } from './getOriginXY'\nexport { default as hypot } from './hypot'\nexport { default as normalizeListeners } from './normalizeListeners'\nexport { default as pointer } from './pointerUtils'\nexport { default as raf } from './raf'\nexport { default as rect } from './rect'\nexport { default as Signals } from './Signals'\nexport { win, arr, dom, is }\n","// tslint:disable no-empty-interface\n\nexport interface Defaults {\n base: BaseDefaults\n perAction: PerActionDefaults\n actions: ActionDefaults\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ActionDefaults {\n}\n\nexport interface BaseDefaults {\n preventDefault?: 'auto' | 'never' | string\n deltaSource?: 'page' | 'client'\n context?: Window | Document | Element\n [key: string]: any\n}\n\nexport interface PerActionDefaults {\n enabled?: boolean\n origin?: Interact.Point | string | Element\n listeners?: Interact.Listeners\n allowFrom?: string | Element\n ignoreFrom?: string | Element\n}\n\nexport type Options = Partial & Partial & {\n [P in keyof ActionDefaults]?: Partial\n}\n\n// export interface Options extends BaseDefaults, PerActionDefaults {}\n\nexport interface OptionsArg extends BaseDefaults, Interact.OrBoolean