Spaces:
Running
Running
Download dat.gui-master/src/dat/controllers/Controller.js from thesuryash/ASCII-GLB-Viewer: direct link, hf CLI and curl.
- Browser
- Download file 3.05 kB
-
https://huggingface.co/spaces/thesuryash/ASCII-GLB-Viewer/resolve/main/dat.gui-master/src/dat/controllers/Controller.js
- Command line
-
hf download hf://spaces/thesuryash/ASCII-GLB-Viewer/dat.gui-master/src/dat/controllers/Controller.js
-
curl -L -o Controller.js https://huggingface.co/spaces/thesuryash/ASCII-GLB-Viewer/resolve/main/dat.gui-master/src/dat/controllers/Controller.js
3.05 kB
| /** | |
| * dat-gui JavaScript Controller Library | |
| * https://github.com/dataarts/dat.gui | |
| * | |
| * Copyright 2011 Data Arts Team, Google Creative Lab | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| */ | |
| /** | |
| * @class An "abstract" class that represents a given property of an object. | |
| * | |
| * @param {Object} object The object to be manipulated | |
| * @param {string} property The name of the property to be manipulated | |
| */ | |
| class Controller { | |
| constructor(object, property) { | |
| this.initialValue = object[property]; | |
| /** | |
| * Those who extend this class will put their DOM elements in here. | |
| * @type {DOMElement} | |
| */ | |
| this.domElement = document.createElement('div'); | |
| /** | |
| * The object to manipulate | |
| * @type {Object} | |
| */ | |
| this.object = object; | |
| /** | |
| * The name of the property to manipulate | |
| * @type {String} | |
| */ | |
| this.property = property; | |
| /** | |
| * The function to be called on change. | |
| * @type {Function} | |
| * @ignore | |
| */ | |
| this.__onChange = undefined; | |
| /** | |
| * The function to be called on finishing change. | |
| * @type {Function} | |
| * @ignore | |
| */ | |
| this.__onFinishChange = undefined; | |
| } | |
| /** | |
| * Specify that a function fire every time someone changes the value with | |
| * this Controller. | |
| * | |
| * @param {Function} fnc This function will be called whenever the value | |
| * is modified via this Controller. | |
| * @returns {Controller} this | |
| */ | |
| onChange(fnc) { | |
| this.__onChange = fnc; | |
| return this; | |
| } | |
| /** | |
| * Specify that a function fire every time someone "finishes" changing | |
| * the value wih this Controller. Useful for values that change | |
| * incrementally like numbers or strings. | |
| * | |
| * @param {Function} fnc This function will be called whenever | |
| * someone "finishes" changing the value via this Controller. | |
| * @returns {Controller} this | |
| */ | |
| onFinishChange(fnc) { | |
| this.__onFinishChange = fnc; | |
| return this; | |
| } | |
| /** | |
| * Change the value of <code>object[property]</code> | |
| * | |
| * @param {Object} newValue The new value of <code>object[property]</code> | |
| */ | |
| setValue(newValue) { | |
| this.object[this.property] = newValue; | |
| if (this.__onChange) { | |
| this.__onChange.call(this, newValue); | |
| } | |
| this.updateDisplay(); | |
| return this; | |
| } | |
| /** | |
| * Gets the value of <code>object[property]</code> | |
| * | |
| * @returns {Object} The current value of <code>object[property]</code> | |
| */ | |
| 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(); | |
| } | |
| } | |
| export default Controller; | |