diff --git a/build/dat.gui.css b/build/dat.gui.css deleted file mode 100644 index c039f45..0000000 --- a/build/dat.gui.css +++ /dev/null @@ -1 +0,0 @@ -.dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda} diff --git a/build/dat.gui.js b/build/dat.gui.js deleted file mode 100644 index 51aba9d..0000000 --- a/build/dat.gui.js +++ /dev/null @@ -1,2561 +0,0 @@ -/** - * dat-gui JavaScript Controller Library - * http://code.google.com/p/dat-gui - * - * Copyright 2011 Data Arts Team, Google Creative Lab - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global.dat = {}))); -}(this, (function (exports) { 'use strict'; - -function ___$insertStyle(css) { - if (!css) { - return; - } - if (typeof window === 'undefined') { - return; - } - - var style = document.createElement('style'); - - style.setAttribute('type', 'text/css'); - style.innerHTML = css; - document.head.appendChild(style); - - return css; -} - -function colorToString (color, forceCSSHex) { - var colorFormat = color.__state.conversionName.toString(); - var r = Math.round(color.r); - var g = Math.round(color.g); - var b = Math.round(color.b); - var a = color.a; - var h = Math.round(color.h); - var s = color.s.toFixed(1); - var v = color.v.toFixed(1); - if (forceCSSHex || colorFormat === 'THREE_CHAR_HEX' || colorFormat === 'SIX_CHAR_HEX') { - var str = color.hex.toString(16); - while (str.length < 6) { - str = '0' + str; - } - return '#' + str; - } else if (colorFormat === 'CSS_RGB') { - return 'rgb(' + r + ',' + g + ',' + b + ')'; - } else if (colorFormat === 'CSS_RGBA') { - return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; - } else if (colorFormat === 'HEX') { - return '0x' + color.hex.toString(16); - } else if (colorFormat === 'RGB_ARRAY') { - return '[' + r + ',' + g + ',' + b + ']'; - } else if (colorFormat === 'RGBA_ARRAY') { - return '[' + r + ',' + g + ',' + b + ',' + a + ']'; - } else if (colorFormat === 'RGB_OBJ') { - return '{r:' + r + ',g:' + g + ',b:' + b + '}'; - } else if (colorFormat === 'RGBA_OBJ') { - return '{r:' + r + ',g:' + g + ',b:' + b + ',a:' + a + '}'; - } else if (colorFormat === 'HSV_OBJ') { - return '{h:' + h + ',s:' + s + ',v:' + v + '}'; - } else if (colorFormat === 'HSVA_OBJ') { - return '{h:' + h + ',s:' + s + ',v:' + v + ',a:' + a + '}'; - } - return 'unknown format'; -} - -var ARR_EACH = Array.prototype.forEach; -var ARR_SLICE = Array.prototype.slice; -var Common = { - BREAK: {}, - extend: function extend(target) { - this.each(ARR_SLICE.call(arguments, 1), function (obj) { - var keys = this.isObject(obj) ? Object.keys(obj) : []; - keys.forEach(function (key) { - if (!this.isUndefined(obj[key])) { - target[key] = obj[key]; - } - }.bind(this)); - }, this); - return target; - }, - defaults: function defaults(target) { - this.each(ARR_SLICE.call(arguments, 1), function (obj) { - var keys = this.isObject(obj) ? Object.keys(obj) : []; - keys.forEach(function (key) { - if (this.isUndefined(target[key])) { - target[key] = obj[key]; - } - }.bind(this)); - }, this); - return target; - }, - compose: function compose() { - var toCall = ARR_SLICE.call(arguments); - return function () { - var args = ARR_SLICE.call(arguments); - for (var i = toCall.length - 1; i >= 0; i--) { - args = [toCall[i].apply(this, args)]; - } - return args[0]; - }; - }, - each: function each(obj, itr, scope) { - if (!obj) { - return; - } - if (ARR_EACH && obj.forEach && obj.forEach === ARR_EACH) { - obj.forEach(itr, scope); - } else if (obj.length === obj.length + 0) { - var key = void 0; - var l = void 0; - for (key = 0, l = obj.length; key < l; key++) { - if (key in obj && itr.call(scope, obj[key], key) === this.BREAK) { - return; - } - } - } else { - for (var _key in obj) { - if (itr.call(scope, obj[_key], _key) === this.BREAK) { - return; - } - } - } - }, - defer: function defer(fnc) { - setTimeout(fnc, 0); - }, - debounce: function debounce(func, threshold, callImmediately) { - var timeout = void 0; - return function () { - var obj = this; - var args = arguments; - function delayed() { - timeout = null; - if (!callImmediately) func.apply(obj, args); - } - var callNow = callImmediately || !timeout; - clearTimeout(timeout); - timeout = setTimeout(delayed, threshold); - if (callNow) { - func.apply(obj, args); - } - }; - }, - toArray: function toArray(obj) { - if (obj.toArray) return obj.toArray(); - return ARR_SLICE.call(obj); - }, - isUndefined: function isUndefined(obj) { - return obj === undefined; - }, - isNull: function isNull(obj) { - return obj === null; - }, - isNaN: function (_isNaN) { - function isNaN(_x) { - return _isNaN.apply(this, arguments); - } - isNaN.toString = function () { - return _isNaN.toString(); - }; - return isNaN; - }(function (obj) { - return isNaN(obj); - }), - isArray: Array.isArray || function (obj) { - return obj.constructor === Array; - }, - isObject: function isObject(obj) { - return obj === Object(obj); - }, - isNumber: function isNumber(obj) { - return obj === obj + 0; - }, - isString: function isString(obj) { - return obj === obj + ''; - }, - isBoolean: function isBoolean(obj) { - return obj === false || obj === true; - }, - isFunction: function isFunction(obj) { - return Object.prototype.toString.call(obj) === '[object Function]'; - } -}; - -var INTERPRETATIONS = [ -{ - litmus: Common.isString, - conversions: { - THREE_CHAR_HEX: { - read: function read(original) { - var test = original.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i); - if (test === null) { - return false; - } - return { - space: 'HEX', - hex: parseInt('0x' + test[1].toString() + test[1].toString() + test[2].toString() + test[2].toString() + test[3].toString() + test[3].toString(), 0) - }; - }, - write: colorToString - }, - SIX_CHAR_HEX: { - read: function read(original) { - var test = original.match(/^#([A-F0-9]{6})$/i); - if (test === null) { - return false; - } - return { - space: 'HEX', - hex: parseInt('0x' + test[1].toString(), 0) - }; - }, - write: colorToString - }, - CSS_RGB: { - read: function read(original) { - var test = original.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/); - if (test === null) { - return false; - } - return { - space: 'RGB', - r: parseFloat(test[1]), - g: parseFloat(test[2]), - b: parseFloat(test[3]) - }; - }, - write: colorToString - }, - CSS_RGBA: { - read: function read(original) { - var test = original.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/); - if (test === null) { - return false; - } - return { - space: 'RGB', - r: parseFloat(test[1]), - g: parseFloat(test[2]), - b: parseFloat(test[3]), - a: parseFloat(test[4]) - }; - }, - write: colorToString - } - } -}, -{ - litmus: Common.isNumber, - conversions: { - HEX: { - read: function read(original) { - return { - space: 'HEX', - hex: original, - conversionName: 'HEX' - }; - }, - write: function write(color) { - return color.hex; - } - } - } -}, -{ - litmus: Common.isArray, - conversions: { - RGB_ARRAY: { - read: function read(original) { - if (original.length !== 3) { - return false; - } - return { - space: 'RGB', - r: original[0], - g: original[1], - b: original[2] - }; - }, - write: function write(color) { - return [color.r, color.g, color.b]; - } - }, - RGBA_ARRAY: { - read: function read(original) { - if (original.length !== 4) return false; - return { - space: 'RGB', - r: original[0], - g: original[1], - b: original[2], - a: original[3] - }; - }, - write: function write(color) { - return [color.r, color.g, color.b, color.a]; - } - } - } -}, -{ - litmus: Common.isObject, - conversions: { - RGBA_OBJ: { - read: function read(original) { - if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b) && Common.isNumber(original.a)) { - return { - space: 'RGB', - r: original.r, - g: original.g, - b: original.b, - a: original.a - }; - } - return false; - }, - write: function write(color) { - return { - r: color.r, - g: color.g, - b: color.b, - a: color.a - }; - } - }, - RGB_OBJ: { - read: function read(original) { - if (Common.isNumber(original.r) && Common.isNumber(original.g) && Common.isNumber(original.b)) { - return { - space: 'RGB', - r: original.r, - g: original.g, - b: original.b - }; - } - return false; - }, - write: function write(color) { - return { - r: color.r, - g: color.g, - b: color.b - }; - } - }, - HSVA_OBJ: { - read: function read(original) { - if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v) && Common.isNumber(original.a)) { - return { - space: 'HSV', - h: original.h, - s: original.s, - v: original.v, - a: original.a - }; - } - return false; - }, - write: function write(color) { - return { - h: color.h, - s: color.s, - v: color.v, - a: color.a - }; - } - }, - HSV_OBJ: { - read: function read(original) { - if (Common.isNumber(original.h) && Common.isNumber(original.s) && Common.isNumber(original.v)) { - return { - space: 'HSV', - h: original.h, - s: original.s, - v: original.v - }; - } - return false; - }, - write: function write(color) { - return { - h: color.h, - s: color.s, - v: color.v - }; - } - } - } -}]; -var result = void 0; -var toReturn = void 0; -var interpret = function interpret() { - toReturn = false; - var original = arguments.length > 1 ? Common.toArray(arguments) : arguments[0]; - Common.each(INTERPRETATIONS, function (family) { - if (family.litmus(original)) { - Common.each(family.conversions, function (conversion, conversionName) { - result = conversion.read(original); - if (toReturn === false && result !== false) { - toReturn = result; - result.conversionName = conversionName; - result.conversion = conversion; - return Common.BREAK; - } - }); - return Common.BREAK; - } - }); - return toReturn; -}; - -var tmpComponent = void 0; -var ColorMath = { - hsv_to_rgb: function hsv_to_rgb(h, s, v) { - var hi = Math.floor(h / 60) % 6; - var f = h / 60 - Math.floor(h / 60); - var p = v * (1.0 - s); - var q = v * (1.0 - f * s); - var t = v * (1.0 - (1.0 - f) * s); - var c = [[v, t, p], [q, v, p], [p, v, t], [p, q, v], [t, p, v], [v, p, q]][hi]; - return { - r: c[0] * 255, - g: c[1] * 255, - b: c[2] * 255 - }; - }, - rgb_to_hsv: function rgb_to_hsv(r, g, b) { - var min = Math.min(r, g, b); - var max = Math.max(r, g, b); - var delta = max - min; - var h = void 0; - var s = void 0; - if (max !== 0) { - s = delta / max; - } else { - return { - h: NaN, - s: 0, - v: 0 - }; - } - if (r === max) { - h = (g - b) / delta; - } else if (g === max) { - h = 2 + (b - r) / delta; - } else { - h = 4 + (r - g) / delta; - } - h /= 6; - if (h < 0) { - h += 1; - } - return { - h: h * 360, - s: s, - v: max / 255 - }; - }, - rgb_to_hex: function rgb_to_hex(r, g, b) { - var hex = this.hex_with_component(0, 2, r); - hex = this.hex_with_component(hex, 1, g); - hex = this.hex_with_component(hex, 0, b); - return hex; - }, - component_from_hex: function component_from_hex(hex, componentIndex) { - return hex >> componentIndex * 8 & 0xFF; - }, - hex_with_component: function hex_with_component(hex, componentIndex, value) { - return value << (tmpComponent = componentIndex * 8) | hex & ~(0xFF << tmpComponent); - } -}; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { - return typeof obj; -} : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; -}; - - - - - - - - - - - -var classCallCheck = function (instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -}; - -var createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; -}(); - - - - - - - -var get = function get(object, property, receiver) { - if (object === null) object = Function.prototype; - var desc = Object.getOwnPropertyDescriptor(object, property); - - if (desc === undefined) { - var parent = Object.getPrototypeOf(object); - - if (parent === null) { - return undefined; - } else { - return get(parent, property, receiver); - } - } else if ("value" in desc) { - return desc.value; - } else { - var getter = desc.get; - - if (getter === undefined) { - return undefined; - } - - return getter.call(receiver); - } -}; - -var inherits = function (subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - enumerable: false, - writable: true, - configurable: true - } - }); - if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; -}; - - - - - - - - - - - -var possibleConstructorReturn = function (self, call) { - if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return call && (typeof call === "object" || typeof call === "function") ? call : self; -}; - -var Color = function () { - function Color() { - classCallCheck(this, Color); - this.__state = interpret.apply(this, arguments); - if (this.__state === false) { - throw new Error('Failed to interpret color arguments'); - } - this.__state.a = this.__state.a || 1; - } - createClass(Color, [{ - key: 'toString', - value: function toString() { - return colorToString(this); - } - }, { - key: 'toHexString', - value: function toHexString() { - return colorToString(this, true); - } - }, { - key: 'toOriginal', - value: function toOriginal() { - return this.__state.conversion.write(this); - } - }]); - return Color; -}(); -function defineRGBComponent(target, component, componentHexIndex) { - Object.defineProperty(target, component, { - get: function get$$1() { - if (this.__state.space === 'RGB') { - return this.__state[component]; - } - Color.recalculateRGB(this, component, componentHexIndex); - return this.__state[component]; - }, - set: function set$$1(v) { - if (this.__state.space !== 'RGB') { - Color.recalculateRGB(this, component, componentHexIndex); - this.__state.space = 'RGB'; - } - this.__state[component] = v; - } - }); -} -function defineHSVComponent(target, component) { - Object.defineProperty(target, component, { - get: function get$$1() { - if (this.__state.space === 'HSV') { - return this.__state[component]; - } - Color.recalculateHSV(this); - return this.__state[component]; - }, - set: function set$$1(v) { - if (this.__state.space !== 'HSV') { - Color.recalculateHSV(this); - this.__state.space = 'HSV'; - } - this.__state[component] = v; - } - }); -} -Color.recalculateRGB = function (color, component, componentHexIndex) { - if (color.__state.space === 'HEX') { - color.__state[component] = ColorMath.component_from_hex(color.__state.hex, componentHexIndex); - } else if (color.__state.space === 'HSV') { - Common.extend(color.__state, ColorMath.hsv_to_rgb(color.__state.h, color.__state.s, color.__state.v)); - } else { - throw new Error('Corrupted color state'); - } -}; -Color.recalculateHSV = function (color) { - var result = ColorMath.rgb_to_hsv(color.r, color.g, color.b); - Common.extend(color.__state, { - s: result.s, - v: result.v - }); - if (!Common.isNaN(result.h)) { - color.__state.h = result.h; - } else if (Common.isUndefined(color.__state.h)) { - color.__state.h = 0; - } -}; -Color.COMPONENTS = ['r', 'g', 'b', 'h', 's', 'v', 'hex', 'a']; -defineRGBComponent(Color.prototype, 'r', 2); -defineRGBComponent(Color.prototype, 'g', 1); -defineRGBComponent(Color.prototype, 'b', 0); -defineHSVComponent(Color.prototype, 'h'); -defineHSVComponent(Color.prototype, 's'); -defineHSVComponent(Color.prototype, 'v'); -Object.defineProperty(Color.prototype, 'a', { - get: function get$$1() { - return this.__state.a; - }, - set: function set$$1(v) { - this.__state.a = v; - } -}); -Object.defineProperty(Color.prototype, 'hex', { - get: function get$$1() { - if (!this.__state.space !== 'HEX') { - this.__state.hex = ColorMath.rgb_to_hex(this.r, this.g, this.b); - } - return this.__state.hex; - }, - set: function set$$1(v) { - this.__state.space = 'HEX'; - this.__state.hex = v; - } -}); - -var Controller = function () { - function Controller(object, property) { - classCallCheck(this, Controller); - this.initialValue = object[property]; - this.domElement = document.createElement('div'); - this.object = object; - this.property = property; - this.__onChange = undefined; - this.__onFinishChange = undefined; - } - createClass(Controller, [{ - key: 'onChange', - value: function onChange(fnc) { - this.__onChange = fnc; - return this; - } - }, { - key: 'onFinishChange', - value: function onFinishChange(fnc) { - this.__onFinishChange = fnc; - return this; - } - }, { - key: 'setValue', - value: function setValue(newValue) { - this.object[this.property] = newValue; - if (this.__onChange) { - this.__onChange.call(this, newValue); - } - this.updateDisplay(); - return this; - } - }, { - key: 'getValue', - value: function getValue() { - return this.object[this.property]; - } - }, { - key: 'updateDisplay', - value: function updateDisplay() { - return this; - } - }, { - key: 'isModified', - value: function isModified() { - return this.initialValue !== this.getValue(); - } - }]); - return Controller; -}(); - -var EVENT_MAP = { - HTMLEvents: ['change'], - MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'], - KeyboardEvents: ['keydown'] -}; -var EVENT_MAP_INV = {}; -Common.each(EVENT_MAP, function (v, k) { - Common.each(v, function (e) { - EVENT_MAP_INV[e] = k; - }); -}); -var CSS_VALUE_PIXELS = /(\d+(\.\d+)?)px/; -function cssValueToPixels(val) { - if (val === '0' || Common.isUndefined(val)) { - return 0; - } - var match = val.match(CSS_VALUE_PIXELS); - if (!Common.isNull(match)) { - return parseFloat(match[1]); - } - return 0; -} -var dom = { - makeSelectable: function makeSelectable(elem, selectable) { - if (elem === undefined || elem.style === undefined) return; - elem.onselectstart = selectable ? function () { - return false; - } : function () {}; - elem.style.MozUserSelect = selectable ? 'auto' : 'none'; - elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none'; - elem.unselectable = selectable ? 'on' : 'off'; - }, - makeFullscreen: function makeFullscreen(elem, hor, vert) { - var vertical = vert; - var horizontal = hor; - if (Common.isUndefined(horizontal)) { - horizontal = true; - } - if (Common.isUndefined(vertical)) { - vertical = true; - } - elem.style.position = 'absolute'; - if (horizontal) { - elem.style.left = 0; - elem.style.right = 0; - } - if (vertical) { - elem.style.top = 0; - elem.style.bottom = 0; - } - }, - fakeEvent: function fakeEvent(elem, eventType, pars, aux) { - var params = pars || {}; - var className = EVENT_MAP_INV[eventType]; - if (!className) { - throw new Error('Event type ' + eventType + ' not supported.'); - } - var evt = document.createEvent(className); - switch (className) { - case 'MouseEvents': - { - var clientX = params.x || params.clientX || 0; - var clientY = params.y || params.clientY || 0; - evt.initMouseEvent(eventType, params.bubbles || false, params.cancelable || true, window, params.clickCount || 1, 0, - 0, - clientX, - clientY, - false, false, false, false, 0, null); - break; - } - case 'KeyboardEvents': - { - var init = evt.initKeyboardEvent || evt.initKeyEvent; - Common.defaults(params, { - cancelable: true, - ctrlKey: false, - altKey: false, - shiftKey: false, - metaKey: false, - keyCode: undefined, - charCode: undefined - }); - init(eventType, params.bubbles || false, params.cancelable, window, params.ctrlKey, params.altKey, params.shiftKey, params.metaKey, params.keyCode, params.charCode); - break; - } - default: - { - evt.initEvent(eventType, params.bubbles || false, params.cancelable || true); - break; - } - } - Common.defaults(evt, aux); - elem.dispatchEvent(evt); - }, - bind: function bind(elem, event, func, newBool) { - var bool = newBool || false; - if (elem.addEventListener) { - elem.addEventListener(event, func, bool); - } else if (elem.attachEvent) { - elem.attachEvent('on' + event, func); - } - return dom; - }, - unbind: function unbind(elem, event, func, newBool) { - var bool = newBool || false; - if (elem.removeEventListener) { - elem.removeEventListener(event, func, bool); - } else if (elem.detachEvent) { - elem.detachEvent('on' + event, func); - } - return dom; - }, - addClass: function addClass(elem, className) { - if (elem.className === undefined) { - elem.className = className; - } else if (elem.className !== className) { - var classes = elem.className.split(/ +/); - if (classes.indexOf(className) === -1) { - classes.push(className); - elem.className = classes.join(' ').replace(/^\s+/, '').replace(/\s+$/, ''); - } - } - return dom; - }, - removeClass: function removeClass(elem, className) { - if (className) { - if (elem.className === className) { - elem.removeAttribute('class'); - } else { - var classes = elem.className.split(/ +/); - var index = classes.indexOf(className); - if (index !== -1) { - classes.splice(index, 1); - elem.className = classes.join(' '); - } - } - } else { - elem.className = undefined; - } - return dom; - }, - hasClass: function hasClass(elem, className) { - return new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)').test(elem.className) || false; - }, - getWidth: function getWidth(elem) { - var style = getComputedStyle(elem); - return cssValueToPixels(style['border-left-width']) + cssValueToPixels(style['border-right-width']) + cssValueToPixels(style['padding-left']) + cssValueToPixels(style['padding-right']) + cssValueToPixels(style.width); - }, - getHeight: function getHeight(elem) { - var style = getComputedStyle(elem); - return cssValueToPixels(style['border-top-width']) + cssValueToPixels(style['border-bottom-width']) + cssValueToPixels(style['padding-top']) + cssValueToPixels(style['padding-bottom']) + cssValueToPixels(style.height); - }, - getOffset: function getOffset(el) { - var elem = el; - var offset = { left: 0, top: 0 }; - if (elem.offsetParent) { - do { - offset.left += elem.offsetLeft; - offset.top += elem.offsetTop; - elem = elem.offsetParent; - } while (elem); - } - return offset; - }, - isActive: function isActive(elem) { - return elem === document.activeElement && (elem.type || elem.href); - } -}; - -var BooleanController = function (_Controller) { - inherits(BooleanController, _Controller); - function BooleanController(object, property) { - classCallCheck(this, BooleanController); - var _this2 = possibleConstructorReturn(this, (BooleanController.__proto__ || Object.getPrototypeOf(BooleanController)).call(this, object, property)); - var _this = _this2; - _this2.__prev = _this2.getValue(); - _this2.__checkbox = document.createElement('input'); - _this2.__checkbox.setAttribute('type', 'checkbox'); - function onChange() { - _this.setValue(!_this.__prev); - } - dom.bind(_this2.__checkbox, 'change', onChange, false); - _this2.domElement.appendChild(_this2.__checkbox); - _this2.updateDisplay(); - return _this2; - } - createClass(BooleanController, [{ - key: 'setValue', - value: function setValue(v) { - var toReturn = get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'setValue', this).call(this, v); - if (this.__onFinishChange) { - this.__onFinishChange.call(this, this.getValue()); - } - this.__prev = this.getValue(); - return toReturn; - } - }, { - key: 'updateDisplay', - value: function updateDisplay() { - if (this.getValue() === true) { - this.__checkbox.setAttribute('checked', 'checked'); - this.__checkbox.checked = true; - this.__prev = true; - } else { - this.__checkbox.checked = false; - this.__prev = false; - } - return get(BooleanController.prototype.__proto__ || Object.getPrototypeOf(BooleanController.prototype), 'updateDisplay', this).call(this); - } - }]); - return BooleanController; -}(Controller); - -var OptionController = function (_Controller) { - inherits(OptionController, _Controller); - function OptionController(object, property, opts) { - classCallCheck(this, OptionController); - var _this2 = possibleConstructorReturn(this, (OptionController.__proto__ || Object.getPrototypeOf(OptionController)).call(this, object, property)); - var options = opts; - var _this = _this2; - _this2.__select = document.createElement('select'); - if (Common.isArray(options)) { - var map = {}; - Common.each(options, function (element) { - map[element] = element; - }); - options = map; - } - Common.each(options, function (value, key) { - var opt = document.createElement('option'); - opt.innerHTML = key; - opt.setAttribute('value', value); - _this.__select.appendChild(opt); - }); - _this2.updateDisplay(); - dom.bind(_this2.__select, 'change', function () { - var desiredValue = this.options[this.selectedIndex].value; - _this.setValue(desiredValue); - }); - _this2.domElement.appendChild(_this2.__select); - return _this2; - } - createClass(OptionController, [{ - key: 'setValue', - value: function setValue(v) { - var toReturn = get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'setValue', this).call(this, v); - if (this.__onFinishChange) { - this.__onFinishChange.call(this, this.getValue()); - } - return toReturn; - } - }, { - key: 'updateDisplay', - value: function updateDisplay() { - if (dom.isActive(this.__select)) return this; - this.__select.value = this.getValue(); - return get(OptionController.prototype.__proto__ || Object.getPrototypeOf(OptionController.prototype), 'updateDisplay', this).call(this); - } - }]); - return OptionController; -}(Controller); - -var StringController = function (_Controller) { - inherits(StringController, _Controller); - function StringController(object, property) { - classCallCheck(this, StringController); - var _this2 = possibleConstructorReturn(this, (StringController.__proto__ || Object.getPrototypeOf(StringController)).call(this, object, property)); - var _this = _this2; - function onChange() { - _this.setValue(_this.__input.value); - } - function onBlur() { - if (_this.__onFinishChange) { - _this.__onFinishChange.call(_this, _this.getValue()); - } - } - _this2.__input = document.createElement('input'); - _this2.__input.setAttribute('type', 'text'); - dom.bind(_this2.__input, 'keyup', onChange); - dom.bind(_this2.__input, 'change', onChange); - dom.bind(_this2.__input, 'blur', onBlur); - dom.bind(_this2.__input, 'keydown', function (e) { - if (e.keyCode === 13) { - this.blur(); - } - }); - _this2.updateDisplay(); - _this2.domElement.appendChild(_this2.__input); - return _this2; - } - createClass(StringController, [{ - key: 'updateDisplay', - value: function updateDisplay() { - if (!dom.isActive(this.__input)) { - this.__input.value = this.getValue(); - } - return get(StringController.prototype.__proto__ || Object.getPrototypeOf(StringController.prototype), 'updateDisplay', this).call(this); - } - }]); - return StringController; -}(Controller); - -function numDecimals(x) { - var _x = x.toString(); - if (_x.indexOf('.') > -1) { - return _x.length - _x.indexOf('.') - 1; - } - return 0; -} -var NumberController = function (_Controller) { - inherits(NumberController, _Controller); - function NumberController(object, property, params) { - classCallCheck(this, NumberController); - var _this = possibleConstructorReturn(this, (NumberController.__proto__ || Object.getPrototypeOf(NumberController)).call(this, object, property)); - var _params = params || {}; - _this.__min = _params.min; - _this.__max = _params.max; - _this.__step = _params.step; - if (Common.isUndefined(_this.__step)) { - if (_this.initialValue === 0) { - _this.__impliedStep = 1; - } else { - _this.__impliedStep = Math.pow(10, Math.floor(Math.log(Math.abs(_this.initialValue)) / Math.LN10)) / 10; - } - } else { - _this.__impliedStep = _this.__step; - } - _this.__precision = numDecimals(_this.__impliedStep); - return _this; - } - createClass(NumberController, [{ - key: 'setValue', - value: function setValue(v) { - var _v = v; - if (this.__min !== undefined && _v < this.__min) { - _v = this.__min; - } else if (this.__max !== undefined && _v > this.__max) { - _v = this.__max; - } - if (this.__step !== undefined && _v % this.__step !== 0) { - _v = Math.round(_v / this.__step) * this.__step; - } - return get(NumberController.prototype.__proto__ || Object.getPrototypeOf(NumberController.prototype), 'setValue', this).call(this, _v); - } - }, { - key: 'min', - value: function min(minValue) { - this.__min = minValue; - return this; - } - }, { - key: 'max', - value: function max(maxValue) { - this.__max = maxValue; - return this; - } - }, { - key: 'step', - value: function step(stepValue) { - this.__step = stepValue; - this.__impliedStep = stepValue; - this.__precision = numDecimals(stepValue); - return this; - } - }]); - return NumberController; -}(Controller); - -function roundToDecimal(value, decimals) { - var tenTo = Math.pow(10, decimals); - return Math.round(value * tenTo) / tenTo; -} -var NumberControllerBox = function (_NumberController) { - inherits(NumberControllerBox, _NumberController); - function NumberControllerBox(object, property, params) { - classCallCheck(this, NumberControllerBox); - var _this2 = possibleConstructorReturn(this, (NumberControllerBox.__proto__ || Object.getPrototypeOf(NumberControllerBox)).call(this, object, property, params)); - _this2.__truncationSuspended = false; - var _this = _this2; - var prevY = void 0; - function onChange() { - var attempted = parseFloat(_this.__input.value); - if (!Common.isNaN(attempted)) { - _this.setValue(attempted); - } - } - function onFinish() { - if (_this.__onFinishChange) { - _this.__onFinishChange.call(_this, _this.getValue()); - } - } - function onBlur() { - onFinish(); - } - function onMouseDrag(e) { - var diff = prevY - e.clientY; - _this.setValue(_this.getValue() + diff * _this.__impliedStep); - prevY = e.clientY; - } - function onMouseUp() { - dom.unbind(window, 'mousemove', onMouseDrag); - dom.unbind(window, 'mouseup', onMouseUp); - onFinish(); - } - function onMouseDown(e) { - dom.bind(window, 'mousemove', onMouseDrag); - dom.bind(window, 'mouseup', onMouseUp); - prevY = e.clientY; - } - _this2.__input = document.createElement('input'); - _this2.__input.setAttribute('type', 'text'); - dom.bind(_this2.__input, 'change', onChange); - dom.bind(_this2.__input, 'blur', onBlur); - dom.bind(_this2.__input, 'mousedown', onMouseDown); - dom.bind(_this2.__input, 'keydown', function (e) { - if (e.keyCode === 13) { - _this.__truncationSuspended = true; - this.blur(); - _this.__truncationSuspended = false; - onFinish(); - } - }); - _this2.updateDisplay(); - _this2.domElement.appendChild(_this2.__input); - return _this2; - } - createClass(NumberControllerBox, [{ - key: 'updateDisplay', - value: function updateDisplay() { - this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision); - return get(NumberControllerBox.prototype.__proto__ || Object.getPrototypeOf(NumberControllerBox.prototype), 'updateDisplay', this).call(this); - } - }]); - return NumberControllerBox; -}(NumberController); - -function map(v, i1, i2, o1, o2) { - return o1 + (o2 - o1) * ((v - i1) / (i2 - i1)); -} -var NumberControllerSlider = function (_NumberController) { - inherits(NumberControllerSlider, _NumberController); - function NumberControllerSlider(object, property, min, max, step) { - classCallCheck(this, NumberControllerSlider); - var _this2 = possibleConstructorReturn(this, (NumberControllerSlider.__proto__ || Object.getPrototypeOf(NumberControllerSlider)).call(this, object, property, { min: min, max: max, step: step })); - var _this = _this2; - _this2.__background = document.createElement('div'); - _this2.__foreground = document.createElement('div'); - dom.bind(_this2.__background, 'mousedown', onMouseDown); - dom.bind(_this2.__background, 'touchstart', onTouchStart); - dom.addClass(_this2.__background, 'slider'); - dom.addClass(_this2.__foreground, 'slider-fg'); - function onMouseDown(e) { - document.activeElement.blur(); - dom.bind(window, 'mousemove', onMouseDrag); - dom.bind(window, 'mouseup', onMouseUp); - onMouseDrag(e); - } - function onMouseDrag(e) { - e.preventDefault(); - var bgRect = _this.__background.getBoundingClientRect(); - _this.setValue(map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max)); - return false; - } - function onMouseUp() { - dom.unbind(window, 'mousemove', onMouseDrag); - dom.unbind(window, 'mouseup', onMouseUp); - if (_this.__onFinishChange) { - _this.__onFinishChange.call(_this, _this.getValue()); - } - } - function onTouchStart(e) { - if (e.touches.length !== 1) { - return; - } - dom.bind(window, 'touchmove', onTouchMove); - dom.bind(window, 'touchend', onTouchEnd); - onTouchMove(e); - } - function onTouchMove(e) { - var clientX = e.touches[0].clientX; - var bgRect = _this.__background.getBoundingClientRect(); - _this.setValue(map(clientX, bgRect.left, bgRect.right, _this.__min, _this.__max)); - } - function onTouchEnd() { - dom.unbind(window, 'touchmove', onTouchMove); - dom.unbind(window, 'touchend', onTouchEnd); - if (_this.__onFinishChange) { - _this.__onFinishChange.call(_this, _this.getValue()); - } - } - _this2.updateDisplay(); - _this2.__background.appendChild(_this2.__foreground); - _this2.domElement.appendChild(_this2.__background); - return _this2; - } - createClass(NumberControllerSlider, [{ - key: 'updateDisplay', - value: function updateDisplay() { - var pct = (this.getValue() - this.__min) / (this.__max - this.__min); - this.__foreground.style.width = pct * 100 + '%'; - return get(NumberControllerSlider.prototype.__proto__ || Object.getPrototypeOf(NumberControllerSlider.prototype), 'updateDisplay', this).call(this); - } - }]); - return NumberControllerSlider; -}(NumberController); - -var FunctionController = function (_Controller) { - inherits(FunctionController, _Controller); - function FunctionController(object, property, text) { - classCallCheck(this, FunctionController); - var _this2 = possibleConstructorReturn(this, (FunctionController.__proto__ || Object.getPrototypeOf(FunctionController)).call(this, object, property)); - var _this = _this2; - _this2.__button = document.createElement('div'); - _this2.__button.innerHTML = text === undefined ? 'Fire' : text; - dom.bind(_this2.__button, 'click', function (e) { - e.preventDefault(); - _this.fire(); - return false; - }); - dom.addClass(_this2.__button, 'button'); - _this2.domElement.appendChild(_this2.__button); - return _this2; - } - createClass(FunctionController, [{ - key: 'fire', - value: function fire() { - if (this.__onChange) { - this.__onChange.call(this); - } - this.getValue().call(this.object); - if (this.__onFinishChange) { - this.__onFinishChange.call(this, this.getValue()); - } - } - }]); - return FunctionController; -}(Controller); - -var ColorController = function (_Controller) { - inherits(ColorController, _Controller); - function ColorController(object, property) { - classCallCheck(this, ColorController); - var _this2 = possibleConstructorReturn(this, (ColorController.__proto__ || Object.getPrototypeOf(ColorController)).call(this, object, property)); - _this2.__color = new Color(_this2.getValue()); - _this2.__temp = new Color(0); - var _this = _this2; - _this2.domElement = document.createElement('div'); - dom.makeSelectable(_this2.domElement, false); - _this2.__selector = document.createElement('div'); - _this2.__selector.className = 'selector'; - _this2.__saturation_field = document.createElement('div'); - _this2.__saturation_field.className = 'saturation-field'; - _this2.__field_knob = document.createElement('div'); - _this2.__field_knob.className = 'field-knob'; - _this2.__field_knob_border = '2px solid '; - _this2.__hue_knob = document.createElement('div'); - _this2.__hue_knob.className = 'hue-knob'; - _this2.__hue_field = document.createElement('div'); - _this2.__hue_field.className = 'hue-field'; - _this2.__input = document.createElement('input'); - _this2.__input.type = 'text'; - _this2.__input_textShadow = '0 1px 1px '; - dom.bind(_this2.__input, 'keydown', function (e) { - if (e.keyCode === 13) { - onBlur.call(this); - } - }); - dom.bind(_this2.__input, 'blur', onBlur); - dom.bind(_this2.__selector, 'mousedown', function () { - dom.addClass(this, 'drag').bind(window, 'mouseup', function () { - dom.removeClass(_this.__selector, 'drag'); - }); - }); - dom.bind(_this2.__selector, 'touchstart', function () { - dom.addClass(this, 'drag').bind(window, 'touchend', function () { - dom.removeClass(_this.__selector, 'drag'); - }); - }); - var valueField = document.createElement('div'); - Common.extend(_this2.__selector.style, { - width: '122px', - height: '102px', - padding: '3px', - backgroundColor: '#222', - boxShadow: '0px 1px 3px rgba(0,0,0,0.3)' - }); - Common.extend(_this2.__field_knob.style, { - position: 'absolute', - width: '12px', - height: '12px', - border: _this2.__field_knob_border + (_this2.__color.v < 0.5 ? '#fff' : '#000'), - boxShadow: '0px 1px 3px rgba(0,0,0,0.5)', - borderRadius: '12px', - zIndex: 1 - }); - Common.extend(_this2.__hue_knob.style, { - position: 'absolute', - width: '15px', - height: '2px', - borderRight: '4px solid #fff', - zIndex: 1 - }); - Common.extend(_this2.__saturation_field.style, { - width: '100px', - height: '100px', - border: '1px solid #555', - marginRight: '3px', - display: 'inline-block', - cursor: 'pointer' - }); - Common.extend(valueField.style, { - width: '100%', - height: '100%', - background: 'none' - }); - linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000'); - Common.extend(_this2.__hue_field.style, { - width: '15px', - height: '100px', - border: '1px solid #555', - cursor: 'ns-resize', - position: 'absolute', - top: '3px', - right: '3px' - }); - hueGradient(_this2.__hue_field); - Common.extend(_this2.__input.style, { - outline: 'none', - textAlign: 'center', - color: '#fff', - border: 0, - fontWeight: 'bold', - textShadow: _this2.__input_textShadow + 'rgba(0,0,0,0.7)' - }); - dom.bind(_this2.__saturation_field, 'mousedown', fieldDown); - dom.bind(_this2.__saturation_field, 'touchstart', fieldDown); - dom.bind(_this2.__field_knob, 'mousedown', fieldDown); - dom.bind(_this2.__field_knob, 'touchstart', fieldDown); - dom.bind(_this2.__hue_field, 'mousedown', fieldDownH); - dom.bind(_this2.__hue_field, 'touchstart', fieldDownH); - function fieldDown(e) { - setSV(e); - dom.bind(window, 'mousemove', setSV); - dom.bind(window, 'touchmove', setSV); - dom.bind(window, 'mouseup', fieldUpSV); - dom.bind(window, 'touchend', fieldUpSV); - } - function fieldDownH(e) { - setH(e); - dom.bind(window, 'mousemove', setH); - dom.bind(window, 'touchmove', setH); - dom.bind(window, 'mouseup', fieldUpH); - dom.bind(window, 'touchend', fieldUpH); - } - function fieldUpSV() { - dom.unbind(window, 'mousemove', setSV); - dom.unbind(window, 'touchmove', setSV); - dom.unbind(window, 'mouseup', fieldUpSV); - dom.unbind(window, 'touchend', fieldUpSV); - onFinish(); - } - function fieldUpH() { - dom.unbind(window, 'mousemove', setH); - dom.unbind(window, 'touchmove', setH); - dom.unbind(window, 'mouseup', fieldUpH); - dom.unbind(window, 'touchend', fieldUpH); - onFinish(); - } - function onBlur() { - var i = interpret(this.value); - if (i !== false) { - _this.__color.__state = i; - _this.setValue(_this.__color.toOriginal()); - } else { - this.value = _this.__color.toString(); - } - } - function onFinish() { - if (_this.__onFinishChange) { - _this.__onFinishChange.call(_this, _this.__color.toOriginal()); - } - } - _this2.__saturation_field.appendChild(valueField); - _this2.__selector.appendChild(_this2.__field_knob); - _this2.__selector.appendChild(_this2.__saturation_field); - _this2.__selector.appendChild(_this2.__hue_field); - _this2.__hue_field.appendChild(_this2.__hue_knob); - _this2.domElement.appendChild(_this2.__input); - _this2.domElement.appendChild(_this2.__selector); - _this2.updateDisplay(); - function setSV(e) { - if (e.type.indexOf('touch') === -1) { - e.preventDefault(); - } - var fieldRect = _this.__saturation_field.getBoundingClientRect(); - var _ref = e.touches && e.touches[0] || e, - clientX = _ref.clientX, - clientY = _ref.clientY; - var s = (clientX - fieldRect.left) / (fieldRect.right - fieldRect.left); - var v = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top); - if (v > 1) { - v = 1; - } else if (v < 0) { - v = 0; - } - if (s > 1) { - s = 1; - } else if (s < 0) { - s = 0; - } - _this.__color.v = v; - _this.__color.s = s; - _this.setValue(_this.__color.toOriginal()); - return false; - } - function setH(e) { - if (e.type.indexOf('touch') === -1) { - e.preventDefault(); - } - var fieldRect = _this.__hue_field.getBoundingClientRect(); - var _ref2 = e.touches && e.touches[0] || e, - clientY = _ref2.clientY; - var h = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top); - if (h > 1) { - h = 1; - } else if (h < 0) { - h = 0; - } - _this.__color.h = h * 360; - _this.setValue(_this.__color.toOriginal()); - return false; - } - return _this2; - } - createClass(ColorController, [{ - key: 'updateDisplay', - value: function updateDisplay() { - var i = interpret(this.getValue()); - if (i !== false) { - var mismatch = false; - Common.each(Color.COMPONENTS, function (component) { - if (!Common.isUndefined(i[component]) && !Common.isUndefined(this.__color.__state[component]) && i[component] !== this.__color.__state[component]) { - mismatch = true; - return {}; - } - }, this); - if (mismatch) { - Common.extend(this.__color.__state, i); - } - } - Common.extend(this.__temp.__state, this.__color.__state); - this.__temp.a = 1; - var flip = this.__color.v < 0.5 || this.__color.s > 0.5 ? 255 : 0; - var _flip = 255 - flip; - Common.extend(this.__field_knob.style, { - marginLeft: 100 * this.__color.s - 7 + 'px', - marginTop: 100 * (1 - this.__color.v) - 7 + 'px', - backgroundColor: this.__temp.toHexString(), - border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')' - }); - this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px'; - this.__temp.s = 1; - this.__temp.v = 1; - linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString()); - this.__input.value = this.__color.toString(); - Common.extend(this.__input.style, { - backgroundColor: this.__color.toHexString(), - color: 'rgb(' + flip + ',' + flip + ',' + flip + ')', - textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)' - }); - } - }]); - return ColorController; -}(Controller); -var vendors = ['-moz-', '-o-', '-webkit-', '-ms-', '']; -function linearGradient(elem, x, a, b) { - elem.style.background = ''; - Common.each(vendors, function (vendor) { - elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); '; - }); -} -function hueGradient(elem) { - elem.style.background = ''; - elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);'; - elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; - elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; - elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; - elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'; -} - -var CustomController = function (_Controller) { - inherits(CustomController, _Controller); - function CustomController(object, property) { - classCallCheck(this, CustomController); - var _this = possibleConstructorReturn(this, (CustomController.__proto__ || Object.getPrototypeOf(CustomController)).call(this, object, property)); - object.constructor(_this); - return _this; - } - return CustomController; -}(Controller); - -var css = { - load: function load(url, indoc) { - var doc = indoc || document; - var link = doc.createElement('link'); - link.type = 'text/css'; - link.rel = 'stylesheet'; - link.href = url; - doc.getElementsByTagName('head')[0].appendChild(link); - }, - inject: function inject(cssContent, indoc) { - var doc = indoc || document; - var injected = document.createElement('style'); - injected.type = 'text/css'; - injected.innerHTML = cssContent; - var head = doc.getElementsByTagName('head')[0]; - try { - head.appendChild(injected); - } catch (e) { - } - } -}; - -var saveDialogContents = "
GUI
's constructor:\n\n \n\n localStorage
on exit.\n\n localStorage
will\n override those passed to dat.GUI
's constructor. This makes it\n easier to work incrementally, but localStorage
is fragile,\n and your friends may not see the same values you do.\n\n object[property]
\r\n *\r\n * @param {Object} newValue The new value of object[property]
\r\n */\r\n setValue(newValue) {\r\n this.object[this.property] = newValue;\r\n if (this.__onChange) {\r\n this.__onChange.call(this, newValue);\r\n }\r\n\r\n this.updateDisplay();\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the value of object[property]
\r\n *\r\n * @returns {Object} The current value of object[property]
\r\n */\r\n getValue() {\r\n return this.object[this.property];\r\n }\r\n\r\n /**\r\n * Refreshes the visual display of a Controller in order to keep sync\r\n * with the object's current value.\r\n * @returns {Controller} this\r\n */\r\n updateDisplay() {\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {Boolean} true if the value has deviated from initialValue\r\n */\r\n isModified() {\r\n return this.initialValue !== this.getValue();\r\n }\r\n}\r\n\r\nexport default Controller;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport common from '../utils/common';\r\n\r\nconst EVENT_MAP = {\r\n HTMLEvents: ['change'],\r\n MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'],\r\n KeyboardEvents: ['keydown']\r\n};\r\n\r\nconst EVENT_MAP_INV = {};\r\ncommon.each(EVENT_MAP, function(v, k) {\r\n common.each(v, function(e) {\r\n EVENT_MAP_INV[e] = k;\r\n });\r\n});\r\n\r\nconst CSS_VALUE_PIXELS = /(\\d+(\\.\\d+)?)px/;\r\n\r\nfunction cssValueToPixels(val) {\r\n if (val === '0' || common.isUndefined(val)) {\r\n return 0;\r\n }\r\n\r\n const match = val.match(CSS_VALUE_PIXELS);\r\n\r\n if (!common.isNull(match)) {\r\n return parseFloat(match[1]);\r\n }\r\n\r\n // TODO ...ems? %?\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * @namespace\r\n * @member dat.dom\r\n */\r\nconst dom = {\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param selectable\r\n */\r\n makeSelectable: function(elem, selectable) {\r\n if (elem === undefined || elem.style === undefined) return;\r\n\r\n elem.onselectstart = selectable ? function() {\r\n return false;\r\n } : function() {\r\n };\r\n\r\n elem.style.MozUserSelect = selectable ? 'auto' : 'none';\r\n elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';\r\n elem.unselectable = selectable ? 'on' : 'off';\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param horizontal\r\n * @param vert\r\n */\r\n makeFullscreen: function(elem, hor, vert) {\r\n let vertical = vert;\r\n let horizontal = hor;\r\n\r\n if (common.isUndefined(horizontal)) {\r\n horizontal = true;\r\n }\r\n\r\n if (common.isUndefined(vertical)) {\r\n vertical = true;\r\n }\r\n\r\n elem.style.position = 'absolute';\r\n\r\n if (horizontal) {\r\n elem.style.left = 0;\r\n elem.style.right = 0;\r\n }\r\n if (vertical) {\r\n elem.style.top = 0;\r\n elem.style.bottom = 0;\r\n }\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param eventType\r\n * @param params\r\n */\r\n fakeEvent: function(elem, eventType, pars, aux) {\r\n const params = pars || {};\r\n const className = EVENT_MAP_INV[eventType];\r\n if (!className) {\r\n throw new Error('Event type ' + eventType + ' not supported.');\r\n }\r\n const evt = document.createEvent(className);\r\n switch (className) {\r\n case 'MouseEvents':\r\n {\r\n const clientX = params.x || params.clientX || 0;\r\n const clientY = params.y || params.clientY || 0;\r\n evt.initMouseEvent(eventType, params.bubbles || false,\r\n params.cancelable || true, window, params.clickCount || 1,\r\n 0, // screen X\r\n 0, // screen Y\r\n clientX, // client X\r\n clientY, // client Y\r\n false, false, false, false, 0, null);\r\n break;\r\n }\r\n case 'KeyboardEvents':\r\n {\r\n const init = evt.initKeyboardEvent || evt.initKeyEvent; // webkit || moz\r\n common.defaults(params, {\r\n cancelable: true,\r\n ctrlKey: false,\r\n altKey: false,\r\n shiftKey: false,\r\n metaKey: false,\r\n keyCode: undefined,\r\n charCode: undefined\r\n });\r\n init(eventType, params.bubbles || false,\r\n params.cancelable, window,\r\n params.ctrlKey, params.altKey,\r\n params.shiftKey, params.metaKey,\r\n params.keyCode, params.charCode);\r\n break;\r\n }\r\n default:\r\n {\r\n evt.initEvent(eventType, params.bubbles || false, params.cancelable || true);\r\n break;\r\n }\r\n }\r\n common.defaults(evt, aux);\r\n elem.dispatchEvent(evt);\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param event\r\n * @param func\r\n * @param bool\r\n */\r\n bind: function(elem, event, func, newBool) {\r\n const bool = newBool || false;\r\n if (elem.addEventListener) {\r\n elem.addEventListener(event, func, bool);\r\n } else if (elem.attachEvent) {\r\n elem.attachEvent('on' + event, func);\r\n }\r\n return dom;\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param event\r\n * @param func\r\n * @param bool\r\n */\r\n unbind: function(elem, event, func, newBool) {\r\n const bool = newBool || false;\r\n if (elem.removeEventListener) {\r\n elem.removeEventListener(event, func, bool);\r\n } else if (elem.detachEvent) {\r\n elem.detachEvent('on' + event, func);\r\n }\r\n return dom;\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param className\r\n */\r\n addClass: function(elem, className) {\r\n if (elem.className === undefined) {\r\n elem.className = className;\r\n } else if (elem.className !== className) {\r\n const classes = elem.className.split(/ +/);\r\n if (classes.indexOf(className) === -1) {\r\n classes.push(className);\r\n elem.className = classes.join(' ').replace(/^\\s+/, '').replace(/\\s+$/, '');\r\n }\r\n }\r\n return dom;\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param className\r\n */\r\n removeClass: function(elem, className) {\r\n if (className) {\r\n if (elem.className === className) {\r\n elem.removeAttribute('class');\r\n } else {\r\n const classes = elem.className.split(/ +/);\r\n const index = classes.indexOf(className);\r\n if (index !== -1) {\r\n classes.splice(index, 1);\r\n elem.className = classes.join(' ');\r\n }\r\n }\r\n } else {\r\n elem.className = undefined;\r\n }\r\n return dom;\r\n },\r\n\r\n hasClass: function(elem, className) {\r\n return new RegExp('(?:^|\\\\s+)' + className + '(?:\\\\s+|$)').test(elem.className) || false;\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n */\r\n getWidth: function(elem) {\r\n const style = getComputedStyle(elem);\r\n\r\n return cssValueToPixels(style['border-left-width']) +\r\n cssValueToPixels(style['border-right-width']) +\r\n cssValueToPixels(style['padding-left']) +\r\n cssValueToPixels(style['padding-right']) +\r\n cssValueToPixels(style.width);\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n */\r\n getHeight: function(elem) {\r\n const style = getComputedStyle(elem);\r\n\r\n return cssValueToPixels(style['border-top-width']) +\r\n cssValueToPixels(style['border-bottom-width']) +\r\n cssValueToPixels(style['padding-top']) +\r\n cssValueToPixels(style['padding-bottom']) +\r\n cssValueToPixels(style.height);\r\n },\r\n\r\n /**\r\n *\r\n * @param el\r\n */\r\n getOffset: function(el) {\r\n let elem = el;\r\n const offset = { left: 0, top: 0 };\r\n if (elem.offsetParent) {\r\n do {\r\n offset.left += elem.offsetLeft;\r\n offset.top += elem.offsetTop;\r\n elem = elem.offsetParent;\r\n } while (elem);\r\n }\r\n return offset;\r\n },\r\n\r\n // http://stackoverflow.com/posts/2684561/revisions\r\n /**\r\n *\r\n * @param elem\r\n */\r\n isActive: function(elem) {\r\n return elem === document.activeElement && (elem.type || elem.href);\r\n }\r\n\r\n};\r\n\r\nexport default dom;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport dom from '../dom/dom';\r\n\r\n/**\r\n * @class Provides a checkbox input to alter the boolean property of an object.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n */\r\nclass BooleanController extends Controller {\r\n constructor(object, property) {\r\n super(object, property);\r\n\r\n const _this = this;\r\n this.__prev = this.getValue();\r\n\r\n this.__checkbox = document.createElement('input');\r\n this.__checkbox.setAttribute('type', 'checkbox');\r\n\r\n function onChange() {\r\n _this.setValue(!_this.__prev);\r\n }\r\n\r\n dom.bind(this.__checkbox, 'change', onChange, false);\r\n\r\n this.domElement.appendChild(this.__checkbox);\r\n\r\n // Match original value\r\n this.updateDisplay();\r\n }\r\n\r\n setValue(v) {\r\n const toReturn = super.setValue(v);\r\n if (this.__onFinishChange) {\r\n this.__onFinishChange.call(this, this.getValue());\r\n }\r\n this.__prev = this.getValue();\r\n return toReturn;\r\n }\r\n\r\n updateDisplay() {\r\n if (this.getValue() === true) {\r\n this.__checkbox.setAttribute('checked', 'checked');\r\n this.__checkbox.checked = true;\r\n this.__prev = true;\r\n } else {\r\n this.__checkbox.checked = false;\r\n this.__prev = false;\r\n }\r\n\r\n return super.updateDisplay();\r\n }\r\n}\r\n\r\nexport default BooleanController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport dom from '../dom/dom';\r\nimport common from '../utils/common';\r\n\r\n/**\r\n * @class Provides a select input to alter the property of an object, using a\r\n * list of accepted values.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {Object|string[]} options A map of labels to acceptable values, or\r\n * a list of acceptable string values.\r\n */\r\nclass OptionController extends Controller {\r\n constructor(object, property, opts) {\r\n super(object, property);\r\n\r\n let options = opts;\r\n\r\n const _this = this;\r\n\r\n /**\r\n * The drop down menu\r\n * @ignore\r\n */\r\n this.__select = document.createElement('select');\r\n\r\n if (common.isArray(options)) {\r\n const map = {};\r\n common.each(options, function(element) {\r\n map[element] = element;\r\n });\r\n options = map;\r\n }\r\n\r\n common.each(options, function(value, key) {\r\n const opt = document.createElement('option');\r\n opt.innerHTML = key;\r\n opt.setAttribute('value', value);\r\n _this.__select.appendChild(opt);\r\n });\r\n\r\n // Acknowledge original value\r\n this.updateDisplay();\r\n\r\n dom.bind(this.__select, 'change', function() {\r\n const desiredValue = this.options[this.selectedIndex].value;\r\n _this.setValue(desiredValue);\r\n });\r\n\r\n this.domElement.appendChild(this.__select);\r\n }\r\n\r\n setValue(v) {\r\n const toReturn = super.setValue(v);\r\n\r\n if (this.__onFinishChange) {\r\n this.__onFinishChange.call(this, this.getValue());\r\n }\r\n return toReturn;\r\n }\r\n\r\n updateDisplay() {\r\n if (dom.isActive(this.__select)) return this; // prevent number from updating if user is trying to manually update\r\n this.__select.value = this.getValue();\r\n return super.updateDisplay();\r\n }\r\n}\r\n\r\nexport default OptionController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport dom from '../dom/dom';\r\n\r\n/**\r\n * @class Provides a text input to alter the string property of an object.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n */\r\nclass StringController extends Controller {\r\n constructor(object, property) {\r\n super(object, property);\r\n\r\n const _this = this;\r\n\r\n function onChange() {\r\n _this.setValue(_this.__input.value);\r\n }\r\n\r\n function onBlur() {\r\n if (_this.__onFinishChange) {\r\n _this.__onFinishChange.call(_this, _this.getValue());\r\n }\r\n }\r\n\r\n this.__input = document.createElement('input');\r\n this.__input.setAttribute('type', 'text');\r\n\r\n dom.bind(this.__input, 'keyup', onChange);\r\n dom.bind(this.__input, 'change', onChange);\r\n dom.bind(this.__input, 'blur', onBlur);\r\n dom.bind(this.__input, 'keydown', function(e) {\r\n if (e.keyCode === 13) {\r\n this.blur();\r\n }\r\n });\r\n\r\n this.updateDisplay();\r\n\r\n this.domElement.appendChild(this.__input);\r\n }\r\n\r\n updateDisplay() {\r\n // Stops the caret from moving on account of:\r\n // keyup -> setValue -> updateDisplay\r\n if (!dom.isActive(this.__input)) {\r\n this.__input.value = this.getValue();\r\n }\r\n return super.updateDisplay();\r\n }\r\n}\r\n\r\nexport default StringController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport common from '../utils/common';\r\n\r\nfunction numDecimals(x) {\r\n const _x = x.toString();\r\n if (_x.indexOf('.') > -1) {\r\n return _x.length - _x.indexOf('.') - 1;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * @class Represents a given property of an object that is a number.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {Object} [params] Optional parameters\r\n * @param {Number} [params.min] Minimum allowed value\r\n * @param {Number} [params.max] Maximum allowed value\r\n * @param {Number} [params.step] Increment by which to change value\r\n */\r\nclass NumberController extends Controller {\r\n constructor(object, property, params) {\r\n super(object, property);\r\n\r\n const _params = params || {};\r\n\r\n this.__min = _params.min;\r\n this.__max = _params.max;\r\n this.__step = _params.step;\r\n\r\n if (common.isUndefined(this.__step)) {\r\n if (this.initialValue === 0) {\r\n this.__impliedStep = 1; // What are we, psychics?\r\n } else {\r\n // Hey Doug, check this out.\r\n this.__impliedStep = Math.pow(10, Math.floor(Math.log(Math.abs(this.initialValue)) / Math.LN10)) / 10;\r\n }\r\n } else {\r\n this.__impliedStep = this.__step;\r\n }\r\n\r\n this.__precision = numDecimals(this.__impliedStep);\r\n }\r\n\r\n setValue(v) {\r\n let _v = v;\r\n\r\n if (this.__min !== undefined && _v < this.__min) {\r\n _v = this.__min;\r\n } else if (this.__max !== undefined && _v > this.__max) {\r\n _v = this.__max;\r\n }\r\n\r\n if (this.__step !== undefined && _v % this.__step !== 0) {\r\n _v = Math.round(_v / this.__step) * this.__step;\r\n }\r\n\r\n return super.setValue(_v);\r\n }\r\n\r\n /**\r\n * Specify a minimum value for object[property]
.\r\n *\r\n * @param {Number} minValue The minimum value for\r\n * object[property]
\r\n * @returns {dat.controllers.NumberController} this\r\n */\r\n min(minValue) {\r\n this.__min = minValue;\r\n return this;\r\n }\r\n\r\n /**\r\n * Specify a maximum value for object[property]
.\r\n *\r\n * @param {Number} maxValue The maximum value for\r\n * object[property]
\r\n * @returns {dat.controllers.NumberController} this\r\n */\r\n max(maxValue) {\r\n this.__max = maxValue;\r\n return this;\r\n }\r\n\r\n /**\r\n * Specify a step value that dat.controllers.NumberController\r\n * increments by.\r\n *\r\n * @param {Number} stepValue The step value for\r\n * dat.controllers.NumberController\r\n * @default if minimum and maximum specified increment is 1% of the\r\n * difference otherwise stepValue is 1\r\n * @returns {dat.controllers.NumberController} this\r\n */\r\n step(stepValue) {\r\n this.__step = stepValue;\r\n this.__impliedStep = stepValue;\r\n this.__precision = numDecimals(stepValue);\r\n return this;\r\n }\r\n}\r\n\r\nexport default NumberController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport NumberController from './NumberController';\r\nimport dom from '../dom/dom';\r\nimport common from '../utils/common';\r\n\r\nfunction roundToDecimal(value, decimals) {\r\n const tenTo = Math.pow(10, decimals);\r\n return Math.round(value * tenTo) / tenTo;\r\n}\r\n\r\n/**\r\n * @class Represents a given property of an object that is a number and\r\n * provides an input element with which to manipulate it.\r\n *\r\n * @extends dat.controllers.Controller\r\n * @extends dat.controllers.NumberController\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {Object} [params] Optional parameters\r\n * @param {Number} [params.min] Minimum allowed value\r\n * @param {Number} [params.max] Maximum allowed value\r\n * @param {Number} [params.step] Increment by which to change value\r\n */\r\nclass NumberControllerBox extends NumberController {\r\n constructor(object, property, params) {\r\n super(object, property, params);\r\n\r\n this.__truncationSuspended = false;\r\n\r\n const _this = this;\r\n\r\n /**\r\n * {Number} Previous mouse y position\r\n * @ignore\r\n */\r\n let prevY;\r\n\r\n function onChange() {\r\n const attempted = parseFloat(_this.__input.value);\r\n if (!common.isNaN(attempted)) {\r\n _this.setValue(attempted);\r\n }\r\n }\r\n\r\n function onFinish() {\r\n if (_this.__onFinishChange) {\r\n _this.__onFinishChange.call(_this, _this.getValue());\r\n }\r\n }\r\n\r\n function onBlur() {\r\n onFinish();\r\n }\r\n\r\n function onMouseDrag(e) {\r\n const diff = prevY - e.clientY;\r\n _this.setValue(_this.getValue() + diff * _this.__impliedStep);\r\n\r\n prevY = e.clientY;\r\n }\r\n\r\n function onMouseUp() {\r\n dom.unbind(window, 'mousemove', onMouseDrag);\r\n dom.unbind(window, 'mouseup', onMouseUp);\r\n onFinish();\r\n }\r\n\r\n function onMouseDown(e) {\r\n dom.bind(window, 'mousemove', onMouseDrag);\r\n dom.bind(window, 'mouseup', onMouseUp);\r\n prevY = e.clientY;\r\n }\r\n\r\n this.__input = document.createElement('input');\r\n this.__input.setAttribute('type', 'text');\r\n\r\n // Makes it so manually specified values are not truncated.\r\n\r\n dom.bind(this.__input, 'change', onChange);\r\n dom.bind(this.__input, 'blur', onBlur);\r\n dom.bind(this.__input, 'mousedown', onMouseDown);\r\n dom.bind(this.__input, 'keydown', function(e) {\r\n // When pressing enter, you can be as precise as you want.\r\n if (e.keyCode === 13) {\r\n _this.__truncationSuspended = true;\r\n this.blur();\r\n _this.__truncationSuspended = false;\r\n onFinish();\r\n }\r\n });\r\n\r\n this.updateDisplay();\r\n\r\n this.domElement.appendChild(this.__input);\r\n }\r\n\r\n updateDisplay() {\r\n this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision);\r\n return super.updateDisplay();\r\n }\r\n}\r\n\r\nexport default NumberControllerBox;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport NumberController from './NumberController';\r\nimport dom from '../dom/dom';\r\n\r\nfunction map(v, i1, i2, o1, o2) {\r\n return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));\r\n}\r\n\r\n/**\r\n * @class Represents a given property of an object that is a number, contains\r\n * a minimum and maximum, and provides a slider element with which to\r\n * manipulate it. It should be noted that the slider element is made up of\r\n * <div>
tags, not the html5\r\n * <slider>
element.\r\n *\r\n * @extends dat.controllers.Controller\r\n * @extends dat.controllers.NumberController\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {Number} minValue Minimum allowed value\r\n * @param {Number} maxValue Maximum allowed value\r\n * @param {Number} stepValue Increment by which to change value\r\n */\r\nclass NumberControllerSlider extends NumberController {\r\n constructor(object, property, min, max, step) {\r\n super(object, property, { min: min, max: max, step: step });\r\n\r\n const _this = this;\r\n\r\n this.__background = document.createElement('div');\r\n this.__foreground = document.createElement('div');\r\n\r\n dom.bind(this.__background, 'mousedown', onMouseDown);\r\n dom.bind(this.__background, 'touchstart', onTouchStart);\r\n\r\n dom.addClass(this.__background, 'slider');\r\n dom.addClass(this.__foreground, 'slider-fg');\r\n\r\n function onMouseDown(e) {\r\n document.activeElement.blur();\r\n\r\n dom.bind(window, 'mousemove', onMouseDrag);\r\n dom.bind(window, 'mouseup', onMouseUp);\r\n\r\n onMouseDrag(e);\r\n }\r\n\r\n function onMouseDrag(e) {\r\n e.preventDefault();\r\n\r\n const bgRect = _this.__background.getBoundingClientRect();\r\n\r\n _this.setValue(\r\n map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max)\r\n );\r\n\r\n return false;\r\n }\r\n\r\n function onMouseUp() {\r\n dom.unbind(window, 'mousemove', onMouseDrag);\r\n dom.unbind(window, 'mouseup', onMouseUp);\r\n if (_this.__onFinishChange) {\r\n _this.__onFinishChange.call(_this, _this.getValue());\r\n }\r\n }\r\n\r\n function onTouchStart(e) {\r\n if (e.touches.length !== 1) { return; }\r\n dom.bind(window, 'touchmove', onTouchMove);\r\n dom.bind(window, 'touchend', onTouchEnd);\r\n onTouchMove(e);\r\n }\r\n\r\n function onTouchMove(e) {\r\n const clientX = e.touches[0].clientX;\r\n const bgRect = _this.__background.getBoundingClientRect();\r\n\r\n _this.setValue(\r\n map(clientX, bgRect.left, bgRect.right, _this.__min, _this.__max)\r\n );\r\n }\r\n\r\n function onTouchEnd() {\r\n dom.unbind(window, 'touchmove', onTouchMove);\r\n dom.unbind(window, 'touchend', onTouchEnd);\r\n if (_this.__onFinishChange) {\r\n _this.__onFinishChange.call(_this, _this.getValue());\r\n }\r\n }\r\n\r\n this.updateDisplay();\r\n\r\n this.__background.appendChild(this.__foreground);\r\n this.domElement.appendChild(this.__background);\r\n }\r\n\r\n updateDisplay() {\r\n const pct = (this.getValue() - this.__min) / (this.__max - this.__min);\r\n this.__foreground.style.width = pct * 100 + '%';\r\n return super.updateDisplay();\r\n }\r\n}\r\n\r\nexport default NumberControllerSlider;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport dom from '../dom/dom';\r\n\r\n/**\r\n * @class Provides a GUI interface to fire a specified method, a property of an object.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n */\r\nclass FunctionController extends Controller {\r\n constructor(object, property, text) {\r\n super(object, property);\r\n\r\n const _this = this;\r\n\r\n this.__button = document.createElement('div');\r\n this.__button.innerHTML = text === undefined ? 'Fire' : text;\r\n\r\n dom.bind(this.__button, 'click', function(e) {\r\n e.preventDefault();\r\n _this.fire();\r\n return false;\r\n });\r\n\r\n dom.addClass(this.__button, 'button');\r\n\r\n this.domElement.appendChild(this.__button);\r\n }\r\n\r\n fire() {\r\n if (this.__onChange) {\r\n this.__onChange.call(this);\r\n }\r\n this.getValue().call(this.object);\r\n if (this.__onFinishChange) {\r\n this.__onFinishChange.call(this, this.getValue());\r\n }\r\n }\r\n}\r\n\r\nexport default FunctionController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport dom from '../dom/dom';\r\nimport Color from '../color/Color';\r\nimport interpret from '../color/interpret';\r\nimport common from '../utils/common';\r\n\r\n/**\r\n * @class Represents a given property of an object that is a color.\r\n * @param {Object} object\r\n * @param {string} property\r\n */\r\nclass ColorController extends Controller {\r\n constructor(object, property) {\r\n super(object, property);\r\n\r\n this.__color = new Color(this.getValue());\r\n this.__temp = new Color(0);\r\n\r\n const _this = this;\r\n\r\n this.domElement = document.createElement('div');\r\n\r\n dom.makeSelectable(this.domElement, false);\r\n\r\n this.__selector = document.createElement('div');\r\n this.__selector.className = 'selector';\r\n\r\n this.__saturation_field = document.createElement('div');\r\n this.__saturation_field.className = 'saturation-field';\r\n\r\n this.__field_knob = document.createElement('div');\r\n this.__field_knob.className = 'field-knob';\r\n this.__field_knob_border = '2px solid ';\r\n\r\n this.__hue_knob = document.createElement('div');\r\n this.__hue_knob.className = 'hue-knob';\r\n\r\n this.__hue_field = document.createElement('div');\r\n this.__hue_field.className = 'hue-field';\r\n\r\n this.__input = document.createElement('input');\r\n this.__input.type = 'text';\r\n this.__input_textShadow = '0 1px 1px ';\r\n\r\n dom.bind(this.__input, 'keydown', function(e) {\r\n if (e.keyCode === 13) { // on enter\r\n onBlur.call(this);\r\n }\r\n });\r\n\r\n dom.bind(this.__input, 'blur', onBlur);\r\n\r\n dom.bind(this.__selector, 'mousedown', function(/* e */) {\r\n dom\r\n .addClass(this, 'drag')\r\n .bind(window, 'mouseup', function(/* e */) {\r\n dom.removeClass(_this.__selector, 'drag');\r\n });\r\n });\r\n\r\n dom.bind(this.__selector, 'touchstart', function(/* e */) {\r\n dom\r\n .addClass(this, 'drag')\r\n .bind(window, 'touchend', function(/* e */) {\r\n dom.removeClass(_this.__selector, 'drag');\r\n });\r\n });\r\n\r\n const valueField = document.createElement('div');\r\n\r\n common.extend(this.__selector.style, {\r\n width: '122px',\r\n height: '102px',\r\n padding: '3px',\r\n backgroundColor: '#222',\r\n boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'\r\n });\r\n\r\n common.extend(this.__field_knob.style, {\r\n position: 'absolute',\r\n width: '12px',\r\n height: '12px',\r\n border: this.__field_knob_border + (this.__color.v < 0.5 ? '#fff' : '#000'),\r\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\r\n borderRadius: '12px',\r\n zIndex: 1\r\n });\r\n\r\n common.extend(this.__hue_knob.style, {\r\n position: 'absolute',\r\n width: '15px',\r\n height: '2px',\r\n borderRight: '4px solid #fff',\r\n zIndex: 1\r\n });\r\n\r\n common.extend(this.__saturation_field.style, {\r\n width: '100px',\r\n height: '100px',\r\n border: '1px solid #555',\r\n marginRight: '3px',\r\n display: 'inline-block',\r\n cursor: 'pointer'\r\n });\r\n\r\n common.extend(valueField.style, {\r\n width: '100%',\r\n height: '100%',\r\n background: 'none'\r\n });\r\n\r\n linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');\r\n\r\n common.extend(this.__hue_field.style, {\r\n width: '15px',\r\n height: '100px',\r\n border: '1px solid #555',\r\n cursor: 'ns-resize',\r\n position: 'absolute',\r\n top: '3px',\r\n right: '3px'\r\n });\r\n\r\n hueGradient(this.__hue_field);\r\n\r\n common.extend(this.__input.style, {\r\n outline: 'none',\r\n// width: '120px',\r\n textAlign: 'center',\r\n// padding: '4px',\r\n// marginBottom: '6px',\r\n color: '#fff',\r\n border: 0,\r\n fontWeight: 'bold',\r\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\r\n });\r\n\r\n dom.bind(this.__saturation_field, 'mousedown', fieldDown);\r\n dom.bind(this.__saturation_field, 'touchstart', fieldDown);\r\n\r\n dom.bind(this.__field_knob, 'mousedown', fieldDown);\r\n dom.bind(this.__field_knob, 'touchstart', fieldDown);\r\n\r\n dom.bind(this.__hue_field, 'mousedown', fieldDownH);\r\n dom.bind(this.__hue_field, 'touchstart', fieldDownH);\r\n\r\n function fieldDown(e) {\r\n setSV(e);\r\n dom.bind(window, 'mousemove', setSV);\r\n dom.bind(window, 'touchmove', setSV);\r\n dom.bind(window, 'mouseup', fieldUpSV);\r\n dom.bind(window, 'touchend', fieldUpSV);\r\n }\r\n\r\n function fieldDownH(e) {\r\n setH(e);\r\n dom.bind(window, 'mousemove', setH);\r\n dom.bind(window, 'touchmove', setH);\r\n dom.bind(window, 'mouseup', fieldUpH);\r\n dom.bind(window, 'touchend', fieldUpH);\r\n }\r\n\r\n function fieldUpSV() {\r\n dom.unbind(window, 'mousemove', setSV);\r\n dom.unbind(window, 'touchmove', setSV);\r\n dom.unbind(window, 'mouseup', fieldUpSV);\r\n dom.unbind(window, 'touchend', fieldUpSV);\r\n onFinish();\r\n }\r\n\r\n function fieldUpH() {\r\n dom.unbind(window, 'mousemove', setH);\r\n dom.unbind(window, 'touchmove', setH);\r\n dom.unbind(window, 'mouseup', fieldUpH);\r\n dom.unbind(window, 'touchend', fieldUpH);\r\n onFinish();\r\n }\r\n\r\n function onBlur() {\r\n const i = interpret(this.value);\r\n if (i !== false) {\r\n _this.__color.__state = i;\r\n _this.setValue(_this.__color.toOriginal());\r\n } else {\r\n this.value = _this.__color.toString();\r\n }\r\n }\r\n\r\n function onFinish() {\r\n if (_this.__onFinishChange) {\r\n _this.__onFinishChange.call(_this, _this.__color.toOriginal());\r\n }\r\n }\r\n\r\n this.__saturation_field.appendChild(valueField);\r\n this.__selector.appendChild(this.__field_knob);\r\n this.__selector.appendChild(this.__saturation_field);\r\n this.__selector.appendChild(this.__hue_field);\r\n this.__hue_field.appendChild(this.__hue_knob);\r\n\r\n this.domElement.appendChild(this.__input);\r\n this.domElement.appendChild(this.__selector);\r\n\r\n this.updateDisplay();\r\n\r\n function setSV(e) {\r\n if (e.type.indexOf('touch') === -1) { e.preventDefault(); }\r\n\r\n const fieldRect = _this.__saturation_field.getBoundingClientRect();\r\n const { clientX, clientY } = (e.touches && e.touches[0]) || e;\r\n let s = (clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\r\n let v = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\r\n\r\n if (v > 1) {\r\n v = 1;\r\n } else if (v < 0) {\r\n v = 0;\r\n }\r\n\r\n if (s > 1) {\r\n s = 1;\r\n } else if (s < 0) {\r\n s = 0;\r\n }\r\n\r\n _this.__color.v = v;\r\n _this.__color.s = s;\r\n\r\n _this.setValue(_this.__color.toOriginal());\r\n\r\n\r\n return false;\r\n }\r\n\r\n function setH(e) {\r\n if (e.type.indexOf('touch') === -1) { e.preventDefault(); }\r\n\r\n const fieldRect = _this.__hue_field.getBoundingClientRect();\r\n const { clientY } = (e.touches && e.touches[0]) || e;\r\n let h = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\r\n\r\n if (h > 1) {\r\n h = 1;\r\n } else if (h < 0) {\r\n h = 0;\r\n }\r\n\r\n _this.__color.h = h * 360;\r\n\r\n _this.setValue(_this.__color.toOriginal());\r\n\r\n return false;\r\n }\r\n }\r\n\r\n updateDisplay() {\r\n const i = interpret(this.getValue());\r\n\r\n if (i !== false) {\r\n let mismatch = false;\r\n\r\n // Check for mismatch on the interpreted value.\r\n\r\n common.each(Color.COMPONENTS, function(component) {\r\n if (!common.isUndefined(i[component]) && !common.isUndefined(this.__color.__state[component]) &&\r\n i[component] !== this.__color.__state[component]) {\r\n mismatch = true;\r\n return {}; // break\r\n }\r\n }, this);\r\n\r\n // If nothing diverges, we keep our previous values\r\n // for statefulness, otherwise we recalculate fresh\r\n if (mismatch) {\r\n common.extend(this.__color.__state, i);\r\n }\r\n }\r\n\r\n common.extend(this.__temp.__state, this.__color.__state);\r\n\r\n this.__temp.a = 1;\r\n\r\n const flip = (this.__color.v < 0.5 || this.__color.s > 0.5) ? 255 : 0;\r\n const _flip = 255 - flip;\r\n\r\n common.extend(this.__field_knob.style, {\r\n marginLeft: 100 * this.__color.s - 7 + 'px',\r\n marginTop: 100 * (1 - this.__color.v) - 7 + 'px',\r\n backgroundColor: this.__temp.toHexString(),\r\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\r\n });\r\n\r\n this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';\r\n\r\n this.__temp.s = 1;\r\n this.__temp.v = 1;\r\n\r\n linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());\r\n\r\n this.__input.value = this.__color.toString();\r\n\r\n common.extend(this.__input.style, {\r\n backgroundColor: this.__color.toHexString(),\r\n color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',\r\n textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'\r\n });\r\n }\r\n}\r\n\r\nconst vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];\r\n\r\nfunction linearGradient(elem, x, a, b) {\r\n elem.style.background = '';\r\n common.each(vendors, function(vendor) {\r\n elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';\r\n });\r\n}\r\n\r\nfunction hueGradient(elem) {\r\n elem.style.background = '';\r\n elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';\r\n elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\r\n elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\r\n elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\r\n elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\r\n}\r\n\r\nexport default ColorController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport Controller from './Controller';\r\n\r\n/**\r\n * @class Represents a custom controller.\r\n * @param {Object} object\r\n * @param {string} property\r\n */\r\nclass CustomController extends Controller{\r\n constructor(object, property) {\r\n super(object, property);\r\n\r\n object.constructor( this );\r\n }\r\n}\r\n\r\nexport default CustomController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nconst css = {\r\n load: function(url, indoc) {\r\n const doc = indoc || document;\r\n const link = doc.createElement('link');\r\n link.type = 'text/css';\r\n link.rel = 'stylesheet';\r\n link.href = url;\r\n doc.getElementsByTagName('head')[0].appendChild(link);\r\n },\r\n\r\n inject: function(cssContent, indoc) {\r\n const doc = indoc || document;\r\n const injected = document.createElement('style');\r\n injected.type = 'text/css';\r\n injected.innerHTML = cssContent;\r\n const head = doc.getElementsByTagName('head')[0];\r\n try {\r\n head.appendChild(injected);\r\n } catch (e) { // Unable to inject CSS, probably because of a Content Security Policy\r\n }\r\n }\r\n};\r\n\r\nexport default css;\r\n","const saveDialogContents = `GUI
's constructor:\r\n\r\n \r\n\r\n localStorage
on exit.\r\n\r\n localStorage
will\r\n override those passed to dat.GUI
's constructor. This makes it\r\n easier to work incrementally, but localStorage
is fragile,\r\n and your friends may not see the same values you do.\r\n\r\n GUI
\r\n * @type dat.gui.GUI\r\n */\r\n parent: {\r\n get: function() {\r\n return params.parent;\r\n }\r\n },\r\n\r\n scrollable: {\r\n get: function() {\r\n return params.scrollable;\r\n }\r\n },\r\n\r\n /**\r\n * Handles GUI
's element placement for you\r\n * @type Boolean\r\n */\r\n autoPlace: {\r\n get: function() {\r\n return params.autoPlace;\r\n }\r\n },\r\n\r\n /**\r\n * Handles GUI
's position of open/close button\r\n * @type Boolean\r\n */\r\n closeOnTop: {\r\n get: function() {\r\n return params.closeOnTop;\r\n }\r\n },\r\n\r\n /**\r\n * The identifier for a set of saved values\r\n * @type String\r\n */\r\n preset: {\r\n get: function() {\r\n if (_this.parent) {\r\n return _this.getRoot().preset;\r\n }\r\n\r\n return params.load.preset;\r\n },\r\n\r\n set: function(v) {\r\n if (_this.parent) {\r\n _this.getRoot().preset = v;\r\n } else {\r\n params.load.preset = v;\r\n }\r\n setPresetSelectIndex(this);\r\n _this.revert();\r\n }\r\n },\r\n\r\n /**\r\n * The width of GUI
element\r\n * @type Number\r\n */\r\n width: {\r\n get: function() {\r\n return params.width;\r\n },\r\n set: function(v) {\r\n params.width = v;\r\n setWidth(_this, v);\r\n }\r\n },\r\n\r\n /**\r\n * The name of GUI
. Used for folders. i.e\r\n * a folder's name\r\n * @type String\r\n */\r\n name: {\r\n get: function() {\r\n return params.name;\r\n },\r\n set: function(v) {\r\n // TODO Check for collisions among sibling folders\r\n params.name = v;\r\n if (titleRow) {\r\n titleRow.innerHTML = params.name;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Whether the GUI
is collapsed or not\r\n * @type Boolean\r\n */\r\n closed: {\r\n get: function() {\r\n return params.closed;\r\n },\r\n set: function(v) {\r\n params.closed = v;\r\n if (params.closed) {\r\n dom.addClass(_this.__ul, GUI.CLASS_CLOSED);\r\n } else {\r\n dom.removeClass(_this.__ul, GUI.CLASS_CLOSED);\r\n }\r\n // For browsers that aren't going to respect the CSS transition,\r\n // Lets just check our height against the window height right off\r\n // the bat.\r\n this.onResize();\r\n\r\n if (_this.__closeButton) {\r\n _this.__closeButton.innerHTML = v ? GUI.TEXT_OPEN : GUI.TEXT_CLOSED;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Contains all presets\r\n * @type Object\r\n */\r\n load: {\r\n get: function() {\r\n return params.load;\r\n }\r\n },\r\n\r\n /**\r\n * Determines whether or not to use localStorage as the means for\r\n * remember
ing\r\n * @type Boolean\r\n */\r\n useLocalStorage: {\r\n\r\n get: function() {\r\n return useLocalStorage;\r\n },\r\n set: function(bool) {\r\n if (SUPPORTS_LOCAL_STORAGE) {\r\n useLocalStorage = bool;\r\n if (bool) {\r\n dom.bind(window, 'unload', saveToLocalStorage);\r\n } else {\r\n dom.unbind(window, 'unload', saveToLocalStorage);\r\n }\r\n localStorage.setItem(getLocalStorageHash(_this, 'isLocal'), bool);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Are we a root level GUI?\r\n if (common.isUndefined(params.parent)) {\r\n this.closed = params.closed || false;\r\n\r\n dom.addClass(this.domElement, GUI.CLASS_MAIN);\r\n dom.makeSelectable(this.domElement, false);\r\n\r\n // Are we supposed to be loading locally?\r\n if (SUPPORTS_LOCAL_STORAGE) {\r\n if (useLocalStorage) {\r\n _this.useLocalStorage = true;\r\n\r\n const savedGui = localStorage.getItem(getLocalStorageHash(this, 'gui'));\r\n\r\n if (savedGui) {\r\n params.load = JSON.parse(savedGui);\r\n }\r\n }\r\n }\r\n\r\n this.__closeButton = document.createElement('div');\r\n this.__closeButton.innerHTML = GUI.TEXT_CLOSED;\r\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BUTTON);\r\n if (params.closeOnTop) {\r\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_TOP);\r\n this.domElement.insertBefore(this.__closeButton, this.domElement.childNodes[0]);\r\n } else {\r\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BOTTOM);\r\n this.domElement.appendChild(this.__closeButton);\r\n }\r\n\r\n dom.bind(this.__closeButton, 'click', function() {\r\n _this.closed = !_this.closed;\r\n });\r\n // Oh, you're a nested GUI!\r\n } else {\r\n if (params.closed === undefined) {\r\n params.closed = true;\r\n }\r\n\r\n const titleRowName = document.createTextNode(params.name);\r\n dom.addClass(titleRowName, 'controller-name');\r\n\r\n titleRow = addRow(_this, titleRowName);\r\n\r\n const onClickTitle = function(e) {\r\n e.preventDefault();\r\n _this.closed = !_this.closed;\r\n return false;\r\n };\r\n\r\n dom.addClass(this.__ul, GUI.CLASS_CLOSED);\r\n\r\n dom.addClass(titleRow, 'title');\r\n dom.bind(titleRow, 'click', onClickTitle);\r\n\r\n if (!params.closed) {\r\n this.closed = false;\r\n }\r\n }\r\n\r\n if (params.autoPlace) {\r\n if (common.isUndefined(params.parent)) {\r\n if (autoPlaceVirgin) {\r\n autoPlaceContainer = document.createElement('div');\r\n dom.addClass(autoPlaceContainer, CSS_NAMESPACE);\r\n dom.addClass(autoPlaceContainer, GUI.CLASS_AUTO_PLACE_CONTAINER);\r\n document.body.appendChild(autoPlaceContainer);\r\n autoPlaceVirgin = false;\r\n }\r\n\r\n // Put it in the dom for you.\r\n autoPlaceContainer.appendChild(this.domElement);\r\n\r\n // Apply the auto styles\r\n dom.addClass(this.domElement, GUI.CLASS_AUTO_PLACE);\r\n }\r\n\r\n\r\n // Make it not elastic.\r\n if (!this.parent) {\r\n setWidth(_this, params.width);\r\n }\r\n }\r\n\r\n this.__resizeHandler = function() {\r\n _this.onResizeDebounced();\r\n };\r\n\r\n dom.bind(window, 'resize', this.__resizeHandler);\r\n dom.bind(this.__ul, 'webkitTransitionEnd', this.__resizeHandler);\r\n dom.bind(this.__ul, 'transitionend', this.__resizeHandler);\r\n dom.bind(this.__ul, 'oTransitionEnd', this.__resizeHandler);\r\n this.onResize();\r\n\r\n if (params.resizable) {\r\n addResizeHandle(this);\r\n }\r\n\r\n saveToLocalStorage = function() {\r\n if (SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(_this, 'isLocal')) === 'true') {\r\n localStorage.setItem(getLocalStorageHash(_this, 'gui'), JSON.stringify(_this.getSaveObject()));\r\n }\r\n };\r\n\r\n // expose this method publicly\r\n this.saveToLocalStorageIfPossible = saveToLocalStorage;\r\n\r\n function resetWidth() {\r\n const root = _this.getRoot();\r\n root.width += 1;\r\n common.defer(function() {\r\n root.width -= 1;\r\n });\r\n }\r\n\r\n if (!params.parent) {\r\n resetWidth();\r\n }\r\n};\r\n\r\nGUI.CustomController = CustomController;\r\n\r\nGUI.toggleHide = function() {\r\n hide = !hide;\r\n common.each(hideableGuis, function(gui) {\r\n gui.domElement.style.display = hide ? 'none' : '';\r\n });\r\n};\r\n\r\nGUI.CLASS_AUTO_PLACE = 'a';\r\nGUI.CLASS_AUTO_PLACE_CONTAINER = 'ac';\r\nGUI.CLASS_MAIN = 'main';\r\nGUI.CLASS_CONTROLLER_ROW = 'cr';\r\nGUI.CLASS_TOO_TALL = 'taller-than-window';\r\nGUI.CLASS_CLOSED = 'closed';\r\nGUI.CLASS_CLOSE_BUTTON = 'close-button';\r\nGUI.CLASS_CLOSE_TOP = 'close-top';\r\nGUI.CLASS_CLOSE_BOTTOM = 'close-bottom';\r\nGUI.CLASS_DRAG = 'drag';\r\n\r\nGUI.DEFAULT_WIDTH = 245;\r\nGUI.TEXT_CLOSED = 'Close Controls';\r\nGUI.TEXT_OPEN = 'Open Controls';\r\n\r\nGUI._keydownHandler = function(e) {\r\n if (document.activeElement.type !== 'text' &&\r\n (e.which === HIDE_KEY_CODE || e.keyCode === HIDE_KEY_CODE)) {\r\n GUI.toggleHide();\r\n }\r\n};\r\ndom.bind(window, 'keydown', GUI._keydownHandler, false);\r\n\r\ncommon.extend(\r\n GUI.prototype,\r\n\r\n /** @lends GUI.prototype */\r\n {\r\n\r\n /**\r\n * Adds a new {@link Controller} to the GUI. The type of controller created\r\n * is inferred from the initial value of object[property]
. For\r\n * color properties, see {@link addColor}.\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {String} property The name of the property to be manipulated\r\n * @param {Number} [min] Minimum allowed value\r\n * @param {Number} [max] Maximum allowed value\r\n * @param {Number} [step] Increment by which to change value\r\n * @returns {Controller} The controller that was added to the GUI.\r\n * @instance\r\n *\r\n * @example\r\n * // Add a string controller.\r\n * var person = {name: 'Sam'};\r\n * gui.add(person, 'name');\r\n *\r\n * @example\r\n * // Add a number controller slider.\r\n * var person = {age: 45};\r\n * gui.add(person, 'age', 0, 100);\r\n */\r\n add: function(object, property) {\r\n return add(\r\n this,\r\n object,\r\n property,\r\n {\r\n custom: object instanceof CustomController,\r\n factoryArgs: Array.prototype.slice.call(arguments, 2)\r\n }\r\n );\r\n },\r\n\r\n /**\r\n * Adds a new color controller to the GUI.\r\n *\r\n * @param object\r\n * @param property\r\n * @returns {Controller} The controller that was added to the GUI.\r\n * @instance\r\n *\r\n * @example\r\n * var palette = {\r\n * color1: '#FF0000', // CSS string\r\n * color2: [ 0, 128, 255 ], // RGB array\r\n * color3: [ 0, 128, 255, 0.3 ], // RGB with alpha\r\n * color4: { h: 350, s: 0.9, v: 0.3 } // Hue, saturation, value\r\n * };\r\n * gui.addColor(palette, 'color1');\r\n * gui.addColor(palette, 'color2');\r\n * gui.addColor(palette, 'color3');\r\n * gui.addColor(palette, 'color4');\r\n */\r\n addColor: function(object, property) {\r\n return add(\r\n this,\r\n object,\r\n property,\r\n {\r\n color: true\r\n }\r\n );\r\n },\r\n\r\n /**\r\n * Adds a new custom controller to the GUI.\r\n *\r\n * @param object\r\n * @param property\r\n * @returns {Controller} The controller that was added to the GUI.\r\n * @instance\r\n *\r\n */\r\n addCustomController: function(object, property) {\r\n \treturn add(\r\n\t\t this,\r\n\t\t object,\r\n\t\t property,\r\n\t\t {\r\n\t\t \tcustom: true,\r\n\t\t \tfactoryArgs: Array.prototype.slice.call(arguments, 2)\r\n\t\t }\r\n\t\t);\r\n },\r\n\r\n \t/**\r\n * Removes the given controller from the GUI.\r\n * @param {Controller} controller\r\n * @instance\r\n */\r\n remove: function(controller) {\r\n // TODO listening?\r\n this.__ul.removeChild(controller.__li);\r\n this.__controllers.splice(this.__controllers.indexOf(controller), 1);\r\n const _this = this;\r\n common.defer(function() {\r\n _this.onResize();\r\n });\r\n },\r\n\r\n /**\r\n * Removes the root GUI from the document and unbinds all event listeners.\r\n * For subfolders, use `gui.removeFolder(folder)` instead.\r\n * @instance\r\n */\r\n destroy: function() {\r\n if (this.parent) {\r\n throw new Error(\r\n 'Only the root GUI should be removed with .destroy(). ' +\r\n 'For subfolders, use gui.removeFolder(folder) instead.'\r\n );\r\n }\r\n\r\n if (this.autoPlace) {\r\n autoPlaceContainer.removeChild(this.domElement);\r\n }\r\n\r\n const _this = this;\r\n common.each(this.__folders, function(subfolder) {\r\n _this.removeFolder(subfolder);\r\n });\r\n\r\n dom.unbind(window, 'keydown', GUI._keydownHandler, false);\r\n\r\n removeListeners(this);\r\n },\r\n\r\n /**\r\n * Creates a new subfolder GUI instance.\r\n * @param name\r\n * @returns {dat.gui.GUI} The new folder.\r\n * @throws {Error} if this GUI already has a folder by the specified\r\n * name\r\n * @instance\r\n */\r\n addFolder: function(name) {\r\n // We have to prevent collisions on names in order to have a key\r\n // by which to remember saved values\r\n if (this.__folders[name] !== undefined) {\r\n throw new Error('You already have a folder in this GUI by the' +\r\n ' name \"' + name + '\"');\r\n }\r\n\r\n const newGuiParams = { name: name, parent: this };\r\n\r\n // We need to pass down the autoPlace trait so that we can\r\n // attach event listeners to open/close folder actions to\r\n // ensure that a scrollbar appears if the window is too short.\r\n newGuiParams.autoPlace = this.autoPlace;\r\n\r\n // Do we have saved appearance data for this folder?\r\n if (this.load && // Anything loaded?\r\n this.load.folders && // Was my parent a dead-end?\r\n this.load.folders[name]) { // Did daddy remember me?\r\n // Start me closed if I was closed\r\n newGuiParams.closed = this.load.folders[name].closed;\r\n\r\n // Pass down the loaded data\r\n newGuiParams.load = this.load.folders[name];\r\n }\r\n\r\n const gui = new GUI(newGuiParams);\r\n this.__folders[name] = gui;\r\n\r\n const li = addRow(this, gui.domElement);\r\n dom.addClass(li, 'folder');\r\n return gui;\r\n },\r\n\r\n /**\r\n * Removes a subfolder GUI instance.\r\n * @param {dat.gui.GUI} folder The folder to remove.\r\n * @instance\r\n */\r\n removeFolder: function(folder) {\r\n this.__ul.removeChild(folder.domElement.parentElement);\r\n\r\n delete this.__folders[folder.name];\r\n\r\n // Do we have saved appearance data for this folder?\r\n if (this.load && // Anything loaded?\r\n this.load.folders && // Was my parent a dead-end?\r\n this.load.folders[folder.name]) {\r\n delete this.load.folders[folder.name];\r\n }\r\n\r\n removeListeners(folder);\r\n\r\n const _this = this;\r\n\r\n common.each(folder.__folders, function(subfolder) {\r\n folder.removeFolder(subfolder);\r\n });\r\n\r\n common.defer(function() {\r\n _this.onResize();\r\n });\r\n },\r\n\r\n /**\r\n * Opens the GUI.\r\n */\r\n open: function() {\r\n this.closed = false;\r\n },\r\n\r\n /**\r\n * Closes the GUI.\r\n */\r\n close: function() {\r\n this.closed = true;\r\n },\r\n\r\n /**\r\n * Hides the GUI.\r\n */\r\n hide: function() {\r\n this.domElement.style.display = 'none';\r\n },\r\n\r\n /**\r\n * Shows the GUI.\r\n */\r\n show: function() {\r\n this.domElement.style.display = '';\r\n },\r\n\r\n\r\n onResize: function() {\r\n // we debounce this function to prevent performance issues when rotating on tablet/mobile\r\n const root = this.getRoot();\r\n if (root.scrollable) {\r\n const top = dom.getOffset(root.__ul).top;\r\n let h = 0;\r\n\r\n common.each(root.__ul.childNodes, function(node) {\r\n if (!(root.autoPlace && node === root.__save_row)) {\r\n h += dom.getHeight(node);\r\n }\r\n });\r\n\r\n if (window.innerHeight - top - CLOSE_BUTTON_HEIGHT < h) {\r\n dom.addClass(root.domElement, GUI.CLASS_TOO_TALL);\r\n root.__ul.style.height = window.innerHeight - top - CLOSE_BUTTON_HEIGHT + 'px';\r\n } else {\r\n dom.removeClass(root.domElement, GUI.CLASS_TOO_TALL);\r\n root.__ul.style.height = 'auto';\r\n }\r\n }\r\n\r\n if (root.__resize_handle) {\r\n common.defer(function() {\r\n root.__resize_handle.style.height = root.__ul.offsetHeight + 'px';\r\n });\r\n }\r\n\r\n if (root.__closeButton) {\r\n root.__closeButton.style.width = root.width + 'px';\r\n }\r\n },\r\n\r\n onResizeDebounced: common.debounce(function() { this.onResize(); }, 50),\r\n\r\n /**\r\n * Mark objects for saving. The order of these objects cannot change as\r\n * the GUI grows. When remembering new objects, append them to the end\r\n * of the list.\r\n *\r\n * @param {...Object} objects\r\n * @throws {Error} if not called on a top level GUI.\r\n * @instance\r\n * @ignore\r\n */\r\n remember: function() {\r\n if (common.isUndefined(SAVE_DIALOGUE)) {\r\n SAVE_DIALOGUE = new CenteredDiv();\r\n SAVE_DIALOGUE.domElement.innerHTML = saveDialogueContents;\r\n }\r\n\r\n if (this.parent) {\r\n throw new Error('You can only call remember on a top level GUI.');\r\n }\r\n\r\n const _this = this;\r\n\r\n common.each(Array.prototype.slice.call(arguments), function(object) {\r\n if (_this.__rememberedObjects.length === 0) {\r\n addSaveMenu(_this);\r\n }\r\n if (_this.__rememberedObjects.indexOf(object) === -1) {\r\n _this.__rememberedObjects.push(object);\r\n }\r\n });\r\n\r\n if (this.autoPlace) {\r\n // Set save row width\r\n setWidth(this, this.width);\r\n }\r\n },\r\n\r\n /**\r\n * @returns {dat.gui.GUI} the topmost parent GUI of a nested GUI.\r\n * @instance\r\n */\r\n getRoot: function() {\r\n let gui = this;\r\n while (gui.parent) {\r\n gui = gui.parent;\r\n }\r\n return gui;\r\n },\r\n\r\n /**\r\n * @returns {Object} a JSON object representing the current state of\r\n * this GUI as well as its remembered properties.\r\n * @instance\r\n */\r\n getSaveObject: function() {\r\n const toReturn = this.load;\r\n toReturn.closed = this.closed;\r\n\r\n // Am I remembering any values?\r\n if (this.__rememberedObjects.length > 0) {\r\n toReturn.preset = this.preset;\r\n\r\n if (!toReturn.remembered) {\r\n toReturn.remembered = {};\r\n }\r\n\r\n toReturn.remembered[this.preset] = getCurrentPreset(this);\r\n }\r\n\r\n toReturn.folders = {};\r\n common.each(this.__folders, function(element, key) {\r\n toReturn.folders[key] = element.getSaveObject();\r\n });\r\n\r\n return toReturn;\r\n },\r\n\r\n save: function() {\r\n if (!this.load.remembered) {\r\n this.load.remembered = {};\r\n }\r\n\r\n this.load.remembered[this.preset] = getCurrentPreset(this);\r\n markPresetModified(this, false);\r\n this.saveToLocalStorageIfPossible();\r\n },\r\n\r\n saveAs: function(presetName) {\r\n if (!this.load.remembered) {\r\n // Retain default values upon first save\r\n this.load.remembered = {};\r\n this.load.remembered[DEFAULT_DEFAULT_PRESET_NAME] = getCurrentPreset(this, true);\r\n }\r\n\r\n this.load.remembered[presetName] = getCurrentPreset(this);\r\n this.preset = presetName;\r\n addPresetOption(this, presetName, true);\r\n this.saveToLocalStorageIfPossible();\r\n },\r\n\r\n revert: function(gui) {\r\n common.each(this.__controllers, function(controller) {\r\n // Make revert work on Default.\r\n if (!this.getRoot().load.remembered) {\r\n controller.setValue(controller.initialValue);\r\n } else {\r\n recallSavedValue(gui || this.getRoot(), controller);\r\n }\r\n\r\n // fire onFinishChange callback\r\n if (controller.__onFinishChange) {\r\n controller.__onFinishChange.call(controller, controller.getValue());\r\n }\r\n }, this);\r\n\r\n common.each(this.__folders, function(folder) {\r\n folder.revert(folder);\r\n });\r\n\r\n if (!gui) {\r\n markPresetModified(this.getRoot(), false);\r\n }\r\n },\r\n\r\n listen: function(controller) {\r\n const init = this.__listening.length === 0;\r\n this.__listening.push(controller);\r\n if (init) {\r\n updateDisplays(this.__listening);\r\n }\r\n },\r\n\r\n updateDisplay: function() {\r\n common.each(this.__controllers, function(controller) {\r\n controller.updateDisplay();\r\n });\r\n common.each(this.__folders, function(folder) {\r\n folder.updateDisplay();\r\n });\r\n }\r\n }\r\n);\r\n\r\n/**\r\n * Add a row to the end of the GUI or before another row.\r\n *\r\n * @param gui\r\n * @param [newDom] If specified, inserts the dom content in the new row\r\n * @param [liBefore] If specified, places the new row before another row\r\n *\r\n * @ignore\r\n */\r\nfunction addRow(gui, newDom, liBefore) {\r\n const li = document.createElement('li');\r\n if (newDom) {\r\n li.appendChild(newDom);\r\n }\r\n\r\n if (liBefore) {\r\n gui.__ul.insertBefore(li, liBefore);\r\n } else {\r\n gui.__ul.appendChild(li);\r\n }\r\n gui.onResize();\r\n return li;\r\n}\r\n\r\nfunction removeListeners(gui) {\r\n dom.unbind(window, 'resize', gui.__resizeHandler);\r\n\r\n if (gui.saveToLocalStorageIfPossible) {\r\n dom.unbind(window, 'unload', gui.saveToLocalStorageIfPossible);\r\n }\r\n}\r\n\r\nfunction markPresetModified(gui, modified) {\r\n const opt = gui.__preset_select[gui.__preset_select.selectedIndex];\r\n\r\n if (modified) {\r\n opt.innerHTML = opt.value + '*';\r\n } else {\r\n opt.innerHTML = opt.value;\r\n }\r\n}\r\n\r\nfunction augmentController(gui, li, controller) {\r\n controller.__li = li;\r\n controller.__gui = gui;\r\n\r\n common.extend(controller, /** @lends Controller.prototype */ {\r\n /**\r\n * @param {Array|Object} options\r\n * @return {Controller}\r\n */\r\n options: function(options) {\r\n if (arguments.length > 1) {\r\n const nextSibling = controller.__li.nextElementSibling;\r\n controller.remove();\r\n\r\n return add(\r\n gui,\r\n controller.object,\r\n controller.property,\r\n {\r\n before: nextSibling,\r\n factoryArgs: [common.toArray(arguments)]\r\n }\r\n );\r\n }\r\n\r\n if (common.isArray(options) || common.isObject(options)) {\r\n const nextSibling = controller.__li.nextElementSibling;\r\n controller.remove();\r\n\r\n return add(\r\n gui,\r\n controller.object,\r\n controller.property,\r\n {\r\n before: nextSibling,\r\n factoryArgs: [options]\r\n }\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Sets the name of the controller.\r\n * @param {string} name\r\n * @return {Controller}\r\n */\r\n name: function(name) {\r\n controller.__li.firstElementChild.firstElementChild.innerHTML = name;\r\n return controller;\r\n },\r\n\r\n /**\r\n * Sets controller to listen for changes on its underlying object.\r\n * @return {Controller}\r\n */\r\n listen: function() {\r\n controller.__gui.listen(controller);\r\n return controller;\r\n },\r\n\r\n /**\r\n * Removes the controller from its parent GUI.\r\n * @return {Controller}\r\n */\r\n remove: function() {\r\n controller.__gui.remove(controller);\r\n return controller;\r\n }\r\n });\r\n\r\n // All sliders should be accompanied by a box.\r\n if (controller instanceof NumberControllerSlider) {\r\n const box = new NumberControllerBox(controller.object, controller.property,\r\n { min: controller.__min, max: controller.__max, step: controller.__step });\r\n\r\n common.each(['updateDisplay', 'onChange', 'onFinishChange', 'step', 'min', 'max'], function(method) {\r\n const pc = controller[method];\r\n const pb = box[method];\r\n controller[method] = box[method] = function() {\r\n const args = Array.prototype.slice.call(arguments);\r\n pb.apply(box, args);\r\n return pc.apply(controller, args);\r\n };\r\n });\r\n\r\n dom.addClass(li, 'has-slider');\r\n controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild);\r\n } else if (controller instanceof NumberControllerBox) {\r\n const r = function(returned) {\r\n // Have we defined both boundaries?\r\n if (common.isNumber(controller.__min) && common.isNumber(controller.__max)) {\r\n // Well, then lets just replace this with a slider.\r\n\r\n // lets remember if the old controller had a specific name or was listening\r\n const oldName = controller.__li.firstElementChild.firstElementChild.innerHTML;\r\n const wasListening = controller.__gui.__listening.indexOf(controller) > -1;\r\n\r\n controller.remove();\r\n const newController = add(\r\n gui,\r\n controller.object,\r\n controller.property,\r\n {\r\n before: controller.__li.nextElementSibling,\r\n factoryArgs: [controller.__min, controller.__max, controller.__step]\r\n });\r\n\r\n newController.name(oldName);\r\n if (wasListening) newController.listen();\r\n\r\n return newController;\r\n }\r\n\r\n return returned;\r\n };\r\n\r\n controller.min = common.compose(r, controller.min);\r\n controller.max = common.compose(r, controller.max);\r\n } else if (controller instanceof BooleanController) {\r\n dom.bind(li, 'click', function() {\r\n dom.fakeEvent(controller.__checkbox, 'click');\r\n });\r\n\r\n dom.bind(controller.__checkbox, 'click', function(e) {\r\n e.stopPropagation(); // Prevents double-toggle\r\n });\r\n } else if (controller instanceof FunctionController) {\r\n dom.bind(li, 'click', function() {\r\n dom.fakeEvent(controller.__button, 'click');\r\n });\r\n\r\n dom.bind(li, 'mouseover', function() {\r\n dom.addClass(controller.__button, 'hover');\r\n });\r\n\r\n dom.bind(li, 'mouseout', function() {\r\n dom.removeClass(controller.__button, 'hover');\r\n });\r\n } else if (controller instanceof ColorController) {\r\n dom.addClass(li, 'color');\r\n controller.updateDisplay = common.compose(function(val) {\r\n li.style.borderLeftColor = controller.__color.toString();\r\n return val;\r\n }, controller.updateDisplay);\r\n\r\n controller.updateDisplay();\r\n }\r\n\r\n controller.setValue = common.compose(function(val) {\r\n if (gui.getRoot().__preset_select && controller.isModified()) {\r\n markPresetModified(gui.getRoot(), true);\r\n }\r\n\r\n return val;\r\n }, controller.setValue);\r\n}\r\n\r\nfunction recallSavedValue(gui, controller) {\r\n // Find the topmost GUI, that's where remembered objects live.\r\n const root = gui.getRoot();\r\n\r\n // Does the object we're controlling match anything we've been told to\r\n // remember?\r\n const matchedIndex = root.__rememberedObjects.indexOf(controller.object);\r\n\r\n // Why yes, it does!\r\n if (matchedIndex !== -1) {\r\n // Let me fetch a map of controllers for thcommon.isObject.\r\n let controllerMap = root.__rememberedObjectIndecesToControllers[matchedIndex];\r\n\r\n // Ohp, I believe this is the first controller we've created for this\r\n // object. Lets make the map fresh.\r\n if (controllerMap === undefined) {\r\n controllerMap = {};\r\n root.__rememberedObjectIndecesToControllers[matchedIndex] =\r\n controllerMap;\r\n }\r\n\r\n // Keep track of this controller\r\n controllerMap[controller.property] = controller;\r\n\r\n // Okay, now have we saved any values for this controller?\r\n if (root.load && root.load.remembered) {\r\n const presetMap = root.load.remembered;\r\n\r\n // Which preset are we trying to load?\r\n let preset;\r\n\r\n if (presetMap[gui.preset]) {\r\n preset = presetMap[gui.preset];\r\n } else if (presetMap[DEFAULT_DEFAULT_PRESET_NAME]) {\r\n // Uhh, you can have the default instead?\r\n preset = presetMap[DEFAULT_DEFAULT_PRESET_NAME];\r\n } else {\r\n // Nada.\r\n return;\r\n }\r\n\r\n // Did the loaded object remember thcommon.isObject? && Did we remember this particular property?\r\n if (preset[matchedIndex] && preset[matchedIndex][controller.property] !== undefined) {\r\n // We did remember something for this guy ...\r\n const value = preset[matchedIndex][controller.property];\r\n\r\n // And that's what it is.\r\n controller.initialValue = value;\r\n controller.setValue(value);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction add(gui, object, property, params) {\r\n if (!object instanceof CustomController && !params.custom && (object[property] === undefined)) {\r\n throw new Error(`Object \"${object}\" has no property \"${property}\"`);\r\n }\r\n\r\n let controller;\r\n\r\n if (params.color) {\r\n controller = new ColorController(object, property);\r\n } else if(object instanceof CustomController && ( property === undefined )){\r\n \tcontroller = object;\r\n } else if (!(object instanceof CustomController) && params.custom && (object[property] === undefined)) {\r\n \tcontroller = new CustomController(object, property);\r\n }else {\r\n \tconst factoryArgs = object instanceof CustomController ?\r\n [property].concat(params.factoryArgs) : [object, property].concat(params.factoryArgs);\r\n controller = ControllerFactory.apply(gui, factoryArgs);\r\n }\r\n\r\n if (params.before instanceof Controller) {\r\n params.before = params.before.__li;\r\n }\r\n\r\n recallSavedValue(gui, controller);\r\n\r\n dom.addClass(controller.domElement, 'c');\r\n\r\n const container = document.createElement('div');\r\n\r\n const name = params.custom && ( controller instanceof CustomController === false ) ?\r\n ( object instanceof CustomController ? object.domElement : new CustomController(object).domElement ) : document.createElement('span');\r\n if (!params.custom)\r\n \tname.innerHTML = controller.property;\r\n dom.addClass(name, 'property-name');\r\n container.appendChild(name);\r\n\r\n container.appendChild(controller.domElement);\r\n\r\n const li = addRow(gui, container, params.before);\r\n\r\n dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);\r\n if (controller instanceof ColorController) {\r\n dom.addClass(li, 'color');\r\n } else {\r\n dom.addClass(li, typeof controller.getValue());\r\n }\r\n\r\n augmentController(gui, li, controller);\r\n\r\n gui.__controllers.push(controller);\r\n\r\n return controller;\r\n}\r\n\r\nfunction getLocalStorageHash(gui, key) {\r\n // TODO how does this deal with multiple GUI's?\r\n return document.location.href + '.' + key;\r\n}\r\n\r\nfunction addPresetOption(gui, name, setSelected) {\r\n const opt = document.createElement('option');\r\n opt.innerHTML = name;\r\n opt.value = name;\r\n gui.__preset_select.appendChild(opt);\r\n if (setSelected) {\r\n gui.__preset_select.selectedIndex = gui.__preset_select.length - 1;\r\n }\r\n}\r\n\r\nfunction showHideExplain(gui, explain) {\r\n explain.style.display = gui.useLocalStorage ? 'block' : 'none';\r\n}\r\n\r\nfunction addSaveMenu(gui) {\r\n const div = gui.__save_row = document.createElement('li');\r\n\r\n dom.addClass(gui.domElement, 'has-save');\r\n\r\n gui.__ul.insertBefore(div, gui.__ul.firstChild);\r\n\r\n dom.addClass(div, 'save-row');\r\n\r\n const gears = document.createElement('span');\r\n gears.innerHTML = ' ';\r\n dom.addClass(gears, 'button gears');\r\n\r\n // TODO replace with FunctionController\r\n const button = document.createElement('span');\r\n button.innerHTML = 'Save';\r\n dom.addClass(button, 'button');\r\n dom.addClass(button, 'save');\r\n\r\n const button2 = document.createElement('span');\r\n button2.innerHTML = 'New';\r\n dom.addClass(button2, 'button');\r\n dom.addClass(button2, 'save-as');\r\n\r\n const button3 = document.createElement('span');\r\n button3.innerHTML = 'Revert';\r\n dom.addClass(button3, 'button');\r\n dom.addClass(button3, 'revert');\r\n\r\n const select = gui.__preset_select = document.createElement('select');\r\n\r\n if (gui.load && gui.load.remembered) {\r\n common.each(gui.load.remembered, function(value, key) {\r\n addPresetOption(gui, key, key === gui.preset);\r\n });\r\n } else {\r\n addPresetOption(gui, DEFAULT_DEFAULT_PRESET_NAME, false);\r\n }\r\n\r\n dom.bind(select, 'change', function() {\r\n for (let index = 0; index < gui.__preset_select.length; index++) {\r\n gui.__preset_select[index].innerHTML = gui.__preset_select[index].value;\r\n }\r\n\r\n gui.preset = this.value;\r\n });\r\n\r\n div.appendChild(select);\r\n div.appendChild(gears);\r\n div.appendChild(button);\r\n div.appendChild(button2);\r\n div.appendChild(button3);\r\n\r\n if (SUPPORTS_LOCAL_STORAGE) {\r\n const explain = document.getElementById('dg-local-explain');\r\n const localStorageCheckBox = document.getElementById('dg-local-storage');\r\n const saveLocally = document.getElementById('dg-save-locally');\r\n\r\n saveLocally.style.display = 'block';\r\n\r\n if (localStorage.getItem(getLocalStorageHash(gui, 'isLocal')) === 'true') {\r\n localStorageCheckBox.setAttribute('checked', 'checked');\r\n }\r\n\r\n showHideExplain(gui, explain);\r\n\r\n // TODO: Use a boolean controller, fool!\r\n dom.bind(localStorageCheckBox, 'change', function() {\r\n gui.useLocalStorage = !gui.useLocalStorage;\r\n showHideExplain(gui, explain);\r\n });\r\n }\r\n\r\n const newConstructorTextArea = document.getElementById('dg-new-constructor');\r\n\r\n dom.bind(newConstructorTextArea, 'keydown', function(e) {\r\n if (e.metaKey && (e.which === 67 || e.keyCode === 67)) {\r\n SAVE_DIALOGUE.hide();\r\n }\r\n });\r\n\r\n dom.bind(gears, 'click', function() {\r\n newConstructorTextArea.innerHTML = JSON.stringify(gui.getSaveObject(), undefined, 2);\r\n SAVE_DIALOGUE.show();\r\n newConstructorTextArea.focus();\r\n newConstructorTextArea.select();\r\n });\r\n\r\n dom.bind(button, 'click', function() {\r\n gui.save();\r\n });\r\n\r\n dom.bind(button2, 'click', function() {\r\n const presetName = prompt('Enter a new preset name.');\r\n if (presetName) {\r\n gui.saveAs(presetName);\r\n }\r\n });\r\n\r\n dom.bind(button3, 'click', function() {\r\n gui.revert();\r\n });\r\n\r\n // div.appendChild(button2);\r\n}\r\n\r\nfunction addResizeHandle(gui) {\r\n let pmouseX;\r\n\r\n gui.__resize_handle = document.createElement('div');\r\n\r\n common.extend(gui.__resize_handle.style, {\r\n\r\n width: '6px',\r\n marginLeft: '-3px',\r\n height: '200px',\r\n cursor: 'ew-resize',\r\n position: 'absolute'\r\n // border: '1px solid blue'\r\n\r\n });\r\n\r\n function drag(e) {\r\n e.preventDefault();\r\n\r\n gui.width += pmouseX - e.clientX;\r\n gui.onResize();\r\n pmouseX = e.clientX;\r\n\r\n return false;\r\n }\r\n\r\n function dragStop() {\r\n dom.removeClass(gui.__closeButton, GUI.CLASS_DRAG);\r\n dom.unbind(window, 'mousemove', drag);\r\n dom.unbind(window, 'mouseup', dragStop);\r\n }\r\n\r\n function dragStart(e) {\r\n e.preventDefault();\r\n\r\n pmouseX = e.clientX;\r\n\r\n dom.addClass(gui.__closeButton, GUI.CLASS_DRAG);\r\n dom.bind(window, 'mousemove', drag);\r\n dom.bind(window, 'mouseup', dragStop);\r\n\r\n return false;\r\n }\r\n\r\n dom.bind(gui.__resize_handle, 'mousedown', dragStart);\r\n dom.bind(gui.__closeButton, 'mousedown', dragStart);\r\n\r\n gui.domElement.insertBefore(gui.__resize_handle, gui.domElement.firstElementChild);\r\n}\r\n\r\nfunction setWidth(gui, w) {\r\n gui.domElement.style.width = w + 'px';\r\n // Auto placed save-rows are position fixed, so we have to\r\n // set the width manually if we want it to bleed to the edge\r\n if (gui.__save_row && gui.autoPlace) {\r\n gui.__save_row.style.width = w + 'px';\r\n }\r\n if (gui.__closeButton) {\r\n gui.__closeButton.style.width = w + 'px';\r\n }\r\n}\r\n\r\nfunction getCurrentPreset(gui, useInitialValues) {\r\n const toReturn = {};\r\n\r\n // For each object I'm remembering\r\n common.each(gui.__rememberedObjects, function(val, index) {\r\n const savedValues = {};\r\n\r\n // The controllers I've made for thcommon.isObject by property\r\n const controllerMap =\r\n gui.__rememberedObjectIndecesToControllers[index];\r\n\r\n // Remember each value for each property\r\n common.each(controllerMap, function(controller, property) {\r\n savedValues[property] = useInitialValues ? controller.initialValue : controller.getValue();\r\n });\r\n\r\n // Save the values for thcommon.isObject\r\n toReturn[index] = savedValues;\r\n });\r\n\r\n return toReturn;\r\n}\r\n\r\nfunction setPresetSelectIndex(gui) {\r\n for (let index = 0; index < gui.__preset_select.length; index++) {\r\n if (gui.__preset_select[index].value === gui.preset) {\r\n gui.__preset_select.selectedIndex = index;\r\n }\r\n }\r\n}\r\n\r\nfunction updateDisplays(controllerArray) {\r\n if (controllerArray.length !== 0) {\r\n requestAnimationFrame.call(window, function() {\r\n updateDisplays(controllerArray);\r\n });\r\n }\r\n\r\n common.each(controllerArray, function(c) {\r\n c.updateDisplay();\r\n });\r\n}\r\n\r\nexport default GUI;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Color from './color/Color';\r\nimport math from './color/math';\r\nimport interpret from './color/interpret';\r\n\r\nimport Controller from './controllers/Controller';\r\nimport BooleanController from './controllers/BooleanController';\r\nimport OptionController from './controllers/OptionController';\r\nimport StringController from './controllers/StringController';\r\nimport NumberController from './controllers/NumberController';\r\nimport NumberControllerBox from './controllers/NumberControllerBox';\r\nimport NumberControllerSlider from './controllers/NumberControllerSlider';\r\nimport FunctionController from './controllers/FunctionController';\r\nimport ColorController from './controllers/ColorController';\r\nimport CustomController from './controllers/CustomController';\r\n\r\nimport domImport from './dom/dom';\r\nimport GUIImport from './gui/GUI';\r\n\r\nexport const color = {\r\n Color: Color,\r\n math: math,\r\n interpret: interpret\r\n};\r\n\r\nexport const controllers = {\r\n Controller: Controller,\r\n BooleanController: BooleanController,\r\n OptionController: OptionController,\r\n StringController: StringController,\r\n NumberController: NumberController,\r\n NumberControllerBox: NumberControllerBox,\r\n NumberControllerSlider: NumberControllerSlider,\r\n FunctionController: FunctionController,\r\n ColorController: ColorController,\r\n CustomController: CustomController\r\n};\r\n\r\nexport const dom = { dom: domImport };\r\n\r\nexport const gui = { GUI: GUIImport };\r\n\r\nexport const GUI = GUIImport;\r\n\r\nexport default {\r\n color,\r\n controllers,\r\n dom,\r\n gui,\r\n GUI\r\n};\r\n"],"names":["color","forceCSSHex","colorFormat","__state","conversionName","toString","r","Math","round","g","b","a","h","s","toFixed","v","str","hex","length","ARR_EACH","Array","prototype","forEach","ARR_SLICE","slice","Common","target","each","call","arguments","obj","keys","isObject","Object","key","isUndefined","bind","toCall","args","i","apply","itr","scope","l","BREAK","fnc","func","threshold","callImmediately","timeout","delayed","callNow","setTimeout","toArray","undefined","isNaN","isArray","constructor","INTERPRETATIONS","common","isString","original","test","match","parseInt","parseFloat","isNumber","result","toReturn","interpret","family","litmus","conversions","conversion","read","tmpComponent","ColorMath","hi","floor","f","p","q","t","c","min","max","delta","NaN","hex_with_component","componentIndex","value","Color","Error","colorToString","write","defineRGBComponent","component","componentHexIndex","defineProperty","space","recalculateRGB","defineHSVComponent","recalculateHSV","math","component_from_hex","extend","hsv_to_rgb","rgb_to_hsv","COMPONENTS","rgb_to_hex","Controller","object","property","initialValue","domElement","document","createElement","__onChange","__onFinishChange","newValue","updateDisplay","getValue","EVENT_MAP","EVENT_MAP_INV","k","e","CSS_VALUE_PIXELS","cssValueToPixels","val","isNull","dom","elem","selectable","style","onselectstart","MozUserSelect","KhtmlUserSelect","unselectable","hor","vert","vertical","horizontal","position","left","right","top","bottom","eventType","pars","aux","params","className","evt","createEvent","clientX","x","clientY","y","initMouseEvent","bubbles","cancelable","window","clickCount","init","initKeyboardEvent","initKeyEvent","defaults","ctrlKey","altKey","shiftKey","metaKey","keyCode","charCode","initEvent","dispatchEvent","event","newBool","bool","addEventListener","attachEvent","removeEventListener","detachEvent","classes","split","indexOf","push","join","replace","removeAttribute","index","splice","RegExp","getComputedStyle","width","height","el","offset","offsetParent","offsetLeft","offsetTop","activeElement","type","href","BooleanController","_this","__prev","__checkbox","setAttribute","onChange","setValue","appendChild","checked","OptionController","opts","options","__select","map","element","opt","innerHTML","desiredValue","selectedIndex","isActive","StringController","__input","onBlur","blur","numDecimals","_x","NumberController","_params","__min","__max","__step","step","__impliedStep","pow","log","abs","LN10","__precision","_v","minValue","maxValue","stepValue","roundToDecimal","decimals","tenTo","NumberControllerBox","__truncationSuspended","prevY","attempted","onFinish","onMouseDrag","diff","onMouseUp","unbind","onMouseDown","i1","i2","o1","o2","NumberControllerSlider","__background","__foreground","onTouchStart","addClass","preventDefault","bgRect","getBoundingClientRect","touches","onTouchMove","onTouchEnd","pct","FunctionController","text","__button","fire","ColorController","__color","__temp","makeSelectable","__selector","__saturation_field","__field_knob","__field_knob_border","__hue_knob","__hue_field","__input_textShadow","removeClass","valueField","fieldDown","fieldDownH","setSV","fieldUpSV","setH","fieldUpH","toOriginal","fieldRect","mismatch","flip","_flip","toHexString","marginTop","vendors","linearGradient","background","vendor","cssText","hueGradient","CustomController","css","url","indoc","doc","link","rel","getElementsByTagName","cssContent","injected","head","saveDialogContents","ControllerFactory","isFunction","isBoolean","requestAnimationFrame","callback","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","CenteredDiv","backgroundElement","makeFullscreen","body","hide","display","opacity","webkitTransform","layout","defer","innerWidth","getWidth","innerHeight","getHeight","inject","styleSheet","CSS_NAMESPACE","HIDE_KEY_CODE","CLOSE_BUTTON_HEIGHT","DEFAULT_DEFAULT_PRESET_NAME","SUPPORTS_LOCAL_STORAGE","localStorage","SAVE_DIALOGUE","autoPlaceVirgin","autoPlaceContainer","hideableGuis","GUI","__ul","__folders","__controllers","__rememberedObjects","__rememberedObjectIndecesToControllers","__listening","DEFAULT_WIDTH","autoPlace","load","preset","parent","hideable","resizable","scrollable","useLocalStorage","getItem","getLocalStorageHash","saveToLocalStorage","titleRow","defineProperties","closeOnTop","getRoot","revert","name","closed","CLASS_CLOSED","onResize","__closeButton","TEXT_OPEN","TEXT_CLOSED","setItem","CLASS_MAIN","savedGui","JSON","parse","CLASS_CLOSE_BUTTON","CLASS_CLOSE_TOP","insertBefore","childNodes","CLASS_CLOSE_BOTTOM","titleRowName","createTextNode","addRow","onClickTitle","CLASS_AUTO_PLACE_CONTAINER","CLASS_AUTO_PLACE","__resizeHandler","onResizeDebounced","stringify","getSaveObject","saveToLocalStorageIfPossible","resetWidth","root","toggleHide","gui","CLASS_CONTROLLER_ROW","CLASS_TOO_TALL","CLASS_DRAG","_keydownHandler","which","add","controller","removeChild","__li","subfolder","removeFolder","newGuiParams","folders","li","folder","parentElement","getOffset","node","__save_row","__resize_handle","offsetHeight","debounce","saveDialogueContents","remembered","getCurrentPreset","presetName","newDom","liBefore","removeListeners","markPresetModified","modified","__preset_select","augmentController","__gui","nextSibling","nextElementSibling","remove","firstElementChild","listen","box","method","pc","pb","returned","oldName","wasListening","newController","compose","fakeEvent","stopPropagation","borderLeftColor","isModified","recallSavedValue","matchedIndex","controllerMap","presetMap","custom","factoryArgs","concat","before","container","location","addPresetOption","setSelected","showHideExplain","explain","addSaveMenu","div","firstChild","gears","button","button2","button3","select","getElementById","localStorageCheckBox","saveLocally","newConstructorTextArea","show","focus","save","prompt","saveAs","addResizeHandle","pmouseX","drag","dragStop","dragStart","setWidth","w","useInitialValues","savedValues","setPresetSelectIndex","updateDisplays","controllerArray","controllers","domImport","GUIImport"],"mappings":"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"}
\ No newline at end of file
diff --git a/build/dat.gui.min.js b/build/dat.gui.min.js
deleted file mode 100644
index 6c00ec1..0000000
--- a/build/dat.gui.min.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * dat-gui JavaScript Controller Library
- * http://code.google.com/p/dat-gui
- *
- * Copyright 2011 Data Arts Team, Google Creative Lab
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- */
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.dat={})}(this,function(e){"use strict";function t(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),s=e.a,a=Math.round(e.h),l=e.s.toFixed(1),d=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var c=e.hex.toString(16);c.length<6;)c="0"+c;return"#"+c}return"CSS_RGB"===n?"rgb("+o+","+i+","+r+")":"CSS_RGBA"===n?"rgba("+o+","+i+","+r+","+s+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+s+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+s+"}":"HSV_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+"}":"HSVA_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+",a:"+s+"}":"unknown format"}function n(e,t,n){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space?this.__state[t]:(I.recalculateRGB(this,t,n),this.__state[t])},set:function(e){"RGB"!==this.__state.space&&(I.recalculateRGB(this,t,n),this.__state.space="RGB"),this.__state[t]=e}})}function o(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space?this.__state[t]:(I.recalculateHSV(this),this.__state[t])},set:function(e){"HSV"!==this.__state.space&&(I.recalculateHSV(this),this.__state.space="HSV"),this.__state[t]=e}})}function i(e){if("0"===e||S.isUndefined(e))return 0;var t=e.match(U);return S.isNull(t)?0:parseFloat(t[1])}function r(e){var t=e.toString();return t.indexOf(".")>-1?t.length-t.indexOf(".")-1:0}function s(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}function a(e,t,n,o,i){return o+(e-t)/(n-t)*(i-o)}function l(e,t,n,o){e.style.background="",S.each(ee,function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "})}function d(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}function c(e,t,n){var o=document.createElement("li");return t&&o.appendChild(t),n?e.__ul.insertBefore(o,n):e.__ul.appendChild(o),e.onResize(),o}function u(e){X.unbind(window,"resize",e.__resizeHandler),e.saveToLocalStorageIfPossible&&X.unbind(window,"unload",e.saveToLocalStorageIfPossible)}function _(e,t){var n=e.__preset_select[e.__preset_select.selectedIndex];n.innerHTML=t?n.value+"*":n.value}function h(e,t,n){if(n.__li=t,n.__gui=e,S.extend(n,{options:function(t){if(arguments.length>1){var o=n.__li.nextElementSibling;return n.remove(),f(e,n.object,n.property,{before:o,factoryArgs:[S.toArray(arguments)]})}if(S.isArray(t)||S.isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),f(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){return n.__gui.remove(n),n}}),n instanceof q){var o=new Q(n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});S.each(["updateDisplay","onChange","onFinishChange","step","min","max"],function(e){var t=n[e],i=o[e];n[e]=o[e]=function(){var e=Array.prototype.slice.call(arguments);return i.apply(o,e),t.apply(n,e)}}),X.addClass(t,"has-slider"),n.domElement.insertBefore(o.domElement,n.domElement.firstElementChild)}else if(n instanceof Q){var i=function(t){if(S.isNumber(n.__min)&&S.isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=f(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=S.compose(i,n.min),n.max=S.compose(i,n.max)}else n instanceof K?(X.bind(t,"click",function(){X.fakeEvent(n.__checkbox,"click")}),X.bind(n.__checkbox,"click",function(e){e.stopPropagation()})):n instanceof Z?(X.bind(t,"click",function(){X.fakeEvent(n.__button,"click")}),X.bind(t,"mouseover",function(){X.addClass(n.__button,"hover")}),X.bind(t,"mouseout",function(){X.removeClass(n.__button,"hover")})):n instanceof $&&(X.addClass(t,"color"),n.updateDisplay=S.compose(function(e){return t.style.borderLeftColor=n.__color.toString(),e},n.updateDisplay),n.updateDisplay());n.setValue=S.compose(function(t){return e.getRoot().__preset_select&&n.isModified()&&_(e.getRoot(),!0),t},n.setValue)}function p(e,t){var n=e.getRoot(),o=n.__rememberedObjects.indexOf(t.object);if(-1!==o){var i=n.__rememberedObjectIndecesToControllers[o];if(void 0===i&&(i={},n.__rememberedObjectIndecesToControllers[o]=i),i[t.property]=t,n.load&&n.load.remembered){var r=n.load.remembered,s=void 0;if(r[e.preset])s=r[e.preset];else{if(!r[ae])return;s=r[ae]}if(s[o]&&void 0!==s[o][t.property]){var a=s[o][t.property];t.initialValue=a,t.setValue(a)}}}}function f(e,t,n,o){if(!t instanceof te&&!o.custom&&void 0===t[n])throw new Error('Object "'+t+'" has no property "'+n+'"');var i=void 0;if(o.color)i=new $(t,n);else if(t instanceof te&&void 0===n)i=t;else if(t instanceof te||!o.custom||void 0!==t[n]){var r=t instanceof te?[n].concat(o.factoryArgs):[t,n].concat(o.factoryArgs);i=oe.apply(e,r)}else i=new te(t,n);o.before instanceof z&&(o.before=o.before.__li),p(e,i),X.addClass(i.domElement,"c");var s=document.createElement("div"),a=o.custom&&i instanceof te==!1?t instanceof te?t.domElement:new te(t).domElement:document.createElement("span");o.custom||(a.innerHTML=i.property),X.addClass(a,"property-name"),s.appendChild(a),s.appendChild(i.domElement);var l=c(e,s,o.before);return X.addClass(l,pe.CLASS_CONTROLLER_ROW),i instanceof $?X.addClass(l,"color"):X.addClass(l,H(i.getValue())),h(e,l,i),e.__controllers.push(i),i}function m(e,t){return document.location.href+"."+t}function g(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function b(e,t){t.style.display=e.useLocalStorage?"block":"none"}function v(e){var t=e.__save_row=document.createElement("li");X.addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),X.addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",X.addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",X.addClass(o,"button"),X.addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",X.addClass(i,"button"),X.addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",X.addClass(r,"button"),X.addClass(r,"revert");var s=e.__preset_select=document.createElement("select");if(e.load&&e.load.remembered?S.each(e.load.remembered,function(t,n){g(e,n,n===e.preset)}):g(e,ae,!1),X.bind(s,"change",function(){for(var t=0;tGUI
\'s constructor:\n\n \n\n localStorage
on exit.\n\n localStorage
will\n override those passed to dat.GUI
\'s constructor. This makes it\n easier to work incrementally, but localStorage
is fragile,\n and your friends may not see the same values you do.\n\n GUI
's constructor:\n\n \n\n localStorage
on exit.\n\n localStorage
will\n override those passed to dat.GUI
's constructor. This makes it\n easier to work incrementally, but localStorage
is fragile,\n and your friends may not see the same values you do.\n\n object[property]
\r\n *\r\n * @param {Object} newValue The new value of object[property]
\r\n */\r\n setValue(newValue) {\r\n this.object[this.property] = newValue;\r\n if (this.__onChange) {\r\n this.__onChange.call(this, newValue);\r\n }\r\n\r\n this.updateDisplay();\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets the value of object[property]
\r\n *\r\n * @returns {Object} The current value of object[property]
\r\n */\r\n getValue() {\r\n return this.object[this.property];\r\n }\r\n\r\n /**\r\n * Refreshes the visual display of a Controller in order to keep sync\r\n * with the object's current value.\r\n * @returns {Controller} this\r\n */\r\n updateDisplay() {\r\n return this;\r\n }\r\n\r\n /**\r\n * @returns {Boolean} true if the value has deviated from initialValue\r\n */\r\n isModified() {\r\n return this.initialValue !== this.getValue();\r\n }\r\n}\r\n\r\nexport default Controller;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport common from '../utils/common';\r\n\r\nconst EVENT_MAP = {\r\n HTMLEvents: ['change'],\r\n MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'],\r\n KeyboardEvents: ['keydown']\r\n};\r\n\r\nconst EVENT_MAP_INV = {};\r\ncommon.each(EVENT_MAP, function(v, k) {\r\n common.each(v, function(e) {\r\n EVENT_MAP_INV[e] = k;\r\n });\r\n});\r\n\r\nconst CSS_VALUE_PIXELS = /(\\d+(\\.\\d+)?)px/;\r\n\r\nfunction cssValueToPixels(val) {\r\n if (val === '0' || common.isUndefined(val)) {\r\n return 0;\r\n }\r\n\r\n const match = val.match(CSS_VALUE_PIXELS);\r\n\r\n if (!common.isNull(match)) {\r\n return parseFloat(match[1]);\r\n }\r\n\r\n // TODO ...ems? %?\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * @namespace\r\n * @member dat.dom\r\n */\r\nconst dom = {\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param selectable\r\n */\r\n makeSelectable: function(elem, selectable) {\r\n if (elem === undefined || elem.style === undefined) return;\r\n\r\n elem.onselectstart = selectable ? function() {\r\n return false;\r\n } : function() {\r\n };\r\n\r\n elem.style.MozUserSelect = selectable ? 'auto' : 'none';\r\n elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';\r\n elem.unselectable = selectable ? 'on' : 'off';\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param horizontal\r\n * @param vert\r\n */\r\n makeFullscreen: function(elem, hor, vert) {\r\n let vertical = vert;\r\n let horizontal = hor;\r\n\r\n if (common.isUndefined(horizontal)) {\r\n horizontal = true;\r\n }\r\n\r\n if (common.isUndefined(vertical)) {\r\n vertical = true;\r\n }\r\n\r\n elem.style.position = 'absolute';\r\n\r\n if (horizontal) {\r\n elem.style.left = 0;\r\n elem.style.right = 0;\r\n }\r\n if (vertical) {\r\n elem.style.top = 0;\r\n elem.style.bottom = 0;\r\n }\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param eventType\r\n * @param params\r\n */\r\n fakeEvent: function(elem, eventType, pars, aux) {\r\n const params = pars || {};\r\n const className = EVENT_MAP_INV[eventType];\r\n if (!className) {\r\n throw new Error('Event type ' + eventType + ' not supported.');\r\n }\r\n const evt = document.createEvent(className);\r\n switch (className) {\r\n case 'MouseEvents':\r\n {\r\n const clientX = params.x || params.clientX || 0;\r\n const clientY = params.y || params.clientY || 0;\r\n evt.initMouseEvent(eventType, params.bubbles || false,\r\n params.cancelable || true, window, params.clickCount || 1,\r\n 0, // screen X\r\n 0, // screen Y\r\n clientX, // client X\r\n clientY, // client Y\r\n false, false, false, false, 0, null);\r\n break;\r\n }\r\n case 'KeyboardEvents':\r\n {\r\n const init = evt.initKeyboardEvent || evt.initKeyEvent; // webkit || moz\r\n common.defaults(params, {\r\n cancelable: true,\r\n ctrlKey: false,\r\n altKey: false,\r\n shiftKey: false,\r\n metaKey: false,\r\n keyCode: undefined,\r\n charCode: undefined\r\n });\r\n init(eventType, params.bubbles || false,\r\n params.cancelable, window,\r\n params.ctrlKey, params.altKey,\r\n params.shiftKey, params.metaKey,\r\n params.keyCode, params.charCode);\r\n break;\r\n }\r\n default:\r\n {\r\n evt.initEvent(eventType, params.bubbles || false, params.cancelable || true);\r\n break;\r\n }\r\n }\r\n common.defaults(evt, aux);\r\n elem.dispatchEvent(evt);\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param event\r\n * @param func\r\n * @param bool\r\n */\r\n bind: function(elem, event, func, newBool) {\r\n const bool = newBool || false;\r\n if (elem.addEventListener) {\r\n elem.addEventListener(event, func, bool);\r\n } else if (elem.attachEvent) {\r\n elem.attachEvent('on' + event, func);\r\n }\r\n return dom;\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param event\r\n * @param func\r\n * @param bool\r\n */\r\n unbind: function(elem, event, func, newBool) {\r\n const bool = newBool || false;\r\n if (elem.removeEventListener) {\r\n elem.removeEventListener(event, func, bool);\r\n } else if (elem.detachEvent) {\r\n elem.detachEvent('on' + event, func);\r\n }\r\n return dom;\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param className\r\n */\r\n addClass: function(elem, className) {\r\n if (elem.className === undefined) {\r\n elem.className = className;\r\n } else if (elem.className !== className) {\r\n const classes = elem.className.split(/ +/);\r\n if (classes.indexOf(className) === -1) {\r\n classes.push(className);\r\n elem.className = classes.join(' ').replace(/^\\s+/, '').replace(/\\s+$/, '');\r\n }\r\n }\r\n return dom;\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n * @param className\r\n */\r\n removeClass: function(elem, className) {\r\n if (className) {\r\n if (elem.className === className) {\r\n elem.removeAttribute('class');\r\n } else {\r\n const classes = elem.className.split(/ +/);\r\n const index = classes.indexOf(className);\r\n if (index !== -1) {\r\n classes.splice(index, 1);\r\n elem.className = classes.join(' ');\r\n }\r\n }\r\n } else {\r\n elem.className = undefined;\r\n }\r\n return dom;\r\n },\r\n\r\n hasClass: function(elem, className) {\r\n return new RegExp('(?:^|\\\\s+)' + className + '(?:\\\\s+|$)').test(elem.className) || false;\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n */\r\n getWidth: function(elem) {\r\n const style = getComputedStyle(elem);\r\n\r\n return cssValueToPixels(style['border-left-width']) +\r\n cssValueToPixels(style['border-right-width']) +\r\n cssValueToPixels(style['padding-left']) +\r\n cssValueToPixels(style['padding-right']) +\r\n cssValueToPixels(style.width);\r\n },\r\n\r\n /**\r\n *\r\n * @param elem\r\n */\r\n getHeight: function(elem) {\r\n const style = getComputedStyle(elem);\r\n\r\n return cssValueToPixels(style['border-top-width']) +\r\n cssValueToPixels(style['border-bottom-width']) +\r\n cssValueToPixels(style['padding-top']) +\r\n cssValueToPixels(style['padding-bottom']) +\r\n cssValueToPixels(style.height);\r\n },\r\n\r\n /**\r\n *\r\n * @param el\r\n */\r\n getOffset: function(el) {\r\n let elem = el;\r\n const offset = { left: 0, top: 0 };\r\n if (elem.offsetParent) {\r\n do {\r\n offset.left += elem.offsetLeft;\r\n offset.top += elem.offsetTop;\r\n elem = elem.offsetParent;\r\n } while (elem);\r\n }\r\n return offset;\r\n },\r\n\r\n // http://stackoverflow.com/posts/2684561/revisions\r\n /**\r\n *\r\n * @param elem\r\n */\r\n isActive: function(elem) {\r\n return elem === document.activeElement && (elem.type || elem.href);\r\n }\r\n\r\n};\r\n\r\nexport default dom;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport dom from '../dom/dom';\r\n\r\n/**\r\n * @class Provides a checkbox input to alter the boolean property of an object.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n */\r\nclass BooleanController extends Controller {\r\n constructor(object, property) {\r\n super(object, property);\r\n\r\n const _this = this;\r\n this.__prev = this.getValue();\r\n\r\n this.__checkbox = document.createElement('input');\r\n this.__checkbox.setAttribute('type', 'checkbox');\r\n\r\n function onChange() {\r\n _this.setValue(!_this.__prev);\r\n }\r\n\r\n dom.bind(this.__checkbox, 'change', onChange, false);\r\n\r\n this.domElement.appendChild(this.__checkbox);\r\n\r\n // Match original value\r\n this.updateDisplay();\r\n }\r\n\r\n setValue(v) {\r\n const toReturn = super.setValue(v);\r\n if (this.__onFinishChange) {\r\n this.__onFinishChange.call(this, this.getValue());\r\n }\r\n this.__prev = this.getValue();\r\n return toReturn;\r\n }\r\n\r\n updateDisplay() {\r\n if (this.getValue() === true) {\r\n this.__checkbox.setAttribute('checked', 'checked');\r\n this.__checkbox.checked = true;\r\n this.__prev = true;\r\n } else {\r\n this.__checkbox.checked = false;\r\n this.__prev = false;\r\n }\r\n\r\n return super.updateDisplay();\r\n }\r\n}\r\n\r\nexport default BooleanController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport dom from '../dom/dom';\r\nimport common from '../utils/common';\r\n\r\n/**\r\n * @class Provides a select input to alter the property of an object, using a\r\n * list of accepted values.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {Object|string[]} options A map of labels to acceptable values, or\r\n * a list of acceptable string values.\r\n */\r\nclass OptionController extends Controller {\r\n constructor(object, property, opts) {\r\n super(object, property);\r\n\r\n let options = opts;\r\n\r\n const _this = this;\r\n\r\n /**\r\n * The drop down menu\r\n * @ignore\r\n */\r\n this.__select = document.createElement('select');\r\n\r\n if (common.isArray(options)) {\r\n const map = {};\r\n common.each(options, function(element) {\r\n map[element] = element;\r\n });\r\n options = map;\r\n }\r\n\r\n common.each(options, function(value, key) {\r\n const opt = document.createElement('option');\r\n opt.innerHTML = key;\r\n opt.setAttribute('value', value);\r\n _this.__select.appendChild(opt);\r\n });\r\n\r\n // Acknowledge original value\r\n this.updateDisplay();\r\n\r\n dom.bind(this.__select, 'change', function() {\r\n const desiredValue = this.options[this.selectedIndex].value;\r\n _this.setValue(desiredValue);\r\n });\r\n\r\n this.domElement.appendChild(this.__select);\r\n }\r\n\r\n setValue(v) {\r\n const toReturn = super.setValue(v);\r\n\r\n if (this.__onFinishChange) {\r\n this.__onFinishChange.call(this, this.getValue());\r\n }\r\n return toReturn;\r\n }\r\n\r\n updateDisplay() {\r\n if (dom.isActive(this.__select)) return this; // prevent number from updating if user is trying to manually update\r\n this.__select.value = this.getValue();\r\n return super.updateDisplay();\r\n }\r\n}\r\n\r\nexport default OptionController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport dom from '../dom/dom';\r\n\r\n/**\r\n * @class Provides a text input to alter the string property of an object.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n */\r\nclass StringController extends Controller {\r\n constructor(object, property) {\r\n super(object, property);\r\n\r\n const _this = this;\r\n\r\n function onChange() {\r\n _this.setValue(_this.__input.value);\r\n }\r\n\r\n function onBlur() {\r\n if (_this.__onFinishChange) {\r\n _this.__onFinishChange.call(_this, _this.getValue());\r\n }\r\n }\r\n\r\n this.__input = document.createElement('input');\r\n this.__input.setAttribute('type', 'text');\r\n\r\n dom.bind(this.__input, 'keyup', onChange);\r\n dom.bind(this.__input, 'change', onChange);\r\n dom.bind(this.__input, 'blur', onBlur);\r\n dom.bind(this.__input, 'keydown', function(e) {\r\n if (e.keyCode === 13) {\r\n this.blur();\r\n }\r\n });\r\n\r\n this.updateDisplay();\r\n\r\n this.domElement.appendChild(this.__input);\r\n }\r\n\r\n updateDisplay() {\r\n // Stops the caret from moving on account of:\r\n // keyup -> setValue -> updateDisplay\r\n if (!dom.isActive(this.__input)) {\r\n this.__input.value = this.getValue();\r\n }\r\n return super.updateDisplay();\r\n }\r\n}\r\n\r\nexport default StringController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport common from '../utils/common';\r\n\r\nfunction numDecimals(x) {\r\n const _x = x.toString();\r\n if (_x.indexOf('.') > -1) {\r\n return _x.length - _x.indexOf('.') - 1;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * @class Represents a given property of an object that is a number.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {Object} [params] Optional parameters\r\n * @param {Number} [params.min] Minimum allowed value\r\n * @param {Number} [params.max] Maximum allowed value\r\n * @param {Number} [params.step] Increment by which to change value\r\n */\r\nclass NumberController extends Controller {\r\n constructor(object, property, params) {\r\n super(object, property);\r\n\r\n const _params = params || {};\r\n\r\n this.__min = _params.min;\r\n this.__max = _params.max;\r\n this.__step = _params.step;\r\n\r\n if (common.isUndefined(this.__step)) {\r\n if (this.initialValue === 0) {\r\n this.__impliedStep = 1; // What are we, psychics?\r\n } else {\r\n // Hey Doug, check this out.\r\n this.__impliedStep = Math.pow(10, Math.floor(Math.log(Math.abs(this.initialValue)) / Math.LN10)) / 10;\r\n }\r\n } else {\r\n this.__impliedStep = this.__step;\r\n }\r\n\r\n this.__precision = numDecimals(this.__impliedStep);\r\n }\r\n\r\n setValue(v) {\r\n let _v = v;\r\n\r\n if (this.__min !== undefined && _v < this.__min) {\r\n _v = this.__min;\r\n } else if (this.__max !== undefined && _v > this.__max) {\r\n _v = this.__max;\r\n }\r\n\r\n if (this.__step !== undefined && _v % this.__step !== 0) {\r\n _v = Math.round(_v / this.__step) * this.__step;\r\n }\r\n\r\n return super.setValue(_v);\r\n }\r\n\r\n /**\r\n * Specify a minimum value for object[property]
.\r\n *\r\n * @param {Number} minValue The minimum value for\r\n * object[property]
\r\n * @returns {dat.controllers.NumberController} this\r\n */\r\n min(minValue) {\r\n this.__min = minValue;\r\n return this;\r\n }\r\n\r\n /**\r\n * Specify a maximum value for object[property]
.\r\n *\r\n * @param {Number} maxValue The maximum value for\r\n * object[property]
\r\n * @returns {dat.controllers.NumberController} this\r\n */\r\n max(maxValue) {\r\n this.__max = maxValue;\r\n return this;\r\n }\r\n\r\n /**\r\n * Specify a step value that dat.controllers.NumberController\r\n * increments by.\r\n *\r\n * @param {Number} stepValue The step value for\r\n * dat.controllers.NumberController\r\n * @default if minimum and maximum specified increment is 1% of the\r\n * difference otherwise stepValue is 1\r\n * @returns {dat.controllers.NumberController} this\r\n */\r\n step(stepValue) {\r\n this.__step = stepValue;\r\n this.__impliedStep = stepValue;\r\n this.__precision = numDecimals(stepValue);\r\n return this;\r\n }\r\n}\r\n\r\nexport default NumberController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport NumberController from './NumberController';\r\nimport dom from '../dom/dom';\r\nimport common from '../utils/common';\r\n\r\nfunction roundToDecimal(value, decimals) {\r\n const tenTo = Math.pow(10, decimals);\r\n return Math.round(value * tenTo) / tenTo;\r\n}\r\n\r\n/**\r\n * @class Represents a given property of an object that is a number and\r\n * provides an input element with which to manipulate it.\r\n *\r\n * @extends dat.controllers.Controller\r\n * @extends dat.controllers.NumberController\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {Object} [params] Optional parameters\r\n * @param {Number} [params.min] Minimum allowed value\r\n * @param {Number} [params.max] Maximum allowed value\r\n * @param {Number} [params.step] Increment by which to change value\r\n */\r\nclass NumberControllerBox extends NumberController {\r\n constructor(object, property, params) {\r\n super(object, property, params);\r\n\r\n this.__truncationSuspended = false;\r\n\r\n const _this = this;\r\n\r\n /**\r\n * {Number} Previous mouse y position\r\n * @ignore\r\n */\r\n let prevY;\r\n\r\n function onChange() {\r\n const attempted = parseFloat(_this.__input.value);\r\n if (!common.isNaN(attempted)) {\r\n _this.setValue(attempted);\r\n }\r\n }\r\n\r\n function onFinish() {\r\n if (_this.__onFinishChange) {\r\n _this.__onFinishChange.call(_this, _this.getValue());\r\n }\r\n }\r\n\r\n function onBlur() {\r\n onFinish();\r\n }\r\n\r\n function onMouseDrag(e) {\r\n const diff = prevY - e.clientY;\r\n _this.setValue(_this.getValue() + diff * _this.__impliedStep);\r\n\r\n prevY = e.clientY;\r\n }\r\n\r\n function onMouseUp() {\r\n dom.unbind(window, 'mousemove', onMouseDrag);\r\n dom.unbind(window, 'mouseup', onMouseUp);\r\n onFinish();\r\n }\r\n\r\n function onMouseDown(e) {\r\n dom.bind(window, 'mousemove', onMouseDrag);\r\n dom.bind(window, 'mouseup', onMouseUp);\r\n prevY = e.clientY;\r\n }\r\n\r\n this.__input = document.createElement('input');\r\n this.__input.setAttribute('type', 'text');\r\n\r\n // Makes it so manually specified values are not truncated.\r\n\r\n dom.bind(this.__input, 'change', onChange);\r\n dom.bind(this.__input, 'blur', onBlur);\r\n dom.bind(this.__input, 'mousedown', onMouseDown);\r\n dom.bind(this.__input, 'keydown', function(e) {\r\n // When pressing enter, you can be as precise as you want.\r\n if (e.keyCode === 13) {\r\n _this.__truncationSuspended = true;\r\n this.blur();\r\n _this.__truncationSuspended = false;\r\n onFinish();\r\n }\r\n });\r\n\r\n this.updateDisplay();\r\n\r\n this.domElement.appendChild(this.__input);\r\n }\r\n\r\n updateDisplay() {\r\n this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision);\r\n return super.updateDisplay();\r\n }\r\n}\r\n\r\nexport default NumberControllerBox;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport NumberController from './NumberController';\r\nimport dom from '../dom/dom';\r\n\r\nfunction map(v, i1, i2, o1, o2) {\r\n return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));\r\n}\r\n\r\n/**\r\n * @class Represents a given property of an object that is a number, contains\r\n * a minimum and maximum, and provides a slider element with which to\r\n * manipulate it. It should be noted that the slider element is made up of\r\n * <div>
tags, not the html5\r\n * <slider>
element.\r\n *\r\n * @extends dat.controllers.Controller\r\n * @extends dat.controllers.NumberController\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {Number} minValue Minimum allowed value\r\n * @param {Number} maxValue Maximum allowed value\r\n * @param {Number} stepValue Increment by which to change value\r\n */\r\nclass NumberControllerSlider extends NumberController {\r\n constructor(object, property, min, max, step) {\r\n super(object, property, { min: min, max: max, step: step });\r\n\r\n const _this = this;\r\n\r\n this.__background = document.createElement('div');\r\n this.__foreground = document.createElement('div');\r\n\r\n dom.bind(this.__background, 'mousedown', onMouseDown);\r\n dom.bind(this.__background, 'touchstart', onTouchStart);\r\n\r\n dom.addClass(this.__background, 'slider');\r\n dom.addClass(this.__foreground, 'slider-fg');\r\n\r\n function onMouseDown(e) {\r\n document.activeElement.blur();\r\n\r\n dom.bind(window, 'mousemove', onMouseDrag);\r\n dom.bind(window, 'mouseup', onMouseUp);\r\n\r\n onMouseDrag(e);\r\n }\r\n\r\n function onMouseDrag(e) {\r\n e.preventDefault();\r\n\r\n const bgRect = _this.__background.getBoundingClientRect();\r\n\r\n _this.setValue(\r\n map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max)\r\n );\r\n\r\n return false;\r\n }\r\n\r\n function onMouseUp() {\r\n dom.unbind(window, 'mousemove', onMouseDrag);\r\n dom.unbind(window, 'mouseup', onMouseUp);\r\n if (_this.__onFinishChange) {\r\n _this.__onFinishChange.call(_this, _this.getValue());\r\n }\r\n }\r\n\r\n function onTouchStart(e) {\r\n if (e.touches.length !== 1) { return; }\r\n dom.bind(window, 'touchmove', onTouchMove);\r\n dom.bind(window, 'touchend', onTouchEnd);\r\n onTouchMove(e);\r\n }\r\n\r\n function onTouchMove(e) {\r\n const clientX = e.touches[0].clientX;\r\n const bgRect = _this.__background.getBoundingClientRect();\r\n\r\n _this.setValue(\r\n map(clientX, bgRect.left, bgRect.right, _this.__min, _this.__max)\r\n );\r\n }\r\n\r\n function onTouchEnd() {\r\n dom.unbind(window, 'touchmove', onTouchMove);\r\n dom.unbind(window, 'touchend', onTouchEnd);\r\n if (_this.__onFinishChange) {\r\n _this.__onFinishChange.call(_this, _this.getValue());\r\n }\r\n }\r\n\r\n this.updateDisplay();\r\n\r\n this.__background.appendChild(this.__foreground);\r\n this.domElement.appendChild(this.__background);\r\n }\r\n\r\n updateDisplay() {\r\n const pct = (this.getValue() - this.__min) / (this.__max - this.__min);\r\n this.__foreground.style.width = pct * 100 + '%';\r\n return super.updateDisplay();\r\n }\r\n}\r\n\r\nexport default NumberControllerSlider;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport dom from '../dom/dom';\r\n\r\n/**\r\n * @class Provides a GUI interface to fire a specified method, a property of an object.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {string} property The name of the property to be manipulated\r\n */\r\nclass FunctionController extends Controller {\r\n constructor(object, property, text) {\r\n super(object, property);\r\n\r\n const _this = this;\r\n\r\n this.__button = document.createElement('div');\r\n this.__button.innerHTML = text === undefined ? 'Fire' : text;\r\n\r\n dom.bind(this.__button, 'click', function(e) {\r\n e.preventDefault();\r\n _this.fire();\r\n return false;\r\n });\r\n\r\n dom.addClass(this.__button, 'button');\r\n\r\n this.domElement.appendChild(this.__button);\r\n }\r\n\r\n fire() {\r\n if (this.__onChange) {\r\n this.__onChange.call(this);\r\n }\r\n this.getValue().call(this.object);\r\n if (this.__onFinishChange) {\r\n this.__onFinishChange.call(this, this.getValue());\r\n }\r\n }\r\n}\r\n\r\nexport default FunctionController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Controller from './Controller';\r\nimport dom from '../dom/dom';\r\nimport Color from '../color/Color';\r\nimport interpret from '../color/interpret';\r\nimport common from '../utils/common';\r\n\r\n/**\r\n * @class Represents a given property of an object that is a color.\r\n * @param {Object} object\r\n * @param {string} property\r\n */\r\nclass ColorController extends Controller {\r\n constructor(object, property) {\r\n super(object, property);\r\n\r\n this.__color = new Color(this.getValue());\r\n this.__temp = new Color(0);\r\n\r\n const _this = this;\r\n\r\n this.domElement = document.createElement('div');\r\n\r\n dom.makeSelectable(this.domElement, false);\r\n\r\n this.__selector = document.createElement('div');\r\n this.__selector.className = 'selector';\r\n\r\n this.__saturation_field = document.createElement('div');\r\n this.__saturation_field.className = 'saturation-field';\r\n\r\n this.__field_knob = document.createElement('div');\r\n this.__field_knob.className = 'field-knob';\r\n this.__field_knob_border = '2px solid ';\r\n\r\n this.__hue_knob = document.createElement('div');\r\n this.__hue_knob.className = 'hue-knob';\r\n\r\n this.__hue_field = document.createElement('div');\r\n this.__hue_field.className = 'hue-field';\r\n\r\n this.__input = document.createElement('input');\r\n this.__input.type = 'text';\r\n this.__input_textShadow = '0 1px 1px ';\r\n\r\n dom.bind(this.__input, 'keydown', function(e) {\r\n if (e.keyCode === 13) { // on enter\r\n onBlur.call(this);\r\n }\r\n });\r\n\r\n dom.bind(this.__input, 'blur', onBlur);\r\n\r\n dom.bind(this.__selector, 'mousedown', function(/* e */) {\r\n dom\r\n .addClass(this, 'drag')\r\n .bind(window, 'mouseup', function(/* e */) {\r\n dom.removeClass(_this.__selector, 'drag');\r\n });\r\n });\r\n\r\n dom.bind(this.__selector, 'touchstart', function(/* e */) {\r\n dom\r\n .addClass(this, 'drag')\r\n .bind(window, 'touchend', function(/* e */) {\r\n dom.removeClass(_this.__selector, 'drag');\r\n });\r\n });\r\n\r\n const valueField = document.createElement('div');\r\n\r\n common.extend(this.__selector.style, {\r\n width: '122px',\r\n height: '102px',\r\n padding: '3px',\r\n backgroundColor: '#222',\r\n boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'\r\n });\r\n\r\n common.extend(this.__field_knob.style, {\r\n position: 'absolute',\r\n width: '12px',\r\n height: '12px',\r\n border: this.__field_knob_border + (this.__color.v < 0.5 ? '#fff' : '#000'),\r\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\r\n borderRadius: '12px',\r\n zIndex: 1\r\n });\r\n\r\n common.extend(this.__hue_knob.style, {\r\n position: 'absolute',\r\n width: '15px',\r\n height: '2px',\r\n borderRight: '4px solid #fff',\r\n zIndex: 1\r\n });\r\n\r\n common.extend(this.__saturation_field.style, {\r\n width: '100px',\r\n height: '100px',\r\n border: '1px solid #555',\r\n marginRight: '3px',\r\n display: 'inline-block',\r\n cursor: 'pointer'\r\n });\r\n\r\n common.extend(valueField.style, {\r\n width: '100%',\r\n height: '100%',\r\n background: 'none'\r\n });\r\n\r\n linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');\r\n\r\n common.extend(this.__hue_field.style, {\r\n width: '15px',\r\n height: '100px',\r\n border: '1px solid #555',\r\n cursor: 'ns-resize',\r\n position: 'absolute',\r\n top: '3px',\r\n right: '3px'\r\n });\r\n\r\n hueGradient(this.__hue_field);\r\n\r\n common.extend(this.__input.style, {\r\n outline: 'none',\r\n// width: '120px',\r\n textAlign: 'center',\r\n// padding: '4px',\r\n// marginBottom: '6px',\r\n color: '#fff',\r\n border: 0,\r\n fontWeight: 'bold',\r\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\r\n });\r\n\r\n dom.bind(this.__saturation_field, 'mousedown', fieldDown);\r\n dom.bind(this.__saturation_field, 'touchstart', fieldDown);\r\n\r\n dom.bind(this.__field_knob, 'mousedown', fieldDown);\r\n dom.bind(this.__field_knob, 'touchstart', fieldDown);\r\n\r\n dom.bind(this.__hue_field, 'mousedown', fieldDownH);\r\n dom.bind(this.__hue_field, 'touchstart', fieldDownH);\r\n\r\n function fieldDown(e) {\r\n setSV(e);\r\n dom.bind(window, 'mousemove', setSV);\r\n dom.bind(window, 'touchmove', setSV);\r\n dom.bind(window, 'mouseup', fieldUpSV);\r\n dom.bind(window, 'touchend', fieldUpSV);\r\n }\r\n\r\n function fieldDownH(e) {\r\n setH(e);\r\n dom.bind(window, 'mousemove', setH);\r\n dom.bind(window, 'touchmove', setH);\r\n dom.bind(window, 'mouseup', fieldUpH);\r\n dom.bind(window, 'touchend', fieldUpH);\r\n }\r\n\r\n function fieldUpSV() {\r\n dom.unbind(window, 'mousemove', setSV);\r\n dom.unbind(window, 'touchmove', setSV);\r\n dom.unbind(window, 'mouseup', fieldUpSV);\r\n dom.unbind(window, 'touchend', fieldUpSV);\r\n onFinish();\r\n }\r\n\r\n function fieldUpH() {\r\n dom.unbind(window, 'mousemove', setH);\r\n dom.unbind(window, 'touchmove', setH);\r\n dom.unbind(window, 'mouseup', fieldUpH);\r\n dom.unbind(window, 'touchend', fieldUpH);\r\n onFinish();\r\n }\r\n\r\n function onBlur() {\r\n const i = interpret(this.value);\r\n if (i !== false) {\r\n _this.__color.__state = i;\r\n _this.setValue(_this.__color.toOriginal());\r\n } else {\r\n this.value = _this.__color.toString();\r\n }\r\n }\r\n\r\n function onFinish() {\r\n if (_this.__onFinishChange) {\r\n _this.__onFinishChange.call(_this, _this.__color.toOriginal());\r\n }\r\n }\r\n\r\n this.__saturation_field.appendChild(valueField);\r\n this.__selector.appendChild(this.__field_knob);\r\n this.__selector.appendChild(this.__saturation_field);\r\n this.__selector.appendChild(this.__hue_field);\r\n this.__hue_field.appendChild(this.__hue_knob);\r\n\r\n this.domElement.appendChild(this.__input);\r\n this.domElement.appendChild(this.__selector);\r\n\r\n this.updateDisplay();\r\n\r\n function setSV(e) {\r\n if (e.type.indexOf('touch') === -1) { e.preventDefault(); }\r\n\r\n const fieldRect = _this.__saturation_field.getBoundingClientRect();\r\n const { clientX, clientY } = (e.touches && e.touches[0]) || e;\r\n let s = (clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\r\n let v = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\r\n\r\n if (v > 1) {\r\n v = 1;\r\n } else if (v < 0) {\r\n v = 0;\r\n }\r\n\r\n if (s > 1) {\r\n s = 1;\r\n } else if (s < 0) {\r\n s = 0;\r\n }\r\n\r\n _this.__color.v = v;\r\n _this.__color.s = s;\r\n\r\n _this.setValue(_this.__color.toOriginal());\r\n\r\n\r\n return false;\r\n }\r\n\r\n function setH(e) {\r\n if (e.type.indexOf('touch') === -1) { e.preventDefault(); }\r\n\r\n const fieldRect = _this.__hue_field.getBoundingClientRect();\r\n const { clientY } = (e.touches && e.touches[0]) || e;\r\n let h = 1 - (clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\r\n\r\n if (h > 1) {\r\n h = 1;\r\n } else if (h < 0) {\r\n h = 0;\r\n }\r\n\r\n _this.__color.h = h * 360;\r\n\r\n _this.setValue(_this.__color.toOriginal());\r\n\r\n return false;\r\n }\r\n }\r\n\r\n updateDisplay() {\r\n const i = interpret(this.getValue());\r\n\r\n if (i !== false) {\r\n let mismatch = false;\r\n\r\n // Check for mismatch on the interpreted value.\r\n\r\n common.each(Color.COMPONENTS, function(component) {\r\n if (!common.isUndefined(i[component]) && !common.isUndefined(this.__color.__state[component]) &&\r\n i[component] !== this.__color.__state[component]) {\r\n mismatch = true;\r\n return {}; // break\r\n }\r\n }, this);\r\n\r\n // If nothing diverges, we keep our previous values\r\n // for statefulness, otherwise we recalculate fresh\r\n if (mismatch) {\r\n common.extend(this.__color.__state, i);\r\n }\r\n }\r\n\r\n common.extend(this.__temp.__state, this.__color.__state);\r\n\r\n this.__temp.a = 1;\r\n\r\n const flip = (this.__color.v < 0.5 || this.__color.s > 0.5) ? 255 : 0;\r\n const _flip = 255 - flip;\r\n\r\n common.extend(this.__field_knob.style, {\r\n marginLeft: 100 * this.__color.s - 7 + 'px',\r\n marginTop: 100 * (1 - this.__color.v) - 7 + 'px',\r\n backgroundColor: this.__temp.toHexString(),\r\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\r\n });\r\n\r\n this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';\r\n\r\n this.__temp.s = 1;\r\n this.__temp.v = 1;\r\n\r\n linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());\r\n\r\n this.__input.value = this.__color.toString();\r\n\r\n common.extend(this.__input.style, {\r\n backgroundColor: this.__color.toHexString(),\r\n color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',\r\n textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'\r\n });\r\n }\r\n}\r\n\r\nconst vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];\r\n\r\nfunction linearGradient(elem, x, a, b) {\r\n elem.style.background = '';\r\n common.each(vendors, function(vendor) {\r\n elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';\r\n });\r\n}\r\n\r\nfunction hueGradient(elem) {\r\n elem.style.background = '';\r\n elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';\r\n elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\r\n elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\r\n elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\r\n elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\r\n}\r\n\r\nexport default ColorController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport Controller from './Controller';\r\n\r\n/**\r\n * @class Represents a custom controller.\r\n * @param {Object} object\r\n * @param {string} property\r\n */\r\nclass CustomController extends Controller{\r\n constructor(object, property) {\r\n super(object, property);\r\n\r\n object.constructor( this );\r\n }\r\n}\r\n\r\nexport default CustomController;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nconst css = {\r\n load: function(url, indoc) {\r\n const doc = indoc || document;\r\n const link = doc.createElement('link');\r\n link.type = 'text/css';\r\n link.rel = 'stylesheet';\r\n link.href = url;\r\n doc.getElementsByTagName('head')[0].appendChild(link);\r\n },\r\n\r\n inject: function(cssContent, indoc) {\r\n const doc = indoc || document;\r\n const injected = document.createElement('style');\r\n injected.type = 'text/css';\r\n injected.innerHTML = cssContent;\r\n const head = doc.getElementsByTagName('head')[0];\r\n try {\r\n head.appendChild(injected);\r\n } catch (e) { // Unable to inject CSS, probably because of a Content Security Policy\r\n }\r\n }\r\n};\r\n\r\nexport default css;\r\n","const saveDialogContents = `GUI
's constructor:\r\n\r\n \r\n\r\n localStorage
on exit.\r\n\r\n localStorage
will\r\n override those passed to dat.GUI
's constructor. This makes it\r\n easier to work incrementally, but localStorage
is fragile,\r\n and your friends may not see the same values you do.\r\n\r\n GUI
\r\n * @type dat.gui.GUI\r\n */\r\n parent: {\r\n get: function() {\r\n return params.parent;\r\n }\r\n },\r\n\r\n scrollable: {\r\n get: function() {\r\n return params.scrollable;\r\n }\r\n },\r\n\r\n /**\r\n * Handles GUI
's element placement for you\r\n * @type Boolean\r\n */\r\n autoPlace: {\r\n get: function() {\r\n return params.autoPlace;\r\n }\r\n },\r\n\r\n /**\r\n * Handles GUI
's position of open/close button\r\n * @type Boolean\r\n */\r\n closeOnTop: {\r\n get: function() {\r\n return params.closeOnTop;\r\n }\r\n },\r\n\r\n /**\r\n * The identifier for a set of saved values\r\n * @type String\r\n */\r\n preset: {\r\n get: function() {\r\n if (_this.parent) {\r\n return _this.getRoot().preset;\r\n }\r\n\r\n return params.load.preset;\r\n },\r\n\r\n set: function(v) {\r\n if (_this.parent) {\r\n _this.getRoot().preset = v;\r\n } else {\r\n params.load.preset = v;\r\n }\r\n setPresetSelectIndex(this);\r\n _this.revert();\r\n }\r\n },\r\n\r\n /**\r\n * The width of GUI
element\r\n * @type Number\r\n */\r\n width: {\r\n get: function() {\r\n return params.width;\r\n },\r\n set: function(v) {\r\n params.width = v;\r\n setWidth(_this, v);\r\n }\r\n },\r\n\r\n /**\r\n * The name of GUI
. Used for folders. i.e\r\n * a folder's name\r\n * @type String\r\n */\r\n name: {\r\n get: function() {\r\n return params.name;\r\n },\r\n set: function(v) {\r\n // TODO Check for collisions among sibling folders\r\n params.name = v;\r\n if (titleRow) {\r\n titleRow.innerHTML = params.name;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Whether the GUI
is collapsed or not\r\n * @type Boolean\r\n */\r\n closed: {\r\n get: function() {\r\n return params.closed;\r\n },\r\n set: function(v) {\r\n params.closed = v;\r\n if (params.closed) {\r\n dom.addClass(_this.__ul, GUI.CLASS_CLOSED);\r\n } else {\r\n dom.removeClass(_this.__ul, GUI.CLASS_CLOSED);\r\n }\r\n // For browsers that aren't going to respect the CSS transition,\r\n // Lets just check our height against the window height right off\r\n // the bat.\r\n this.onResize();\r\n\r\n if (_this.__closeButton) {\r\n _this.__closeButton.innerHTML = v ? GUI.TEXT_OPEN : GUI.TEXT_CLOSED;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Contains all presets\r\n * @type Object\r\n */\r\n load: {\r\n get: function() {\r\n return params.load;\r\n }\r\n },\r\n\r\n /**\r\n * Determines whether or not to use localStorage as the means for\r\n * remember
ing\r\n * @type Boolean\r\n */\r\n useLocalStorage: {\r\n\r\n get: function() {\r\n return useLocalStorage;\r\n },\r\n set: function(bool) {\r\n if (SUPPORTS_LOCAL_STORAGE) {\r\n useLocalStorage = bool;\r\n if (bool) {\r\n dom.bind(window, 'unload', saveToLocalStorage);\r\n } else {\r\n dom.unbind(window, 'unload', saveToLocalStorage);\r\n }\r\n localStorage.setItem(getLocalStorageHash(_this, 'isLocal'), bool);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Are we a root level GUI?\r\n if (common.isUndefined(params.parent)) {\r\n this.closed = params.closed || false;\r\n\r\n dom.addClass(this.domElement, GUI.CLASS_MAIN);\r\n dom.makeSelectable(this.domElement, false);\r\n\r\n // Are we supposed to be loading locally?\r\n if (SUPPORTS_LOCAL_STORAGE) {\r\n if (useLocalStorage) {\r\n _this.useLocalStorage = true;\r\n\r\n const savedGui = localStorage.getItem(getLocalStorageHash(this, 'gui'));\r\n\r\n if (savedGui) {\r\n params.load = JSON.parse(savedGui);\r\n }\r\n }\r\n }\r\n\r\n this.__closeButton = document.createElement('div');\r\n this.__closeButton.innerHTML = GUI.TEXT_CLOSED;\r\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BUTTON);\r\n if (params.closeOnTop) {\r\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_TOP);\r\n this.domElement.insertBefore(this.__closeButton, this.domElement.childNodes[0]);\r\n } else {\r\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BOTTOM);\r\n this.domElement.appendChild(this.__closeButton);\r\n }\r\n\r\n dom.bind(this.__closeButton, 'click', function() {\r\n _this.closed = !_this.closed;\r\n });\r\n // Oh, you're a nested GUI!\r\n } else {\r\n if (params.closed === undefined) {\r\n params.closed = true;\r\n }\r\n\r\n const titleRowName = document.createTextNode(params.name);\r\n dom.addClass(titleRowName, 'controller-name');\r\n\r\n titleRow = addRow(_this, titleRowName);\r\n\r\n const onClickTitle = function(e) {\r\n e.preventDefault();\r\n _this.closed = !_this.closed;\r\n return false;\r\n };\r\n\r\n dom.addClass(this.__ul, GUI.CLASS_CLOSED);\r\n\r\n dom.addClass(titleRow, 'title');\r\n dom.bind(titleRow, 'click', onClickTitle);\r\n\r\n if (!params.closed) {\r\n this.closed = false;\r\n }\r\n }\r\n\r\n if (params.autoPlace) {\r\n if (common.isUndefined(params.parent)) {\r\n if (autoPlaceVirgin) {\r\n autoPlaceContainer = document.createElement('div');\r\n dom.addClass(autoPlaceContainer, CSS_NAMESPACE);\r\n dom.addClass(autoPlaceContainer, GUI.CLASS_AUTO_PLACE_CONTAINER);\r\n document.body.appendChild(autoPlaceContainer);\r\n autoPlaceVirgin = false;\r\n }\r\n\r\n // Put it in the dom for you.\r\n autoPlaceContainer.appendChild(this.domElement);\r\n\r\n // Apply the auto styles\r\n dom.addClass(this.domElement, GUI.CLASS_AUTO_PLACE);\r\n }\r\n\r\n\r\n // Make it not elastic.\r\n if (!this.parent) {\r\n setWidth(_this, params.width);\r\n }\r\n }\r\n\r\n this.__resizeHandler = function() {\r\n _this.onResizeDebounced();\r\n };\r\n\r\n dom.bind(window, 'resize', this.__resizeHandler);\r\n dom.bind(this.__ul, 'webkitTransitionEnd', this.__resizeHandler);\r\n dom.bind(this.__ul, 'transitionend', this.__resizeHandler);\r\n dom.bind(this.__ul, 'oTransitionEnd', this.__resizeHandler);\r\n this.onResize();\r\n\r\n if (params.resizable) {\r\n addResizeHandle(this);\r\n }\r\n\r\n saveToLocalStorage = function() {\r\n if (SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(_this, 'isLocal')) === 'true') {\r\n localStorage.setItem(getLocalStorageHash(_this, 'gui'), JSON.stringify(_this.getSaveObject()));\r\n }\r\n };\r\n\r\n // expose this method publicly\r\n this.saveToLocalStorageIfPossible = saveToLocalStorage;\r\n\r\n function resetWidth() {\r\n const root = _this.getRoot();\r\n root.width += 1;\r\n common.defer(function() {\r\n root.width -= 1;\r\n });\r\n }\r\n\r\n if (!params.parent) {\r\n resetWidth();\r\n }\r\n};\r\n\r\nGUI.CustomController = CustomController;\r\n\r\nGUI.toggleHide = function() {\r\n hide = !hide;\r\n common.each(hideableGuis, function(gui) {\r\n gui.domElement.style.display = hide ? 'none' : '';\r\n });\r\n};\r\n\r\nGUI.CLASS_AUTO_PLACE = 'a';\r\nGUI.CLASS_AUTO_PLACE_CONTAINER = 'ac';\r\nGUI.CLASS_MAIN = 'main';\r\nGUI.CLASS_CONTROLLER_ROW = 'cr';\r\nGUI.CLASS_TOO_TALL = 'taller-than-window';\r\nGUI.CLASS_CLOSED = 'closed';\r\nGUI.CLASS_CLOSE_BUTTON = 'close-button';\r\nGUI.CLASS_CLOSE_TOP = 'close-top';\r\nGUI.CLASS_CLOSE_BOTTOM = 'close-bottom';\r\nGUI.CLASS_DRAG = 'drag';\r\n\r\nGUI.DEFAULT_WIDTH = 245;\r\nGUI.TEXT_CLOSED = 'Close Controls';\r\nGUI.TEXT_OPEN = 'Open Controls';\r\n\r\nGUI._keydownHandler = function(e) {\r\n if (document.activeElement.type !== 'text' &&\r\n (e.which === HIDE_KEY_CODE || e.keyCode === HIDE_KEY_CODE)) {\r\n GUI.toggleHide();\r\n }\r\n};\r\ndom.bind(window, 'keydown', GUI._keydownHandler, false);\r\n\r\ncommon.extend(\r\n GUI.prototype,\r\n\r\n /** @lends GUI.prototype */\r\n {\r\n\r\n /**\r\n * Adds a new {@link Controller} to the GUI. The type of controller created\r\n * is inferred from the initial value of object[property]
. For\r\n * color properties, see {@link addColor}.\r\n *\r\n * @param {Object} object The object to be manipulated\r\n * @param {String} property The name of the property to be manipulated\r\n * @param {Number} [min] Minimum allowed value\r\n * @param {Number} [max] Maximum allowed value\r\n * @param {Number} [step] Increment by which to change value\r\n * @returns {Controller} The controller that was added to the GUI.\r\n * @instance\r\n *\r\n * @example\r\n * // Add a string controller.\r\n * var person = {name: 'Sam'};\r\n * gui.add(person, 'name');\r\n *\r\n * @example\r\n * // Add a number controller slider.\r\n * var person = {age: 45};\r\n * gui.add(person, 'age', 0, 100);\r\n */\r\n add: function(object, property) {\r\n return add(\r\n this,\r\n object,\r\n property,\r\n {\r\n custom: object instanceof CustomController,\r\n factoryArgs: Array.prototype.slice.call(arguments, 2)\r\n }\r\n );\r\n },\r\n\r\n /**\r\n * Adds a new color controller to the GUI.\r\n *\r\n * @param object\r\n * @param property\r\n * @returns {Controller} The controller that was added to the GUI.\r\n * @instance\r\n *\r\n * @example\r\n * var palette = {\r\n * color1: '#FF0000', // CSS string\r\n * color2: [ 0, 128, 255 ], // RGB array\r\n * color3: [ 0, 128, 255, 0.3 ], // RGB with alpha\r\n * color4: { h: 350, s: 0.9, v: 0.3 } // Hue, saturation, value\r\n * };\r\n * gui.addColor(palette, 'color1');\r\n * gui.addColor(palette, 'color2');\r\n * gui.addColor(palette, 'color3');\r\n * gui.addColor(palette, 'color4');\r\n */\r\n addColor: function(object, property) {\r\n return add(\r\n this,\r\n object,\r\n property,\r\n {\r\n color: true\r\n }\r\n );\r\n },\r\n\r\n /**\r\n * Adds a new custom controller to the GUI.\r\n *\r\n * @param object\r\n * @param property\r\n * @returns {Controller} The controller that was added to the GUI.\r\n * @instance\r\n *\r\n */\r\n addCustomController: function(object, property) {\r\n \treturn add(\r\n\t\t this,\r\n\t\t object,\r\n\t\t property,\r\n\t\t {\r\n\t\t \tcustom: true,\r\n\t\t \tfactoryArgs: Array.prototype.slice.call(arguments, 2)\r\n\t\t }\r\n\t\t);\r\n },\r\n\r\n \t/**\r\n * Removes the given controller from the GUI.\r\n * @param {Controller} controller\r\n * @instance\r\n */\r\n remove: function(controller) {\r\n // TODO listening?\r\n this.__ul.removeChild(controller.__li);\r\n this.__controllers.splice(this.__controllers.indexOf(controller), 1);\r\n const _this = this;\r\n common.defer(function() {\r\n _this.onResize();\r\n });\r\n },\r\n\r\n /**\r\n * Removes the root GUI from the document and unbinds all event listeners.\r\n * For subfolders, use `gui.removeFolder(folder)` instead.\r\n * @instance\r\n */\r\n destroy: function() {\r\n if (this.parent) {\r\n throw new Error(\r\n 'Only the root GUI should be removed with .destroy(). ' +\r\n 'For subfolders, use gui.removeFolder(folder) instead.'\r\n );\r\n }\r\n\r\n if (this.autoPlace) {\r\n autoPlaceContainer.removeChild(this.domElement);\r\n }\r\n\r\n const _this = this;\r\n common.each(this.__folders, function(subfolder) {\r\n _this.removeFolder(subfolder);\r\n });\r\n\r\n dom.unbind(window, 'keydown', GUI._keydownHandler, false);\r\n\r\n removeListeners(this);\r\n },\r\n\r\n /**\r\n * Creates a new subfolder GUI instance.\r\n * @param name\r\n * @returns {dat.gui.GUI} The new folder.\r\n * @throws {Error} if this GUI already has a folder by the specified\r\n * name\r\n * @instance\r\n */\r\n addFolder: function(name) {\r\n // We have to prevent collisions on names in order to have a key\r\n // by which to remember saved values\r\n if (this.__folders[name] !== undefined) {\r\n throw new Error('You already have a folder in this GUI by the' +\r\n ' name \"' + name + '\"');\r\n }\r\n\r\n const newGuiParams = { name: name, parent: this };\r\n\r\n // We need to pass down the autoPlace trait so that we can\r\n // attach event listeners to open/close folder actions to\r\n // ensure that a scrollbar appears if the window is too short.\r\n newGuiParams.autoPlace = this.autoPlace;\r\n\r\n // Do we have saved appearance data for this folder?\r\n if (this.load && // Anything loaded?\r\n this.load.folders && // Was my parent a dead-end?\r\n this.load.folders[name]) { // Did daddy remember me?\r\n // Start me closed if I was closed\r\n newGuiParams.closed = this.load.folders[name].closed;\r\n\r\n // Pass down the loaded data\r\n newGuiParams.load = this.load.folders[name];\r\n }\r\n\r\n const gui = new GUI(newGuiParams);\r\n this.__folders[name] = gui;\r\n\r\n const li = addRow(this, gui.domElement);\r\n dom.addClass(li, 'folder');\r\n return gui;\r\n },\r\n\r\n /**\r\n * Removes a subfolder GUI instance.\r\n * @param {dat.gui.GUI} folder The folder to remove.\r\n * @instance\r\n */\r\n removeFolder: function(folder) {\r\n this.__ul.removeChild(folder.domElement.parentElement);\r\n\r\n delete this.__folders[folder.name];\r\n\r\n // Do we have saved appearance data for this folder?\r\n if (this.load && // Anything loaded?\r\n this.load.folders && // Was my parent a dead-end?\r\n this.load.folders[folder.name]) {\r\n delete this.load.folders[folder.name];\r\n }\r\n\r\n removeListeners(folder);\r\n\r\n const _this = this;\r\n\r\n common.each(folder.__folders, function(subfolder) {\r\n folder.removeFolder(subfolder);\r\n });\r\n\r\n common.defer(function() {\r\n _this.onResize();\r\n });\r\n },\r\n\r\n /**\r\n * Opens the GUI.\r\n */\r\n open: function() {\r\n this.closed = false;\r\n },\r\n\r\n /**\r\n * Closes the GUI.\r\n */\r\n close: function() {\r\n this.closed = true;\r\n },\r\n\r\n /**\r\n * Hides the GUI.\r\n */\r\n hide: function() {\r\n this.domElement.style.display = 'none';\r\n },\r\n\r\n /**\r\n * Shows the GUI.\r\n */\r\n show: function() {\r\n this.domElement.style.display = '';\r\n },\r\n\r\n\r\n onResize: function() {\r\n // we debounce this function to prevent performance issues when rotating on tablet/mobile\r\n const root = this.getRoot();\r\n if (root.scrollable) {\r\n const top = dom.getOffset(root.__ul).top;\r\n let h = 0;\r\n\r\n common.each(root.__ul.childNodes, function(node) {\r\n if (!(root.autoPlace && node === root.__save_row)) {\r\n h += dom.getHeight(node);\r\n }\r\n });\r\n\r\n if (window.innerHeight - top - CLOSE_BUTTON_HEIGHT < h) {\r\n dom.addClass(root.domElement, GUI.CLASS_TOO_TALL);\r\n root.__ul.style.height = window.innerHeight - top - CLOSE_BUTTON_HEIGHT + 'px';\r\n } else {\r\n dom.removeClass(root.domElement, GUI.CLASS_TOO_TALL);\r\n root.__ul.style.height = 'auto';\r\n }\r\n }\r\n\r\n if (root.__resize_handle) {\r\n common.defer(function() {\r\n root.__resize_handle.style.height = root.__ul.offsetHeight + 'px';\r\n });\r\n }\r\n\r\n if (root.__closeButton) {\r\n root.__closeButton.style.width = root.width + 'px';\r\n }\r\n },\r\n\r\n onResizeDebounced: common.debounce(function() { this.onResize(); }, 50),\r\n\r\n /**\r\n * Mark objects for saving. The order of these objects cannot change as\r\n * the GUI grows. When remembering new objects, append them to the end\r\n * of the list.\r\n *\r\n * @param {...Object} objects\r\n * @throws {Error} if not called on a top level GUI.\r\n * @instance\r\n * @ignore\r\n */\r\n remember: function() {\r\n if (common.isUndefined(SAVE_DIALOGUE)) {\r\n SAVE_DIALOGUE = new CenteredDiv();\r\n SAVE_DIALOGUE.domElement.innerHTML = saveDialogueContents;\r\n }\r\n\r\n if (this.parent) {\r\n throw new Error('You can only call remember on a top level GUI.');\r\n }\r\n\r\n const _this = this;\r\n\r\n common.each(Array.prototype.slice.call(arguments), function(object) {\r\n if (_this.__rememberedObjects.length === 0) {\r\n addSaveMenu(_this);\r\n }\r\n if (_this.__rememberedObjects.indexOf(object) === -1) {\r\n _this.__rememberedObjects.push(object);\r\n }\r\n });\r\n\r\n if (this.autoPlace) {\r\n // Set save row width\r\n setWidth(this, this.width);\r\n }\r\n },\r\n\r\n /**\r\n * @returns {dat.gui.GUI} the topmost parent GUI of a nested GUI.\r\n * @instance\r\n */\r\n getRoot: function() {\r\n let gui = this;\r\n while (gui.parent) {\r\n gui = gui.parent;\r\n }\r\n return gui;\r\n },\r\n\r\n /**\r\n * @returns {Object} a JSON object representing the current state of\r\n * this GUI as well as its remembered properties.\r\n * @instance\r\n */\r\n getSaveObject: function() {\r\n const toReturn = this.load;\r\n toReturn.closed = this.closed;\r\n\r\n // Am I remembering any values?\r\n if (this.__rememberedObjects.length > 0) {\r\n toReturn.preset = this.preset;\r\n\r\n if (!toReturn.remembered) {\r\n toReturn.remembered = {};\r\n }\r\n\r\n toReturn.remembered[this.preset] = getCurrentPreset(this);\r\n }\r\n\r\n toReturn.folders = {};\r\n common.each(this.__folders, function(element, key) {\r\n toReturn.folders[key] = element.getSaveObject();\r\n });\r\n\r\n return toReturn;\r\n },\r\n\r\n save: function() {\r\n if (!this.load.remembered) {\r\n this.load.remembered = {};\r\n }\r\n\r\n this.load.remembered[this.preset] = getCurrentPreset(this);\r\n markPresetModified(this, false);\r\n this.saveToLocalStorageIfPossible();\r\n },\r\n\r\n saveAs: function(presetName) {\r\n if (!this.load.remembered) {\r\n // Retain default values upon first save\r\n this.load.remembered = {};\r\n this.load.remembered[DEFAULT_DEFAULT_PRESET_NAME] = getCurrentPreset(this, true);\r\n }\r\n\r\n this.load.remembered[presetName] = getCurrentPreset(this);\r\n this.preset = presetName;\r\n addPresetOption(this, presetName, true);\r\n this.saveToLocalStorageIfPossible();\r\n },\r\n\r\n revert: function(gui) {\r\n common.each(this.__controllers, function(controller) {\r\n // Make revert work on Default.\r\n if (!this.getRoot().load.remembered) {\r\n controller.setValue(controller.initialValue);\r\n } else {\r\n recallSavedValue(gui || this.getRoot(), controller);\r\n }\r\n\r\n // fire onFinishChange callback\r\n if (controller.__onFinishChange) {\r\n controller.__onFinishChange.call(controller, controller.getValue());\r\n }\r\n }, this);\r\n\r\n common.each(this.__folders, function(folder) {\r\n folder.revert(folder);\r\n });\r\n\r\n if (!gui) {\r\n markPresetModified(this.getRoot(), false);\r\n }\r\n },\r\n\r\n listen: function(controller) {\r\n const init = this.__listening.length === 0;\r\n this.__listening.push(controller);\r\n if (init) {\r\n updateDisplays(this.__listening);\r\n }\r\n },\r\n\r\n updateDisplay: function() {\r\n common.each(this.__controllers, function(controller) {\r\n controller.updateDisplay();\r\n });\r\n common.each(this.__folders, function(folder) {\r\n folder.updateDisplay();\r\n });\r\n }\r\n }\r\n);\r\n\r\n/**\r\n * Add a row to the end of the GUI or before another row.\r\n *\r\n * @param gui\r\n * @param [newDom] If specified, inserts the dom content in the new row\r\n * @param [liBefore] If specified, places the new row before another row\r\n *\r\n * @ignore\r\n */\r\nfunction addRow(gui, newDom, liBefore) {\r\n const li = document.createElement('li');\r\n if (newDom) {\r\n li.appendChild(newDom);\r\n }\r\n\r\n if (liBefore) {\r\n gui.__ul.insertBefore(li, liBefore);\r\n } else {\r\n gui.__ul.appendChild(li);\r\n }\r\n gui.onResize();\r\n return li;\r\n}\r\n\r\nfunction removeListeners(gui) {\r\n dom.unbind(window, 'resize', gui.__resizeHandler);\r\n\r\n if (gui.saveToLocalStorageIfPossible) {\r\n dom.unbind(window, 'unload', gui.saveToLocalStorageIfPossible);\r\n }\r\n}\r\n\r\nfunction markPresetModified(gui, modified) {\r\n const opt = gui.__preset_select[gui.__preset_select.selectedIndex];\r\n\r\n if (modified) {\r\n opt.innerHTML = opt.value + '*';\r\n } else {\r\n opt.innerHTML = opt.value;\r\n }\r\n}\r\n\r\nfunction augmentController(gui, li, controller) {\r\n controller.__li = li;\r\n controller.__gui = gui;\r\n\r\n common.extend(controller, /** @lends Controller.prototype */ {\r\n /**\r\n * @param {Array|Object} options\r\n * @return {Controller}\r\n */\r\n options: function(options) {\r\n if (arguments.length > 1) {\r\n const nextSibling = controller.__li.nextElementSibling;\r\n controller.remove();\r\n\r\n return add(\r\n gui,\r\n controller.object,\r\n controller.property,\r\n {\r\n before: nextSibling,\r\n factoryArgs: [common.toArray(arguments)]\r\n }\r\n );\r\n }\r\n\r\n if (common.isArray(options) || common.isObject(options)) {\r\n const nextSibling = controller.__li.nextElementSibling;\r\n controller.remove();\r\n\r\n return add(\r\n gui,\r\n controller.object,\r\n controller.property,\r\n {\r\n before: nextSibling,\r\n factoryArgs: [options]\r\n }\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Sets the name of the controller.\r\n * @param {string} name\r\n * @return {Controller}\r\n */\r\n name: function(name) {\r\n controller.__li.firstElementChild.firstElementChild.innerHTML = name;\r\n return controller;\r\n },\r\n\r\n /**\r\n * Sets controller to listen for changes on its underlying object.\r\n * @return {Controller}\r\n */\r\n listen: function() {\r\n controller.__gui.listen(controller);\r\n return controller;\r\n },\r\n\r\n /**\r\n * Removes the controller from its parent GUI.\r\n * @return {Controller}\r\n */\r\n remove: function() {\r\n controller.__gui.remove(controller);\r\n return controller;\r\n }\r\n });\r\n\r\n // All sliders should be accompanied by a box.\r\n if (controller instanceof NumberControllerSlider) {\r\n const box = new NumberControllerBox(controller.object, controller.property,\r\n { min: controller.__min, max: controller.__max, step: controller.__step });\r\n\r\n common.each(['updateDisplay', 'onChange', 'onFinishChange', 'step', 'min', 'max'], function(method) {\r\n const pc = controller[method];\r\n const pb = box[method];\r\n controller[method] = box[method] = function() {\r\n const args = Array.prototype.slice.call(arguments);\r\n pb.apply(box, args);\r\n return pc.apply(controller, args);\r\n };\r\n });\r\n\r\n dom.addClass(li, 'has-slider');\r\n controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild);\r\n } else if (controller instanceof NumberControllerBox) {\r\n const r = function(returned) {\r\n // Have we defined both boundaries?\r\n if (common.isNumber(controller.__min) && common.isNumber(controller.__max)) {\r\n // Well, then lets just replace this with a slider.\r\n\r\n // lets remember if the old controller had a specific name or was listening\r\n const oldName = controller.__li.firstElementChild.firstElementChild.innerHTML;\r\n const wasListening = controller.__gui.__listening.indexOf(controller) > -1;\r\n\r\n controller.remove();\r\n const newController = add(\r\n gui,\r\n controller.object,\r\n controller.property,\r\n {\r\n before: controller.__li.nextElementSibling,\r\n factoryArgs: [controller.__min, controller.__max, controller.__step]\r\n });\r\n\r\n newController.name(oldName);\r\n if (wasListening) newController.listen();\r\n\r\n return newController;\r\n }\r\n\r\n return returned;\r\n };\r\n\r\n controller.min = common.compose(r, controller.min);\r\n controller.max = common.compose(r, controller.max);\r\n } else if (controller instanceof BooleanController) {\r\n dom.bind(li, 'click', function() {\r\n dom.fakeEvent(controller.__checkbox, 'click');\r\n });\r\n\r\n dom.bind(controller.__checkbox, 'click', function(e) {\r\n e.stopPropagation(); // Prevents double-toggle\r\n });\r\n } else if (controller instanceof FunctionController) {\r\n dom.bind(li, 'click', function() {\r\n dom.fakeEvent(controller.__button, 'click');\r\n });\r\n\r\n dom.bind(li, 'mouseover', function() {\r\n dom.addClass(controller.__button, 'hover');\r\n });\r\n\r\n dom.bind(li, 'mouseout', function() {\r\n dom.removeClass(controller.__button, 'hover');\r\n });\r\n } else if (controller instanceof ColorController) {\r\n dom.addClass(li, 'color');\r\n controller.updateDisplay = common.compose(function(val) {\r\n li.style.borderLeftColor = controller.__color.toString();\r\n return val;\r\n }, controller.updateDisplay);\r\n\r\n controller.updateDisplay();\r\n }\r\n\r\n controller.setValue = common.compose(function(val) {\r\n if (gui.getRoot().__preset_select && controller.isModified()) {\r\n markPresetModified(gui.getRoot(), true);\r\n }\r\n\r\n return val;\r\n }, controller.setValue);\r\n}\r\n\r\nfunction recallSavedValue(gui, controller) {\r\n // Find the topmost GUI, that's where remembered objects live.\r\n const root = gui.getRoot();\r\n\r\n // Does the object we're controlling match anything we've been told to\r\n // remember?\r\n const matchedIndex = root.__rememberedObjects.indexOf(controller.object);\r\n\r\n // Why yes, it does!\r\n if (matchedIndex !== -1) {\r\n // Let me fetch a map of controllers for thcommon.isObject.\r\n let controllerMap = root.__rememberedObjectIndecesToControllers[matchedIndex];\r\n\r\n // Ohp, I believe this is the first controller we've created for this\r\n // object. Lets make the map fresh.\r\n if (controllerMap === undefined) {\r\n controllerMap = {};\r\n root.__rememberedObjectIndecesToControllers[matchedIndex] =\r\n controllerMap;\r\n }\r\n\r\n // Keep track of this controller\r\n controllerMap[controller.property] = controller;\r\n\r\n // Okay, now have we saved any values for this controller?\r\n if (root.load && root.load.remembered) {\r\n const presetMap = root.load.remembered;\r\n\r\n // Which preset are we trying to load?\r\n let preset;\r\n\r\n if (presetMap[gui.preset]) {\r\n preset = presetMap[gui.preset];\r\n } else if (presetMap[DEFAULT_DEFAULT_PRESET_NAME]) {\r\n // Uhh, you can have the default instead?\r\n preset = presetMap[DEFAULT_DEFAULT_PRESET_NAME];\r\n } else {\r\n // Nada.\r\n return;\r\n }\r\n\r\n // Did the loaded object remember thcommon.isObject? && Did we remember this particular property?\r\n if (preset[matchedIndex] && preset[matchedIndex][controller.property] !== undefined) {\r\n // We did remember something for this guy ...\r\n const value = preset[matchedIndex][controller.property];\r\n\r\n // And that's what it is.\r\n controller.initialValue = value;\r\n controller.setValue(value);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction add(gui, object, property, params) {\r\n if (!object instanceof CustomController && !params.custom && (object[property] === undefined)) {\r\n throw new Error(`Object \"${object}\" has no property \"${property}\"`);\r\n }\r\n\r\n let controller;\r\n\r\n if (params.color) {\r\n controller = new ColorController(object, property);\r\n } else if(object instanceof CustomController && ( property === undefined )){\r\n \tcontroller = object;\r\n } else if (!(object instanceof CustomController) && params.custom && (object[property] === undefined)) {\r\n \tcontroller = new CustomController(object, property);\r\n }else {\r\n \tconst factoryArgs = object instanceof CustomController ?\r\n [property].concat(params.factoryArgs) : [object, property].concat(params.factoryArgs);\r\n controller = ControllerFactory.apply(gui, factoryArgs);\r\n }\r\n\r\n if (params.before instanceof Controller) {\r\n params.before = params.before.__li;\r\n }\r\n\r\n recallSavedValue(gui, controller);\r\n\r\n dom.addClass(controller.domElement, 'c');\r\n\r\n const container = document.createElement('div');\r\n\r\n const name = params.custom && ( controller instanceof CustomController === false ) ?\r\n ( object instanceof CustomController ? object.domElement : new CustomController(object).domElement ) : document.createElement('span');\r\n if (!params.custom)\r\n \tname.innerHTML = controller.property;\r\n dom.addClass(name, 'property-name');\r\n container.appendChild(name);\r\n\r\n container.appendChild(controller.domElement);\r\n\r\n const li = addRow(gui, container, params.before);\r\n\r\n dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);\r\n if (controller instanceof ColorController) {\r\n dom.addClass(li, 'color');\r\n } else {\r\n dom.addClass(li, typeof controller.getValue());\r\n }\r\n\r\n augmentController(gui, li, controller);\r\n\r\n gui.__controllers.push(controller);\r\n\r\n return controller;\r\n}\r\n\r\nfunction getLocalStorageHash(gui, key) {\r\n // TODO how does this deal with multiple GUI's?\r\n return document.location.href + '.' + key;\r\n}\r\n\r\nfunction addPresetOption(gui, name, setSelected) {\r\n const opt = document.createElement('option');\r\n opt.innerHTML = name;\r\n opt.value = name;\r\n gui.__preset_select.appendChild(opt);\r\n if (setSelected) {\r\n gui.__preset_select.selectedIndex = gui.__preset_select.length - 1;\r\n }\r\n}\r\n\r\nfunction showHideExplain(gui, explain) {\r\n explain.style.display = gui.useLocalStorage ? 'block' : 'none';\r\n}\r\n\r\nfunction addSaveMenu(gui) {\r\n const div = gui.__save_row = document.createElement('li');\r\n\r\n dom.addClass(gui.domElement, 'has-save');\r\n\r\n gui.__ul.insertBefore(div, gui.__ul.firstChild);\r\n\r\n dom.addClass(div, 'save-row');\r\n\r\n const gears = document.createElement('span');\r\n gears.innerHTML = ' ';\r\n dom.addClass(gears, 'button gears');\r\n\r\n // TODO replace with FunctionController\r\n const button = document.createElement('span');\r\n button.innerHTML = 'Save';\r\n dom.addClass(button, 'button');\r\n dom.addClass(button, 'save');\r\n\r\n const button2 = document.createElement('span');\r\n button2.innerHTML = 'New';\r\n dom.addClass(button2, 'button');\r\n dom.addClass(button2, 'save-as');\r\n\r\n const button3 = document.createElement('span');\r\n button3.innerHTML = 'Revert';\r\n dom.addClass(button3, 'button');\r\n dom.addClass(button3, 'revert');\r\n\r\n const select = gui.__preset_select = document.createElement('select');\r\n\r\n if (gui.load && gui.load.remembered) {\r\n common.each(gui.load.remembered, function(value, key) {\r\n addPresetOption(gui, key, key === gui.preset);\r\n });\r\n } else {\r\n addPresetOption(gui, DEFAULT_DEFAULT_PRESET_NAME, false);\r\n }\r\n\r\n dom.bind(select, 'change', function() {\r\n for (let index = 0; index < gui.__preset_select.length; index++) {\r\n gui.__preset_select[index].innerHTML = gui.__preset_select[index].value;\r\n }\r\n\r\n gui.preset = this.value;\r\n });\r\n\r\n div.appendChild(select);\r\n div.appendChild(gears);\r\n div.appendChild(button);\r\n div.appendChild(button2);\r\n div.appendChild(button3);\r\n\r\n if (SUPPORTS_LOCAL_STORAGE) {\r\n const explain = document.getElementById('dg-local-explain');\r\n const localStorageCheckBox = document.getElementById('dg-local-storage');\r\n const saveLocally = document.getElementById('dg-save-locally');\r\n\r\n saveLocally.style.display = 'block';\r\n\r\n if (localStorage.getItem(getLocalStorageHash(gui, 'isLocal')) === 'true') {\r\n localStorageCheckBox.setAttribute('checked', 'checked');\r\n }\r\n\r\n showHideExplain(gui, explain);\r\n\r\n // TODO: Use a boolean controller, fool!\r\n dom.bind(localStorageCheckBox, 'change', function() {\r\n gui.useLocalStorage = !gui.useLocalStorage;\r\n showHideExplain(gui, explain);\r\n });\r\n }\r\n\r\n const newConstructorTextArea = document.getElementById('dg-new-constructor');\r\n\r\n dom.bind(newConstructorTextArea, 'keydown', function(e) {\r\n if (e.metaKey && (e.which === 67 || e.keyCode === 67)) {\r\n SAVE_DIALOGUE.hide();\r\n }\r\n });\r\n\r\n dom.bind(gears, 'click', function() {\r\n newConstructorTextArea.innerHTML = JSON.stringify(gui.getSaveObject(), undefined, 2);\r\n SAVE_DIALOGUE.show();\r\n newConstructorTextArea.focus();\r\n newConstructorTextArea.select();\r\n });\r\n\r\n dom.bind(button, 'click', function() {\r\n gui.save();\r\n });\r\n\r\n dom.bind(button2, 'click', function() {\r\n const presetName = prompt('Enter a new preset name.');\r\n if (presetName) {\r\n gui.saveAs(presetName);\r\n }\r\n });\r\n\r\n dom.bind(button3, 'click', function() {\r\n gui.revert();\r\n });\r\n\r\n // div.appendChild(button2);\r\n}\r\n\r\nfunction addResizeHandle(gui) {\r\n let pmouseX;\r\n\r\n gui.__resize_handle = document.createElement('div');\r\n\r\n common.extend(gui.__resize_handle.style, {\r\n\r\n width: '6px',\r\n marginLeft: '-3px',\r\n height: '200px',\r\n cursor: 'ew-resize',\r\n position: 'absolute'\r\n // border: '1px solid blue'\r\n\r\n });\r\n\r\n function drag(e) {\r\n e.preventDefault();\r\n\r\n gui.width += pmouseX - e.clientX;\r\n gui.onResize();\r\n pmouseX = e.clientX;\r\n\r\n return false;\r\n }\r\n\r\n function dragStop() {\r\n dom.removeClass(gui.__closeButton, GUI.CLASS_DRAG);\r\n dom.unbind(window, 'mousemove', drag);\r\n dom.unbind(window, 'mouseup', dragStop);\r\n }\r\n\r\n function dragStart(e) {\r\n e.preventDefault();\r\n\r\n pmouseX = e.clientX;\r\n\r\n dom.addClass(gui.__closeButton, GUI.CLASS_DRAG);\r\n dom.bind(window, 'mousemove', drag);\r\n dom.bind(window, 'mouseup', dragStop);\r\n\r\n return false;\r\n }\r\n\r\n dom.bind(gui.__resize_handle, 'mousedown', dragStart);\r\n dom.bind(gui.__closeButton, 'mousedown', dragStart);\r\n\r\n gui.domElement.insertBefore(gui.__resize_handle, gui.domElement.firstElementChild);\r\n}\r\n\r\nfunction setWidth(gui, w) {\r\n gui.domElement.style.width = w + 'px';\r\n // Auto placed save-rows are position fixed, so we have to\r\n // set the width manually if we want it to bleed to the edge\r\n if (gui.__save_row && gui.autoPlace) {\r\n gui.__save_row.style.width = w + 'px';\r\n }\r\n if (gui.__closeButton) {\r\n gui.__closeButton.style.width = w + 'px';\r\n }\r\n}\r\n\r\nfunction getCurrentPreset(gui, useInitialValues) {\r\n const toReturn = {};\r\n\r\n // For each object I'm remembering\r\n common.each(gui.__rememberedObjects, function(val, index) {\r\n const savedValues = {};\r\n\r\n // The controllers I've made for thcommon.isObject by property\r\n const controllerMap =\r\n gui.__rememberedObjectIndecesToControllers[index];\r\n\r\n // Remember each value for each property\r\n common.each(controllerMap, function(controller, property) {\r\n savedValues[property] = useInitialValues ? controller.initialValue : controller.getValue();\r\n });\r\n\r\n // Save the values for thcommon.isObject\r\n toReturn[index] = savedValues;\r\n });\r\n\r\n return toReturn;\r\n}\r\n\r\nfunction setPresetSelectIndex(gui) {\r\n for (let index = 0; index < gui.__preset_select.length; index++) {\r\n if (gui.__preset_select[index].value === gui.preset) {\r\n gui.__preset_select.selectedIndex = index;\r\n }\r\n }\r\n}\r\n\r\nfunction updateDisplays(controllerArray) {\r\n if (controllerArray.length !== 0) {\r\n requestAnimationFrame.call(window, function() {\r\n updateDisplays(controllerArray);\r\n });\r\n }\r\n\r\n common.each(controllerArray, function(c) {\r\n c.updateDisplay();\r\n });\r\n}\r\n\r\nexport default GUI;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * Copyright 2011 Data Arts Team, Google Creative Lab\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\n\r\nimport Color from './color/Color';\r\nimport math from './color/math';\r\nimport interpret from './color/interpret';\r\n\r\nimport Controller from './controllers/Controller';\r\nimport BooleanController from './controllers/BooleanController';\r\nimport OptionController from './controllers/OptionController';\r\nimport StringController from './controllers/StringController';\r\nimport NumberController from './controllers/NumberController';\r\nimport NumberControllerBox from './controllers/NumberControllerBox';\r\nimport NumberControllerSlider from './controllers/NumberControllerSlider';\r\nimport FunctionController from './controllers/FunctionController';\r\nimport ColorController from './controllers/ColorController';\r\nimport CustomController from './controllers/CustomController';\r\n\r\nimport domImport from './dom/dom';\r\nimport GUIImport from './gui/GUI';\r\n\r\nexport const color = {\r\n Color: Color,\r\n math: math,\r\n interpret: interpret\r\n};\r\n\r\nexport const controllers = {\r\n Controller: Controller,\r\n BooleanController: BooleanController,\r\n OptionController: OptionController,\r\n StringController: StringController,\r\n NumberController: NumberController,\r\n NumberControllerBox: NumberControllerBox,\r\n NumberControllerSlider: NumberControllerSlider,\r\n FunctionController: FunctionController,\r\n ColorController: ColorController,\r\n CustomController: CustomController\r\n};\r\n\r\nexport const dom = { dom: domImport };\r\n\r\nexport const gui = { GUI: GUIImport };\r\n\r\nexport const GUI = GUIImport;\r\n\r\nexport default {\r\n color,\r\n controllers,\r\n dom,\r\n gui,\r\n GUI\r\n};\r\n"],"names":["color","forceCSSHex","colorFormat","__state","conversionName","toString","r","Math","round","g","b","a","h","s","toFixed","v","str","hex","length","ARR_EACH","Array","prototype","forEach","ARR_SLICE","slice","Common","target","each","call","arguments","obj","keys","isObject","Object","key","isUndefined","bind","toCall","args","i","apply","itr","scope","l","BREAK","fnc","func","threshold","callImmediately","timeout","delayed","callNow","setTimeout","toArray","undefined","isNaN","isArray","constructor","INTERPRETATIONS","common","isString","original","test","match","parseInt","parseFloat","isNumber","result","toReturn","interpret","family","litmus","conversions","conversion","read","tmpComponent","ColorMath","hi","floor","f","p","q","t","c","min","max","delta","NaN","hex_with_component","componentIndex","value","Color","Error","colorToString","write","defineRGBComponent","component","componentHexIndex","defineProperty","space","recalculateRGB","defineHSVComponent","recalculateHSV","math","component_from_hex","extend","hsv_to_rgb","rgb_to_hsv","COMPONENTS","rgb_to_hex","Controller","object","property","initialValue","domElement","document","createElement","__onChange","__onFinishChange","newValue","updateDisplay","getValue","EVENT_MAP","EVENT_MAP_INV","k","e","CSS_VALUE_PIXELS","cssValueToPixels","val","isNull","dom","elem","selectable","style","onselectstart","MozUserSelect","KhtmlUserSelect","unselectable","hor","vert","vertical","horizontal","position","left","right","top","bottom","eventType","pars","aux","params","className","evt","createEvent","clientX","x","clientY","y","initMouseEvent","bubbles","cancelable","window","clickCount","init","initKeyboardEvent","initKeyEvent","defaults","ctrlKey","altKey","shiftKey","metaKey","keyCode","charCode","initEvent","dispatchEvent","event","newBool","bool","addEventListener","attachEvent","removeEventListener","detachEvent","classes","split","indexOf","push","join","replace","removeAttribute","index","splice","RegExp","getComputedStyle","width","height","el","offset","offsetParent","offsetLeft","offsetTop","activeElement","type","href","BooleanController","_this","__prev","__checkbox","setAttribute","onChange","setValue","appendChild","checked","OptionController","opts","options","__select","map","element","opt","innerHTML","desiredValue","selectedIndex","isActive","StringController","__input","onBlur","blur","numDecimals","_x","NumberController","_params","__min","__max","__step","step","__impliedStep","pow","log","abs","LN10","__precision","_v","minValue","maxValue","stepValue","roundToDecimal","decimals","tenTo","NumberControllerBox","__truncationSuspended","prevY","attempted","onFinish","onMouseDrag","diff","onMouseUp","unbind","onMouseDown","i1","i2","o1","o2","NumberControllerSlider","__background","__foreground","onTouchStart","addClass","preventDefault","bgRect","getBoundingClientRect","touches","onTouchMove","onTouchEnd","pct","FunctionController","text","__button","fire","ColorController","__color","__temp","makeSelectable","__selector","__saturation_field","__field_knob","__field_knob_border","__hue_knob","__hue_field","__input_textShadow","removeClass","valueField","fieldDown","fieldDownH","setSV","fieldUpSV","setH","fieldUpH","toOriginal","fieldRect","mismatch","flip","_flip","toHexString","marginTop","vendors","linearGradient","background","vendor","cssText","hueGradient","CustomController","css","url","indoc","doc","link","rel","getElementsByTagName","cssContent","injected","head","saveDialogContents","ControllerFactory","isFunction","isBoolean","requestAnimationFrame","callback","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","CenteredDiv","backgroundElement","makeFullscreen","body","hide","display","opacity","webkitTransform","layout","defer","innerWidth","getWidth","innerHeight","getHeight","inject","styleSheet","CSS_NAMESPACE","HIDE_KEY_CODE","CLOSE_BUTTON_HEIGHT","DEFAULT_DEFAULT_PRESET_NAME","SUPPORTS_LOCAL_STORAGE","localStorage","SAVE_DIALOGUE","autoPlaceVirgin","autoPlaceContainer","hideableGuis","GUI","__ul","__folders","__controllers","__rememberedObjects","__rememberedObjectIndecesToControllers","__listening","DEFAULT_WIDTH","autoPlace","load","preset","parent","hideable","resizable","scrollable","useLocalStorage","getItem","getLocalStorageHash","saveToLocalStorage","titleRow","defineProperties","closeOnTop","getRoot","revert","name","closed","CLASS_CLOSED","onResize","__closeButton","TEXT_OPEN","TEXT_CLOSED","setItem","CLASS_MAIN","savedGui","JSON","parse","CLASS_CLOSE_BUTTON","CLASS_CLOSE_TOP","insertBefore","childNodes","CLASS_CLOSE_BOTTOM","titleRowName","createTextNode","addRow","onClickTitle","CLASS_AUTO_PLACE_CONTAINER","CLASS_AUTO_PLACE","__resizeHandler","onResizeDebounced","stringify","getSaveObject","saveToLocalStorageIfPossible","resetWidth","root","toggleHide","gui","CLASS_CONTROLLER_ROW","CLASS_TOO_TALL","CLASS_DRAG","_keydownHandler","which","add","controller","removeChild","__li","subfolder","removeFolder","newGuiParams","folders","li","folder","parentElement","getOffset","node","__save_row","__resize_handle","offsetHeight","debounce","saveDialogueContents","remembered","getCurrentPreset","presetName","newDom","liBefore","removeListeners","markPresetModified","modified","__preset_select","augmentController","__gui","nextSibling","nextElementSibling","remove","firstElementChild","listen","box","method","pc","pb","returned","oldName","wasListening","newController","compose","fakeEvent","stopPropagation","borderLeftColor","isModified","recallSavedValue","matchedIndex","controllerMap","presetMap","custom","factoryArgs","concat","before","container","location","addPresetOption","setSelected","showHideExplain","explain","addSaveMenu","div","firstChild","gears","button","button2","button3","select","getElementById","localStorageCheckBox","saveLocally","newConstructorTextArea","show","focus","save","prompt","saveAs","addResizeHandle","pmouseX","drag","dragStop","dragStart","setWidth","w","useInitialValues","savedValues","setPresetSelectIndex","updateDisplays","controllerArray","controllers","domImport","GUIImport"],"mappings":"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"}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index fc87912..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,6011 +0,0 @@
-{
- "name": "dat.gui",
- "version": "0.7.6",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
- },
- "accepts": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
- "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
- "dev": true,
- "requires": {
- "mime-types": "2.1.18",
- "negotiator": "0.6.1"
- },
- "dependencies": {
- "mime-db": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
- "dev": true,
- "requires": {
- "mime-db": "1.33.0"
- }
- }
- }
- },
- "acorn": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz",
- "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==",
- "dev": true
- },
- "acorn-jsx": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
- "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
- "dev": true,
- "requires": {
- "acorn": "3.3.0"
- },
- "dependencies": {
- "acorn": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
- "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
- "dev": true
- }
- }
- },
- "address": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz",
- "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==",
- "dev": true
- },
- "ajv-keywords": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
- "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=",
- "dev": true
- },
- "align-text": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
- "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
- "dev": true,
- "requires": {
- "kind-of": "3.2.2",
- "longest": "1.0.1",
- "repeat-string": "1.6.1"
- }
- },
- "amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
- "dev": true
- },
- "ansi-align": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
- "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
- "dev": true,
- "requires": {
- "string-width": "2.1.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0"
- }
- }
- }
- },
- "ansi-escape-sequences": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.0.0.tgz",
- "integrity": "sha512-v+0wW9Wezwsyb0uF4aBVCjmSqit3Ru7PZFziGF0o2KwTvN2zWfTi3BRLq9EkJFdg3eBbyERXGTntVpBxH1J68Q==",
- "dev": true,
- "requires": {
- "array-back": "2.0.0"
- }
- },
- "ansi-escapes": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
- "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
- "dev": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "arch": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.0.tgz",
- "integrity": "sha1-NhOqRhSQZLPB8GB5Gb8dR4boKIk=",
- "dev": true
- },
- "are-we-there-yet": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
- "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
- "dev": true,
- "requires": {
- "delegates": "1.0.0",
- "readable-stream": "2.3.3"
- }
- },
- "arg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz",
- "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==",
- "dev": true
- },
- "argparse": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
- "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
- "dev": true,
- "requires": {
- "sprintf-js": "1.0.3"
- }
- },
- "args": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/args/-/args-4.0.0.tgz",
- "integrity": "sha512-4b7lVF58nlo7sNtq8s2OueroOY/UHn0Nt/NVjsx9zn28u6yDVb9bQ/uy/5jKtHCbUDil4MlMyDLF5+OHEgnTug==",
- "dev": true,
- "requires": {
- "camelcase": "5.0.0",
- "chalk": "2.3.2",
- "leven": "2.1.0",
- "mri": "1.1.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "camelcase": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
- "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
- "dev": true
- },
- "chalk": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
- "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.1",
- "escape-string-regexp": "1.0.5",
- "supports-color": "5.4.0"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
- "dev": true,
- "requires": {
- "has-flag": "3.0.0"
- }
- }
- }
- },
- "argv-tools": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/argv-tools/-/argv-tools-0.1.1.tgz",
- "integrity": "sha512-Cc0dBvx4dvrjjKpyDA6w8RlNAw8Su30NvZbWl/Tv9ZALEVlLVkWQiHMi84Q0xNfpVuSaiQbYkdmWK8g1PLGhKw==",
- "dev": true,
- "requires": {
- "array-back": "2.0.0",
- "find-replace": "2.0.1"
- }
- },
- "arr-diff": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
- "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
- "dev": true,
- "requires": {
- "arr-flatten": "1.1.0"
- }
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "array-back": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
- "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
- "dev": true,
- "requires": {
- "typical": "2.6.1"
- }
- },
- "array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
- "dev": true
- },
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
- "dev": true,
- "requires": {
- "array-uniq": "1.0.3"
- }
- },
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
- "dev": true
- },
- "array-unique": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
- "dev": true
- },
- "arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
- "dev": true
- },
- "asn1": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
- "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
- "dev": true
- },
- "assert-plus": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
- "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
- "dev": true
- },
- "async-foreach": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
- "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
- "dev": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
- "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
- "dev": true
- },
- "aws4": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
- "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
- "dev": true
- },
- "babel-code-frame": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
- "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
- "dev": true,
- "requires": {
- "chalk": "1.1.3",
- "esutils": "2.0.2",
- "js-tokens": "3.0.2"
- }
- },
- "babel-core": {
- "version": "6.26.3",
- "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
- "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
- "dev": true,
- "requires": {
- "babel-code-frame": "6.26.0",
- "babel-generator": "6.26.1",
- "babel-helpers": "6.24.1",
- "babel-messages": "6.23.0",
- "babel-register": "6.26.0",
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0",
- "babylon": "6.18.0",
- "convert-source-map": "1.5.1",
- "debug": "2.6.9",
- "json5": "0.5.1",
- "lodash": "4.17.4",
- "minimatch": "3.0.4",
- "path-is-absolute": "1.0.1",
- "private": "0.1.8",
- "slash": "1.0.0",
- "source-map": "0.5.7"
- }
- },
- "babel-generator": {
- "version": "6.26.1",
- "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
- "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
- "dev": true,
- "requires": {
- "babel-messages": "6.23.0",
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0",
- "detect-indent": "4.0.0",
- "jsesc": "1.3.0",
- "lodash": "4.17.4",
- "source-map": "0.5.7",
- "trim-right": "1.0.1"
- }
- },
- "babel-helper-builder-binary-assignment-operator-visitor": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
- "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
- "dev": true,
- "requires": {
- "babel-helper-explode-assignable-expression": "6.24.1",
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-helper-call-delegate": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
- "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
- "dev": true,
- "requires": {
- "babel-helper-hoist-variables": "6.24.1",
- "babel-runtime": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-helper-define-map": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
- "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
- "dev": true,
- "requires": {
- "babel-helper-function-name": "6.24.1",
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0",
- "lodash": "4.17.4"
- }
- },
- "babel-helper-explode-assignable-expression": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
- "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-helper-function-name": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
- "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
- "dev": true,
- "requires": {
- "babel-helper-get-function-arity": "6.24.1",
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-helper-get-function-arity": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
- "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-helper-hoist-variables": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
- "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-helper-optimise-call-expression": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
- "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-helper-regex": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
- "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0",
- "lodash": "4.17.4"
- }
- },
- "babel-helper-remap-async-to-generator": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
- "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
- "dev": true,
- "requires": {
- "babel-helper-function-name": "6.24.1",
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-helper-replace-supers": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
- "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
- "dev": true,
- "requires": {
- "babel-helper-optimise-call-expression": "6.24.1",
- "babel-messages": "6.23.0",
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-helpers": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
- "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0"
- }
- },
- "babel-messages": {
- "version": "6.23.0",
- "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
- "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-check-es2015-constants": {
- "version": "6.22.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
- "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-external-helpers": {
- "version": "6.22.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz",
- "integrity": "sha1-IoX0iwK9Xe3oUXXK+MYuhq3M76E=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-syntax-async-functions": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
- "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
- "dev": true
- },
- "babel-plugin-syntax-exponentiation-operator": {
- "version": "6.13.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
- "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
- "dev": true
- },
- "babel-plugin-syntax-trailing-function-commas": {
- "version": "6.22.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
- "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
- "dev": true
- },
- "babel-plugin-transform-async-to-generator": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
- "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
- "dev": true,
- "requires": {
- "babel-helper-remap-async-to-generator": "6.24.1",
- "babel-plugin-syntax-async-functions": "6.13.0",
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-arrow-functions": {
- "version": "6.22.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
- "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-block-scoped-functions": {
- "version": "6.22.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
- "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-block-scoping": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
- "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0",
- "lodash": "4.17.4"
- }
- },
- "babel-plugin-transform-es2015-classes": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
- "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
- "dev": true,
- "requires": {
- "babel-helper-define-map": "6.26.0",
- "babel-helper-function-name": "6.24.1",
- "babel-helper-optimise-call-expression": "6.24.1",
- "babel-helper-replace-supers": "6.24.1",
- "babel-messages": "6.23.0",
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-computed-properties": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
- "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-destructuring": {
- "version": "6.23.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
- "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-duplicate-keys": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
- "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-for-of": {
- "version": "6.23.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
- "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-function-name": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
- "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
- "dev": true,
- "requires": {
- "babel-helper-function-name": "6.24.1",
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-literals": {
- "version": "6.22.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
- "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-modules-amd": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
- "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
- "dev": true,
- "requires": {
- "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-modules-commonjs": {
- "version": "6.26.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
- "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
- "dev": true,
- "requires": {
- "babel-plugin-transform-strict-mode": "6.24.1",
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-modules-systemjs": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
- "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
- "dev": true,
- "requires": {
- "babel-helper-hoist-variables": "6.24.1",
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-modules-umd": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
- "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
- "dev": true,
- "requires": {
- "babel-plugin-transform-es2015-modules-amd": "6.24.1",
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-object-super": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
- "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
- "dev": true,
- "requires": {
- "babel-helper-replace-supers": "6.24.1",
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-parameters": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
- "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
- "dev": true,
- "requires": {
- "babel-helper-call-delegate": "6.24.1",
- "babel-helper-get-function-arity": "6.24.1",
- "babel-runtime": "6.26.0",
- "babel-template": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-shorthand-properties": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
- "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-spread": {
- "version": "6.22.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
- "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-sticky-regex": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
- "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
- "dev": true,
- "requires": {
- "babel-helper-regex": "6.26.0",
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-template-literals": {
- "version": "6.22.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
- "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-typeof-symbol": {
- "version": "6.23.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
- "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-transform-es2015-unicode-regex": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
- "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
- "dev": true,
- "requires": {
- "babel-helper-regex": "6.26.0",
- "babel-runtime": "6.26.0",
- "regexpu-core": "2.0.0"
- }
- },
- "babel-plugin-transform-exponentiation-operator": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
- "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
- "dev": true,
- "requires": {
- "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1",
- "babel-plugin-syntax-exponentiation-operator": "6.13.0",
- "babel-runtime": "6.26.0"
- }
- },
- "babel-plugin-transform-regenerator": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
- "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
- "dev": true,
- "requires": {
- "regenerator-transform": "0.10.1"
- }
- },
- "babel-plugin-transform-strict-mode": {
- "version": "6.24.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
- "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0"
- }
- },
- "babel-preset-env": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz",
- "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==",
- "dev": true,
- "requires": {
- "babel-plugin-check-es2015-constants": "6.22.0",
- "babel-plugin-syntax-trailing-function-commas": "6.22.0",
- "babel-plugin-transform-async-to-generator": "6.24.1",
- "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
- "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
- "babel-plugin-transform-es2015-block-scoping": "6.26.0",
- "babel-plugin-transform-es2015-classes": "6.24.1",
- "babel-plugin-transform-es2015-computed-properties": "6.24.1",
- "babel-plugin-transform-es2015-destructuring": "6.23.0",
- "babel-plugin-transform-es2015-duplicate-keys": "6.24.1",
- "babel-plugin-transform-es2015-for-of": "6.23.0",
- "babel-plugin-transform-es2015-function-name": "6.24.1",
- "babel-plugin-transform-es2015-literals": "6.22.0",
- "babel-plugin-transform-es2015-modules-amd": "6.24.1",
- "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
- "babel-plugin-transform-es2015-modules-systemjs": "6.24.1",
- "babel-plugin-transform-es2015-modules-umd": "6.24.1",
- "babel-plugin-transform-es2015-object-super": "6.24.1",
- "babel-plugin-transform-es2015-parameters": "6.24.1",
- "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
- "babel-plugin-transform-es2015-spread": "6.22.0",
- "babel-plugin-transform-es2015-sticky-regex": "6.24.1",
- "babel-plugin-transform-es2015-template-literals": "6.22.0",
- "babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
- "babel-plugin-transform-es2015-unicode-regex": "6.24.1",
- "babel-plugin-transform-exponentiation-operator": "6.24.1",
- "babel-plugin-transform-regenerator": "6.26.0",
- "browserslist": "3.2.8",
- "invariant": "2.2.4",
- "semver": "5.4.1"
- }
- },
- "babel-register": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
- "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
- "dev": true,
- "requires": {
- "babel-core": "6.26.3",
- "babel-runtime": "6.26.0",
- "core-js": "2.5.2",
- "home-or-tmp": "2.0.0",
- "lodash": "4.17.4",
- "mkdirp": "0.5.1",
- "source-map-support": "0.4.18"
- }
- },
- "babel-runtime": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
- "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
- "dev": true,
- "requires": {
- "core-js": "2.5.2",
- "regenerator-runtime": "0.11.1"
- }
- },
- "babel-template": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
- "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-traverse": "6.26.0",
- "babel-types": "6.26.0",
- "babylon": "6.18.0",
- "lodash": "4.17.4"
- }
- },
- "babel-traverse": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
- "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
- "dev": true,
- "requires": {
- "babel-code-frame": "6.26.0",
- "babel-messages": "6.23.0",
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0",
- "babylon": "6.18.0",
- "debug": "2.6.9",
- "globals": "9.18.0",
- "invariant": "2.2.4",
- "lodash": "4.17.4"
- }
- },
- "babel-types": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
- "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "esutils": "2.0.2",
- "lodash": "4.17.4",
- "to-fast-properties": "1.0.3"
- }
- },
- "babylon": {
- "version": "6.18.0",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
- "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
- },
- "basic-auth": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz",
- "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=",
- "dev": true,
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
- "bcrypt-pbkdf": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
- "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
- "dev": true,
- "optional": true,
- "requires": {
- "tweetnacl": "0.14.5"
- }
- },
- "big.js": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
- "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
- "dev": true
- },
- "block-stream": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
- "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
- "dev": true,
- "requires": {
- "inherits": "2.0.3"
- }
- },
- "bluebird": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
- "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
- "dev": true
- },
- "boom": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
- "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
- "dev": true,
- "requires": {
- "hoek": "2.16.3"
- }
- },
- "boxen": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
- "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
- "dev": true,
- "requires": {
- "ansi-align": "2.0.0",
- "camelcase": "4.1.0",
- "chalk": "2.4.1",
- "cli-boxes": "1.0.0",
- "string-width": "2.1.1",
- "term-size": "1.2.0",
- "widest-line": "2.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.1",
- "escape-string-regexp": "1.0.5",
- "supports-color": "5.4.0"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0"
- }
- },
- "supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
- "dev": true,
- "requires": {
- "has-flag": "3.0.0"
- }
- }
- }
- },
- "brace-expansion": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
- "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
- "dev": true,
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
- "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
- "dev": true,
- "requires": {
- "expand-range": "1.8.2",
- "preserve": "0.2.0",
- "repeat-element": "1.1.2"
- }
- },
- "browserslist": {
- "version": "3.2.8",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
- "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
- "dev": true,
- "requires": {
- "caniuse-lite": "1.0.30000847",
- "electron-to-chromium": "1.3.48"
- }
- },
- "builtin-modules": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
- "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
- "dev": true
- },
- "bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
- "dev": true
- },
- "cache-point": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-0.4.1.tgz",
- "integrity": "sha512-4TgWfe9SF+bUy5cCql8gWHqKNrviufNwSYxLjf2utB0pY4+bdcuFwMmY1hDB+67Gz/L1vmhFNhePAjJTFBtV+Q==",
- "dev": true,
- "requires": {
- "array-back": "2.0.0",
- "fs-then-native": "2.0.0",
- "mkdirp2": "1.0.3"
- }
- },
- "caller-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
- "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
- "dev": true,
- "requires": {
- "callsites": "0.2.0"
- }
- },
- "callsites": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
- "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
- "dev": true
- },
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true
- },
- "camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
- "dev": true,
- "requires": {
- "camelcase": "2.1.1",
- "map-obj": "1.0.1"
- }
- },
- "caniuse-lite": {
- "version": "1.0.30000847",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000847.tgz",
- "integrity": "sha512-Weo+tRtVWcN2da782Ebx/27hFNEb+KP+uP6tdqAa+2S5bp1zOJhVH9tEpDygagrfvU4QjeuPwi/5VGsgT4SLaA==",
- "dev": true
- },
- "caseless": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
- "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
- "dev": true
- },
- "catharsis": {
- "version": "0.8.9",
- "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz",
- "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=",
- "dev": true,
- "requires": {
- "underscore-contrib": "0.3.0"
- }
- },
- "center-align": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
- "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "0.1.4",
- "lazy-cache": "1.0.4"
- }
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- }
- },
- "circular-json": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
- "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
- "dev": true
- },
- "cli-boxes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
- "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
- "dev": true
- },
- "cli-cursor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
- "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
- "dev": true,
- "requires": {
- "restore-cursor": "1.0.1"
- }
- },
- "cli-width": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
- "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
- "dev": true
- },
- "clipboardy": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz",
- "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==",
- "dev": true,
- "requires": {
- "arch": "2.1.0",
- "execa": "0.8.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "dev": true,
- "requires": {
- "lru-cache": "4.1.1",
- "shebang-command": "1.2.0",
- "which": "1.3.0"
- }
- },
- "execa": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz",
- "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=",
- "dev": true,
- "requires": {
- "cross-spawn": "5.1.0",
- "get-stream": "3.0.0",
- "is-stream": "1.1.0",
- "npm-run-path": "2.0.2",
- "p-finally": "1.0.0",
- "signal-exit": "3.0.2",
- "strip-eof": "1.0.0"
- }
- }
- }
- },
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "dev": true,
- "requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wrap-ansi": "2.1.0"
- }
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true
- },
- "collect-all": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.3.tgz",
- "integrity": "sha512-0y0rBgoX8IzIjBAUnO73SEtSb4Mhk3IoceWJq5zZSxb9mWORhWH8xLYo4EDSOE1jRBk1LhmfjqWFFt10h/+MEA==",
- "dev": true,
- "requires": {
- "stream-connect": "1.0.2",
- "stream-via": "1.0.4"
- }
- },
- "color-convert": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
- "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
- "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
- "dev": true,
- "requires": {
- "delayed-stream": "1.0.0"
- }
- },
- "command-line-args": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.0.1.tgz",
- "integrity": "sha512-gRJDcIjFSzMcmG/GrJlgL0wWoAxr11mVzCq32bjka0endupm9meLwvoJUKc4HDeFiEIB2X3GvNrhF5cKO4Bd4A==",
- "dev": true,
- "requires": {
- "argv-tools": "0.1.1",
- "array-back": "2.0.0",
- "find-replace": "2.0.1",
- "lodash.camelcase": "4.3.0",
- "typical": "2.6.1"
- }
- },
- "command-line-tool": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/command-line-tool/-/command-line-tool-0.8.0.tgz",
- "integrity": "sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==",
- "dev": true,
- "requires": {
- "ansi-escape-sequences": "4.0.0",
- "array-back": "2.0.0",
- "command-line-args": "5.0.1",
- "command-line-usage": "4.1.0",
- "typical": "2.6.1"
- }
- },
- "command-line-usage": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.1.0.tgz",
- "integrity": "sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==",
- "dev": true,
- "requires": {
- "ansi-escape-sequences": "4.0.0",
- "array-back": "2.0.0",
- "table-layout": "0.4.2",
- "typical": "2.6.1"
- }
- },
- "commander": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
- "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
- "dev": true
- },
- "common-sequence": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-1.0.2.tgz",
- "integrity": "sha1-MOB/P49vf5s97oVPILLTnu4Ibeg=",
- "dev": true
- },
- "commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
- "dev": true
- },
- "compressible": {
- "version": "2.0.13",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz",
- "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=",
- "dev": true,
- "requires": {
- "mime-db": "1.34.0"
- },
- "dependencies": {
- "mime-db": {
- "version": "1.34.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.34.0.tgz",
- "integrity": "sha1-RS0Oz/XDA0am3B5kseruDTcZ/5o=",
- "dev": true
- }
- }
- },
- "compression": {
- "version": "1.7.2",
- "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz",
- "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=",
- "dev": true,
- "requires": {
- "accepts": "1.3.5",
- "bytes": "3.0.0",
- "compressible": "2.0.13",
- "debug": "2.6.9",
- "on-headers": "1.0.1",
- "safe-buffer": "5.1.1",
- "vary": "1.1.2"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "concat-stream": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
- "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
- "dev": true,
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.3",
- "typedarray": "0.0.6"
- }
- },
- "concurrently": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-3.5.1.tgz",
- "integrity": "sha512-689HrwGw8Rbk1xtV9C4dY6TPJAvIYZbRbnKSAtfJ7tHqICFGoZ0PCWYjxfmerRyxBG0o3sbG3pe7N8vqPwIHuQ==",
- "dev": true,
- "requires": {
- "chalk": "0.5.1",
- "commander": "2.6.0",
- "date-fns": "1.29.0",
- "lodash": "4.17.4",
- "rx": "2.3.24",
- "spawn-command": "0.0.2-1",
- "supports-color": "3.2.3",
- "tree-kill": "1.2.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz",
- "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=",
- "dev": true
- },
- "ansi-styles": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz",
- "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=",
- "dev": true
- },
- "chalk": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
- "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=",
- "dev": true,
- "requires": {
- "ansi-styles": "1.1.0",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "0.1.0",
- "strip-ansi": "0.3.0",
- "supports-color": "0.2.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz",
- "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=",
- "dev": true
- }
- }
- },
- "commander": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz",
- "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=",
- "dev": true
- },
- "has-ansi": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
- "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=",
- "dev": true,
- "requires": {
- "ansi-regex": "0.2.1"
- }
- },
- "strip-ansi": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
- "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=",
- "dev": true,
- "requires": {
- "ansi-regex": "0.2.1"
- }
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "dev": true,
- "requires": {
- "has-flag": "1.0.0"
- }
- }
- }
- },
- "config-master": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz",
- "integrity": "sha1-ZnZjWQUFooO/JqSE1oSJ10xUhdo=",
- "dev": true,
- "requires": {
- "walk-back": "2.0.1"
- },
- "dependencies": {
- "walk-back": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-2.0.1.tgz",
- "integrity": "sha1-VU4qnYdPrEeoywBr9EwvDEmYoKQ=",
- "dev": true
- }
- }
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
- "dev": true
- },
- "contains-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
- "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
- "dev": true
- },
- "content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
- "dev": true
- },
- "convert-source-map": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
- "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
- "dev": true
- },
- "core-js": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.2.tgz",
- "integrity": "sha1-vEZIZW59ydyA19PHu8Fy2W50TmM=",
- "dev": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
- "dev": true
- },
- "cross-spawn": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
- "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
- "dev": true,
- "requires": {
- "lru-cache": "4.1.1",
- "which": "1.3.0"
- }
- },
- "cryptiles": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
- "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
- "dev": true,
- "requires": {
- "boom": "2.10.1"
- }
- },
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
- "dev": true,
- "requires": {
- "array-find-index": "1.0.2"
- }
- },
- "d": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz",
- "integrity": "sha1-2hhMU10Y2O57oqoim5FACfrhEwk=",
- "dev": true,
- "requires": {
- "es5-ext": "0.10.37"
- }
- },
- "dargs": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz",
- "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=",
- "dev": true
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
- }
- },
- "date-fns": {
- "version": "1.29.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz",
- "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==",
- "dev": true
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "deep-extend": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.0.tgz",
- "integrity": "sha1-bvSgmwX5iw41jW2T1Mo8rsZnKAM=",
- "dev": true
- },
- "deep-is": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
- "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
- "dev": true
- },
- "del": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
- "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
- "dev": true,
- "requires": {
- "globby": "5.0.0",
- "is-path-cwd": "1.0.0",
- "is-path-in-cwd": "1.0.0",
- "object-assign": "4.1.1",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1",
- "rimraf": "2.6.2"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
- "dev": true
- },
- "depd": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
- "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
- "dev": true
- },
- "destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
- "dev": true
- },
- "detect-indent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
- "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
- "dev": true,
- "requires": {
- "repeating": "2.0.1"
- }
- },
- "detect-port": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.2.3.tgz",
- "integrity": "sha512-IDbrX6PxqnYy8jV4wSHBaJlErYKTJvW8OQb9F7xivl1iQLqiUYHGa+nZ61Do6+N5uuOn/pReXKNqI9rUn04vug==",
- "dev": true,
- "requires": {
- "address": "1.0.3",
- "debug": "2.6.9"
- }
- },
- "dmd": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/dmd/-/dmd-3.0.10.tgz",
- "integrity": "sha512-+tRZIFV9fII538XFZSoRP1abtIy55RYa4waGvtKB36LD97NRorWsYT3V3HEURmnXpA4eGIFQph1E2f+51hWrTg==",
- "dev": true,
- "requires": {
- "array-back": "2.0.0",
- "cache-point": "0.4.1",
- "common-sequence": "1.0.2",
- "file-set": "1.1.1",
- "handlebars": "4.0.11",
- "marked": "0.3.12",
- "object-get": "2.1.0",
- "reduce-flatten": "1.0.1",
- "reduce-unique": "1.0.0",
- "reduce-without": "1.0.1",
- "test-value": "3.0.0",
- "walk-back": "3.0.0"
- }
- },
- "doctrine": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz",
- "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==",
- "dev": true,
- "requires": {
- "esutils": "2.0.2"
- }
- },
- "ecc-jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
- "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
- "dev": true,
- "optional": true,
- "requires": {
- "jsbn": "0.1.1"
- }
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
- "dev": true
- },
- "electron-to-chromium": {
- "version": "1.3.48",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz",
- "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=",
- "dev": true
- },
- "emojis-list": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
- "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
- "dev": true
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
- "dev": true
- },
- "error-ex": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
- "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
- "dev": true,
- "requires": {
- "is-arrayish": "0.2.1"
- }
- },
- "es5-ext": {
- "version": "0.10.37",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz",
- "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=",
- "dev": true,
- "requires": {
- "es6-iterator": "2.0.3",
- "es6-symbol": "3.1.1"
- },
- "dependencies": {
- "d": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
- "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
- "dev": true,
- "requires": {
- "es5-ext": "0.10.37"
- }
- },
- "es6-symbol": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
- "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
- "dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37"
- }
- }
- }
- },
- "es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
- "dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37",
- "es6-symbol": "3.1.1"
- },
- "dependencies": {
- "d": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
- "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
- "dev": true,
- "requires": {
- "es5-ext": "0.10.37"
- }
- },
- "es6-symbol": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
- "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
- "dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37"
- }
- }
- }
- },
- "es6-map": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.3.tgz",
- "integrity": "sha1-/ljGZUxqzVTkOXzbcjedWbatWJQ=",
- "dev": true,
- "requires": {
- "d": "0.1.1",
- "es5-ext": "0.10.37",
- "es6-iterator": "2.0.3",
- "es6-set": "0.1.5",
- "es6-symbol": "3.0.2",
- "event-emitter": "0.3.5"
- }
- },
- "es6-set": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
- "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
- "dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37",
- "es6-iterator": "2.0.3",
- "es6-symbol": "3.1.1",
- "event-emitter": "0.3.5"
- },
- "dependencies": {
- "d": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
- "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
- "dev": true,
- "requires": {
- "es5-ext": "0.10.37"
- }
- },
- "es6-symbol": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
- "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
- "dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37"
- }
- }
- }
- },
- "es6-symbol": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.0.2.tgz",
- "integrity": "sha1-HpKIeMb15jVBYltLtN9K8H0VQhk=",
- "dev": true,
- "requires": {
- "d": "0.1.1",
- "es5-ext": "0.10.37"
- }
- },
- "es6-weak-map": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
- "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
- "dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37",
- "es6-iterator": "2.0.3",
- "es6-symbol": "3.1.1"
- },
- "dependencies": {
- "d": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
- "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
- "dev": true,
- "requires": {
- "es5-ext": "0.10.37"
- }
- },
- "es6-symbol": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
- "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
- "dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37"
- }
- }
- }
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
- },
- "escope": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
- "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
- "dev": true,
- "requires": {
- "es6-map": "0.1.3",
- "es6-weak-map": "2.0.2",
- "esrecurse": "4.2.0",
- "estraverse": "4.2.0"
- }
- },
- "eslint": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz",
- "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=",
- "dev": true,
- "requires": {
- "babel-code-frame": "6.26.0",
- "chalk": "1.1.3",
- "concat-stream": "1.6.0",
- "debug": "2.6.9",
- "doctrine": "2.0.2",
- "escope": "3.6.0",
- "espree": "3.5.2",
- "esquery": "1.0.0",
- "estraverse": "4.2.0",
- "esutils": "2.0.2",
- "file-entry-cache": "2.0.0",
- "glob": "7.1.2",
- "globals": "9.18.0",
- "ignore": "3.3.7",
- "imurmurhash": "0.1.4",
- "inquirer": "0.12.0",
- "is-my-json-valid": "2.16.1",
- "is-resolvable": "1.0.0",
- "js-yaml": "3.7.0",
- "json-stable-stringify": "1.0.1",
- "levn": "0.3.0",
- "lodash": "4.17.4",
- "mkdirp": "0.5.1",
- "natural-compare": "1.4.0",
- "optionator": "0.8.2",
- "path-is-inside": "1.0.2",
- "pluralize": "1.2.1",
- "progress": "1.1.8",
- "require-uncached": "1.0.3",
- "shelljs": "0.7.8",
- "strip-bom": "3.0.0",
- "strip-json-comments": "2.0.1",
- "table": "3.8.3",
- "text-table": "0.2.0",
- "user-home": "2.0.0"
- },
- "dependencies": {
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- }
- }
- },
- "eslint-config-airbnb-base": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-7.2.0.tgz",
- "integrity": "sha1-Gi/3fMXUq8Lhxdrr5BBvzpX/fCo=",
- "dev": true
- },
- "eslint-import-resolver-node": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz",
- "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "object-assign": "4.1.1",
- "resolve": "1.1.7"
- }
- },
- "eslint-loader": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz",
- "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==",
- "dev": true,
- "requires": {
- "loader-fs-cache": "1.0.1",
- "loader-utils": "1.1.0",
- "object-assign": "4.1.1",
- "object-hash": "1.2.0",
- "rimraf": "2.6.2"
- },
- "dependencies": {
- "loader-utils": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
- "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
- "dev": true,
- "requires": {
- "big.js": "3.2.0",
- "emojis-list": "2.1.0",
- "json5": "0.5.1"
- }
- }
- }
- },
- "eslint-plugin-import": {
- "version": "1.16.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-1.16.0.tgz",
- "integrity": "sha1-svoH68xTUE0PKkR3WC7Iv/GHG58=",
- "dev": true,
- "requires": {
- "builtin-modules": "1.1.1",
- "contains-path": "0.1.0",
- "debug": "2.6.9",
- "doctrine": "1.3.0",
- "es6-map": "0.1.3",
- "es6-set": "0.1.5",
- "eslint-import-resolver-node": "0.2.3",
- "has": "1.0.1",
- "lodash.cond": "4.5.2",
- "lodash.endswith": "4.2.1",
- "lodash.find": "4.6.0",
- "lodash.findindex": "4.6.0",
- "minimatch": "3.0.4",
- "object-assign": "4.1.1",
- "pkg-dir": "1.0.0",
- "pkg-up": "1.0.0"
- },
- "dependencies": {
- "doctrine": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.3.0.tgz",
- "integrity": "sha1-E+dWgrVVGEJCdvfBc3g0Vu+RPSY=",
- "dev": true,
- "requires": {
- "esutils": "2.0.2",
- "isarray": "1.0.0"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- }
- }
- },
- "espree": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz",
- "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==",
- "dev": true,
- "requires": {
- "acorn": "5.2.1",
- "acorn-jsx": "3.0.1"
- }
- },
- "esprima": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
- "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
- "dev": true
- },
- "esquery": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz",
- "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=",
- "dev": true,
- "requires": {
- "estraverse": "4.2.0"
- }
- },
- "esrecurse": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
- "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
- "dev": true,
- "requires": {
- "estraverse": "4.2.0",
- "object-assign": "4.1.1"
- }
- },
- "estraverse": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
- "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
- "dev": true
- },
- "estree-walker": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz",
- "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=",
- "dev": true
- },
- "esutils": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
- "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
- "dev": true
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
- "dev": true
- },
- "event-emitter": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
- "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
- "dev": true,
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.37"
- },
- "dependencies": {
- "d": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
- "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
- "dev": true,
- "requires": {
- "es5-ext": "0.10.37"
- }
- }
- }
- },
- "execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
- "dev": true,
- "requires": {
- "cross-spawn": "5.1.0",
- "get-stream": "3.0.0",
- "is-stream": "1.1.0",
- "npm-run-path": "2.0.2",
- "p-finally": "1.0.0",
- "signal-exit": "3.0.2",
- "strip-eof": "1.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "dev": true,
- "requires": {
- "lru-cache": "4.1.1",
- "shebang-command": "1.2.0",
- "which": "1.3.0"
- }
- }
- }
- },
- "exit-hook": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
- "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
- "dev": true
- },
- "expand-brackets": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
- "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
- "dev": true,
- "requires": {
- "is-posix-bracket": "0.1.1"
- }
- },
- "expand-range": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
- "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
- "dev": true,
- "requires": {
- "fill-range": "2.2.4"
- }
- },
- "extend": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
- "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
- "dev": true
- },
- "extglob": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
- "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
- "dev": true,
- "requires": {
- "is-extglob": "1.0.0"
- }
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
- "dev": true
- },
- "figlet": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.2.0.tgz",
- "integrity": "sha1-bEZTc3j6tkkUa1phQ92gGbQwtBA=",
- "dev": true
- },
- "figures": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
- "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "1.0.5",
- "object-assign": "4.1.1"
- }
- },
- "file-entry-cache": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
- "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
- "dev": true,
- "requires": {
- "flat-cache": "1.3.0",
- "object-assign": "4.1.1"
- }
- },
- "file-set": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/file-set/-/file-set-1.1.1.tgz",
- "integrity": "sha1-0+xwwIDsjxjyBLod4QZ4DJBWkms=",
- "dev": true,
- "requires": {
- "array-back": "1.0.4",
- "glob": "7.1.2"
- },
- "dependencies": {
- "array-back": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
- "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
- "dev": true,
- "requires": {
- "typical": "2.6.1"
- }
- }
- }
- },
- "filename-regex": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
- "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
- "dev": true
- },
- "filesize": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
- "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
- "dev": true
- },
- "fill-range": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
- "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
- "dev": true,
- "requires": {
- "is-number": "2.1.0",
- "isobject": "2.1.0",
- "randomatic": "3.0.0",
- "repeat-element": "1.1.2",
- "repeat-string": "1.6.1"
- }
- },
- "find-cache-dir": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
- "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
- "dev": true,
- "requires": {
- "commondir": "1.0.1",
- "mkdirp": "0.5.1",
- "pkg-dir": "1.0.0"
- }
- },
- "find-replace": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-2.0.1.tgz",
- "integrity": "sha512-LzDo3Fpa30FLIBsh6DCDnMN1KW2g4QKkqKmejlImgWY67dDFPX/x9Kh/op/GK522DchQXEvDi/wD48HKW49XOQ==",
- "dev": true,
- "requires": {
- "array-back": "2.0.0",
- "test-value": "3.0.0"
- }
- },
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "requires": {
- "path-exists": "2.1.0",
- "pinkie-promise": "2.0.1"
- }
- },
- "flat-cache": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
- "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
- "dev": true,
- "requires": {
- "circular-json": "0.3.3",
- "del": "2.2.2",
- "graceful-fs": "4.1.11",
- "write": "0.2.1"
- }
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
- "dev": true
- },
- "for-own": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
- "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
- "dev": true,
- "requires": {
- "for-in": "1.0.2"
- }
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "dev": true
- },
- "form-data": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
- "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
- "dev": true,
- "requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.6",
- "mime-types": "2.1.17"
- }
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
- "dev": true
- },
- "fs-extra": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
- "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "jsonfile": "4.0.0",
- "universalify": "0.1.1"
- }
- },
- "fs-then-native": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz",
- "integrity": "sha1-GaEk2U2QwiyOBF8ujdbr6jbUjGc=",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
- },
- "fstream": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
- "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "inherits": "2.0.3",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2"
- }
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "dev": true,
- "requires": {
- "aproba": "1.2.0",
- "console-control-strings": "1.1.0",
- "has-unicode": "2.0.1",
- "object-assign": "4.1.1",
- "signal-exit": "3.0.2",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wide-align": "1.1.2"
- }
- },
- "gaze": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
- "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=",
- "dev": true,
- "requires": {
- "globule": "1.2.0"
- }
- },
- "generate-function": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
- "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
- "dev": true
- },
- "generate-object-property": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
- "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
- "dev": true,
- "requires": {
- "is-property": "1.0.2"
- }
- },
- "get-caller-file": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
- "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
- "dev": true
- },
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
- "dev": true
- },
- "get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
- "dev": true
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
- }
- },
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "glob-base": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
- "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
- "dev": true,
- "requires": {
- "glob-parent": "2.0.0",
- "is-glob": "2.0.1"
- }
- },
- "glob-parent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
- "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
- "dev": true,
- "requires": {
- "is-glob": "2.0.1"
- }
- },
- "globals": {
- "version": "9.18.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
- "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
- "dev": true
- },
- "globby": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
- "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
- "dev": true,
- "requires": {
- "array-union": "1.0.2",
- "arrify": "1.0.1",
- "glob": "7.1.2",
- "object-assign": "4.1.1",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1"
- }
- },
- "globule": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz",
- "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=",
- "dev": true,
- "requires": {
- "glob": "7.1.2",
- "lodash": "4.17.4",
- "minimatch": "3.0.4"
- }
- },
- "graceful-fs": {
- "version": "4.1.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
- "dev": true
- },
- "handlebars": {
- "version": "4.0.11",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
- "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
- "dev": true,
- "requires": {
- "async": "1.5.2",
- "optimist": "0.6.1",
- "source-map": "0.4.4",
- "uglify-js": "2.8.29"
- },
- "dependencies": {
- "async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
- "dev": true
- },
- "camelcase": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
- "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
- "dev": true,
- "optional": true
- },
- "cliui": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
- "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
- "dev": true,
- "optional": true,
- "requires": {
- "center-align": "0.1.3",
- "right-align": "0.1.3",
- "wordwrap": "0.0.2"
- }
- },
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "requires": {
- "amdefine": "1.0.1"
- }
- },
- "uglify-js": {
- "version": "2.8.29",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
- "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
- "dev": true,
- "optional": true,
- "requires": {
- "source-map": "0.5.7",
- "uglify-to-browserify": "1.0.2",
- "yargs": "3.10.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "optional": true
- }
- }
- },
- "wordwrap": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
- "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
- "dev": true,
- "optional": true
- },
- "yargs": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
- "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
- "dev": true,
- "optional": true,
- "requires": {
- "camelcase": "1.2.1",
- "cliui": "2.1.0",
- "decamelize": "1.2.0",
- "window-size": "0.1.0"
- }
- }
- }
- },
- "har-validator": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
- "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
- "dev": true,
- "requires": {
- "chalk": "1.1.3",
- "commander": "2.15.1",
- "is-my-json-valid": "2.16.1",
- "pinkie-promise": "2.0.1"
- }
- },
- "has": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
- "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
- "dev": true,
- "requires": {
- "function-bind": "1.1.1"
- }
- },
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
- "dev": true
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
- "dev": true
- },
- "hawk": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
- "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
- "dev": true,
- "requires": {
- "boom": "2.10.1",
- "cryptiles": "2.0.5",
- "hoek": "2.16.3",
- "sntp": "1.0.9"
- }
- },
- "hoek": {
- "version": "2.16.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
- "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
- "dev": true
- },
- "home-or-tmp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz",
- "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
- "dev": true,
- "requires": {
- "os-homedir": "1.0.2",
- "os-tmpdir": "1.0.2"
- }
- },
- "hosted-git-info": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
- "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==",
- "dev": true
- },
- "http-errors": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
- "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
- "dev": true,
- "requires": {
- "depd": "1.1.1",
- "inherits": "2.0.3",
- "setprototypeof": "1.0.3",
- "statuses": "1.5.0"
- }
- },
- "http-signature": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
- "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
- "dev": true,
- "requires": {
- "assert-plus": "0.2.0",
- "jsprim": "1.4.1",
- "sshpk": "1.14.1"
- }
- },
- "iconv-lite": {
- "version": "0.4.19",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
- "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
- "dev": true
- },
- "ignore": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
- "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==",
- "dev": true
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
- },
- "in-publish": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
- "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
- "dev": true
- },
- "indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
- "dev": true,
- "requires": {
- "repeating": "2.0.1"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
- "requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
- "dev": true
- },
- "ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "dev": true
- },
- "inquirer": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
- "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
- "dev": true,
- "requires": {
- "ansi-escapes": "1.4.0",
- "ansi-regex": "2.1.1",
- "chalk": "1.1.3",
- "cli-cursor": "1.0.2",
- "cli-width": "2.2.0",
- "figures": "1.7.0",
- "lodash": "4.17.4",
- "readline2": "1.0.1",
- "run-async": "0.1.0",
- "rx-lite": "3.1.2",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "through": "2.3.8"
- }
- },
- "interpret": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
- "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
- "dev": true
- },
- "invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "dev": true,
- "requires": {
- "loose-envify": "1.3.1"
- }
- },
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "dev": true
- },
- "ip": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
- "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
- "dev": true
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-builtin-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
- "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
- "dev": true,
- "requires": {
- "builtin-modules": "1.1.1"
- }
- },
- "is-dotfile": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
- "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
- "dev": true
- },
- "is-equal-shallow": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
- "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
- "dev": true,
- "requires": {
- "is-primitive": "2.0.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
- "dev": true
- },
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
- "dev": true
- },
- "is-finite": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
- "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
- "dev": true,
- "requires": {
- "number-is-nan": "1.0.1"
- }
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "1.0.1"
- }
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "dev": true,
- "requires": {
- "is-extglob": "1.0.0"
- }
- },
- "is-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
- "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
- "dev": true
- },
- "is-my-json-valid": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz",
- "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==",
- "dev": true,
- "requires": {
- "generate-function": "2.0.0",
- "generate-object-property": "1.2.0",
- "jsonpointer": "4.0.1",
- "xtend": "4.0.1"
- }
- },
- "is-number": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
- "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
- "dev": true,
- "requires": {
- "kind-of": "3.2.2"
- }
- },
- "is-path-cwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
- "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
- "dev": true
- },
- "is-path-in-cwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz",
- "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=",
- "dev": true,
- "requires": {
- "is-path-inside": "1.0.1"
- }
- },
- "is-path-inside": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
- "dev": true,
- "requires": {
- "path-is-inside": "1.0.2"
- }
- },
- "is-posix-bracket": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
- "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
- "dev": true
- },
- "is-primitive": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
- "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
- "dev": true
- },
- "is-property": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
- "dev": true
- },
- "is-resolvable": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz",
- "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=",
- "dev": true,
- "requires": {
- "tryit": "1.0.3"
- }
- },
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
- },
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
- },
- "is-wsl": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
- "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "dev": true
- },
- "js-base64": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz",
- "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==",
- "dev": true
- },
- "js-tokens": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
- "dev": true
- },
- "js-yaml": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
- "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
- "dev": true,
- "requires": {
- "argparse": "1.0.9",
- "esprima": "2.7.3"
- }
- },
- "js2xmlparser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz",
- "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=",
- "dev": true,
- "requires": {
- "xmlcreate": "1.0.2"
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true,
- "optional": true
- },
- "jsdoc": {
- "version": "3.5.5",
- "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz",
- "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==",
- "dev": true,
- "requires": {
- "babylon": "7.0.0-beta.19",
- "bluebird": "3.5.1",
- "catharsis": "0.8.9",
- "escape-string-regexp": "1.0.5",
- "js2xmlparser": "3.0.0",
- "klaw": "2.0.0",
- "marked": "0.3.12",
- "mkdirp": "0.5.1",
- "requizzle": "0.2.1",
- "strip-json-comments": "2.0.1",
- "taffydb": "2.6.2",
- "underscore": "1.8.3"
- },
- "dependencies": {
- "babylon": {
- "version": "7.0.0-beta.19",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz",
- "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==",
- "dev": true
- }
- }
- },
- "jsdoc-api": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-4.0.1.tgz",
- "integrity": "sha512-qCzHGQxfd9toMRjQft9E44Y40zWDPgf13pt3n+xExk8+wmVd7aueW6cTSQOHyjQG1v07INunQD8AcCAPxhZVmw==",
- "dev": true,
- "requires": {
- "array-back": "2.0.0",
- "cache-point": "0.4.1",
- "collect-all": "1.0.3",
- "file-set": "1.1.1",
- "fs-then-native": "2.0.0",
- "jsdoc": "3.5.5",
- "object-to-spawn-args": "1.1.1",
- "temp-path": "1.0.0",
- "walk-back": "3.0.0"
- }
- },
- "jsdoc-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-3.0.1.tgz",
- "integrity": "sha512-btZLp4wYl90vcAfgk4hoGQbO17iBVrhh3LJRMKZNtZgniO3F8H2CjxXld0owBIB1XxN+j3bAcWZnZKMnSj3iMA==",
- "dev": true,
- "requires": {
- "array-back": "2.0.0",
- "lodash.omit": "4.5.0",
- "lodash.pick": "4.4.0",
- "reduce-extract": "1.0.0",
- "sort-array": "2.0.0",
- "test-value": "3.0.0"
- }
- },
- "jsdoc-to-markdown": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-4.0.1.tgz",
- "integrity": "sha512-LHJRoLoLyDdxNcColgkLoB/rFG5iRP+PNJjMILI0x+95IdEAtyjSt0wJ6ZlKxRpkhBYtQXTQQ119hMqPIUZzTQ==",
- "dev": true,
- "requires": {
- "array-back": "2.0.0",
- "command-line-tool": "0.8.0",
- "config-master": "3.1.0",
- "dmd": "3.0.10",
- "jsdoc-api": "4.0.1",
- "jsdoc-parse": "3.0.1",
- "walk-back": "3.0.0"
- }
- },
- "jsesc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
- "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
- "dev": true
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
- },
- "json-stable-stringify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
- "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
- "dev": true,
- "requires": {
- "jsonify": "0.0.0"
- }
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
- },
- "json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
- "dev": true
- },
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11"
- }
- },
- "jsonify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
- "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
- "dev": true
- },
- "jsonpointer": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
- "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
- "dev": true
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "1.1.6"
- }
- },
- "klaw": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz",
- "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11"
- }
- },
- "lazy-cache": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
- "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
- "dev": true,
- "optional": true
- },
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "dev": true,
- "requires": {
- "invert-kv": "1.0.0"
- }
- },
- "leven": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
- "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
- "dev": true
- },
- "levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "dev": true,
- "requires": {
- "prelude-ls": "1.1.2",
- "type-check": "0.3.2"
- }
- },
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "parse-json": "2.2.0",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1",
- "strip-bom": "2.0.0"
- }
- },
- "loader-fs-cache": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz",
- "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=",
- "dev": true,
- "requires": {
- "find-cache-dir": "0.1.1",
- "mkdirp": "0.5.1"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "2.0.0",
- "path-exists": "3.0.0"
- },
- "dependencies": {
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
- }
- },
- "lodash": {
- "version": "4.17.4",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
- "dev": true
- },
- "lodash.assign": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
- "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
- "dev": true
- },
- "lodash.camelcase": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
- "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
- "dev": true
- },
- "lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
- "dev": true
- },
- "lodash.cond": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz",
- "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=",
- "dev": true
- },
- "lodash.endswith": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz",
- "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=",
- "dev": true
- },
- "lodash.find": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz",
- "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=",
- "dev": true
- },
- "lodash.findindex": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.findindex/-/lodash.findindex-4.6.0.tgz",
- "integrity": "sha1-oyRd7mH7m24GJLU1ElYku2nBEQY=",
- "dev": true
- },
- "lodash.mergewith": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
- "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
- "dev": true
- },
- "lodash.omit": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
- "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=",
- "dev": true
- },
- "lodash.padend": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz",
- "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=",
- "dev": true
- },
- "lodash.pick": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
- "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
- "dev": true
- },
- "longest": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
- "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
- "dev": true
- },
- "loose-envify": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
- "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
- "dev": true,
- "requires": {
- "js-tokens": "3.0.2"
- }
- },
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
- "dev": true,
- "requires": {
- "currently-unhandled": "0.4.1",
- "signal-exit": "3.0.2"
- }
- },
- "lru-cache": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
- "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==",
- "dev": true,
- "requires": {
- "pseudomap": "1.0.2",
- "yallist": "2.1.2"
- }
- },
- "magic-string": {
- "version": "0.22.5",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz",
- "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==",
- "dev": true,
- "requires": {
- "vlq": "0.2.3"
- }
- },
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- },
- "marked": {
- "version": "0.3.12",
- "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.12.tgz",
- "integrity": "sha512-k4NaW+vS7ytQn6MgJn3fYpQt20/mOgYM5Ft9BYMfQJDz2QT6yEeS9XJ8k2Nw8JTeWK/znPPW2n3UJGzyYEiMoA==",
- "dev": true
- },
- "math-random": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
- "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
- "dev": true
- },
- "mem": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
- "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
- "dev": true,
- "requires": {
- "mimic-fn": "1.1.0"
- }
- },
- "meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
- "dev": true,
- "requires": {
- "camelcase-keys": "2.1.0",
- "decamelize": "1.2.0",
- "loud-rejection": "1.6.0",
- "map-obj": "1.0.1",
- "minimist": "1.2.0",
- "normalize-package-data": "2.4.0",
- "object-assign": "4.1.1",
- "read-pkg-up": "1.0.1",
- "redent": "1.0.0",
- "trim-newlines": "1.0.0"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
- }
- },
- "micro": {
- "version": "9.3.1",
- "resolved": "https://registry.npmjs.org/micro/-/micro-9.3.1.tgz",
- "integrity": "sha512-83uimpPJqfwkfKvJl2WWontBlV3hmzrIgyJ+L2uhDXKNk7Ll+/ezK3zBz7TljubpKPqjM0JdT2Ker4MTPmhjgA==",
- "dev": true,
- "requires": {
- "arg": "2.0.0",
- "chalk": "2.4.0",
- "content-type": "1.0.4",
- "is-stream": "1.1.0",
- "raw-body": "2.3.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz",
- "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.1",
- "escape-string-regexp": "1.0.5",
- "supports-color": "5.4.0"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
- "dev": true,
- "requires": {
- "has-flag": "3.0.0"
- }
- }
- }
- },
- "micro-compress": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micro-compress/-/micro-compress-1.0.0.tgz",
- "integrity": "sha1-U/WoC0rQMgyhZaVZtuPfFF1PcE8=",
- "dev": true,
- "requires": {
- "compression": "1.7.2"
- }
- },
- "micromatch": {
- "version": "2.3.11",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
- "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
- "dev": true,
- "requires": {
- "arr-diff": "2.0.0",
- "array-unique": "0.2.1",
- "braces": "1.8.5",
- "expand-brackets": "0.1.5",
- "extglob": "0.3.2",
- "filename-regex": "2.0.1",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1",
- "kind-of": "3.2.2",
- "normalize-path": "2.1.1",
- "object.omit": "2.0.1",
- "parse-glob": "3.0.4",
- "regex-cache": "0.4.4"
- }
- },
- "mime": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
- "dev": true
- },
- "mime-db": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
- "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.17",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
- "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
- "dev": true,
- "requires": {
- "mime-db": "1.30.0"
- }
- },
- "mimic-fn": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz",
- "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=",
- "dev": true
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "1.1.8"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
- },
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
- "dev": true,
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "mkdirp2": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.3.tgz",
- "integrity": "sha1-zI3YJl8fBuLY9bELblL04FC+0hs=",
- "dev": true
- },
- "mri": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.0.tgz",
- "integrity": "sha1-XAo/KcjM/7ux7JQdzsCdcfoy82o=",
- "dev": true
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
- },
- "mute-stream": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
- "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=",
- "dev": true
- },
- "nan": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
- "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
- "dev": true
- },
- "negotiator": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
- "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
- "dev": true
- },
- "node-gyp": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz",
- "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=",
- "dev": true,
- "requires": {
- "fstream": "1.0.11",
- "glob": "7.1.2",
- "graceful-fs": "4.1.11",
- "minimatch": "3.0.4",
- "mkdirp": "0.5.1",
- "nopt": "3.0.6",
- "npmlog": "4.1.2",
- "osenv": "0.1.5",
- "request": "2.79.0",
- "rimraf": "2.6.2",
- "semver": "5.3.0",
- "tar": "2.2.1",
- "which": "1.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
- "dev": true
- }
- }
- },
- "node-sass": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz",
- "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==",
- "dev": true,
- "requires": {
- "async-foreach": "0.1.3",
- "chalk": "1.1.3",
- "cross-spawn": "3.0.1",
- "gaze": "1.1.2",
- "get-stdin": "4.0.1",
- "glob": "7.1.2",
- "in-publish": "2.0.0",
- "lodash.assign": "4.2.0",
- "lodash.clonedeep": "4.5.0",
- "lodash.mergewith": "4.6.1",
- "meow": "3.7.0",
- "mkdirp": "0.5.1",
- "nan": "2.10.0",
- "node-gyp": "3.6.2",
- "npmlog": "4.1.2",
- "request": "2.79.0",
- "sass-graph": "2.2.4",
- "stdout-stream": "1.4.0",
- "true-case-path": "1.0.2"
- }
- },
- "node-version": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.1.3.tgz",
- "integrity": "sha512-rEwE51JWn0yN3Wl5BXeGn5d52OGbSXzWiiXRjAQeuyvcGKyvuSILW2rb3G7Xh+nexzLwhTpek6Ehxd6IjvHePg==",
- "dev": true
- },
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "dev": true,
- "requires": {
- "abbrev": "1.1.1"
- }
- },
- "normalize-package-data": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
- "dev": true,
- "requires": {
- "hosted-git-info": "2.5.0",
- "is-builtin-module": "1.0.0",
- "semver": "5.4.1",
- "validate-npm-package-license": "3.0.1"
- }
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "1.1.0"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "requires": {
- "path-key": "2.0.1"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "dev": true,
- "requires": {
- "are-we-there-yet": "1.1.4",
- "console-control-strings": "1.1.0",
- "gauge": "2.7.4",
- "set-blocking": "2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "dev": true
- },
- "object-get": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.0.tgz",
- "integrity": "sha1-ciu9tgA576R8rTxtws5RqFwCxa4=",
- "dev": true
- },
- "object-hash": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz",
- "integrity": "sha512-smRWXzkvxw72VquyZ0wggySl7PFUtoDhvhpdwgESXxUrH7vVhhp9asfup1+rVLrhsl7L45Ee1Q/l5R2Ul4MwUg==",
- "dev": true
- },
- "object-to-spawn-args": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-1.1.1.tgz",
- "integrity": "sha1-d9qIJ/Bz0BHJ4bFz+JV4FHAkZ4U=",
- "dev": true
- },
- "object.omit": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
- "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
- "dev": true,
- "requires": {
- "for-own": "0.1.5",
- "is-extendable": "0.1.1"
- }
- },
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "dev": true,
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "on-headers": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
- "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
- "requires": {
- "wrappy": "1.0.2"
- }
- },
- "onetime": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
- "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
- "dev": true
- },
- "openssl-self-signed-certificate": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/openssl-self-signed-certificate/-/openssl-self-signed-certificate-1.1.6.tgz",
- "integrity": "sha1-nTpHdrGlfphHNQOSEUrS+RWoPdQ=",
- "dev": true
- },
- "opn": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
- "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
- "dev": true,
- "requires": {
- "is-wsl": "1.1.0"
- }
- },
- "optimist": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
- "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
- "dev": true,
- "requires": {
- "minimist": "0.0.8",
- "wordwrap": "0.0.3"
- },
- "dependencies": {
- "wordwrap": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
- "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
- "dev": true
- }
- }
- },
- "optionator": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
- "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
- "dev": true,
- "requires": {
- "deep-is": "0.1.3",
- "fast-levenshtein": "2.0.6",
- "levn": "0.3.0",
- "prelude-ls": "1.1.2",
- "type-check": "0.3.2",
- "wordwrap": "1.0.0"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
- "dev": true
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
- "dev": true,
- "requires": {
- "lcid": "1.0.0"
- }
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true
- },
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "dev": true,
- "requires": {
- "os-homedir": "1.0.2",
- "os-tmpdir": "1.0.2"
- }
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true
- },
- "p-limit": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz",
- "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=",
- "dev": true
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "1.1.0"
- }
- },
- "parent-require": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz",
- "integrity": "sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc=",
- "dev": true
- },
- "parse-glob": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
- "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
- "dev": true,
- "requires": {
- "glob-base": "0.3.0",
- "is-dotfile": "1.0.3",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1"
- }
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "1.3.1"
- }
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "2.0.1"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
- },
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "requires": {
- "pinkie": "2.0.4"
- }
- },
- "pkg-dir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
- "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
- "dev": true,
- "requires": {
- "find-up": "1.1.2"
- }
- },
- "pkg-up": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz",
- "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=",
- "dev": true,
- "requires": {
- "find-up": "1.1.2"
- }
- },
- "pluralize": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
- "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "dev": true
- },
- "preserve": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
- "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
- "dev": true
- },
- "private": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
- "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
- "dev": true
- },
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
- "dev": true
- },
- "progress": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
- "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
- "dev": true
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- },
- "qs": {
- "version": "6.3.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
- "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
- "dev": true
- },
- "randomatic": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
- "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
- "dev": true,
- "requires": {
- "is-number": "4.0.0",
- "kind-of": "6.0.2",
- "math-random": "1.0.1"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
- "dev": true
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- }
- }
- },
- "range-parser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
- "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
- "dev": true
- },
- "raw-body": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
- "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
- "dev": true,
- "requires": {
- "bytes": "3.0.0",
- "http-errors": "1.6.2",
- "iconv-lite": "0.4.19",
- "unpipe": "1.0.0"
- }
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dev": true,
- "requires": {
- "deep-extend": "0.6.0",
- "ini": "1.3.5",
- "minimist": "1.2.0",
- "strip-json-comments": "2.0.1"
- },
- "dependencies": {
- "deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "dev": true
- },
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "dev": true
- }
- }
- },
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
- "dev": true,
- "requires": {
- "load-json-file": "1.1.0",
- "normalize-package-data": "2.4.0",
- "path-type": "1.1.0"
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
- "dev": true,
- "requires": {
- "find-up": "1.1.2",
- "read-pkg": "1.1.0"
- }
- },
- "readable-stream": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
- "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.0.3",
- "util-deprecate": "1.0.2"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- }
- }
- },
- "readline2": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
- "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=",
- "dev": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "mute-stream": "0.0.5"
- }
- },
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
- "dev": true,
- "requires": {
- "resolve": "1.1.7"
- }
- },
- "redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
- "dev": true,
- "requires": {
- "indent-string": "2.1.0",
- "strip-indent": "1.0.1"
- }
- },
- "reduce-extract": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz",
- "integrity": "sha1-Z/I4W+2mUGG19fQxJmLosIDKFSU=",
- "dev": true,
- "requires": {
- "test-value": "1.1.0"
- },
- "dependencies": {
- "array-back": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
- "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
- "dev": true,
- "requires": {
- "typical": "2.6.1"
- }
- },
- "test-value": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/test-value/-/test-value-1.1.0.tgz",
- "integrity": "sha1-oJE29y7AQ9J8iTcHwrFZv6196T8=",
- "dev": true,
- "requires": {
- "array-back": "1.0.4",
- "typical": "2.6.1"
- }
- }
- }
- },
- "reduce-flatten": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
- "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
- "dev": true
- },
- "reduce-unique": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/reduce-unique/-/reduce-unique-1.0.0.tgz",
- "integrity": "sha1-flhrz4ek4ytter2Cd/rWzeyfSAM=",
- "dev": true
- },
- "reduce-without": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/reduce-without/-/reduce-without-1.0.1.tgz",
- "integrity": "sha1-aK0OrRGFXJo31OglbBW7+Hly/Iw=",
- "dev": true,
- "requires": {
- "test-value": "2.1.0"
- },
- "dependencies": {
- "array-back": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
- "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
- "dev": true,
- "requires": {
- "typical": "2.6.1"
- }
- },
- "test-value": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz",
- "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=",
- "dev": true,
- "requires": {
- "array-back": "1.0.4",
- "typical": "2.6.1"
- }
- }
- }
- },
- "regenerate": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
- "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
- "dev": true
- },
- "regenerator-runtime": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
- "dev": true
- },
- "regenerator-transform": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
- "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "babel-types": "6.26.0",
- "private": "0.1.8"
- }
- },
- "regex-cache": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
- "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
- "dev": true,
- "requires": {
- "is-equal-shallow": "0.1.3"
- }
- },
- "regexpu-core": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
- "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
- "dev": true,
- "requires": {
- "regenerate": "1.4.0",
- "regjsgen": "0.2.0",
- "regjsparser": "0.1.5"
- }
- },
- "registry-auth-token": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
- "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
- "dev": true,
- "requires": {
- "rc": "1.2.8",
- "safe-buffer": "5.1.1"
- }
- },
- "registry-url": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
- "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
- "dev": true,
- "requires": {
- "rc": "1.2.8"
- }
- },
- "regjsgen": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
- "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
- "dev": true
- },
- "regjsparser": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
- "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
- "dev": true,
- "requires": {
- "jsesc": "0.5.0"
- },
- "dependencies": {
- "jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
- "dev": true
- }
- }
- },
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
- "dev": true
- },
- "repeat-element": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
- "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
- "dev": true
- },
- "repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
- "dev": true,
- "requires": {
- "is-finite": "1.0.2"
- }
- },
- "replace-between": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/replace-between/-/replace-between-0.0.8.tgz",
- "integrity": "sha512-aqnkNuHwDAy+mF9nwU37JFOSQG9YWuRHs148Z3NTjur9nUZUZz94a3wbFRaR/uZ2x6Yk7Rxbg4F1XZeP7kXh7w==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "fs-extra": "4.0.3",
- "get-stdin": "5.0.1",
- "yargonaut": "1.1.2",
- "yargs": "9.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "2.0.0"
- }
- },
- "get-stdin": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
- "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=",
- "dev": true
- },
- "has-flag": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
- "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "parse-json": "2.2.0",
- "pify": "2.3.0",
- "strip-bom": "3.0.0"
- }
- },
- "os-locale": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
- "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
- "dev": true,
- "requires": {
- "execa": "0.7.0",
- "lcid": "1.0.0",
- "mem": "1.1.0"
- }
- },
- "path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
- "dev": true,
- "requires": {
- "pify": "2.3.0"
- }
- },
- "read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
- "dev": true,
- "requires": {
- "load-json-file": "2.0.0",
- "normalize-package-data": "2.4.0",
- "path-type": "2.0.0"
- }
- },
- "read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
- "dev": true,
- "requires": {
- "find-up": "2.1.0",
- "read-pkg": "2.0.0"
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "yargs": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz",
- "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=",
- "dev": true,
- "requires": {
- "camelcase": "4.1.0",
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "get-caller-file": "1.0.2",
- "os-locale": "2.1.0",
- "read-pkg-up": "2.0.0",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "2.1.1",
- "which-module": "2.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "7.0.0"
- }
- },
- "yargs-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz",
- "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
- "dev": true,
- "requires": {
- "camelcase": "4.1.0"
- }
- }
- }
- },
- "request": {
- "version": "2.79.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
- "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
- "dev": true,
- "requires": {
- "aws-sign2": "0.6.0",
- "aws4": "1.7.0",
- "caseless": "0.11.0",
- "combined-stream": "1.0.6",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.1.4",
- "har-validator": "2.0.6",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.17",
- "oauth-sign": "0.8.2",
- "qs": "6.3.2",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.4",
- "tunnel-agent": "0.4.3",
- "uuid": "3.2.1"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true
- },
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
- "dev": true
- },
- "require-uncached": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
- "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
- "dev": true,
- "requires": {
- "caller-path": "0.1.0",
- "resolve-from": "1.0.1"
- }
- },
- "requizzle": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz",
- "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=",
- "dev": true,
- "requires": {
- "underscore": "1.6.0"
- },
- "dependencies": {
- "underscore": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
- "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
- "dev": true
- }
- }
- },
- "resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
- "dev": true
- },
- "resolve-from": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
- "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
- "dev": true
- },
- "restore-cursor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
- "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
- "dev": true,
- "requires": {
- "exit-hook": "1.1.1",
- "onetime": "1.1.0"
- }
- },
- "right-align": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
- "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
- "dev": true,
- "optional": true,
- "requires": {
- "align-text": "0.1.4"
- }
- },
- "rimraf": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
- "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
- "dev": true,
- "requires": {
- "glob": "7.1.2"
- }
- },
- "rollup": {
- "version": "0.54.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.54.1.tgz",
- "integrity": "sha512-ebUUgUQ7K/sLn67CtO8Jj8H3RgKAoVWrpiJA7enOkwZPZzTCl8GC8CZ00g5jowjX80KgBmzs4Z1MV6cgglT86A==",
- "dev": true
- },
- "rollup-plugin-babel": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-3.0.4.tgz",
- "integrity": "sha512-TGhQbliTZnRoUhd2214K3r4KJUBu9J1DPzcrAnkluVXOVrveU9OvAaYQ16KyOmujAoq+LMC1+x6YF2xBrU7t+g==",
- "dev": true,
- "requires": {
- "rollup-pluginutils": "1.5.2"
- }
- },
- "rollup-plugin-cleanup": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-2.0.1.tgz",
- "integrity": "sha512-Z2UpMe3l2Oo8jzoB2gAWcb3UqIyiGxlh8kKlcs/W53yTPtwdF8RGfhuTx+/kjRlkSc5TC03t3sX3Lj3B40k9Eg==",
- "dev": true,
- "requires": {
- "acorn": "4.0.13",
- "magic-string": "0.22.5",
- "rollup-pluginutils": "2.3.0"
- },
- "dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
- "dev": true
- },
- "estree-walker": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz",
- "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==",
- "dev": true
- },
- "rollup-pluginutils": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.0.tgz",
- "integrity": "sha512-xB6hsRsjdJdIYWEyYUJy/3ki5g69wrf0luHPGNK3ZSocV6HLNfio59l3dZ3TL4xUwEKgROhFi9jOCt6c5gfUWw==",
- "dev": true,
- "requires": {
- "estree-walker": "0.5.2",
- "micromatch": "2.3.11"
- }
- }
- }
- },
- "rollup-plugin-node-resolve": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.3.0.tgz",
- "integrity": "sha512-9zHGr3oUJq6G+X0oRMYlzid9fXicBdiydhwGChdyeNRGPcN/majtegApRKHLR5drboUvEWU+QeUmGTyEZQs3WA==",
- "dev": true,
- "requires": {
- "builtin-modules": "2.0.0",
- "is-module": "1.0.0",
- "resolve": "1.1.7"
- },
- "dependencies": {
- "builtin-modules": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz",
- "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==",
- "dev": true
- }
- }
- },
- "rollup-plugin-sass": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/rollup-plugin-sass/-/rollup-plugin-sass-0.6.1.tgz",
- "integrity": "sha512-VdRscVb5Zy2XtxR6EWokbNoIdQigBZtfKTwdcw6zoSysmeUlHuMOkvKz6bYxvtiwRsl9VF620vPslqbV+vdbAw==",
- "dev": true,
- "requires": {
- "babel-runtime": "6.26.0",
- "fs-extra": "0.30.0",
- "node-sass": "4.9.0",
- "rollup-pluginutils": "1.5.2"
- },
- "dependencies": {
- "fs-extra": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
- "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "jsonfile": "2.4.0",
- "klaw": "1.3.1",
- "path-is-absolute": "1.0.1",
- "rimraf": "2.6.2"
- }
- },
- "jsonfile": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
- "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11"
- }
- },
- "klaw": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
- "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11"
- }
- }
- }
- },
- "rollup-plugin-uglify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-2.0.1.tgz",
- "integrity": "sha1-Z7N60e/a+9g69MNrQMGJ7khmyWk=",
- "dev": true,
- "requires": {
- "uglify-js": "3.0.28"
- }
- },
- "rollup-pluginutils": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz",
- "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=",
- "dev": true,
- "requires": {
- "estree-walker": "0.2.1",
- "minimatch": "3.0.4"
- }
- },
- "run-async": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
- "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=",
- "dev": true,
- "requires": {
- "once": "1.4.0"
- }
- },
- "rx": {
- "version": "2.3.24",
- "resolved": "https://registry.npmjs.org/rx/-/rx-2.3.24.tgz",
- "integrity": "sha1-FPlQpCF9fjXapxu8vljv9o6ksrc=",
- "dev": true
- },
- "rx-lite": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
- "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=",
- "dev": true
- },
- "safe-buffer": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
- "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
- "dev": true
- },
- "sass-graph": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
- "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
- "dev": true,
- "requires": {
- "glob": "7.1.2",
- "lodash": "4.17.4",
- "scss-tokenizer": "0.2.3",
- "yargs": "7.1.0"
- }
- },
- "scss-tokenizer": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
- "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
- "dev": true,
- "requires": {
- "js-base64": "2.4.3",
- "source-map": "0.4.4"
- },
- "dependencies": {
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "requires": {
- "amdefine": "1.0.1"
- }
- }
- }
- },
- "semver": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
- "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
- "dev": true
- },
- "send": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
- "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "depd": "1.1.2",
- "destroy": "1.0.4",
- "encodeurl": "1.0.2",
- "escape-html": "1.0.3",
- "etag": "1.8.1",
- "fresh": "0.5.2",
- "http-errors": "1.6.2",
- "mime": "1.4.1",
- "ms": "2.0.0",
- "on-finished": "2.3.0",
- "range-parser": "1.2.0",
- "statuses": "1.4.0"
- },
- "dependencies": {
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
- "dev": true
- },
- "statuses": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
- "dev": true
- }
- }
- },
- "serve": {
- "version": "6.5.8",
- "resolved": "https://registry.npmjs.org/serve/-/serve-6.5.8.tgz",
- "integrity": "sha512-GZYlJz7f6E7Xq6xbg1rTSvQQV9x4v/yYB/sum6egzSBLa/mdk1PViDSX2JvL0Me83sxu3JpEpQELfakDKbGcrw==",
- "dev": true,
- "requires": {
- "args": "4.0.0",
- "basic-auth": "2.0.0",
- "bluebird": "3.5.1",
- "boxen": "1.3.0",
- "chalk": "2.4.1",
- "clipboardy": "1.2.3",
- "dargs": "5.1.0",
- "detect-port": "1.2.3",
- "filesize": "3.6.1",
- "fs-extra": "6.0.1",
- "handlebars": "4.0.11",
- "ip": "1.1.5",
- "micro": "9.3.1",
- "micro-compress": "1.0.0",
- "mime-types": "2.1.18",
- "node-version": "1.1.3",
- "openssl-self-signed-certificate": "1.1.6",
- "opn": "5.3.0",
- "path-is-inside": "1.0.2",
- "path-type": "3.0.0",
- "send": "0.16.2",
- "update-check": "1.5.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.1",
- "escape-string-regexp": "1.0.5",
- "supports-color": "5.4.0"
- }
- },
- "fs-extra": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
- "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "jsonfile": "4.0.0",
- "universalify": "0.1.1"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "mime-db": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
- "dev": true,
- "requires": {
- "mime-db": "1.33.0"
- }
- },
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "requires": {
- "pify": "3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
- "dev": true,
- "requires": {
- "has-flag": "3.0.0"
- }
- }
- }
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
- },
- "setprototypeof": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
- "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
- "dev": true
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "dev": true,
- "requires": {
- "shebang-regex": "1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "dev": true
- },
- "shelljs": {
- "version": "0.7.8",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
- "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=",
- "dev": true,
- "requires": {
- "glob": "7.1.2",
- "interpret": "1.1.0",
- "rechoir": "0.6.2"
- }
- },
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
- "dev": true
- },
- "slash": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
- "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
- "dev": true
- },
- "slice-ansi": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
- "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
- "dev": true
- },
- "sntp": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
- "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
- "dev": true,
- "requires": {
- "hoek": "2.16.3"
- }
- },
- "sort-array": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-2.0.0.tgz",
- "integrity": "sha1-OKnG2if9fRR7QuYFVPKBGHtN9HI=",
- "dev": true,
- "requires": {
- "array-back": "1.0.4",
- "object-get": "2.1.0",
- "typical": "2.6.1"
- },
- "dependencies": {
- "array-back": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
- "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
- "dev": true,
- "requires": {
- "typical": "2.6.1"
- }
- }
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- },
- "source-map-support": {
- "version": "0.4.18",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
- "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
- "dev": true,
- "requires": {
- "source-map": "0.5.7"
- }
- },
- "spawn-command": {
- "version": "0.0.2-1",
- "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
- "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=",
- "dev": true
- },
- "spdx-correct": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
- "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
- "dev": true,
- "requires": {
- "spdx-license-ids": "1.2.2"
- }
- },
- "spdx-expression-parse": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz",
- "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=",
- "dev": true
- },
- "spdx-license-ids": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
- "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=",
- "dev": true
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
- },
- "sshpk": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
- "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
- "dev": true,
- "requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
- }
- },
- "statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
- "dev": true
- },
- "stdout-stream": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
- "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
- "dev": true,
- "requires": {
- "readable-stream": "2.3.3"
- }
- },
- "stream-connect": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz",
- "integrity": "sha1-GLyB8u2zW4tdmoAJIAqYUxRCipc=",
- "dev": true,
- "requires": {
- "array-back": "1.0.4"
- },
- "dependencies": {
- "array-back": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
- "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
- "dev": true,
- "requires": {
- "typical": "2.6.1"
- }
- }
- }
- },
- "stream-via": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz",
- "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==",
- "dev": true
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- }
- },
- "string_decoder": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
- "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
- "stringstream": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
- "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
- "dev": true,
- "requires": {
- "is-utf8": "0.2.1"
- }
- },
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
- "dev": true
- },
- "strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
- "dev": true,
- "requires": {
- "get-stdin": "4.0.1"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
- "dev": true
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- },
- "table": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz",
- "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=",
- "dev": true,
- "requires": {
- "ajv": "4.11.8",
- "ajv-keywords": "1.5.1",
- "chalk": "1.1.3",
- "lodash": "4.17.4",
- "slice-ansi": "0.0.4",
- "string-width": "2.1.1"
- },
- "dependencies": {
- "ajv": {
- "version": "4.11.8",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
- "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
- "dev": true,
- "requires": {
- "co": "4.6.0",
- "json-stable-stringify": "1.0.1"
- }
- },
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0"
- }
- }
- }
- },
- "table-layout": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.2.tgz",
- "integrity": "sha512-tygyl5+eSHj4chpq5Zfy6cpc7MOUBClAW9ozghFH7hg9bAUzShOYn+/vUzTRkKOSLJWKfgYtP2tAU2c0oAD8eg==",
- "dev": true,
- "requires": {
- "array-back": "2.0.0",
- "deep-extend": "0.5.0",
- "lodash.padend": "4.6.1",
- "typical": "2.6.1",
- "wordwrapjs": "3.0.0"
- }
- },
- "taffydb": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz",
- "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=",
- "dev": true
- },
- "tar": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
- "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
- "dev": true,
- "requires": {
- "block-stream": "0.0.9",
- "fstream": "1.0.11",
- "inherits": "2.0.3"
- }
- },
- "temp-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz",
- "integrity": "sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=",
- "dev": true
- },
- "term-size": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
- "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
- "dev": true,
- "requires": {
- "execa": "0.7.0"
- }
- },
- "test-value": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz",
- "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==",
- "dev": true,
- "requires": {
- "array-back": "2.0.0",
- "typical": "2.6.1"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
- "dev": true
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
- "dev": true
- },
- "to-fast-properties": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
- "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
- "dev": true
- },
- "tough-cookie": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
- "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
- "dev": true,
- "requires": {
- "punycode": "1.4.1"
- }
- },
- "tree-kill": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz",
- "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==",
- "dev": true
- },
- "trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
- "dev": true
- },
- "trim-right": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
- "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
- "dev": true
- },
- "true-case-path": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz",
- "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=",
- "dev": true,
- "requires": {
- "glob": "6.0.4"
- },
- "dependencies": {
- "glob": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
- "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
- "dev": true,
- "requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- }
- }
- },
- "tryit": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz",
- "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=",
- "dev": true
- },
- "tunnel-agent": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
- "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
- "dev": true
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true,
- "optional": true
- },
- "type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dev": true,
- "requires": {
- "prelude-ls": "1.1.2"
- }
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
- "dev": true
- },
- "typical": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz",
- "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=",
- "dev": true
- },
- "uglify-js": {
- "version": "3.0.28",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.28.tgz",
- "integrity": "sha512-0h/qGay016GG2lVav3Kz174F3T2Vjlz2v6HCt+WDQpoXfco0hWwF5gHK9yh88mUYvIC+N7Z8NT8WpjSp1yoqGA==",
- "dev": true,
- "requires": {
- "commander": "2.11.0",
- "source-map": "0.5.7"
- },
- "dependencies": {
- "commander": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
- "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==",
- "dev": true
- }
- }
- },
- "uglify-to-browserify": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
- "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
- "dev": true,
- "optional": true
- },
- "underscore": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
- "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=",
- "dev": true
- },
- "underscore-contrib": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz",
- "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=",
- "dev": true,
- "requires": {
- "underscore": "1.6.0"
- },
- "dependencies": {
- "underscore": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
- "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
- "dev": true
- }
- }
- },
- "universalify": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
- "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
- "dev": true
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "dev": true
- },
- "update-check": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.1.tgz",
- "integrity": "sha512-M3rjq5KwSrWZrm2GVPIQIF+NXpIn5I9mIV67gGoydptQvzRjLp9ZbM6ctFJeNuaWSm5+mNP7aInELjSiLcIw6A==",
- "dev": true,
- "requires": {
- "registry-auth-token": "3.3.2",
- "registry-url": "3.1.0"
- }
- },
- "user-home": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
- "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=",
- "dev": true,
- "requires": {
- "os-homedir": "1.0.2"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
- },
- "uuid": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
- "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
- "dev": true
- },
- "validate-npm-package-license": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
- "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
- "dev": true,
- "requires": {
- "spdx-correct": "1.0.2",
- "spdx-expression-parse": "1.0.4"
- }
- },
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
- "dev": true
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "1.3.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
- }
- },
- "vlq": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
- "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
- "dev": true
- },
- "walk-back": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-3.0.0.tgz",
- "integrity": "sha1-I1h4ejXakQMtrV6S+AsSNw2HlcU=",
- "dev": true
- },
- "which": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
- "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
- "dev": true,
- "requires": {
- "isexe": "2.0.0"
- }
- },
- "which-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
- "dev": true
- },
- "wide-align": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
- "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
- "dev": true,
- "requires": {
- "string-width": "1.0.2"
- }
- },
- "widest-line": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz",
- "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=",
- "dev": true,
- "requires": {
- "string-width": "2.1.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0"
- }
- }
- }
- },
- "window-size": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
- "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
- "dev": true,
- "optional": true
- },
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
- "dev": true
- },
- "wordwrapjs": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz",
- "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==",
- "dev": true,
- "requires": {
- "reduce-flatten": "1.0.1",
- "typical": "2.6.1"
- }
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "dev": true,
- "requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
- },
- "write": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
- "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
- "dev": true,
- "requires": {
- "mkdirp": "0.5.1"
- }
- },
- "xmlcreate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz",
- "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=",
- "dev": true
- },
- "xtend": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
- "dev": true
- },
- "y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
- "dev": true
- },
- "yargonaut": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/yargonaut/-/yargonaut-1.1.2.tgz",
- "integrity": "sha1-7nuJ6YEho/JB+pJqKm4bZkHIGz8=",
- "dev": true,
- "requires": {
- "chalk": "1.1.3",
- "figlet": "1.2.0",
- "parent-require": "1.0.0"
- }
- },
- "yargs": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
- "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
- "dev": true,
- "requires": {
- "camelcase": "3.0.0",
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "get-caller-file": "1.0.2",
- "os-locale": "1.4.0",
- "read-pkg-up": "1.0.1",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "1.0.2",
- "which-module": "1.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "5.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true
- }
- }
- },
- "yargs-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
- "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
- "dev": true,
- "requires": {
- "camelcase": "3.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true
- }
- }
- }
- }
-}