diff --git a/bundle.js b/bundle.js index 1a0dbc8..064700e 100644 --- a/bundle.js +++ b/bundle.js @@ -1,119503 +1,2 @@ -/******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ({ - -/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/dat.gui/src/dat/gui/style.scss": -/*!**********************************************************************************************************************************!*\ - !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/dat.gui/src/dat/gui/style.scss ***! - \**********************************************************************************************************************************/ -/***/ ((module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/cssWithMappingToString.js */ "./node_modules/css-loader/dist/runtime/cssWithMappingToString.js"); -/* harmony import */ var _css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); -/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); -// Imports - - -var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default())); -// Module -___CSS_LOADER_EXPORT___.push([module.id, ".dg {\n /** Clear list styles */\n /* Auto-place container */\n /* Auto-placed GUI's */\n /* Line items that don't contain folders. */\n /** Folder names */\n /** Hides closed items */\n /** Controller row */\n /** Name-half (left) */\n /** Controller-half (right) */\n /** Controller placement */\n /** Shorter number boxes when slider is present. */\n /** Ensure the entire boolean and function row shows a hand */\n /** allow overflow for color selector */\n}\n.dg ul {\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n clear: both;\n}\n.dg.ac {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 0;\n z-index: 0;\n}\n.dg:not(.ac) .main {\n /** Exclude mains in ac so that we don't hide close button */\n overflow: hidden;\n}\n.dg.main {\n -webkit-transition: opacity 0.1s linear;\n -o-transition: opacity 0.1s linear;\n -moz-transition: opacity 0.1s linear;\n transition: opacity 0.1s linear;\n}\n.dg.main.taller-than-window {\n overflow-y: auto;\n}\n.dg.main.taller-than-window .close-button {\n opacity: 1;\n /* TODO, these are style notes */\n margin-top: -1px;\n border-top: 1px solid #2c2c2c;\n}\n.dg.main ul.closed .close-button {\n opacity: 1 !important;\n}\n.dg.main:hover .close-button,\n.dg.main .close-button.drag {\n opacity: 1;\n}\n.dg.main .close-button {\n /*opacity: 0;*/\n -webkit-transition: opacity 0.1s linear;\n -o-transition: opacity 0.1s linear;\n -moz-transition: opacity 0.1s linear;\n transition: opacity 0.1s linear;\n border: 0;\n line-height: 19px;\n height: 20px;\n /* TODO, these are style notes */\n cursor: pointer;\n text-align: center;\n background-color: #000;\n}\n.dg.main .close-button.close-top {\n position: relative;\n}\n.dg.main .close-button.close-bottom {\n position: absolute;\n}\n.dg.main .close-button:hover {\n background-color: #111;\n}\n.dg.a {\n float: right;\n margin-right: 15px;\n overflow-y: visible;\n}\n.dg.a.has-save > ul.close-top {\n margin-top: 0;\n}\n.dg.a.has-save > ul.close-bottom {\n margin-top: 27px;\n}\n.dg.a.has-save > ul.closed {\n margin-top: 0;\n}\n.dg.a .save-row {\n top: 0;\n z-index: 1002;\n}\n.dg.a .save-row.close-top {\n position: relative;\n}\n.dg.a .save-row.close-bottom {\n position: fixed;\n}\n.dg li {\n -webkit-transition: height 0.1s ease-out;\n -o-transition: height 0.1s ease-out;\n -moz-transition: height 0.1s ease-out;\n transition: height 0.1s ease-out;\n -webkit-transition: overflow 0.1s linear;\n -o-transition: overflow 0.1s linear;\n -moz-transition: overflow 0.1s linear;\n transition: overflow 0.1s linear;\n}\n.dg li:not(.folder) {\n cursor: auto;\n height: 27px;\n line-height: 27px;\n padding: 0 4px 0 5px;\n}\n.dg li.folder {\n padding: 0;\n border-left: 4px solid rgba(0, 0, 0, 0);\n}\n.dg li.title {\n cursor: pointer;\n margin-left: -4px;\n}\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}\n.dg .cr {\n clear: both;\n padding-left: 3px;\n height: 27px;\n overflow: hidden;\n}\n.dg .property-name {\n cursor: default;\n float: left;\n clear: left;\n width: 40%;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dg .c {\n float: left;\n width: 60%;\n position: relative;\n}\n.dg .c input[type=text] {\n border: 0;\n margin-top: 4px;\n padding: 3px;\n width: 100%;\n float: right;\n}\n.dg .has-slider input[type=text] {\n width: 30%;\n /*display: none;*/\n margin-left: 0;\n}\n.dg .slider {\n float: left;\n width: 66%;\n margin-left: -5px;\n margin-right: 0;\n height: 19px;\n margin-top: 4px;\n}\n.dg .slider-fg {\n height: 100%;\n}\n.dg .c input[type=checkbox] {\n margin-top: 7px;\n}\n.dg .c select {\n margin-top: 5px;\n}\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}\n.dg .cr.color {\n overflow: visible;\n}\n.dg .selector {\n display: none;\n position: absolute;\n margin-left: -9px;\n margin-top: 23px;\n z-index: 10;\n}\n.dg .c:hover .selector,\n.dg .selector.drag {\n display: block;\n}\n.dg li.save-row {\n padding: 0;\n}\n.dg li.save-row .button {\n display: inline-block;\n padding: 0px 6px;\n}\n.dg.dialogue {\n background-color: #222;\n width: 460px;\n padding: 15px;\n font-size: 13px;\n line-height: 15px;\n}\n\n/* TODO Separate style and structure */\n#dg-new-constructor {\n padding: 10px;\n color: #222;\n font-family: Monaco, monospace;\n font-size: 10px;\n border: 0;\n resize: none;\n box-shadow: inset 1px 1px 1px #888;\n word-wrap: break-word;\n margin: 12px 0;\n display: block;\n width: 440px;\n overflow-y: scroll;\n height: 100px;\n position: relative;\n}\n\n#dg-local-explain {\n display: none;\n font-size: 11px;\n line-height: 17px;\n border-radius: 3px;\n background-color: #333;\n padding: 8px;\n margin-top: 10px;\n}\n#dg-local-explain code {\n font-size: 10px;\n}\n\n#dat-gui-save-locally {\n display: none;\n}\n\n/** Main type */\n.dg {\n color: #eee;\n font: 11px \"Lucida Grande\", sans-serif;\n text-shadow: 0 -1px 0 #111;\n /** Auto place */\n /* Controller row,
object[property]
- *
- * @param {Object} newValue The new value of object[property]
- */
- setValue(newValue) {
- this.object[this.property] = newValue;
- if (this.__onChange) {
- this.__onChange.call(this, newValue);
- }
-
- this.updateDisplay();
- return this;
- }
-
- /**
- * Gets the value of object[property]
- *
- * @returns {Object} The current value of object[property]
- */
- 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
- */
- updateDisplay() {
- return this;
- }
-
- /**
- * @returns {Boolean} true if the value has deviated from initialValue
- */
- isModified() {
- return this.initialValue !== this.getValue();
- }
-}
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Controller);
-
-
-/***/ }),
-
-/***/ "./node_modules/dat.gui/src/dat/controllers/ControllerFactory.js":
-/*!***********************************************************************!*\
- !*** ./node_modules/dat.gui/src/dat/controllers/ControllerFactory.js ***!
- \***********************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var _OptionController__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./OptionController */ "./node_modules/dat.gui/src/dat/controllers/OptionController.js");
-/* harmony import */ var _NumberControllerBox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NumberControllerBox */ "./node_modules/dat.gui/src/dat/controllers/NumberControllerBox.js");
-/* harmony import */ var _NumberControllerSlider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./NumberControllerSlider */ "./node_modules/dat.gui/src/dat/controllers/NumberControllerSlider.js");
-/* harmony import */ var _StringController__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./StringController */ "./node_modules/dat.gui/src/dat/controllers/StringController.js");
-/* harmony import */ var _FunctionController__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./FunctionController */ "./node_modules/dat.gui/src/dat/controllers/FunctionController.js");
-/* harmony import */ var _BooleanController__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./BooleanController */ "./node_modules/dat.gui/src/dat/controllers/BooleanController.js");
-/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/common */ "./node_modules/dat.gui/src/dat/utils/common.js");
-/**
- * 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
- */
-
-
-
-
-
-
-
-
-
-const ControllerFactory = function(object, property) {
- const initialValue = object[property];
-
- // Providing options?
- if (_utils_common__WEBPACK_IMPORTED_MODULE_6__.default.isArray(arguments[2]) || _utils_common__WEBPACK_IMPORTED_MODULE_6__.default.isObject(arguments[2])) {
- return new _OptionController__WEBPACK_IMPORTED_MODULE_0__.default(object, property, arguments[2]);
- }
-
- // Providing a map?
- if (_utils_common__WEBPACK_IMPORTED_MODULE_6__.default.isNumber(initialValue)) {
- // Has min and max? (slider)
- if (_utils_common__WEBPACK_IMPORTED_MODULE_6__.default.isNumber(arguments[2]) && _utils_common__WEBPACK_IMPORTED_MODULE_6__.default.isNumber(arguments[3])) {
- // has step?
- if (_utils_common__WEBPACK_IMPORTED_MODULE_6__.default.isNumber(arguments[4])) {
- return new _NumberControllerSlider__WEBPACK_IMPORTED_MODULE_2__.default(object, property,
- arguments[2], arguments[3], arguments[4]);
- }
-
- return new _NumberControllerSlider__WEBPACK_IMPORTED_MODULE_2__.default(object, property, arguments[2], arguments[3]);
- }
-
- // number box
- if (_utils_common__WEBPACK_IMPORTED_MODULE_6__.default.isNumber(arguments[4])) { // has step
- return new _NumberControllerBox__WEBPACK_IMPORTED_MODULE_1__.default(object, property,
- { min: arguments[2], max: arguments[3], step: arguments[4] });
- }
- return new _NumberControllerBox__WEBPACK_IMPORTED_MODULE_1__.default(object, property, { min: arguments[2], max: arguments[3] });
- }
-
- if (_utils_common__WEBPACK_IMPORTED_MODULE_6__.default.isString(initialValue)) {
- return new _StringController__WEBPACK_IMPORTED_MODULE_3__.default(object, property);
- }
-
- if (_utils_common__WEBPACK_IMPORTED_MODULE_6__.default.isFunction(initialValue)) {
- return new _FunctionController__WEBPACK_IMPORTED_MODULE_4__.default(object, property, '');
- }
-
- if (_utils_common__WEBPACK_IMPORTED_MODULE_6__.default.isBoolean(initialValue)) {
- return new _BooleanController__WEBPACK_IMPORTED_MODULE_5__.default(object, property);
- }
-
- return null;
-};
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ControllerFactory);
-
-
-/***/ }),
-
-/***/ "./node_modules/dat.gui/src/dat/controllers/FunctionController.js":
-/*!************************************************************************!*\
- !*** ./node_modules/dat.gui/src/dat/controllers/FunctionController.js ***!
- \************************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var _Controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Controller */ "./node_modules/dat.gui/src/dat/controllers/Controller.js");
-/* harmony import */ var _dom_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom/dom */ "./node_modules/dat.gui/src/dat/dom/dom.js");
-/**
- * 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 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
- */
-class FunctionController extends _Controller__WEBPACK_IMPORTED_MODULE_0__.default {
- constructor(object, property, text) {
- super(object, property);
-
- const _this = this;
-
- this.__button = document.createElement('div');
- this.__button.innerHTML = text === undefined ? 'Fire' : text;
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__button, 'click', function(e) {
- e.preventDefault();
- _this.fire();
- return false;
- });
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.addClass(this.__button, 'button');
-
- this.domElement.appendChild(this.__button);
- }
-
- fire() {
- if (this.__onChange) {
- this.__onChange.call(this);
- }
- this.getValue().call(this.object);
- if (this.__onFinishChange) {
- this.__onFinishChange.call(this, this.getValue());
- }
- }
-}
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FunctionController);
-
-
-/***/ }),
-
-/***/ "./node_modules/dat.gui/src/dat/controllers/NumberController.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/dat.gui/src/dat/controllers/NumberController.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var _Controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Controller */ "./node_modules/dat.gui/src/dat/controllers/Controller.js");
-/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/common */ "./node_modules/dat.gui/src/dat/utils/common.js");
-/**
- * dat-gui JavaScript Controller Library
- * http://code.google.com/p/dat-gui
- *
- * Copyright 2011 Data Arts Team, Google Creative Lab
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- */
-
-
-
-
-function numDecimals(x) {
- const _x = x.toString();
- if (_x.indexOf('.') > -1) {
- return _x.length - _x.indexOf('.') - 1;
- }
-
- return 0;
-}
-
-/**
- * @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
- */
-class NumberController extends _Controller__WEBPACK_IMPORTED_MODULE_0__.default {
- constructor(object, property, params) {
- super(object, property);
-
- const _params = params || {};
-
- this.__min = _params.min;
- this.__max = _params.max;
- this.__step = _params.step;
-
- if (_utils_common__WEBPACK_IMPORTED_MODULE_1__.default.isUndefined(this.__step)) {
- if (this.initialValue === 0) {
- 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);
- }
-
- setValue(v) {
- let _v = v;
-
- if (this.__min !== undefined && _v < this.__min) {
- _v = this.__min;
- } else if (this.__max !== undefined && _v > this.__max) {
- _v = this.__max;
- }
-
- if (this.__step !== undefined && _v % this.__step !== 0) {
- _v = Math.round(_v / this.__step) * this.__step;
- }
-
- return super.setValue(_v);
- }
-
- /**
- * Specify a minimum value for object[property]
.
- *
- * @param {Number} minValue The minimum value for
- * object[property]
- * @returns {dat.controllers.NumberController} this
- */
- min(minValue) {
- this.__min = minValue;
- return this;
- }
-
- /**
- * Specify a maximum value for object[property]
.
- *
- * @param {Number} maxValue The maximum value for
- * object[property]
- * @returns {dat.controllers.NumberController} this
- */
- max(maxValue) {
- this.__max = maxValue;
- 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
- */
- step(stepValue) {
- this.__step = stepValue;
- this.__impliedStep = stepValue;
- this.__precision = numDecimals(stepValue);
- return this;
- }
-}
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NumberController);
-
-
-/***/ }),
-
-/***/ "./node_modules/dat.gui/src/dat/controllers/NumberControllerBox.js":
-/*!*************************************************************************!*\
- !*** ./node_modules/dat.gui/src/dat/controllers/NumberControllerBox.js ***!
- \*************************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var _NumberController__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NumberController */ "./node_modules/dat.gui/src/dat/controllers/NumberController.js");
-/* harmony import */ var _dom_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom/dom */ "./node_modules/dat.gui/src/dat/dom/dom.js");
-/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/common */ "./node_modules/dat.gui/src/dat/utils/common.js");
-/**
- * dat-gui JavaScript Controller Library
- * http://code.google.com/p/dat-gui
- *
- * Copyright 2011 Data Arts Team, Google Creative Lab
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- */
-
-
-
-
-
-function roundToDecimal(value, decimals) {
- const 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
- */
-class NumberControllerBox extends _NumberController__WEBPACK_IMPORTED_MODULE_0__.default {
- constructor(object, property, params) {
- super(object, property, params);
-
- this.__truncationSuspended = false;
-
- const _this = this;
-
- /**
- * {Number} Previous mouse y position
- * @ignore
- */
- let prevY;
-
- function onChange() {
- const attempted = parseFloat(_this.__input.value);
- if (!_utils_common__WEBPACK_IMPORTED_MODULE_2__.default.isNaN(attempted)) {
- _this.setValue(attempted);
- }
- }
-
- function onFinish() {
- if (_this.__onFinishChange) {
- _this.__onFinishChange.call(_this, _this.getValue());
- }
- }
-
- function onBlur() {
- onFinish();
- }
-
- function onMouseDrag(e) {
- const diff = prevY - e.clientY;
- _this.setValue(_this.getValue() + diff * _this.__impliedStep);
-
- prevY = e.clientY;
- }
-
- function onMouseUp() {
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.unbind(window, 'mousemove', onMouseDrag);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.unbind(window, 'mouseup', onMouseUp);
- onFinish();
- }
-
- function onMouseDown(e) {
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(window, 'mousemove', onMouseDrag);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.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.
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__input, 'change', onChange);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__input, 'blur', onBlur);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__input, 'mousedown', onMouseDown);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__input, 'keydown', function(e) {
- // When pressing enter, you can be as precise as you want.
- if (e.keyCode === 13) {
- _this.__truncationSuspended = true;
- this.blur();
- _this.__truncationSuspended = false;
- onFinish();
- }
- });
-
- this.updateDisplay();
-
- this.domElement.appendChild(this.__input);
- }
-
- updateDisplay() {
- this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision);
- return super.updateDisplay();
- }
-}
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NumberControllerBox);
-
-
-/***/ }),
-
-/***/ "./node_modules/dat.gui/src/dat/controllers/NumberControllerSlider.js":
-/*!****************************************************************************!*\
- !*** ./node_modules/dat.gui/src/dat/controllers/NumberControllerSlider.js ***!
- \****************************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var _NumberController__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NumberController */ "./node_modules/dat.gui/src/dat/controllers/NumberController.js");
-/* harmony import */ var _dom_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom/dom */ "./node_modules/dat.gui/src/dat/dom/dom.js");
-/**
- * dat-gui JavaScript Controller Library
- * http://code.google.com/p/dat-gui
- *
- * Copyright 2011 Data Arts Team, Google Creative Lab
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- */
-
-
-
-
-function 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
- * <div>
tags, not the html5
- * <slider>
element.
- *
- * @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
- */
-class NumberControllerSlider extends _NumberController__WEBPACK_IMPORTED_MODULE_0__.default {
- constructor(object, property, min, max, step) {
- super(object, property, { min: min, max: max, step: step });
-
- const _this = this;
-
- this.__background = document.createElement('div');
- this.__foreground = document.createElement('div');
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__background, 'mousedown', onMouseDown);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__background, 'touchstart', onTouchStart);
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.addClass(this.__background, 'slider');
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.addClass(this.__foreground, 'slider-fg');
-
- function onMouseDown(e) {
- document.activeElement.blur();
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(window, 'mousemove', onMouseDrag);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(window, 'mouseup', onMouseUp);
-
- onMouseDrag(e);
- }
-
- function onMouseDrag(e) {
- e.preventDefault();
-
- const bgRect = _this.__background.getBoundingClientRect();
-
- _this.setValue(
- map(e.clientX, bgRect.left, bgRect.right, _this.__min, _this.__max)
- );
-
- return false;
- }
-
- function onMouseUp() {
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.unbind(window, 'mousemove', onMouseDrag);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.unbind(window, 'mouseup', onMouseUp);
- if (_this.__onFinishChange) {
- _this.__onFinishChange.call(_this, _this.getValue());
- }
- }
-
- function onTouchStart(e) {
- if (e.touches.length !== 1) { return; }
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(window, 'touchmove', onTouchMove);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(window, 'touchend', onTouchEnd);
- onTouchMove(e);
- }
-
- function onTouchMove(e) {
- const clientX = e.touches[0].clientX;
- const bgRect = _this.__background.getBoundingClientRect();
-
- _this.setValue(
- map(clientX, bgRect.left, bgRect.right, _this.__min, _this.__max)
- );
- }
-
- function onTouchEnd() {
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.unbind(window, 'touchmove', onTouchMove);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.unbind(window, 'touchend', onTouchEnd);
- if (_this.__onFinishChange) {
- _this.__onFinishChange.call(_this, _this.getValue());
- }
- }
-
- this.updateDisplay();
-
- this.__background.appendChild(this.__foreground);
- this.domElement.appendChild(this.__background);
- }
-
- updateDisplay() {
- const pct = (this.getValue() - this.__min) / (this.__max - this.__min);
- this.__foreground.style.width = pct * 100 + '%';
- return super.updateDisplay();
- }
-}
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NumberControllerSlider);
-
-
-/***/ }),
-
-/***/ "./node_modules/dat.gui/src/dat/controllers/OptionController.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/dat.gui/src/dat/controllers/OptionController.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var _Controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Controller */ "./node_modules/dat.gui/src/dat/controllers/Controller.js");
-/* harmony import */ var _dom_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom/dom */ "./node_modules/dat.gui/src/dat/dom/dom.js");
-/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/common */ "./node_modules/dat.gui/src/dat/utils/common.js");
-/**
- * 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 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.
- */
-class OptionController extends _Controller__WEBPACK_IMPORTED_MODULE_0__.default {
- constructor(object, property, opts) {
- super(object, property);
-
- let options = opts;
-
- const _this = this;
-
- /**
- * The drop down menu
- * @ignore
- */
- this.__select = document.createElement('select');
-
- if (_utils_common__WEBPACK_IMPORTED_MODULE_2__.default.isArray(options)) {
- const map = {};
- _utils_common__WEBPACK_IMPORTED_MODULE_2__.default.each(options, function(element) {
- map[element] = element;
- });
- options = map;
- }
-
- _utils_common__WEBPACK_IMPORTED_MODULE_2__.default.each(options, function(value, key) {
- const opt = document.createElement('option');
- opt.innerHTML = key;
- opt.setAttribute('value', value);
- _this.__select.appendChild(opt);
- });
-
- // Acknowledge original value
- this.updateDisplay();
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__select, 'change', function() {
- const desiredValue = this.options[this.selectedIndex].value;
- _this.setValue(desiredValue);
- });
-
- this.domElement.appendChild(this.__select);
- }
-
- setValue(v) {
- const toReturn = super.setValue(v);
-
- if (this.__onFinishChange) {
- this.__onFinishChange.call(this, this.getValue());
- }
- return toReturn;
- }
-
- updateDisplay() {
- if (_dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.isActive(this.__select)) return this; // prevent number from updating if user is trying to manually update
- this.__select.value = this.getValue();
- return super.updateDisplay();
- }
-}
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OptionController);
-
-
-/***/ }),
-
-/***/ "./node_modules/dat.gui/src/dat/controllers/StringController.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/dat.gui/src/dat/controllers/StringController.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var _Controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Controller */ "./node_modules/dat.gui/src/dat/controllers/Controller.js");
-/* harmony import */ var _dom_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom/dom */ "./node_modules/dat.gui/src/dat/dom/dom.js");
-/**
- * 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 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
- */
-class StringController extends _Controller__WEBPACK_IMPORTED_MODULE_0__.default {
- constructor(object, property) {
- super(object, property);
-
- const _this = this;
-
- function onChange() {
- _this.setValue(_this.__input.value);
- }
-
- function onBlur() {
- if (_this.__onFinishChange) {
- _this.__onFinishChange.call(_this, _this.getValue());
- }
- }
-
- this.__input = document.createElement('input');
- this.__input.setAttribute('type', 'text');
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__input, 'keyup', onChange);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__input, 'change', onChange);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__input, 'blur', onBlur);
- _dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.bind(this.__input, 'keydown', function(e) {
- if (e.keyCode === 13) {
- this.blur();
- }
- });
-
- this.updateDisplay();
-
- this.domElement.appendChild(this.__input);
- }
-
- updateDisplay() {
- // Stops the caret from moving on account of:
- // keyup -> setValue -> updateDisplay
- if (!_dom_dom__WEBPACK_IMPORTED_MODULE_1__.default.isActive(this.__input)) {
- this.__input.value = this.getValue();
- }
- return super.updateDisplay();
- }
-}
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (StringController);
-
-
-/***/ }),
-
-/***/ "./node_modules/dat.gui/src/dat/dom/CenteredDiv.js":
-/*!*********************************************************!*\
- !*** ./node_modules/dat.gui/src/dat/dom/CenteredDiv.js ***!
- \*********************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var _dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom/dom */ "./node_modules/dat.gui/src/dat/dom/dom.js");
-/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/common */ "./node_modules/dat.gui/src/dat/utils/common.js");
-/**
- * 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 CenteredDiv {
- constructor() {
- this.backgroundElement = document.createElement('div');
- _utils_common__WEBPACK_IMPORTED_MODULE_1__.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'
- });
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_0__.default.makeFullscreen(this.backgroundElement);
- this.backgroundElement.style.position = 'fixed';
-
- this.domElement = document.createElement('div');
- _utils_common__WEBPACK_IMPORTED_MODULE_1__.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'
- });
-
-
- document.body.appendChild(this.backgroundElement);
- document.body.appendChild(this.domElement);
-
- const _this = this;
- _dom_dom__WEBPACK_IMPORTED_MODULE_0__.default.bind(this.backgroundElement, 'click', function() {
- _this.hide();
- });
- }
-
- show() {
- const _this = this;
-
- this.backgroundElement.style.display = 'block';
-
- this.domElement.style.display = 'block';
- this.domElement.style.opacity = 0;
-// this.domElement.style.top = '52%';
- this.domElement.style.webkitTransform = 'scale(1.1)';
-
- this.layout();
-
- _utils_common__WEBPACK_IMPORTED_MODULE_1__.default.defer(function() {
- _this.backgroundElement.style.opacity = 1;
- _this.domElement.style.opacity = 1;
- _this.domElement.style.webkitTransform = 'scale(1)';
- });
- }
-
- /**
- * Hide centered div
- */
- hide() {
- const _this = this;
-
- const hide = function() {
- _this.domElement.style.display = 'none';
- _this.backgroundElement.style.display = 'none';
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_0__.default.unbind(_this.domElement, 'webkitTransitionEnd', hide);
- _dom_dom__WEBPACK_IMPORTED_MODULE_0__.default.unbind(_this.domElement, 'transitionend', hide);
- _dom_dom__WEBPACK_IMPORTED_MODULE_0__.default.unbind(_this.domElement, 'oTransitionEnd', hide);
- };
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_0__.default.bind(this.domElement, 'webkitTransitionEnd', hide);
- _dom_dom__WEBPACK_IMPORTED_MODULE_0__.default.bind(this.domElement, 'transitionend', hide);
- _dom_dom__WEBPACK_IMPORTED_MODULE_0__.default.bind(this.domElement, 'oTransitionEnd', hide);
-
- this.backgroundElement.style.opacity = 0;
-// this.domElement.style.top = '48%';
- this.domElement.style.opacity = 0;
- this.domElement.style.webkitTransform = 'scale(1.1)';
- }
-
- layout() {
- this.domElement.style.left = window.innerWidth / 2 - _dom_dom__WEBPACK_IMPORTED_MODULE_0__.default.getWidth(this.domElement) / 2 + 'px';
- this.domElement.style.top = window.innerHeight / 2 - _dom_dom__WEBPACK_IMPORTED_MODULE_0__.default.getHeight(this.domElement) / 2 + 'px';
- }
-}
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (CenteredDiv);
-
-
-/***/ }),
-
-/***/ "./node_modules/dat.gui/src/dat/dom/dom.js":
-/*!*************************************************!*\
- !*** ./node_modules/dat.gui/src/dat/dom/dom.js ***!
- \*************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/common */ "./node_modules/dat.gui/src/dat/utils/common.js");
-/**
- * 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
- */
-
-
-
-const EVENT_MAP = {
- HTMLEvents: ['change'],
- MouseEvents: ['click', 'mousemove', 'mousedown', 'mouseup', 'mouseover'],
- KeyboardEvents: ['keydown']
-};
-
-const EVENT_MAP_INV = {};
-_utils_common__WEBPACK_IMPORTED_MODULE_0__.default.each(EVENT_MAP, function(v, k) {
- _utils_common__WEBPACK_IMPORTED_MODULE_0__.default.each(v, function(e) {
- EVENT_MAP_INV[e] = k;
- });
-});
-
-const CSS_VALUE_PIXELS = /(\d+(\.\d+)?)px/;
-
-function cssValueToPixels(val) {
- if (val === '0' || _utils_common__WEBPACK_IMPORTED_MODULE_0__.default.isUndefined(val)) {
- return 0;
- }
-
- const match = val.match(CSS_VALUE_PIXELS);
-
- if (!_utils_common__WEBPACK_IMPORTED_MODULE_0__.default.isNull(match)) {
- return parseFloat(match[1]);
- }
-
- // TODO ...ems? %?
-
- return 0;
-}
-
-/**
- * @namespace
- * @member dat.dom
- */
-const dom = {
-
- /**
- *
- * @param elem
- * @param selectable
- */
- makeSelectable: function(elem, selectable) {
- if (elem === undefined || elem.style === undefined) return;
-
- elem.onselectstart = selectable ? function() {
- return false;
- } : function() {
- };
-
- elem.style.MozUserSelect = selectable ? 'auto' : 'none';
- elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';
- elem.unselectable = selectable ? 'on' : 'off';
- },
-
- /**
- *
- * @param elem
- * @param horizontal
- * @param vert
- */
- makeFullscreen: function(elem, hor, vert) {
- let vertical = vert;
- let horizontal = hor;
-
- if (_utils_common__WEBPACK_IMPORTED_MODULE_0__.default.isUndefined(horizontal)) {
- horizontal = true;
- }
-
- if (_utils_common__WEBPACK_IMPORTED_MODULE_0__.default.isUndefined(vertical)) {
- vertical = true;
- }
-
- elem.style.position = 'absolute';
-
- if (horizontal) {
- elem.style.left = 0;
- elem.style.right = 0;
- }
- if (vertical) {
- elem.style.top = 0;
- elem.style.bottom = 0;
- }
- },
-
- /**
- *
- * @param elem
- * @param eventType
- * @param params
- */
- fakeEvent: function(elem, eventType, pars, aux) {
- const params = pars || {};
- const className = EVENT_MAP_INV[eventType];
- if (!className) {
- throw new Error('Event type ' + eventType + ' not supported.');
- }
- const evt = document.createEvent(className);
- switch (className) {
- case 'MouseEvents':
- {
- const clientX = params.x || params.clientX || 0;
- const 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;
- }
- case 'KeyboardEvents':
- {
- const init = evt.initKeyboardEvent || evt.initKeyEvent; // webkit || moz
- _utils_common__WEBPACK_IMPORTED_MODULE_0__.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;
- }
- default:
- {
- evt.initEvent(eventType, params.bubbles || false, params.cancelable || true);
- break;
- }
- }
- _utils_common__WEBPACK_IMPORTED_MODULE_0__.default.defaults(evt, aux);
- elem.dispatchEvent(evt);
- },
-
- /**
- *
- * @param elem
- * @param event
- * @param func
- * @param bool
- */
- bind: function(elem, event, func, newBool) {
- const bool = newBool || false;
- if (elem.addEventListener) {
- elem.addEventListener(event, func, bool);
- } else if (elem.attachEvent) {
- elem.attachEvent('on' + event, func);
- }
- return dom;
- },
-
- /**
- *
- * @param elem
- * @param event
- * @param func
- * @param bool
- */
- unbind: function(elem, event, func, newBool) {
- const bool = newBool || false;
- if (elem.removeEventListener) {
- elem.removeEventListener(event, func, bool);
- } else if (elem.detachEvent) {
- elem.detachEvent('on' + event, func);
- }
- return dom;
- },
-
- /**
- *
- * @param elem
- * @param className
- */
- addClass: function(elem, className) {
- if (elem.className === undefined) {
- elem.className = className;
- } else if (elem.className !== className) {
- const classes = elem.className.split(/ +/);
- if (classes.indexOf(className) === -1) {
- classes.push(className);
- elem.className = classes.join(' ').replace(/^\s+/, '').replace(/\s+$/, '');
- }
- }
- return dom;
- },
-
- /**
- *
- * @param elem
- * @param className
- */
- removeClass: function(elem, className) {
- if (className) {
- if (elem.className === className) {
- elem.removeAttribute('class');
- } else {
- const classes = elem.className.split(/ +/);
- const index = classes.indexOf(className);
- if (index !== -1) {
- classes.splice(index, 1);
- elem.className = classes.join(' ');
- }
- }
- } else {
- elem.className = undefined;
- }
- return dom;
- },
-
- hasClass: function(elem, className) {
- return new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)').test(elem.className) || false;
- },
-
- /**
- *
- * @param elem
- */
- getWidth: function(elem) {
- const style = getComputedStyle(elem);
-
- return cssValueToPixels(style['border-left-width']) +
- cssValueToPixels(style['border-right-width']) +
- cssValueToPixels(style['padding-left']) +
- cssValueToPixels(style['padding-right']) +
- cssValueToPixels(style.width);
- },
-
- /**
- *
- * @param elem
- */
- getHeight: function(elem) {
- const style = getComputedStyle(elem);
-
- return cssValueToPixels(style['border-top-width']) +
- cssValueToPixels(style['border-bottom-width']) +
- cssValueToPixels(style['padding-top']) +
- cssValueToPixels(style['padding-bottom']) +
- cssValueToPixels(style.height);
- },
-
- /**
- *
- * @param el
- */
- getOffset: function(el) {
- let elem = el;
- const offset = { left: 0, top: 0 };
- if (elem.offsetParent) {
- do {
- offset.left += elem.offsetLeft;
- offset.top += elem.offsetTop;
- elem = elem.offsetParent;
- } while (elem);
- }
- return offset;
- },
-
- // http://stackoverflow.com/posts/2684561/revisions
- /**
- *
- * @param elem
- */
- isActive: function(elem) {
- return elem === document.activeElement && (elem.type || elem.href);
- }
-
-};
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (dom);
-
-
-/***/ }),
-
-/***/ "./node_modules/dat.gui/src/dat/gui/GUI.js":
-/*!*************************************************!*\
- !*** ./node_modules/dat.gui/src/dat/gui/GUI.js ***!
- \*************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var _utils_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/css */ "./node_modules/dat.gui/src/dat/utils/css.js");
-/* harmony import */ var _saveDialogue_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./saveDialogue.html */ "./node_modules/dat.gui/src/dat/gui/saveDialogue.html.js");
-/* harmony import */ var _controllers_ControllerFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../controllers/ControllerFactory */ "./node_modules/dat.gui/src/dat/controllers/ControllerFactory.js");
-/* harmony import */ var _controllers_Controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../controllers/Controller */ "./node_modules/dat.gui/src/dat/controllers/Controller.js");
-/* harmony import */ var _controllers_BooleanController__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../controllers/BooleanController */ "./node_modules/dat.gui/src/dat/controllers/BooleanController.js");
-/* harmony import */ var _controllers_FunctionController__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../controllers/FunctionController */ "./node_modules/dat.gui/src/dat/controllers/FunctionController.js");
-/* harmony import */ var _controllers_NumberControllerBox__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../controllers/NumberControllerBox */ "./node_modules/dat.gui/src/dat/controllers/NumberControllerBox.js");
-/* harmony import */ var _controllers_NumberControllerSlider__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../controllers/NumberControllerSlider */ "./node_modules/dat.gui/src/dat/controllers/NumberControllerSlider.js");
-/* harmony import */ var _controllers_ColorController__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../controllers/ColorController */ "./node_modules/dat.gui/src/dat/controllers/ColorController.js");
-/* harmony import */ var _utils_requestAnimationFrame__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/requestAnimationFrame */ "./node_modules/dat.gui/src/dat/utils/requestAnimationFrame.js");
-/* harmony import */ var _dom_CenteredDiv__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../dom/CenteredDiv */ "./node_modules/dat.gui/src/dat/dom/CenteredDiv.js");
-/* harmony import */ var _dom_dom__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../dom/dom */ "./node_modules/dat.gui/src/dat/dom/dom.js");
-/* harmony import */ var _utils_common__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/common */ "./node_modules/dat.gui/src/dat/utils/common.js");
-/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./style.scss */ "./node_modules/dat.gui/src/dat/gui/style.scss");
-/**
- * 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
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- // CSS to embed in build
-
-_utils_css__WEBPACK_IMPORTED_MODULE_0__.default.inject(_style_scss__WEBPACK_IMPORTED_MODULE_13__.default);
-
-/** @ignore Outer-most className for GUI's */
-const CSS_NAMESPACE = 'dg';
-
-const HIDE_KEY_CODE = 72;
-
-/** @ignore The only value shared between the JS and SCSS. Use caution. */
-const CLOSE_BUTTON_HEIGHT = 20;
-
-const DEFAULT_DEFAULT_PRESET_NAME = 'Default';
-
-const SUPPORTS_LOCAL_STORAGE = (function() {
- try {
- return !!window.localStorage;
- } catch (e) {
- return false;
- }
-}());
-
-let SAVE_DIALOGUE;
-
-/** @ignore Have we yet to create an autoPlace GUI? */
-let autoPlaceVirgin = true;
-
-/** @ignore Fixed position div that auto place GUI's go inside */
-let autoPlaceContainer;
-
-/** @ignore Are we hiding the GUI's ? */
-let hide = false;
-
-/** @private GUI's which should be hidden */
-const hideableGuis = [];
-
-/**
- * @class A lightweight controller library for JavaScript. It allows you to easily
- * manipulate variables and fire functions on the fly.
- *
- * @typicalname gui
- *
- * @example
- * // Creating a GUI with options.
- * var gui = new dat.GUI({name: 'My GUI'});
- *
- * @example
- * // Creating a GUI and a subfolder.
- * var gui = new dat.GUI();
- * var folder1 = gui.addFolder('Flow Field');
- *
- * @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 {dat.gui.GUI} [params.parent] The GUI I'm nested in.
- * @param {Boolean} [params.autoPlace=true]
- * @param {Boolean} [params.hideable=true] If true, GUI is shown/hidden by h keypress.
- * @param {Boolean} [params.closed=false] If true, starts closed
- * @param {Boolean} [params.closeOnTop=false] If true, close/open button shows on top of the GUI
- */
-const GUI = function(pars) {
- const _this = this;
-
- let params = pars || {};
-
- /**
- * Outermost DOM Element
- * @type {DOMElement}
- */
- this.domElement = document.createElement('div');
- this.__ul = document.createElement('ul');
- this.domElement.appendChild(this.__ul);
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.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 = _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.defaults(params, {
- closeOnTop: false,
- autoPlace: true,
- width: GUI.DEFAULT_WIDTH
- });
-
- params = _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.defaults(params, {
- resizable: params.autoPlace,
- hideable: params.autoPlace
- });
-
- if (!_utils_common__WEBPACK_IMPORTED_MODULE_12__.default.isUndefined(params.load)) {
- // Explicit preset
- if (params.preset) {
- params.load.preset = params.preset;
- }
- } else {
- params.load = { preset: DEFAULT_DEFAULT_PRESET_NAME };
- }
-
- if (_utils_common__WEBPACK_IMPORTED_MODULE_12__.default.isUndefined(params.parent) && params.hideable) {
- hideableGuis.push(this);
- }
-
- // Only root level GUI's are resizable.
- params.resizable = _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.isUndefined(params.parent) && params.resizable;
-
- if (params.autoPlace && _utils_common__WEBPACK_IMPORTED_MODULE_12__.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.
- let useLocalStorage =
- SUPPORTS_LOCAL_STORAGE &&
- localStorage.getItem(getLocalStorageHash(this, 'isLocal')) === 'true';
-
- let saveToLocalStorage;
- let titleRow;
-
- Object.defineProperties(this,
- /** @lends GUI.prototype */
- {
- /**
- * The parent GUI
- * @type dat.gui.GUI
- */
- parent: {
- get: function() {
- return params.parent;
- }
- },
-
- scrollable: {
- get: function() {
- return params.scrollable;
- }
- },
-
- /**
- * Handles GUI
's element placement for you
- * @type Boolean
- */
- autoPlace: {
- get: function() {
- return params.autoPlace;
- }
- },
-
- /**
- * Handles GUI
's position of open/close button
- * @type Boolean
- */
- closeOnTop: {
- get: function() {
- return params.closeOnTop;
- }
- },
-
- /**
- * The identifier for a set of saved values
- * @type String
- */
- preset: {
- get: function() {
- if (_this.parent) {
- return _this.getRoot().preset;
- }
-
- return params.load.preset;
- },
-
- set: function(v) {
- if (_this.parent) {
- _this.getRoot().preset = v;
- } else {
- params.load.preset = v;
- }
- setPresetSelectIndex(this);
- _this.revert();
- }
- },
-
- /**
- * The width of GUI
element
- * @type Number
- */
- width: {
- get: function() {
- return params.width;
- },
- set: function(v) {
- params.width = v;
- setWidth(_this, v);
- }
- },
-
- /**
- * The name of GUI
. Used for folders. i.e
- * a folder's name
- * @type String
- */
- name: {
- get: function() {
- return params.name;
- },
- set: function(v) {
- // TODO Check for collisions among sibling folders
- params.name = v;
- if (titleRow) {
- titleRow.innerHTML = params.name;
- }
- }
- },
-
- /**
- * Whether the GUI
is collapsed or not
- * @type Boolean
- */
- closed: {
- get: function() {
- return params.closed;
- },
- set: function(v) {
- params.closed = v;
- if (params.closed) {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(_this.__ul, GUI.CLASS_CLOSED);
- } else {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.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() {
- return params.load;
- }
- },
-
- /**
- * Determines whether or not to use localStorage as the means for
- * remember
ing
- * @type Boolean
- */
- useLocalStorage: {
-
- get: function() {
- return useLocalStorage;
- },
- set: function(bool) {
- if (SUPPORTS_LOCAL_STORAGE) {
- useLocalStorage = bool;
- if (bool) {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(window, 'unload', saveToLocalStorage);
- } else {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.unbind(window, 'unload', saveToLocalStorage);
- }
- localStorage.setItem(getLocalStorageHash(_this, 'isLocal'), bool);
- }
- }
- }
- });
-
- // Are we a root level GUI?
- if (_utils_common__WEBPACK_IMPORTED_MODULE_12__.default.isUndefined(params.parent)) {
- this.closed = params.closed || false;
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(this.domElement, GUI.CLASS_MAIN);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.makeSelectable(this.domElement, false);
-
- // Are we supposed to be loading locally?
- if (SUPPORTS_LOCAL_STORAGE) {
- if (useLocalStorage) {
- _this.useLocalStorage = true;
-
- const savedGui = localStorage.getItem(getLocalStorageHash(this, 'gui'));
-
- if (savedGui) {
- params.load = JSON.parse(savedGui);
- }
- }
- }
-
- this.__closeButton = document.createElement('div');
- this.__closeButton.innerHTML = GUI.TEXT_CLOSED;
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(this.__closeButton, GUI.CLASS_CLOSE_BUTTON);
- if (params.closeOnTop) {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(this.__closeButton, GUI.CLASS_CLOSE_TOP);
- this.domElement.insertBefore(this.__closeButton, this.domElement.childNodes[0]);
- } else {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(this.__closeButton, GUI.CLASS_CLOSE_BOTTOM);
- this.domElement.appendChild(this.__closeButton);
- }
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(this.__closeButton, 'click', function() {
- _this.closed = !_this.closed;
- });
- // Oh, you're a nested GUI!
- } else {
- if (params.closed === undefined) {
- params.closed = true;
- }
-
- const titleRowName = document.createTextNode(params.name);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(titleRowName, 'controller-name');
-
- titleRow = addRow(_this, titleRowName);
-
- const onClickTitle = function(e) {
- e.preventDefault();
- _this.closed = !_this.closed;
- return false;
- };
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(this.__ul, GUI.CLASS_CLOSED);
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(titleRow, 'title');
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(titleRow, 'click', onClickTitle);
-
- if (!params.closed) {
- this.closed = false;
- }
- }
-
- if (params.autoPlace) {
- if (_utils_common__WEBPACK_IMPORTED_MODULE_12__.default.isUndefined(params.parent)) {
- if (autoPlaceVirgin) {
- autoPlaceContainer = document.createElement('div');
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(autoPlaceContainer, CSS_NAMESPACE);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(autoPlaceContainer, GUI.CLASS_AUTO_PLACE_CONTAINER);
- document.body.appendChild(autoPlaceContainer);
- autoPlaceVirgin = false;
- }
-
- // Put it in the dom for you.
- autoPlaceContainer.appendChild(this.domElement);
-
- // Apply the auto styles
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(this.domElement, GUI.CLASS_AUTO_PLACE);
- }
-
-
- // Make it not elastic.
- if (!this.parent) {
- setWidth(_this, params.width);
- }
- }
-
- this.__resizeHandler = function() {
- _this.onResizeDebounced();
- };
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(window, 'resize', this.__resizeHandler);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(this.__ul, 'webkitTransitionEnd', this.__resizeHandler);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(this.__ul, 'transitionend', this.__resizeHandler);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(this.__ul, 'oTransitionEnd', this.__resizeHandler);
- 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() {
- const root = _this.getRoot();
- root.width += 1;
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.defer(function() {
- root.width -= 1;
- });
- }
-
- if (!params.parent) {
- resetWidth();
- }
-};
-
-GUI.toggleHide = function() {
- hide = !hide;
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(hideableGuis, function(gui) {
- gui.domElement.style.display = hide ? 'none' : '';
- });
-};
-
-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_CLOSE_TOP = 'close-top';
-GUI.CLASS_CLOSE_BOTTOM = 'close-bottom';
-GUI.CLASS_DRAG = 'drag';
-
-GUI.DEFAULT_WIDTH = 245;
-GUI.TEXT_CLOSED = 'Close Controls';
-GUI.TEXT_OPEN = 'Open Controls';
-
-GUI._keydownHandler = function(e) {
- if (document.activeElement.type !== 'text' &&
- (e.which === HIDE_KEY_CODE || e.keyCode === HIDE_KEY_CODE)) {
- GUI.toggleHide();
- }
-};
-_dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(window, 'keydown', GUI._keydownHandler, false);
-
-_utils_common__WEBPACK_IMPORTED_MODULE_12__.default.extend(
- GUI.prototype,
-
- /** @lends GUI.prototype */
- {
-
- /**
- * Adds a new {@link Controller} to the GUI. The type of controller created
- * is inferred from the initial value of object[property]
. For
- * color properties, see {@link addColor}.
- *
- * @param {Object} object The object to be manipulated
- * @param {String} property The name of the property to be manipulated
- * @param {Number} [min] Minimum allowed value
- * @param {Number} [max] Maximum allowed value
- * @param {Number} [step] Increment by which to change value
- * @returns {Controller} The controller that was added to the GUI.
- * @instance
- *
- * @example
- * // Add a string controller.
- * var person = {name: 'Sam'};
- * gui.add(person, 'name');
- *
- * @example
- * // Add a number controller slider.
- * var person = {age: 45};
- * gui.add(person, 'age', 0, 100);
- */
- add: function(object, property) {
- return add(
- this,
- object,
- property,
- {
- factoryArgs: Array.prototype.slice.call(arguments, 2)
- }
- );
- },
-
- /**
- * Adds a new color controller to the GUI.
- *
- * @param object
- * @param property
- * @returns {Controller} The controller that was added to the GUI.
- * @instance
- *
- * @example
- * var palette = {
- * color1: '#FF0000', // CSS string
- * color2: [ 0, 128, 255 ], // RGB array
- * color3: [ 0, 128, 255, 0.3 ], // RGB with alpha
- * color4: { h: 350, s: 0.9, v: 0.3 } // Hue, saturation, value
- * };
- * gui.addColor(palette, 'color1');
- * gui.addColor(palette, 'color2');
- * gui.addColor(palette, 'color3');
- * gui.addColor(palette, 'color4');
- */
- addColor: function(object, property) {
- return add(
- this,
- object,
- property,
- {
- color: true
- }
- );
- },
-
- /**
- * Removes the given controller from the GUI.
- * @param {Controller} controller
- * @instance
- */
- remove: function(controller) {
- // TODO listening?
- this.__ul.removeChild(controller.__li);
- this.__controllers.splice(this.__controllers.indexOf(controller), 1);
- const _this = this;
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.defer(function() {
- _this.onResize();
- });
- },
-
- /**
- * Removes the root GUI from the document and unbinds all event listeners.
- * For subfolders, use `gui.removeFolder(folder)` instead.
- * @instance
- */
- destroy: function() {
- if (this.parent) {
- throw new Error(
- 'Only the root GUI should be removed with .destroy(). ' +
- 'For subfolders, use gui.removeFolder(folder) instead.'
- );
- }
-
- if (this.autoPlace) {
- autoPlaceContainer.removeChild(this.domElement);
- }
-
- const _this = this;
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(this.__folders, function(subfolder) {
- _this.removeFolder(subfolder);
- });
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.unbind(window, 'keydown', GUI._keydownHandler, false);
-
- removeListeners(this);
- },
-
- /**
- * Creates a new subfolder GUI instance.
- * @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(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 + '"');
- }
-
- const newGuiParams = { name: name, parent: this };
-
- // 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.
- newGuiParams.autoPlace = this.autoPlace;
-
- // 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
- newGuiParams.closed = this.load.folders[name].closed;
-
- // Pass down the loaded data
- newGuiParams.load = this.load.folders[name];
- }
-
- const gui = new GUI(newGuiParams);
- this.__folders[name] = gui;
-
- const li = addRow(this, gui.domElement);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(li, 'folder');
- return gui;
- },
-
- /**
- * Removes a subfolder GUI instance.
- * @param {dat.gui.GUI} folder The folder to remove.
- * @instance
- */
- removeFolder: function(folder) {
- this.__ul.removeChild(folder.domElement.parentElement);
-
- delete this.__folders[folder.name];
-
- // 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[folder.name]) {
- delete this.load.folders[folder.name];
- }
-
- removeListeners(folder);
-
- const _this = this;
-
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(folder.__folders, function(subfolder) {
- folder.removeFolder(subfolder);
- });
-
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.defer(function() {
- _this.onResize();
- });
- },
-
- /**
- * Opens the GUI.
- */
- open: function() {
- this.closed = false;
- },
-
- /**
- * Closes the GUI.
- */
- close: function() {
- this.closed = true;
- },
-
- /**
- * Hides the GUI.
- */
- hide: function() {
- this.domElement.style.display = 'none';
- },
-
- /**
- * Shows the GUI.
- */
- show: function() {
- this.domElement.style.display = '';
- },
-
-
- onResize: function() {
- // we debounce this function to prevent performance issues when rotating on tablet/mobile
- const root = this.getRoot();
- if (root.scrollable) {
- const top = _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.getOffset(root.__ul).top;
- let h = 0;
-
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(root.__ul.childNodes, function(node) {
- if (!(root.autoPlace && node === root.__save_row)) {
- h += _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.getHeight(node);
- }
- });
-
- if (window.innerHeight - top - CLOSE_BUTTON_HEIGHT < h) {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(root.domElement, GUI.CLASS_TOO_TALL);
- root.__ul.style.height = window.innerHeight - top - CLOSE_BUTTON_HEIGHT + 'px';
- } else {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.removeClass(root.domElement, GUI.CLASS_TOO_TALL);
- root.__ul.style.height = 'auto';
- }
- }
-
- if (root.__resize_handle) {
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.defer(function() {
- root.__resize_handle.style.height = root.__ul.offsetHeight + 'px';
- });
- }
-
- if (root.__closeButton) {
- root.__closeButton.style.width = root.width + 'px';
- }
- },
-
- onResizeDebounced: _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.debounce(function() { this.onResize(); }, 50),
-
- /**
- * 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
- * @ignore
- */
- remember: function() {
- if (_utils_common__WEBPACK_IMPORTED_MODULE_12__.default.isUndefined(SAVE_DIALOGUE)) {
- SAVE_DIALOGUE = new _dom_CenteredDiv__WEBPACK_IMPORTED_MODULE_10__.default();
- SAVE_DIALOGUE.domElement.innerHTML = _saveDialogue_html__WEBPACK_IMPORTED_MODULE_1__.default;
- }
-
- if (this.parent) {
- throw new Error('You can only call remember on a top level GUI.');
- }
-
- const _this = this;
-
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(Array.prototype.slice.call(arguments), function(object) {
- if (_this.__rememberedObjects.length === 0) {
- addSaveMenu(_this);
- }
- if (_this.__rememberedObjects.indexOf(object) === -1) {
- _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() {
- let 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() {
- const 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 = {};
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(this.__folders, function(element, key) {
- toReturn.folders[key] = element.getSaveObject();
- });
-
- return toReturn;
- },
-
- save: function() {
- if (!this.load.remembered) {
- this.load.remembered = {};
- }
-
- this.load.remembered[this.preset] = getCurrentPreset(this);
- markPresetModified(this, false);
- this.saveToLocalStorageIfPossible();
- },
-
- saveAs: function(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(gui) {
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.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);
- }
-
- // fire onFinishChange callback
- if (controller.__onFinishChange) {
- controller.__onFinishChange.call(controller, controller.getValue());
- }
- }, this);
-
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(this.__folders, function(folder) {
- folder.revert(folder);
- });
-
- if (!gui) {
- markPresetModified(this.getRoot(), false);
- }
- },
-
- listen: function(controller) {
- const init = this.__listening.length === 0;
- this.__listening.push(controller);
- if (init) {
- updateDisplays(this.__listening);
- }
- },
-
- updateDisplay: function() {
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(this.__controllers, function(controller) {
- controller.updateDisplay();
- });
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(this.__folders, function(folder) {
- folder.updateDisplay();
- });
- }
- }
-);
-
-/**
- * Add a row to the end of the GUI or before another row.
- *
- * @param gui
- * @param [newDom] If specified, inserts the dom content in the new row
- * @param [liBefore] If specified, places the new row before another row
- *
- * @ignore
- */
-function addRow(gui, newDom, liBefore) {
- const li = document.createElement('li');
- if (newDom) {
- li.appendChild(newDom);
- }
-
- if (liBefore) {
- gui.__ul.insertBefore(li, liBefore);
- } else {
- gui.__ul.appendChild(li);
- }
- gui.onResize();
- return li;
-}
-
-function removeListeners(gui) {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.unbind(window, 'resize', gui.__resizeHandler);
-
- if (gui.saveToLocalStorageIfPossible) {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.unbind(window, 'unload', gui.saveToLocalStorageIfPossible);
- }
-}
-
-function markPresetModified(gui, modified) {
- const opt = gui.__preset_select[gui.__preset_select.selectedIndex];
-
- if (modified) {
- opt.innerHTML = opt.value + '*';
- } else {
- opt.innerHTML = opt.value;
- }
-}
-
-function augmentController(gui, li, controller) {
- controller.__li = li;
- controller.__gui = gui;
-
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.extend(controller, /** @lends Controller.prototype */ {
- /**
- * @param {Array|Object} options
- * @return {Controller}
- */
- options: function(options) {
- if (arguments.length > 1) {
- const nextSibling = controller.__li.nextElementSibling;
- controller.remove();
-
- return add(
- gui,
- controller.object,
- controller.property,
- {
- before: nextSibling,
- factoryArgs: [_utils_common__WEBPACK_IMPORTED_MODULE_12__.default.toArray(arguments)]
- }
- );
- }
-
- if (_utils_common__WEBPACK_IMPORTED_MODULE_12__.default.isArray(options) || _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.isObject(options)) {
- const nextSibling = controller.__li.nextElementSibling;
- controller.remove();
-
- return add(
- gui,
- controller.object,
- controller.property,
- {
- before: nextSibling,
- factoryArgs: [options]
- }
- );
- }
- },
-
- /**
- * Sets the name of the controller.
- * @param {string} name
- * @return {Controller}
- */
- name: function(name) {
- controller.__li.firstElementChild.firstElementChild.innerHTML = name;
- return controller;
- },
-
- /**
- * Sets controller to listen for changes on its underlying object.
- * @return {Controller}
- */
- listen: function() {
- controller.__gui.listen(controller);
- return controller;
- },
-
- /**
- * Removes the controller from its parent GUI.
- * @return {Controller}
- */
- remove: function() {
- controller.__gui.remove(controller);
- return controller;
- }
- });
-
- // All sliders should be accompanied by a box.
- if (controller instanceof _controllers_NumberControllerSlider__WEBPACK_IMPORTED_MODULE_7__.default) {
- const box = new _controllers_NumberControllerBox__WEBPACK_IMPORTED_MODULE_6__.default(controller.object, controller.property,
- { min: controller.__min, max: controller.__max, step: controller.__step });
-
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(['updateDisplay', 'onChange', 'onFinishChange', 'step', 'min', 'max'], function(method) {
- const pc = controller[method];
- const pb = box[method];
- controller[method] = box[method] = function() {
- const args = Array.prototype.slice.call(arguments);
- pb.apply(box, args);
- return pc.apply(controller, args);
- };
- });
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(li, 'has-slider');
- controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild);
- } else if (controller instanceof _controllers_NumberControllerBox__WEBPACK_IMPORTED_MODULE_6__.default) {
- const r = function(returned) {
- // Have we defined both boundaries?
- if (_utils_common__WEBPACK_IMPORTED_MODULE_12__.default.isNumber(controller.__min) && _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.isNumber(controller.__max)) {
- // Well, then lets just replace this with a slider.
-
- // lets remember if the old controller had a specific name or was listening
- const oldName = controller.__li.firstElementChild.firstElementChild.innerHTML;
- const wasListening = controller.__gui.__listening.indexOf(controller) > -1;
-
- controller.remove();
- const newController = add(
- gui,
- controller.object,
- controller.property,
- {
- before: controller.__li.nextElementSibling,
- factoryArgs: [controller.__min, controller.__max, controller.__step]
- });
-
- newController.name(oldName);
- if (wasListening) newController.listen();
-
- return newController;
- }
-
- return returned;
- };
-
- controller.min = _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.compose(r, controller.min);
- controller.max = _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.compose(r, controller.max);
- } else if (controller instanceof _controllers_BooleanController__WEBPACK_IMPORTED_MODULE_4__.default) {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(li, 'click', function() {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.fakeEvent(controller.__checkbox, 'click');
- });
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(controller.__checkbox, 'click', function(e) {
- e.stopPropagation(); // Prevents double-toggle
- });
- } else if (controller instanceof _controllers_FunctionController__WEBPACK_IMPORTED_MODULE_5__.default) {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(li, 'click', function() {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.fakeEvent(controller.__button, 'click');
- });
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(li, 'mouseover', function() {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(controller.__button, 'hover');
- });
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(li, 'mouseout', function() {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.removeClass(controller.__button, 'hover');
- });
- } else if (controller instanceof _controllers_ColorController__WEBPACK_IMPORTED_MODULE_8__.default) {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(li, 'color');
- controller.updateDisplay = _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.compose(function(val) {
- li.style.borderLeftColor = controller.__color.toString();
- return val;
- }, controller.updateDisplay);
-
- controller.updateDisplay();
- }
-
- controller.setValue = _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.compose(function(val) {
- if (gui.getRoot().__preset_select && controller.isModified()) {
- markPresetModified(gui.getRoot(), true);
- }
-
- return val;
- }, controller.setValue);
-}
-
-function recallSavedValue(gui, controller) {
- // Find the topmost GUI, that's where remembered objects live.
- const root = gui.getRoot();
-
- // Does the object we're controlling match anything we've been told to
- // remember?
- const matchedIndex = root.__rememberedObjects.indexOf(controller.object);
-
- // Why yes, it does!
- if (matchedIndex !== -1) {
- // Let me fetch a map of controllers for thcommon.isObject.
- let controllerMap = root.__rememberedObjectIndecesToControllers[matchedIndex];
-
- // Ohp, I believe this is the first controller we've created for this
- // object. Lets make the map fresh.
- if (controllerMap === undefined) {
- controllerMap = {};
- root.__rememberedObjectIndecesToControllers[matchedIndex] =
- controllerMap;
- }
-
- // Keep track of this controller
- controllerMap[controller.property] = controller;
-
- // Okay, now have we saved any values for this controller?
- if (root.load && root.load.remembered) {
- const presetMap = root.load.remembered;
-
- // Which preset are we trying to load?
- let preset;
-
- if (presetMap[gui.preset]) {
- preset = presetMap[gui.preset];
- } else if (presetMap[DEFAULT_DEFAULT_PRESET_NAME]) {
- // Uhh, you can have the default instead?
- preset = presetMap[DEFAULT_DEFAULT_PRESET_NAME];
- } else {
- // Nada.
- return;
- }
-
- // Did the loaded object remember thcommon.isObject? && Did we remember this particular property?
- if (preset[matchedIndex] && preset[matchedIndex][controller.property] !== undefined) {
- // We did remember something for this guy ...
- const value = preset[matchedIndex][controller.property];
-
- // And that's what it is.
- controller.initialValue = value;
- controller.setValue(value);
- }
- }
- }
-}
-
-function add(gui, object, property, params) {
- if (object[property] === undefined) {
- throw new Error(`Object "${object}" has no property "${property}"`);
- }
-
- let controller;
-
- if (params.color) {
- controller = new _controllers_ColorController__WEBPACK_IMPORTED_MODULE_8__.default(object, property);
- } else {
- const factoryArgs = [object, property].concat(params.factoryArgs);
- controller = _controllers_ControllerFactory__WEBPACK_IMPORTED_MODULE_2__.default.apply(gui, factoryArgs);
- }
-
- if (params.before instanceof _controllers_Controller__WEBPACK_IMPORTED_MODULE_3__.default) {
- params.before = params.before.__li;
- }
-
- recallSavedValue(gui, controller);
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(controller.domElement, 'c');
-
- const name = document.createElement('span');
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(name, 'property-name');
- name.innerHTML = controller.property;
-
- const container = document.createElement('div');
- container.appendChild(name);
- container.appendChild(controller.domElement);
-
- const li = addRow(gui, container, params.before);
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(li, GUI.CLASS_CONTROLLER_ROW);
- if (controller instanceof _controllers_ColorController__WEBPACK_IMPORTED_MODULE_8__.default) {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(li, 'color');
- } else {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(li, typeof controller.getValue());
- }
-
- augmentController(gui, li, controller);
-
- gui.__controllers.push(controller);
-
- return controller;
-}
-
-function getLocalStorageHash(gui, key) {
- // TODO how does this deal with multiple GUI's?
- return document.location.href + '.' + key;
-}
-
-function addPresetOption(gui, name, setSelected) {
- const 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;
- }
-}
-
-function showHideExplain(gui, explain) {
- explain.style.display = gui.useLocalStorage ? 'block' : 'none';
-}
-
-function addSaveMenu(gui) {
- const div = gui.__save_row = document.createElement('li');
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(gui.domElement, 'has-save');
-
- gui.__ul.insertBefore(div, gui.__ul.firstChild);
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(div, 'save-row');
-
- const gears = document.createElement('span');
- gears.innerHTML = ' ';
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(gears, 'button gears');
-
- // TODO replace with FunctionController
- const button = document.createElement('span');
- button.innerHTML = 'Save';
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(button, 'button');
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(button, 'save');
-
- const button2 = document.createElement('span');
- button2.innerHTML = 'New';
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(button2, 'button');
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(button2, 'save-as');
-
- const button3 = document.createElement('span');
- button3.innerHTML = 'Revert';
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(button3, 'button');
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(button3, 'revert');
-
- const select = gui.__preset_select = document.createElement('select');
-
- if (gui.load && gui.load.remembered) {
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(gui.load.remembered, function(value, key) {
- addPresetOption(gui, key, key === gui.preset);
- });
- } else {
- addPresetOption(gui, DEFAULT_DEFAULT_PRESET_NAME, false);
- }
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(select, 'change', function() {
- for (let 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) {
- const explain = document.getElementById('dg-local-explain');
- const localStorageCheckBox = document.getElementById('dg-local-storage');
- const saveLocally = document.getElementById('dg-save-locally');
-
- saveLocally.style.display = 'block';
-
- if (localStorage.getItem(getLocalStorageHash(gui, 'isLocal')) === 'true') {
- localStorageCheckBox.setAttribute('checked', 'checked');
- }
-
- showHideExplain(gui, explain);
-
- // TODO: Use a boolean controller, fool!
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(localStorageCheckBox, 'change', function() {
- gui.useLocalStorage = !gui.useLocalStorage;
- showHideExplain(gui, explain);
- });
- }
-
- const newConstructorTextArea = document.getElementById('dg-new-constructor');
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(newConstructorTextArea, 'keydown', function(e) {
- if (e.metaKey && (e.which === 67 || e.keyCode === 67)) {
- SAVE_DIALOGUE.hide();
- }
- });
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(gears, 'click', function() {
- newConstructorTextArea.innerHTML = JSON.stringify(gui.getSaveObject(), undefined, 2);
- SAVE_DIALOGUE.show();
- newConstructorTextArea.focus();
- newConstructorTextArea.select();
- });
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(button, 'click', function() {
- gui.save();
- });
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(button2, 'click', function() {
- const presetName = prompt('Enter a new preset name.');
- if (presetName) {
- gui.saveAs(presetName);
- }
- });
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(button3, 'click', function() {
- gui.revert();
- });
-
- // div.appendChild(button2);
-}
-
-function addResizeHandle(gui) {
- let pmouseX;
-
- gui.__resize_handle = document.createElement('div');
-
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.extend(gui.__resize_handle.style, {
-
- width: '6px',
- marginLeft: '-3px',
- height: '200px',
- cursor: 'ew-resize',
- position: 'absolute'
- // border: '1px solid blue'
-
- });
-
- function drag(e) {
- e.preventDefault();
-
- gui.width += pmouseX - e.clientX;
- gui.onResize();
- pmouseX = e.clientX;
-
- return false;
- }
-
- function dragStop() {
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.removeClass(gui.__closeButton, GUI.CLASS_DRAG);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.unbind(window, 'mousemove', drag);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.unbind(window, 'mouseup', dragStop);
- }
-
- function dragStart(e) {
- e.preventDefault();
-
- pmouseX = e.clientX;
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.addClass(gui.__closeButton, GUI.CLASS_DRAG);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(window, 'mousemove', drag);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(window, 'mouseup', dragStop);
-
- return false;
- }
-
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(gui.__resize_handle, 'mousedown', dragStart);
- _dom_dom__WEBPACK_IMPORTED_MODULE_11__.default.bind(gui.__closeButton, 'mousedown', dragStart);
-
- gui.domElement.insertBefore(gui.__resize_handle, gui.domElement.firstElementChild);
-}
-
-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) {
- const toReturn = {};
-
- // For each object I'm remembering
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(gui.__rememberedObjects, function(val, index) {
- const savedValues = {};
-
- // The controllers I've made for thcommon.isObject by property
- const controllerMap =
- gui.__rememberedObjectIndecesToControllers[index];
-
- // Remember each value for each property
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(controllerMap, function(controller, property) {
- savedValues[property] = useInitialValues ? controller.initialValue : controller.getValue();
- });
-
- // Save the values for thcommon.isObject
- toReturn[index] = savedValues;
- });
-
- return toReturn;
-}
-
-function setPresetSelectIndex(gui) {
- for (let index = 0; index < gui.__preset_select.length; index++) {
- if (gui.__preset_select[index].value === gui.preset) {
- gui.__preset_select.selectedIndex = index;
- }
- }
-}
-
-function updateDisplays(controllerArray) {
- if (controllerArray.length !== 0) {
- _utils_requestAnimationFrame__WEBPACK_IMPORTED_MODULE_9__.default.call(window, function() {
- updateDisplays(controllerArray);
- });
- }
-
- _utils_common__WEBPACK_IMPORTED_MODULE_12__.default.each(controllerArray, function(c) {
- c.updateDisplay();
- });
-}
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (GUI);
-
-
-/***/ }),
-
-/***/ "./node_modules/dat.gui/src/dat/gui/saveDialogue.html.js":
-/*!***************************************************************!*\
- !*** ./node_modules/dat.gui/src/dat/gui/saveDialogue.html.js ***!
- \***************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-const saveDialogContents = `GUI
's constructor:
-
-
-
- localStorage
on exit.
-
- localStorage
will
- override those passed to dat.GUI
's constructor. This makes it
- easier to work incrementally, but localStorage
is fragile,
- and your friends may not see the same values you do.
-
-