diff --git a/build/aframe-html.js b/build/aframe-html.js index 11fe85a..fbf0793 100644 --- a/build/aframe-html.js +++ b/build/aframe-html.js @@ -54,7 +54,16 @@ this.dom = dom; this.anisotropy = 16; - this.encoding = three.sRGBEncoding; + if ( THREE.REVISION === '147' ) { // Keep compatibility with aframe 1.4.2 + + this.encoding = three.sRGBEncoding; + + } else { + + this.colorSpace = three.SRGBColorSpace; + + } + this.minFilter = three.LinearFilter; this.magFilter = three.LinearFilter; diff --git a/build/aframe-html.js.map b/build/aframe-html.js.map index 08f9958..a24c684 100644 --- a/build/aframe-html.js.map +++ b/build/aframe-html.js.map @@ -1 +1 @@ -{"version":3,"file":"aframe-html.js","sources":["../src/HTMLMesh.js","../src/aframe-html.js"],"sourcesContent":["// This is a copy of https://github.com/mrdoob/three.js/blob/0403020848c26a9605eb91c99a949111ad4a532e/examples/jsm/interactive/HTMLMesh.js\n// with the following changes:\n// - Revert back to using \"this.encoding = sRGBEncoding\" instead of \"this.colorSpace = SRGBColorSpace;\" for compatibility with three r147 aframe 1.4.2\n// - window.dispatchEvent line commented, see the TODO below.\n// Look at https://github.com/mrdoob/three.js/commits/dev/examples/jsm/interactive/HTMLMesh.js\n// to see if there are other changes that can be retrieved here.\nimport {\n\tCanvasTexture,\n\tLinearFilter,\n\tMesh,\n\tMeshBasicMaterial,\n\tPlaneGeometry,\n\tsRGBEncoding,\n\tColor\n} from 'three';\n\nclass HTMLMesh extends Mesh {\n\n\tconstructor( dom ) {\n\n\t\tconst texture = new HTMLTexture( dom );\n\n\t\tconst geometry = new PlaneGeometry( texture.image.width * 0.001, texture.image.height * 0.001 );\n\t\tconst material = new MeshBasicMaterial( { map: texture, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tfunction onEvent( event ) {\n\n\t\t\tmaterial.map.dispatchDOMEvent( event );\n\n\t\t}\n\n\t\tthis.addEventListener( 'mousedown', onEvent );\n\t\tthis.addEventListener( 'mousemove', onEvent );\n\t\tthis.addEventListener( 'mouseup', onEvent );\n\t\tthis.addEventListener( 'click', onEvent );\n\n\t\tthis.dispose = function () {\n\n\t\t\tgeometry.dispose();\n\t\t\tmaterial.dispose();\n\n\t\t\tmaterial.map.dispose();\n\n\t\t\tcanvases.delete( dom );\n\n\t\t\tthis.removeEventListener( 'mousedown', onEvent );\n\t\t\tthis.removeEventListener( 'mousemove', onEvent );\n\t\t\tthis.removeEventListener( 'mouseup', onEvent );\n\t\t\tthis.removeEventListener( 'click', onEvent );\n\n\t\t};\n\n\t}\n\n}\n\nclass HTMLTexture extends CanvasTexture {\n\n\tconstructor( dom ) {\n\n\t\tsuper( html2canvas( dom ) );\n\n\t\tthis.dom = dom;\n\n\t\tthis.anisotropy = 16;\n\t\tthis.encoding = sRGBEncoding;\n\t\tthis.minFilter = LinearFilter;\n\t\tthis.magFilter = LinearFilter;\n\n\t\t// Create an observer on the DOM, and run html2canvas update in the next loop\n\t\tconst observer = new MutationObserver( () => {\n\n\t\t\tif ( ! this.scheduleUpdate ) {\n\n\t\t\t\t// ideally should use xr.requestAnimationFrame, here setTimeout to avoid passing the renderer\n\t\t\t\tthis.scheduleUpdate = setTimeout( () => this.update(), 16 );\n\n\t\t\t}\n\n\t\t} );\n\n\t\tconst config = { attributes: true, childList: true, subtree: true, characterData: true };\n\t\tobserver.observe( dom, config );\n\n\t\tthis.observer = observer;\n\n\t}\n\n\tdispatchDOMEvent( event ) {\n\n\t\tif ( event.data ) {\n\n\t\t\thtmlevent( this.dom, event.type, event.data.x, event.data.y );\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tthis.image = html2canvas( this.dom );\n\t\tthis.needsUpdate = true;\n\n\t\tthis.scheduleUpdate = null;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.observer ) {\n\n\t\t\tthis.observer.disconnect();\n\n\t\t}\n\n\t\tthis.scheduleUpdate = clearTimeout( this.scheduleUpdate );\n\n\t\tsuper.dispose();\n\n\t}\n\n}\n\n\n//\n\nconst canvases = new WeakMap();\n\nfunction html2canvas( element ) {\n\n\tconst range = document.createRange();\n\tconst color = new Color();\n\n\tfunction Clipper( context ) {\n\n\t\tconst clips = [];\n\t\tlet isClipping = false;\n\n\t\tfunction doClip() {\n\n\t\t\tif ( isClipping ) {\n\n\t\t\t\tisClipping = false;\n\t\t\t\tcontext.restore();\n\n\t\t\t}\n\n\t\t\tif ( clips.length === 0 ) return;\n\n\t\t\tlet minX = - Infinity, minY = - Infinity;\n\t\t\tlet maxX = Infinity, maxY = Infinity;\n\n\t\t\tfor ( let i = 0; i < clips.length; i ++ ) {\n\n\t\t\t\tconst clip = clips[ i ];\n\n\t\t\t\tminX = Math.max( minX, clip.x );\n\t\t\t\tminY = Math.max( minY, clip.y );\n\t\t\t\tmaxX = Math.min( maxX, clip.x + clip.width );\n\t\t\t\tmaxY = Math.min( maxY, clip.y + clip.height );\n\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.beginPath();\n\t\t\tcontext.rect( minX, minY, maxX - minX, maxY - minY );\n\t\t\tcontext.clip();\n\n\t\t\tisClipping = true;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tadd: function ( clip ) {\n\n\t\t\t\tclips.push( clip );\n\t\t\t\tdoClip();\n\n\t\t\t},\n\n\t\t\tremove: function () {\n\n\t\t\t\tclips.pop();\n\t\t\t\tdoClip();\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction drawText( style, x, y, string ) {\n\n\t\tif ( string !== '' ) {\n\n\t\t\tif ( style.textTransform === 'uppercase' ) {\n\n\t\t\t\tstring = string.toUpperCase();\n\n\t\t\t}\n\n\t\t\tcontext.font = style.fontWeight + ' ' + style.fontSize + ' ' + style.fontFamily;\n\t\t\tcontext.textBaseline = 'top';\n\t\t\tcontext.fillStyle = style.color;\n\t\t\tcontext.fillText( string, x, y + parseFloat( style.fontSize ) * 0.1 );\n\n\t\t}\n\n\t}\n\n\tfunction buildRectPath( x, y, w, h, r ) {\n\n\t\tif ( w < 2 * r ) r = w / 2;\n\t\tif ( h < 2 * r ) r = h / 2;\n\n\t\tcontext.beginPath();\n\t\tcontext.moveTo( x + r, y );\n\t\tcontext.arcTo( x + w, y, x + w, y + h, r );\n\t\tcontext.arcTo( x + w, y + h, x, y + h, r );\n\t\tcontext.arcTo( x, y + h, x, y, r );\n\t\tcontext.arcTo( x, y, x + w, y, r );\n\t\tcontext.closePath();\n\n\t}\n\n\tfunction drawBorder( style, which, x, y, width, height ) {\n\n\t\tconst borderWidth = style[ which + 'Width' ];\n\t\tconst borderStyle = style[ which + 'Style' ];\n\t\tconst borderColor = style[ which + 'Color' ];\n\n\t\tif ( borderWidth !== '0px' && borderStyle !== 'none' && borderColor !== 'transparent' && borderColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\tcontext.strokeStyle = borderColor;\n\t\t\tcontext.lineWidth = parseFloat( borderWidth );\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo( x, y );\n\t\t\tcontext.lineTo( x + width, y + height );\n\t\t\tcontext.stroke();\n\n\t\t}\n\n\t}\n\n\tfunction drawElement( element, style ) {\n\n\t\tlet x = 0, y = 0, width = 0, height = 0;\n\n\t\tif ( element.nodeType === Node.TEXT_NODE ) {\n\n\t\t\t// text\n\n\t\t\trange.selectNode( element );\n\n\t\t\tconst rect = range.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tdrawText( style, x, y, element.nodeValue.trim() );\n\n\t\t} else if ( element.nodeType === Node.COMMENT_NODE ) {\n\n\t\t\treturn;\n\n\t\t} else if ( element instanceof HTMLCanvasElement ) {\n\n\t\t\t// Canvas element\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\n\t\t context.save();\n\t\t\tconst dpr = window.devicePixelRatio;\n\t\t\tcontext.scale( 1 / dpr, 1 / dpr );\n\t\t\tcontext.drawImage( element, x, y );\n\t\t\tcontext.restore();\n\n\t\t} else if ( element instanceof HTMLImageElement ) {\n\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tcontext.drawImage( element, x, y, width, height );\n\n\t\t} else {\n\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tstyle = window.getComputedStyle( element );\n\n\t\t\t// Get the border of the element used for fill and border\n\n\t\t\tbuildRectPath( x, y, width, height, parseFloat( style.borderRadius ) );\n\n\t\t\tconst backgroundColor = style.backgroundColor;\n\n\t\t\tif ( backgroundColor !== 'transparent' && backgroundColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\t\tcontext.fillStyle = backgroundColor;\n\t\t\t\tcontext.fill();\n\n\t\t\t}\n\n\t\t\t// If all the borders match then stroke the round rectangle\n\n\t\t\tconst borders = [ 'borderTop', 'borderLeft', 'borderBottom', 'borderRight' ];\n\n\t\t\tlet match = true;\n\t\t\tlet prevBorder = null;\n\n\t\t\tfor ( const border of borders ) {\n\n\t\t\t\tif ( prevBorder !== null ) {\n\n\t\t\t\t\tmatch = ( style[ border + 'Width' ] === style[ prevBorder + 'Width' ] ) &&\n\t\t\t\t\t( style[ border + 'Color' ] === style[ prevBorder + 'Color' ] ) &&\n\t\t\t\t\t( style[ border + 'Style' ] === style[ prevBorder + 'Style' ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( match === false ) break;\n\n\t\t\t\tprevBorder = border;\n\n\t\t\t}\n\n\t\t\tif ( match === true ) {\n\n\t\t\t\t// They all match so stroke the rectangle from before allows for border-radius\n\n\t\t\t\tconst width = parseFloat( style.borderTopWidth );\n\n\t\t\t\tif ( style.borderTopWidth !== '0px' && style.borderTopStyle !== 'none' && style.borderTopColor !== 'transparent' && style.borderTopColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\t\t\tcontext.strokeStyle = style.borderTopColor;\n\t\t\t\t\tcontext.lineWidth = width;\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Otherwise draw individual borders\n\n\t\t\t\tdrawBorder( style, 'borderTop', x, y, width, 0 );\n\t\t\t\tdrawBorder( style, 'borderLeft', x, y, 0, height );\n\t\t\t\tdrawBorder( style, 'borderBottom', x, y + height, width, 0 );\n\t\t\t\tdrawBorder( style, 'borderRight', x + width, y, 0, height );\n\n\t\t\t}\n\n\t\t\tif ( element instanceof HTMLInputElement ) {\n\n\t\t\t\tlet accentColor = style.accentColor;\n\n\t\t\t\tif ( accentColor === undefined || accentColor === 'auto' ) accentColor = style.color;\n\n\t\t\t\tcolor.set( accentColor );\n\n\t\t\t\tconst luminance = Math.sqrt( 0.299 * ( color.r ** 2 ) + 0.587 * ( color.g ** 2 ) + 0.114 * ( color.b ** 2 ) );\n\t\t\t\tconst accentTextColor = luminance < 0.5 ? 'white' : '#111111';\n\n\t\t\t\tif ( element.type === 'radio' ) {\n\n\t\t\t\t\tbuildRectPath( x, y, width, height, height );\n\n\t\t\t\t\tcontext.fillStyle = 'white';\n\t\t\t\t\tcontext.strokeStyle = accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.fill();\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\tif ( element.checked ) {\n\n\t\t\t\t\t\tbuildRectPath( x + 2, y + 2, width - 4, height - 4, height );\n\n\t\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\t\tcontext.strokeStyle = accentTextColor;\n\t\t\t\t\t\tcontext.lineWidth = 2;\n\t\t\t\t\t\tcontext.fill();\n\t\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'checkbox' ) {\n\n\t\t\t\t\tbuildRectPath( x, y, width, height, 2 );\n\n\t\t\t\t\tcontext.fillStyle = element.checked ? accentColor : 'white';\n\t\t\t\t\tcontext.strokeStyle = element.checked ? accentTextColor : accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.stroke();\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t\tif ( element.checked ) {\n\n\t\t\t\t\t\tconst currentTextAlign = context.textAlign;\n\n\t\t\t\t\t\tcontext.textAlign = 'center';\n\n\t\t\t\t\t\tconst properties = {\n\t\t\t\t\t\t\tcolor: accentTextColor,\n\t\t\t\t\t\t\tfontFamily: style.fontFamily,\n\t\t\t\t\t\t\tfontSize: height + 'px',\n\t\t\t\t\t\t\tfontWeight: 'bold'\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tdrawText( properties, x + ( width / 2 ), y, '✔' );\n\n\t\t\t\t\t\tcontext.textAlign = currentTextAlign;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'range' ) {\n\n\t\t\t\t\tconst [ min, max, value ] = [ 'min', 'max', 'value' ].map( property => parseFloat( element[ property ] ) );\n\t\t\t\t\tconst position = ( ( value - min ) / ( max - min ) ) * ( width - height );\n\n\t\t\t\t\tbuildRectPath( x, y + ( height / 4 ), width, height / 2, height / 4 );\n\t\t\t\t\tcontext.fillStyle = accentTextColor;\n\t\t\t\t\tcontext.strokeStyle = accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.fill();\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\tbuildRectPath( x, y + ( height / 4 ), position + ( height / 2 ), height / 2, height / 4 );\n\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t\tbuildRectPath( x + position, y, height, height, height / 2 );\n\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'color' || element.type === 'text' || element.type === 'number' ) {\n\n\t\t\t\t\tclipper.add( { x: x, y: y, width: width, height: height } );\n\n\t\t\t\t\tdrawText( style, x + parseInt( style.paddingLeft ), y + parseInt( style.paddingTop ), element.value );\n\n\t\t\t\t\tclipper.remove();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/*\n\t\t// debug\n\t\tcontext.strokeStyle = '#' + Math.random().toString( 16 ).slice( - 3 );\n\t\tcontext.strokeRect( x - 0.5, y - 0.5, width + 1, height + 1 );\n\t\t*/\n\n\t\tconst isClipping = style.overflow === 'auto' || style.overflow === 'hidden';\n\n\t\tif ( isClipping ) clipper.add( { x: x, y: y, width: width, height: height } );\n\n\t\tfor ( let i = 0; i < element.childNodes.length; i ++ ) {\n\n\t\t\tdrawElement( element.childNodes[ i ], style );\n\n\t\t}\n\n\t\tif ( isClipping ) clipper.remove();\n\n\t}\n\n\tconst offset = element.getBoundingClientRect();\n\n\tlet canvas = canvases.get( element );\n\n\tif ( canvas === undefined ) {\n\n\t\tcanvas = document.createElement( 'canvas' );\n\t\tcanvas.width = offset.width;\n\t\tcanvas.height = offset.height;\n\t\tcanvases.set( element, canvas );\n\n\t}\n\n\tconst context = canvas.getContext( '2d'/*, { alpha: false }*/ );\n\n\tconst clipper = new Clipper( context );\n\n\t// console.time( 'drawElement' );\n\n\tcontext.clearRect(0, 0, canvas.width, canvas.height);\n\n\tdrawElement( element );\n\n\t// console.timeEnd( 'drawElement' );\n\n\treturn canvas;\n\n}\n\nfunction htmlevent( element, event, x, y ) {\n\n\tconst mouseEventInit = {\n\t\tclientX: ( x * element.offsetWidth ) + element.offsetLeft,\n\t\tclientY: ( y * element.offsetHeight ) + element.offsetTop,\n\t\tview: element.ownerDocument.defaultView\n\t};\n\n\t// TODO: Find out why this is added. Keep commented out when this file is updated\n\t// window.dispatchEvent( new MouseEvent( event, mouseEventInit ) );\n\n\tconst rect = element.getBoundingClientRect();\n\n\tx = x * rect.width + rect.left;\n\ty = y * rect.height + rect.top;\n\n\tfunction traverse( element ) {\n\n\t\tif ( element.nodeType !== Node.TEXT_NODE && element.nodeType !== Node.COMMENT_NODE ) {\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tif ( x > rect.left && x < rect.right && y > rect.top && y < rect.bottom ) {\n\n\t\t\t\telement.dispatchEvent( new MouseEvent( event, mouseEventInit ) );\n\n\t\t\t\tif ( element instanceof HTMLInputElement && element.type === 'range' && ( event === 'mousedown' || event === 'click' ) ) {\n\n\t\t\t\t\tconst [ min, max ] = [ 'min', 'max' ].map( property => parseFloat( element[ property ] ) );\n\n\t\t\t\t\tconst width = rect.width;\n\t\t\t\t\tconst offsetX = x - rect.x;\n\t\t\t\t\tconst proportion = offsetX / width;\n\t\t\t\t\telement.value = min + ( max - min ) * proportion;\n\t\t\t\t\telement.dispatchEvent( new InputEvent( 'input', { bubbles: true } ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < element.childNodes.length; i ++ ) {\n\n\t\t\t\ttraverse( element.childNodes[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttraverse( element );\n\n}\n\nexport { HTMLMesh };\n","/* jshint esversion: 9, -W097 */\n/* For dealing with spline curves */\n/* global THREE, AFRAME, setTimeout, console */\n'use strict';\n\nimport { HTMLMesh } from './HTMLMesh.js';\n\nconst schemaHTML = {\n\thtml: {\n\t\ttype: 'selector',\n\t},\n\tcursor: {\n\t\ttype: 'selector',\n\t}\n};\n\ndocumentation:\n{\n\tschemaHTML.html.description = `HTML element to use.`;\n\tschemaHTML.cursor.description = `Visual indicator for where the user is currently pointing`;\n}\n\nconst _pointer = new THREE.Vector2();\nconst _event = { type: '', data: _pointer };\nAFRAME.registerComponent('html', {\n\tschema: schemaHTML,\n\tinit() {\n\t\tthis.rerender = this.rerender.bind(this);\n\t\tthis.handle = this.handle.bind(this);\n\t\tthis.onClick = e => this.handle('click', e);\n\t\tthis.onMouseLeave = e => this.handle('mouseleave', e);\n\t\tthis.onMouseEnter = e => this.handle('mouseenter', e);\n\t\tthis.onMouseUp = e => this.handle('mouseup', e);\n\t\tthis.onMouseDown = e => this.handle('mousedown', e);\n\t\tthis.mouseMoveDetail = {\n\t\t\tdetail: {\n\t\t\t\tcursorEl: null,\n\t\t\t\tintersection: null\n\t\t\t}\n\t\t};\n\t},\n\tplay() {\n\t\tthis.el.addEventListener('click', this.onClick);\n\t\tthis.el.addEventListener('mouseleave', this.onMouseLeave);\n\t\tthis.el.addEventListener('mouseenter', this.onMouseEnter);\n\t\tthis.el.addEventListener('mouseup', this.onMouseUp);\n\t\tthis.el.addEventListener('mousedown', this.onMouseDown);\n\t},\n\tpause() {\n\t\tthis.el.removeEventListener('click', this.onClick);\n\t\tthis.el.removeEventListener('mouseleave', this.onMouseLeave);\n\t\tthis.el.removeEventListener('mouseenter', this.onMouseEnter);\n\t\tthis.el.removeEventListener('mouseup', this.onMouseUp);\n\t\tthis.el.removeEventListener('mousedown', this.onMouseDown);\n\t},\n\tupdate() {\n\t\tthis.remove();\n\t\tif (!this.data.html) return;\n\t\tconst mesh = new HTMLMesh(this.data.html);\n\t\tthis.el.setObject3D('html', mesh);\n\t\tthis.data.html.addEventListener('input', this.rerender);\n\t\tthis.data.html.addEventListener('change', this.rerender);\n\t\tthis.cursor = this.data.cursor ? this.data.cursor.object3D : null;\n\t},\n\ttick() {\n\t\tif (this.activeRaycaster) {\n\t\t\tconst intersection = this.activeRaycaster.components.raycaster.getIntersection(this.el);\n\t\t\tthis.mouseMoveDetail.detail.cursorEl = this.activeRaycaster;\n\t\t\tthis.mouseMoveDetail.detail.intersection = intersection;\n\t\t\tthis.handle('mousemove', this.mouseMoveDetail);\n\t\t}\n\t},\n\thandle(type, evt) {\n\t\tconst intersection = evt.detail.intersection;\n\t\tconst raycaster = evt.detail.cursorEl;\n\t\tif (type === 'mouseenter') {\n\t\t\tthis.activeRaycaster = raycaster;\n\t\t}\n\t\tif (type === 'mouseleave' && this.activeRaycaster === raycaster) {\n\t\t\tthis.activeRaycaster = null;\n\t\t}\n\t\tif (this.cursor) this.cursor.visible = false;\n\t\tif (intersection) {\n\t\t\tconst mesh = this.el.getObject3D('html');\n\t\t\tconst uv = intersection.uv;\n\t\t\t_event.type = type;\n\t\t\t_event.data.set( uv.x, 1 - uv.y );\n\t\t\tmesh.dispatchEvent( _event );\n\n\t\t\tif (this.cursor) {\n\t\t\t\tthis.cursor.visible = true;\n\t\t\t\tthis.cursor.parent.worldToLocal(this.cursor.position.copy(intersection.point));\n\t\t\t}\n\t\t}\n\t},\n\trerender() {\n\t\tconst mesh = this.el.getObject3D('html');\n\t\tif (mesh && !mesh.material.map.scheduleUpdate) {\n\t\t\tmesh.material.map.scheduleUpdate = setTimeout( () => mesh.material.map.update(), 16 );\n\t\t}\n\t},\n\tremove() {\n\t\tconst mesh = this.el.getObject3D('html');\n\t\tif (mesh) {\n\t\t\tthis.el.removeObject3D('html');\n\t\t\tthis.data.html.removeEventListener('input', this.rerender);\n\t\t\tthis.data.html.removeEventListener('change', this.rerender);\n\t\t\tmesh.dispose();\n\t\t}\n\t\tthis.activeRaycaster = null;\n\t\tthis.mouseMoveDetail.detail.cursorEl = null;\n\t\tthis.mouseMoveDetail.detail.intersection = null;\n\t\tthis.cursor = null;\n\t},\n});\n"],"names":["Mesh","PlaneGeometry","MeshBasicMaterial","CanvasTexture","sRGBEncoding","LinearFilter","Color"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"aframe-html.js","sources":["../src/HTMLMesh.js","../src/aframe-html.js"],"sourcesContent":["// This is a copy of https://github.com/mrdoob/three.js/blob/0403020848c26a9605eb91c99a949111ad4a532e/examples/jsm/interactive/HTMLMesh.js\n// with the following changes:\n// - Keep compatibility with three r147 aframe 1.4.2, still using \"this.encoding = sRGBEncoding\", otherwise using \"this.colorSpace = SRGBColorSpace;\"\n// - window.dispatchEvent line commented, see the TODO below.\n// Look at https://github.com/mrdoob/three.js/commits/dev/examples/jsm/interactive/HTMLMesh.js\n// to see if there are other changes that can be retrieved here.\nimport {\n\tCanvasTexture,\n\tLinearFilter,\n\tMesh,\n\tMeshBasicMaterial,\n\tPlaneGeometry,\n\tSRGBColorSpace,\n\tsRGBEncoding,\n\tColor\n} from 'three';\n\nclass HTMLMesh extends Mesh {\n\n\tconstructor( dom ) {\n\n\t\tconst texture = new HTMLTexture( dom );\n\n\t\tconst geometry = new PlaneGeometry( texture.image.width * 0.001, texture.image.height * 0.001 );\n\t\tconst material = new MeshBasicMaterial( { map: texture, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tfunction onEvent( event ) {\n\n\t\t\tmaterial.map.dispatchDOMEvent( event );\n\n\t\t}\n\n\t\tthis.addEventListener( 'mousedown', onEvent );\n\t\tthis.addEventListener( 'mousemove', onEvent );\n\t\tthis.addEventListener( 'mouseup', onEvent );\n\t\tthis.addEventListener( 'click', onEvent );\n\n\t\tthis.dispose = function () {\n\n\t\t\tgeometry.dispose();\n\t\t\tmaterial.dispose();\n\n\t\t\tmaterial.map.dispose();\n\n\t\t\tcanvases.delete( dom );\n\n\t\t\tthis.removeEventListener( 'mousedown', onEvent );\n\t\t\tthis.removeEventListener( 'mousemove', onEvent );\n\t\t\tthis.removeEventListener( 'mouseup', onEvent );\n\t\t\tthis.removeEventListener( 'click', onEvent );\n\n\t\t};\n\n\t}\n\n}\n\nclass HTMLTexture extends CanvasTexture {\n\n\tconstructor( dom ) {\n\n\t\tsuper( html2canvas( dom ) );\n\n\t\tthis.dom = dom;\n\n\t\tthis.anisotropy = 16;\n\t\tif ( THREE.REVISION === '147' ) { // Keep compatibility with aframe 1.4.2\n\n\t\t\tthis.encoding = sRGBEncoding;\n\n\t\t} else {\n\n\t\t\tthis.colorSpace = SRGBColorSpace;\n\n\t\t}\n\n\t\tthis.minFilter = LinearFilter;\n\t\tthis.magFilter = LinearFilter;\n\n\t\t// Create an observer on the DOM, and run html2canvas update in the next loop\n\t\tconst observer = new MutationObserver( () => {\n\n\t\t\tif ( ! this.scheduleUpdate ) {\n\n\t\t\t\t// ideally should use xr.requestAnimationFrame, here setTimeout to avoid passing the renderer\n\t\t\t\tthis.scheduleUpdate = setTimeout( () => this.update(), 16 );\n\n\t\t\t}\n\n\t\t} );\n\n\t\tconst config = { attributes: true, childList: true, subtree: true, characterData: true };\n\t\tobserver.observe( dom, config );\n\n\t\tthis.observer = observer;\n\n\t}\n\n\tdispatchDOMEvent( event ) {\n\n\t\tif ( event.data ) {\n\n\t\t\thtmlevent( this.dom, event.type, event.data.x, event.data.y );\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tthis.image = html2canvas( this.dom );\n\t\tthis.needsUpdate = true;\n\n\t\tthis.scheduleUpdate = null;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.observer ) {\n\n\t\t\tthis.observer.disconnect();\n\n\t\t}\n\n\t\tthis.scheduleUpdate = clearTimeout( this.scheduleUpdate );\n\n\t\tsuper.dispose();\n\n\t}\n\n}\n\n\n//\n\nconst canvases = new WeakMap();\n\nfunction html2canvas( element ) {\n\n\tconst range = document.createRange();\n\tconst color = new Color();\n\n\tfunction Clipper( context ) {\n\n\t\tconst clips = [];\n\t\tlet isClipping = false;\n\n\t\tfunction doClip() {\n\n\t\t\tif ( isClipping ) {\n\n\t\t\t\tisClipping = false;\n\t\t\t\tcontext.restore();\n\n\t\t\t}\n\n\t\t\tif ( clips.length === 0 ) return;\n\n\t\t\tlet minX = - Infinity, minY = - Infinity;\n\t\t\tlet maxX = Infinity, maxY = Infinity;\n\n\t\t\tfor ( let i = 0; i < clips.length; i ++ ) {\n\n\t\t\t\tconst clip = clips[ i ];\n\n\t\t\t\tminX = Math.max( minX, clip.x );\n\t\t\t\tminY = Math.max( minY, clip.y );\n\t\t\t\tmaxX = Math.min( maxX, clip.x + clip.width );\n\t\t\t\tmaxY = Math.min( maxY, clip.y + clip.height );\n\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.beginPath();\n\t\t\tcontext.rect( minX, minY, maxX - minX, maxY - minY );\n\t\t\tcontext.clip();\n\n\t\t\tisClipping = true;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tadd: function ( clip ) {\n\n\t\t\t\tclips.push( clip );\n\t\t\t\tdoClip();\n\n\t\t\t},\n\n\t\t\tremove: function () {\n\n\t\t\t\tclips.pop();\n\t\t\t\tdoClip();\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction drawText( style, x, y, string ) {\n\n\t\tif ( string !== '' ) {\n\n\t\t\tif ( style.textTransform === 'uppercase' ) {\n\n\t\t\t\tstring = string.toUpperCase();\n\n\t\t\t}\n\n\t\t\tcontext.font = style.fontWeight + ' ' + style.fontSize + ' ' + style.fontFamily;\n\t\t\tcontext.textBaseline = 'top';\n\t\t\tcontext.fillStyle = style.color;\n\t\t\tcontext.fillText( string, x, y + parseFloat( style.fontSize ) * 0.1 );\n\n\t\t}\n\n\t}\n\n\tfunction buildRectPath( x, y, w, h, r ) {\n\n\t\tif ( w < 2 * r ) r = w / 2;\n\t\tif ( h < 2 * r ) r = h / 2;\n\n\t\tcontext.beginPath();\n\t\tcontext.moveTo( x + r, y );\n\t\tcontext.arcTo( x + w, y, x + w, y + h, r );\n\t\tcontext.arcTo( x + w, y + h, x, y + h, r );\n\t\tcontext.arcTo( x, y + h, x, y, r );\n\t\tcontext.arcTo( x, y, x + w, y, r );\n\t\tcontext.closePath();\n\n\t}\n\n\tfunction drawBorder( style, which, x, y, width, height ) {\n\n\t\tconst borderWidth = style[ which + 'Width' ];\n\t\tconst borderStyle = style[ which + 'Style' ];\n\t\tconst borderColor = style[ which + 'Color' ];\n\n\t\tif ( borderWidth !== '0px' && borderStyle !== 'none' && borderColor !== 'transparent' && borderColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\tcontext.strokeStyle = borderColor;\n\t\t\tcontext.lineWidth = parseFloat( borderWidth );\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo( x, y );\n\t\t\tcontext.lineTo( x + width, y + height );\n\t\t\tcontext.stroke();\n\n\t\t}\n\n\t}\n\n\tfunction drawElement( element, style ) {\n\n\t\tlet x = 0, y = 0, width = 0, height = 0;\n\n\t\tif ( element.nodeType === Node.TEXT_NODE ) {\n\n\t\t\t// text\n\n\t\t\trange.selectNode( element );\n\n\t\t\tconst rect = range.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tdrawText( style, x, y, element.nodeValue.trim() );\n\n\t\t} else if ( element.nodeType === Node.COMMENT_NODE ) {\n\n\t\t\treturn;\n\n\t\t} else if ( element instanceof HTMLCanvasElement ) {\n\n\t\t\t// Canvas element\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\n\t\t context.save();\n\t\t\tconst dpr = window.devicePixelRatio;\n\t\t\tcontext.scale( 1 / dpr, 1 / dpr );\n\t\t\tcontext.drawImage( element, x, y );\n\t\t\tcontext.restore();\n\n\t\t} else if ( element instanceof HTMLImageElement ) {\n\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tcontext.drawImage( element, x, y, width, height );\n\n\t\t} else {\n\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tstyle = window.getComputedStyle( element );\n\n\t\t\t// Get the border of the element used for fill and border\n\n\t\t\tbuildRectPath( x, y, width, height, parseFloat( style.borderRadius ) );\n\n\t\t\tconst backgroundColor = style.backgroundColor;\n\n\t\t\tif ( backgroundColor !== 'transparent' && backgroundColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\t\tcontext.fillStyle = backgroundColor;\n\t\t\t\tcontext.fill();\n\n\t\t\t}\n\n\t\t\t// If all the borders match then stroke the round rectangle\n\n\t\t\tconst borders = [ 'borderTop', 'borderLeft', 'borderBottom', 'borderRight' ];\n\n\t\t\tlet match = true;\n\t\t\tlet prevBorder = null;\n\n\t\t\tfor ( const border of borders ) {\n\n\t\t\t\tif ( prevBorder !== null ) {\n\n\t\t\t\t\tmatch = ( style[ border + 'Width' ] === style[ prevBorder + 'Width' ] ) &&\n\t\t\t\t\t( style[ border + 'Color' ] === style[ prevBorder + 'Color' ] ) &&\n\t\t\t\t\t( style[ border + 'Style' ] === style[ prevBorder + 'Style' ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( match === false ) break;\n\n\t\t\t\tprevBorder = border;\n\n\t\t\t}\n\n\t\t\tif ( match === true ) {\n\n\t\t\t\t// They all match so stroke the rectangle from before allows for border-radius\n\n\t\t\t\tconst width = parseFloat( style.borderTopWidth );\n\n\t\t\t\tif ( style.borderTopWidth !== '0px' && style.borderTopStyle !== 'none' && style.borderTopColor !== 'transparent' && style.borderTopColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\t\t\tcontext.strokeStyle = style.borderTopColor;\n\t\t\t\t\tcontext.lineWidth = width;\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Otherwise draw individual borders\n\n\t\t\t\tdrawBorder( style, 'borderTop', x, y, width, 0 );\n\t\t\t\tdrawBorder( style, 'borderLeft', x, y, 0, height );\n\t\t\t\tdrawBorder( style, 'borderBottom', x, y + height, width, 0 );\n\t\t\t\tdrawBorder( style, 'borderRight', x + width, y, 0, height );\n\n\t\t\t}\n\n\t\t\tif ( element instanceof HTMLInputElement ) {\n\n\t\t\t\tlet accentColor = style.accentColor;\n\n\t\t\t\tif ( accentColor === undefined || accentColor === 'auto' ) accentColor = style.color;\n\n\t\t\t\tcolor.set( accentColor );\n\n\t\t\t\tconst luminance = Math.sqrt( 0.299 * ( color.r ** 2 ) + 0.587 * ( color.g ** 2 ) + 0.114 * ( color.b ** 2 ) );\n\t\t\t\tconst accentTextColor = luminance < 0.5 ? 'white' : '#111111';\n\n\t\t\t\tif ( element.type === 'radio' ) {\n\n\t\t\t\t\tbuildRectPath( x, y, width, height, height );\n\n\t\t\t\t\tcontext.fillStyle = 'white';\n\t\t\t\t\tcontext.strokeStyle = accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.fill();\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\tif ( element.checked ) {\n\n\t\t\t\t\t\tbuildRectPath( x + 2, y + 2, width - 4, height - 4, height );\n\n\t\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\t\tcontext.strokeStyle = accentTextColor;\n\t\t\t\t\t\tcontext.lineWidth = 2;\n\t\t\t\t\t\tcontext.fill();\n\t\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'checkbox' ) {\n\n\t\t\t\t\tbuildRectPath( x, y, width, height, 2 );\n\n\t\t\t\t\tcontext.fillStyle = element.checked ? accentColor : 'white';\n\t\t\t\t\tcontext.strokeStyle = element.checked ? accentTextColor : accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.stroke();\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t\tif ( element.checked ) {\n\n\t\t\t\t\t\tconst currentTextAlign = context.textAlign;\n\n\t\t\t\t\t\tcontext.textAlign = 'center';\n\n\t\t\t\t\t\tconst properties = {\n\t\t\t\t\t\t\tcolor: accentTextColor,\n\t\t\t\t\t\t\tfontFamily: style.fontFamily,\n\t\t\t\t\t\t\tfontSize: height + 'px',\n\t\t\t\t\t\t\tfontWeight: 'bold'\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tdrawText( properties, x + ( width / 2 ), y, '✔' );\n\n\t\t\t\t\t\tcontext.textAlign = currentTextAlign;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'range' ) {\n\n\t\t\t\t\tconst [ min, max, value ] = [ 'min', 'max', 'value' ].map( property => parseFloat( element[ property ] ) );\n\t\t\t\t\tconst position = ( ( value - min ) / ( max - min ) ) * ( width - height );\n\n\t\t\t\t\tbuildRectPath( x, y + ( height / 4 ), width, height / 2, height / 4 );\n\t\t\t\t\tcontext.fillStyle = accentTextColor;\n\t\t\t\t\tcontext.strokeStyle = accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.fill();\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\tbuildRectPath( x, y + ( height / 4 ), position + ( height / 2 ), height / 2, height / 4 );\n\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t\tbuildRectPath( x + position, y, height, height, height / 2 );\n\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'color' || element.type === 'text' || element.type === 'number' ) {\n\n\t\t\t\t\tclipper.add( { x: x, y: y, width: width, height: height } );\n\n\t\t\t\t\tdrawText( style, x + parseInt( style.paddingLeft ), y + parseInt( style.paddingTop ), element.value );\n\n\t\t\t\t\tclipper.remove();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/*\n\t\t// debug\n\t\tcontext.strokeStyle = '#' + Math.random().toString( 16 ).slice( - 3 );\n\t\tcontext.strokeRect( x - 0.5, y - 0.5, width + 1, height + 1 );\n\t\t*/\n\n\t\tconst isClipping = style.overflow === 'auto' || style.overflow === 'hidden';\n\n\t\tif ( isClipping ) clipper.add( { x: x, y: y, width: width, height: height } );\n\n\t\tfor ( let i = 0; i < element.childNodes.length; i ++ ) {\n\n\t\t\tdrawElement( element.childNodes[ i ], style );\n\n\t\t}\n\n\t\tif ( isClipping ) clipper.remove();\n\n\t}\n\n\tconst offset = element.getBoundingClientRect();\n\n\tlet canvas = canvases.get( element );\n\n\tif ( canvas === undefined ) {\n\n\t\tcanvas = document.createElement( 'canvas' );\n\t\tcanvas.width = offset.width;\n\t\tcanvas.height = offset.height;\n\t\tcanvases.set( element, canvas );\n\n\t}\n\n\tconst context = canvas.getContext( '2d'/*, { alpha: false }*/ );\n\n\tconst clipper = new Clipper( context );\n\n\t// console.time( 'drawElement' );\n\n\tcontext.clearRect(0, 0, canvas.width, canvas.height);\n\n\tdrawElement( element );\n\n\t// console.timeEnd( 'drawElement' );\n\n\treturn canvas;\n\n}\n\nfunction htmlevent( element, event, x, y ) {\n\n\tconst mouseEventInit = {\n\t\tclientX: ( x * element.offsetWidth ) + element.offsetLeft,\n\t\tclientY: ( y * element.offsetHeight ) + element.offsetTop,\n\t\tview: element.ownerDocument.defaultView\n\t};\n\n\t// TODO: Find out why this is added. Keep commented out when this file is updated\n\t// window.dispatchEvent( new MouseEvent( event, mouseEventInit ) );\n\n\tconst rect = element.getBoundingClientRect();\n\n\tx = x * rect.width + rect.left;\n\ty = y * rect.height + rect.top;\n\n\tfunction traverse( element ) {\n\n\t\tif ( element.nodeType !== Node.TEXT_NODE && element.nodeType !== Node.COMMENT_NODE ) {\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tif ( x > rect.left && x < rect.right && y > rect.top && y < rect.bottom ) {\n\n\t\t\t\telement.dispatchEvent( new MouseEvent( event, mouseEventInit ) );\n\n\t\t\t\tif ( element instanceof HTMLInputElement && element.type === 'range' && ( event === 'mousedown' || event === 'click' ) ) {\n\n\t\t\t\t\tconst [ min, max ] = [ 'min', 'max' ].map( property => parseFloat( element[ property ] ) );\n\n\t\t\t\t\tconst width = rect.width;\n\t\t\t\t\tconst offsetX = x - rect.x;\n\t\t\t\t\tconst proportion = offsetX / width;\n\t\t\t\t\telement.value = min + ( max - min ) * proportion;\n\t\t\t\t\telement.dispatchEvent( new InputEvent( 'input', { bubbles: true } ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < element.childNodes.length; i ++ ) {\n\n\t\t\t\ttraverse( element.childNodes[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttraverse( element );\n\n}\n\nexport { HTMLMesh };\n","/* jshint esversion: 9, -W097 */\n/* For dealing with spline curves */\n/* global THREE, AFRAME, setTimeout, console */\n'use strict';\n\nimport { HTMLMesh } from './HTMLMesh.js';\n\nconst schemaHTML = {\n\thtml: {\n\t\ttype: 'selector',\n\t},\n\tcursor: {\n\t\ttype: 'selector',\n\t}\n};\n\ndocumentation:\n{\n\tschemaHTML.html.description = `HTML element to use.`;\n\tschemaHTML.cursor.description = `Visual indicator for where the user is currently pointing`;\n}\n\nconst _pointer = new THREE.Vector2();\nconst _event = { type: '', data: _pointer };\nAFRAME.registerComponent('html', {\n\tschema: schemaHTML,\n\tinit() {\n\t\tthis.rerender = this.rerender.bind(this);\n\t\tthis.handle = this.handle.bind(this);\n\t\tthis.onClick = e => this.handle('click', e);\n\t\tthis.onMouseLeave = e => this.handle('mouseleave', e);\n\t\tthis.onMouseEnter = e => this.handle('mouseenter', e);\n\t\tthis.onMouseUp = e => this.handle('mouseup', e);\n\t\tthis.onMouseDown = e => this.handle('mousedown', e);\n\t\tthis.mouseMoveDetail = {\n\t\t\tdetail: {\n\t\t\t\tcursorEl: null,\n\t\t\t\tintersection: null\n\t\t\t}\n\t\t};\n\t},\n\tplay() {\n\t\tthis.el.addEventListener('click', this.onClick);\n\t\tthis.el.addEventListener('mouseleave', this.onMouseLeave);\n\t\tthis.el.addEventListener('mouseenter', this.onMouseEnter);\n\t\tthis.el.addEventListener('mouseup', this.onMouseUp);\n\t\tthis.el.addEventListener('mousedown', this.onMouseDown);\n\t},\n\tpause() {\n\t\tthis.el.removeEventListener('click', this.onClick);\n\t\tthis.el.removeEventListener('mouseleave', this.onMouseLeave);\n\t\tthis.el.removeEventListener('mouseenter', this.onMouseEnter);\n\t\tthis.el.removeEventListener('mouseup', this.onMouseUp);\n\t\tthis.el.removeEventListener('mousedown', this.onMouseDown);\n\t},\n\tupdate() {\n\t\tthis.remove();\n\t\tif (!this.data.html) return;\n\t\tconst mesh = new HTMLMesh(this.data.html);\n\t\tthis.el.setObject3D('html', mesh);\n\t\tthis.data.html.addEventListener('input', this.rerender);\n\t\tthis.data.html.addEventListener('change', this.rerender);\n\t\tthis.cursor = this.data.cursor ? this.data.cursor.object3D : null;\n\t},\n\ttick() {\n\t\tif (this.activeRaycaster) {\n\t\t\tconst intersection = this.activeRaycaster.components.raycaster.getIntersection(this.el);\n\t\t\tthis.mouseMoveDetail.detail.cursorEl = this.activeRaycaster;\n\t\t\tthis.mouseMoveDetail.detail.intersection = intersection;\n\t\t\tthis.handle('mousemove', this.mouseMoveDetail);\n\t\t}\n\t},\n\thandle(type, evt) {\n\t\tconst intersection = evt.detail.intersection;\n\t\tconst raycaster = evt.detail.cursorEl;\n\t\tif (type === 'mouseenter') {\n\t\t\tthis.activeRaycaster = raycaster;\n\t\t}\n\t\tif (type === 'mouseleave' && this.activeRaycaster === raycaster) {\n\t\t\tthis.activeRaycaster = null;\n\t\t}\n\t\tif (this.cursor) this.cursor.visible = false;\n\t\tif (intersection) {\n\t\t\tconst mesh = this.el.getObject3D('html');\n\t\t\tconst uv = intersection.uv;\n\t\t\t_event.type = type;\n\t\t\t_event.data.set( uv.x, 1 - uv.y );\n\t\t\tmesh.dispatchEvent( _event );\n\n\t\t\tif (this.cursor) {\n\t\t\t\tthis.cursor.visible = true;\n\t\t\t\tthis.cursor.parent.worldToLocal(this.cursor.position.copy(intersection.point));\n\t\t\t}\n\t\t}\n\t},\n\trerender() {\n\t\tconst mesh = this.el.getObject3D('html');\n\t\tif (mesh && !mesh.material.map.scheduleUpdate) {\n\t\t\tmesh.material.map.scheduleUpdate = setTimeout( () => mesh.material.map.update(), 16 );\n\t\t}\n\t},\n\tremove() {\n\t\tconst mesh = this.el.getObject3D('html');\n\t\tif (mesh) {\n\t\t\tthis.el.removeObject3D('html');\n\t\t\tthis.data.html.removeEventListener('input', this.rerender);\n\t\t\tthis.data.html.removeEventListener('change', this.rerender);\n\t\t\tmesh.dispose();\n\t\t}\n\t\tthis.activeRaycaster = null;\n\t\tthis.mouseMoveDetail.detail.cursorEl = null;\n\t\tthis.mouseMoveDetail.detail.intersection = null;\n\t\tthis.cursor = null;\n\t},\n});\n"],"names":["Mesh","PlaneGeometry","MeshBasicMaterial","CanvasTexture","sRGBEncoding","SRGBColorSpace","LinearFilter","Color"],"mappings":";;;CAAA;AAgBA;CACA,MAAM,QAAQ,SAASA,UAAI,CAAC;AAC5B;CACA,CAAC,WAAW,EAAE,GAAG,GAAG;AACpB;CACA,EAAE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,GAAG,EAAE,CAAC;AACzC;CACA,EAAE,MAAM,QAAQ,GAAG,IAAIC,mBAAa,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;CAClG,EAAE,MAAM,QAAQ,GAAG,IAAIC,uBAAiB,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;AACnG;CACA,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC9B;CACA,EAAE,SAAS,OAAO,EAAE,KAAK,GAAG;AAC5B;CACA,GAAG,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC;AAC1C;CACA,GAAG;AACH;CACA,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;CAChD,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;CAChD,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;CAC9C,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC5C;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,YAAY;AAC7B;CACA,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;CACtB,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;AACtB;CACA,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AAC1B;CACA,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;AAC1B;CACA,GAAG,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;CACpD,GAAG,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;CACpD,GAAG,IAAI,CAAC,mBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;CAClD,GAAG,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAChD;CACA,GAAG,CAAC;AACJ;CACA,EAAE;AACF;CACA,CAAC;AACD;CACA,MAAM,WAAW,SAASC,mBAAa,CAAC;AACxC;CACA,CAAC,WAAW,EAAE,GAAG,GAAG;AACpB;CACA,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC;AAC9B;CACA,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACjB;CACA,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;CACvB,EAAE,KAAK,KAAK,CAAC,QAAQ,KAAK,KAAK,GAAG;AAClC;CACA,GAAG,IAAI,CAAC,QAAQ,GAAGC,kBAAY,CAAC;AAChC;CACA,GAAG,MAAM;AACT;CACA,GAAG,IAAI,CAAC,UAAU,GAAGC,oBAAc,CAAC;AACpC;CACA,GAAG;AACH;CACA,EAAE,IAAI,CAAC,SAAS,GAAGC,kBAAY,CAAC;CAChC,EAAE,IAAI,CAAC,SAAS,GAAGA,kBAAY,CAAC;AAChC;CACA;CACA,EAAE,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE,MAAM;AAC/C;CACA,GAAG,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG;AAChC;CACA;CACA,IAAI,IAAI,CAAC,cAAc,GAAG,UAAU,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;AAChE;CACA,IAAI;AACJ;CACA,GAAG,EAAE,CAAC;AACN;CACA,EAAE,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;CAC3F,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAClC;CACA,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC3B;CACA,EAAE;AACF;CACA,CAAC,gBAAgB,EAAE,KAAK,GAAG;AAC3B;CACA,EAAE,KAAK,KAAK,CAAC,IAAI,GAAG;AACpB;CACA,GAAG,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACjE;CACA,GAAG;AACH;CACA,EAAE;AACF;CACA,CAAC,MAAM,GAAG;AACV;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;CACvC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC1B;CACA,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC7B;CACA,EAAE;AACF;CACA,CAAC,OAAO,GAAG;AACX;CACA,EAAE,KAAK,IAAI,CAAC,QAAQ,GAAG;AACvB;CACA,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC9B;CACA,GAAG;AACH;CACA,EAAE,IAAI,CAAC,cAAc,GAAG,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5D;CACA,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AAClB;CACA,EAAE;AACF;CACA,CAAC;AACD;AACA;CACA;AACA;CACA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/B;CACA,SAAS,WAAW,EAAE,OAAO,GAAG;AAChC;CACA,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;CACtC,CAAC,MAAM,KAAK,GAAG,IAAIC,WAAK,EAAE,CAAC;AAC3B;CACA,CAAC,SAAS,OAAO,EAAE,OAAO,GAAG;AAC7B;CACA,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;CACnB,EAAE,IAAI,UAAU,GAAG,KAAK,CAAC;AACzB;CACA,EAAE,SAAS,MAAM,GAAG;AACpB;CACA,GAAG,KAAK,UAAU,GAAG;AACrB;CACA,IAAI,UAAU,GAAG,KAAK,CAAC;CACvB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;AACtB;CACA,IAAI;AACJ;CACA,GAAG,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO;AACpC;CACA,GAAG,IAAI,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,QAAQ,CAAC;CAC5C,GAAG,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAC;AACxC;CACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AAC7C;CACA,IAAI,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;AAC5B;CACA,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;CACpC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;CACpC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;CACjD,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAClD;CACA,IAAI;AACJ;CACA,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;CAClB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC;CACxD,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAClB;CACA,GAAG,UAAU,GAAG,IAAI,CAAC;AACrB;CACA,GAAG;AACH;CACA,EAAE,OAAO;AACT;CACA,GAAG,GAAG,EAAE,WAAW,IAAI,GAAG;AAC1B;CACA,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;CACvB,IAAI,MAAM,EAAE,CAAC;AACb;CACA,IAAI;AACJ;CACA,GAAG,MAAM,EAAE,YAAY;AACvB;CACA,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;CAChB,IAAI,MAAM,EAAE,CAAC;AACb;CACA,IAAI;AACJ;CACA,GAAG,CAAC;AACJ;CACA,EAAE;AACF;CACA,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG;AAC1C;CACA,EAAE,KAAK,MAAM,KAAK,EAAE,GAAG;AACvB;CACA,GAAG,KAAK,KAAK,CAAC,aAAa,KAAK,WAAW,GAAG;AAC9C;CACA,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;AAClC;CACA,IAAI;AACJ;CACA,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;CACnF,GAAG,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;CAChC,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;CACnC,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,EAAE,CAAC;AACzE;CACA,GAAG;AACH;CACA,EAAE;AACF;CACA,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AACzC;CACA,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC7B,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7B;CACA,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;CACtB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;CAC7B,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;CAC7C,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;CAC7C,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACrC,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACrC,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;AACtB;CACA,EAAE;AACF;CACA,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG;AAC1D;CACA,EAAE,MAAM,WAAW,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,CAAC;CAC/C,EAAE,MAAM,WAAW,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,CAAC;CAC/C,EAAE,MAAM,WAAW,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,CAAC;AAC/C;CACA,EAAE,KAAK,WAAW,KAAK,KAAK,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,aAAa,IAAI,WAAW,KAAK,kBAAkB,GAAG;AAChI;CACA,GAAG,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;CACrC,GAAG,OAAO,CAAC,SAAS,GAAG,UAAU,EAAE,WAAW,EAAE,CAAC;CACjD,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CACvB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC1B,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;CAC3C,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AACpB;CACA,GAAG;AACH;CACA,EAAE;AACF;CACA,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,KAAK,GAAG;AACxC;CACA,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;AAC1C;CACA,EAAE,KAAK,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,GAAG;AAC7C;CACA;AACA;CACA,GAAG,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AAC/B;CACA,GAAG,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;AAC9C;CACA,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;CACrC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;CACnC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB;CACA,GAAG,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;AACrD;CACA,GAAG,MAAM,KAAK,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,GAAG;AACvD;CACA,GAAG,OAAO;AACV;CACA,GAAG,MAAM,KAAK,OAAO,YAAY,iBAAiB,GAAG;AACrD;CACA;CACA,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,GAAG,OAAO;AAClD;CACA,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAChD;CACA,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;CACrC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AACnC;CACA,UAAU,OAAO,CAAC,IAAI,EAAE,CAAC;CACzB,GAAG,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;CACvC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;CACrC,GAAG,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACtC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;AACrB;CACA,GAAG,MAAM,KAAK,OAAO,YAAY,gBAAgB,GAAG;AACpD;CACA,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,GAAG,OAAO;AAClD;CACA,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAChD;CACA,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;CACrC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;CACnC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB;CACA,GAAG,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACrD;CACA,GAAG,MAAM;AACT;CACA,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,GAAG,OAAO;AAClD;CACA,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAChD;CACA,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;CACrC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;CACnC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CACtB,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB;CACA,GAAG,KAAK,GAAG,MAAM,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC;AAC9C;CACA;AACA;CACA,GAAG,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;AAC1E;CACA,GAAG,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;AACjD;CACA,GAAG,KAAK,eAAe,KAAK,aAAa,IAAI,eAAe,KAAK,kBAAkB,GAAG;AACtF;CACA,IAAI,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC;CACxC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;AACnB;CACA,IAAI;AACJ;CACA;AACA;CACA,GAAG,MAAM,OAAO,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;AAChF;CACA,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC;CACpB,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC;AACzB;CACA,GAAG,MAAM,MAAM,MAAM,IAAI,OAAO,GAAG;AACnC;CACA,IAAI,KAAK,UAAU,KAAK,IAAI,GAAG;AAC/B;CACA,KAAK,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,KAAK,KAAK,EAAE,UAAU,GAAG,OAAO,EAAE;CAC1E,OAAO,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,KAAK,KAAK,EAAE,UAAU,GAAG,OAAO,EAAE,EAAE;CACpE,OAAO,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,KAAK,KAAK,EAAE,UAAU,GAAG,OAAO,EAAE,EAAE,CAAC;AACrE;CACA,KAAK;AACL;CACA,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,MAAM;AACjC;CACA,IAAI,UAAU,GAAG,MAAM,CAAC;AACxB;CACA,IAAI;AACJ;CACA,GAAG,KAAK,KAAK,KAAK,IAAI,GAAG;AACzB;CACA;AACA;CACA,IAAI,MAAM,KAAK,GAAG,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;AACrD;CACA,IAAI,KAAK,KAAK,CAAC,cAAc,KAAK,KAAK,IAAI,KAAK,CAAC,cAAc,KAAK,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,aAAa,IAAI,KAAK,CAAC,cAAc,KAAK,kBAAkB,GAAG;AACtK;CACA,KAAK,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC;CAChD,KAAK,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;CAC/B,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;AACtB;CACA,KAAK;AACL;CACA,IAAI,MAAM;AACV;CACA;AACA;CACA,IAAI,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;CACrD,IAAI,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;CACvD,IAAI,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;CACjE,IAAI,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAChE;CACA,IAAI;AACJ;CACA,GAAG,KAAK,OAAO,YAAY,gBAAgB,GAAG;AAC9C;CACA,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AACxC;CACA,IAAI,KAAK,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,MAAM,GAAG,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;AACzF;CACA,IAAI,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;AAC7B;CACA,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;CAClH,IAAI,MAAM,eAAe,GAAG,SAAS,GAAG,GAAG,GAAG,OAAO,GAAG,SAAS,CAAC;AAClE;CACA,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,GAAG;AACpC;CACA,KAAK,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAClD;CACA,KAAK,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC;CACjC,KAAK,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;CACvC,KAAK,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;CAC3B,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;CACpB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;AACtB;CACA,KAAK,KAAK,OAAO,CAAC,OAAO,GAAG;AAC5B;CACA,MAAM,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;AACnE;CACA,MAAM,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;CACtC,MAAM,OAAO,CAAC,WAAW,GAAG,eAAe,CAAC;CAC5C,MAAM,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;CAC5B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;CACrB,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;AACvB;CACA,MAAM;AACN;CACA,KAAK;AACL;CACA,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,UAAU,GAAG;AACvC;CACA,KAAK,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAC7C;CACA,KAAK,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;CACjE,KAAK,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,eAAe,GAAG,WAAW,CAAC;CAC3E,KAAK,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;CAC3B,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;CACtB,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB;CACA,KAAK,KAAK,OAAO,CAAC,OAAO,GAAG;AAC5B;CACA,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;AACjD;CACA,MAAM,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC;AACnC;CACA,MAAM,MAAM,UAAU,GAAG;CACzB,OAAO,KAAK,EAAE,eAAe;CAC7B,OAAO,UAAU,EAAE,KAAK,CAAC,UAAU;CACnC,OAAO,QAAQ,EAAE,MAAM,GAAG,IAAI;CAC9B,OAAO,UAAU,EAAE,MAAM;CACzB,OAAO,CAAC;AACR;CACA,MAAM,QAAQ,EAAE,UAAU,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;AACxD;CACA,MAAM,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;AAC3C;CACA,MAAM;AACN;CACA,KAAK;AACL;CACA,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,GAAG;AACpC;CACA,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,IAAI,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;CAChH,KAAK,MAAM,QAAQ,GAAG,EAAE,EAAE,KAAK,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,EAAE,OAAO,KAAK,GAAG,MAAM,EAAE,CAAC;AAC/E;CACA,KAAK,aAAa,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;CAC3E,KAAK,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC;CACzC,KAAK,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;CACvC,KAAK,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;CAC3B,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;CACpB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;AACtB;CACA,KAAK,aAAa,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;CAC/F,KAAK,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;CACrC,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB;CACA,KAAK,aAAa,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;CAClE,KAAK,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC;CACrC,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;AACpB;CACA,KAAK;AACL;CACA,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG;AAC5F;CACA,KAAK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;AACjE;CACA,KAAK,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AAC3G;CACA,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;AACtB;CACA,KAAK;AACL;CACA,IAAI;AACJ;CACA,GAAG;AACH;CACA;CACA;CACA;CACA;CACA;AACA;CACA,EAAE,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC9E;CACA,EAAE,KAAK,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;AAChF;CACA,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AACzD;CACA,GAAG,WAAW,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;AACjD;CACA,GAAG;AACH;CACA,EAAE,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AACrC;CACA,EAAE;AACF;CACA,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAChD;CACA,CAAC,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;AACtC;CACA,CAAC,KAAK,MAAM,KAAK,SAAS,GAAG;AAC7B;CACA,EAAE,MAAM,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC;CAC9C,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;CAC9B,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;CAChC,EAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAClC;CACA,EAAE;AACF;CACA,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,IAAI,wBAAwB,CAAC;AACjE;CACA,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;AACxC;CACA;AACA;CACA,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACtD;CACA,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;AACxB;CACA;AACA;CACA,CAAC,OAAO,MAAM,CAAC;AACf;CACA,CAAC;AACD;CACA,SAAS,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG;AAC3C;CACA,CAAC,MAAM,cAAc,GAAG;CACxB,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,UAAU;CAC3D,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,SAAS;CAC3D,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,WAAW;CACzC,EAAE,CAAC;AACH;CACA;CACA;AACA;CACA,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAC9C;CACA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;CAChC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AAChC;CACA,CAAC,SAAS,QAAQ,EAAE,OAAO,GAAG;AAC9B;CACA,EAAE,KAAK,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,GAAG;AACvF;CACA,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAChD;CACA,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG;AAC7E;CACA,IAAI,OAAO,CAAC,aAAa,EAAE,IAAI,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC;AACrE;CACA,IAAI,KAAK,OAAO,YAAY,gBAAgB,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,MAAM,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,OAAO,EAAE,GAAG;AAC7H;CACA,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,IAAI,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAChG;CACA,KAAK,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CAC9B,KAAK,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;CAChC,KAAK,MAAM,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;CACxC,KAAK,OAAO,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,KAAK,UAAU,CAAC;CACtD,KAAK,OAAO,CAAC,aAAa,EAAE,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC3E;CACA,KAAK;AACL;CACA,IAAI;AACJ;CACA,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG;AAC1D;CACA,IAAI,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;AACxC;CACA,IAAI;AACJ;CACA,GAAG;AACH;CACA,EAAE;AACF;CACA,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;AACrB;CACA;;CC1kBA;AAMA;CACA,MAAM,UAAU,GAAG;CACnB,CAAC,IAAI,EAAE;CACP,EAAE,IAAI,EAAE,UAAU;CAClB,EAAE;CACF,CAAC,MAAM,EAAE;CACT,EAAE,IAAI,EAAE,UAAU;CAClB,EAAE;CACF,CAAC,CAAC;AACF;CAEA;CACA,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,oBAAoB,CAAC,CAAC;CACtD,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,yDAAyD,CAAC,CAAC;CAC7F,CAAC;AACD;CACA,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;CACrC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;CAC5C,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;CACjC,CAAC,MAAM,EAAE,UAAU;CACnB,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAC3C,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACvC,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;CAC9C,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;CACxD,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;CACxD,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;CAClD,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;CACtD,EAAE,IAAI,CAAC,eAAe,GAAG;CACzB,GAAG,MAAM,EAAE;CACX,IAAI,QAAQ,EAAE,IAAI;CAClB,IAAI,YAAY,EAAE,IAAI;CACtB,IAAI;CACJ,GAAG,CAAC;CACJ,EAAE;CACF,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;CAClD,EAAE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;CAC5D,EAAE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;CAC5D,EAAE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;CACtD,EAAE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;CAC1D,EAAE;CACF,CAAC,KAAK,GAAG;CACT,EAAE,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;CACrD,EAAE,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;CAC/D,EAAE,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;CAC/D,EAAE,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;CACzD,EAAE,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;CAC7D,EAAE;CACF,CAAC,MAAM,GAAG;CACV,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;CAChB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO;CAC9B,EAAE,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAC5C,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACpC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC1D,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC3D,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;CACpE,EAAE;CACF,CAAC,IAAI,GAAG;CACR,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE;CAC5B,GAAG,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CAC3F,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;CAC/D,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;CAC3D,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;CAClD,GAAG;CACH,EAAE;CACF,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;CACnB,EAAE,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;CAC/C,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;CACxC,EAAE,IAAI,IAAI,KAAK,YAAY,EAAE;CAC7B,GAAG,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;CACpC,GAAG;CACH,EAAE,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;CACnE,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;CAC/B,GAAG;CACH,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;CAC/C,EAAE,IAAI,YAAY,EAAE;CACpB,GAAG,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5C,GAAG,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;CAC9B,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;CACtB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;CACrC,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;AAChC;CACA,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;CACpB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;CAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;CACnF,IAAI;CACJ,GAAG;CACH,EAAE;CACF,CAAC,QAAQ,GAAG;CACZ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC3C,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE;CACjD,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;CACzF,GAAG;CACH,EAAE;CACF,CAAC,MAAM,GAAG;CACV,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;CAC3C,EAAE,IAAI,IAAI,EAAE;CACZ,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;CAClC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC9D,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC/D,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;CAClB,GAAG;CACH,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;CAC9B,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;CAC9C,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;CAClD,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;CACrB,EAAE;CACF,CAAC,CAAC;;;;;;"} \ No newline at end of file diff --git a/build/aframe-html.min.js b/build/aframe-html.min.js index eff44ff..400809f 100644 --- a/build/aframe-html.min.js +++ b/build/aframe-html.min.js @@ -1,2 +1,2 @@ -!function(e){"use strict";class t extends e.Mesh{constructor(t){const s=new i(t),n=new e.PlaneGeometry(.001*s.image.width,.001*s.image.height),r=new e.MeshBasicMaterial({map:s,toneMapped:!1,transparent:!0});function l(e){r.map.dispatchDOMEvent(e)}super(n,r),this.addEventListener("mousedown",l),this.addEventListener("mousemove",l),this.addEventListener("mouseup",l),this.addEventListener("click",l),this.dispose=function(){n.dispose(),r.dispose(),r.map.dispose(),o.delete(t),this.removeEventListener("mousedown",l),this.removeEventListener("mousemove",l),this.removeEventListener("mouseup",l),this.removeEventListener("click",l)}}}class i extends e.CanvasTexture{constructor(t){super(s(t)),this.dom=t,this.anisotropy=16,this.encoding=e.sRGBEncoding,this.minFilter=e.LinearFilter,this.magFilter=e.LinearFilter;const i=new MutationObserver((()=>{this.scheduleUpdate||(this.scheduleUpdate=setTimeout((()=>this.update()),16))}));i.observe(t,{attributes:!0,childList:!0,subtree:!0,characterData:!0}),this.observer=i}dispatchDOMEvent(e){e.data&&function(e,t,i,o){const s={clientX:i*e.offsetWidth+e.offsetLeft,clientY:o*e.offsetHeight+e.offsetTop,view:e.ownerDocument.defaultView},n=e.getBoundingClientRect();function r(e){if(e.nodeType!==Node.TEXT_NODE&&e.nodeType!==Node.COMMENT_NODE){const n=e.getBoundingClientRect();if(i>n.left&&in.top&&oparseFloat(e[t]))),s=n.width,r=(i-n.x)/s;e.value=t+(o-t)*r,e.dispatchEvent(new InputEvent("input",{bubbles:!0}))}for(let t=0;tparseFloat(t[e]))),l=(n-o)/(s-o)*(p-m);r(h,u+m/4,p,m/2,m/4),d.fillStyle=i,d.strokeStyle=e,d.lineWidth=1,d.fill(),d.stroke(),r(h,u+m/4,l+m/2,m/2,m/4),d.fillStyle=e,d.fill(),r(h+l,u,m,m,m/2),d.fillStyle=e,d.fill()}"color"!==t.type&&"text"!==t.type&&"number"!==t.type||(c.add({x:h,y:u,width:p,height:m}),n(o,h+parseInt(o.paddingLeft),u+parseInt(o.paddingTop),t.value),c.remove())}}}const v="auto"===o.overflow||"hidden"===o.overflow;v&&c.add({x:h,y:u,width:p,height:m});for(let i=0;ithis.handle("click",e),this.onMouseLeave=e=>this.handle("mouseleave",e),this.onMouseEnter=e=>this.handle("mouseenter",e),this.onMouseUp=e=>this.handle("mouseup",e),this.onMouseDown=e=>this.handle("mousedown",e),this.mouseMoveDetail={detail:{cursorEl:null,intersection:null}}},play(){this.el.addEventListener("click",this.onClick),this.el.addEventListener("mouseleave",this.onMouseLeave),this.el.addEventListener("mouseenter",this.onMouseEnter),this.el.addEventListener("mouseup",this.onMouseUp),this.el.addEventListener("mousedown",this.onMouseDown)},pause(){this.el.removeEventListener("click",this.onClick),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.el.removeEventListener("mouseenter",this.onMouseEnter),this.el.removeEventListener("mouseup",this.onMouseUp),this.el.removeEventListener("mousedown",this.onMouseDown)},update(){if(this.remove(),!this.data.html)return;const e=new t(this.data.html);this.el.setObject3D("html",e),this.data.html.addEventListener("input",this.rerender),this.data.html.addEventListener("change",this.rerender),this.cursor=this.data.cursor?this.data.cursor.object3D:null},tick(){if(this.activeRaycaster){const e=this.activeRaycaster.components.raycaster.getIntersection(this.el);this.mouseMoveDetail.detail.cursorEl=this.activeRaycaster,this.mouseMoveDetail.detail.intersection=e,this.handle("mousemove",this.mouseMoveDetail)}},handle(e,t){const i=t.detail.intersection,o=t.detail.cursorEl;if("mouseenter"===e&&(this.activeRaycaster=o),"mouseleave"===e&&this.activeRaycaster===o&&(this.activeRaycaster=null),this.cursor&&(this.cursor.visible=!1),i){const t=this.el.getObject3D("html"),o=i.uv;n.type=e,n.data.set(o.x,1-o.y),t.dispatchEvent(n),this.cursor&&(this.cursor.visible=!0,this.cursor.parent.worldToLocal(this.cursor.position.copy(i.point)))}},rerender(){const e=this.el.getObject3D("html");e&&!e.material.map.scheduleUpdate&&(e.material.map.scheduleUpdate=setTimeout((()=>e.material.map.update()),16))},remove(){const e=this.el.getObject3D("html");e&&(this.el.removeObject3D("html"),this.data.html.removeEventListener("input",this.rerender),this.data.html.removeEventListener("change",this.rerender),e.dispose()),this.activeRaycaster=null,this.mouseMoveDetail.detail.cursorEl=null,this.mouseMoveDetail.detail.intersection=null,this.cursor=null}})}(THREE); +!function(e){"use strict";class t extends e.Mesh{constructor(t){const s=new i(t),n=new e.PlaneGeometry(.001*s.image.width,.001*s.image.height),r=new e.MeshBasicMaterial({map:s,toneMapped:!1,transparent:!0});function l(e){r.map.dispatchDOMEvent(e)}super(n,r),this.addEventListener("mousedown",l),this.addEventListener("mousemove",l),this.addEventListener("mouseup",l),this.addEventListener("click",l),this.dispose=function(){n.dispose(),r.dispose(),r.map.dispose(),o.delete(t),this.removeEventListener("mousedown",l),this.removeEventListener("mousemove",l),this.removeEventListener("mouseup",l),this.removeEventListener("click",l)}}}class i extends e.CanvasTexture{constructor(t){super(s(t)),this.dom=t,this.anisotropy=16,"147"===THREE.REVISION?this.encoding=e.sRGBEncoding:this.colorSpace=e.SRGBColorSpace,this.minFilter=e.LinearFilter,this.magFilter=e.LinearFilter;const i=new MutationObserver((()=>{this.scheduleUpdate||(this.scheduleUpdate=setTimeout((()=>this.update()),16))}));i.observe(t,{attributes:!0,childList:!0,subtree:!0,characterData:!0}),this.observer=i}dispatchDOMEvent(e){e.data&&function(e,t,i,o){const s={clientX:i*e.offsetWidth+e.offsetLeft,clientY:o*e.offsetHeight+e.offsetTop,view:e.ownerDocument.defaultView},n=e.getBoundingClientRect();function r(e){if(e.nodeType!==Node.TEXT_NODE&&e.nodeType!==Node.COMMENT_NODE){const n=e.getBoundingClientRect();if(i>n.left&&in.top&&oparseFloat(e[t]))),s=n.width,r=(i-n.x)/s;e.value=t+(o-t)*r,e.dispatchEvent(new InputEvent("input",{bubbles:!0}))}for(let t=0;tparseFloat(t[e]))),l=(n-o)/(s-o)*(p-m);r(h,u+m/4,p,m/2,m/4),d.fillStyle=i,d.strokeStyle=e,d.lineWidth=1,d.fill(),d.stroke(),r(h,u+m/4,l+m/2,m/2,m/4),d.fillStyle=e,d.fill(),r(h+l,u,m,m,m/2),d.fillStyle=e,d.fill()}"color"!==t.type&&"text"!==t.type&&"number"!==t.type||(c.add({x:h,y:u,width:p,height:m}),n(o,h+parseInt(o.paddingLeft),u+parseInt(o.paddingTop),t.value),c.remove())}}}const v="auto"===o.overflow||"hidden"===o.overflow;v&&c.add({x:h,y:u,width:p,height:m});for(let i=0;ithis.handle("click",e),this.onMouseLeave=e=>this.handle("mouseleave",e),this.onMouseEnter=e=>this.handle("mouseenter",e),this.onMouseUp=e=>this.handle("mouseup",e),this.onMouseDown=e=>this.handle("mousedown",e),this.mouseMoveDetail={detail:{cursorEl:null,intersection:null}}},play(){this.el.addEventListener("click",this.onClick),this.el.addEventListener("mouseleave",this.onMouseLeave),this.el.addEventListener("mouseenter",this.onMouseEnter),this.el.addEventListener("mouseup",this.onMouseUp),this.el.addEventListener("mousedown",this.onMouseDown)},pause(){this.el.removeEventListener("click",this.onClick),this.el.removeEventListener("mouseleave",this.onMouseLeave),this.el.removeEventListener("mouseenter",this.onMouseEnter),this.el.removeEventListener("mouseup",this.onMouseUp),this.el.removeEventListener("mousedown",this.onMouseDown)},update(){if(this.remove(),!this.data.html)return;const e=new t(this.data.html);this.el.setObject3D("html",e),this.data.html.addEventListener("input",this.rerender),this.data.html.addEventListener("change",this.rerender),this.cursor=this.data.cursor?this.data.cursor.object3D:null},tick(){if(this.activeRaycaster){const e=this.activeRaycaster.components.raycaster.getIntersection(this.el);this.mouseMoveDetail.detail.cursorEl=this.activeRaycaster,this.mouseMoveDetail.detail.intersection=e,this.handle("mousemove",this.mouseMoveDetail)}},handle(e,t){const i=t.detail.intersection,o=t.detail.cursorEl;if("mouseenter"===e&&(this.activeRaycaster=o),"mouseleave"===e&&this.activeRaycaster===o&&(this.activeRaycaster=null),this.cursor&&(this.cursor.visible=!1),i){const t=this.el.getObject3D("html"),o=i.uv;n.type=e,n.data.set(o.x,1-o.y),t.dispatchEvent(n),this.cursor&&(this.cursor.visible=!0,this.cursor.parent.worldToLocal(this.cursor.position.copy(i.point)))}},rerender(){const e=this.el.getObject3D("html");e&&!e.material.map.scheduleUpdate&&(e.material.map.scheduleUpdate=setTimeout((()=>e.material.map.update()),16))},remove(){const e=this.el.getObject3D("html");e&&(this.el.removeObject3D("html"),this.data.html.removeEventListener("input",this.rerender),this.data.html.removeEventListener("change",this.rerender),e.dispose()),this.activeRaycaster=null,this.mouseMoveDetail.detail.cursorEl=null,this.mouseMoveDetail.detail.intersection=null,this.cursor=null}})}(THREE); //# sourceMappingURL=aframe-html.min.js.map diff --git a/build/aframe-html.min.js.map b/build/aframe-html.min.js.map index b8c30e7..434f82e 100644 --- a/build/aframe-html.min.js.map +++ b/build/aframe-html.min.js.map @@ -1 +1 @@ -{"version":3,"file":"aframe-html.min.js","sources":["../src/HTMLMesh.js","../src/aframe-html.js"],"sourcesContent":["// This is a copy of https://github.com/mrdoob/three.js/blob/0403020848c26a9605eb91c99a949111ad4a532e/examples/jsm/interactive/HTMLMesh.js\n// with the following changes:\n// - Revert back to using \"this.encoding = sRGBEncoding\" instead of \"this.colorSpace = SRGBColorSpace;\" for compatibility with three r147 aframe 1.4.2\n// - window.dispatchEvent line commented, see the TODO below.\n// Look at https://github.com/mrdoob/three.js/commits/dev/examples/jsm/interactive/HTMLMesh.js\n// to see if there are other changes that can be retrieved here.\nimport {\n\tCanvasTexture,\n\tLinearFilter,\n\tMesh,\n\tMeshBasicMaterial,\n\tPlaneGeometry,\n\tsRGBEncoding,\n\tColor\n} from 'three';\n\nclass HTMLMesh extends Mesh {\n\n\tconstructor( dom ) {\n\n\t\tconst texture = new HTMLTexture( dom );\n\n\t\tconst geometry = new PlaneGeometry( texture.image.width * 0.001, texture.image.height * 0.001 );\n\t\tconst material = new MeshBasicMaterial( { map: texture, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tfunction onEvent( event ) {\n\n\t\t\tmaterial.map.dispatchDOMEvent( event );\n\n\t\t}\n\n\t\tthis.addEventListener( 'mousedown', onEvent );\n\t\tthis.addEventListener( 'mousemove', onEvent );\n\t\tthis.addEventListener( 'mouseup', onEvent );\n\t\tthis.addEventListener( 'click', onEvent );\n\n\t\tthis.dispose = function () {\n\n\t\t\tgeometry.dispose();\n\t\t\tmaterial.dispose();\n\n\t\t\tmaterial.map.dispose();\n\n\t\t\tcanvases.delete( dom );\n\n\t\t\tthis.removeEventListener( 'mousedown', onEvent );\n\t\t\tthis.removeEventListener( 'mousemove', onEvent );\n\t\t\tthis.removeEventListener( 'mouseup', onEvent );\n\t\t\tthis.removeEventListener( 'click', onEvent );\n\n\t\t};\n\n\t}\n\n}\n\nclass HTMLTexture extends CanvasTexture {\n\n\tconstructor( dom ) {\n\n\t\tsuper( html2canvas( dom ) );\n\n\t\tthis.dom = dom;\n\n\t\tthis.anisotropy = 16;\n\t\tthis.encoding = sRGBEncoding;\n\t\tthis.minFilter = LinearFilter;\n\t\tthis.magFilter = LinearFilter;\n\n\t\t// Create an observer on the DOM, and run html2canvas update in the next loop\n\t\tconst observer = new MutationObserver( () => {\n\n\t\t\tif ( ! this.scheduleUpdate ) {\n\n\t\t\t\t// ideally should use xr.requestAnimationFrame, here setTimeout to avoid passing the renderer\n\t\t\t\tthis.scheduleUpdate = setTimeout( () => this.update(), 16 );\n\n\t\t\t}\n\n\t\t} );\n\n\t\tconst config = { attributes: true, childList: true, subtree: true, characterData: true };\n\t\tobserver.observe( dom, config );\n\n\t\tthis.observer = observer;\n\n\t}\n\n\tdispatchDOMEvent( event ) {\n\n\t\tif ( event.data ) {\n\n\t\t\thtmlevent( this.dom, event.type, event.data.x, event.data.y );\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tthis.image = html2canvas( this.dom );\n\t\tthis.needsUpdate = true;\n\n\t\tthis.scheduleUpdate = null;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.observer ) {\n\n\t\t\tthis.observer.disconnect();\n\n\t\t}\n\n\t\tthis.scheduleUpdate = clearTimeout( this.scheduleUpdate );\n\n\t\tsuper.dispose();\n\n\t}\n\n}\n\n\n//\n\nconst canvases = new WeakMap();\n\nfunction html2canvas( element ) {\n\n\tconst range = document.createRange();\n\tconst color = new Color();\n\n\tfunction Clipper( context ) {\n\n\t\tconst clips = [];\n\t\tlet isClipping = false;\n\n\t\tfunction doClip() {\n\n\t\t\tif ( isClipping ) {\n\n\t\t\t\tisClipping = false;\n\t\t\t\tcontext.restore();\n\n\t\t\t}\n\n\t\t\tif ( clips.length === 0 ) return;\n\n\t\t\tlet minX = - Infinity, minY = - Infinity;\n\t\t\tlet maxX = Infinity, maxY = Infinity;\n\n\t\t\tfor ( let i = 0; i < clips.length; i ++ ) {\n\n\t\t\t\tconst clip = clips[ i ];\n\n\t\t\t\tminX = Math.max( minX, clip.x );\n\t\t\t\tminY = Math.max( minY, clip.y );\n\t\t\t\tmaxX = Math.min( maxX, clip.x + clip.width );\n\t\t\t\tmaxY = Math.min( maxY, clip.y + clip.height );\n\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.beginPath();\n\t\t\tcontext.rect( minX, minY, maxX - minX, maxY - minY );\n\t\t\tcontext.clip();\n\n\t\t\tisClipping = true;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tadd: function ( clip ) {\n\n\t\t\t\tclips.push( clip );\n\t\t\t\tdoClip();\n\n\t\t\t},\n\n\t\t\tremove: function () {\n\n\t\t\t\tclips.pop();\n\t\t\t\tdoClip();\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction drawText( style, x, y, string ) {\n\n\t\tif ( string !== '' ) {\n\n\t\t\tif ( style.textTransform === 'uppercase' ) {\n\n\t\t\t\tstring = string.toUpperCase();\n\n\t\t\t}\n\n\t\t\tcontext.font = style.fontWeight + ' ' + style.fontSize + ' ' + style.fontFamily;\n\t\t\tcontext.textBaseline = 'top';\n\t\t\tcontext.fillStyle = style.color;\n\t\t\tcontext.fillText( string, x, y + parseFloat( style.fontSize ) * 0.1 );\n\n\t\t}\n\n\t}\n\n\tfunction buildRectPath( x, y, w, h, r ) {\n\n\t\tif ( w < 2 * r ) r = w / 2;\n\t\tif ( h < 2 * r ) r = h / 2;\n\n\t\tcontext.beginPath();\n\t\tcontext.moveTo( x + r, y );\n\t\tcontext.arcTo( x + w, y, x + w, y + h, r );\n\t\tcontext.arcTo( x + w, y + h, x, y + h, r );\n\t\tcontext.arcTo( x, y + h, x, y, r );\n\t\tcontext.arcTo( x, y, x + w, y, r );\n\t\tcontext.closePath();\n\n\t}\n\n\tfunction drawBorder( style, which, x, y, width, height ) {\n\n\t\tconst borderWidth = style[ which + 'Width' ];\n\t\tconst borderStyle = style[ which + 'Style' ];\n\t\tconst borderColor = style[ which + 'Color' ];\n\n\t\tif ( borderWidth !== '0px' && borderStyle !== 'none' && borderColor !== 'transparent' && borderColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\tcontext.strokeStyle = borderColor;\n\t\t\tcontext.lineWidth = parseFloat( borderWidth );\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo( x, y );\n\t\t\tcontext.lineTo( x + width, y + height );\n\t\t\tcontext.stroke();\n\n\t\t}\n\n\t}\n\n\tfunction drawElement( element, style ) {\n\n\t\tlet x = 0, y = 0, width = 0, height = 0;\n\n\t\tif ( element.nodeType === Node.TEXT_NODE ) {\n\n\t\t\t// text\n\n\t\t\trange.selectNode( element );\n\n\t\t\tconst rect = range.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tdrawText( style, x, y, element.nodeValue.trim() );\n\n\t\t} else if ( element.nodeType === Node.COMMENT_NODE ) {\n\n\t\t\treturn;\n\n\t\t} else if ( element instanceof HTMLCanvasElement ) {\n\n\t\t\t// Canvas element\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\n\t\t context.save();\n\t\t\tconst dpr = window.devicePixelRatio;\n\t\t\tcontext.scale( 1 / dpr, 1 / dpr );\n\t\t\tcontext.drawImage( element, x, y );\n\t\t\tcontext.restore();\n\n\t\t} else if ( element instanceof HTMLImageElement ) {\n\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tcontext.drawImage( element, x, y, width, height );\n\n\t\t} else {\n\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tstyle = window.getComputedStyle( element );\n\n\t\t\t// Get the border of the element used for fill and border\n\n\t\t\tbuildRectPath( x, y, width, height, parseFloat( style.borderRadius ) );\n\n\t\t\tconst backgroundColor = style.backgroundColor;\n\n\t\t\tif ( backgroundColor !== 'transparent' && backgroundColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\t\tcontext.fillStyle = backgroundColor;\n\t\t\t\tcontext.fill();\n\n\t\t\t}\n\n\t\t\t// If all the borders match then stroke the round rectangle\n\n\t\t\tconst borders = [ 'borderTop', 'borderLeft', 'borderBottom', 'borderRight' ];\n\n\t\t\tlet match = true;\n\t\t\tlet prevBorder = null;\n\n\t\t\tfor ( const border of borders ) {\n\n\t\t\t\tif ( prevBorder !== null ) {\n\n\t\t\t\t\tmatch = ( style[ border + 'Width' ] === style[ prevBorder + 'Width' ] ) &&\n\t\t\t\t\t( style[ border + 'Color' ] === style[ prevBorder + 'Color' ] ) &&\n\t\t\t\t\t( style[ border + 'Style' ] === style[ prevBorder + 'Style' ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( match === false ) break;\n\n\t\t\t\tprevBorder = border;\n\n\t\t\t}\n\n\t\t\tif ( match === true ) {\n\n\t\t\t\t// They all match so stroke the rectangle from before allows for border-radius\n\n\t\t\t\tconst width = parseFloat( style.borderTopWidth );\n\n\t\t\t\tif ( style.borderTopWidth !== '0px' && style.borderTopStyle !== 'none' && style.borderTopColor !== 'transparent' && style.borderTopColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\t\t\tcontext.strokeStyle = style.borderTopColor;\n\t\t\t\t\tcontext.lineWidth = width;\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Otherwise draw individual borders\n\n\t\t\t\tdrawBorder( style, 'borderTop', x, y, width, 0 );\n\t\t\t\tdrawBorder( style, 'borderLeft', x, y, 0, height );\n\t\t\t\tdrawBorder( style, 'borderBottom', x, y + height, width, 0 );\n\t\t\t\tdrawBorder( style, 'borderRight', x + width, y, 0, height );\n\n\t\t\t}\n\n\t\t\tif ( element instanceof HTMLInputElement ) {\n\n\t\t\t\tlet accentColor = style.accentColor;\n\n\t\t\t\tif ( accentColor === undefined || accentColor === 'auto' ) accentColor = style.color;\n\n\t\t\t\tcolor.set( accentColor );\n\n\t\t\t\tconst luminance = Math.sqrt( 0.299 * ( color.r ** 2 ) + 0.587 * ( color.g ** 2 ) + 0.114 * ( color.b ** 2 ) );\n\t\t\t\tconst accentTextColor = luminance < 0.5 ? 'white' : '#111111';\n\n\t\t\t\tif ( element.type === 'radio' ) {\n\n\t\t\t\t\tbuildRectPath( x, y, width, height, height );\n\n\t\t\t\t\tcontext.fillStyle = 'white';\n\t\t\t\t\tcontext.strokeStyle = accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.fill();\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\tif ( element.checked ) {\n\n\t\t\t\t\t\tbuildRectPath( x + 2, y + 2, width - 4, height - 4, height );\n\n\t\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\t\tcontext.strokeStyle = accentTextColor;\n\t\t\t\t\t\tcontext.lineWidth = 2;\n\t\t\t\t\t\tcontext.fill();\n\t\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'checkbox' ) {\n\n\t\t\t\t\tbuildRectPath( x, y, width, height, 2 );\n\n\t\t\t\t\tcontext.fillStyle = element.checked ? accentColor : 'white';\n\t\t\t\t\tcontext.strokeStyle = element.checked ? accentTextColor : accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.stroke();\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t\tif ( element.checked ) {\n\n\t\t\t\t\t\tconst currentTextAlign = context.textAlign;\n\n\t\t\t\t\t\tcontext.textAlign = 'center';\n\n\t\t\t\t\t\tconst properties = {\n\t\t\t\t\t\t\tcolor: accentTextColor,\n\t\t\t\t\t\t\tfontFamily: style.fontFamily,\n\t\t\t\t\t\t\tfontSize: height + 'px',\n\t\t\t\t\t\t\tfontWeight: 'bold'\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tdrawText( properties, x + ( width / 2 ), y, '✔' );\n\n\t\t\t\t\t\tcontext.textAlign = currentTextAlign;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'range' ) {\n\n\t\t\t\t\tconst [ min, max, value ] = [ 'min', 'max', 'value' ].map( property => parseFloat( element[ property ] ) );\n\t\t\t\t\tconst position = ( ( value - min ) / ( max - min ) ) * ( width - height );\n\n\t\t\t\t\tbuildRectPath( x, y + ( height / 4 ), width, height / 2, height / 4 );\n\t\t\t\t\tcontext.fillStyle = accentTextColor;\n\t\t\t\t\tcontext.strokeStyle = accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.fill();\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\tbuildRectPath( x, y + ( height / 4 ), position + ( height / 2 ), height / 2, height / 4 );\n\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t\tbuildRectPath( x + position, y, height, height, height / 2 );\n\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'color' || element.type === 'text' || element.type === 'number' ) {\n\n\t\t\t\t\tclipper.add( { x: x, y: y, width: width, height: height } );\n\n\t\t\t\t\tdrawText( style, x + parseInt( style.paddingLeft ), y + parseInt( style.paddingTop ), element.value );\n\n\t\t\t\t\tclipper.remove();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/*\n\t\t// debug\n\t\tcontext.strokeStyle = '#' + Math.random().toString( 16 ).slice( - 3 );\n\t\tcontext.strokeRect( x - 0.5, y - 0.5, width + 1, height + 1 );\n\t\t*/\n\n\t\tconst isClipping = style.overflow === 'auto' || style.overflow === 'hidden';\n\n\t\tif ( isClipping ) clipper.add( { x: x, y: y, width: width, height: height } );\n\n\t\tfor ( let i = 0; i < element.childNodes.length; i ++ ) {\n\n\t\t\tdrawElement( element.childNodes[ i ], style );\n\n\t\t}\n\n\t\tif ( isClipping ) clipper.remove();\n\n\t}\n\n\tconst offset = element.getBoundingClientRect();\n\n\tlet canvas = canvases.get( element );\n\n\tif ( canvas === undefined ) {\n\n\t\tcanvas = document.createElement( 'canvas' );\n\t\tcanvas.width = offset.width;\n\t\tcanvas.height = offset.height;\n\t\tcanvases.set( element, canvas );\n\n\t}\n\n\tconst context = canvas.getContext( '2d'/*, { alpha: false }*/ );\n\n\tconst clipper = new Clipper( context );\n\n\t// console.time( 'drawElement' );\n\n\tcontext.clearRect(0, 0, canvas.width, canvas.height);\n\n\tdrawElement( element );\n\n\t// console.timeEnd( 'drawElement' );\n\n\treturn canvas;\n\n}\n\nfunction htmlevent( element, event, x, y ) {\n\n\tconst mouseEventInit = {\n\t\tclientX: ( x * element.offsetWidth ) + element.offsetLeft,\n\t\tclientY: ( y * element.offsetHeight ) + element.offsetTop,\n\t\tview: element.ownerDocument.defaultView\n\t};\n\n\t// TODO: Find out why this is added. Keep commented out when this file is updated\n\t// window.dispatchEvent( new MouseEvent( event, mouseEventInit ) );\n\n\tconst rect = element.getBoundingClientRect();\n\n\tx = x * rect.width + rect.left;\n\ty = y * rect.height + rect.top;\n\n\tfunction traverse( element ) {\n\n\t\tif ( element.nodeType !== Node.TEXT_NODE && element.nodeType !== Node.COMMENT_NODE ) {\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tif ( x > rect.left && x < rect.right && y > rect.top && y < rect.bottom ) {\n\n\t\t\t\telement.dispatchEvent( new MouseEvent( event, mouseEventInit ) );\n\n\t\t\t\tif ( element instanceof HTMLInputElement && element.type === 'range' && ( event === 'mousedown' || event === 'click' ) ) {\n\n\t\t\t\t\tconst [ min, max ] = [ 'min', 'max' ].map( property => parseFloat( element[ property ] ) );\n\n\t\t\t\t\tconst width = rect.width;\n\t\t\t\t\tconst offsetX = x - rect.x;\n\t\t\t\t\tconst proportion = offsetX / width;\n\t\t\t\t\telement.value = min + ( max - min ) * proportion;\n\t\t\t\t\telement.dispatchEvent( new InputEvent( 'input', { bubbles: true } ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < element.childNodes.length; i ++ ) {\n\n\t\t\t\ttraverse( element.childNodes[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttraverse( element );\n\n}\n\nexport { HTMLMesh };\n","/* jshint esversion: 9, -W097 */\n/* For dealing with spline curves */\n/* global THREE, AFRAME, setTimeout, console */\n'use strict';\n\nimport { HTMLMesh } from './HTMLMesh.js';\n\nconst schemaHTML = {\n\thtml: {\n\t\ttype: 'selector',\n\t},\n\tcursor: {\n\t\ttype: 'selector',\n\t}\n};\n\ndocumentation:\n{\n\tschemaHTML.html.description = `HTML element to use.`;\n\tschemaHTML.cursor.description = `Visual indicator for where the user is currently pointing`;\n}\n\nconst _pointer = new THREE.Vector2();\nconst _event = { type: '', data: _pointer };\nAFRAME.registerComponent('html', {\n\tschema: schemaHTML,\n\tinit() {\n\t\tthis.rerender = this.rerender.bind(this);\n\t\tthis.handle = this.handle.bind(this);\n\t\tthis.onClick = e => this.handle('click', e);\n\t\tthis.onMouseLeave = e => this.handle('mouseleave', e);\n\t\tthis.onMouseEnter = e => this.handle('mouseenter', e);\n\t\tthis.onMouseUp = e => this.handle('mouseup', e);\n\t\tthis.onMouseDown = e => this.handle('mousedown', e);\n\t\tthis.mouseMoveDetail = {\n\t\t\tdetail: {\n\t\t\t\tcursorEl: null,\n\t\t\t\tintersection: null\n\t\t\t}\n\t\t};\n\t},\n\tplay() {\n\t\tthis.el.addEventListener('click', this.onClick);\n\t\tthis.el.addEventListener('mouseleave', this.onMouseLeave);\n\t\tthis.el.addEventListener('mouseenter', this.onMouseEnter);\n\t\tthis.el.addEventListener('mouseup', this.onMouseUp);\n\t\tthis.el.addEventListener('mousedown', this.onMouseDown);\n\t},\n\tpause() {\n\t\tthis.el.removeEventListener('click', this.onClick);\n\t\tthis.el.removeEventListener('mouseleave', this.onMouseLeave);\n\t\tthis.el.removeEventListener('mouseenter', this.onMouseEnter);\n\t\tthis.el.removeEventListener('mouseup', this.onMouseUp);\n\t\tthis.el.removeEventListener('mousedown', this.onMouseDown);\n\t},\n\tupdate() {\n\t\tthis.remove();\n\t\tif (!this.data.html) return;\n\t\tconst mesh = new HTMLMesh(this.data.html);\n\t\tthis.el.setObject3D('html', mesh);\n\t\tthis.data.html.addEventListener('input', this.rerender);\n\t\tthis.data.html.addEventListener('change', this.rerender);\n\t\tthis.cursor = this.data.cursor ? this.data.cursor.object3D : null;\n\t},\n\ttick() {\n\t\tif (this.activeRaycaster) {\n\t\t\tconst intersection = this.activeRaycaster.components.raycaster.getIntersection(this.el);\n\t\t\tthis.mouseMoveDetail.detail.cursorEl = this.activeRaycaster;\n\t\t\tthis.mouseMoveDetail.detail.intersection = intersection;\n\t\t\tthis.handle('mousemove', this.mouseMoveDetail);\n\t\t}\n\t},\n\thandle(type, evt) {\n\t\tconst intersection = evt.detail.intersection;\n\t\tconst raycaster = evt.detail.cursorEl;\n\t\tif (type === 'mouseenter') {\n\t\t\tthis.activeRaycaster = raycaster;\n\t\t}\n\t\tif (type === 'mouseleave' && this.activeRaycaster === raycaster) {\n\t\t\tthis.activeRaycaster = null;\n\t\t}\n\t\tif (this.cursor) this.cursor.visible = false;\n\t\tif (intersection) {\n\t\t\tconst mesh = this.el.getObject3D('html');\n\t\t\tconst uv = intersection.uv;\n\t\t\t_event.type = type;\n\t\t\t_event.data.set( uv.x, 1 - uv.y );\n\t\t\tmesh.dispatchEvent( _event );\n\n\t\t\tif (this.cursor) {\n\t\t\t\tthis.cursor.visible = true;\n\t\t\t\tthis.cursor.parent.worldToLocal(this.cursor.position.copy(intersection.point));\n\t\t\t}\n\t\t}\n\t},\n\trerender() {\n\t\tconst mesh = this.el.getObject3D('html');\n\t\tif (mesh && !mesh.material.map.scheduleUpdate) {\n\t\t\tmesh.material.map.scheduleUpdate = setTimeout( () => mesh.material.map.update(), 16 );\n\t\t}\n\t},\n\tremove() {\n\t\tconst mesh = this.el.getObject3D('html');\n\t\tif (mesh) {\n\t\t\tthis.el.removeObject3D('html');\n\t\t\tthis.data.html.removeEventListener('input', this.rerender);\n\t\t\tthis.data.html.removeEventListener('change', this.rerender);\n\t\t\tmesh.dispose();\n\t\t}\n\t\tthis.activeRaycaster = null;\n\t\tthis.mouseMoveDetail.detail.cursorEl = null;\n\t\tthis.mouseMoveDetail.detail.intersection = null;\n\t\tthis.cursor = null;\n\t},\n});\n"],"names":["HTMLMesh","Mesh","constructor","dom","texture","HTMLTexture","geometry","PlaneGeometry","image","width","height","material","MeshBasicMaterial","map","toneMapped","transparent","onEvent","event","dispatchDOMEvent","super","this","addEventListener","dispose","canvases","delete","removeEventListener","CanvasTexture","html2canvas","anisotropy","encoding","sRGBEncoding","minFilter","LinearFilter","magFilter","observer","MutationObserver","scheduleUpdate","setTimeout","update","observe","attributes","childList","subtree","characterData","data","element","x","y","mouseEventInit","clientX","offsetWidth","offsetLeft","clientY","offsetHeight","offsetTop","view","ownerDocument","defaultView","rect","getBoundingClientRect","traverse","nodeType","Node","TEXT_NODE","COMMENT_NODE","left","right","top","bottom","dispatchEvent","MouseEvent","HTMLInputElement","type","min","max","property","parseFloat","proportion","value","InputEvent","bubbles","i","childNodes","length","htmlevent","needsUpdate","disconnect","clearTimeout","WeakMap","range","document","createRange","color","Color","drawText","style","string","textTransform","toUpperCase","context","font","fontWeight","fontSize","fontFamily","textBaseline","fillStyle","fillText","buildRectPath","w","h","r","beginPath","moveTo","arcTo","closePath","drawBorder","which","borderWidth","borderStyle","borderColor","strokeStyle","lineWidth","lineTo","stroke","offset","canvas","get","undefined","createElement","set","getContext","clipper","clips","isClipping","doClip","restore","minX","Infinity","minY","maxX","maxY","clip","Math","save","add","push","remove","pop","clearRect","drawElement","selectNode","nodeValue","trim","HTMLCanvasElement","display","dpr","window","devicePixelRatio","scale","drawImage","HTMLImageElement","getComputedStyle","borderRadius","backgroundColor","fill","borders","match","prevBorder","border","borderTopWidth","borderTopStyle","borderTopColor","accentColor","accentTextColor","sqrt","g","b","checked","currentTextAlign","textAlign","position","parseInt","paddingLeft","paddingTop","overflow","_event","THREE","Vector2","AFRAME","registerComponent","schema","html","cursor","init","rerender","bind","handle","onClick","e","onMouseLeave","onMouseEnter","onMouseUp","onMouseDown","mouseMoveDetail","detail","cursorEl","intersection","play","el","pause","mesh","setObject3D","object3D","tick","activeRaycaster","components","raycaster","getIntersection","evt","visible","getObject3D","uv","parent","worldToLocal","copy","point","removeObject3D"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"aframe-html.min.js","sources":["../src/HTMLMesh.js","../src/aframe-html.js"],"sourcesContent":["// This is a copy of https://github.com/mrdoob/three.js/blob/0403020848c26a9605eb91c99a949111ad4a532e/examples/jsm/interactive/HTMLMesh.js\n// with the following changes:\n// - Keep compatibility with three r147 aframe 1.4.2, still using \"this.encoding = sRGBEncoding\", otherwise using \"this.colorSpace = SRGBColorSpace;\"\n// - window.dispatchEvent line commented, see the TODO below.\n// Look at https://github.com/mrdoob/three.js/commits/dev/examples/jsm/interactive/HTMLMesh.js\n// to see if there are other changes that can be retrieved here.\nimport {\n\tCanvasTexture,\n\tLinearFilter,\n\tMesh,\n\tMeshBasicMaterial,\n\tPlaneGeometry,\n\tSRGBColorSpace,\n\tsRGBEncoding,\n\tColor\n} from 'three';\n\nclass HTMLMesh extends Mesh {\n\n\tconstructor( dom ) {\n\n\t\tconst texture = new HTMLTexture( dom );\n\n\t\tconst geometry = new PlaneGeometry( texture.image.width * 0.001, texture.image.height * 0.001 );\n\t\tconst material = new MeshBasicMaterial( { map: texture, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tfunction onEvent( event ) {\n\n\t\t\tmaterial.map.dispatchDOMEvent( event );\n\n\t\t}\n\n\t\tthis.addEventListener( 'mousedown', onEvent );\n\t\tthis.addEventListener( 'mousemove', onEvent );\n\t\tthis.addEventListener( 'mouseup', onEvent );\n\t\tthis.addEventListener( 'click', onEvent );\n\n\t\tthis.dispose = function () {\n\n\t\t\tgeometry.dispose();\n\t\t\tmaterial.dispose();\n\n\t\t\tmaterial.map.dispose();\n\n\t\t\tcanvases.delete( dom );\n\n\t\t\tthis.removeEventListener( 'mousedown', onEvent );\n\t\t\tthis.removeEventListener( 'mousemove', onEvent );\n\t\t\tthis.removeEventListener( 'mouseup', onEvent );\n\t\t\tthis.removeEventListener( 'click', onEvent );\n\n\t\t};\n\n\t}\n\n}\n\nclass HTMLTexture extends CanvasTexture {\n\n\tconstructor( dom ) {\n\n\t\tsuper( html2canvas( dom ) );\n\n\t\tthis.dom = dom;\n\n\t\tthis.anisotropy = 16;\n\t\tif ( THREE.REVISION === '147' ) { // Keep compatibility with aframe 1.4.2\n\n\t\t\tthis.encoding = sRGBEncoding;\n\n\t\t} else {\n\n\t\t\tthis.colorSpace = SRGBColorSpace;\n\n\t\t}\n\n\t\tthis.minFilter = LinearFilter;\n\t\tthis.magFilter = LinearFilter;\n\n\t\t// Create an observer on the DOM, and run html2canvas update in the next loop\n\t\tconst observer = new MutationObserver( () => {\n\n\t\t\tif ( ! this.scheduleUpdate ) {\n\n\t\t\t\t// ideally should use xr.requestAnimationFrame, here setTimeout to avoid passing the renderer\n\t\t\t\tthis.scheduleUpdate = setTimeout( () => this.update(), 16 );\n\n\t\t\t}\n\n\t\t} );\n\n\t\tconst config = { attributes: true, childList: true, subtree: true, characterData: true };\n\t\tobserver.observe( dom, config );\n\n\t\tthis.observer = observer;\n\n\t}\n\n\tdispatchDOMEvent( event ) {\n\n\t\tif ( event.data ) {\n\n\t\t\thtmlevent( this.dom, event.type, event.data.x, event.data.y );\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tthis.image = html2canvas( this.dom );\n\t\tthis.needsUpdate = true;\n\n\t\tthis.scheduleUpdate = null;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.observer ) {\n\n\t\t\tthis.observer.disconnect();\n\n\t\t}\n\n\t\tthis.scheduleUpdate = clearTimeout( this.scheduleUpdate );\n\n\t\tsuper.dispose();\n\n\t}\n\n}\n\n\n//\n\nconst canvases = new WeakMap();\n\nfunction html2canvas( element ) {\n\n\tconst range = document.createRange();\n\tconst color = new Color();\n\n\tfunction Clipper( context ) {\n\n\t\tconst clips = [];\n\t\tlet isClipping = false;\n\n\t\tfunction doClip() {\n\n\t\t\tif ( isClipping ) {\n\n\t\t\t\tisClipping = false;\n\t\t\t\tcontext.restore();\n\n\t\t\t}\n\n\t\t\tif ( clips.length === 0 ) return;\n\n\t\t\tlet minX = - Infinity, minY = - Infinity;\n\t\t\tlet maxX = Infinity, maxY = Infinity;\n\n\t\t\tfor ( let i = 0; i < clips.length; i ++ ) {\n\n\t\t\t\tconst clip = clips[ i ];\n\n\t\t\t\tminX = Math.max( minX, clip.x );\n\t\t\t\tminY = Math.max( minY, clip.y );\n\t\t\t\tmaxX = Math.min( maxX, clip.x + clip.width );\n\t\t\t\tmaxY = Math.min( maxY, clip.y + clip.height );\n\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.beginPath();\n\t\t\tcontext.rect( minX, minY, maxX - minX, maxY - minY );\n\t\t\tcontext.clip();\n\n\t\t\tisClipping = true;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\tadd: function ( clip ) {\n\n\t\t\t\tclips.push( clip );\n\t\t\t\tdoClip();\n\n\t\t\t},\n\n\t\t\tremove: function () {\n\n\t\t\t\tclips.pop();\n\t\t\t\tdoClip();\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction drawText( style, x, y, string ) {\n\n\t\tif ( string !== '' ) {\n\n\t\t\tif ( style.textTransform === 'uppercase' ) {\n\n\t\t\t\tstring = string.toUpperCase();\n\n\t\t\t}\n\n\t\t\tcontext.font = style.fontWeight + ' ' + style.fontSize + ' ' + style.fontFamily;\n\t\t\tcontext.textBaseline = 'top';\n\t\t\tcontext.fillStyle = style.color;\n\t\t\tcontext.fillText( string, x, y + parseFloat( style.fontSize ) * 0.1 );\n\n\t\t}\n\n\t}\n\n\tfunction buildRectPath( x, y, w, h, r ) {\n\n\t\tif ( w < 2 * r ) r = w / 2;\n\t\tif ( h < 2 * r ) r = h / 2;\n\n\t\tcontext.beginPath();\n\t\tcontext.moveTo( x + r, y );\n\t\tcontext.arcTo( x + w, y, x + w, y + h, r );\n\t\tcontext.arcTo( x + w, y + h, x, y + h, r );\n\t\tcontext.arcTo( x, y + h, x, y, r );\n\t\tcontext.arcTo( x, y, x + w, y, r );\n\t\tcontext.closePath();\n\n\t}\n\n\tfunction drawBorder( style, which, x, y, width, height ) {\n\n\t\tconst borderWidth = style[ which + 'Width' ];\n\t\tconst borderStyle = style[ which + 'Style' ];\n\t\tconst borderColor = style[ which + 'Color' ];\n\n\t\tif ( borderWidth !== '0px' && borderStyle !== 'none' && borderColor !== 'transparent' && borderColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\tcontext.strokeStyle = borderColor;\n\t\t\tcontext.lineWidth = parseFloat( borderWidth );\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo( x, y );\n\t\t\tcontext.lineTo( x + width, y + height );\n\t\t\tcontext.stroke();\n\n\t\t}\n\n\t}\n\n\tfunction drawElement( element, style ) {\n\n\t\tlet x = 0, y = 0, width = 0, height = 0;\n\n\t\tif ( element.nodeType === Node.TEXT_NODE ) {\n\n\t\t\t// text\n\n\t\t\trange.selectNode( element );\n\n\t\t\tconst rect = range.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tdrawText( style, x, y, element.nodeValue.trim() );\n\n\t\t} else if ( element.nodeType === Node.COMMENT_NODE ) {\n\n\t\t\treturn;\n\n\t\t} else if ( element instanceof HTMLCanvasElement ) {\n\n\t\t\t// Canvas element\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\n\t\t context.save();\n\t\t\tconst dpr = window.devicePixelRatio;\n\t\t\tcontext.scale( 1 / dpr, 1 / dpr );\n\t\t\tcontext.drawImage( element, x, y );\n\t\t\tcontext.restore();\n\n\t\t} else if ( element instanceof HTMLImageElement ) {\n\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tcontext.drawImage( element, x, y, width, height );\n\n\t\t} else {\n\n\t\t\tif ( element.style.display === 'none' ) return;\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tx = rect.left - offset.left - 0.5;\n\t\t\ty = rect.top - offset.top - 0.5;\n\t\t\twidth = rect.width;\n\t\t\theight = rect.height;\n\n\t\t\tstyle = window.getComputedStyle( element );\n\n\t\t\t// Get the border of the element used for fill and border\n\n\t\t\tbuildRectPath( x, y, width, height, parseFloat( style.borderRadius ) );\n\n\t\t\tconst backgroundColor = style.backgroundColor;\n\n\t\t\tif ( backgroundColor !== 'transparent' && backgroundColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\t\tcontext.fillStyle = backgroundColor;\n\t\t\t\tcontext.fill();\n\n\t\t\t}\n\n\t\t\t// If all the borders match then stroke the round rectangle\n\n\t\t\tconst borders = [ 'borderTop', 'borderLeft', 'borderBottom', 'borderRight' ];\n\n\t\t\tlet match = true;\n\t\t\tlet prevBorder = null;\n\n\t\t\tfor ( const border of borders ) {\n\n\t\t\t\tif ( prevBorder !== null ) {\n\n\t\t\t\t\tmatch = ( style[ border + 'Width' ] === style[ prevBorder + 'Width' ] ) &&\n\t\t\t\t\t( style[ border + 'Color' ] === style[ prevBorder + 'Color' ] ) &&\n\t\t\t\t\t( style[ border + 'Style' ] === style[ prevBorder + 'Style' ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( match === false ) break;\n\n\t\t\t\tprevBorder = border;\n\n\t\t\t}\n\n\t\t\tif ( match === true ) {\n\n\t\t\t\t// They all match so stroke the rectangle from before allows for border-radius\n\n\t\t\t\tconst width = parseFloat( style.borderTopWidth );\n\n\t\t\t\tif ( style.borderTopWidth !== '0px' && style.borderTopStyle !== 'none' && style.borderTopColor !== 'transparent' && style.borderTopColor !== 'rgba(0, 0, 0, 0)' ) {\n\n\t\t\t\t\tcontext.strokeStyle = style.borderTopColor;\n\t\t\t\t\tcontext.lineWidth = width;\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// Otherwise draw individual borders\n\n\t\t\t\tdrawBorder( style, 'borderTop', x, y, width, 0 );\n\t\t\t\tdrawBorder( style, 'borderLeft', x, y, 0, height );\n\t\t\t\tdrawBorder( style, 'borderBottom', x, y + height, width, 0 );\n\t\t\t\tdrawBorder( style, 'borderRight', x + width, y, 0, height );\n\n\t\t\t}\n\n\t\t\tif ( element instanceof HTMLInputElement ) {\n\n\t\t\t\tlet accentColor = style.accentColor;\n\n\t\t\t\tif ( accentColor === undefined || accentColor === 'auto' ) accentColor = style.color;\n\n\t\t\t\tcolor.set( accentColor );\n\n\t\t\t\tconst luminance = Math.sqrt( 0.299 * ( color.r ** 2 ) + 0.587 * ( color.g ** 2 ) + 0.114 * ( color.b ** 2 ) );\n\t\t\t\tconst accentTextColor = luminance < 0.5 ? 'white' : '#111111';\n\n\t\t\t\tif ( element.type === 'radio' ) {\n\n\t\t\t\t\tbuildRectPath( x, y, width, height, height );\n\n\t\t\t\t\tcontext.fillStyle = 'white';\n\t\t\t\t\tcontext.strokeStyle = accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.fill();\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\tif ( element.checked ) {\n\n\t\t\t\t\t\tbuildRectPath( x + 2, y + 2, width - 4, height - 4, height );\n\n\t\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\t\tcontext.strokeStyle = accentTextColor;\n\t\t\t\t\t\tcontext.lineWidth = 2;\n\t\t\t\t\t\tcontext.fill();\n\t\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'checkbox' ) {\n\n\t\t\t\t\tbuildRectPath( x, y, width, height, 2 );\n\n\t\t\t\t\tcontext.fillStyle = element.checked ? accentColor : 'white';\n\t\t\t\t\tcontext.strokeStyle = element.checked ? accentTextColor : accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.stroke();\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t\tif ( element.checked ) {\n\n\t\t\t\t\t\tconst currentTextAlign = context.textAlign;\n\n\t\t\t\t\t\tcontext.textAlign = 'center';\n\n\t\t\t\t\t\tconst properties = {\n\t\t\t\t\t\t\tcolor: accentTextColor,\n\t\t\t\t\t\t\tfontFamily: style.fontFamily,\n\t\t\t\t\t\t\tfontSize: height + 'px',\n\t\t\t\t\t\t\tfontWeight: 'bold'\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tdrawText( properties, x + ( width / 2 ), y, '✔' );\n\n\t\t\t\t\t\tcontext.textAlign = currentTextAlign;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'range' ) {\n\n\t\t\t\t\tconst [ min, max, value ] = [ 'min', 'max', 'value' ].map( property => parseFloat( element[ property ] ) );\n\t\t\t\t\tconst position = ( ( value - min ) / ( max - min ) ) * ( width - height );\n\n\t\t\t\t\tbuildRectPath( x, y + ( height / 4 ), width, height / 2, height / 4 );\n\t\t\t\t\tcontext.fillStyle = accentTextColor;\n\t\t\t\t\tcontext.strokeStyle = accentColor;\n\t\t\t\t\tcontext.lineWidth = 1;\n\t\t\t\t\tcontext.fill();\n\t\t\t\t\tcontext.stroke();\n\n\t\t\t\t\tbuildRectPath( x, y + ( height / 4 ), position + ( height / 2 ), height / 2, height / 4 );\n\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t\tbuildRectPath( x + position, y, height, height, height / 2 );\n\t\t\t\t\tcontext.fillStyle = accentColor;\n\t\t\t\t\tcontext.fill();\n\n\t\t\t\t}\n\n\t\t\t\tif ( element.type === 'color' || element.type === 'text' || element.type === 'number' ) {\n\n\t\t\t\t\tclipper.add( { x: x, y: y, width: width, height: height } );\n\n\t\t\t\t\tdrawText( style, x + parseInt( style.paddingLeft ), y + parseInt( style.paddingTop ), element.value );\n\n\t\t\t\t\tclipper.remove();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t/*\n\t\t// debug\n\t\tcontext.strokeStyle = '#' + Math.random().toString( 16 ).slice( - 3 );\n\t\tcontext.strokeRect( x - 0.5, y - 0.5, width + 1, height + 1 );\n\t\t*/\n\n\t\tconst isClipping = style.overflow === 'auto' || style.overflow === 'hidden';\n\n\t\tif ( isClipping ) clipper.add( { x: x, y: y, width: width, height: height } );\n\n\t\tfor ( let i = 0; i < element.childNodes.length; i ++ ) {\n\n\t\t\tdrawElement( element.childNodes[ i ], style );\n\n\t\t}\n\n\t\tif ( isClipping ) clipper.remove();\n\n\t}\n\n\tconst offset = element.getBoundingClientRect();\n\n\tlet canvas = canvases.get( element );\n\n\tif ( canvas === undefined ) {\n\n\t\tcanvas = document.createElement( 'canvas' );\n\t\tcanvas.width = offset.width;\n\t\tcanvas.height = offset.height;\n\t\tcanvases.set( element, canvas );\n\n\t}\n\n\tconst context = canvas.getContext( '2d'/*, { alpha: false }*/ );\n\n\tconst clipper = new Clipper( context );\n\n\t// console.time( 'drawElement' );\n\n\tcontext.clearRect(0, 0, canvas.width, canvas.height);\n\n\tdrawElement( element );\n\n\t// console.timeEnd( 'drawElement' );\n\n\treturn canvas;\n\n}\n\nfunction htmlevent( element, event, x, y ) {\n\n\tconst mouseEventInit = {\n\t\tclientX: ( x * element.offsetWidth ) + element.offsetLeft,\n\t\tclientY: ( y * element.offsetHeight ) + element.offsetTop,\n\t\tview: element.ownerDocument.defaultView\n\t};\n\n\t// TODO: Find out why this is added. Keep commented out when this file is updated\n\t// window.dispatchEvent( new MouseEvent( event, mouseEventInit ) );\n\n\tconst rect = element.getBoundingClientRect();\n\n\tx = x * rect.width + rect.left;\n\ty = y * rect.height + rect.top;\n\n\tfunction traverse( element ) {\n\n\t\tif ( element.nodeType !== Node.TEXT_NODE && element.nodeType !== Node.COMMENT_NODE ) {\n\n\t\t\tconst rect = element.getBoundingClientRect();\n\n\t\t\tif ( x > rect.left && x < rect.right && y > rect.top && y < rect.bottom ) {\n\n\t\t\t\telement.dispatchEvent( new MouseEvent( event, mouseEventInit ) );\n\n\t\t\t\tif ( element instanceof HTMLInputElement && element.type === 'range' && ( event === 'mousedown' || event === 'click' ) ) {\n\n\t\t\t\t\tconst [ min, max ] = [ 'min', 'max' ].map( property => parseFloat( element[ property ] ) );\n\n\t\t\t\t\tconst width = rect.width;\n\t\t\t\t\tconst offsetX = x - rect.x;\n\t\t\t\t\tconst proportion = offsetX / width;\n\t\t\t\t\telement.value = min + ( max - min ) * proportion;\n\t\t\t\t\telement.dispatchEvent( new InputEvent( 'input', { bubbles: true } ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0; i < element.childNodes.length; i ++ ) {\n\n\t\t\t\ttraverse( element.childNodes[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttraverse( element );\n\n}\n\nexport { HTMLMesh };\n","/* jshint esversion: 9, -W097 */\n/* For dealing with spline curves */\n/* global THREE, AFRAME, setTimeout, console */\n'use strict';\n\nimport { HTMLMesh } from './HTMLMesh.js';\n\nconst schemaHTML = {\n\thtml: {\n\t\ttype: 'selector',\n\t},\n\tcursor: {\n\t\ttype: 'selector',\n\t}\n};\n\ndocumentation:\n{\n\tschemaHTML.html.description = `HTML element to use.`;\n\tschemaHTML.cursor.description = `Visual indicator for where the user is currently pointing`;\n}\n\nconst _pointer = new THREE.Vector2();\nconst _event = { type: '', data: _pointer };\nAFRAME.registerComponent('html', {\n\tschema: schemaHTML,\n\tinit() {\n\t\tthis.rerender = this.rerender.bind(this);\n\t\tthis.handle = this.handle.bind(this);\n\t\tthis.onClick = e => this.handle('click', e);\n\t\tthis.onMouseLeave = e => this.handle('mouseleave', e);\n\t\tthis.onMouseEnter = e => this.handle('mouseenter', e);\n\t\tthis.onMouseUp = e => this.handle('mouseup', e);\n\t\tthis.onMouseDown = e => this.handle('mousedown', e);\n\t\tthis.mouseMoveDetail = {\n\t\t\tdetail: {\n\t\t\t\tcursorEl: null,\n\t\t\t\tintersection: null\n\t\t\t}\n\t\t};\n\t},\n\tplay() {\n\t\tthis.el.addEventListener('click', this.onClick);\n\t\tthis.el.addEventListener('mouseleave', this.onMouseLeave);\n\t\tthis.el.addEventListener('mouseenter', this.onMouseEnter);\n\t\tthis.el.addEventListener('mouseup', this.onMouseUp);\n\t\tthis.el.addEventListener('mousedown', this.onMouseDown);\n\t},\n\tpause() {\n\t\tthis.el.removeEventListener('click', this.onClick);\n\t\tthis.el.removeEventListener('mouseleave', this.onMouseLeave);\n\t\tthis.el.removeEventListener('mouseenter', this.onMouseEnter);\n\t\tthis.el.removeEventListener('mouseup', this.onMouseUp);\n\t\tthis.el.removeEventListener('mousedown', this.onMouseDown);\n\t},\n\tupdate() {\n\t\tthis.remove();\n\t\tif (!this.data.html) return;\n\t\tconst mesh = new HTMLMesh(this.data.html);\n\t\tthis.el.setObject3D('html', mesh);\n\t\tthis.data.html.addEventListener('input', this.rerender);\n\t\tthis.data.html.addEventListener('change', this.rerender);\n\t\tthis.cursor = this.data.cursor ? this.data.cursor.object3D : null;\n\t},\n\ttick() {\n\t\tif (this.activeRaycaster) {\n\t\t\tconst intersection = this.activeRaycaster.components.raycaster.getIntersection(this.el);\n\t\t\tthis.mouseMoveDetail.detail.cursorEl = this.activeRaycaster;\n\t\t\tthis.mouseMoveDetail.detail.intersection = intersection;\n\t\t\tthis.handle('mousemove', this.mouseMoveDetail);\n\t\t}\n\t},\n\thandle(type, evt) {\n\t\tconst intersection = evt.detail.intersection;\n\t\tconst raycaster = evt.detail.cursorEl;\n\t\tif (type === 'mouseenter') {\n\t\t\tthis.activeRaycaster = raycaster;\n\t\t}\n\t\tif (type === 'mouseleave' && this.activeRaycaster === raycaster) {\n\t\t\tthis.activeRaycaster = null;\n\t\t}\n\t\tif (this.cursor) this.cursor.visible = false;\n\t\tif (intersection) {\n\t\t\tconst mesh = this.el.getObject3D('html');\n\t\t\tconst uv = intersection.uv;\n\t\t\t_event.type = type;\n\t\t\t_event.data.set( uv.x, 1 - uv.y );\n\t\t\tmesh.dispatchEvent( _event );\n\n\t\t\tif (this.cursor) {\n\t\t\t\tthis.cursor.visible = true;\n\t\t\t\tthis.cursor.parent.worldToLocal(this.cursor.position.copy(intersection.point));\n\t\t\t}\n\t\t}\n\t},\n\trerender() {\n\t\tconst mesh = this.el.getObject3D('html');\n\t\tif (mesh && !mesh.material.map.scheduleUpdate) {\n\t\t\tmesh.material.map.scheduleUpdate = setTimeout( () => mesh.material.map.update(), 16 );\n\t\t}\n\t},\n\tremove() {\n\t\tconst mesh = this.el.getObject3D('html');\n\t\tif (mesh) {\n\t\t\tthis.el.removeObject3D('html');\n\t\t\tthis.data.html.removeEventListener('input', this.rerender);\n\t\t\tthis.data.html.removeEventListener('change', this.rerender);\n\t\t\tmesh.dispose();\n\t\t}\n\t\tthis.activeRaycaster = null;\n\t\tthis.mouseMoveDetail.detail.cursorEl = null;\n\t\tthis.mouseMoveDetail.detail.intersection = null;\n\t\tthis.cursor = null;\n\t},\n});\n"],"names":["HTMLMesh","Mesh","constructor","dom","texture","HTMLTexture","geometry","PlaneGeometry","image","width","height","material","MeshBasicMaterial","map","toneMapped","transparent","onEvent","event","dispatchDOMEvent","super","this","addEventListener","dispose","canvases","delete","removeEventListener","CanvasTexture","html2canvas","anisotropy","THREE","REVISION","encoding","sRGBEncoding","colorSpace","SRGBColorSpace","minFilter","LinearFilter","magFilter","observer","MutationObserver","scheduleUpdate","setTimeout","update","observe","attributes","childList","subtree","characterData","data","element","x","y","mouseEventInit","clientX","offsetWidth","offsetLeft","clientY","offsetHeight","offsetTop","view","ownerDocument","defaultView","rect","getBoundingClientRect","traverse","nodeType","Node","TEXT_NODE","COMMENT_NODE","left","right","top","bottom","dispatchEvent","MouseEvent","HTMLInputElement","type","min","max","property","parseFloat","proportion","value","InputEvent","bubbles","i","childNodes","length","htmlevent","needsUpdate","disconnect","clearTimeout","WeakMap","range","document","createRange","color","Color","drawText","style","string","textTransform","toUpperCase","context","font","fontWeight","fontSize","fontFamily","textBaseline","fillStyle","fillText","buildRectPath","w","h","r","beginPath","moveTo","arcTo","closePath","drawBorder","which","borderWidth","borderStyle","borderColor","strokeStyle","lineWidth","lineTo","stroke","offset","canvas","get","undefined","createElement","set","getContext","clipper","clips","isClipping","doClip","restore","minX","Infinity","minY","maxX","maxY","clip","Math","save","add","push","remove","pop","clearRect","drawElement","selectNode","nodeValue","trim","HTMLCanvasElement","display","dpr","window","devicePixelRatio","scale","drawImage","HTMLImageElement","getComputedStyle","borderRadius","backgroundColor","fill","borders","match","prevBorder","border","borderTopWidth","borderTopStyle","borderTopColor","accentColor","accentTextColor","sqrt","g","b","checked","currentTextAlign","textAlign","position","parseInt","paddingLeft","paddingTop","overflow","_event","Vector2","AFRAME","registerComponent","schema","html","cursor","init","rerender","bind","handle","onClick","e","onMouseLeave","onMouseEnter","onMouseUp","onMouseDown","mouseMoveDetail","detail","cursorEl","intersection","play","el","pause","mesh","setObject3D","object3D","tick","activeRaycaster","components","raycaster","getIntersection","evt","visible","getObject3D","uv","parent","worldToLocal","copy","point","removeObject3D"],"mappings":"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"} \ No newline at end of file diff --git a/src/HTMLMesh.js b/src/HTMLMesh.js index 378ff92..f6935d1 100644 --- a/src/HTMLMesh.js +++ b/src/HTMLMesh.js @@ -1,6 +1,6 @@ // This is a copy of https://github.com/mrdoob/three.js/blob/0403020848c26a9605eb91c99a949111ad4a532e/examples/jsm/interactive/HTMLMesh.js // with the following changes: -// - Revert back to using "this.encoding = sRGBEncoding" instead of "this.colorSpace = SRGBColorSpace;" for compatibility with three r147 aframe 1.4.2 +// - Keep compatibility with three r147 aframe 1.4.2, still using "this.encoding = sRGBEncoding", otherwise using "this.colorSpace = SRGBColorSpace;" // - window.dispatchEvent line commented, see the TODO below. // Look at https://github.com/mrdoob/three.js/commits/dev/examples/jsm/interactive/HTMLMesh.js // to see if there are other changes that can be retrieved here. @@ -10,6 +10,7 @@ import { Mesh, MeshBasicMaterial, PlaneGeometry, + SRGBColorSpace, sRGBEncoding, Color } from 'three'; @@ -65,7 +66,16 @@ class HTMLTexture extends CanvasTexture { this.dom = dom; this.anisotropy = 16; - this.encoding = sRGBEncoding; + if ( THREE.REVISION === '147' ) { // Keep compatibility with aframe 1.4.2 + + this.encoding = sRGBEncoding; + + } else { + + this.colorSpace = SRGBColorSpace; + + } + this.minFilter = LinearFilter; this.magFilter = LinearFilter;