@dspacev-bundle/vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 14.3 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../packages/directives/touch-repeat/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-12 13:11:46\n * @LastEditTime: 2022-04-12 13:18:00\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\directives\\touch-repeat\\index.ts\n */\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'\nimport { isKeyCode } from '@vue-cesium/utils/private/key-composition'\n\nconst keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n delete: [8, 46]\n },\n keyRegex = new RegExp(`^([\\\\d+]+|${Object.keys(keyCodes).join('|')})$`, 'i')\n\nfunction shouldEnd(evt, origin) {\n const { top, left } = position(evt)\n\n return Math.abs(left - origin.left) >= 7 || Math.abs(top - origin.top) >= 7\n}\n\nexport default createDirective({\n name: 'touch-repeat',\n\n beforeMount(el, { modifiers, value, arg, touchStart }) {\n const keyboard = Object.keys(modifiers).reduce((acc, key) => {\n if (keyRegex.test(key) === true) {\n const keyCode = isNaN(parseInt(key, 10)) ? keyCodes[key.toLowerCase()] : parseInt(key, 10)\n keyCode >= 0 && acc.push(keyCode)\n }\n return acc\n }, [])\n\n // early return, we don't need to do anything\n if (modifiers.mouse !== true && platform().hasTouch !== true && keyboard.length === 0) {\n return\n }\n\n const durations = typeof arg === 'string' && arg.length > 0 ? arg.split(':').map(val => parseInt(val, 10)) : [0, 600, 300]\n\n const durationsLast = durations.length - 1\n\n const ctx = {\n keyboard,\n handler: value,\n\n noop,\n\n mouseStart(evt) {\n if (ctx.event === void 0 && 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 keyboardStart(evt) {\n if (typeof ctx.handler === 'function' && isKeyCode(evt, keyboard) === true) {\n if (durations[0] === 0 || ctx.event !== void 0) {\n stopAndPrevent(evt)\n el.focus()\n if (ctx.event !== void 0) {\n return\n }\n }\n\n addEvt(ctx, 'temp', [\n [document, 'keyup', 'end', 'notPassiveCapture'],\n [document, 'click', 'end', 'notPassiveCapture']\n ])\n ctx.start(evt, false, 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 touchStart?.(evt)\n }\n },\n\n start(evt, mouseEvent, keyboardEvent?) {\n if (keyboardEvent !== true) {\n ctx.origin = position(evt)\n }\n\n function styleCleanup(withDelay) {\n ctx.styleCleanup = void 0\n\n document.documentElement.style.cursor = ''\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 if (platform().isPhone === true) {\n document.body.classList.add('non-selectable')\n clearSelection()\n ctx.styleCleanup = styleCleanup\n }\n\n ctx.event = {\n touch: mouseEvent !== true && keyboardEvent !== true,\n mouse: mouseEvent === true,\n keyboard: keyboardEvent === true,\n startTime: Date.now(),\n repeatCount: 0\n }\n\n const fn = () => {\n if (ctx.event === void 0) {\n return\n }\n\n if (ctx.event.repeatCount === 0) {\n ctx.event.evt = evt\n\n if (keyboardEvent === true) {\n ctx.event.keyCode = evt.keyCode\n } else {\n ctx.event.position = position(evt)\n }\n\n if (platform().isPhone !== true) {\n document.documentElement.style.cursor = 'pointer'\n document.body.classList.add('non-selectable')\n clearSelection()\n ctx.styleCleanup = styleCleanup\n }\n }\n\n ctx.event.duration = Date.now() - ctx.event.startTime\n ctx.event.repeatCount += 1\n\n ctx.handler(ctx.event)\n\n const index = durationsLast < ctx.event.repeatCount ? durationsLast : ctx.event.repeatCount\n\n ctx.timer = setTimeout(fn, durations[index])\n }\n\n if (durations[0] === 0) {\n fn()\n } else {\n ctx.timer = setTimeout(fn, durations[0])\n }\n },\n\n move(evt) {\n if (ctx.event !== void 0 && shouldEnd(evt, ctx.origin) === true) {\n clearTimeout(ctx.timer)\n }\n },\n\n end(evt) {\n if (ctx.event === void 0) {\n return\n }\n\n ctx.styleCleanup !== void 0 && ctx.styleCleanup(true)\n evt !== void 0 && ctx.event.repeatCount > 0 && stopAndPrevent(evt)\n\n cleanEvt(ctx, 'temp')\n clearTimeout(ctx.timer)\n\n ctx.event = void 0\n }\n } as any\n\n el.__vctouchrepeat = 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 keyboard.length > 0 && addEvt(ctx, 'main', [[el, 'keydown', 'keyboardStart', `notPassive${modifiers.keyCapture === true ? 'Capture' : ''}`]])\n },\n\n updated(el, { oldValue, value }) {\n const ctx = el.__vctouchrepeat\n\n if (ctx !== void 0 && oldValue !== value) {\n typeof value !== 'function' && ctx.end()\n ctx.handler = value\n }\n },\n\n beforeUnmount(el) {\n const ctx = el.__vctouchrepeat\n\n if (ctx !== void 0) {\n clearTimeout(ctx.timer)\n\n cleanEvt(ctx, 'main')\n cleanEvt(ctx, 'temp')\n\n ctx.styleCleanup !== void 0 && ctx.styleCleanup()\n\n delete el.__vctouchrepeat\n }\n }\n})\n"],"names":[],"mappings":"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"}