UNPKG

@dspacev-bundle/vue-cesium

Version:
1 lines 25.1 kB
{"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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"}