monaco-editor
Version:
A browser based code editor
83 lines (82 loc) • 3.62 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Emitter } from '../common/event.js';
var WindowManager = /** @class */ (function () {
function WindowManager() {
// --- Zoom Level
this._zoomLevel = 0;
this._lastZoomLevelChangeTime = 0;
this._onDidChangeZoomLevel = new Emitter();
this.onDidChangeZoomLevel = this._onDidChangeZoomLevel.event;
// --- Accessibility
this._accessibilitySupport = 0 /* Unknown */;
this._onDidChangeAccessibilitySupport = new Emitter();
this.onDidChangeAccessibilitySupport = this._onDidChangeAccessibilitySupport.event;
}
WindowManager.prototype.getZoomLevel = function () {
return this._zoomLevel;
};
WindowManager.prototype.getTimeSinceLastZoomLevelChanged = function () {
return Date.now() - this._lastZoomLevelChangeTime;
};
// --- Pixel Ratio
WindowManager.prototype.getPixelRatio = function () {
var ctx = document.createElement('canvas').getContext('2d');
var dpr = window.devicePixelRatio || 1;
var bsr = ctx.webkitBackingStorePixelRatio ||
ctx.mozBackingStorePixelRatio ||
ctx.msBackingStorePixelRatio ||
ctx.oBackingStorePixelRatio ||
ctx.backingStorePixelRatio || 1;
return dpr / bsr;
};
WindowManager.prototype.getAccessibilitySupport = function () {
return this._accessibilitySupport;
};
WindowManager.INSTANCE = new WindowManager();
return WindowManager;
}());
export function getZoomLevel() {
return WindowManager.INSTANCE.getZoomLevel();
}
/** Returns the time (in ms) since the zoom level was changed */
export function getTimeSinceLastZoomLevelChanged() {
return WindowManager.INSTANCE.getTimeSinceLastZoomLevelChanged();
}
export function onDidChangeZoomLevel(callback) {
return WindowManager.INSTANCE.onDidChangeZoomLevel(callback);
}
export function getPixelRatio() {
return WindowManager.INSTANCE.getPixelRatio();
}
export function getAccessibilitySupport() {
return WindowManager.INSTANCE.getAccessibilitySupport();
}
export function onDidChangeAccessibilitySupport(callback) {
return WindowManager.INSTANCE.onDidChangeAccessibilitySupport(callback);
}
var userAgent = navigator.userAgent;
export var isIE = (userAgent.indexOf('Trident') >= 0);
export var isEdge = (userAgent.indexOf('Edge/') >= 0);
export var isEdgeOrIE = isIE || isEdge;
export var isFirefox = (userAgent.indexOf('Firefox') >= 0);
export var isWebKit = (userAgent.indexOf('AppleWebKit') >= 0);
export var isChrome = (userAgent.indexOf('Chrome') >= 0);
export var isSafari = (userAgent.indexOf('Chrome') === -1) && (userAgent.indexOf('Safari') >= 0);
export var isIPad = (userAgent.indexOf('iPad') >= 0);
export var isEdgeWebView = isEdge && (userAgent.indexOf('WebView/') >= 0);
export function hasClipboardSupport() {
if (isIE) {
return false;
}
if (isEdge) {
var index = userAgent.indexOf('Edge/');
var version = parseInt(userAgent.substring(index + 5, userAgent.indexOf('.', index)), 10);
if (!version || (version >= 12 && version <= 16)) {
return false;
}
}
return true;
}