diff --git a/build/dat.gui.css b/build/dat.gui.css new file mode 100644 index 0000000..c039f45 --- /dev/null +++ b/build/dat.gui.css @@ -0,0 +1 @@ +.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 index 472129f..8d40bd9 100644 --- a/build/dat.gui.js +++ b/build/dat.gui.js @@ -1536,42 +1536,6 @@ function hueGradient(elem) { 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(init) { - classCallCheck(this, CustomController); - var _this = possibleConstructorReturn(this, (CustomController.__proto__ || Object.getPrototypeOf(CustomController)).call(this, {})); - init(_this); - _this.custom = true; - 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 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\n\r\nimport OptionController from './OptionController';\r\nimport NumberControllerBox from './NumberControllerBox';\r\nimport NumberControllerSlider from './NumberControllerSlider';\r\nimport StringController from './StringController';\r\nimport FunctionController from './FunctionController';\r\nimport BooleanController from './BooleanController';\r\nimport common from '../utils/common';\r\n\r\nconst ControllerFactory = function(object, property) {\r\n const initialValue = object[property];\r\n\r\n // Providing options?\r\n if (common.isArray(arguments[2]) || common.isObject(arguments[2])) {\r\n return new OptionController(object, property, arguments[2]);\r\n }\r\n\r\n // Providing a map?\r\n if (common.isNumber(initialValue)) {\r\n // Has min and max? (slider)\r\n if (common.isNumber(arguments[2]) && common.isNumber(arguments[3])) {\r\n // has step?\r\n if (common.isNumber(arguments[4])) {\r\n return new NumberControllerSlider(object, property,\r\n arguments[2], arguments[3], arguments[4]);\r\n }\r\n\r\n return new NumberControllerSlider(object, property, arguments[2], arguments[3]);\r\n }\r\n\r\n // number box\r\n if (common.isNumber(arguments[4])) { // has step\r\n return new NumberControllerBox(object, property,\r\n { min: arguments[2], max: arguments[3], step: arguments[4] });\r\n }\r\n return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] });\r\n }\r\n\r\n if (common.isString(initialValue)) {\r\n return new StringController(object, property);\r\n }\r\n\r\n if (common.isFunction(initialValue)) {\r\n return new FunctionController(object, property, '');\r\n }\r\n\r\n if (common.isBoolean(initialValue)) {\r\n return new BooleanController(object, property);\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default ControllerFactory;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * @author Andrej Hristoliubov https://anhr.github.io/AboutMe/\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\nimport ControllerFactory from './ControllerFactory';\r\n\r\n/**\r\n * @class Represents a custom controller.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n */\r\nclass CustomController extends Controller{\r\n /**\r\n * Represents a custom controller.\r\n * @param {Object} object The object to be manipulated\r\n * @param {Function} [object.property] Returns an object with elements for adding into \"property-name\" class element.\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {Object} [params] Optional parameters\r\n */\r\n constructor(object, property) {\r\n super(object, property);\r\n\r\n this.arguments = {\r\n object: object, property: property, opts: Array.prototype.slice.call(arguments, 2)\r\n }\r\n if(object.property)\r\n this.property = object.property( this );\r\n }\r\n set controller( newController ){\r\n this._controller = newController;\r\n }\r\n get controller(){\r\n return this._controller;\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.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 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 * 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 var customObject;\r\n if( object.arguments ){\r\n //custom controller\r\n customObject = object;\r\n object = customObject.arguments.object;\r\n property = customObject.arguments.property;\r\n params = {\r\n factoryArgs: customObject.arguments.opts\r\n }\r\n }\r\n if ( ( customObject === undefined ) && ( 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 ( ( customObject !== undefined ) && ( typeof customObject.property === \"string\" ) ) {\r\n controller = customObject;\r\n } else {\r\n const factoryArgs = [object, property].concat(params.factoryArgs);\r\n controller = ControllerFactory.apply(gui, factoryArgs);\r\n }\r\n if ( controller === null )\r\n \tcontroller = customObject;\r\n else if( customObject !== undefined )\r\n customObject.controller = controller;\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 name = document.createElement('span');\r\n dom.addClass(name, 'property-name');\r\n if( ( customObject !== undefined ) && typeof customObject.property === \"object\" ){\r\n for(var propertyName in customObject.property)\r\n name.appendChild(customObject.property[propertyName]);\r\n }\r\n else name.innerHTML = controller.property;\r\n\r\n const container = document.createElement('div');\r\n container.appendChild(name);\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","ControllerFactory","isFunction","isBoolean","CustomController","newController","_controller","css","url","indoc","doc","link","rel","getElementsByTagName","cssContent","injected","head","saveDialogContents","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","compose","fakeEvent","stopPropagation","borderLeftColor","isModified","recallSavedValue","matchedIndex","controllerMap","presetMap","customObject","factoryArgs","concat","before","babelHelpers.typeof","propertyName","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
new file mode 100644
index 0000000..a92e188
--- /dev/null
+++ b/build/dat.gui.min.js
@@ -0,0 +1,13 @@
+/**
+ * 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){var i;if(t.arguments&&(t=(i=t).arguments.object,n=i.arguments.property,o={factoryArgs:i.arguments.opts}),void 0===i&&void 0===t[n])throw new Error('Object "'+t+'" has no property "'+n+'"');var r=void 0;if(o.color)r=new $(t,n);else if(void 0!==i&&"string"==typeof i.property)r=i;else{var s=[t,n].concat(o.factoryArgs);r=te.apply(e,s)}null===r?r=i:void 0!==i&&(i.controller=r),o.before instanceof z&&(o.before=o.before.__li),p(e,r),X.addClass(r.domElement,"c");var a=document.createElement("span");if(X.addClass(a,"property-name"),void 0!==i&&"object"===H(i.property))for(var l in i.property)a.appendChild(i.property[l]);else a.innerHTML=r.property;var d=document.createElement("div");d.appendChild(a),d.appendChild(r.domElement);var u=c(e,d,o.before);return X.addClass(u,pe.CLASS_CONTROLLER_ROW),r instanceof $?X.addClass(u,"color"):X.addClass(u,H(r.getValue())),h(e,u,r),e.__controllers.push(r),r}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\n\r\nimport OptionController from './OptionController';\r\nimport NumberControllerBox from './NumberControllerBox';\r\nimport NumberControllerSlider from './NumberControllerSlider';\r\nimport StringController from './StringController';\r\nimport FunctionController from './FunctionController';\r\nimport BooleanController from './BooleanController';\r\nimport common from '../utils/common';\r\n\r\nconst ControllerFactory = function(object, property) {\r\n const initialValue = object[property];\r\n\r\n // Providing options?\r\n if (common.isArray(arguments[2]) || common.isObject(arguments[2])) {\r\n return new OptionController(object, property, arguments[2]);\r\n }\r\n\r\n // Providing a map?\r\n if (common.isNumber(initialValue)) {\r\n // Has min and max? (slider)\r\n if (common.isNumber(arguments[2]) && common.isNumber(arguments[3])) {\r\n // has step?\r\n if (common.isNumber(arguments[4])) {\r\n return new NumberControllerSlider(object, property,\r\n arguments[2], arguments[3], arguments[4]);\r\n }\r\n\r\n return new NumberControllerSlider(object, property, arguments[2], arguments[3]);\r\n }\r\n\r\n // number box\r\n if (common.isNumber(arguments[4])) { // has step\r\n return new NumberControllerBox(object, property,\r\n { min: arguments[2], max: arguments[3], step: arguments[4] });\r\n }\r\n return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] });\r\n }\r\n\r\n if (common.isString(initialValue)) {\r\n return new StringController(object, property);\r\n }\r\n\r\n if (common.isFunction(initialValue)) {\r\n return new FunctionController(object, property, '');\r\n }\r\n\r\n if (common.isBoolean(initialValue)) {\r\n return new BooleanController(object, property);\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default ControllerFactory;\r\n","/**\r\n * dat-gui JavaScript Controller Library\r\n * http://code.google.com/p/dat-gui\r\n *\r\n * @author Andrej Hristoliubov https://anhr.github.io/AboutMe/\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\nimport ControllerFactory from './ControllerFactory';\r\n\r\n/**\r\n * @class Represents a custom controller.\r\n *\r\n * @extends dat.controllers.Controller\r\n *\r\n */\r\nclass CustomController extends Controller{\r\n /**\r\n * Represents a custom controller.\r\n * @param {Object} object The object to be manipulated\r\n * @param {Function} [object.property] Returns an object with elements for adding into \"property-name\" class element.\r\n * @param {string} property The name of the property to be manipulated\r\n * @param {Object} [params] Optional parameters\r\n */\r\n constructor(object, property) {\r\n super(object, property);\r\n\r\n this.arguments = {\r\n object: object, property: property, opts: Array.prototype.slice.call(arguments, 2)\r\n }\r\n if(object.property)\r\n this.property = object.property( this );\r\n }\r\n set controller( newController ){\r\n this._controller = newController;\r\n }\r\n get controller(){\r\n return this._controller;\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.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 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 * 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 var customObject;\r\n if( object.arguments ){\r\n //custom controller\r\n customObject = object;\r\n object = customObject.arguments.object;\r\n property = customObject.arguments.property;\r\n params = {\r\n factoryArgs: customObject.arguments.opts\r\n }\r\n }\r\n if ( ( customObject === undefined ) && ( 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 ( ( customObject !== undefined ) && ( typeof customObject.property === \"string\" ) ) {\r\n controller = customObject;\r\n } else {\r\n const factoryArgs = [object, property].concat(params.factoryArgs);\r\n controller = ControllerFactory.apply(gui, factoryArgs);\r\n }\r\n if ( controller === null )\r\n \tcontroller = customObject;\r\n else if( customObject !== undefined )\r\n customObject.controller = controller;\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 name = document.createElement('span');\r\n dom.addClass(name, 'property-name');\r\n if( ( customObject !== undefined ) && typeof customObject.property === \"object\" ){\r\n for(var propertyName in customObject.property)\r\n name.appendChild(customObject.property[propertyName]);\r\n }\r\n else name.innerHTML = controller.property;\r\n\r\n const container = document.createElement('div');\r\n container.appendChild(name);\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","ControllerFactory","isFunction","isBoolean","CustomController","newController","_controller","css","url","indoc","doc","link","rel","getElementsByTagName","cssContent","injected","head","saveDialogContents","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","compose","fakeEvent","stopPropagation","borderLeftColor","isModified","recallSavedValue","matchedIndex","controllerMap","presetMap","customObject","factoryArgs","concat","before","babelHelpers.typeof","propertyName","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
new file mode 100644
index 0000000..fc87912
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,6011 @@
+{
+ "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
+ }
+ }
+ }
+ }
+}
diff --git a/src/dat/controllers/CustomController.js b/src/dat/controllers/CustomController.js
index 1a7f45a..8f62a56 100644
--- a/src/dat/controllers/CustomController.js
+++ b/src/dat/controllers/CustomController.js
@@ -22,14 +22,14 @@ import ControllerFactory from './ControllerFactory';
*
*/
class CustomController extends Controller{
- /**
- * Represents a custom controller.
- * @param {Object} object The object to be manipulated
- * @param {Function} [object.property] Returns an object with elements for adding into "property-name" class element.
- * @param {string} property The name of the property to be manipulated
- * @param {Object} [params] Optional parameters
- */
- constructor(object, property) {
+ /**
+ * Represents a custom controller.
+ * @param {Object} object The object to be manipulated
+ * @param {Function} [object.property] Returns an object with elements for adding into "property-name" class element.
+ * @param {string} property The name of the property to be manipulated
+ * @param {Object} [params] Optional parameters
+ */
+ constructor(object, property) {
super(object, property);
this.arguments = {