{ "version": 3, "sources": [ "base.ts" ], "names": [ "utils", "InteractableMethods", "install", "scope", "interact", "defaults", "usePlugin", "base", "actionChecker", "styleCursor", "extend", "perAction", "manualStart", "max", "Infinity", "maxPerElement", "allowFrom", "ignoreFrom", "mouseButtons", "maxInteractions", "newValue", "autoStart", "withinInteractionLimit", "cursorElement", "prepareOnDown", "interaction", "pointer", "event", "eventTarget", "interacting", "actionInfo", "getActionInfo", "prepare", "prepareOnMove", "pointerType", "pointerIsDown", "startOnMove", "arg", "pointerWasMoved", "prepared", "name", "fire", "interactable", "actionName", "options", "element", "stop", "start", "setInteractionCursor", "clearCursorOnStop", "setCursor", "validateAction", "action", "testIgnoreAllow", "enabled", "validateMatches", "matches", "matchElements", "i", "len", "length", "match", "matchElement", "matchAction", "getAction", "pushMatches", "push", "is", "interactables", "forEachMatch", "dom", "parentNode", "copyAction", "rect", "getRect", "maxActions", "autoStartMax", "activeInteractions", "interactableCount", "elementCount", "interactions", "list", "otherAction", "number", "cursor", "prevCursorElement", "style", "ownerDocument", "documentElement", "cursorChecker", "func", "_interacting", "actions", "getCursor", "id", "before", "listeners" ], "mappings": "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", "sourcesContent": [ "import * as utils from '@interactjs/utils/index'\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 interface SignalArgs {\n 'autoStart:before-start': Interact.SignalArgs['interactions:move']\n 'autoStart:prepared': { interaction: Interact.Interaction }\n 'auto-start:check': CheckSignalArg\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface BaseDefaults {\n actionChecker?: any\n cursorChecker?: any\n styleCursor?: any\n }\n\n interface PerActionDefaults {\n manualStart?: boolean\n max?: number\n maxPerElement?: number\n allowFrom?: string | Interact.Element\n ignoreFrom?: string | Interact.Element\n cursorChecker?: Interact.CursorChecker\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\ninterface CheckSignalArg {\n interactable: Interact.Interactable\n interaction: Interact.Interaction\n element: Interact.Element\n action: Interact.ActionProps\n buttons: number\n}\n\nexport interface AutoStart {\n // Allow this many interactions to happen simultaneously\n maxInteractions: number\n withinInteractionLimit: typeof withinInteractionLimit\n cursorElement: Interact.Element\n}\n\nfunction install (scope: Interact.Scope) {\n const {\n interact,\n defaults,\n } = scope\n\n scope.usePlugin(InteractableMethods)\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 }\n}\n\nfunction prepareOnDown ({ interaction, pointer, event, eventTarget }: Interact.SignalArgs['interactions:down'], scope: Interact.Scope) {\n if (interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope)\n prepare(interaction, actionInfo, scope)\n}\n\nfunction prepareOnMove ({ interaction, pointer, event, eventTarget }: Interact.SignalArgs['interactions:move'], scope: Interact.Scope) {\n if (interaction.pointerType !== 'mouse' ||\n interaction.pointerIsDown ||\n interaction.interacting()) { return }\n\n const actionInfo = getActionInfo(interaction, pointer, event, eventTarget as Interact.Element, scope)\n prepare(interaction, actionInfo, scope)\n}\n\nfunction startOnMove (arg: Interact.SignalArgs['interactions:move'], scope: Interact.Scope) {\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.fire('autoStart:before-start', arg)\n\n const { interactable } = interaction\n const actionName: Interact.ActionName = interaction.prepared.name\n\n if (actionName && interactable) {\n // check manualStart and interaction limit\n if (interactable.options[actionName].manualStart ||\n !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n interaction.stop()\n }\n else {\n interaction.start(interaction.prepared, interactable, interaction.element)\n setInteractionCursor(interaction, scope)\n }\n }\n}\n\nfunction clearCursorOnStop ({ interaction }: { interaction: Interact.Interaction }, scope: Interact.Scope) {\n const { interactable } = interaction\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element, '', scope)\n }\n}\n\n// Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\nfunction validateAction (\n action: Interact.ActionProps,\n interactable: Interact.Interactable,\n element: Interact.Element,\n eventTarget: Interact.EventTarget,\n scope: Interact.Scope,\n) {\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 (\n interaction: Interact.Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n matches: Interact.Interactable[],\n matchElements: Interact.Element[],\n eventTarget: Interact.EventTarget,\n scope: Interact.Scope,\n) {\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 (\n interaction: Interact.Interaction,\n pointer: Interact.PointerType,\n event: Interact.PointerEventType,\n eventTarget: Interact.EventTarget,\n scope: Interact.Scope,\n) {\n let matches: Interact.Interactable[] = []\n let matchElements: Interact.Element[] = []\n\n let element = eventTarget as Interact.Element\n\n function pushMatches (interactable: Interact.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) as Interact.Element\n }\n\n return { action: null, interactable: null, element: null }\n}\n\nfunction prepare (\n interaction: Interact.Interaction,\n { action, interactable, element }: {\n action: Interact.ActionProps\n interactable: Interact.Interactable\n element: Interact.Element\n },\n scope: Interact.Scope,\n) {\n action = action || { name: null }\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 setInteractionCursor(interaction, scope)\n\n scope.fire('autoStart:prepared', { interaction })\n}\n\nfunction withinInteractionLimit (\n interactable: Interact.Interactable,\n element: Interact.Element,\n action: Interact.ActionProps,\n scope: Interact.Scope,\n) {\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: any, 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: Interact.Element, cursor: string, scope: Interact.Scope) {\n const { cursorElement: prevCursorElement } = scope.autoStart\n\n if (prevCursorElement && prevCursorElement !== element) {\n prevCursorElement.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\nfunction setInteractionCursor (interaction: Interact.Interaction, scope: Interact.Scope) {\n const { interactable, element, prepared } = interaction\n\n if (!(interaction.pointerType === 'mouse' && interactable && interactable.options.styleCursor)) {\n // clear previous target element cursor\n if (scope.autoStart.cursorElement) {\n setCursor(scope.autoStart.cursorElement, '', scope)\n }\n\n return\n }\n\n let cursor = ''\n\n if (prepared.name) {\n const cursorChecker: Interact.CursorChecker = interactable.options[prepared.name].cursorChecker\n\n if (utils.is.func(cursorChecker)) {\n cursor = cursorChecker(prepared, interactable, element, interaction._interacting)\n }\n else {\n cursor = scope.actions[prepared.name].getCursor(prepared)\n }\n }\n\n setCursor(interaction.element, cursor || '', scope)\n}\n\nconst autoStart: Interact.Plugin = {\n id: 'auto-start/base',\n before: ['actions', 'action/drag', 'actions/resize', 'actions/gesture'],\n install,\n listeners: {\n 'interactions:down': prepareOnDown,\n 'interactions:move': (arg, scope) => {\n prepareOnMove(arg, scope)\n startOnMove(arg, scope)\n },\n 'interactions:stop': clearCursorOnStop,\n },\n maxInteractions,\n withinInteractionLimit,\n validateAction,\n} as Interact.Plugin\n\nexport default autoStart\n" ] }