| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*
- * noVNC: HTML5 VNC client
- * Copyright (C) 2018 The noVNC Authors
- * Licensed under MPL 2.0 (see LICENSE.txt)
- *
- * See README.md for usage and integration instructions.
- */
- import * as Log from './logging.js';
- // Touch detection
- export let isTouchDevice = ('ontouchstart' in document.documentElement) ||
- // requried for Chrome debugger
- (document.ontouchstart !== undefined) ||
- // required for MS Surface
- (navigator.maxTouchPoints > 0) ||
- (navigator.msMaxTouchPoints > 0);
- window.addEventListener('touchstart', function onFirstTouch() {
- isTouchDevice = true;
- window.removeEventListener('touchstart', onFirstTouch, false);
- }, false);
- // The goal is to find a certain physical width, the devicePixelRatio
- // brings us a bit closer but is not optimal.
- export let dragThreshold = 10 * (window.devicePixelRatio || 1);
- let _supportsCursorURIs = false;
- try {
- const target = document.createElement('canvas');
- target.style.cursor = 'url("data:image/x-icon;base64,AAACAAEACAgAAAIAAgA4AQAAFgAAACgAAAAIAAAAEAAAAAEAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAA==") 2 2, default';
- if (target.style.cursor) {
- Log.Info("Data URI scheme cursor supported");
- _supportsCursorURIs = true;
- } else {
- Log.Warn("Data URI scheme cursor not supported");
- }
- } catch (exc) {
- Log.Error("Data URI scheme cursor test exception: " + exc);
- }
- export const supportsCursorURIs = _supportsCursorURIs;
- let _supportsImageMetadata = false;
- try {
- new ImageData(new Uint8ClampedArray(4), 1, 1);
- _supportsImageMetadata = true;
- } catch (ex) {
- // ignore failure
- }
- export const supportsImageMetadata = _supportsImageMetadata;
- export function isMac() {
- return navigator && !!(/mac/i).exec(navigator.platform);
- }
- export function isWindows() {
- return navigator && !!(/win/i).exec(navigator.platform);
- }
- export function isIOS() {
- return navigator &&
- (!!(/ipad/i).exec(navigator.platform) ||
- !!(/iphone/i).exec(navigator.platform) ||
- !!(/ipod/i).exec(navigator.platform));
- }
- export function isAndroid() {
- return navigator && !!(/android/i).exec(navigator.userAgent);
- }
- export function isSafari() {
- return navigator && (navigator.userAgent.indexOf('Safari') !== -1 &&
- navigator.userAgent.indexOf('Chrome') === -1);
- }
- export function isIE() {
- return navigator && !!(/trident/i).exec(navigator.userAgent);
- }
- export function isEdge() {
- return navigator && !!(/edge/i).exec(navigator.userAgent);
- }
- export function isFirefox() {
- return navigator && !!(/firefox/i).exec(navigator.userAgent);
- }
|