tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 4.49 kB
Source Map (JSON)
{"version":3,"file":"useGesture.mjs","sources":["../../src/hooks/useGesture.ts"],"sourcesContent":["import { ref, onUnmounted, watch, reactive } from 'vue';\nimport {\n createGesture,\n dragAction,\n pinchAction,\n FullGestureState,\n WebKitGestureEvent,\n UserGestureConfig,\n} from '@use-gesture/vanilla';\n\nexport type PinchState = Omit<FullGestureState<'pinch'>, 'event'> & {\n event: PointerEvent | TouchEvent | WheelEvent | WebKitGestureEvent;\n};\n\nexport type DragState = Omit<FullGestureState<'drag'>, 'event'> & {\n event: PointerEvent | TouchEvent | WheelEvent | WebKitGestureEvent;\n};\n\nconst Gesture = createGesture([dragAction, pinchAction]);\n\nexport type GestureHandler = {\n onDrag?: (state: DragState) => void;\n onDragStart?: (state: DragState) => void;\n onDragEnd?: (state: DragState) => void;\n onPinch?: (state: PinchState) => void;\n onPinchStart?: (state: PinchState) => void;\n onPinchEnd?: (state: PinchState) => void;\n};\n\nexport type UseGestureConfig = {\n destroyInvisible?: boolean;\n visible?: boolean;\n};\n\ntype UseGrestureReturn = {\n gesture: ReturnType<typeof Gesture> | null;\n destroy: () => void;\n create: (target: Element, handler: GestureHandler, config?: UserGestureConfig) => void;\n};\n\n/**\n * 手势处理\n * @param config 手势处理配置项\n * @param config.destroyInvisible 是否不可见时销毁\n * @param config.visible 可见性\n * @example\n * const visible = ref(false);\n * const gesture = useGesture({ destroyInvisible: true, visible: visible.value });\n * const handler = {\n * onDrag: (state) => {}\n * }\n * const config = {\n * drag: dragOptions\n * }\n * gesture.create(element, handler, config);\n * gesture.destroy();\n */\n\nexport default function useGesture(config: UseGestureConfig): UseGrestureReturn {\n const gesture = ref(null);\n\n const destroy = () => gesture.value?.destroy?.();\n\n watch(\n () => [config?.destroyInvisible, config?.visible],\n ([destroyInvisible, visible]) => {\n if (destroyInvisible && !visible) {\n destroy();\n }\n },\n );\n\n onUnmounted(() => {\n gesture.value?.destroy?.();\n });\n\n const create = (target: Element, handler: GestureHandler, config: UserGestureConfig = {}) => {\n // @ts-ignore\n gesture.value = new Gesture(target, handler, config);\n returns.gesture = gesture.value;\n };\n\n const returns: UseGrestureReturn = reactive({\n gesture: gesture.value,\n destroy,\n create,\n });\n return returns;\n}\n"],"names":["Gesture","createGesture","dragAction","pinchAction","useGesture","config","gesture","ref","destroy","_gesture$value","_gesture$value$destro","value","call","watch","destroyInvisible","visible","_ref","_ref2","_slicedToArray","onUnmounted","_gesture$value2","_gesture$value2$destr","create","target","handler","returns","reactive"],"mappings":";;;;;;;;;;;AAkBA,IAAMA,OAAU,GAAAC,aAAA,CAAc,CAACC,UAAA,EAAYC,WAAW,CAAC,CAAA,CAAA;AAwCvD,SAAwBC,WAAWC,MAA6C,EAAA;AACxE,EAAA,IAAAC,OAAA,GAAUC,IAAI,IAAI,CAAA,CAAA;AAExB,EAAA,IAAMC,OAAU,GAAA,SAAVA,OAAUA,GAAA;IAAA,IAAAC,cAAA,EAAAC,qBAAA,CAAA;IAAA,OAAAD,CAAAA,cAAA,GAAMH,OAAQ,CAAAK,KAAA,MAAAF,IAAAA,IAAAA,cAAA,gBAAAC,qBAAA,GAARD,cAAA,CAAeD,OAAU,cAAAE,qBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAzBA,qBAAA,CAAAE,IAAA,CAAAH,cAAyB,CAAA,CAAA;AAAA,GAAA,CAAA;AAE/CI,EAAAA,KAAA,CACE,YAAA;AAAA,IAAA,OAAM,CAACR,MAAQ,KAAA,IAAA,IAARA,MAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAARA,MAAQ,CAAAS,gBAAA,EAAkBT,mBAAAA,6BAAAA,OAAQU,OAAO,CAAA,CAAA;GAChD,EAAA,UAAAC,IAAA,EAAiC;AAAA,IAAA,IAAAC,KAAA,GAAAC,cAAA,CAAAF,IAAA,EAAA,CAAA,CAAA;AAA/BF,MAAAA,gBAAkB,GAAAG,KAAA,CAAA,CAAA,CAAA;AAAAF,MAAAA,OAAO,GAAAE,KAAA,CAAA,CAAA,CAAA,CAAA;AACrB,IAAA,IAAAH,gBAAA,IAAoB,CAACC,OAAS,EAAA;AACxBP,MAAAA,OAAA,EAAA,CAAA;AACV,KAAA;AACF,GACF,CAAA,CAAA;AAEAW,EAAAA,WAAA,CAAY,YAAM;IAAA,IAAAC,eAAA,EAAAC,qBAAA,CAAA;IAChB,CAAAD,eAAA,GAAAd,OAAA,CAAQK,0EAARS,eAAA,CAAeZ,OAAU,cAAAa,qBAAA,KAAA,KAAA,CAAA,IAAzBA,qBAAA,CAAAT,IAAA,CAAAQ,eAAyB,CAAA,CAAA;AAC3B,GAAC,CAAA,CAAA;EAED,IAAME,SAAS,SAATA,OAAUC,MAAA,EAAiBC,OAAyBnB,EAAmC;AAAA,IAAA,IAAnCA,OAAAA,GAAAA,SAAAA,CAAAA,MAAAA,GAAAA,CAAAA,IAAAA,SAAAA,CAAAA,CAAAA,CAAAA,KAAAA,SAAAA,GAAAA,SAAAA,CAAAA,CAAAA,CAAAA,GAA4B,EAAO,CAAA;IAE3FC,OAAA,CAAQK,KAAQ,GAAA,IAAIX,OAAQ,CAAAuB,MAAA,EAAQC,SAASnB,OAAM,CAAA,CAAA;AACnDoB,IAAAA,OAAA,CAAQnB,UAAUA,OAAQ,CAAAK,KAAA,CAAA;GAC5B,CAAA;EAEA,IAAMc,UAA6BC,QAAS,CAAA;IAC1CpB,SAASA,OAAQ,CAAAK,KAAA;AACjBH,IAAAA,OAAA,EAAAA,OAAA;AACAc,IAAAA,MAAA,EAAAA,MAAAA;AACF,GAAC,CAAA,CAAA;AACM,EAAA,OAAAG,OAAA,CAAA;AACT;;;;"}