UNPKG

neft

Version:

Universal Platform

172 lines (141 loc) 4.51 kB
'use strict' signal = require 'src/signal' isFirefox = exports.isFirefox = navigator.userAgent.indexOf('Firefox') isnt -1 # get transform CSS property name transformProp = exports.transformProp = do -> prefix = do -> tmp = document.createElement 'div' return 't' if tmp.style.transform? return 'webkitT' if tmp.style.webkitTransform? return 'mozT' if tmp.style.mozTransform? return 'msT' if tmp.style.msTransform? "#{prefix}ransform" transformCSSProp = exports.transformCSSProp = do -> if transformProp.indexOf('T') isnt -1 '-' + transformProp.replace('T', '-t') else transformProp exports.transform3dSupported = do -> tmp = document.createElement 'div' tmp.style[transformProp] = 'translate3d(1px,1px,0)' tmp.style[transformProp].indexOf('translate3d') isnt -1 exports.onWindowLoad = (callback) -> if document.readyState is 'complete' callback() else window.addEventListener 'load', callback return exports.rad2deg = (rad) -> rad * 180/Math.PI exports.getFontWeight = (val) -> Math.round(val * 8) * 100 + 100 exports.prependElement = (parent, child) -> if first = parent.firstChild parent.insertBefore child, first else parent.appendChild child exports.insertAfter = (child, afterElem) -> if afterElem.nextElement afterElem.parentElement.insertBefore child, afterElem.nextElement else afterElem.parentElement.appendChild child exports.encodeImageSrc = do -> DATA_URI_RE = ///^data:([a-z+/]+)/// (val) -> if DATA_URI_RE.test(val) val.replace ///\#///g, encodeURIComponent('#') else val exports.pointerWheelEventName = do -> if 'onwheel' of document.createElement("div") 'wheel' else if document.onmousewheel isnt undefined 'mousewheel' else 'MozMousePixelScroll' exports.keysEvents = do -> SPECIAL_KEY_CODES = 32: 'Space' 13: 'Enter' 9: 'Tab' 27: 'Escape' 8: 'Backspace' 16: 'Shift' 17: 'Ctrl' 18: 'Alt' 20: 'CapsLock' 144: 'NumLock' 37: 'Left' 38: 'Up' 39: 'Right' 40: 'Down' 45: 'Insert' 46: 'Delete' 36: 'Home' 35: 'End' 33: 'PageUp' 34: 'PageDown' 112: 'F1' 113: 'F2' 114: 'F3' 115: 'F4' 116: 'F5' 117: 'F6' 118: 'F7' 119: 'F8' 120: 'F9' 121: 'F10' 122: 'F11' 123: 'F12' pressedKeys = Object.create null # pressed window.addEventListener 'keydown', (e) -> code = e.which or e.keyCode key = SPECIAL_KEY_CODES[code] or String.fromCharCode(code) if pressedKeys[key] and pressedKeys[key] isnt e return false pressedKeys[key] = e if device = keysEvents.device {keyboard} = device keyboard.key = key device.onKeyPress.emit keyboard # hold window.addEventListener 'keydown', (e) -> code = e.which or e.keyCode key = SPECIAL_KEY_CODES[code] or String.fromCharCode(code) if device = keysEvents.device {keyboard} = device keyboard.key = key device.onKeyHold.emit keyboard # released window.addEventListener 'keyup', (e) -> code = e.which or e.keyCode key = SPECIAL_KEY_CODES[code] or String.fromCharCode(code) pressedKeys[key] = null if device = keysEvents.device {keyboard} = device keyboard.key = key device.onKeyRelease.emit keyboard # input window.addEventListener 'keypress', (e) -> code = e.charCode or e.which or e.keyCode text = String.fromCharCode(code) if device = keysEvents.device {keyboard} = device keyboard.text = text device.onKeyInput.emit keyboard keysEvents = device: null signal.create exports, 'onFontLoaded' exports.loadingFonts = Object.create null exports.loadedFonts = Object.create null exports.DEFAULT_FONTS = __proto__: null 'sans': 'neft-sans-6-normal' 'sans-serif': 'neft-sans-serif-6-normal' 'monospace': 'neft-monospace-6-normal' exports.NEFT_DEFAULT_FONTS = __proto__: null 'neft-sans-6-normal': 'sans' 'neft-sans-serif-6-normal': 'sans-serif' 'neft-monospace-6-normal': 'monospace'