From fe141e08aa3dc0211a040e9658986aa79443f4fb Mon Sep 17 00:00:00 2001 From: Rasmus Andersson Date: Sun, 19 Apr 2020 11:34:22 -0700 Subject: website: add back some resources --- docs/r/base.js | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 docs/r/base.js (limited to 'docs/r/base.js') diff --git a/docs/r/base.js b/docs/r/base.js new file mode 100644 index 000000000..7d38721b0 --- /dev/null +++ b/docs/r/base.js @@ -0,0 +1,115 @@ + +function $$(query, el) { + return [].slice.call((el || document).querySelectorAll(query)) +} + +function $(query, el) { + return (el || document).querySelector(query) +} + +// fetchjson(url string) :Promise +// +var fetchjson = ( + typeof window.fetch == 'function' ? ( + function _fetchjson(url, cb) { + return window.fetch(url).then(function(r) { return r.json() }) + } + ) : + function _fetchjson(url, cb) { + return new Promise(function(resolve, reject) { + var r = new XMLHttpRequest() + r.addEventListener("load", function(){ + try { + resolve(JSON.parse(r.responseText)) + } catch (err) { + reject(err) + } + }) + r.addEventListener("error", function(ev) { + reject(ev.error || ev || new Error('network error')) + }) + r.open("GET", url) + r.send() + }) + } +) + + +// timeNow() :float +// +var timeNow = ( + window.performance !== undefined && window.performance.now ? function() { + return window.performance.now() + } : Date.now ? function() { + return Date.now() + } : function() { + return (new Date()).getTime() + } +) + + +var HUDNotification = { + el: $('#hud-notification'), + timer: null, + visible: false, + + show: function(message, duration) { + var n = this + n.el.firstChild.innerText = message + n.el.classList.add('visible') + if (n.visible) { + n.hide() + setTimeout(function(){ n.show(message, duration) }, 120) + return + } + n.visible = true + n.el.style.visibility = null + clearTimeout(n.timer) + n.timer = setTimeout(function(){ n.hide() }, duration || 1200) + }, + + hide: function() { + var n = this + if (n.visible) { + n.el.classList.remove('visible') + n.visible = false + n.el.style.visibility = 'hidden' + } + } +} + + +// InterDynamicTracking takes the font size in points or pixels and returns +// the compensating tracking in EM. +// +function InterDynamicTracking(fontSize) { + var a = -0.0223, b = 0.185, c = -0.1745; + // tracking = a + b * e ^ (c * fontSize) + return a + b * Math.pow(Math.E, c * fontSize) +} + +// InterDynamicLineHeight produces the line height for the given font size +// +function InterDynamicLineHeight(fontSize) { + var l = 1.4 + return Math.round(fontSize * l) +} + + +// Mac or not? Maybe a buggy Safari or a busted Chrome on Windows... +var isMac = false +if (!window.MSStream && + /mac|ipad|iphone|ipod/i.test(navigator.userAgent)) +{ + isMac = true + if (navigator.userAgent.indexOf('Safari') != -1 && + navigator.userAgent.indexOf('Chrome') == -1) + { + document.body.classList.add('safari') + } +} else if ( + navigator.userAgent.indexOf('Windows') != -1 && + navigator.userAgent.indexOf('Chrome') != -1 +) { + document.body.classList.add('chrome-win') +} -- cgit v1.2.3