@xviewer.js/debug 1.0.0 → 1.0.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"module.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/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/ViewerHelper.ts","../src/Inspector.ts","../src/stats/Stats.js","../src/Stats.ts","../src/BoxProjectionHelper.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","import { Viewer } from \"@xviewer.js/core\";\nimport { MeshBasicMaterial, Texture, WebGLRenderer } from \"three\";\n\nexport * 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}\n\nlet renderer: WebGLRenderer;\nlet material: MeshBasicMaterial = new MeshBasicMaterial();\n\nexport function renderToCanvas(texture: Texture) {\n\tif (renderer === undefined) {\n\t\trenderer = new WebGLRenderer();\n\t}\n\n\tconst image = texture.image;\n\tmaterial.map = texture;\n\trenderer.setSize(image.width, image.height, false);\n\tViewer.Blit(renderer, null, material);\n\n\treturn renderer.domElement;\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","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\tvalue: number = 0;\n\tmin: number = -Infinity;\n\tmax: number = Infinity;\n\tstep: number = 1;\n\tnudge: number = 1;\n\tunit: 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\tequals(v: number) {\n\t\treturn Math.abs(this.value - v) <= this.step;\n\t}\n\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\n\tsetValue(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\tupdateDisplay() {\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\tonChange(callback: Function) {\n\t\tthis._onChangeCallback = callback;\n\t\treturn this;\n\t}\n\n\tsetUnit(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 { renderToCanvas } from \"../utils\";\nimport { Controller } from \"./Controller\";\n\nexport class TextureController extends Controller {\n $img: HTMLImageElement;\n $canvas: HTMLCanvasElement;\n $label: HTMLDivElement;\n\n onpointerover?: ((ev: PointerEvent) => any) | null;\n onpointerout?: ((ev: PointerEvent) => any) | null;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string\n ) {\n super(parent, object, property, \"image\");\n\n const group = this.$widget.appendChild(document.createElement(\"div\"));\n group.style.display = \"flex\";\n group.style.flexDirection = \"column\";\n group.style.width = \"100%\";\n\n this.$canvas = group.appendChild(document.createElement(\"canvas\"));\n\n const label = document.createElement(\"div\");\n label.style.position = \"absolute\"\n label.style.display = \"flex\";\n label.style.backgroundColor = \"black\"\n this.$label = group.appendChild(label);\n\n group.onpointerover = (e: PointerEvent) => this.onpointerover && this.onpointerover(e);\n group.onpointerout = (e: PointerEvent) => this.onpointerout && this.onpointerout(e);\n }\n\n updateDisplay() {\n const canvas = this.$canvas;\n const context = canvas.getContext(\"2d\");\n\n if (context) {\n context.clearRect(0, 0, canvas.width, canvas.height);\n }\n\n let texture = this.getValue();\n if (texture) {\n let image = texture.image;\n if (image && image.width > 0) {\n this.$label.textContent = `${image.width}x${image.height}`;\n canvas.title = texture.sourceFile;\n let scale = canvas.width / image.width;\n if (texture.isDataTexture || texture.isCompressedTexture) {\n context.drawImage(renderToCanvas(texture), 0, 0, image.width * scale, image.height * scale);\n }\n else if (image.depth) {\n // console.log(\"Unsupport texture\", texture)\n }\n else {\n context.drawImage(image, 0, 0, image.width * scale, image.height * scale);\n }\n }\n else {\n canvas.title = texture.sourceFile + ' (error)';\n }\n }\n else {\n canvas.title = 'empty';\n }\n\n return this;\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 { VectorController } from \"./controllers/VectorController\";\nimport { CurveController } from \"./controllers/CurveController\";\nimport { TextureController } from \"./controllers/TextureController\";\n\nexport class GUI {\n id: string;\n\n parent: GUI;\n root: GUI;\n children: Array<GUI | Controller> = [];\n controllers: Array<Controller> = [];\n folders: Array<GUI> = [];\n\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 /**\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 private _onChange: 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\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', () => {\n this.openAnimated(this._closed);\n });\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 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 { ObjectInstance, property, Viewer } from \"@xviewer.js/core\";\nimport { ColorSpace, Euler, Scene, Texture, ToneMapping, WebGLRenderer } from \"three\";\n\nexport class ViewerHelper 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 as ColorSpace;\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\n get environment() {\n return this._scene.environment;\n }\n set environment(v: Texture) {\n this._scene.environment = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get environmentIntensity() {\n return this._scene.environmentIntensity;\n }\n set environmentIntensity(v: number) {\n this._scene.environmentIntensity = 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 @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}","import {\n Material,\n MeshBasicMaterial,\n MeshPhysicalMaterial,\n MeshStandardMaterial,\n OrthographicCamera,\n Scene,\n ShaderMaterial,\n Sprite,\n Vector3,\n} from \"three\";\n\nimport { Component, Mount, PropertyManager, TweenManager, property } from \"@xviewer.js/core\";\nimport { GUI } from \"./gui/GUI\";\nimport { ViewerHelper } from \"./ViewerHelper\";\n\ntype uuidObject = { uuid: string, name: string, type: string }\n\nexport class Inspector extends Mount {\n\n private _gui: GUI;\n private _refCntMap: Map<uuidObject, number> = new Map();\n private _targetMap: Map<Object, Object> = new Map();\n private _scene: Scene;\n private _camera: OrthographicCamera;\n private _sprite: Sprite;\n private _background: Sprite;\n private _tween: TweenManager;\n private _rect: DOMRect;\n\n onLoad() {\n this._scene = new Scene();\n this._camera = new OrthographicCamera(0, window.innerWidth, window.innerHeight, 0, -1, 1);\n this._gui = new GUI({ width: 310, title: \"Inspector\" }).close();\n this._gui.addFolder(\"Viewer\").close().hide();\n this._gui.addFolder(\"Component\").close().hide();\n this._gui.addFolder(\"Material\").close().hide();\n this._gui.addFolder(\"Other\").close().hide();\n this._rect = this._gui.domElement.getBoundingClientRect();\n this._inspect(new ViewerHelper(this.viewer));\n this._addSprite();\n }\n\n onDestroy() {\n this._gui.destroy();\n this._refCntMap.clear();\n this._targetMap.clear();\n }\n\n update(dt: number): void {\n this._gui.update();\n this._updateFolders();\n }\n\n resize(width: number, height: number): void {\n this._camera.left = 0;\n this._camera.right = width;\n this._camera.top = height;\n this._camera.bottom = 0;\n this._camera.updateProjectionMatrix();\n this._rect = this._gui.domElement.getBoundingClientRect();\n }\n\n render(dt: number): void {\n const { renderer } = this.viewer;\n const autoClearDepth = renderer.autoClearDepth;\n const autoClearColor = renderer.autoClearColor;\n\n renderer.autoClearDepth = true;\n renderer.autoClearColor = false;\n renderer.render(this._scene, this._camera);\n\n renderer.autoClearDepth = autoClearDepth;\n renderer.autoClearColor = autoClearColor;\n }\n\n private _addSprite() {\n const viewer = this.viewer;\n this._tween = viewer.tween();\n this._background = viewer.add(Sprite, {\n parent: this._scene,\n scale: new Vector3(258, 258, 1),\n position: new Vector3(viewer.width / 2, viewer.height / 2),\n });\n this._background.material.opacity = 0;\n\n this._sprite = viewer.add(Sprite, {\n parent: this._scene,\n scale: new Vector3(256, 256, 1),\n position: new Vector3(viewer.width / 2, viewer.height / 2),\n });\n this._sprite.material.opacity = 0;\n }\n\n private _updateFolders() {\n const refCntMap = this._refCntMap;\n const setState = (v: uuidObject) => {\n if (refCntMap.get(v) === -1) refCntMap.set(v, 0);\n if (refCntMap.get(v) === undefined) refCntMap.set(v, 1);\n }\n\n refCntMap.forEach((_, k, map) => map.set(k, -1));\n\n this.viewer.traverseComponents(setState);\n this.viewer.traverseMaterials(setState);\n\n refCntMap.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 const values = propsSort(props);\n\n list.push(values);\n this._targetMap.set(values, target);\n }\n if (target instanceof ShaderMaterial) {\n props = Object.create(null);\n const uniforms = Object.create(null);\n\n Object.keys(target.uniforms).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\n const values = propsSort(props);\n\n list.push(values);\n this._targetMap.set(values, uniforms);\n }\n\n return list;\n }\n\n private _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 ViewerHelper) {\n gui = gui.getFolder(\"Viewer\").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(targetName(target), target.uuid).close();\n }\n\n this._addGUI(gui, propsList, target);\n return target;\n }\n\n private _addGUI(gui: GUI, list: [string, any][][], target: Object, dir: string = \"\") {\n if (dir) {\n gui = gui.getFolder(dir) || gui.addFolder(dir).close();\n }\n\n const source = target;\n for (const props of list) {\n target = this._targetMap.get(props) || source;\n\n for (const [k, prop] of props) {\n let value = target[k];\n if (value == null || (prop.parent && target[prop.parent] == null)) {\n continue;\n }\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._addGUI(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 ins = folder.addTexture(target, k);\n ins.onpointerover = () => {\n const image = value.image;\n const w = image.width * 256 / image.height, h = 256;\n const x = this._rect.x - w / 2 - 10;\n\n this._background.scale.set(w + 2, h + 2, 1);\n this._background.position.x = x;\n this._sprite.scale.set(w, h, 1);\n this._sprite.position.x = x;\n this._sprite.material.map = value;\n this._sprite.material.needsUpdate = true;\n \n this._tween.timeline(this._sprite.material)\n .to({ opacity: 1 }, 0.3)\n .start();\n this._tween.timeline(this._background.material)\n .to({ opacity: 1 }, 0.3)\n .start();\n }\n ins.onpointerout = () => {\n this._tween.timeline(this._background.material)\n .to({ opacity: 0 }, 0.3)\n .start();\n this._tween.timeline(this._sprite.material)\n .to({ opacity: 0 }, 0.3)\n .start();\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 private _uninspect(target: uuidObject) {\n let gui = this._gui;\n 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\nfunction targetName(target: uuidObject) {\n return target.name || target.constructor.name || target.type;\n}\n\nfunction propsSort(props: Object) {\n const order = v => v.order || 10000;\n const values = Object.entries<any>(props);\n const array0 = values.filter(v => !v[1].dir).sort((a, b) => order(a[1]) - order(b[1]));\n const array1 = values.filter(v => v[1].dir).sort((a, b) => order(a[1]) - order(b[1]));\n return array0.concat(array1);\n}\n\nconst materialProperties = {\n visible: { order: 1 },\n transparent: { order: 2 },\n side: { order: 3, value: { FrontSide: 0, BackSide: 1, DoubleSide: 2 } },\n color: { order: 4, dir: \"diffuse\" },\n opacity: { order: 5, 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 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\", step: 0.01, parent: \"normalMap \" },\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, parent: \"envMap\" },\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 { Mount } from \"@xviewer.js/core\";\nimport { Panel, Stats as Stats_ } from \"./stats/Stats\";\n\nexport class Stats extends Mount {\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 onLoad() {\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 \n onDestroy() {\n document.body.removeChild(this._stats.dom);\n }\n\n update(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}","import { BoxProjection, Mount } from \"@xviewer.js/core\";\nimport { Box3, Box3Helper } from \"three\";\n\nexport class BoxProjectionHelper extends Mount {\n private _box3: Box3;\n private _helper: Box3Helper;\n private _target: BoxProjection;\n\n onLoad(): void {\n this._box3 = new Box3();\n this._target = this.viewer.mount(BoxProjection);\n this._helper = this.viewer.add(new Box3Helper(this._box3));\n }\n\n onEnable(): void {\n this._helper.visible = true;\n }\n\n onDisable(): void {\n this._helper.visible = false;\n }\n\n update(dt: number): void {\n const { center, boxMin, boxMax } = this._target;\n this._box3.min.copy(center).add(boxMin);\n this._box3.max.copy(center).add(boxMax);\n this._helper.updateMatrixWorld();\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","renderer","material","MeshBasicMaterial","renderToCanvas","texture","WebGLRenderer","image","map","setSize","width","height","Viewer","Blit","NumberController","_min","_onUpdateMinMax","_max","explicit","_step","_stepExplicit","Math","abs","_snap","_hasSlider","percent","$fill","_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","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","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","w","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","canvas","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","_context","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","set","getContext","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","$canvas","context","clearRect","$label","title","sourceFile","scale","isDataTexture","isCompressedTexture","drawImage","depth","group","flexDirection","label","position","onpointerover","onpointerout","GUI","$1","addColor","addTexture","addVector","addCurve","addFolder","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","ViewerHelper","ObjectInstance","outputColorSpace","_renderer","toneMapping","toneMappingExposure","shadows","shadowMap","backgroundBlurriness","_scene","environment","environmentIntensity","environmentRotation","copy","backgroundRotation","targetFrameRate","_viewer","viewer","scene","SRGBColorSpace","LinearSRGBColorSpace","DisplayP3ColorSpace","LinearDisplayP3ColorSpace","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","Inspector","Mount","onLoad","Scene","_camera","OrthographicCamera","innerWidth","innerHeight","_gui","_rect","_inspect","_addSprite","onDestroy","_refCntMap","_targetMap","dt","_updateFolders","top","bottom","updateProjectionMatrix","autoClearDepth","autoClearColor","_tween","tween","_background","Sprite","Vector3","opacity","_sprite","refCntMap","setState","get","_","k","traverseComponents","traverseMaterials","_uninspect","delete","_getPropertiesList","list","props","PropertyManager","_getMergedProperties","propsSort","ShaderMaterial","create","uniforms","defineProperty","dir","propsList","gui","Component","Material","uuid","targetName","_addGUI","source","prop","_hasProperties","type","ins","isColor","isAnimationCurve","isVector2","isVector3","isVector4","isEuler","isTexture","h","timeline","to","start","Map","order","entries","array0","filter","array1","materialProperties","visible","transparent","side","FrontSide","BackSide","DoubleSide","meshBasicMaterislProperties","lightMap","lightMapIntensity","aoMap","aoMapIntensity","specularMap","alphaMap","envMap","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","_stats","_dcPanel","_texPanel","_triPanel","_prgPanel","info","calls","triangles","textures","programs","Stats_","BoxProjectionHelper","_box3","Box3","mount","BoxProjection","_helper","Box3Helper","onEnable","onDisable","center","boxMin","boxMax","updateMatrixWorld"],"mappings":"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","x_google_ignoreList":[0,18]}
1
+ {"version":3,"file":"module.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/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/ViewerHelper.ts","../src/Inspector.ts","../src/stats/Stats.js","../src/Stats.ts","../src/BoxProjectionHelper.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 checkDisplay() {\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.checkDisplay()) {\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.checkDisplay()) {\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","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\tvalue: number = 0;\n\tmin: number = -Infinity;\n\tmax: number = Infinity;\n\tstep: number = 1;\n\tnudge: number = 1;\n\tunit: 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\tequals(v: number) {\n\t\treturn Math.abs(this.value - v) <= this.step;\n\t}\n\n\tgetValue() {\n\t\treturn this.value;\n\t}\n\n\tsetValue(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\tupdateDisplay() {\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\tonChange(callback: Function) {\n\t\tthis._onChangeCallback = callback;\n\t\treturn this;\n\t}\n\n\tsetUnit(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 checkDisplay() {\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 { Texture } from \"three\";\nimport { GUI } from \"../GUI\";\nimport { Controller } from \"./Controller\";\n\nexport class TextureController extends Controller {\n private _autoRefresh: boolean = false;\n\n $img: HTMLImageElement;\n $canvas: HTMLCanvasElement;\n $label: HTMLDivElement;\n\n getImage?: ((texture: Texture, width: number, height: number) => HTMLCanvasElement) | null;\n\n constructor(\n parent: GUI,\n object: Object,\n property: string,\n ) {\n super(parent, object, property, \"texture\");\n\n const group = this.$widget.appendChild(document.createElement(\"div\"));\n group.classList.add(\"group\");\n\n this.$canvas = group.appendChild(document.createElement(\"canvas\"));\n\n const label = this.$label = group.appendChild(document.createElement(\"div\"));\n label.classList.add(\"label\");\n\n let texture = this.getValue();\n if (texture && texture.image && texture.image.depth) {\n\n const block = group.appendChild(document.createElement(\"div\"));\n block.classList.add(\"block\");\n block.onclick = () => {\n this._autoRefresh = !this._autoRefresh;\n if (this._autoRefresh) block.classList.add(\"select\");\n else block.classList.remove(\"select\");\n }\n\n }\n }\n\n checkDisplay(): boolean {\n return this._autoRefresh || super.checkDisplay();\n }\n\n updateDisplay() {\n const canvas = this.$canvas;\n const context = canvas.getContext(\"2d\");\n\n let texture = this.getValue();\n if (texture) {\n let image = texture.image;\n if (image && image.width > 0) {\n\n this.$label.textContent = `${image.width}x${image.height}`;\n canvas.title = texture.sourceFile || \"\";\n canvas.height = canvas.width / image.width * image.height;\n\n if (this.getImage) {\n const w = 256, h = 256 / image.width * image.height;\n context.drawImage(this.getImage(texture, w, h), 0, 0, w * 1.5, h * 1.5, 0, 0, canvas.width, canvas.height); //why 1.5 ?\n }\n }\n else {\n canvas.title = texture.sourceFile + ' (error)';\n }\n }\n else {\n canvas.title = 'empty';\n }\n\n return this;\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 { VectorController } from \"./controllers/VectorController\";\nimport { CurveController } from \"./controllers/CurveController\";\nimport { TextureController } from \"./controllers/TextureController\";\n\nexport class GUI {\n id: string;\n\n parent: GUI;\n root: GUI;\n children: Array<GUI | Controller> = [];\n controllers: Array<Controller> = [];\n folders: Array<GUI> = [];\n\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 /**\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 private _onChange: 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\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', () => {\n this.openAnimated(this._closed);\n });\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 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 { ObjectInstance, property, Viewer } from \"@xviewer.js/core\";\nimport { Color, ColorSpace, CubeTexture, Euler, Scene, Texture, ToneMapping, WebGLRenderer } from \"three\";\n\nexport class ViewerHelper 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 as ColorSpace;\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({ value: new Texture() })\n get environment() {\n return this._scene.environment;\n }\n set environment(v: Texture) {\n this._scene.environment = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get environmentIntensity() {\n return this._scene.environmentIntensity;\n }\n set environmentIntensity(v: number) {\n this._scene.environmentIntensity = 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 @property\n get background() {\n return this._scene.background;\n }\n set background(v: Texture | Color | CubeTexture) {\n this._scene.background = v;\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\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}","import {\n Material,\n MeshBasicMaterial,\n MeshPhysicalMaterial,\n MeshStandardMaterial,\n OrthographicCamera,\n Scene,\n ShaderMaterial,\n Sprite,\n Texture,\n Vector3,\n} from \"three\";\n\nimport { Component, Mount, PropertyManager, property } from \"@xviewer.js/core\";\nimport { GUI } from \"./gui/GUI\";\nimport { ViewerHelper } from \"./ViewerHelper\";\n\ntype uuidObject = { uuid: string, name: string, type: string }\n\nexport class Inspector extends Mount {\n\n private _gui: GUI;\n private _refCntMap: Map<uuidObject, number> = new Map();\n private _targetMap: Map<Object, Object> = new Map();\n private _scene: Scene;\n private _camera: OrthographicCamera;\n private _sprite: Sprite;\n\n onLoad() {\n const { width, height } = this.viewer;\n this._scene = new Scene();\n this._camera = new OrthographicCamera(0, width, height, 0, -1, 1);\n this._gui = new GUI({ width: 310, title: \"Inspector\" }).close();\n this._gui.addFolder(\"Viewer\").close().hide();\n this._gui.addFolder(\"Component\").close().hide();\n this._gui.addFolder(\"Material\").close().hide();\n this._gui.addFolder(\"Other\").close().hide();\n this._inspect(new ViewerHelper(this.viewer));\n this._addSprite();\n }\n\n onDestroy() {\n this._gui.destroy();\n this._refCntMap.clear();\n this._targetMap.clear();\n }\n\n update(dt: number): void {\n this._gui.update();\n this._updateFolders();\n }\n\n resize(width: number, height: number): void {\n this._camera.left = 0;\n this._camera.right = width;\n this._camera.top = height;\n this._camera.bottom = 0;\n this._camera.updateProjectionMatrix();\n }\n\n private _addSprite() {\n const viewer = this.viewer;\n this._sprite = viewer.add(Sprite, {\n parent: this._scene,\n scale: new Vector3(256, 256, 1),\n position: new Vector3(viewer.width / 2, viewer.height / 2),\n visible: false,\n });\n }\n\n private _renderScene() {\n const { renderer } = this.viewer;\n const autoClearDepth = renderer.autoClearDepth;\n const autoClearColor = renderer.autoClearColor;\n\n renderer.autoClearDepth = true;\n renderer.autoClearColor = false;\n renderer.render(this._scene, this._camera);\n\n renderer.autoClearDepth = autoClearDepth;\n renderer.autoClearColor = autoClearColor;\n\n return renderer.domElement;\n }\n\n private _renderSprite(texture: Texture, w: number, h: number) {\n this._sprite.visible = true;\n this._sprite.scale.set(w, h, 1);\n this._sprite.position.set(w / 2, this._camera.top - h / 2, 0);\n this._sprite.material.map = texture;\n this._sprite.material.needsUpdate = true;\n const dom = this._renderScene();\n this._sprite.visible = false;\n return dom;\n }\n\n private _updateFolders() {\n const refCntMap = this._refCntMap;\n const setState = (v: uuidObject) => {\n if (refCntMap.get(v) === -1) refCntMap.set(v, 0);\n if (refCntMap.get(v) === undefined) refCntMap.set(v, 1);\n }\n\n refCntMap.forEach((_, k, map) => map.set(k, -1));\n\n this.viewer.traverseComponents(setState);\n this.viewer.traverseMaterials(setState);\n\n refCntMap.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 const values = propsSort(props);\n this._targetMap.set(values, target);\n list.push(values);\n }\n if (target instanceof ShaderMaterial) {\n props = Object.create(null);\n const uniforms = Object.create(null);\n\n Object.keys(target.uniforms).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\n const values = propsSort(props);\n this._targetMap.set(values, uniforms);\n list.push(values);\n }\n\n return list;\n }\n\n private _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 ViewerHelper) {\n gui = gui.getFolder(\"Viewer\").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(targetName(target), target.uuid).close();\n }\n\n this._addGUI(gui, propsList, target);\n return target;\n }\n\n private _addGUI(gui: GUI, list: [string, any][][], target: Object, dir: string = \"\") {\n if (dir) {\n gui = gui.getFolder(dir) || gui.addFolder(dir).close();\n }\n\n const source = target;\n for (const props of list) {\n target = this._targetMap.get(props) || source;\n\n for (const [k, prop] of props) {\n let value = target[k] == null ? prop.value : target[k];\n if (value == null || (prop.parent && target[prop.parent] == null)) {\n continue;\n }\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._addGUI(folder, this._getPropertiesList(value), target, k);\n }\n\n if (Array.isArray(value)) {\n this._addGUI(folder, [value.map((_, i) => [i.toString(), {}])], value, k);\n }\n else {\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 ins = folder.addTexture(target, k);\n ins.getImage = (texture, w, h) => this._renderSprite(texture, w, h);\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 }\n\n private _uninspect(target: uuidObject) {\n let gui = this._gui;\n 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\nfunction targetName(target: uuidObject) {\n return target.name || target.constructor.name || target.type;\n}\n\nfunction propsSort(props: Object) {\n const order = v => v.order || 10000;\n const values = Object.entries<any>(props);\n const array0 = values.filter(v => !v[1].dir).sort((a, b) => order(a[1]) - order(b[1]));\n const array1 = values.filter(v => v[1].dir).sort((a, b) => order(a[1]) - order(b[1]));\n return array0.concat(array1);\n}\n\nconst materialProperties = {\n visible: { order: 1 },\n transparent: { order: 2 },\n side: { order: 3, value: { FrontSide: 0, BackSide: 1, DoubleSide: 2 } },\n color: { order: 4, dir: \"diffuse\" },\n opacity: { order: 5, 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 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\", step: 0.01, parent: \"normalMap \" },\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, parent: \"envMap\" },\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 { Mount } from \"@xviewer.js/core\";\nimport { Panel, Stats as Stats_ } from \"./stats/Stats\";\n\nexport class Stats extends Mount {\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 onLoad() {\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 \n onDestroy() {\n document.body.removeChild(this._stats.dom);\n }\n\n update(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}","import { BoxProjection, Mount } from \"@xviewer.js/core\";\nimport { Box3, Box3Helper } from \"three\";\n\nexport class BoxProjectionHelper extends Mount {\n private _box3: Box3;\n private _helper: Box3Helper;\n private _target: BoxProjection;\n\n onLoad(): void {\n this._box3 = new Box3();\n this._target = this.viewer.mount(BoxProjection);\n this._helper = this.viewer.add(new Box3Helper(this._box3));\n }\n\n onEnable(): void {\n this._helper.visible = true;\n }\n\n onDisable(): void {\n this._helper.visible = false;\n }\n\n update(dt: number): void {\n const { center, boxMin, boxMax } = this._target;\n this._box3.min.copy(center).add(boxMin);\n this._box3.max.copy(center).add(boxMax);\n this._helper.updateMatrixWorld();\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","checkDisplay","_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","needsUpdateDisplay","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","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","w","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","height","canvas","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","_context","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","set","getContext","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","_autoRefresh","$canvas","context","texture","image","$label","title","sourceFile","getImage","h","drawImage","group","label","depth","block","GUI","$1","addColor","addTexture","addVector","addCurve","addFolder","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","ViewerHelper","ObjectInstance","outputColorSpace","_renderer","toneMapping","toneMappingExposure","shadows","shadowMap","backgroundBlurriness","_scene","environment","environmentIntensity","environmentRotation","copy","background","backgroundRotation","targetFrameRate","_viewer","viewer","scene","renderer","SRGBColorSpace","LinearSRGBColorSpace","DisplayP3ColorSpace","LinearDisplayP3ColorSpace","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","Texture","Inspector","Mount","onLoad","Scene","_camera","OrthographicCamera","_gui","_inspect","_addSprite","onDestroy","_refCntMap","_targetMap","dt","_updateFolders","top","bottom","updateProjectionMatrix","_sprite","Sprite","scale","Vector3","position","visible","_renderScene","autoClearDepth","autoClearColor","_renderSprite","material","refCntMap","setState","get","_","k","traverseComponents","traverseMaterials","_uninspect","delete","_getPropertiesList","list","props","PropertyManager","_getMergedProperties","propsSort","ShaderMaterial","create","uniforms","defineProperty","dir","propsList","gui","Component","Material","uuid","targetName","_addGUI","source","prop","_hasProperties","type","ins","isColor","isAnimationCurve","isVector2","isVector3","isVector4","isEuler","isTexture","Map","order","entries","array0","filter","array1","materialProperties","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","_stats","_dcPanel","_texPanel","_triPanel","_prgPanel","info","calls","triangles","textures","programs","Stats_","BoxProjectionHelper","_box3","Box3","mount","BoxProjection","_helper","Box3Helper","onEnable","onDisable","center","boxMin","boxMax","updateMatrixWorld"],"mappings":"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","x_google_ignoreList":[0,18]}