|
import type { App } from 'vue' |
|
|
|
export const isBrowser = typeof navigator !== 'undefined' |
|
export const target: any = isBrowser |
|
? window |
|
: typeof globalThis !== 'undefined' |
|
? globalThis |
|
: {} |
|
export const isChrome = typeof target.chrome !== 'undefined' && !!target.chrome.devtools |
|
export const isFirefox = isBrowser && navigator.userAgent.includes('Firefox') |
|
export const isWindows = isBrowser && navigator.platform.indexOf('Win') === 0 |
|
export const isMac = isBrowser && navigator.platform === 'MacIntel' |
|
export const isLinux = isBrowser && navigator.platform.indexOf('Linux') === 0 |
|
export const keys = { |
|
ctrl: isMac ? '⌘' : 'Ctrl', |
|
shift: 'Shift', |
|
alt: isMac ? '⌥' : 'Alt', |
|
del: 'Del', |
|
enter: 'Enter', |
|
esc: 'Esc', |
|
} |
|
|
|
export function initEnv(app: App) { |
|
if (Object.prototype.hasOwnProperty.call(app.config.globalProperties, '$isChrome')) { |
|
return |
|
} |
|
|
|
Object.defineProperties(app.config.globalProperties, { |
|
$isChrome: { get: () => isChrome }, |
|
$isFirefox: { get: () => isFirefox }, |
|
$isWindows: { get: () => isWindows }, |
|
$isMac: { get: () => isMac }, |
|
$isLinux: { get: () => isLinux }, |
|
$keys: { get: () => keys }, |
|
}) |
|
|
|
if (isWindows) { |
|
document.body.classList.add('platform-windows') |
|
} |
|
if (isMac) { |
|
document.body.classList.add('platform-mac') |
|
} |
|
if (isLinux) { |
|
document.body.classList.add('platform-linux') |
|
} |
|
} |
|
|