{"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/touch-hold/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-11 22:57:24\n * @LastEditTime: 2022-04-12 17:02:57\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\directives\\touch-hold\\index.ts\n */\nimport { createDirective } from '@vue-cesium/utils/private/create'\nimport { addEvt, cleanEvt, leftClick, noop, position, stopAndPrevent } from '@vue-cesium/utils/private/event'\nimport { clearSelection } from '@vue-cesium/utils/private/selection'\nimport { platform } from '@vue-cesium/utils/platform'\n\nexport default createDirective({\n  name: 'touch-hold',\n\n  beforeMount(el, binding) {\n    const { modifiers } = binding\n\n    // early return, we don't need to do anything\n    if (modifiers.mouse !== true && platform().hasTouch !== true) {\n      return\n    }\n\n    const ctx = {\n      handler: binding.value,\n      noop,\n\n      mouseStart(evt) {\n        if (typeof ctx.handler === 'function' && leftClick(evt) === true) {\n          addEvt(ctx, 'temp', [\n            [document, 'mousemove', 'move', 'passiveCapture'],\n            [document, 'click', 'end', 'notPassiveCapture']\n          ])\n          ctx.start(evt, true)\n        }\n      },\n\n      touchStart(evt) {\n        if (evt.target !== void 0 && typeof ctx.handler === 'function') {\n          const target = evt.target\n          addEvt(ctx, 'temp', [\n            [target, 'touchmove', 'move', 'passiveCapture'],\n            [target, 'touchcancel', 'end', 'notPassiveCapture'],\n            [target, 'touchend', 'end', 'notPassiveCapture']\n          ])\n          ctx.start(evt)\n          binding?.touchStart?.(evt)\n        }\n      },\n\n      start(evt, mouseEvent?) {\n        ctx.origin = position(evt)\n\n        const startTime = Date.now()\n\n        if (platform().isPhone === true) {\n          document.body.classList.add('non-selectable')\n          clearSelection()\n\n          ctx.styleCleanup = withDelay => {\n            ctx.styleCleanup = void 0\n\n            const remove = () => {\n              document.body.classList.remove('non-selectable')\n            }\n\n            if (withDelay === true) {\n              clearSelection()\n              setTimeout(remove, 10)\n            } else {\n              remove()\n            }\n          }\n        }\n\n        ctx.triggered = false\n        ctx.sensitivity = mouseEvent === true ? ctx.mouseSensitivity : ctx.touchSensitivity\n\n        ctx.timer = setTimeout(() => {\n          clearSelection()\n          ctx.triggered = true\n\n          ctx.handler({\n            evt,\n            touch: mouseEvent !== true,\n            mouse: mouseEvent === true,\n            position: ctx.origin,\n            duration: Date.now() - startTime\n          })\n        }, ctx.duration)\n      },\n\n      move(evt) {\n        const { top, left } = position(evt)\n        if (Math.abs(left - ctx.origin.left) >= ctx.sensitivity || Math.abs(top - ctx.origin.top) >= ctx.sensitivity) {\n          clearTimeout(ctx.timer)\n        }\n      },\n\n      end(evt) {\n        cleanEvt(ctx, 'temp')\n\n        // delay needed otherwise selection still occurs\n        ctx.styleCleanup !== void 0 && ctx.styleCleanup(ctx.triggered)\n\n        if (ctx.triggered === true) {\n          evt !== void 0 && stopAndPrevent(evt)\n        } else {\n          clearTimeout(ctx.timer)\n        }\n\n        binding?.touchEnd?.(evt)\n      }\n    } as any\n\n    // duration in ms, touch in pixels, mouse in pixels\n    const data = [600, 5, 7]\n\n    if (typeof binding.arg === 'string' && binding.arg.length > 0) {\n      binding.arg.split(':').forEach((val, index) => {\n        const v = parseInt(val, 10)\n        v && (data[index] = v)\n      })\n    }\n\n    ;[ctx.duration, ctx.touchSensitivity, ctx.mouseSensitivity] = data\n\n    el.__vctouchhold = ctx\n\n    modifiers.mouse === true && addEvt(ctx, 'main', [[el, 'mousedown', 'mouseStart', `passive${modifiers.mouseCapture === true ? 'Capture' : ''}`]])\n\n    platform().hasTouch === true &&\n      addEvt(ctx, 'main', [\n        [el, 'touchstart', 'touchStart', `passive${modifiers.capture === true ? 'Capture' : ''}`],\n        [el, 'touchend', 'noop', 'notPassiveCapture']\n      ])\n  },\n\n  updated(el, binding) {\n    const ctx = el.__vctouchhold\n\n    if (ctx !== void 0 && binding.oldValue !== binding.value) {\n      typeof binding.value !== 'function' && ctx.end()\n      ctx.handler = binding.value\n    }\n  },\n\n  beforeUnmount(el) {\n    const ctx = el.__vctouchhold\n\n    if (ctx !== void 0) {\n      cleanEvt(ctx, 'main')\n      cleanEvt(ctx, 'temp')\n\n      clearTimeout(ctx.timer)\n      ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n      delete el.__vctouchhold\n    }\n  }\n})\n"],"names":[],"mappings":"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"}