import https://code.jquery.com/jquery-3.7.1.js X3D from https://create3000.github.io/code/x_ite/latest/x_ite.mjs {convert} from ./deps/vrml1to97/index.js certainlyHandled := '.x3d .gltf .glb .obj .stl .ply'.split ' ' // The next line will need to change when we handle pages with more than // one link, since we will potentially need a canvas for each one. canvas := X3D.createBrowser() // Fix up the css so the browser is a nice size and we can see the world info $(canvas).css width: '150px', height: '150px', overflow: 'visible' x_ite_shadow := canvas.shadowRoot if x_ite_shadow x_ite_style := x_ite_shadow.querySelector('link') if x_ite_style $(x_ite_style).after '' x_ite_browser := x_ite_shadow.querySelector '.x_ite-private-browser' if x_ite_browser $(x_ite_browser).css overflow: 'visible' // Now get the browser and load the requested VRML, converting if need be browser := X3D.getBrowser canvas browser.setBrowserOption 'StraightenHorizon', false site := $('a[href^="http"]') url := site.attr('href') ?? '' if certainlyHandled.some((ext) => url.includes ext) canvas.setAttribute 'src', url else if url.includes '.wrl' // Need to obtain the text and check what level it is response := await fetch url text .= await response.text() if /#\s*VRML\s*V?1[.]/i.test text text = convert text browser.baseURL = url scene := await browser.createX3DFromString text browser.replaceWorld scene site.after(canvas)