{"version":3,"file":"vendor.bim-fragment-00d4d03d.ddad1216ddd63cf1.bundle.js","mappings":"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","sources":["webpack://client-app/./node_modules/bim-fragment/src/serializer.js","webpack://client-app/./node_modules/bim-fragment/src/stream-serializer.js"],"sourcesContent":["import * as THREE from \"three\";\nimport * as flatbuffers from \"flatbuffers\";\nimport * as FB from \"./flatbuffers/fragments\";\nimport { Fragment } from \"./fragment\";\nimport { FragmentsGroup } from \"./fragments-group\";\nimport { Alignment, CurveMesh } from \"./civil\";\n/**\n * Object to export and import sets of fragments efficiently using the library\n * [flatbuffers](https://flatbuffers.dev/).\n */\nexport class Serializer {\n constructor() {\n this.fragmentIDSeparator = \"|\";\n }\n import(bytes) {\n const buffer = new flatbuffers.ByteBuffer(bytes);\n const fbFragmentsGroup = FB.FragmentsGroup.getRootAsFragmentsGroup(buffer);\n const fragmentsGroup = this.constructFragmentGroup(fbFragmentsGroup);\n const length = fbFragmentsGroup.itemsLength();\n for (let i = 0; i < length; i++) {\n const fbFragment = fbFragmentsGroup.items(i);\n if (!fbFragment)\n continue;\n const geometry = this.constructGeometry(fbFragment);\n const materials = this.constructMaterials(fbFragment);\n const capacity = fbFragment.capacity();\n const fragment = new Fragment(geometry, materials, capacity);\n fragment.capacityOffset = fbFragment.capacityOffset();\n this.setInstances(fbFragment, fragment);\n this.setID(fbFragment, fragment);\n fragmentsGroup.items.push(fragment);\n fragmentsGroup.add(fragment.mesh);\n }\n return fragmentsGroup;\n }\n export(group) {\n const builder = new flatbuffers.Builder(1024);\n const items = [];\n const G = FB.FragmentsGroup;\n const F = FB.Fragment;\n let civilData = null;\n if (group.civilData) {\n const alignments = [];\n const A = FB.Alignment;\n const C = FB.CivilData;\n for (const [_id, alignment] of group.civilData.alignments) {\n const { absolute, horizontal, vertical } = alignment;\n const horCurves = this.saveCivilCurves(horizontal, builder);\n const verCurves = this.saveCivilCurves(vertical, builder);\n const absCurves = this.saveCivilCurves(absolute, builder);\n const horVector = A.createHorizontalVector(builder, horCurves);\n const verVector = A.createVerticalVector(builder, verCurves);\n const absVector = A.createAbsoluteVector(builder, absCurves);\n A.startAlignment(builder);\n A.addHorizontal(builder, horVector);\n A.addVertical(builder, verVector);\n A.addAbsolute(builder, absVector);\n A.addInitialPk(builder, alignment.initialKP);\n const exported = A.endAlignment(builder);\n alignments.push(exported);\n }\n const algVector = C.createAlignmentsVector(builder, alignments);\n const coordVector = C.createCoordinationMatrixVector(builder, group.coordinationMatrix.elements);\n C.startCivilData(builder);\n C.addAlignments(builder, algVector);\n C.addCoordinationMatrix(builder, coordVector);\n civilData = C.endCivilData(builder);\n }\n for (const fragment of group.items) {\n const result = fragment.exportData();\n const itemsSize = [];\n for (const itemID of fragment.ids) {\n const instances = fragment.getInstancesIDs(itemID);\n if (!instances) {\n throw new Error(\"Instances not found!\");\n }\n itemsSize.push(instances.size);\n }\n const posVector = F.createPositionVector(builder, result.position);\n const normalVector = F.createNormalVector(builder, result.normal);\n const indexVector = F.createIndexVector(builder, result.index);\n const groupsVector = F.createGroupsVector(builder, result.groups);\n const matsVector = F.createMaterialsVector(builder, result.materials);\n const matricesVector = F.createMatricesVector(builder, result.matrices);\n const colorsVector = F.createColorsVector(builder, result.colors);\n const idsVector = F.createIdsVector(builder, result.ids);\n const itemsSizeVector = F.createItemsSizeVector(builder, itemsSize);\n const idStr = builder.createString(result.id);\n F.startFragment(builder);\n F.addPosition(builder, posVector);\n F.addNormal(builder, normalVector);\n F.addIndex(builder, indexVector);\n F.addGroups(builder, groupsVector);\n F.addMaterials(builder, matsVector);\n F.addMatrices(builder, matricesVector);\n F.addColors(builder, colorsVector);\n F.addIds(builder, idsVector);\n F.addItemsSize(builder, itemsSizeVector);\n F.addId(builder, idStr);\n F.addCapacity(builder, fragment.capacity);\n F.addCapacityOffset(builder, fragment.capacityOffset);\n const exported = FB.Fragment.endFragment(builder);\n items.push(exported);\n }\n const itemsVector = G.createItemsVector(builder, items);\n const matrixVector = G.createCoordinationMatrixVector(builder, group.coordinationMatrix.elements);\n let fragmentKeys = \"\";\n for (const fragmentID of group.keyFragments.values()) {\n if (fragmentKeys.length) {\n fragmentKeys += this.fragmentIDSeparator;\n }\n fragmentKeys += fragmentID;\n }\n const fragmentKeysRef = builder.createString(fragmentKeys);\n const keyIndices = [];\n const itemsKeys = [];\n const relsIndices = [];\n const itemsRels = [];\n const ids = [];\n let keysCounter = 0;\n let relsCounter = 0;\n for (const [expressID, [keys, rels]] of group.data) {\n keyIndices.push(keysCounter);\n relsIndices.push(relsCounter);\n ids.push(expressID);\n for (const key of keys) {\n itemsKeys.push(key);\n }\n for (const rel of rels) {\n itemsRels.push(rel);\n }\n keysCounter += keys.length;\n relsCounter += rels.length;\n }\n const opaqueIDs = [];\n const transpIDs = [];\n for (const [geometryID, key] of group.geometryIDs.opaque) {\n opaqueIDs.push(geometryID, key);\n }\n for (const [geometryID, key] of group.geometryIDs.transparent) {\n transpIDs.push(geometryID, key);\n }\n const groupID = builder.createString(group.uuid);\n const groupName = builder.createString(group.name);\n const ifcName = builder.createString(group.ifcMetadata.name);\n const ifcDescription = builder.createString(group.ifcMetadata.description);\n const ifcSchema = builder.createString(group.ifcMetadata.schema);\n const keysIVector = G.createItemsKeysIndicesVector(builder, keyIndices);\n const keysVector = G.createItemsKeysVector(builder, itemsKeys);\n const relsIVector = G.createItemsRelsIndicesVector(builder, relsIndices);\n const relsVector = G.createItemsRelsVector(builder, itemsRels);\n const idsVector = G.createIdsVector(builder, ids);\n const oIdsVector = G.createOpaqueGeometriesIdsVector(builder, opaqueIDs);\n const tIdsVector = G.createTransparentGeometriesIdsVector(builder, transpIDs);\n const { min, max } = group.boundingBox;\n const bbox = [min.x, min.y, min.z, max.x, max.y, max.z];\n const bboxVector = G.createBoundingBoxVector(builder, bbox);\n G.startFragmentsGroup(builder);\n G.addId(builder, groupID);\n G.addName(builder, groupName);\n G.addIfcName(builder, ifcName);\n G.addIfcDescription(builder, ifcDescription);\n G.addIfcSchema(builder, ifcSchema);\n G.addMaxExpressId(builder, group.ifcMetadata.maxExpressID);\n G.addItems(builder, itemsVector);\n G.addFragmentKeys(builder, fragmentKeysRef);\n G.addIds(builder, idsVector);\n G.addItemsKeysIndices(builder, keysIVector);\n G.addItemsKeys(builder, keysVector);\n G.addItemsRelsIndices(builder, relsIVector);\n G.addItemsRels(builder, relsVector);\n G.addCoordinationMatrix(builder, matrixVector);\n G.addBoundingBox(builder, bboxVector);\n G.addOpaqueGeometriesIds(builder, oIdsVector);\n G.addTransparentGeometriesIds(builder, tIdsVector);\n if (civilData !== null) {\n G.addCivil(builder, civilData);\n }\n const result = FB.FragmentsGroup.endFragmentsGroup(builder);\n builder.finish(result);\n return builder.asUint8Array();\n }\n setID(fbFragment, fragment) {\n const id = fbFragment.id();\n if (id) {\n fragment.id = id;\n fragment.mesh.uuid = id;\n }\n }\n setInstances(fbFragment, fragment) {\n const matricesData = fbFragment.matricesArray();\n const colorData = fbFragment.colorsArray();\n const ids = fbFragment.idsArray();\n const itemsSize = fbFragment.itemsSizeArray();\n if (!matricesData || !ids || !itemsSize) {\n throw new Error(`Error: Can't load empty fragment!`);\n }\n const items = [];\n let offset = 0;\n for (let i = 0; i < itemsSize.length; i++) {\n const id = ids[i];\n const size = itemsSize[i];\n const transforms = [];\n const colorsArray = [];\n for (let j = 0; j < size; j++) {\n const mStart = offset * 16;\n const matrixArray = matricesData.subarray(mStart, mStart + 17);\n const transform = new THREE.Matrix4().fromArray(matrixArray);\n transforms.push(transform);\n if (colorData) {\n const cStart = offset * 3;\n const [r, g, b] = colorData.subarray(cStart, cStart + 4);\n const color = new THREE.Color(r, g, b);\n colorsArray.push(color);\n }\n offset++;\n }\n const colors = colorsArray.length ? colorsArray : undefined;\n items.push({ id, transforms, colors });\n }\n fragment.add(items);\n }\n constructMaterials(fragment) {\n const materials = fragment.materialsArray();\n const matArray = [];\n if (!materials)\n return matArray;\n for (let i = 0; i < materials.length; i += 5) {\n const opacity = materials[i];\n const transparent = Boolean(materials[i + 1]);\n const red = materials[i + 2];\n const green = materials[i + 3];\n const blue = materials[i + 4];\n const color = new THREE.Color(red, green, blue);\n const material = new THREE.MeshLambertMaterial({\n color,\n opacity,\n transparent,\n });\n matArray.push(material);\n }\n return matArray;\n }\n constructFragmentGroup(group) {\n const fragmentsGroup = new FragmentsGroup();\n const civil = group.civil();\n if (civil) {\n const matArray = civil.coordinationMatrixArray();\n const coordinationMatrix = new THREE.Matrix4();\n if (matArray) {\n coordinationMatrix.fromArray(matArray);\n }\n fragmentsGroup.civilData = { alignments: new Map(), coordinationMatrix };\n const aligLength = civil.alignmentsLength();\n for (let i = 0; i < aligLength; i++) {\n const lineMat = new THREE.LineBasicMaterial({ color: 0xffffff });\n const alignment = new Alignment();\n const aligData = civil.alignments(i);\n if (!aligData) {\n throw new Error(\"Alignment not found!\");\n }\n const horLength = aligData.horizontalLength();\n alignment.horizontal = this.constructCivilCurves(aligData, alignment, \"horizontal\", horLength, lineMat);\n const verLength = aligData.verticalLength();\n alignment.vertical = this.constructCivilCurves(aligData, alignment, \"vertical\", verLength, lineMat);\n const absLength = aligData.horizontalLength();\n alignment.absolute = this.constructCivilCurves(aligData, alignment, \"absolute\", absLength, lineMat);\n alignment.initialKP = aligData.initialPk();\n fragmentsGroup.civilData.alignments.set(i, alignment);\n }\n }\n // fragmentsGroup.ifcCivil?.horizontalAlignments\n fragmentsGroup.uuid = group.id() || fragmentsGroup.uuid;\n fragmentsGroup.name = group.name() || \"\";\n fragmentsGroup.ifcMetadata = {\n name: group.ifcName() || \"\",\n description: group.ifcDescription() || \"\",\n schema: group.ifcSchema() || \"IFC2X3\",\n maxExpressID: group.maxExpressId() || 0,\n };\n const defaultMatrix = new THREE.Matrix4().elements;\n const matrixArray = group.coordinationMatrixArray() || defaultMatrix;\n const ids = group.idsArray() || new Uint32Array();\n const keysIndices = group.itemsKeysIndicesArray() || new Uint32Array();\n const keysArray = group.itemsKeysArray() || new Uint32Array();\n const relsArray = group.itemsRelsArray() || new Uint32Array();\n const relsIndices = group.itemsRelsIndicesArray() || new Uint32Array();\n const keysIdsString = group.fragmentKeys() || \"\";\n const keysIdsArray = keysIdsString.split(this.fragmentIDSeparator);\n this.setGroupData(fragmentsGroup, ids, keysIndices, keysArray, 0);\n this.setGroupData(fragmentsGroup, ids, relsIndices, relsArray, 1);\n const opaqueIDs = group.opaqueGeometriesIdsArray() || new Uint32Array();\n const transpIDs = group.transparentGeometriesIdsArray() || new Uint32Array();\n const opaque = new Map();\n for (let i = 0; i < opaqueIDs.length - 1; i += 2) {\n const geometryID = opaqueIDs[i];\n const key = opaqueIDs[i + 1];\n opaque.set(geometryID, key);\n }\n const transparent = new Map();\n for (let i = 0; i < transpIDs.length - 1; i += 2) {\n const geometryID = transpIDs[i];\n const key = transpIDs[i + 1];\n transparent.set(geometryID, key);\n }\n fragmentsGroup.geometryIDs = { opaque, transparent };\n const bbox = group.boundingBoxArray() || [0, 0, 0, 0, 0, 0];\n const [minX, minY, minZ, maxX, maxY, maxZ] = bbox;\n fragmentsGroup.boundingBox.min.set(minX, minY, minZ);\n fragmentsGroup.boundingBox.max.set(maxX, maxY, maxZ);\n for (let i = 0; i < keysIdsArray.length; i++) {\n fragmentsGroup.keyFragments.set(i, keysIdsArray[i]);\n }\n if (matrixArray.length === 16) {\n fragmentsGroup.coordinationMatrix.fromArray(matrixArray);\n }\n return fragmentsGroup;\n }\n setGroupData(group, ids, indices, array, index) {\n for (let i = 0; i < indices.length; i++) {\n const expressID = ids[i];\n const currentIndex = indices[i];\n const nextIndex = indices[i + 1] || array.length;\n const keys = [];\n for (let j = currentIndex; j < nextIndex; j++) {\n keys.push(array[j]);\n }\n if (!group.data.has(expressID)) {\n group.data.set(expressID, [[], []]);\n }\n const data = group.data.get(expressID);\n if (!data)\n continue;\n data[index] = keys;\n }\n }\n constructGeometry(fragment) {\n const position = fragment.positionArray() || new Float32Array();\n const normal = fragment.normalArray() || new Float32Array();\n const index = fragment.indexArray();\n const groups = fragment.groupsArray();\n if (!index)\n throw new Error(\"Index not found!\");\n const geometry = new THREE.BufferGeometry();\n geometry.setIndex(Array.from(index));\n geometry.setAttribute(\"position\", new THREE.BufferAttribute(position, 3));\n geometry.setAttribute(\"normal\", new THREE.BufferAttribute(normal, 3));\n if (groups) {\n for (let i = 0; i < groups.length; i += 3) {\n const start = groups[i];\n const count = groups[i + 1];\n const materialIndex = groups[i + 2];\n geometry.addGroup(start, count, materialIndex);\n }\n }\n return geometry;\n }\n constructCivilCurves(alignData, alignment, option, length, lineMat) {\n const curves = [];\n for (let i = 0; i < length; i++) {\n const found = alignData[option](i);\n if (!found) {\n throw new Error(\"Curve not found!\");\n }\n const points = found.pointsArray();\n if (points === null) {\n throw new Error(\"Curve points not found!\");\n }\n let data = {};\n const curveData = found.data();\n if (curveData) {\n data = JSON.parse(curveData);\n }\n const geometry = new THREE.EdgesGeometry();\n const posAttr = new THREE.BufferAttribute(points, 3);\n geometry.setAttribute(\"position\", posAttr);\n const index = [];\n for (let i = 0; i < points.length / 3 - 1; i++) {\n index.push(i, i + 1);\n }\n geometry.setIndex(index);\n const curveMesh = new CurveMesh(i, data, alignment, geometry, lineMat);\n curves.push(curveMesh.curve);\n }\n return curves;\n }\n saveCivilCurves(curves, builder) {\n const CC = FB.CivilCurve;\n const curvesRef = [];\n for (const curve of curves) {\n const attrs = curve.mesh.geometry.attributes;\n const position = attrs.position.array;\n const posVector = CC.createPointsVector(builder, position);\n const dataStr = builder.createString(JSON.stringify(curve.data));\n CC.startCivilCurve(builder);\n CC.addPoints(builder, posVector);\n CC.addData(builder, dataStr);\n const exported = CC.endCivilCurve(builder);\n curvesRef.push(exported);\n }\n return curvesRef;\n }\n}\n//# sourceMappingURL=serializer.js.map","import * as flatbuffers from \"flatbuffers\";\nimport * as FB from \"./flatbuffers/streamed-geometries\";\nexport class StreamSerializer {\n import(bytes) {\n const buffer = new flatbuffers.ByteBuffer(bytes);\n const fbGeoms = FB.StreamedGeometries.getRootAsStreamedGeometries(buffer);\n const geometries = new Map();\n const length = fbGeoms.geometriesLength();\n for (let i = 0; i < length; i++) {\n const fbGeom = fbGeoms.geometries(i);\n if (!fbGeom)\n continue;\n const id = fbGeom.geometryId();\n if (id === null) {\n throw new Error(\"Error finding ID!\");\n }\n const position = fbGeom.positionArray();\n const normal = fbGeom.normalArray();\n const index = fbGeom.indexArray();\n if (!position || !normal || !index) {\n continue;\n }\n geometries.set(id, { position, normal, index });\n }\n return geometries;\n }\n export(geometries) {\n const builder = new flatbuffers.Builder(1024);\n const createdGeoms = [];\n const Gs = FB.StreamedGeometries;\n const G = FB.StreamedGeometry;\n for (const [id, { index, position, normal }] of geometries) {\n const indexVector = G.createIndexVector(builder, index);\n const posVector = G.createPositionVector(builder, position);\n const norVector = G.createNormalVector(builder, normal);\n G.startStreamedGeometry(builder);\n G.addGeometryId(builder, id);\n G.addIndex(builder, indexVector);\n G.addPosition(builder, posVector);\n G.addNormal(builder, norVector);\n const created = G.endStreamedGeometry(builder);\n createdGeoms.push(created);\n }\n const allGeoms = Gs.createGeometriesVector(builder, createdGeoms);\n Gs.startStreamedGeometries(builder);\n Gs.addGeometries(builder, allGeoms);\n const result = Gs.endStreamedGeometries(builder);\n builder.finish(result);\n return builder.asUint8Array();\n }\n}\n//# sourceMappingURL=stream-serializer.js.map"],"names":["Serializer","constructor","this","fragmentIDSeparator","import","bytes","buffer","fbFragmentsGroup","getRootAsFragmentsGroup","fragmentsGroup","constructFragmentGroup","length","itemsLength","i","fbFragment","items","geometry","constructGeometry","materials","constructMaterials","capacity","fragment","F","capacityOffset","setInstances","setID","push","add","mesh","group","builder","G","civilData","alignments","A","C","_id","alignment","absolute","horizontal","vertical","horCurves","saveCivilCurves","verCurves","absCurves","horVector","createHorizontalVector","verVector","createVerticalVector","absVector","createAbsoluteVector","startAlignment","addHorizontal","addVertical","addAbsolute","addInitialPk","initialKP","exported","endAlignment","algVector","createAlignmentsVector","coordVector","createCoordinationMatrixVector","coordinationMatrix","elements","startCivilData","addAlignments","addCoordinationMatrix","endCivilData","result","exportData","itemsSize","itemID","ids","instances","getInstancesIDs","Error","size","posVector","createPositionVector","position","normalVector","createNormalVector","normal","indexVector","createIndexVector","index","groupsVector","createGroupsVector","groups","matsVector","createMaterialsVector","matricesVector","createMatricesVector","matrices","colorsVector","createColorsVector","colors","idsVector","createIdsVector","itemsSizeVector","createItemsSizeVector","idStr","createString","id","startFragment","addPosition","addNormal","addIndex","addGroups","addMaterials","addMatrices","addColors","addIds","addItemsSize","addId","addCapacity","addCapacityOffset","endFragment","itemsVector","createItemsVector","matrixVector","fragmentKeys","fragmentID","keyFragments","values","fragmentKeysRef","keyIndices","itemsKeys","relsIndices","itemsRels","keysCounter","relsCounter","expressID","keys","rels","data","key","rel","opaqueIDs","transpIDs","geometryID","geometryIDs","opaque","transparent","groupID","uuid","groupName","name","ifcName","ifcMetadata","ifcDescription","description","ifcSchema","schema","keysIVector","createItemsKeysIndicesVector","keysVector","createItemsKeysVector","relsIVector","createItemsRelsIndicesVector","relsVector","createItemsRelsVector","oIdsVector","createOpaqueGeometriesIdsVector","tIdsVector","createTransparentGeometriesIdsVector","min","max","boundingBox","bbox","x","y","z","bboxVector","createBoundingBoxVector","startFragmentsGroup","addName","addIfcName","addIfcDescription","addIfcSchema","addMaxExpressId","maxExpressID","addItems","addFragmentKeys","addItemsKeysIndices","addItemsKeys","addItemsRelsIndices","addItemsRels","addBoundingBox","addOpaqueGeometriesIds","addTransparentGeometriesIds","addCivil","endFragmentsGroup","finish","asUint8Array","matricesData","matricesArray","colorData","colorsArray","idsArray","itemsSizeArray","offset","transforms","j","mStart","matrixArray","subarray","transform","fromArray","cStart","r","g","b","color","undefined","materialsArray","matArray","opacity","Boolean","red","green","blue","material","civil","coordinationMatrixArray","Map","aligLength","alignmentsLength","lineMat","aligData","horLength","horizontalLength","constructCivilCurves","verLength","verticalLength","absLength","initialPk","set","maxExpressId","defaultMatrix","Uint32Array","keysIndices","itemsKeysIndicesArray","keysArray","itemsKeysArray","relsArray","itemsRelsArray","itemsRelsIndicesArray","keysIdsArray","split","setGroupData","opaqueGeometriesIdsArray","transparentGeometriesIdsArray","boundingBoxArray","minX","minY","minZ","maxX","maxY","maxZ","indices","array","currentIndex","nextIndex","has","get","positionArray","Float32Array","normalArray","indexArray","groupsArray","setIndex","Array","from","setAttribute","start","count","materialIndex","addGroup","alignData","option","curves","found","points","pointsArray","curveData","JSON","parse","posAttr","curveMesh","curve","CC","curvesRef","attributes","createPointsVector","dataStr","stringify","startCivilCurve","addPoints","addData","endCivilCurve","StreamSerializer","fbGeoms","getRootAsStreamedGeometries","geometries","geometriesLength","fbGeom","geometryId","createdGeoms","Gs","norVector","startStreamedGeometry","addGeometryId","created","endStreamedGeometry","allGeoms","createGeometriesVector","startStreamedGeometries","addGeometries","endStreamedGeometries"],"sourceRoot":""}