2015-08-14 16:30:03 +00:00
( function webpackUniversalModuleDefinition ( root , factory ) {
if ( typeof exports === 'object' && typeof module === 'object' )
module . exports = factory ( ) ;
else if ( typeof define === 'function' && define . amd )
2016-08-17 18:29:53 +00:00
define ( [ ] , factory ) ;
2015-08-14 16:30:03 +00:00
else if ( typeof exports === 'object' )
exports [ "dat" ] = factory ( ) ;
else
root [ "dat" ] = factory ( ) ;
} ) ( this , function ( ) {
return /******/ ( function ( modules ) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = { } ;
/******/
/******/ // The require function
/******/ function _ _webpack _require _ _ ( moduleId ) {
/******/
/******/ // Check if module is in cache
/******/ if ( installedModules [ moduleId ] )
/******/ return installedModules [ moduleId ] . exports ;
/******/
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules [ moduleId ] = {
/******/ exports : { } ,
/******/ id : moduleId ,
/******/ loaded : false
/******/ } ;
/******/
/******/ // Execute the module function
/******/ modules [ moduleId ] . call ( module . exports , module , module . exports , _ _webpack _require _ _ ) ;
/******/
/******/ // Flag the module as loaded
/******/ module . loaded = true ;
/******/
/******/ // Return the exports of the module
/******/ return module . exports ;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ _ _webpack _require _ _ . m = modules ;
/******/
/******/ // expose the module cache
/******/ _ _webpack _require _ _ . c = installedModules ;
/******/
/******/ // __webpack_public_path__
/******/ _ _webpack _require _ _ . p = "" ;
/******/
/******/ // Load entry module and return exports
/******/ return _ _webpack _require _ _ ( 0 ) ;
/******/ } )
/************************************************************************/
/******/ ( [
/* 0 */
/***/ function ( module , exports , _ _webpack _require _ _ ) {
2015-08-15 01:28:21 +00:00
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
exports . _ _esModule = true ;
2016-09-01 21:07:06 +00:00
exports [ 'default' ] = _ _webpack _require _ _ ( 1 ) ;
module . exports = exports [ 'default' ] ;
2015-08-15 01:28:21 +00:00
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 1 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
2015-08-15 01:28:21 +00:00
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
2015-08-14 16:30:03 +00:00
'use strict' ;
2015-08-15 01:28:21 +00:00
exports . _ _esModule = true ;
exports [ 'default' ] = {
2015-08-14 16:30:03 +00:00
color : {
2016-09-01 21:07:06 +00:00
Color : _ _webpack _require _ _ ( 2 ) ,
math : _ _webpack _require _ _ ( 6 ) ,
interpret : _ _webpack _require _ _ ( 3 )
2015-08-14 16:30:03 +00:00
} ,
controllers : {
2016-09-01 21:07:06 +00:00
Controller : _ _webpack _require _ _ ( 7 ) ,
BooleanController : _ _webpack _require _ _ ( 8 ) ,
OptionController : _ _webpack _require _ _ ( 10 ) ,
StringController : _ _webpack _require _ _ ( 11 ) ,
NumberController : _ _webpack _require _ _ ( 12 ) ,
NumberControllerBox : _ _webpack _require _ _ ( 13 ) ,
NumberControllerSlider : _ _webpack _require _ _ ( 14 ) ,
FunctionController : _ _webpack _require _ _ ( 15 ) ,
ColorController : _ _webpack _require _ _ ( 16 )
2015-08-14 16:30:03 +00:00
} ,
dom : {
2016-09-01 21:07:06 +00:00
dom : _ _webpack _require _ _ ( 9 )
2015-08-14 16:30:03 +00:00
} ,
gui : {
2016-09-01 21:07:06 +00:00
GUI : _ _webpack _require _ _ ( 17 )
2015-08-14 16:30:03 +00:00
} ,
2016-09-01 21:07:06 +00:00
GUI : _ _webpack _require _ _ ( 17 )
2015-08-14 16:30:03 +00:00
} ;
2015-08-15 01:28:21 +00:00
module . exports = exports [ 'default' ] ;
2015-08-14 16:30:03 +00:00
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 2 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } }
2016-09-01 21:07:06 +00:00
var _interpret = _ _webpack _require _ _ ( 3 ) ;
2015-08-14 16:30:03 +00:00
var _interpret2 = _interopRequireDefault ( _interpret ) ;
2016-09-01 21:07:06 +00:00
var _math = _ _webpack _require _ _ ( 6 ) ;
2015-08-14 16:30:03 +00:00
var _math2 = _interopRequireDefault ( _math ) ;
2016-09-01 21:07:06 +00:00
var _toString = _ _webpack _require _ _ ( 4 ) ;
2015-08-14 16:30:03 +00:00
var _toString2 = _interopRequireDefault ( _toString ) ;
2016-09-01 21:07:06 +00:00
var _utilsCommon = _ _webpack _require _ _ ( 5 ) ;
2015-08-14 16:30:03 +00:00
var _utilsCommon2 = _interopRequireDefault ( _utilsCommon ) ;
var Color = ( function ( ) {
function Color ( ) {
_classCallCheck ( this , Color ) ;
this . _ _state = _interpret2 [ 'default' ] . apply ( this , arguments ) ;
if ( this . _ _state === false ) {
2015-08-14 22:16:18 +00:00
throw new Error ( 'Failed to interpret color arguments' ) ;
2015-08-14 16:30:03 +00:00
}
this . _ _state . a = this . _ _state . a || 1 ;
}
2015-08-14 20:29:30 +00:00
Color . prototype . toString = function toString ( ) {
return _toString2 [ 'default' ] ( this ) ;
} ;
Color . prototype . toOriginal = function toOriginal ( ) {
return this . _ _state . conversion . write ( this ) ;
} ;
2015-08-14 16:30:03 +00:00
return Color ;
} ) ( ) ;
2015-08-15 01:28:21 +00:00
function defineRGBComponent ( target , component , componentHexIndex ) {
Object . defineProperty ( target , component , {
get : function get ( ) {
if ( this . _ _state . space === 'RGB' ) {
return this . _ _state [ component ] ;
}
Color . recalculateRGB ( this , component , componentHexIndex ) ;
return this . _ _state [ component ] ;
} ,
set : function set ( v ) {
if ( this . _ _state . space !== 'RGB' ) {
Color . recalculateRGB ( this , component , componentHexIndex ) ;
this . _ _state . space = 'RGB' ;
}
this . _ _state [ component ] = v ;
}
} ) ;
}
function defineHSVComponent ( target , component ) {
Object . defineProperty ( target , component , {
get : function get ( ) {
if ( this . _ _state . space === 'HSV' ) {
return this . _ _state [ component ] ;
}
Color . recalculateHSV ( this ) ;
return this . _ _state [ component ] ;
} ,
set : function set ( v ) {
if ( this . _ _state . space !== 'HSV' ) {
Color . recalculateHSV ( this ) ;
this . _ _state . space = 'HSV' ;
}
this . _ _state [ component ] = v ;
}
} ) ;
}
2015-08-14 16:30:03 +00:00
Color . recalculateRGB = function ( color , component , componentHexIndex ) {
if ( color . _ _state . space === 'HEX' ) {
color . _ _state [ component ] = _math2 [ 'default' ] . component _from _hex ( color . _ _state . hex , componentHexIndex ) ;
} else if ( color . _ _state . space === 'HSV' ) {
_utilsCommon2 [ 'default' ] . extend ( color . _ _state , _math2 [ 'default' ] . hsv _to _rgb ( color . _ _state . h , color . _ _state . s , color . _ _state . v ) ) ;
} else {
2015-08-14 22:16:18 +00:00
throw new Error ( 'Corrupted color state' ) ;
2015-08-14 16:30:03 +00:00
}
} ;
Color . recalculateHSV = function ( color ) {
var result = _math2 [ 'default' ] . rgb _to _hsv ( color . r , color . g , color . b ) ;
_utilsCommon2 [ 'default' ] . extend ( color . _ _state , {
s : result . s ,
v : result . v
} ) ;
if ( ! _utilsCommon2 [ 'default' ] . isNaN ( result . h ) ) {
color . _ _state . h = result . h ;
} else if ( _utilsCommon2 [ 'default' ] . isUndefined ( color . _ _state . h ) ) {
color . _ _state . h = 0 ;
}
} ;
Color . COMPONENTS = [ 'r' , 'g' , 'b' , 'h' , 's' , 'v' , 'hex' , 'a' ] ;
defineRGBComponent ( Color . prototype , 'r' , 2 ) ;
defineRGBComponent ( Color . prototype , 'g' , 1 ) ;
defineRGBComponent ( Color . prototype , 'b' , 0 ) ;
defineHSVComponent ( Color . prototype , 'h' ) ;
defineHSVComponent ( Color . prototype , 's' ) ;
defineHSVComponent ( Color . prototype , 'v' ) ;
Object . defineProperty ( Color . prototype , 'a' , {
get : function get ( ) {
return this . _ _state . a ;
} ,
set : function set ( v ) {
this . _ _state . a = v ;
}
} ) ;
Object . defineProperty ( Color . prototype , 'hex' , {
get : function get ( ) {
if ( ! this . _ _state . space !== 'HEX' ) {
this . _ _state . hex = _math2 [ 'default' ] . rgb _to _hex ( this . r , this . g , this . b ) ;
}
return this . _ _state . hex ;
} ,
set : function set ( v ) {
this . _ _state . space = 'HEX' ;
this . _ _state . hex = v ;
}
} ) ;
exports [ 'default' ] = Color ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 3 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
2016-09-01 21:07:06 +00:00
var _toString = _ _webpack _require _ _ ( 4 ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
var _toString2 = _interopRequireDefault ( _toString ) ;
2015-08-14 16:30:03 +00:00
2016-09-01 21:07:06 +00:00
var _utilsCommon = _ _webpack _require _ _ ( 5 ) ;
2015-08-14 16:30:03 +00:00
var _utilsCommon2 = _interopRequireDefault ( _utilsCommon ) ;
var INTERPRETATIONS = [
// Strings
{
litmus : _utilsCommon2 [ 'default' ] . isString ,
conversions : {
THREE _CHAR _HEX : {
read : function read ( original ) {
var test = original . match ( /^#([A-F0-9])([A-F0-9])([A-F0-9])$/i ) ;
2015-08-14 20:29:30 +00:00
if ( test === null ) {
return false ;
}
2015-08-14 16:30:03 +00:00
return {
space : 'HEX' ,
2015-08-14 20:29:30 +00:00
hex : parseInt ( '0x' + test [ 1 ] . toString ( ) + test [ 1 ] . toString ( ) + test [ 2 ] . toString ( ) + test [ 2 ] . toString ( ) + test [ 3 ] . toString ( ) + test [ 3 ] . toString ( ) , 0 )
2015-08-14 16:30:03 +00:00
} ;
} ,
2015-08-14 20:29:30 +00:00
write : _toString2 [ 'default' ]
2015-08-14 16:30:03 +00:00
} ,
SIX _CHAR _HEX : {
read : function read ( original ) {
var test = original . match ( /^#([A-F0-9]{6})$/i ) ;
2015-08-14 20:29:30 +00:00
if ( test === null ) {
return false ;
}
2015-08-14 16:30:03 +00:00
return {
space : 'HEX' ,
2015-08-14 20:29:30 +00:00
hex : parseInt ( '0x' + test [ 1 ] . toString ( ) , 0 )
2015-08-14 16:30:03 +00:00
} ;
} ,
2015-08-14 20:29:30 +00:00
write : _toString2 [ 'default' ]
2015-08-14 16:30:03 +00:00
} ,
CSS _RGB : {
read : function read ( original ) {
var test = original . match ( /^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/ ) ;
2015-08-14 20:29:30 +00:00
if ( test === null ) {
return false ;
}
2015-08-14 16:30:03 +00:00
return {
space : 'RGB' ,
r : parseFloat ( test [ 1 ] ) ,
g : parseFloat ( test [ 2 ] ) ,
b : parseFloat ( test [ 3 ] )
} ;
} ,
2015-08-14 20:29:30 +00:00
write : _toString2 [ 'default' ]
2015-08-14 16:30:03 +00:00
} ,
CSS _RGBA : {
read : function read ( original ) {
2016-09-01 21:07:06 +00:00
var test = original . match ( /^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/ ) ;
2015-08-14 20:29:30 +00:00
if ( test === null ) {
return false ;
}
2015-08-14 16:30:03 +00:00
return {
space : 'RGB' ,
r : parseFloat ( test [ 1 ] ) ,
g : parseFloat ( test [ 2 ] ) ,
b : parseFloat ( test [ 3 ] ) ,
a : parseFloat ( test [ 4 ] )
} ;
} ,
2015-08-14 20:29:30 +00:00
write : _toString2 [ 'default' ]
2015-08-14 16:30:03 +00:00
}
}
} ,
// Numbers
{
litmus : _utilsCommon2 [ 'default' ] . isNumber ,
conversions : {
HEX : {
read : function read ( original ) {
return {
space : 'HEX' ,
hex : original ,
conversionName : 'HEX'
} ;
} ,
write : function write ( color ) {
return color . hex ;
}
}
}
} ,
// Arrays
{
litmus : _utilsCommon2 [ 'default' ] . isArray ,
conversions : {
RGB _ARRAY : {
read : function read ( original ) {
2015-08-14 20:29:30 +00:00
if ( original . length !== 3 ) {
return false ;
}
2015-08-14 16:30:03 +00:00
return {
space : 'RGB' ,
r : original [ 0 ] ,
g : original [ 1 ] ,
b : original [ 2 ]
} ;
} ,
write : function write ( color ) {
return [ color . r , color . g , color . b ] ;
}
} ,
RGBA _ARRAY : {
read : function read ( original ) {
2015-08-14 20:29:30 +00:00
if ( original . length !== 4 ) return false ;
2015-08-14 16:30:03 +00:00
return {
space : 'RGB' ,
r : original [ 0 ] ,
g : original [ 1 ] ,
b : original [ 2 ] ,
a : original [ 3 ]
} ;
} ,
write : function write ( color ) {
return [ color . r , color . g , color . b , color . a ] ;
}
}
}
} ,
// Objects
{
litmus : _utilsCommon2 [ 'default' ] . isObject ,
conversions : {
RGBA _OBJ : {
read : function read ( original ) {
if ( _utilsCommon2 [ 'default' ] . isNumber ( original . r ) && _utilsCommon2 [ 'default' ] . isNumber ( original . g ) && _utilsCommon2 [ 'default' ] . isNumber ( original . b ) && _utilsCommon2 [ 'default' ] . isNumber ( original . a ) ) {
return {
space : 'RGB' ,
r : original . r ,
g : original . g ,
b : original . b ,
a : original . a
} ;
}
return false ;
} ,
write : function write ( color ) {
return {
r : color . r ,
g : color . g ,
b : color . b ,
a : color . a
} ;
}
} ,
RGB _OBJ : {
read : function read ( original ) {
if ( _utilsCommon2 [ 'default' ] . isNumber ( original . r ) && _utilsCommon2 [ 'default' ] . isNumber ( original . g ) && _utilsCommon2 [ 'default' ] . isNumber ( original . b ) ) {
return {
space : 'RGB' ,
r : original . r ,
g : original . g ,
b : original . b
} ;
}
return false ;
} ,
write : function write ( color ) {
return {
r : color . r ,
g : color . g ,
b : color . b
} ;
}
} ,
HSVA _OBJ : {
read : function read ( original ) {
if ( _utilsCommon2 [ 'default' ] . isNumber ( original . h ) && _utilsCommon2 [ 'default' ] . isNumber ( original . s ) && _utilsCommon2 [ 'default' ] . isNumber ( original . v ) && _utilsCommon2 [ 'default' ] . isNumber ( original . a ) ) {
return {
space : 'HSV' ,
h : original . h ,
s : original . s ,
v : original . v ,
a : original . a
} ;
}
return false ;
} ,
write : function write ( color ) {
return {
h : color . h ,
s : color . s ,
v : color . v ,
a : color . a
} ;
}
} ,
HSV _OBJ : {
read : function read ( original ) {
if ( _utilsCommon2 [ 'default' ] . isNumber ( original . h ) && _utilsCommon2 [ 'default' ] . isNumber ( original . s ) && _utilsCommon2 [ 'default' ] . isNumber ( original . v ) ) {
return {
space : 'HSV' ,
h : original . h ,
s : original . s ,
v : original . v
} ;
}
return false ;
} ,
write : function write ( color ) {
return {
h : color . h ,
s : color . s ,
v : color . v
} ;
}
}
}
} ] ;
2015-08-14 20:29:30 +00:00
var result = undefined ;
var toReturn = undefined ;
var interpret = function interpret ( ) {
toReturn = false ;
var original = arguments . length > 1 ? _utilsCommon2 [ 'default' ] . toArray ( arguments ) : arguments [ 0 ] ;
_utilsCommon2 [ 'default' ] . each ( INTERPRETATIONS , function ( family ) {
if ( family . litmus ( original ) ) {
_utilsCommon2 [ 'default' ] . each ( family . conversions , function ( conversion , conversionName ) {
result = conversion . read ( original ) ;
if ( toReturn === false && result !== false ) {
toReturn = result ;
result . conversionName = conversionName ;
result . conversion = conversion ;
return _utilsCommon2 [ 'default' ] . BREAK ;
}
} ) ;
return _utilsCommon2 [ 'default' ] . BREAK ;
}
} ) ;
return toReturn ;
} ;
2015-08-14 16:30:03 +00:00
exports [ 'default' ] = interpret ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 4 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
2016-09-01 21:07:06 +00:00
var _utilsCommon = _ _webpack _require _ _ ( 5 ) ;
2015-08-14 16:30:03 +00:00
var _utilsCommon2 = _interopRequireDefault ( _utilsCommon ) ;
2015-08-14 20:29:30 +00:00
exports [ 'default' ] = function ( color ) {
if ( color . a === 1 || _utilsCommon2 [ 'default' ] . isUndefined ( color . a ) ) {
2015-08-14 16:30:03 +00:00
var s = color . hex . toString ( 16 ) ;
while ( s . length < 6 ) {
s = '0' + s ;
}
return '#' + s ;
}
2015-08-14 20:29:30 +00:00
return 'rgba(' + Math . round ( color . r ) + ',' + Math . round ( color . g ) + ',' + Math . round ( color . b ) + ',' + color . a + ')' ;
2015-08-14 16:30:03 +00:00
} ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 5 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
var ARR _EACH = Array . prototype . forEach ;
var ARR _SLICE = Array . prototype . slice ;
/ * *
* Band - aid methods for things that should be a lot easier in JavaScript .
* Implementation and structure inspired by underscore . js
* http : //documentcloud.github.com/underscore/
* /
var Common = {
BREAK : { } ,
extend : function extend ( target ) {
this . each ( ARR _SLICE . call ( arguments , 1 ) , function ( obj ) {
2015-08-14 20:29:30 +00:00
for ( var key in obj ) {
if ( ! this . isUndefined ( obj [ key ] ) ) {
target [ key ] = obj [ key ] ;
}
}
2015-08-14 16:30:03 +00:00
} , this ) ;
return target ;
} ,
defaults : function defaults ( target ) {
this . each ( ARR _SLICE . call ( arguments , 1 ) , function ( obj ) {
2015-08-14 20:29:30 +00:00
for ( var key in obj ) {
if ( this . isUndefined ( target [ key ] ) ) {
target [ key ] = obj [ key ] ;
}
}
2015-08-14 16:30:03 +00:00
} , this ) ;
return target ;
} ,
compose : function compose ( ) {
var toCall = ARR _SLICE . call ( arguments ) ;
return function ( ) {
var args = ARR _SLICE . call ( arguments ) ;
for ( var i = toCall . length - 1 ; i >= 0 ; i -- ) {
args = [ toCall [ i ] . apply ( this , args ) ] ;
}
return args [ 0 ] ;
} ;
} ,
each : function each ( obj , itr , scope ) {
2015-08-14 20:29:30 +00:00
if ( ! obj ) {
return ;
}
2015-08-14 16:30:03 +00:00
if ( ARR _EACH && obj . forEach && obj . forEach === ARR _EACH ) {
obj . forEach ( itr , scope ) ;
} else if ( obj . length === obj . length + 0 ) {
// Is number but not NaN
2015-08-14 20:29:30 +00:00
var key = undefined ;
var l = undefined ;
for ( key = 0 , l = obj . length ; key < l ; key ++ ) {
if ( key in obj && itr . call ( scope , obj [ key ] , key ) === this . BREAK ) {
return ;
}
}
2015-08-14 16:30:03 +00:00
} else {
2015-08-14 20:29:30 +00:00
for ( var key in obj ) {
if ( itr . call ( scope , obj [ key ] , key ) === this . BREAK ) {
return ;
}
}
2015-08-14 16:30:03 +00:00
}
} ,
defer : function defer ( fnc ) {
setTimeout ( fnc , 0 ) ;
} ,
2016-08-19 00:24:08 +00:00
// call the function immediately, but wait until threshold passes to allow it to be called again
debounce : function debounce ( func , threshold ) {
var timeout = undefined ;
return function ( ) {
var obj = this ;
var args = arguments ;
function delayed ( ) {
timeout = null ;
}
var allowCall = ! timeout ;
clearTimeout ( timeout ) ;
timeout = setTimeout ( delayed , threshold ) ;
if ( allowCall ) {
func . apply ( obj , args ) ;
}
} ;
} ,
2015-08-14 16:30:03 +00:00
toArray : function toArray ( obj ) {
if ( obj . toArray ) return obj . toArray ( ) ;
return ARR _SLICE . call ( obj ) ;
} ,
isUndefined : function isUndefined ( obj ) {
return obj === undefined ;
} ,
isNull : function isNull ( obj ) {
return obj === null ;
} ,
2015-08-14 20:29:30 +00:00
isNaN : ( function ( _isNaN ) {
function isNaN ( _x ) {
return _isNaN . apply ( this , arguments ) ;
}
isNaN . toString = function ( ) {
return _isNaN . toString ( ) ;
} ;
return isNaN ;
} ) ( function ( obj ) {
return isNaN ( obj ) ;
} ) ,
2015-08-14 16:30:03 +00:00
isArray : Array . isArray || function ( obj ) {
return obj . constructor === Array ;
} ,
isObject : function isObject ( obj ) {
return obj === Object ( obj ) ;
} ,
isNumber : function isNumber ( obj ) {
return obj === obj + 0 ;
} ,
isString : function isString ( obj ) {
return obj === obj + '' ;
} ,
isBoolean : function isBoolean ( obj ) {
return obj === false || obj === true ;
} ,
isFunction : function isFunction ( obj ) {
return Object . prototype . toString . call ( obj ) === '[object Function]' ;
}
} ;
2015-08-14 20:29:30 +00:00
exports [ 'default' ] = Common ;
module . exports = exports [ 'default' ] ;
2015-08-14 16:30:03 +00:00
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 6 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
"use strict" ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 22:16:18 +00:00
var tmpComponent = undefined ;
2015-08-14 16:30:03 +00:00
var ColorMath = {
hsv _to _rgb : function hsv _to _rgb ( h , s , v ) {
var hi = Math . floor ( h / 60 ) % 6 ;
var f = h / 60 - Math . floor ( h / 60 ) ;
var p = v * ( 1.0 - s ) ;
var q = v * ( 1.0 - f * s ) ;
var t = v * ( 1.0 - ( 1.0 - f ) * s ) ;
2015-08-14 22:16:18 +00:00
2015-08-14 16:30:03 +00:00
var c = [ [ v , t , p ] , [ q , v , p ] , [ p , v , t ] , [ p , q , v ] , [ t , p , v ] , [ v , p , q ] ] [ hi ] ;
return {
r : c [ 0 ] * 255 ,
g : c [ 1 ] * 255 ,
b : c [ 2 ] * 255
} ;
} ,
rgb _to _hsv : function rgb _to _hsv ( r , g , b ) {
2015-08-14 22:16:18 +00:00
var min = Math . min ( r , g , b ) ;
var max = Math . max ( r , g , b ) ;
var delta = max - min ;
var h = undefined ;
var s = undefined ;
2015-08-14 16:30:03 +00:00
2015-08-14 22:16:18 +00:00
if ( max !== 0 ) {
2015-08-14 16:30:03 +00:00
s = delta / max ;
} else {
return {
h : NaN ,
s : 0 ,
v : 0
} ;
}
2015-08-14 22:16:18 +00:00
if ( r === max ) {
2015-08-14 16:30:03 +00:00
h = ( g - b ) / delta ;
2015-08-14 22:16:18 +00:00
} else if ( g === max ) {
2015-08-14 16:30:03 +00:00
h = 2 + ( b - r ) / delta ;
} else {
h = 4 + ( r - g ) / delta ;
}
h /= 6 ;
if ( h < 0 ) {
h += 1 ;
}
return {
h : h * 360 ,
s : s ,
v : max / 255
} ;
} ,
rgb _to _hex : function rgb _to _hex ( r , g , b ) {
var hex = this . hex _with _component ( 0 , 2 , r ) ;
hex = this . hex _with _component ( hex , 1 , g ) ;
hex = this . hex _with _component ( hex , 0 , b ) ;
return hex ;
} ,
component _from _hex : function component _from _hex ( hex , componentIndex ) {
return hex >> componentIndex * 8 & 0xFF ;
} ,
hex _with _component : function hex _with _component ( hex , componentIndex , value ) {
return value << ( tmpComponent = componentIndex * 8 ) | hex & ~ ( 0xFF << tmpComponent ) ;
}
} ;
exports [ "default" ] = ColorMath ;
module . exports = exports [ "default" ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 7 */
2015-08-14 22:16:18 +00:00
/***/ function ( module , exports ) {
2015-08-14 16:30:03 +00:00
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
/ * *
* @ class An "abstract" class that represents a given property of an object .
*
* @ param { Object } object The object to be manipulated
* @ param { string } property The name of the property to be manipulated
*
* @ member dat . controllers
* /
2015-08-14 22:16:18 +00:00
'use strict' ;
exports . _ _esModule = true ;
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } }
2015-08-14 16:30:03 +00:00
var Controller = ( function ( ) {
function Controller ( object , property ) {
_classCallCheck ( this , Controller ) ;
this . initialValue = object [ property ] ;
/ * *
* Those who extend this class will put their DOM elements in here .
* @ type { DOMElement }
* /
this . domElement = document . createElement ( 'div' ) ;
/ * *
* The object to manipulate
* @ type { Object }
* /
this . object = object ;
/ * *
* The name of the property to manipulate
* @ type { String }
* /
this . property = property ;
/ * *
* The function to be called on change .
* @ type { Function }
* @ ignore
* /
this . _ _onChange = undefined ;
/ * *
* The function to be called on finishing change .
* @ type { Function }
* @ ignore
* /
this . _ _onFinishChange = undefined ;
}
/ * *
* Specify that a function fire every time someone changes the value with
* this Controller .
*
* @ param { Function } fnc This function will be called whenever the value
* is modified via this Controller .
2015-08-14 20:29:30 +00:00
* @ returns { Controller } this
2015-08-14 16:30:03 +00:00
* /
2015-08-14 20:29:30 +00:00
Controller . prototype . onChange = function onChange ( fnc ) {
this . _ _onChange = fnc ;
return this ;
} ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
/ * *
* Specify that a function fire every time someone "finishes" changing
* the value wih this Controller . Useful for values that change
* incrementally like numbers or strings .
*
* @ param { Function } fnc This function will be called whenever
* someone "finishes" changing the value via this Controller .
* @ returns { Controller } this
* /
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
Controller . prototype . onFinishChange = function onFinishChange ( fnc ) {
this . _ _onFinishChange = fnc ;
return this ;
} ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
/ * *
* Change the value of < code > object [ property ] < / c o d e >
*
* @ param { Object } newValue The new value of < code > object [ property ] < / c o d e >
* /
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
Controller . prototype . setValue = function setValue ( newValue ) {
this . object [ this . property ] = newValue ;
if ( this . _ _onChange ) {
this . _ _onChange . call ( this , newValue ) ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 20:29:30 +00:00
this . updateDisplay ( ) ;
return this ;
} ;
/ * *
* Gets the value of < code > object [ property ] < / c o d e >
*
* @ returns { Object } The current value of < code > object [ property ] < / c o d e >
* /
Controller . prototype . getValue = function getValue ( ) {
return this . object [ this . property ] ;
} ;
/ * *
* Refreshes the visual display of a Controller in order to keep sync
* with the object ' s current value .
* @ returns { Controller } this
* /
Controller . prototype . updateDisplay = function updateDisplay ( ) {
return this ;
} ;
/ * *
* @ returns { Boolean } true if the value has deviated from initialValue
* /
Controller . prototype . isModified = function isModified ( ) {
return this . initialValue !== this . getValue ( ) ;
} ;
2015-08-14 16:30:03 +00:00
return Controller ;
} ) ( ) ;
exports [ 'default' ] = Controller ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 8 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== 'function' && superClass !== null ) { throw new TypeError ( 'Super expression must either be null or a function, not ' + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
2016-09-01 21:07:06 +00:00
var _Controller2 = _ _webpack _require _ _ ( 7 ) ;
2015-08-14 16:30:03 +00:00
var _Controller3 = _interopRequireDefault ( _Controller2 ) ;
2016-09-01 21:07:06 +00:00
var _domDom = _ _webpack _require _ _ ( 9 ) ;
2015-08-14 16:30:03 +00:00
var _domDom2 = _interopRequireDefault ( _domDom ) ;
/ * *
* @ class Provides a checkbox input to alter the boolean property of an object .
* @ extends dat . controllers . Controller
*
* @ param { Object } object The object to be manipulated
* @ param { string } property The name of the property to be manipulated
*
* @ member dat . controllers
* /
var BooleanController = ( function ( _Controller ) {
_inherits ( BooleanController , _Controller ) ;
function BooleanController ( object , property ) {
_classCallCheck ( this , BooleanController ) ;
2015-08-14 20:29:30 +00:00
_Controller . call ( this , object , property ) ;
2015-08-14 16:30:03 +00:00
var _this = this ;
this . _ _prev = this . getValue ( ) ;
this . _ _checkbox = document . createElement ( 'input' ) ;
this . _ _checkbox . setAttribute ( 'type' , 'checkbox' ) ;
function onChange ( ) {
_this . setValue ( ! _this . _ _prev ) ;
}
_domDom2 [ 'default' ] . bind ( this . _ _checkbox , 'change' , onChange , false ) ;
this . domElement . appendChild ( this . _ _checkbox ) ;
// Match original value
this . updateDisplay ( ) ;
}
2015-08-14 20:29:30 +00:00
BooleanController . prototype . setValue = function setValue ( v ) {
var toReturn = _Controller . prototype . setValue . call ( this , v ) ;
if ( this . _ _onFinishChange ) {
this . _ _onFinishChange . call ( this , this . getValue ( ) ) ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 20:29:30 +00:00
this . _ _prev = this . getValue ( ) ;
return toReturn ;
} ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
BooleanController . prototype . updateDisplay = function updateDisplay ( ) {
if ( this . getValue ( ) === true ) {
this . _ _checkbox . setAttribute ( 'checked' , 'checked' ) ;
this . _ _checkbox . checked = true ;
} else {
this . _ _checkbox . checked = false ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 20:29:30 +00:00
return _Controller . prototype . updateDisplay . call ( this ) ;
} ;
2015-08-14 16:30:03 +00:00
return BooleanController ;
} ) ( _Controller3 [ 'default' ] ) ;
exports [ 'default' ] = BooleanController ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 9 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
2015-08-14 16:30:03 +00:00
2016-09-01 21:07:06 +00:00
var _utilsCommon = _ _webpack _require _ _ ( 5 ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
var _utilsCommon2 = _interopRequireDefault ( _utilsCommon ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
var EVENT _MAP = {
2016-09-01 21:07:06 +00:00
HTMLEvents : [ 'change' ] ,
MouseEvents : [ 'click' , 'mousemove' , 'mousedown' , 'mouseup' , 'mouseover' ] ,
KeyboardEvents : [ 'keydown' ]
2015-08-14 20:29:30 +00:00
} ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
var EVENT _MAP _INV = { } ;
_utilsCommon2 [ 'default' ] . each ( EVENT _MAP , function ( v , k ) {
_utilsCommon2 [ 'default' ] . each ( v , function ( e ) {
EVENT _MAP _INV [ e ] = k ;
} ) ;
} ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
var CSS _VALUE _PIXELS = /(\d+(\.\d+)?)px/ ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
function cssValueToPixels ( val ) {
2015-08-14 22:16:18 +00:00
if ( val === '0' || _utilsCommon2 [ 'default' ] . isUndefined ( val ) ) {
return 0 ;
}
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
var match = val . match ( CSS _VALUE _PIXELS ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
if ( ! _utilsCommon2 [ 'default' ] . isNull ( match ) ) {
return parseFloat ( match [ 1 ] ) ;
}
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
// TODO ...ems? %?
return 0 ;
}
2015-08-14 16:30:03 +00:00
/ * *
2015-08-14 20:29:30 +00:00
* @ namespace
* @ member dat . dom
2015-08-14 16:30:03 +00:00
* /
2015-08-14 20:29:30 +00:00
var dom = {
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
/ * *
*
* @ param elem
* @ param selectable
* /
makeSelectable : function makeSelectable ( elem , selectable ) {
if ( elem === undefined || elem . style === undefined ) return ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
elem . onselectstart = selectable ? function ( ) {
return false ;
} : function ( ) { } ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
elem . style . MozUserSelect = selectable ? 'auto' : 'none' ;
elem . style . KhtmlUserSelect = selectable ? 'auto' : 'none' ;
elem . unselectable = selectable ? 'on' : 'off' ;
} ,
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
/ * *
*
* @ param elem
* @ param horizontal
2015-08-14 22:16:18 +00:00
* @ param vert
2015-08-14 20:29:30 +00:00
* /
2015-08-14 22:16:18 +00:00
makeFullscreen : function makeFullscreen ( elem , hor , vert ) {
var vertical = vert ;
var horizontal = hor ;
2015-08-14 16:30:03 +00:00
2015-08-14 22:16:18 +00:00
if ( _utilsCommon2 [ 'default' ] . isUndefined ( horizontal ) ) {
horizontal = true ;
}
if ( _utilsCommon2 [ 'default' ] . isUndefined ( vertical ) ) {
vertical = true ;
}
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
elem . style . position = 'absolute' ;
2015-08-14 16:30:03 +00:00
if ( horizontal ) {
elem . style . left = 0 ;
elem . style . right = 0 ;
}
if ( vertical ) {
elem . style . top = 0 ;
elem . style . bottom = 0 ;
}
} ,
/ * *
*
* @ param elem
* @ param eventType
* @ param params
* /
2015-08-14 22:16:18 +00:00
fakeEvent : function fakeEvent ( elem , eventType , pars , aux ) {
var params = pars || { } ;
2015-08-14 16:30:03 +00:00
var className = EVENT _MAP _INV [ eventType ] ;
if ( ! className ) {
throw new Error ( 'Event type ' + eventType + ' not supported.' ) ;
}
var evt = document . createEvent ( className ) ;
switch ( className ) {
case 'MouseEvents' :
2015-08-14 22:16:18 +00:00
{
var clientX = params . x || params . clientX || 0 ;
var clientY = params . y || params . clientY || 0 ;
evt . initMouseEvent ( eventType , params . bubbles || false , params . cancelable || true , window , params . clickCount || 1 , 0 , // screen X
0 , // screen Y
clientX , // client X
clientY , // client Y
false , false , false , false , 0 , null ) ;
break ;
}
2015-08-14 16:30:03 +00:00
case 'KeyboardEvents' :
2015-08-14 22:16:18 +00:00
{
var init = evt . initKeyboardEvent || evt . initKeyEvent ; // webkit || moz
_utilsCommon2 [ 'default' ] . defaults ( params , {
cancelable : true ,
ctrlKey : false ,
altKey : false ,
shiftKey : false ,
metaKey : false ,
keyCode : undefined ,
charCode : undefined
} ) ;
init ( eventType , params . bubbles || false , params . cancelable , window , params . ctrlKey , params . altKey , params . shiftKey , params . metaKey , params . keyCode , params . charCode ) ;
break ;
}
2015-08-14 16:30:03 +00:00
default :
2015-08-14 22:16:18 +00:00
{
evt . initEvent ( eventType , params . bubbles || false , params . cancelable || true ) ;
break ;
}
2015-08-14 16:30:03 +00:00
}
_utilsCommon2 [ 'default' ] . defaults ( evt , aux ) ;
elem . dispatchEvent ( evt ) ;
} ,
/ * *
*
* @ param elem
* @ param event
* @ param func
* @ param bool
* /
2015-08-14 22:16:18 +00:00
bind : function bind ( elem , event , func , newBool ) {
var bool = newBool || false ;
if ( elem . addEventListener ) {
elem . addEventListener ( event , func , bool ) ;
} else if ( elem . attachEvent ) {
elem . attachEvent ( 'on' + event , func ) ;
}
2015-08-14 16:30:03 +00:00
return dom ;
} ,
/ * *
*
* @ param elem
* @ param event
* @ param func
* @ param bool
* /
2015-08-14 22:16:18 +00:00
unbind : function unbind ( elem , event , func , newBool ) {
var bool = newBool || false ;
if ( elem . removeEventListener ) {
elem . removeEventListener ( event , func , bool ) ;
} else if ( elem . detachEvent ) {
elem . detachEvent ( 'on' + event , func ) ;
}
2015-08-14 16:30:03 +00:00
return dom ;
} ,
/ * *
*
* @ param elem
* @ param className
* /
addClass : function addClass ( elem , className ) {
if ( elem . className === undefined ) {
elem . className = className ;
} else if ( elem . className !== className ) {
var classes = elem . className . split ( / +/ ) ;
2015-08-14 22:16:18 +00:00
if ( classes . indexOf ( className ) === - 1 ) {
2015-08-14 16:30:03 +00:00
classes . push ( className ) ;
elem . className = classes . join ( ' ' ) . replace ( /^\s+/ , '' ) . replace ( /\s+$/ , '' ) ;
}
}
return dom ;
} ,
/ * *
*
* @ param elem
* @ param className
* /
removeClass : function removeClass ( elem , className ) {
if ( className ) {
2015-08-14 22:16:18 +00:00
if ( elem . className === className ) {
elem . removeAttribute ( 'class' ) ;
} else {
var classes = elem . className . split ( / +/ ) ;
var index = classes . indexOf ( className ) ;
if ( index !== - 1 ) {
classes . splice ( index , 1 ) ;
elem . className = classes . join ( ' ' ) ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 22:16:18 +00:00
}
2015-08-14 16:30:03 +00:00
} else {
elem . className = undefined ;
}
return dom ;
} ,
hasClass : function hasClass ( elem , className ) {
return new RegExp ( '(?:^|\\s+)' + className + '(?:\\s+|$)' ) . test ( elem . className ) || false ;
} ,
/ * *
*
* @ param elem
* /
getWidth : function getWidth ( elem ) {
var style = getComputedStyle ( elem ) ;
2015-08-14 22:16:18 +00:00
return cssValueToPixels ( style [ 'border-left-width' ] ) + cssValueToPixels ( style [ 'border-right-width' ] ) + cssValueToPixels ( style [ 'padding-left' ] ) + cssValueToPixels ( style [ 'padding-right' ] ) + cssValueToPixels ( style . width ) ;
2015-08-14 16:30:03 +00:00
} ,
/ * *
*
* @ param elem
* /
getHeight : function getHeight ( elem ) {
var style = getComputedStyle ( elem ) ;
2015-08-14 22:16:18 +00:00
return cssValueToPixels ( style [ 'border-top-width' ] ) + cssValueToPixels ( style [ 'border-bottom-width' ] ) + cssValueToPixels ( style [ 'padding-top' ] ) + cssValueToPixels ( style [ 'padding-bottom' ] ) + cssValueToPixels ( style . height ) ;
2015-08-14 16:30:03 +00:00
} ,
/ * *
*
2015-08-14 22:16:18 +00:00
* @ param el
2015-08-14 16:30:03 +00:00
* /
2015-08-14 22:16:18 +00:00
getOffset : function getOffset ( el ) {
var elem = el ;
2015-08-14 16:30:03 +00:00
var offset = { left : 0 , top : 0 } ;
if ( elem . offsetParent ) {
do {
offset . left += elem . offsetLeft ;
offset . top += elem . offsetTop ;
2015-08-14 22:16:18 +00:00
elem = elem . offsetParent ;
} while ( elem ) ;
2015-08-14 16:30:03 +00:00
}
return offset ;
} ,
// http://stackoverflow.com/posts/2684561/revisions
/ * *
*
* @ param elem
* /
isActive : function isActive ( elem ) {
return elem === document . activeElement && ( elem . type || elem . href ) ;
}
} ;
exports [ 'default' ] = dom ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 10 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== 'function' && superClass !== null ) { throw new TypeError ( 'Super expression must either be null or a function, not ' + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
2016-09-01 21:07:06 +00:00
var _Controller2 = _ _webpack _require _ _ ( 7 ) ;
2015-08-14 20:29:30 +00:00
var _Controller3 = _interopRequireDefault ( _Controller2 ) ;
2016-09-01 21:07:06 +00:00
var _domDom = _ _webpack _require _ _ ( 9 ) ;
2015-08-14 20:29:30 +00:00
var _domDom2 = _interopRequireDefault ( _domDom ) ;
2016-09-01 21:07:06 +00:00
var _utilsCommon = _ _webpack _require _ _ ( 5 ) ;
2015-08-14 20:29:30 +00:00
var _utilsCommon2 = _interopRequireDefault ( _utilsCommon ) ;
/ * *
* @ class Provides a select input to alter the property of an object , using a
* list of accepted values .
*
* @ extends dat . controllers . Controller
*
* @ param { Object } object The object to be manipulated
* @ param { string } property The name of the property to be manipulated
* @ param { Object | string [ ] } options A map of labels to acceptable values , or
* a list of acceptable string values .
*
* @ member dat . controllers
* /
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
var OptionController = ( function ( _Controller ) {
_inherits ( OptionController , _Controller ) ;
2015-08-14 22:16:18 +00:00
function OptionController ( object , property , opts ) {
2015-08-14 20:29:30 +00:00
_classCallCheck ( this , OptionController ) ;
_Controller . call ( this , object , property ) ;
2015-08-14 22:16:18 +00:00
var options = opts ;
2015-08-14 20:29:30 +00:00
var _this = this ;
/ * *
* The drop down menu
* @ ignore
* /
this . _ _select = document . createElement ( 'select' ) ;
if ( _utilsCommon2 [ 'default' ] . isArray ( options ) ) {
2015-08-14 22:16:18 +00:00
( function ( ) {
var map = { } ;
_utilsCommon2 [ 'default' ] . each ( options , function ( element ) {
map [ element ] = element ;
} ) ;
options = map ;
} ) ( ) ;
2015-08-14 20:29:30 +00:00
}
_utilsCommon2 [ 'default' ] . each ( options , function ( value , key ) {
var opt = document . createElement ( 'option' ) ;
opt . innerHTML = key ;
opt . setAttribute ( 'value' , value ) ;
_this . _ _select . appendChild ( opt ) ;
} ) ;
// Acknowledge original value
this . updateDisplay ( ) ;
_domDom2 [ 'default' ] . bind ( this . _ _select , 'change' , function ( ) {
var desiredValue = this . options [ this . selectedIndex ] . value ;
_this . setValue ( desiredValue ) ;
} ) ;
this . domElement . appendChild ( this . _ _select ) ;
}
OptionController . prototype . setValue = function setValue ( v ) {
var toReturn = _Controller . prototype . setValue . call ( this , v ) ;
if ( this . _ _onFinishChange ) {
this . _ _onFinishChange . call ( this , this . getValue ( ) ) ;
}
return toReturn ;
} ;
OptionController . prototype . updateDisplay = function updateDisplay ( ) {
2016-08-18 22:31:37 +00:00
if ( _domDom2 [ 'default' ] . isActive ( this . _ _select ) ) return this ; // prevent number from updating if user is trying to manually update
2015-08-14 20:29:30 +00:00
this . _ _select . value = this . getValue ( ) ;
return _Controller . prototype . updateDisplay . call ( this ) ;
} ;
return OptionController ;
} ) ( _Controller3 [ 'default' ] ) ;
exports [ 'default' ] = OptionController ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 11 */
2015-08-14 20:29:30 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== 'function' && superClass !== null ) { throw new TypeError ( 'Super expression must either be null or a function, not ' + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
2016-09-01 21:07:06 +00:00
var _Controller2 = _ _webpack _require _ _ ( 7 ) ;
2015-08-14 16:30:03 +00:00
var _Controller3 = _interopRequireDefault ( _Controller2 ) ;
2016-09-01 21:07:06 +00:00
var _domDom = _ _webpack _require _ _ ( 9 ) ;
2015-08-14 16:30:03 +00:00
var _domDom2 = _interopRequireDefault ( _domDom ) ;
/ * *
* @ class Provides a text input to alter the string property of an object .
*
* @ extends dat . controllers . Controller
*
* @ param { Object } object The object to be manipulated
* @ param { string } property The name of the property to be manipulated
*
* @ member dat . controllers
* /
var StringController = ( function ( _Controller ) {
_inherits ( StringController , _Controller ) ;
function StringController ( object , property ) {
_classCallCheck ( this , StringController ) ;
2015-08-14 20:29:30 +00:00
_Controller . call ( this , object , property ) ;
2015-08-14 16:30:03 +00:00
var _this = this ;
2015-08-15 01:28:21 +00:00
function onChange ( ) {
_this . setValue ( _this . _ _input . value ) ;
}
function onBlur ( ) {
if ( _this . _ _onFinishChange ) {
_this . _ _onFinishChange . call ( _this , _this . getValue ( ) ) ;
}
}
2015-08-14 16:30:03 +00:00
this . _ _input = document . createElement ( 'input' ) ;
this . _ _input . setAttribute ( 'type' , 'text' ) ;
_domDom2 [ 'default' ] . bind ( this . _ _input , 'keyup' , onChange ) ;
_domDom2 [ 'default' ] . bind ( this . _ _input , 'change' , onChange ) ;
_domDom2 [ 'default' ] . bind ( this . _ _input , 'blur' , onBlur ) ;
_domDom2 [ 'default' ] . bind ( this . _ _input , 'keydown' , function ( e ) {
if ( e . keyCode === 13 ) {
this . blur ( ) ;
}
} ) ;
this . updateDisplay ( ) ;
this . domElement . appendChild ( this . _ _input ) ;
}
2015-08-14 20:29:30 +00:00
StringController . prototype . updateDisplay = function updateDisplay ( ) {
// Stops the caret from moving on account of:
// keyup -> setValue -> updateDisplay
if ( ! _domDom2 [ 'default' ] . isActive ( this . _ _input ) ) {
this . _ _input . value = this . getValue ( ) ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 20:29:30 +00:00
return _Controller . prototype . updateDisplay . call ( this ) ;
} ;
2015-08-14 16:30:03 +00:00
return StringController ;
} ) ( _Controller3 [ 'default' ] ) ;
exports [ 'default' ] = StringController ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 12 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== 'function' && superClass !== null ) { throw new TypeError ( 'Super expression must either be null or a function, not ' + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
2016-09-01 21:07:06 +00:00
var _Controller2 = _ _webpack _require _ _ ( 7 ) ;
2015-08-14 16:30:03 +00:00
var _Controller3 = _interopRequireDefault ( _Controller2 ) ;
2016-09-01 21:07:06 +00:00
var _utilsCommon = _ _webpack _require _ _ ( 5 ) ;
2015-08-14 16:30:03 +00:00
var _utilsCommon2 = _interopRequireDefault ( _utilsCommon ) ;
function numDecimals ( x ) {
2015-08-14 22:16:18 +00:00
var _x = x . toString ( ) ;
if ( _x . indexOf ( '.' ) > - 1 ) {
return _x . length - _x . indexOf ( '.' ) - 1 ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 22:16:18 +00:00
return 0 ;
2015-08-14 16:30:03 +00:00
}
/ * *
* @ class Represents a given property of an object that is a number .
*
* @ extends dat . controllers . Controller
*
* @ param { Object } object The object to be manipulated
* @ param { string } property The name of the property to be manipulated
* @ param { Object } [ params ] Optional parameters
* @ param { Number } [ params . min ] Minimum allowed value
* @ param { Number } [ params . max ] Maximum allowed value
* @ param { Number } [ params . step ] Increment by which to change value
*
* @ member dat . controllers
* /
var NumberController = ( function ( _Controller ) {
_inherits ( NumberController , _Controller ) ;
function NumberController ( object , property , params ) {
_classCallCheck ( this , NumberController ) ;
2015-08-14 20:29:30 +00:00
_Controller . call ( this , object , property ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 22:16:18 +00:00
var _params = params || { } ;
2015-08-14 16:30:03 +00:00
2015-08-14 22:16:18 +00:00
this . _ _min = _params . min ;
this . _ _max = _params . max ;
this . _ _step = _params . step ;
2015-08-14 16:30:03 +00:00
if ( _utilsCommon2 [ 'default' ] . isUndefined ( this . _ _step ) ) {
2015-08-14 22:16:18 +00:00
if ( this . initialValue === 0 ) {
2015-08-14 16:30:03 +00:00
this . _ _impliedStep = 1 ; // What are we, psychics?
} else {
// Hey Doug, check this out.
this . _ _impliedStep = Math . pow ( 10 , Math . floor ( Math . log ( Math . abs ( this . initialValue ) ) / Math . LN10 ) ) / 10 ;
}
} else {
this . _ _impliedStep = this . _ _step ;
}
this . _ _precision = numDecimals ( this . _ _impliedStep ) ;
}
2015-08-14 20:29:30 +00:00
NumberController . prototype . setValue = function setValue ( v ) {
2015-08-14 22:16:18 +00:00
var _v = v ;
if ( this . _ _min !== undefined && _v < this . _ _min ) {
_v = this . _ _min ;
} else if ( this . _ _max !== undefined && _v > this . _ _max ) {
_v = this . _ _max ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 22:16:18 +00:00
if ( this . _ _step !== undefined && _v % this . _ _step !== 0 ) {
_v = Math . round ( _v / this . _ _step ) * this . _ _step ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 22:16:18 +00:00
return _Controller . prototype . setValue . call ( this , _v ) ;
2015-08-14 20:29:30 +00:00
} ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
/ * *
* Specify a minimum value for < code > object [ property ] < / c o d e > .
*
* @ param { Number } minValue The minimum value for
* < code > object [ property ] < / c o d e >
* @ returns { dat . controllers . NumberController } this
* /
NumberController . prototype . min = function min ( v ) {
this . _ _min = v ;
return this ;
} ;
/ * *
* Specify a maximum value for < code > object [ property ] < / c o d e > .
*
* @ param { Number } maxValue The maximum value for
* < code > object [ property ] < / c o d e >
* @ returns { dat . controllers . NumberController } this
* /
NumberController . prototype . max = function max ( v ) {
this . _ _max = v ;
return this ;
} ;
/ * *
* Specify a step value that dat . controllers . NumberController
* increments by .
*
* @ param { Number } stepValue The step value for
* dat . controllers . NumberController
* @ default if minimum and maximum specified increment is 1 % of the
* difference otherwise stepValue is 1
* @ returns { dat . controllers . NumberController } this
* /
NumberController . prototype . step = function step ( v ) {
this . _ _step = v ;
this . _ _impliedStep = v ;
this . _ _precision = numDecimals ( v ) ;
return this ;
} ;
2015-08-14 16:30:03 +00:00
return NumberController ;
} ) ( _Controller3 [ 'default' ] ) ;
exports [ 'default' ] = NumberController ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 13 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== 'function' && superClass !== null ) { throw new TypeError ( 'Super expression must either be null or a function, not ' + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
2016-09-01 21:07:06 +00:00
var _NumberController2 = _ _webpack _require _ _ ( 12 ) ;
2015-08-14 16:30:03 +00:00
var _NumberController3 = _interopRequireDefault ( _NumberController2 ) ;
2016-09-01 21:07:06 +00:00
var _domDom = _ _webpack _require _ _ ( 9 ) ;
2015-08-14 16:30:03 +00:00
var _domDom2 = _interopRequireDefault ( _domDom ) ;
2016-09-01 21:07:06 +00:00
var _utilsCommon = _ _webpack _require _ _ ( 5 ) ;
2015-08-14 16:30:03 +00:00
var _utilsCommon2 = _interopRequireDefault ( _utilsCommon ) ;
function roundToDecimal ( value , decimals ) {
var tenTo = Math . pow ( 10 , decimals ) ;
return Math . round ( value * tenTo ) / tenTo ;
}
/ * *
* @ class Represents a given property of an object that is a number and
* provides an input element with which to manipulate it .
*
* @ extends dat . controllers . Controller
* @ extends dat . controllers . NumberController
*
* @ param { Object } object The object to be manipulated
* @ param { string } property The name of the property to be manipulated
* @ param { Object } [ params ] Optional parameters
* @ param { Number } [ params . min ] Minimum allowed value
* @ param { Number } [ params . max ] Maximum allowed value
* @ param { Number } [ params . step ] Increment by which to change value
*
* @ member dat . controllers
* /
var NumberControllerBox = ( function ( _NumberController ) {
_inherits ( NumberControllerBox , _NumberController ) ;
function NumberControllerBox ( object , property , params ) {
_classCallCheck ( this , NumberControllerBox ) ;
2015-08-14 20:29:30 +00:00
_NumberController . call ( this , object , property , params ) ;
2015-08-14 16:30:03 +00:00
this . _ _truncationSuspended = false ;
var _this = this ;
/ * *
* { Number } Previous mouse y position
* @ ignore
* /
2015-08-14 22:16:18 +00:00
var prevY = undefined ;
2015-08-14 16:30:03 +00:00
function onChange ( ) {
var attempted = parseFloat ( _this . _ _input . value ) ;
2015-08-14 22:16:18 +00:00
if ( ! _utilsCommon2 [ 'default' ] . isNaN ( attempted ) ) {
_this . setValue ( attempted ) ;
}
2015-08-14 16:30:03 +00:00
}
function onBlur ( ) {
onChange ( ) ;
if ( _this . _ _onFinishChange ) {
_this . _ _onFinishChange . call ( _this , _this . getValue ( ) ) ;
}
}
function onMouseDrag ( e ) {
2016-08-17 23:32:48 +00:00
document . activeElement . blur ( ) ;
2015-08-14 22:16:18 +00:00
var diff = prevY - e . clientY ;
2015-08-14 16:30:03 +00:00
_this . setValue ( _this . getValue ( ) + diff * _this . _ _impliedStep ) ;
2015-08-14 22:16:18 +00:00
prevY = e . clientY ;
2015-08-14 16:30:03 +00:00
}
function onMouseUp ( ) {
_domDom2 [ 'default' ] . unbind ( window , 'mousemove' , onMouseDrag ) ;
_domDom2 [ 'default' ] . unbind ( window , 'mouseup' , onMouseUp ) ;
}
2015-08-15 01:28:21 +00:00
function onMouseDown ( e ) {
_domDom2 [ 'default' ] . bind ( window , 'mousemove' , onMouseDrag ) ;
_domDom2 [ 'default' ] . bind ( window , 'mouseup' , onMouseUp ) ;
prevY = e . clientY ;
}
this . _ _input = document . createElement ( 'input' ) ;
this . _ _input . setAttribute ( 'type' , 'text' ) ;
// Makes it so manually specified values are not truncated.
_domDom2 [ 'default' ] . bind ( this . _ _input , 'change' , onChange ) ;
_domDom2 [ 'default' ] . bind ( this . _ _input , 'blur' , onBlur ) ;
_domDom2 [ 'default' ] . bind ( this . _ _input , 'mousedown' , onMouseDown ) ;
_domDom2 [ 'default' ] . bind ( this . _ _input , 'keydown' , function ( e ) {
// When pressing entire, you can be as precise as you want.
if ( e . keyCode === 13 ) {
_this . _ _truncationSuspended = true ;
this . blur ( ) ;
_this . _ _truncationSuspended = false ;
}
} ) ;
2015-08-14 16:30:03 +00:00
this . updateDisplay ( ) ;
this . domElement . appendChild ( this . _ _input ) ;
}
2015-08-14 20:29:30 +00:00
NumberControllerBox . prototype . updateDisplay = function updateDisplay ( ) {
2016-08-18 22:31:37 +00:00
if ( _domDom2 [ 'default' ] . isActive ( this . _ _input ) ) return this ; // prevent number from updating if user is trying to manually update
2015-08-14 20:29:30 +00:00
this . _ _input . value = this . _ _truncationSuspended ? this . getValue ( ) : roundToDecimal ( this . getValue ( ) , this . _ _precision ) ;
return _NumberController . prototype . updateDisplay . call ( this ) ;
} ;
2015-08-14 16:30:03 +00:00
return NumberControllerBox ;
} ) ( _NumberController3 [ 'default' ] ) ;
exports [ 'default' ] = NumberControllerBox ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 14 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== 'function' && superClass !== null ) { throw new TypeError ( 'Super expression must either be null or a function, not ' + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
2016-09-01 21:07:06 +00:00
var _NumberController2 = _ _webpack _require _ _ ( 12 ) ;
2015-08-14 16:30:03 +00:00
var _NumberController3 = _interopRequireDefault ( _NumberController2 ) ;
2016-09-01 21:07:06 +00:00
var _domDom = _ _webpack _require _ _ ( 9 ) ;
2015-08-14 16:30:03 +00:00
var _domDom2 = _interopRequireDefault ( _domDom ) ;
function map ( v , i1 , i2 , o1 , o2 ) {
return o1 + ( o2 - o1 ) * ( ( v - i1 ) / ( i2 - i1 ) ) ;
}
/ * *
* @ class Represents a given property of an object that is a number , contains
* a minimum and maximum , and provides a slider element with which to
* manipulate it . It should be noted that the slider element is made up of
* < code > & lt ; div & gt ; < / c o d e > t a g s , < s t r o n g > n o t < / s t r o n g > t h e h t m l 5
* < code > & lt ; slider & gt ; < / c o d e > e l e m e n t .
*
* @ extends dat . controllers . Controller
* @ extends dat . controllers . NumberController
*
* @ param { Object } object The object to be manipulated
* @ param { string } property The name of the property to be manipulated
* @ param { Number } minValue Minimum allowed value
* @ param { Number } maxValue Maximum allowed value
* @ param { Number } stepValue Increment by which to change value
*
* @ member dat . controllers
* /
var NumberControllerSlider = ( function ( _NumberController ) {
_inherits ( NumberControllerSlider , _NumberController ) ;
function NumberControllerSlider ( object , property , min , max , step ) {
_classCallCheck ( this , NumberControllerSlider ) ;
2015-08-14 20:29:30 +00:00
_NumberController . call ( this , object , property , { min : min , max : max , step : step } ) ;
2015-08-14 16:30:03 +00:00
var _this = this ;
this . _ _background = document . createElement ( 'div' ) ;
this . _ _foreground = document . createElement ( 'div' ) ;
_domDom2 [ 'default' ] . bind ( this . _ _background , 'mousedown' , onMouseDown ) ;
_domDom2 [ 'default' ] . addClass ( this . _ _background , 'slider' ) ;
_domDom2 [ 'default' ] . addClass ( this . _ _foreground , 'slider-fg' ) ;
function onMouseDown ( e ) {
2016-08-17 23:32:48 +00:00
document . activeElement . blur ( ) ;
2015-08-14 16:30:03 +00:00
_domDom2 [ 'default' ] . bind ( window , 'mousemove' , onMouseDrag ) ;
_domDom2 [ 'default' ] . bind ( window , 'mouseup' , onMouseUp ) ;
onMouseDrag ( e ) ;
}
function onMouseDrag ( e ) {
e . preventDefault ( ) ;
var offset = _domDom2 [ 'default' ] . getOffset ( _this . _ _background ) ;
var width = _domDom2 [ 'default' ] . getWidth ( _this . _ _background ) ;
_this . setValue ( map ( e . clientX , offset . left , offset . left + width , _this . _ _min , _this . _ _max ) ) ;
return false ;
}
function onMouseUp ( ) {
_domDom2 [ 'default' ] . unbind ( window , 'mousemove' , onMouseDrag ) ;
_domDom2 [ 'default' ] . unbind ( window , 'mouseup' , onMouseUp ) ;
if ( _this . _ _onFinishChange ) {
_this . _ _onFinishChange . call ( _this , _this . getValue ( ) ) ;
}
}
this . updateDisplay ( ) ;
this . _ _background . appendChild ( this . _ _foreground ) ;
this . domElement . appendChild ( this . _ _background ) ;
}
2015-08-14 20:29:30 +00:00
NumberControllerSlider . prototype . updateDisplay = function updateDisplay ( ) {
var pct = ( this . getValue ( ) - this . _ _min ) / ( this . _ _max - this . _ _min ) ;
this . _ _foreground . style . width = pct * 100 + '%' ;
return _NumberController . prototype . updateDisplay . call ( this ) ;
} ;
2015-08-14 16:30:03 +00:00
return NumberControllerSlider ;
} ) ( _NumberController3 [ 'default' ] ) ;
exports [ 'default' ] = NumberControllerSlider ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 15 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== 'function' && superClass !== null ) { throw new TypeError ( 'Super expression must either be null or a function, not ' + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
2016-09-01 21:07:06 +00:00
var _Controller2 = _ _webpack _require _ _ ( 7 ) ;
2015-08-14 16:30:03 +00:00
var _Controller3 = _interopRequireDefault ( _Controller2 ) ;
2016-09-01 21:07:06 +00:00
var _domDom = _ _webpack _require _ _ ( 9 ) ;
2015-08-14 16:30:03 +00:00
var _domDom2 = _interopRequireDefault ( _domDom ) ;
/ * *
* @ class Provides a GUI interface to fire a specified method , a property of an object .
*
* @ extends dat . controllers . Controller
*
* @ param { Object } object The object to be manipulated
* @ param { string } property The name of the property to be manipulated
*
* @ member dat . controllers
* /
var FunctionController = ( function ( _Controller ) {
_inherits ( FunctionController , _Controller ) ;
function FunctionController ( object , property , text ) {
_classCallCheck ( this , FunctionController ) ;
2015-08-14 20:29:30 +00:00
_Controller . call ( this , object , property ) ;
2015-08-14 16:30:03 +00:00
var _this = this ;
this . _ _button = document . createElement ( 'div' ) ;
this . _ _button . innerHTML = text === undefined ? 'Fire' : text ;
2015-08-14 20:29:30 +00:00
2015-08-14 16:30:03 +00:00
_domDom2 [ 'default' ] . bind ( this . _ _button , 'click' , function ( e ) {
e . preventDefault ( ) ;
_this . fire ( ) ;
return false ;
} ) ;
_domDom2 [ 'default' ] . addClass ( this . _ _button , 'button' ) ;
this . domElement . appendChild ( this . _ _button ) ;
}
2015-08-14 20:29:30 +00:00
FunctionController . prototype . fire = function fire ( ) {
if ( this . _ _onChange ) {
this . _ _onChange . call ( this ) ;
}
this . getValue ( ) . call ( this . object ) ;
if ( this . _ _onFinishChange ) {
this . _ _onFinishChange . call ( this , this . getValue ( ) ) ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 20:29:30 +00:00
} ;
2015-08-14 16:30:03 +00:00
return FunctionController ;
} ) ( _Controller3 [ 'default' ] ) ;
exports [ 'default' ] = FunctionController ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 16 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== 'function' && superClass !== null ) { throw new TypeError ( 'Super expression must either be null or a function, not ' + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
2016-09-01 21:07:06 +00:00
var _Controller2 = _ _webpack _require _ _ ( 7 ) ;
2015-08-14 16:30:03 +00:00
var _Controller3 = _interopRequireDefault ( _Controller2 ) ;
2016-09-01 21:07:06 +00:00
var _domDom = _ _webpack _require _ _ ( 9 ) ;
2015-08-14 16:30:03 +00:00
var _domDom2 = _interopRequireDefault ( _domDom ) ;
2016-09-01 21:07:06 +00:00
var _colorColor = _ _webpack _require _ _ ( 2 ) ;
2015-08-14 16:30:03 +00:00
var _colorColor2 = _interopRequireDefault ( _colorColor ) ;
2016-09-01 21:07:06 +00:00
var _colorInterpret = _ _webpack _require _ _ ( 3 ) ;
2015-08-14 16:30:03 +00:00
var _colorInterpret2 = _interopRequireDefault ( _colorInterpret ) ;
2016-09-01 21:07:06 +00:00
var _utilsCommon = _ _webpack _require _ _ ( 5 ) ;
2015-08-14 16:30:03 +00:00
var _utilsCommon2 = _interopRequireDefault ( _utilsCommon ) ;
var ColorController = ( function ( _Controller ) {
_inherits ( ColorController , _Controller ) ;
function ColorController ( object , property ) {
_classCallCheck ( this , ColorController ) ;
2015-08-14 20:29:30 +00:00
_Controller . call ( this , object , property ) ;
2015-08-14 16:30:03 +00:00
this . _ _color = new _colorColor2 [ 'default' ] ( this . getValue ( ) ) ;
this . _ _temp = new _colorColor2 [ 'default' ] ( 0 ) ;
var _this = this ;
this . domElement = document . createElement ( 'div' ) ;
_domDom2 [ 'default' ] . makeSelectable ( this . domElement , false ) ;
this . _ _selector = document . createElement ( 'div' ) ;
this . _ _selector . className = 'selector' ;
this . _ _saturation _field = document . createElement ( 'div' ) ;
this . _ _saturation _field . className = 'saturation-field' ;
this . _ _field _knob = document . createElement ( 'div' ) ;
this . _ _field _knob . className = 'field-knob' ;
this . _ _field _knob _border = '2px solid ' ;
this . _ _hue _knob = document . createElement ( 'div' ) ;
this . _ _hue _knob . className = 'hue-knob' ;
this . _ _hue _field = document . createElement ( 'div' ) ;
this . _ _hue _field . className = 'hue-field' ;
this . _ _input = document . createElement ( 'input' ) ;
this . _ _input . type = 'text' ;
this . _ _input _textShadow = '0 1px 1px ' ;
_domDom2 [ 'default' ] . bind ( this . _ _input , 'keydown' , function ( e ) {
if ( e . keyCode === 13 ) {
// on enter
onBlur . call ( this ) ;
}
} ) ;
_domDom2 [ 'default' ] . bind ( this . _ _input , 'blur' , onBlur ) ;
2015-08-14 22:16:18 +00:00
_domDom2 [ 'default' ] . bind ( this . _ _selector , 'mousedown' , function ( ) /* e */ {
_domDom2 [ 'default' ] . addClass ( this , 'drag' ) . bind ( window , 'mouseup' , function ( ) /* e */ {
2015-08-14 16:30:03 +00:00
_domDom2 [ 'default' ] . removeClass ( _this . _ _selector , 'drag' ) ;
} ) ;
} ) ;
2015-08-14 22:16:18 +00:00
var valueField = document . createElement ( 'div' ) ;
2015-08-14 16:30:03 +00:00
_utilsCommon2 [ 'default' ] . extend ( this . _ _selector . style , {
width : '122px' ,
height : '102px' ,
padding : '3px' ,
backgroundColor : '#222' ,
boxShadow : '0px 1px 3px rgba(0,0,0,0.3)'
} ) ;
_utilsCommon2 [ 'default' ] . extend ( this . _ _field _knob . style , {
position : 'absolute' ,
width : '12px' ,
height : '12px' ,
2015-08-14 22:16:18 +00:00
border : this . _ _field _knob _border + ( this . _ _color . v < 0.5 ? '#fff' : '#000' ) ,
2015-08-14 16:30:03 +00:00
boxShadow : '0px 1px 3px rgba(0,0,0,0.5)' ,
borderRadius : '12px' ,
zIndex : 1
} ) ;
_utilsCommon2 [ 'default' ] . extend ( this . _ _hue _knob . style , {
position : 'absolute' ,
width : '15px' ,
height : '2px' ,
borderRight : '4px solid #fff' ,
zIndex : 1
} ) ;
_utilsCommon2 [ 'default' ] . extend ( this . _ _saturation _field . style , {
width : '100px' ,
height : '100px' ,
border : '1px solid #555' ,
marginRight : '3px' ,
display : 'inline-block' ,
cursor : 'pointer'
} ) ;
2015-08-14 22:16:18 +00:00
_utilsCommon2 [ 'default' ] . extend ( valueField . style , {
2015-08-14 16:30:03 +00:00
width : '100%' ,
height : '100%' ,
background : 'none'
} ) ;
2015-08-14 22:16:18 +00:00
linearGradient ( valueField , 'top' , 'rgba(0,0,0,0)' , '#000' ) ;
2015-08-14 16:30:03 +00:00
_utilsCommon2 [ 'default' ] . extend ( this . _ _hue _field . style , {
width : '15px' ,
height : '100px' ,
border : '1px solid #555' ,
2016-08-18 22:31:37 +00:00
cursor : 'ns-resize' ,
position : 'absolute' ,
top : '3px' ,
right : '3px'
2015-08-14 16:30:03 +00:00
} ) ;
hueGradient ( this . _ _hue _field ) ;
_utilsCommon2 [ 'default' ] . extend ( this . _ _input . style , {
outline : 'none' ,
// width: '120px',
textAlign : 'center' ,
// padding: '4px',
// marginBottom: '6px',
color : '#fff' ,
border : 0 ,
fontWeight : 'bold' ,
textShadow : this . _ _input _textShadow + 'rgba(0,0,0,0.7)'
} ) ;
_domDom2 [ 'default' ] . bind ( this . _ _saturation _field , 'mousedown' , fieldDown ) ;
_domDom2 [ 'default' ] . bind ( this . _ _field _knob , 'mousedown' , fieldDown ) ;
_domDom2 [ 'default' ] . bind ( this . _ _hue _field , 'mousedown' , function ( e ) {
setH ( e ) ;
_domDom2 [ 'default' ] . bind ( window , 'mousemove' , setH ) ;
2016-08-18 22:31:37 +00:00
_domDom2 [ 'default' ] . bind ( window , 'mouseup' , fieldUpH ) ;
2015-08-14 16:30:03 +00:00
} ) ;
function fieldDown ( e ) {
setSV ( e ) ;
// document.body.style.cursor = 'none';
_domDom2 [ 'default' ] . bind ( window , 'mousemove' , setSV ) ;
2016-08-18 22:31:37 +00:00
_domDom2 [ 'default' ] . bind ( window , 'mouseup' , fieldUpSV ) ;
2015-08-14 16:30:03 +00:00
}
2016-08-18 22:31:37 +00:00
function fieldUpSV ( ) {
2015-08-14 16:30:03 +00:00
_domDom2 [ 'default' ] . unbind ( window , 'mousemove' , setSV ) ;
2016-08-18 22:31:37 +00:00
_domDom2 [ 'default' ] . unbind ( window , 'mouseup' , fieldUpSV ) ;
2015-08-14 16:30:03 +00:00
// document.body.style.cursor = 'default';
2016-08-18 22:31:37 +00:00
onFinish ( ) ;
2015-08-14 16:30:03 +00:00
}
function onBlur ( ) {
2015-08-14 20:29:30 +00:00
var i = _colorInterpret2 [ 'default' ] ( this . value ) ;
2015-08-14 16:30:03 +00:00
if ( i !== false ) {
_this . _ _color . _ _state = i ;
_this . setValue ( _this . _ _color . toOriginal ( ) ) ;
} else {
this . value = _this . _ _color . toString ( ) ;
}
}
2016-08-18 22:31:37 +00:00
function fieldUpH ( ) {
2015-08-14 16:30:03 +00:00
_domDom2 [ 'default' ] . unbind ( window , 'mousemove' , setH ) ;
2016-08-18 22:31:37 +00:00
_domDom2 [ 'default' ] . unbind ( window , 'mouseup' , fieldUpH ) ;
onFinish ( ) ;
}
function onFinish ( ) {
if ( _this . _ _onFinishChange ) {
_this . _ _onFinishChange . call ( _this , _this . _ _color . toString ( ) ) ;
}
2015-08-14 16:30:03 +00:00
}
2015-08-14 22:16:18 +00:00
this . _ _saturation _field . appendChild ( valueField ) ;
2015-08-14 16:30:03 +00:00
this . _ _selector . appendChild ( this . _ _field _knob ) ;
this . _ _selector . appendChild ( this . _ _saturation _field ) ;
this . _ _selector . appendChild ( this . _ _hue _field ) ;
this . _ _hue _field . appendChild ( this . _ _hue _knob ) ;
this . domElement . appendChild ( this . _ _input ) ;
this . domElement . appendChild ( this . _ _selector ) ;
this . updateDisplay ( ) ;
function setSV ( e ) {
e . preventDefault ( ) ;
var w = _domDom2 [ 'default' ] . getWidth ( _this . _ _saturation _field ) ;
var o = _domDom2 [ 'default' ] . getOffset ( _this . _ _saturation _field ) ;
var s = ( e . clientX - o . left + document . body . scrollLeft ) / w ;
var v = 1 - ( e . clientY - o . top + document . body . scrollTop ) / w ;
2015-08-14 22:16:18 +00:00
if ( v > 1 ) {
v = 1 ;
} else if ( v < 0 ) {
v = 0 ;
}
2015-08-14 16:30:03 +00:00
2015-08-14 22:16:18 +00:00
if ( s > 1 ) {
s = 1 ;
} else if ( s < 0 ) {
s = 0 ;
}
2015-08-14 16:30:03 +00:00
_this . _ _color . v = v ;
_this . _ _color . s = s ;
_this . setValue ( _this . _ _color . toOriginal ( ) ) ;
return false ;
}
function setH ( e ) {
e . preventDefault ( ) ;
var s = _domDom2 [ 'default' ] . getHeight ( _this . _ _hue _field ) ;
var o = _domDom2 [ 'default' ] . getOffset ( _this . _ _hue _field ) ;
var h = 1 - ( e . clientY - o . top + document . body . scrollTop ) / s ;
2015-08-14 22:16:18 +00:00
if ( h > 1 ) {
h = 1 ;
} else if ( h < 0 ) {
h = 0 ;
}
2015-08-14 16:30:03 +00:00
_this . _ _color . h = h * 360 ;
_this . setValue ( _this . _ _color . toOriginal ( ) ) ;
return false ;
}
}
2015-08-14 20:29:30 +00:00
ColorController . prototype . updateDisplay = function updateDisplay ( ) {
var i = _colorInterpret2 [ 'default' ] ( this . getValue ( ) ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
if ( i !== false ) {
var mismatch = false ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
// Check for mismatch on the interpreted value.
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
_utilsCommon2 [ 'default' ] . each ( _colorColor2 [ 'default' ] . COMPONENTS , function ( component ) {
if ( ! _utilsCommon2 [ 'default' ] . isUndefined ( i [ component ] ) && ! _utilsCommon2 [ 'default' ] . isUndefined ( this . _ _color . _ _state [ component ] ) && i [ component ] !== this . _ _color . _ _state [ component ] ) {
mismatch = true ;
return { } ; // break
2015-08-14 16:30:03 +00:00
}
2015-08-14 20:29:30 +00:00
} , this ) ;
// If nothing diverges, we keep our previous values
// for statefulness, otherwise we recalculate fresh
if ( mismatch ) {
_utilsCommon2 [ 'default' ] . extend ( this . _ _color . _ _state , i ) ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 20:29:30 +00:00
}
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
_utilsCommon2 [ 'default' ] . extend ( this . _ _temp . _ _state , this . _ _color . _ _state ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
this . _ _temp . a = 1 ;
2015-08-14 16:30:03 +00:00
2015-08-14 22:16:18 +00:00
var flip = this . _ _color . v < 0.5 || this . _ _color . s > 0.5 ? 255 : 0 ;
2015-08-14 20:29:30 +00:00
var _flip = 255 - flip ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
_utilsCommon2 [ 'default' ] . extend ( this . _ _field _knob . style , {
marginLeft : 100 * this . _ _color . s - 7 + 'px' ,
marginTop : 100 * ( 1 - this . _ _color . v ) - 7 + 'px' ,
backgroundColor : this . _ _temp . toString ( ) ,
border : this . _ _field _knob _border + 'rgb(' + flip + ',' + flip + ',' + flip + ')'
} ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
this . _ _hue _knob . style . marginTop = ( 1 - this . _ _color . h / 360 ) * 100 + 'px' ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
this . _ _temp . s = 1 ;
this . _ _temp . v = 1 ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
linearGradient ( this . _ _saturation _field , 'left' , '#fff' , this . _ _temp . toString ( ) ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
_utilsCommon2 [ 'default' ] . extend ( this . _ _input . style , {
backgroundColor : this . _ _input . value = this . _ _color . toString ( ) ,
color : 'rgb(' + flip + ',' + flip + ',' + flip + ')' ,
textShadow : this . _ _input _textShadow + 'rgba(' + _flip + ',' + _flip + ',' + _flip + ',.7)'
} ) ;
} ;
2015-08-14 16:30:03 +00:00
return ColorController ;
} ) ( _Controller3 [ 'default' ] ) ;
var vendors = [ '-moz-' , '-o-' , '-webkit-' , '-ms-' , '' ] ;
function linearGradient ( elem , x , a , b ) {
elem . style . background = '' ;
_utilsCommon2 [ 'default' ] . each ( vendors , function ( vendor ) {
elem . style . cssText += 'background: ' + vendor + 'linear-gradient(' + x + ', ' + a + ' 0%, ' + b + ' 100%); ' ;
} ) ;
}
function hueGradient ( elem ) {
elem . style . background = '' ;
elem . style . cssText += 'background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);' ;
elem . style . cssText += 'background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);' ;
elem . style . cssText += 'background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);' ;
elem . style . cssText += 'background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);' ;
elem . style . cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);' ;
}
exports [ 'default' ] = ColorController ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 17 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
2016-09-01 21:07:06 +00:00
var _utilsCss = _ _webpack _require _ _ ( 18 ) ;
2015-08-14 16:30:03 +00:00
var _utilsCss2 = _interopRequireDefault ( _utilsCss ) ;
2016-09-01 21:07:06 +00:00
var _saveDialogueHtml = _ _webpack _require _ _ ( 19 ) ;
2015-08-14 16:30:03 +00:00
2016-09-01 21:07:06 +00:00
var _saveDialogueHtml2 = _interopRequireDefault ( _saveDialogueHtml ) ;
2015-08-14 16:30:03 +00:00
2016-09-01 21:07:06 +00:00
var _controllersControllerFactory = _ _webpack _require _ _ ( 20 ) ;
2015-08-14 16:30:03 +00:00
var _controllersControllerFactory2 = _interopRequireDefault ( _controllersControllerFactory ) ;
2016-09-01 21:07:06 +00:00
var _controllersController = _ _webpack _require _ _ ( 7 ) ;
2015-08-14 16:30:03 +00:00
var _controllersController2 = _interopRequireDefault ( _controllersController ) ;
2016-09-01 21:07:06 +00:00
var _controllersBooleanController = _ _webpack _require _ _ ( 8 ) ;
2015-08-14 16:30:03 +00:00
var _controllersBooleanController2 = _interopRequireDefault ( _controllersBooleanController ) ;
2016-09-01 21:07:06 +00:00
var _controllersFunctionController = _ _webpack _require _ _ ( 15 ) ;
2015-08-14 16:30:03 +00:00
var _controllersFunctionController2 = _interopRequireDefault ( _controllersFunctionController ) ;
2016-09-01 21:07:06 +00:00
var _controllersNumberControllerBox = _ _webpack _require _ _ ( 13 ) ;
2015-08-14 16:30:03 +00:00
var _controllersNumberControllerBox2 = _interopRequireDefault ( _controllersNumberControllerBox ) ;
2016-09-01 21:07:06 +00:00
var _controllersNumberControllerSlider = _ _webpack _require _ _ ( 14 ) ;
2015-08-14 16:30:03 +00:00
var _controllersNumberControllerSlider2 = _interopRequireDefault ( _controllersNumberControllerSlider ) ;
2016-09-01 21:07:06 +00:00
var _controllersColorController = _ _webpack _require _ _ ( 16 ) ;
2015-08-14 16:30:03 +00:00
var _controllersColorController2 = _interopRequireDefault ( _controllersColorController ) ;
2016-09-01 21:07:06 +00:00
var _utilsRequestAnimationFrame = _ _webpack _require _ _ ( 21 ) ;
2015-08-14 16:30:03 +00:00
var _utilsRequestAnimationFrame2 = _interopRequireDefault ( _utilsRequestAnimationFrame ) ;
2016-09-01 21:07:06 +00:00
var _domCenteredDiv = _ _webpack _require _ _ ( 22 ) ;
2015-08-14 16:30:03 +00:00
var _domCenteredDiv2 = _interopRequireDefault ( _domCenteredDiv ) ;
2016-09-01 21:07:06 +00:00
var _domDom = _ _webpack _require _ _ ( 9 ) ;
2015-08-14 16:30:03 +00:00
var _domDom2 = _interopRequireDefault ( _domDom ) ;
2016-09-01 21:07:06 +00:00
var _utilsCommon = _ _webpack _require _ _ ( 5 ) ;
2015-08-14 16:30:03 +00:00
var _utilsCommon2 = _interopRequireDefault ( _utilsCommon ) ;
2016-09-01 21:07:06 +00:00
var _styleScss = _ _webpack _require _ _ ( 23 ) ;
2016-08-30 22:48:51 +00:00
2016-09-01 19:52:59 +00:00
var _styleScss2 = _interopRequireDefault ( _styleScss ) ;
2016-08-30 22:48:51 +00:00
// CSS to embed in build
2016-09-01 19:52:59 +00:00
_utilsCss2 [ 'default' ] . inject ( _styleScss2 [ 'default' ] ) ;
2015-08-14 16:30:03 +00:00
/** Outer-most className for GUI's */
var CSS _NAMESPACE = 'dg' ;
var HIDE _KEY _CODE = 72 ;
/** The only value shared between the JS and SCSS. Use caution. */
var CLOSE _BUTTON _HEIGHT = 20 ;
var DEFAULT _DEFAULT _PRESET _NAME = 'Default' ;
var SUPPORTS _LOCAL _STORAGE = ( function ( ) {
try {
2015-08-14 22:16:18 +00:00
return 'localStorage' in window && window . localStorage !== null ;
2015-08-14 16:30:03 +00:00
} catch ( e ) {
return false ;
}
} ) ( ) ;
2015-08-14 22:16:18 +00:00
var SAVE _DIALOGUE = undefined ;
2015-08-14 16:30:03 +00:00
/** Have we yet to create an autoPlace GUI? */
2015-08-14 22:16:18 +00:00
var autoPlaceVirgin = true ;
2015-08-14 16:30:03 +00:00
/** Fixed position div that auto place GUI's go inside */
2015-08-14 22:16:18 +00:00
var autoPlaceContainer = undefined ;
2015-08-14 16:30:03 +00:00
/** Are we hiding the GUI's ? */
var hide = false ;
/** GUI's which should be hidden */
2015-08-14 22:16:18 +00:00
var hideableGuis = [ ] ;
2015-08-14 16:30:03 +00:00
/ * *
* A lightweight controller library for JavaScript . It allows you to easily
* manipulate variables and fire functions on the fly .
* @ class
*
* @ member dat . gui
*
* @ param { Object } [ params ]
* @ param { String } [ params . name ] The name of this GUI .
* @ param { Object } [ params . load ] JSON object representing the saved state of
* this GUI .
* @ param { Boolean } [ params . auto = true ]
* @ param { dat . gui . GUI } [ params . parent ] The GUI I ' m nested in .
* @ param { Boolean } [ params . closed ] If true , starts closed
* /
2015-08-14 22:16:18 +00:00
var GUI = function GUI ( pars ) {
2015-08-14 16:30:03 +00:00
var _this = this ;
2015-08-14 22:16:18 +00:00
var params = pars || { } ;
2015-08-14 16:30:03 +00:00
/ * *
* Outermost DOM Element
* @ type DOMElement
* /
this . domElement = document . createElement ( 'div' ) ;
this . _ _ul = document . createElement ( 'ul' ) ;
this . domElement . appendChild ( this . _ _ul ) ;
_domDom2 [ 'default' ] . addClass ( this . domElement , CSS _NAMESPACE ) ;
/ * *
* Nested GUI ' s by name
* @ ignore
* /
this . _ _folders = { } ;
this . _ _controllers = [ ] ;
/ * *
* List of objects I ' m remembering for save , only used in top level GUI
* @ ignore
* /
this . _ _rememberedObjects = [ ] ;
/ * *
* Maps the index of remembered objects to a map of controllers , only used
* in top level GUI .
*
* @ private
* @ ignore
*
* @ example
* [
* {
* propertyName : Controller ,
* anotherPropertyName : Controller
* } ,
* {
* propertyName : Controller
* }
* ]
* /
this . _ _rememberedObjectIndecesToControllers = [ ] ;
this . _ _listening = [ ] ;
// Default parameters
params = _utilsCommon2 [ 'default' ] . defaults ( params , {
autoPlace : true ,
width : GUI . DEFAULT _WIDTH
} ) ;
params = _utilsCommon2 [ 'default' ] . defaults ( params , {
resizable : params . autoPlace ,
hideable : params . autoPlace
} ) ;
if ( ! _utilsCommon2 [ 'default' ] . isUndefined ( params . load ) ) {
// Explicit preset
2015-08-14 20:29:30 +00:00
if ( params . preset ) {
params . load . preset = params . preset ;
}
2015-08-14 16:30:03 +00:00
} else {
params . load = { preset : DEFAULT _DEFAULT _PRESET _NAME } ;
}
if ( _utilsCommon2 [ 'default' ] . isUndefined ( params . parent ) && params . hideable ) {
2015-08-14 22:16:18 +00:00
hideableGuis . push ( this ) ;
2015-08-14 16:30:03 +00:00
}
// Only root level GUI's are resizable.
params . resizable = _utilsCommon2 [ 'default' ] . isUndefined ( params . parent ) && params . resizable ;
if ( params . autoPlace && _utilsCommon2 [ 'default' ] . isUndefined ( params . scrollable ) ) {
params . scrollable = true ;
}
// params.scrollable = common.isUndefined(params.parent) && params.scrollable === true;
// Not part of params because I don't want people passing this in via
// constructor. Should be a 'remembered' value.
2015-08-14 22:16:18 +00:00
var useLocalStorage = SUPPORTS _LOCAL _STORAGE && localStorage . getItem ( getLocalStorageHash ( this , 'isLocal' ) ) === 'true' ;
2015-08-14 16:30:03 +00:00
2015-08-14 22:16:18 +00:00
var saveToLocalStorage = undefined ;
2015-08-14 16:30:03 +00:00
Object . defineProperties ( this ,
/** @lends dat.gui.GUI.prototype */
{
/ * *
* The parent < code > GUI < / c o d e >
* @ type dat . gui . GUI
* /
parent : {
get : function get ( ) {
return params . parent ;
}
} ,
scrollable : {
get : function get ( ) {
return params . scrollable ;
}
} ,
/ * *
* Handles < code > GUI < / c o d e > ' s e l e m e n t p l a c e m e n t f o r y o u
* @ type Boolean
* /
autoPlace : {
get : function get ( ) {
return params . autoPlace ;
}
} ,
/ * *
* The identifier for a set of saved values
* @ type String
* /
preset : {
get : function get ( ) {
if ( _this . parent ) {
return _this . getRoot ( ) . preset ;
}
2015-08-14 22:16:18 +00:00
return params . load . preset ;
2015-08-14 16:30:03 +00:00
} ,
set : function set ( v ) {
if ( _this . parent ) {
_this . getRoot ( ) . preset = v ;
} else {
params . load . preset = v ;
}
setPresetSelectIndex ( this ) ;
_this . revert ( ) ;
}
} ,
/ * *
* The width of < code > GUI < / c o d e > e l e m e n t
* @ type Number
* /
width : {
get : function get ( ) {
return params . width ;
} ,
set : function set ( v ) {
params . width = v ;
setWidth ( _this , v ) ;
}
} ,
/ * *
* The name of < code > GUI < / c o d e > . U s e d f o r f o l d e r s . i . e
* a folder ' s name
* @ type String
* /
name : {
get : function get ( ) {
return params . name ;
} ,
set : function set ( v ) {
// TODO Check for collisions among sibling folders
params . name = v ;
2015-08-14 22:16:18 +00:00
if ( titleRowName ) {
titleRowName . innerHTML = params . name ;
2015-08-14 16:30:03 +00:00
}
}
} ,
/ * *
* Whether the < code > GUI < / c o d e > i s c o l l a p s e d o r n o t
* @ type Boolean
* /
closed : {
get : function get ( ) {
return params . closed ;
} ,
set : function set ( v ) {
params . closed = v ;
if ( params . closed ) {
_domDom2 [ 'default' ] . addClass ( _this . _ _ul , GUI . CLASS _CLOSED ) ;
} else {
_domDom2 [ 'default' ] . removeClass ( _this . _ _ul , GUI . CLASS _CLOSED ) ;
}
// For browsers that aren't going to respect the CSS transition,
// Lets just check our height against the window height right off
// the bat.
this . onResize ( ) ;
if ( _this . _ _closeButton ) {
_this . _ _closeButton . innerHTML = v ? GUI . TEXT _OPEN : GUI . TEXT _CLOSED ;
}
}
} ,
/ * *
* Contains all presets
* @ type Object
* /
load : {
get : function get ( ) {
return params . load ;
}
} ,
/ * *
* Determines whether or not to use < a href = "https://developer.mozilla.org/en/DOM/Storage#localStorage" > localStorage < / a > a s t h e m e a n s f o r
* < code > remember < / c o d e > i n g
* @ type Boolean
* /
useLocalStorage : {
get : function get ( ) {
2015-08-14 22:16:18 +00:00
return useLocalStorage ;
2015-08-14 16:30:03 +00:00
} ,
set : function set ( bool ) {
if ( SUPPORTS _LOCAL _STORAGE ) {
2015-08-14 22:16:18 +00:00
useLocalStorage = bool ;
2015-08-14 16:30:03 +00:00
if ( bool ) {
_domDom2 [ 'default' ] . bind ( window , 'unload' , saveToLocalStorage ) ;
} else {
_domDom2 [ 'default' ] . unbind ( window , 'unload' , saveToLocalStorage ) ;
}
localStorage . setItem ( getLocalStorageHash ( _this , 'isLocal' ) , bool ) ;
}
}
}
} ) ;
// Are we a root level GUI?
if ( _utilsCommon2 [ 'default' ] . isUndefined ( params . parent ) ) {
params . closed = false ;
_domDom2 [ 'default' ] . addClass ( this . domElement , GUI . CLASS _MAIN ) ;
_domDom2 [ 'default' ] . makeSelectable ( this . domElement , false ) ;
// Are we supposed to be loading locally?
if ( SUPPORTS _LOCAL _STORAGE ) {
2015-08-14 22:16:18 +00:00
if ( useLocalStorage ) {
2015-08-14 16:30:03 +00:00
_this . useLocalStorage = true ;
2015-08-14 22:16:18 +00:00
var savedGui = localStorage . getItem ( getLocalStorageHash ( this , 'gui' ) ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 22:16:18 +00:00
if ( savedGui ) {
params . load = JSON . parse ( savedGui ) ;
2015-08-14 16:30:03 +00:00
}
}
}
this . _ _closeButton = document . createElement ( 'div' ) ;
this . _ _closeButton . innerHTML = GUI . TEXT _CLOSED ;
_domDom2 [ 'default' ] . addClass ( this . _ _closeButton , GUI . CLASS _CLOSE _BUTTON ) ;
this . domElement . appendChild ( this . _ _closeButton ) ;
_domDom2 [ 'default' ] . bind ( this . _ _closeButton , 'click' , function ( ) {
_this . closed = ! _this . closed ;
} ) ;
// Oh, you're a nested GUI!
} else {
if ( params . closed === undefined ) {
params . closed = true ;
}
2015-08-14 22:16:18 +00:00
var _titleRowName = document . createTextNode ( params . name ) ;
_domDom2 [ 'default' ] . addClass ( _titleRowName , 'controller-name' ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 22:16:18 +00:00
var titleRow = addRow ( _this , _titleRowName ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 22:16:18 +00:00
var onClickTitle = function onClickTitle ( e ) {
2015-08-14 16:30:03 +00:00
e . preventDefault ( ) ;
_this . closed = ! _this . closed ;
return false ;
} ;
_domDom2 [ 'default' ] . addClass ( this . _ _ul , GUI . CLASS _CLOSED ) ;
2015-08-14 22:16:18 +00:00
_domDom2 [ 'default' ] . addClass ( titleRow , 'title' ) ;
_domDom2 [ 'default' ] . bind ( titleRow , 'click' , onClickTitle ) ;
2015-08-14 16:30:03 +00:00
if ( ! params . closed ) {
this . closed = false ;
}
}
if ( params . autoPlace ) {
if ( _utilsCommon2 [ 'default' ] . isUndefined ( params . parent ) ) {
2015-08-14 22:16:18 +00:00
if ( autoPlaceVirgin ) {
autoPlaceContainer = document . createElement ( 'div' ) ;
_domDom2 [ 'default' ] . addClass ( autoPlaceContainer , CSS _NAMESPACE ) ;
_domDom2 [ 'default' ] . addClass ( autoPlaceContainer , GUI . CLASS _AUTO _PLACE _CONTAINER ) ;
document . body . appendChild ( autoPlaceContainer ) ;
autoPlaceVirgin = false ;
2015-08-14 16:30:03 +00:00
}
// Put it in the dom for you.
2015-08-14 22:16:18 +00:00
autoPlaceContainer . appendChild ( this . domElement ) ;
2015-08-14 16:30:03 +00:00
// Apply the auto styles
_domDom2 [ 'default' ] . addClass ( this . domElement , GUI . CLASS _AUTO _PLACE ) ;
}
// Make it not elastic.
2015-08-14 20:29:30 +00:00
if ( ! this . parent ) {
setWidth ( _this , params . width ) ;
}
2015-08-14 16:30:03 +00:00
}
2016-08-19 00:24:08 +00:00
this . _ _resizeHandler = function ( ) {
2015-08-14 16:30:03 +00:00
_this . onResize ( ) ;
2016-08-19 00:24:08 +00:00
} ;
_domDom2 [ 'default' ] . bind ( window , 'resize' , this . _ _resizeHandler ) ;
_domDom2 [ 'default' ] . bind ( this . _ _ul , 'webkitTransitionEnd' , this . _ _resizeHandler ) ;
_domDom2 [ 'default' ] . bind ( this . _ _ul , 'transitionend' , this . _ _resizeHandler ) ;
_domDom2 [ 'default' ] . bind ( this . _ _ul , 'oTransitionEnd' , this . _ _resizeHandler ) ;
2015-08-14 16:30:03 +00:00
this . onResize ( ) ;
if ( params . resizable ) {
addResizeHandle ( this ) ;
}
saveToLocalStorage = function ( ) {
if ( SUPPORTS _LOCAL _STORAGE && localStorage . getItem ( getLocalStorageHash ( _this , 'isLocal' ) ) === 'true' ) {
localStorage . setItem ( getLocalStorageHash ( _this , 'gui' ) , JSON . stringify ( _this . getSaveObject ( ) ) ) ;
}
} ;
// expose this method publicly
this . saveToLocalStorageIfPossible = saveToLocalStorage ;
function resetWidth ( ) {
var root = _this . getRoot ( ) ;
root . width += 1 ;
_utilsCommon2 [ 'default' ] . defer ( function ( ) {
root . width -= 1 ;
} ) ;
}
if ( ! params . parent ) {
resetWidth ( ) ;
}
} ;
GUI . toggleHide = function ( ) {
hide = ! hide ;
2015-08-14 22:16:18 +00:00
_utilsCommon2 [ 'default' ] . each ( hideableGuis , function ( gui ) {
2016-08-17 20:32:11 +00:00
gui . domElement . style . display = hide ? 'none' : '' ;
2015-08-14 16:30:03 +00:00
} ) ;
} ;
GUI . CLASS _AUTO _PLACE = 'a' ;
GUI . CLASS _AUTO _PLACE _CONTAINER = 'ac' ;
GUI . CLASS _MAIN = 'main' ;
GUI . CLASS _CONTROLLER _ROW = 'cr' ;
GUI . CLASS _TOO _TALL = 'taller-than-window' ;
GUI . CLASS _CLOSED = 'closed' ;
GUI . CLASS _CLOSE _BUTTON = 'close-button' ;
GUI . CLASS _DRAG = 'drag' ;
GUI . DEFAULT _WIDTH = 245 ;
GUI . TEXT _CLOSED = 'Close Controls' ;
GUI . TEXT _OPEN = 'Open Controls' ;
2016-08-19 00:24:08 +00:00
GUI . _keydownHandler = function ( e ) {
2015-08-14 22:16:18 +00:00
if ( document . activeElement . type !== 'text' && ( e . which === HIDE _KEY _CODE || e . keyCode === HIDE _KEY _CODE ) ) {
2015-08-14 16:30:03 +00:00
GUI . toggleHide ( ) ;
}
2016-08-19 00:24:08 +00:00
} ;
_domDom2 [ 'default' ] . bind ( window , 'keydown' , GUI . _keydownHandler , false ) ;
2015-08-14 16:30:03 +00:00
_utilsCommon2 [ 'default' ] . extend ( GUI . prototype ,
/** @lends dat.gui.GUI */
{
/ * *
* @ param object
* @ param property
* @ returns { dat . controllers . Controller } The new controller that was added .
* @ instance
* /
2016-08-17 18:29:53 +00:00
add : function add ( object , property ) {
return _add ( this , object , property , {
2015-08-14 16:30:03 +00:00
factoryArgs : Array . prototype . slice . call ( arguments , 2 )
} ) ;
2016-08-17 18:29:53 +00:00
} ,
2015-08-14 16:30:03 +00:00
/ * *
* @ param object
* @ param property
* @ returns { dat . controllers . ColorController } The new controller that was added .
* @ instance
* /
addColor : function addColor ( object , property ) {
2016-08-17 18:29:53 +00:00
return _add ( this , object , property , {
2015-08-14 16:30:03 +00:00
color : true
} ) ;
} ,
/ * *
* @ param controller
* @ instance
* /
remove : function remove ( controller ) {
// TODO listening?
this . _ _ul . removeChild ( controller . _ _li ) ;
this . _ _controllers . splice ( this . _ _controllers . indexOf ( controller ) , 1 ) ;
var _this = this ;
_utilsCommon2 [ 'default' ] . defer ( function ( ) {
_this . onResize ( ) ;
} ) ;
} ,
destroy : function destroy ( ) {
if ( this . autoPlace ) {
2015-08-14 22:16:18 +00:00
autoPlaceContainer . removeChild ( this . domElement ) ;
2015-08-14 16:30:03 +00:00
}
2016-08-19 00:24:08 +00:00
_domDom2 [ 'default' ] . unbind ( window , 'keydown' , GUI . _keydownHandler , false ) ;
_domDom2 [ 'default' ] . unbind ( window , 'resize' , this . _ _resizeHandler ) ;
if ( this . saveToLocalStorageIfPossible ) {
_domDom2 [ 'default' ] . unbind ( window , 'unload' , this . saveToLocalStorageIfPossible ) ;
}
2015-08-14 16:30:03 +00:00
} ,
/ * *
* @ param name
* @ returns { dat . gui . GUI } The new folder .
* @ throws { Error } if this GUI already has a folder by the specified
* name
* @ instance
* /
addFolder : function addFolder ( name ) {
// We have to prevent collisions on names in order to have a key
// by which to remember saved values
if ( this . _ _folders [ name ] !== undefined ) {
throw new Error ( 'You already have a folder in this GUI by the' + ' name "' + name + '"' ) ;
}
2015-08-14 22:16:18 +00:00
var newGuiParams = { name : name , parent : this } ;
2015-08-14 16:30:03 +00:00
// We need to pass down the autoPlace trait so that we can
// attach event listeners to open/close folder actions to
// ensure that a scrollbar appears if the window is too short.
2015-08-14 22:16:18 +00:00
newGuiParams . autoPlace = this . autoPlace ;
2015-08-14 16:30:03 +00:00
// Do we have saved appearance data for this folder?
if ( this . load && // Anything loaded?
this . load . folders && // Was my parent a dead-end?
this . load . folders [ name ] ) {
// Did daddy remember me?
// Start me closed if I was closed
2015-08-14 22:16:18 +00:00
newGuiParams . closed = this . load . folders [ name ] . closed ;
2015-08-14 16:30:03 +00:00
// Pass down the loaded data
2015-08-14 22:16:18 +00:00
newGuiParams . load = this . load . folders [ name ] ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 22:16:18 +00:00
var gui = new GUI ( newGuiParams ) ;
2015-08-14 16:30:03 +00:00
this . _ _folders [ name ] = gui ;
var li = addRow ( this , gui . domElement ) ;
_domDom2 [ 'default' ] . addClass ( li , 'folder' ) ;
return gui ;
} ,
open : function open ( ) {
this . closed = false ;
} ,
close : function close ( ) {
this . closed = true ;
} ,
2016-08-19 00:24:08 +00:00
onResize : _utilsCommon2 [ 'default' ] . debounce ( function ( ) {
// we debounce this function to prevent performance issues when rotating on tablet/mobile
2015-08-14 16:30:03 +00:00
var root = this . getRoot ( ) ;
if ( root . scrollable ) {
2015-08-14 22:16:18 +00:00
var _top = _domDom2 [ 'default' ] . getOffset ( root . _ _ul ) . top ;
2015-08-14 16:30:03 +00:00
var h = 0 ;
_utilsCommon2 [ 'default' ] . each ( root . _ _ul . childNodes , function ( node ) {
2015-08-14 22:16:18 +00:00
if ( ! ( root . autoPlace && node === root . _ _save _row ) ) {
h += _domDom2 [ 'default' ] . getHeight ( node ) ;
}
2015-08-14 16:30:03 +00:00
} ) ;
2015-08-14 22:16:18 +00:00
if ( window . innerHeight - _top - CLOSE _BUTTON _HEIGHT < h ) {
2015-08-14 16:30:03 +00:00
_domDom2 [ 'default' ] . addClass ( root . domElement , GUI . CLASS _TOO _TALL ) ;
2015-08-14 22:16:18 +00:00
root . _ _ul . style . height = window . innerHeight - _top - CLOSE _BUTTON _HEIGHT + 'px' ;
2015-08-14 16:30:03 +00:00
} else {
_domDom2 [ 'default' ] . removeClass ( root . domElement , GUI . CLASS _TOO _TALL ) ;
root . _ _ul . style . height = 'auto' ;
}
}
if ( root . _ _resize _handle ) {
_utilsCommon2 [ 'default' ] . defer ( function ( ) {
root . _ _resize _handle . style . height = root . _ _ul . offsetHeight + 'px' ;
} ) ;
}
if ( root . _ _closeButton ) {
root . _ _closeButton . style . width = root . width + 'px' ;
}
2016-08-19 00:24:08 +00:00
} , 200 ) ,
2015-08-14 16:30:03 +00:00
/ * *
* Mark objects for saving . The order of these objects cannot change as
* the GUI grows . When remembering new objects , append them to the end
* of the list .
*
* @ param { Object ... } objects
* @ throws { Error } if not called on a top level GUI .
* @ instance
* /
remember : function remember ( ) {
if ( _utilsCommon2 [ 'default' ] . isUndefined ( SAVE _DIALOGUE ) ) {
SAVE _DIALOGUE = new _domCenteredDiv2 [ 'default' ] ( ) ;
2016-09-01 21:07:06 +00:00
SAVE _DIALOGUE . domElement . innerHTML = _saveDialogueHtml2 [ 'default' ] ;
2015-08-14 16:30:03 +00:00
}
if ( this . parent ) {
2015-08-14 22:16:18 +00:00
throw new Error ( 'You can only call remember on a top level GUI.' ) ;
2015-08-14 16:30:03 +00:00
}
var _this = this ;
_utilsCommon2 [ 'default' ] . each ( Array . prototype . slice . call ( arguments ) , function ( object ) {
2015-08-14 22:16:18 +00:00
if ( _this . _ _rememberedObjects . length === 0 ) {
2015-08-14 16:30:03 +00:00
addSaveMenu ( _this ) ;
}
2015-08-14 22:16:18 +00:00
if ( _this . _ _rememberedObjects . indexOf ( object ) === - 1 ) {
2015-08-14 16:30:03 +00:00
_this . _ _rememberedObjects . push ( object ) ;
}
} ) ;
if ( this . autoPlace ) {
// Set save row width
setWidth ( this , this . width ) ;
}
} ,
/ * *
* @ returns { dat . gui . GUI } the topmost parent GUI of a nested GUI .
* @ instance
* /
getRoot : function getRoot ( ) {
var gui = this ;
while ( gui . parent ) {
gui = gui . parent ;
}
return gui ;
} ,
/ * *
* @ returns { Object } a JSON object representing the current state of
* this GUI as well as its remembered properties .
* @ instance
* /
getSaveObject : function getSaveObject ( ) {
var toReturn = this . load ;
toReturn . closed = this . closed ;
// Am I remembering any values?
if ( this . _ _rememberedObjects . length > 0 ) {
toReturn . preset = this . preset ;
if ( ! toReturn . remembered ) {
toReturn . remembered = { } ;
}
toReturn . remembered [ this . preset ] = getCurrentPreset ( this ) ;
}
toReturn . folders = { } ;
_utilsCommon2 [ 'default' ] . each ( this . _ _folders , function ( element , key ) {
toReturn . folders [ key ] = element . getSaveObject ( ) ;
} ) ;
return toReturn ;
} ,
save : function save ( ) {
if ( ! this . load . remembered ) {
this . load . remembered = { } ;
}
this . load . remembered [ this . preset ] = getCurrentPreset ( this ) ;
markPresetModified ( this , false ) ;
this . saveToLocalStorageIfPossible ( ) ;
} ,
saveAs : function saveAs ( presetName ) {
if ( ! this . load . remembered ) {
// Retain default values upon first save
this . load . remembered = { } ;
this . load . remembered [ DEFAULT _DEFAULT _PRESET _NAME ] = getCurrentPreset ( this , true ) ;
}
this . load . remembered [ presetName ] = getCurrentPreset ( this ) ;
this . preset = presetName ;
addPresetOption ( this , presetName , true ) ;
this . saveToLocalStorageIfPossible ( ) ;
} ,
revert : function revert ( gui ) {
_utilsCommon2 [ 'default' ] . each ( this . _ _controllers , function ( controller ) {
// Make revert work on Default.
if ( ! this . getRoot ( ) . load . remembered ) {
controller . setValue ( controller . initialValue ) ;
} else {
recallSavedValue ( gui || this . getRoot ( ) , controller ) ;
}
2016-08-18 22:31:37 +00:00
// fire onFinishChange callback
if ( controller . _ _onFinishChange ) {
controller . _ _onFinishChange . call ( controller , controller . getValue ( ) ) ;
}
2015-08-14 16:30:03 +00:00
} , this ) ;
_utilsCommon2 [ 'default' ] . each ( this . _ _folders , function ( folder ) {
folder . revert ( folder ) ;
} ) ;
if ( ! gui ) {
markPresetModified ( this . getRoot ( ) , false ) ;
}
} ,
listen : function listen ( controller ) {
2015-08-14 22:16:18 +00:00
var init = this . _ _listening . length === 0 ;
2015-08-14 16:30:03 +00:00
this . _ _listening . push ( controller ) ;
2015-08-14 22:16:18 +00:00
if ( init ) {
updateDisplays ( this . _ _listening ) ;
}
2016-08-19 00:24:08 +00:00
} ,
updateDisplay : function updateDisplay ( ) {
_utilsCommon2 [ 'default' ] . each ( this . _ _controllers , function ( controller ) {
controller . updateDisplay ( ) ;
} ) ;
_utilsCommon2 [ 'default' ] . each ( this . _ _folders , function ( folder ) {
folder . updateDisplay ( ) ;
} ) ;
2015-08-14 16:30:03 +00:00
}
} ) ;
/ * *
* Add a row to the end of the GUI or before another row .
*
* @ param gui
2015-08-14 20:29:30 +00:00
* @ param [ newDom ] If specified , inserts the dom content in the new row
2015-08-14 16:30:03 +00:00
* @ param [ liBefore ] If specified , places the new row before another row
* /
2015-08-14 20:29:30 +00:00
function addRow ( gui , newDom , liBefore ) {
2015-08-14 16:30:03 +00:00
var li = document . createElement ( 'li' ) ;
2015-08-14 20:29:30 +00:00
if ( newDom ) {
li . appendChild ( newDom ) ;
}
2015-08-14 16:30:03 +00:00
if ( liBefore ) {
2016-08-17 20:19:18 +00:00
gui . _ _ul . insertBefore ( li , liBefore ) ;
2015-08-14 16:30:03 +00:00
} else {
gui . _ _ul . appendChild ( li ) ;
}
gui . onResize ( ) ;
return li ;
}
2015-08-14 20:29:30 +00:00
function markPresetModified ( gui , modified ) {
var opt = gui . _ _preset _select [ gui . _ _preset _select . selectedIndex ] ;
// console.log('mark', modified, opt);
if ( modified ) {
opt . innerHTML = opt . value + '*' ;
} else {
opt . innerHTML = opt . value ;
}
}
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
function augmentController ( gui , li , controller ) {
2015-08-14 16:30:03 +00:00
controller . _ _li = li ;
controller . _ _gui = gui ;
_utilsCommon2 [ 'default' ] . extend ( controller , {
options : function options ( _options ) {
if ( arguments . length > 1 ) {
2016-08-17 20:19:18 +00:00
var nextSibling = controller . _ _li . nextElementSibling ;
2015-08-14 16:30:03 +00:00
controller . remove ( ) ;
2016-08-17 18:29:53 +00:00
return _add ( gui , controller . object , controller . property , {
2016-08-17 20:19:18 +00:00
before : nextSibling ,
2015-08-14 16:30:03 +00:00
factoryArgs : [ _utilsCommon2 [ 'default' ] . toArray ( arguments ) ]
} ) ;
}
if ( _utilsCommon2 [ 'default' ] . isArray ( _options ) || _utilsCommon2 [ 'default' ] . isObject ( _options ) ) {
2016-08-17 20:19:18 +00:00
var nextSibling = controller . _ _li . nextElementSibling ;
2015-08-14 16:30:03 +00:00
controller . remove ( ) ;
2016-08-17 18:29:53 +00:00
return _add ( gui , controller . object , controller . property , {
2016-08-17 20:19:18 +00:00
before : nextSibling ,
2015-08-14 16:30:03 +00:00
factoryArgs : [ _options ]
} ) ;
}
} ,
name : function name ( v ) {
controller . _ _li . firstElementChild . firstElementChild . innerHTML = v ;
return controller ;
} ,
listen : function listen ( ) {
controller . _ _gui . listen ( controller ) ;
return controller ;
} ,
remove : function remove ( ) {
controller . _ _gui . remove ( controller ) ;
return controller ;
}
} ) ;
// All sliders should be accompanied by a box.
if ( controller instanceof _controllersNumberControllerSlider2 [ 'default' ] ) {
2015-08-14 20:29:30 +00:00
( function ( ) {
var box = new _controllersNumberControllerBox2 [ 'default' ] ( controller . object , controller . property , { min : controller . _ _min , max : controller . _ _max , step : controller . _ _step } ) ;
2016-08-17 23:32:48 +00:00
_utilsCommon2 [ 'default' ] . each ( [ 'updateDisplay' , 'onChange' , 'onFinishChange' , 'step' ] , function ( method ) {
2015-08-14 20:29:30 +00:00
var pc = controller [ method ] ;
var pb = box [ method ] ;
controller [ method ] = box [ method ] = function ( ) {
var args = Array . prototype . slice . call ( arguments ) ;
2016-08-18 22:31:37 +00:00
pb . apply ( box , args ) ;
return pc . apply ( controller , args ) ;
2015-08-14 20:29:30 +00:00
} ;
} ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
_domDom2 [ 'default' ] . addClass ( li , 'has-slider' ) ;
controller . domElement . insertBefore ( box . domElement , controller . domElement . firstElementChild ) ;
} ) ( ) ;
2015-08-14 16:30:03 +00:00
} else if ( controller instanceof _controllersNumberControllerBox2 [ 'default' ] ) {
var r = function r ( returned ) {
// Have we defined both boundaries?
if ( _utilsCommon2 [ 'default' ] . isNumber ( controller . _ _min ) && _utilsCommon2 [ 'default' ] . isNumber ( controller . _ _max ) ) {
// Well, then lets just replace this with a slider.
controller . remove ( ) ;
2016-08-17 18:29:53 +00:00
return _add ( gui , controller . object , controller . property , {
2015-08-14 16:30:03 +00:00
before : controller . _ _li . nextElementSibling ,
factoryArgs : [ controller . _ _min , controller . _ _max , controller . _ _step ]
} ) ;
}
return returned ;
} ;
controller . min = _utilsCommon2 [ 'default' ] . compose ( r , controller . min ) ;
controller . max = _utilsCommon2 [ 'default' ] . compose ( r , controller . max ) ;
} else if ( controller instanceof _controllersBooleanController2 [ 'default' ] ) {
_domDom2 [ 'default' ] . bind ( li , 'click' , function ( ) {
_domDom2 [ 'default' ] . fakeEvent ( controller . _ _checkbox , 'click' ) ;
} ) ;
_domDom2 [ 'default' ] . bind ( controller . _ _checkbox , 'click' , function ( e ) {
e . stopPropagation ( ) ; // Prevents double-toggle
} ) ;
} else if ( controller instanceof _controllersFunctionController2 [ 'default' ] ) {
_domDom2 [ 'default' ] . bind ( li , 'click' , function ( ) {
_domDom2 [ 'default' ] . fakeEvent ( controller . _ _button , 'click' ) ;
} ) ;
_domDom2 [ 'default' ] . bind ( li , 'mouseover' , function ( ) {
_domDom2 [ 'default' ] . addClass ( controller . _ _button , 'hover' ) ;
} ) ;
_domDom2 [ 'default' ] . bind ( li , 'mouseout' , function ( ) {
_domDom2 [ 'default' ] . removeClass ( controller . _ _button , 'hover' ) ;
} ) ;
} else if ( controller instanceof _controllersColorController2 [ 'default' ] ) {
_domDom2 [ 'default' ] . addClass ( li , 'color' ) ;
2015-08-14 20:29:30 +00:00
controller . updateDisplay = _utilsCommon2 [ 'default' ] . compose ( function ( val ) {
2015-08-14 16:30:03 +00:00
li . style . borderLeftColor = controller . _ _color . toString ( ) ;
2015-08-14 20:29:30 +00:00
return val ;
2015-08-14 16:30:03 +00:00
} , controller . updateDisplay ) ;
controller . updateDisplay ( ) ;
}
2015-08-14 20:29:30 +00:00
controller . setValue = _utilsCommon2 [ 'default' ] . compose ( function ( val ) {
2015-08-14 16:30:03 +00:00
if ( gui . getRoot ( ) . _ _preset _select && controller . isModified ( ) ) {
markPresetModified ( gui . getRoot ( ) , true ) ;
}
2015-08-14 20:29:30 +00:00
return val ;
2015-08-14 16:30:03 +00:00
} , controller . setValue ) ;
}
function recallSavedValue ( gui , controller ) {
// Find the topmost GUI, that's where remembered objects live.
var root = gui . getRoot ( ) ;
// Does the object we're controlling match anything we've been told to
// remember?
2015-08-14 20:29:30 +00:00
var matchedIndex = root . _ _rememberedObjects . indexOf ( controller . object ) ;
2015-08-14 16:30:03 +00:00
// Why yes, it does!
2015-08-14 20:29:30 +00:00
if ( matchedIndex !== - 1 ) {
2015-08-14 16:30:03 +00:00
// Let me fetch a map of controllers for thcommon.isObject.
2015-08-14 20:29:30 +00:00
var controllerMap = root . _ _rememberedObjectIndecesToControllers [ matchedIndex ] ;
2015-08-14 16:30:03 +00:00
// Ohp, I believe this is the first controller we've created for this
// object. Lets make the map fresh.
2015-08-14 20:29:30 +00:00
if ( controllerMap === undefined ) {
controllerMap = { } ;
root . _ _rememberedObjectIndecesToControllers [ matchedIndex ] = controllerMap ;
2015-08-14 16:30:03 +00:00
}
// Keep track of this controller
2015-08-14 20:29:30 +00:00
controllerMap [ controller . property ] = controller ;
2015-08-14 16:30:03 +00:00
// Okay, now have we saved any values for this controller?
if ( root . load && root . load . remembered ) {
2015-08-14 20:29:30 +00:00
var presetMap = root . load . remembered ;
2015-08-14 16:30:03 +00:00
// Which preset are we trying to load?
2015-08-14 20:29:30 +00:00
var preset = undefined ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
if ( presetMap [ gui . preset ] ) {
preset = presetMap [ gui . preset ] ;
} else if ( presetMap [ DEFAULT _DEFAULT _PRESET _NAME ] ) {
2015-08-14 16:30:03 +00:00
// Uhh, you can have the default instead?
2015-08-14 20:29:30 +00:00
preset = presetMap [ DEFAULT _DEFAULT _PRESET _NAME ] ;
2015-08-14 16:30:03 +00:00
} else {
// Nada.
return ;
}
2015-08-14 20:29:30 +00:00
// Did the loaded object remember thcommon.isObject? && Did we remember this particular property?
if ( preset [ matchedIndex ] && preset [ matchedIndex ] [ controller . property ] !== undefined ) {
2015-08-14 16:30:03 +00:00
// We did remember something for this guy ...
2015-08-14 20:29:30 +00:00
var value = preset [ matchedIndex ] [ controller . property ] ;
2015-08-14 16:30:03 +00:00
// And that's what it is.
controller . initialValue = value ;
controller . setValue ( value ) ;
}
}
}
}
2016-08-17 18:29:53 +00:00
function _add ( gui , object , property , params ) {
2015-08-14 20:29:30 +00:00
if ( object [ property ] === undefined ) {
throw new Error ( 'Object "' + object + '" has no property "' + property + '"' ) ;
}
var controller = undefined ;
if ( params . color ) {
controller = new _controllersColorController2 [ 'default' ] ( object , property ) ;
} else {
var factoryArgs = [ object , property ] . concat ( params . factoryArgs ) ;
controller = _controllersControllerFactory2 [ 'default' ] . apply ( gui , factoryArgs ) ;
}
if ( params . before instanceof _controllersController2 [ 'default' ] ) {
params . before = params . before . _ _li ;
}
recallSavedValue ( gui , controller ) ;
_domDom2 [ 'default' ] . addClass ( controller . domElement , 'c' ) ;
var name = document . createElement ( 'span' ) ;
_domDom2 [ 'default' ] . addClass ( name , 'property-name' ) ;
name . innerHTML = controller . property ;
var container = document . createElement ( 'div' ) ;
container . appendChild ( name ) ;
container . appendChild ( controller . domElement ) ;
var li = addRow ( gui , container , params . before ) ;
_domDom2 [ 'default' ] . addClass ( li , GUI . CLASS _CONTROLLER _ROW ) ;
if ( controller instanceof _controllersColorController2 [ 'default' ] ) {
_domDom2 [ 'default' ] . addClass ( li , 'color' ) ;
} else {
_domDom2 [ 'default' ] . addClass ( li , typeof controller . getValue ( ) ) ;
}
augmentController ( gui , li , controller ) ;
gui . _ _controllers . push ( controller ) ;
return controller ;
}
2015-08-14 16:30:03 +00:00
function getLocalStorageHash ( gui , key ) {
// TODO how does this deal with multiple GUI's?
return document . location . href + '.' + key ;
}
2015-08-14 20:29:30 +00:00
function addPresetOption ( gui , name , setSelected ) {
var opt = document . createElement ( 'option' ) ;
opt . innerHTML = name ;
opt . value = name ;
gui . _ _preset _select . appendChild ( opt ) ;
if ( setSelected ) {
gui . _ _preset _select . selectedIndex = gui . _ _preset _select . length - 1 ;
}
}
2015-08-14 16:30:03 +00:00
2015-08-14 22:16:18 +00:00
function showHideExplain ( gui , explain ) {
2015-08-14 20:29:30 +00:00
explain . style . display = gui . useLocalStorage ? 'block' : 'none' ;
}
function addSaveMenu ( gui ) {
2015-08-14 16:30:03 +00:00
var div = gui . _ _save _row = document . createElement ( 'li' ) ;
_domDom2 [ 'default' ] . addClass ( gui . domElement , 'has-save' ) ;
gui . _ _ul . insertBefore ( div , gui . _ _ul . firstChild ) ;
_domDom2 [ 'default' ] . addClass ( div , 'save-row' ) ;
var gears = document . createElement ( 'span' ) ;
gears . innerHTML = ' ' ;
_domDom2 [ 'default' ] . addClass ( gears , 'button gears' ) ;
// TODO replace with FunctionController
var button = document . createElement ( 'span' ) ;
button . innerHTML = 'Save' ;
_domDom2 [ 'default' ] . addClass ( button , 'button' ) ;
_domDom2 [ 'default' ] . addClass ( button , 'save' ) ;
var button2 = document . createElement ( 'span' ) ;
button2 . innerHTML = 'New' ;
_domDom2 [ 'default' ] . addClass ( button2 , 'button' ) ;
_domDom2 [ 'default' ] . addClass ( button2 , 'save-as' ) ;
var button3 = document . createElement ( 'span' ) ;
button3 . innerHTML = 'Revert' ;
_domDom2 [ 'default' ] . addClass ( button3 , 'button' ) ;
_domDom2 [ 'default' ] . addClass ( button3 , 'revert' ) ;
var select = gui . _ _preset _select = document . createElement ( 'select' ) ;
if ( gui . load && gui . load . remembered ) {
_utilsCommon2 [ 'default' ] . each ( gui . load . remembered , function ( value , key ) {
2015-08-14 20:29:30 +00:00
addPresetOption ( gui , key , key === gui . preset ) ;
2015-08-14 16:30:03 +00:00
} ) ;
} else {
addPresetOption ( gui , DEFAULT _DEFAULT _PRESET _NAME , false ) ;
}
_domDom2 [ 'default' ] . bind ( select , 'change' , function ( ) {
for ( var index = 0 ; index < gui . _ _preset _select . length ; index ++ ) {
gui . _ _preset _select [ index ] . innerHTML = gui . _ _preset _select [ index ] . value ;
}
gui . preset = this . value ;
} ) ;
div . appendChild ( select ) ;
div . appendChild ( gears ) ;
div . appendChild ( button ) ;
div . appendChild ( button2 ) ;
div . appendChild ( button3 ) ;
if ( SUPPORTS _LOCAL _STORAGE ) {
( function ( ) {
2015-08-14 20:29:30 +00:00
var explain = document . getElementById ( 'dg-local-explain' ) ;
var localStorageCheckBox = document . getElementById ( 'dg-local-storage' ) ;
var saveLocally = document . getElementById ( 'dg-save-locally' ) ;
2015-08-14 16:30:03 +00:00
saveLocally . style . display = 'block' ;
if ( localStorage . getItem ( getLocalStorageHash ( gui , 'isLocal' ) ) === 'true' ) {
localStorageCheckBox . setAttribute ( 'checked' , 'checked' ) ;
}
2015-08-14 22:16:18 +00:00
showHideExplain ( gui , explain ) ;
2015-08-14 16:30:03 +00:00
// TODO: Use a boolean controller, fool!
_domDom2 [ 'default' ] . bind ( localStorageCheckBox , 'change' , function ( ) {
gui . useLocalStorage = ! gui . useLocalStorage ;
2015-08-14 22:16:18 +00:00
showHideExplain ( gui , explain ) ;
2015-08-14 16:30:03 +00:00
} ) ;
} ) ( ) ;
}
var newConstructorTextArea = document . getElementById ( 'dg-new-constructor' ) ;
_domDom2 [ 'default' ] . bind ( newConstructorTextArea , 'keydown' , function ( e ) {
2015-08-14 20:29:30 +00:00
if ( e . metaKey && ( e . which === 67 || e . keyCode === 67 ) ) {
2015-08-14 16:30:03 +00:00
SAVE _DIALOGUE . hide ( ) ;
}
} ) ;
_domDom2 [ 'default' ] . bind ( gears , 'click' , function ( ) {
newConstructorTextArea . innerHTML = JSON . stringify ( gui . getSaveObject ( ) , undefined , 2 ) ;
SAVE _DIALOGUE . show ( ) ;
newConstructorTextArea . focus ( ) ;
newConstructorTextArea . select ( ) ;
} ) ;
_domDom2 [ 'default' ] . bind ( button , 'click' , function ( ) {
gui . save ( ) ;
} ) ;
_domDom2 [ 'default' ] . bind ( button2 , 'click' , function ( ) {
var presetName = prompt ( 'Enter a new preset name.' ) ;
2015-08-14 20:29:30 +00:00
if ( presetName ) {
gui . saveAs ( presetName ) ;
}
2015-08-14 16:30:03 +00:00
} ) ;
_domDom2 [ 'default' ] . bind ( button3 , 'click' , function ( ) {
gui . revert ( ) ;
} ) ;
2015-08-14 20:29:30 +00:00
// div.appendChild(button2);
2015-08-14 16:30:03 +00:00
}
function addResizeHandle ( gui ) {
2015-08-14 20:29:30 +00:00
var pmouseX = undefined ;
2015-08-14 16:30:03 +00:00
gui . _ _resize _handle = document . createElement ( 'div' ) ;
_utilsCommon2 [ 'default' ] . extend ( gui . _ _resize _handle . style , {
width : '6px' ,
marginLeft : '-3px' ,
height : '200px' ,
cursor : 'ew-resize' ,
position : 'absolute'
2015-08-14 20:29:30 +00:00
// border: '1px solid blue'
2015-08-14 16:30:03 +00:00
} ) ;
2015-08-14 20:29:30 +00:00
function drag ( e ) {
2015-08-14 16:30:03 +00:00
e . preventDefault ( ) ;
2015-08-14 20:29:30 +00:00
gui . width += pmouseX - e . clientX ;
gui . onResize ( ) ;
2015-08-14 16:30:03 +00:00
pmouseX = e . clientX ;
return false ;
}
2015-08-14 20:29:30 +00:00
function dragStop ( ) {
_domDom2 [ 'default' ] . removeClass ( gui . _ _closeButton , GUI . CLASS _DRAG ) ;
_domDom2 [ 'default' ] . unbind ( window , 'mousemove' , drag ) ;
_domDom2 [ 'default' ] . unbind ( window , 'mouseup' , dragStop ) ;
}
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
function dragStart ( e ) {
2015-08-14 16:30:03 +00:00
e . preventDefault ( ) ;
pmouseX = e . clientX ;
2015-08-14 20:29:30 +00:00
_domDom2 [ 'default' ] . addClass ( gui . _ _closeButton , GUI . CLASS _DRAG ) ;
_domDom2 [ 'default' ] . bind ( window , 'mousemove' , drag ) ;
_domDom2 [ 'default' ] . bind ( window , 'mouseup' , dragStop ) ;
2015-08-14 16:30:03 +00:00
return false ;
}
2015-08-14 20:29:30 +00:00
_domDom2 [ 'default' ] . bind ( gui . _ _resize _handle , 'mousedown' , dragStart ) ;
_domDom2 [ 'default' ] . bind ( gui . _ _closeButton , 'mousedown' , dragStart ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
gui . domElement . insertBefore ( gui . _ _resize _handle , gui . domElement . firstElementChild ) ;
2015-08-14 16:30:03 +00:00
}
function setWidth ( gui , w ) {
gui . domElement . style . width = w + 'px' ;
// Auto placed save-rows are position fixed, so we have to
// set the width manually if we want it to bleed to the edge
if ( gui . _ _save _row && gui . autoPlace ) {
gui . _ _save _row . style . width = w + 'px' ;
}
if ( gui . _ _closeButton ) {
gui . _ _closeButton . style . width = w + 'px' ;
}
}
function getCurrentPreset ( gui , useInitialValues ) {
var toReturn = { } ;
// For each object I'm remembering
_utilsCommon2 [ 'default' ] . each ( gui . _ _rememberedObjects , function ( val , index ) {
2015-08-14 20:29:30 +00:00
var savedValues = { } ;
2015-08-14 16:30:03 +00:00
// The controllers I've made for thcommon.isObject by property
2015-08-14 20:29:30 +00:00
var controllerMap = gui . _ _rememberedObjectIndecesToControllers [ index ] ;
2015-08-14 16:30:03 +00:00
// Remember each value for each property
2015-08-14 20:29:30 +00:00
_utilsCommon2 [ 'default' ] . each ( controllerMap , function ( controller , property ) {
savedValues [ property ] = useInitialValues ? controller . initialValue : controller . getValue ( ) ;
2015-08-14 16:30:03 +00:00
} ) ;
// Save the values for thcommon.isObject
2015-08-14 20:29:30 +00:00
toReturn [ index ] = savedValues ;
2015-08-14 16:30:03 +00:00
} ) ;
return toReturn ;
}
function setPresetSelectIndex ( gui ) {
for ( var index = 0 ; index < gui . _ _preset _select . length ; index ++ ) {
2015-08-14 20:29:30 +00:00
if ( gui . _ _preset _select [ index ] . value === gui . preset ) {
2015-08-14 16:30:03 +00:00
gui . _ _preset _select . selectedIndex = index ;
}
}
}
function updateDisplays ( controllerArray ) {
2015-08-14 20:29:30 +00:00
if ( controllerArray . length !== 0 ) {
2016-08-17 23:32:48 +00:00
_utilsRequestAnimationFrame2 [ 'default' ] . call ( window , function ( ) {
2015-08-14 16:30:03 +00:00
updateDisplays ( controllerArray ) ;
} ) ;
}
_utilsCommon2 [ 'default' ] . each ( controllerArray , function ( c ) {
c . updateDisplay ( ) ;
} ) ;
}
module . exports = GUI ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 18 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports ) {
2016-08-30 22:48:51 +00:00
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
2015-08-14 16:30:03 +00:00
2016-08-30 22:48:51 +00:00
'use strict' ;
2015-08-14 16:30:03 +00:00
2016-08-30 22:48:51 +00:00
module . exports = {
load : function load ( url , indoc ) {
var doc = indoc || document ;
var link = doc . createElement ( 'link' ) ;
link . type = 'text/css' ;
link . rel = 'stylesheet' ;
link . href = url ;
doc . getElementsByTagName ( 'head' ) [ 0 ] . appendChild ( link ) ;
} ,
2015-08-14 16:30:03 +00:00
2016-09-01 19:52:59 +00:00
inject : function inject ( css , indoc ) {
2016-08-30 22:48:51 +00:00
var doc = indoc || document ;
var injected = document . createElement ( 'style' ) ;
injected . type = 'text/css' ;
injected . innerHTML = css ;
var head = doc . getElementsByTagName ( 'head' ) [ 0 ] ;
try {
head . appendChild ( injected ) ;
} catch ( e ) { // Unable to inject CSS, probably because of a Content Security Policy
}
}
} ;
2015-08-14 16:30:03 +00:00
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 19 */
2016-08-30 22:48:51 +00:00
/***/ function ( module , exports ) {
2016-08-17 18:29:53 +00:00
2016-08-30 22:48:51 +00:00
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>" ;
2016-08-17 18:29:53 +00:00
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 20 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
2016-09-01 21:07:06 +00:00
var _OptionController = _ _webpack _require _ _ ( 10 ) ;
2015-08-14 16:30:03 +00:00
var _OptionController2 = _interopRequireDefault ( _OptionController ) ;
2016-09-01 21:07:06 +00:00
var _NumberControllerBox = _ _webpack _require _ _ ( 13 ) ;
2015-08-14 16:30:03 +00:00
var _NumberControllerBox2 = _interopRequireDefault ( _NumberControllerBox ) ;
2016-09-01 21:07:06 +00:00
var _NumberControllerSlider = _ _webpack _require _ _ ( 14 ) ;
2015-08-14 16:30:03 +00:00
var _NumberControllerSlider2 = _interopRequireDefault ( _NumberControllerSlider ) ;
2016-09-01 21:07:06 +00:00
var _StringController = _ _webpack _require _ _ ( 11 ) ;
2015-08-14 16:30:03 +00:00
var _StringController2 = _interopRequireDefault ( _StringController ) ;
2016-09-01 21:07:06 +00:00
var _FunctionController = _ _webpack _require _ _ ( 15 ) ;
2015-08-14 16:30:03 +00:00
var _FunctionController2 = _interopRequireDefault ( _FunctionController ) ;
2016-09-01 21:07:06 +00:00
var _BooleanController = _ _webpack _require _ _ ( 8 ) ;
2015-08-14 16:30:03 +00:00
var _BooleanController2 = _interopRequireDefault ( _BooleanController ) ;
2016-09-01 21:07:06 +00:00
var _utilsCommon = _ _webpack _require _ _ ( 5 ) ;
2015-08-14 16:30:03 +00:00
var _utilsCommon2 = _interopRequireDefault ( _utilsCommon ) ;
var ControllerFactory = function ControllerFactory ( object , property ) {
var initialValue = object [ property ] ;
// Providing options?
if ( _utilsCommon2 [ 'default' ] . isArray ( arguments [ 2 ] ) || _utilsCommon2 [ 'default' ] . isObject ( arguments [ 2 ] ) ) {
return new _OptionController2 [ 'default' ] ( object , property , arguments [ 2 ] ) ;
}
// Providing a map?
if ( _utilsCommon2 [ 'default' ] . isNumber ( initialValue ) ) {
2016-08-17 23:32:48 +00:00
// Has min and max? (slider)
2015-08-14 16:30:03 +00:00
if ( _utilsCommon2 [ 'default' ] . isNumber ( arguments [ 2 ] ) && _utilsCommon2 [ 'default' ] . isNumber ( arguments [ 3 ] ) ) {
2016-08-17 23:32:48 +00:00
// has step?
2015-08-14 22:16:18 +00:00
if ( _utilsCommon2 [ 'default' ] . isNumber ( arguments [ 4 ] ) ) {
return new _NumberControllerSlider2 [ 'default' ] ( object , property , arguments [ 2 ] , arguments [ 3 ] , arguments [ 4 ] ) ;
2015-08-14 16:30:03 +00:00
}
2015-08-14 22:16:18 +00:00
return new _NumberControllerSlider2 [ 'default' ] ( object , property , arguments [ 2 ] , arguments [ 3 ] ) ;
2015-08-14 16:30:03 +00:00
}
2016-08-17 23:32:48 +00:00
// number box
if ( _utilsCommon2 [ 'default' ] . isNumber ( arguments [ 4 ] ) ) {
// has step
return new _NumberControllerBox2 [ 'default' ] ( object , property , { min : arguments [ 2 ] , max : arguments [ 3 ] , step : arguments [ 4 ] } ) ;
}
2015-08-14 22:16:18 +00:00
return new _NumberControllerBox2 [ 'default' ] ( object , property , { min : arguments [ 2 ] , max : arguments [ 3 ] } ) ;
2015-08-14 16:30:03 +00:00
}
if ( _utilsCommon2 [ 'default' ] . isString ( initialValue ) ) {
return new _StringController2 [ 'default' ] ( object , property ) ;
}
if ( _utilsCommon2 [ 'default' ] . isFunction ( initialValue ) ) {
return new _FunctionController2 [ 'default' ] ( object , property , '' ) ;
}
if ( _utilsCommon2 [ 'default' ] . isBoolean ( initialValue ) ) {
return new _BooleanController2 [ 'default' ] ( object , property ) ;
}
2016-09-01 21:07:06 +00:00
return null ;
2015-08-14 16:30:03 +00:00
} ;
exports [ 'default' ] = ControllerFactory ;
module . exports = exports [ 'default' ] ;
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 21 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
"use strict" ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2016-08-17 23:32:48 +00:00
function requestAnimationFrame ( callback ) {
setTimeout ( callback , 1000 / 60 ) ;
}
2015-08-14 20:29:30 +00:00
2016-08-17 23:32:48 +00:00
exports [ "default" ] = window . requestAnimationFrame || window . webkitRequestAnimationFrame || window . mozRequestAnimationFrame || window . oRequestAnimationFrame || window . msRequestAnimationFrame || requestAnimationFrame ;
2015-08-14 20:29:30 +00:00
module . exports = exports [ "default" ] ;
2015-08-14 16:30:03 +00:00
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 22 */
2015-08-14 16:30:03 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* dat - gui JavaScript Controller Library
* http : //code.google.com/p/dat-gui
*
* Copyright 2011 Data Arts Team , Google Creative Lab
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
* /
'use strict' ;
2015-08-14 20:29:30 +00:00
exports . _ _esModule = true ;
2015-08-14 16:30:03 +00:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { 'default' : obj } ; }
2015-08-14 20:29:30 +00:00
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( 'Cannot call a class as a function' ) ; } }
2016-09-01 21:07:06 +00:00
var _domDom = _ _webpack _require _ _ ( 9 ) ;
2015-08-14 16:30:03 +00:00
var _domDom2 = _interopRequireDefault ( _domDom ) ;
2016-09-01 21:07:06 +00:00
var _utilsCommon = _ _webpack _require _ _ ( 5 ) ;
2015-08-14 16:30:03 +00:00
var _utilsCommon2 = _interopRequireDefault ( _utilsCommon ) ;
2015-08-14 20:29:30 +00:00
var CenteredDiv = ( function ( ) {
function CenteredDiv ( ) {
_classCallCheck ( this , CenteredDiv ) ;
this . backgroundElement = document . createElement ( 'div' ) ;
_utilsCommon2 [ 'default' ] . extend ( this . backgroundElement . style , {
backgroundColor : 'rgba(0,0,0,0.8)' ,
top : 0 ,
left : 0 ,
display : 'none' ,
zIndex : '1000' ,
opacity : 0 ,
WebkitTransition : 'opacity 0.2s linear' ,
transition : 'opacity 0.2s linear'
} ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
_domDom2 [ 'default' ] . makeFullscreen ( this . backgroundElement ) ;
this . backgroundElement . style . position = 'fixed' ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
this . domElement = document . createElement ( 'div' ) ;
_utilsCommon2 [ 'default' ] . extend ( this . domElement . style , {
position : 'fixed' ,
display : 'none' ,
zIndex : '1001' ,
opacity : 0 ,
WebkitTransition : '-webkit-transform 0.2s ease-out, opacity 0.2s linear' ,
transition : 'transform 0.2s ease-out, opacity 0.2s linear'
} ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
document . body . appendChild ( this . backgroundElement ) ;
document . body . appendChild ( this . domElement ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
var _this = this ;
_domDom2 [ 'default' ] . bind ( this . backgroundElement , 'click' , function ( ) {
_this . hide ( ) ;
} ) ;
}
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
CenteredDiv . prototype . show = function show ( ) {
var _this = this ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
this . backgroundElement . style . display = 'block' ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
this . domElement . style . display = 'block' ;
this . domElement . style . opacity = 0 ;
// this.domElement.style.top = '52%';
this . domElement . style . webkitTransform = 'scale(1.1)' ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
this . layout ( ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
_utilsCommon2 [ 'default' ] . defer ( function ( ) {
_this . backgroundElement . style . opacity = 1 ;
_this . domElement . style . opacity = 1 ;
_this . domElement . style . webkitTransform = 'scale(1)' ;
} ) ;
} ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
/ * *
* Hide centered div
* /
CenteredDiv . prototype . hide = function hide ( ) {
var _this = this ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
var hide = function hide ( ) {
_this . domElement . style . display = 'none' ;
_this . backgroundElement . style . display = 'none' ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
_domDom2 [ 'default' ] . unbind ( _this . domElement , 'webkitTransitionEnd' , hide ) ;
_domDom2 [ 'default' ] . unbind ( _this . domElement , 'transitionend' , hide ) ;
_domDom2 [ 'default' ] . unbind ( _this . domElement , 'oTransitionEnd' , hide ) ;
} ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
_domDom2 [ 'default' ] . bind ( this . domElement , 'webkitTransitionEnd' , hide ) ;
_domDom2 [ 'default' ] . bind ( this . domElement , 'transitionend' , hide ) ;
_domDom2 [ 'default' ] . bind ( this . domElement , 'oTransitionEnd' , hide ) ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
this . backgroundElement . style . opacity = 0 ;
// this.domElement.style.top = '48%';
this . domElement . style . opacity = 0 ;
this . domElement . style . webkitTransform = 'scale(1.1)' ;
2015-08-14 16:30:03 +00:00
} ;
2015-08-14 20:29:30 +00:00
CenteredDiv . prototype . layout = function layout ( ) {
this . domElement . style . left = window . innerWidth / 2 - _domDom2 [ 'default' ] . getWidth ( this . domElement ) / 2 + 'px' ;
this . domElement . style . top = window . innerHeight / 2 - _domDom2 [ 'default' ] . getHeight ( this . domElement ) / 2 + 'px' ;
} ;
2015-08-14 16:30:03 +00:00
2015-08-14 20:29:30 +00:00
return CenteredDiv ;
} ) ( ) ;
2015-08-14 16:30:03 +00:00
exports [ 'default' ] = CenteredDiv ;
module . exports = exports [ 'default' ] ;
2016-08-30 22:48:51 +00:00
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 23 */
2016-08-30 22:48:51 +00:00
/***/ function ( module , exports , _ _webpack _require _ _ ) {
2016-09-01 21:07:06 +00:00
exports = module . exports = _ _webpack _require _ _ ( 24 ) ( ) ;
2016-08-30 22:48:51 +00:00
// imports
// module
exports . 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 . 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.1 s linear ; \ n - o - transition : opacity 0.1 s linear ; \ n - moz - transition : opacity 0.1 s linear ; \ n transition : opacity 0.1 s 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 : - 1 px ; \ n border - top : 1 px solid # 2 c2c2c ; } \ 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.1 s linear ; \ n - o - transition : opacity 0.1 s linear ; \ n - moz - transition : opacity 0.1 s linear ; \ n transition : opacity 0.1 s linear ; \ n border : 0 ; \ n position : absolute ; \ n line - height : 19 px ; \ n height : 20 px ; \ n /* TODO, these are style notes */ \ n cursor : pointer ; \ n text - align : center ; \ n background - color : # 000 ; } \ n . dg . main . close - button : hover { \ n background - color : # 111 ; } \ n . dg . a { \ n float : right ; \ n margin - right : 15 px ; \ n overflow - x : hidden ; } \ n . dg . a . has - save > ul { \ n margin - top : 27 px ; } \ n . dg . a . has - save > ul . closed { \ n margin - top : 0 ; } \ n . dg . a . save - row { \ n position : fixed ; \ n top : 0 ; \ n z - index : 1002 ; } \ n . dg li { \ n - webkit - transition : height 0.1 s ease - out ; \ n - o - transition : height 0.1 s ease - out ; \ n - moz - transition : height 0.1 s ease - out ; \ n transition : height 0.1 s ease - out ; } \ n . dg li : not ( . folder ) { \ n cursor : auto ; \ n height : 27 px ; \ n line - height : 27 px ; \ n overflow : hidden ; \ n padding : 0 4 px 0 5 px ; } \ n . dg li . folder { \ n padding : 0 ; \ n border - left : 4 px solid transparent ; } \ n . dg li . title { \ n cursor : pointer ; \ n margin - left : - 4 px ; } \ 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 : 3 px ; \ n height : 27 px ; } \ 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 . dg . c input [ type = text ] { \ n border : 0 ; \ n margin - top : 4 px ; \ n padding : 3 px ; \ 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 : - 5 px ; \ n margin - right : 0 ; \ n height : 19 px ; \ n margin - top : 4 px ; } \ n . dg . slider - fg { \ n height : 100 % ; } \ n . dg . c input [ type = checkbox ] { \ n margin - top : 9 px ; } \ n . dg . c select { \ n margin - top : 5 px ; } \ 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 . selector { \ n display : none ; \ n position : absolute ; \ n margin - left : - 9 px ; \ n margin - top : 23 px ; \ 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 : 0 px 6 px ; } \ n . dg . dialogue { \ n background
// exports
/***/ } ,
2016-09-01 21:07:06 +00:00
/* 24 */
2016-08-30 22:48:51 +00:00
/***/ function ( module , exports ) {
/ *
MIT License http : //www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @ sokra
* /
// css base code, injected by the css-loader
module . exports = function ( ) {
var list = [ ] ;
// return the list of modules as css string
list . toString = function toString ( ) {
var result = [ ] ;
for ( var i = 0 ; i < this . length ; i ++ ) {
var item = this [ i ] ;
if ( item [ 2 ] ) {
result . push ( "@media " + item [ 2 ] + "{" + item [ 1 ] + "}" ) ;
} else {
result . push ( item [ 1 ] ) ;
}
}
return result . join ( "" ) ;
} ;
// import a list of modules into the list
list . i = function ( modules , mediaQuery ) {
if ( typeof modules === "string" )
modules = [ [ null , modules , "" ] ] ;
var alreadyImportedModules = { } ;
for ( var i = 0 ; i < this . length ; i ++ ) {
var id = this [ i ] [ 0 ] ;
if ( typeof id === "number" )
alreadyImportedModules [ id ] = true ;
}
for ( i = 0 ; i < modules . length ; i ++ ) {
var item = modules [ i ] ;
// skip already imported module
// this implementation is not 100% perfect for weird media query combinations
// when a module is imported multiple times with different media queries.
// I hope this will never occur (Hey this way we have smaller bundles)
if ( typeof item [ 0 ] !== "number" || ! alreadyImportedModules [ item [ 0 ] ] ) {
if ( mediaQuery && ! item [ 2 ] ) {
item [ 2 ] = mediaQuery ;
} else if ( mediaQuery ) {
item [ 2 ] = "(" + item [ 2 ] + ") and (" + mediaQuery + ")" ;
}
list . push ( item ) ;
}
}
} ;
return list ;
} ;
2015-08-14 16:30:03 +00:00
/***/ }
/******/ ] )
} ) ;
;
//# sourceMappingURL=dat.gui.js.map