@xviewer.js/debug 1.0.0-alpha.57 → 1.0.0-alpha.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../../../node_modules/.pnpm/rollup-plugin-styles@4.0.0_rollup@4.17.2/node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","../src/gui/controllers/Controller.ts","../src/gui/controllers/OptionController.ts","../src/gui/utils/normalizeColorString.ts","../src/gui/utils/getColorFormat.ts","../src/gui/utils/index.ts","../src/gui/controllers/NumberController.ts","../src/gui/controllers/BooleanController.ts","../src/gui/controllers/StringController.ts","../src/gui/controllers/FunctionController.ts","../src/gui/controllers/ColorController.ts","../src/gui/controllers/ImageController.ts","../src/gui/common/UIElement.ts","../src/gui/common/UINumber.ts","../src/gui/controllers/VectorController.ts","../src/gui/curve/CurveEditor.ts","../src/gui/controllers/CurveController.ts","../src/gui/controllers/TextureController.ts","../src/gui/GUI.ts","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/InspectorPlugin.ts","../src/stats/Stats.js","../src/StatsPlugin.ts"],"sourcesContent":["var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c()}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a=\"prepend\"===s?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}export{n as default};\n","import { GUI } from \"../GUI\";\n\nexport class Controller {\n static nextNameID: number = 0;\n\n parent: GUI;\n object: Object;\n property: string;\n /**\n * The value of `object[ property ]` when the controller was created.\n */\n initialValue: any;\n /**\n * The outermost container DOM element for this controller.\n */\n domElement: HTMLElement;\n /**\n * The DOM element that contains the controller's name.\n */\n $name: HTMLElement;\n /**\n * The DOM element that contains the controller's \"widget\" (which differs by controller type).\n */\n $widget: HTMLElement;\n /**\n * The DOM element that receives the disabled attribute when using disable()\n */\n $disable: HTMLElement;\n /**\n * Used to determine if the controller is disabled.\n * Use `controller.disable( true|false )` to modify this value\n */\n protected _disabled: boolean = false;\n /**\n * Used to determine if the Controller is hidden.\n * Use `controller.show()` or `controller.hide()` to change this.\n */\n protected _hidden: boolean = false;\n protected _changed: boolean = false;\n /**\n * Used to determine if the controller is currently listening. Don't modify this value\n * directly. Use the `controller.listen( true|false )` method instead.\n */\n protected _listening: boolean = false;\n protected _listenCallbackID: number = -1;\n protected _listenPrevValue: any;\n /**\n * The controller's name. Use `controller.name( 'Name' )` to modify this value.\n */\n _name: string = \"\";\n /**\n * Used to access the function bound to `onChange` events. Don't modify this value directly.\n * Use the `controller.onChange( callback )` method instead.\n */\n protected _onChange: Function;\n /**\n * Used to access the function bound to `onFinishChange` events. Don't modify this value\n * directly. Use the `controller.onFinishChange( callback )` method instead.\n */\n protected _onFinishChange: Function;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n className: string,\n widgetTag: string = 'div'\n ) {\n this.parent = parent;\n this.object = object;\n this.property = property;\n\n this.initialValue = this.getValue();\n this.domElement = document.createElement('div');\n this.domElement.classList.add('controller');\n this.domElement.classList.add(className);\n\n this.$name = document.createElement('div');\n this.$name.classList.add('name');\n\n Controller.nextNameID = Controller.nextNameID || 0;\n this.$name.id = `lil-gui-name-${++Controller.nextNameID}`;\n\n /**\n * The DOM element that contains the controller's \"widget\" (which differs by controller type).\n * @type {HTMLElement}\n */\n this.$widget = document.createElement(widgetTag);\n this.$widget.classList.add('widget');\n this.$disable = this.$widget;\n\n this.domElement.appendChild(this.$name);\n this.domElement.appendChild(this.$widget);\n // Don't fire global key events while typing in a controller\n this.domElement.addEventListener('keydown', e => e.stopPropagation());\n this.domElement.addEventListener('keyup', e => e.stopPropagation());\n\n this.parent.children.push(this);\n this.parent.controllers.push(this);\n\n this.parent.$children.appendChild(this.domElement);\n\n this._listenCallback = this._listenCallback.bind(this);\n\n this.name(property);\n\n }\n\n /**\n * Sets the name of the controller and its label in the GUI.\n * @param {string} name\n * @returns {this}\n */\n name(name: string) {\n this._name = name;\n this.$name.innerHTML = name;\n return this;\n }\n\n /**\n * Pass a function to be called whenever the value is modified by this controller.\n * The function receives the new value as its first parameter. The value of `this` will be the\n * controller.\n *\n * For function controllers, the `onChange` callback will be fired on click, after the function\n * executes.\n * @param {Function} callback\n * @returns {this}\n * @example\n * const controller = gui.add( object, 'property' );\n *\n * controller.onChange( function( v ) {\n * \tconsole.log( 'The value is now ' + v );\n * \tconsole.assert( this === controller );\n * } );\n */\n onChange(callback: Function) {\n this._onChange = callback;\n return this;\n }\n\n /**\n * Calls the onChange methods of this controller and its parent GUI.\n */\n protected _callOnChange() {\n this.parent._callOnChange(this);\n if (this._onChange !== undefined) {\n this._onChange.call(this, this.getValue());\n }\n this._changed = true;\n }\n\n /**\n * Pass a function to be called after this controller has been modified and loses focus.\n * @param {Function} callback\n * @returns {this}\n * @example\n * const controller = gui.add( object, 'property' );\n *\n * controller.onFinishChange( function( v ) {\n * \tconsole.log( 'Changes complete: ' + v );\n * \tconsole.assert( this === controller );\n * } );\n */\n onFinishChange(callback: Function) {\n this._onFinishChange = callback;\n return this;\n }\n\n /**\n * Should be called by Controller when its widgets lose focus.\n */\n protected _callOnFinishChange() {\n if (this._changed) {\n this.parent._callOnFinishChange(this);\n if (this._onFinishChange !== undefined) {\n this._onFinishChange.call(this, this.getValue());\n }\n }\n this._changed = false;\n }\n\n /**\n * Sets the controller back to its initial value.\n * @returns {this}\n */\n reset() {\n this.setValue(this.initialValue);\n this._callOnFinishChange();\n return this;\n }\n\n /**\n * Enables this controller.\n * @param {boolean} enabled\n * @returns {this}\n * @example\n * controller.enable();\n * controller.enable( false ); // disable\n * controller.enable( controller._disabled ); // toggle\n */\n enable(enabled = true) {\n return this.disable(!enabled);\n }\n\n /**\n * Disables this controller.\n * @param {boolean} disabled\n * @returns {this}\n * @example\n * controller.disable();\n * controller.disable( false ); // enable\n * controller.disable( !controller._disabled ); // toggle\n */\n disable(disabled = true) {\n if (disabled === this._disabled) return this;\n this._disabled = disabled;\n this.domElement.classList.toggle('disabled', disabled);\n this.$disable.toggleAttribute('disabled', disabled);\n return this;\n\n }\n\n /**\n * Shows the Controller after it's been hidden.\n * @param {boolean} show\n * @returns {this}\n * @example\n * controller.show();\n * controller.show( false ); // hide\n * controller.show( controller._hidden ); // toggle\n */\n show(show: boolean = true) {\n this._hidden = !show;\n this.domElement.style.display = this._hidden ? 'none' : '';\n return this;\n\n }\n\n /**\n * Hides the Controller.\n * @returns {this}\n */\n hide() {\n return this.show(false);\n }\n\n options(options: any) {\n return this;\n }\n\n /**\n * Sets the minimum value. Only works on number controllers.\n * @param {number} min\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n min(min: number) {\n return this;\n }\n\n /**\n * Sets the maximum value. Only works on number controllers.\n * @param {number} max\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n max(max: number) {\n return this;\n }\n\n /**\n * Values set by this controller will be rounded to multiples of `step`. Only works on number\n * controllers.\n * @param {number} step\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n step(step: number) {\n return this;\n }\n\n /**\n * Rounds the displayed value to a fixed number of decimals, without affecting the actual value\n * like `step()`. Only works on number controllers.\n * @example\n * gui.add( object, 'property' ).listen().decimals( 4 );\n * @param {number} decimals\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n decimals(decimals: number) {\n return this;\n }\n\n /**\n * Calls `updateDisplay()` every animation frame. Pass `false` to stop listening.\n * @param {boolean} listen\n * @returns {this}\n */\n listen(listen: boolean = true) {\n this._listening = listen;\n if (this._listenCallbackID !== undefined) {\n cancelAnimationFrame(this._listenCallbackID);\n this._listenCallbackID = undefined;\n }\n if (this._listening) {\n this._listenCallback();\n }\n return this;\n\n }\n\n needsUpdateDisplay() {\n if (this.parent._closed) {\n return false;\n }\n let value = this.save();\n if (this._listenPrevValue !== value) {\n this._listenPrevValue = value;\n return true;\n }\n return false;\n }\n\n private _listenCallback() {\n this._listenCallbackID = requestAnimationFrame(this._listenCallback);\n // To prevent framerate loss, make sure the value has changed before updating the display.\n // Note: save() is used here instead of getValue() only because of ColorController. The !== operator\n // won't work for color objects or arrays, but ColorController.save() always returns a string.\n if (this.needsUpdateDisplay()) {\n this.updateDisplay();\n }\n }\n\n /**\n * Returns `object[ property ]`.\n * @returns {any}\n */\n getValue() {\n return this.object[this.property];\n }\n\n /**\n * Sets the value of `object[ property ]`, invokes any `onChange` handlers and updates the display.\n * @param {any} value\n * @param {boolean} callOnChange\n * @returns {this}\n */\n setValue(value: any) {\n this.object[this.property] = value;\n this._callOnChange();\n this.updateDisplay();\n return this;\n }\n\n update() {\n if (this.needsUpdateDisplay()) {\n this.updateDisplay();\n }\n }\n\n /**\n * Updates the display to keep it in sync with the current value. Useful for updating your\n * controllers when their values have been modified outside of the GUI.\n * @returns {this}\n */\n updateDisplay() {\n return this;\n }\n\n load(value: any) {\n this.setValue(value);\n this._callOnFinishChange();\n return this;\n }\n\n save() {\n return this.getValue();\n }\n\n /**\n * Destroys this controller and removes it from the parent GUI.\n */\n destroy() {\n this.listen(false);\n this.parent.children.splice(this.parent.children.indexOf(this), 1);\n this.parent.controllers.splice(this.parent.controllers.indexOf(this), 1);\n this.parent.$children.removeChild(this.domElement);\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class OptionController extends Controller {\n $select: HTMLSelectElement;\n $display: HTMLElement;\n\n private _values: any[];\n private _names: string[];\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n options: Array<any> | Object\n ) {\n super(parent, object, property, 'option');\n\n this.$select = document.createElement('select');\n this.$select.setAttribute('aria-labelledby', this.$name.id);\n\n this.$display = document.createElement('div');\n this.$display.classList.add('display');\n\n this._values = Array.isArray(options) ? options : Object.values(options);\n this._names = Array.isArray(options) ? options : Object.keys(options);\n this._names.forEach(name => {\n const $option = document.createElement('option');\n $option.innerHTML = name;\n this.$select.appendChild($option);\n });\n this.$select.addEventListener('change', () => {\n this.setValue(this._values[this.$select.selectedIndex]);\n this._callOnFinishChange();\n });\n this.$select.addEventListener('focus', () => {\n this.$display.classList.add('focus');\n });\n this.$select.addEventListener('blur', () => {\n this.$display.classList.remove('focus');\n });\n\n this.$widget.appendChild(this.$select);\n this.$widget.appendChild(this.$display);\n this.$disable = this.$select;\n }\n\n updateDisplay() {\n const value = this.getValue();\n const index = this._values.indexOf(value);\n this.$select.selectedIndex = index;\n this.$display.innerHTML = index === -1 ? value : this._names[index];\n return this;\n }\n\n options(options: Array<any> | Object) {\n this.$select.innerHTML = \"\";\n this._values = Array.isArray(options) ? options : Object.values(options);\n this._names = Array.isArray(options) ? options : Object.keys(options);\n this._names.forEach(name => {\n const $option = document.createElement('option');\n $option.innerHTML = name;\n this.$select.appendChild($option);\n });\n return this;\n }\n}\n","/* eslint-disable no-cond-assign */\n\nexport function normalizeColorString(string: String) {\n\tlet match, result;\n\n\tif (match = string.match(/(#|0x)?([a-f0-9]{6})/i)) {\n\t\tresult = match[2];\n\t} else if (match = string.match(/rgb\\(\\s*(\\d*)\\s*,\\s*(\\d*)\\s*,\\s*(\\d*)\\s*\\)/)) {\n\t\tresult = parseInt(match[1]).toString(16).padStart(2, \"0\")\n\t\t\t+ parseInt(match[2]).toString(16).padStart(2, \"0\")\n\t\t\t+ parseInt(match[3]).toString(16).padStart(2, \"0\");\n\t} else if (match = string.match(/^#?([a-f0-9])([a-f0-9])([a-f0-9])$/i)) {\n\t\tresult = match[1] + match[1] + match[2] + match[2] + match[3] + match[3];\n\t}\n\n\tif (result) {\n\t\treturn '#' + result;\n\t}\n\n\treturn false;\n\n}\n","import { normalizeColorString } from './normalizeColorString';\n\nconst STRING = {\n\tisPrimitive: true,\n\tmatch: v => typeof v === 'string',\n\tfromHexString: normalizeColorString,\n\ttoHexString: normalizeColorString\n};\n\nconst INT = {\n\tisPrimitive: true,\n\tmatch: v => typeof v === 'number',\n\tfromHexString: string => parseInt(string.substring(1), 16),\n\ttoHexString: value => '#' + value.toString(16).padStart(6, 0)\n};\n\nconst ARRAY = {\n\tisPrimitive: false,\n\n\t// The arrow function is here to appease tree shakers like esbuild or webpack.\n\t// See https://esbuild.github.io/api/#tree-shaking\n\tmatch: v => Array.isArray(v),\n\n\tfromHexString(string, target, rgbScale = 1) {\n\n\t\tconst int = INT.fromHexString(string);\n\n\t\ttarget[0] = (int >> 16 & 255) / 255 * rgbScale;\n\t\ttarget[1] = (int >> 8 & 255) / 255 * rgbScale;\n\t\ttarget[2] = (int & 255) / 255 * rgbScale;\n\n\t},\n\ttoHexString([r, g, b], rgbScale = 1) {\n\n\t\trgbScale = 255 / rgbScale;\n\n\t\tconst int = (r * rgbScale) << 16 ^\n\t\t\t(g * rgbScale) << 8 ^\n\t\t\t(b * rgbScale) << 0;\n\n\t\treturn INT.toHexString(int);\n\n\t}\n};\n\nconst OBJECT = {\n\tisPrimitive: false,\n\tmatch: v => Object(v) === v,\n\tfromHexString(string, target, rgbScale = 1) {\n\n\t\tconst int = INT.fromHexString(string);\n\n\t\ttarget.r = (int >> 16 & 255) / 255 * rgbScale;\n\t\ttarget.g = (int >> 8 & 255) / 255 * rgbScale;\n\t\ttarget.b = (int & 255) / 255 * rgbScale;\n\n\t},\n\ttoHexString({ r, g, b }, rgbScale = 1) {\n\n\t\trgbScale = 255 / rgbScale;\n\n\t\tconst int = (r * rgbScale) << 16 ^\n\t\t\t(g * rgbScale) << 8 ^\n\t\t\t(b * rgbScale) << 0;\n\n\t\treturn INT.toHexString(int);\n\n\t}\n};\n\nconst FORMATS = [STRING, INT, ARRAY, OBJECT];\n\nexport function getColorFormat(value) {\n\treturn FORMATS.find(format => format.match(value));\n}\n","export * from \"./getColorFormat\";\nexport * from \"./normalizeColorString\";\n\nexport function toFixedFloat(v: number, fractionDigits: number) {\n\treturn parseFloat(v.toFixed(fractionDigits));\n}\n\nexport function toFixed(v: number, fractionDigits: number) {\n\treturn toFixedFloat(v, fractionDigits).toString();\n}\n\nexport function getPrecision(value: number) {\n\tlet str = value.toString();\n\tlet index = str.indexOf('.');\n\tif (index > 0) {\n\t\treturn str.length - index - 1;\n\t}\n\treturn 0;\n}\n\nexport function hasDecimal(value: number) {\n\treturn value % 1 !== 0;\n}","import { GUI } from \"../GUI\";\nimport { getPrecision, hasDecimal } from \"../utils\";\nimport { Controller } from \"./Controller\";\n\nexport class NumberController extends Controller {\n private _min: number;\n private _max: number;\n private _step: number;\n\n private _stepExplicit: boolean;\n private _hasSlider: boolean;\n private _inputFocused: boolean;\n\n $fill: HTMLElement;\n $input: HTMLInputElement;\n $slider: HTMLElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n min: number,\n max: number,\n step: number\n ) {\n\n super(parent, object, property, 'number');\n\n this._initInput();\n\n this.min(min);\n this.max(max);\n\n const stepExplicit = step !== undefined;\n this.step(stepExplicit ? step : this._getImplicitStep(), stepExplicit);\n }\n\n min(min: number) {\n this._min = min;\n this._onUpdateMinMax();\n return this;\n }\n\n max(max: number) {\n this._max = max;\n this._onUpdateMinMax();\n return this;\n }\n\n step(step: number, explicit: boolean = true) {\n this._step = step;\n this._stepExplicit = explicit;\n return this;\n }\n\n needsUpdateDisplay() {\n if (this.parent._closed) {\n return false;\n }\n let value = this.getValue();\n if (this._listenPrevValue === undefined || (Math.abs(this._listenPrevValue - value) >= this._step)) {\n this._listenPrevValue = value;\n return true;\n }\n return false;\n }\n\n updateDisplay() {\n const value = this._snap(this.getValue());\n if (this._hasSlider) {\n let percent = (value - this._min) / (this._max - this._min);\n percent = Math.max(0, Math.min(percent, 1));\n this.$fill.style.width = percent * 100 + '%';\n }\n if (!this._inputFocused) {\n this.$input.value = \"\" + value;\n }\n return this;\n }\n\n private _initInput() {\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'text');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n // On touch devices only, use input[type=number] to force a numeric keyboard.\n // Ideally we could use one input type everywhere, but [type=number] has quirks\n // on desktop, and [inputmode=decimal] has quirks on iOS.\n // See https://github.com/georgealways/lil-gui/pull/16\n\n const isTouch = window.matchMedia('(pointer: coarse)').matches;\n\n if (isTouch) {\n this.$input.setAttribute('type', 'number');\n this.$input.setAttribute('step', 'any');\n }\n\n this.$widget.appendChild(this.$input);\n\n this.$disable = this.$input;\n\n const onInput = () => {\n let value = parseFloat(this.$input.value);\n if (isNaN(value)) return;\n if (this._stepExplicit) {\n value = this._snap(value);\n }\n this.setValue(this._clamp(value));\n };\n\n // Keys & mouse wheel\n // ---------------------------------------------------------------------\n const increment = delta => {\n const value = parseFloat(this.$input.value);\n if (isNaN(value)) return;\n this._snapClampSetValue(value + delta);\n // Force the input to updateDisplay when it's focused\n this.$input.value = this.getValue();\n };\n\n const onKeyDown = e => {\n // Using `e.key` instead of `e.code` also catches NumpadEnter\n if (e.key === 'Enter') {\n this.$input.blur();\n }\n if (e.code === 'ArrowUp') {\n e.preventDefault();\n increment(this._step * this._arrowKeyMultiplier(e));\n }\n if (e.code === 'ArrowDown') {\n e.preventDefault();\n increment(this._step * this._arrowKeyMultiplier(e) * -1);\n }\n };\n\n const onWheel = e => {\n if (this._inputFocused) {\n e.preventDefault();\n increment(this._step * this._normalizeMouseWheel(e));\n }\n };\n\n // Vertical drag\n // ---------------------------------------------------------------------\n\n let testingForVerticalDrag = false,\n initClientX,\n initClientY,\n prevClientY,\n initValue,\n dragDelta;\n\n // Once the mouse is dragged more than DRAG_THRESH px on any axis, we decide\n // on the user's intent: horizontal means highlight, vertical means drag.\n const DRAG_THRESH = 5;\n\n const onMouseDown = e => {\n\n initClientX = e.clientX;\n initClientY = prevClientY = e.clientY;\n testingForVerticalDrag = true;\n\n initValue = this.getValue();\n dragDelta = 0;\n\n window.addEventListener('mousemove', onMouseMove);\n window.addEventListener('mouseup', onMouseUp);\n\n };\n\n const onMouseMove = e => {\n if (testingForVerticalDrag) {\n const dx = e.clientX - initClientX;\n const dy = e.clientY - initClientY;\n if (Math.abs(dy) > DRAG_THRESH) {\n e.preventDefault();\n this.$input.blur();\n testingForVerticalDrag = false;\n this._setDraggingStyle(true, 'vertical');\n } else if (Math.abs(dx) > DRAG_THRESH) {\n onMouseUp();\n }\n }\n\n // This isn't an else so that the first move counts towards dragDelta\n if (!testingForVerticalDrag) {\n const dy = e.clientY - prevClientY;\n dragDelta -= dy * this._step * this._arrowKeyMultiplier(e);\n\n // Clamp dragDelta so we don't have 'dead space' after dragging past bounds.\n // We're okay with the fact that bounds can be undefined here.\n if (initValue + dragDelta > this._max) {\n dragDelta = this._max - initValue;\n } else if (initValue + dragDelta < this._min) {\n dragDelta = this._min - initValue;\n }\n\n this._snapClampSetValue(initValue + dragDelta);\n\n }\n\n prevClientY = e.clientY;\n\n };\n\n const onMouseUp = () => {\n this._setDraggingStyle(false, 'vertical');\n this._callOnFinishChange();\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('mouseup', onMouseUp);\n };\n\n // Focus state & onFinishChange\n // ---------------------------------------------------------------------\n\n const onFocus = () => {\n this._inputFocused = true;\n };\n\n const onBlur = () => {\n this._inputFocused = false;\n this.updateDisplay();\n this._callOnFinishChange();\n };\n\n this.$input.addEventListener('input', onInput);\n this.$input.addEventListener('keydown', onKeyDown);\n this.$input.addEventListener('wheel', onWheel, { passive: false });\n this.$input.addEventListener('mousedown', onMouseDown);\n this.$input.addEventListener('focus', onFocus);\n this.$input.addEventListener('blur', onBlur);\n\n }\n\n private _initSlider() {\n this._hasSlider = true;\n\n // Build DOM\n // ---------------------------------------------------------------------\n\n this.$slider = document.createElement('div');\n this.$slider.classList.add('slider');\n\n this.$fill = document.createElement('div');\n this.$fill.classList.add('fill');\n\n this.$slider.appendChild(this.$fill);\n this.$widget.insertBefore(this.$slider, this.$input);\n\n this.domElement.classList.add('hasSlider');\n\n // Map clientX to value\n // ---------------------------------------------------------------------\n\n const map = (v, a, b, c, d) => {\n return (v - a) / (b - a) * (d - c) + c;\n };\n\n const setValueFromX = clientX => {\n const rect = this.$slider.getBoundingClientRect();\n let value = map(clientX, rect.left, rect.right, this._min, this._max);\n this._snapClampSetValue(value);\n };\n\n // Mouse drag\n // ---------------------------------------------------------------------\n\n const mouseDown = e => {\n this._setDraggingStyle(true);\n setValueFromX(e.clientX);\n window.addEventListener('mousemove', mouseMove);\n window.addEventListener('mouseup', mouseUp);\n };\n\n const mouseMove = e => {\n setValueFromX(e.clientX);\n };\n\n const mouseUp = () => {\n this._callOnFinishChange();\n this._setDraggingStyle(false);\n window.removeEventListener('mousemove', mouseMove);\n window.removeEventListener('mouseup', mouseUp);\n };\n\n // Touch drag\n // ---------------------------------------------------------------------\n\n let testingForScroll = false, prevClientX, prevClientY;\n\n const beginTouchDrag = e => {\n e.preventDefault();\n this._setDraggingStyle(true);\n setValueFromX(e.touches[0].clientX);\n testingForScroll = false;\n };\n\n const onTouchStart = e => {\n\n if (e.touches.length > 1) return;\n\n // If we're in a scrollable container, we should wait for the first\n // touchmove to see if the user is trying to slide or scroll.\n if (this._hasScrollBar) {\n\n prevClientX = e.touches[0].clientX;\n prevClientY = e.touches[0].clientY;\n testingForScroll = true;\n\n } else {\n\n // Otherwise, we can set the value straight away on touchstart.\n beginTouchDrag(e);\n\n }\n\n window.addEventListener('touchmove', onTouchMove, { passive: false });\n window.addEventListener('touchend', onTouchEnd);\n\n };\n\n const onTouchMove = e => {\n\n if (testingForScroll) {\n\n const dx = e.touches[0].clientX - prevClientX;\n const dy = e.touches[0].clientY - prevClientY;\n\n if (Math.abs(dx) > Math.abs(dy)) {\n\n // We moved horizontally, set the value and stop checking.\n beginTouchDrag(e);\n\n } else {\n\n // This was, in fact, an attempt to scroll. Abort.\n window.removeEventListener('touchmove', onTouchMove);\n window.removeEventListener('touchend', onTouchEnd);\n\n }\n\n } else {\n\n e.preventDefault();\n setValueFromX(e.touches[0].clientX);\n\n }\n\n };\n\n const onTouchEnd = () => {\n this._callOnFinishChange();\n this._setDraggingStyle(false);\n window.removeEventListener('touchmove', onTouchMove);\n window.removeEventListener('touchend', onTouchEnd);\n };\n\n // Mouse wheel\n // ---------------------------------------------------------------------\n\n // We have to use a debounced function to call onFinishChange because\n // there's no way to tell when the user is \"done\" mouse-wheeling.\n const callOnFinishChange = this._callOnFinishChange.bind(this);\n const WHEEL_DEBOUNCE_TIME = 400;\n let wheelFinishChangeTimeout;\n\n const onWheel = e => {\n\n // ignore vertical wheels if there's a scrollbar\n const isVertical = Math.abs(e.deltaX) < Math.abs(e.deltaY);\n if (isVertical && this._hasScrollBar) return;\n\n e.preventDefault();\n\n // set value\n const delta = this._normalizeMouseWheel(e) * this._step;\n this._snapClampSetValue(this.getValue() + delta);\n\n // force the input to updateDisplay when it's focused\n this.$input.value = this.getValue();\n\n // debounce onFinishChange\n clearTimeout(wheelFinishChangeTimeout);\n wheelFinishChangeTimeout = setTimeout(callOnFinishChange, WHEEL_DEBOUNCE_TIME);\n\n };\n\n this.$slider.addEventListener('mousedown', mouseDown);\n this.$slider.addEventListener('touchstart', onTouchStart, { passive: false });\n this.$slider.addEventListener('wheel', onWheel, { passive: false });\n\n }\n\n private _setDraggingStyle(active, axis = 'horizontal') {\n if (this.$slider) {\n this.$slider.classList.toggle('active', active);\n }\n document.body.classList.toggle('lil-gui-dragging', active);\n document.body.classList.toggle(`lil-gui-${axis}`, active);\n }\n\n private _getImplicitStep() {\n const value = this.getValue();\n if (this._hasMin && this._hasMax) {\n return (this._max - this._min) / 100;\n }\n else if (hasDecimal(value)) {\n return Math.pow(0.1, getPrecision(value));\n }\n return 0.1;\n }\n\n private _onUpdateMinMax() {\n if (!this._hasSlider && this._hasMin && this._hasMax) {\n // If this is the first time we're hearing about min and max\n // and we haven't explicitly stated what our step is, let's\n // update that too.\n if (!this._stepExplicit) {\n this.step(this._getImplicitStep(), false);\n }\n\n this._initSlider();\n this.updateDisplay();\n }\n }\n\n private _normalizeMouseWheel(e) {\n let { deltaX, deltaY } = e;\n // Safari and Chrome report weird non-integral values for a notched wheel,\n // but still expose actual lines scrolled via wheelDelta. Notched wheels\n // should behave the same way as arrow keys.\n if (Math.floor(e.deltaY) !== e.deltaY && e.wheelDelta) {\n deltaX = 0;\n deltaY = -e.wheelDelta / 120;\n deltaY *= this._stepExplicit ? 1 : 10;\n }\n const wheel = deltaX + -deltaY;\n return wheel;\n\n }\n\n private _arrowKeyMultiplier(e) {\n let mult = this._stepExplicit ? 1 : 10;\n if (e.shiftKey) {\n mult *= 10;\n } else if (e.altKey) {\n mult /= 10;\n }\n return mult;\n\n }\n\n private _snap(value) {\n // This would be the logical way to do things, but floating point errors.\n // return Math.round( value / this._step ) * this._step;\n\n // Using inverse step solves a lot of them, but not all\n // const inverseStep = 1 / this._step;\n // return Math.round( value * inverseStep ) / inverseStep;\n\n // Not happy about this, but haven't seen it break.\n const r = Math.round(value / this._step) * this._step;\n return parseFloat(r.toPrecision(15));\n }\n\n private _clamp(value) {\n // either condition is false if min or max is undefined\n if (value < this._min) value = this._min;\n if (value > this._max) value = this._max;\n return value;\n }\n\n private _snapClampSetValue(value) {\n this.setValue(this._clamp(this._snap(value)));\n }\n\n private get _hasScrollBar() {\n const root = this.parent.root.$children;\n return root.scrollHeight > root.clientHeight;\n }\n\n private get _hasMin() {\n return this._min !== undefined;\n }\n\n private get _hasMax() {\n return this._max !== undefined;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class BooleanController extends Controller {\n $input: HTMLInputElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, 'boolean', 'label');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'checkbox');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$widget.appendChild(this.$input);\n this.$input.addEventListener('change', () => {\n this.setValue(this.$input.checked);\n this._callOnFinishChange();\n });\n this.$disable = this.$input;\n }\n\n updateDisplay() {\n this.$input.checked = this.getValue();\n return this;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class StringController extends Controller {\n $input: HTMLInputElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n\n super(parent, object, property, 'string');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'text');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$input.addEventListener('input', () => {\n this.setValue(this.$input.value);\n });\n this.$input.addEventListener('keydown', e => {\n if (e.code === 'Enter') {\n this.$input.blur();\n }\n });\n this.$input.addEventListener('blur', () => {\n this._callOnFinishChange();\n });\n this.$widget.appendChild(this.$input);\n this.$disable = this.$input;\n }\n\n updateDisplay() {\n this.$input.value = this.getValue();\n return this;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class FunctionController extends Controller {\n $button: HTMLButtonElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, 'function');\n\n // Buttons are the only case where widget contains name\n this.$button = document.createElement('button');\n this.$button.appendChild(this.$name);\n this.$widget.appendChild(this.$button);\n\n this.$button.addEventListener('click', e => {\n e.preventDefault();\n this.getValue().call(this.object);\n this._callOnChange();\n });\n\n // enables :active pseudo class on mobile\n this.$button.addEventListener('touchstart', () => { }, { passive: true });\n this.$disable = this.$button;\n }\n\n}","import { GUI } from \"../GUI\";\nimport { getColorFormat, normalizeColorString } from \"../utils\";\nimport { Controller } from \"./Controller\";\n\nexport class ColorController extends Controller {\n $input: HTMLInputElement;\n $text: HTMLInputElement;\n $display: HTMLDivElement;\n $alpha: HTMLDivElement;\n\n private _textFocused: boolean = false;\n private _initialValueHexString: string = \"\";\n private _rgbScale: number = 1;\n private _format: any;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n rgbScale: number\n ) {\n super(parent, object, property, 'color');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'color');\n this.$input.setAttribute('tabindex', \"-1\");\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$text = document.createElement('input');\n this.$text.setAttribute('type', 'text');\n this.$text.setAttribute('spellcheck', 'false');\n this.$text.setAttribute('aria-labelledby', this.$name.id);\n\n this.$display = document.createElement('div');\n this.$display.classList.add('display');\n this.$display.appendChild(this.$input);\n\n this.$widget.appendChild(this.$display);\n this.$widget.appendChild(this.$text);\n\n this._format = getColorFormat(this.initialValue);\n this._rgbScale = rgbScale;\n\n this._initialValueHexString = this.save();\n this._textFocused = false;\n\n this.$input.addEventListener('input', () => {\n this._setValueFromHexString(this.$input.value);\n });\n\n this.$input.addEventListener('blur', () => {\n this._callOnFinishChange();\n });\n\n this.$text.addEventListener('input', () => {\n const tryParse = normalizeColorString(this.$text.value);\n if (tryParse) {\n this._setValueFromHexString(tryParse);\n }\n });\n\n this.$text.addEventListener('focus', () => {\n this._textFocused = true;\n this.$text.select();\n });\n\n this.$text.addEventListener('blur', () => {\n this._textFocused = false;\n this.updateDisplay();\n this._callOnFinishChange();\n });\n\n this.$disable = this.$text;\n this.listen();\n }\n\n reset() {\n this._setValueFromHexString(this._initialValueHexString);\n return this;\n }\n\n private _setValueFromHexString(value: string) {\n if (this._format.isPrimitive) {\n const newValue = this._format.fromHexString(value);\n this.setValue(newValue);\n } else {\n this._format.fromHexString(value, this.getValue(), this._rgbScale);\n this._callOnChange();\n this.updateDisplay();\n }\n }\n\n save() {\n return this._format.toHexString(this.getValue(), this._rgbScale);\n }\n\n load(value: string) {\n this._setValueFromHexString(value);\n this._callOnFinishChange();\n return this;\n }\n\n updateDisplay() {\n this.$input.value = this._format.toHexString(this.getValue(), this._rgbScale);\n if (!this._textFocused) {\n this.$text.value = this.$input.value.substring(1);\n }\n this.$display.style.backgroundColor = this.$input.value;\n return this;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class ImageController extends Controller {\n static _context = null;\n static _imageMap = new WeakMap();\n static async toDataURL(img: HTMLImageElement | ImageBitmap & { data?: any }) {\n if (img instanceof HTMLImageElement) {\n return img.src;\n }\n else {\n if (img) {\n let url = ImageController._imageMap.get(img);\n if (url) return url;\n\n const w = Math.min(img.width, 256);\n const h = Math.min(img.height, 256);\n\n if (ImageController._context == null) {\n ImageController._context = document.createElement('canvas').getContext(\"2d\");\n }\n ImageController._context.canvas.width = w;\n ImageController._context.canvas.height = h;\n\n if (img.data) {\n let imageData = ImageController._context.createImageData(img.width, img.height);\n imageData.data.set(img.data);\n img = await createImageBitmap(imageData);\n }\n\n if (img instanceof ImageBitmap) {\n ImageController._context.drawImage(img, 0, 0, img.width, img.height, 0, 0, w, h);\n ImageController._imageMap.set(img, (url = ImageController._context.canvas.toDataURL()));\n return url;\n }\n }\n\n return \"\";\n }\n }\n\n\n $img: HTMLImageElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, \"image\");\n this.$img = document.createElement(\"img\");\n this.$widget.appendChild(this.$img);\n this.updateDisplay();\n }\n\n updateDisplay() {\n ImageController.toDataURL(this.getValue()).then(url => this.$img.src = url);\n return this;\n }\n\n}\n","export class UIElement<T extends HTMLElement = HTMLElement> {\n\tpublic dom: T & { disabled?: boolean };\n\n\tconstructor(dom: T) {\n\t\tthis.dom = dom;\n\t}\n\n\tpublic add(...args: HTMLElement[]) {\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\tconst argument = args[i];\n\t\t\tif (argument instanceof UIElement) {\n\t\t\t\tthis.dom.appendChild(argument.dom);\n\t\t\t} else {\n\t\t\t\tconsole.error('UIElement:', argument, 'is not an instance of UIElement.');\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic remove(...args: HTMLElement[]) {\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\tconst argument = args[i];\n\t\t\tif (argument instanceof UIElement) {\n\t\t\t\tthis.dom.removeChild(argument.dom);\n\t\t\t} else {\n\t\t\t\tconsole.error('UIElement:', argument, 'is not an instance of UIElement.');\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic clear() {\n\t\twhile (this.dom.children.length) {\n\t\t\tthis.dom.removeChild(this.dom.lastChild);\n\t\t}\n\t}\n\n\tpublic setId(id: string) {\n\t\tthis.dom.id = id;\n\t\treturn this;\n\n\t}\n\n\tpublic getId() {\n\t\treturn this.dom.id;\n\n\t}\n\n\tpublic setClass(name: string) {\n\t\tthis.dom.className = name;\n\t\treturn this;\n\t}\n\n\tpublic addClass(name) {\n\t\tthis.dom.classList.add(name);\n\t\treturn this;\n\t}\n\n\tpublic removeClass(name) {\n\t\tthis.dom.classList.remove(name);\n\t\treturn this;\n\t}\n\n\tpublic setStyle(style: string, array: any[]) {\n\t\tfor (let i = 0; i < array.length; i++) {\n\t\t\tthis.dom.style[style] = array[i];\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic setDisabled(value: boolean) {\n\t\tthis.dom.disabled = value;\n\t\treturn this;\n\n\t}\n\n\tpublic setTextContent(value: string) {\n\t\tthis.dom.textContent = value;\n\t\treturn this;\n\n\t}\n\n\tpublic getIndexOfChild(element: UIElement) {\n\t\treturn Array.prototype.indexOf.call(this.dom.children, element.dom);\n\t}\n\n}\n","import { getPrecision, hasDecimal } from '../utils';\nimport { UIElement } from './UIElement';\n\nexport class UINumber extends UIElement<HTMLInputElement> {\n\tpublic value: number = 0;\n\tpublic min: number = -Infinity;\n\tpublic max: number = Infinity;\n\tpublic step: number = 1;\n\tpublic nudge: number = 1;\n\tpublic unit: string = \"\";\n\n\tprivate _onChangeCallback: Function;\n\n\tconstructor(\n\t\tvalue: number,\n\t\tmin: number,\n\t\tmax: number,\n\t\tstep: number\n\t) {\n\t\tsuper(document.createElement('input'));\n\n\t\tthis.dom.style.cursor = 'ns-resize';\n\t\tthis.dom.value = '0.00';\n\n\t\tthis.min = min ?? this.min;\n\t\tthis.max = max ?? this.max;\n\t\tthis.step = step ?? this._getImplicitStep(value);\n\t\tthis.setValue(value);\n\n\t\tconst scope = this;\n\n\t\tconst changeEvent = document.createEvent('HTMLEvents');\n\t\tchangeEvent.initEvent('change', true, true);\n\n\t\tlet distance = 0;\n\t\tlet onMouseDownValue = 0;\n\n\t\tconst pointer = { x: 0, y: 0 };\n\t\tconst prevPointer = { x: 0, y: 0 };\n\n\t\tfunction onMouseDown(event: MouseEvent) {\n\t\t\tevent.preventDefault();\n\t\t\tdistance = 0;\n\t\t\tonMouseDownValue = scope.value;\n\t\t\tprevPointer.x = event.clientX;\n\t\t\tprevPointer.y = event.clientY;\n\n\t\t\tdocument.addEventListener('mousemove', onMouseMove, false);\n\t\t\tdocument.addEventListener('mouseup', onMouseUp, false);\n\t\t}\n\n\t\tfunction onMouseMove(event: MouseEvent) {\n\t\t\tconst currentValue = scope.value;\n\n\t\t\tpointer.x = event.clientX;\n\t\t\tpointer.y = event.clientY;\n\n\t\t\tdistance += (pointer.x - prevPointer.x) - (pointer.y - prevPointer.y);\n\n\t\t\tlet value = onMouseDownValue + (distance * 10 / (event.shiftKey ? 5 : 50)) * scope.step;\n\t\t\tvalue = Math.min(scope.max, Math.max(scope.min, value));\n\n\t\t\tif (currentValue !== value) {\n\n\t\t\t\tscope.setValue(value);\n\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\n\t\t\t}\n\n\t\t\tprevPointer.x = event.clientX;\n\t\t\tprevPointer.y = event.clientY;\n\t\t}\n\n\t\tfunction onMouseUp() {\n\t\t\tdocument.removeEventListener('mousemove', onMouseMove, false);\n\t\t\tdocument.removeEventListener('mouseup', onMouseUp, false);\n\n\t\t\tif (Math.abs(distance) < 2) {\n\t\t\t\tscope.dom.focus();\n\t\t\t\tscope.dom.select();\n\t\t\t}\n\t\t}\n\n\t\tfunction onTouchStart(event: TouchEvent) {\n\t\t\tif (event.touches.length === 1) {\n\t\t\t\tdistance = 0;\n\t\t\t\tonMouseDownValue = scope.value;\n\n\t\t\t\tprevPointer.x = event.touches[0].pageX;\n\t\t\t\tprevPointer.y = event.touches[0].pageY;\n\n\t\t\t\tdocument.addEventListener('touchmove', onTouchMove, false);\n\t\t\t\tdocument.addEventListener('touchend', onTouchEnd, false);\n\t\t\t}\n\t\t}\n\n\t\tfunction onTouchMove(event: TouchEvent) {\n\t\t\tconst currentValue = scope.value;\n\n\t\t\tpointer.x = event.touches[0].pageX;\n\t\t\tpointer.y = event.touches[0].pageY;\n\n\t\t\tdistance += (pointer.x - prevPointer.x) - (pointer.y - prevPointer.y);\n\n\t\t\tlet value = onMouseDownValue + (distance / (event.shiftKey ? 5 : 50)) * scope.step;\n\t\t\tvalue = Math.min(scope.max, Math.max(scope.min, value));\n\n\t\t\tif (currentValue !== value) {\n\t\t\t\tscope.setValue(value);\n\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t}\n\n\t\t\tprevPointer.x = event.touches[0].pageX;\n\t\t\tprevPointer.y = event.touches[0].pageY;\n\t\t}\n\n\t\tfunction onTouchEnd(event: TouchEvent) {\n\t\t\tif (event.touches.length === 0) {\n\t\t\t\tdocument.removeEventListener('touchmove', onTouchMove, false);\n\t\t\t\tdocument.removeEventListener('touchend', onTouchEnd, false);\n\t\t\t}\n\t\t}\n\n\t\tfunction onChange() {\n\t\t\tscope.setValue(parseFloat(scope.dom.value));\n\t\t}\n\n\t\tfunction onFocus() {\n\t\t\tscope.dom.style.backgroundColor = '';\n\t\t\tscope.dom.style.cursor = '';\n\t\t}\n\n\t\tfunction onBlur() {\n\t\t\t// scope.dom.style.backgroundColor = 'transparent';\n\t\t\tscope.dom.style.cursor = 'ns-resize';\n\t\t}\n\n\t\tfunction onKeyDown(event: KeyboardEvent) {\n\t\t\tevent.stopPropagation();\n\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tscope.dom.blur();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tscope.setValue(scope.getValue() + scope.step);\n\t\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 40: // down\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tscope.setValue(scope.getValue() - scope.step);\n\t\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tonBlur();\n\n\t\tthis.dom.addEventListener('keydown', onKeyDown, false);\n\t\tthis.dom.addEventListener('mousedown', onMouseDown, false);\n\t\tthis.dom.addEventListener('touchstart', onTouchStart, { passive: true });\n\t\tthis.dom.addEventListener('change', onChange, false);\n\t\tthis.dom.addEventListener('focus', onFocus, false);\n\t\tthis.dom.addEventListener('blur', onBlur, false);\n\t}\n\n\tpublic equals(v: number) {\n\t\treturn Math.abs(this.value - v) <= this.step;\n\t}\n\n\tpublic getValue() {\n\t\treturn this.value;\n\t}\n\n\tpublic setValue(value: any) {\n\t\tif (value !== undefined) {\n\t\t\tif (value < this.min) value = this.min;\n\t\t\tif (value > this.max) value = this.max;\n\t\t\tthis.value = value;\n\t\t\tthis.updateDisplay();\n\t\t\tthis._onChangeCallback && this._onChangeCallback(value);\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic updateDisplay() {\n\t\tlet value = this._snap(this.getValue());\n\t\tthis.dom.value = \"\" + value;\n\t\tif (this.unit !== '') this.dom.value += ' ' + this.unit;\n\t}\n\n\tprivate _getImplicitStep(value: number) {\n\t\tif (this.max !== Infinity && this.min !== -Infinity) {\n\t\t\treturn (this.max - this.min) / 100;\n\t\t}\n\t\telse if (hasDecimal(value)) {\n\t\t\treturn 1 / Math.pow(10, getPrecision(value));\n\t\t}\n\t\treturn 0.1;\n\t}\n\n\tprivate _snap(value: number) {\n\t\tconst r = Math.round(value / this.step) * this.step;\n\t\treturn parseFloat(r.toPrecision(15));\n\t}\n\n\tpublic onChange(callback: Function) {\n\t\tthis._onChangeCallback = callback;\n\t\treturn this;\n\t}\n\n\tpublic setUnit(unit: string) {\n\t\tthis.unit = unit;\n\t\treturn this;\n\t}\n\n}\n","import { GUI } from \"../GUI\";\nimport { UINumber } from \"../common/UINumber\";\nimport { Controller } from \"./Controller\";\n\nexport class VectorController extends Controller {\n xElement: UINumber;\n yElement: UINumber;\n zElement: UINumber;\n wElement: UINumber;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n min: number,\n max: number,\n step: number\n ) {\n super(parent, object, property, 'vector');\n\n const value = this.getValue();\n this.initialValue = value.clone && value.clone() || Object.assign({}, value);\n if (this.initialValue.x !== undefined) this.xElement = this.createElement(true, this.initialValue.x, min, max, step, v => { value.x = v; this._callOnChange() });\n if (this.initialValue.y !== undefined) this.yElement = this.createElement(true, this.initialValue.y, min, max, step, v => { value.y = v; this._callOnChange() });\n if (this.initialValue.z !== undefined) this.zElement = this.createElement(true, this.initialValue.z, min, max, step, v => { value.z = v; this._callOnChange() });\n if (this.initialValue.w !== undefined) this.wElement = this.createElement(false, this.initialValue.w, min, max, step, v => { value.w = v; this._callOnChange() });\n }\n\n createElement(\n fill: boolean,\n value: number,\n min: number,\n max: number,\n step: number,\n onChange: Function\n ) {\n let uiNumber = new UINumber(value, min, max, step);\n uiNumber.dom.setAttribute('type', 'number');\n uiNumber.dom.setAttribute('aria-labelledby', this.$name.id);\n uiNumber.onChange(onChange);\n this.$widget.appendChild(uiNumber.dom);\n if (fill) {\n let $fill = document.createElement('div');\n $fill.classList.add('fill');\n this.$widget.appendChild($fill);\n }\n return uiNumber;\n }\n\n setValue(value: { x?: number, y?: number, z?: number, w?: number }) {\n let target = this.getValue();\n if (value.x !== undefined) target.x = value.x;\n if (value.y !== undefined) target.y = value.y;\n if (value.z !== undefined) target.z = value.z;\n if (value.w !== undefined) target.w = value.w;\n this._callOnChange();\n return this;\n }\n\n needsUpdateDisplay() {\n return !this.parent._closed;\n }\n\n updateDisplay() {\n let value = this.getValue();\n if (value.x !== undefined && this.xElement && !this.xElement.equals(value.x)) {\n this.xElement.value = value.x;\n this.xElement.updateDisplay();\n }\n if (value.y !== undefined && this.yElement && !this.yElement.equals(value.y)) {\n this.yElement.value = value.y;\n this.yElement.updateDisplay();\n }\n if (value.z !== undefined && this.zElement && !this.zElement.equals(value.z)) {\n this.zElement.value = value.z;\n this.zElement.updateDisplay();\n }\n if (value.w !== undefined && this.wElement && !this.wElement.equals(value.w)) {\n this.wElement.value = value.w;\n this.wElement.updateDisplay();\n }\n return this;\n }\n}\n","import { IAnimationCurve } from \"./IAnimationCurve\";\nimport { ICurvePoint } from \"./ICurvePoint\";\n\nfunction clamp(v: number, minv: number, maxv: number) {\n return Math.max(Math.min(v, maxv), minv);\n}\n\nfunction hitTest(x: number, y: number, cx: number, cy: number, hw: number, hh: number) {\n if (x < cx - hw || x > cx + hw || y < cy - hh || y > cy + hh) {\n return false;\n }\n return true;\n}\n\nconst theme = {\n BACKGROUND: \"#545454\",\n GRID: \"#646464\",\n LINE: \"#000000\",\n COVER: \"#19191980\",\n POINT: \"#878787\",\n SELECTED: \"#ffffff\",\n}\n\nclass CurvePanel {\n private _canvas: HTMLCanvasElement;\n private _context: CanvasRenderingContext2D;\n private _xRes: number = 1;\n private _yRes: number = 1;\n private _cx: number = 0;\n private _cy: number = 0;\n private _ra: number = 2;\n private _fixed: boolean = false;\n private _autoResize: boolean = true;\n\n private _mouse: { x: number, y: number } = { x: 0, y: 0 };\n private _offsetXRef: number = 0;\n private _offsetYRef: number = 0;\n private _cxRef: number = 0;\n private _cyRef: number = 0;\n private _pxRef: number = 0;\n private _pyRef: number = 0;\n private _button: number = -1;\n\n private _curve: IAnimationCurve = null;\n private _selectedPoint: ICurvePoint = null;\n private _tryAddingPoint: boolean = false;\n private _trySelectingPoint: boolean = false;\n private _onCurveChanged?: (curve: IAnimationCurve) => void;\n private _onPointChanged?: (point: ICurvePoint) => void;\n private _onPointRemoved?: (point: ICurvePoint) => void;\n private _onPointAdded?: (point: ICurvePoint) => void;\n\n get dom() {\n return this._canvas;\n }\n\n get curve() {\n return this._curve;\n }\n\n constructor() {\n this._canvas = document.createElement(\"canvas\");\n this._context = this._canvas.getContext(\"2d\");\n\n const canvas = this._canvas;\n canvas.addEventListener(\"mousedown\", e => this._onMouseDown(e));\n canvas.addEventListener(\"mouseup\", e => this._onMouseUp(e));\n canvas.addEventListener(\"mouseleave\", e => this._onMouseUp(e));\n canvas.addEventListener(\"mousemove\", e => this._onMouseMove(e));\n canvas.addEventListener(\"wheel\", e => this._onWheel(e as any));\n canvas.addEventListener(\"dblclick\", e => this._onDblClick(e));\n }\n\n resize(width?: number, height?: number) {\n const canvas = this._canvas;\n const DPR = window.devicePixelRatio || 1;\n const xRes = (width ?? canvas.offsetWidth) * DPR;\n const yRes = (height ?? canvas.offsetHeight) * DPR;\n if (Math.hypot(xRes - this._xRes, yRes - this._yRes) > 0.001) {\n this._xRes = canvas.width = xRes;\n this._yRes = canvas.height = yRes;\n }\n }\n\n onCurveChanged(callback: (curve: IAnimationCurve) => void) {\n this._onCurveChanged = callback;\n return this;\n }\n\n onPointChanged(callback: (point: ICurvePoint) => void) {\n this._onPointChanged = callback;\n return this;\n }\n\n onPointRemoved(callback: (point: ICurvePoint) => void) {\n this._onPointRemoved = callback;\n return this;\n }\n\n onPointAdded(callback: (point: ICurvePoint) => void) {\n this._onPointAdded = callback;\n return this;\n }\n\n private _onDblClick(e: MouseEvent) {\n e.preventDefault();\n if (e.button === 0) {\n this._tryAddingPoint = true;\n }\n }\n\n private _onMouseDown(e: MouseEvent) {\n e.preventDefault();\n if (e.button == 0) {\n this._cxRef = this._cx;\n this._cyRef = this._cy;\n this._offsetXRef = e.offsetX;\n this._offsetYRef = e.offsetY;\n this._trySelectingPoint = true;\n }\n this._button = e.button;\n this._mouse.x = e.offsetX;\n this._mouse.y = e.offsetY;\n this._selectedPoint = null;\n }\n\n _onMouseUp(e: MouseEvent) {\n e.preventDefault();\n this._button = -1;\n }\n\n private _onMouseMove(e: MouseEvent) {\n e.preventDefault();\n const cxRes = this._canvas.offsetWidth;\n const cyRes = this._canvas.offsetHeight;\n if (this._button == 0) {\n if (this._selectedPoint) {\n const rx = this._ra;\n const ry = this._fixed ? this._ra * cyRes / cxRes : this._ra;\n const x = this._pxRef + (e.offsetX - this._offsetXRef) / cxRes * rx / 2;\n const y = this._pyRef - (e.offsetY - this._offsetYRef) / cyRes * ry / 2;\n this.setPointPos(x, y);\n }\n else {\n this._cx = this._cxRef - (e.offsetX - this._offsetXRef) * 2 * this._ra / cxRes;\n this._cy = this._cyRef + (e.offsetY - this._offsetYRef) * 2 * this._ra / cyRes;\n }\n }\n this._mouse.x = e.offsetX;\n this._mouse.y = e.offsetY;\n }\n\n private _onWheel(e: WheelEvent & { wheelDelta: number }) {\n e.preventDefault();\n const sfactor = 1.1;\n this._ra *= (e.deltaY < 0 || e.wheelDelta > 0) ? 1.0 / sfactor : sfactor;\n this._ra = clamp(this._ra, 1, 2);\n }\n\n render() {\n if (this._autoResize) {\n this.resize();\n }\n\n const rx = this._ra;\n const ry = this._fixed ? this._ra * this._yRes / this._xRes : this._ra;\n\n const a = 2 - this._ra;\n this._cx = clamp(this._cx, -a, a);\n this._cy = clamp(this._cy, -a, a);\n\n const ctx = this._context;\n ctx.setTransform(1, 0.0, 0.0, 1, 0.5, 0.5);\n ctx.fillStyle = theme.BACKGROUND;\n ctx.fillRect(0, 0, this._xRes, this._yRes);\n\n this._drawGrid(ctx, theme.GRID, rx, ry);\n // this._drawAxis(ctx, theme.GRID, rx, ry);\n this._drawCurve(ctx, theme.LINE, rx, ry);\n }\n\n private _drawGrid(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n const iax = Math.floor(this._cx - rx);\n const ibx = Math.floor(this._cx + rx);\n const iay = Math.floor(this._cy - ry);\n const iby = Math.floor(this._cy + ry);\n\n ctx.lineWidth = 2.0;\n ctx.strokeStyle = color;\n ctx.beginPath();\n for (let i = iax; i <= ibx; i++) {\n let ix = this._xRes * (0.5 + (i - this._cx) / (2 * rx));\n ctx.moveTo(ix, this._yRes);\n ctx.lineTo(ix, 0);\n }\n for (let i = iay; i <= iby; i++) {\n let iy = this._yRes * (0.5 - (i - this._cy) / (2 * ry));\n ctx.moveTo(this._xRes, iy);\n ctx.lineTo(0, iy);\n }\n ctx.stroke();\n }\n\n private _drawAxis(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n const xPos = this._xRes * (0.5 - this._cx / (2.0 * rx));\n const yPos = this._yRes * (0.5 + this._cy / (2.0 * ry));\n ctx.strokeStyle = color;\n ctx.lineWidth = 4;\n ctx.beginPath();\n ctx.moveTo(xPos, 0); ctx.lineTo(xPos, this._yRes);\n ctx.moveTo(0, yPos); ctx.lineTo(this._xRes, yPos);\n ctx.stroke();\n }\n\n private _drawCurve(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n if (!this._curve) return;\n\n const ax = 2 / rx; //缩放\n const ay = 2 / ry;\n const bx = (1 - ax) / 2; //偏移,保持居中\n const by = (1 - ay) / 2;\n const cx = this._cx / 4; //缩小4倍至单位1\n const cy = this._cy / 4;\n\n const SAMPLES = Math.min(100, this._xRes);\n const STEP = 1 / (SAMPLES - 1);\n const point = this._curve.createCurvePoint();\n\n const DPR = window.devicePixelRatio || 1;\n const mx = this._mouse.x * DPR;\n const my = this._mouse.y * DPR;\n\n let hitCurve = null;\n let hitPoint = null;\n let isFirstPoint = true;\n\n //配置参数\n ctx.lineWidth = 2;\n ctx.strokeStyle = color;\n ctx.fillStyle = color;\n\n //绘制曲线\n ctx.beginPath();\n for (let i = 0; i < SAMPLES; i++) {\n let p = this._curve.getPoint(i * STEP, point);\n let x = this._xRes * ((p.x - cx) * ax + bx);\n let y = this._yRes * (1 + (cy - p.y) * ay - by);\n\n if (hitCurve === null && hitTest(mx, my, x, y, 15, 15)) {\n hitCurve = p;\n }\n\n if (isFirstPoint) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n isFirstPoint = false;\n }\n ctx.stroke();\n ctx.lineTo(this._xRes, this._yRes);\n ctx.closePath();\n ctx.fillStyle = theme.COVER;\n ctx.fill();\n\n //绘制控制点\n const points = this._curve.points;\n for (let i = 1; i < points.length - 1; i++) {\n let p = points[i];\n let x = this._xRes * ((p.x - cx) * ax + bx);\n let y = this._yRes * (1 + (cy - p.y) * ay - by);\n\n if (hitPoint === null && hitTest(mx, my, x, y, 20, 20)) {\n hitPoint = p;\n }\n\n ctx.fillStyle = p === hitPoint || p === this._selectedPoint ? theme.SELECTED : theme.POINT;\n ctx.fillRect(x - 2.5, y - 2.5, 5, 5);\n }\n\n //状态检查\n if (this._tryAddingPoint && hitPoint) {\n this._tryAddingPoint = false;\n points.splice(points.indexOf(hitPoint), 1);\n this._onPointRemoved && this._onPointRemoved(hitPoint);\n }\n if (this._tryAddingPoint && hitCurve) {\n this._tryAddingPoint = false;\n let px = (mx / this._xRes - bx) / ax + cx;\n let py = cy - (my / this._yRes + by - 1) / ay;\n let p = this._curve.createCurvePoint(px, py);\n points.push(p);\n points.sort((a, b) => a.x - b.x);\n this._onPointAdded && this._onPointAdded(p);\n }\n if (this._trySelectingPoint && hitPoint) {\n this._trySelectingPoint = false;\n this.selectPoint(hitPoint);\n }\n this._tryAddingPoint = false;\n this._trySelectingPoint = false;\n }\n\n setCurve(curve: IAnimationCurve) {\n this._curve = curve;\n this._selectedPoint = null;\n this._onCurveChanged && this._onCurveChanged(curve);\n return this;\n }\n\n setPointMode(mode: number) {\n if (this._selectedPoint) {\n this._selectedPoint.mode = mode;\n this._onPointChanged && this._onPointChanged(this._selectedPoint);\n }\n return this;\n }\n\n setPointPos(x: number, y: number) {\n if (this._selectedPoint) {\n this._selectedPoint.set(clamp(x, 0, 1), clamp(y, 0, 1));\n this._curve.points.sort((a, b) => a.x - b.x);\n this._onPointChanged && this._onPointChanged(this._selectedPoint);\n }\n return this;\n }\n\n selectPoint(point?: ICurvePoint) {\n if (point) {\n this._selectedPoint = point;\n this._pxRef = point.x;\n this._pyRef = point.y;\n this._onPointChanged && this._onPointChanged(point);\n }\n else {\n this._selectedPoint = null;\n }\n return this;\n }\n}\n\nfunction copyToClipboard(text: string) {\n const tempInput = document.createElement('textarea');\n tempInput.value = text;\n\n document.body.appendChild(tempInput);\n\n tempInput.select();\n tempInput.setSelectionRange(0, 99999); // 兼容移动设备\n\n document.execCommand('copy');\n document.body.removeChild(tempInput);\n}\n\nfunction toFixedFloat(v: number, fractionDigits?: number) {\n return parseFloat(v.toFixed(fractionDigits));\n}\n\nexport class CurveEditor {\n private _dom: HTMLElement;\n private _tabs: HTMLDivElement[] = [];\n private _sharpTab: HTMLDivElement;\n private _smoothTab: HTMLDivElement;\n private _xPosInput: HTMLInputElement;\n private _yPosInput: HTMLInputElement;\n private _curvePanel: CurvePanel;\n private _curvePointPanel: HTMLDivElement;\n private _layoutPoint: ICurvePoint;\n private _curves: IAnimationCurve[];\n private _target: IAnimationCurve | IAnimationCurve[];\n private _onChange: Function;\n\n get dom() {\n return this._dom;\n }\n\n constructor(target: IAnimationCurve | IAnimationCurve[]) {\n this._dom = document.createElement(\"div\");\n this._dom.classList.add(\"curve-editor\");\n document.body.appendChild(this._dom);\n\n let tabGroup = document.createElement(\"div\");\n tabGroup.classList.add(\"curve-top\");\n tabGroup.ondblclick = (e) => {\n e.preventDefault();\n let text = this._curves.map(v => v.points.length + \",\" + v.points.map(p => `${toFixedFloat(p.x, 3)},${toFixedFloat(p.y, 3)},${p.mode}`).join(\",\")).join(\",\");\n copyToClipboard(text);\n alert(\"Copyed curve points\");\n }\n this._dom.appendChild(tabGroup);\n\n let curves = Array.isArray(target) ? target : [target];\n if (curves.length > 1) {\n for (let i = 0; i < curves.length; i++) {\n let c = curves[i];\n let tab = document.createElement(\"div\");\n tab.classList.add(\"button-medium\");\n tab.textContent = c.name || i.toString();\n tab.onclick = () => this._onToggleTab(i);\n tabGroup.appendChild(tab);\n this._tabs.push(tab);\n }\n }\n this._target = target;\n this._curves = curves;\n this._layoutPoint = curves[0].createCurvePoint(0, 0, -1);\n this._curvePanel = new CurvePanel();\n this._curvePanel.dom.classList.add(\"curve-panel\");\n this._curvePanel.onCurveChanged(c => this._onCurveChanged(c));\n this._curvePanel.onPointChanged(p => this._onPointChanged(p));\n this._curvePanel.onPointAdded(p => this._onPointAdded(p));\n this._curvePanel.onPointRemoved(p => this._onPointRemoved(p));\n this._dom.appendChild(this._curvePanel.dom);\n\n this._curvePointPanel = document.createElement(\"div\");\n this._curvePointPanel.classList.add(\"curve-point-panel\");\n this._curvePointPanel.style.display = \"none\";\n this._dom.appendChild(this._curvePointPanel);\n\n this._smoothTab = document.createElement(\"div\");\n this._smoothTab.classList.add(\"button-medium\");\n this._smoothTab.innerHTML = /*html*/`\n <svg viewBox=\"351.367 172.836 32 32\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:bx=\"https://boxy-svg.com\">\n <path style=\"fill: none; stroke-width: 2px; stroke: rgb(240, 240, 240);\" d=\"M 356 200 C 356 200 355.7892846963982 195.12801796288684 356 193 C 356.17984169835074 191.18377517899805 356.2627725586097 189.58207992830177 357 188 C 357.82614089255884 186.22711303095053 359.32609311863524 184.16719383631644 361 183 C 362.6636054267734 181.83998923607413 364.99999999999994 180.99999999999997 367 181 C 368.99999999999994 180.99999999999997 371.3363945732266 181.83998923607413 373 183 C 374.6739068813647 184.16719383631644 376.1738591074412 186.22711303095053 377 188 C 377.73722744139036 189.58207992830177 377.8201583016493 191.18377517899808 378 193 C 378.2107153036018 195.12801796288684 378 200 378 200\" transform=\"matrix(1, 0, 0, 1, -5.684341886080802e-14, 0)\" bx:d=\"M 356 200 R 356 193 R 357 188 R 361 183 R 367 181 R 373 183 R 377 188 R 378 193 R 378 200 1@f911f19e\"/>\n <rect x=\"368\" y=\"176.021\" width=\"6\" height=\"5.979\" style=\"fill: rgb(255, 255, 255);\" transform=\"matrix(1, 0, 0, 1, -5.684341886080802e-14, 0)\"/>\n </svg>\n `;\n this._curvePointPanel.appendChild(this._smoothTab);\n\n this._sharpTab = document.createElement(\"div\");\n this._sharpTab.classList.add(\"button-medium\");\n this._sharpTab.innerHTML = /*html*/`\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n <polyline style=\"fill: none; stroke: rgb(240, 240, 240); stroke-width: 2px;\" points=\"6 26 17 7 28 26\"/>\n <rect x=\"14\" y=\"4\" width=\"6\" height=\"6\" style=\"fill: rgb(255, 255, 255);\"/>\n </svg>\n `\n this._curvePointPanel.appendChild(this._sharpTab);\n\n this._smoothTab.onclick = () => this._curvePanel.setPointMode(0);\n this._sharpTab.onclick = () => this._curvePanel.setPointMode(1);\n\n this._xPosInput = document.createElement(\"input\");\n this._xPosInput.onchange = (e) => this._onPosChanged();\n this._curvePointPanel.appendChild(this._xPosInput);\n\n this._yPosInput = document.createElement(\"input\");\n this._yPosInput.onchange = (e) => this._onPosChanged();\n this._curvePointPanel.appendChild(this._yPosInput);\n\n this._onToggleTab(0);\n }\n\n onChange(callback: Function) {\n this._onChange = callback;\n return this;\n }\n\n private _onToggleTab(tabInex: number) {\n for (let i = 0; i < this._tabs.length; i++) {\n if (i === tabInex) this._tabs[i].classList.add(\"selected\");\n else this._tabs[i].classList.remove(\"selected\");\n }\n this._curvePanel.setCurve(this._curves[tabInex]);\n }\n\n private _onTogglePointTab(tab: number) {\n if (tab === 0) {\n this._smoothTab.classList.add(\"selected\");\n this._sharpTab.classList.remove(\"selected\");\n }\n else {\n this._smoothTab.classList.remove(\"selected\");\n this._sharpTab.classList.add(\"selected\");\n }\n }\n\n private _onCurveChanged(curve: IAnimationCurve) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(points.length > 2 ? points[1] : null);\n }\n\n private _onPosChanged() {\n this._curvePanel.setPointPos(parseFloat(this._xPosInput.value), parseFloat(this._yPosInput.value));\n }\n\n private _onPointAdded(point: ICurvePoint) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(point);\n }\n\n private _onPointRemoved(point: ICurvePoint) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(points.length > 2 ? points[1] : null);\n }\n\n private _onPointChanged(point: ICurvePoint) {\n let isChanged = false;\n let layoutPoint = this._layoutPoint;\n if (layoutPoint.mode !== point.mode) {\n layoutPoint.mode = point.mode;\n this._onTogglePointTab(point.mode);\n isChanged = true;\n }\n if (Math.hypot(layoutPoint.x - point.x, layoutPoint.y - point.y) > 0.001) {\n layoutPoint.x = point.x;\n layoutPoint.y = point.y;\n this._xPosInput.value = parseFloat(point.x.toFixed(3)).toString();\n this._yPosInput.value = parseFloat(point.y.toFixed(3)).toString();\n isChanged = true;\n }\n if (isChanged) {\n this._curvePanel.curve.needsUpdate = true;\n this._onChange && this._onChange(this._target);\n }\n }\n\n render() {\n this._curvePanel.render();\n }\n}","import { GUI } from \"../GUI\";\nimport { CurveEditor } from \"../curve/CurveEditor\";\nimport { Controller } from \"./Controller\";\n\nexport class CurveController extends Controller {\n private _curveEditor: CurveEditor;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, \"label\");\n this._curveEditor = new CurveEditor(this.getValue());\n this._curveEditor.onChange(v => this.setValue(v));\n this.$widget.appendChild(this._curveEditor.dom);\n }\n\n needsUpdateDisplay() {\n return !this.parent._closed;\n }\n\n updateDisplay() {\n this._curveEditor.render();\n return this;\n }\n}","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class TextureController extends Controller {\n $canvas: HTMLCanvasElement;\n\n private _version: number = 0;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, \"image\");\n let group = document.createElement(\"div\");\n group.style.display = \"flex\";\n group.style.flexDirection = \"column\";\n group.style.width = \"100%\";\n this.$widget.appendChild(group);\n\n this.$canvas = document.createElement(\"canvas\");\n group.appendChild(this.$canvas);\n\n const texture = this.getValue();\n if (texture.isRenderTargetTexture) {\n let button = document.createElement(\"button\");\n button.textContent = \"capture\";\n button.onclick = () => this.updateDisplay();\n group.appendChild(button);\n }\n }\n\n needsUpdateDisplay() {\n if (this.parent._closed) {\n return false;\n }\n let texture = this.getValue();\n if (texture && this._version !== texture.version) {\n this._version = texture.version;\n return true;\n }\n return false;\n }\n\n updateDisplay() {\n const canvas = this.$canvas;\n const context = canvas.getContext(\"2d\");\n const texture = this.getValue();\n const image = texture.image;\n\n // Seems like context can be null if the canvas is not visible\n if (context) {\n // Always clear the context before set new texture, because new texture may has transparency\n context.clearRect(0, 0, canvas.width, canvas.height);\n }\n\n if (image && image.width > 0) {\n const scale = canvas.width / image.width;\n canvas.height = Math.max(2, image.height / image.width * canvas.width);\n\n const width = Math.max(image.width * scale, 2);\n const height = Math.max(image.height * scale, 2);\n\n if (texture.__getImage) {\n context.drawImage(texture.__getImage(), 0, 0, width, height);\n }\n else {\n context.drawImage(image, 0, 0, width, height);\n }\n }\n\n return this;\n }\n}\n","import \"./css/index.scss\";\nimport { Controller } from \"./controllers/Controller\";\nimport { OptionController } from \"./controllers/OptionController\";\nimport { NumberController } from \"./controllers/NumberController\";\nimport { BooleanController } from \"./controllers/BooleanController\";\nimport { StringController } from \"./controllers/StringController\";\nimport { FunctionController } from \"./controllers/FunctionController\";\nimport { ColorController } from \"./controllers/ColorController\";\nimport { ImageController } from \"./controllers/ImageController\";\nimport { VectorController } from \"./controllers/VectorController\";\nimport { CurveController } from \"./controllers/CurveController\";\nimport { TextureController } from \"./controllers/TextureController\";\n\nexport class GUI {\n id: string;\n parent: GUI;\n root: GUI;\n children: Array<GUI | Controller> = [];\n controllers: Array<Controller> = [];\n folders: Array<GUI> = [];\n domElement: HTMLElement;\n $title: HTMLElement;\n $children: HTMLElement;\n /**\n * Current title of the GUI. Use `gui.title( 'Title' )` to modify this value.\n */\n _title: string = \"\";\n _closed: boolean = false;\n _hidden: boolean = false;\n _closeFolders: boolean = false;\n\n private _onChange: Function;\n /**\n * Used to access the function bound to `onFinishChange` events. Don't modify this value\n * directly. Use the `gui.onFinishChange( callback )` method instead.\n */\n private _onFinishChange: Function;\n private _onOpenClose: Function;\n\n constructor({\n parent,\n container,\n width,\n autoPlace = parent === undefined,\n title = 'Controls',\n id = title,\n closeFolders = false,\n touchStyles = true,\n }: {\n parent?: GUI;\n container?: HTMLElement;\n autoPlace?: boolean;\n width?: number;\n title?: string;\n id?: string;\n closeFolders?: boolean;\n touchStyles?: boolean;\n } = {}) {\n this.id = id;\n this.parent = parent;\n this.root = parent ? parent.root : this;\n this.domElement = document.createElement(\"div\");\n this.domElement.classList.add(\"lil-gui\");\n this.$title = document.createElement('div');\n this.$title.classList.add('title');\n this.$title.setAttribute('role', 'button');\n this.$title.setAttribute('aria-expanded', \"true\");\n this.$title.setAttribute('tabindex', \"0\");\n this.$title.addEventListener('click', () => this.openAnimated(this._closed));\n this.$title.addEventListener('keydown', e => {\n if (e.code === 'Enter' || e.code === 'Space') {\n e.preventDefault();\n this.$title.click();\n }\n });\n\n // enables :active pseudo class on mobile\n this.$title.addEventListener('touchstart', () => { }, { passive: true });\n\n /**\n * The DOM element that contains children.\n * @type {HTMLElement}\n */\n this.$children = document.createElement('div');\n this.$children.classList.add('children');\n\n this.domElement.appendChild(this.$title);\n this.domElement.appendChild(this.$children);\n\n this.title(title);\n\n if (this.parent) {\n this.parent.children.push(this);\n this.parent.folders.push(this);\n this.parent.$children.appendChild(this.domElement);\n\n // Stop the constructor early, everything onward only applies to root GUI's\n return;\n\n }\n\n this.domElement.classList.add('root');\n\n if (touchStyles) {\n this.domElement.classList.add('allow-touch-styles');\n }\n if (container) {\n container.appendChild(this.domElement);\n } else if (autoPlace) {\n this.domElement.classList.add('autoPlace');\n document.body.appendChild(this.domElement);\n }\n if (width) {\n this.domElement.style.setProperty('--width', width + 'px');\n }\n\n this._closeFolders = closeFolders;\n }\n\n\n /**\n * Adds a controller to the GUI, inferring controller type using the `typeof` operator.\n * @example\n * gui.add( object, 'property' );\n * gui.add( object, 'number', 0, 100, 1 );\n * gui.add( object, 'options', [ 1, 2, 3 ] );\n *\n * @param {object} object The object the controller will modify.\n * @param {string} property Name of the property to control.\n * @param {number|object|Array} [$1] Minimum value for number controllers, or the set of\n * selectable values for a dropdown.\n * @param {number} [max] Maximum value for number controllers.\n * @param {number} [step] Step value for number controllers.\n * @returns {Controller}\n */\n add(\n object: Object,\n property: string,\n $1?: number | object | Array<any>,\n max?: number,\n step?: number\n ) {\n if (Object($1) === $1) {\n return new OptionController(this, object, property, $1);\n }\n\n const initialValue = object[property];\n switch (typeof initialValue) {\n case 'number':\n return new NumberController(this, object, property, $1 as number, max, step);\n case 'boolean':\n return new BooleanController(this, object, property);\n case 'string':\n return new StringController(this, object, property);\n case 'function':\n return new FunctionController(this, object, property);\n\n }\n\n // eslint-disable-next-line no-console\n console.error(`gui.add failed\n property:`, property, `\n object:`, object, `\n value:`, initialValue\n );\n\n }\n\n /**\n * Adds a color controller to the GUI.\n * @example\n * params = {\n * \tcssColor: '#ff00ff',\n * \trgbColor: { r: 0, g: 0.2, b: 0.4 },\n * \tcustomRange: [ 0, 127, 255 ],\n * };\n *\n * gui.addColor( params, 'cssColor' );\n * gui.addColor( params, 'rgbColor' );\n * gui.addColor( params, 'customRange', 255 );\n *\n * @param {object} object The object the controller will modify.\n * @param {string} property Name of the property to control.\n * @param {number} rgbScale Maximum value for a color channel when using an RGB color. You may\n * need to set this to 255 if your colors are too bright.\n * @returns {Controller}\n */\n addColor(\n object: Object,\n property: string,\n rgbScale: number = 1,\n ) {\n return new ColorController(this, object, property, rgbScale);\n }\n\n /**\n *\n * @param {object} object\n * @param {string} property Name of the property to control.\n * @returns {Controller}\n */\n addImage(\n object: Object,\n property: string\n ) {\n return new ImageController(this, object, property);\n }\n\n\n addTexture(\n object: Object,\n property: string\n ) {\n return new TextureController(this, object, property);\n }\n /**\n *\n * @param {object} object\n * @param {string} property\n * @param min\n * @param max\n * @param step\n * @returns {Controller}\n */\n addVector(\n object: Object,\n property: string,\n min?: number,\n max?: number,\n step?: number\n ) {\n return new VectorController(this, object, property, min, max, step);\n }\n\n addCurve(\n object: Object,\n property: string,\n ) {\n return new CurveController(this, object, property);\n }\n /**\n * Adds a folder to the GUI, which is just another GUI. This method returns\n * the nested GUI so you can add controllers to it.\n * @example\n * const folder = gui.addFolder( 'Position' );\n * folder.add( position, 'x' );\n * folder.add( position, 'y' );\n * folder.add( position, 'z' );\n *\n * @param {string} title Name to display in the folder's title bar.\n * @param {string} id Id\n * @returns {GUI}\n */\n addFolder(title: string, id: string = title) {\n const folder = new GUI({ parent: this, title, id });\n if (this.root._closeFolders) folder.close();\n return folder;\n }\n\n /**\n *\n * @param {string} id\n * @returns {this}\n */\n removeFolder(id: string) {\n let folder = this.getFolder(id);\n if (folder) folder.destroy();\n return this;\n }\n /**\n *\n * @param {string} id\n * @returns {GUI}\n */\n getFolder(id: string) {\n return this.folders.find(v => v.id === id);\n }\n\n /**\n * Recalls values that were saved with `gui.save()`.\n * @param {object} obj\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {this}\n */\n load(obj: GUI, recursive: boolean = true) {\n if (obj.controllers) {\n this.controllers.forEach(c => {\n if (c instanceof FunctionController) return;\n if (c._name in obj.controllers) {\n c.load(obj.controllers[c._name]);\n }\n });\n }\n\n if (recursive && obj.folders) {\n this.folders.forEach(f => {\n if (f._title in obj.folders) {\n f.load(obj.folders[f._title]);\n }\n });\n\n }\n\n return this;\n\n }\n\n /**\n * Returns an object mapping controller names to values. The object can be passed to `gui.load()` to\n * recall these values.\n * @example\n * {\n * \tcontrollers: {\n * \t\tprop1: 1,\n * \t\tprop2: 'value',\n * \t\t...\n * \t},\n * \tfolders: {\n * \t\tfolderName1: { controllers, folders },\n * \t\tfolderName2: { controllers, folders }\n * \t\t...\n * \t}\n * }\n *\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {object}\n */\n save(recursive: boolean = true) {\n const obj = {\n controllers: {},\n folders: {}\n };\n this.controllers.forEach(c => {\n if (c instanceof FunctionController) return;\n if (c._name in obj.controllers) {\n throw new Error(`Cannot save GUI with duplicate property \"${c._name}\"`);\n }\n obj.controllers[c._name] = c.save();\n });\n\n if (recursive) {\n this.folders.forEach(f => {\n if (f._title in obj.folders) {\n throw new Error(`Cannot save GUI with duplicate folder \"${f._title}\"`);\n }\n obj.folders[f._title] = f.save();\n });\n }\n return obj;\n }\n\n /**\n * Opens a GUI or folder. GUI and folders are open by default.\n * @param {boolean} open Pass false to close\n * @returns {this}\n * @example\n * gui.open(); // open\n * gui.open( false ); // close\n * gui.open( gui._closed ); // toggle\n */\n open(open: boolean = true) {\n this._setClosed(!open);\n this.$title.setAttribute('aria-expanded', !this._closed as any);\n this.domElement.classList.toggle('closed', this._closed);\n return this;\n }\n\n /**\n * Closes the GUI.\n * @returns {this}\n */\n close() {\n return this.open(false);\n }\n\n private _setClosed(closed: boolean) {\n if (this._closed === closed) return;\n this._closed = closed;\n this._callOnOpenClose(this);\n }\n\n /**\n * Shows the GUI after it's been hidden.\n * @param {boolean} show\n * @returns {this}\n * @example\n * gui.show();\n * gui.show( false ); // hide\n * gui.show( gui._hidden ); // toggle\n */\n show(show: boolean = true) {\n this._hidden = !show;\n this.domElement.style.display = this._hidden ? 'none' : '';\n return this;\n }\n\n /**\n * Hides the GUI.\n * @returns {this}\n */\n hide() {\n return this.show(false);\n }\n\n openAnimated(open: boolean = true) {\n // set state immediately\n this._setClosed(!open);\n this.$title.setAttribute('aria-expanded', !this._closed as any);\n\n // wait for next frame to measure $children\n requestAnimationFrame(() => {\n // explicitly set initial height for transition\n const initialHeight = this.$children.clientHeight;\n this.$children.style.height = initialHeight + 'px';\n\n this.domElement.classList.add('transition');\n\n const onTransitionEnd = e => {\n if (e.target !== this.$children) return;\n this.$children.style.height = '';\n this.domElement.classList.remove('transition');\n this.$children.removeEventListener('transitionend', onTransitionEnd);\n };\n\n this.$children.addEventListener('transitionend', onTransitionEnd);\n\n // todo: this is wrong if children's scrollHeight makes for a gui taller than maxHeight\n const targetHeight = !open ? 0 : this.$children.scrollHeight;\n this.domElement.classList.toggle('closed', !open);\n\n requestAnimationFrame(() => {\n this.$children.style.height = targetHeight + 'px';\n });\n });\n\n return this;\n }\n\n /**\n * Change the title of this GUI.\n * @param {string} title\n * @returns {this}\n */\n title(title: string) {\n this._title = title;\n this.$title.innerHTML = title;\n return this;\n }\n\n /**\n * Resets all controllers to their initial values.\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {this}\n */\n reset(recursive = true) {\n const controllers = recursive ? this.controllersRecursive() : this.controllers;\n controllers.forEach(c => c.reset());\n return this;\n }\n\n /**\n * Pass a function to be called whenever a controller in this GUI changes.\n * @param {function({object:object, property:string, value:any, controller:Controller})} callback\n * @returns {this}\n * @example\n * gui.onChange( event => {\n * \tevent.object // object that was modified\n * \tevent.property // string, name of property\n * \tevent.value // new value of controller\n * \tevent.controller // controller that was modified\n * } );\n */\n onChange(callback) {\n /**\n * Used to access the function bound to `onChange` events. Don't modify this value\n * directly. Use the `gui.onChange( callback )` method instead.\n * @type {Function}\n */\n this._onChange = callback;\n return this;\n }\n\n _callOnChange(controller) {\n\n if (this.parent) {\n this.parent._callOnChange(controller);\n }\n\n if (this._onChange !== undefined) {\n this._onChange.call(this, {\n object: controller.object,\n property: controller.property,\n value: controller.getValue(),\n controller\n });\n }\n }\n\n /**\n * Pass a function to be called whenever a controller in this GUI has finished changing.\n * @param {function({object:object, property:string, value:any, controller:Controller})} callback\n * @returns {this}\n * @example\n * gui.onFinishChange( event => {\n * \tevent.object // object that was modified\n * \tevent.property // string, name of property\n * \tevent.value // new value of controller\n * \tevent.controller // controller that was modified\n * } );\n */\n onFinishChange(callback: Function) {\n this._onFinishChange = callback;\n return this;\n }\n\n _callOnFinishChange(controller: Controller) {\n if (this.parent) {\n this.parent._callOnFinishChange(controller);\n }\n\n if (this._onFinishChange !== undefined) {\n this._onFinishChange.call(this, {\n object: controller.object,\n property: controller.property,\n value: controller.getValue(),\n controller\n });\n }\n }\n\n /**\n * Pass a function to be called when this GUI or its descendants are opened or closed.\n * @param {function(GUI)} callback\n * @returns {this}\n * @example\n * gui.onOpenClose( changedGUI => {\n * \tconsole.log( changedGUI._closed );\n * } );\n */\n onOpenClose(callback: Function) {\n this._onOpenClose = callback;\n return this;\n }\n\n private _callOnOpenClose(changedGUI: GUI) {\n if (this.parent) {\n this.parent._callOnOpenClose(changedGUI);\n }\n\n if (this._onOpenClose !== undefined) {\n this._onOpenClose.call(this, changedGUI);\n }\n }\n\n /**\n * Destroys all DOM elements and event listeners associated with this GUI\n */\n destroy() {\n if (this.parent) {\n this.parent.children.splice(this.parent.children.indexOf(this), 1);\n this.parent.folders.splice(this.parent.folders.indexOf(this), 1);\n }\n\n if (this.domElement.parentElement) {\n this.domElement.parentElement.removeChild(this.domElement);\n }\n\n Array.from(this.children).forEach(c => c.destroy());\n }\n\n /**\n * Returns an array of controllers contained by this GUI and its descendents.\n * @returns {Controller[]}\n */\n controllersRecursive() {\n let controllers = Array.from(this.controllers);\n this.folders.forEach(f => {\n controllers = controllers.concat(f.controllersRecursive());\n });\n return controllers;\n }\n\n /**\n * Returns an array of folders contained by this GUI and its descendents.\n * @returns {GUI[]}\n */\n foldersRecursive() {\n let folders = Array.from(this.folders);\n this.folders.forEach(f => {\n folders = folders.concat(f.foldersRecursive());\n });\n return folders;\n }\n\n update() {\n for (let child of this.children) {\n child.update();\n }\n }\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import {\n ColorSpace,\n Material,\n MeshBasicMaterial,\n MeshPhysicalMaterial,\n MeshStandardMaterial,\n Scene,\n ShaderMaterial,\n ToneMapping,\n WebGLRenderer,\n} from \"three\";\n\nimport { Component, ObjectInstance, Plugin, PropertyManager, Viewer, property } from \"@xviewer.js/core\";\nimport { GUI } from \"./gui/GUI\";\n\ntype uuidObject = { uuid: string, name: string, type: string }\n\nexport class InspectorPlugin extends Plugin {\n\n static _getTargetName(target: uuidObject) {\n return target.name || target.constructor.name || target.type;\n }\n\n private _gui: GUI;\n private _statesMap: Map<uuidObject, number> = new Map();\n private _targetMap: Map<Object, Object> = new Map();\n\n constructor() {\n super();\n this.install = () => {\n this._gui = new GUI({ width: 310, title: \"Inspector\" }).close();\n this._initFolders();\n this._initViewer();\n }\n this.uninstall = () => {\n this._gui.destroy();\n this._statesMap.clear();\n this._targetMap.clear();\n }\n }\n\n onUpdate(dt: number): void {\n this._gui.update();\n this._updateFolders();\n }\n\n private _initFolders() {\n const gui = this._gui;\n gui.addFolder(\"Viewer\").close().hide();\n gui.addFolder(\"Plugin\").close().hide();\n gui.addFolder(\"Component\").close().hide();\n gui.addFolder(\"Material\").close().hide();\n gui.addFolder(\"Other\").close().hide();\n }\n\n private _initViewer() {\n this.inspect(new ViewerExtension(this.viewer));\n }\n\n private _updateFolders() {\n const statesMap = this._statesMap;\n const setState = (v: uuidObject) => {\n if (statesMap.get(v) === -1) statesMap.set(v, 0);\n if (statesMap.get(v) === undefined) statesMap.set(v, 1);\n }\n\n statesMap.forEach((_, k, map) => map.set(k, -1));\n\n this.viewer.traversePlugins(setState);\n this.viewer.traverseComponents(setState);\n this.viewer.traverseMaterials(setState);\n\n statesMap.forEach((v, k, map) => {\n if (v === 1) {\n this.inspect(k);\n }\n if (v === -1) {\n this.uninspect(k);\n map.delete(k);\n }\n })\n }\n\n private _getPropertiesList<T extends uuidObject>(target: T) {\n const list = [];\n\n let props = PropertyManager._getMergedProperties(target.constructor);\n if (props) {\n list.push(props);\n this._targetMap.set(props, target);\n }\n if (target instanceof ShaderMaterial) {\n props = Object.create(null);\n\n const uniforms = Object.create(null);\n this._targetMap.set(props, uniforms);\n\n const entries = Object.entries(target.uniforms);\n entries.forEach(([name]) => {\n Object.defineProperty(uniforms, name, {\n get: () => target.uniforms[name].value,\n set: (v) => (target.uniforms[name].value = v),\n });\n props[name] = { dir: \"uniforms\" };\n });\n list.push(props);\n }\n\n return list;\n }\n\n inspect<T extends uuidObject>(target: T) {\n let propsList = this._getPropertiesList(target);\n if (propsList.length === 0) return;\n\n let gui = this._gui;\n if (target instanceof ViewerExtension) {\n gui = gui.getFolder(\"Viewer\").show();\n }\n else if (target instanceof Plugin) {\n gui = gui.getFolder(\"Plugin\").show();\n }\n else if (target instanceof Component) {\n gui = gui.getFolder(\"Component\").show();\n }\n else if (target instanceof Material) {\n gui = gui.getFolder(\"Material\").show();\n }\n else {\n gui = gui.getFolder(\"Other\").show();\n }\n\n if (gui._title !== \"Viewer\") {\n gui = gui.getFolder(target.uuid) || gui.addFolder(InspectorPlugin._getTargetName(target), target.uuid).close();\n }\n\n this._addPropsListGUI(gui, propsList, target);\n\n return target;\n }\n\n private _addPropsListGUI(gui: GUI, list: Object[], target: Object, dir: string = \"\") {\n let source = target;\n\n for (let props of list) {\n if (dir) {\n gui = gui.getFolder(dir) || gui.addFolder(dir).close();\n }\n\n target = this._targetMap.get(props) || source;\n\n for (let k in props) {\n let value = target[k];\n if (value == null) continue;\n\n const prop = props[k];\n\n let folder = gui;\n if (prop.dir) {\n folder = folder.getFolder(prop.dir) || folder.addFolder(prop.dir).close();\n }\n\n if (PropertyManager._hasProperties(value.constructor)) {\n this._addPropsListGUI(folder, this._getPropertiesList(value), target, k);\n }\n\n const type = typeof value;\n const onChange = (v) => target[k] = v;\n\n let ins = null;\n if (value.isColor) {\n ins = folder.addColor(target, k);\n }\n else if (value.isAnimationCurve) {\n ins = folder.addCurve(target, k);\n }\n else if (value.isVector2 || value.isVector3 || value.isVector4 || value.isEuler) {\n ins = folder.addVector(target, k, prop.min, prop.max, prop.step);\n }\n else if (value.isTexture) {\n\n }\n else if (type === \"number\" || type === \"boolean\" || type === \"string\" || type === \"function\") {\n ins = folder.add(target, k, prop.value || prop.min, prop.max, prop.step);\n }\n else {\n //do nothing\n }\n if (ins && prop.name) {\n ins.name(prop.name);\n }\n }\n }\n }\n\n uninspect(target: uuidObject) {\n let gui = this._gui;\n if (target instanceof Plugin) {\n gui = gui.getFolder(\"Plugin\");\n }\n else if (target instanceof Component) {\n gui = gui.getFolder(\"Component\");\n }\n else if (target instanceof Material) {\n gui = gui.getFolder(\"Material\");\n }\n else {\n gui = gui.getFolder(\"Other\");\n }\n\n gui.removeFolder(target.uuid);\n\n if (gui.children.length === 0) {\n gui.hide();\n }\n }\n}\n\nclass ViewerExtension extends ObjectInstance {\n\n @property({\n value: {\n SRGBColorSpace: \"srgb\",\n LinearSRGBColorSpace: \"srgb-linear\",\n DisplayP3ColorSpace: \"display-p3\",\n LinearDisplayP3ColorSpace: \"display-p3-linear\",\n }\n })\n get outputColorSpace() {\n return this._renderer.outputColorSpace;\n }\n set outputColorSpace(v: ColorSpace) {\n this._renderer.outputColorSpace = v;\n }\n\n @property({\n value: {\n NoToneMapping: 0,\n LinearToneMapping: 1,\n ReinhardToneMapping: 2,\n CineonToneMapping: 3,\n ACESFilmicToneMapping: 4\n }\n })\n get toneMapping() {\n return this._renderer.toneMapping;\n }\n set toneMapping(v: ToneMapping) {\n this._renderer.toneMapping = v;\n }\n\n @property({ min: 0, max: 10, step: 0.01 })\n get toneMappingExposure() {\n return this._renderer.toneMappingExposure;\n }\n set toneMappingExposure(v: number) {\n this._renderer.toneMappingExposure = v;\n }\n\n @property\n get shadows() {\n return this._renderer.shadowMap.enabled;\n }\n set shadows(v: boolean) {\n this._renderer.shadowMap.enabled = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get backgroundBlurriness() {\n return this._scene.backgroundBlurriness;\n }\n set backgroundBlurriness(v: number) {\n this._scene.backgroundBlurriness = v;\n }\n\n @property({ min: 1, max: 120, step: 1 })\n get targetFrameRate() {\n return this._viewer.targetFrameRate;\n }\n set targetFrameRate(v) {\n this._viewer.targetFrameRate = v;\n }\n\n\n private _scene: Scene;\n private _renderer: WebGLRenderer;\n private _viewer: Viewer;\n\n constructor(viewer: Viewer) {\n super();\n this._viewer = viewer;\n this._scene = viewer.scene;\n this._renderer = viewer.renderer;\n }\n}\n\nconst materialProperties = {\n visible: {},\n transparent: {},\n side: { value: { FrontSide: 0, BackSide: 1, DoubleSide: 2 } },\n color: { dir: \"diffuse\" },\n opacity: { dir: \"diffuse\", min: 0, max: 1, step: 0.01 }\n}\nfor (let k in materialProperties) {\n property(materialProperties[k])(Material.prototype, k);\n}\n\nconst meshBasicMaterislProperties = {\n map: { dir: \"diffuse\" },\n lightMap: { dir: \"lightMap\" },\n lightMapIntensity: { dir: \"lightMap\", min: 0, max: 1, step: 0.01, parent: \"lightMap\" },\n aoMap: { dir: \"ao\" },\n aoMapIntensity: { dir: \"ao\", min: 0, max: 1, step: 0.01, parent: \"aoMap\" },\n specularMap: {},\n alphaMap: {},\n envMap: {},\n}\nfor (let k in meshBasicMaterislProperties) {\n property(meshBasicMaterislProperties[k])(MeshBasicMaterial.prototype, k);\n}\n\nconst meshStandardMaterialProperties = {\n opacity: { dir: \"diffuse\", min: 0, max: 1, step: 0.01 },\n map: { dir: \"diffuse\" },\n roughnessMap: { dir: \"roughness\" },\n roughness: { dir: \"roughness\", min: 0, max: 1, step: 0.01 },\n metalnessMap: { dir: \"metalness\" },\n metalness: { dir: \"metalness\", min: 0, max: 1, step: 0.01 },\n aoMap: { dir: \"ao\" },\n aoMapIntensity: { dir: \"ao\", min: 0, max: 1, step: 0.01, parent: \"aoMap\" },\n emissive: { dir: \"emissive\" },\n emissiveMap: { dir: \"emissive\" },\n emissiveIntensity: { dir: \"emissive\", min: 0, max: 1, step: 0.01, parent: \"emissiveMap\" },\n normalMap: { dir: \"normal\" },\n normalScale: { dir: \"normal\", parent: \"normalMap\", step: 0.01 },\n displacementScale: { dir: \"displacement\", min: 0, max: 1, step: 0.01, parent: \"displacementMap\" },\n displacementBias: { dir: \"displacement\", parent: \"displacementMap\" },\n envMap: { dir: \"envMap\" },\n envMapIntensity: { dir: \"envMap\", min: 0, max: 1, step: 0.01 },\n lightMap: { dir: \"lightMap\" },\n lightMapIntensity: { dir: \"lightMap\", min: 0, max: 1, step: 0.01, parent: \"lightMap\" },\n}\nfor (let k in meshStandardMaterialProperties) {\n property(meshStandardMaterialProperties[k])(MeshStandardMaterial.prototype, k);\n}\n\nconst meshPhysicalMaterialProperties = {\n ior: { min: 0, max: 10, step: 0.01 },\n anisotropy: { min: 0, max: 10, step: 0.01 },\n clearcoat: { dir: \"clearcoat\" },\n clearcoatMap: { dir: \"clearcoat\", min: 0, max: 1, step: 0.01 },\n clearcoatRoughness: { dir: \"clearcoat\", min: 0, max: 1, step: 0.01 },\n clearcoatNormalScale: { dir: \"clearcoat\", step: 0.01 },\n clearcoatNormalMap: { dir: \"clearcoat\" },\n iridescence: { dir: \"iridescence\", min: 0, max: 1, step: 0.01 },\n iridescenceMap: { dir: \"iridescence\" },\n iridescenceIOR: { dir: \"iridescence\", step: 0.01 },\n iridescenceThicknessRange: { dir: \"iridescence\" },\n iridescenceThicknessMap: { dir: \"iridescence\" },\n sheen: { dir: \"sheen\" },\n sheenColor: { dir: \"sheen\" },\n sheenColorMap: { dir: \"sheen\" },\n sheenRoughness: { dir: \"sheen\", min: 0, max: 1, step: 0.01 },\n sheenRoughnessMap: { dir: \"sheen\" },\n transmission: { dir: \"transmission\" },\n transmissionMap: { dir: \"transmission\" },\n thickness: { dir: \"thickness\", min: 0, max: 1, step: 0.01 },\n thicknessMap: { dir: \"thickness\" },\n attenuationDistance: { dir: \"attenuation\" },\n attenuationColor: { dir: \"attenuation\" },\n specularIntensity: { dir: \"specular\", min: 0, max: 1, step: 0.01 },\n specularIntensityMap: { dir: \"specular\" },\n specularColor: { dir: \"specular\" },\n specularColorMap: { dir: \"specular\" },\n}\nfor (let k in meshPhysicalMaterialProperties) {\n property(meshPhysicalMaterialProperties[k])(MeshPhysicalMaterial.prototype, k);\n}\n\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction format(v) {\n\tif (v > 1000) {\n\t\treturn Math.floor(v * 0.001) + \"k\";\n\t}\n\telse if (v > 1000000) {\n\t\treturn Math.floor(v * 0.000001) + \"m\"\n\t}\n\telse {\n\t\treturn v;\n\t}\n}\n\nvar Panel = function (name, fg, bg) {\n\n\tvar min = Infinity, max = 0, round = Math.round;\n\tvar PR = round(window.devicePixelRatio || 1);\n\n\tvar WIDTH = 80 * PR, HEIGHT = 48 * PR,\n\t\tTEXT_X = 3 * PR, TEXT_Y = 2 * PR,\n\t\tGRAPH_X = 3 * PR, GRAPH_Y = 15 * PR,\n\t\tGRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR;\n\n\tvar canvas = document.createElement('canvas');\n\tcanvas.width = WIDTH;\n\tcanvas.height = HEIGHT;\n\tcanvas.style.cssText = 'width:80px;height:48px';\n\n\tvar context = canvas.getContext('2d');\n\tcontext.font = 'bold ' + (9 * PR) + 'px Helvetica,Arial,sans-serif';\n\tcontext.textBaseline = 'top';\n\n\tcontext.fillStyle = bg;\n\tcontext.fillRect(0, 0, WIDTH, HEIGHT);\n\n\tcontext.fillStyle = fg;\n\tcontext.fillText(name, TEXT_X, TEXT_Y);\n\tcontext.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n\tcontext.fillStyle = bg;\n\tcontext.globalAlpha = 0.9;\n\tcontext.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n\treturn {\n\n\t\tdom: canvas,\n\n\t\tupdate: function (value, maxValue) {\n\n\t\t\tmin = Math.min(min, value);\n\t\t\tmax = Math.max(max, value);\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 1;\n\t\t\tcontext.fillRect(0, 0, WIDTH, GRAPH_Y);\n\t\t\tcontext.fillStyle = fg;\n\t\t\tcontext.fillText(format(round(value)) + ' ' + name + ' (' + format(round(min)) + '-' + format(round(max)) + ')', TEXT_X, TEXT_Y);\n\n\t\t\tcontext.drawImage(canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT);\n\n\t\t\tcontext.fillRect(GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT);\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 0.9;\n\t\t\tcontext.fillRect(GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round((1 - (value / maxValue)) * GRAPH_HEIGHT));\n\n\t\t}\n\n\t};\n\n};\n\nvar Stats = function () {\n\n\tvar mode = 0;\n\n\tvar container = document.createElement('div');\n\tcontainer.style.cssText = 'position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000';\n\tcontainer.addEventListener('click', function (event) {\n\n\t\tevent.preventDefault();\n\t\tshowPanel(++mode % container.children.length);\n\n\t}, false);\n\n\t//\n\n\tfunction addPanel(panel) {\n\n\t\tcontainer.appendChild(panel.dom);\n\t\treturn panel;\n\n\t}\n\n\tfunction showPanel(id) {\n\n\t\tfor (var i = 0; i < container.children.length; i++) {\n\n\t\t\tcontainer.children[i].style.display = i === id ? 'block' : 'none';\n\n\t\t}\n\n\t\tmode = id;\n\n\t}\n\n\t//\n\n\tvar beginTime = (performance || Date).now(), prevTime = beginTime, frames = 0;\n\n\tvar fpsPanel = addPanel(new Panel('FPS', '#0ff', '#002'));\n\tvar msPanel = addPanel(new Panel('MS', '#0f0', '#020'));\n\n\tif (self.performance && self.performance.memory) {\n\n\t\tvar memPanel = addPanel(new Panel('MB', '#f08', '#201'));\n\n\t}\n\n\tshowPanel(0);\n\n\treturn {\n\n\t\tREVISION: 16,\n\n\t\tdom: container,\n\n\t\taddPanel: addPanel,\n\t\tshowPanel: showPanel,\n\n\t\tbegin: function () {\n\n\t\t\tbeginTime = (performance || Date).now();\n\n\t\t},\n\n\t\tend: function () {\n\n\t\t\tframes++;\n\n\t\t\tvar time = (performance || Date).now();\n\n\t\t\tmsPanel.update(time - beginTime, 200);\n\n\t\t\tif (time >= prevTime + 1000) {\n\n\t\t\t\tfpsPanel.update((frames * 1000) / (time - prevTime), 100);\n\n\t\t\t\tprevTime = time;\n\t\t\t\tframes = 0;\n\n\t\t\t\tif (memPanel) {\n\n\t\t\t\t\tvar memory = performance.memory;\n\t\t\t\t\tmemPanel.update(memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn time;\n\n\t\t},\n\n\t\tupdate: function () {\n\n\t\t\tbeginTime = this.end();\n\n\t\t},\n\n\t\t// Backwards Compatibility\n\n\t\tdomElement: container,\n\t\tsetMode: showPanel\n\n\t};\n\n};\nexport { Stats, Panel };\n","import { Plugin } from \"@xviewer.js/core\";\nimport { Panel, Stats } from \"./stats/Stats\";\n\nexport class StatsPlugin extends Plugin {\n private _stats: Stats = new Stats();\n private _dcPanel: Panel = new Panel('DC', '#ff8', '#221');\n private _triPanel: Panel = new Panel(\"TRI\", '#ff8', '#221')\n private _texPanel: Panel = new Panel('TEX', '#ff8', '#221')\n private _prgPanel: Panel = new Panel('PRG', '#ff8', '#221')\n\n constructor() {\n super();\n this.install = () => {\n this._stats.addPanel(this._dcPanel);\n this._stats.addPanel(this._texPanel);\n this._stats.addPanel(this._triPanel);\n this._stats.addPanel(this._prgPanel);\n this._stats.showPanel(0);\n document.body.appendChild(this._stats.dom);\n }\n this.uninstall = () => {\n document.body.removeChild(this._stats.dom);\n }\n }\n\n onUpdate(dt: number): void {\n const info = this.viewer.renderer.info;\n this._dcPanel.update(info.render.calls, 300);\n this._triPanel.update(info.render.triangles, 500000);\n this._texPanel.update(info.memory.textures, 200);\n this._prgPanel.update(info.programs.length, 50);\n this._stats.update();\n }\n}"],"names":["Controller","name","_name","$name","innerHTML","onChange","callback","_onChange","parent","_callOnChange","undefined","call","getValue","_changed","onFinishChange","_onFinishChange","_callOnFinishChange","reset","setValue","initialValue","enable","enabled","disable","disabled","_disabled","domElement","classList","toggle","$disable","toggleAttribute","show","_hidden","style","display","hide","options","min","max","step","decimals","listen","_listening","_listenCallbackID","cancelAnimationFrame","_listenCallback","needsUpdateDisplay","_closed","value","save","_listenPrevValue","requestAnimationFrame","updateDisplay","object","property","update","load","destroy","children","splice","indexOf","controllers","$children","removeChild","constructor","className","widgetTag","document","createElement","add","nextNameID","id","$widget","appendChild","addEventListener","e","stopPropagation","push","bind","OptionController","index","_values","$select","selectedIndex","$display","_names","Array","isArray","Object","values","keys","forEach","$option","setAttribute","remove","normalizeColorString","string","match","result","parseInt","toString","padStart","STRING","isPrimitive","v","fromHexString","toHexString","INT","substring","ARRAY","target","rgbScale","int","r","g","b","OBJECT","FORMATS","getColorFormat","find","format","getPrecision","str","length","hasDecimal","NumberController","_min","_onUpdateMinMax","_max","explicit","_step","_stepExplicit","Math","abs","_snap","_hasSlider","percent","$fill","width","_inputFocused","$input","_initInput","isTouch","window","matchMedia","matches","onInput","parseFloat","isNaN","_clamp","increment","delta","_snapClampSetValue","onKeyDown","key","blur","code","preventDefault","_arrowKeyMultiplier","onWheel","_normalizeMouseWheel","testingForVerticalDrag","initClientX","initClientY","prevClientY","initValue","dragDelta","DRAG_THRESH","onMouseDown","clientX","clientY","onMouseMove","onMouseUp","dx","dy","_setDraggingStyle","removeEventListener","onFocus","onBlur","passive","_initSlider","$slider","insertBefore","map","a","c","d","setValueFromX","rect","getBoundingClientRect","left","right","mouseDown","mouseMove","mouseUp","testingForScroll","prevClientX","beginTouchDrag","touches","onTouchStart","_hasScrollBar","onTouchMove","onTouchEnd","callOnFinishChange","WHEEL_DEBOUNCE_TIME","wheelFinishChangeTimeout","isVertical","deltaX","deltaY","clearTimeout","setTimeout","active","axis","body","_getImplicitStep","_hasMin","_hasMax","pow","floor","wheelDelta","wheel","mult","shiftKey","altKey","round","toPrecision","root","scrollHeight","clientHeight","stepExplicit","BooleanController","checked","StringController","FunctionController","$button","ColorController","_setValueFromHexString","_initialValueHexString","_format","newValue","_rgbScale","_textFocused","$text","backgroundColor","tryParse","select","ImageController","toDataURL","img","HTMLImageElement","src","url","_imageMap","get","w","h","height","_context","getContext","canvas","data","imageData","createImageData","set","createImageBitmap","ImageBitmap","drawImage","then","$img","WeakMap","UIElement","args","i","argument","dom","console","error","clear","lastChild","setId","getId","setClass","addClass","removeClass","setStyle","array","setDisabled","setTextContent","textContent","getIndexOfChild","element","prototype","UINumber","equals","_onChangeCallback","unit","Infinity","setUnit","nudge","cursor","scope","changeEvent","createEvent","initEvent","distance","onMouseDownValue","pointer","x","y","prevPointer","event","currentValue","dispatchEvent","focus","pageX","pageY","keyCode","VectorController","fill","uiNumber","z","xElement","yElement","zElement","wElement","clone","assign","clamp","minv","maxv","hitTest","cx","cy","hw","hh","theme","BACKGROUND","GRID","LINE","COVER","POINT","SELECTED","CurvePanel","_canvas","curve","_curve","resize","DPR","devicePixelRatio","xRes","offsetWidth","yRes","offsetHeight","hypot","_xRes","_yRes","onCurveChanged","_onCurveChanged","onPointChanged","_onPointChanged","onPointRemoved","_onPointRemoved","onPointAdded","_onPointAdded","_onDblClick","button","_tryAddingPoint","_onMouseDown","_cxRef","_cx","_cyRef","_cy","_offsetXRef","offsetX","_offsetYRef","offsetY","_trySelectingPoint","_button","_mouse","_selectedPoint","_onMouseUp","_onMouseMove","cxRes","cyRes","rx","_ra","ry","_fixed","_pxRef","_pyRef","setPointPos","_onWheel","sfactor","render","_autoResize","ctx","setTransform","fillStyle","fillRect","_drawGrid","_drawCurve","color","iax","ibx","iay","iby","lineWidth","strokeStyle","beginPath","ix","moveTo","lineTo","iy","stroke","_drawAxis","xPos","yPos","ax","ay","bx","by","SAMPLES","STEP","point","createCurvePoint","mx","my","hitCurve","hitPoint","isFirstPoint","p","getPoint","closePath","points","px","py","sort","selectPoint","setCurve","setPointMode","mode","copyToClipboard","text","tempInput","setSelectionRange","execCommand","toFixedFloat","fractionDigits","toFixed","CurveEditor","_dom","_onToggleTab","tabInex","_tabs","_curvePanel","_curves","_onTogglePointTab","tab","_smoothTab","_sharpTab","_curvePointPanel","_onPosChanged","_xPosInput","_yPosInput","isChanged","layoutPoint","_layoutPoint","needsUpdate","_target","tabGroup","ondblclick","join","alert","curves","onclick","onchange","CurveController","_curveEditor","TextureController","texture","_version","version","$canvas","context","image","clearRect","scale","__getImage","group","flexDirection","isRenderTargetTexture","GUI","$1","addColor","addImage","addTexture","addVector","addCurve","addFolder","title","folder","_closeFolders","close","removeFolder","getFolder","folders","obj","recursive","f","_title","Error","open","_setClosed","$title","closed","_callOnOpenClose","openAnimated","initialHeight","onTransitionEnd","targetHeight","controllersRecursive","controller","onOpenClose","_onOpenClose","changedGUI","parentElement","from","concat","foldersRecursive","child","container","autoPlace","closeFolders","touchStyles","click","setProperty","InspectorPlugin","Plugin","_getTargetName","type","onUpdate","dt","_gui","_updateFolders","_initFolders","gui","_initViewer","inspect","ViewerExtension","viewer","statesMap","_statesMap","setState","_","k","traversePlugins","traverseComponents","traverseMaterials","uninspect","delete","_getPropertiesList","list","props","PropertyManager","_getMergedProperties","_targetMap","ShaderMaterial","create","uniforms","entries","defineProperty","dir","propsList","Component","Material","uuid","_addPropsListGUI","source","prop","_hasProperties","ins","isColor","isAnimationCurve","isVector2","isVector3","isVector4","isEuler","isTexture","Map","install","uninstall","ObjectInstance","outputColorSpace","_renderer","toneMapping","toneMappingExposure","shadows","shadowMap","backgroundBlurriness","_scene","targetFrameRate","_viewer","scene","renderer","SRGBColorSpace","LinearSRGBColorSpace","DisplayP3ColorSpace","LinearDisplayP3ColorSpace","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","materialProperties","visible","transparent","side","FrontSide","BackSide","DoubleSide","opacity","meshBasicMaterislProperties","lightMap","lightMapIntensity","aoMap","aoMapIntensity","specularMap","alphaMap","envMap","MeshBasicMaterial","meshStandardMaterialProperties","roughnessMap","roughness","metalnessMap","metalness","emissive","emissiveMap","emissiveIntensity","normalMap","normalScale","displacementScale","displacementBias","envMapIntensity","MeshStandardMaterial","meshPhysicalMaterialProperties","ior","anisotropy","clearcoat","clearcoatMap","clearcoatRoughness","clearcoatNormalScale","clearcoatNormalMap","iridescence","iridescenceMap","iridescenceIOR","iridescenceThicknessRange","iridescenceThicknessMap","sheen","sheenColor","sheenColorMap","sheenRoughness","sheenRoughnessMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationColor","specularIntensity","specularIntensityMap","specularColor","specularColorMap","MeshPhysicalMaterial","Panel","fg","bg","PR","WIDTH","HEIGHT","TEXT_X","TEXT_Y","GRAPH_X","GRAPH_Y","GRAPH_WIDTH","GRAPH_HEIGHT","cssText","font","textBaseline","fillText","globalAlpha","maxValue","Stats","showPanel","addPanel","panel","beginTime","performance","Date","now","prevTime","frames","fpsPanel","msPanel","self","memory","memPanel","REVISION","begin","end","time","usedJSHeapSize","jsHeapSizeLimit","setMode","StatsPlugin","info","_dcPanel","calls","_triPanel","triangles","_texPanel","textures","_prgPanel","programs","_stats"],"mappings":"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","x_google_ignoreList":[0,19]}
1
+ {"version":3,"file":"main.js","sources":["../../../node_modules/.pnpm/rollup-plugin-styles@4.0.0_rollup@4.17.2/node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","../src/gui/controllers/Controller.ts","../src/gui/controllers/OptionController.ts","../src/gui/utils/normalizeColorString.ts","../src/gui/utils/getColorFormat.ts","../src/gui/utils/index.ts","../src/gui/controllers/NumberController.ts","../src/gui/controllers/BooleanController.ts","../src/gui/controllers/StringController.ts","../src/gui/controllers/FunctionController.ts","../src/gui/controllers/ColorController.ts","../src/gui/controllers/ImageController.ts","../src/gui/common/UIElement.ts","../src/gui/common/UINumber.ts","../src/gui/controllers/VectorController.ts","../src/gui/curve/CurveEditor.ts","../src/gui/controllers/CurveController.ts","../src/gui/controllers/TextureController.ts","../src/gui/GUI.ts","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/InspectorPlugin.ts","../src/stats/Stats.js","../src/StatsPlugin.ts"],"sourcesContent":["var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c()}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a=\"prepend\"===s?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}export{n as default};\n","import { GUI } from \"../GUI\";\n\nexport class Controller {\n static nextNameID: number = 0;\n\n parent: GUI;\n object: Object;\n property: string;\n /**\n * The value of `object[ property ]` when the controller was created.\n */\n initialValue: any;\n /**\n * The outermost container DOM element for this controller.\n */\n domElement: HTMLElement;\n /**\n * The DOM element that contains the controller's name.\n */\n $name: HTMLElement;\n /**\n * The DOM element that contains the controller's \"widget\" (which differs by controller type).\n */\n $widget: HTMLElement;\n /**\n * The DOM element that receives the disabled attribute when using disable()\n */\n $disable: HTMLElement;\n /**\n * Used to determine if the controller is disabled.\n * Use `controller.disable( true|false )` to modify this value\n */\n protected _disabled: boolean = false;\n /**\n * Used to determine if the Controller is hidden.\n * Use `controller.show()` or `controller.hide()` to change this.\n */\n protected _hidden: boolean = false;\n protected _changed: boolean = false;\n /**\n * Used to determine if the controller is currently listening. Don't modify this value\n * directly. Use the `controller.listen( true|false )` method instead.\n */\n protected _listening: boolean = false;\n protected _listenCallbackID: number = -1;\n protected _listenPrevValue: any;\n /**\n * The controller's name. Use `controller.name( 'Name' )` to modify this value.\n */\n _name: string = \"\";\n /**\n * Used to access the function bound to `onChange` events. Don't modify this value directly.\n * Use the `controller.onChange( callback )` method instead.\n */\n protected _onChange: Function;\n /**\n * Used to access the function bound to `onFinishChange` events. Don't modify this value\n * directly. Use the `controller.onFinishChange( callback )` method instead.\n */\n protected _onFinishChange: Function;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n className: string,\n widgetTag: string = 'div'\n ) {\n this.parent = parent;\n this.object = object;\n this.property = property;\n\n this.initialValue = this.getValue();\n this.domElement = document.createElement('div');\n this.domElement.classList.add('controller');\n this.domElement.classList.add(className);\n\n this.$name = document.createElement('div');\n this.$name.classList.add('name');\n\n Controller.nextNameID = Controller.nextNameID || 0;\n this.$name.id = `lil-gui-name-${++Controller.nextNameID}`;\n\n /**\n * The DOM element that contains the controller's \"widget\" (which differs by controller type).\n * @type {HTMLElement}\n */\n this.$widget = document.createElement(widgetTag);\n this.$widget.classList.add('widget');\n this.$disable = this.$widget;\n\n this.domElement.appendChild(this.$name);\n this.domElement.appendChild(this.$widget);\n // Don't fire global key events while typing in a controller\n this.domElement.addEventListener('keydown', e => e.stopPropagation());\n this.domElement.addEventListener('keyup', e => e.stopPropagation());\n\n this.parent.children.push(this);\n this.parent.controllers.push(this);\n\n this.parent.$children.appendChild(this.domElement);\n\n this._listenCallback = this._listenCallback.bind(this);\n\n this.name(property);\n\n }\n\n /**\n * Sets the name of the controller and its label in the GUI.\n * @param {string} name\n * @returns {this}\n */\n name(name: string) {\n this._name = name;\n this.$name.innerHTML = name;\n return this;\n }\n\n /**\n * Pass a function to be called whenever the value is modified by this controller.\n * The function receives the new value as its first parameter. The value of `this` will be the\n * controller.\n *\n * For function controllers, the `onChange` callback will be fired on click, after the function\n * executes.\n * @param {Function} callback\n * @returns {this}\n * @example\n * const controller = gui.add( object, 'property' );\n *\n * controller.onChange( function( v ) {\n * \tconsole.log( 'The value is now ' + v );\n * \tconsole.assert( this === controller );\n * } );\n */\n onChange(callback: Function) {\n this._onChange = callback;\n return this;\n }\n\n /**\n * Calls the onChange methods of this controller and its parent GUI.\n */\n protected _callOnChange() {\n this.parent._callOnChange(this);\n if (this._onChange !== undefined) {\n this._onChange.call(this, this.getValue());\n }\n this._changed = true;\n }\n\n /**\n * Pass a function to be called after this controller has been modified and loses focus.\n * @param {Function} callback\n * @returns {this}\n * @example\n * const controller = gui.add( object, 'property' );\n *\n * controller.onFinishChange( function( v ) {\n * \tconsole.log( 'Changes complete: ' + v );\n * \tconsole.assert( this === controller );\n * } );\n */\n onFinishChange(callback: Function) {\n this._onFinishChange = callback;\n return this;\n }\n\n /**\n * Should be called by Controller when its widgets lose focus.\n */\n protected _callOnFinishChange() {\n if (this._changed) {\n this.parent._callOnFinishChange(this);\n if (this._onFinishChange !== undefined) {\n this._onFinishChange.call(this, this.getValue());\n }\n }\n this._changed = false;\n }\n\n /**\n * Sets the controller back to its initial value.\n * @returns {this}\n */\n reset() {\n this.setValue(this.initialValue);\n this._callOnFinishChange();\n return this;\n }\n\n /**\n * Enables this controller.\n * @param {boolean} enabled\n * @returns {this}\n * @example\n * controller.enable();\n * controller.enable( false ); // disable\n * controller.enable( controller._disabled ); // toggle\n */\n enable(enabled = true) {\n return this.disable(!enabled);\n }\n\n /**\n * Disables this controller.\n * @param {boolean} disabled\n * @returns {this}\n * @example\n * controller.disable();\n * controller.disable( false ); // enable\n * controller.disable( !controller._disabled ); // toggle\n */\n disable(disabled = true) {\n if (disabled === this._disabled) return this;\n this._disabled = disabled;\n this.domElement.classList.toggle('disabled', disabled);\n this.$disable.toggleAttribute('disabled', disabled);\n return this;\n\n }\n\n /**\n * Shows the Controller after it's been hidden.\n * @param {boolean} show\n * @returns {this}\n * @example\n * controller.show();\n * controller.show( false ); // hide\n * controller.show( controller._hidden ); // toggle\n */\n show(show: boolean = true) {\n this._hidden = !show;\n this.domElement.style.display = this._hidden ? 'none' : '';\n return this;\n\n }\n\n /**\n * Hides the Controller.\n * @returns {this}\n */\n hide() {\n return this.show(false);\n }\n\n options(options: any) {\n return this;\n }\n\n /**\n * Sets the minimum value. Only works on number controllers.\n * @param {number} min\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n min(min: number) {\n return this;\n }\n\n /**\n * Sets the maximum value. Only works on number controllers.\n * @param {number} max\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n max(max: number) {\n return this;\n }\n\n /**\n * Values set by this controller will be rounded to multiples of `step`. Only works on number\n * controllers.\n * @param {number} step\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n step(step: number) {\n return this;\n }\n\n /**\n * Rounds the displayed value to a fixed number of decimals, without affecting the actual value\n * like `step()`. Only works on number controllers.\n * @example\n * gui.add( object, 'property' ).listen().decimals( 4 );\n * @param {number} decimals\n * @returns {this}\n */\n // eslint-disable-next-line no-unused-vars\n decimals(decimals: number) {\n return this;\n }\n\n /**\n * Calls `updateDisplay()` every animation frame. Pass `false` to stop listening.\n * @param {boolean} listen\n * @returns {this}\n */\n listen(listen: boolean = true) {\n this._listening = listen;\n if (this._listenCallbackID !== undefined) {\n cancelAnimationFrame(this._listenCallbackID);\n this._listenCallbackID = undefined;\n }\n if (this._listening) {\n this._listenCallback();\n }\n return this;\n\n }\n\n needsUpdateDisplay() {\n if (this.parent._closed) {\n return false;\n }\n let value = this.save();\n if (this._listenPrevValue !== value) {\n this._listenPrevValue = value;\n return true;\n }\n return false;\n }\n\n private _listenCallback() {\n this._listenCallbackID = requestAnimationFrame(this._listenCallback);\n // To prevent framerate loss, make sure the value has changed before updating the display.\n // Note: save() is used here instead of getValue() only because of ColorController. The !== operator\n // won't work for color objects or arrays, but ColorController.save() always returns a string.\n if (this.needsUpdateDisplay()) {\n this.updateDisplay();\n }\n }\n\n /**\n * Returns `object[ property ]`.\n * @returns {any}\n */\n getValue() {\n return this.object[this.property];\n }\n\n /**\n * Sets the value of `object[ property ]`, invokes any `onChange` handlers and updates the display.\n * @param {any} value\n * @param {boolean} callOnChange\n * @returns {this}\n */\n setValue(value: any) {\n this.object[this.property] = value;\n this._callOnChange();\n this.updateDisplay();\n return this;\n }\n\n update() {\n if (this.needsUpdateDisplay()) {\n this.updateDisplay();\n }\n }\n\n /**\n * Updates the display to keep it in sync with the current value. Useful for updating your\n * controllers when their values have been modified outside of the GUI.\n * @returns {this}\n */\n updateDisplay() {\n return this;\n }\n\n load(value: any) {\n this.setValue(value);\n this._callOnFinishChange();\n return this;\n }\n\n save() {\n return this.getValue();\n }\n\n /**\n * Destroys this controller and removes it from the parent GUI.\n */\n destroy() {\n this.listen(false);\n this.parent.children.splice(this.parent.children.indexOf(this), 1);\n this.parent.controllers.splice(this.parent.controllers.indexOf(this), 1);\n this.parent.$children.removeChild(this.domElement);\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class OptionController extends Controller {\n $select: HTMLSelectElement;\n $display: HTMLElement;\n\n private _values: any[];\n private _names: string[];\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n options: Array<any> | Object\n ) {\n super(parent, object, property, 'option');\n\n this.$select = document.createElement('select');\n this.$select.setAttribute('aria-labelledby', this.$name.id);\n\n this.$display = document.createElement('div');\n this.$display.classList.add('display');\n\n this._values = Array.isArray(options) ? options : Object.values(options);\n this._names = Array.isArray(options) ? options : Object.keys(options);\n this._names.forEach(name => {\n const $option = document.createElement('option');\n $option.innerHTML = name;\n this.$select.appendChild($option);\n });\n this.$select.addEventListener('change', () => {\n this.setValue(this._values[this.$select.selectedIndex]);\n this._callOnFinishChange();\n });\n this.$select.addEventListener('focus', () => {\n this.$display.classList.add('focus');\n });\n this.$select.addEventListener('blur', () => {\n this.$display.classList.remove('focus');\n });\n\n this.$widget.appendChild(this.$select);\n this.$widget.appendChild(this.$display);\n this.$disable = this.$select;\n }\n\n updateDisplay() {\n const value = this.getValue();\n const index = this._values.indexOf(value);\n this.$select.selectedIndex = index;\n this.$display.innerHTML = index === -1 ? value : this._names[index];\n return this;\n }\n\n options(options: Array<any> | Object) {\n this.$select.innerHTML = \"\";\n this._values = Array.isArray(options) ? options : Object.values(options);\n this._names = Array.isArray(options) ? options : Object.keys(options);\n this._names.forEach(name => {\n const $option = document.createElement('option');\n $option.innerHTML = name;\n this.$select.appendChild($option);\n });\n return this;\n }\n}\n","/* eslint-disable no-cond-assign */\n\nexport function normalizeColorString(string: String) {\n\tlet match, result;\n\n\tif (match = string.match(/(#|0x)?([a-f0-9]{6})/i)) {\n\t\tresult = match[2];\n\t} else if (match = string.match(/rgb\\(\\s*(\\d*)\\s*,\\s*(\\d*)\\s*,\\s*(\\d*)\\s*\\)/)) {\n\t\tresult = parseInt(match[1]).toString(16).padStart(2, \"0\")\n\t\t\t+ parseInt(match[2]).toString(16).padStart(2, \"0\")\n\t\t\t+ parseInt(match[3]).toString(16).padStart(2, \"0\");\n\t} else if (match = string.match(/^#?([a-f0-9])([a-f0-9])([a-f0-9])$/i)) {\n\t\tresult = match[1] + match[1] + match[2] + match[2] + match[3] + match[3];\n\t}\n\n\tif (result) {\n\t\treturn '#' + result;\n\t}\n\n\treturn false;\n\n}\n","import { normalizeColorString } from './normalizeColorString';\n\nconst STRING = {\n\tisPrimitive: true,\n\tmatch: v => typeof v === 'string',\n\tfromHexString: normalizeColorString,\n\ttoHexString: normalizeColorString\n};\n\nconst INT = {\n\tisPrimitive: true,\n\tmatch: v => typeof v === 'number',\n\tfromHexString: string => parseInt(string.substring(1), 16),\n\ttoHexString: value => '#' + value.toString(16).padStart(6, 0)\n};\n\nconst ARRAY = {\n\tisPrimitive: false,\n\n\t// The arrow function is here to appease tree shakers like esbuild or webpack.\n\t// See https://esbuild.github.io/api/#tree-shaking\n\tmatch: v => Array.isArray(v),\n\n\tfromHexString(string, target, rgbScale = 1) {\n\n\t\tconst int = INT.fromHexString(string);\n\n\t\ttarget[0] = (int >> 16 & 255) / 255 * rgbScale;\n\t\ttarget[1] = (int >> 8 & 255) / 255 * rgbScale;\n\t\ttarget[2] = (int & 255) / 255 * rgbScale;\n\n\t},\n\ttoHexString([r, g, b], rgbScale = 1) {\n\n\t\trgbScale = 255 / rgbScale;\n\n\t\tconst int = (r * rgbScale) << 16 ^\n\t\t\t(g * rgbScale) << 8 ^\n\t\t\t(b * rgbScale) << 0;\n\n\t\treturn INT.toHexString(int);\n\n\t}\n};\n\nconst OBJECT = {\n\tisPrimitive: false,\n\tmatch: v => Object(v) === v,\n\tfromHexString(string, target, rgbScale = 1) {\n\n\t\tconst int = INT.fromHexString(string);\n\n\t\ttarget.r = (int >> 16 & 255) / 255 * rgbScale;\n\t\ttarget.g = (int >> 8 & 255) / 255 * rgbScale;\n\t\ttarget.b = (int & 255) / 255 * rgbScale;\n\n\t},\n\ttoHexString({ r, g, b }, rgbScale = 1) {\n\n\t\trgbScale = 255 / rgbScale;\n\n\t\tconst int = (r * rgbScale) << 16 ^\n\t\t\t(g * rgbScale) << 8 ^\n\t\t\t(b * rgbScale) << 0;\n\n\t\treturn INT.toHexString(int);\n\n\t}\n};\n\nconst FORMATS = [STRING, INT, ARRAY, OBJECT];\n\nexport function getColorFormat(value) {\n\treturn FORMATS.find(format => format.match(value));\n}\n","export * from \"./getColorFormat\";\nexport * from \"./normalizeColorString\";\n\nexport function toFixedFloat(v: number, fractionDigits: number) {\n\treturn parseFloat(v.toFixed(fractionDigits));\n}\n\nexport function toFixed(v: number, fractionDigits: number) {\n\treturn toFixedFloat(v, fractionDigits).toString();\n}\n\nexport function getPrecision(value: number) {\n\tlet str = value.toString();\n\tlet index = str.indexOf('.');\n\tif (index > 0) {\n\t\treturn str.length - index - 1;\n\t}\n\treturn 0;\n}\n\nexport function hasDecimal(value: number) {\n\treturn value % 1 !== 0;\n}","import { GUI } from \"../GUI\";\nimport { getPrecision, hasDecimal } from \"../utils\";\nimport { Controller } from \"./Controller\";\n\nexport class NumberController extends Controller {\n private _min: number;\n private _max: number;\n private _step: number;\n\n private _stepExplicit: boolean;\n private _hasSlider: boolean;\n private _inputFocused: boolean;\n\n $fill: HTMLElement;\n $input: HTMLInputElement;\n $slider: HTMLElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n min: number,\n max: number,\n step: number\n ) {\n\n super(parent, object, property, 'number');\n\n this._initInput();\n\n this.min(min);\n this.max(max);\n\n const stepExplicit = step !== undefined;\n this.step(stepExplicit ? step : this._getImplicitStep(), stepExplicit);\n }\n\n min(min: number) {\n this._min = min;\n this._onUpdateMinMax();\n return this;\n }\n\n max(max: number) {\n this._max = max;\n this._onUpdateMinMax();\n return this;\n }\n\n step(step: number, explicit: boolean = true) {\n this._step = step;\n this._stepExplicit = explicit;\n return this;\n }\n\n needsUpdateDisplay() {\n if (this.parent._closed) {\n return false;\n }\n let value = this.getValue();\n if (this._listenPrevValue === undefined || (Math.abs(this._listenPrevValue - value) >= this._step)) {\n this._listenPrevValue = value;\n return true;\n }\n return false;\n }\n\n updateDisplay() {\n const value = this._snap(this.getValue());\n if (this._hasSlider) {\n let percent = (value - this._min) / (this._max - this._min);\n percent = Math.max(0, Math.min(percent, 1));\n this.$fill.style.width = percent * 100 + '%';\n }\n if (!this._inputFocused) {\n this.$input.value = \"\" + value;\n }\n return this;\n }\n\n private _initInput() {\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'text');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n // On touch devices only, use input[type=number] to force a numeric keyboard.\n // Ideally we could use one input type everywhere, but [type=number] has quirks\n // on desktop, and [inputmode=decimal] has quirks on iOS.\n // See https://github.com/georgealways/lil-gui/pull/16\n\n const isTouch = window.matchMedia('(pointer: coarse)').matches;\n\n if (isTouch) {\n this.$input.setAttribute('type', 'number');\n this.$input.setAttribute('step', 'any');\n }\n\n this.$widget.appendChild(this.$input);\n\n this.$disable = this.$input;\n\n const onInput = () => {\n let value = parseFloat(this.$input.value);\n if (isNaN(value)) return;\n if (this._stepExplicit) {\n value = this._snap(value);\n }\n this.setValue(this._clamp(value));\n };\n\n // Keys & mouse wheel\n // ---------------------------------------------------------------------\n const increment = delta => {\n const value = parseFloat(this.$input.value);\n if (isNaN(value)) return;\n this._snapClampSetValue(value + delta);\n // Force the input to updateDisplay when it's focused\n this.$input.value = this.getValue();\n };\n\n const onKeyDown = e => {\n // Using `e.key` instead of `e.code` also catches NumpadEnter\n if (e.key === 'Enter') {\n this.$input.blur();\n }\n if (e.code === 'ArrowUp') {\n e.preventDefault();\n increment(this._step * this._arrowKeyMultiplier(e));\n }\n if (e.code === 'ArrowDown') {\n e.preventDefault();\n increment(this._step * this._arrowKeyMultiplier(e) * -1);\n }\n };\n\n const onWheel = e => {\n if (this._inputFocused) {\n e.preventDefault();\n increment(this._step * this._normalizeMouseWheel(e));\n }\n };\n\n // Vertical drag\n // ---------------------------------------------------------------------\n\n let testingForVerticalDrag = false,\n initClientX,\n initClientY,\n prevClientY,\n initValue,\n dragDelta;\n\n // Once the mouse is dragged more than DRAG_THRESH px on any axis, we decide\n // on the user's intent: horizontal means highlight, vertical means drag.\n const DRAG_THRESH = 5;\n\n const onMouseDown = e => {\n\n initClientX = e.clientX;\n initClientY = prevClientY = e.clientY;\n testingForVerticalDrag = true;\n\n initValue = this.getValue();\n dragDelta = 0;\n\n window.addEventListener('mousemove', onMouseMove);\n window.addEventListener('mouseup', onMouseUp);\n\n };\n\n const onMouseMove = e => {\n if (testingForVerticalDrag) {\n const dx = e.clientX - initClientX;\n const dy = e.clientY - initClientY;\n if (Math.abs(dy) > DRAG_THRESH) {\n e.preventDefault();\n this.$input.blur();\n testingForVerticalDrag = false;\n this._setDraggingStyle(true, 'vertical');\n } else if (Math.abs(dx) > DRAG_THRESH) {\n onMouseUp();\n }\n }\n\n // This isn't an else so that the first move counts towards dragDelta\n if (!testingForVerticalDrag) {\n const dy = e.clientY - prevClientY;\n dragDelta -= dy * this._step * this._arrowKeyMultiplier(e);\n\n // Clamp dragDelta so we don't have 'dead space' after dragging past bounds.\n // We're okay with the fact that bounds can be undefined here.\n if (initValue + dragDelta > this._max) {\n dragDelta = this._max - initValue;\n } else if (initValue + dragDelta < this._min) {\n dragDelta = this._min - initValue;\n }\n\n this._snapClampSetValue(initValue + dragDelta);\n\n }\n\n prevClientY = e.clientY;\n\n };\n\n const onMouseUp = () => {\n this._setDraggingStyle(false, 'vertical');\n this._callOnFinishChange();\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('mouseup', onMouseUp);\n };\n\n // Focus state & onFinishChange\n // ---------------------------------------------------------------------\n\n const onFocus = () => {\n this._inputFocused = true;\n };\n\n const onBlur = () => {\n this._inputFocused = false;\n this.updateDisplay();\n this._callOnFinishChange();\n };\n\n this.$input.addEventListener('input', onInput);\n this.$input.addEventListener('keydown', onKeyDown);\n this.$input.addEventListener('wheel', onWheel, { passive: false });\n this.$input.addEventListener('mousedown', onMouseDown);\n this.$input.addEventListener('focus', onFocus);\n this.$input.addEventListener('blur', onBlur);\n\n }\n\n private _initSlider() {\n this._hasSlider = true;\n\n // Build DOM\n // ---------------------------------------------------------------------\n\n this.$slider = document.createElement('div');\n this.$slider.classList.add('slider');\n\n this.$fill = document.createElement('div');\n this.$fill.classList.add('fill');\n\n this.$slider.appendChild(this.$fill);\n this.$widget.insertBefore(this.$slider, this.$input);\n\n this.domElement.classList.add('hasSlider');\n\n // Map clientX to value\n // ---------------------------------------------------------------------\n\n const map = (v, a, b, c, d) => {\n return (v - a) / (b - a) * (d - c) + c;\n };\n\n const setValueFromX = clientX => {\n const rect = this.$slider.getBoundingClientRect();\n let value = map(clientX, rect.left, rect.right, this._min, this._max);\n this._snapClampSetValue(value);\n };\n\n // Mouse drag\n // ---------------------------------------------------------------------\n\n const mouseDown = e => {\n this._setDraggingStyle(true);\n setValueFromX(e.clientX);\n window.addEventListener('mousemove', mouseMove);\n window.addEventListener('mouseup', mouseUp);\n };\n\n const mouseMove = e => {\n setValueFromX(e.clientX);\n };\n\n const mouseUp = () => {\n this._callOnFinishChange();\n this._setDraggingStyle(false);\n window.removeEventListener('mousemove', mouseMove);\n window.removeEventListener('mouseup', mouseUp);\n };\n\n // Touch drag\n // ---------------------------------------------------------------------\n\n let testingForScroll = false, prevClientX, prevClientY;\n\n const beginTouchDrag = e => {\n e.preventDefault();\n this._setDraggingStyle(true);\n setValueFromX(e.touches[0].clientX);\n testingForScroll = false;\n };\n\n const onTouchStart = e => {\n\n if (e.touches.length > 1) return;\n\n // If we're in a scrollable container, we should wait for the first\n // touchmove to see if the user is trying to slide or scroll.\n if (this._hasScrollBar) {\n\n prevClientX = e.touches[0].clientX;\n prevClientY = e.touches[0].clientY;\n testingForScroll = true;\n\n } else {\n\n // Otherwise, we can set the value straight away on touchstart.\n beginTouchDrag(e);\n\n }\n\n window.addEventListener('touchmove', onTouchMove, { passive: false });\n window.addEventListener('touchend', onTouchEnd);\n\n };\n\n const onTouchMove = e => {\n\n if (testingForScroll) {\n\n const dx = e.touches[0].clientX - prevClientX;\n const dy = e.touches[0].clientY - prevClientY;\n\n if (Math.abs(dx) > Math.abs(dy)) {\n\n // We moved horizontally, set the value and stop checking.\n beginTouchDrag(e);\n\n } else {\n\n // This was, in fact, an attempt to scroll. Abort.\n window.removeEventListener('touchmove', onTouchMove);\n window.removeEventListener('touchend', onTouchEnd);\n\n }\n\n } else {\n\n e.preventDefault();\n setValueFromX(e.touches[0].clientX);\n\n }\n\n };\n\n const onTouchEnd = () => {\n this._callOnFinishChange();\n this._setDraggingStyle(false);\n window.removeEventListener('touchmove', onTouchMove);\n window.removeEventListener('touchend', onTouchEnd);\n };\n\n // Mouse wheel\n // ---------------------------------------------------------------------\n\n // We have to use a debounced function to call onFinishChange because\n // there's no way to tell when the user is \"done\" mouse-wheeling.\n const callOnFinishChange = this._callOnFinishChange.bind(this);\n const WHEEL_DEBOUNCE_TIME = 400;\n let wheelFinishChangeTimeout;\n\n const onWheel = e => {\n\n // ignore vertical wheels if there's a scrollbar\n const isVertical = Math.abs(e.deltaX) < Math.abs(e.deltaY);\n if (isVertical && this._hasScrollBar) return;\n\n e.preventDefault();\n\n // set value\n const delta = this._normalizeMouseWheel(e) * this._step;\n this._snapClampSetValue(this.getValue() + delta);\n\n // force the input to updateDisplay when it's focused\n this.$input.value = this.getValue();\n\n // debounce onFinishChange\n clearTimeout(wheelFinishChangeTimeout);\n wheelFinishChangeTimeout = setTimeout(callOnFinishChange, WHEEL_DEBOUNCE_TIME);\n\n };\n\n this.$slider.addEventListener('mousedown', mouseDown);\n this.$slider.addEventListener('touchstart', onTouchStart, { passive: false });\n this.$slider.addEventListener('wheel', onWheel, { passive: false });\n\n }\n\n private _setDraggingStyle(active, axis = 'horizontal') {\n if (this.$slider) {\n this.$slider.classList.toggle('active', active);\n }\n document.body.classList.toggle('lil-gui-dragging', active);\n document.body.classList.toggle(`lil-gui-${axis}`, active);\n }\n\n private _getImplicitStep() {\n const value = this.getValue();\n if (this._hasMin && this._hasMax) {\n return (this._max - this._min) / 100;\n }\n else if (hasDecimal(value)) {\n return Math.pow(0.1, getPrecision(value));\n }\n return 0.1;\n }\n\n private _onUpdateMinMax() {\n if (!this._hasSlider && this._hasMin && this._hasMax) {\n // If this is the first time we're hearing about min and max\n // and we haven't explicitly stated what our step is, let's\n // update that too.\n if (!this._stepExplicit) {\n this.step(this._getImplicitStep(), false);\n }\n\n this._initSlider();\n this.updateDisplay();\n }\n }\n\n private _normalizeMouseWheel(e) {\n let { deltaX, deltaY } = e;\n // Safari and Chrome report weird non-integral values for a notched wheel,\n // but still expose actual lines scrolled via wheelDelta. Notched wheels\n // should behave the same way as arrow keys.\n if (Math.floor(e.deltaY) !== e.deltaY && e.wheelDelta) {\n deltaX = 0;\n deltaY = -e.wheelDelta / 120;\n deltaY *= this._stepExplicit ? 1 : 10;\n }\n const wheel = deltaX + -deltaY;\n return wheel;\n\n }\n\n private _arrowKeyMultiplier(e) {\n let mult = this._stepExplicit ? 1 : 10;\n if (e.shiftKey) {\n mult *= 10;\n } else if (e.altKey) {\n mult /= 10;\n }\n return mult;\n\n }\n\n private _snap(value) {\n // This would be the logical way to do things, but floating point errors.\n // return Math.round( value / this._step ) * this._step;\n\n // Using inverse step solves a lot of them, but not all\n // const inverseStep = 1 / this._step;\n // return Math.round( value * inverseStep ) / inverseStep;\n\n // Not happy about this, but haven't seen it break.\n const r = Math.round(value / this._step) * this._step;\n return parseFloat(r.toPrecision(15));\n }\n\n private _clamp(value) {\n // either condition is false if min or max is undefined\n if (value < this._min) value = this._min;\n if (value > this._max) value = this._max;\n return value;\n }\n\n private _snapClampSetValue(value) {\n this.setValue(this._clamp(this._snap(value)));\n }\n\n private get _hasScrollBar() {\n const root = this.parent.root.$children;\n return root.scrollHeight > root.clientHeight;\n }\n\n private get _hasMin() {\n return this._min !== undefined;\n }\n\n private get _hasMax() {\n return this._max !== undefined;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class BooleanController extends Controller {\n $input: HTMLInputElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, 'boolean', 'label');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'checkbox');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$widget.appendChild(this.$input);\n this.$input.addEventListener('change', () => {\n this.setValue(this.$input.checked);\n this._callOnFinishChange();\n });\n this.$disable = this.$input;\n }\n\n updateDisplay() {\n this.$input.checked = this.getValue();\n return this;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class StringController extends Controller {\n $input: HTMLInputElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n\n super(parent, object, property, 'string');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'text');\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$input.addEventListener('input', () => {\n this.setValue(this.$input.value);\n });\n this.$input.addEventListener('keydown', e => {\n if (e.code === 'Enter') {\n this.$input.blur();\n }\n });\n this.$input.addEventListener('blur', () => {\n this._callOnFinishChange();\n });\n this.$widget.appendChild(this.$input);\n this.$disable = this.$input;\n }\n\n updateDisplay() {\n this.$input.value = this.getValue();\n return this;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class FunctionController extends Controller {\n $button: HTMLButtonElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, 'function');\n\n // Buttons are the only case where widget contains name\n this.$button = document.createElement('button');\n this.$button.appendChild(this.$name);\n this.$widget.appendChild(this.$button);\n\n this.$button.addEventListener('click', e => {\n e.preventDefault();\n this.getValue().call(this.object);\n this._callOnChange();\n });\n\n // enables :active pseudo class on mobile\n this.$button.addEventListener('touchstart', () => { }, { passive: true });\n this.$disable = this.$button;\n }\n\n}","import { GUI } from \"../GUI\";\nimport { getColorFormat, normalizeColorString } from \"../utils\";\nimport { Controller } from \"./Controller\";\n\nexport class ColorController extends Controller {\n $input: HTMLInputElement;\n $text: HTMLInputElement;\n $display: HTMLDivElement;\n $alpha: HTMLDivElement;\n\n private _textFocused: boolean = false;\n private _initialValueHexString: string = \"\";\n private _rgbScale: number = 1;\n private _format: any;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n rgbScale: number\n ) {\n super(parent, object, property, 'color');\n\n this.$input = document.createElement('input');\n this.$input.setAttribute('type', 'color');\n this.$input.setAttribute('tabindex', \"-1\");\n this.$input.setAttribute('aria-labelledby', this.$name.id);\n\n this.$text = document.createElement('input');\n this.$text.setAttribute('type', 'text');\n this.$text.setAttribute('spellcheck', 'false');\n this.$text.setAttribute('aria-labelledby', this.$name.id);\n\n this.$display = document.createElement('div');\n this.$display.classList.add('display');\n this.$display.appendChild(this.$input);\n\n this.$widget.appendChild(this.$display);\n this.$widget.appendChild(this.$text);\n\n this._format = getColorFormat(this.initialValue);\n this._rgbScale = rgbScale;\n\n this._initialValueHexString = this.save();\n this._textFocused = false;\n\n this.$input.addEventListener('input', () => {\n this._setValueFromHexString(this.$input.value);\n });\n\n this.$input.addEventListener('blur', () => {\n this._callOnFinishChange();\n });\n\n this.$text.addEventListener('input', () => {\n const tryParse = normalizeColorString(this.$text.value);\n if (tryParse) {\n this._setValueFromHexString(tryParse);\n }\n });\n\n this.$text.addEventListener('focus', () => {\n this._textFocused = true;\n this.$text.select();\n });\n\n this.$text.addEventListener('blur', () => {\n this._textFocused = false;\n this.updateDisplay();\n this._callOnFinishChange();\n });\n\n this.$disable = this.$text;\n this.listen();\n }\n\n reset() {\n this._setValueFromHexString(this._initialValueHexString);\n return this;\n }\n\n private _setValueFromHexString(value: string) {\n if (this._format.isPrimitive) {\n const newValue = this._format.fromHexString(value);\n this.setValue(newValue);\n } else {\n this._format.fromHexString(value, this.getValue(), this._rgbScale);\n this.setValue(this.getValue());\n }\n }\n\n save() {\n return this._format.toHexString(this.getValue(), this._rgbScale);\n }\n\n load(value: string) {\n this._setValueFromHexString(value);\n this._callOnFinishChange();\n return this;\n }\n\n updateDisplay() {\n this.$input.value = this._format.toHexString(this.getValue(), this._rgbScale);\n if (!this._textFocused) {\n this.$text.value = this.$input.value.substring(1);\n }\n this.$display.style.backgroundColor = this.$input.value;\n return this;\n }\n\n}\n","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class ImageController extends Controller {\n static _context = null;\n static _imageMap = new WeakMap();\n static async toDataURL(img: HTMLImageElement | ImageBitmap & { data?: any }) {\n if (img instanceof HTMLImageElement) {\n return img.src;\n }\n else {\n if (img) {\n let url = ImageController._imageMap.get(img);\n if (url) return url;\n\n const w = Math.min(img.width, 256);\n const h = Math.min(img.height, 256);\n\n if (ImageController._context == null) {\n ImageController._context = document.createElement('canvas').getContext(\"2d\");\n }\n ImageController._context.canvas.width = w;\n ImageController._context.canvas.height = h;\n\n if (img.data) {\n let imageData = ImageController._context.createImageData(img.width, img.height);\n imageData.data.set(img.data);\n img = await createImageBitmap(imageData);\n }\n\n if (img instanceof ImageBitmap) {\n ImageController._context.drawImage(img, 0, 0, img.width, img.height, 0, 0, w, h);\n ImageController._imageMap.set(img, (url = ImageController._context.canvas.toDataURL()));\n return url;\n }\n }\n\n return \"\";\n }\n }\n\n\n $img: HTMLImageElement;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, \"image\");\n this.$img = document.createElement(\"img\");\n this.$widget.appendChild(this.$img);\n this.updateDisplay();\n }\n\n updateDisplay() {\n ImageController.toDataURL(this.getValue()).then(url => this.$img.src = url);\n return this;\n }\n\n}\n","export class UIElement<T extends HTMLElement = HTMLElement> {\n\tpublic dom: T & { disabled?: boolean };\n\n\tconstructor(dom: T) {\n\t\tthis.dom = dom;\n\t}\n\n\tpublic add(...args: HTMLElement[]) {\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\tconst argument = args[i];\n\t\t\tif (argument instanceof UIElement) {\n\t\t\t\tthis.dom.appendChild(argument.dom);\n\t\t\t} else {\n\t\t\t\tconsole.error('UIElement:', argument, 'is not an instance of UIElement.');\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic remove(...args: HTMLElement[]) {\n\t\tfor (let i = 0; i < args.length; i++) {\n\t\t\tconst argument = args[i];\n\t\t\tif (argument instanceof UIElement) {\n\t\t\t\tthis.dom.removeChild(argument.dom);\n\t\t\t} else {\n\t\t\t\tconsole.error('UIElement:', argument, 'is not an instance of UIElement.');\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic clear() {\n\t\twhile (this.dom.children.length) {\n\t\t\tthis.dom.removeChild(this.dom.lastChild);\n\t\t}\n\t}\n\n\tpublic setId(id: string) {\n\t\tthis.dom.id = id;\n\t\treturn this;\n\n\t}\n\n\tpublic getId() {\n\t\treturn this.dom.id;\n\n\t}\n\n\tpublic setClass(name: string) {\n\t\tthis.dom.className = name;\n\t\treturn this;\n\t}\n\n\tpublic addClass(name) {\n\t\tthis.dom.classList.add(name);\n\t\treturn this;\n\t}\n\n\tpublic removeClass(name) {\n\t\tthis.dom.classList.remove(name);\n\t\treturn this;\n\t}\n\n\tpublic setStyle(style: string, array: any[]) {\n\t\tfor (let i = 0; i < array.length; i++) {\n\t\t\tthis.dom.style[style] = array[i];\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic setDisabled(value: boolean) {\n\t\tthis.dom.disabled = value;\n\t\treturn this;\n\n\t}\n\n\tpublic setTextContent(value: string) {\n\t\tthis.dom.textContent = value;\n\t\treturn this;\n\n\t}\n\n\tpublic getIndexOfChild(element: UIElement) {\n\t\treturn Array.prototype.indexOf.call(this.dom.children, element.dom);\n\t}\n\n}\n","import { getPrecision, hasDecimal } from '../utils';\nimport { UIElement } from './UIElement';\n\nexport class UINumber extends UIElement<HTMLInputElement> {\n\tpublic value: number = 0;\n\tpublic min: number = -Infinity;\n\tpublic max: number = Infinity;\n\tpublic step: number = 1;\n\tpublic nudge: number = 1;\n\tpublic unit: string = \"\";\n\n\tprivate _onChangeCallback: Function;\n\n\tconstructor(\n\t\tvalue: number,\n\t\tmin: number,\n\t\tmax: number,\n\t\tstep: number\n\t) {\n\t\tsuper(document.createElement('input'));\n\n\t\tthis.dom.style.cursor = 'ns-resize';\n\t\tthis.dom.value = '0.00';\n\n\t\tthis.min = min ?? this.min;\n\t\tthis.max = max ?? this.max;\n\t\tthis.step = step ?? this._getImplicitStep(value);\n\t\tthis.setValue(value);\n\n\t\tconst scope = this;\n\n\t\tconst changeEvent = document.createEvent('HTMLEvents');\n\t\tchangeEvent.initEvent('change', true, true);\n\n\t\tlet distance = 0;\n\t\tlet onMouseDownValue = 0;\n\n\t\tconst pointer = { x: 0, y: 0 };\n\t\tconst prevPointer = { x: 0, y: 0 };\n\n\t\tfunction onMouseDown(event: MouseEvent) {\n\t\t\tevent.preventDefault();\n\t\t\tdistance = 0;\n\t\t\tonMouseDownValue = scope.value;\n\t\t\tprevPointer.x = event.clientX;\n\t\t\tprevPointer.y = event.clientY;\n\n\t\t\tdocument.addEventListener('mousemove', onMouseMove, false);\n\t\t\tdocument.addEventListener('mouseup', onMouseUp, false);\n\t\t}\n\n\t\tfunction onMouseMove(event: MouseEvent) {\n\t\t\tconst currentValue = scope.value;\n\n\t\t\tpointer.x = event.clientX;\n\t\t\tpointer.y = event.clientY;\n\n\t\t\tdistance += (pointer.x - prevPointer.x) - (pointer.y - prevPointer.y);\n\n\t\t\tlet value = onMouseDownValue + (distance * 10 / (event.shiftKey ? 5 : 50)) * scope.step;\n\t\t\tvalue = Math.min(scope.max, Math.max(scope.min, value));\n\n\t\t\tif (currentValue !== value) {\n\n\t\t\t\tscope.setValue(value);\n\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\n\t\t\t}\n\n\t\t\tprevPointer.x = event.clientX;\n\t\t\tprevPointer.y = event.clientY;\n\t\t}\n\n\t\tfunction onMouseUp() {\n\t\t\tdocument.removeEventListener('mousemove', onMouseMove, false);\n\t\t\tdocument.removeEventListener('mouseup', onMouseUp, false);\n\n\t\t\tif (Math.abs(distance) < 2) {\n\t\t\t\tscope.dom.focus();\n\t\t\t\tscope.dom.select();\n\t\t\t}\n\t\t}\n\n\t\tfunction onTouchStart(event: TouchEvent) {\n\t\t\tif (event.touches.length === 1) {\n\t\t\t\tdistance = 0;\n\t\t\t\tonMouseDownValue = scope.value;\n\n\t\t\t\tprevPointer.x = event.touches[0].pageX;\n\t\t\t\tprevPointer.y = event.touches[0].pageY;\n\n\t\t\t\tdocument.addEventListener('touchmove', onTouchMove, false);\n\t\t\t\tdocument.addEventListener('touchend', onTouchEnd, false);\n\t\t\t}\n\t\t}\n\n\t\tfunction onTouchMove(event: TouchEvent) {\n\t\t\tconst currentValue = scope.value;\n\n\t\t\tpointer.x = event.touches[0].pageX;\n\t\t\tpointer.y = event.touches[0].pageY;\n\n\t\t\tdistance += (pointer.x - prevPointer.x) - (pointer.y - prevPointer.y);\n\n\t\t\tlet value = onMouseDownValue + (distance / (event.shiftKey ? 5 : 50)) * scope.step;\n\t\t\tvalue = Math.min(scope.max, Math.max(scope.min, value));\n\n\t\t\tif (currentValue !== value) {\n\t\t\t\tscope.setValue(value);\n\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t}\n\n\t\t\tprevPointer.x = event.touches[0].pageX;\n\t\t\tprevPointer.y = event.touches[0].pageY;\n\t\t}\n\n\t\tfunction onTouchEnd(event: TouchEvent) {\n\t\t\tif (event.touches.length === 0) {\n\t\t\t\tdocument.removeEventListener('touchmove', onTouchMove, false);\n\t\t\t\tdocument.removeEventListener('touchend', onTouchEnd, false);\n\t\t\t}\n\t\t}\n\n\t\tfunction onChange() {\n\t\t\tscope.setValue(parseFloat(scope.dom.value));\n\t\t}\n\n\t\tfunction onFocus() {\n\t\t\tscope.dom.style.backgroundColor = '';\n\t\t\tscope.dom.style.cursor = '';\n\t\t}\n\n\t\tfunction onBlur() {\n\t\t\t// scope.dom.style.backgroundColor = 'transparent';\n\t\t\tscope.dom.style.cursor = 'ns-resize';\n\t\t}\n\n\t\tfunction onKeyDown(event: KeyboardEvent) {\n\t\t\tevent.stopPropagation();\n\n\t\t\tswitch (event.keyCode) {\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tscope.dom.blur();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 38: // up\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tscope.setValue(scope.getValue() + scope.step);\n\t\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 40: // down\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tscope.setValue(scope.getValue() - scope.step);\n\t\t\t\t\tscope.dom.dispatchEvent(changeEvent);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tonBlur();\n\n\t\tthis.dom.addEventListener('keydown', onKeyDown, false);\n\t\tthis.dom.addEventListener('mousedown', onMouseDown, false);\n\t\tthis.dom.addEventListener('touchstart', onTouchStart, { passive: true });\n\t\tthis.dom.addEventListener('change', onChange, false);\n\t\tthis.dom.addEventListener('focus', onFocus, false);\n\t\tthis.dom.addEventListener('blur', onBlur, false);\n\t}\n\n\tpublic equals(v: number) {\n\t\treturn Math.abs(this.value - v) <= this.step;\n\t}\n\n\tpublic getValue() {\n\t\treturn this.value;\n\t}\n\n\tpublic setValue(value: any) {\n\t\tif (value !== undefined) {\n\t\t\tif (value < this.min) value = this.min;\n\t\t\tif (value > this.max) value = this.max;\n\t\t\tthis.value = value;\n\t\t\tthis.updateDisplay();\n\t\t\tthis._onChangeCallback && this._onChangeCallback(value);\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic updateDisplay() {\n\t\tlet value = this._snap(this.getValue());\n\t\tthis.dom.value = \"\" + value;\n\t\tif (this.unit !== '') this.dom.value += ' ' + this.unit;\n\t}\n\n\tprivate _getImplicitStep(value: number) {\n\t\tif (this.max !== Infinity && this.min !== -Infinity) {\n\t\t\treturn (this.max - this.min) / 100;\n\t\t}\n\t\telse if (hasDecimal(value)) {\n\t\t\treturn 1 / Math.pow(10, getPrecision(value));\n\t\t}\n\t\treturn 0.1;\n\t}\n\n\tprivate _snap(value: number) {\n\t\tconst r = Math.round(value / this.step) * this.step;\n\t\treturn parseFloat(r.toPrecision(15));\n\t}\n\n\tpublic onChange(callback: Function) {\n\t\tthis._onChangeCallback = callback;\n\t\treturn this;\n\t}\n\n\tpublic setUnit(unit: string) {\n\t\tthis.unit = unit;\n\t\treturn this;\n\t}\n\n}\n","import { GUI } from \"../GUI\";\nimport { UINumber } from \"../common/UINumber\";\nimport { Controller } from \"./Controller\";\n\nexport class VectorController extends Controller {\n xElement: UINumber;\n yElement: UINumber;\n zElement: UINumber;\n wElement: UINumber;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n min: number,\n max: number,\n step: number\n ) {\n super(parent, object, property, 'vector');\n\n const value = this.getValue();\n this.initialValue = value.clone && value.clone() || Object.assign({}, value);\n if (this.initialValue.x !== undefined) this.xElement = this.createElement(true, this.initialValue.x, min, max, step, v => { value.x = v; this._callOnChange() });\n if (this.initialValue.y !== undefined) this.yElement = this.createElement(true, this.initialValue.y, min, max, step, v => { value.y = v; this._callOnChange() });\n if (this.initialValue.z !== undefined) this.zElement = this.createElement(true, this.initialValue.z, min, max, step, v => { value.z = v; this._callOnChange() });\n if (this.initialValue.w !== undefined) this.wElement = this.createElement(false, this.initialValue.w, min, max, step, v => { value.w = v; this._callOnChange() });\n }\n\n createElement(\n fill: boolean,\n value: number,\n min: number,\n max: number,\n step: number,\n onChange: Function\n ) {\n let uiNumber = new UINumber(value, min, max, step);\n uiNumber.dom.setAttribute('type', 'number');\n uiNumber.dom.setAttribute('aria-labelledby', this.$name.id);\n uiNumber.onChange(onChange);\n this.$widget.appendChild(uiNumber.dom);\n if (fill) {\n let $fill = document.createElement('div');\n $fill.classList.add('fill');\n this.$widget.appendChild($fill);\n }\n return uiNumber;\n }\n\n setValue(value: { x?: number, y?: number, z?: number, w?: number }) {\n let target = this.getValue();\n if (value.x !== undefined) target.x = value.x;\n if (value.y !== undefined) target.y = value.y;\n if (value.z !== undefined) target.z = value.z;\n if (value.w !== undefined) target.w = value.w;\n this._callOnChange();\n return this;\n }\n\n needsUpdateDisplay() {\n return !this.parent._closed;\n }\n\n updateDisplay() {\n let value = this.getValue();\n if (value.x !== undefined && this.xElement && !this.xElement.equals(value.x)) {\n this.xElement.value = value.x;\n this.xElement.updateDisplay();\n }\n if (value.y !== undefined && this.yElement && !this.yElement.equals(value.y)) {\n this.yElement.value = value.y;\n this.yElement.updateDisplay();\n }\n if (value.z !== undefined && this.zElement && !this.zElement.equals(value.z)) {\n this.zElement.value = value.z;\n this.zElement.updateDisplay();\n }\n if (value.w !== undefined && this.wElement && !this.wElement.equals(value.w)) {\n this.wElement.value = value.w;\n this.wElement.updateDisplay();\n }\n return this;\n }\n}\n","import { IAnimationCurve } from \"./IAnimationCurve\";\nimport { ICurvePoint } from \"./ICurvePoint\";\n\nfunction clamp(v: number, minv: number, maxv: number) {\n return Math.max(Math.min(v, maxv), minv);\n}\n\nfunction hitTest(x: number, y: number, cx: number, cy: number, hw: number, hh: number) {\n if (x < cx - hw || x > cx + hw || y < cy - hh || y > cy + hh) {\n return false;\n }\n return true;\n}\n\nconst theme = {\n BACKGROUND: \"#545454\",\n GRID: \"#646464\",\n LINE: \"#000000\",\n COVER: \"#19191980\",\n POINT: \"#878787\",\n SELECTED: \"#ffffff\",\n}\n\nclass CurvePanel {\n private _canvas: HTMLCanvasElement;\n private _context: CanvasRenderingContext2D;\n private _xRes: number = 1;\n private _yRes: number = 1;\n private _cx: number = 0;\n private _cy: number = 0;\n private _ra: number = 2;\n private _fixed: boolean = false;\n private _autoResize: boolean = true;\n\n private _mouse: { x: number, y: number } = { x: 0, y: 0 };\n private _offsetXRef: number = 0;\n private _offsetYRef: number = 0;\n private _cxRef: number = 0;\n private _cyRef: number = 0;\n private _pxRef: number = 0;\n private _pyRef: number = 0;\n private _button: number = -1;\n\n private _curve: IAnimationCurve = null;\n private _selectedPoint: ICurvePoint = null;\n private _tryAddingPoint: boolean = false;\n private _trySelectingPoint: boolean = false;\n private _onCurveChanged?: (curve: IAnimationCurve) => void;\n private _onPointChanged?: (point: ICurvePoint) => void;\n private _onPointRemoved?: (point: ICurvePoint) => void;\n private _onPointAdded?: (point: ICurvePoint) => void;\n\n get dom() {\n return this._canvas;\n }\n\n get curve() {\n return this._curve;\n }\n\n constructor() {\n this._canvas = document.createElement(\"canvas\");\n this._context = this._canvas.getContext(\"2d\");\n\n const canvas = this._canvas;\n canvas.addEventListener(\"mousedown\", e => this._onMouseDown(e));\n canvas.addEventListener(\"mouseup\", e => this._onMouseUp(e));\n canvas.addEventListener(\"mouseleave\", e => this._onMouseUp(e));\n canvas.addEventListener(\"mousemove\", e => this._onMouseMove(e));\n canvas.addEventListener(\"wheel\", e => this._onWheel(e as any));\n canvas.addEventListener(\"dblclick\", e => this._onDblClick(e));\n }\n\n resize(width?: number, height?: number) {\n const canvas = this._canvas;\n const DPR = window.devicePixelRatio || 1;\n const xRes = (width ?? canvas.offsetWidth) * DPR;\n const yRes = (height ?? canvas.offsetHeight) * DPR;\n if (Math.hypot(xRes - this._xRes, yRes - this._yRes) > 0.001) {\n this._xRes = canvas.width = xRes;\n this._yRes = canvas.height = yRes;\n }\n }\n\n onCurveChanged(callback: (curve: IAnimationCurve) => void) {\n this._onCurveChanged = callback;\n return this;\n }\n\n onPointChanged(callback: (point: ICurvePoint) => void) {\n this._onPointChanged = callback;\n return this;\n }\n\n onPointRemoved(callback: (point: ICurvePoint) => void) {\n this._onPointRemoved = callback;\n return this;\n }\n\n onPointAdded(callback: (point: ICurvePoint) => void) {\n this._onPointAdded = callback;\n return this;\n }\n\n private _onDblClick(e: MouseEvent) {\n e.preventDefault();\n if (e.button === 0) {\n this._tryAddingPoint = true;\n }\n }\n\n private _onMouseDown(e: MouseEvent) {\n e.preventDefault();\n if (e.button == 0) {\n this._cxRef = this._cx;\n this._cyRef = this._cy;\n this._offsetXRef = e.offsetX;\n this._offsetYRef = e.offsetY;\n this._trySelectingPoint = true;\n }\n this._button = e.button;\n this._mouse.x = e.offsetX;\n this._mouse.y = e.offsetY;\n this._selectedPoint = null;\n }\n\n _onMouseUp(e: MouseEvent) {\n e.preventDefault();\n this._button = -1;\n }\n\n private _onMouseMove(e: MouseEvent) {\n e.preventDefault();\n const cxRes = this._canvas.offsetWidth;\n const cyRes = this._canvas.offsetHeight;\n if (this._button == 0) {\n if (this._selectedPoint) {\n const rx = this._ra;\n const ry = this._fixed ? this._ra * cyRes / cxRes : this._ra;\n const x = this._pxRef + (e.offsetX - this._offsetXRef) / cxRes * rx / 2;\n const y = this._pyRef - (e.offsetY - this._offsetYRef) / cyRes * ry / 2;\n this.setPointPos(x, y);\n }\n else {\n this._cx = this._cxRef - (e.offsetX - this._offsetXRef) * 2 * this._ra / cxRes;\n this._cy = this._cyRef + (e.offsetY - this._offsetYRef) * 2 * this._ra / cyRes;\n }\n }\n this._mouse.x = e.offsetX;\n this._mouse.y = e.offsetY;\n }\n\n private _onWheel(e: WheelEvent & { wheelDelta: number }) {\n e.preventDefault();\n const sfactor = 1.1;\n this._ra *= (e.deltaY < 0 || e.wheelDelta > 0) ? 1.0 / sfactor : sfactor;\n this._ra = clamp(this._ra, 1, 2);\n }\n\n render() {\n if (this._autoResize) {\n this.resize();\n }\n\n const rx = this._ra;\n const ry = this._fixed ? this._ra * this._yRes / this._xRes : this._ra;\n\n const a = 2 - this._ra;\n this._cx = clamp(this._cx, -a, a);\n this._cy = clamp(this._cy, -a, a);\n\n const ctx = this._context;\n ctx.setTransform(1, 0.0, 0.0, 1, 0.5, 0.5);\n ctx.fillStyle = theme.BACKGROUND;\n ctx.fillRect(0, 0, this._xRes, this._yRes);\n\n this._drawGrid(ctx, theme.GRID, rx, ry);\n // this._drawAxis(ctx, theme.GRID, rx, ry);\n this._drawCurve(ctx, theme.LINE, rx, ry);\n }\n\n private _drawGrid(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n const iax = Math.floor(this._cx - rx);\n const ibx = Math.floor(this._cx + rx);\n const iay = Math.floor(this._cy - ry);\n const iby = Math.floor(this._cy + ry);\n\n ctx.lineWidth = 2.0;\n ctx.strokeStyle = color;\n ctx.beginPath();\n for (let i = iax; i <= ibx; i++) {\n let ix = this._xRes * (0.5 + (i - this._cx) / (2 * rx));\n ctx.moveTo(ix, this._yRes);\n ctx.lineTo(ix, 0);\n }\n for (let i = iay; i <= iby; i++) {\n let iy = this._yRes * (0.5 - (i - this._cy) / (2 * ry));\n ctx.moveTo(this._xRes, iy);\n ctx.lineTo(0, iy);\n }\n ctx.stroke();\n }\n\n private _drawAxis(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n const xPos = this._xRes * (0.5 - this._cx / (2.0 * rx));\n const yPos = this._yRes * (0.5 + this._cy / (2.0 * ry));\n ctx.strokeStyle = color;\n ctx.lineWidth = 4;\n ctx.beginPath();\n ctx.moveTo(xPos, 0); ctx.lineTo(xPos, this._yRes);\n ctx.moveTo(0, yPos); ctx.lineTo(this._xRes, yPos);\n ctx.stroke();\n }\n\n private _drawCurve(\n ctx: CanvasRenderingContext2D,\n color: string,\n rx: number, ry: number,\n ) {\n if (!this._curve) return;\n\n const ax = 2 / rx; //缩放\n const ay = 2 / ry;\n const bx = (1 - ax) / 2; //偏移,保持居中\n const by = (1 - ay) / 2;\n const cx = this._cx / 4; //缩小4倍至单位1\n const cy = this._cy / 4;\n\n const SAMPLES = Math.min(100, this._xRes);\n const STEP = 1 / (SAMPLES - 1);\n const point = this._curve.createCurvePoint();\n\n const DPR = window.devicePixelRatio || 1;\n const mx = this._mouse.x * DPR;\n const my = this._mouse.y * DPR;\n\n let hitCurve = null;\n let hitPoint = null;\n let isFirstPoint = true;\n\n //配置参数\n ctx.lineWidth = 2;\n ctx.strokeStyle = color;\n ctx.fillStyle = color;\n\n //绘制曲线\n ctx.beginPath();\n for (let i = 0; i < SAMPLES; i++) {\n let p = this._curve.getPoint(i * STEP, point);\n let x = this._xRes * ((p.x - cx) * ax + bx);\n let y = this._yRes * (1 + (cy - p.y) * ay - by);\n\n if (hitCurve === null && hitTest(mx, my, x, y, 15, 15)) {\n hitCurve = p;\n }\n\n if (isFirstPoint) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n isFirstPoint = false;\n }\n ctx.stroke();\n ctx.lineTo(this._xRes, this._yRes);\n ctx.closePath();\n ctx.fillStyle = theme.COVER;\n ctx.fill();\n\n //绘制控制点\n const points = this._curve.points;\n for (let i = 1; i < points.length - 1; i++) {\n let p = points[i];\n let x = this._xRes * ((p.x - cx) * ax + bx);\n let y = this._yRes * (1 + (cy - p.y) * ay - by);\n\n if (hitPoint === null && hitTest(mx, my, x, y, 20, 20)) {\n hitPoint = p;\n }\n\n ctx.fillStyle = p === hitPoint || p === this._selectedPoint ? theme.SELECTED : theme.POINT;\n ctx.fillRect(x - 2.5, y - 2.5, 5, 5);\n }\n\n //状态检查\n if (this._tryAddingPoint && hitPoint) {\n this._tryAddingPoint = false;\n points.splice(points.indexOf(hitPoint), 1);\n this._onPointRemoved && this._onPointRemoved(hitPoint);\n }\n if (this._tryAddingPoint && hitCurve) {\n this._tryAddingPoint = false;\n let px = (mx / this._xRes - bx) / ax + cx;\n let py = cy - (my / this._yRes + by - 1) / ay;\n let p = this._curve.createCurvePoint(px, py);\n points.push(p);\n points.sort((a, b) => a.x - b.x);\n this._onPointAdded && this._onPointAdded(p);\n }\n if (this._trySelectingPoint && hitPoint) {\n this._trySelectingPoint = false;\n this.selectPoint(hitPoint);\n }\n this._tryAddingPoint = false;\n this._trySelectingPoint = false;\n }\n\n setCurve(curve: IAnimationCurve) {\n this._curve = curve;\n this._selectedPoint = null;\n this._onCurveChanged && this._onCurveChanged(curve);\n return this;\n }\n\n setPointMode(mode: number) {\n if (this._selectedPoint) {\n this._selectedPoint.mode = mode;\n this._onPointChanged && this._onPointChanged(this._selectedPoint);\n }\n return this;\n }\n\n setPointPos(x: number, y: number) {\n if (this._selectedPoint) {\n this._selectedPoint.set(clamp(x, 0, 1), clamp(y, 0, 1));\n this._curve.points.sort((a, b) => a.x - b.x);\n this._onPointChanged && this._onPointChanged(this._selectedPoint);\n }\n return this;\n }\n\n selectPoint(point?: ICurvePoint) {\n if (point) {\n this._selectedPoint = point;\n this._pxRef = point.x;\n this._pyRef = point.y;\n this._onPointChanged && this._onPointChanged(point);\n }\n else {\n this._selectedPoint = null;\n }\n return this;\n }\n}\n\nfunction copyToClipboard(text: string) {\n const tempInput = document.createElement('textarea');\n tempInput.value = text;\n\n document.body.appendChild(tempInput);\n\n tempInput.select();\n tempInput.setSelectionRange(0, 99999); // 兼容移动设备\n\n document.execCommand('copy');\n document.body.removeChild(tempInput);\n}\n\nfunction toFixedFloat(v: number, fractionDigits?: number) {\n return parseFloat(v.toFixed(fractionDigits));\n}\n\nexport class CurveEditor {\n private _dom: HTMLElement;\n private _tabs: HTMLDivElement[] = [];\n private _sharpTab: HTMLDivElement;\n private _smoothTab: HTMLDivElement;\n private _xPosInput: HTMLInputElement;\n private _yPosInput: HTMLInputElement;\n private _curvePanel: CurvePanel;\n private _curvePointPanel: HTMLDivElement;\n private _layoutPoint: ICurvePoint;\n private _curves: IAnimationCurve[];\n private _target: IAnimationCurve | IAnimationCurve[];\n private _onChange: Function;\n\n get dom() {\n return this._dom;\n }\n\n constructor(target: IAnimationCurve | IAnimationCurve[]) {\n this._dom = document.createElement(\"div\");\n this._dom.classList.add(\"curve-editor\");\n document.body.appendChild(this._dom);\n\n let tabGroup = document.createElement(\"div\");\n tabGroup.classList.add(\"curve-top\");\n tabGroup.ondblclick = (e) => {\n e.preventDefault();\n let text = this._curves.map(v => v.points.length + \",\" + v.points.map(p => `${toFixedFloat(p.x, 3)},${toFixedFloat(p.y, 3)},${p.mode}`).join(\",\")).join(\",\");\n copyToClipboard(text);\n alert(\"Copyed curve points\");\n }\n this._dom.appendChild(tabGroup);\n\n let curves = Array.isArray(target) ? target : [target];\n if (curves.length > 1) {\n for (let i = 0; i < curves.length; i++) {\n let c = curves[i];\n let tab = document.createElement(\"div\");\n tab.classList.add(\"button-medium\");\n tab.textContent = c.name || i.toString();\n tab.onclick = () => this._onToggleTab(i);\n tabGroup.appendChild(tab);\n this._tabs.push(tab);\n }\n }\n this._target = target;\n this._curves = curves;\n this._layoutPoint = curves[0].createCurvePoint(0, 0, -1);\n this._curvePanel = new CurvePanel();\n this._curvePanel.dom.classList.add(\"curve-panel\");\n this._curvePanel.onCurveChanged(c => this._onCurveChanged(c));\n this._curvePanel.onPointChanged(p => this._onPointChanged(p));\n this._curvePanel.onPointAdded(p => this._onPointAdded(p));\n this._curvePanel.onPointRemoved(p => this._onPointRemoved(p));\n this._dom.appendChild(this._curvePanel.dom);\n\n this._curvePointPanel = document.createElement(\"div\");\n this._curvePointPanel.classList.add(\"curve-point-panel\");\n this._curvePointPanel.style.display = \"none\";\n this._dom.appendChild(this._curvePointPanel);\n\n this._smoothTab = document.createElement(\"div\");\n this._smoothTab.classList.add(\"button-medium\");\n this._smoothTab.innerHTML = /*html*/`\n <svg viewBox=\"351.367 172.836 32 32\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:bx=\"https://boxy-svg.com\">\n <path style=\"fill: none; stroke-width: 2px; stroke: rgb(240, 240, 240);\" d=\"M 356 200 C 356 200 355.7892846963982 195.12801796288684 356 193 C 356.17984169835074 191.18377517899805 356.2627725586097 189.58207992830177 357 188 C 357.82614089255884 186.22711303095053 359.32609311863524 184.16719383631644 361 183 C 362.6636054267734 181.83998923607413 364.99999999999994 180.99999999999997 367 181 C 368.99999999999994 180.99999999999997 371.3363945732266 181.83998923607413 373 183 C 374.6739068813647 184.16719383631644 376.1738591074412 186.22711303095053 377 188 C 377.73722744139036 189.58207992830177 377.8201583016493 191.18377517899808 378 193 C 378.2107153036018 195.12801796288684 378 200 378 200\" transform=\"matrix(1, 0, 0, 1, -5.684341886080802e-14, 0)\" bx:d=\"M 356 200 R 356 193 R 357 188 R 361 183 R 367 181 R 373 183 R 377 188 R 378 193 R 378 200 1@f911f19e\"/>\n <rect x=\"368\" y=\"176.021\" width=\"6\" height=\"5.979\" style=\"fill: rgb(255, 255, 255);\" transform=\"matrix(1, 0, 0, 1, -5.684341886080802e-14, 0)\"/>\n </svg>\n `;\n this._curvePointPanel.appendChild(this._smoothTab);\n\n this._sharpTab = document.createElement(\"div\");\n this._sharpTab.classList.add(\"button-medium\");\n this._sharpTab.innerHTML = /*html*/`\n <svg viewBox=\"0 0 32 32\" xmlns=\"http://www.w3.org/2000/svg\">\n <polyline style=\"fill: none; stroke: rgb(240, 240, 240); stroke-width: 2px;\" points=\"6 26 17 7 28 26\"/>\n <rect x=\"14\" y=\"4\" width=\"6\" height=\"6\" style=\"fill: rgb(255, 255, 255);\"/>\n </svg>\n `\n this._curvePointPanel.appendChild(this._sharpTab);\n\n this._smoothTab.onclick = () => this._curvePanel.setPointMode(0);\n this._sharpTab.onclick = () => this._curvePanel.setPointMode(1);\n\n this._xPosInput = document.createElement(\"input\");\n this._xPosInput.onchange = (e) => this._onPosChanged();\n this._curvePointPanel.appendChild(this._xPosInput);\n\n this._yPosInput = document.createElement(\"input\");\n this._yPosInput.onchange = (e) => this._onPosChanged();\n this._curvePointPanel.appendChild(this._yPosInput);\n\n this._onToggleTab(0);\n }\n\n onChange(callback: Function) {\n this._onChange = callback;\n return this;\n }\n\n private _onToggleTab(tabInex: number) {\n for (let i = 0; i < this._tabs.length; i++) {\n if (i === tabInex) this._tabs[i].classList.add(\"selected\");\n else this._tabs[i].classList.remove(\"selected\");\n }\n this._curvePanel.setCurve(this._curves[tabInex]);\n }\n\n private _onTogglePointTab(tab: number) {\n if (tab === 0) {\n this._smoothTab.classList.add(\"selected\");\n this._sharpTab.classList.remove(\"selected\");\n }\n else {\n this._smoothTab.classList.remove(\"selected\");\n this._sharpTab.classList.add(\"selected\");\n }\n }\n\n private _onCurveChanged(curve: IAnimationCurve) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(points.length > 2 ? points[1] : null);\n }\n\n private _onPosChanged() {\n this._curvePanel.setPointPos(parseFloat(this._xPosInput.value), parseFloat(this._yPosInput.value));\n }\n\n private _onPointAdded(point: ICurvePoint) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(point);\n }\n\n private _onPointRemoved(point: ICurvePoint) {\n const points = this._curvePanel.curve.points;\n this._curvePointPanel.style.display = points.length > 2 ? \"flex\" : \"none\";\n this._curvePanel.selectPoint(points.length > 2 ? points[1] : null);\n }\n\n private _onPointChanged(point: ICurvePoint) {\n let isChanged = false;\n let layoutPoint = this._layoutPoint;\n if (layoutPoint.mode !== point.mode) {\n layoutPoint.mode = point.mode;\n this._onTogglePointTab(point.mode);\n isChanged = true;\n }\n if (Math.hypot(layoutPoint.x - point.x, layoutPoint.y - point.y) > 0.001) {\n layoutPoint.x = point.x;\n layoutPoint.y = point.y;\n this._xPosInput.value = parseFloat(point.x.toFixed(3)).toString();\n this._yPosInput.value = parseFloat(point.y.toFixed(3)).toString();\n isChanged = true;\n }\n if (isChanged) {\n this._curvePanel.curve.needsUpdate = true;\n this._onChange && this._onChange(this._target);\n }\n }\n\n render() {\n this._curvePanel.render();\n }\n}","import { GUI } from \"../GUI\";\nimport { CurveEditor } from \"../curve/CurveEditor\";\nimport { Controller } from \"./Controller\";\n\nexport class CurveController extends Controller {\n private _curveEditor: CurveEditor;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, \"label\");\n this._curveEditor = new CurveEditor(this.getValue());\n this._curveEditor.onChange(v => this.setValue(v));\n this.$widget.appendChild(this._curveEditor.dom);\n }\n\n needsUpdateDisplay() {\n return !this.parent._closed;\n }\n\n updateDisplay() {\n this._curveEditor.render();\n return this;\n }\n}","import { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class TextureController extends Controller {\n $canvas: HTMLCanvasElement;\n\n private _version: number = 0;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, \"image\");\n let group = document.createElement(\"div\");\n group.style.display = \"flex\";\n group.style.flexDirection = \"column\";\n group.style.width = \"100%\";\n this.$widget.appendChild(group);\n\n this.$canvas = document.createElement(\"canvas\");\n group.appendChild(this.$canvas);\n\n const texture = this.getValue();\n if (texture.isRenderTargetTexture) {\n let button = document.createElement(\"button\");\n button.textContent = \"capture\";\n button.onclick = () => this.updateDisplay();\n group.appendChild(button);\n }\n }\n\n needsUpdateDisplay() {\n if (this.parent._closed) {\n return false;\n }\n let texture = this.getValue();\n if (texture && this._version !== texture.version) {\n this._version = texture.version;\n return true;\n }\n return false;\n }\n\n updateDisplay() {\n const canvas = this.$canvas;\n const context = canvas.getContext(\"2d\");\n const texture = this.getValue();\n const image = texture.image;\n\n // Seems like context can be null if the canvas is not visible\n if (context) {\n // Always clear the context before set new texture, because new texture may has transparency\n context.clearRect(0, 0, canvas.width, canvas.height);\n }\n\n if (image && image.width > 0) {\n const scale = canvas.width / image.width;\n canvas.height = Math.max(2, image.height / image.width * canvas.width);\n\n const width = Math.max(image.width * scale, 2);\n const height = Math.max(image.height * scale, 2);\n\n if (texture.__getImage) {\n context.drawImage(texture.__getImage(), 0, 0, width, height);\n }\n else {\n context.drawImage(image, 0, 0, width, height);\n }\n }\n\n return this;\n }\n}\n","import \"./css/index.scss\";\nimport { Controller } from \"./controllers/Controller\";\nimport { OptionController } from \"./controllers/OptionController\";\nimport { NumberController } from \"./controllers/NumberController\";\nimport { BooleanController } from \"./controllers/BooleanController\";\nimport { StringController } from \"./controllers/StringController\";\nimport { FunctionController } from \"./controllers/FunctionController\";\nimport { ColorController } from \"./controllers/ColorController\";\nimport { ImageController } from \"./controllers/ImageController\";\nimport { VectorController } from \"./controllers/VectorController\";\nimport { CurveController } from \"./controllers/CurveController\";\nimport { TextureController } from \"./controllers/TextureController\";\n\nexport class GUI {\n id: string;\n parent: GUI;\n root: GUI;\n children: Array<GUI | Controller> = [];\n controllers: Array<Controller> = [];\n folders: Array<GUI> = [];\n domElement: HTMLElement;\n $title: HTMLElement;\n $children: HTMLElement;\n /**\n * Current title of the GUI. Use `gui.title( 'Title' )` to modify this value.\n */\n _title: string = \"\";\n _closed: boolean = false;\n _hidden: boolean = false;\n _closeFolders: boolean = false;\n\n private _onChange: Function;\n /**\n * Used to access the function bound to `onFinishChange` events. Don't modify this value\n * directly. Use the `gui.onFinishChange( callback )` method instead.\n */\n private _onFinishChange: Function;\n private _onOpenClose: Function;\n\n constructor({\n parent,\n container,\n width,\n autoPlace = parent === undefined,\n title = 'Controls',\n id = title,\n closeFolders = false,\n touchStyles = true,\n }: {\n parent?: GUI;\n container?: HTMLElement;\n autoPlace?: boolean;\n width?: number;\n title?: string;\n id?: string;\n closeFolders?: boolean;\n touchStyles?: boolean;\n } = {}) {\n this.id = id;\n this.parent = parent;\n this.root = parent ? parent.root : this;\n this.domElement = document.createElement(\"div\");\n this.domElement.classList.add(\"lil-gui\");\n this.$title = document.createElement('div');\n this.$title.classList.add('title');\n this.$title.setAttribute('role', 'button');\n this.$title.setAttribute('aria-expanded', \"true\");\n this.$title.setAttribute('tabindex', \"0\");\n this.$title.addEventListener('click', () => this.openAnimated(this._closed));\n this.$title.addEventListener('keydown', e => {\n if (e.code === 'Enter' || e.code === 'Space') {\n e.preventDefault();\n this.$title.click();\n }\n });\n\n // enables :active pseudo class on mobile\n this.$title.addEventListener('touchstart', () => { }, { passive: true });\n\n /**\n * The DOM element that contains children.\n * @type {HTMLElement}\n */\n this.$children = document.createElement('div');\n this.$children.classList.add('children');\n\n this.domElement.appendChild(this.$title);\n this.domElement.appendChild(this.$children);\n\n this.title(title);\n\n if (this.parent) {\n this.parent.children.push(this);\n this.parent.folders.push(this);\n this.parent.$children.appendChild(this.domElement);\n\n // Stop the constructor early, everything onward only applies to root GUI's\n return;\n\n }\n\n this.domElement.classList.add('root');\n\n if (touchStyles) {\n this.domElement.classList.add('allow-touch-styles');\n }\n if (container) {\n container.appendChild(this.domElement);\n } else if (autoPlace) {\n this.domElement.classList.add('autoPlace');\n document.body.appendChild(this.domElement);\n }\n if (width) {\n this.domElement.style.setProperty('--width', width + 'px');\n }\n\n this._closeFolders = closeFolders;\n }\n\n\n /**\n * Adds a controller to the GUI, inferring controller type using the `typeof` operator.\n * @example\n * gui.add( object, 'property' );\n * gui.add( object, 'number', 0, 100, 1 );\n * gui.add( object, 'options', [ 1, 2, 3 ] );\n *\n * @param {object} object The object the controller will modify.\n * @param {string} property Name of the property to control.\n * @param {number|object|Array} [$1] Minimum value for number controllers, or the set of\n * selectable values for a dropdown.\n * @param {number} [max] Maximum value for number controllers.\n * @param {number} [step] Step value for number controllers.\n * @returns {Controller}\n */\n add(\n object: Object,\n property: string,\n $1?: number | object | Array<any>,\n max?: number,\n step?: number\n ) {\n if (Object($1) === $1) {\n return new OptionController(this, object, property, $1);\n }\n\n const initialValue = object[property];\n switch (typeof initialValue) {\n case 'number':\n return new NumberController(this, object, property, $1 as number, max, step);\n case 'boolean':\n return new BooleanController(this, object, property);\n case 'string':\n return new StringController(this, object, property);\n case 'function':\n return new FunctionController(this, object, property);\n\n }\n\n // eslint-disable-next-line no-console\n console.error(`gui.add failed\n property:`, property, `\n object:`, object, `\n value:`, initialValue\n );\n\n }\n\n /**\n * Adds a color controller to the GUI.\n * @example\n * params = {\n * \tcssColor: '#ff00ff',\n * \trgbColor: { r: 0, g: 0.2, b: 0.4 },\n * \tcustomRange: [ 0, 127, 255 ],\n * };\n *\n * gui.addColor( params, 'cssColor' );\n * gui.addColor( params, 'rgbColor' );\n * gui.addColor( params, 'customRange', 255 );\n *\n * @param {object} object The object the controller will modify.\n * @param {string} property Name of the property to control.\n * @param {number} rgbScale Maximum value for a color channel when using an RGB color. You may\n * need to set this to 255 if your colors are too bright.\n * @returns {Controller}\n */\n addColor(\n object: Object,\n property: string,\n rgbScale: number = 1,\n ) {\n return new ColorController(this, object, property, rgbScale);\n }\n\n /**\n *\n * @param {object} object\n * @param {string} property Name of the property to control.\n * @returns {Controller}\n */\n addImage(\n object: Object,\n property: string\n ) {\n return new ImageController(this, object, property);\n }\n\n\n addTexture(\n object: Object,\n property: string\n ) {\n return new TextureController(this, object, property);\n }\n /**\n *\n * @param {object} object\n * @param {string} property\n * @param min\n * @param max\n * @param step\n * @returns {Controller}\n */\n addVector(\n object: Object,\n property: string,\n min?: number,\n max?: number,\n step?: number\n ) {\n return new VectorController(this, object, property, min, max, step);\n }\n\n addCurve(\n object: Object,\n property: string,\n ) {\n return new CurveController(this, object, property);\n }\n /**\n * Adds a folder to the GUI, which is just another GUI. This method returns\n * the nested GUI so you can add controllers to it.\n * @example\n * const folder = gui.addFolder( 'Position' );\n * folder.add( position, 'x' );\n * folder.add( position, 'y' );\n * folder.add( position, 'z' );\n *\n * @param {string} title Name to display in the folder's title bar.\n * @param {string} id Id\n * @returns {GUI}\n */\n addFolder(title: string, id: string = title) {\n const folder = new GUI({ parent: this, title, id });\n if (this.root._closeFolders) folder.close();\n return folder;\n }\n\n /**\n *\n * @param {string} id\n * @returns {this}\n */\n removeFolder(id: string) {\n let folder = this.getFolder(id);\n if (folder) folder.destroy();\n return this;\n }\n /**\n *\n * @param {string} id\n * @returns {GUI}\n */\n getFolder(id: string) {\n return this.folders.find(v => v.id === id);\n }\n\n /**\n * Recalls values that were saved with `gui.save()`.\n * @param {object} obj\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {this}\n */\n load(obj: GUI, recursive: boolean = true) {\n if (obj.controllers) {\n this.controllers.forEach(c => {\n if (c instanceof FunctionController) return;\n if (c._name in obj.controllers) {\n c.load(obj.controllers[c._name]);\n }\n });\n }\n\n if (recursive && obj.folders) {\n this.folders.forEach(f => {\n if (f._title in obj.folders) {\n f.load(obj.folders[f._title]);\n }\n });\n\n }\n\n return this;\n\n }\n\n /**\n * Returns an object mapping controller names to values. The object can be passed to `gui.load()` to\n * recall these values.\n * @example\n * {\n * \tcontrollers: {\n * \t\tprop1: 1,\n * \t\tprop2: 'value',\n * \t\t...\n * \t},\n * \tfolders: {\n * \t\tfolderName1: { controllers, folders },\n * \t\tfolderName2: { controllers, folders }\n * \t\t...\n * \t}\n * }\n *\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {object}\n */\n save(recursive: boolean = true) {\n const obj = {\n controllers: {},\n folders: {}\n };\n this.controllers.forEach(c => {\n if (c instanceof FunctionController) return;\n if (c._name in obj.controllers) {\n throw new Error(`Cannot save GUI with duplicate property \"${c._name}\"`);\n }\n obj.controllers[c._name] = c.save();\n });\n\n if (recursive) {\n this.folders.forEach(f => {\n if (f._title in obj.folders) {\n throw new Error(`Cannot save GUI with duplicate folder \"${f._title}\"`);\n }\n obj.folders[f._title] = f.save();\n });\n }\n return obj;\n }\n\n /**\n * Opens a GUI or folder. GUI and folders are open by default.\n * @param {boolean} open Pass false to close\n * @returns {this}\n * @example\n * gui.open(); // open\n * gui.open( false ); // close\n * gui.open( gui._closed ); // toggle\n */\n open(open: boolean = true) {\n this._setClosed(!open);\n this.$title.setAttribute('aria-expanded', !this._closed as any);\n this.domElement.classList.toggle('closed', this._closed);\n return this;\n }\n\n /**\n * Closes the GUI.\n * @returns {this}\n */\n close() {\n return this.open(false);\n }\n\n private _setClosed(closed: boolean) {\n if (this._closed === closed) return;\n this._closed = closed;\n this._callOnOpenClose(this);\n }\n\n /**\n * Shows the GUI after it's been hidden.\n * @param {boolean} show\n * @returns {this}\n * @example\n * gui.show();\n * gui.show( false ); // hide\n * gui.show( gui._hidden ); // toggle\n */\n show(show: boolean = true) {\n this._hidden = !show;\n this.domElement.style.display = this._hidden ? 'none' : '';\n return this;\n }\n\n /**\n * Hides the GUI.\n * @returns {this}\n */\n hide() {\n return this.show(false);\n }\n\n openAnimated(open: boolean = true) {\n // set state immediately\n this._setClosed(!open);\n this.$title.setAttribute('aria-expanded', !this._closed as any);\n\n // wait for next frame to measure $children\n requestAnimationFrame(() => {\n // explicitly set initial height for transition\n const initialHeight = this.$children.clientHeight;\n this.$children.style.height = initialHeight + 'px';\n\n this.domElement.classList.add('transition');\n\n const onTransitionEnd = e => {\n if (e.target !== this.$children) return;\n this.$children.style.height = '';\n this.domElement.classList.remove('transition');\n this.$children.removeEventListener('transitionend', onTransitionEnd);\n };\n\n this.$children.addEventListener('transitionend', onTransitionEnd);\n\n // todo: this is wrong if children's scrollHeight makes for a gui taller than maxHeight\n const targetHeight = !open ? 0 : this.$children.scrollHeight;\n this.domElement.classList.toggle('closed', !open);\n\n requestAnimationFrame(() => {\n this.$children.style.height = targetHeight + 'px';\n });\n });\n\n return this;\n }\n\n /**\n * Change the title of this GUI.\n * @param {string} title\n * @returns {this}\n */\n title(title: string) {\n this._title = title;\n this.$title.innerHTML = title;\n return this;\n }\n\n /**\n * Resets all controllers to their initial values.\n * @param {boolean} recursive Pass false to exclude folders descending from this GUI.\n * @returns {this}\n */\n reset(recursive = true) {\n const controllers = recursive ? this.controllersRecursive() : this.controllers;\n controllers.forEach(c => c.reset());\n return this;\n }\n\n /**\n * Pass a function to be called whenever a controller in this GUI changes.\n * @param {function({object:object, property:string, value:any, controller:Controller})} callback\n * @returns {this}\n * @example\n * gui.onChange( event => {\n * \tevent.object // object that was modified\n * \tevent.property // string, name of property\n * \tevent.value // new value of controller\n * \tevent.controller // controller that was modified\n * } );\n */\n onChange(callback) {\n /**\n * Used to access the function bound to `onChange` events. Don't modify this value\n * directly. Use the `gui.onChange( callback )` method instead.\n * @type {Function}\n */\n this._onChange = callback;\n return this;\n }\n\n _callOnChange(controller) {\n\n if (this.parent) {\n this.parent._callOnChange(controller);\n }\n\n if (this._onChange !== undefined) {\n this._onChange.call(this, {\n object: controller.object,\n property: controller.property,\n value: controller.getValue(),\n controller\n });\n }\n }\n\n /**\n * Pass a function to be called whenever a controller in this GUI has finished changing.\n * @param {function({object:object, property:string, value:any, controller:Controller})} callback\n * @returns {this}\n * @example\n * gui.onFinishChange( event => {\n * \tevent.object // object that was modified\n * \tevent.property // string, name of property\n * \tevent.value // new value of controller\n * \tevent.controller // controller that was modified\n * } );\n */\n onFinishChange(callback: Function) {\n this._onFinishChange = callback;\n return this;\n }\n\n _callOnFinishChange(controller: Controller) {\n if (this.parent) {\n this.parent._callOnFinishChange(controller);\n }\n\n if (this._onFinishChange !== undefined) {\n this._onFinishChange.call(this, {\n object: controller.object,\n property: controller.property,\n value: controller.getValue(),\n controller\n });\n }\n }\n\n /**\n * Pass a function to be called when this GUI or its descendants are opened or closed.\n * @param {function(GUI)} callback\n * @returns {this}\n * @example\n * gui.onOpenClose( changedGUI => {\n * \tconsole.log( changedGUI._closed );\n * } );\n */\n onOpenClose(callback: Function) {\n this._onOpenClose = callback;\n return this;\n }\n\n private _callOnOpenClose(changedGUI: GUI) {\n if (this.parent) {\n this.parent._callOnOpenClose(changedGUI);\n }\n\n if (this._onOpenClose !== undefined) {\n this._onOpenClose.call(this, changedGUI);\n }\n }\n\n /**\n * Destroys all DOM elements and event listeners associated with this GUI\n */\n destroy() {\n if (this.parent) {\n this.parent.children.splice(this.parent.children.indexOf(this), 1);\n this.parent.folders.splice(this.parent.folders.indexOf(this), 1);\n }\n\n if (this.domElement.parentElement) {\n this.domElement.parentElement.removeChild(this.domElement);\n }\n\n Array.from(this.children).forEach(c => c.destroy());\n }\n\n /**\n * Returns an array of controllers contained by this GUI and its descendents.\n * @returns {Controller[]}\n */\n controllersRecursive() {\n let controllers = Array.from(this.controllers);\n this.folders.forEach(f => {\n controllers = controllers.concat(f.controllersRecursive());\n });\n return controllers;\n }\n\n /**\n * Returns an array of folders contained by this GUI and its descendents.\n * @returns {GUI[]}\n */\n foldersRecursive() {\n let folders = Array.from(this.folders);\n this.folders.forEach(f => {\n folders = folders.concat(f.foldersRecursive());\n });\n return folders;\n }\n\n update() {\n for (let child of this.children) {\n child.update();\n }\n }\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import {\n ColorSpace,\n Euler,\n Material,\n MeshBasicMaterial,\n MeshPhysicalMaterial,\n MeshStandardMaterial,\n Scene,\n ShaderMaterial,\n ToneMapping,\n Vector3,\n WebGLRenderer,\n} from \"three\";\n\nimport { Component, ObjectInstance, Plugin, PropertyManager, Viewer, property } from \"@xviewer.js/core\";\nimport { GUI } from \"./gui/GUI\";\n\ntype uuidObject = { uuid: string, name: string, type: string }\n\nexport class InspectorPlugin extends Plugin {\n\n static _getTargetName(target: uuidObject) {\n return target.name || target.constructor.name || target.type;\n }\n\n private _gui: GUI;\n private _statesMap: Map<uuidObject, number> = new Map();\n private _targetMap: Map<Object, Object> = new Map();\n\n constructor() {\n super();\n this.install = () => {\n this._gui = new GUI({ width: 310, title: \"Inspector\" }).close();\n this._initFolders();\n this._initViewer();\n }\n this.uninstall = () => {\n this._gui.destroy();\n this._statesMap.clear();\n this._targetMap.clear();\n }\n }\n\n onUpdate(dt: number): void {\n this._gui.update();\n this._updateFolders();\n }\n\n private _initFolders() {\n const gui = this._gui;\n gui.addFolder(\"Viewer\").close().hide();\n gui.addFolder(\"Plugin\").close().hide();\n gui.addFolder(\"Component\").close().hide();\n gui.addFolder(\"Material\").close().hide();\n gui.addFolder(\"Other\").close().hide();\n }\n\n private _initViewer() {\n this.inspect(new ViewerExtension(this.viewer));\n }\n\n private _updateFolders() {\n const statesMap = this._statesMap;\n const setState = (v: uuidObject) => {\n if (statesMap.get(v) === -1) statesMap.set(v, 0);\n if (statesMap.get(v) === undefined) statesMap.set(v, 1);\n }\n\n statesMap.forEach((_, k, map) => map.set(k, -1));\n\n this.viewer.traversePlugins(setState);\n this.viewer.traverseComponents(setState);\n this.viewer.traverseMaterials(setState);\n\n statesMap.forEach((v, k, map) => {\n if (v === 1) {\n this.inspect(k);\n }\n if (v === -1) {\n this.uninspect(k);\n map.delete(k);\n }\n })\n }\n\n private _getPropertiesList<T extends uuidObject>(target: T) {\n const list = [];\n\n let props = PropertyManager._getMergedProperties(target.constructor);\n if (props) {\n list.push(props);\n this._targetMap.set(props, target);\n }\n if (target instanceof ShaderMaterial) {\n props = Object.create(null);\n\n const uniforms = Object.create(null);\n this._targetMap.set(props, uniforms);\n\n const entries = Object.entries(target.uniforms);\n entries.forEach(([name]) => {\n Object.defineProperty(uniforms, name, {\n get: () => target.uniforms[name].value,\n set: (v) => (target.uniforms[name].value = v),\n });\n props[name] = { dir: \"uniforms\" };\n });\n list.push(props);\n }\n\n return list;\n }\n\n inspect<T extends uuidObject>(target: T) {\n let propsList = this._getPropertiesList(target);\n if (propsList.length === 0) return;\n\n let gui = this._gui;\n if (target instanceof ViewerExtension) {\n gui = gui.getFolder(\"Viewer\").show();\n }\n else if (target instanceof Plugin) {\n gui = gui.getFolder(\"Plugin\").show();\n }\n else if (target instanceof Component) {\n gui = gui.getFolder(\"Component\").show();\n }\n else if (target instanceof Material) {\n gui = gui.getFolder(\"Material\").show();\n }\n else {\n gui = gui.getFolder(\"Other\").show();\n }\n\n if (gui._title !== \"Viewer\") {\n gui = gui.getFolder(target.uuid) || gui.addFolder(InspectorPlugin._getTargetName(target), target.uuid).close();\n }\n\n this._addPropsListGUI(gui, propsList, target);\n\n return target;\n }\n\n private _addPropsListGUI(gui: GUI, list: Object[], target: Object, dir: string = \"\") {\n let source = target;\n\n for (let props of list) {\n if (dir) {\n gui = gui.getFolder(dir) || gui.addFolder(dir).close();\n }\n\n target = this._targetMap.get(props) || source;\n\n for (let k in props) {\n let value = target[k];\n if (value == null) continue;\n\n const prop = props[k];\n\n let folder = gui;\n if (prop.dir) {\n folder = folder.getFolder(prop.dir) || folder.addFolder(prop.dir).close();\n }\n\n if (PropertyManager._hasProperties(value.constructor)) {\n this._addPropsListGUI(folder, this._getPropertiesList(value), target, k);\n }\n\n const type = typeof value;\n\n let ins = null;\n if (value.isColor) {\n ins = folder.addColor(target, k);\n }\n else if (value.isAnimationCurve) {\n ins = folder.addCurve(target, k);\n }\n else if (value.isVector2 || value.isVector3 || value.isVector4 || value.isEuler) {\n ins = folder.addVector(target, k, prop.min, prop.max, prop.step);\n }\n else if (value.isTexture) {\n\n }\n else if (type === \"number\" || type === \"boolean\" || type === \"string\" || type === \"function\") {\n ins = folder.add(target, k, prop.value || prop.min, prop.max, prop.step);\n }\n else {\n //do nothing\n }\n if (ins && prop.name) {\n ins.name(prop.name);\n }\n }\n }\n }\n\n uninspect(target: uuidObject) {\n let gui = this._gui;\n if (target instanceof Plugin) {\n gui = gui.getFolder(\"Plugin\");\n }\n else if (target instanceof Component) {\n gui = gui.getFolder(\"Component\");\n }\n else if (target instanceof Material) {\n gui = gui.getFolder(\"Material\");\n }\n else {\n gui = gui.getFolder(\"Other\");\n }\n\n gui.removeFolder(target.uuid);\n\n if (gui.children.length === 0) {\n gui.hide();\n }\n }\n}\n\nclass ViewerExtension extends ObjectInstance {\n\n @property({\n value: {\n SRGBColorSpace: \"srgb\",\n LinearSRGBColorSpace: \"srgb-linear\",\n DisplayP3ColorSpace: \"display-p3\",\n LinearDisplayP3ColorSpace: \"display-p3-linear\",\n }\n })\n get outputColorSpace() {\n return this._renderer.outputColorSpace;\n }\n set outputColorSpace(v: ColorSpace) {\n this._renderer.outputColorSpace = v;\n }\n\n @property({\n value: {\n NoToneMapping: 0,\n LinearToneMapping: 1,\n ReinhardToneMapping: 2,\n CineonToneMapping: 3,\n ACESFilmicToneMapping: 4\n }\n })\n get toneMapping() {\n return this._renderer.toneMapping;\n }\n set toneMapping(v: ToneMapping) {\n this._renderer.toneMapping = v;\n }\n\n @property({ min: 0, max: 10, step: 0.01 })\n get toneMappingExposure() {\n return this._renderer.toneMappingExposure;\n }\n set toneMappingExposure(v: number) {\n this._renderer.toneMappingExposure = v;\n }\n\n @property\n get shadows() {\n return this._renderer.shadowMap.enabled;\n }\n set shadows(v: boolean) {\n this._renderer.shadowMap.enabled = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get backgroundBlurriness() {\n return this._scene.backgroundBlurriness;\n }\n set backgroundBlurriness(v: number) {\n this._scene.backgroundBlurriness = v;\n }\n\n @property({ step: 0.01 })\n get environmentRotation() {\n return this._scene.environmentRotation;\n }\n set environmentRotation(v: Euler) {\n this._scene.environmentRotation.copy(v);\n }\n\n\n @property({ step: 0.01 })\n get backgroundRotation() {\n return this._scene.backgroundRotation;\n }\n set backgroundRotation(v: Euler) {\n this._scene.backgroundRotation.copy(v);\n }\n\n @property({ min: 1, max: 120, step: 1 })\n get targetFrameRate() {\n return this._viewer.targetFrameRate;\n }\n set targetFrameRate(v) {\n this._viewer.targetFrameRate = v;\n }\n\n\n private _scene: Scene;\n private _renderer: WebGLRenderer;\n private _viewer: Viewer;\n\n constructor(viewer: Viewer) {\n super();\n this._viewer = viewer;\n this._scene = viewer.scene;\n this._renderer = viewer.renderer;\n }\n}\n\nconst materialProperties = {\n visible: {},\n transparent: {},\n side: { value: { FrontSide: 0, BackSide: 1, DoubleSide: 2 } },\n color: { dir: \"diffuse\" },\n opacity: { dir: \"diffuse\", min: 0, max: 1, step: 0.01 }\n}\nfor (let k in materialProperties) {\n property(materialProperties[k])(Material.prototype, k);\n}\n\nconst meshBasicMaterislProperties = {\n map: { dir: \"diffuse\" },\n lightMap: { dir: \"lightMap\" },\n lightMapIntensity: { dir: \"lightMap\", min: 0, max: 1, step: 0.01, parent: \"lightMap\" },\n aoMap: { dir: \"ao\" },\n aoMapIntensity: { dir: \"ao\", min: 0, max: 1, step: 0.01, parent: \"aoMap\" },\n specularMap: {},\n alphaMap: {},\n envMap: {},\n}\nfor (let k in meshBasicMaterislProperties) {\n property(meshBasicMaterislProperties[k])(MeshBasicMaterial.prototype, k);\n}\n\nconst meshStandardMaterialProperties = {\n opacity: { dir: \"diffuse\", min: 0, max: 1, step: 0.01 },\n map: { dir: \"diffuse\" },\n roughnessMap: { dir: \"roughness\" },\n roughness: { dir: \"roughness\", min: 0, max: 1, step: 0.01 },\n metalnessMap: { dir: \"metalness\" },\n metalness: { dir: \"metalness\", min: 0, max: 1, step: 0.01 },\n aoMap: { dir: \"ao\" },\n aoMapIntensity: { dir: \"ao\", min: 0, max: 1, step: 0.01, parent: \"aoMap\" },\n emissive: { dir: \"emissive\" },\n emissiveMap: { dir: \"emissive\" },\n emissiveIntensity: { dir: \"emissive\", min: 0, max: 1, step: 0.01, parent: \"emissiveMap\" },\n normalMap: { dir: \"normal\" },\n normalScale: { dir: \"normal\", parent: \"normalMap\", step: 0.01 },\n displacementScale: { dir: \"displacement\", min: 0, max: 1, step: 0.01, parent: \"displacementMap\" },\n displacementBias: { dir: \"displacement\", parent: \"displacementMap\" },\n envMap: { dir: \"envMap\" },\n envMapIntensity: { dir: \"envMap\", min: 0, max: 1, step: 0.01 },\n lightMap: { dir: \"lightMap\" },\n lightMapIntensity: { dir: \"lightMap\", min: 0, max: 1, step: 0.01, parent: \"lightMap\" },\n}\nfor (let k in meshStandardMaterialProperties) {\n property(meshStandardMaterialProperties[k])(MeshStandardMaterial.prototype, k);\n}\n\nconst meshPhysicalMaterialProperties = {\n ior: { min: 0, max: 10, step: 0.01 },\n anisotropy: { min: 0, max: 10, step: 0.01 },\n clearcoat: { dir: \"clearcoat\" },\n clearcoatMap: { dir: \"clearcoat\", min: 0, max: 1, step: 0.01 },\n clearcoatRoughness: { dir: \"clearcoat\", min: 0, max: 1, step: 0.01 },\n clearcoatNormalScale: { dir: \"clearcoat\", step: 0.01 },\n clearcoatNormalMap: { dir: \"clearcoat\" },\n iridescence: { dir: \"iridescence\", min: 0, max: 1, step: 0.01 },\n iridescenceMap: { dir: \"iridescence\" },\n iridescenceIOR: { dir: \"iridescence\", step: 0.01 },\n iridescenceThicknessRange: { dir: \"iridescence\" },\n iridescenceThicknessMap: { dir: \"iridescence\" },\n sheen: { dir: \"sheen\" },\n sheenColor: { dir: \"sheen\" },\n sheenColorMap: { dir: \"sheen\" },\n sheenRoughness: { dir: \"sheen\", min: 0, max: 1, step: 0.01 },\n sheenRoughnessMap: { dir: \"sheen\" },\n transmission: { dir: \"transmission\" },\n transmissionMap: { dir: \"transmission\" },\n thickness: { dir: \"thickness\", min: 0, max: 1, step: 0.01 },\n thicknessMap: { dir: \"thickness\" },\n attenuationDistance: { dir: \"attenuation\" },\n attenuationColor: { dir: \"attenuation\" },\n specularIntensity: { dir: \"specular\", min: 0, max: 1, step: 0.01 },\n specularIntensityMap: { dir: \"specular\" },\n specularColor: { dir: \"specular\" },\n specularColorMap: { dir: \"specular\" },\n}\nfor (let k in meshPhysicalMaterialProperties) {\n property(meshPhysicalMaterialProperties[k])(MeshPhysicalMaterial.prototype, k);\n}\n\n","/**\n * @author mrdoob / http://mrdoob.com/\n */\n\nfunction format(v) {\n\tif (v > 1000) {\n\t\treturn Math.floor(v * 0.001) + \"k\";\n\t}\n\telse if (v > 1000000) {\n\t\treturn Math.floor(v * 0.000001) + \"m\"\n\t}\n\telse {\n\t\treturn v;\n\t}\n}\n\nvar Panel = function (name, fg, bg) {\n\n\tvar min = Infinity, max = 0, round = Math.round;\n\tvar PR = round(window.devicePixelRatio || 1);\n\n\tvar WIDTH = 80 * PR, HEIGHT = 48 * PR,\n\t\tTEXT_X = 3 * PR, TEXT_Y = 2 * PR,\n\t\tGRAPH_X = 3 * PR, GRAPH_Y = 15 * PR,\n\t\tGRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR;\n\n\tvar canvas = document.createElement('canvas');\n\tcanvas.width = WIDTH;\n\tcanvas.height = HEIGHT;\n\tcanvas.style.cssText = 'width:80px;height:48px';\n\n\tvar context = canvas.getContext('2d');\n\tcontext.font = 'bold ' + (9 * PR) + 'px Helvetica,Arial,sans-serif';\n\tcontext.textBaseline = 'top';\n\n\tcontext.fillStyle = bg;\n\tcontext.fillRect(0, 0, WIDTH, HEIGHT);\n\n\tcontext.fillStyle = fg;\n\tcontext.fillText(name, TEXT_X, TEXT_Y);\n\tcontext.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n\tcontext.fillStyle = bg;\n\tcontext.globalAlpha = 0.9;\n\tcontext.fillRect(GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT);\n\n\treturn {\n\n\t\tdom: canvas,\n\n\t\tupdate: function (value, maxValue) {\n\n\t\t\tmin = Math.min(min, value);\n\t\t\tmax = Math.max(max, value);\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 1;\n\t\t\tcontext.fillRect(0, 0, WIDTH, GRAPH_Y);\n\t\t\tcontext.fillStyle = fg;\n\t\t\tcontext.fillText(format(round(value)) + ' ' + name + ' (' + format(round(min)) + '-' + format(round(max)) + ')', TEXT_X, TEXT_Y);\n\n\t\t\tcontext.drawImage(canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT);\n\n\t\t\tcontext.fillRect(GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT);\n\n\t\t\tcontext.fillStyle = bg;\n\t\t\tcontext.globalAlpha = 0.9;\n\t\t\tcontext.fillRect(GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round((1 - (value / maxValue)) * GRAPH_HEIGHT));\n\n\t\t}\n\n\t};\n\n};\n\nvar Stats = function () {\n\n\tvar mode = 0;\n\n\tvar container = document.createElement('div');\n\tcontainer.style.cssText = 'position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000';\n\tcontainer.addEventListener('click', function (event) {\n\n\t\tevent.preventDefault();\n\t\tshowPanel(++mode % container.children.length);\n\n\t}, false);\n\n\t//\n\n\tfunction addPanel(panel) {\n\n\t\tcontainer.appendChild(panel.dom);\n\t\treturn panel;\n\n\t}\n\n\tfunction showPanel(id) {\n\n\t\tfor (var i = 0; i < container.children.length; i++) {\n\n\t\t\tcontainer.children[i].style.display = i === id ? 'block' : 'none';\n\n\t\t}\n\n\t\tmode = id;\n\n\t}\n\n\t//\n\n\tvar beginTime = (performance || Date).now(), prevTime = beginTime, frames = 0;\n\n\tvar fpsPanel = addPanel(new Panel('FPS', '#0ff', '#002'));\n\tvar msPanel = addPanel(new Panel('MS', '#0f0', '#020'));\n\n\tif (self.performance && self.performance.memory) {\n\n\t\tvar memPanel = addPanel(new Panel('MB', '#f08', '#201'));\n\n\t}\n\n\tshowPanel(0);\n\n\treturn {\n\n\t\tREVISION: 16,\n\n\t\tdom: container,\n\n\t\taddPanel: addPanel,\n\t\tshowPanel: showPanel,\n\n\t\tbegin: function () {\n\n\t\t\tbeginTime = (performance || Date).now();\n\n\t\t},\n\n\t\tend: function () {\n\n\t\t\tframes++;\n\n\t\t\tvar time = (performance || Date).now();\n\n\t\t\tmsPanel.update(time - beginTime, 200);\n\n\t\t\tif (time >= prevTime + 1000) {\n\n\t\t\t\tfpsPanel.update((frames * 1000) / (time - prevTime), 100);\n\n\t\t\t\tprevTime = time;\n\t\t\t\tframes = 0;\n\n\t\t\t\tif (memPanel) {\n\n\t\t\t\t\tvar memory = performance.memory;\n\t\t\t\t\tmemPanel.update(memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576);\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn time;\n\n\t\t},\n\n\t\tupdate: function () {\n\n\t\t\tbeginTime = this.end();\n\n\t\t},\n\n\t\t// Backwards Compatibility\n\n\t\tdomElement: container,\n\t\tsetMode: showPanel\n\n\t};\n\n};\nexport { Stats, Panel };\n","import { Plugin } from \"@xviewer.js/core\";\nimport { Panel, Stats } from \"./stats/Stats\";\n\nexport class StatsPlugin extends Plugin {\n private _stats: Stats = new Stats();\n private _dcPanel: Panel = new Panel('DC', '#ff8', '#221');\n private _triPanel: Panel = new Panel(\"TRI\", '#ff8', '#221')\n private _texPanel: Panel = new Panel('TEX', '#ff8', '#221')\n private _prgPanel: Panel = new Panel('PRG', '#ff8', '#221')\n\n constructor() {\n super();\n this.install = () => {\n this._stats.addPanel(this._dcPanel);\n this._stats.addPanel(this._texPanel);\n this._stats.addPanel(this._triPanel);\n this._stats.addPanel(this._prgPanel);\n this._stats.showPanel(0);\n document.body.appendChild(this._stats.dom);\n }\n this.uninstall = () => {\n document.body.removeChild(this._stats.dom);\n }\n }\n\n onUpdate(dt: number): void {\n const info = this.viewer.renderer.info;\n this._dcPanel.update(info.render.calls, 300);\n this._triPanel.update(info.render.triangles, 500000);\n this._texPanel.update(info.memory.textures, 200);\n this._prgPanel.update(info.programs.length, 50);\n this._stats.update();\n }\n}"],"names":["Controller","name","_name","$name","innerHTML","onChange","callback","_onChange","parent","_callOnChange","undefined","call","getValue","_changed","onFinishChange","_onFinishChange","_callOnFinishChange","reset","setValue","initialValue","enable","enabled","disable","disabled","_disabled","domElement","classList","toggle","$disable","toggleAttribute","show","_hidden","style","display","hide","options","min","max","step","decimals","listen","_listening","_listenCallbackID","cancelAnimationFrame","_listenCallback","needsUpdateDisplay","_closed","value","save","_listenPrevValue","requestAnimationFrame","updateDisplay","object","property","update","load","destroy","children","splice","indexOf","controllers","$children","removeChild","constructor","className","widgetTag","document","createElement","add","nextNameID","id","$widget","appendChild","addEventListener","e","stopPropagation","push","bind","OptionController","index","_values","$select","selectedIndex","$display","_names","Array","isArray","Object","values","keys","forEach","$option","setAttribute","remove","normalizeColorString","string","match","result","parseInt","toString","padStart","STRING","isPrimitive","v","fromHexString","toHexString","INT","substring","ARRAY","target","rgbScale","int","r","g","b","OBJECT","FORMATS","getColorFormat","find","format","getPrecision","str","length","hasDecimal","NumberController","_min","_onUpdateMinMax","_max","explicit","_step","_stepExplicit","Math","abs","_snap","_hasSlider","percent","$fill","width","_inputFocused","$input","_initInput","isTouch","window","matchMedia","matches","onInput","parseFloat","isNaN","_clamp","increment","delta","_snapClampSetValue","onKeyDown","key","blur","code","preventDefault","_arrowKeyMultiplier","onWheel","_normalizeMouseWheel","testingForVerticalDrag","initClientX","initClientY","prevClientY","initValue","dragDelta","DRAG_THRESH","onMouseDown","clientX","clientY","onMouseMove","onMouseUp","dx","dy","_setDraggingStyle","removeEventListener","onFocus","onBlur","passive","_initSlider","$slider","insertBefore","map","a","c","d","setValueFromX","rect","getBoundingClientRect","left","right","mouseDown","mouseMove","mouseUp","testingForScroll","prevClientX","beginTouchDrag","touches","onTouchStart","_hasScrollBar","onTouchMove","onTouchEnd","callOnFinishChange","WHEEL_DEBOUNCE_TIME","wheelFinishChangeTimeout","isVertical","deltaX","deltaY","clearTimeout","setTimeout","active","axis","body","_getImplicitStep","_hasMin","_hasMax","pow","floor","wheelDelta","wheel","mult","shiftKey","altKey","round","toPrecision","root","scrollHeight","clientHeight","stepExplicit","BooleanController","checked","StringController","FunctionController","$button","ColorController","_setValueFromHexString","_initialValueHexString","_format","newValue","_rgbScale","_textFocused","$text","backgroundColor","tryParse","select","ImageController","toDataURL","img","HTMLImageElement","src","url","_imageMap","get","w","h","height","_context","getContext","canvas","data","imageData","createImageData","set","createImageBitmap","ImageBitmap","drawImage","then","$img","WeakMap","UIElement","args","i","argument","dom","console","error","clear","lastChild","setId","getId","setClass","addClass","removeClass","setStyle","array","setDisabled","setTextContent","textContent","getIndexOfChild","element","prototype","UINumber","equals","_onChangeCallback","unit","Infinity","setUnit","nudge","cursor","scope","changeEvent","createEvent","initEvent","distance","onMouseDownValue","pointer","x","y","prevPointer","event","currentValue","dispatchEvent","focus","pageX","pageY","keyCode","VectorController","fill","uiNumber","z","xElement","yElement","zElement","wElement","clone","assign","clamp","minv","maxv","hitTest","cx","cy","hw","hh","theme","BACKGROUND","GRID","LINE","COVER","POINT","SELECTED","CurvePanel","_canvas","curve","_curve","resize","DPR","devicePixelRatio","xRes","offsetWidth","yRes","offsetHeight","hypot","_xRes","_yRes","onCurveChanged","_onCurveChanged","onPointChanged","_onPointChanged","onPointRemoved","_onPointRemoved","onPointAdded","_onPointAdded","_onDblClick","button","_tryAddingPoint","_onMouseDown","_cxRef","_cx","_cyRef","_cy","_offsetXRef","offsetX","_offsetYRef","offsetY","_trySelectingPoint","_button","_mouse","_selectedPoint","_onMouseUp","_onMouseMove","cxRes","cyRes","rx","_ra","ry","_fixed","_pxRef","_pyRef","setPointPos","_onWheel","sfactor","render","_autoResize","ctx","setTransform","fillStyle","fillRect","_drawGrid","_drawCurve","color","iax","ibx","iay","iby","lineWidth","strokeStyle","beginPath","ix","moveTo","lineTo","iy","stroke","_drawAxis","xPos","yPos","ax","ay","bx","by","SAMPLES","STEP","point","createCurvePoint","mx","my","hitCurve","hitPoint","isFirstPoint","p","getPoint","closePath","points","px","py","sort","selectPoint","setCurve","setPointMode","mode","copyToClipboard","text","tempInput","setSelectionRange","execCommand","toFixedFloat","fractionDigits","toFixed","CurveEditor","_dom","_onToggleTab","tabInex","_tabs","_curvePanel","_curves","_onTogglePointTab","tab","_smoothTab","_sharpTab","_curvePointPanel","_onPosChanged","_xPosInput","_yPosInput","isChanged","layoutPoint","_layoutPoint","needsUpdate","_target","tabGroup","ondblclick","join","alert","curves","onclick","onchange","CurveController","_curveEditor","TextureController","texture","_version","version","$canvas","context","image","clearRect","scale","__getImage","group","flexDirection","isRenderTargetTexture","GUI","$1","addColor","addImage","addTexture","addVector","addCurve","addFolder","title","folder","_closeFolders","close","removeFolder","getFolder","folders","obj","recursive","f","_title","Error","open","_setClosed","$title","closed","_callOnOpenClose","openAnimated","initialHeight","onTransitionEnd","targetHeight","controllersRecursive","controller","onOpenClose","_onOpenClose","changedGUI","parentElement","from","concat","foldersRecursive","child","container","autoPlace","closeFolders","touchStyles","click","setProperty","InspectorPlugin","Plugin","_getTargetName","type","onUpdate","dt","_gui","_updateFolders","_initFolders","gui","_initViewer","inspect","ViewerExtension","viewer","statesMap","_statesMap","setState","_","k","traversePlugins","traverseComponents","traverseMaterials","uninspect","delete","_getPropertiesList","list","props","PropertyManager","_getMergedProperties","_targetMap","ShaderMaterial","create","uniforms","entries","defineProperty","dir","propsList","Component","Material","uuid","_addPropsListGUI","source","prop","_hasProperties","ins","isColor","isAnimationCurve","isVector2","isVector3","isVector4","isEuler","isTexture","Map","install","uninstall","ObjectInstance","outputColorSpace","_renderer","toneMapping","toneMappingExposure","shadows","shadowMap","backgroundBlurriness","_scene","environmentRotation","copy","backgroundRotation","targetFrameRate","_viewer","scene","renderer","SRGBColorSpace","LinearSRGBColorSpace","DisplayP3ColorSpace","LinearDisplayP3ColorSpace","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","materialProperties","visible","transparent","side","FrontSide","BackSide","DoubleSide","opacity","meshBasicMaterislProperties","lightMap","lightMapIntensity","aoMap","aoMapIntensity","specularMap","alphaMap","envMap","MeshBasicMaterial","meshStandardMaterialProperties","roughnessMap","roughness","metalnessMap","metalness","emissive","emissiveMap","emissiveIntensity","normalMap","normalScale","displacementScale","displacementBias","envMapIntensity","MeshStandardMaterial","meshPhysicalMaterialProperties","ior","anisotropy","clearcoat","clearcoatMap","clearcoatRoughness","clearcoatNormalScale","clearcoatNormalMap","iridescence","iridescenceMap","iridescenceIOR","iridescenceThicknessRange","iridescenceThicknessMap","sheen","sheenColor","sheenColorMap","sheenRoughness","sheenRoughnessMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationColor","specularIntensity","specularIntensityMap","specularColor","specularColorMap","MeshPhysicalMaterial","Panel","fg","bg","PR","WIDTH","HEIGHT","TEXT_X","TEXT_Y","GRAPH_X","GRAPH_Y","GRAPH_WIDTH","GRAPH_HEIGHT","cssText","font","textBaseline","fillText","globalAlpha","maxValue","Stats","showPanel","addPanel","panel","beginTime","performance","Date","now","prevTime","frames","fpsPanel","msPanel","self","memory","memPanel","REVISION","begin","end","time","usedJSHeapSize","jsHeapSizeLimit","setMode","StatsPlugin","info","_dcPanel","calls","_triPanel","triangles","_texPanel","textures","_prgPanel","programs","_stats"],"mappings":"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","x_google_ignoreList":[0,19]}