{"version":3,"file":"vendor.openbim-components-af411e88.a30e5d43fa58c7a9.bundle.js","mappings":"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","sources":["webpack://client-app/./node_modules/openbim-components/src/ui/ButtonComponent/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/Canvas/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/CheckboxInput/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/ColorInput/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/CommandsMenu/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/DragAndDropInput/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/Drawer/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/Dropdown/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/FloatingWindow/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/Modal/index.js"],"sourcesContent":["import { createPopper,\r\n// @ts-ignore\r\n } from \"@popperjs/core/dist/esm\";\r\nimport { Event } from \"../../base-types\";\r\nimport { Toolbar } from \"../ToolbarComponent\";\r\nimport { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nexport class Button extends SimpleUIComponent {\r\n set tooltip(value) {\r\n const element = this.innerElements.tooltip;\r\n element.textContent = value;\r\n if (value) {\r\n element.classList.remove(\"hidden\");\r\n }\r\n else {\r\n element.classList.add(\"hidden\");\r\n }\r\n }\r\n get tooltip() {\r\n return this.innerElements.tooltip.textContent;\r\n }\r\n set label(value) {\r\n const element = this.innerElements.label;\r\n element.textContent = value;\r\n if (value) {\r\n element.classList.remove(\"hidden\");\r\n }\r\n else {\r\n element.classList.add(\"hidden\");\r\n }\r\n }\r\n get label() {\r\n return this.innerElements.label.textContent;\r\n }\r\n set parent(toolbar) {\r\n this._parent = toolbar;\r\n if (toolbar) {\r\n this.menu.position = toolbar.position;\r\n this.updateMenuPlacement();\r\n }\r\n }\r\n get parent() {\r\n return this._parent;\r\n }\r\n set alignment(value) {\r\n this.domElement.classList.remove(\"justify-start\", \"justify-center\", \"justify-end\");\r\n this.domElement.classList.add(`justify-${value}`);\r\n }\r\n set materialIcon(name) {\r\n const icon = this.innerElements.icon;\r\n icon.textContent = name;\r\n if (name) {\r\n icon.style.display = \"unset\";\r\n }\r\n else {\r\n icon.style.display = \"none\";\r\n }\r\n }\r\n get materialIcon() {\r\n return this.innerElements.icon.textContent;\r\n }\r\n get customIcon() {\r\n return this.innerElements.customIcon.innerHTML;\r\n }\r\n constructor(components, options) {\r\n const template = `\r\n \r\n `;\r\n super(components, template);\r\n this.name = \"TooeenButton\";\r\n this.onClick = new Event();\r\n this._parent = null;\r\n this._closeOnClick = true;\r\n this.innerElements = {\r\n customIcon: this.getInnerElement(\"custom-icon\"),\r\n icon: this.getInnerElement(\"icon\"),\r\n label: this.getInnerElement(\"label\"),\r\n tooltip: this.getInnerElement(\"tooltip\"),\r\n };\r\n this.materialIcon = options?.materialIconName ?? null;\r\n this.label = options?.name ?? null;\r\n this.tooltip = options?.tooltip ?? null;\r\n this.alignment = \"start\";\r\n if (options?.closeOnClick !== undefined) {\r\n this._closeOnClick = options.closeOnClick;\r\n }\r\n this.domElement.onclick = async (e) => {\r\n e.stopImmediatePropagation();\r\n await this.onClick.trigger(e);\r\n if (this.menu.children.length) {\r\n this.menu.visible = true;\r\n this._popper.update();\r\n }\r\n else if (this._closeOnClick) {\r\n this._components.ui.closeMenus();\r\n this._components.ui.contextMenu.visible = false;\r\n if (this.parent) {\r\n if (!this.parent.parent) {\r\n this._components.ui.closeMenus();\r\n }\r\n if (this.parent.closeMenus) {\r\n this.parent.closeMenus();\r\n }\r\n }\r\n }\r\n };\r\n this.domElement.addEventListener(\"mouseover\", ({ target }) => {\r\n if (this.isButton(target)) {\r\n if (this._components.ui.tooltipsEnabled) {\r\n this.innerElements.tooltip.classList.remove(\"opacity-0\");\r\n }\r\n }\r\n });\r\n this.domElement.addEventListener(\"mouseleave\", ({ target }) => {\r\n if (this.isButton(target)) {\r\n this.innerElements.tooltip.classList.add(\"opacity-0\");\r\n }\r\n });\r\n // #region Extensible menu\r\n this.menu = new Toolbar(components);\r\n this.menu.visible = false;\r\n this.menu.parent = this;\r\n this.menu.setDirection(\"vertical\");\r\n this.domElement.append(this.menu.domElement);\r\n this._popper = createPopper(this.domElement, this.menu.domElement, {\r\n modifiers: [\r\n {\r\n name: \"offset\",\r\n options: { offset: [0, 15] },\r\n },\r\n {\r\n name: \"preventOverflow\",\r\n options: { boundary: this._components.ui.viewerContainer },\r\n },\r\n ],\r\n });\r\n // #endregion\r\n this.onEnabled.add(() => (this.domElement.disabled = false));\r\n this.onDisabled.add(() => (this.domElement.disabled = true));\r\n }\r\n async dispose(onlyChildren = false) {\r\n await super.dispose(onlyChildren);\r\n await this.menu.dispose();\r\n if (!onlyChildren) {\r\n this.domElement.remove();\r\n }\r\n this.onClick.reset();\r\n this._popper.destroy();\r\n }\r\n addChild(...button) {\r\n this.menu.addChild(...button);\r\n }\r\n closeMenus() {\r\n this.menu.closeMenus();\r\n this.menu.visible = false;\r\n }\r\n async setCustomIcon(url) {\r\n const { customIcon } = this.innerElements;\r\n if (url) {\r\n const response = await fetch(url);\r\n customIcon.innerHTML = await response.text();\r\n customIcon.style.display = \"unset\";\r\n }\r\n else {\r\n customIcon.style.display = \"none\";\r\n }\r\n }\r\n updateMenuPlacement() {\r\n let placement = \"bottom\";\r\n if (this.parent?.position === \"bottom\") {\r\n placement = this.parent?.parent ? \"right\" : \"top\";\r\n }\r\n if (this.parent?.position === \"top\") {\r\n placement = this.parent?.parent ? \"right\" : \"bottom\";\r\n }\r\n if (this.parent?.position === \"left\") {\r\n placement = \"right\";\r\n }\r\n if (this.parent?.position === \"right\") {\r\n placement = \"left\";\r\n }\r\n this._popper.setOptions({ placement });\r\n }\r\n isButton(element) {\r\n return (element === this.get() ||\r\n element === this.innerElements.icon ||\r\n element === this.innerElements.label);\r\n }\r\n}\r\nButton.Class = {\r\n Base: `\r\n relative flex gap-x-2 items-center bg-transparent text-white rounded-[10px] \r\n max-h-8 p-2 hover:cursor-pointer hover:bg-ifcjs-200 hover:text-black\r\n data-[active=true]:cursor-pointer data-[active=true]:bg-ifcjs-200 data-[active=true]:text-black\r\n disabled:cursor-default disabled:bg-gray-600 disabled:text-gray-400 pointer-events-auto\r\n transition-all fill-white hover:fill-black\r\n `,\r\n Label: \"text-sm tracking-[1.25px] whitespace-nowrap\",\r\n Tooltip: `\r\n transition-opacity bg-ifcjs-100 text-sm text-gray-100 rounded-md \r\n absolute left-1/2 -translate-x-1/2 -translate-y-12 opacity-0 mx-auto p-4 w-max h-4 flex items-center\r\n pointer-events-none\r\n `,\r\n};\r\n//# sourceMappingURL=index.js.map","import * as THREE from \"three\";\r\nimport { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nimport { Event } from \"../../base-types\";\r\nexport class Canvas extends SimpleUIComponent {\r\n constructor(components) {\r\n const template = `\r\n \r\n `;\r\n super(components, template);\r\n this.name = \"Canvas\";\r\n this.onResize = new Event();\r\n this._size = new THREE.Vector2(320, 160);\r\n }\r\n getSize() {\r\n return this._size;\r\n }\r\n resize(size) {\r\n if (size) {\r\n this._size = size;\r\n this.domElement.style.width = `${size.x}px`;\r\n this.domElement.style.height = `${size.y}px`;\r\n this.onResize.trigger(size);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import { Event } from \"../../base-types\";\r\nimport { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nimport { UIManager } from \"../UIManager\";\r\nexport class CheckboxInput extends SimpleUIComponent {\r\n set value(value) {\r\n this.innerElements.input.checked = value;\r\n this.onChange.trigger(this.value);\r\n }\r\n get value() {\r\n return this.innerElements.input.checked;\r\n }\r\n set label(value) {\r\n this.innerElements.label.textContent = value;\r\n if (value) {\r\n this.innerElements.label.classList.remove(\"hidden\");\r\n }\r\n else {\r\n this.innerElements.label.classList.add(\"hidden\");\r\n }\r\n }\r\n get label() {\r\n return this.innerElements.label.textContent;\r\n }\r\n constructor(components) {\r\n const template = `\r\n
\r\n \r\n \r\n
\r\n `;\r\n super(components, template);\r\n this.name = \"TooeenCheckboxInput\";\r\n this.onChange = new Event();\r\n this.innerElements = {\r\n label: this.getInnerElement(\"label\"),\r\n input: this.getInnerElement(\"input\"),\r\n };\r\n this.innerElements.input.addEventListener(\"change\", () => {\r\n this.onChange.trigger(this.value);\r\n });\r\n this.label = \"Tooeen Checkbox\";\r\n }\r\n async dispose(onlyChildren = false) {\r\n await super.dispose(onlyChildren);\r\n this.onChange.reset();\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import { Event } from \"../../base-types\";\r\nimport { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nimport { UIManager } from \"../UIManager\";\r\nexport class ColorInput extends SimpleUIComponent {\r\n set value(value) {\r\n this.innerElements.input.value = value;\r\n this.onChange.trigger(this.value);\r\n }\r\n get value() {\r\n return this.innerElements.input.value;\r\n }\r\n set label(value) {\r\n this.innerElements.label.textContent = value;\r\n if (value) {\r\n this.innerElements.label.classList.remove(\"hidden\");\r\n }\r\n else {\r\n this.innerElements.label.classList.add(\"hidden\");\r\n }\r\n }\r\n get label() {\r\n return this.innerElements.label.textContent;\r\n }\r\n // @ts-ignore\r\n constructor(components) {\r\n const template = `\r\n
\r\n \r\n \r\n
\r\n `;\r\n super(components, template);\r\n this.name = \"TooeenColorInput\";\r\n this.onChange = new Event();\r\n this.innerElements = {\r\n label: this.getInnerElement(\"label\"),\r\n input: this.getInnerElement(\"input\"),\r\n };\r\n this.label = \"Tooeen Color\";\r\n this.value = \"#BCF124\";\r\n this.innerElements.input.oninput = () => {\r\n this.onChange.trigger(this.value);\r\n };\r\n }\r\n async dispose(onlyChildren = false) {\r\n await super.dispose(onlyChildren);\r\n this.onChange.reset();\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import * as THREE from \"three\";\r\nimport { Button } from \"../ButtonComponent\";\r\nimport { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nexport class CommandsMenu extends SimpleUIComponent {\r\n get hasCommands() {\r\n return Object.keys(this.commands).length !== 0;\r\n }\r\n constructor(components) {\r\n const template = `
`;\r\n super(components, template);\r\n this.name = \"CommandsMenu\";\r\n this.offset = new THREE.Vector2(20, -10);\r\n this.commands = {};\r\n this.hideCommandsMenu = () => {\r\n this.visible = false;\r\n };\r\n this.innerElements = {\r\n window: this.getInnerElement(\"window\"),\r\n };\r\n this.setupEvents(true);\r\n }\r\n update() {\r\n this.dispose(true);\r\n for (const name in this.commands) {\r\n const command = this.commands[name];\r\n const button = new Button(this._components, { name });\r\n button.name = name;\r\n this.addChild(button);\r\n button.onClick.add(() => command(this.commandData));\r\n }\r\n }\r\n popup(x, y) {\r\n this.domElement.style.left = `${x + this.offset.x}px`;\r\n this.domElement.style.top = `${y + this.offset.y}px`;\r\n this.visible = true;\r\n }\r\n async dispose(onlyChildren = false) {\r\n await super.dispose(onlyChildren);\r\n if (!onlyChildren) {\r\n this.setupEvents(false);\r\n this.commands = {};\r\n this.commandData = null;\r\n }\r\n }\r\n setupEvents(active) {\r\n if (active) {\r\n window.addEventListener(\"click\", this.hideCommandsMenu);\r\n }\r\n else {\r\n window.removeEventListener(\"click\", this.hideCommandsMenu);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import { Event } from \"../../base-types\";\r\nimport { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nexport class DragAndDropInput extends SimpleUIComponent {\r\n constructor(components, config) {\r\n const subtitle = config ? config.subTitle : \"\";\r\n const template = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n `;\r\n super(components, template);\r\n this.name = \"DragAndDropInput\";\r\n this.onFilesLoaded = new Event();\r\n const input = this.get().querySelector(\"input\");\r\n if (!input)\r\n throw new Error(\"Input not found!\");\r\n const onFilesLoaded = async () => {\r\n if (input.files === null)\r\n return;\r\n await this.onFilesLoaded.trigger(input.files);\r\n };\r\n input.onchange = () => onFilesLoaded();\r\n const allowDragDrop = (event) => event.preventDefault();\r\n this.get().ondragover = allowDragDrop;\r\n this.get().ondragenter = allowDragDrop;\r\n this.get().ondrop = async (event) => {\r\n event.preventDefault();\r\n input.files = event.dataTransfer.files;\r\n await onFilesLoaded();\r\n };\r\n }\r\n async dispose(onlyChildren = false) {\r\n await super.dispose(onlyChildren);\r\n this.onFilesLoaded.reset();\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nimport { Event } from \"../../base-types\";\r\n// TODO: Fix tooltips for buttons in drawers\r\nexport class Drawer extends SimpleUIComponent {\r\n get visible() {\r\n return this._visible;\r\n }\r\n set visible(value) {\r\n const classes = this.domElement.classList;\r\n const isHorizontal = this._type === \"top\" || this._type === \"bottom\";\r\n if (isHorizontal) {\r\n const sign = this._type === \"top\" ? \"-\" : \"\";\r\n if (value) {\r\n classes.remove(`${sign}translate-y-full`);\r\n }\r\n else {\r\n classes.add(`${sign}translate-y-full`);\r\n }\r\n }\r\n else {\r\n const sign = this._type === \"left\" ? \"-\" : \"\";\r\n if (value) {\r\n classes.remove(`${sign}translate-x-full`);\r\n }\r\n else {\r\n classes.add(`${sign}translate-x-full`);\r\n }\r\n }\r\n this._visible = value;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n set size(value) {\r\n this._size = value;\r\n const horizontal = this._type === \"top\" || this._type === \"bottom\";\r\n const height = horizontal ? this._size : \"inherit\";\r\n const width = horizontal ? \"inherit\" : this._size;\r\n this.domElement.style.height = height;\r\n this.domElement.style.width = width;\r\n }\r\n get containerSize() {\r\n const height = this.domElement.clientHeight;\r\n const width = this.domElement.clientWidth;\r\n return { height, width };\r\n }\r\n set alignment(value) {\r\n const classes = this.domElement.classList;\r\n this._type = value;\r\n classes.remove(\"h-full\");\r\n classes.remove(\"w-full\");\r\n classes.remove(\"top-0\");\r\n classes.remove(\"bottom-0\");\r\n classes.remove(\"left-0\");\r\n classes.remove(\"right-0\");\r\n classes.remove(\"-translate-x-full\");\r\n classes.remove(\"-translate-y-full\");\r\n classes.remove(\"translate-x-full\");\r\n classes.remove(\"translate-y-full\");\r\n if (value === \"top\" || value === \"bottom\") {\r\n classes.add(\"w-full\");\r\n classes.add(\"left-0\");\r\n classes.add(`${value}-0`);\r\n }\r\n else {\r\n classes.add(\"h-full\");\r\n classes.add(\"top-0\");\r\n classes.add(`${value}-0`);\r\n }\r\n this.size = this._size;\r\n this.visible = this._visible;\r\n }\r\n constructor(components) {\r\n const template = `\r\n
\r\n
\r\n
\r\n `;\r\n super(components, template);\r\n this.onResized = new Event();\r\n this._size = \"10rem\";\r\n this._visible = true;\r\n this._type = \"left\";\r\n this.domElement.style.width = this._size;\r\n this.slots = {\r\n content: new SimpleUIComponent(components, `
`),\r\n };\r\n this.setSlots();\r\n const observer = new ResizeObserver(() => this.onResized.trigger());\r\n observer.observe(this.get());\r\n }\r\n addChild(...items) {\r\n const content = this.slots.content;\r\n content.addChild(...items);\r\n if (!content.visible)\r\n content.visible = true;\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import { Event } from \"../../base-types\";\r\nimport { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nimport { UIManager } from \"../UIManager\";\r\nexport class Dropdown extends SimpleUIComponent {\r\n set value(value) {\r\n const option = this.options.find((v) => v === value) ?? this.options[0];\r\n this.innerElements.button.textContent = option ?? null;\r\n this.onChange.trigger(this.value);\r\n }\r\n get value() {\r\n return this.innerElements.button.textContent;\r\n }\r\n set allowSearch(value) {\r\n this._allowSearch = value;\r\n if (value) {\r\n this.innerElements.search.classList.remove(\"hidden\");\r\n }\r\n else {\r\n this.innerElements.search.classList.add(\"hidden\");\r\n }\r\n }\r\n get allowSearch() {\r\n return this._allowSearch;\r\n }\r\n set label(value) {\r\n this.innerElements.label.textContent = value;\r\n if (value) {\r\n this.innerElements.label.classList.remove(\"hidden\");\r\n }\r\n else {\r\n this.innerElements.label.classList.add(\"hidden\");\r\n }\r\n }\r\n get label() {\r\n return this.innerElements.label.textContent;\r\n }\r\n constructor(components, name = \"Tooeen Dropdown\") {\r\n const template = `\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n `;\r\n super(components, template);\r\n this.name = \"TooeenDropdown\";\r\n this.options = [];\r\n this.onChange = new Event();\r\n this._allowSearch = false;\r\n this.hide = (event) => {\r\n if (!this.get().contains(event.target)) {\r\n this.innerElements.dropdown.classList.add(\"hidden\");\r\n }\r\n };\r\n this.innerElements = {\r\n label: this.getInnerElement(\"label\"),\r\n button: this.getInnerElement(\"button\"),\r\n dropdown: this.getInnerElement(\"dropdown\"),\r\n search: this.getInnerElement(\"search\"),\r\n searchInput: this.getInnerElement(\"searchInput\"),\r\n dropdownList: this.getInnerElement(\"dropdownList\"),\r\n };\r\n this.setSearch();\r\n this.innerElements.button.onclick = () => this.toggle();\r\n this.setupEvents(true);\r\n this.label = name;\r\n }\r\n async dispose(onlyChildren = false) {\r\n super.dispose(onlyChildren);\r\n this.onChange.reset();\r\n this.setupEvents(false);\r\n }\r\n toggle() {\r\n if (this.innerElements.dropdown.classList.contains(\"hidden\")) {\r\n this.innerElements.dropdown.classList.remove(\"hidden\");\r\n }\r\n else {\r\n this.innerElements.dropdown.classList.add(\"hidden\");\r\n }\r\n }\r\n addOption(...value) {\r\n const options = value.filter((option) => !this.options.includes(option));\r\n for (const option of options) {\r\n this.options.push(option);\r\n const li = document.createElement(\"li\");\r\n li.id = `${option.replace(/\\s+/g, \"_\")}-${this.id}`;\r\n li.className =\r\n \"py-2 text-base cursor-pointer hover:text-ifcjs-200 m-0 p-0\";\r\n li.textContent = option;\r\n li.onclick = () => {\r\n this.value = option;\r\n this.innerElements.dropdown.classList.add(\"hidden\");\r\n };\r\n this.innerElements.dropdownList.appendChild(li);\r\n }\r\n return this;\r\n }\r\n removeOption(...value) {\r\n const optionsToDelete = value.filter((option) => this.options.includes(option));\r\n for (const name of optionsToDelete) {\r\n const option = this.get().querySelector(`#${name.replace(/\\s+/g, \"_\")}-${this.id}`);\r\n if (!option)\r\n continue;\r\n option.remove();\r\n }\r\n this.options = this.options.filter((option) => !value.includes(option));\r\n return this;\r\n }\r\n setSearch() {\r\n this.innerElements.searchInput.oninput = () => {\r\n const searchValue = this.innerElements.searchInput.value.toLowerCase();\r\n const list = this.innerElements.dropdownList.children;\r\n for (const child of list) {\r\n const childText = child.textContent?.toLowerCase();\r\n if (!childText)\r\n continue;\r\n if (childText.includes(searchValue)) {\r\n child.classList.remove(\"hidden\");\r\n }\r\n else {\r\n child.classList.add(\"hidden\");\r\n }\r\n }\r\n };\r\n }\r\n setupEvents(active) {\r\n if (active) {\r\n document.addEventListener(\"click\", this.hide, true);\r\n }\r\n else {\r\n document.removeEventListener(\"click\", this.hide, true);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import { Vector2 } from \"three\";\r\nimport { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nimport { Event } from \"../../base-types\";\r\nexport class FloatingWindow extends SimpleUIComponent {\r\n get containerSize() {\r\n const baseHeight = this.domElement.clientHeight;\r\n const titleHeight = this.innerElements.titleContainer.clientHeight;\r\n const height = baseHeight - titleHeight;\r\n const width = this.domElement.clientWidth;\r\n return { height, width };\r\n }\r\n get viewerContainer() {\r\n return this._components.renderer.get().domElement\r\n .parentElement;\r\n }\r\n set description(value) {\r\n const element = this.innerElements.description;\r\n element.textContent = value;\r\n if (value) {\r\n element.classList.remove(\"hidden\");\r\n }\r\n else {\r\n element?.classList.add(\"hidden\");\r\n }\r\n }\r\n get description() {\r\n return this.innerElements.description.textContent;\r\n }\r\n set title(value) {\r\n const element = this.innerElements.title;\r\n element.textContent = value;\r\n if (value) {\r\n element.classList.remove(\"hidden\");\r\n }\r\n else {\r\n element.classList.add(\"hidden\");\r\n }\r\n }\r\n get title() {\r\n return this.innerElements.title.textContent;\r\n }\r\n set resizeable(value) {\r\n this._resizeable = value;\r\n if (value) {\r\n this.get().classList.add(\"resize\");\r\n }\r\n else {\r\n this.get().classList.remove(\"resize\");\r\n }\r\n }\r\n get resizeable() {\r\n return this._resizeable;\r\n }\r\n set movable(value) {\r\n this._movable = value;\r\n if (value) {\r\n this.innerElements.titleContainer.classList.add(\"cursor-move\");\r\n }\r\n else {\r\n this.innerElements.titleContainer.classList.remove(\"cursor-move\");\r\n }\r\n }\r\n get movable() {\r\n return this._movable;\r\n }\r\n constructor(components, id) {\r\n const template = `\r\n
\r\n
\r\n
\r\n

Tooeen Floating Window

\r\n

\r\n
\r\n close\r\n
\r\n
\r\n
\r\n `;\r\n super(components, template, id);\r\n this._resizeable = true;\r\n this._movable = true;\r\n this.onMoved = new Event();\r\n this.onResized = new Event();\r\n this._isMouseDown = false;\r\n this._offsetX = 0;\r\n this._offsetY = 0;\r\n this.onMOuseDown = (event) => {\r\n if (!this.movable)\r\n return;\r\n this._isMouseDown = true;\r\n const rect = this.domElement.getBoundingClientRect();\r\n this._offsetX = event.clientX - rect.left;\r\n this._offsetY = event.clientY - rect.top;\r\n };\r\n this.onMouseUp = () => {\r\n this._isMouseDown = false;\r\n };\r\n this.onMouseMove = (event) => {\r\n if (!(this._isMouseDown && this.movable))\r\n return;\r\n const { width, height } = this.domElement.getBoundingClientRect();\r\n const { x, y, width: containerWidth, height: containerHeight, } = this.viewerContainer.getBoundingClientRect();\r\n const maxLeft = containerWidth - width;\r\n const maxTop = containerHeight - height;\r\n const left = Math.max(0, Math.min(event.clientX - this._offsetX - x, maxLeft));\r\n const top = Math.max(0, Math.min(event.clientY - this._offsetY - y, maxTop));\r\n this.domElement.style.left = `${left}px`;\r\n this.domElement.style.top = `${top}px`;\r\n this.onMoved.trigger(this);\r\n };\r\n this.innerElements = {\r\n title: this.getInnerElement(\"title\"),\r\n description: this.getInnerElement(\"description\"),\r\n titleContainer: this.getInnerElement(\"title-container\"),\r\n closeBtn: this.getInnerElement(\"close\"),\r\n };\r\n this.slots = {\r\n content: new SimpleUIComponent(components, `
`),\r\n };\r\n this.setSlots();\r\n this.innerElements.closeBtn.onclick = () => (this.visible = false);\r\n this.setMovableListeners();\r\n const observer = new ResizeObserver(() => this.onResized.trigger());\r\n observer.observe(this.get());\r\n this.description = null;\r\n this.movable = true;\r\n this.resizeable = true;\r\n this.referencePoints = {\r\n topLeft: new Vector2(),\r\n top: new Vector2(),\r\n topRight: new Vector2(),\r\n left: new Vector2(),\r\n center: new Vector2(),\r\n right: new Vector2(),\r\n bottomLeft: new Vector2(),\r\n bottom: new Vector2(),\r\n bottomRight: new Vector2(),\r\n };\r\n this.domElement.style.width = \"400px\";\r\n this.domElement.style.height = \"250px\";\r\n }\r\n async dispose(onlyChildren = false) {\r\n await super.dispose(onlyChildren);\r\n this.setupEvents(false);\r\n this.onMoved.reset();\r\n this.onResized.reset();\r\n }\r\n setMovableListeners() {\r\n // For node.js\r\n try {\r\n // eslint-disable-next-line no-unused-expressions\r\n this._components.renderer;\r\n }\r\n catch (_e) {\r\n return;\r\n }\r\n this.setupEvents(true);\r\n }\r\n addChild(...items) {\r\n const content = this.slots.content;\r\n content.addChild(...items);\r\n if (!content.visible)\r\n content.visible = true;\r\n }\r\n updateReferencePoints() {\r\n const uiElementRect = this.domElement.getBoundingClientRect();\r\n this.referencePoints.topLeft.set(uiElementRect.x, uiElementRect.y);\r\n this.referencePoints.top.set(uiElementRect.x + uiElementRect.width / 2, uiElementRect.y);\r\n this.referencePoints.topRight.set(uiElementRect.x + uiElementRect.width, uiElementRect.y);\r\n this.referencePoints.left.set(uiElementRect.x, uiElementRect.y + uiElementRect.height / 2);\r\n this.referencePoints.center.set(uiElementRect.x + uiElementRect.width / 2, uiElementRect.y + uiElementRect.height / 2);\r\n this.referencePoints.right.set(uiElementRect.x + uiElementRect.width, uiElementRect.y + uiElementRect.height / 2);\r\n this.referencePoints.bottomLeft.set(uiElementRect.x, uiElementRect.y + uiElementRect.height);\r\n this.referencePoints.bottom.set(uiElementRect.x + uiElementRect.width / 2, uiElementRect.y + uiElementRect.height);\r\n this.referencePoints.bottomRight.set(uiElementRect.x + uiElementRect.width, uiElementRect.y + uiElementRect.height);\r\n }\r\n setupEvents(active) {\r\n const title = this.innerElements.titleContainer;\r\n const container = this.viewerContainer;\r\n if (active) {\r\n if (title) {\r\n title.addEventListener(\"mousedown\", this.onMOuseDown);\r\n }\r\n container.addEventListener(\"mousemove\", this.onMouseMove);\r\n container.addEventListener(\"mouseup\", this.onMouseUp);\r\n }\r\n else {\r\n if (title) {\r\n title.removeEventListener(\"mousedown\", this.onMOuseDown);\r\n }\r\n container.removeEventListener(\"mousemove\", this.onMouseMove);\r\n container.removeEventListener(\"mouseup\", this.onMouseUp);\r\n }\r\n }\r\n}\r\nFloatingWindow.Class = {\r\n Base: \"absolute flex flex-col backdrop-blur-xl shadow-md overflow-auto top-5 resize z-50 left-5 min-h-[80px] min-w-[150px] w-fit h-fit text-white bg-ifcjs-100 rounded-md\",\r\n Description: \"text-base text-gray-400\",\r\n};\r\n//# sourceMappingURL=index.js.map","import { Event } from \"../../base-types\";\r\nimport { Button } from \"../ButtonComponent\";\r\nimport { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nexport class Modal extends SimpleUIComponent {\r\n set description(value) {\r\n const element = this.innerElements.description;\r\n element.textContent = value;\r\n if (value) {\r\n element.classList.remove(\"hidden\");\r\n }\r\n else {\r\n element?.classList.add(\"hidden\");\r\n }\r\n }\r\n get description() {\r\n return this.innerElements.description.textContent;\r\n }\r\n set title(value) {\r\n const element = this.innerElements.title;\r\n element.textContent = value;\r\n if (value) {\r\n element.classList.remove(\"hidden\");\r\n }\r\n else {\r\n element.classList.add(\"hidden\");\r\n }\r\n }\r\n get title() {\r\n return this.innerElements.title.textContent;\r\n }\r\n set visible(value) {\r\n this._visible = value;\r\n if (value) {\r\n this.get().showModal();\r\n this.onVisible.trigger();\r\n }\r\n else {\r\n this.get().close();\r\n this.onHidden.trigger();\r\n }\r\n }\r\n get visible() {\r\n return this._visible;\r\n }\r\n constructor(components, title = \"Tooeen Modal\") {\r\n const template = `\r\n \r\n
\r\n
\r\n

${title}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n `;\r\n super(components, template);\r\n this.onAccept = new Event();\r\n this.onCancel = new Event();\r\n this.innerElements = {\r\n title: this.getInnerElement(\"title\"),\r\n description: this.getInnerElement(\"description\"),\r\n };\r\n this.slots = {\r\n content: new SimpleUIComponent(components),\r\n actionButtons: new SimpleUIComponent(components, `
`),\r\n };\r\n this.setSlots();\r\n const acceptBtn = new Button(this._components);\r\n acceptBtn.materialIcon = \"check\";\r\n acceptBtn.label = \"Accept\";\r\n acceptBtn.get().classList.remove(\"hover:bg-ifcjs-200\");\r\n acceptBtn.get().classList.add(\"hover:bg-success\");\r\n acceptBtn.onClick.add(() => this.onAccept.trigger());\r\n const cancelBtn = new Button(this._components);\r\n cancelBtn.materialIcon = \"close\";\r\n cancelBtn.label = \"Cancel\";\r\n cancelBtn.get().classList.remove(\"hover:bg-ifcjs-200\");\r\n cancelBtn.get().classList.add(\"hover:bg-error\");\r\n cancelBtn.onClick.add(() => this.onCancel.trigger());\r\n this.slots.actionButtons.addChild(cancelBtn, acceptBtn);\r\n }\r\n async dispose(onlyChildren = false) {\r\n await super.dispose(onlyChildren);\r\n this.onCancel.reset();\r\n this.onAccept.reset();\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map"],"names":["Button","tooltip","value","element","this","innerElements","textContent","classList","remove","add","label","parent","toolbar","_parent","menu","position","updateMenuPlacement","alignment","domElement","materialIcon","name","icon","style","display","customIcon","innerHTML","constructor","components","options","super","Class","Base","Tooltip","Label","onClick","_closeOnClick","getInnerElement","materialIconName","undefined","closeOnClick","onclick","async","e","stopImmediatePropagation","trigger","children","length","visible","_popper","update","_components","ui","closeMenus","contextMenu","addEventListener","target","isButton","tooltipsEnabled","setDirection","append","modifiers","offset","boundary","viewerContainer","onEnabled","disabled","onDisabled","dispose","onlyChildren","reset","destroy","addChild","button","setCustomIcon","url","response","fetch","text","placement","setOptions","get","Canvas","onResize","_size","getSize","resize","size","width","x","height","y","CheckboxInput","input","checked","onChange","ColorInput","oninput","CommandsMenu","hasCommands","Object","keys","commands","hideCommandsMenu","window","setupEvents","command","commandData","popup","left","top","active","removeEventListener","Drawer","_visible","classes","_type","sign","horizontal","containerSize","clientHeight","clientWidth","onResized","slots","content","setSlots","ResizeObserver","observe","items","Dropdown","option","find","v","allowSearch","_allowSearch","search","hide","event","contains","dropdown","searchInput","dropdownList","setSearch","toggle","addOption","filter","includes","push","li","document","createElement","id","replace","className","appendChild","removeOption","optionsToDelete","querySelector","searchValue","toLowerCase","list","child","childText","FloatingWindow","titleContainer","renderer","parentElement","description","title","resizeable","_resizeable","movable","_movable","Description","onMoved","_isMouseDown","_offsetX","_offsetY","onMOuseDown","rect","getBoundingClientRect","clientX","clientY","onMouseUp","onMouseMove","containerWidth","containerHeight","maxLeft","maxTop","Math","max","min","closeBtn","setMovableListeners","referencePoints","topLeft","Vector2","topRight","center","right","bottomLeft","bottom","bottomRight","_e","updateReferencePoints","uiElementRect","set","container","Modal","showModal","onVisible","close","onHidden","onAccept","onCancel","actionButtons","acceptBtn","cancelBtn"],"sourceRoot":""}