casc-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 34 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../packages/composables/use-handler/index.ts"],"sourcesContent":["import { VcViewerProvider, AnyFunction } from 'casc-cesium-utils/types'\nimport { ref } from 'vue'\nimport { TouchHold } from 'casc-cesium-directives'\nimport defer from 'casc-cesium-utils/defer'\n\ninterface HandlerActions {\n handleMouseClick?: AnyFunction<void>\n handleMouseDown?: AnyFunction<void>\n handleMouseUp?: AnyFunction<void>\n handleMouseMove?: AnyFunction<void>\n handleDoubleClick?: AnyFunction<void>\n handleMouseWheel?: AnyFunction<void>\n handlePinch?: AnyFunction<void>\n}\n\nexport default function (\n $services: VcViewerProvider,\n {\n handleMouseClick = undefined,\n handleMouseDown = undefined,\n handleMouseUp = undefined,\n handleMouseMove = undefined,\n handleDoubleClick = undefined,\n handleMouseWheel = undefined,\n handlePinch = undefined\n }: HandlerActions\n) {\n // state\n const handler = ref<Cesium.ScreenSpaceEventHandler | undefined>(undefined)\n const isActive = ref(false)\n\n //methods\n const activate = () => {\n if (isActive.value) {\n return\n }\n\n const { ScreenSpaceEventType, KeyboardEventModifier, ScreenSpaceEventHandler } = Cesium\n if (!handler.value) {\n const { viewer } = $services\n handler.value = new ScreenSpaceEventHandler(viewer.canvas)\n TouchHold.beforeMount(viewer.canvas, {\n arg: '2000',\n value: onTouchHold,\n touchStart: onTouchStart,\n touchEnd: onTouchEnd,\n modifiers: {}\n })\n }\n\n const sseh = handler.value\n sseh.setInputAction(onLeftClick, ScreenSpaceEventType.LEFT_CLICK)\n sseh.setInputAction(onLeftClickShift, ScreenSpaceEventType.LEFT_CLICK, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onLeftClickCtrl, ScreenSpaceEventType.LEFT_CLICK, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onLeftDown, ScreenSpaceEventType.LEFT_DOWN)\n sseh.setInputAction(onLeftDownShift, ScreenSpaceEventType.LEFT_DOWN, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onLeftDownCtrl, ScreenSpaceEventType.LEFT_DOWN, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onLeftUp, ScreenSpaceEventType.LEFT_UP)\n sseh.setInputAction(onLeftUpShift, ScreenSpaceEventType.LEFT_UP, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onLeftUpCtrl, ScreenSpaceEventType.LEFT_UP, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onRightClick, ScreenSpaceEventType.RIGHT_CLICK)\n sseh.setInputAction(onRightClickShift, ScreenSpaceEventType.RIGHT_CLICK, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onRightClickCtrl, ScreenSpaceEventType.RIGHT_CLICK, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onRightDown, ScreenSpaceEventType.RIGHT_DOWN)\n sseh.setInputAction(onRightDownShift, ScreenSpaceEventType.RIGHT_DOWN, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onRightDownCtrl, ScreenSpaceEventType.RIGHT_DOWN, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onRightUp, ScreenSpaceEventType.RIGHT_UP)\n sseh.setInputAction(onRightUpShift, ScreenSpaceEventType.RIGHT_UP, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onRightUpCtrl, ScreenSpaceEventType.RIGHT_UP, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onMiddleClick, ScreenSpaceEventType.MIDDLE_CLICK)\n sseh.setInputAction(onMiddleClickShift, ScreenSpaceEventType.MIDDLE_CLICK, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onMiddleClickCtrl, ScreenSpaceEventType.MIDDLE_CLICK, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onMiddleDown, ScreenSpaceEventType.MIDDLE_DOWN)\n sseh.setInputAction(onMiddleDownShift, ScreenSpaceEventType.MIDDLE_DOWN, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onMiddleDownCtrl, ScreenSpaceEventType.MIDDLE_DOWN, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onMiddleUp, ScreenSpaceEventType.MIDDLE_UP)\n sseh.setInputAction(onMiddleUpShift, ScreenSpaceEventType.MIDDLE_UP, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onMiddleUpCtrl, ScreenSpaceEventType.MIDDLE_UP, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onDoubleClick, ScreenSpaceEventType.LEFT_DOUBLE_CLICK)\n sseh.setInputAction(onDoubleClickShift, ScreenSpaceEventType.LEFT_DOUBLE_CLICK, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onDoubleClickCtrl, ScreenSpaceEventType.LEFT_DOUBLE_CLICK, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onMouseMove, ScreenSpaceEventType.MOUSE_MOVE)\n sseh.setInputAction(onMouseMoveShift, ScreenSpaceEventType.MOUSE_MOVE, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onMouseMoveCtrl, ScreenSpaceEventType.MOUSE_MOVE, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onMouseWheel, ScreenSpaceEventType.WHEEL)\n sseh.setInputAction(onMouseWheelShift, ScreenSpaceEventType.WHEEL, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onMouseWheelCtrl, ScreenSpaceEventType.WHEEL, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onPinchStart, ScreenSpaceEventType.PINCH_START)\n sseh.setInputAction(onPinchStartShift, ScreenSpaceEventType.PINCH_START, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onPinchStartCtrl, ScreenSpaceEventType.PINCH_START, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onPinchEnd, ScreenSpaceEventType.PINCH_END)\n sseh.setInputAction(onPinchEndShift, ScreenSpaceEventType.PINCH_END, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onPinchEndCtrl, ScreenSpaceEventType.PINCH_END, KeyboardEventModifier.CTRL)\n\n sseh.setInputAction(onPinchMove, ScreenSpaceEventType.PINCH_MOVE)\n sseh.setInputAction(onPinchMoveShift, ScreenSpaceEventType.PINCH_MOVE, KeyboardEventModifier.SHIFT)\n sseh.setInputAction(onPinchMoveCtrl, ScreenSpaceEventType.PINCH_MOVE, KeyboardEventModifier.CTRL)\n isActive.value = true\n }\n\n const deactivate = () => {\n if (!isActive.value) {\n return\n }\n const { ScreenSpaceEventType, KeyboardEventModifier } = Cesium\n\n const sseh = handler.value\n if (!sseh) {\n return\n }\n\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_CLICK)\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_CLICK, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_CLICK, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOWN)\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOWN, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOWN, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_UP, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_UP, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.RIGHT_CLICK)\n sseh.removeInputAction(ScreenSpaceEventType.RIGHT_CLICK, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.RIGHT_CLICK, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.RIGHT_DOWN)\n sseh.removeInputAction(ScreenSpaceEventType.RIGHT_DOWN, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.RIGHT_DOWN, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.RIGHT_UP)\n sseh.removeInputAction(ScreenSpaceEventType.RIGHT_UP, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.RIGHT_UP, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_CLICK)\n sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_CLICK, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_CLICK, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_DOWN)\n sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_DOWN, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_DOWN, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_UP)\n sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_UP, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.MIDDLE_UP, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOUBLE_CLICK)\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOUBLE_CLICK, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.LEFT_DOUBLE_CLICK, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.MOUSE_MOVE)\n sseh.removeInputAction(ScreenSpaceEventType.MOUSE_MOVE, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.MOUSE_MOVE, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.WHEEL)\n sseh.removeInputAction(ScreenSpaceEventType.WHEEL, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.WHEEL, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.PINCH_START)\n sseh.removeInputAction(ScreenSpaceEventType.PINCH_START, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.PINCH_START, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.PINCH_END)\n sseh.removeInputAction(ScreenSpaceEventType.PINCH_END, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.PINCH_END, KeyboardEventModifier.CTRL)\n\n sseh.removeInputAction(ScreenSpaceEventType.PINCH_MOVE)\n sseh.removeInputAction(ScreenSpaceEventType.PINCH_MOVE, KeyboardEventModifier.SHIFT)\n sseh.removeInputAction(ScreenSpaceEventType.PINCH_MOVE, KeyboardEventModifier.CTRL)\n\n const { viewer } = $services\n TouchHold.beforeUnmount(viewer.canvas)\n isActive.value = false\n }\n\n const destroy = () => {\n handler.value?.destroy()\n handler.value = undefined\n }\n\n const onLeftClick = movement => {\n handleMouseClick?.(movement, {\n button: 0\n })\n }\n\n const onLeftClickShift = movement => {\n handleMouseClick?.(movement, {\n button: 0,\n shift: true\n })\n }\n\n const onLeftClickCtrl = movement => {\n handleMouseClick?.(movement, {\n button: 0,\n ctrl: true\n })\n }\n\n const onMiddleClick = movement => {\n handleMouseClick?.(movement, {\n button: 1\n })\n }\n\n const onMiddleClickShift = movement => {\n handleMouseClick?.(movement, {\n button: 1,\n shift: true\n })\n }\n\n const onMiddleClickCtrl = movement => {\n handleMouseClick?.(movement, {\n button: 1,\n ctrl: true\n })\n }\n\n let touchPromise = undefined\n const onRightClick = movement => {\n if (touchPromise) {\n touchPromise?.promise?.then(flag => {\n flag &&\n handleMouseClick?.(movement, {\n button: 2\n })\n })\n } else {\n handleMouseClick?.(movement, {\n button: 2\n })\n }\n }\n\n const onRightClickShift = movement => {\n handleMouseClick?.(movement, {\n button: 2,\n shift: true\n })\n }\n\n const onRightClickCtrl = movement => {\n handleMouseClick?.(movement, {\n button: 2,\n ctrl: true\n })\n }\n\n const onLeftDown = movement => {\n handleMouseDown?.(movement, {\n button: 0\n })\n }\n\n const onLeftDownShift = movement => {\n handleMouseDown?.(movement, {\n button: 0,\n shift: true\n })\n }\n\n const onLeftDownCtrl = movement => {\n handleMouseDown?.(movement, {\n button: 0,\n ctrl: true\n })\n }\n\n const onMiddleDown = movement => {\n handleMouseDown?.(movement, {\n button: 1\n })\n }\n\n const onMiddleDownShift = movement => {\n handleMouseDown?.(movement, {\n button: 1,\n shift: true\n })\n }\n\n const onMiddleDownCtrl = movement => {\n handleMouseDown?.(movement, {\n button: 1,\n ctrl: true\n })\n }\n\n const onRightDown = movement => {\n handleMouseDown?.(movement, {\n button: 2\n })\n }\n\n const onRightDownShift = movement => {\n handleMouseDown?.(movement, {\n button: 2,\n shift: true\n })\n }\n\n const onRightDownCtrl = movement => {\n handleMouseDown?.(movement, {\n button: 2,\n ctrl: true\n })\n }\n\n const onLeftUp = movement => {\n handleMouseUp?.(movement, {\n button: 0\n })\n }\n\n const onLeftUpShift = movement => {\n handleMouseUp?.(movement, {\n button: 0,\n shift: true\n })\n }\n\n const onLeftUpCtrl = movement => {\n handleMouseUp?.(movement, {\n button: 0,\n ctrl: true\n })\n }\n\n const onMiddleUp = movement => {\n handleMouseUp?.(movement, {\n button: 1,\n ctrl: true\n })\n }\n\n const onMiddleUpShift = movement => {\n handleMouseUp?.(movement, {\n button: 1,\n shift: true\n })\n }\n\n const onMiddleUpCtrl = movement => {\n handleMouseUp?.(movement, {\n button: 1,\n ctrl: true\n })\n }\n\n const onRightUp = movement => {\n handleMouseUp?.(movement, {\n button: 2\n })\n }\n\n const onRightUpShift = movement => {\n handleMouseUp?.(movement, {\n button: 2,\n shift: true\n })\n }\n\n const onRightUpCtrl = movement => {\n handleMouseUp?.(movement, {\n button: 2,\n ctrl: true\n })\n }\n\n const onDoubleClick = movement => {\n handleDoubleClick?.(movement, {\n button: 0\n })\n }\n\n const onDoubleClickShift = movement => {\n handleDoubleClick?.(movement, {\n button: 0,\n shift: true\n })\n }\n\n const onDoubleClickCtrl = movement => {\n handleDoubleClick?.(movement, {\n button: 0,\n ctrl: true\n })\n }\n\n const onMouseMove = movement => {\n handleMouseMove?.(movement)\n }\n\n const onMouseMoveShift = movement => {\n handleMouseMove?.(movement, {\n shift: true\n })\n }\n\n const onMouseMoveCtrl = movement => {\n handleMouseMove?.(movement, {\n ctrl: true\n })\n }\n\n const onMouseWheel = e => {\n handleMouseWheel?.(e)\n }\n\n const onMouseWheelShift = e => {\n handleMouseWheel?.(e, {\n shift: true\n })\n }\n\n const onMouseWheelCtrl = e => {\n handleMouseWheel?.(e, {\n ctrl: true\n })\n }\n\n const onPinchStart = e => {\n handlePinch?.(e, {\n start: true\n })\n }\n\n const onPinchStartShift = e => {\n handlePinch?.(e, {\n start: true,\n shift: true\n })\n }\n\n const onPinchStartCtrl = e => {\n handlePinch?.(e, {\n start: true,\n ctrl: true\n })\n }\n\n const onPinchEnd = e => {\n handlePinch?.(e, {\n end: true\n })\n }\n\n const onPinchEndShift = e => {\n handlePinch?.(e, {\n end: true,\n shift: true\n })\n }\n\n const onPinchEndCtrl = e => {\n handlePinch?.(e, {\n end: true,\n ctrl: true\n })\n }\n\n const onPinchMove = e => {\n handlePinch?.(e, {\n move: true\n })\n }\n\n const onPinchMoveShift = e => {\n handlePinch?.(e, {\n move: true,\n shift: true\n })\n }\n\n const onPinchMoveCtrl = e => {\n handlePinch?.(e, {\n move: true,\n ctrl: true\n })\n }\n\n const onTouchHold = e => {\n if (e.touch) {\n const movement = {\n position: {\n x: e.position.left,\n y: e.position.top\n }\n }\n handleDoubleClick?.(movement, {\n button: 0\n })\n }\n\n touchPromise.resolve(false)\n }\n\n const onTouchEnd = (e: TouchEvent) => {\n touchPromise.resolve(true)\n }\n\n const onTouchStart = (e: TouchEvent) => {\n touchPromise = defer()\n }\n\n return {\n activate,\n deactivate,\n destroy,\n isActive\n }\n}\n"],"names":[],"mappings":"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"}