{"version":3,"sources":["GestureHandlerWebDelegate.ts"],"names":["findNodeHandle","PointerEventManager","TouchEventManager","State","isPointerInBounds","MouseButton","GestureHandlerWebDelegate","getView","view","init","viewRef","handler","Error","getTag","gestureHandler","style","config","getConfig","addContextMenuListeners","userSelect","eventManagers","push","forEach","manager","attachEventManager","x","y","measureView","rect","getBoundingClientRect","pageX","left","pageY","top","width","height","reset","resetManager","tryResetCursor","activeCursor","getState","ACTIVE","cursor","shouldDisableContextMenu","enableContextMenu","undefined","isButtonInConfig","RIGHT","addEventListener","disableContextMenu","removeContextMenuListeners","removeEventListener","e","preventDefault","stopPropagation","onBegin","onActivate","onEnd","onCancel","onFail","destroy"],"mappings":"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","sourcesContent":["import { findNodeHandle } from 'react-native';\nimport type GestureHandler from '../handlers/GestureHandler';\nimport {\n GestureHandlerDelegate,\n MeasureResult,\n} from './GestureHandlerDelegate';\nimport PointerEventManager from './PointerEventManager';\nimport TouchEventManager from './TouchEventManager';\nimport { State } from '../../State';\nimport { isPointerInBounds } from '../utils';\nimport EventManager from './EventManager';\nimport { Config, MouseButton } from '../interfaces';\n\nexport class GestureHandlerWebDelegate\n implements GestureHandlerDelegate\n{\n private view!: HTMLElement;\n private gestureHandler!: GestureHandler;\n private eventManagers: EventManager[] = [];\n\n getView(): HTMLElement {\n return this.view;\n }\n\n init(viewRef: number, handler: GestureHandler): void {\n if (!viewRef) {\n throw new Error(\n `Cannot find HTML Element for handler ${handler.getTag()}`\n );\n }\n\n this.gestureHandler = handler;\n this.view = findNodeHandle(viewRef) as unknown as HTMLElement;\n\n this.view.style['touchAction'] = 'none';\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n\n const config = handler.getConfig();\n\n this.addContextMenuListeners(config);\n\n if (!config.userSelect) {\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n } else {\n this.view.style['webkitUserSelect'] = config.userSelect;\n this.view.style['userSelect'] = config.userSelect;\n }\n\n this.eventManagers.push(new PointerEventManager(this.view));\n this.eventManagers.push(new TouchEventManager(this.view));\n\n this.eventManagers.forEach((manager) =>\n this.gestureHandler.attachEventManager(manager)\n );\n }\n\n isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n return isPointerInBounds(this.view, { x, y });\n }\n\n measureView(): MeasureResult {\n const rect = this.view.getBoundingClientRect();\n\n return {\n pageX: rect.left,\n pageY: rect.top,\n width: rect.width,\n height: rect.height,\n };\n }\n\n reset(): void {\n this.eventManagers.forEach((manager: EventManager) =>\n manager.resetManager()\n );\n }\n\n tryResetCursor() {\n const config = this.gestureHandler.getConfig();\n\n if (\n config.activeCursor &&\n config.activeCursor !== 'auto' &&\n this.gestureHandler.getState() === State.ACTIVE\n ) {\n this.view.style.cursor = 'auto';\n }\n }\n\n private shouldDisableContextMenu(config: Config) {\n return (\n (config.enableContextMenu === undefined &&\n this.gestureHandler.isButtonInConfig(MouseButton.RIGHT)) ||\n config.enableContextMenu === false\n );\n }\n\n private addContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.addEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.addEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private removeContextMenuListeners(config: Config): void {\n if (this.shouldDisableContextMenu(config)) {\n this.view.removeEventListener('contextmenu', this.disableContextMenu);\n } else if (config.enableContextMenu) {\n this.view.removeEventListener('contextmenu', this.enableContextMenu);\n }\n }\n\n private disableContextMenu(this: void, e: MouseEvent): void {\n e.preventDefault();\n }\n\n private enableContextMenu(this: void, e: MouseEvent): void {\n e.stopPropagation();\n }\n\n onBegin(): void {\n // no-op for now\n }\n\n onActivate(): void {\n const config = this.gestureHandler.getConfig();\n\n if (\n (!this.view.style.cursor || this.view.style.cursor === 'auto') &&\n config.activeCursor\n ) {\n this.view.style.cursor = config.activeCursor;\n }\n }\n\n onEnd(): void {\n this.tryResetCursor();\n }\n\n onCancel(): void {\n this.tryResetCursor();\n }\n\n onFail(): void {\n this.tryResetCursor();\n }\n\n public destroy(config: Config): void {\n this.removeContextMenuListeners(config);\n }\n}\n"]}