{"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/touch-pan/index.ts"],"sourcesContent":["import { platform } from '@vue-cesium/utils/platform'\nimport { createDirective } from '@vue-cesium/utils/private/create'\nimport { addEvt, cleanEvt, position, leftClick, prevent, stop, stopAndPrevent, preventDraggable, noop } from '@vue-cesium/utils/private/event'\nimport { clearSelection } from '@vue-cesium/utils/private/selection'\nimport { getModifierDirections, shouldStart } from '@vue-cesium/utils/private/touch'\n\nfunction getChanges(evt, ctx, isFinal?: boolean) {\n  const pos = position(evt)\n  let dir,\n    distX = pos.left - ctx.event.x,\n    distY = pos.top - ctx.event.y,\n    absX = Math.abs(distX),\n    absY = Math.abs(distY)\n\n  const direction = ctx.direction\n\n  if (direction.horizontal === true && direction.vertical !== true) {\n    dir = distX < 0 ? 'left' : 'right'\n  } else if (direction.horizontal !== true && direction.vertical === true) {\n    dir = distY < 0 ? 'up' : 'down'\n  } else if (direction.up === true && distY < 0) {\n    dir = 'up'\n    if (absX > absY) {\n      if (direction.left === true && distX < 0) {\n        dir = 'left'\n      } else if (direction.right === true && distX > 0) {\n        dir = 'right'\n      }\n    }\n  } else if (direction.down === true && distY > 0) {\n    dir = 'down'\n    if (absX > absY) {\n      if (direction.left === true && distX < 0) {\n        dir = 'left'\n      } else if (direction.right === true && distX > 0) {\n        dir = 'right'\n      }\n    }\n  } else if (direction.left === true && distX < 0) {\n    dir = 'left'\n    if (absX < absY) {\n      if (direction.up === true && distY < 0) {\n        dir = 'up'\n      } else if (direction.down === true && distY > 0) {\n        dir = 'down'\n      }\n    }\n  } else if (direction.right === true && distX > 0) {\n    dir = 'right'\n    if (absX < absY) {\n      if (direction.up === true && distY < 0) {\n        dir = 'up'\n      } else if (direction.down === true && distY > 0) {\n        dir = 'down'\n      }\n    }\n  }\n\n  let synthetic = false\n\n  if (dir === void 0 && isFinal === false) {\n    if (ctx.event.isFirst === true || ctx.event.lastDir === void 0) {\n      return {}\n    }\n\n    dir = ctx.event.lastDir\n    synthetic = true\n\n    if (dir === 'left' || dir === 'right') {\n      pos.left -= distX\n      absX = 0\n      distX = 0\n    } else {\n      pos.top -= distY\n      absY = 0\n      distY = 0\n    }\n  }\n\n  return {\n    synthetic,\n    payload: {\n      evt,\n      touch: ctx.event.mouse !== true,\n      mouse: ctx.event.mouse === true,\n      position: pos,\n      direction: dir,\n      isFirst: ctx.event.isFirst,\n      isFinal: isFinal === true,\n      duration: Date.now() - ctx.event.time,\n      distance: {\n        x: absX,\n        y: absY\n      },\n      offset: {\n        x: distX,\n        y: distY\n      },\n      delta: {\n        x: pos.left - ctx.event.lastX,\n        y: pos.top - ctx.event.lastY\n      }\n    }\n  }\n}\n\nlet uid = 0\n\nexport default createDirective({\n  name: 'touch-pan',\n\n  beforeMount(el, { value, modifiers }) {\n    // early return, we don't need to do anything\n    if (modifiers.mouse !== true && platform().hasTouch !== true) {\n      return\n    }\n\n    function handleEvent(evt, mouseEvent) {\n      if (modifiers.mouse === true && mouseEvent === true) {\n        stopAndPrevent(evt)\n      } else {\n        modifiers.stop === true && stop(evt)\n        modifiers.prevent === true && prevent(evt)\n      }\n    }\n\n    const ctx: any = {\n      uid: 'qvtp_' + uid++,\n      handler: value,\n      modifiers,\n      direction: getModifierDirections(modifiers),\n\n      noop,\n\n      mouseStart(evt) {\n        if (shouldStart(evt, ctx) && leftClick(evt)) {\n          addEvt(ctx, 'temp', [\n            [document, 'mousemove', 'move', 'notPassiveCapture'],\n            [document, 'mouseup', 'end', 'passiveCapture']\n          ])\n\n          ctx.start(evt, true)\n        }\n      },\n\n      touchStart(evt) {\n        if (shouldStart(evt, ctx)) {\n          const target = evt.target\n\n          addEvt(ctx, 'temp', [\n            [target, 'touchmove', 'move', 'notPassiveCapture'],\n            [target, 'touchcancel', 'end', 'passiveCapture'],\n            [target, 'touchend', 'end', 'passiveCapture']\n          ])\n\n          ctx.start(evt)\n        }\n      },\n\n      start(evt, mouseEvent?: boolean) {\n        platform().isFireFox === true && preventDraggable(el, true)\n        ctx.lastEvt = evt\n\n        /*\n         * Stop propagation so possible upper v-touch-pan don't catch this as well;\n         * If we're not the target (based on modifiers), we'll re-emit the event later\n         */\n        if (mouseEvent === true || modifiers.stop === true) {\n          /*\n           * are we directly switching to detected state?\n           * clone event only otherwise\n           */\n          if (\n            ctx.direction.all !== true &&\n            // account for UMD too where modifiers will be lowercased to work\n            (mouseEvent !== true || (ctx.modifiers.mouseAllDir !== true && ctx.modifiers.mousealldir !== true))\n          ) {\n            const clone = evt.type.indexOf('mouse') > -1 ? new MouseEvent(evt.type, evt) : new TouchEvent(evt.type, evt)\n\n            evt.defaultPrevented === true && prevent(clone)\n            evt.cancelBubble === true && stop(clone)\n\n            Object.assign(clone, {\n              qKeyEvent: evt.qKeyEvent,\n              qClickOutside: evt.qClickOutside,\n              qAnchorHandled: evt.qAnchorHandled,\n              qClonedBy: evt.qClonedBy === void 0 ? [ctx.uid] : evt.qClonedBy.concat(ctx.uid)\n            })\n\n            ctx.initialEvent = {\n              target: evt.target,\n              event: clone\n            }\n          }\n\n          stop(evt)\n        }\n\n        const { left, top } = position(evt)\n\n        ctx.event = {\n          x: left,\n          y: top,\n          time: Date.now(),\n          mouse: mouseEvent === true,\n          detected: false,\n          isFirst: true,\n          isFinal: false,\n          lastX: left,\n          lastY: top\n        }\n      },\n\n      move(evt) {\n        if (ctx.event === void 0) {\n          return\n        }\n\n        const pos = position(evt),\n          distX = pos.left - ctx.event.x,\n          distY = pos.top - ctx.event.y\n\n        // prevent buggy browser behavior (like Blink-based engine ones on Windows)\n        // where the mousemove event occurs even if there's no movement after mousedown\n        // https://bugs.chromium.org/p/chromium/issues/detail?id=161464\n        // https://bugs.chromium.org/p/chromium/issues/detail?id=721341\n        // https://github.com/quasarframework/quasar/issues/10721\n        if (distX === 0 && distY === 0) {\n          return\n        }\n\n        ctx.lastEvt = evt\n\n        const isMouseEvt = ctx.event.mouse === true\n        const start = () => {\n          handleEvent(evt, isMouseEvt)\n\n          let cursor\n          if (modifiers.preserveCursor !== true && modifiers.preservecursor !== true) {\n            cursor = document.documentElement.style.cursor || ''\n            document.documentElement.style.cursor = 'grabbing'\n          }\n\n          isMouseEvt === true && document.body.classList.add('no-pointer-events--children')\n          document.body.classList.add('non-selectable')\n          clearSelection()\n\n          ctx.styleCleanup = withDelayedFn => {\n            ctx.styleCleanup = void 0\n\n            if (cursor !== void 0) {\n              document.documentElement.style.cursor = cursor\n            }\n\n            document.body.classList.remove('non-selectable')\n\n            if (isMouseEvt === true) {\n              const remove = () => {\n                document.body.classList.remove('no-pointer-events--children')\n              }\n\n              if (withDelayedFn !== void 0) {\n                setTimeout(() => {\n                  remove()\n                  withDelayedFn()\n                }, 50)\n              } else {\n                remove()\n              }\n            } else if (withDelayedFn !== void 0) {\n              withDelayedFn()\n            }\n          }\n        }\n\n        if (ctx.event.detected === true) {\n          ctx.event.isFirst !== true && handleEvent(evt, ctx.event.mouse)\n\n          const { payload, synthetic } = getChanges(evt, ctx, false)\n\n          if (payload !== void 0) {\n            if (ctx.handler(payload) === false) {\n              ctx.end(evt)\n            } else {\n              if (ctx.styleCleanup === void 0 && ctx.event.isFirst === true) {\n                start()\n              }\n\n              ctx.event.lastX = payload.position.left\n              ctx.event.lastY = payload.position.top\n              ctx.event.lastDir = synthetic === true ? void 0 : payload.direction\n              ctx.event.isFirst = false\n            }\n          }\n\n          return\n        }\n\n        if (\n          ctx.direction.all === true ||\n          // account for UMD too where modifiers will be lowercased to work\n          (isMouseEvt === true && (ctx.modifiers.mouseAllDir === true || ctx.modifiers.mousealldir === true))\n        ) {\n          start()\n          ctx.event.detected = true\n          ctx.move(evt)\n          return\n        }\n\n        const absX = Math.abs(distX),\n          absY = Math.abs(distY)\n\n        if (absX !== absY) {\n          if (\n            (ctx.direction.horizontal === true && absX > absY) ||\n            (ctx.direction.vertical === true && absX < absY) ||\n            (ctx.direction.up === true && absX < absY && distY < 0) ||\n            (ctx.direction.down === true && absX < absY && distY > 0) ||\n            (ctx.direction.left === true && absX > absY && distX < 0) ||\n            (ctx.direction.right === true && absX > absY && distX > 0)\n          ) {\n            ctx.event.detected = true\n            ctx.move(evt)\n          } else {\n            ctx.end(evt, true)\n          }\n        }\n      },\n\n      end(evt, abort) {\n        if (ctx.event === void 0) {\n          return\n        }\n\n        cleanEvt(ctx, 'temp')\n        platform().isFireFox === true && preventDraggable(el, false)\n\n        if (abort === true) {\n          ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n          if (ctx.event.detected !== true && ctx.initialEvent !== void 0) {\n            ctx.initialEvent.target.dispatchEvent(ctx.initialEvent.event)\n          }\n        } else if (ctx.event.detected === true) {\n          ctx.event.isFirst === true && ctx.handler(getChanges(evt === void 0 ? ctx.lastEvt : evt, ctx).payload)\n\n          const { payload } = getChanges(evt === void 0 ? ctx.lastEvt : evt, ctx, true)\n          const fn = () => {\n            ctx.handler(payload)\n          }\n\n          if (ctx.styleCleanup !== void 0) {\n            ctx.styleCleanup(fn)\n          } else {\n            fn()\n          }\n        }\n\n        ctx.event = void 0\n        ctx.initialEvent = void 0\n        ctx.lastEvt = void 0\n      }\n    }\n\n    el.__qtouchpan = ctx\n\n    if (modifiers.mouse === true) {\n      // account for UMD too where modifiers will be lowercased to work\n      const capture = modifiers.mouseCapture === true || modifiers.mousecapture === true ? 'Capture' : ''\n\n      addEvt(ctx, 'main', [[el, 'mousedown', 'mouseStart', `passive${capture}`]])\n    }\n\n    platform().hasTouch === true &&\n      addEvt(ctx, 'main', [\n        [el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}`],\n        [el, 'touchmove', 'noop', 'notPassiveCapture'] // cannot be passive (ex: iOS scroll)\n      ])\n  },\n\n  updated(el, bindings) {\n    const ctx = el.__qtouchpan\n\n    if (ctx !== void 0) {\n      if (bindings.oldValue !== bindings.value) {\n        typeof bindings.value !== 'function' && ctx.end()\n        ctx.handler = bindings.value\n      }\n\n      ctx.direction = getModifierDirections(bindings.modifiers)\n    }\n  },\n\n  beforeUnmount(el) {\n    const ctx = el.__qtouchpan\n\n    if (ctx !== void 0) {\n      // emit the end event when the directive is destroyed while active\n      // this is only needed in TouchPan because the rest of the touch directives do not emit an end event\n      // the condition is also checked in the start of function but we avoid the call\n      ctx.event !== void 0 && ctx.end()\n\n      cleanEvt(ctx, 'main')\n      cleanEvt(ctx, 'temp')\n\n      platform().isFireFox === true && preventDraggable(el, false)\n      ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n      delete el.__qtouchpan\n    }\n  }\n})\n"],"names":[],"mappings":"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"}