dat.gui/build/dat.gui.js.map
2017-09-26 20:49:19 +02:00

1 line
315 KiB
Plaintext

{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap ffaeb74ecc331ec589d8","webpack:///../index.js","webpack:///./dat/index.js","webpack:///./dat/color/Color.js","webpack:///./dat/color/interpret.js","webpack:///./dat/color/toString.js","webpack:///./dat/utils/common.js","webpack:///./dat/color/math.js","webpack:///./dat/controllers/Controller.js","webpack:///./dat/controllers/BooleanController.js","webpack:///./dat/dom/dom.js","webpack:///./dat/controllers/OptionController.js","webpack:///./dat/controllers/StringController.js","webpack:///./dat/controllers/NumberController.js","webpack:///./dat/controllers/NumberControllerBox.js","webpack:///./dat/controllers/NumberControllerSlider.js","webpack:///./dat/controllers/FunctionController.js","webpack:///./dat/controllers/ColorController.js","webpack:///./dat/controllers/BgColorController.js","webpack:///./dat/controllers/NgColorController.js","webpack:///./dat/controllers/GtColorController.js","webpack:///./dat/controllers/HSVColorController.js","webpack:///./dat/gui/GUI.js","webpack:///./dat/utils/css.js","webpack:///./dat/gui/saveDialogue.html","webpack:///./dat/controllers/ControllerFactory.js","webpack:///./dat/utils/requestAnimationFrame.js","webpack:///./dat/dom/CenteredDiv.js","webpack:///./dat/gui/style.scss","webpack:///../~/css-loader/lib/css-base.js"],"names":["color","Color","math","interpret","controllers","Controller","BooleanController","OptionController","StringController","NumberController","NumberControllerBox","NumberControllerSlider","FunctionController","ColorController","BgColorController","NgColorController","HSVColorController","GtColorController","dom","gui","GUI","__state","apply","arguments","Error","a","toString","toHexString","toOriginal","conversion","write","defineRGBComponent","target","component","componentHexIndex","Object","defineProperty","get","space","recalculateRGB","set","v","defineHSVComponent","recalculateHSV","component_from_hex","hex","extend","hsv_to_rgb","h","s","result","rgb_to_hsv","r","g","b","isNaN","isUndefined","COMPONENTS","prototype","rgb_to_hex","INTERPRETATIONS","litmus","isString","conversions","THREE_CHAR_HEX","read","original","test","match","parseInt","SIX_CHAR_HEX","CSS_RGB","parseFloat","CSS_RGBA","isNumber","HEX","conversionName","isArray","RGB_ARRAY","length","RGBA_ARRAY","isObject","RGBA_OBJ","RGB_OBJ","HSVA_OBJ","HSV_OBJ","toReturn","toArray","each","family","BREAK","forceCSSHex","colorFormat","Math","round","toFixed","str","ARR_EACH","Array","forEach","ARR_SLICE","slice","Common","call","obj","keys","key","bind","defaults","compose","toCall","args","i","itr","scope","l","defer","fnc","setTimeout","debounce","func","threshold","callImmediately","timeout","delayed","callNow","clearTimeout","undefined","isNull","constructor","isBoolean","isFunction","tmpComponent","ColorMath","hi","floor","f","p","q","t","c","min","max","delta","NaN","hex_with_component","componentIndex","value","object","property","initialValue","domElement","document","createElement","__onChange","__onFinishChange","onChange","onFinishChange","setValue","newValue","updateDisplay","getValue","isModified","_this","__prev","__checkbox","setAttribute","appendChild","checked","EVENT_MAP","HTMLEvents","MouseEvents","KeyboardEvents","EVENT_MAP_INV","k","e","CSS_VALUE_PIXELS","cssValueToPixels","val","makeSelectable","elem","selectable","style","onselectstart","MozUserSelect","KhtmlUserSelect","unselectable","makeFullscreen","hor","vert","vertical","horizontal","position","left","right","top","bottom","fakeEvent","eventType","pars","aux","params","className","evt","createEvent","clientX","x","clientY","y","initMouseEvent","bubbles","cancelable","window","clickCount","init","initKeyboardEvent","initKeyEvent","ctrlKey","altKey","shiftKey","metaKey","keyCode","charCode","initEvent","dispatchEvent","event","newBool","bool","addEventListener","attachEvent","unbind","removeEventListener","detachEvent","addClass","classes","split","indexOf","push","join","replace","removeClass","removeAttribute","index","splice","hasClass","RegExp","getWidth","getComputedStyle","width","getHeight","height","getOffset","el","offset","offsetParent","offsetLeft","offsetTop","isActive","activeElement","type","href","opts","options","__select","map","element","opt","innerHTML","desiredValue","selectedIndex","__input","onBlur","blur","numDecimals","_x","_params","__min","__max","__step","step","__impliedStep","pow","log","abs","LN10","__precision","_v","roundToDecimal","decimals","tenTo","__truncationSuspended","prevY","attempted","onFinish","onMouseDrag","diff","onMouseUp","onMouseDown","i1","i2","o1","o2","__background","__foreground","preventDefault","bgRect","getBoundingClientRect","pct","text","__button","fire","__color","__temp","__selector","__saturation_field","__field_knob","__field_knob_border","__hue_knob","__hue_field","__input_textShadow","valueField","padding","backgroundColor","boxShadow","border","borderRadius","zIndex","borderRight","marginRight","display","cursor","background","linearGradient","hueGradient","outline","textAlign","fontWeight","textShadow","fieldDown","setH","fieldUpH","setSV","fieldUpSV","fieldRect","mismatch","flip","_flip","marginLeft","marginTop","vendors","vendor","cssText","setValue2","value2","__color2","__temp2","__saturation_field2","__field_knob2","__field_knob_border2","__hue_knob2","__hue_field2","__input2","__input_textShadow2","onBlur2","valueField2","fieldDown2","setH2","fieldUpH2","setSV2","fieldUpSV2","onFinish2","flip2","_flip2","__field_knob3","__field_knob_border3","__hsv_field","__hsv_field2","__hsv_field3","__hsv_fieldLabel","__hsv_fieldLabel2","__hsv_fieldLabel3","font","setS","fieldUpS","setV","fieldUpV","inject","CSS_NAMESPACE","HIDE_KEY_CODE","CLOSE_BUTTON_HEIGHT","DEFAULT_DEFAULT_PRESET_NAME","SUPPORTS_LOCAL_STORAGE","localStorage","SAVE_DIALOGUE","autoPlaceVirgin","autoPlaceContainer","hide","hideableGuis","__ul","__folders","__controllers","__rememberedObjects","__rememberedObjectIndecesToControllers","__listening","closeOnTop","autoPlace","DEFAULT_WIDTH","resizable","hideable","load","preset","parent","scrollable","useLocalStorage","getItem","getLocalStorageHash","saveToLocalStorage","defineProperties","getRoot","setPresetSelectIndex","revert","setWidth","name","titleRowName","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","createTextNode","titleRow","addRow","onClickTitle","CLASS_AUTO_PLACE_CONTAINER","body","CLASS_AUTO_PLACE","__resizeHandler","onResizeDebounced","addResizeHandle","stringify","getSaveObject","saveToLocalStorageIfPossible","resetWidth","root","toggleHide","CLASS_CONTROLLER_ROW","CLASS_TOO_TALL","CLASS_DRAG","_keydownHandler","which","add","factoryArgs","addColor","addBgColor","addbg","addNgColor","addng","addGtColor","addgt","addHSVColor","addhsv","remove","controller","removeChild","__li","destroy","addFolder","newGuiParams","folders","li","open","close","node","__save_row","innerHeight","__resize_handle","offsetHeight","remember","addSaveMenu","remembered","getCurrentPreset","save","markPresetModified","saveAs","presetName","addPresetOption","recallSavedValue","folder","listen","updateDisplays","newDom","liBefore","modified","__preset_select","augmentController","__gui","nextSibling","nextElementSibling","before","firstElementChild","box","method","pc","pb","returned","oldName","wasListening","newController","stopPropagation","borderLeftColor","matchedIndex","controllerMap","presetMap","concat","container","location","setSelected","showHideExplain","explain","div","firstChild","gears","button","button2","button3","select","getElementById","localStorageCheckBox","saveLocally","newConstructorTextArea","show","focus","prompt","pmouseX","drag","dragStop","dragStart","w","useInitialValues","savedValues","controllerArray","module","exports","url","indoc","doc","link","rel","getElementsByTagName","css","injected","head","ControllerFactory","requestAnimationFrame","callback","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","CenteredDiv","backgroundElement","opacity","WebkitTransition","transition","webkitTransform","layout","innerWidth"],"mappings":"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","file":"dat.gui.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dat\"] = factory();\n\telse\n\t\troot[\"dat\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ffaeb74ecc331ec589d8","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport dat from './src/dat/index';\n\nexport default dat;\n\n\n\n// WEBPACK FOOTER //\n// ../index.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport Color from './color/Color';\nimport math from './color/math';\nimport interpret from './color/interpret';\n\nimport Controller from './controllers/Controller';\nimport BooleanController from './controllers/BooleanController';\nimport OptionController from './controllers/OptionController';\nimport StringController from './controllers/StringController';\nimport NumberController from './controllers/NumberController';\nimport NumberControllerBox from './controllers/NumberControllerBox';\nimport NumberControllerSlider from './controllers/NumberControllerSlider';\nimport FunctionController from './controllers/FunctionController';\nimport ColorController from './controllers/ColorController';\nimport BgColorController from './controllers/BgColorController';\nimport NgColorController from './controllers/NgColorController';\nimport GtColorController from './controllers/GtColorController';\nimport HSVColorController from './controllers/HSVColorController';\n\nimport dom from './dom/dom';\nimport GUI from './gui/GUI';\n\nexport default {\n color: {\n Color: Color,\n math: math,\n interpret: interpret\n },\n\n controllers: {\n Controller: Controller,\n BooleanController: BooleanController,\n OptionController: OptionController,\n StringController: StringController,\n NumberController: NumberController,\n NumberControllerBox: NumberControllerBox,\n NumberControllerSlider: NumberControllerSlider,\n FunctionController: FunctionController,\n ColorController: ColorController,\n BgColorController: BgColorController,\n NgColorController: NgColorController,\n HSVColorController: HSVColorController,\n GtColorController: GtColorController\n },\n\n dom: {\n dom: dom\n },\n\n gui: {\n GUI: GUI\n },\n\n GUI: GUI\n};\n\n\n\n// WEBPACK FOOTER //\n// ./dat/index.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport interpret from './interpret';\nimport math from './math';\nimport colorToString from './toString';\nimport common from '../utils/common';\n\nclass Color {\n constructor() {\n this.__state = interpret.apply(this, arguments);\n\n if (this.__state === false) {\n throw new Error('Failed to interpret color arguments');\n }\n\n this.__state.a = this.__state.a || 1;\n }\n\n toString() {\n return colorToString(this);\n }\n\n toHexString() {\n return colorToString(this, true);\n }\n\n toOriginal() {\n return this.__state.conversion.write(this);\n }\n}\n\nfunction defineRGBComponent(target, component, componentHexIndex) {\n Object.defineProperty(target, component, {\n get: function() {\n if (this.__state.space === 'RGB') {\n return this.__state[component];\n }\n\n Color.recalculateRGB(this, component, componentHexIndex);\n\n return this.__state[component];\n },\n\n set: function(v) {\n if (this.__state.space !== 'RGB') {\n Color.recalculateRGB(this, component, componentHexIndex);\n this.__state.space = 'RGB';\n }\n\n this.__state[component] = v;\n }\n });\n}\n\nfunction defineHSVComponent(target, component) {\n Object.defineProperty(target, component, {\n get: function() {\n if (this.__state.space === 'HSV') {\n return this.__state[component];\n }\n\n Color.recalculateHSV(this);\n\n return this.__state[component];\n },\n\n set: function(v) {\n if (this.__state.space !== 'HSV') {\n Color.recalculateHSV(this);\n this.__state.space = 'HSV';\n }\n\n this.__state[component] = v;\n }\n });\n}\n\n\nColor.recalculateRGB = function(color, component, componentHexIndex) {\n if (color.__state.space === 'HEX') {\n color.__state[component] = math.component_from_hex(color.__state.hex, componentHexIndex);\n } else if (color.__state.space === 'HSV') {\n common.extend(color.__state, math.hsv_to_rgb(color.__state.h, color.__state.s, color.__state.v));\n } else {\n throw new Error('Corrupted color state');\n }\n};\n\nColor.recalculateHSV = function(color) {\n const result = math.rgb_to_hsv(color.r, color.g, color.b);\n\n common.extend(color.__state,\n {\n s: result.s,\n v: result.v\n }\n );\n\n if (!common.isNaN(result.h)) {\n color.__state.h = result.h;\n } else if (common.isUndefined(color.__state.h)) {\n color.__state.h = 0;\n }\n};\n\nColor.COMPONENTS = ['r', 'g', 'b', 'h', 's', 'v', 'hex', 'a'];\n\ndefineRGBComponent(Color.prototype, 'r', 2);\ndefineRGBComponent(Color.prototype, 'g', 1);\ndefineRGBComponent(Color.prototype, 'b', 0);\n\ndefineHSVComponent(Color.prototype, 'h');\ndefineHSVComponent(Color.prototype, 's');\ndefineHSVComponent(Color.prototype, 'v');\n\nObject.defineProperty(Color.prototype, 'a', {\n get: function() {\n return this.__state.a;\n },\n\n set: function(v) {\n this.__state.a = v;\n }\n});\n\nObject.defineProperty(Color.prototype, 'hex', {\n get: function() {\n if (!this.__state.space !== 'HEX') {\n this.__state.hex = math.rgb_to_hex(this.r, this.g, this.b);\n }\n\n return this.__state.hex;\n },\n\n set: function(v) {\n this.__state.space = 'HEX';\n this.__state.hex = v;\n }\n});\n\nexport default Color;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/color/Color.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport toString from './toString';\nimport common from '../utils/common';\n\nconst INTERPRETATIONS = [\n // Strings\n {\n litmus: common.isString,\n conversions: {\n THREE_CHAR_HEX: {\n read: function(original) {\n const test = original.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);\n if (test === null) {\n return false;\n }\n\n return {\n space: 'HEX',\n hex: parseInt(\n '0x' +\n test[1].toString() + test[1].toString() +\n test[2].toString() + test[2].toString() +\n test[3].toString() + test[3].toString(), 0)\n };\n },\n\n write: toString\n },\n\n SIX_CHAR_HEX: {\n read: function(original) {\n const test = original.match(/^#([A-F0-9]{6})$/i);\n if (test === null) {\n return false;\n }\n\n return {\n space: 'HEX',\n hex: parseInt('0x' + test[1].toString(), 0)\n };\n },\n\n write: toString\n },\n\n CSS_RGB: {\n read: function(original) {\n const test = original.match(/^rgb\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)/);\n if (test === null) {\n return false;\n }\n\n return {\n space: 'RGB',\n r: parseFloat(test[1]),\n g: parseFloat(test[2]),\n b: parseFloat(test[3])\n };\n },\n\n write: toString\n },\n\n CSS_RGBA: {\n read: function(original) {\n const test = original.match(/^rgba\\(\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)/);\n if (test === null) {\n return false;\n }\n\n return {\n space: 'RGB',\n r: parseFloat(test[1]),\n g: parseFloat(test[2]),\n b: parseFloat(test[3]),\n a: parseFloat(test[4])\n };\n },\n\n write: toString\n }\n }\n },\n\n // Numbers\n {\n litmus: common.isNumber,\n\n conversions: {\n\n HEX: {\n read: function(original) {\n return {\n space: 'HEX',\n hex: original,\n conversionName: 'HEX'\n };\n },\n\n write: function(color) {\n return color.hex;\n }\n }\n\n }\n\n },\n\n // Arrays\n {\n litmus: common.isArray,\n conversions: {\n RGB_ARRAY: {\n read: function(original) {\n if (original.length !== 3) {\n return false;\n }\n\n return {\n space: 'RGB',\n r: original[0],\n g: original[1],\n b: original[2]\n };\n },\n\n write: function(color) {\n return [color.r, color.g, color.b];\n }\n },\n\n RGBA_ARRAY: {\n read: function(original) {\n if (original.length !== 4) return false;\n return {\n space: 'RGB',\n r: original[0],\n g: original[1],\n b: original[2],\n a: original[3]\n };\n },\n\n write: function(color) {\n return [color.r, color.g, color.b, color.a];\n }\n }\n }\n },\n\n // Objects\n {\n litmus: common.isObject,\n conversions: {\n\n RGBA_OBJ: {\n read: function(original) {\n if (common.isNumber(original.r) &&\n common.isNumber(original.g) &&\n common.isNumber(original.b) &&\n common.isNumber(original.a)) {\n return {\n space: 'RGB',\n r: original.r,\n g: original.g,\n b: original.b,\n a: original.a\n };\n }\n return false;\n },\n\n write: function(color) {\n return {\n r: color.r,\n g: color.g,\n b: color.b,\n a: color.a\n };\n }\n },\n\n RGB_OBJ: {\n read: function(original) {\n if (common.isNumber(original.r) &&\n common.isNumber(original.g) &&\n common.isNumber(original.b)) {\n return {\n space: 'RGB',\n r: original.r,\n g: original.g,\n b: original.b\n };\n }\n return false;\n },\n\n write: function(color) {\n return {\n r: color.r,\n g: color.g,\n b: color.b\n };\n }\n },\n\n HSVA_OBJ: {\n read: function(original) {\n if (common.isNumber(original.h) &&\n common.isNumber(original.s) &&\n common.isNumber(original.v) &&\n common.isNumber(original.a)) {\n return {\n space: 'HSV',\n h: original.h,\n s: original.s,\n v: original.v,\n a: original.a\n };\n }\n return false;\n },\n\n write: function(color) {\n return {\n h: color.h,\n s: color.s,\n v: color.v,\n a: color.a\n };\n }\n },\n\n HSV_OBJ: {\n read: function(original) {\n if (common.isNumber(original.h) &&\n common.isNumber(original.s) &&\n common.isNumber(original.v)) {\n return {\n space: 'HSV',\n h: original.h,\n s: original.s,\n v: original.v\n };\n }\n return false;\n },\n\n write: function(color) {\n return {\n h: color.h,\n s: color.s,\n v: color.v\n };\n }\n }\n }\n }\n];\n\nlet result;\nlet toReturn;\n\nconst interpret = function() {\n toReturn = false;\n\n const original = arguments.length > 1 ? common.toArray(arguments) : arguments[0];\n common.each(INTERPRETATIONS, function(family) {\n if (family.litmus(original)) {\n common.each(family.conversions, function(conversion, conversionName) {\n result = conversion.read(original);\n\n if (toReturn === false && result !== false) {\n toReturn = result;\n result.conversionName = conversionName;\n result.conversion = conversion;\n return common.BREAK;\n }\n });\n\n return common.BREAK;\n }\n });\n\n return toReturn;\n};\n\nexport default interpret;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/color/interpret.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nexport default function(color, forceCSSHex) {\n const colorFormat = color.__state.conversionName.toString();\n\n const r = Math.round(color.r);\n const g = Math.round(color.g);\n const b = Math.round(color.b);\n const a = color.a;\n const h = Math.round(color.h);\n const s = color.s.toFixed(1);\n const v = color.v.toFixed(1);\n\n if (forceCSSHex || (colorFormat === 'THREE_CHAR_HEX') || (colorFormat === 'SIX_CHAR_HEX')) {\n let str = color.hex.toString(16);\n while (str.length < 6) {\n str = '0' + str;\n }\n return '#' + str;\n } else if (colorFormat === 'CSS_RGB') {\n return 'rgb(' + r + ',' + g + ',' + b + ')';\n } else if (colorFormat === 'CSS_RGBA') {\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n } else if (colorFormat === 'HEX') {\n return '0x' + color.hex.toString(16);\n } else if (colorFormat === 'RGB_ARRAY') {\n return '[' + r + ',' + g + ',' + b + ']';\n } else if (colorFormat === 'RGBA_ARRAY') {\n return '[' + r + ',' + g + ',' + b + ',' + a + ']';\n } else if (colorFormat === 'RGB_OBJ') {\n return '{r:' + r + ',g:' + g + ',b:' + b + '}';\n } else if (colorFormat === 'RGBA_OBJ') {\n return '{r:' + r + ',g:' + g + ',b:' + b + ',a:' + a + '}';\n } else if (colorFormat === 'HSV_OBJ') {\n return '{h:' + h + ',s:' + s + ',v:' + v + '}';\n } else if (colorFormat === 'HSVA_OBJ') {\n return '{h:' + h + ',s:' + s + ',v:' + v + ',a:' + a + '}';\n }\n\n return 'unknown format';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./dat/color/toString.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nconst ARR_EACH = Array.prototype.forEach;\nconst ARR_SLICE = Array.prototype.slice;\n\n/**\n * Band-aid methods for things that should be a lot easier in JavaScript.\n * Implementation and structure inspired by underscore.js\n * http://documentcloud.github.com/underscore/\n */\n\nconst Common = {\n BREAK: {},\n\n extend: function(target) {\n this.each(ARR_SLICE.call(arguments, 1), function(obj) {\n const keys = this.isObject(obj) ? Object.keys(obj) : [];\n keys.forEach(function(key) {\n if (!this.isUndefined(obj[key])) {\n target[key] = obj[key];\n }\n }.bind(this));\n }, this);\n\n return target;\n },\n\n defaults: function(target) {\n this.each(ARR_SLICE.call(arguments, 1), function(obj) {\n const keys = this.isObject(obj) ? Object.keys(obj) : [];\n keys.forEach(function(key) {\n if (this.isUndefined(target[key])) {\n target[key] = obj[key];\n }\n }.bind(this));\n }, this);\n\n return target;\n },\n\n compose: function() {\n const toCall = ARR_SLICE.call(arguments);\n return function() {\n let args = ARR_SLICE.call(arguments);\n for (let i = toCall.length - 1; i >= 0; i--) {\n args = [toCall[i].apply(this, args)];\n }\n return args[0];\n };\n },\n\n each: function(obj, itr, scope) {\n if (!obj) {\n return;\n }\n\n if (ARR_EACH && obj.forEach && obj.forEach === ARR_EACH) {\n obj.forEach(itr, scope);\n } else if (obj.length === obj.length + 0) { // Is number but not NaN\n let key;\n let l;\n for (key = 0, l = obj.length; key < l; key++) {\n if (key in obj && itr.call(scope, obj[key], key) === this.BREAK) {\n return;\n }\n }\n } else {\n for (const key in obj) {\n if (itr.call(scope, obj[key], key) === this.BREAK) {\n return;\n }\n }\n }\n },\n\n defer: function(fnc) {\n setTimeout(fnc, 0);\n },\n\n // if the function is called repeatedly, wait until threshold passes until we execute the function\n debounce: function(func, threshold, callImmediately) {\n let timeout;\n\n return function() {\n const obj = this;\n const args = arguments;\n function delayed() {\n timeout = null;\n if (!callImmediately) func.apply(obj, args);\n }\n\n const callNow = callImmediately || !timeout;\n\n clearTimeout(timeout);\n timeout = setTimeout(delayed, threshold);\n\n if (callNow) {\n func.apply(obj, args);\n }\n };\n },\n\n toArray: function(obj) {\n if (obj.toArray) return obj.toArray();\n return ARR_SLICE.call(obj);\n },\n\n isUndefined: function(obj) {\n return obj === undefined;\n },\n\n isNull: function(obj) {\n return obj === null;\n },\n\n isNaN: function(obj) {\n return isNaN(obj);\n },\n\n isArray: Array.isArray || function(obj) {\n return obj.constructor === Array;\n },\n\n isObject: function(obj) {\n return obj === Object(obj);\n },\n\n isNumber: function(obj) {\n return obj === obj + 0;\n },\n\n isString: function(obj) {\n return obj === obj + '';\n },\n\n isBoolean: function(obj) {\n return obj === false || obj === true;\n },\n\n isFunction: function(obj) {\n return Object.prototype.toString.call(obj) === '[object Function]';\n }\n\n};\n\nexport default Common;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/utils/common.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nlet tmpComponent;\n\nconst ColorMath = {\n hsv_to_rgb: function(h, s, v) {\n const hi = Math.floor(h / 60) % 6;\n\n const f = h / 60 - Math.floor(h / 60);\n const p = v * (1.0 - s);\n const q = v * (1.0 - (f * s));\n const t = v * (1.0 - ((1.0 - f) * s));\n\n const c = [\n [v, t, p],\n [q, v, p],\n [p, v, t],\n [p, q, v],\n [t, p, v],\n [v, p, q]\n ][hi];\n\n return {\n r: c[0] * 255,\n g: c[1] * 255,\n b: c[2] * 255\n };\n },\n\n rgb_to_hsv: function(r, g, b) {\n const min = Math.min(r, g, b);\n const max = Math.max(r, g, b);\n const delta = max - min;\n let h;\n let s;\n\n if (max !== 0) {\n s = delta / max;\n } else {\n return {\n h: NaN,\n s: 0,\n v: 0\n };\n }\n\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n h /= 6;\n if (h < 0) {\n h += 1;\n }\n\n return {\n h: h * 360,\n s: s,\n v: max / 255\n };\n },\n\n rgb_to_hex: function(r, g, b) {\n let hex = this.hex_with_component(0, 2, r);\n hex = this.hex_with_component(hex, 1, g);\n hex = this.hex_with_component(hex, 0, b);\n return hex;\n },\n\n component_from_hex: function(hex, componentIndex) {\n return (hex >> (componentIndex * 8)) & 0xFF;\n },\n\n hex_with_component: function(hex, componentIndex, value) {\n return value << (tmpComponent = componentIndex * 8) | (hex & ~(0xFF << tmpComponent));\n }\n};\n\nexport default ColorMath;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/color/math.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\n/**\n * @class An \"abstract\" class that represents a given property of an object.\n *\n * @param {Object} object The object to be manipulated\n * @param {string} property The name of the property to be manipulated\n *\n * @member dat.controllers\n */\nclass Controller {\n constructor(object, property) {\n this.initialValue = object[property];\n\n /**\n * Those who extend this class will put their DOM elements in here.\n * @type {DOMElement}\n */\n this.domElement = document.createElement('div');\n\n /**\n * The object to manipulate\n * @type {Object}\n */\n this.object = object;\n\n /**\n * The name of the property to manipulate\n * @type {String}\n */\n this.property = property;\n\n /**\n * The function to be called on change.\n * @type {Function}\n * @ignore\n */\n this.__onChange = undefined;\n\n /**\n * The function to be called on finishing change.\n * @type {Function}\n * @ignore\n */\n this.__onFinishChange = undefined;\n }\n\n /**\n * Specify that a function fire every time someone changes the value with\n * this Controller.\n *\n * @param {Function} fnc This function will be called whenever the value\n * is modified via this Controller.\n * @returns {Controller} this\n */\n onChange(fnc) {\n this.__onChange = fnc;\n return this;\n }\n\n /**\n * Specify that a function fire every time someone \"finishes\" changing\n * the value wih this Controller. Useful for values that change\n * incrementally like numbers or strings.\n *\n * @param {Function} fnc This function will be called whenever\n * someone \"finishes\" changing the value via this Controller.\n * @returns {Controller} this\n */\n onFinishChange(fnc) {\n this.__onFinishChange = fnc;\n return this;\n }\n\n /**\n * Change the value of <code>object[property]</code>\n *\n * @param {Object} newValue The new value of <code>object[property]</code>\n */\n setValue(newValue) {\n this.object[this.property] = newValue;\n if (this.__onChange) {\n this.__onChange.call(this, newValue);\n }\n\n this.updateDisplay();\n return this;\n }\n\n /**\n * Gets the value of <code>object[property]</code>\n *\n * @returns {Object} The current value of <code>object[property]</code>\n */\n getValue() {\n return this.object[this.property];\n }\n\n /**\n * Refreshes the visual display of a Controller in order to keep sync\n * with the object's current value.\n * @returns {Controller} this\n */\n updateDisplay() {\n return this;\n }\n\n /**\n * @returns {Boolean} true if the value has deviated from initialValue\n */\n isModified() {\n return this.initialValue !== this.getValue();\n }\n}\n\nexport default Controller;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/Controller.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport Controller from './Controller';\nimport dom from '../dom/dom';\n\n/**\n * @class Provides a checkbox input to alter the boolean property of an object.\n * @extends dat.controllers.Controller\n *\n * @param {Object} object The object to be manipulated\n * @param {string} property The name of the property to be manipulated\n *\n * @member dat.controllers\n */\nclass BooleanController extends Controller {\n constructor(object, property) {\n super(object, property);\n\n const _this = this;\n this.__prev = this.getValue();\n\n this.__checkbox = document.createElement('input');\n this.__checkbox.setAttribute('type', 'checkbox');\n\n function onChange() {\n _this.setValue(!_this.__prev);\n }\n\n dom.bind(this.__checkbox, 'change', onChange, false);\n\n this.domElement.appendChild(this.__checkbox);\n\n // Match original value\n this.updateDisplay();\n }\n\n setValue(v) {\n const toReturn = super.setValue(v);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n this.__prev = this.getValue();\n return toReturn;\n }\n\n updateDisplay() {\n if (this.getValue() === true) {\n this.__checkbox.setAttribute('checked', 'checked');\n this.__checkbox.checked = true;\n this.__prev = true;\n } else {\n this.__checkbox.checked = false;\n this.__prev = false;\n }\n\n return super.updateDisplay();\n }\n}\n\nexport default BooleanController;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/BooleanController.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport common from '../utils/common';\n\nconst EVENT_MAP = {\n HTMLEvents: ['change'],\n MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'],\n KeyboardEvents: ['keydown']\n};\n\nconst EVENT_MAP_INV = {};\ncommon.each(EVENT_MAP, function(v, k) {\n common.each(v, function(e) {\n EVENT_MAP_INV[e] = k;\n });\n});\n\nconst CSS_VALUE_PIXELS = /(\\d+(\\.\\d+)?)px/;\n\nfunction cssValueToPixels(val) {\n if (val === '0' || common.isUndefined(val)) {\n return 0;\n }\n\n const match = val.match(CSS_VALUE_PIXELS);\n\n if (!common.isNull(match)) {\n return parseFloat(match[1]);\n }\n\n // TODO ...ems? %?\n\n return 0;\n}\n\n/**\n * @namespace\n * @member dat.dom\n */\nconst dom = {\n\n /**\n *\n * @param elem\n * @param selectable\n */\n makeSelectable: function(elem, selectable) {\n if (elem === undefined || elem.style === undefined) return;\n\n elem.onselectstart = selectable ? function() {\n return false;\n } : function() {\n };\n\n elem.style.MozUserSelect = selectable ? 'auto' : 'none';\n elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';\n elem.unselectable = selectable ? 'on' : 'off';\n },\n\n /**\n *\n * @param elem\n * @param horizontal\n * @param vert\n */\n makeFullscreen: function(elem, hor, vert) {\n let vertical = vert;\n let horizontal = hor;\n\n if (common.isUndefined(horizontal)) {\n horizontal = true;\n }\n\n if (common.isUndefined(vertical)) {\n vertical = true;\n }\n\n elem.style.position = 'absolute';\n\n if (horizontal) {\n elem.style.left = 0;\n elem.style.right = 0;\n }\n if (vertical) {\n elem.style.top = 0;\n elem.style.bottom = 0;\n }\n },\n\n /**\n *\n * @param elem\n * @param eventType\n * @param params\n */\n fakeEvent: function(elem, eventType, pars, aux) {\n const params = pars || {};\n const className = EVENT_MAP_INV[eventType];\n if (!className) {\n throw new Error('Event type ' + eventType + ' not supported.');\n }\n const evt = document.createEvent(className);\n switch (className) {\n case 'MouseEvents':\n {\n const clientX = params.x || params.clientX || 0;\n const clientY = params.y || params.clientY || 0;\n evt.initMouseEvent(eventType, params.bubbles || false,\n params.cancelable || true, window, params.clickCount || 1,\n 0, // screen X\n 0, // screen Y\n clientX, // client X\n clientY, // client Y\n false, false, false, false, 0, null);\n break;\n }\n case 'KeyboardEvents':\n {\n const init = evt.initKeyboardEvent || evt.initKeyEvent; // webkit || moz\n common.defaults(params, {\n cancelable: true,\n ctrlKey: false,\n altKey: false,\n shiftKey: false,\n metaKey: false,\n keyCode: undefined,\n charCode: undefined\n });\n init(eventType, params.bubbles || false,\n params.cancelable, window,\n params.ctrlKey, params.altKey,\n params.shiftKey, params.metaKey,\n params.keyCode, params.charCode);\n break;\n }\n default:\n {\n evt.initEvent(eventType, params.bubbles || false, params.cancelable || true);\n break;\n }\n }\n common.defaults(evt, aux);\n elem.dispatchEvent(evt);\n },\n\n /**\n *\n * @param elem\n * @param event\n * @param func\n * @param bool\n */\n bind: function(elem, event, func, newBool) {\n const bool = newBool || false;\n if (elem.addEventListener) {\n elem.addEventListener(event, func, bool);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + event, func);\n }\n return dom;\n },\n\n /**\n *\n * @param elem\n * @param event\n * @param func\n * @param bool\n */\n unbind: function(elem, event, func, newBool) {\n const bool = newBool || false;\n if (elem.removeEventListener) {\n elem.removeEventListener(event, func, bool);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + event, func);\n }\n return dom;\n },\n\n /**\n *\n * @param elem\n * @param className\n */\n addClass: function(elem, className) {\n if (elem.className === undefined) {\n elem.className = className;\n } else if (elem.className !== className) {\n const classes = elem.className.split(/ +/);\n if (classes.indexOf(className) === -1) {\n classes.push(className);\n elem.className = classes.join(' ').replace(/^\\s+/, '').replace(/\\s+$/, '');\n }\n }\n return dom;\n },\n\n /**\n *\n * @param elem\n * @param className\n */\n removeClass: function(elem, className) {\n if (className) {\n if (elem.className === className) {\n elem.removeAttribute('class');\n } else {\n const classes = elem.className.split(/ +/);\n const index = classes.indexOf(className);\n if (index !== -1) {\n classes.splice(index, 1);\n elem.className = classes.join(' ');\n }\n }\n } else {\n elem.className = undefined;\n }\n return dom;\n },\n\n hasClass: function(elem, className) {\n return new RegExp('(?:^|\\\\s+)' + className + '(?:\\\\s+|$)').test(elem.className) || false;\n },\n\n /**\n *\n * @param elem\n */\n getWidth: function(elem) {\n const style = getComputedStyle(elem);\n\n return cssValueToPixels(style['border-left-width']) +\n cssValueToPixels(style['border-right-width']) +\n cssValueToPixels(style['padding-left']) +\n cssValueToPixels(style['padding-right']) +\n cssValueToPixels(style.width);\n },\n\n /**\n *\n * @param elem\n */\n getHeight: function(elem) {\n const style = getComputedStyle(elem);\n\n return cssValueToPixels(style['border-top-width']) +\n cssValueToPixels(style['border-bottom-width']) +\n cssValueToPixels(style['padding-top']) +\n cssValueToPixels(style['padding-bottom']) +\n cssValueToPixels(style.height);\n },\n\n /**\n *\n * @param el\n */\n getOffset: function(el) {\n let elem = el;\n const offset = { left: 0, top: 0 };\n if (elem.offsetParent) {\n do {\n offset.left += elem.offsetLeft;\n offset.top += elem.offsetTop;\n elem = elem.offsetParent;\n } while (elem);\n }\n return offset;\n },\n\n // http://stackoverflow.com/posts/2684561/revisions\n /**\n *\n * @param elem\n */\n isActive: function(elem) {\n return elem === document.activeElement && (elem.type || elem.href);\n }\n\n};\n\nexport default dom;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/dom/dom.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport Controller from './Controller';\nimport dom from '../dom/dom';\nimport common from '../utils/common';\n\n/**\n * @class Provides a select input to alter the property of an object, using a\n * list of accepted values.\n *\n * @extends dat.controllers.Controller\n *\n * @param {Object} object The object to be manipulated\n * @param {string} property The name of the property to be manipulated\n * @param {Object|string[]} options A map of labels to acceptable values, or\n * a list of acceptable string values.\n *\n * @member dat.controllers\n */\nclass OptionController extends Controller {\n constructor(object, property, opts) {\n super(object, property);\n\n let options = opts;\n\n const _this = this;\n\n /**\n * The drop down menu\n * @ignore\n */\n this.__select = document.createElement('select');\n\n if (common.isArray(options)) {\n const map = {};\n common.each(options, function(element) {\n map[element] = element;\n });\n options = map;\n }\n\n common.each(options, function(value, key) {\n const opt = document.createElement('option');\n opt.innerHTML = key;\n opt.setAttribute('value', value);\n _this.__select.appendChild(opt);\n });\n\n // Acknowledge original value\n this.updateDisplay();\n\n dom.bind(this.__select, 'change', function() {\n const desiredValue = this.options[this.selectedIndex].value;\n _this.setValue(desiredValue);\n });\n\n this.domElement.appendChild(this.__select);\n }\n\n setValue(v) {\n const toReturn = super.setValue(v);\n\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n return toReturn;\n }\n\n updateDisplay() {\n if (dom.isActive(this.__select)) return this; // prevent number from updating if user is trying to manually update\n this.__select.value = this.getValue();\n return super.updateDisplay();\n }\n}\n\nexport default OptionController;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/OptionController.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport Controller from './Controller';\nimport dom from '../dom/dom';\n\n/**\n * @class Provides a text input to alter the string property of an object.\n *\n * @extends dat.controllers.Controller\n *\n * @param {Object} object The object to be manipulated\n * @param {string} property The name of the property to be manipulated\n *\n * @member dat.controllers\n */\nclass StringController extends Controller {\n constructor(object, property) {\n super(object, property);\n\n const _this = this;\n\n function onChange() {\n _this.setValue(_this.__input.value);\n }\n\n function onBlur() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n\n this.__input = document.createElement('input');\n this.__input.setAttribute('type', 'text');\n\n dom.bind(this.__input, 'keyup', onChange);\n dom.bind(this.__input, 'change', onChange);\n dom.bind(this.__input, 'blur', onBlur);\n dom.bind(this.__input, 'keydown', function(e) {\n if (e.keyCode === 13) {\n this.blur();\n }\n });\n\n this.updateDisplay();\n\n this.domElement.appendChild(this.__input);\n }\n\n updateDisplay() {\n // Stops the caret from moving on account of:\n // keyup -> setValue -> updateDisplay\n if (!dom.isActive(this.__input)) {\n this.__input.value = this.getValue();\n }\n return super.updateDisplay();\n }\n}\n\nexport default StringController;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/StringController.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport Controller from './Controller';\nimport common from '../utils/common';\n\nfunction numDecimals(x) {\n const _x = x.toString();\n if (_x.indexOf('.') > -1) {\n return _x.length - _x.indexOf('.') - 1;\n }\n\n return 0;\n}\n\n/**\n * @class Represents a given property of an object that is a number.\n *\n * @extends dat.controllers.Controller\n *\n * @param {Object} object The object to be manipulated\n * @param {string} property The name of the property to be manipulated\n * @param {Object} [params] Optional parameters\n * @param {Number} [params.min] Minimum allowed value\n * @param {Number} [params.max] Maximum allowed value\n * @param {Number} [params.step] Increment by which to change value\n *\n * @member dat.controllers\n */\nclass NumberController extends Controller {\n constructor(object, property, params) {\n super(object, property);\n\n const _params = params || {};\n\n this.__min = _params.min;\n this.__max = _params.max;\n this.__step = _params.step;\n\n if (common.isUndefined(this.__step)) {\n if (this.initialValue === 0) {\n this.__impliedStep = 1; // What are we, psychics?\n } else {\n // Hey Doug, check this out.\n this.__impliedStep = Math.pow(10, Math.floor(Math.log(Math.abs(this.initialValue)) / Math.LN10)) / 10;\n }\n } else {\n this.__impliedStep = this.__step;\n }\n\n this.__precision = numDecimals(this.__impliedStep);\n }\n\n setValue(v) {\n let _v = v;\n\n if (this.__min !== undefined && _v < this.__min) {\n _v = this.__min;\n } else if (this.__max !== undefined && _v > this.__max) {\n _v = this.__max;\n }\n\n if (this.__step !== undefined && _v % this.__step !== 0) {\n _v = Math.round(_v / this.__step) * this.__step;\n }\n\n return super.setValue(_v);\n }\n\n /**\n * Specify a minimum value for <code>object[property]</code>.\n *\n * @param {Number} minValue The minimum value for\n * <code>object[property]</code>\n * @returns {dat.controllers.NumberController} this\n */\n min(v) {\n this.__min = v;\n return this;\n }\n\n /**\n * Specify a maximum value for <code>object[property]</code>.\n *\n * @param {Number} maxValue The maximum value for\n * <code>object[property]</code>\n * @returns {dat.controllers.NumberController} this\n */\n max(v) {\n this.__max = v;\n return this;\n }\n\n /**\n * Specify a step value that dat.controllers.NumberController\n * increments by.\n *\n * @param {Number} stepValue The step value for\n * dat.controllers.NumberController\n * @default if minimum and maximum specified increment is 1% of the\n * difference otherwise stepValue is 1\n * @returns {dat.controllers.NumberController} this\n */\n step(v) {\n this.__step = v;\n this.__impliedStep = v;\n this.__precision = numDecimals(v);\n return this;\n }\n}\n\nexport default NumberController;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/NumberController.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport NumberController from './NumberController';\nimport dom from '../dom/dom';\nimport common from '../utils/common';\n\nfunction roundToDecimal(value, decimals) {\n const tenTo = Math.pow(10, decimals);\n return Math.round(value * tenTo) / tenTo;\n}\n\n/**\n * @class Represents a given property of an object that is a number and\n * provides an input element with which to manipulate it.\n *\n * @extends dat.controllers.Controller\n * @extends dat.controllers.NumberController\n *\n * @param {Object} object The object to be manipulated\n * @param {string} property The name of the property to be manipulated\n * @param {Object} [params] Optional parameters\n * @param {Number} [params.min] Minimum allowed value\n * @param {Number} [params.max] Maximum allowed value\n * @param {Number} [params.step] Increment by which to change value\n *\n * @member dat.controllers\n */\nclass NumberControllerBox extends NumberController {\n constructor(object, property, params) {\n super(object, property, params);\n\n this.__truncationSuspended = false;\n\n const _this = this;\n\n /**\n * {Number} Previous mouse y position\n * @ignore\n */\n let prevY;\n\n function onChange() {\n const attempted = parseFloat(_this.__input.value);\n if (!common.isNaN(attempted)) {\n _this.setValue(attempted);\n }\n }\n\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n\n function onBlur() {\n onFinish();\n }\n\n function onMouseDrag(e) {\n const diff = prevY - e.clientY;\n _this.setValue(_this.getValue() + diff * _this.__impliedStep);\n\n prevY = e.clientY;\n }\n\n function onMouseUp() {\n dom.unbind(window, 'mousemove', onMouseDrag);\n dom.unbind(window, 'mouseup', onMouseUp);\n onFinish();\n }\n\n function onMouseDown(e) {\n dom.bind(window, 'mousemove', onMouseDrag);\n dom.bind(window, 'mouseup', onMouseUp);\n prevY = e.clientY;\n }\n\n this.__input = document.createElement('input');\n this.__input.setAttribute('type', 'text');\n\n // Makes it so manually specified values are not truncated.\n\n dom.bind(this.__input, 'change', onChange);\n dom.bind(this.__input, 'blur', onBlur);\n dom.bind(this.__input, 'mousedown', onMouseDown);\n dom.bind(this.__input, 'keydown', function(e) {\n // When pressing enter, you can be as precise as you want.\n if (e.keyCode === 13) {\n _this.__truncationSuspended = true;\n this.blur();\n _this.__truncationSuspended = false;\n onFinish();\n }\n });\n\n this.updateDisplay();\n\n this.domElement.appendChild(this.__input);\n }\n\n updateDisplay() {\n this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision);\n return super.updateDisplay();\n }\n}\n\nexport default NumberControllerBox;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/NumberControllerBox.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport NumberController from './NumberController';\nimport dom from '../dom/dom';\n\nfunction map(v, i1, i2, o1, o2) {\n return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));\n}\n\n/**\n * @class Represents a given property of an object that is a number, contains\n * a minimum and maximum, and provides a slider element with which to\n * manipulate it. It should be noted that the slider element is made up of\n * <code>&lt;div&gt;</code> tags, <strong>not</strong> the html5\n * <code>&lt;slider&gt;</code> element.\n *\n * @extends dat.controllers.Controller\n * @extends dat.controllers.NumberController\n *\n * @param {Object} object The object to be manipulated\n * @param {string} property The name of the property to be manipulated\n * @param {Number} minValue Minimum allowed value\n * @param {Number} maxValue Maximum allowed value\n * @param {Number} stepValue Increment by which to change value\n *\n * @member dat.controllers\n */\nclass NumberControllerSlider extends NumberController {\n constructor(object, property, min, max, step) {\n super(object, property, { min: min, max: max, step: step });\n\n const _this = this;\n\n this.__background = document.createElement('div');\n this.__foreground = document.createElement('div');\n\n dom.bind(this.__background, 'mousedown', onMouseDown);\n\n dom.addClass(this.__background, 'slider');\n dom.addClass(this.__foreground, 'slider-fg');\n\n function onMouseDown(e) {\n document.activeElement.blur();\n\n dom.bind(window, 'mousemove', onMouseDrag);\n dom.bind(window, 'mouseup', onMouseUp);\n\n onMouseDrag(e);\n }\n\n function onMouseDrag(e) {\n e.preventDefault();\n\n const bgRect = _this.__background.getBoundingClientRect();\n\n _this.setValue(\n map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max)\n );\n\n return false;\n }\n\n function onMouseUp() {\n dom.unbind(window, 'mousemove', onMouseDrag);\n dom.unbind(window, 'mouseup', onMouseUp);\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.getValue());\n }\n }\n\n this.updateDisplay();\n\n this.__background.appendChild(this.__foreground);\n this.domElement.appendChild(this.__background);\n }\n\n updateDisplay() {\n const pct = (this.getValue() - this.__min) / (this.__max - this.__min);\n this.__foreground.style.width = pct * 100 + '%';\n return super.updateDisplay();\n }\n}\n\nexport default NumberControllerSlider;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/NumberControllerSlider.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport Controller from './Controller';\nimport dom from '../dom/dom';\n\n/**\n * @class Provides a GUI interface to fire a specified method, a property of an object.\n *\n * @extends dat.controllers.Controller\n *\n * @param {Object} object The object to be manipulated\n * @param {string} property The name of the property to be manipulated\n *\n * @member dat.controllers\n */\nclass FunctionController extends Controller {\n constructor(object, property, text) {\n super(object, property);\n\n const _this = this;\n\n this.__button = document.createElement('div');\n this.__button.innerHTML = text === undefined ? 'Fire' : text;\n\n dom.bind(this.__button, 'click', function(e) {\n e.preventDefault();\n _this.fire();\n return false;\n });\n\n dom.addClass(this.__button, 'button');\n\n this.domElement.appendChild(this.__button);\n }\n\n fire() {\n if (this.__onChange) {\n this.__onChange.call(this);\n }\n this.getValue().call(this.object);\n if (this.__onFinishChange) {\n this.__onFinishChange.call(this, this.getValue());\n }\n }\n}\n\nexport default FunctionController;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/FunctionController.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport Controller from './Controller';\nimport dom from '../dom/dom';\nimport Color from '../color/Color';\nimport interpret from '../color/interpret';\nimport common from '../utils/common';\n\nclass ColorController extends Controller {\n\n\n setValue(newValue) {\n this.object[this.property] = newValue;\n if (this.__onChange) {\n this.__onChange.call(this, newValue);\n }\n this.updateDisplay();\n return this;\n }\n\n getValue() {\n return this.object[this.property];\n }\n\n constructor(object, property) {\n super(object, property);\n\n this.__color = new Color(this.getValue());\n this.__temp = new Color(0);\n\n const _this = this;\n\n this.domElement = document.createElement('div');\n\n dom.makeSelectable(this.domElement, false);\n\n this.__selector = document.createElement('div');\n this.__selector.className = 'selector';\n\n this.__saturation_field = document.createElement('div');\n this.__saturation_field.className = 'saturation-field';\n\n this.__field_knob = document.createElement('div');\n this.__field_knob.className = 'field-knob';\n this.__field_knob_border = '2px solid ';\n\n this.__hue_knob = document.createElement('div');\n this.__hue_knob.className = 'hue-knob';\n\n this.__hue_field = document.createElement('div');\n this.__hue_field.className = 'hue-field';\n\n this.__input = document.createElement('input');\n this.__input.type = 'text';\n this.__input_textShadow = '0 1px 1px ';\n\n dom.bind(this.__input, 'keydown', function(e) {\n if (e.keyCode === 13) { // on enter\n onBlur.call(this);\n }\n });\n\n dom.bind(this.__input, 'blur', onBlur);\n\n dom.bind(this.__selector, 'mousedown', function(/* e */) {\n dom\n .addClass(this, 'drag')\n .bind(window, 'mouseup', function(/* e */) {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n\n const valueField = document.createElement('div');\n\n common.extend(this.__selector.style, {\n width: '122px',\n height: '102px',\n padding: '3px',\n backgroundColor: '#222',\n boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'\n });\n\n common.extend(this.__field_knob.style, {\n position: 'absolute',\n width: '12px',\n height: '12px',\n border: this.__field_knob_border + (this.__color.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n zIndex: 1\n });\n\n common.extend(this.__hue_knob.style, {\n position: 'absolute',\n width: '15px',\n height: '2px',\n borderRight: '4px solid #fff',\n zIndex: 1\n });\n\n common.extend(this.__saturation_field.style, {\n width: '100px',\n height: '100px',\n border: '1px solid #555',\n marginRight: '3px',\n display: 'inline-block',\n cursor: 'pointer'\n });\n\n common.extend(valueField.style, {\n width: '100%',\n height: '100%',\n background: 'none'\n });\n\n linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');\n\n common.extend(this.__hue_field.style, {\n width: '15px',\n height: '100px',\n border: '1px solid #555',\n cursor: 'ns-resize',\n position: 'absolute',\n top: '3px',\n right: '3px'\n });\n\n hueGradient(this.__hue_field);\n\n common.extend(this.__input.style, {\n outline: 'none',\n// width: '120px',\n textAlign: 'center',\n// padding: '4px',\n // marginBottom: '6px',\n\n color: '#fff',\n border: 0,\n fontWeight: 'bold',\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n\n dom.bind(this.__saturation_field, 'mousedown', fieldDown);\n dom.bind(this.__field_knob, 'mousedown', fieldDown);\n\n dom.bind(this.__hue_field, 'mousedown', function(e) {\n setH(e);\n dom.bind(window, 'mousemove', setH);\n dom.bind(window, 'mouseup', fieldUpH);\n });\n\n function fieldDown(e) {\n setSV(e);\n // document.body.style.cursor = 'none';\n dom.bind(window, 'mousemove', setSV);\n dom.bind(window, 'mouseup', fieldUpSV);\n }\n\n function fieldUpSV() {\n dom.unbind(window, 'mousemove', setSV);\n dom.unbind(window, 'mouseup', fieldUpSV);\n // document.body.style.cursor = 'default';\n onFinish();\n }\n\n function onBlur() {\n const i = interpret(this.value);\n if (i !== false) {\n _this.__color.__state = i;\n _this.setValue(_this.__color.toOriginal());\n } else {\n this.value = _this.__color.toString();\n }\n }\n\n function fieldUpH() {\n dom.unbind(window, 'mousemove', setH);\n dom.unbind(window, 'mouseup', fieldUpH);\n onFinish();\n }\n\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.__color.toOriginal());\n }\n }\n\n this.__saturation_field.appendChild(valueField);\n this.__selector.appendChild(this.__field_knob);\n this.__selector.appendChild(this.__saturation_field);\n this.__selector.appendChild(this.__hue_field);\n this.__hue_field.appendChild(this.__hue_knob);\n\n this.domElement.appendChild(this.__input);\n\n this.domElement.appendChild(this.__selector);\n\n this.updateDisplay();\n\n function setSV(e) {\n e.preventDefault();\n\n const fieldRect = _this.__saturation_field.getBoundingClientRect();\n let s = (e.clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n let v = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (v > 1) {\n v = 1;\n } else if (v < 0) {\n v = 0;\n }\n\n if (s > 1) {\n s = 1;\n } else if (s < 0) {\n s = 0;\n }\n\n _this.__color.v = v;\n _this.__color.s = s;\n\n _this.setValue(_this.__color.toOriginal());\n\n\n return false;\n }\n\n function setH(e) {\n e.preventDefault();\n\n const fieldRect = _this.__hue_field.getBoundingClientRect();\n let h = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (h > 1) {\n h = 1;\n } else if (h < 0) {\n h = 0;\n }\n\n _this.__color.h = h * 360;\n\n _this.setValue(_this.__color.toOriginal());\n\n return false;\n }\n }\n\n updateDisplay() {\n const i = interpret(this.getValue());\n\n if (i !== false) {\n let mismatch = false;\n\n // Check for mismatch on the interpreted value.\n\n common.each(Color.COMPONENTS, function(component) {\n if (!common.isUndefined(i[component]) && !common.isUndefined(this.__color.__state[component]) &&\n i[component] !== this.__color.__state[component]) {\n mismatch = true;\n return {}; // break\n }\n }, this);\n\n // If nothing diverges, we keep our previous values\n // for statefulness, otherwise we recalculate fresh\n if (mismatch) {\n common.extend(this.__color.__state, i);\n }\n }\n\n common.extend(this.__temp.__state, this.__color.__state);\n\n this.__temp.a = 1;\n\n const flip = (this.__color.v < 0.5 || this.__color.s > 0.5) ? 255 : 0;\n const _flip = 255 - flip;\n\n common.extend(this.__field_knob.style, {\n marginLeft: 100 * this.__color.s - 7 + 'px',\n marginTop: 100 * (1 - this.__color.v) - 7 + 'px',\n backgroundColor: this.__temp.toHexString(),\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\n });\n\n this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';\n\n this.__temp.s = 1;\n this.__temp.v = 1;\n\n linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());\n\n this.__input.value = this.__color.toString();\n\n common.extend(this.__input.style, {\n backgroundColor: this.__color.toHexString(),\n color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',\n textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'\n });\n }\n}\n\nconst vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];\n\nfunction linearGradient(elem, x, a, b) {\n elem.style.background = '';\n common.each(vendors, function(vendor) {\n elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';\n });\n}\n\nfunction hueGradient(elem) {\n elem.style.background = '';\n elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';\n elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n}\n\nexport default ColorController;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/ColorController.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport Controller from './Controller';\nimport dom from '../dom/dom';\nimport Color from '../color/Color';\nimport interpret from '../color/interpret';\nimport common from '../utils/common';\n\nclass BgColorController extends Controller {\n\n\n setValue(newValue) {\n this.object[this.property] = newValue;\n if (this.__onChange) {\n this.__onChange.call(this, newValue);\n }\n this.updateDisplay();\n return this;\n }\n setValue2(newValue) {\n this.value2 = newValue;\n if (this.object[this.property + 'bg']) {\n this.object[this.property + 'bg'] = this.value2;\n }\n if (this.__onChange) {\n this.__onChange.call(this, newValue);\n }\n this.updateDisplay();\n return this;\n }\n\n getValue() {\n return this.object[this.property];\n }\n\n constructor(object, property) {\n super(object, property);\n\n this.__color = new Color(this.getValue());\n this.value2 = '#FFee00';\n if (this.object[this.property + 'bg']) {\n this.value2 = this.object[this.property + 'bg'];\n }\n this.__color2 = new Color(this.value2);\n\n this.__temp = new Color(0);\n this.__temp2 = new Color(0);\n\n const _this = this;\n\n this.domElement = document.createElement('div');\n\n dom.makeSelectable(this.domElement, false);\n\n this.__selector = document.createElement('div');\n /* this.__selector.className = 'selector'; */\n\n this.__saturation_field = document.createElement('div');\n this.__saturation_field.className = 'saturation-field';\n this.__saturation_field2 = document.createElement('div');\n this.__saturation_field2.className = 'saturation-field';\n\n this.__field_knob = document.createElement('div');\n this.__field_knob.className = 'field-knob';\n this.__field_knob_border = '2px solid ';\n this.__field_knob2 = document.createElement('div');\n this.__field_knob2.className = 'field-knob';\n this.__field_knob_border2 = '2px solid ';\n\n this.__hue_knob = document.createElement('div');\n this.__hue_knob.className = 'hue-knob';\n this.__hue_knob2 = document.createElement('div');\n this.__hue_knob2.className = 'hue-knob';\n\n this.__hue_field = document.createElement('div');\n this.__hue_field.className = 'hue-field';\n this.__hue_field2 = document.createElement('div');\n this.__hue_field2.className = 'hue-field';\n\n this.__input = document.createElement('input');\n this.__input.type = 'text';\n this.__input_textShadow = '0 1px 1px ';\n this.__input2 = document.createElement('input');\n this.__input2.type = 'text';\n this.__input_textShadow2 = '0 1px 1px ';\n\n dom.bind(this.__input, 'keydown', function(e) {\n if (e.keyCode === 13) { // on enter\n onBlur.call(this);\n }\n });\n dom.bind(this.__input2, 'keydown', function(e) {\n if (e.keyCode === 13) { // on enter\n onBlur2.call(this);\n }\n });\n\n dom.bind(this.__input, 'blur', onBlur);\n dom.bind(this.__input2, 'blur', onBlur2);\n\n /*\n dom.bind(this.__selector, 'mousedown', function( ) {\n dom\n .addClass(this, 'drag')\n .bind(window, 'mouseup', function( ) {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n */\n\n const valueField = document.createElement('div');\n const valueField2 = document.createElement('div');\n\n common.extend(this.__selector.style, {\n width: '200px',\n height: '102px',\n marginTop: '22px',\n backgroundColor: '#222',\n boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'\n });\n\n common.extend(this.__field_knob.style, {\n position: 'absolute',\n width: '12px',\n height: '12px',\n border: this.__field_knob_border + (this.__color.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n zIndex: 1\n });\n common.extend(this.__field_knob2.style, {\n position: 'absolute',\n left: '100',\n width: '12px',\n height: '12px',\n border: this.__field_knob_border2 + (this.__color2.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n zIndex: 1\n });\n\n common.extend(this.__hue_knob.style, {\n position: 'absolute',\n width: '15px',\n height: '2px',\n left: '-15px',\n borderRight: '4px solid #fff',\n zIndex: 1\n });\n common.extend(this.__hue_knob2.style, {\n position: 'absolute',\n width: '15px',\n height: '2px',\n left: '9px',\n borderRight: '4px solid #fff',\n zIndex: 1\n });\n\n common.extend(this.__saturation_field.style, {\n width: '100px',\n height: '100px',\n border: '1px solid #555',\n marginRight: '3px',\n display: 'inline-block',\n cursor: 'pointer'\n });\n common.extend(this.__saturation_field2.style, {\n left: '100px',\n width: '100px',\n height: '100px',\n border: '1px solid #555',\n marginRight: '3px',\n display: 'inline-block',\n position: 'absolute',\n top: '22px',\n cursor: 'pointer'\n });\n\n common.extend(valueField.style, {\n width: '100%',\n height: '100%',\n background: 'none'\n });\n common.extend(valueField2.style, {\n width: '100%',\n height: '100%',\n background: 'none'\n });\n\n linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');\n linearGradient(valueField2, 'top', 'rgba(0,0,0,0)', '#000');\n\n common.extend(this.__hue_field.style, {\n width: '20px',\n height: '100px',\n border: '1px solid #555',\n cursor: 'ns-resize',\n position: 'absolute',\n top: '3px',\n marginTop: '19px',\n left: '-20px'\n });\n common.extend(this.__hue_field2.style, {\n width: '20px',\n height: '100px',\n border: '1px solid #555',\n cursor: 'ns-resize',\n position: 'absolute',\n top: '3px',\n marginTop: '19px',\n left: '200px'\n });\n\n hueGradient(this.__hue_field);\n hueGradient(this.__hue_field2);\n\n common.extend(this.__input.style, {\n outline: 'none',\n// width: '120px',\n textAlign: 'center',\n// padding: '4px',\n // marginBottom: '6px',\n\n color: '#fff',\n border: 0,\n left: '-20px',\n position: 'absolute',\n fontWeight: 'bold',\n width: '120px',\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n common.extend(this.__input2.style, {\n outline: 'none',\n// width: '120px',\n textAlign: 'center',\n// padding: '4px',\n // marginBottom: '6px',\n\n color: '#fff',\n border: 0,\n left: '100px',\n position: 'absolute',\n fontWeight: 'bold',\n width: '120px',\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n\n dom.bind(this.__saturation_field, 'mousedown', fieldDown);\n dom.bind(this.__saturation_field2, 'mousedown', fieldDown2);\n dom.bind(this.__field_knob, 'mousedown', fieldDown);\n dom.bind(this.__field_knob2, 'mousedown', fieldDown2);\n\n dom.bind(this.__hue_field, 'mousedown', function(e) {\n setH(e);\n dom.bind(window, 'mousemove', setH);\n dom.bind(window, 'mouseup', fieldUpH);\n });\n dom.bind(this.__hue_field2, 'mousedown', function(e) {\n setH2(e);\n dom.bind(window, 'mousemove', setH2);\n dom.bind(window, 'mouseup', fieldUpH2);\n });\n\n function fieldDown(e) {\n setSV(e);\n // document.body.style.cursor = 'none';\n dom.bind(window, 'mousemove', setSV);\n dom.bind(window, 'mouseup', fieldUpSV);\n }\n function fieldDown2(e) {\n setSV2(e);\n // document.body.style.cursor = 'none';\n dom.bind(window, 'mousemove', setSV2);\n dom.bind(window, 'mouseup', fieldUpSV2);\n }\n\n function fieldUpSV() {\n dom.unbind(window, 'mousemove', setSV);\n dom.unbind(window, 'mouseup', fieldUpSV);\n // document.body.style.cursor = 'default';\n onFinish();\n }\n function fieldUpSV2() {\n dom.unbind(window, 'mousemove', setSV2);\n dom.unbind(window, 'mouseup', fieldUpSV2);\n // document.body.style.cursor = 'default';\n onFinish2();\n }\n\n function onBlur() {\n const i = interpret(this.value);\n if (i !== false) {\n _this.__color.__state = i;\n _this.setValue(_this.__color.toOriginal());\n } else {\n this.value = _this.__color.toString();\n }\n }\n function onBlur2() {\n const i = interpret(this.value);\n if (i !== false) {\n _this.__color2.__state = i;\n _this.setValue2(_this.__color2.toOriginal());\n } else {\n this.value = _this.__color2.toString();\n }\n }\n\n function fieldUpH() {\n dom.unbind(window, 'mousemove', setH);\n dom.unbind(window, 'mouseup', fieldUpH);\n onFinish();\n }\n function fieldUpH2() {\n dom.unbind(window, 'mousemove', setH2);\n dom.unbind(window, 'mouseup', fieldUpH2);\n onFinish2();\n }\n\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.__color2.toOriginal());\n }\n }\n function onFinish2() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.__color.toOriginal());\n }\n }\n\n this.__saturation_field.appendChild(valueField);\n this.__selector.appendChild(this.__field_knob);\n this.__selector.appendChild(this.__field_knob2);\n this.__selector.appendChild(this.__saturation_field);\n\n this.__saturation_field2.appendChild(valueField2);\n this.__selector.appendChild(this.__saturation_field2);\n\n this.__selector.appendChild(this.__hue_field);\n this.__hue_field.appendChild(this.__hue_knob);\n this.__hue_field2.appendChild(this.__hue_knob2);\n this.__selector.appendChild(this.__hue_field2);\n\n this.domElement.appendChild(this.__input2);\n this.domElement.appendChild(this.__input);\n\n this.domElement.appendChild(this.__selector);\n\n this.updateDisplay();\n\n function setSV2(e) {\n e.preventDefault();\n\n const fieldRect = _this.__saturation_field2.getBoundingClientRect();\n let s = (e.clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n let v = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (v > 1) {\n v = 1;\n } else if (v < 0) {\n v = 0;\n }\n\n if (s > 1) {\n s = 1;\n } else if (s < 0) {\n s = 0;\n }\n\n _this.__color2.v = v;\n _this.__color2.s = s;\n\n _this.setValue2(_this.__color2.toOriginal());\n\n\n return false;\n }\n function setSV(e) {\n e.preventDefault();\n\n const fieldRect = _this.__saturation_field.getBoundingClientRect();\n let s = (e.clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n let v = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (v > 1) {\n v = 1;\n } else if (v < 0) {\n v = 0;\n }\n\n if (s > 1) {\n s = 1;\n } else if (s < 0) {\n s = 0;\n }\n\n _this.__color.v = v;\n _this.__color.s = s;\n\n _this.setValue(_this.__color.toOriginal());\n\n\n return false;\n }\n\n function setH2(e) {\n e.preventDefault();\n\n const fieldRect = _this.__hue_field2.getBoundingClientRect();\n let h = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (h > 1) {\n h = 1;\n } else if (h < 0) {\n h = 0;\n }\n\n _this.__color2.h = h * 360;\n\n _this.setValue2(_this.__color2.toOriginal());\n\n return false;\n }\n function setH(e) {\n e.preventDefault();\n\n const fieldRect = _this.__hue_field.getBoundingClientRect();\n let h = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (h > 1) {\n h = 1;\n } else if (h < 0) {\n h = 0;\n }\n\n _this.__color.h = h * 360;\n\n _this.setValue(_this.__color.toOriginal());\n\n return false;\n }\n }\n\n updateDisplay() {\n const i = interpret(this.getValue());\n\n if (i !== false) {\n let mismatch = false;\n\n // Check for mismatch on the interpreted value.\n\n common.each(Color.COMPONENTS, function(component) {\n if (!common.isUndefined(i[component]) && !common.isUndefined(this.__color.__state[component]) &&\n i[component] !== this.__color.__state[component]) {\n mismatch = true;\n return {}; // break\n }\n }, this);\n\n // If nothing diverges, we keep our previous values\n // for statefulness, otherwise we recalculate fresh\n if (mismatch) {\n common.extend(this.__color.__state, i);\n }\n }\n\n common.extend(this.__temp.__state, this.__color.__state);\n common.extend(this.__temp2.__state, this.__color2.__state);\n\n this.__temp.a = 1;\n this.__temp2.a = 1;\n\n const flip = (this.__color.v < 0.5 || this.__color.s > 0.5) ? 255 : 0;\n const _flip = 255 - flip;\n const flip2 = (this.__color2.v < 0.5 || this.__color2.s > 0.5) ? 255 : 0;\n const _flip2 = 255 - flip2;\n\n common.extend(this.__field_knob.style, {\n marginLeft: 100 * this.__color.s - 7 + 'px',\n marginTop: 100 * (1 - this.__color.v) - 7 + 'px',\n backgroundColor: this.__temp.toHexString(),\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\n });\n common.extend(this.__field_knob2.style, {\n marginLeft: 100 * this.__color2.s - 7 + 'px',\n marginTop: 100 * (1 - this.__color2.v) - 7 + 'px',\n backgroundColor: this.__temp2.toHexString(),\n border: this.__field_knob_border2 + 'rgb(' + flip2 + ',' + flip2 + ',' + flip2 + ')'\n });\n\n this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';\n this.__hue_knob2.style.marginTop = (1 - this.__color2.h / 360) * 100 + 'px';\n\n this.__temp.s = 1;\n this.__temp.v = 1;\n this.__temp2.s = 1;\n this.__temp2.v = 1;\n\n linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());\n linearGradient(this.__saturation_field2, 'left', '#fff', this.__temp2.toHexString());\n\n this.__input.value = this.__color.toString();\n this.__input2.value = this.__color2.toString();\n\n common.extend(this.__input.style, {\n backgroundColor: this.__color.toHexString(),\n color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',\n textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'\n });\n common.extend(this.__input2.style, {\n backgroundColor: this.__color2.toHexString(),\n color: 'rgb(' + flip2 + ',' + flip2 + ',' + flip2 + ')',\n textShadow: this.__input_textShadow + 'rgba(' + _flip2 + ',' + _flip2 + ',' + _flip2 + ',.7)'\n });\n }\n}\n\nconst vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];\n\nfunction linearGradient(elem, x, a, b) {\n elem.style.background = '';\n common.each(vendors, function(vendor) {\n elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';\n });\n}\n\nfunction hueGradient(elem) {\n elem.style.background = '';\n elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';\n elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n}\n\nexport default BgColorController;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/BgColorController.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport Controller from './Controller';\nimport dom from '../dom/dom';\nimport Color from '../color/Color';\nimport interpret from '../color/interpret';\nimport common from '../utils/common';\n\nclass NgColorController extends Controller {\n\n\n setValue(newValue) {\n this.object[this.property] = newValue;\n if (this.__onChange) {\n this.__onChange.call(this, newValue);\n }\n this.updateDisplay();\n return this;\n }\n\n getValue() {\n return this.object[this.property];\n }\n\n constructor(object, property) {\n super(object, property);\n\n this.__color = new Color(this.getValue());\n this.__temp = new Color(0);\n\n const _this = this;\n\n this.domElement = document.createElement('div');\n\n dom.makeSelectable(this.domElement, false);\n\n this.__selector = document.createElement('div');\n /* this.__selector.className = 'selector'; */\n\n this.__saturation_field = document.createElement('div');\n this.__saturation_field.className = 'saturation-field';\n\n this.__field_knob = document.createElement('div');\n this.__field_knob.className = 'field-knob';\n this.__field_knob_border = '2px solid ';\n\n this.__hue_knob = document.createElement('div');\n this.__hue_knob.className = 'hue-knob';\n\n this.__hue_field = document.createElement('div');\n this.__hue_field.className = 'hue-field';\n\n this.__input = document.createElement('input');\n this.__input.type = 'text';\n this.__input_textShadow = '0 1px 1px ';\n\n dom.bind(this.__input, 'keydown', function(e) {\n if (e.keyCode === 13) { // on enter\n onBlur.call(this);\n }\n });\n\n dom.bind(this.__input, 'blur', onBlur);\n\n dom.bind(this.__selector, 'mousedown', function(/* e */) {\n dom\n .addClass(this, 'drag')\n .bind(window, 'mouseup', function(/* e */) {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n\n const valueField = document.createElement('div');\n\n common.extend(this.__selector.style, {\n width: '120px',\n height: '102px',\n marginTop: '22px',\n padding: '3px',\n backgroundColor: '#222',\n boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'\n });\n\n common.extend(this.__field_knob.style, {\n position: 'absolute',\n width: '12px',\n height: '12px',\n border: this.__field_knob_border + (this.__color.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n zIndex: 1\n });\n\n common.extend(this.__hue_knob.style, {\n position: 'absolute',\n width: '15px',\n height: '2px',\n left: '9px',\n borderRight: '4px solid #fff',\n zIndex: 1\n });\n\n common.extend(this.__saturation_field.style, {\n width: '100px',\n height: '100px',\n border: '1px solid #555',\n marginRight: '3px',\n display: 'inline-block',\n position: 'absolute',\n top: '22px',\n cursor: 'pointer'\n });\n\n common.extend(valueField.style, {\n width: '100%',\n height: '100%',\n background: 'none'\n });\n\n linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');\n\n common.extend(this.__hue_field.style, {\n width: '20px',\n height: '100px',\n border: '1px solid #555',\n cursor: 'ns-resize',\n position: 'absolute',\n top: '3px',\n marginTop: '19px',\n left: '100px'\n });\n\n hueGradient(this.__hue_field);\n\n common.extend(this.__input.style, {\n outline: 'none',\n// width: '120px',\n textAlign: 'center',\n// padding: '4px',\n // marginBottom: '6px',\n\n color: '#fff',\n border: 0,\n left: '0',\n position: 'absolute',\n width: '120px',\n fontWeight: 'bold',\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n\n dom.bind(this.__saturation_field, 'mousedown', fieldDown);\n dom.bind(this.__field_knob, 'mousedown', fieldDown);\n\n dom.bind(this.__hue_field, 'mousedown', function(e) {\n setH(e);\n dom.bind(window, 'mousemove', setH);\n dom.bind(window, 'mouseup', fieldUpH);\n });\n\n function fieldDown(e) {\n setSV(e);\n // document.body.style.cursor = 'none';\n dom.bind(window, 'mousemove', setSV);\n dom.bind(window, 'mouseup', fieldUpSV);\n }\n\n function fieldUpSV() {\n dom.unbind(window, 'mousemove', setSV);\n dom.unbind(window, 'mouseup', fieldUpSV);\n // document.body.style.cursor = 'default';\n onFinish();\n }\n\n function onBlur() {\n const i = interpret(this.value);\n if (i !== false) {\n _this.__color.__state = i;\n _this.setValue(_this.__color.toOriginal());\n } else {\n this.value = _this.__color.toString();\n }\n }\n\n function fieldUpH() {\n dom.unbind(window, 'mousemove', setH);\n dom.unbind(window, 'mouseup', fieldUpH);\n onFinish();\n }\n\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.__color.toOriginal());\n }\n }\n\n this.__saturation_field.appendChild(valueField);\n this.__selector.appendChild(this.__field_knob);\n this.__selector.appendChild(this.__saturation_field);\n this.__selector.appendChild(this.__hue_field);\n this.__hue_field.appendChild(this.__hue_knob);\n\n this.domElement.appendChild(this.__input);\n\n this.domElement.appendChild(this.__selector);\n\n this.updateDisplay();\n\n function setSV(e) {\n e.preventDefault();\n\n const fieldRect = _this.__saturation_field.getBoundingClientRect();\n let s = (e.clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n let v = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (v > 1) {\n v = 1;\n } else if (v < 0) {\n v = 0;\n }\n\n if (s > 1) {\n s = 1;\n } else if (s < 0) {\n s = 0;\n }\n\n _this.__color.v = v;\n _this.__color.s = s;\n\n _this.setValue(_this.__color.toOriginal());\n\n\n return false;\n }\n\n function setH(e) {\n e.preventDefault();\n\n const fieldRect = _this.__hue_field.getBoundingClientRect();\n let h = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (h > 1) {\n h = 1;\n } else if (h < 0) {\n h = 0;\n }\n\n _this.__color.h = h * 360;\n\n _this.setValue(_this.__color.toOriginal());\n\n return false;\n }\n }\n\n updateDisplay() {\n const i = interpret(this.getValue());\n\n if (i !== false) {\n let mismatch = false;\n\n // Check for mismatch on the interpreted value.\n\n common.each(Color.COMPONENTS, function(component) {\n if (!common.isUndefined(i[component]) && !common.isUndefined(this.__color.__state[component]) &&\n i[component] !== this.__color.__state[component]) {\n mismatch = true;\n return {}; // break\n }\n }, this);\n\n // If nothing diverges, we keep our previous values\n // for statefulness, otherwise we recalculate fresh\n if (mismatch) {\n common.extend(this.__color.__state, i);\n }\n }\n\n common.extend(this.__temp.__state, this.__color.__state);\n\n this.__temp.a = 1;\n\n const flip = (this.__color.v < 0.5 || this.__color.s > 0.5) ? 255 : 0;\n const _flip = 255 - flip;\n\n common.extend(this.__field_knob.style, {\n marginLeft: 100 * this.__color.s - 7 + 'px',\n marginTop: 100 * (1 - this.__color.v) - 7 + 'px',\n backgroundColor: this.__temp.toHexString(),\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\n });\n\n this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';\n\n this.__temp.s = 1;\n this.__temp.v = 1;\n\n linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());\n\n this.__input.value = this.__color.toString();\n\n common.extend(this.__input.style, {\n backgroundColor: this.__color.toHexString(),\n color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',\n textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'\n });\n }\n}\n\nconst vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];\n\nfunction linearGradient(elem, x, a, b) {\n elem.style.background = '';\n common.each(vendors, function(vendor) {\n elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';\n });\n}\n\nfunction hueGradient(elem) {\n elem.style.background = '';\n elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';\n elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n}\n\nexport default NgColorController;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/NgColorController.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport Controller from './Controller';\nimport dom from '../dom/dom';\nimport Color from '../color/Color';\nimport interpret from '../color/interpret';\nimport common from '../utils/common';\n\nclass GtColorController extends Controller {\n\n\n setValue(newValue) {\n this.object[this.property] = newValue;\n if (this.__onChange) {\n this.__onChange.call(this, newValue);\n }\n this.updateDisplay();\n return this;\n }\n setValue2(newValue) {\n this.value2 = newValue;\n if (this.object[this.property + 'bg']) {\n this.object[this.property + 'bg'] = this.value2;\n }\n if (this.__onChange) {\n this.__onChange.call(this, newValue);\n }\n this.updateDisplay();\n return this;\n }\n\n getValue() {\n return this.object[this.property];\n }\n\n constructor(object, property) {\n super(object, property);\n\n this.__color = new Color(this.getValue());\n this.value2 = '#FFee00';\n if (this.object[this.property + 'bg']) {\n this.value2 = this.object[this.property + 'bg'];\n }\n this.__color2 = new Color(this.value2);\n\n this.__temp = new Color(0);\n this.__temp2 = new Color(0);\n\n const _this = this;\n\n this.domElement = document.createElement('div');\n\n dom.makeSelectable(this.domElement, false);\n\n this.__selector = document.createElement('div');\n /* this.__selector.className = 'selector'; */\n\n this.__saturation_field = document.createElement('div');\n this.__saturation_field.className = 'saturation-field';\n this.__saturation_field2 = document.createElement('div');\n this.__saturation_field2.className = 'saturation-field';\n\n this.__field_knob = document.createElement('div');\n this.__field_knob.className = 'field-knob';\n this.__field_knob_border = '2px solid ';\n this.__field_knob2 = document.createElement('div');\n this.__field_knob2.className = 'field-knob';\n this.__field_knob_border2 = '2px solid ';\n\n this.__hue_knob = document.createElement('div');\n this.__hue_knob.className = 'hue-knob';\n this.__hue_knob2 = document.createElement('div');\n this.__hue_knob2.className = 'hue-knob';\n\n this.__hue_field = document.createElement('div');\n this.__hue_field.className = 'hue-field';\n this.__hue_field2 = document.createElement('div');\n this.__hue_field2.className = 'hue-field';\n\n this.__input = document.createElement('input');\n this.__input.type = 'text';\n this.__input_textShadow = '0 1px 1px ';\n this.__input2 = document.createElement('input');\n this.__input2.type = 'text';\n this.__input_textShadow2 = '0 1px 1px ';\n\n dom.bind(this.__input, 'keydown', function(e) {\n if (e.keyCode === 13) { // on enter\n onBlur.call(this);\n }\n });\n dom.bind(this.__input2, 'keydown', function(e) {\n if (e.keyCode === 13) { // on enter\n onBlur2.call(this);\n }\n });\n\n dom.bind(this.__input, 'blur', onBlur);\n dom.bind(this.__input2, 'blur', onBlur2);\n\n /*\n dom.bind(this.__selector, 'mousedown', function( ) {\n dom\n .addClass(this, 'drag')\n .bind(window, 'mouseup', function( ) {\n dom.removeClass(_this.__selector, 'drag');\n });\n });\n */\n\n const valueField = document.createElement('div');\n const valueField2 = document.createElement('div');\n\n common.extend(this.__selector.style, {\n width: '200px',\n height: '102px',\n marginTop: '22px',\n backgroundColor: '#222',\n boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'\n });\n\n common.extend(this.__field_knob.style, {\n position: 'absolute',\n width: '12px',\n height: '12px',\n border: this.__field_knob_border + (this.__color.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n zIndex: 1\n });\n common.extend(this.__field_knob2.style, {\n position: 'absolute',\n left: '100',\n width: '12px',\n height: '12px',\n border: this.__field_knob_border2 + (this.__color2.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n zIndex: 1\n });\n\n common.extend(this.__hue_knob.style, {\n position: 'absolute',\n width: '15px',\n height: '2px',\n left: '-15px',\n borderRight: '4px solid #fff',\n zIndex: 1\n });\n common.extend(this.__hue_knob2.style, {\n position: 'absolute',\n width: '15px',\n height: '2px',\n left: '9px',\n borderRight: '4px solid #fff',\n zIndex: 1\n });\n\n common.extend(this.__saturation_field.style, {\n width: '100px',\n height: '100px',\n border: '1px solid #555',\n marginRight: '3px',\n display: 'inline-block',\n cursor: 'pointer'\n });\n common.extend(this.__saturation_field2.style, {\n left: '100px',\n width: '100px',\n height: '100px',\n border: '1px solid #555',\n marginRight: '3px',\n display: 'inline-block',\n position: 'absolute',\n top: '22px',\n cursor: 'pointer'\n });\n\n common.extend(valueField.style, {\n width: '100%',\n height: '100%',\n background: 'none'\n });\n common.extend(valueField2.style, {\n width: '100%',\n height: '100%',\n background: 'none'\n });\n\n linearGradient(valueField, 'top', 'rgba(0,0,0,0)', '#000');\n linearGradient(valueField2, 'top', 'rgba(0,0,0,0)', '#000');\n\n common.extend(this.__hue_field.style, {\n width: '20px',\n height: '100px',\n border: '1px solid #555',\n cursor: 'ns-resize',\n position: 'absolute',\n top: '3px',\n marginTop: '19px',\n left: '-20px'\n });\n common.extend(this.__hue_field2.style, {\n width: '20px',\n height: '100px',\n border: '1px solid #555',\n cursor: 'ns-resize',\n position: 'absolute',\n top: '3px',\n marginTop: '19px',\n left: '200px'\n });\n\n hueGradient(this.__hue_field);\n hueGradient(this.__hue_field2);\n\n common.extend(this.__input.style, {\n outline: 'none',\n// width: '120px',\n textAlign: 'center',\n// padding: '4px',\n // marginBottom: '6px',\n\n color: '#fff',\n border: 0,\n left: '-20px',\n position: 'absolute',\n fontWeight: 'bold',\n width: '120px',\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n common.extend(this.__input2.style, {\n outline: 'none',\n// width: '120px',\n textAlign: 'center',\n// padding: '4px',\n // marginBottom: '6px',\n\n color: '#fff',\n border: 0,\n left: '100px',\n position: 'absolute',\n fontWeight: 'bold',\n width: '120px',\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n\n dom.bind(this.__saturation_field, 'mousedown', fieldDown);\n dom.bind(this.__saturation_field2, 'mousedown', fieldDown2);\n dom.bind(this.__field_knob, 'mousedown', fieldDown);\n dom.bind(this.__field_knob2, 'mousedown', fieldDown2);\n\n dom.bind(this.__hue_field, 'mousedown', function(e) {\n setH(e);\n dom.bind(window, 'mousemove', setH);\n dom.bind(window, 'mouseup', fieldUpH);\n });\n dom.bind(this.__hue_field2, 'mousedown', function(e) {\n setH2(e);\n dom.bind(window, 'mousemove', setH2);\n dom.bind(window, 'mouseup', fieldUpH2);\n });\n\n function fieldDown(e) {\n setSV(e);\n // document.body.style.cursor = 'none';\n dom.bind(window, 'mousemove', setSV);\n dom.bind(window, 'mouseup', fieldUpSV);\n }\n function fieldDown2(e) {\n setSV2(e);\n // document.body.style.cursor = 'none';\n dom.bind(window, 'mousemove', setSV2);\n dom.bind(window, 'mouseup', fieldUpSV2);\n }\n\n function fieldUpSV() {\n dom.unbind(window, 'mousemove', setSV);\n dom.unbind(window, 'mouseup', fieldUpSV);\n // document.body.style.cursor = 'default';\n onFinish();\n }\n function fieldUpSV2() {\n dom.unbind(window, 'mousemove', setSV2);\n dom.unbind(window, 'mouseup', fieldUpSV2);\n // document.body.style.cursor = 'default';\n onFinish2();\n }\n\n function onBlur() {\n const i = interpret(this.value);\n if (i !== false) {\n _this.__color.__state = i;\n _this.setValue(_this.__color.toOriginal());\n } else {\n this.value = _this.__color.toString();\n }\n }\n function onBlur2() {\n const i = interpret(this.value);\n if (i !== false) {\n _this.__color2.__state = i;\n _this.setValue2(_this.__color2.toOriginal());\n } else {\n this.value = _this.__color2.toString();\n }\n }\n\n function fieldUpH() {\n dom.unbind(window, 'mousemove', setH);\n dom.unbind(window, 'mouseup', fieldUpH);\n onFinish();\n }\n function fieldUpH2() {\n dom.unbind(window, 'mousemove', setH2);\n dom.unbind(window, 'mouseup', fieldUpH2);\n onFinish2();\n }\n\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.__color2.toOriginal());\n }\n }\n function onFinish2() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.__color.toOriginal());\n }\n }\n\n this.__saturation_field.appendChild(valueField);\n this.__selector.appendChild(this.__field_knob);\n this.__selector.appendChild(this.__field_knob2);\n this.__selector.appendChild(this.__saturation_field);\n\n this.__saturation_field2.appendChild(valueField2);\n this.__selector.appendChild(this.__saturation_field2);\n\n this.__selector.appendChild(this.__hue_field);\n this.__hue_field.appendChild(this.__hue_knob);\n this.__hue_field2.appendChild(this.__hue_knob2);\n this.__selector.appendChild(this.__hue_field2);\n\n this.domElement.appendChild(this.__input2);\n this.domElement.appendChild(this.__input);\n\n this.domElement.appendChild(this.__selector);\n\n this.updateDisplay();\n\n function setSV2(e) {\n e.preventDefault();\n\n const fieldRect = _this.__saturation_field2.getBoundingClientRect();\n let s = (e.clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n let v = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (v > 1) {\n v = 1;\n } else if (v < 0) {\n v = 0;\n }\n\n if (s > 1) {\n s = 1;\n } else if (s < 0) {\n s = 0;\n }\n\n _this.__color2.v = v;\n _this.__color2.s = s;\n\n _this.setValue2(_this.__color2.toOriginal());\n\n\n return false;\n }\n function setSV(e) {\n e.preventDefault();\n\n const fieldRect = _this.__saturation_field.getBoundingClientRect();\n let s = (e.clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n let v = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (v > 1) {\n v = 1;\n } else if (v < 0) {\n v = 0;\n }\n\n if (s > 1) {\n s = 1;\n } else if (s < 0) {\n s = 0;\n }\n\n _this.__color.v = v;\n _this.__color.s = s;\n\n _this.setValue(_this.__color.toOriginal());\n\n\n return false;\n }\n\n function setH2(e) {\n e.preventDefault();\n\n const fieldRect = _this.__hue_field2.getBoundingClientRect();\n let h = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (h > 1) {\n h = 1;\n } else if (h < 0) {\n h = 0;\n }\n\n _this.__color2.h = h * 360;\n\n _this.setValue2(_this.__color2.toOriginal());\n\n return false;\n }\n function setH(e) {\n e.preventDefault();\n\n const fieldRect = _this.__hue_field.getBoundingClientRect();\n let h = 1 - (e.clientY - fieldRect.top) / (fieldRect.bottom - fieldRect.top);\n\n if (h > 1) {\n h = 1;\n } else if (h < 0) {\n h = 0;\n }\n\n _this.__color.h = h * 360;\n\n _this.setValue(_this.__color.toOriginal());\n\n return false;\n }\n }\n\n updateDisplay() {\n const i = interpret(this.getValue());\n\n if (i !== false) {\n let mismatch = false;\n\n // Check for mismatch on the interpreted value.\n\n common.each(Color.COMPONENTS, function(component) {\n if (!common.isUndefined(i[component]) && !common.isUndefined(this.__color.__state[component]) &&\n i[component] !== this.__color.__state[component]) {\n mismatch = true;\n return {}; // break\n }\n }, this);\n\n // If nothing diverges, we keep our previous values\n // for statefulness, otherwise we recalculate fresh\n if (mismatch) {\n common.extend(this.__color.__state, i);\n }\n }\n\n common.extend(this.__temp.__state, this.__color.__state);\n common.extend(this.__temp2.__state, this.__color2.__state);\n\n this.__temp.a = 1;\n this.__temp2.a = 1;\n\n const flip = (this.__color.v < 0.5 || this.__color.s > 0.5) ? 255 : 0;\n const _flip = 255 - flip;\n const flip2 = (this.__color2.v < 0.5 || this.__color2.s > 0.5) ? 255 : 0;\n const _flip2 = 255 - flip2;\n\n common.extend(this.__field_knob.style, {\n marginLeft: 100 * this.__color.s - 7 + 'px',\n marginTop: 100 * (1 - this.__color.v) - 7 + 'px',\n backgroundColor: this.__temp.toHexString(),\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\n });\n common.extend(this.__field_knob2.style, {\n marginLeft: 100 * this.__color2.s - 7 + 'px',\n marginTop: 100 * (1 - this.__color2.v) - 7 + 'px',\n backgroundColor: this.__temp2.toHexString(),\n border: this.__field_knob_border2 + 'rgb(' + flip2 + ',' + flip2 + ',' + flip2 + ')'\n });\n\n this.__hue_knob.style.marginTop = (1 - this.__color.h / 360) * 100 + 'px';\n this.__hue_knob2.style.marginTop = (1 - this.__color2.h / 360) * 100 + 'px';\n\n this.__temp.s = 1;\n this.__temp.v = 1;\n this.__temp2.s = 1;\n this.__temp2.v = 1;\n\n linearGradient(this.__saturation_field, 'left', '#fff', this.__temp.toHexString());\n linearGradient(this.__saturation_field2, 'left', '#fff', this.__temp2.toHexString());\n\n this.__input.value = this.__color.toString();\n this.__input2.value = this.__color2.toString();\n\n common.extend(this.__input.style, {\n backgroundColor: this.__color.toHexString(),\n color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',\n textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'\n });\n common.extend(this.__input2.style, {\n backgroundColor: this.__color2.toHexString(),\n color: 'rgb(' + flip2 + ',' + flip2 + ',' + flip2 + ')',\n textShadow: this.__input_textShadow + 'rgba(' + _flip2 + ',' + _flip2 + ',' + _flip2 + ',.7)'\n });\n }\n}\n\nconst vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];\n\nfunction linearGradient(elem, x, a, b) {\n elem.style.background = '';\n common.each(vendors, function(vendor) {\n elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';\n });\n}\n\nfunction hueGradient(elem) {\n elem.style.background = '';\n elem.style.cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';\n elem.style.cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n}\n\nexport default GtColorController;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/GtColorController.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport Controller from './Controller';\nimport dom from '../dom/dom';\nimport Color from '../color/Color';\nimport interpret from '../color/interpret';\nimport common from '../utils/common';\n\nclass HSVColorController extends Controller {\n\n\n constructor(object, property) {\n super(object, property);\n\n this.__color = new Color(this.getValue());\n this.__temp = new Color(0);\n this.__temp2 = new Color(0);\n\n const _this = this;\n this.domElement = document.createElement('div');\n dom.makeSelectable(this.domElement, false);\n this.__selector = document.createElement('div');\n this.__field_knob = document.createElement('div');\n this.__field_knob.className = 'field-knob';\n this.__field_knob_border = '2px solid ';\n this.__field_knob2 = document.createElement('div');\n this.__field_knob2.className = 'field-knob';\n this.__field_knob_border2 = '2px solid ';\n this.__field_knob3 = document.createElement('div');\n this.__field_knob3.className = 'field-knob';\n this.__field_knob_border3 = '2px solid ';\n this.__hsv_field = document.createElement('div');\n this.__hsv_field.className = 'hue-field';\n this.__hsv_field2 = document.createElement('div');\n this.__hsv_field2.className = 'hue-field';\n this.__hsv_field3 = document.createElement('div');\n this.__hsv_field3.className = 'hue-field';\n this.__hsv_fieldLabel = document.createElement('Label');\n this.__hsv_fieldLabel.innerHTML = 'H:';\n this.__hsv_fieldLabel2 = document.createElement('Label');\n this.__hsv_fieldLabel2.innerHTML = 'S:';\n this.__hsv_fieldLabel3 = document.createElement('Label');\n this.__hsv_fieldLabel3.innerHTML = 'V:';\n\n this.__input = document.createElement('input');\n this.__input.type = 'text';\n this.__input_textShadow = '0 1px 1px ';\n\n dom.bind(this.__input, 'keydown', function(e) {\n if (e.keyCode === 13) { // on enter\n onBlur.call(this);\n }\n });\n\n dom.bind(this.__input, 'blur', onBlur);\n\n const valueField = document.createElement('div');\n\n common.extend(this.__selector.style, {\n width: '256px',\n height: '10px',\n marginTop: '22px',\n backgroundColor: '#222',\n boxShadow: '0px 1px 3px rgba(0,0,0,0.3)'\n });\n\n common.extend(this.__field_knob.style, {\n position: 'absolute',\n width: '12px',\n height: '12px',\n border: this.__field_knob_border + (this.__color.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n top: '-2',\n zIndex: 1\n });\n common.extend(this.__field_knob2.style, {\n position: 'absolute',\n width: '12px',\n height: '12px',\n border: this.__field_knob_border + (this.__color.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n top: '-2',\n zIndex: 1\n });\n common.extend(this.__field_knob3.style, {\n position: 'absolute',\n width: '12px',\n height: '12px',\n border: this.__field_knob_border + (this.__color.v < 0.5 ? '#fff' : '#000'),\n boxShadow: '0px 1px 3px rgba(0,0,0,0.5)',\n borderRadius: '12px',\n top: '-2',\n zIndex: 1\n });\n\n\n common.extend(valueField.style, {\n width: '100%',\n height: '100%',\n background: 'none'\n });\n\n\n common.extend(this.__hsv_field.style, {\n width: '256px',\n height: '20px',\n border: '1px solid #555',\n position: 'absolute',\n top: '30px',\n left: '0px'\n });\n common.extend(this.__hsv_field2.style, {\n width: '256px',\n height: '20px',\n border: '1px solid #555',\n position: 'absolute',\n top: '55px',\n left: '0px'\n });\n common.extend(this.__hsv_field3.style, {\n width: '256px',\n height: '20px',\n border: '1px solid #555',\n position: 'absolute',\n top: '80px',\n left: '0px'\n });\n\n hueGradient(this.__hsv_field);\n hueGradient(this.__hsv_field2);\n hueGradient(this.__hsv_field3);\n\n common.extend(this.__input.style, {\n outline: 'none',\n textAlign: 'center',\n color: '#fff',\n border: 0,\n left: '0px',\n position: 'absolute',\n fontWeight: 'bold',\n width: '256px',\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n common.extend(this.__hsv_fieldLabel.style, {\n outline: 'none',\n textAlign: 'left',\n color: '#fff',\n border: 0,\n left: '-70px',\n position: 'absolute',\n font: 'bold 12px Courier',\n width: '50px',\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n common.extend(this.__hsv_fieldLabel2.style, {\n outline: 'none',\n textAlign: 'left',\n color: '#fff',\n border: 0,\n left: '-70px',\n position: 'absolute',\n font: 'bold 12px Courier',\n width: '50px',\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n common.extend(this.__hsv_fieldLabel3.style, {\n outline: 'none',\n textAlign: 'left',\n color: '#fff',\n border: 0,\n left: '-70px',\n position: 'absolute',\n font: 'bold 12px Courier',\n width: '50px',\n textShadow: this.__input_textShadow + 'rgba(0,0,0,0.7)'\n });\n\n dom.bind(this.__hsv_field, 'mousedown', function(e) {\n setH(e);\n dom.bind(window, 'mousemove', setH);\n dom.bind(window, 'mouseup', fieldUpH);\n });\n dom.bind(this.__hsv_field2, 'mousedown', function(e) {\n setS(e);\n dom.bind(window, 'mousemove', setS);\n dom.bind(window, 'mouseup', fieldUpS);\n });\n dom.bind(this.__hsv_field3, 'mousedown', function(e) {\n setV(e);\n dom.bind(window, 'mousemove', setV);\n dom.bind(window, 'mouseup', fieldUpV);\n });\n\n function fieldUpH() {\n dom.unbind(window, 'mousemove', setH);\n dom.unbind(window, 'mouseup', fieldUpH);\n onFinish();\n }\n function fieldUpS() {\n dom.unbind(window, 'mousemove', setS);\n dom.unbind(window, 'mouseup', fieldUpS);\n onFinish();\n }\n function fieldUpV() {\n dom.unbind(window, 'mousemove', setV);\n dom.unbind(window, 'mouseup', fieldUpV);\n onFinish();\n }\n\n\n function onBlur() {\n const i = interpret(this.value);\n if (i !== false) {\n _this.__color.__state = i;\n _this.setValue(_this.__color.toOriginal());\n } else {\n this.value = _this.__color.toString();\n }\n }\n\n function onFinish() {\n if (_this.__onFinishChange) {\n _this.__onFinishChange.call(_this, _this.__color.toOriginal());\n }\n }\n\n common.extend(this.domElement.style, { height: '100px' });\n\n this.__hsv_field.appendChild(this.__field_knob);\n this.__hsv_field2.appendChild(this.__field_knob2);\n this.__hsv_field3.appendChild(this.__field_knob3);\n\n this.__selector.appendChild(this.__hsv_field);\n this.__selector.appendChild(this.__hsv_field2);\n this.__selector.appendChild(this.__hsv_field3);\n this.__hsv_field.appendChild(this.__hsv_fieldLabel);\n this.__hsv_field2.appendChild(this.__hsv_fieldLabel2);\n this.__hsv_field3.appendChild(this.__hsv_fieldLabel3);\n this.domElement.appendChild(this.__input);\n this.domElement.appendChild(this.__selector);\n\n this.updateDisplay();\n\n\n function setS(e) {\n const fieldRect = _this.__hsv_field.getBoundingClientRect();\n const s = (e.clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n e.preventDefault();\n _this.__color.s = Math.min(Math.max(s, 0), 1);\n _this.setValue(_this.__color.toOriginal());\n return false;\n }\n function setV(e) {\n const fieldRect = _this.__hsv_field.getBoundingClientRect();\n const v = (e.clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n e.preventDefault();\n _this.__color.v = Math.min(Math.max(v, 0), 1);\n _this.setValue(_this.__color.toOriginal());\n return false;\n }\n function setH(e) {\n const fieldRect = _this.__hsv_field.getBoundingClientRect();\n const h = (e.clientX - fieldRect.left) / (fieldRect.right - fieldRect.left);\n e.preventDefault();\n _this.__color.h = Math.min(Math.max(h, 0), 1) * 360;\n _this.setValue(_this.__color.toOriginal());\n return false;\n }\n }\n\n updateDisplay() {\n const i = interpret(this.getValue());\n\n if (i !== false) {\n let mismatch = false;\n\n // Check for mismatch on the interpreted value.\n\n common.each(Color.COMPONENTS, function(component) {\n if (!common.isUndefined(i[component]) && !common.isUndefined(this.__color.__state[component]) &&\n i[component] !== this.__color.__state[component]) {\n mismatch = true;\n return {}; // break\n }\n }, this);\n\n // If nothing diverges, we keep our previous values\n // for statefulness, otherwise we recalculate fresh\n if (mismatch) {\n common.extend(this.__color.__state, i);\n }\n }\n\n common.extend(this.__temp.__state, this.__color.__state);\n\n this.__temp.a = 1;\n this.__temp2.a = 1;\n\n const flip = (this.__color.v < 0.5 || this.__color.s > 0.5) ? 255 : 0;\n const _flip = 255 - flip;\n\n common.extend(this.__field_knob.style, {\n marginLeft: (parseInt(this.__color.h / 360 * 256 - 7, 10)) + 'px',\n marginTop: '5px',\n border: this.__field_knob_border + 'rgb(255,255,255)'\n });\n common.extend(this.__field_knob2.style, {\n marginLeft: 256 * this.__color.s - 7 + 'px',\n marginTop: '5px',\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\n });\n common.extend(this.__field_knob3.style, {\n marginLeft: 256 * this.__color.v - 7 + 'px',\n marginTop: '5px',\n border: this.__field_knob_border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'\n });\n\n this.__hsv_fieldLabel.innerHTML = 'H: ' + parseInt(this.__color.h, 10);\n this.__hsv_fieldLabel2.innerHTML = 'S: ' + parseInt(this.__color.s * 100, 10);\n this.__hsv_fieldLabel3.innerHTML = 'V: ' + parseInt(this.__color.v * 100, 10);\n\n this.__temp.h = this.__color.h;\n this.__temp.v = this.__color.v;\n this.__temp.s = 1;\n this.__temp2.s = this.__color.s;\n this.__temp2.h = this.__color.h;\n this.__temp2.v = 1;\n\n linearGradient(this.__hsv_field2, 'left', '#fff', this.__temp.toHexString());\n linearGradient(this.__hsv_field3, 'left', '#000', this.__temp2.toHexString());\n\n this.__input.value = this.__color.toString();\n\n common.extend(this.__input.style, {\n backgroundColor: this.__color.toHexString(),\n color: 'rgb(' + flip + ',' + flip + ',' + flip + ')',\n textShadow: this.__input_textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'\n });\n }\n}\n\nconst vendors = ['-moz-', '-o-', '-webkit-', '-ms-', ''];\n\nfunction linearGradient(elem, x, a, b) {\n elem.style.background = '';\n common.each(vendors, function(vendor) {\n elem.style.cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ';\n });\n}\n\nfunction hueGradient(elem) {\n elem.style.background = '';\n elem.style.cssText += 'background: -moz-linear-gradient(right, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);';\n elem.style.cssText += 'background: -webkit-linear-gradient(right, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -o-linear-gradient(right, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: -ms-linear-gradient(right, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n elem.style.cssText += 'background: linear-gradient(right, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);';\n}\n\nexport default HSVColorController;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/HSVColorController.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport css from '../utils/css';\nimport saveDialogueContents from './saveDialogue.html';\nimport ControllerFactory from '../controllers/ControllerFactory';\nimport Controller from '../controllers/Controller';\nimport BooleanController from '../controllers/BooleanController';\nimport FunctionController from '../controllers/FunctionController';\nimport NumberControllerBox from '../controllers/NumberControllerBox';\nimport NumberControllerSlider from '../controllers/NumberControllerSlider';\nimport ColorController from '../controllers/ColorController';\nimport BgColorController from '../controllers/BgColorController';\nimport NgColorController from '../controllers/NgColorController';\nimport HSVColorController from '../controllers/HSVColorController';\nimport GtColorController from '../controllers/GtColorController';\nimport requestAnimationFrame from '../utils/requestAnimationFrame';\nimport CenteredDiv from '../dom/CenteredDiv';\nimport dom from '../dom/dom';\nimport common from '../utils/common';\n\nimport styleSheet from './style.scss'; // CSS to embed in build\n\ncss.inject(styleSheet);\n\n/** Outer-most className for GUI's */\nconst CSS_NAMESPACE = 'dg';\n\nconst HIDE_KEY_CODE = 72;\n\n/** The only value shared between the JS and SCSS. Use caution. */\nconst CLOSE_BUTTON_HEIGHT = 20;\n\nconst DEFAULT_DEFAULT_PRESET_NAME = 'Default';\n\nconst SUPPORTS_LOCAL_STORAGE = (function() {\n try {\n return 'localStorage' in window && window.localStorage !== null;\n } catch (e) {\n return false;\n }\n}());\n\nlet SAVE_DIALOGUE;\n\n/** Have we yet to create an autoPlace GUI? */\nlet autoPlaceVirgin = true;\n\n/** Fixed position div that auto place GUI's go inside */\nlet autoPlaceContainer;\n\n/** Are we hiding the GUI's ? */\nlet hide = false;\n\n/** GUI's which should be hidden */\nconst hideableGuis = [];\n\n/**\n * A lightweight controller library for JavaScript. It allows you to easily\n * manipulate variables and fire functions on the fly.\n * @class\n *\n * @member dat.gui\n *\n * @param {Object} [params]\n * @param {String} [params.name] The name of this GUI.\n * @param {Object} [params.load] JSON object representing the saved state of\n * this GUI.\n * @param {Boolean} [params.auto=true]\n * @param {dat.gui.GUI} [params.parent] The GUI I'm nested in.\n * @param {Boolean} [params.closed] If true, starts closed\n * @param {Boolean} [params.closeOnTop] If true, close/open button shows on top of the GUI\n */\nconst GUI = function(pars) {\n const _this = this;\n\n let params = pars || {};\n\n /**\n * Outermost DOM Element\n * @type DOMElement\n */\n this.domElement = document.createElement('div');\n this.__ul = document.createElement('ul');\n this.domElement.appendChild(this.__ul);\n\n dom.addClass(this.domElement, CSS_NAMESPACE);\n\n /**\n * Nested GUI's by name\n * @ignore\n */\n this.__folders = {};\n\n this.__controllers = [];\n\n /**\n * List of objects I'm remembering for save, only used in top level GUI\n * @ignore\n */\n this.__rememberedObjects = [];\n\n /**\n * Maps the index of remembered objects to a map of controllers, only used\n * in top level GUI.\n *\n * @private\n * @ignore\n *\n * @example\n * [\n * {\n * propertyName: Controller,\n * anotherPropertyName: Controller\n * },\n * {\n * propertyName: Controller\n * }\n * ]\n */\n this.__rememberedObjectIndecesToControllers = [];\n\n this.__listening = [];\n\n // Default parameters\n params = common.defaults(params, {\n closeOnTop: false,\n autoPlace: true,\n width: GUI.DEFAULT_WIDTH\n });\n\n params = common.defaults(params, {\n resizable: params.autoPlace,\n hideable: params.autoPlace\n });\n\n if (!common.isUndefined(params.load)) {\n // Explicit preset\n if (params.preset) {\n params.load.preset = params.preset;\n }\n } else {\n params.load = { preset: DEFAULT_DEFAULT_PRESET_NAME };\n }\n\n if (common.isUndefined(params.parent) && params.hideable) {\n hideableGuis.push(this);\n }\n\n // Only root level GUI's are resizable.\n params.resizable = common.isUndefined(params.parent) && params.resizable;\n\n if (params.autoPlace && common.isUndefined(params.scrollable)) {\n params.scrollable = true;\n }\n// params.scrollable = common.isUndefined(params.parent) && params.scrollable === true;\n\n // Not part of params because I don't want people passing this in via\n // constructor. Should be a 'remembered' value.\n let useLocalStorage =\n SUPPORTS_LOCAL_STORAGE &&\n localStorage.getItem(getLocalStorageHash(this, 'isLocal')) === 'true';\n\n let saveToLocalStorage;\n\n Object.defineProperties(this,\n /** @lends dat.gui.GUI.prototype */\n {\n /**\n * The parent <code>GUI</code>\n * @type dat.gui.GUI\n */\n parent: {\n get: function() {\n return params.parent;\n }\n },\n\n scrollable: {\n get: function() {\n return params.scrollable;\n }\n },\n\n /**\n * Handles <code>GUI</code>'s element placement for you\n * @type Boolean\n */\n autoPlace: {\n get: function() {\n return params.autoPlace;\n }\n },\n\n /**\n * Handles <code>GUI</code>'s position of open/close button\n * @type Boolean\n */\n closeOnTop: {\n get: function() {\n return params.closeOnTop;\n }\n },\n\n /**\n * The identifier for a set of saved values\n * @type String\n */\n preset: {\n get: function() {\n if (_this.parent) {\n return _this.getRoot().preset;\n }\n\n return params.load.preset;\n },\n\n set: function(v) {\n if (_this.parent) {\n _this.getRoot().preset = v;\n } else {\n params.load.preset = v;\n }\n setPresetSelectIndex(this);\n _this.revert();\n }\n },\n\n /**\n * The width of <code>GUI</code> element\n * @type Number\n */\n width: {\n get: function() {\n return params.width;\n },\n set: function(v) {\n params.width = v;\n setWidth(_this, v);\n }\n },\n\n /**\n * The name of <code>GUI</code>. Used for folders. i.e\n * a folder's name\n * @type String\n */\n name: {\n get: function() {\n return params.name;\n },\n set: function(v) {\n // TODO Check for collisions among sibling folders\n params.name = v;\n if (titleRowName) {\n titleRowName.innerHTML = params.name;\n }\n }\n },\n\n /**\n * Whether the <code>GUI</code> is collapsed or not\n * @type Boolean\n */\n closed: {\n get: function() {\n return params.closed;\n },\n set: function(v) {\n params.closed = v;\n if (params.closed) {\n dom.addClass(_this.__ul, GUI.CLASS_CLOSED);\n } else {\n dom.removeClass(_this.__ul, GUI.CLASS_CLOSED);\n }\n // For browsers that aren't going to respect the CSS transition,\n // Lets just check our height against the window height right off\n // the bat.\n this.onResize();\n\n if (_this.__closeButton) {\n _this.__closeButton.innerHTML = v ? GUI.TEXT_OPEN : GUI.TEXT_CLOSED;\n }\n }\n },\n\n /**\n * Contains all presets\n * @type Object\n */\n load: {\n get: function() {\n return params.load;\n }\n },\n\n /**\n * Determines whether or not to use <a href=\"https://developer.mozilla.org/en/DOM/Storage#localStorage\">localStorage</a> as the means for\n * <code>remember</code>ing\n * @type Boolean\n */\n useLocalStorage: {\n\n get: function() {\n return useLocalStorage;\n },\n set: function(bool) {\n if (SUPPORTS_LOCAL_STORAGE) {\n useLocalStorage = bool;\n if (bool) {\n dom.bind(window, 'unload', saveToLocalStorage);\n } else {\n dom.unbind(window, 'unload', saveToLocalStorage);\n }\n localStorage.setItem(getLocalStorageHash(_this, 'isLocal'), bool);\n }\n }\n }\n });\n\n // Are we a root level GUI?\n if (common.isUndefined(params.parent)) {\n params.closed = false;\n\n dom.addClass(this.domElement, GUI.CLASS_MAIN);\n dom.makeSelectable(this.domElement, false);\n\n // Are we supposed to be loading locally?\n if (SUPPORTS_LOCAL_STORAGE) {\n if (useLocalStorage) {\n _this.useLocalStorage = true;\n\n const savedGui = localStorage.getItem(getLocalStorageHash(this, 'gui'));\n\n if (savedGui) {\n params.load = JSON.parse(savedGui);\n }\n }\n }\n\n this.__closeButton = document.createElement('div');\n this.__closeButton.innerHTML = GUI.TEXT_CLOSED;\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BUTTON);\n if (params.closeOnTop) {\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_TOP);\n this.domElement.insertBefore(this.__closeButton, this.domElement.childNodes[0]);\n } else {\n dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BOTTOM);\n this.domElement.appendChild(this.__closeButton);\n }\n\n dom.bind(this.__closeButton, 'click', function() {\n _this.closed = !_this.closed;\n });\n // Oh, you're a nested GUI!\n } else {\n if (params.closed === undefined) {\n params.closed = true;\n }\n\n const titleRowName = document.createTextNode(params.name);\n dom.addClass(titleRowName, 'controller-name');\n\n const titleRow = addRow(_this, titleRowName);\n\n const onClickTitle = function(e) {\n e.preventDefault();\n _this.closed = !_this.closed;\n return false;\n };\n\n dom.addClass(this.__ul, GUI.CLASS_CLOSED);\n\n dom.addClass(titleRow, 'title');\n dom.bind(titleRow, 'click', onClickTitle);\n\n if (!params.closed) {\n this.closed = false;\n }\n }\n\n if (params.autoPlace) {\n if (common.isUndefined(params.parent)) {\n if (autoPlaceVirgin) {\n autoPlaceContainer = document.createElement('div');\n dom.addClass(autoPlaceContainer, CSS_NAMESPACE);\n dom.addClass(autoPlaceContainer, GUI.CLASS_AUTO_PLACE_CONTAINER);\n document.body.appendChild(autoPlaceContainer);\n autoPlaceVirgin = false;\n }\n\n // Put it in the dom for you.\n autoPlaceContainer.appendChild(this.domElement);\n\n // Apply the auto styles\n dom.addClass(this.domElement, GUI.CLASS_AUTO_PLACE);\n }\n\n\n // Make it not elastic.\n if (!this.parent) {\n setWidth(_this, params.width);\n }\n }\n\n this.__resizeHandler = function() {\n _this.onResizeDebounced();\n };\n\n dom.bind(window, 'resize', this.__resizeHandler);\n dom.bind(this.__ul, 'webkitTransitionEnd', this.__resizeHandler);\n dom.bind(this.__ul, 'transitionend', this.__resizeHandler);\n dom.bind(this.__ul, 'oTransitionEnd', this.__resizeHandler);\n this.onResize();\n\n if (params.resizable) {\n addResizeHandle(this);\n }\n\n saveToLocalStorage = function() {\n if (SUPPORTS_LOCAL_STORAGE && localStorage.getItem(getLocalStorageHash(_this, 'isLocal')) === 'true') {\n localStorage.setItem(getLocalStorageHash(_this, 'gui'), JSON.stringify(_this.getSaveObject()));\n }\n };\n\n // expose this method publicly\n this.saveToLocalStorageIfPossible = saveToLocalStorage;\n\n function resetWidth() {\n const root = _this.getRoot();\n root.width += 1;\n common.defer(function() {\n root.width -= 1;\n });\n }\n\n if (!params.parent) {\n resetWidth();\n }\n};\n\nGUI.toggleHide = function() {\n hide = !hide;\n common.each(hideableGuis, function(gui) {\n gui.domElement.style.display = hide ? 'none' : '';\n });\n};\n\nGUI.CLASS_AUTO_PLACE = 'a';\nGUI.CLASS_AUTO_PLACE_CONTAINER = 'ac';\nGUI.CLASS_MAIN = 'main';\nGUI.CLASS_CONTROLLER_ROW = 'cr';\nGUI.CLASS_TOO_TALL = 'taller-than-window';\nGUI.CLASS_CLOSED = 'closed';\nGUI.CLASS_CLOSE_BUTTON = 'close-button';\nGUI.CLASS_CLOSE_TOP = 'close-top';\nGUI.CLASS_CLOSE_BOTTOM = 'close-bottom';\nGUI.CLASS_DRAG = 'drag';\n\nGUI.DEFAULT_WIDTH = 245;\nGUI.TEXT_CLOSED = 'Close Controls';\nGUI.TEXT_OPEN = 'Open Controls';\n\nGUI._keydownHandler = function(e) {\n if (document.activeElement.type !== 'text' &&\n (e.which === HIDE_KEY_CODE || e.keyCode === HIDE_KEY_CODE)) {\n GUI.toggleHide();\n }\n};\ndom.bind(window, 'keydown', GUI._keydownHandler, false);\n\ncommon.extend(\n GUI.prototype,\n\n /** @lends dat.gui.GUI */\n {\n\n /**\n * @param object\n * @param property\n * @returns {dat.controllers.Controller} The new controller that was added.\n * @instance\n */\n add: function(object, property) {\n return add(\n this,\n object,\n property,\n {\n factoryArgs: Array.prototype.slice.call(arguments, 2)\n }\n );\n },\n\n /**\n * @param object\n * @param property\n * @returns {dat.controllers.ColorController} The new controller that was added.\n * @instance\n */\n addColor: function(object, property) {\n return add(\n this,\n object,\n property,\n {\n color: true\n }\n );\n },\n addBgColor: function(object, property) {\n return addbg(\n this,\n object,\n property,\n {\n color: true\n }\n );\n },\n addNgColor: function(object, property) {\n return addng(\n this,\n object,\n property,\n {\n color: true\n }\n );\n },\n addGtColor: function(object, property) {\n return addgt(\n this,\n object,\n property,\n {\n color: true\n }\n );\n },\n addHSVColor: function(object, property) {\n return addhsv(\n this,\n object,\n property,\n {\n color: true\n }\n );\n },\n\n /**\n * @param controller\n * @instance\n */\n remove: function(controller) {\n // TODO listening?\n this.__ul.removeChild(controller.__li);\n this.__controllers.splice(this.__controllers.indexOf(controller), 1);\n const _this = this;\n common.defer(function() {\n _this.onResize();\n });\n },\n\n destroy: function() {\n if (this.autoPlace) {\n autoPlaceContainer.removeChild(this.domElement);\n }\n\n dom.unbind(window, 'keydown', GUI._keydownHandler, false);\n dom.unbind(window, 'resize', this.__resizeHandler);\n\n if (this.saveToLocalStorageIfPossible) {\n dom.unbind(window, 'unload', this.saveToLocalStorageIfPossible);\n }\n },\n\n /**\n * @param name\n * @returns {dat.gui.GUI} The new folder.\n * @throws {Error} if this GUI already has a folder by the specified\n * name\n * @instance\n */\n addFolder: function(name) {\n // We have to prevent collisions on names in order to have a key\n // by which to remember saved values\n if (this.__folders[name] !== undefined) {\n throw new Error('You already have a folder in this GUI by the' +\n ' name \"' + name + '\"');\n }\n\n const newGuiParams = { name: name, parent: this };\n\n // We need to pass down the autoPlace trait so that we can\n // attach event listeners to open/close folder actions to\n // ensure that a scrollbar appears if the window is too short.\n newGuiParams.autoPlace = this.autoPlace;\n\n // Do we have saved appearance data for this folder?\n if (this.load && // Anything loaded?\n this.load.folders && // Was my parent a dead-end?\n this.load.folders[name]) { // Did daddy remember me?\n // Start me closed if I was closed\n newGuiParams.closed = this.load.folders[name].closed;\n\n // Pass down the loaded data\n newGuiParams.load = this.load.folders[name];\n }\n\n const gui = new GUI(newGuiParams);\n this.__folders[name] = gui;\n\n const li = addRow(this, gui.domElement);\n dom.addClass(li, 'folder');\n return gui;\n },\n\n open: function() {\n this.closed = false;\n },\n\n close: function() {\n this.closed = true;\n },\n\n\n onResize: function() {\n // we debounce this function to prevent performance issues when rotating on tablet/mobile\n const root = this.getRoot();\n if (root.scrollable) {\n const top = dom.getOffset(root.__ul).top;\n let h = 0;\n\n common.each(root.__ul.childNodes, function(node) {\n if (!(root.autoPlace && node === root.__save_row)) {\n h += dom.getHeight(node);\n }\n });\n\n if (window.innerHeight - top - CLOSE_BUTTON_HEIGHT < h) {\n dom.addClass(root.domElement, GUI.CLASS_TOO_TALL);\n root.__ul.style.height = window.innerHeight - top - CLOSE_BUTTON_HEIGHT + 'px';\n } else {\n dom.removeClass(root.domElement, GUI.CLASS_TOO_TALL);\n root.__ul.style.height = 'auto';\n }\n }\n\n if (root.__resize_handle) {\n common.defer(function() {\n root.__resize_handle.style.height = root.__ul.offsetHeight + 'px';\n });\n }\n\n if (root.__closeButton) {\n root.__closeButton.style.width = root.width + 'px';\n }\n },\n\n onResizeDebounced: common.debounce(function() { this.onResize(); }, 50),\n\n /**\n * Mark objects for saving. The order of these objects cannot change as\n * the GUI grows. When remembering new objects, append them to the end\n * of the list.\n *\n * @param {Object...} objects\n * @throws {Error} if not called on a top level GUI.\n * @instance\n */\n remember: function() {\n if (common.isUndefined(SAVE_DIALOGUE)) {\n SAVE_DIALOGUE = new CenteredDiv();\n SAVE_DIALOGUE.domElement.innerHTML = saveDialogueContents;\n }\n\n if (this.parent) {\n throw new Error('You can only call remember on a top level GUI.');\n }\n\n const _this = this;\n\n common.each(Array.prototype.slice.call(arguments), function(object) {\n if (_this.__rememberedObjects.length === 0) {\n addSaveMenu(_this);\n }\n if (_this.__rememberedObjects.indexOf(object) === -1) {\n _this.__rememberedObjects.push(object);\n }\n });\n\n if (this.autoPlace) {\n // Set save row width\n setWidth(this, this.width);\n }\n },\n\n /**\n * @returns {dat.gui.GUI} the topmost parent GUI of a nested GUI.\n * @instance\n */\n getRoot: function() {\n let gui = this;\n while (gui.parent) {\n gui = gui.parent;\n }\n return gui;\n },\n\n /**\n * @returns {Object} a JSON object representing the current state of\n * this GUI as well as its remembered properties.\n * @instance\n */\n getSaveObject: function() {\n const toReturn = this.load;\n toReturn.closed = this.closed;\n\n // Am I remembering any values?\n if (this.__rememberedObjects.length > 0) {\n toReturn.preset = this.preset;\n\n if (!toReturn.remembered) {\n toReturn.remembered = {};\n }\n\n toReturn.remembered[this.preset] = getCurrentPreset(this);\n }\n\n toReturn.folders = {};\n common.each(this.__folders, function(element, key) {\n toReturn.folders[key] = element.getSaveObject();\n });\n\n return toReturn;\n },\n\n save: function() {\n if (!this.load.remembered) {\n this.load.remembered = {};\n }\n\n this.load.remembered[this.preset] = getCurrentPreset(this);\n markPresetModified(this, false);\n this.saveToLocalStorageIfPossible();\n },\n\n saveAs: function(presetName) {\n if (!this.load.remembered) {\n // Retain default values upon first save\n this.load.remembered = {};\n this.load.remembered[DEFAULT_DEFAULT_PRESET_NAME] = getCurrentPreset(this, true);\n }\n\n this.load.remembered[presetName] = getCurrentPreset(this);\n this.preset = presetName;\n addPresetOption(this, presetName, true);\n this.saveToLocalStorageIfPossible();\n },\n\n revert: function(gui) {\n common.each(this.__controllers, function(controller) {\n // Make revert work on Default.\n if (!this.getRoot().load.remembered) {\n controller.setValue(controller.initialValue);\n } else {\n recallSavedValue(gui || this.getRoot(), controller);\n }\n\n // fire onFinishChange callback\n if (controller.__onFinishChange) {\n controller.__onFinishChange.call(controller, controller.getValue());\n }\n }, this);\n\n common.each(this.__folders, function(folder) {\n folder.revert(folder);\n });\n\n if (!gui) {\n markPresetModified(this.getRoot(), false);\n }\n },\n\n listen: function(controller) {\n const init = this.__listening.length === 0;\n this.__listening.push(controller);\n if (init) {\n updateDisplays(this.__listening);\n }\n },\n\n updateDisplay: function() {\n common.each(this.__controllers, function(controller) {\n controller.updateDisplay();\n });\n common.each(this.__folders, function(folder) {\n folder.updateDisplay();\n });\n }\n }\n);\n\n/**\n * Add a row to the end of the GUI or before another row.\n *\n * @param gui\n * @param [newDom] If specified, inserts the dom content in the new row\n * @param [liBefore] If specified, places the new row before another row\n */\nfunction addRow(gui, newDom, liBefore) {\n const li = document.createElement('li');\n if (newDom) {\n li.appendChild(newDom);\n }\n\n if (liBefore) {\n gui.__ul.insertBefore(li, liBefore);\n } else {\n gui.__ul.appendChild(li);\n }\n gui.onResize();\n return li;\n}\n\nfunction markPresetModified(gui, modified) {\n const opt = gui.__preset_select[gui.__preset_select.selectedIndex];\n\n // console.log('mark', modified, opt);\n if (modified) {\n opt.innerHTML = opt.value + '*';\n } else {\n opt.innerHTML = opt.value;\n }\n}\n\nfunction augmentController(gui, li, controller) {\n controller.__li = li;\n controller.__gui = gui;\n\n common.extend(controller, {\n options: function(options) {\n if (arguments.length > 1) {\n const nextSibling = controller.__li.nextElementSibling;\n controller.remove();\n\n return add(\n gui,\n controller.object,\n controller.property,\n {\n before: nextSibling,\n factoryArgs: [common.toArray(arguments)]\n }\n );\n }\n\n if (common.isArray(options) || common.isObject(options)) {\n const nextSibling = controller.__li.nextElementSibling;\n controller.remove();\n\n return add(\n gui,\n controller.object,\n controller.property,\n {\n before: nextSibling,\n factoryArgs: [options]\n }\n );\n }\n },\n\n name: function(v) {\n controller.__li.firstElementChild.firstElementChild.innerHTML = v;\n return controller;\n },\n\n listen: function() {\n controller.__gui.listen(controller);\n return controller;\n },\n\n remove: function() {\n controller.__gui.remove(controller);\n return controller;\n }\n });\n\n // All sliders should be accompanied by a box.\n if (controller instanceof NumberControllerSlider) {\n const box = new NumberControllerBox(controller.object, controller.property,\n { min: controller.__min, max: controller.__max, step: controller.__step });\n\n common.each(['updateDisplay', 'onChange', 'onFinishChange', 'step'], function(method) {\n const pc = controller[method];\n const pb = box[method];\n controller[method] = box[method] = function() {\n const args = Array.prototype.slice.call(arguments);\n pb.apply(box, args);\n return pc.apply(controller, args);\n };\n });\n\n dom.addClass(li, 'has-slider');\n controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild);\n } else if (controller instanceof NumberControllerBox) {\n const r = function(returned) {\n // Have we defined both boundaries?\n if (common.isNumber(controller.__min) && common.isNumber(controller.__max)) {\n // Well, then lets just replace this with a slider.\n\n // lets remember if the old controller had a specific name or was listening\n const oldName = controller.__li.firstElementChild.firstElementChild.innerHTML;\n const wasListening = controller.__gui.__listening.indexOf(controller) > -1;\n\n controller.remove();\n const newController = add(\n gui,\n controller.object,\n controller.property,\n {\n before: controller.__li.nextElementSibling,\n factoryArgs: [controller.__min, controller.__max, controller.__step]\n });\n\n newController.name(oldName);\n if (wasListening) newController.listen();\n\n return newController;\n }\n\n return returned;\n };\n\n controller.min = common.compose(r, controller.min);\n controller.max = common.compose(r, controller.max);\n } else if (controller instanceof BooleanController) {\n dom.bind(li, 'click', function() {\n dom.fakeEvent(controller.__checkbox, 'click');\n });\n\n dom.bind(controller.__checkbox, 'click', function(e) {\n e.stopPropagation(); // Prevents double-toggle\n });\n } else if (controller instanceof FunctionController) {\n dom.bind(li, 'click', function() {\n dom.fakeEvent(controller.__button, 'click');\n });\n\n dom.bind(li, 'mouseover', function() {\n dom.addClass(controller.__button, 'hover');\n });\n\n dom.bind(li, 'mouseout', function() {\n dom.removeClass(controller.__button, 'hover');\n });\n } else if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n controller.updateDisplay = common.compose(function(val) {\n li.style.borderLeftColor = controller.__color.toString();\n return val;\n }, controller.updateDisplay);\n\n controller.updateDisplay();\n } else if (controller instanceof BgColorController) {\n dom.addClass(li, 'color');\n controller.updateDisplay = common.compose(function(val) {\n li.style.borderLeftColor = controller.__color.toString();\n return val;\n }, controller.updateDisplay);\n\n controller.updateDisplay();\n } else if (controller instanceof NgColorController) {\n dom.addClass(li, 'color');\n controller.updateDisplay = common.compose(function(val) {\n li.style.borderLeftColor = controller.__color.toString();\n return val;\n }, controller.updateDisplay);\n\n controller.updateDisplay();\n } else if (controller instanceof HSVColorController) {\n dom.addClass(li, 'color');\n controller.updateDisplay = common.compose(function(val) {\n li.style.borderLeftColor = controller.__color.toString();\n return val;\n }, controller.updateDisplay);\n\n controller.updateDisplay();\n } else if (controller instanceof GtColorController) {\n dom.addClass(li, 'color');\n controller.updateDisplay = common.compose(function(val) {\n li.style.borderLeftColor = controller.__color.toString();\n return val;\n }, controller.updateDisplay);\n\n controller.updateDisplay();\n }\n\n controller.setValue = common.compose(function(val) {\n if (gui.getRoot().__preset_select && controller.isModified()) {\n markPresetModified(gui.getRoot(), true);\n }\n\n return val;\n }, controller.setValue);\n}\n\nfunction recallSavedValue(gui, controller) {\n // Find the topmost GUI, that's where remembered objects live.\n const root = gui.getRoot();\n\n // Does the object we're controlling match anything we've been told to\n // remember?\n const matchedIndex = root.__rememberedObjects.indexOf(controller.object);\n\n // Why yes, it does!\n if (matchedIndex !== -1) {\n // Let me fetch a map of controllers for thcommon.isObject.\n let controllerMap = root.__rememberedObjectIndecesToControllers[matchedIndex];\n\n // Ohp, I believe this is the first controller we've created for this\n // object. Lets make the map fresh.\n if (controllerMap === undefined) {\n controllerMap = {};\n root.__rememberedObjectIndecesToControllers[matchedIndex] =\n controllerMap;\n }\n\n // Keep track of this controller\n controllerMap[controller.property] = controller;\n\n // Okay, now have we saved any values for this controller?\n if (root.load && root.load.remembered) {\n const presetMap = root.load.remembered;\n\n // Which preset are we trying to load?\n let preset;\n\n if (presetMap[gui.preset]) {\n preset = presetMap[gui.preset];\n } else if (presetMap[DEFAULT_DEFAULT_PRESET_NAME]) {\n // Uhh, you can have the default instead?\n preset = presetMap[DEFAULT_DEFAULT_PRESET_NAME];\n } else {\n // Nada.\n return;\n }\n\n // Did the loaded object remember thcommon.isObject? && Did we remember this particular property?\n if (preset[matchedIndex] && preset[matchedIndex][controller.property] !== undefined) {\n // We did remember something for this guy ...\n const value = preset[matchedIndex][controller.property];\n\n // And that's what it is.\n controller.initialValue = value;\n controller.setValue(value);\n }\n }\n }\n}\n\nfunction addbg(gui, object, property, params) {\n if (object[property] === undefined) {\n throw new Error(`Object \"${object}\" has no property \"${property}\"`);\n }\n\n let controller;\n\n if (params.color) {\n controller = new BgColorController(object, property);\n } else {\n const factoryArgs = [object, property].concat(params.factoryArgs);\n controller = ControllerFactory.apply(gui, factoryArgs);\n }\n\n if (params.before instanceof Controller) {\n params.before = params.before.__li;\n }\n\n recallSavedValue(gui, controller);\n\n dom.addClass(controller.domElement, 'c');\n\n const name = document.createElement('span');\n dom.addClass(name, 'property-name');\n name.innerHTML = controller.property;\n\n const container = document.createElement('div');\n container.appendChild(name);\n container.appendChild(controller.domElement);\n\n const li = addRow(gui, container, params.before);\n\n dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);\n if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n } else if (controller instanceof BgColorController) {\n dom.addClass(li, 'color');\n } else {\n dom.addClass(li, typeof controller.getValue());\n }\n\n augmentController(gui, li, controller);\n\n gui.__controllers.push(controller);\n\n return controller;\n}\nfunction addng(gui, object, property, params) {\n if (object[property] === undefined) {\n throw new Error(`Object \"${object}\" has no property \"${property}\"`);\n }\n\n let controller;\n\n if (params.color) {\n controller = new NgColorController(object, property);\n } else {\n const factoryArgs = [object, property].concat(params.factoryArgs);\n controller = ControllerFactory.apply(gui, factoryArgs);\n }\n\n if (params.before instanceof Controller) {\n params.before = params.before.__li;\n }\n\n recallSavedValue(gui, controller);\n\n dom.addClass(controller.domElement, 'c');\n\n const name = document.createElement('span');\n dom.addClass(name, 'property-name');\n name.innerHTML = controller.property;\n\n const container = document.createElement('div');\n container.appendChild(name);\n container.appendChild(controller.domElement);\n\n const li = addRow(gui, container, params.before);\n\n dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);\n if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n } else if (controller instanceof NgColorController) {\n dom.addClass(li, 'color');\n } else {\n dom.addClass(li, typeof controller.getValue());\n }\n\n augmentController(gui, li, controller);\n\n gui.__controllers.push(controller);\n\n return controller;\n}\nfunction addgt(gui, object, property, params) {\n if (object[property] === undefined) {\n throw new Error(`Object \"${object}\" has no property \"${property}\"`);\n }\n\n let controller;\n\n if (params.color) {\n controller = new GtColorController(object, property);\n } else {\n const factoryArgs = [object, property].concat(params.factoryArgs);\n controller = ControllerFactory.apply(gui, factoryArgs);\n }\n\n if (params.before instanceof Controller) {\n params.before = params.before.__li;\n }\n\n recallSavedValue(gui, controller);\n\n dom.addClass(controller.domElement, 'c');\n\n const name = document.createElement('span');\n dom.addClass(name, 'property-name');\n name.innerHTML = controller.property;\n\n const container = document.createElement('div');\n container.appendChild(name);\n container.appendChild(controller.domElement);\n\n const li = addRow(gui, container, params.before);\n\n dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);\n if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n } else if (controller instanceof NgColorController) {\n dom.addClass(li, 'color');\n } else {\n dom.addClass(li, typeof controller.getValue());\n }\n\n augmentController(gui, li, controller);\n\n gui.__controllers.push(controller);\n\n return controller;\n}\nfunction addhsv(gui, object, property, params) {\n if (object[property] === undefined) {\n throw new Error(`Object \"${object}\" has no property \"${property}\"`);\n }\n\n let controller;\n\n if (params.color) {\n controller = new HSVColorController(object, property);\n } else {\n const factoryArgs = [object, property].concat(params.factoryArgs);\n controller = ControllerFactory.apply(gui, factoryArgs);\n }\n\n if (params.before instanceof Controller) {\n params.before = params.before.__li;\n }\n\n recallSavedValue(gui, controller);\n\n dom.addClass(controller.domElement, 'c');\n\n const name = document.createElement('span');\n dom.addClass(name, 'property-name');\n name.innerHTML = controller.property;\n\n const container = document.createElement('div');\n container.appendChild(name);\n container.appendChild(controller.domElement);\n\n const li = addRow(gui, container, params.before);\n\n dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);\n if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n } else if (controller instanceof HSVColorController) {\n dom.addClass(li, 'color');\n } else {\n dom.addClass(li, typeof controller.getValue());\n }\n\n augmentController(gui, li, controller);\n\n gui.__controllers.push(controller);\n\n return controller;\n}\n\nfunction add(gui, object, property, params) {\n if (object[property] === undefined) {\n throw new Error(`Object \"${object}\" has no property \"${property}\"`);\n }\n\n let controller;\n\n if (params.color) {\n controller = new ColorController(object, property);\n } else {\n const factoryArgs = [object, property].concat(params.factoryArgs);\n controller = ControllerFactory.apply(gui, factoryArgs);\n }\n\n if (params.before instanceof Controller) {\n params.before = params.before.__li;\n }\n\n recallSavedValue(gui, controller);\n\n dom.addClass(controller.domElement, 'c');\n\n const name = document.createElement('span');\n dom.addClass(name, 'property-name');\n name.innerHTML = controller.property;\n\n const container = document.createElement('div');\n container.appendChild(name);\n container.appendChild(controller.domElement);\n\n const li = addRow(gui, container, params.before);\n\n dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);\n if (controller instanceof ColorController) {\n dom.addClass(li, 'color');\n } else if (controller instanceof BgColorController) {\n dom.addClass(li, 'color');\n } else {\n dom.addClass(li, typeof controller.getValue());\n }\n\n augmentController(gui, li, controller);\n\n gui.__controllers.push(controller);\n\n return controller;\n}\n\nfunction getLocalStorageHash(gui, key) {\n // TODO how does this deal with multiple GUI's?\n return document.location.href + '.' + key;\n}\n\nfunction addPresetOption(gui, name, setSelected) {\n const opt = document.createElement('option');\n opt.innerHTML = name;\n opt.value = name;\n gui.__preset_select.appendChild(opt);\n if (setSelected) {\n gui.__preset_select.selectedIndex = gui.__preset_select.length - 1;\n }\n}\n\nfunction showHideExplain(gui, explain) {\n explain.style.display = gui.useLocalStorage ? 'block' : 'none';\n}\n\nfunction addSaveMenu(gui) {\n const div = gui.__save_row = document.createElement('li');\n\n dom.addClass(gui.domElement, 'has-save');\n\n gui.__ul.insertBefore(div, gui.__ul.firstChild);\n\n dom.addClass(div, 'save-row');\n\n const gears = document.createElement('span');\n gears.innerHTML = '&nbsp;';\n dom.addClass(gears, 'button gears');\n\n // TODO replace with FunctionController\n const button = document.createElement('span');\n button.innerHTML = 'Save';\n dom.addClass(button, 'button');\n dom.addClass(button, 'save');\n\n const button2 = document.createElement('span');\n button2.innerHTML = 'New';\n dom.addClass(button2, 'button');\n dom.addClass(button2, 'save-as');\n\n const button3 = document.createElement('span');\n button3.innerHTML = 'Revert';\n dom.addClass(button3, 'button');\n dom.addClass(button3, 'revert');\n\n const select = gui.__preset_select = document.createElement('select');\n\n if (gui.load && gui.load.remembered) {\n common.each(gui.load.remembered, function(value, key) {\n addPresetOption(gui, key, key === gui.preset);\n });\n } else {\n addPresetOption(gui, DEFAULT_DEFAULT_PRESET_NAME, false);\n }\n\n dom.bind(select, 'change', function() {\n for (let index = 0; index < gui.__preset_select.length; index++) {\n gui.__preset_select[index].innerHTML = gui.__preset_select[index].value;\n }\n\n gui.preset = this.value;\n });\n\n div.appendChild(select);\n div.appendChild(gears);\n div.appendChild(button);\n div.appendChild(button2);\n div.appendChild(button3);\n\n if (SUPPORTS_LOCAL_STORAGE) {\n const explain = document.getElementById('dg-local-explain');\n const localStorageCheckBox = document.getElementById('dg-local-storage');\n const saveLocally = document.getElementById('dg-save-locally');\n\n saveLocally.style.display = 'block';\n\n if (localStorage.getItem(getLocalStorageHash(gui, 'isLocal')) === 'true') {\n localStorageCheckBox.setAttribute('checked', 'checked');\n }\n\n showHideExplain(gui, explain);\n\n // TODO: Use a boolean controller, fool!\n dom.bind(localStorageCheckBox, 'change', function() {\n gui.useLocalStorage = !gui.useLocalStorage;\n showHideExplain(gui, explain);\n });\n }\n\n const newConstructorTextArea = document.getElementById('dg-new-constructor');\n\n dom.bind(newConstructorTextArea, 'keydown', function(e) {\n if (e.metaKey && (e.which === 67 || e.keyCode === 67)) {\n SAVE_DIALOGUE.hide();\n }\n });\n\n dom.bind(gears, 'click', function() {\n newConstructorTextArea.innerHTML = JSON.stringify(gui.getSaveObject(), undefined, 2);\n SAVE_DIALOGUE.show();\n newConstructorTextArea.focus();\n newConstructorTextArea.select();\n });\n\n dom.bind(button, 'click', function() {\n gui.save();\n });\n\n dom.bind(button2, 'click', function() {\n const presetName = prompt('Enter a new preset name.');\n if (presetName) {\n gui.saveAs(presetName);\n }\n });\n\n dom.bind(button3, 'click', function() {\n gui.revert();\n });\n\n // div.appendChild(button2);\n}\n\nfunction addResizeHandle(gui) {\n let pmouseX;\n\n gui.__resize_handle = document.createElement('div');\n\n common.extend(gui.__resize_handle.style, {\n\n width: '6px',\n marginLeft: '-3px',\n height: '200px',\n cursor: 'ew-resize',\n position: 'absolute'\n // border: '1px solid blue'\n\n });\n\n function drag(e) {\n e.preventDefault();\n\n gui.width += pmouseX - e.clientX;\n gui.onResize();\n pmouseX = e.clientX;\n\n return false;\n }\n\n function dragStop() {\n dom.removeClass(gui.__closeButton, GUI.CLASS_DRAG);\n dom.unbind(window, 'mousemove', drag);\n dom.unbind(window, 'mouseup', dragStop);\n }\n\n function dragStart(e) {\n e.preventDefault();\n\n pmouseX = e.clientX;\n\n dom.addClass(gui.__closeButton, GUI.CLASS_DRAG);\n dom.bind(window, 'mousemove', drag);\n dom.bind(window, 'mouseup', dragStop);\n\n return false;\n }\n\n dom.bind(gui.__resize_handle, 'mousedown', dragStart);\n dom.bind(gui.__closeButton, 'mousedown', dragStart);\n\n gui.domElement.insertBefore(gui.__resize_handle, gui.domElement.firstElementChild);\n}\n\nfunction setWidth(gui, w) {\n gui.domElement.style.width = w + 'px';\n // Auto placed save-rows are position fixed, so we have to\n // set the width manually if we want it to bleed to the edge\n if (gui.__save_row && gui.autoPlace) {\n gui.__save_row.style.width = w + 'px';\n }\n if (gui.__closeButton) {\n gui.__closeButton.style.width = w + 'px';\n }\n}\n\nfunction getCurrentPreset(gui, useInitialValues) {\n const toReturn = {};\n\n // For each object I'm remembering\n common.each(gui.__rememberedObjects, function(val, index) {\n const savedValues = {};\n\n // The controllers I've made for thcommon.isObject by property\n const controllerMap =\n gui.__rememberedObjectIndecesToControllers[index];\n\n // Remember each value for each property\n common.each(controllerMap, function(controller, property) {\n savedValues[property] = useInitialValues ? controller.initialValue : controller.getValue();\n });\n\n // Save the values for thcommon.isObject\n toReturn[index] = savedValues;\n });\n\n return toReturn;\n}\n\nfunction setPresetSelectIndex(gui) {\n for (let index = 0; index < gui.__preset_select.length; index++) {\n if (gui.__preset_select[index].value === gui.preset) {\n gui.__preset_select.selectedIndex = index;\n }\n }\n}\n\nfunction updateDisplays(controllerArray) {\n if (controllerArray.length !== 0) {\n requestAnimationFrame.call(window, function() {\n updateDisplays(controllerArray);\n });\n }\n\n common.each(controllerArray, function(c) {\n c.updateDisplay();\n });\n}\n\nexport default GUI;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/gui/GUI.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nmodule.exports = {\n load: function(url, indoc) {\n const doc = indoc || document;\n const link = doc.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.href = url;\n doc.getElementsByTagName('head')[0].appendChild(link);\n },\n\n inject: function(css, indoc) {\n const doc = indoc || document;\n const injected = document.createElement('style');\n injected.type = 'text/css';\n injected.innerHTML = css;\n const head = doc.getElementsByTagName('head')[0];\n try {\n head.appendChild(injected);\n } catch (e) { // Unable to inject CSS, probably because of a Content Security Policy\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./dat/utils/css.js","module.exports = \"<div id=\\\"dg-save\\\" class=\\\"dg dialogue\\\">\\n\\n Here's the new load parameter for your <code>GUI</code>'s constructor:\\n\\n <textarea id=\\\"dg-new-constructor\\\"></textarea>\\n\\n <div id=\\\"dg-save-locally\\\">\\n\\n <input id=\\\"dg-local-storage\\\" type=\\\"checkbox\\\"/> Automatically save\\n values to <code>localStorage</code> on exit.\\n\\n <div id=\\\"dg-local-explain\\\">The values saved to <code>localStorage</code> will\\n override those passed to <code>dat.GUI</code>'s constructor. This makes it\\n easier to work incrementally, but <code>localStorage</code> is fragile,\\n and your friends may not see the same values you do.\\n\\n </div>\\n\\n </div>\\n\\n</div>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./dat/gui/saveDialogue.html\n// module id = 23\n// module chunks = 0","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport OptionController from './OptionController';\nimport NumberControllerBox from './NumberControllerBox';\nimport NumberControllerSlider from './NumberControllerSlider';\nimport StringController from './StringController';\nimport FunctionController from './FunctionController';\nimport BooleanController from './BooleanController';\nimport common from '../utils/common';\n\nconst ControllerFactory = function(object, property) {\n const initialValue = object[property];\n\n // Providing options?\n if (common.isArray(arguments[2]) || common.isObject(arguments[2])) {\n return new OptionController(object, property, arguments[2]);\n }\n\n // Providing a map?\n if (common.isNumber(initialValue)) {\n // Has min and max? (slider)\n if (common.isNumber(arguments[2]) && common.isNumber(arguments[3])) {\n // has step?\n if (common.isNumber(arguments[4])) {\n return new NumberControllerSlider(object, property,\n arguments[2], arguments[3], arguments[4]);\n }\n\n return new NumberControllerSlider(object, property, arguments[2], arguments[3]);\n }\n\n // number box\n if (common.isNumber(arguments[4])) { // has step\n return new NumberControllerBox(object, property,\n { min: arguments[2], max: arguments[3], step: arguments[4] });\n }\n return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] });\n }\n\n if (common.isString(initialValue)) {\n return new StringController(object, property);\n }\n\n if (common.isFunction(initialValue)) {\n return new FunctionController(object, property, '');\n }\n\n if (common.isBoolean(initialValue)) {\n return new BooleanController(object, property);\n }\n\n return null;\n};\n\nexport default ControllerFactory;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/controllers/ControllerFactory.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction requestAnimationFrame(callback) {\n setTimeout(callback, 1000 / 60);\n}\n\nexport default window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n requestAnimationFrame;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/utils/requestAnimationFrame.js","/**\n * dat-gui JavaScript Controller Library\n * http://code.google.com/p/dat-gui\n *\n * Copyright 2011 Data Arts Team, Google Creative Lab\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport dom from '../dom/dom';\nimport common from '../utils/common';\n\nclass CenteredDiv {\n constructor() {\n this.backgroundElement = document.createElement('div');\n common.extend(this.backgroundElement.style, {\n backgroundColor: 'rgba(0,0,0,0.8)',\n top: 0,\n left: 0,\n display: 'none',\n zIndex: '1000',\n opacity: 0,\n WebkitTransition: 'opacity 0.2s linear',\n transition: 'opacity 0.2s linear'\n });\n\n dom.makeFullscreen(this.backgroundElement);\n this.backgroundElement.style.position = 'fixed';\n\n this.domElement = document.createElement('div');\n common.extend(this.domElement.style, {\n position: 'fixed',\n display: 'none',\n zIndex: '1001',\n opacity: 0,\n WebkitTransition: '-webkit-transform 0.2s ease-out, opacity 0.2s linear',\n transition: 'transform 0.2s ease-out, opacity 0.2s linear'\n });\n\n\n document.body.appendChild(this.backgroundElement);\n document.body.appendChild(this.domElement);\n\n const _this = this;\n dom.bind(this.backgroundElement, 'click', function() {\n _this.hide();\n });\n }\n\n show() {\n const _this = this;\n\n this.backgroundElement.style.display = 'block';\n\n this.domElement.style.display = 'block';\n this.domElement.style.opacity = 0;\n// this.domElement.style.top = '52%';\n this.domElement.style.webkitTransform = 'scale(1.1)';\n\n this.layout();\n\n common.defer(function() {\n _this.backgroundElement.style.opacity = 1;\n _this.domElement.style.opacity = 1;\n _this.domElement.style.webkitTransform = 'scale(1)';\n });\n }\n\n /**\n * Hide centered div\n */\n hide() {\n const _this = this;\n\n const hide = function() {\n _this.domElement.style.display = 'none';\n _this.backgroundElement.style.display = 'none';\n\n dom.unbind(_this.domElement, 'webkitTransitionEnd', hide);\n dom.unbind(_this.domElement, 'transitionend', hide);\n dom.unbind(_this.domElement, 'oTransitionEnd', hide);\n };\n\n dom.bind(this.domElement, 'webkitTransitionEnd', hide);\n dom.bind(this.domElement, 'transitionend', hide);\n dom.bind(this.domElement, 'oTransitionEnd', hide);\n\n this.backgroundElement.style.opacity = 0;\n// this.domElement.style.top = '48%';\n this.domElement.style.opacity = 0;\n this.domElement.style.webkitTransform = 'scale(1.1)';\n }\n\n layout() {\n this.domElement.style.left = window.innerWidth / 2 - dom.getWidth(this.domElement) / 2 + 'px';\n this.domElement.style.top = window.innerHeight / 2 - dom.getHeight(this.domElement) / 2 + 'px';\n }\n}\n\nexport default CenteredDiv;\n\n\n\n// WEBPACK FOOTER //\n// ./dat/dom/CenteredDiv.js","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".dg {\\n /** Clear list styles */\\n /* Auto-place container */\\n /* Auto-placed GUI's */\\n /* Line items that don't contain folders. */\\n /** Folder names */\\n /** Hides closed items */\\n /** Controller row */\\n /** Name-half (left) */\\n /** Controller-half (right) */\\n /** Controller placement */\\n /** Shorter number boxes when slider is present. */\\n /** Ensure the entire boolean and function row shows a hand */\\n /** allow overflow for color selector */ }\\n .dg ul {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n width: 100%;\\n clear: both; }\\n .dg.ac {\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n height: 0;\\n z-index: 0; }\\n .dg:not(.ac) .main {\\n /** Exclude mains in ac so that we don't hide close button */\\n overflow: hidden; }\\n .dg.main {\\n -webkit-transition: opacity 0.1s linear;\\n -o-transition: opacity 0.1s linear;\\n -moz-transition: opacity 0.1s linear;\\n transition: opacity 0.1s linear; }\\n .dg.main.taller-than-window {\\n overflow-y: auto; }\\n .dg.main.taller-than-window .close-button {\\n opacity: 1;\\n /* TODO, these are style notes */\\n margin-top: -1px;\\n border-top: 1px solid #2c2c2c; }\\n .dg.main ul.closed .close-button {\\n opacity: 1 !important; }\\n .dg.main:hover .close-button,\\n .dg.main .close-button.drag {\\n opacity: 1; }\\n .dg.main .close-button {\\n /*opacity: 0;*/\\n -webkit-transition: opacity 0.1s linear;\\n -o-transition: opacity 0.1s linear;\\n -moz-transition: opacity 0.1s linear;\\n transition: opacity 0.1s linear;\\n border: 0;\\n line-height: 19px;\\n height: 20px;\\n /* TODO, these are style notes */\\n cursor: pointer;\\n text-align: center;\\n background-color: #000; }\\n .dg.main .close-button.close-top {\\n position: relative; }\\n .dg.main .close-button.close-bottom {\\n position: absolute; }\\n .dg.main .close-button:hover {\\n background-color: #111; }\\n .dg.a {\\n float: right;\\n margin-right: 15px;\\n overflow-y: visible; }\\n .dg.a.has-save > ul.close-top {\\n margin-top: 0; }\\n .dg.a.has-save > ul.close-bottom {\\n margin-top: 27px; }\\n .dg.a.has-save > ul.closed {\\n margin-top: 0; }\\n .dg.a .save-row {\\n top: 0;\\n z-index: 1002; }\\n .dg.a .save-row.close-top {\\n position: relative; }\\n .dg.a .save-row.close-bottom {\\n position: fixed; }\\n .dg li {\\n -webkit-transition: height 0.1s ease-out;\\n -o-transition: height 0.1s ease-out;\\n -moz-transition: height 0.1s ease-out;\\n transition: height 0.1s ease-out;\\n -webkit-transition: overflow 0.1s linear;\\n -o-transition: overflow 0.1s linear;\\n -moz-transition: overflow 0.1s linear;\\n transition: overflow 0.1s linear; }\\n .dg li:not(.folder) {\\n cursor: auto;\\n height: 27px;\\n line-height: 27px;\\n padding: 0 4px 0 5px; }\\n .dg li.folder {\\n padding: 0;\\n border-left: 4px solid transparent; }\\n .dg li.title {\\n cursor: pointer;\\n margin-left: -4px; }\\n .dg .closed li:not(.title),\\n .dg .closed ul li,\\n .dg .closed ul li > * {\\n height: 0;\\n overflow: hidden;\\n border: 0; }\\n .dg .cr {\\n clear: both;\\n padding-left: 3px;\\n height: 27px;\\n overflow: hidden; }\\n .dg .property-name {\\n cursor: default;\\n float: left;\\n clear: left;\\n width: 40%;\\n overflow: hidden;\\n text-overflow: ellipsis; }\\n .dg .c {\\n float: left;\\n width: 60%;\\n height: 125px;\\n /*JLA*/\\n position: relative; }\\n .dg .c input[type=text] {\\n border: 0;\\n margin-top: 4px;\\n padding: 3px;\\n width: 100%;\\n float: right; }\\n .dg .has-slider input[type=text] {\\n width: 30%;\\n /*display: none;*/\\n margin-left: 0; }\\n .dg .slider {\\n float: left;\\n width: 66%;\\n margin-left: -5px;\\n margin-right: 0;\\n height: 19px;\\n margin-top: 4px; }\\n .dg .slider-fg {\\n height: 100%; }\\n .dg .c input[type=checkbox] {\\n margin-top: 7px; }\\n .dg .c select {\\n margin-top: 5px; }\\n .dg .cr.function,\\n .dg .cr.function .property-name,\\n .dg .cr.function *,\\n .dg .cr.boolean,\\n .dg .cr.boolean * {\\n cursor: pointer; }\\n .dg .cr.color {\\n overflow: visible; }\\n .dg .selector {\\n display: none;\\n position: absolute;\\n margin-left: -9px;\\n margin-top: 23px;\\n z-index: 10; }\\n .dg .c:hover .selector,\\n .dg .selector.drag {\\n display: block; }\\n .dg li.save-row {\\n padding: 0; }\\n .dg li.save-row .button {\\n display: inline-block;\\n padding: 0px 6px; }\\n .dg.dialogue {\\n background-color: #222;\\n width: 460px;\\n padding: 15px;\\n font-size: 13px;\\n line-height: 15px; }\\n\\n/* TODO Separate style and structure */\\n#dg-new-constructor {\\n padding: 10px;\\n color: #222;\\n font-family: Monaco, monospace;\\n font-size: 10px;\\n border: 0;\\n resize: none;\\n box-shadow: inset 1px 1px 1px #888;\\n word-wrap: break-word;\\n margin: 12px 0;\\n display: block;\\n width: 440px;\\n overflow-y: scroll;\\n height: 100px;\\n position: relative; }\\n\\n#dg-local-explain {\\n display: none;\\n font-size: 11px;\\n line-height: 17px;\\n border-radius: 3px;\\n background-color: #333;\\n padding: 8px;\\n margin-top: 10px; }\\n #dg-local-explain code {\\n font-size: 10px; }\\n\\n#dat-gui-save-locally {\\n display: none; }\\n\\n/** Main type */\\n.dg {\\n color: #eee;\\n font: 11px 'Lucida Grande', sans-serif;\\n text-shadow: 0 -1px 0 #111;\\n /** Auto place */\\n /* Controller row, <li> */\\n /** Controllers */ }\\n .dg.main {\\n /** Scrollbar */ }\\n .dg.main::-webkit-scrollbar {\\n width: 5px;\\n background: #1a1a1a; }\\n .dg.main::-webkit-scrollbar-corner {\\n height: 0;\\n display: none; }\\n .dg.main::-webkit-scrollbar-thumb {\\n border-radius: 5px;\\n background: #676767; }\\n .dg li:not(.folder) {\\n background: #1a1a1a;\\n border-bottom: 1px solid #2c2c2c; }\\n .dg li.save-row {\\n line-height: 25px;\\n background: #dad5cb;\\n border: 0; }\\n .dg li.save-row select {\\n margin-left: 5px;\\n width: 108px; }\\n .dg li.save-row .button {\\n margin-left: 5px;\\n margin-top: 1px;\\n border-radius: 2px;\\n font-size: 9px;\\n line-height: 7px;\\n padding: 4px 4px 5px 4px;\\n background: #c5bdad;\\n color: #fff;\\n text-shadow: 0 1px 0 #b0a58f;\\n box-shadow: 0 -1px 0 #b0a58f;\\n cursor: pointer; }\\n .dg li.save-row .button.gears {\\n 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;\\n height: 7px;\\n width: 8px; }\\n .dg li.save-row .button:hover {\\n background-color: #bab19e;\\n box-shadow: 0 -1px 0 #b0a58f; }\\n .dg li.folder {\\n border-bottom: 0; }\\n .dg li.title {\\n padding-left: 16px;\\n background: #000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;\\n cursor: pointer;\\n border-bottom: 1px solid rgba(255, 255, 255, 0.2); }\\n .dg .closed li.title {\\n background-image: url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==); }\\n .dg .cr.boolean {\\n border-left: 3px solid #806787; }\\n .dg .cr.color {\\n border-left: 3px solid; }\\n .dg .cr.function {\\n border-left: 3px solid #e61d5f; }\\n .dg .cr.number {\\n border-left: 3px solid #2FA1D6; }\\n .dg .cr.number input[type=text] {\\n color: #2FA1D6; }\\n .dg .cr.string {\\n border-left: 3px solid #1ed36f; }\\n .dg .cr.string input[type=text] {\\n color: #1ed36f; }\\n .dg .cr.function:hover, .dg .cr.boolean:hover {\\n background: #111; }\\n .dg .c input[type=text] {\\n background: #303030;\\n outline: none; }\\n .dg .c input[type=text]:hover {\\n background: #3c3c3c; }\\n .dg .c input[type=text]:focus {\\n background: #494949;\\n color: #fff; }\\n .dg .c .slider {\\n background: #303030;\\n cursor: ew-resize; }\\n .dg .c .slider-fg {\\n background: #2FA1D6;\\n max-width: 100%; }\\n .dg .c .slider:hover {\\n background: #3c3c3c; }\\n .dg .c .slider:hover .slider-fg {\\n background: #44abda; }\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./dat/gui/style.scss\n// module id = 27\n// module chunks = 0","/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n\tvar list = [];\r\n\r\n\t// return the list of modules as css string\r\n\tlist.toString = function toString() {\r\n\t\tvar result = [];\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar item = this[i];\r\n\t\t\tif(item[2]) {\r\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(item[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result.join(\"\");\r\n\t};\r\n\r\n\t// import a list of modules into the list\r\n\tlist.i = function(modules, mediaQuery) {\r\n\t\tif(typeof modules === \"string\")\r\n\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\tvar alreadyImportedModules = {};\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar id = this[i][0];\r\n\t\t\tif(typeof id === \"number\")\r\n\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t}\r\n\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\tvar item = modules[i];\r\n\t\t\t// skip already imported module\r\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t// when a module is imported multiple times with different media queries.\r\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn list;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/css-loader/lib/css-base.js\n// module id = 28\n// module chunks = 0"],"sourceRoot":""}