mirror of
https://github.com/linsa-io/linsa.git
synced 2026-03-18 15:23:59 +01:00
* chore: remove useKeyDownListener * chore: remove react-use, update jazz version and add query string * chore: update jazz version * chore: use simple mac or win utils code * feat(util): add isTextInput * feat(hooks): all needed hooks * fix: link bunch stuff * fix: page bunch stuff * chore: bunch update for custom component * chore: use throttle from internal hook * chore: topic bunch stuff * chore: update layout * fix: truncate content header of topic detail
28 lines
610 B
TypeScript
28 lines
610 B
TypeScript
import { useState, useEffect } from "react"
|
|
|
|
const SSR = typeof window === "undefined"
|
|
|
|
export function useTouchSensor() {
|
|
const [isTouchDevice, setIsTouchDevice] = useState(false)
|
|
|
|
useEffect(() => {
|
|
const detectTouch = () => {
|
|
setIsTouchDevice(
|
|
!SSR &&
|
|
(window.matchMedia?.("(hover: none) and (pointer: coarse)")?.matches ||
|
|
"ontouchstart" in window ||
|
|
navigator.maxTouchPoints > 0)
|
|
)
|
|
}
|
|
|
|
detectTouch()
|
|
window.addEventListener("touchstart", detectTouch, false)
|
|
|
|
return () => {
|
|
window.removeEventListener("touchstart", detectTouch)
|
|
}
|
|
}, [])
|
|
|
|
return isTouchDevice
|
|
}
|