mirror of
https://github.com/dataarts/dat.gui.git
synced 2024-12-12 04:08:27 +00:00
Migrateed to commonjs format
This build makes dat.gui commonjs friendly and allows it to be consumed as a regular commonjs package. All tests are passing, API is backward compatible.
This commit is contained in:
parent
a65c4f9b38
commit
97adbace4d
18
.gitignore
vendored
18
.gitignore
vendored
@ -1,3 +1,15 @@
|
|||||||
.DS_Store
|
lib-cov
|
||||||
.sass-cache
|
*.seed
|
||||||
.idea
|
*.log
|
||||||
|
*.csv
|
||||||
|
*.dat
|
||||||
|
*.out
|
||||||
|
*.pid
|
||||||
|
*.gz
|
||||||
|
|
||||||
|
pids
|
||||||
|
logs
|
||||||
|
results
|
||||||
|
|
||||||
|
npm-debug.log
|
||||||
|
node_modules
|
||||||
|
58
README.md
58
README.md
@ -1,67 +1,64 @@
|
|||||||
#dat.GUI
|
# UI Controller (dat.gui ported to commonjs)
|
||||||
|
|
||||||
A lightweight graphical user interface for changing variables in JavaScript.
|
A lightweight graphical user interface for changing variables in JavaScript.
|
||||||
|
|
||||||
Get started with dat.GUI by reading the tutorial at http://workshop.chromeexperiments.com/examples/gui.
|
Get started with dat.GUI by reading the tutorial at http://workshop.chromeexperiments.com/examples/gui.
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
## Packaged Builds
|
## Packaged Builds
|
||||||
|
|
||||||
The easiest way to use dat.GUI in your code is by using the built source at `build/dat.gui.min.js`. These built JavaScript files bundle all the necessary dependencies to run dat.GUI.
|
The easiest way to use dat.GUI in your code is by using the built source at `build/dat.gui.min.js`. These built JavaScript files bundle all the necessary dependencies to run dat.GUI.
|
||||||
|
|
||||||
In your `head` tag, include the following code:
|
In your `head` tag, include the following code:
|
||||||
```
|
|
||||||
|
``` html
|
||||||
<script type="text/javascript" src="dat.gui.min.js"></script>
|
<script type="text/javascript" src="dat.gui.min.js"></script>
|
||||||
```
|
```
|
||||||
|
|
||||||
----
|
## As commonjs module
|
||||||
|
|
||||||
##Using dat.GUI with require.js
|
Install the module:
|
||||||
Internally, dat.GUI uses [require.js](http://requirejs.org/) to handle dependency management. If you're making changes to the source and want to see the effects of your changes without building, use require js.
|
|
||||||
|
|
||||||
In your `head` tag, include the following code:
|
|
||||||
```
|
```
|
||||||
<script data-main="path/to/main" src="path/to/requirejs/require.js"></script>
|
npm install dat.gui
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, in `path/to/main.js`:
|
Use it:
|
||||||
```
|
|
||||||
require([
|
|
||||||
'path/to/gui/module/GUI'
|
|
||||||
], function(GUI) {
|
|
||||||
|
|
||||||
// No namespace necessary
|
``` js
|
||||||
var gui = new GUI();
|
var dat = require('dat.gui');
|
||||||
|
var obj = { x: 5 };
|
||||||
|
var gui = new dat.GUI();
|
||||||
|
|
||||||
|
gui.add(obj, 'x').onChange(function() {
|
||||||
|
// obj.x will now have updated value
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
## Directory Contents
|
## Directory Contents
|
||||||
* build: Concatenated source code.
|
|
||||||
* src: Modular code in [require.js](http://requirejs.org/) format. Also includes css, [scss](http://sass-lang.com/), and html, some of which is included during build.
|
|
||||||
* tests: [QUnit](https://github.com/jquery/qunit) test suite.
|
|
||||||
* utils: [node.js](http://nodejs.org/) utility scripts for compiling source.
|
|
||||||
|
|
||||||
----
|
* build: Concatenated source code for browsers.
|
||||||
|
* src: source code in commonjs format.
|
||||||
|
* tests: [QUnit](https://github.com/jquery/qunit) test suite.
|
||||||
|
|
||||||
## Building your own dat.GUI
|
## Building your own dat.GUI
|
||||||
|
|
||||||
In the terminal, enter the following:
|
In the terminal, enter the following:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ cd utils
|
npm start
|
||||||
$ node build_gui.js
|
|
||||||
```
|
```
|
||||||
|
|
||||||
This will create a namespaced, unminified build of dat.GUI at `build/dat.gui.js`
|
This will create a browserified build of dat.GUI at `build/dat.gui.js` and its
|
||||||
|
minified version at `build/dat.gui.min.js`.
|
||||||
_To export minified source using Closure Compiler, open `utils/build_gui.js` and set the `minify` parameter to `true`._
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
## Change log
|
## Change log
|
||||||
|
|
||||||
|
### Pending version number
|
||||||
|
* Moved to commonjs, made it browserify friendly.
|
||||||
|
* Back to GitHub.
|
||||||
|
|
||||||
### 0.5
|
### 0.5
|
||||||
* Moved to requirejs for dependency management.
|
* Moved to requirejs for dependency management.
|
||||||
* Changed global namespace from *DAT* to *dat* (lowercase).
|
* Changed global namespace from *DAT* to *dat* (lowercase).
|
||||||
@ -83,7 +80,8 @@ _To export minified source using Closure Compiler, open `utils/build_gui.js` and
|
|||||||
|
|
||||||
## Thanks
|
## Thanks
|
||||||
The following libraries / open-source projects were used in the development of dat.GUI:
|
The following libraries / open-source projects were used in the development of dat.GUI:
|
||||||
* [require.js](http://requirejs.org/)
|
|
||||||
|
* [browserify](http://browserify.org/)
|
||||||
* [Sass](http://sass-lang.com/)
|
* [Sass](http://sass-lang.com/)
|
||||||
* [node.js](http://nodejs.org/)
|
* [node.js](http://nodejs.org/)
|
||||||
* [QUnit](https://github.com/jquery/qunit) / [jquery](http://jquery.com/)
|
* [QUnit](https://github.com/jquery/qunit) / [jquery](http://jquery.com/)
|
@ -1,9 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "dat-gui",
|
"name": "dat-gui",
|
||||||
"version": "0.5.0",
|
"version": "0.5.1",
|
||||||
"homepage": "https://github.com/dataarts/dat.gui",
|
"homepage": "https://github.com/dataarts/dat.gui",
|
||||||
"authors": [
|
"authors": [
|
||||||
"Google Data Arts Team <dataarts@google.com>"
|
"Google Data Arts Team <dataarts@google.com>",
|
||||||
|
"Andrei Kashcha <anvaka@gmail.com>"
|
||||||
],
|
],
|
||||||
"description": "dat.gui is a lightweight controller library for JavaScript.",
|
"description": "dat.gui is a lightweight controller library for JavaScript.",
|
||||||
"main": "/build/dat.gui.js",
|
"main": "/build/dat.gui.js",
|
||||||
|
4163
build/dat.gui.js
4163
build/dat.gui.js
File diff suppressed because one or more lines are too long
89
build/dat.gui.min.js
vendored
89
build/dat.gui.min.js
vendored
File diff suppressed because one or more lines are too long
32
package.json
Normal file
32
package.json
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"name": "dat.gui",
|
||||||
|
"version": "0.5.1",
|
||||||
|
"main": "src/index.js",
|
||||||
|
"scripts": {
|
||||||
|
"browser": "browserify -s dat src/index.js > build/dat.gui.js",
|
||||||
|
"minify": "uglifyjs --comments -- ./build/dat.gui.js > ./build/dat.gui.min.js",
|
||||||
|
"release": "npm run browser && npm run minify",
|
||||||
|
"start": "npm run release"
|
||||||
|
},
|
||||||
|
"browserify": {
|
||||||
|
"transform": [
|
||||||
|
"brfs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/dataarts/dat.gui"
|
||||||
|
},
|
||||||
|
"author": [
|
||||||
|
"Data Arts Team, Google Creative Lab",
|
||||||
|
"Andrei Kashcha"
|
||||||
|
],
|
||||||
|
"license": "Apache 2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"brfs": "^1.4.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"browserify": "^9.0.8",
|
||||||
|
"uglify-js": "^2.4.20"
|
||||||
|
}
|
||||||
|
}
|
@ -11,14 +11,14 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var common = require('../utils/common.js');
|
||||||
'dat/color/interpret',
|
var toString = require('./toString.js');
|
||||||
'dat/color/math',
|
var math = require('./math.js');
|
||||||
'dat/color/toString',
|
var interpret = require('./interpret.js');
|
||||||
'dat/utils/common'
|
|
||||||
], function(interpret, math, toString, common) {
|
|
||||||
|
|
||||||
var Color = function() {
|
module.exports = Color;
|
||||||
|
|
||||||
|
function Color() {
|
||||||
|
|
||||||
this.__state = interpret.apply(this, arguments);
|
this.__state = interpret.apply(this, arguments);
|
||||||
|
|
||||||
@ -27,9 +27,7 @@ define([
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.__state.a = this.__state.a || 1;
|
this.__state.a = this.__state.a || 1;
|
||||||
|
}
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
Color.COMPONENTS = ['r', 'g', 'b', 'h', 's', 'v', 'hex', 'a'];
|
Color.COMPONENTS = ['r', 'g', 'b', 'h', 's', 'v', 'hex', 'a'];
|
||||||
|
|
||||||
@ -169,12 +167,10 @@ define([
|
|||||||
|
|
||||||
var result = math.rgb_to_hsv(color.r, color.g, color.b);
|
var result = math.rgb_to_hsv(color.r, color.g, color.b);
|
||||||
|
|
||||||
common.extend(color.__state,
|
common.extend(color.__state, {
|
||||||
{
|
|
||||||
s: result.s,
|
s: result.s,
|
||||||
v: result.v
|
v: result.v
|
||||||
}
|
});
|
||||||
);
|
|
||||||
|
|
||||||
if (!common.isNaN(result.h)) {
|
if (!common.isNaN(result.h)) {
|
||||||
color.__state.h = result.h;
|
color.__state.h = result.h;
|
||||||
@ -183,7 +179,3 @@ define([
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Color;
|
|
||||||
|
|
||||||
});
|
|
||||||
|
@ -11,10 +11,11 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
module.exports = createInterpert();
|
||||||
'dat/color/toString',
|
|
||||||
'dat/utils/common'
|
function createInterpert() {
|
||||||
], function(toString, common) {
|
var common = require('../utils/common.js');
|
||||||
|
var toString = require('./toString.js');
|
||||||
|
|
||||||
var result, toReturn;
|
var result, toReturn;
|
||||||
|
|
||||||
@ -337,4 +338,4 @@ define([
|
|||||||
return interpret;
|
return interpret;
|
||||||
|
|
||||||
|
|
||||||
});
|
}
|
||||||
|
@ -11,9 +11,9 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
module.exports = math();
|
||||||
|
|
||||||
], function() {
|
function math() {
|
||||||
|
|
||||||
var tmpComponent;
|
var tmpComponent;
|
||||||
|
|
||||||
@ -95,6 +95,5 @@ define([
|
|||||||
return value << (tmpComponent = componentIndex * 8) | (hex & ~(0xFF << tmpComponent));
|
return value << (tmpComponent = componentIndex * 8) | (hex & ~(0xFF << tmpComponent));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
|
@ -11,11 +11,11 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var common = require('../utils/common.js');
|
||||||
'dat/utils/common'
|
|
||||||
], function(common) {
|
|
||||||
|
|
||||||
return function(color) {
|
module.exports = toString;
|
||||||
|
|
||||||
|
function toString(color) {
|
||||||
|
|
||||||
if (color.a == 1 || common.isUndefined(color.a)) {
|
if (color.a == 1 || common.isUndefined(color.a)) {
|
||||||
|
|
||||||
@ -33,5 +33,3 @@ define([
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
|
@ -11,11 +11,11 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var Controller = require('./Controller.js');
|
||||||
'dat/controllers/Controller',
|
var common = require('../utils/common.js');
|
||||||
'dat/dom/dom',
|
var dom = require('../dom/dom.js');
|
||||||
'dat/utils/common'
|
|
||||||
], function(Controller, dom, common) {
|
module.exports = BooleanController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @class Provides a checkbox input to alter the boolean property of an object.
|
* @class Provides a checkbox input to alter the boolean property of an object.
|
||||||
@ -26,7 +26,7 @@ define([
|
|||||||
*
|
*
|
||||||
* @member dat.controllers
|
* @member dat.controllers
|
||||||
*/
|
*/
|
||||||
var BooleanController = function(object, property) {
|
function BooleanController(object, property) {
|
||||||
|
|
||||||
BooleanController.superclass.call(this, object, property);
|
BooleanController.superclass.call(this, object, property);
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ define([
|
|||||||
_this.setValue(!_this.__prev);
|
_this.setValue(!_this.__prev);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
}
|
||||||
|
|
||||||
BooleanController.superclass = Controller;
|
BooleanController.superclass = Controller;
|
||||||
|
|
||||||
@ -85,7 +85,3 @@ define([
|
|||||||
}
|
}
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return BooleanController;
|
|
||||||
|
|
||||||
});
|
|
@ -11,15 +11,15 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var Controller = require('./Controller.js');
|
||||||
'dat/controllers/Controller',
|
var common = require('../utils/common.js');
|
||||||
'dat/dom/dom',
|
var dom = require('../dom/dom.js');
|
||||||
'dat/color/Color',
|
var Color = require('../color/Color.js');
|
||||||
'dat/color/interpret',
|
var interpret = require('../color/interpret.js');
|
||||||
'dat/utils/common'
|
|
||||||
], function(Controller, dom, Color, interpret, common) {
|
|
||||||
|
|
||||||
var ColorController = function(object, property) {
|
module.exports = ColorController;
|
||||||
|
|
||||||
|
function ColorController(object, property) {
|
||||||
|
|
||||||
ColorController.superclass.call(this, object, property);
|
ColorController.superclass.call(this, object, property);
|
||||||
|
|
||||||
@ -317,8 +317,3 @@ define([
|
|||||||
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: -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%);'
|
elem.style.cssText += 'background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return ColorController;
|
|
||||||
|
|
||||||
});
|
|
@ -11,9 +11,8 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var common = require('../utils/common.js');
|
||||||
'dat/utils/common'
|
module.exports = Controller;
|
||||||
], function(common) {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @class An "abstract" class that represents a given property of an object.
|
* @class An "abstract" class that represents a given property of an object.
|
||||||
@ -23,7 +22,7 @@ define([
|
|||||||
*
|
*
|
||||||
* @member dat.controllers
|
* @member dat.controllers
|
||||||
*/
|
*/
|
||||||
var Controller = function(object, property) {
|
function Controller(object, property) {
|
||||||
|
|
||||||
this.initialValue = object[property];
|
this.initialValue = object[property];
|
||||||
|
|
||||||
@ -59,7 +58,7 @@ define([
|
|||||||
*/
|
*/
|
||||||
this.__onFinishChange = undefined;
|
this.__onFinishChange = undefined;
|
||||||
|
|
||||||
};
|
}
|
||||||
|
|
||||||
common.extend(
|
common.extend(
|
||||||
|
|
||||||
@ -131,14 +130,9 @@ define([
|
|||||||
* @returns {Boolean} true if the value has deviated from initialValue
|
* @returns {Boolean} true if the value has deviated from initialValue
|
||||||
*/
|
*/
|
||||||
isModified: function() {
|
isModified: function() {
|
||||||
return this.initialValue !== this.getValue()
|
return this.initialValue !== this.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return Controller;
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
@ -11,11 +11,11 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var Controller = require('./Controller.js');
|
||||||
'dat/controllers/Controller',
|
var common = require('../utils/common.js');
|
||||||
'dat/dom/dom',
|
var dom = require('../dom/dom.js');
|
||||||
'dat/utils/common'
|
|
||||||
], function(Controller, dom, common) {
|
module.exports = FunctionController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @class Provides a GUI interface to fire a specified method, a property of an object.
|
* @class Provides a GUI interface to fire a specified method, a property of an object.
|
||||||
@ -27,7 +27,7 @@ define([
|
|||||||
*
|
*
|
||||||
* @member dat.controllers
|
* @member dat.controllers
|
||||||
*/
|
*/
|
||||||
var FunctionController = function(object, property, text) {
|
function FunctionController(object, property, text) {
|
||||||
|
|
||||||
FunctionController.superclass.call(this, object, property);
|
FunctionController.superclass.call(this, object, property);
|
||||||
|
|
||||||
@ -45,16 +45,14 @@ define([
|
|||||||
|
|
||||||
this.domElement.appendChild(this.__button);
|
this.domElement.appendChild(this.__button);
|
||||||
|
|
||||||
|
}
|
||||||
};
|
|
||||||
|
|
||||||
FunctionController.superclass = Controller;
|
FunctionController.superclass = Controller;
|
||||||
|
|
||||||
common.extend(
|
common.extend(
|
||||||
|
|
||||||
FunctionController.prototype,
|
FunctionController.prototype,
|
||||||
Controller.prototype,
|
Controller.prototype, {
|
||||||
{
|
|
||||||
|
|
||||||
fire: function() {
|
fire: function() {
|
||||||
if (this.__onChange) {
|
if (this.__onChange) {
|
||||||
@ -68,7 +66,3 @@ define([
|
|||||||
}
|
}
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return FunctionController;
|
|
||||||
|
|
||||||
});
|
|
||||||
|
@ -11,10 +11,9 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var Controller = require('./Controller.js');
|
||||||
'dat/controllers/Controller',
|
var common = require('../utils/common.js');
|
||||||
'dat/utils/common'
|
module.exports = NumberController;
|
||||||
], function(Controller, common) {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @class Represents a given property of an object that is a number.
|
* @class Represents a given property of an object that is a number.
|
||||||
@ -30,7 +29,7 @@ define([
|
|||||||
*
|
*
|
||||||
* @member dat.controllers
|
* @member dat.controllers
|
||||||
*/
|
*/
|
||||||
var NumberController = function(object, property, params) {
|
function NumberController(object, property, params) {
|
||||||
|
|
||||||
NumberController.superclass.call(this, object, property);
|
NumberController.superclass.call(this, object, property);
|
||||||
|
|
||||||
@ -58,7 +57,7 @@ define([
|
|||||||
this.__precision = numDecimals(this.__impliedStep);
|
this.__precision = numDecimals(this.__impliedStep);
|
||||||
|
|
||||||
|
|
||||||
};
|
}
|
||||||
|
|
||||||
NumberController.superclass = Controller;
|
NumberController.superclass = Controller;
|
||||||
|
|
||||||
@ -139,7 +138,3 @@ define([
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return NumberController;
|
|
||||||
|
|
||||||
});
|
|
@ -11,11 +11,11 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var NumberController = require('./NumberController.js');
|
||||||
'dat/controllers/NumberController',
|
var common = require('../utils/common.js');
|
||||||
'dat/dom/dom',
|
var dom = require('../dom/dom.js');
|
||||||
'dat/utils/common'
|
|
||||||
], function(NumberController, dom, common) {
|
module.exports = NumberControllerBox;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @class Represents a given property of an object that is a number and
|
* @class Represents a given property of an object that is a number and
|
||||||
@ -33,7 +33,7 @@ define([
|
|||||||
*
|
*
|
||||||
* @member dat.controllers
|
* @member dat.controllers
|
||||||
*/
|
*/
|
||||||
var NumberControllerBox = function(object, property, params) {
|
function NumberControllerBox(object, property, params) {
|
||||||
|
|
||||||
this.__truncationSuspended = false;
|
this.__truncationSuspended = false;
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ define([
|
|||||||
|
|
||||||
this.domElement.appendChild(this.__input);
|
this.domElement.appendChild(this.__input);
|
||||||
|
|
||||||
};
|
}
|
||||||
|
|
||||||
NumberControllerBox.superclass = NumberController;
|
NumberControllerBox.superclass = NumberController;
|
||||||
|
|
||||||
@ -127,8 +127,3 @@ define([
|
|||||||
var tenTo = Math.pow(10, decimals);
|
var tenTo = Math.pow(10, decimals);
|
||||||
return Math.round(value * tenTo) / tenTo;
|
return Math.round(value * tenTo) / tenTo;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NumberControllerBox;
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
@ -11,14 +11,13 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var NumberController = require('./NumberController.js');
|
||||||
'dat/controllers/NumberController',
|
var common = require('../utils/common.js');
|
||||||
'dat/dom/dom',
|
var dom = require('../dom/dom.js');
|
||||||
'dat/utils/css',
|
var css = require('../utils/css.js');
|
||||||
'dat/utils/common',
|
var fs = require('fs');
|
||||||
'text!dat/controllers/NumberControllerSlider.css'
|
var styleSheet = fs.readFileSync(__dirname + '/NumberControllerSlider.css', 'utf8');
|
||||||
],
|
module.exports = NumberControllerSlider;
|
||||||
function(NumberController, dom, css, common, styleSheet) {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @class Represents a given property of an object that is a number, contains
|
* @class Represents a given property of an object that is a number, contains
|
||||||
@ -38,9 +37,13 @@ function(NumberController, dom, css, common, styleSheet) {
|
|||||||
*
|
*
|
||||||
* @member dat.controllers
|
* @member dat.controllers
|
||||||
*/
|
*/
|
||||||
var NumberControllerSlider = function(object, property, min, max, step) {
|
function NumberControllerSlider(object, property, min, max, step) {
|
||||||
|
|
||||||
NumberControllerSlider.superclass.call(this, object, property, { min: min, max: max, step: step });
|
NumberControllerSlider.superclass.call(this, object, property, {
|
||||||
|
min: min,
|
||||||
|
max: max,
|
||||||
|
step: step
|
||||||
|
});
|
||||||
|
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
@ -90,7 +93,7 @@ function(NumberController, dom, css, common, styleSheet) {
|
|||||||
this.__background.appendChild(this.__foreground);
|
this.__background.appendChild(this.__foreground);
|
||||||
this.domElement.appendChild(this.__background);
|
this.domElement.appendChild(this.__background);
|
||||||
|
|
||||||
};
|
}
|
||||||
|
|
||||||
NumberControllerSlider.superclass = NumberController;
|
NumberControllerSlider.superclass = NumberController;
|
||||||
|
|
||||||
@ -123,7 +126,3 @@ function(NumberController, dom, css, common, styleSheet) {
|
|||||||
function map(v, i1, i2, o1, o2) {
|
function map(v, i1, i2, o1, o2) {
|
||||||
return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));
|
return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));
|
||||||
}
|
}
|
||||||
|
|
||||||
return NumberControllerSlider;
|
|
||||||
|
|
||||||
});
|
|
@ -11,12 +11,11 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var Controller = require('./Controller.js');
|
||||||
'dat/controllers/Controller',
|
var dom = require('../dom/dom.js');
|
||||||
'dat/dom/dom',
|
var common = require('../utils/common.js');
|
||||||
'dat/utils/common'
|
|
||||||
],
|
module.exports = OptionController;
|
||||||
function(Controller, dom, common) {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @class Provides a select input to alter the property of an object, using a
|
* @class Provides a select input to alter the property of an object, using a
|
||||||
@ -31,7 +30,7 @@ function(Controller, dom, common) {
|
|||||||
*
|
*
|
||||||
* @member dat.controllers
|
* @member dat.controllers
|
||||||
*/
|
*/
|
||||||
var OptionController = function(object, property, options) {
|
function OptionController(object, property, options) {
|
||||||
|
|
||||||
OptionController.superclass.call(this, object, property);
|
OptionController.superclass.call(this, object, property);
|
||||||
|
|
||||||
@ -70,7 +69,7 @@ function(Controller, dom, common) {
|
|||||||
|
|
||||||
this.domElement.appendChild(this.__select);
|
this.domElement.appendChild(this.__select);
|
||||||
|
|
||||||
};
|
}
|
||||||
|
|
||||||
OptionController.superclass = Controller;
|
OptionController.superclass = Controller;
|
||||||
|
|
||||||
@ -97,7 +96,3 @@ function(Controller, dom, common) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return OptionController;
|
|
||||||
|
|
||||||
});
|
|
@ -11,11 +11,11 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var Controller = require('./Controller.js');
|
||||||
'dat/controllers/Controller',
|
var dom = require('../dom/dom.js');
|
||||||
'dat/dom/dom',
|
var common = require('../utils/common.js');
|
||||||
'dat/utils/common'
|
|
||||||
], function(Controller, dom, common) {
|
module.exports = StringController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @class Provides a text input to alter the string property of an object.
|
* @class Provides a text input to alter the string property of an object.
|
||||||
@ -27,7 +27,7 @@ define([
|
|||||||
*
|
*
|
||||||
* @member dat.controllers
|
* @member dat.controllers
|
||||||
*/
|
*/
|
||||||
var StringController = function(object, property) {
|
function StringController(object, property) {
|
||||||
|
|
||||||
StringController.superclass.call(this, object, property);
|
StringController.superclass.call(this, object, property);
|
||||||
|
|
||||||
@ -83,7 +83,3 @@ define([
|
|||||||
}
|
}
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return StringController;
|
|
||||||
|
|
||||||
});
|
|
@ -10,19 +10,17 @@
|
|||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
var OptionController = require('./OptionController.js');
|
||||||
|
var NumberControllerBox = require('./NumberControllerBox.js');
|
||||||
|
var NumberControllerSlider = require('./NumberControllerSlider.js');
|
||||||
|
var StringController = require('./StringController.js');
|
||||||
|
var FunctionController = require('./FunctionController.js');
|
||||||
|
var BooleanController = require('./BooleanController.js');
|
||||||
|
var common = require('../utils/common.js');
|
||||||
|
|
||||||
define([
|
module.exports = factory;
|
||||||
'dat/controllers/OptionController',
|
|
||||||
'dat/controllers/NumberControllerBox',
|
|
||||||
'dat/controllers/NumberControllerSlider',
|
|
||||||
'dat/controllers/StringController',
|
|
||||||
'dat/controllers/FunctionController',
|
|
||||||
'dat/controllers/BooleanController',
|
|
||||||
'dat/utils/common'
|
|
||||||
],
|
|
||||||
function(OptionController, NumberControllerBox, NumberControllerSlider, StringController, FunctionController, BooleanController, common) {
|
|
||||||
|
|
||||||
return function(object, property) {
|
function factory(object, property) {
|
||||||
|
|
||||||
var initialValue = object[property];
|
var initialValue = object[property];
|
||||||
|
|
||||||
@ -42,7 +40,10 @@ define([
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
return new NumberControllerBox(object, property, { min: arguments[2], max: arguments[3] });
|
return new NumberControllerBox(object, property, {
|
||||||
|
min: arguments[2],
|
||||||
|
max: arguments[3]
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,5 +62,3 @@ define([
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
|
@ -11,13 +11,12 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var common = require('../utils/common.js');
|
||||||
'dat/dom/dom',
|
var dom = require('./dom.js');
|
||||||
'dat/utils/common'
|
|
||||||
], function(dom, common) {
|
|
||||||
|
|
||||||
|
module.exports = CenteredDiv;
|
||||||
|
|
||||||
var CenteredDiv = function() {
|
function CenteredDiv() {
|
||||||
|
|
||||||
this.backgroundElement = document.createElement('div');
|
this.backgroundElement = document.createElement('div');
|
||||||
common.extend(this.backgroundElement.style, {
|
common.extend(this.backgroundElement.style, {
|
||||||
@ -111,7 +110,3 @@ define([
|
|||||||
function lockScroll(e) {
|
function lockScroll(e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return CenteredDiv;
|
|
||||||
|
|
||||||
});
|
|
@ -11,9 +11,7 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
var common = require('../utils/common.js');
|
||||||
'dat/utils/common'
|
|
||||||
], function(common) {
|
|
||||||
|
|
||||||
var EVENT_MAP = {
|
var EVENT_MAP = {
|
||||||
'HTMLEvents': ['change'],
|
'HTMLEvents': ['change'],
|
||||||
@ -63,8 +61,7 @@ define([
|
|||||||
|
|
||||||
elem.onselectstart = selectable ? function() {
|
elem.onselectstart = selectable ? function() {
|
||||||
return false;
|
return false;
|
||||||
} : function() {
|
} : function() {};
|
||||||
};
|
|
||||||
|
|
||||||
elem.style.MozUserSelect = selectable ? 'auto' : 'none';
|
elem.style.MozUserSelect = selectable ? 'auto' : 'none';
|
||||||
elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';
|
elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';
|
||||||
@ -261,7 +258,10 @@ define([
|
|||||||
* @param elem
|
* @param elem
|
||||||
*/
|
*/
|
||||||
getOffset: function(elem) {
|
getOffset: function(elem) {
|
||||||
var offset = {left: 0, top:0};
|
var offset = {
|
||||||
|
left: 0,
|
||||||
|
top: 0
|
||||||
|
};
|
||||||
if (elem.offsetParent) {
|
if (elem.offsetParent) {
|
||||||
do {
|
do {
|
||||||
offset.left += elem.offsetLeft;
|
offset.left += elem.offsetLeft;
|
||||||
@ -282,6 +282,4 @@ define([
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return dom;
|
module.exports = dom;
|
||||||
|
|
||||||
});
|
|
||||||
|
@ -10,31 +10,28 @@
|
|||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
var fs = require('fs');
|
||||||
|
var css = require('../utils/css.js');
|
||||||
|
|
||||||
define([
|
var saveDialogueContents = fs.readFileSync(__dirname + '/saveDialogue.html', 'utf8');
|
||||||
|
var styleSheet = fs.readFileSync(__dirname + '/style.css', 'utf8');
|
||||||
|
|
||||||
'dat/utils/css',
|
var controllerFactory = require('../controllers/factory.js');
|
||||||
|
var Controller = require('../controllers/Controller.js');
|
||||||
|
var BooleanController = require('../controllers/BooleanController.js');
|
||||||
|
var FunctionController = require('../controllers/FunctionController.js');
|
||||||
|
var NumberControllerBox = require('../controllers/NumberControllerBox.js');
|
||||||
|
var NumberControllerSlider = require('../controllers/NumberControllerSlider.js');
|
||||||
|
var ColorController = require('../controllers/ColorController.js');
|
||||||
|
|
||||||
'text!dat/gui/saveDialogue.html',
|
var raf = require('../utils/requestAnimationFrame.js');
|
||||||
'text!dat/gui/style.css',
|
var CenteredDiv = require('../dom/CenteredDiv.js');
|
||||||
|
var dom = require('../dom/dom.js');
|
||||||
|
var common = require('../utils/common.js');
|
||||||
|
|
||||||
'dat/controllers/factory',
|
module.exports = createGUI();
|
||||||
'dat/controllers/Controller',
|
|
||||||
'dat/controllers/BooleanController',
|
|
||||||
'dat/controllers/FunctionController',
|
|
||||||
'dat/controllers/NumberControllerBox',
|
|
||||||
'dat/controllers/NumberControllerSlider',
|
|
||||||
'dat/controllers/OptionController',
|
|
||||||
'dat/controllers/ColorController',
|
|
||||||
|
|
||||||
'dat/utils/requestAnimationFrame',
|
function createGUI() {
|
||||||
|
|
||||||
'dat/dom/CenteredDiv',
|
|
||||||
'dat/dom/dom',
|
|
||||||
|
|
||||||
'dat/utils/common'
|
|
||||||
|
|
||||||
], function(css, saveDialogueContents, styleSheet, controllerFactory, Controller, BooleanController, FunctionController, NumberControllerBox, NumberControllerSlider, OptionController, ColorController, requestAnimationFrame, CenteredDiv, dom, common) {
|
|
||||||
|
|
||||||
css.inject(styleSheet);
|
css.inject(styleSheet);
|
||||||
|
|
||||||
@ -156,7 +153,9 @@ define([
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
params.load = { preset: DEFAULT_DEFAULT_PRESET_NAME };
|
params.load = {
|
||||||
|
preset: DEFAULT_DEFAULT_PRESET_NAME
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -425,10 +424,18 @@ define([
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dom.bind(window, 'resize', function() { _this.onResize() });
|
dom.bind(window, 'resize', function() {
|
||||||
dom.bind(this.__ul, 'webkitTransitionEnd', function() { _this.onResize(); });
|
_this.onResize()
|
||||||
dom.bind(this.__ul, 'transitionend', function() { _this.onResize() });
|
});
|
||||||
dom.bind(this.__ul, 'oTransitionEnd', function() { _this.onResize() });
|
dom.bind(this.__ul, 'webkitTransitionEnd', function() {
|
||||||
|
_this.onResize();
|
||||||
|
});
|
||||||
|
dom.bind(this.__ul, 'transitionend', function() {
|
||||||
|
_this.onResize()
|
||||||
|
});
|
||||||
|
dom.bind(this.__ul, 'oTransitionEnd', function() {
|
||||||
|
_this.onResize()
|
||||||
|
});
|
||||||
this.onResize();
|
this.onResize();
|
||||||
|
|
||||||
|
|
||||||
@ -446,6 +453,7 @@ define([
|
|||||||
this.saveToLocalStorageIfPossible = saveToLocalStorage;
|
this.saveToLocalStorageIfPossible = saveToLocalStorage;
|
||||||
|
|
||||||
var root = _this.getRoot();
|
var root = _this.getRoot();
|
||||||
|
|
||||||
function resetWidth() {
|
function resetWidth() {
|
||||||
var root = _this.getRoot();
|
var root = _this.getRoot();
|
||||||
root.width += 1;
|
root.width += 1;
|
||||||
@ -509,8 +517,7 @@ define([
|
|||||||
return add(
|
return add(
|
||||||
this,
|
this,
|
||||||
object,
|
object,
|
||||||
property,
|
property, {
|
||||||
{
|
|
||||||
factoryArgs: Array.prototype.slice.call(arguments, 2)
|
factoryArgs: Array.prototype.slice.call(arguments, 2)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -528,8 +535,7 @@ define([
|
|||||||
return add(
|
return add(
|
||||||
this,
|
this,
|
||||||
object,
|
object,
|
||||||
property,
|
property, {
|
||||||
{
|
|
||||||
color: true
|
color: true
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -576,7 +582,10 @@ define([
|
|||||||
' name "' + name + '"');
|
' name "' + name + '"');
|
||||||
}
|
}
|
||||||
|
|
||||||
var new_gui_params = { name: name, parent: this };
|
var new_gui_params = {
|
||||||
|
name: name,
|
||||||
|
parent: this
|
||||||
|
};
|
||||||
|
|
||||||
// We need to pass down the autoPlace trait so that we can
|
// We need to pass down the autoPlace trait so that we can
|
||||||
// attach event listeners to open/close folder actions to
|
// attach event listeners to open/close folder actions to
|
||||||
@ -878,8 +887,7 @@ define([
|
|||||||
return add(
|
return add(
|
||||||
gui,
|
gui,
|
||||||
controller.object,
|
controller.object,
|
||||||
controller.property,
|
controller.property, {
|
||||||
{
|
|
||||||
before: controller.__li.nextElementSibling,
|
before: controller.__li.nextElementSibling,
|
||||||
factoryArgs: [common.toArray(arguments)]
|
factoryArgs: [common.toArray(arguments)]
|
||||||
}
|
}
|
||||||
@ -893,8 +901,7 @@ define([
|
|||||||
return add(
|
return add(
|
||||||
gui,
|
gui,
|
||||||
controller.object,
|
controller.object,
|
||||||
controller.property,
|
controller.property, {
|
||||||
{
|
|
||||||
before: controller.__li.nextElementSibling,
|
before: controller.__li.nextElementSibling,
|
||||||
factoryArgs: [options]
|
factoryArgs: [options]
|
||||||
}
|
}
|
||||||
@ -924,8 +931,11 @@ define([
|
|||||||
// All sliders should be accompanied by a box.
|
// All sliders should be accompanied by a box.
|
||||||
if (controller instanceof NumberControllerSlider) {
|
if (controller instanceof NumberControllerSlider) {
|
||||||
|
|
||||||
var box = new NumberControllerBox(controller.object, controller.property,
|
var box = new NumberControllerBox(controller.object, controller.property, {
|
||||||
{ min: controller.__min, max: controller.__max, step: controller.__step });
|
min: controller.__min,
|
||||||
|
max: controller.__max,
|
||||||
|
step: controller.__step
|
||||||
|
});
|
||||||
|
|
||||||
common.each(['updateDisplay', 'onChange', 'onFinishChange'], function(method) {
|
common.each(['updateDisplay', 'onChange', 'onFinishChange'], function(method) {
|
||||||
var pc = controller[method];
|
var pc = controller[method];
|
||||||
@ -940,8 +950,7 @@ define([
|
|||||||
dom.addClass(li, 'has-slider');
|
dom.addClass(li, 'has-slider');
|
||||||
controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild);
|
controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild);
|
||||||
|
|
||||||
}
|
} else if (controller instanceof NumberControllerBox) {
|
||||||
else if (controller instanceof NumberControllerBox) {
|
|
||||||
|
|
||||||
var r = function(returned) {
|
var r = function(returned) {
|
||||||
|
|
||||||
@ -953,8 +962,7 @@ define([
|
|||||||
return add(
|
return add(
|
||||||
gui,
|
gui,
|
||||||
controller.object,
|
controller.object,
|
||||||
controller.property,
|
controller.property, {
|
||||||
{
|
|
||||||
before: controller.__li.nextElementSibling,
|
before: controller.__li.nextElementSibling,
|
||||||
factoryArgs: [controller.__min, controller.__max, controller.__step]
|
factoryArgs: [controller.__min, controller.__max, controller.__step]
|
||||||
});
|
});
|
||||||
@ -968,8 +976,7 @@ define([
|
|||||||
controller.min = common.compose(r, controller.min);
|
controller.min = common.compose(r, controller.min);
|
||||||
controller.max = common.compose(r, controller.max);
|
controller.max = common.compose(r, controller.max);
|
||||||
|
|
||||||
}
|
} else if (controller instanceof BooleanController) {
|
||||||
else if (controller instanceof BooleanController) {
|
|
||||||
|
|
||||||
dom.bind(li, 'click', function() {
|
dom.bind(li, 'click', function() {
|
||||||
dom.fakeEvent(controller.__checkbox, 'click');
|
dom.fakeEvent(controller.__checkbox, 'click');
|
||||||
@ -979,8 +986,7 @@ define([
|
|||||||
e.stopPropagation(); // Prevents double-toggle
|
e.stopPropagation(); // Prevents double-toggle
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
} else if (controller instanceof FunctionController) {
|
||||||
else if (controller instanceof FunctionController) {
|
|
||||||
|
|
||||||
dom.bind(li, 'click', function() {
|
dom.bind(li, 'click', function() {
|
||||||
dom.fakeEvent(controller.__button, 'click');
|
dom.fakeEvent(controller.__button, 'click');
|
||||||
@ -994,8 +1000,7 @@ define([
|
|||||||
dom.removeClass(controller.__button, 'hover');
|
dom.removeClass(controller.__button, 'hover');
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
} else if (controller instanceof ColorController) {
|
||||||
else if (controller instanceof ColorController) {
|
|
||||||
|
|
||||||
dom.addClass(li, 'color');
|
dom.addClass(li, 'color');
|
||||||
controller.updateDisplay = common.compose(function(r) {
|
controller.updateDisplay = common.compose(function(r) {
|
||||||
@ -1278,7 +1283,8 @@ define([
|
|||||||
// set the width manually if we want it to bleed to the edge
|
// set the width manually if we want it to bleed to the edge
|
||||||
if (gui.__save_row && gui.autoPlace) {
|
if (gui.__save_row && gui.autoPlace) {
|
||||||
gui.__save_row.style.width = w + 'px';
|
gui.__save_row.style.width = w + 'px';
|
||||||
}if (gui.__closeButton) {
|
}
|
||||||
|
if (gui.__closeButton) {
|
||||||
gui.__closeButton.style.width = w + 'px';
|
gui.__closeButton.style.width = w + 'px';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1343,7 +1349,7 @@ define([
|
|||||||
|
|
||||||
if (controllerArray.length != 0) {
|
if (controllerArray.length != 0) {
|
||||||
|
|
||||||
requestAnimationFrame(function() {
|
raf(function() {
|
||||||
updateDisplays(controllerArray);
|
updateDisplays(controllerArray);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1356,5 +1362,4 @@ define([
|
|||||||
}
|
}
|
||||||
|
|
||||||
return GUI;
|
return GUI;
|
||||||
|
}
|
||||||
});
|
|
||||||
|
@ -11,8 +11,9 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
define([
|
module.exports = common();
|
||||||
], function() {
|
|
||||||
|
function common() {
|
||||||
|
|
||||||
var ARR_EACH = Array.prototype.forEach;
|
var ARR_EACH = Array.prototype.forEach;
|
||||||
var ARR_SLICE = Array.prototype.slice;
|
var ARR_SLICE = Array.prototype.slice;
|
||||||
@ -63,7 +64,7 @@ define([
|
|||||||
args = [toCall[i].apply(this, args)];
|
args = [toCall[i].apply(this, args)];
|
||||||
}
|
}
|
||||||
return args[0];
|
return args[0];
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
each: function(obj, itr, scope) {
|
each: function(obj, itr, scope) {
|
||||||
@ -136,5 +137,4 @@ define([
|
|||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
}
|
||||||
});
|
|
||||||
|
@ -10,9 +10,9 @@
|
|||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
module.exports = css();
|
||||||
|
|
||||||
define([],
|
function css() {
|
||||||
function() {
|
|
||||||
return {
|
return {
|
||||||
load: function (url, doc) {
|
load: function (url, doc) {
|
||||||
doc = doc || document;
|
doc = doc || document;
|
||||||
@ -29,5 +29,5 @@ function() {
|
|||||||
injected.innerHTML = css;
|
injected.innerHTML = css;
|
||||||
doc.getElementsByTagName('head')[0].appendChild(injected);
|
doc.getElementsByTagName('head')[0].appendChild(injected);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
@ -10,9 +10,9 @@
|
|||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
module.exports = raf();
|
||||||
|
|
||||||
define([
|
function raf() {
|
||||||
], function() {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* requirejs version of Paul Irish's RequestAnimationFrame
|
* requirejs version of Paul Irish's RequestAnimationFrame
|
||||||
@ -28,4 +28,4 @@ define([
|
|||||||
window.setTimeout(callback, 1000 / 60);
|
window.setTimeout(callback, 1000 / 60);
|
||||||
|
|
||||||
};
|
};
|
||||||
});
|
}
|
||||||
|
38
src/index.js
Normal file
38
src/index.js
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/** @license
|
||||||
|
* dat-gui JavaScript Controller Library
|
||||||
|
* http://code.google.com/p/dat-gui
|
||||||
|
*
|
||||||
|
* Copyright 2011 Data Arts Team, Google Creative Lab
|
||||||
|
* Copyright 2015 Andrei Kashcha
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
module.exports = {
|
||||||
|
color: {
|
||||||
|
math: require('./dat/color/math.js'),
|
||||||
|
interpret: require('./dat/color/interpret.js'),
|
||||||
|
Color: require('./dat/color/Color.js')
|
||||||
|
},
|
||||||
|
dom: {
|
||||||
|
dom: require('./dat/dom/dom.js')
|
||||||
|
},
|
||||||
|
controllers: {
|
||||||
|
Controller: require('./dat/controllers/Controller.js'),
|
||||||
|
BooleanController: require('./dat/controllers/BooleanController.js'),
|
||||||
|
OptionController: require('./dat/controllers/OptionController.js'),
|
||||||
|
StringController: require('./dat/controllers/StringController.js'),
|
||||||
|
NumberController: require('./dat/controllers/NumberController.js'),
|
||||||
|
NumberControllerBox: require('./dat/controllers/NumberControllerBox.js'),
|
||||||
|
NumberControllerSlider: require('./dat/controllers/NumberControllerSlider.js'),
|
||||||
|
FunctionController: require('./dat/controllers/FunctionController.js'),
|
||||||
|
ColorController: require('./dat/controllers/ColorController.js'),
|
||||||
|
},
|
||||||
|
gui: {
|
||||||
|
GUI: require('./dat/gui/GUI.js')
|
||||||
|
},
|
||||||
|
GUI: require('./dat/gui/GUI.js')
|
||||||
|
};
|
@ -1,19 +0,0 @@
|
|||||||
var builder = require('./builder.js');
|
|
||||||
|
|
||||||
builder.build({
|
|
||||||
"baseUrl": "../src/",
|
|
||||||
"main": "dat/gui/GUI",
|
|
||||||
"out": "../build/dat.gui.js",
|
|
||||||
"minify": false,
|
|
||||||
"shortcut": "dat.GUI",
|
|
||||||
"paths": {}
|
|
||||||
});
|
|
||||||
|
|
||||||
builder.build({
|
|
||||||
"baseUrl": "../src/",
|
|
||||||
"main": "dat/gui/GUI",
|
|
||||||
"out": "../build/dat.gui.min.js",
|
|
||||||
"minify": true,
|
|
||||||
"shortcut": "dat.GUI",
|
|
||||||
"paths": {}
|
|
||||||
});
|
|
@ -1,8 +0,0 @@
|
|||||||
require('./builder.js').build({
|
|
||||||
"baseUrl": "../src/",
|
|
||||||
"main": "dat/color/Color",
|
|
||||||
"out": "../build/dat.color.js",
|
|
||||||
"minify": false,
|
|
||||||
"shortcut": "dat.Color",
|
|
||||||
"paths": {}
|
|
||||||
});
|
|
@ -1,8 +0,0 @@
|
|||||||
require('./builder.js').build({
|
|
||||||
"baseUrl": "../src/",
|
|
||||||
"main": "dat/gui/GUI",
|
|
||||||
"out": "../build/dat.gui.js",
|
|
||||||
"minify": false,
|
|
||||||
"shortcut": "dat.GUI",
|
|
||||||
"paths": {}
|
|
||||||
});
|
|
284
utils/builder.js
284
utils/builder.js
@ -1,284 +0,0 @@
|
|||||||
/**
|
|
||||||
* dat-gui JavaScript Controller Library
|
|
||||||
* http://code.google.com/p/dat-gui
|
|
||||||
*
|
|
||||||
* Copyright 2011 Data Arts Team, Google Creative Lab
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
var fs = require('fs'),
|
|
||||||
closure = require('./closure'),
|
|
||||||
params,
|
|
||||||
defined,
|
|
||||||
third_party,
|
|
||||||
request_counts,
|
|
||||||
namespaces,
|
|
||||||
next_load = '',
|
|
||||||
next_path = '';
|
|
||||||
|
|
||||||
exports.build = build;
|
|
||||||
exports.file_exists = file_exists;
|
|
||||||
exports.read_file = read_file;
|
|
||||||
exports.tab = tab;
|
|
||||||
|
|
||||||
exports.license = read_file('license.txt');
|
|
||||||
|
|
||||||
function build(_params) {
|
|
||||||
|
|
||||||
params = _params;
|
|
||||||
|
|
||||||
defined = {};
|
|
||||||
third_party = {};
|
|
||||||
request_counts = {};
|
|
||||||
namespaces = {};
|
|
||||||
|
|
||||||
var deps = [];
|
|
||||||
|
|
||||||
load_module(params.baseUrl + params.main + '.js', params.main);
|
|
||||||
|
|
||||||
for (var i in defined) {
|
|
||||||
if (params.verbose) console.log('Loaded: ' + defined[i].path);
|
|
||||||
deps.push(defined[i].path);
|
|
||||||
if (defined[i].module) {
|
|
||||||
var namespace = i.substr(0, i.lastIndexOf('/'));
|
|
||||||
namespaces[namespace] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var to_write = '';
|
|
||||||
var ensured = {};
|
|
||||||
|
|
||||||
|
|
||||||
for (var name in params.paths) {
|
|
||||||
var path = params.baseUrl + params.paths[name] + '.js';
|
|
||||||
var str = read_file(path);
|
|
||||||
if (str === false) {
|
|
||||||
console.log('Failed to locate dependency \'' + name + '\' at ' + path);
|
|
||||||
fail();
|
|
||||||
}
|
|
||||||
third_party[name] = str;
|
|
||||||
to_write += third_party[name] + "\n\n";
|
|
||||||
if (params.verbose) console.log('Loaded: ' + path);
|
|
||||||
//deps.push(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ensure namespaces
|
|
||||||
for (i in namespaces) {
|
|
||||||
|
|
||||||
var split = i.split('/');
|
|
||||||
|
|
||||||
for (var j = 0; j < split.length; j++) {
|
|
||||||
var cur = [];
|
|
||||||
if (j == 0 && !ensured[split[j]]) {
|
|
||||||
to_write += '/** @namespace */\n';
|
|
||||||
to_write += 'var ' + split[j] + ' = ' + split[j] + ' || {};\n\n';
|
|
||||||
ensured[split[j]] = true;
|
|
||||||
} else {
|
|
||||||
for (var k = 0; k <= j; k++) {
|
|
||||||
cur.push(split[k]);
|
|
||||||
}
|
|
||||||
var curn = cur.join('.');
|
|
||||||
if (!ensured[curn]) {
|
|
||||||
to_write += '/** @namespace */\n';
|
|
||||||
to_write += curn + ' = ' + curn + ' || {};\n\n';
|
|
||||||
}
|
|
||||||
ensured[curn] = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
var shared_count = 0;
|
|
||||||
for (i in request_counts) {
|
|
||||||
var count = request_counts[i];
|
|
||||||
if (count > 1) {
|
|
||||||
if (i in defined) {
|
|
||||||
var new_shared = i.replace(/\//g, '.');
|
|
||||||
var v = new_shared + ' = ' + defined[i].getClosure() + ';\n';
|
|
||||||
to_write += v + "\n\n";
|
|
||||||
defined[i].shared = new_shared;
|
|
||||||
shared_count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
to_write += params.shortcut + ' = ' + params.main.replace(/\//g, '.') + ' = ' + defined[params.main].getClosure() + ';';
|
|
||||||
|
|
||||||
if (params.verbose) console.log('Exported: ' + params.main + ' to window.' + params.shortcut);
|
|
||||||
|
|
||||||
if (params.minify) {
|
|
||||||
|
|
||||||
console.log('Compiling minified source ...');
|
|
||||||
|
|
||||||
|
|
||||||
closure.compile(to_write, function(error, code) {
|
|
||||||
if (error) {
|
|
||||||
console.log(error);
|
|
||||||
} else {
|
|
||||||
write(exports.license + code);
|
|
||||||
}
|
|
||||||
if (params.on_compile) {
|
|
||||||
params.on_compile();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
write(exports.license + "\n" + to_write);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return deps;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function define(deps, callback) {
|
|
||||||
|
|
||||||
this.name = next_load;
|
|
||||||
this.path = next_path;
|
|
||||||
this.shared = false;
|
|
||||||
|
|
||||||
defined[this.name] = this;
|
|
||||||
|
|
||||||
if (Array.isArray(deps)) {
|
|
||||||
|
|
||||||
this.deps = deps;
|
|
||||||
this.callback = callback.toString();
|
|
||||||
this.module = true;
|
|
||||||
|
|
||||||
// Simple define call, just an object
|
|
||||||
} else if (typeof deps === 'object') {
|
|
||||||
|
|
||||||
var props = [];
|
|
||||||
for (var i in deps) {
|
|
||||||
props.push(i + ':' + deps[i].toString())
|
|
||||||
}
|
|
||||||
this.callback = '{' + props.join(',') + '}';
|
|
||||||
this.module = true;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.deps = deps;
|
|
||||||
this.callback = callback;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
this.getClosure = function() {
|
|
||||||
if (this.shared) return this.shared;
|
|
||||||
if (!this.deps || this.text) return this.callback;
|
|
||||||
var arg_string = '(';
|
|
||||||
var args = [];
|
|
||||||
for (var i in this.deps) {
|
|
||||||
var dep = this.deps[i];
|
|
||||||
if (dep in defined) {
|
|
||||||
var closure = defined[dep].getClosure();
|
|
||||||
if (!defined[dep].shared && !defined[dep].text) {
|
|
||||||
closure = defined[dep].name.replace(/\//g, '.') + ' = ' + closure;
|
|
||||||
}
|
|
||||||
args.push(closure);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
arg_string += args.join(',\n');
|
|
||||||
arg_string += ')';
|
|
||||||
return '(' + this.callback + ')' + arg_string;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
this.recurseDeps = function() {
|
|
||||||
|
|
||||||
if (!this.deps) return;
|
|
||||||
|
|
||||||
for (var i in this.deps) {
|
|
||||||
|
|
||||||
var dep = this.deps[i];
|
|
||||||
|
|
||||||
if (dep in params.paths) continue;
|
|
||||||
|
|
||||||
var path = params.baseUrl + dep;
|
|
||||||
|
|
||||||
// Define module?
|
|
||||||
if (file_exists(path + '.js')) {
|
|
||||||
load_module(path + '.js', dep);
|
|
||||||
|
|
||||||
// Text module?
|
|
||||||
} else if (path.match(/text!/) != null) {
|
|
||||||
load_text(path.replace('text!', ''), dep);
|
|
||||||
}
|
|
||||||
|
|
||||||
// up the request count
|
|
||||||
if (dep in request_counts) {
|
|
||||||
request_counts[dep]++
|
|
||||||
} else {
|
|
||||||
request_counts[dep] = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
this.recurseDeps();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function file_exists(path) {
|
|
||||||
try {
|
|
||||||
var stats = fs.lstatSync(path)
|
|
||||||
return stats.isFile();
|
|
||||||
} catch (e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function read_file(path) {
|
|
||||||
try {
|
|
||||||
return fs.readFileSync(path).toString();
|
|
||||||
} catch (e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function load_module(path, name) {
|
|
||||||
name = name || path;
|
|
||||||
if (name in defined) return;
|
|
||||||
next_load = name;
|
|
||||||
next_path = path;
|
|
||||||
eval('new ' + read_file(path));
|
|
||||||
}
|
|
||||||
|
|
||||||
function load_text(path, name) {
|
|
||||||
name = name || path;
|
|
||||||
if (name in defined) return;
|
|
||||||
var text = read_file(path);
|
|
||||||
text = text.replace(/\r/g, "\\r");
|
|
||||||
text = text.replace(/\n/g, "\\n");
|
|
||||||
text = text.replace(/"/g, "\\\"");
|
|
||||||
next_load = name;
|
|
||||||
next_path = path;
|
|
||||||
var d = new define([], '"' + text + '"');
|
|
||||||
d.text = true;
|
|
||||||
d.module = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function tab(str, tabs) {
|
|
||||||
var lines = str.split("\n");
|
|
||||||
for (var i in lines) {
|
|
||||||
lines[i] = tabs + lines[i];
|
|
||||||
}
|
|
||||||
return lines.join("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
function write(str) {
|
|
||||||
fs.writeFile(params.out, str);
|
|
||||||
console.log('Saved to ' + params.out);
|
|
||||||
}
|
|
||||||
|
|
||||||
function fail() {
|
|
||||||
console.log('Build failed.');
|
|
||||||
process.exit(0);
|
|
||||||
}
|
|
108
utils/closure.js
108
utils/closure.js
@ -1,108 +0,0 @@
|
|||||||
/// # Google Closure Compiler Service #
|
|
||||||
/// https://github.com/weaver/scribbles/blob/master/node/google-closure/lib/closure.js
|
|
||||||
/// Compress javascript with Node.js using the Closure Compiler
|
|
||||||
/// Service.
|
|
||||||
|
|
||||||
var sys = require('sys');
|
|
||||||
|
|
||||||
exports.compile = compile;
|
|
||||||
|
|
||||||
// Use the Google Closure Compiler Service to compress Javascript
|
|
||||||
// code.
|
|
||||||
//
|
|
||||||
// + code - String of javascript to compress
|
|
||||||
// + next - Function callback that accepts.
|
|
||||||
//
|
|
||||||
// This method will POST the `code` to the compiler service. If an
|
|
||||||
// error occurs, `next()` will be called with an `Error` object as the
|
|
||||||
// first argument. Otherwise, the `next()` will be called with `null`
|
|
||||||
// as the first argument and a String of compressed javascript as the
|
|
||||||
// second argument.
|
|
||||||
//
|
|
||||||
// compile('... javascript ...', function(err, result) {
|
|
||||||
// if (err) throw err;
|
|
||||||
//
|
|
||||||
// ... do something with result ...
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// Returns nothing.
|
|
||||||
function compile(code, next) {
|
|
||||||
try {
|
|
||||||
var qs = require('querystring'),
|
|
||||||
http = require('http'),
|
|
||||||
host = 'closure-compiler.appspot.com',
|
|
||||||
body = qs.stringify({
|
|
||||||
js_code: code.toString('utf-8'),
|
|
||||||
compilation_level: 'SIMPLE_OPTIMIZATIONS',
|
|
||||||
output_format: 'json',
|
|
||||||
output_info: 'compiled_code'
|
|
||||||
}),
|
|
||||||
client = http.createClient(80, host).on('error', next),
|
|
||||||
req = client.request('POST', '/compile', {
|
|
||||||
'Host': host,
|
|
||||||
'Content-Length': body.length,
|
|
||||||
'Content-Type': 'application/x-www-form-urlencoded'
|
|
||||||
});
|
|
||||||
|
|
||||||
req.on('error', next).end(body);
|
|
||||||
|
|
||||||
req.on('response', function(res) {
|
|
||||||
if (res.statusCode != 200)
|
|
||||||
next(new Error('Unexpected HTTP response: ' + res.statusCode));
|
|
||||||
else
|
|
||||||
capture(res, 'utf-8', parseResponse);
|
|
||||||
});
|
|
||||||
|
|
||||||
function parseResponse(err, data) {
|
|
||||||
err ? next(err) : loadJSON(data, function(err, obj) {
|
|
||||||
var error;
|
|
||||||
if (err)
|
|
||||||
next(err);
|
|
||||||
else if ((error = obj.errors || obj.serverErrors || obj.warnings))
|
|
||||||
next(new Error('Failed to compile: ' + sys.inspect(error)));
|
|
||||||
else
|
|
||||||
next(null, obj.compiledCode);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
next(err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert a Stream to a String.
|
|
||||||
//
|
|
||||||
// + input - Stream object
|
|
||||||
// + encoding - String input encoding
|
|
||||||
// + next - Function error/success callback
|
|
||||||
//
|
|
||||||
// Returns nothing.
|
|
||||||
function capture(input, encoding, next) {
|
|
||||||
var buffer = '';
|
|
||||||
|
|
||||||
input.on('data', function(chunk) {
|
|
||||||
buffer += chunk.toString(encoding);
|
|
||||||
});
|
|
||||||
|
|
||||||
input.on('end', function() {
|
|
||||||
next(null, buffer);
|
|
||||||
});
|
|
||||||
|
|
||||||
input.on('error', next);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert JSON.load() to callback-style.
|
|
||||||
//
|
|
||||||
// + data - String value to load
|
|
||||||
// + next - Function error/success callback
|
|
||||||
//
|
|
||||||
// Returns nothing.
|
|
||||||
function loadJSON(data, next) {
|
|
||||||
var err, obj;
|
|
||||||
|
|
||||||
try {
|
|
||||||
obj = JSON.parse(data);
|
|
||||||
} catch (x) {
|
|
||||||
err = x;
|
|
||||||
}
|
|
||||||
next(err, obj);
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
/**
|
|
||||||
* dat-gui JavaScript Controller Library
|
|
||||||
* http://code.google.com/p/dat-gui
|
|
||||||
*
|
|
||||||
* Copyright 2011 Data Arts Team, Google Creative Lab
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*/
|
|
Loading…
Reference in New Issue
Block a user