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