import { _ as __awaiter, a as __decorate } from './tslib.es6-b53fb3ce.js';
|
import { i as i$1, s, r } from './query-assigned-elements-fea1f631.js';
|
import { Fonts, SimpleIcons, MultiIcons } from '@dh-software/furnview-icons';
|
|
class ComponentServiceClass {
|
constructor() {
|
this._components = new Map();
|
}
|
get(tagName) {
|
const result = this._components.get(tagName.toUpperCase());
|
return result !== undefined ? result : new Array();
|
}
|
valid(element, query) {
|
return element && element.matches(query);
|
}
|
isElement(target_) {
|
for (const [key, value] of this._components) {
|
for (const element of value) {
|
if (element == target_) {
|
return true;
|
}
|
}
|
}
|
return false;
|
}
|
register(component) {
|
let elements = this.get(component.tagName);
|
if (elements == undefined) {
|
elements = new Array();
|
}
|
if (elements.includes(component) == false) {
|
elements.push(component);
|
}
|
this._components.set(component.tagName.toUpperCase(), elements);
|
}
|
findAll(tagName, query = "") {
|
const elements = this.get(tagName);
|
if (query.length < 1) {
|
return elements;
|
}
|
const result = new Array();
|
elements.forEach((element) => {
|
if (this.valid(element, query))
|
result.push(element);
|
});
|
return result;
|
}
|
find(tagName, query = "") {
|
const elements = this.get(tagName);
|
if (query.length < 1 && elements.length > 0) {
|
return elements[0];
|
}
|
return elements.find((element) => {
|
if (element && element.matches(query)) {
|
return true;
|
}
|
return false;
|
});
|
}
|
findScrollableParent(element) {
|
if (element == null)
|
return undefined;
|
const computedStyle = getComputedStyle(element);
|
const overflow = computedStyle.getPropertyValue("overflow");
|
if ((element.scrollHeight > element.clientHeight || element.scrollWidth > element.clientWidth) && !overflow.includes("hidden")) {
|
return element;
|
}
|
if (overflow.includes("auto") || overflow.includes("scroll")) {
|
return element;
|
}
|
const parent = this.getParent(element);
|
if (parent) {
|
return this.findScrollableParent(parent);
|
}
|
return undefined;
|
}
|
getParent(element) {
|
if (element == undefined)
|
return undefined;
|
if (element.assignedSlot) {
|
return this.getParent(element.assignedSlot);
|
}
|
if (element.parentElement) {
|
return element.parentElement;
|
}
|
const shadowRoot = element.getRootNode();
|
if (shadowRoot && shadowRoot.host) {
|
return shadowRoot.host;
|
}
|
return undefined;
|
}
|
getParentComponent(element) {
|
const parent = this.getParent(element);
|
if (parent == undefined)
|
return undefined;
|
if (this.isElement(parent))
|
return parent;
|
return this.getParentComponent(parent);
|
}
|
isPartOfHiddenSubtree(element) {
|
if (element == undefined)
|
return false;
|
if (element.hideElement == true)
|
return true;
|
return this.isPartOfHiddenSubtree(this.getParentComponent(element));
|
}
|
doActionRecursiveOnChildren(element, action) {
|
for (let index = 0; index < element.children.length; ++index) {
|
const child = element.children.item(index);
|
if (child) {
|
if (child instanceof BaseElement) {
|
action(child);
|
}
|
this.doActionRecursiveOnChildren(child, action);
|
}
|
}
|
if (element instanceof BaseElement) {
|
if (element.renderRoot && element.renderRoot.children) {
|
for (let index = 0; index < element.renderRoot.children.length; ++index) {
|
const child = element.renderRoot.children.item(index);
|
if (child) {
|
if (child instanceof BaseElement) {
|
action(child);
|
}
|
this.doActionRecursiveOnChildren(child, action);
|
}
|
}
|
}
|
}
|
}
|
waitForAllChildren(element) {
|
return __awaiter(this, void 0, void 0, function* () {
|
if (element.CheckFetchPromise) {
|
yield element.CheckFetchPromise();
|
}
|
if (element.updateComplete) { // also wait for update complete, when AsyncBaseElement (is also an instance of BaseElement!)
|
yield element.updateComplete;
|
}
|
for (let index = 0; index < element.children.length; ++index) {
|
const child = element.children.item(index);
|
if (child) {
|
yield this.waitForAllChildren(child);
|
}
|
}
|
if (element instanceof BaseElement) {
|
if (element.renderRoot && element.renderRoot.children) {
|
for (let index = 0; index < element.renderRoot.children.length; ++index) {
|
const child = element.renderRoot.children.item(index);
|
if (child) {
|
yield this.waitForAllChildren(child);
|
}
|
}
|
}
|
}
|
});
|
}
|
}
|
const ComponentService = new ComponentServiceClass();
|
|
/**
|
* @license
|
* Copyright 2017 Google LLC
|
* SPDX-License-Identifier: BSD-3-Clause
|
*/
|
const i=(i,e)=>"method"===e.kind&&e.descriptor&&!("value"in e.descriptor)?{...e,finisher(n){n.createProperty(e.key,i);}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:e.key,initializer(){"function"==typeof e.initializer&&(this[e.key]=e.initializer.call(this));},finisher(n){n.createProperty(e.key,i);}},e=(i,e,n)=>{e.constructor.createProperty(n,i);};function n(n){return (t,o)=>void 0!==o?e(n,t,o):i(n,t)}
|
|
var css_248z = i$1`.close-symbol{cursor:pointer;height:100%;position:relative;width:100%}.close-symbol.loading{z-index:999}.close-symbol.loading:after,.close-symbol.loading:before{background:#fff}.close-symbol:after,.close-symbol:before{background:var(--close-symbol-background,#888);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;content:" ";height:1px;margin:0;padding:0;position:absolute;top:50%;width:100%}.close-symbol:after:hover,.close-symbol:before:hover{background:var(--close-symbol-background-hover,#333)}.close-symbol:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);transform:rotate(-45deg)}.close-symbol:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg)}:host(.active) .circle-number-symbol{border:var(--circle-number-symbol-border-active,2px solid #000)}.circle-number-symbol{align-items:center;background:var(--circle-number-symbol-background,var(--primary-color,red));border:var(--circle-number-symbol-border,2px solid #fff);border-radius:50%;box-shadow:var(--circle-number-symbol-box-shadow,1px 2px 5px 0 #000);color:var(--circle-number-symbol-color,var(--primary-text-color,#000));display:flex;height:var(--circle-number-symbol-size,30px);justify-content:center;position:relative;width:var(--circle-number-symbol-size,30px)}.custom-symbol{cursor:pointer;display:flex;left:10px;position:relative}.custom-symbol.up:after{background-image:var(--custom-symbol-image-down,url("/webui/images/minus.svg"));content:"";height:18px}.custom-symbol.down:after{background-image:var(--custom-symbol-image-down,url("/webui/images/plus.svg"));content:"";height:18px}.custom-symbol:after{color:#1e1e1e;margin:auto 0;padding:0 0 2px;pointer-events:none;transform:translateX(-15px);width:18px}.accordion-symbol{cursor:pointer;display:flex;left:10px;position:relative}.accordion-symbol.up:after{content:"-";font-size:xx-large;transform:scaleX(2) translateX(-4px)}.accordion-symbol.down:after{content:"+";font-size:xx-large}.accordion-symbol:after{color:#1e1e1e;margin:auto 0;padding:0 0 2px;pointer-events:none;transform:translateX(-15px);width:18px}.chevron-symbol{cursor:pointer;left:10px;position:relative}.chevron-symbol.up:after{content:"<"}.chevron-symbol.down:after{content:">"}.chevron-symbol:after{color:inherit;font:17px Consolas,monospace;padding:0 0 2px;pointer-events:none;position:absolute;-webkit-transform:rotate(90deg) translateX(-100%);-moz-transform:rotate(90deg) translateX(-100%);-ms-transform:rotate(90deg) translateX(-100%);transform:rotate(90deg) translateX(-100%)}@media (width >= 980px){.only-mobile{display:none!important}}@media (width <= 980px){.only-desktop{display:none!important}}.bold{font-weight:var(--global-font-weight-bold,600)}*{font-family:var(--global-font,Roboto);font-weight:var(--global-font-weight,400);-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.container{display:flex;margin:10px 0}.container.column{flex-direction:column}.container.column.reverse{flex-direction:column-reverse}.container.row{flex-direction:row}.container.row.reverse{flex-direction:row-reverse}.fluid{flex:1}.fluid.space-after{margin-right:55px}.hidden{display:none!important}.mobile-mode-hide,:host(.mobile-mode-hide){display:none!important}.invisible{visibility:hidden!important}.invisible-scroll,:host(.invisible-scroll){margin-right:-22px;overflow:hidden}.invisible-scroll>:first-child,:host(.invisible-scroll)>:first-child{box-sizing:content-box;overflow-x:hidden;overflow-y:scroll;padding-right:22px}.invisible-scroll.bottom,:host(.invisible-scroll.bottom){margin-right:unset;overflow:hidden}.invisible-scroll.bottom>:first-child,:host(.invisible-scroll.bottom)>:first-child{box-sizing:content-box;margin-bottom:-22px;overflow-x:scroll;overflow-y:hidden;padding-bottom:22px;padding-right:unset}:host([disabled]){filter:contrast(.5) grayscale(1);pointer-events:none}*{scrollbar-color:#5c5c5c hsla(0,0%,100%,.004);scrollbar-width:thin}[disabled]{filter:contrast(.5) grayscale(1);pointer-events:none}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar,::-webkit-scrollbar-corner{background:hsla(0,0%,100%,0)}::-webkit-scrollbar-thumb{background:#5c5c5c;-webkit-border-radius:8px}::-webkit-scrollbar-button,::-webkit-scrollbar-button:horizontal:end:decrement,::-webkit-scrollbar-button:horizontal:end:increment,::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:vertical:start:increment{background-color:transparent;border:none;color:transparent}:host{scrollbar-color:var(--base-scrollbar-color,unset);scrollbar-width:var(--base-scrollbar-width,unset)}:host(.invisible){visibility:hidden}@media (width <= 520px){:host([mobile-mode=hide]){display:none!important}}@media (width >= 520px) and (width <= 980px){:host([mobile-mode=hide]){display:none!important}}@media (width >= 981px){:host([mobile-mode=show]){display:none!important}}`;
|
|
class HideStateUpdatedEvent extends CustomEvent {
|
constructor(data_) {
|
super("hide-state-updated-event", { detail: data_, bubbles: false });
|
}
|
}
|
class HideBaseElement extends s {
|
constructor() {
|
super(...arguments);
|
this.hideElement = false;
|
this.hiddenClasses = ["hidden"];
|
}
|
dispatchHideStateUpdatedEvent() {
|
this.dispatchEvent(new HideStateUpdatedEvent({
|
value: this.hideElement,
|
"parent-state-changed": false
|
}));
|
HideBaseElement.dispatchEventRecursiveToChildren(this, new HideStateUpdatedEvent({
|
value: this.hideElement,
|
"parent-state-changed": true
|
}));
|
}
|
addHideStateUpdatedEventListener(event) {
|
this.addEventListener("hide-state-updated-event", (event_) => {
|
if (event_.detail) {
|
if (event_.detail.value != undefined && event_.detail["parent-state-changed"] != undefined) {
|
event(event_.detail.value, event_.detail["parent-state-changed"]);
|
}
|
}
|
});
|
}
|
static dispatchEventRecursiveToChildren(element, event) {
|
ComponentService.doActionRecursiveOnChildren(element, (child) => {
|
child.dispatchEvent(event);
|
});
|
}
|
attributeChangedCallback(name, _old, value) {
|
super.attributeChangedCallback(name, _old, value);
|
if (name === "hidden-classes") {
|
if (_old != undefined) {
|
const old = JSON.parse(_old);
|
this.classList.remove(...old);
|
if (this.hideElement) {
|
this.classList.add(...this.hiddenClasses);
|
}
|
}
|
}
|
if (name === "hide-element") {
|
if (this.hideElement) {
|
this.classList.add(...this.hiddenClasses);
|
}
|
else {
|
this.classList.remove(...this.hiddenClasses);
|
}
|
this.dispatchHideStateUpdatedEvent();
|
}
|
}
|
anyHiddenClassInArray(toCheck) {
|
for (const hiddenClass of this.hiddenClasses) {
|
if (toCheck.includes(hiddenClass)) {
|
return true;
|
}
|
}
|
return false;
|
}
|
connectedCallback() {
|
super.connectedCallback();
|
let contains = false;
|
for (const hiddenClass of this.hiddenClasses) {
|
if (this.classList.contains(hiddenClass)) {
|
contains = true;
|
break;
|
}
|
}
|
if (contains) {
|
this.hideElement = true; // init if class hidden set
|
}
|
}
|
}
|
__decorate([
|
n({ type: Boolean, reflect: true, attribute: "hide-element" })
|
], HideBaseElement.prototype, "hideElement", void 0);
|
__decorate([
|
n({ type: Array, reflect: true, attribute: "hidden-classes" })
|
], HideBaseElement.prototype, "hiddenClasses", void 0);
|
|
var _a, _b;
|
class WillUpdateEvent extends CustomEvent {
|
constructor(element) {
|
super("willupdate", { detail: element, bubbles: true });
|
}
|
}
|
class UpdatedEvent extends CustomEvent {
|
constructor(element) {
|
super("updated", { detail: element, bubbles: true });
|
}
|
}
|
class BaseElement extends (_b = HideBaseElement) {
|
get mobile() {
|
if (BaseElement._mobile == undefined) {
|
BaseElement._mobile = false;
|
if (window.UtilService) {
|
BaseElement._mobile = window.UtilService.isDeviceMobile();
|
}
|
}
|
return BaseElement._mobile;
|
}
|
AddConnectedCallbackAction(action_) {
|
this._connectedCallbackActions.push(action_);
|
}
|
ResetConnectedCallbackAction() {
|
this._connectedCallbackActions = new Array();
|
}
|
TriggerConnectedCallbackActions() {
|
return __awaiter(this, void 0, void 0, function* () {
|
for (const action of this._connectedCallbackActions) {
|
yield action();
|
}
|
});
|
}
|
constructor(observeLocales = true) {
|
super();
|
this.mobileMode = "";
|
this._connectedCallbackActions = new Array();
|
this.furnviewLoaded = false;
|
ComponentService.register(this);
|
if (observeLocales) {
|
if (window.LocalesModel && window.LocalesModel.Register) {
|
window.LocalesModel.Register(this);
|
}
|
}
|
this.TriggerLocalesModelLoaded();
|
}
|
TriggerLocalesModelLoaded() {
|
return __awaiter(this, void 0, void 0, function* () {
|
if (LocalesModel && LocalesModel.IsFileRead)
|
yield LocalesModel.IsFileRead();
|
this.localesModelLoaded();
|
});
|
}
|
localesModelLoaded() { }
|
connectedCallback() {
|
super.connectedCallback();
|
this.TriggerConnectedCallbackActions();
|
}
|
willUpdate(_changedProperties) {
|
super.willUpdate(_changedProperties);
|
this.dispatchEvent(new WillUpdateEvent(this));
|
}
|
updated(_changedProperties) {
|
super.updated(_changedProperties);
|
this.dispatchEvent(new UpdatedEvent(this));
|
}
|
checkFurnview() {
|
return __awaiter(this, void 0, void 0, function* () {
|
yield CommunicationInterfaceService.IsAppReady;
|
this.furnviewLoaded = true;
|
});
|
}
|
firstUpdated(_changedProperties) {
|
super.firstUpdated(_changedProperties);
|
this.checkFurnview();
|
}
|
isEmpty() {
|
let nonSlotChildren = 0;
|
if (this.shadowRoot) {
|
for (let index = 0; index < this.shadowRoot.children.length; ++index) {
|
const child = this.shadowRoot.children.item(index);
|
if (child && child.tagName != "SLOT") {
|
++nonSlotChildren;
|
}
|
}
|
}
|
return (this.children.length + nonSlotChildren) <= 0;
|
}
|
get Unit() {
|
if (BaseElement._dimensionScale == 1.0) {
|
return "mm";
|
}
|
if (BaseElement._dimensionScale == 0.1) {
|
return "cm";
|
}
|
if (BaseElement._dimensionScale == 0.01) {
|
return "dm";
|
}
|
if (BaseElement._dimensionScale == 0.001) {
|
return "m";
|
}
|
return "error";
|
}
|
get DimensionScale() {
|
if (BaseElement._dimensionScale == undefined)
|
return 0.1;
|
return BaseElement._dimensionScale;
|
}
|
get Digits() {
|
if (BaseElement._dimensionDigits == undefined)
|
return 1;
|
return BaseElement._dimensionDigits;
|
}
|
isPartOfHiddenSubtree() {
|
return ComponentService.isPartOfHiddenSubtree(this);
|
}
|
scheduleUpdate() {
|
const _super = Object.create(null, {
|
scheduleUpdate: { get: () => super.scheduleUpdate }
|
});
|
return __awaiter(this, void 0, void 0, function* () {
|
if (this.furnviewLoaded) {
|
yield CommunicationInterfaceService.IsAppReady;
|
if (BaseElement._dimensionScale == undefined) {
|
BaseElement._dimensionScale = yield CommunicationMessageService.getDimensionScale();
|
}
|
BaseElement._dimensionDigits = yield CommunicationMessageService.getDimensionDigits();
|
}
|
return _super.scheduleUpdate.call(this);
|
});
|
}
|
updateVisibility() {
|
var _c, _d, _e, _f, _g, _h, _j;
|
if (this.visibleSelectors) {
|
const targetContents = new Array();
|
if (((_c = this.visibleSelectors) === null || _c === void 0 ? void 0 : _c.element["ignore-default-target-content"]) == false || this.visibleSelectors.element["ignore-default-target-content"] == undefined) {
|
const target = (((_d = this.visibleSelectors) === null || _d === void 0 ? void 0 : _d.element.all) ? ComponentService.findAll((_e = this.visibleSelectors) === null || _e === void 0 ? void 0 : _e.element.name, (_f = this.visibleSelectors) === null || _f === void 0 ? void 0 : _f.element.selector) : [ComponentService.find((_g = this.visibleSelectors) === null || _g === void 0 ? void 0 : _g.element.name, (_h = this.visibleSelectors) === null || _h === void 0 ? void 0 : _h.element.selector)]).filter(x => x != undefined);
|
if (target) {
|
targetContents.push(...target);
|
}
|
}
|
const targetContentAlternatives = (_j = this.visibleSelectors) === null || _j === void 0 ? void 0 : _j.element["additional-target-contents"];
|
if (targetContentAlternatives) {
|
for (const targetContentAlternative of targetContentAlternatives) {
|
if (targetContentAlternative.name.length > 0) {
|
const alternative = ComponentService.find(targetContentAlternative.name, targetContentAlternative.selector);
|
if (alternative != undefined) {
|
targetContents.push(alternative);
|
}
|
}
|
}
|
}
|
this.hideElement = targetContents.every(x => x.isEmpty());
|
}
|
}
|
}
|
_a = BaseElement;
|
BaseElement.styles = [
|
Reflect.get(_b, "styles", _a) || [],
|
i$1 `${r(css_248z)}`,
|
i$1 `${r(`${Fonts}${SimpleIcons}${MultiIcons}`)}`,
|
];
|
BaseElement._mobile = undefined;
|
BaseElement._dimensionScale = undefined;
|
BaseElement._dimensionDigits = undefined;
|
__decorate([
|
n({ type: String, reflect: true, attribute: "mobile-mode" })
|
], BaseElement.prototype, "mobileMode", void 0);
|
__decorate([
|
n({ type: Object, reflect: true, attribute: "visible-selectors" })
|
], BaseElement.prototype, "visibleSelectors", void 0);
|
|
export { BaseElement as B, ComponentService as C, HideStateUpdatedEvent as H, UpdatedEvent as U, WillUpdateEvent as W, HideBaseElement as a, n };
|