UNPKG

@tldraw/editor

Version:

tldraw infinite canvas SDK (editor).

43 lines (35 loc) 1.23 kB
import { useEffect } from 'react' import { elementShouldCaptureKeys, preventDefault } from '../utils/dom' import { useEditor } from './useEditor' /** * When double tapping with the pencil in iOS, it enables a little zoom window in the UI. We don't * want this for drawing operations and can disable it by setting 'disableDoubleTapZoom' in the main * editor. */ export function useFixSafariDoubleTapZoomPencilEvents(ref: React.RefObject<HTMLElement | null>) { const editor = useEditor() useEffect(() => { const elm = ref.current if (!elm) return const win = editor.getContainerWindow() const handleEvent = (e: PointerEvent | TouchEvent) => { if (e instanceof win.PointerEvent && e.pointerType === 'pen') { editor.markEventAsHandled(e) const { target } = e if ( elementShouldCaptureKeys(target instanceof win.Element ? target : null, false) || editor.isIn('select.editing_shape') ) { return } preventDefault(e) } } elm.addEventListener('touchstart', handleEvent) elm.addEventListener('touchend', handleEvent) return () => { elm.removeEventListener('touchstart', handleEvent) elm.removeEventListener('touchend', handleEvent) } }, [editor, ref]) }