{"version":3,"file":"vendor.openbim-components-c9195ffa.10cc1ca02a69ba70.bundle.js","mappings":"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","sources":["webpack://client-app/./node_modules/openbim-components/src/ifc/IfcPropertiesProcessor/src/property-tag.js","webpack://client-app/./node_modules/openbim-components/src/ifc/IfcPropertiesProcessor/src/attribute-tag.js","webpack://client-app/./node_modules/openbim-components/src/ifc/IfcPropertiesProcessor/src/attribute-set.js","webpack://client-app/./node_modules/openbim-components/src/ifc/IfcPropertiesProcessor/index.js"],"sourcesContent":["import { SimpleUIComponent } from \"../../../ui/SimpleUIComponent\";\r\nimport { UIManager } from \"../../../ui/UIManager\";\r\nimport { IfcPropertiesUtils } from \"../../IfcPropertiesUtils\";\r\nexport class PropertyTag extends SimpleUIComponent {\r\n get label() {\r\n return this.innerElements.label.textContent;\r\n }\r\n set label(value) {\r\n this.innerElements.label.textContent = value;\r\n }\r\n get value() {\r\n return this.innerElements.value.textContent;\r\n }\r\n set value(value) {\r\n this.innerElements.value.textContent = String(value);\r\n }\r\n constructor(components, propertiesProcessor, model, expressID) {\r\n const template = `\r\n
\r\n
\r\n

\r\n

\r\n
\r\n
\r\n `;\r\n super(components, template);\r\n this.name = \"PropertyTag\";\r\n this.expressID = 0;\r\n this.innerElements = {\r\n label: this.getInnerElement(\"label\"),\r\n value: this.getInnerElement(\"value\"),\r\n };\r\n this.model = model;\r\n this.expressID = expressID;\r\n this._propertiesProcessor = propertiesProcessor;\r\n this.setInitialValues();\r\n this.setListeners();\r\n }\r\n async dispose(onlyChildren = false) {\r\n await super.dispose(onlyChildren);\r\n this.model = null;\r\n this._propertiesProcessor = null;\r\n if (Object.keys(this.innerElements).length) {\r\n this.innerElements.value.remove();\r\n this.innerElements.label.remove();\r\n }\r\n }\r\n async setListeners() {\r\n const propertiesManager = this._propertiesProcessor.propertiesManager;\r\n if (!propertiesManager)\r\n return;\r\n const { key: nameKey } = await IfcPropertiesUtils.getEntityName(this.model, this.expressID);\r\n const { key: valueKey } = await IfcPropertiesUtils.getQuantityValue(this.model, this.expressID);\r\n if (nameKey) {\r\n const event = await propertiesManager.setAttributeListener(this.model, this.expressID, nameKey);\r\n event.add((v) => (this.label = v.toString()));\r\n }\r\n if (valueKey) {\r\n const event = await propertiesManager.setAttributeListener(this.model, this.expressID, valueKey);\r\n event.add((v) => (this.value = v));\r\n }\r\n }\r\n async setInitialValues() {\r\n const entity = await this.model.getProperties(this.expressID);\r\n if (!entity) {\r\n this.label = \"NULL\";\r\n this.value = `ExpressID ${this.expressID} not found`;\r\n }\r\n else {\r\n const { name } = await IfcPropertiesUtils.getEntityName(this.model, this.expressID);\r\n const { value } = await IfcPropertiesUtils.getQuantityValue(this.model, this.expressID);\r\n this.label = name;\r\n this.value = value;\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=property-tag.js.map","import { PropertyTag } from \"./property-tag\";\r\nexport class AttributeTag extends PropertyTag {\r\n constructor(components, propertiesProcessor, model, expressID, attributeName = \"Name\") {\r\n super(components, propertiesProcessor, model, expressID);\r\n this.name = \"AttributeTag\";\r\n this.expressID = 0;\r\n this.model = model;\r\n this.expressID = expressID;\r\n this.attributeName = attributeName;\r\n this._propertiesProcessor = propertiesProcessor;\r\n this.setInitialValues();\r\n this.setListeners();\r\n }\r\n async dispose(onlyChildren = false) {\r\n await super.dispose(onlyChildren);\r\n this.model = null;\r\n }\r\n async setListeners() {\r\n const propertiesManager = this._propertiesProcessor.propertiesManager;\r\n if (!propertiesManager)\r\n return;\r\n try {\r\n const event = await propertiesManager.setAttributeListener(this.model, this.expressID, this.attributeName);\r\n event.add((v) => (this.value = v));\r\n }\r\n catch (err) {\r\n // console.log(err);\r\n }\r\n }\r\n async setInitialValues() {\r\n if (!this.model.hasProperties) {\r\n this.label = `Model ${this.model.ifcMetadata.name} has no properties`;\r\n this.value = \"NULL\";\r\n return;\r\n }\r\n const entity = await this.model.getProperties(this.expressID);\r\n if (!entity) {\r\n this.label = `ExpressID ${this.expressID} not found`;\r\n this.value = \"NULL\";\r\n return;\r\n }\r\n const attributes = Object.keys(entity);\r\n if (!attributes.includes(this.attributeName)) {\r\n this.label = `Attribute ${this.attributeName} not found`;\r\n this.value = \"NULL\";\r\n return;\r\n }\r\n if (!entity[this.attributeName])\r\n return;\r\n this.label = this.attributeName;\r\n this.value = entity[this.attributeName].value;\r\n }\r\n}\r\n//# sourceMappingURL=attribute-tag.js.map","import { TreeView } from \"../../../ui\";\r\nimport { AttributeTag } from \"./attribute-tag\";\r\nexport class AttributeSet extends TreeView {\r\n set expressID(value) {\r\n this._expressID = value;\r\n this._attributes = [];\r\n this.slots.content.dispose(true);\r\n }\r\n get expressID() {\r\n return this._expressID;\r\n }\r\n constructor(components, propertiesProcessor, model, expressID) {\r\n super(components, \"ATTRIBUTES\");\r\n this.name = \"AttributeSet\";\r\n this.attributesToIgnore = [];\r\n this._expressID = 0;\r\n this._attributes = [];\r\n this._generated = false;\r\n this.model = model;\r\n this.expressID = expressID;\r\n this._propertiesProcessor = propertiesProcessor;\r\n this.onExpand.add(() => this.generate());\r\n }\r\n async dispose(onlyChildren = false) {\r\n await super.dispose(onlyChildren);\r\n this.model = null;\r\n this.attributesToIgnore = [];\r\n this._attributes = [];\r\n this._propertiesProcessor = null;\r\n }\r\n async generate() {\r\n if (this._generated || !this.model.hasProperties)\r\n return;\r\n await this.update();\r\n this._generated = true;\r\n }\r\n async update() {\r\n const entity = await this.model.getProperties(this.expressID);\r\n if (!entity)\r\n return;\r\n for (const attributeName in entity) {\r\n const ignore = this.attributesToIgnore.includes(attributeName);\r\n if (ignore)\r\n continue;\r\n const included = this._attributes.includes(attributeName);\r\n if (included) {\r\n // const tag = this.slots.content.children.find((child) => {\r\n // if (!(child instanceof AttributeTag)) return false;\r\n // return child.attributeName === attributeName;\r\n // }) as AttributeTag;\r\n // tag?.update();\r\n }\r\n else {\r\n const attribute = entity[attributeName];\r\n if (!attribute?.value)\r\n continue; // in case there is an attribute without handle\r\n this._attributes.push(attributeName);\r\n const tag = new AttributeTag(this._components, this._propertiesProcessor, this.model, this.expressID, attributeName);\r\n this.addChild(tag);\r\n }\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=attribute-set.js.map","import * as WEBIFC from \"web-ifc\";\r\nimport { IfcPropertiesUtils } from \"../IfcPropertiesUtils\";\r\nimport { Button, FloatingWindow, SimpleUIComponent, TreeView } from \"../../ui\";\r\nimport { Event, UIElement, Component } from \"../../base-types\";\r\nimport { ToolComponent } from \"../../core\";\r\nimport { IfcCategoryMap } from \"../ifc-category-map\";\r\nimport { AttributeSet, PropertyTag } from \"./src\";\r\nimport { FragmentManager } from \"../../fragments/FragmentManager\";\r\nexport * from \"./src\";\r\nexport class IfcPropertiesProcessor extends Component {\r\n // private _entityUIPool: UIPool;\r\n set propertiesManager(manager) {\r\n if (this._propertiesManager)\r\n return;\r\n this._propertiesManager = manager;\r\n if (manager) {\r\n manager.onElementToPset.add(async ({ model, psetID, elementID }) => {\r\n const modelIndexMap = this._indexMap[model.uuid];\r\n if (!modelIndexMap)\r\n return;\r\n this.setEntityIndex(model, elementID).add(psetID);\r\n if (this._currentUI[elementID]) {\r\n const ui = await this.newPsetUI(model, psetID);\r\n this._currentUI[elementID].addChild(...ui);\r\n }\r\n });\r\n manager.onPsetRemoved.add(async ({ psetID }) => {\r\n const psetUI = this._currentUI[psetID];\r\n if (psetUI) {\r\n await psetUI.dispose();\r\n }\r\n });\r\n manager.onPropToPset.add(async ({ model, psetID, propID }) => {\r\n const psetUI = this._currentUI[psetID];\r\n if (!psetUI)\r\n return;\r\n const tag = await this.newPropertyTag(model, psetID, propID, \"NominalValue\");\r\n if (tag)\r\n psetUI.addChild(tag);\r\n });\r\n this.onPropertiesManagerSet.trigger(manager);\r\n }\r\n }\r\n get propertiesManager() {\r\n return this._propertiesManager;\r\n }\r\n constructor(components) {\r\n super(components);\r\n /** {@link Disposable.onDisposed} */\r\n this.onDisposed = new Event();\r\n this.enabled = true;\r\n this.uiElement = new UIElement();\r\n this.relationsToProcess = [\r\n WEBIFC.IFCRELDEFINESBYPROPERTIES,\r\n WEBIFC.IFCRELDEFINESBYTYPE,\r\n WEBIFC.IFCRELASSOCIATESMATERIAL,\r\n WEBIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE,\r\n WEBIFC.IFCRELASSOCIATESCLASSIFICATION,\r\n WEBIFC.IFCRELASSIGNSTOGROUP,\r\n ];\r\n this.entitiesToIgnore = [WEBIFC.IFCOWNERHISTORY, WEBIFC.IFCMATERIALLAYERSETUSAGE];\r\n this.attributesToIgnore = [\r\n \"CompositionType\",\r\n \"Representation\",\r\n \"ObjectPlacement\",\r\n \"OwnerHistory\",\r\n ];\r\n this._indexMap = {};\r\n this._renderFunctions = {};\r\n this._propertiesManager = null;\r\n this._currentUI = {};\r\n this.onPropertiesManagerSet = new Event();\r\n this.onFragmentsDisposed = (data) => {\r\n delete this._indexMap[data.groupID];\r\n };\r\n this.components.tools.add(IfcPropertiesProcessor.uuid, this);\r\n // this._entityUIPool = new UIPool(this._components, TreeView);\r\n this._renderFunctions = this.getRenderFunctions();\r\n const fragmentManager = components.tools.get(FragmentManager);\r\n fragmentManager.onFragmentsDisposed.add(this.onFragmentsDisposed);\r\n if (components.uiEnabled) {\r\n this.setUI();\r\n }\r\n }\r\n getRenderFunctions() {\r\n return {\r\n 0: (model, expressID) => this.newEntityUI(model, expressID),\r\n [WEBIFC.IFCPROPERTYSET]: (model, expressID) => this.newPsetUI(model, expressID),\r\n [WEBIFC.IFCELEMENTQUANTITY]: (model, expressID) => this.newQsetUI(model, expressID),\r\n };\r\n }\r\n async dispose() {\r\n await this.uiElement.dispose();\r\n this._indexMap = {};\r\n this.propertiesManager = null;\r\n for (const id in this._currentUI) {\r\n await this._currentUI[id].dispose();\r\n }\r\n this._currentUI = {};\r\n this.onPropertiesManagerSet.reset();\r\n const fragmentManager = this.components.tools.get(FragmentManager);\r\n fragmentManager.onFragmentsDisposed.remove(this.onFragmentsDisposed);\r\n await this.onDisposed.trigger(IfcPropertiesProcessor.uuid);\r\n this.onDisposed.reset();\r\n }\r\n async getProperties(model, id) {\r\n if (!model.hasProperties)\r\n return null;\r\n const modelProperties = model.getLocalProperties();\r\n if (modelProperties === undefined) {\r\n return null;\r\n }\r\n const map = this._indexMap[model.uuid];\r\n if (!map)\r\n return null;\r\n const indices = map[id];\r\n const idNumber = parseInt(id, 10);\r\n const props = await model.getProperties(idNumber);\r\n if (!props) {\r\n throw new Error(\"Properties not found!\");\r\n }\r\n const nativeProperties = this.cloneProperty(props);\r\n if (!nativeProperties) {\r\n throw new Error(\"Properties not found!\");\r\n }\r\n const properties = [nativeProperties];\r\n if (indices) {\r\n for (const index of indices) {\r\n const props = await model.getProperties(index);\r\n if (!props)\r\n continue;\r\n const pset = this.cloneProperty(props);\r\n if (!pset)\r\n continue;\r\n this.getPsetProperties(pset, modelProperties);\r\n this.getNestedPsets(pset, modelProperties);\r\n properties.push(pset);\r\n }\r\n }\r\n return properties;\r\n }\r\n getNestedPsets(pset, props) {\r\n if (pset.HasPropertySets) {\r\n for (const subPSet of pset.HasPropertySets) {\r\n const psetID = subPSet.value;\r\n subPSet.value = this.cloneProperty(props[psetID]);\r\n this.getPsetProperties(subPSet.value, props);\r\n }\r\n }\r\n }\r\n getPsetProperties(pset, props) {\r\n if (pset.HasProperties) {\r\n for (const property of pset.HasProperties) {\r\n const psetID = property.value;\r\n const result = this.cloneProperty(props[psetID]);\r\n property.value = { ...result };\r\n }\r\n }\r\n }\r\n setUI() {\r\n const topToolbar = new SimpleUIComponent(this.components);\r\n const propsList = new SimpleUIComponent(this.components, `
`);\r\n const main = new Button(this.components, {\r\n materialIconName: \"list\",\r\n });\r\n const propertiesWindow = new FloatingWindow(this.components);\r\n this.components.ui.add(propertiesWindow);\r\n propertiesWindow.title = \"Element Properties\";\r\n propertiesWindow.addChild(topToolbar, propsList);\r\n main.tooltip = \"Properties\";\r\n main.onClick.add(() => {\r\n propertiesWindow.visible = !propertiesWindow.visible;\r\n });\r\n propertiesWindow.onHidden.add(() => (main.active = false));\r\n propertiesWindow.onVisible.add(() => (main.active = true));\r\n propertiesWindow.visible = false;\r\n this.uiElement.set({\r\n main,\r\n propertiesWindow,\r\n propsList,\r\n topToolbar,\r\n });\r\n }\r\n async cleanPropertiesList() {\r\n this._currentUI = {};\r\n if (this.components.uiEnabled) {\r\n if (this._propertiesManager) {\r\n const button = this._propertiesManager.uiElement.get(\"exportButton\");\r\n button.removeFromParent();\r\n }\r\n const propsList = this.uiElement.get(\"propsList\");\r\n await propsList.dispose(true);\r\n const propsWindow = this.uiElement.get(\"propertiesWindow\");\r\n propsWindow.description = null;\r\n propsList.children = [];\r\n }\r\n // for (const child of this._propsList.children) {\r\n // if (child instanceof TreeView) {\r\n // this._entityUIPool.return(child);\r\n // continue;\r\n // }\r\n // child.dispose();\r\n // }\r\n }\r\n get() {\r\n return this._indexMap;\r\n }\r\n async process(model) {\r\n if (!model.hasProperties) {\r\n throw new Error(\"FragmentsGroup properties not found\");\r\n }\r\n this._indexMap[model.uuid] = {};\r\n // const relations: number[] = [];\r\n // for (const typeID in IfcCategoryMap) {\r\n // const name = IfcCategoryMap[typeID];\r\n // if (name.startsWith(\"IFCREL\")) relations.push(Number(typeID));\r\n // }\r\n const setEntities = [WEBIFC.IFCPROPERTYSET, WEBIFC.IFCELEMENTQUANTITY];\r\n for (const relation of this.relationsToProcess) {\r\n await IfcPropertiesUtils.getRelationMap(model, relation, \r\n // eslint-disable-next-line no-loop-func\r\n async (relationID, relatedIDs) => {\r\n const relationEntity = await model.getProperties(relationID);\r\n if (!relationEntity) {\r\n return;\r\n }\r\n if (!setEntities.includes(relationEntity.type)) {\r\n this.setEntityIndex(model, relationID);\r\n }\r\n for (const expressID of relatedIDs) {\r\n this.setEntityIndex(model, expressID).add(relationID);\r\n }\r\n });\r\n }\r\n }\r\n async renderProperties(model, expressID) {\r\n if (!this.components.uiEnabled)\r\n return;\r\n await this.cleanPropertiesList();\r\n const topToolbar = this.uiElement.get(\"topToolbar\");\r\n const propsList = this.uiElement.get(\"propsList\");\r\n const propsWindow = this.uiElement.get(\"propertiesWindow\");\r\n const ui = await this.newEntityUI(model, expressID);\r\n if (!ui)\r\n return;\r\n if (this._propertiesManager) {\r\n this._propertiesManager.selectedModel = model;\r\n const exporter = this._propertiesManager.uiElement.get(\"exportButton\");\r\n topToolbar.addChild(exporter);\r\n }\r\n const { name } = await IfcPropertiesUtils.getEntityName(model, expressID);\r\n propsWindow.description = name;\r\n propsList.addChild(...[ui].flat());\r\n }\r\n async newEntityUI(model, expressID) {\r\n if (!model.hasProperties) {\r\n throw new Error(\"FragmentsGroup properties not found.\");\r\n }\r\n const modelElementsIndexation = this._indexMap[model.uuid];\r\n if (!modelElementsIndexation)\r\n return null;\r\n const entity = await model.getProperties(expressID);\r\n const ignorable = this.entitiesToIgnore.includes(entity?.type);\r\n if (!entity || ignorable)\r\n return null;\r\n if (entity.type === WEBIFC.IFCPROPERTYSET)\r\n return this.newPsetUI(model, expressID);\r\n const mainGroup = await this.newEntityTree(model, expressID);\r\n if (!mainGroup)\r\n return null;\r\n this.addEntityActions(model, expressID, mainGroup);\r\n mainGroup.onExpand.add(async () => {\r\n const { uiProcessed } = mainGroup.data;\r\n if (uiProcessed)\r\n return;\r\n mainGroup.addChild(...this.newAttributesUI(model, expressID));\r\n const elementPropsIndexation = modelElementsIndexation[expressID] ?? [];\r\n for (const id of elementPropsIndexation) {\r\n const entity = await model.getProperties(id);\r\n if (!entity)\r\n continue;\r\n const renderFunction = this._renderFunctions[entity.type] ?? this._renderFunctions[0];\r\n const ui = modelElementsIndexation[id]\r\n ? await this.newEntityUI(model, id)\r\n : await renderFunction(model, id);\r\n if (!ui)\r\n continue;\r\n mainGroup.addChild(...[ui].flat());\r\n }\r\n mainGroup.data.uiProcessed = true;\r\n });\r\n return mainGroup;\r\n }\r\n setEntityIndex(model, expressID) {\r\n if (!this._indexMap[model.uuid][expressID])\r\n this._indexMap[model.uuid][expressID] = new Set();\r\n return this._indexMap[model.uuid][expressID];\r\n }\r\n newAttributesUI(model, expressID) {\r\n if (!model.hasProperties)\r\n return [];\r\n const attributesGroup = new AttributeSet(this.components, this, model, expressID);\r\n attributesGroup.attributesToIgnore = this.attributesToIgnore;\r\n return [attributesGroup];\r\n }\r\n async newPsetUI(model, psetID) {\r\n const uiGroups = [];\r\n const pset = await model.getProperties(psetID);\r\n if (!pset || pset.type !== WEBIFC.IFCPROPERTYSET) {\r\n return uiGroups;\r\n }\r\n const uiGroup = await this.newEntityTree(model, psetID);\r\n if (!uiGroup) {\r\n return uiGroups;\r\n }\r\n await this.addPsetActions(model, psetID, uiGroup);\r\n uiGroup.onExpand.add(async () => {\r\n const { uiProcessed } = uiGroup.data;\r\n if (uiProcessed)\r\n return;\r\n const psetPropsID = await IfcPropertiesUtils.getPsetProps(model, psetID, async (propID) => {\r\n const prop = await model.getProperties(propID);\r\n if (!prop)\r\n return;\r\n const tag = await this.newPropertyTag(model, psetID, propID, \"NominalValue\");\r\n if (tag) {\r\n uiGroup.addChild(tag);\r\n }\r\n });\r\n if (!psetPropsID || psetPropsID.length === 0) {\r\n const template = `\r\n

\r\n This pset has no properties.\r\n

\r\n `;\r\n const notFoundText = new SimpleUIComponent(this.components, template);\r\n uiGroup.addChild(notFoundText);\r\n }\r\n uiGroup.data.uiProcessed = true;\r\n });\r\n uiGroups.push(uiGroup);\r\n return uiGroups;\r\n }\r\n async newQsetUI(model, qsetID) {\r\n const uiGroups = [];\r\n const qset = await model.getProperties(qsetID);\r\n if (!qset || qset.type !== WEBIFC.IFCELEMENTQUANTITY) {\r\n return uiGroups;\r\n }\r\n const uiGroup = await this.newEntityTree(model, qsetID);\r\n if (!uiGroup) {\r\n return uiGroups;\r\n }\r\n await this.addPsetActions(model, qsetID, uiGroup);\r\n await IfcPropertiesUtils.getQsetQuantities(model, qsetID, async (quantityID) => {\r\n const { key } = await IfcPropertiesUtils.getQuantityValue(model, quantityID);\r\n if (!key)\r\n return;\r\n const tag = await this.newPropertyTag(model, qsetID, quantityID, key);\r\n if (tag) {\r\n uiGroup.addChild(tag);\r\n }\r\n });\r\n uiGroups.push(uiGroup);\r\n return uiGroups;\r\n }\r\n async addPsetActions(model, psetID, uiGroup) {\r\n if (!this.propertiesManager)\r\n return;\r\n const propsUI = this.propertiesManager.uiElement;\r\n const psetActions = propsUI.get(\"psetActions\");\r\n const event = await this.propertiesManager.setAttributeListener(model, psetID, \"Name\");\r\n event.add((v) => (uiGroup.description = v.toString()));\r\n uiGroup.innerElements.titleContainer.onmouseenter = () => {\r\n psetActions.data = { model, psetID };\r\n uiGroup.slots.titleRight.addChild(psetActions);\r\n };\r\n uiGroup.innerElements.titleContainer.onmouseleave = () => {\r\n if (psetActions.modalVisible)\r\n return;\r\n psetActions.removeFromParent();\r\n psetActions.cleanData();\r\n };\r\n }\r\n addEntityActions(model, expressID, uiGroup) {\r\n if (!this.propertiesManager)\r\n return;\r\n const propsUI = this.propertiesManager.uiElement;\r\n const entityActions = propsUI.get(\"entityActions\");\r\n uiGroup.innerElements.titleContainer.onmouseenter = () => {\r\n entityActions.data = { model, elementIDs: [expressID] };\r\n uiGroup.slots.titleRight.addChild(entityActions);\r\n };\r\n uiGroup.innerElements.titleContainer.onmouseleave = () => {\r\n if (entityActions.modal.visible)\r\n return;\r\n entityActions.removeFromParent();\r\n entityActions.cleanData();\r\n };\r\n }\r\n async newEntityTree(model, expressID) {\r\n const entity = await model.getProperties(expressID);\r\n if (!entity)\r\n return null;\r\n const currentUI = this._currentUI[expressID];\r\n if (currentUI)\r\n return currentUI;\r\n const entityTree = new TreeView(this.components);\r\n this._currentUI[expressID] = entityTree;\r\n // const entityTree = this._entityUIPool.get();\r\n entityTree.title = `${IfcCategoryMap[entity.type]}`;\r\n const { name } = await IfcPropertiesUtils.getEntityName(model, expressID);\r\n entityTree.description = name;\r\n return entityTree;\r\n }\r\n async newPropertyTag(model, setID, expressID, valueKey) {\r\n const entity = await model.getProperties(expressID);\r\n if (!entity) {\r\n return null;\r\n }\r\n const tag = new PropertyTag(this.components, this, model, expressID);\r\n // @ts-ignore\r\n this._currentUI[expressID] = tag;\r\n if (!this.propertiesManager)\r\n return tag;\r\n // #region ManagementUI\r\n const propsUI = this.propertiesManager.uiElement;\r\n const propActions = propsUI.get(\"propActions\");\r\n tag.get().onmouseenter = () => {\r\n propActions.data = { model, setID, expressID, valueKey };\r\n tag.addChild(propActions);\r\n };\r\n tag.get().onmouseleave = () => {\r\n if (propActions.modalVisible)\r\n return;\r\n propActions.removeFromParent();\r\n propActions.cleanData();\r\n };\r\n // #endregion ManagementUI\r\n return tag;\r\n }\r\n cloneProperty(item, result = {}) {\r\n if (!item) {\r\n return result;\r\n }\r\n for (const key in item) {\r\n const value = item[key];\r\n const isArray = Array.isArray(value);\r\n const isObject = typeof value === \"object\" && !isArray && value !== null;\r\n if (isArray) {\r\n result[key] = [];\r\n const subResult = result[key];\r\n this.clonePropertyArray(value, subResult);\r\n }\r\n else if (isObject) {\r\n result[key] = {};\r\n const subResult = result[key];\r\n this.cloneProperty(value, subResult);\r\n }\r\n else {\r\n result[key] = value;\r\n }\r\n }\r\n return result;\r\n }\r\n clonePropertyArray(item, result) {\r\n for (const value of item) {\r\n const isArray = Array.isArray(value);\r\n const isObject = typeof value === \"object\" && !isArray && value !== null;\r\n if (isArray) {\r\n const subResult = [];\r\n result.push(subResult);\r\n this.clonePropertyArray(value, subResult);\r\n }\r\n else if (isObject) {\r\n const subResult = {};\r\n result.push(subResult);\r\n this.cloneProperty(value, subResult);\r\n }\r\n else {\r\n result.push(value);\r\n }\r\n }\r\n }\r\n}\r\nIfcPropertiesProcessor.uuid = \"23a889ab-83b3-44a4-8bee-ead83438370b\";\r\nToolComponent.libraryUUIDs.add(IfcPropertiesProcessor.uuid);\r\n//# sourceMappingURL=index.js.map"],"names":["PropertyTag","SimpleUIComponent","label","this","innerElements","textContent","value","String","constructor","components","propertiesProcessor","model","expressID","super","UIManager","Class","Label","name","getInnerElement","_propertiesProcessor","setInitialValues","setListeners","dispose","onlyChildren","Object","keys","length","remove","propertiesManager","key","nameKey","IfcPropertiesUtils","getEntityName","valueKey","getQuantityValue","setAttributeListener","add","v","toString","getProperties","AttributeTag","attributeName","err","hasProperties","ifcMetadata","entity","includes","AttributeSet","_expressID","_attributes","slots","content","attributesToIgnore","_generated","onExpand","generate","update","attribute","push","tag","_components","addChild","IfcPropertiesProcessor","manager","_propertiesManager","onElementToPset","async","psetID","elementID","_indexMap","uuid","setEntityIndex","_currentUI","ui","newPsetUI","onPsetRemoved","psetUI","onPropToPset","propID","newPropertyTag","onPropertiesManagerSet","trigger","onDisposed","enabled","uiElement","relationsToProcess","entitiesToIgnore","_renderFunctions","onFragmentsDisposed","data","groupID","tools","getRenderFunctions","get","FragmentManager","uiEnabled","setUI","newEntityUI","newQsetUI","id","reset","modelProperties","getLocalProperties","undefined","map","indices","idNumber","parseInt","props","Error","nativeProperties","cloneProperty","properties","index","pset","getPsetProperties","getNestedPsets","HasPropertySets","subPSet","HasProperties","property","result","topToolbar","propsList","main","materialIconName","propertiesWindow","title","tooltip","onClick","visible","onHidden","active","onVisible","set","cleanPropertiesList","removeFromParent","description","children","process","setEntities","relation","getRelationMap","relationID","relatedIDs","relationEntity","type","renderProperties","propsWindow","selectedModel","exporter","flat","modelElementsIndexation","ignorable","mainGroup","newEntityTree","addEntityActions","uiProcessed","newAttributesUI","elementPropsIndexation","renderFunction","Set","attributesGroup","uiGroups","uiGroup","addPsetActions","psetPropsID","getPsetProps","template","notFoundText","qsetID","qset","getQsetQuantities","quantityID","psetActions","titleContainer","onmouseenter","titleRight","onmouseleave","modalVisible","cleanData","entityActions","elementIDs","modal","currentUI","entityTree","setID","propActions","item","isArray","Array","isObject","subResult","clonePropertyArray","libraryUUIDs"],"sourceRoot":""}