UNPKG

ifui

Version:

87 lines (84 loc) 1.84 kB
/* * @Author: lllevi * @Date: 2018-06-30 10:24:08 * @Last Modified by: lllevi * @Last Modified time: 2018-06-30 13:40:06 */ let canvas let gl let glRenderer let models let devices = { 'Apple A7 GPU': { 1136: ['iPhone 5', 'iPhone 5s'], 2048: ['iPad Air', 'iPad Mini 2', 'iPad Mini 3'] }, 'Apple A8 GPU': { 1136: ['iPod touch (6th generation)'], 1334: ['iPhone 6'], 2001: ['iPhone 6 Plus'], 2048: ['iPad Air 2', 'iPad Mini 4'] }, 'Apple A9 GPU': { 1136: ['iPhone SE'], 1334: ['iPhone 6s'], 2001: ['iPhone 6s Plus'], 2224: ['iPad Pro (9.7-inch)'], 2732: ['iPad Pro (12.9-inch)'] }, 'Apple A10 GPU': { 1334: ['iPhone 7'], 2001: ['iPhone 7 Plus'] }, 'Apple A11 GPU': { 1334: ['iPhone 8'], 2208: ['iPhone 8 Plus'], 2436: ['iPhone X'] } } function getCanvas () { if (!canvas) { canvas = document.createElement('canvas') } return canvas } function getGl () { if (!gl) { gl = getCanvas().getContext('experimental-webgl') } return gl } function getScreenWidth () { return Math.max(screen.width, screen.height) * (window.devicePixelRatio || 1) } function getGlRenderer () { if (!glRenderer) { var debugInfo = getGl().getExtension('WEBGL_debug_renderer_info') glRenderer = !debugInfo ? 'unknown' : getGl().getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) } return glRenderer } function getModels () { if (!models) { var device = devices[getGlRenderer()] if (device === undefined) { models = ['unknown'] } else { models = device[getScreenWidth()] if (models === undefined) { models = ['unknown'] } } } return models } function isIPhoneX () { if (getModels().join(' or ') === 'iPhone X') { return true } return false } export default { isIPhoneX, getModels }