{"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 'casc-cesium-utils/private/create'\nimport { addEvt, cleanEvt, leftClick, noop, position, stopAndPrevent } from 'casc-cesium-utils/private/event'\nimport { clearSelection } from 'casc-cesium-utils/private/selection'\nimport { platform } from 'casc-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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"}