{"version":3,"file":"vendor.openbim-components-c23b6428.891ce5c4e8dbf93e.bundle.js","mappings":"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","sources":["webpack://client-app/./node_modules/openbim-components/src/ui/SimpleUIComponent/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/ToolbarComponent/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/UIManager/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/TreeView/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/SimpleUICard/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/TextInput/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/RangeInput/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/Spinner/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/ToastNotification/index.js","webpack://client-app/./node_modules/openbim-components/src/ui/TextArea/index.js"],"sourcesContent":["import { generateUUID } from \"three/src/math/MathUtils\";\r\nimport { Component, Event } from \"../../base-types\";\r\nexport class SimpleUIComponent extends Component {\r\n get domElement() {\r\n if (!this._domElement) {\r\n throw new Error(\"Dom element not initialized!\");\r\n }\r\n return this._domElement;\r\n }\r\n set domElement(ele) {\r\n if (this._domElement) {\r\n this._domElement.remove();\r\n }\r\n this._domElement = ele;\r\n }\r\n set parent(value) {\r\n this._parent = value;\r\n }\r\n get parent() {\r\n return this._parent;\r\n }\r\n get active() {\r\n return this._active;\r\n }\r\n set active(active) {\r\n this.domElement.setAttribute(\"data-active\", String(active));\r\n this._active = active;\r\n }\r\n get visible() {\r\n return this._visible;\r\n }\r\n set visible(value) {\r\n this._visible = value;\r\n if (value) {\r\n this.domElement.classList.remove(\"hidden\");\r\n this.onVisible.trigger(this.get());\r\n }\r\n else {\r\n this.domElement.classList.add(\"hidden\");\r\n this.onHidden.trigger(this.get());\r\n }\r\n }\r\n get enabled() {\r\n return this._enabled;\r\n }\r\n set enabled(value) {\r\n this._enabled = value;\r\n if (value) {\r\n this.onEnabled.trigger(this.get());\r\n }\r\n else {\r\n this.onDisabled.trigger(this.get());\r\n }\r\n // this.onVisibilityChanged.trigger(value);\r\n }\r\n get hasElements() {\r\n return this.children.length > 0;\r\n }\r\n set template(value) {\r\n const regex = /id=\"([^\"]+)\"/g;\r\n const temp = document.createElement(\"div\");\r\n temp.innerHTML = value.replace(regex, `id=\"$1-${this.id}\"`);\r\n const newElement = temp.firstElementChild;\r\n newElement.id = this.id;\r\n this.domElement = newElement;\r\n temp.remove();\r\n }\r\n constructor(components, template, id) {\r\n super(components);\r\n this.name = \"SimpleUIComponent\";\r\n /** {@link Disposable.onDisposed} */\r\n this.onDisposed = new Event();\r\n // TODO: Remove children and leave only slots?\r\n this.children = [];\r\n this.data = {};\r\n // Slots are other UIComponents that inherits all the logic from SimpleUIComponent\r\n this.slots = {};\r\n // InnerElements are those HTML Elements which doesn't come from an UIComponent.\r\n this.innerElements = {};\r\n this.onVisible = new Event();\r\n this.onHidden = new Event();\r\n this.onEnabled = new Event();\r\n this.onDisabled = new Event();\r\n this._parent = null;\r\n this._enabled = true;\r\n this._visible = true;\r\n this._active = false;\r\n this._components = components;\r\n this.id = id ?? generateUUID();\r\n this.template = template ?? \"
\";\r\n }\r\n cleanData() {\r\n this.data = {};\r\n }\r\n get() {\r\n return this.domElement;\r\n }\r\n async dispose(onlyChildren = false) {\r\n for (const name in this.slots) {\r\n const slot = this.slots[name];\r\n if (!slot)\r\n continue;\r\n await slot.dispose();\r\n }\r\n for (const child of this.children) {\r\n await child.dispose();\r\n this.removeChild(child);\r\n }\r\n for (const name in this.innerElements) {\r\n const element = this.innerElements[name];\r\n if (element) {\r\n element.remove();\r\n }\r\n }\r\n if (!onlyChildren) {\r\n if (this._domElement) {\r\n this._domElement.remove();\r\n }\r\n this.onVisible.reset();\r\n this.onHidden.reset();\r\n this.onEnabled.reset();\r\n this.onDisabled.reset();\r\n this.innerElements = {};\r\n this.children = [];\r\n this.slots = {};\r\n this.parent = null;\r\n }\r\n await this.onDisposed.trigger();\r\n this.onDisposed.reset();\r\n }\r\n addChild(...items) {\r\n for (const item of items) {\r\n this.children.push(item);\r\n this.domElement.append(item.domElement);\r\n item.parent = this;\r\n }\r\n }\r\n removeChild(...items) {\r\n for (const item of items) {\r\n item.domElement.remove();\r\n item.parent = null;\r\n }\r\n const filtered = this.children.filter((child) => !items.includes(child));\r\n this.children = filtered;\r\n }\r\n removeFromParent() {\r\n if (!this.parent)\r\n return;\r\n this.get().removeAttribute(\"data-tooeen-slot\");\r\n this.parent.removeChild(this);\r\n }\r\n getInnerElement(id) {\r\n return this.get().querySelector(`#${id}-${this.id}`);\r\n }\r\n setSlot(name, uiComponent) {\r\n const slot = this.get().querySelector(`[data-tooeen-slot=\"${name}\"]`);\r\n if (!slot)\r\n throw new Error(`Slot ${name} not found. You need to declare it in the UIComponent template using data-tooeen-slot=\"${name}\"`);\r\n this.slots[name] = uiComponent;\r\n uiComponent.get().setAttribute(\"data-tooeen-slot\", name);\r\n uiComponent.parent = this;\r\n slot.replaceWith(uiComponent.get());\r\n this.children.push(uiComponent);\r\n }\r\n setSlots() {\r\n for (const name in this.slots) {\r\n const component = this.slots[name];\r\n this.setSlot(name, component);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import { SimpleUIComponent } from \"../SimpleUIComponent\";\r\n// export class Toolbar extends SimpleUIComponent {\r\nexport class Toolbar extends SimpleUIComponent {\r\n set visible(visible) {\r\n this._visible = visible && this.hasElements;\r\n if (visible && this.hasElements) {\r\n this.domElement.classList.remove(\"hidden\");\r\n this.onVisible.trigger(this.get());\r\n }\r\n else {\r\n this.domElement.classList.add(\"hidden\");\r\n this.onHidden.trigger(this.get());\r\n }\r\n }\r\n get visible() {\r\n return this._visible;\r\n }\r\n set enabled(enabled) {\r\n this.closeMenus();\r\n this.children.forEach((button) => {\r\n button.enabled = enabled;\r\n button.menu.enabled = enabled;\r\n });\r\n this._enabled = enabled;\r\n }\r\n set position(position) {\r\n this._position = position;\r\n this.updateElements();\r\n }\r\n get position() {\r\n return this._position;\r\n }\r\n constructor(components, options) {\r\n const _options = {\r\n position: \"bottom\",\r\n ...options,\r\n };\r\n const template = `\r\n
\r\n `;\r\n super(components, template);\r\n this.children = [];\r\n this._parent = null;\r\n this.name = _options.name ?? \"Toolbar\";\r\n this.position = _options.position ?? \"bottom\";\r\n this.visible = true;\r\n }\r\n get hasElements() {\r\n return this.children.length > 0;\r\n }\r\n get() {\r\n return this.domElement;\r\n }\r\n addChild(...button) {\r\n button.forEach((btn) => {\r\n btn.parent = this;\r\n this.children.push(btn);\r\n this.domElement.append(btn.domElement);\r\n });\r\n this._components.ui.updateToolbars();\r\n }\r\n updateElements() {\r\n this.children.forEach((button) => (button.parent = this));\r\n }\r\n closeMenus() {\r\n this.children.forEach((button) => button.closeMenus());\r\n }\r\n setDirection(direction = \"horizontal\") {\r\n this.domElement.classList.remove(\"flex-col\");\r\n const directionClass = direction === \"horizontal\" ? [\"flex\"] : [\"flex-col\"];\r\n this.domElement.classList.add(...directionClass);\r\n }\r\n}\r\nToolbar.Class = {\r\n Base: `flex shadow-md w-fit h-fit gap-x-2 gap-y-2 p-2 text-white rounded pointer-events-auto backdrop-blur-xl \r\n bg-ifcjs-100 z-50`,\r\n};\r\n//# sourceMappingURL=index.js.map","// @ts-ignore\r\nimport { createPopper } from \"@popperjs/core/dist/esm\";\r\nimport { Component, Event } from \"../../base-types\";\r\nimport { Toolbar } from \"../ToolbarComponent\";\r\n/**\r\n * A component that handles all UI components.\r\n */\r\nexport class UIManager extends Component {\r\n get viewerContainer() {\r\n return this._components.renderer.get().domElement\r\n .parentElement;\r\n }\r\n constructor(components) {\r\n super(components);\r\n this.name = \"UIManager\";\r\n this.enabled = true;\r\n this.toolbars = [];\r\n this.tooltipsEnabled = true;\r\n this.children = [];\r\n /** {@link Disposable.onDisposed} */\r\n this.onDisposed = new Event();\r\n this._mouseMoved = false;\r\n this._mouseDown = false;\r\n this._containers = {\r\n top: document.createElement(\"div\"),\r\n right: document.createElement(\"div\"),\r\n bottom: document.createElement(\"div\"),\r\n left: document.createElement(\"div\"),\r\n };\r\n this.onMouseUp = () => {\r\n this._mouseDown = false;\r\n };\r\n this.onMouseMoved = () => {\r\n if (this._mouseDown) {\r\n this._mouseMoved = true;\r\n }\r\n };\r\n this.onMouseDown = (event) => {\r\n this._mouseDown = true;\r\n const canvas = this._components.renderer.get().domElement;\r\n if (event.target === canvas) {\r\n this.closeMenus();\r\n this.contextMenu.visible = false;\r\n }\r\n };\r\n this.onContextMenu = (event) => {\r\n if (this._mouseMoved) {\r\n this._mouseMoved = false;\r\n return;\r\n }\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n this.closeMenus();\r\n this._contextMenuContainer.style.left = `${event.offsetX}px`;\r\n this._contextMenuContainer.style.top = `${event.offsetY}px`;\r\n this.contextMenu.visible = true;\r\n this._popperInstance.update();\r\n };\r\n this._components = components;\r\n this.contextMenu = new Toolbar(components);\r\n this.contextMenu.setDirection(\"vertical\");\r\n this.contextMenu.position = \"left\";\r\n this._contextMenuContainer = document.createElement(\"div\");\r\n this._contextMenuContainer.style.position = \"absolute\";\r\n this._contextMenuContainer.append(this.contextMenu.domElement);\r\n this._popperInstance = createPopper(this._contextMenuContainer, this.contextMenu.domElement, {\r\n placement: \"bottom-start\",\r\n modifiers: [\r\n {\r\n name: \"preventOverflow\",\r\n options: {\r\n boundary: Object.values(this._containers),\r\n },\r\n },\r\n ],\r\n });\r\n const containerClasses = {\r\n top: [\"top-0\", \"pt-4\"],\r\n right: [\"top-0\", \"right-0\", \"pr-4\"],\r\n bottom: [\"bottom-0\", \"pb-4\"],\r\n left: [\"top-0\", \"left-0\", \"pl-4\"],\r\n };\r\n for (const id in this._containers) {\r\n const container = this._containers[id];\r\n container.className =\r\n \"absolute flex gap-y-3 gap-x-3 pointer-events-none p-4\";\r\n container.classList.add(...containerClasses[id]);\r\n container.id = `${id}-toolbar-container`;\r\n this.setContainerAlignment(id, \"center\");\r\n }\r\n const hContainerClass = [\"flex-row\", \"w-full\"];\r\n const vContainerClass = [\"flex-column\", \"h-full\"];\r\n this._containers.top.classList.add(...hContainerClass);\r\n this._containers.right.classList.add(...vContainerClass);\r\n this._containers.bottom.classList.add(...hContainerClass);\r\n this._containers.left.classList.add(...vContainerClass);\r\n }\r\n get() {\r\n return this.toolbars;\r\n }\r\n async dispose() {\r\n this.setupEvents(false);\r\n for (const name in this._containers) {\r\n const element = this._containers[name];\r\n element.remove();\r\n }\r\n for (const toolbar of this.toolbars) {\r\n await toolbar.dispose();\r\n }\r\n for (const child of this.children) {\r\n await child.dispose();\r\n }\r\n this._popperInstance.destroy();\r\n this.children = [];\r\n await this.contextMenu.dispose();\r\n this._containers = {};\r\n this._contextMenuContainer.remove();\r\n this._popperInstance = null;\r\n this._components = null;\r\n this.contextMenu = null;\r\n this._contextMenuContainer = null;\r\n await this.onDisposed.trigger();\r\n this.onDisposed.reset();\r\n }\r\n async init() {\r\n this.setupEvents(true);\r\n this.viewerContainer.append(this._containers.top, this._containers.right, this._containers.bottom, this._containers.left, this._contextMenuContainer);\r\n this.viewerContainer.style.position = \"relative\";\r\n this.viewerContainer.classList.add(\"obc-viewer\");\r\n // Get material icons\r\n const materialIconsLink = document.createElement(\"link\");\r\n materialIconsLink.rel = \"stylesheet\";\r\n materialIconsLink.href =\r\n \"https://fonts.googleapis.com/icon?family=Material+Icons\";\r\n // Get openbim-components styles\r\n const fetchResponse = await fetch(\"https://raw.githubusercontent.com/ThatOpen/engine_components/main/resources/styles.css\");\r\n const componentsCSS = await fetchResponse.text();\r\n const styleElement = document.createElement(\"style\");\r\n styleElement.id = \"openbim-components\";\r\n styleElement.textContent = componentsCSS;\r\n const firstLinkTag = document.head.querySelector(\"link\");\r\n if (firstLinkTag) {\r\n // Inserting the styles before any link tag makes sure the developer can override the library styles\r\n document.head.insertBefore(materialIconsLink, firstLinkTag);\r\n document.head.insertBefore(styleElement, firstLinkTag);\r\n }\r\n else {\r\n document.head.append(materialIconsLink, styleElement);\r\n }\r\n }\r\n add(...uiComponents) {\r\n for (const component of uiComponents) {\r\n this.children.push(component);\r\n this.viewerContainer.append(component.domElement);\r\n }\r\n }\r\n closeMenus() {\r\n this.toolbars.forEach((toolbar) => toolbar.closeMenus());\r\n this.contextMenu.closeMenus();\r\n }\r\n setContainerAlignment(container, alingment) {\r\n this._containers[container].style.justifyContent = alingment;\r\n this._containers[container].style.alignItems = alingment;\r\n }\r\n addToolbar(...toolbar) {\r\n toolbar.forEach((tlbr) => {\r\n const container = this._containers[tlbr.position];\r\n if (!container) {\r\n return;\r\n }\r\n container.append(tlbr.domElement);\r\n this.toolbars.push(tlbr);\r\n });\r\n this.updateToolbars();\r\n }\r\n updateToolbars() {\r\n this.toolbars.forEach((toolbar) => {\r\n toolbar.visible = true;\r\n toolbar.updateElements();\r\n if (toolbar.position === \"bottom\" || toolbar.position === \"top\") {\r\n toolbar.setDirection(\"horizontal\");\r\n }\r\n else {\r\n toolbar.setDirection(\"vertical\");\r\n }\r\n });\r\n }\r\n setupEvents(active) {\r\n if (active) {\r\n this.viewerContainer.addEventListener(\"mouseup\", this.onMouseUp);\r\n this.viewerContainer.addEventListener(\"mousedown\", this.onMouseDown);\r\n this.viewerContainer.addEventListener(\"mousemove\", this.onMouseMoved);\r\n this.viewerContainer.addEventListener(\"contextmenu\", this.onContextMenu);\r\n }\r\n else {\r\n this.viewerContainer.removeEventListener(\"mouseup\", this.onMouseUp);\r\n this.viewerContainer.removeEventListener(\"mousedown\", this.onMouseDown);\r\n this.viewerContainer.removeEventListener(\"mousemove\", this.onMouseMoved);\r\n this.viewerContainer.removeEventListener(\"contextmenu\", this.onContextMenu);\r\n }\r\n }\r\n}\r\n// TODO: Does this need to be here?\r\nUIManager.Class = {\r\n Label: \"block leading-6 text-gray-400 text-sm my-0\",\r\n};\r\n//# sourceMappingURL=index.js.map","import { Event } from \"../../base-types/base-types\";\r\nimport { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nexport class TreeView 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 this.innerElements.title.textContent = value;\r\n }\r\n get title() {\r\n return this.innerElements.title.textContent;\r\n }\r\n set materialIcon(name) {\r\n this.innerElements.expandBtn.textContent = name;\r\n }\r\n get expanded() {\r\n return this._expanded;\r\n }\r\n set expanded(expanded) {\r\n this._expanded = expanded;\r\n this.slots.content.visible = expanded;\r\n if (expanded) {\r\n this.onExpand.trigger();\r\n this.innerElements.titleContainer.classList.add(\"bg-ifcjs-120\");\r\n this.materialIcon = \"arrow_drop_down\";\r\n }\r\n else {\r\n this.onCollapse.trigger();\r\n this.innerElements.titleContainer.classList.remove(\"bg-ifcjs-120\");\r\n this.materialIcon = \"arrow_right\";\r\n }\r\n }\r\n set onmouseover(listener) {\r\n this.domElement.onmouseover = (e) => {\r\n e.stopImmediatePropagation();\r\n listener(e);\r\n };\r\n }\r\n constructor(components, title) {\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
\r\n
\r\n
\r\n `;\r\n super(components, template);\r\n this._expanded = true;\r\n this.onExpand = new Event();\r\n this.onCollapse = new Event();\r\n this.onClick = new Event();\r\n this.domElement.onclick = async (e) => {\r\n e.stopImmediatePropagation();\r\n await this.onClick.trigger(e);\r\n };\r\n this.innerElements = {\r\n titleContainer: this.getInnerElement(\"title-container\"),\r\n title: this.getInnerElement(\"title\"),\r\n description: this.getInnerElement(\"description\"),\r\n expandBtn: this.getInnerElement(\"expandBtn\"),\r\n };\r\n this.innerElements.expandBtn.onclick = () => this.toggle();\r\n this.slots = {\r\n content: new SimpleUIComponent(components, `
`),\r\n titleRight: new SimpleUIComponent(components),\r\n };\r\n this.setSlots();\r\n this.title = title ?? null;\r\n this.collapse();\r\n }\r\n async dispose(onlyChildren = false) {\r\n await super.dispose(onlyChildren);\r\n if (!onlyChildren) {\r\n this.onExpand.reset();\r\n this.onCollapse.reset();\r\n }\r\n }\r\n toggle(deep = false) {\r\n if (deep) {\r\n if (this.expanded) {\r\n this.collapse();\r\n }\r\n else {\r\n this.expand();\r\n }\r\n }\r\n else {\r\n this.expanded = !this.expanded;\r\n }\r\n }\r\n addChild(...items) {\r\n this.slots.content.addChild(...items);\r\n }\r\n collapse(deep = true) {\r\n if (!this.expanded)\r\n return;\r\n this.expanded = false;\r\n if (!deep)\r\n return;\r\n for (const child of this.children)\r\n if (child instanceof TreeView)\r\n child.collapse(deep);\r\n }\r\n expand(deep = true) {\r\n if (this.expanded)\r\n return;\r\n this.expanded = true;\r\n if (!deep)\r\n return;\r\n for (const child of this.children)\r\n if (child instanceof TreeView)\r\n child.expand(deep);\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nexport class SimpleUICard extends SimpleUIComponent {\r\n set title(value) {\r\n this.innerElements.title.textContent = value;\r\n }\r\n get title() {\r\n return this.innerElements.title.textContent;\r\n }\r\n set description(value) {\r\n this.innerElements.description.textContent = value;\r\n }\r\n get description() {\r\n return this.innerElements.description.textContent;\r\n }\r\n constructor(components, id) {\r\n const template = `\r\n
\r\n
\r\n

\r\n

\r\n
\r\n
\r\n
\r\n `;\r\n super(components, template, id);\r\n this.name = \"SimpleUICard\";\r\n this.innerElements = {\r\n title: this.getInnerElement(\"title\"),\r\n description: this.getInnerElement(\"description\"),\r\n };\r\n this.slots = {\r\n rightContainer: new SimpleUIComponent(components, `
`),\r\n };\r\n this.setSlots();\r\n }\r\n addChild(...items) {\r\n items.forEach((item) => {\r\n this.slots.rightContainer.addChild(item);\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 TextInput 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 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 = \"TooeenTextInput\";\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 Text\";\r\n this.innerElements.label.setAttribute(\"for\", `input-${this.id}`);\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 { UIManager } from \"../UIManager\";\r\nimport { Event } from \"../../base-types\";\r\nimport { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nexport class RangeInput extends SimpleUIComponent {\r\n set value(value) {\r\n this.innerElements.input.value = String(value);\r\n this.onChange.trigger(this.value);\r\n }\r\n get value() {\r\n return Number(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 set min(value) {\r\n this.innerElements.input.min = String(value);\r\n }\r\n get min() {\r\n return Number(this.innerElements.input.min);\r\n }\r\n set max(value) {\r\n this.innerElements.input.max = String(value);\r\n }\r\n get max() {\r\n return Number(this.innerElements.input.max);\r\n }\r\n set step(value) {\r\n this.innerElements.input.step = String(value);\r\n }\r\n get step() {\r\n return Number(this.innerElements.input.step);\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 = \"TooeenRangeInput\";\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 Range\";\r\n this.innerElements.input.oninput = () => {\r\n this.onChange.trigger(this.value);\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nexport class Spinner extends SimpleUIComponent {\r\n constructor(components) {\r\n const template = `\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Loading...\r\n
\r\n
\r\n `;\r\n super(components, template);\r\n this.name = \"Spinner\";\r\n }\r\n}\r\n//# sourceMappingURL=index.js.map","import { SimpleUIComponent } from \"../SimpleUIComponent\";\r\nexport class ToastNotification extends SimpleUIComponent {\r\n set materialIcon(name) {\r\n this.innerElements.icon.textContent = name;\r\n if (name) {\r\n this.innerElements.icon.classList.remove(\"hidden\");\r\n }\r\n else {\r\n this.innerElements.icon.classList.add(\"hidden\");\r\n }\r\n }\r\n constructor(components, config) {\r\n // TODO: Extract icon ui component and reuse it\r\n const template = `\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 = \"ToastNotification\";\r\n this.duration = 3000;\r\n this.innerElements = {\r\n icon: this.getInnerElement(\"icon\"),\r\n message: this.getInnerElement(\"message\"),\r\n };\r\n this.domElement.style.zIndex = \"9999\";\r\n this.materialIcon = config.materialIconName ?? \"done\";\r\n this.message = config.message;\r\n }\r\n get message() {\r\n return this.innerElements.message.textContent;\r\n }\r\n set message(value) {\r\n this.innerElements.message.textContent = value;\r\n }\r\n set visible(active) {\r\n const delay = 200;\r\n if (active) {\r\n super.visible = active;\r\n setTimeout(() => {\r\n this.domElement.style.transform = \"translateY(0)\";\r\n this.hideAutomatically();\r\n }, delay);\r\n }\r\n else {\r\n this.domElement.style.transform = \"translateY(10rem)\";\r\n setTimeout(() => (super.visible = active), delay);\r\n }\r\n }\r\n hideAutomatically() {\r\n setTimeout(() => {\r\n this.visible = false;\r\n }, this.duration);\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 TextArea 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 set placeholder(value) {\r\n this.innerElements.input.placeholder = value;\r\n }\r\n get placeholder() {\r\n return this.innerElements.input.placeholder;\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 = \"TooeenTextArea\";\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 Text Area\";\r\n this.placeholder = \"Write something...\";\r\n this.innerElements.label.setAttribute(\"for\", `input-${this.id}`);\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"],"names":["SimpleUIComponent","domElement","this","_domElement","Error","ele","remove","parent","value","_parent","active","_active","setAttribute","String","visible","_visible","classList","onVisible","trigger","get","add","onHidden","enabled","_enabled","onEnabled","onDisabled","hasElements","children","length","template","temp","document","createElement","innerHTML","replace","id","newElement","firstElementChild","constructor","components","super","name","onDisposed","data","slots","innerElements","_components","cleanData","dispose","onlyChildren","slot","child","removeChild","element","reset","addChild","items","item","push","append","filtered","filter","includes","removeFromParent","removeAttribute","getInnerElement","querySelector","setSlot","uiComponent","replaceWith","setSlots","component","Toolbar","closeMenus","forEach","button","menu","position","_position","updateElements","options","_options","Class","Base","btn","ui","updateToolbars","setDirection","direction","directionClass","UIManager","viewerContainer","renderer","parentElement","toolbars","tooltipsEnabled","_mouseMoved","_mouseDown","_containers","top","right","bottom","left","onMouseUp","onMouseMoved","onMouseDown","event","canvas","target","contextMenu","onContextMenu","preventDefault","stopImmediatePropagation","_contextMenuContainer","style","offsetX","offsetY","_popperInstance","update","placement","modifiers","boundary","Object","values","containerClasses","container","className","setContainerAlignment","hContainerClass","vContainerClass","setupEvents","toolbar","destroy","init","materialIconsLink","rel","href","fetchResponse","fetch","componentsCSS","text","styleElement","textContent","firstLinkTag","head","insertBefore","uiComponents","alingment","justifyContent","alignItems","addToolbar","tlbr","addEventListener","removeEventListener","Label","TreeView","description","title","materialIcon","expandBtn","expanded","_expanded","content","onExpand","titleContainer","onCollapse","onmouseover","listener","e","onClick","onclick","async","toggle","titleRight","collapse","deep","expand","SimpleUICard","rightContainer","TextInput","input","onChange","label","RangeInput","Number","min","max","step","oninput","ToastNotification","icon","config","duration","message","zIndex","materialIconName","setTimeout","transform","hideAutomatically"],"sourceRoot":""}