git.iko.soy/rowtype-yoga/yoga-r3f
on main help sign in
33 lines 1.3 kB history raw
1export const eventPointX = (e) => e.point.x
2export const eventPointY = (e) => e.point.y
3export const eventPointZ = (e) => e.point.z
4export const eventClientX = (e) => e.nativeEvent.clientX
5export const eventClientY = (e) => e.nativeEvent.clientY
6export const eventCameraZoom = (e) => e.camera.zoom
7export const stopPropagation = (e) => () => e.stopPropagation()
8export const stopNativeImmediate = (e) => () => e.nativeEvent.stopImmediatePropagation()
9export const setCursor = (cursor) => () => { document.body.style.cursor = cursor }
11export const startPointerDragImpl = function(threeEvent, onMove, onEnd) {
12 const target = threeEvent.nativeEvent.target
13 target.setPointerCapture(threeEvent.nativeEvent.pointerId)
14 let prevX = threeEvent.nativeEvent.clientX
15 let prevY = threeEvent.nativeEvent.clientY
17 function moveHandler(e) {
18 prevX = e.clientX
19 prevY = e.clientY
20 onMove(e.clientX, e.clientY)
21 }
22 function upHandler(e) {
23 target.removeEventListener('pointermove', moveHandler)
24 target.removeEventListener('pointerup', upHandler)
25 try { target.releasePointerCapture(e.pointerId) } catch (_) {}
26 onEnd()
27 }
29 target.addEventListener('pointermove', moveHandler)
30 target.addEventListener('pointerup', upHandler)
33export const withChildrenImpl = (children, props) => ({ ...props, children })