{"version":3,"sources":["../node_modules/events/events.js","location.ts","motion.ts","random.ts","ambient.ts","wakelock.ts","gauge.ts","index.ts"],"names":["ReflectOwnKeys","R","Reflect","ReflectApply","apply","target","receiver","args","Function","prototype","call","ProcessEmitWarning","warning","console","warn","ownKeys","Object","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","value","EventEmitter","init","module","exports","once","_events","undefined","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","type","prepend","m","events","existing","create","newListener","emit","unshift","push","length","warned","w","Error","String","name","emitter","count","onceWrapper","fired","removeListener","wrapFn","arguments","_onceWrap","state","wrapped","bind","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","arr","n","copy","Array","i","spliceOne","list","index","pop","ret","Promise","resolve","reject","errorListener","err","resolver","slice","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","handler","flags","on","addEventListener","wrapListener","arg","removeEventListener","defineProperty","enumerable","get","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","error","er","message","context","len","listeners","addListener","prependListener","prependOnceListener","position","originalListener","shift","off","removeAllListeners","key","keys","rawListeners","eventNames"],"mappings":"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","file":"src.d95092b1.js","sourceRoot":"../src","sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","import { EventEmitter } from 'events';\n\nclass Location extends EventEmitter {\n\n id: number = null;\n\n start() {\n const options = {\n enableHighAccuracy: true\n };\n this.id = navigator.geolocation.watchPosition((position) => {\n this.emit('speed', Math.round(position.coords.speed * 3.6));\n }, null, options);\n }\n\n stop() {\n navigator.geolocation.clearWatch(this.id);\n }\n}\n\nexport default new Location();\n","import { EventEmitter } from 'events';\n\nclass Motion extends EventEmitter {\n\n speed: number = 0;\n interval: number;\n\n constructor() {\n super();\n this.onMotion = this.onMotion.bind(this);\n }\n\n onMotion(event: DeviceMotionEvent) {\n this.speed = Math.max(\n this.speed,\n Math.abs(event.acceleration.x),\n Math.abs(event.acceleration.y),\n Math.abs(event.acceleration.z)\n );\n }\n\n start() {\n window.addEventListener('devicemotion', this.onMotion);\n this.interval = window.setInterval(() => {\n this.emit('speed', Math.round(this.speed));\n this.speed = 0;\n }, 1000);\n }\n\n stop() {\n window.removeEventListener('devicemotion', this.onMotion);\n clearInterval(this.interval);\n }\n}\n\nexport default new Motion();\n","import { EventEmitter } from 'events';\n\nclass Random extends EventEmitter {\n\n acceleration: number = 20;\n speed: number = 0;\n interval: number = null;\n\n constructor() {\n super();\n }\n\n start() {\n this.interval = window.setInterval(() => {\n this.acceleration += (0.5 - Math.random()) * 10;\n this.speed += this.acceleration;\n if (this.speed <= 0) {\n this.speed = 0;\n this.acceleration *= -0.9;\n }\n if (this.speed >= 160) {\n this.speed = 160;\n this.acceleration *= -0.9;\n }\n this.emit('speed', Math.round(this.speed));\n }, 1000);\n }\n\n stop() {\n clearInterval(this.interval);\n }\n}\n\nexport default new Random();\n","import { EventEmitter } from 'events';\n\nclass Ambient extends EventEmitter {\n\n sensor: AmbientLightSensor = null;\n\n start() {\n if (this.sensor !== null) {\n return;\n }\n\n if ('AmbientLightSensor' in window) {\n window.navigator.permissions.query({ name: 'ambient-light-sensor' })\n .then((result: {state: string}) => {\n if (result.state === 'denied') {\n return;\n }\n this.sensor = new AmbientLightSensor({frequency: 0.25});\n this.sensor.addEventListener('reading', () => {\n if (this.sensor.illuminance < 3) {\n this.emit('dark', true);\n } else if (this.sensor.illuminance > 3) {\n this.emit('dark', false);\n }\n });\n this.sensor.start();\n });\n }\n }\n}\n\nexport default new Ambient();\n","import { EventEmitter } from 'events';\n\nclass Wakelock extends EventEmitter {\n\n request: {cancel: () => void} = null;\n\n start() {\n if (navigator.getWakeLock) {\n navigator.getWakeLock('screen').then((wl: WakeLockEvent) => {\n this.request = wl.createRequest();\n });\n }\n }\n\n stop() {\n if (this.request !== null) {\n this.request.cancel();\n }\n }\n}\n\nexport default new Wakelock();\n","const gaugeBar = document.querySelector('#gauge .bar');\nconst gaugeText = document.querySelector('#gauge .text');\n\nexport function setValue(value: number) {\n gaugeText.textContent = `${value}`;\n const red = Math.round(value * 1.5);\n const len = (value / 160) * 270;\n gaugeBar.setAttribute('stroke', `rgb(${red}, 45, 56)`);\n gaugeBar.setAttribute('stroke-dasharray', `${len}, ${360 - len}`);\n}\n","import { EventEmitter } from 'events';\nimport location from './location';\nimport motion from './motion';\nimport random from './random';\nimport ambient from './ambient';\nimport wakelock from './wakelock';\nimport { setValue } from './gauge';\n\n// chrome://flags#enable-generic-sensor-extra-classes\n// https://www.chromestatus.com/feature/4636879949398016\n\nimport './style.scss';\nimport './favicon.ico';\n\ninterface SpeedSource extends EventEmitter {\n start(): void\n stop(): void\n}\n\nconst modes: { [key: string]: SpeedSource} = { location, motion, random };\n\nObject.values(modes).forEach((mode: SpeedSource) => {\n mode.on('speed', (speed: number) => {\n setValue(speed);\n });\n});\n\nconst nightButton = document.querySelector(\"#mode .night\");\nnightButton.addEventListener('click', () =>{\n nightButton.classList.toggle('active');\n document.body.classList.toggle('dark');\n});\n\nambient.on('dark', (dark: boolean) => {\n document.body.classList.toggle('dark', dark);\n nightButton.classList.toggle('active', dark);\n});\n\nconst buttons = document.querySelectorAll(\"#mode .mode\");\n\nconst stop = () => {\n Object.values(modes).forEach((mode: SpeedSource) => mode.stop());\n buttons.forEach(button => button.classList.remove('active'));\n wakelock.stop();\n setValue(0);\n};\n\nconst start = (mode: SpeedSource) => {\n stop();\n wakelock.start();\n ambient.start();\n mode.start();\n};\n\nconst toggle = (mode: string, state: boolean) => {\n if (state) {\n stop();\n } else{\n start(modes[mode]);\n document.querySelector(`#mode button[data-mode=${mode}]`).classList.add('active');\n }\n};\n\nwindow.random = () => toggle('random', false);\n\nbuttons.forEach((button) => {\n button.addEventListener('click', () => {\n const mode = button.getAttribute('data-mode');\n toggle(mode, button.classList.contains('active'));\n });\n});\n\nif (module.hot) {\n module.hot.dispose(() => window.location.reload());\n}\n"]}