gab-social/app/javascript/gabsocial/utils/is_mobile.js

62 lines
1.4 KiB
JavaScript

'use strict'
import detectPassiveEvents from 'detect-passive-events'
import {
BREAKPOINT_EXTRA_LARGE,
BREAKPOINT_LARGE,
BREAKPOINT_MEDIUM,
BREAKPOINT_SMALL,
BREAKPOINT_EXTRA_SMALL,
} from '../constants'
export function isMobile(width) {
return width <= BREAKPOINT_EXTRA_SMALL
}
export function breakpointExtraLarge(width) {
return width > BREAKPOINT_EXTRA_LARGE
}
export function breakpointLarge(width) {
return width < BREAKPOINT_LARGE
}
export function breakpointMedium(width) {
return width < BREAKPOINT_MEDIUM
}
export function breakpointSmall(width) {
return width < BREAKPOINT_SMALL
}
export function breakpointExtraSmall(width) {
return width < BREAKPOINT_EXTRA_SMALL
}
export const getWindowDimension = () => {
const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth
const height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight
return { width, height }
}
const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream
let userTouching = false
const listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false
function touchListener() {
userTouching = true
window.removeEventListener('touchstart', touchListener, listenerOptions)
}
window.addEventListener('touchstart', touchListener, listenerOptions)
export function isUserTouching() {
return userTouching
}
export function isIOS() {
return iOS
}