MCPcopy Create free account
hub / github.com/editablejs/editable / handleRootMouseDown

Function handleRootMouseDown

packages/editor/src/components/content.tsx:380–441  ·  view source on GitHub ↗
(e: React.MouseEvent | React.TouchEvent)

Source from the content-addressed store, hash-verified

378 }
379
380 const handleRootMouseDown = (e: React.MouseEvent | React.TouchEvent) => {
381 const event = getNativeEvent(e)
382 if (e.defaultPrevented && isMouseEvent(event) && event.button !== 2) return
383 if (
384 !event.target ||
385 !ref.current?.contains(event.target as DOMNode) ||
386 isEditableDOMElement(event.target) ||
387 inAbsoluteDOMElement(event.target)
388 )
389 return
390
391 IS_MOUSEDOWN.set(editor, true)
392 if (isDoubleClickRef.current) {
393 if (isSamePoint(event)) {
394 return
395 } else {
396 isDoubleClickRef.current = false
397 }
398 }
399 setFocused(true)
400 const point = Editable.findEventPoint(editor, event)
401 if (point) {
402 const isShift = IS_SHIFT_PRESSED.get(editor)
403 if (!isShift) {
404 const { selection } = editor
405 if (event instanceof MouseEvent && event.button === 2) {
406 isContextMenu.current = true
407 }
408 // Perform drag on existing selection while selected.
409 else if (
410 selection &&
411 focused &&
412 isSelectedOnCurrentSelection(editor, selection, point, isTouchDevice)
413 ) {
414 // Drag not performed on touch devices.
415 if (!isTouchDevice) {
416 const dataTransfer = new DataTransfer()
417 setDataTransfer(dataTransfer, {
418 fragment: editor.getFragment(selection),
419 })
420 setDrag({
421 from: selection,
422 data: dataTransfer,
423 position: {
424 x: event.clientX,
425 y: event.clientY,
426 },
427 })
428 editor.onSelectStart()
429 }
430 return
431 }
432 startPointRef.current = point
433 }
434 const range = handleSelecting(
435 point,
436 !isContextMenu.current,
437 !isEditableDOMElement(event.target),

Callers 1

handleRootTouchStartFunction · 0.85

Calls 9

getNativeEventFunction · 0.90
isMouseEventFunction · 0.90
isEditableDOMElementFunction · 0.90
inAbsoluteDOMElementFunction · 0.90
setDataTransferFunction · 0.90
isSamePointFunction · 0.85
handleSelectingFunction · 0.85
getMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…