{ "version": 3, "sources": [ "plugin.ts" ], "names": [ "Interactable", "Interaction", "arr", "is", "copyAction", "pointerUtils", "tlbrToXywh", "install", "scope", "actions", "phases", "reflow", "prototype", "action", "doReflow", "interactable", "elements", "string", "target", "from", "_context", "querySelectorAll", "Promise", "window", "promises", "element", "rect", "getRect", "runningInteraction", "find", "interactions", "list", "interaction", "interacting", "prepared", "name", "reflowPromise", "move", "_reflowPromise", "resolve", "_reflowResolve", "xywh", "coords", "page", "x", "y", "client", "timeStamp", "now", "event", "coordsToEvent", "startReflow", "push", "all", "then", "new", "pointerType", "signalArg", "pointer", "eventTarget", "phase", "prevEvent", "updatePointer", "setZeroCoords", "delta", "_doPhase", "undefined", "start", "_interacting", "end", "stop", "removePointer", "id", "listeners", "remove" ], "mappings": "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", "sourcesContent": [ "import { Interactable } from '@interactjs/core/Interactable'\nimport { ActionProps, DoAnyPhaseArg, Interaction } from '@interactjs/core/Interaction'\nimport { ActionName, Scope, Plugin } from '@interactjs/core/scope'\nimport { Element } from '@interactjs/types/index'\nimport * as arr from '@interactjs/utils/arr'\nimport is from '@interactjs/utils/is'\nimport { copyAction } from '@interactjs/utils/misc'\nimport * as pointerUtils from '@interactjs/utils/pointerUtils'\nimport { tlbrToXywh } from '@interactjs/utils/rect'\n\ndeclare module '@interactjs/core/scope' {\n interface SignalArgs {\n 'interactions:before-action-reflow': Omit\n 'interactions:action-reflow': DoAnyPhaseArg\n 'interactions:after-action-reflow': DoAnyPhaseArg\n }\n}\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: (...args: unknown[]) => void\n }\n}\n\ndeclare module '@interactjs/core/InteractEvent' {\n interface PhaseMap {\n reflow?: true\n }\n}\n\nexport function install (scope: Scope) {\n const {\n /** @lends Interactable */\n Interactable,\n } = scope\n\n scope.actions.phases.reflow = true\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 } A promise that resolves to the `Interactable` when actions on all targets have ended\n */\n Interactable.prototype.reflow = function (action: ActionProps) {\n return doReflow(this, action, scope)\n }\n}\n\nfunction doReflow (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]) as Element[]\n\n // tslint:disable-next-line variable-name\n const Promise = (scope.window as any).Promise\n const promises: Array> | null = Promise ? [] : null\n\n for (const element of elements) {\n const rect = interactable.getRect(element as HTMLElement | SVGElement)\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 = 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: 'reflow',\n } as const\n\n interaction.interactable = interactable\n interaction.element = element\n interaction.prevEvent = event\n interaction.updatePointer(event, event, element, true)\n pointerUtils.setZeroCoords(interaction.coords.delta)\n\n copyAction(interaction.prepared, action)\n interaction._doPhase(signalArg)\n\n const { Promise } = (scope.window as unknown as { Promise: PromiseConstructor })\n const reflowPromise = Promise\n ? new Promise(resolve => {\n interaction._reflowResolve = resolve\n })\n : undefined\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 interaction._reflowResolve()\n }\n\n interaction.removePointer(event, event)\n\n return reflowPromise\n}\n\nconst reflow: Plugin = {\n id: 'reflow',\n install,\n listeners: {\n // remove completed reflow interactions\n 'interactions:stop': ({ interaction }, scope) => {\n if (interaction.pointerType === 'reflow') {\n if (interaction._reflowResolve) {\n interaction._reflowResolve()\n }\n\n arr.remove(scope.interactions.list, interaction)\n }\n },\n },\n}\n\nexport default reflow\n" ] }