annotate .cms/lib/codemirror/src/util/browser.js @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 // Kludges for bugs and behavior differences that can't be feature
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2 // detected are enabled based on userAgent etc sniffing.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3 let userAgent = navigator.userAgent
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 let platform = navigator.platform
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 export let gecko = /gecko\/\d/i.test(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 let ie_upto10 = /MSIE \d/.test(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 let ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 let edge = /Edge\/(\d+)/.exec(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 export let ie = ie_upto10 || ie_11up || edge
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 export let ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1])
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 export let webkit = !edge && /WebKit\//.test(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 let qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 export let chrome = !edge && /Chrome\/(\d+)/.exec(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 export let chrome_version = chrome && +chrome[1]
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 export let presto = /Opera\//.test(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 export let safari = /Apple Computer/.test(navigator.vendor)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 export let mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 export let phantom = /PhantomJS/.test(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 export let ios = safari && (/Mobile\/\w+/.test(userAgent) || navigator.maxTouchPoints > 2)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 export let android = /Android/.test(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 // This is woefully incomplete. Suggestions for alternative methods welcome.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 export let mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 export let mac = ios || /Mac/.test(platform)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 export let chromeOS = /\bCrOS\b/.test(userAgent)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 export let windows = /win/i.test(platform)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 let presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 if (presto_version) presto_version = Number(presto_version[1])
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 if (presto_version && presto_version >= 15) { presto = false; webkit = true }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32 // Some browsers use the wrong event properties to signal cmd/ctrl on OS X
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 export let flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11))
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 export let captureRightClick = gecko || (ie && ie_version >= 9)