UNPKG

detect-pointer-events

Version:

Detect if the browser supports the pointer events api

57 lines (53 loc) 1.99 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var prefixMap = { pointerdown: 'MSPointerDown', pointerup: 'MSPointerUp', pointercancel: 'MSPointerCancel', pointermove: 'MSPointerMove', pointerover: 'MSPointerOver', pointerout: 'MSPointerOut', pointerenter: 'MSPointerEnter', pointerleave: 'MSPointerLeave', gotpointercapture: 'MSGotPointerCapture', lostpointercapture: 'MSLostPointerCapture', maxTouchPoints: 'msMaxTouchPoints' }; /* * detectPointerEvents object structure * const detectPointerEvents = { * hasApi: boolean, * requiresPrefix: boolean, * hasTouch: boolean, * maxTouchPoints: number, * update() {...}, * prefix(value) {return value, value will only have prefix if requiresPrefix === true}, * } */ var detectPointerEvents = { update: function update() { if (typeof window !== 'undefined') { // reference for detection https://msdn.microsoft.com/en-us/library/dn433244(v=vs.85).aspx if ('PointerEvent' in window) { detectPointerEvents.hasApi = true; detectPointerEvents.requiresPrefix = false; // reference for detection https://msdn.microsoft.com/library/hh673557(v=vs.85).aspx } else if (window.navigator && 'msPointerEnabled' in window.navigator) { detectPointerEvents.hasApi = true; detectPointerEvents.requiresPrefix = true; } else { detectPointerEvents.hasApi = false; detectPointerEvents.requiresPrefix = undefined; } detectPointerEvents.maxTouchPoints = detectPointerEvents.hasApi && window.navigator && window.navigator[detectPointerEvents.prefix('maxTouchPoints')] || undefined; detectPointerEvents.hasTouch = detectPointerEvents.hasApi ? detectPointerEvents.maxTouchPoints > 0 : undefined; } }, prefix: function prefix(value) { return detectPointerEvents.requiresPrefix && prefixMap[value] || value; } }; detectPointerEvents.update(); exports.default = detectPointerEvents;