{"version":3,"file":"vendor.openbim-components-2c228c7f.efe0ac8fb7bbb0ab.bundle.js","mappings":"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","sources":["webpack://client-app/./node_modules/openbim-components/src/navigation/CubeMap/index.js","webpack://client-app/./node_modules/openbim-components/src/navigation/EdgesClipper/index.js","webpack://client-app/./node_modules/openbim-components/src/navigation/EdgesClipper/src/clipping-edges.js"],"sourcesContent":["import * as THREE from \"three\";\r\nimport { Component, Event, } from \"../../base-types\";\r\nimport { ToolComponent } from \"../../core\";\r\nimport { OrthoPerspectiveCamera } from \"../OrthoPerspectiveCamera\";\r\n/**\r\n * A simple navigation cube to zoom the scene to its basic views (top, bottom,\r\n * left, right, back and front).\r\n */\r\nexport class CubeMap extends Component {\r\n get visible() {\r\n return this._visible;\r\n }\r\n set visible(value) {\r\n this._visible = value;\r\n if (this._visible) {\r\n this._cubeWrapper.classList.remove(\"hidden\");\r\n }\r\n else {\r\n this._cubeWrapper.classList.add(\"hidden\");\r\n }\r\n }\r\n constructor(components) {\r\n var _a;\r\n super(components);\r\n /** {@link Disposable.onDisposed} */\r\n this.onDisposed = new Event();\r\n /** {@link Component.enabled} */\r\n this.enabled = true;\r\n /** {@link Updateable.onAfterUpdate} */\r\n this.onAfterUpdate = new Event();\r\n /** {@link Updateable.onBeforeUpdate} */\r\n this.onBeforeUpdate = new Event();\r\n /** The minimum zoom distance to the scene. */\r\n this.offset = 1;\r\n this._cubeFaceClass = \"flex justify-center font-bold hover:bg-ifcjs-200 hover:text-ifcjs-100 text-white select-none text-xl items-center cursor-pointer text-center text-ifcjs-100 absolute w-[60px] h-[60px] border-solid border-ifcjs-120\";\r\n this._cyan = \"bg-[#3CE6FEDD]\";\r\n this._pink = \"bg-[#BD4BF3DD]\";\r\n this._blue = \"bg-[#201491DD]\";\r\n this._cube = document.createElement(\"div\");\r\n this._cubeWrapper = document.createElement(\"div\");\r\n this._matrix = new THREE.Matrix4();\r\n this._faceOrientations = {\r\n front: new THREE.Vector3(0, 0, 1),\r\n top: new THREE.Vector3(0, 1, 0),\r\n bottom: new THREE.Vector3(0, -1, 0),\r\n right: new THREE.Vector3(1, 0, 0),\r\n left: new THREE.Vector3(-1, 0, 0),\r\n back: new THREE.Vector3(0, 0, -1),\r\n };\r\n this.update = () => {\r\n this._matrix.extractRotation(this._camera.get().matrixWorldInverse);\r\n this._cube.style.transform = `translateZ(-300px) ${this.getCameraCSSMatrix(this._matrix)}`;\r\n };\r\n this.components.tools.add(CubeMap.uuid, this);\r\n this._cubeWrapper.id = \"tooeen-cube-map\";\r\n this._cubeWrapper.className = \"absolute z-10\";\r\n this.setPosition(\"bottom-right\");\r\n this._cube.className = \"w-[60px] h-[60px] relative\";\r\n this.setSize(\"400\");\r\n this._cube.style.transformStyle = \"preserve-3d\";\r\n this._cube.style.transform = \"translateZ(-300px)\";\r\n this._cube.style.textTransform = \"uppercase\";\r\n this._cubeWrapper.append(this._cube);\r\n if (components.camera.isUpdateable()) {\r\n components.camera.onAfterUpdate.add(this.update);\r\n }\r\n // #region Cube faces\r\n const frontFace = document.createElement(\"div\");\r\n frontFace.id = \"cube-map-front\";\r\n frontFace.className = `${this._cubeFaceClass} ${this._cyan}`;\r\n frontFace.style.transform = \"rotateX(180deg) translateZ(-30px)\";\r\n frontFace.style.transition = \"all 0.2s\";\r\n frontFace.onclick = () => this.orientToFace(\"front\");\r\n const topFace = document.createElement(\"div\");\r\n topFace.className = `${this._cubeFaceClass} ${this._pink}`;\r\n topFace.style.transform = \"rotateX(90deg) translateZ(-30px)\";\r\n topFace.style.transition = \"all 0.2s\";\r\n topFace.onclick = () => this.orientToFace(\"top\");\r\n const bottomFace = document.createElement(\"div\");\r\n bottomFace.className = `${this._cubeFaceClass} ${this._pink}`;\r\n bottomFace.style.transform = \"rotateX(270deg) translateZ(-30px)\";\r\n bottomFace.style.transition = \"all 0.2s\";\r\n bottomFace.onclick = () => this.orientToFace(\"bottom\");\r\n const rightFace = document.createElement(\"div\");\r\n rightFace.className = `${this._cubeFaceClass} ${this._blue}`;\r\n rightFace.style.transform =\r\n \"rotateY(-270deg) rotateX(180deg) translateZ(-30px)\";\r\n rightFace.style.transition = \"all 0.2s\";\r\n rightFace.onclick = () => this.orientToFace(\"right\");\r\n const leftFace = document.createElement(\"div\");\r\n leftFace.className = `${this._cubeFaceClass} ${this._blue}`;\r\n leftFace.style.transform =\r\n \"rotateY(-90deg) rotateX(180deg) translateZ(-30px)\";\r\n leftFace.style.transition = \"all 0.2s\";\r\n leftFace.onclick = () => this.orientToFace(\"left\");\r\n const backFace = document.createElement(\"div\");\r\n backFace.className = `${this._cubeFaceClass} ${this._cyan}`;\r\n backFace.style.transform = \"translateZ(-30px) rotateZ(180deg)\";\r\n backFace.style.transition = \"all 0.2s\";\r\n backFace.onclick = () => this.orientToFace(\"back\");\r\n // #endregion\r\n this._cube.append(frontFace, topFace, bottomFace, rightFace, leftFace, backFace);\r\n (_a = this._viewerContainer) === null || _a === void 0 ? void 0 : _a.append(this._cubeWrapper);\r\n this.visible = true;\r\n }\r\n async dispose() {\r\n this.onAfterUpdate.reset();\r\n this.onBeforeUpdate.reset();\r\n this._cube.remove();\r\n this._cubeWrapper.remove();\r\n this.components = null;\r\n await this.onDisposed.trigger(CubeMap.uuid);\r\n this.onDisposed.reset();\r\n }\r\n setSize(value = \"350\") {\r\n this._cubeWrapper.style.perspective = `${value}px`;\r\n }\r\n setPosition(corner) {\r\n this._cubeWrapper.classList.remove(\"top-8\", \"bottom-8\", \"left-8\", \"right-8\");\r\n const wrapperPositions = {\r\n \"top-left\": [\"top-8\", \"left-8\"],\r\n \"top-right\": [\"top-8\", \"right-8\"],\r\n \"bottom-right\": [\"bottom-8\", \"right-8\"],\r\n \"bottom-left\": [\"bottom-8\", \"left-8\"],\r\n };\r\n this._cubeWrapper.classList.add(...wrapperPositions[corner]);\r\n }\r\n orientToFace(orientation) {\r\n const camera = this._camera.get();\r\n if (this._camera instanceof OrthoPerspectiveCamera) {\r\n const controls = this._camera.controls;\r\n const projection = this._camera.getProjection();\r\n const target = camera.position\r\n .clone()\r\n .add(this._faceOrientations[orientation].clone().multiplyScalar(-1));\r\n const { x, y, z } = camera.position;\r\n if (projection === \"Perspective\") {\r\n controls.setLookAt(x, y, z, target.x, target.y, target.z, true);\r\n }\r\n else {\r\n const pos = new THREE.Vector3();\r\n if (orientation === \"top\")\r\n pos.set(0, 200, 0);\r\n if (orientation === \"bottom\")\r\n pos.set(0, -200, 0);\r\n if (orientation === \"left\")\r\n pos.set(-200, 0, 0);\r\n if (orientation === \"right\")\r\n pos.set(200, 0, 0);\r\n if (orientation === \"front\")\r\n pos.set(0, 0, 200);\r\n if (orientation === \"back\")\r\n pos.set(0, 0, -200);\r\n controls.setPosition(pos.x, pos.y, pos.z, true);\r\n controls.setTarget(0, 0, 0, true);\r\n }\r\n this._camera.fit(undefined, this.offset);\r\n }\r\n }\r\n get _viewerContainer() {\r\n return this.components.renderer.get().domElement.parentElement;\r\n }\r\n get _camera() {\r\n return this.components.camera;\r\n }\r\n getCameraCSSMatrix(matrix) {\r\n const { elements } = matrix;\r\n const epsilon = (value) => {\r\n return Math.abs(value) < 1e-10 ? 0 : value;\r\n };\r\n return `matrix3d(\r\n ${epsilon(elements[0])},\r\n ${epsilon(-elements[1])},\r\n ${epsilon(elements[2])},\r\n ${epsilon(elements[3])},\r\n ${epsilon(elements[4])},\r\n ${epsilon(-elements[5])},\r\n ${epsilon(elements[6])},\r\n ${epsilon(elements[7])},\r\n ${epsilon(elements[8])},\r\n ${epsilon(-elements[9])},\r\n ${epsilon(elements[10])},\r\n ${epsilon(elements[11])},\r\n ${epsilon(elements[12])},\r\n ${epsilon(-elements[13])},\r\n ${epsilon(elements[14])},\r\n ${epsilon(elements[15])})\r\n `;\r\n }\r\n get() {\r\n return this._cubeWrapper;\r\n }\r\n}\r\nCubeMap.uuid = \"53311ea3-323a-476f-ae4a-d681778e8f67\";\r\nToolComponent.libraryUUIDs.add(CubeMap.uuid);\r\n//# sourceMappingURL=index.js.map","import { SimpleClipper } from \"../../core\";\r\nimport { EdgesPlane } from \"./src/edges-plane\";\r\nimport { EdgesStyles } from \"./src/edges-styles\";\r\nexport * from \"./src/edges-plane\";\r\n/**\r\n * A more advanced version of {@link SimpleClipper} that also supports\r\n * {@link ClippingEdges} with customizable lines.\r\n */\r\nexport class EdgesClipper extends SimpleClipper {\r\n constructor(components) {\r\n super(components);\r\n this.components.tools.list[EdgesClipper.uuid] = this;\r\n this.PlaneType = EdgesPlane;\r\n this.styles = new EdgesStyles(components);\r\n }\r\n /** {@link Component.get} */\r\n async dispose() {\r\n await super.dispose();\r\n await this.styles.dispose();\r\n }\r\n /**\r\n * Updates all the lines of the {@link ClippingEdges}.\r\n */\r\n async updateEdges(updateFills = false) {\r\n if (!this.enabled)\r\n return;\r\n for (const plane of this._planes) {\r\n if (updateFills) {\r\n await plane.updateFill();\r\n }\r\n else {\r\n await plane.update();\r\n }\r\n }\r\n }\r\n newPlaneInstance(point, normal) {\r\n return new this.PlaneType(this.components, point, normal, this._material, this.styles);\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import * as THREE from \"three\";\r\nimport { FragmentMesh } from \"bim-fragment\";\r\nimport { Component, Event, } from \"../../../base-types\";\r\nimport { Disposer } from \"../../../core\";\r\nimport { ClippingFills } from \"./clipping-fills\";\r\nimport { PostproductionRenderer } from \"../../PostproductionRenderer\";\r\n/**\r\n * The edges that are drawn when the {@link EdgesPlane} sections a mesh.\r\n */\r\nexport class ClippingEdges extends Component {\r\n /** {@link Hideable.visible} */\r\n get visible() {\r\n return this._visible;\r\n }\r\n get fillVisible() {\r\n for (const name in this._edges) {\r\n const edges = this._edges[name];\r\n if (edges.fill) {\r\n return edges.fill.visible;\r\n }\r\n }\r\n return false;\r\n }\r\n set fillVisible(visible) {\r\n for (const name in this._edges) {\r\n const edges = this._edges[name];\r\n if (edges.fill) {\r\n edges.fill.visible = visible;\r\n }\r\n }\r\n }\r\n constructor(components, plane, styles) {\r\n super(components);\r\n /** {@link Disposable.onDisposed} */\r\n this.onDisposed = new Event();\r\n /** {@link Updateable.onAfterUpdate} */\r\n this.onAfterUpdate = new Event();\r\n /** {@link Updateable.onBeforeUpdate} */\r\n this.onBeforeUpdate = new Event();\r\n /** {@link Component.name} */\r\n this.name = \"ClippingEdges\";\r\n /** {@link Component.enabled}. */\r\n this.enabled = true;\r\n this.fillNeedsUpdate = false;\r\n this.blockByIndex = {};\r\n this._edges = {};\r\n this._visible = true;\r\n this._inverseMatrix = new THREE.Matrix4();\r\n this._localPlane = new THREE.Plane();\r\n this._tempLine = new THREE.Line3();\r\n this._tempVector = new THREE.Vector3();\r\n this._plane = plane;\r\n this._styles = styles;\r\n }\r\n async setVisible(visible) {\r\n this._visible = visible;\r\n const names = Object.keys(this._edges);\r\n for (const edgeName of names) {\r\n this.updateEdgesVisibility(edgeName, visible);\r\n }\r\n if (visible) {\r\n await this.update();\r\n }\r\n }\r\n /** {@link Updateable.update} */\r\n async update() {\r\n const styles = this._styles.get();\r\n await this.updateDeletedEdges(styles);\r\n for (const name in styles) {\r\n this.drawEdges(name);\r\n }\r\n this.fillNeedsUpdate = false;\r\n }\r\n /** {@link Component.get} */\r\n get() {\r\n return this._edges;\r\n }\r\n /** {@link Disposable.dispose} */\r\n async dispose() {\r\n const names = Object.keys(this._edges);\r\n for (const name of names) {\r\n this.disposeEdge(name);\r\n }\r\n await this.onDisposed.trigger();\r\n this.onDisposed.reset();\r\n }\r\n newEdgesMesh(styleName) {\r\n const styles = this._styles.get();\r\n const material = styles[styleName].lineMaterial;\r\n const edgesGeometry = new THREE.BufferGeometry();\r\n const buffer = new Float32Array(300000);\r\n const linePosAttr = new THREE.BufferAttribute(buffer, 3, false);\r\n linePosAttr.setUsage(THREE.DynamicDrawUsage);\r\n edgesGeometry.setAttribute(\"position\", linePosAttr);\r\n const lines = new THREE.LineSegments(edgesGeometry, material);\r\n lines.frustumCulled = false;\r\n return lines;\r\n }\r\n newFillMesh(name, geometry) {\r\n const styles = this._styles.get();\r\n const style = styles[name];\r\n const fillMaterial = style.fillMaterial;\r\n if (fillMaterial) {\r\n const fills = new ClippingFills(this.components, this._plane, geometry, fillMaterial);\r\n this.newFillOutline(name, fills, style);\r\n return fills;\r\n }\r\n return undefined;\r\n }\r\n newFillOutline(name, fills, style) {\r\n if (!style.outlineMaterial)\r\n return;\r\n const renderer = this.components.renderer;\r\n if (renderer instanceof PostproductionRenderer) {\r\n const pRenderer = renderer;\r\n const outlines = pRenderer.postproduction.customEffects.outlinedMeshes;\r\n if (!outlines[name]) {\r\n outlines[name] = {\r\n meshes: new Set(),\r\n material: style.outlineMaterial,\r\n };\r\n }\r\n fills.styleName = name;\r\n }\r\n }\r\n // Source: https://gkjohnson.github.io/three-mesh-bvh/example/bundle/clippedEdges.html\r\n drawEdges(styleName) {\r\n this.blockByIndex = {};\r\n const style = this._styles.get()[styleName];\r\n if (!this._edges[styleName]) {\r\n this.initializeStyle(styleName);\r\n }\r\n const edges = this._edges[styleName];\r\n let index = 0;\r\n const posAttr = edges.mesh.geometry.attributes.position;\r\n // @ts-ignore\r\n posAttr.array.fill(0);\r\n const indexes = [];\r\n let lastIndex = 0;\r\n for (const mesh of style.meshes) {\r\n if (!mesh.geometry) {\r\n continue;\r\n }\r\n if (!mesh.geometry.boundsTree) {\r\n throw new Error(\"Boundstree not found for clipping edges subset.\");\r\n }\r\n const instanced = mesh;\r\n if (instanced.count === 0) {\r\n continue;\r\n }\r\n if (instanced.count > 1) {\r\n for (let i = 0; i < instanced.count; i++) {\r\n // Exclude fragment instances that don't belong to this style\r\n const isFragment = instanced instanceof FragmentMesh;\r\n const fMesh = instanced;\r\n const ids = style.fragments[fMesh.fragment.id];\r\n if (isFragment && ids) {\r\n const itemID = fMesh.fragment.items[i];\r\n if (!ids.has(itemID)) {\r\n continue;\r\n }\r\n }\r\n const tempMesh = new THREE.Mesh(mesh.geometry);\r\n tempMesh.matrix.copy(mesh.matrix);\r\n const tempMatrix = new THREE.Matrix4();\r\n instanced.getMatrixAt(i, tempMatrix);\r\n tempMesh.applyMatrix4(tempMatrix);\r\n tempMesh.applyMatrix4(mesh.matrix);\r\n tempMesh.updateMatrix();\r\n tempMesh.updateMatrixWorld();\r\n this._inverseMatrix.copy(tempMesh.matrixWorld).invert();\r\n this._localPlane.copy(this._plane).applyMatrix4(this._inverseMatrix);\r\n index = this.shapecast(tempMesh, posAttr, index, style);\r\n if (index !== lastIndex) {\r\n indexes.push(index);\r\n lastIndex = index;\r\n }\r\n }\r\n }\r\n else {\r\n this._inverseMatrix.copy(mesh.matrixWorld).invert();\r\n this._localPlane.copy(this._plane).applyMatrix4(this._inverseMatrix);\r\n const isFragment = mesh instanceof FragmentMesh;\r\n index = this.shapecast(mesh, posAttr, index, style, isFragment);\r\n if (index !== lastIndex) {\r\n indexes.push(index);\r\n lastIndex = index;\r\n }\r\n }\r\n }\r\n // set the draw range to only the new segments and offset the lines so they don't intersect with the geometry\r\n edges.mesh.geometry.setDrawRange(0, index);\r\n edges.mesh.position.copy(this._plane.normal).multiplyScalar(0.0001);\r\n posAttr.needsUpdate = true;\r\n // Update the edges geometry only if there is no NaN in the output (which means there's been an error)\r\n const attributes = edges.mesh.geometry.attributes;\r\n const position = attributes.position;\r\n if (!Number.isNaN(position.array[0])) {\r\n const scene = this.components.scene.get();\r\n scene.add(edges.mesh);\r\n if (this.fillNeedsUpdate && edges.fill) {\r\n edges.fill.geometry = edges.mesh.geometry;\r\n edges.fill.update(indexes, this.blockByIndex);\r\n }\r\n }\r\n }\r\n initializeStyle(name) {\r\n const mesh = this.newEdgesMesh(name);\r\n const geometry = mesh.geometry;\r\n const fill = this.newFillMesh(name, geometry);\r\n this._edges[name] = { mesh, name, fill };\r\n }\r\n shapecast(mesh, posAttr, index, style, isMultiblockFragment = false) {\r\n // @ts-ignore\r\n mesh.geometry.boundsTree.shapecast({\r\n intersectsBounds: (box) => {\r\n return this._localPlane.intersectsBox(box);\r\n },\r\n // @ts-ignore\r\n intersectsTriangle: (tri, triangleIndex) => {\r\n // Exclude triangles of fragment items that don't belong to this style\r\n if (isMultiblockFragment && style.fragments) {\r\n const fMesh = mesh;\r\n const ids = style.fragments[fMesh.fragment.id];\r\n if (ids !== undefined) {\r\n const index = fMesh.geometry.index.array[triangleIndex * 3];\r\n const blockID = fMesh.geometry.attributes.blockID.array[index];\r\n const id = fMesh.fragment.getItemID(0, blockID);\r\n if (!ids.has(id)) {\r\n return;\r\n }\r\n }\r\n }\r\n // check each triangle edge to see if it intersects with the plane. If so then\r\n // add it to the list of segments.\r\n let count = 0;\r\n this._tempLine.start.copy(tri.a);\r\n this._tempLine.end.copy(tri.b);\r\n if (this._localPlane.intersectLine(this._tempLine, this._tempVector)) {\r\n const result = this._tempVector.applyMatrix4(mesh.matrixWorld);\r\n posAttr.setXYZ(index, result.x, result.y, result.z);\r\n count++;\r\n index++;\r\n }\r\n this._tempLine.start.copy(tri.b);\r\n this._tempLine.end.copy(tri.c);\r\n if (this._localPlane.intersectLine(this._tempLine, this._tempVector)) {\r\n const result = this._tempVector.applyMatrix4(mesh.matrixWorld);\r\n posAttr.setXYZ(index, result.x, result.y, result.z);\r\n count++;\r\n index++;\r\n }\r\n this._tempLine.start.copy(tri.c);\r\n this._tempLine.end.copy(tri.a);\r\n if (this._localPlane.intersectLine(this._tempLine, this._tempVector)) {\r\n const result = this._tempVector.applyMatrix4(mesh.matrixWorld);\r\n posAttr.setXYZ(index, result.x, result.y, result.z);\r\n count++;\r\n index++;\r\n }\r\n // If we only intersected with one or three sides then just remove it. This could be handled\r\n // more gracefully.\r\n if (count !== 2) {\r\n index -= count;\r\n }\r\n if (count === 2 && isMultiblockFragment) {\r\n const fMesh = mesh;\r\n const vertexIndex = fMesh.geometry.index.array[triangleIndex * 3];\r\n const block = fMesh.geometry.attributes.blockID.array[vertexIndex];\r\n this.blockByIndex[index - 2] = block;\r\n }\r\n },\r\n });\r\n return index;\r\n }\r\n updateEdgesVisibility(edgeName, visible) {\r\n const edges = this._edges[edgeName];\r\n if (edges.fill) {\r\n edges.fill.visible = visible;\r\n }\r\n edges.mesh.visible = visible;\r\n if (visible) {\r\n const scene = this.components.scene.get();\r\n scene.add(edges.mesh);\r\n }\r\n else {\r\n edges.mesh.removeFromParent();\r\n }\r\n }\r\n async updateDeletedEdges(styles) {\r\n const names = Object.keys(this._edges);\r\n for (const name of names) {\r\n if (styles[name] === undefined) {\r\n await this.disposeEdge(name);\r\n this.disposeOutline(name);\r\n }\r\n }\r\n }\r\n disposeOutline(name) {\r\n const renderer = this.components.renderer;\r\n if (renderer instanceof PostproductionRenderer) {\r\n const outlines = renderer.postproduction.customEffects.outlinedMeshes;\r\n delete outlines[name];\r\n }\r\n }\r\n disposeEdge(name) {\r\n const disposer = this.components.tools.get(Disposer);\r\n const edge = this._edges[name];\r\n if (edge.fill) {\r\n edge.fill.dispose();\r\n }\r\n disposer.destroy(edge.mesh, false);\r\n delete this._edges[name];\r\n }\r\n}\r\n//# sourceMappingURL=clipping-edges.js.map"],"names":["CubeMap","visible","this","_visible","value","_cubeWrapper","classList","remove","add","constructor","components","_a","super","onDisposed","enabled","onAfterUpdate","onBeforeUpdate","offset","_cubeFaceClass","_cyan","_pink","_blue","_cube","document","createElement","_matrix","_faceOrientations","front","top","bottom","right","left","back","update","extractRotation","_camera","get","matrixWorldInverse","style","transform","getCameraCSSMatrix","tools","uuid","id","className","setPosition","setSize","transformStyle","textTransform","append","camera","isUpdateable","frontFace","transition","onclick","orientToFace","topFace","bottomFace","rightFace","leftFace","backFace","_viewerContainer","async","reset","trigger","perspective","corner","orientation","O","controls","projection","getProjection","target","position","clone","multiplyScalar","x","y","z","setLookAt","pos","set","setTarget","fit","undefined","renderer","domElement","parentElement","matrix","elements","epsilon","Math","abs","EdgesClipper","list","PlaneType","styles","dispose","updateFills","plane","_planes","updateFill","newPlaneInstance","point","normal","_material","ClippingEdges","fillVisible","name","_edges","edges","fill","fillNeedsUpdate","blockByIndex","_inverseMatrix","_localPlane","_tempLine","_tempVector","_plane","_styles","names","Object","keys","edgeName","updateEdgesVisibility","updateDeletedEdges","drawEdges","disposeEdge","newEdgesMesh","styleName","material","lineMaterial","edgesGeometry","buffer","Float32Array","linePosAttr","setUsage","setAttribute","lines","frustumCulled","newFillMesh","geometry","fillMaterial","fills","newFillOutline","outlineMaterial","outlines","postproduction","customEffects","outlinedMeshes","meshes","Set","initializeStyle","index","posAttr","mesh","attributes","array","indexes","lastIndex","boundsTree","Error","instanced","count","i","isFragment","fMesh","ids","fragments","fragment","itemID","items","has","tempMesh","copy","tempMatrix","getMatrixAt","applyMatrix4","updateMatrix","updateMatrixWorld","matrixWorld","invert","shapecast","push","setDrawRange","needsUpdate","Number","isNaN","scene","isMultiblockFragment","intersectsBounds","box","intersectsBox","intersectsTriangle","tri","triangleIndex","blockID","getItemID","start","a","end","b","intersectLine","result","setXYZ","c","vertexIndex","block","removeFromParent","disposeOutline","disposer","edge","destroy"],"sourceRoot":""}