UNPKG

framework7

Version:

Full featured mobile HTML framework for building iOS & Android apps

63 lines (52 loc) 2.33 kB
import { window, document } from 'ssr-window'; const Support = (function Support() { const testDiv = document.createElement('div'); return { touch: (function checkTouch() { return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch)); }()), pointerEvents: !!(window.navigator.pointerEnabled || window.PointerEvent || ('maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints > 0)), prefixedPointerEvents: !!window.navigator.msPointerEnabled, transition: (function checkTransition() { const style = testDiv.style; return ('transition' in style || 'webkitTransition' in style || 'MozTransition' in style); }()), transforms3d: (window.Modernizr && window.Modernizr.csstransforms3d === true) || (function checkTransforms3d() { const style = testDiv.style; return ('webkitPerspective' in style || 'MozPerspective' in style || 'OPerspective' in style || 'MsPerspective' in style || 'perspective' in style); }()), flexbox: (function checkFlexbox() { const div = document.createElement('div').style; const styles = ('alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient').split(' '); for (let i = 0; i < styles.length; i += 1) { if (styles[i] in div) return true; } return false; }()), observer: (function checkObserver() { return ('MutationObserver' in window || 'WebkitMutationObserver' in window); }()), passiveListener: (function checkPassiveListener() { let supportsPassive = false; try { const opts = Object.defineProperty({}, 'passive', { // eslint-disable-next-line get() { supportsPassive = true; }, }); window.addEventListener('testPassiveListener', null, opts); } catch (e) { // No support } return supportsPassive; }()), gestures: (function checkGestures() { return 'ongesturestart' in window; }()), intersectionObserver: (function checkObserver() { return ('IntersectionObserver' in window); }()), }; }()); export default Support;