import { B as BaseCardContainer } from './modal.component-db51742e.js';
|
import { e } from './custom-element-30fc6381.js';
|
import { n } from './base.component-813fc7cf.js';
|
import './query-assigned-elements-fea1f631.js';
|
import { EventHandlerDispatchEvent } from './event.handler.model.js';
|
import { CardContainerBackButtonComponent } from './card-container-back-button.component.js';
|
import './card-container-definitions.js';
|
import { CardContainerEvents } from './card-container-events.js';
|
import './card-data-service-update-events.js';
|
import { CardContainerFilterSelection } from './card-container-filter-selection.js';
|
import './card.data.service.js';
|
import './class-map-a0fb5d87.js';
|
import './loading.component.js';
|
import './dimmer.component.js';
|
import '@dh-software/furnview-icons';
|
import './query-1c86d710.js';
|
import './dot-flashing-loader.component.js';
|
import './rotating-dots-loader.component.js';
|
import './key-frame-effect.service.js';
|
import './toolbar.component.js';
|
import './toggle-toolbar.component.js';
|
import './style.helper.js';
|
import './image.service.js';
|
import './svg-icon.component.js';
|
import './popup.component.js';
|
import './popup-closer.component.js';
|
import './hr-item.component.js';
|
import './hr-list.component.js';
|
import './query-all-828de4b2.js';
|
import './hr-theme.model.js';
|
import './configurator.form.component.js';
|
import './configurator.form.base.element.component.js';
|
import './scene-helper.service.js';
|
import './async.base.component.js';
|
import './card-container-settings.js';
|
import './card-container-states.js';
|
import './card-container-additional-data.js';
|
import './card-containers-shared-data.js';
|
import './input.mask.component.js';
|
import './mask.component.js';
|
import './information.mask.component.js';
|
import './open-cloud-id.mask.component.js';
|
import './share-link-per-mail.component.js';
|
import './request-appointment.component.js';
|
import './prog-property.model.js';
|
import './interface.js';
|
import './reset.mask.component.js';
|
import './configuration.service.js';
|
import './step-based.mask.component.js';
|
import './container-mask.component.js';
|
import './messageNoCalc.mask.component.js';
|
import './button.component.js';
|
import './iwoFurn.mask.component.js';
|
import './input.component.js';
|
import './base-input.js';
|
import './save-dialog.mask.component.js';
|
import './cloud-id.service.js';
|
import './send-offer-request-mask.component.js';
|
import './file-upload-mask.component.js';
|
import './label.component.js';
|
import './sass.default-d943b107.js';
|
import './accordion.component.js';
|
import './accordion-item.component.js';
|
import './accordion-layer.component.js';
|
import './slider.component.js';
|
import './equipment-list.component.js';
|
import './state-7ee0cf4f.js';
|
import './confirming-button.component.js';
|
import './fitting-item.component.js';
|
import './proptrans-item.component.js';
|
import './shoppingcart-item.component.js';
|
import './prog-context.model.js';
|
import './manu-prog.service.js';
|
import './catalog.service.js';
|
import './step-child.component.js';
|
import './clock.controller.js';
|
|
var __defProp = Object.defineProperty;
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
var __decorateClass = (decorators, target, key, kind) => {
|
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
if (decorator = decorators[i])
|
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
if (kind && result)
|
__defProp(target, key, result);
|
return result;
|
};
|
var __async = (__this, __arguments, generator) => {
|
return new Promise((resolve, reject) => {
|
var fulfilled = (value) => {
|
try {
|
step(generator.next(value));
|
} catch (e) {
|
reject(e);
|
}
|
};
|
var rejected = (value) => {
|
try {
|
step(generator.throw(value));
|
} catch (e) {
|
reject(e);
|
}
|
};
|
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
step((generator = generator.apply(__this, __arguments)).next());
|
});
|
};
|
class LevelPageCardContainerSelectionStack {
|
constructor(root, selectionChangeEvent) {
|
this.selection = [];
|
this.lastSelected = false;
|
this.selectionChangeEvent = () => {
|
return;
|
};
|
this._root = "0";
|
this._root = root;
|
this.selection = [root];
|
this.selectionChangeEvent = selectionChangeEvent;
|
}
|
get root() {
|
return this._root;
|
}
|
set root(value) {
|
this._root = value;
|
}
|
get selected() {
|
const lastIndex = this.selection.length - 1;
|
if (lastIndex > 0) {
|
const last = this.selection.at(lastIndex);
|
if (last != void 0) {
|
return last;
|
}
|
}
|
return this.root;
|
}
|
set selected(select) {
|
const existingSelectionIndex = this.selection.indexOf(select);
|
if (existingSelectionIndex != -1) {
|
this.selection = this.selection.slice(0, existingSelectionIndex + 1);
|
this.selectionChangeEvent(select, this.selection);
|
return;
|
}
|
this.selection.push(select);
|
this.selectionChangeEvent(select, this.selection);
|
}
|
set LastSelected(value) {
|
this.lastSelected = value;
|
}
|
get LastSelected() {
|
return this.lastSelected;
|
}
|
SelectRoot() {
|
this.selected = this.root;
|
this.LastSelected = false;
|
}
|
Back() {
|
const indexToSelect = this.selection.length - 2;
|
if (indexToSelect < 1) {
|
this.SelectRoot();
|
return;
|
}
|
const selectionTarget = this.selection.at(indexToSelect);
|
if (selectionTarget) {
|
this.selected = selectionTarget;
|
this.LastSelected = false;
|
return;
|
}
|
}
|
parseToFilter(strategy) {
|
const filter = {
|
filter: new Array(),
|
strategy,
|
priority: void 0
|
};
|
for (const option of this.selection) {
|
if (option != this.root) {
|
filter.filter.push(option);
|
}
|
}
|
return filter;
|
}
|
}
|
let LevelPageCardContainerComponent = class extends BaseCardContainer {
|
constructor() {
|
super();
|
this.levelEvents = {};
|
this.selectionChangeEvents = [];
|
this.levelEventPreventsSelectionChange = false;
|
this.selection = new LevelPageCardContainerSelectionStack("root", (selected, selection) => __async(this, null, function* () {
|
const dispatchLevelEvents = () => __async(this, null, function* () {
|
const selectEvents = () => {
|
const levelEventKeyStacks = Object.keys(this.levelEvents);
|
const events2 = new Array();
|
for (const levelEventKeyStack of levelEventKeyStacks) {
|
const eventKeys = levelEventKeyStack.split("|");
|
if (eventKeys.length == 1) {
|
if (levelEventKeyStack == selected) {
|
events2.push(...this.levelEvents[levelEventKeyStack]);
|
}
|
continue;
|
}
|
const startIndex = selection.length - eventKeys.length;
|
if (startIndex > 0) {
|
let valid = true;
|
for (let index = startIndex; index < selection.length; ++index) {
|
if (selection[index] != eventKeys[index - startIndex]) {
|
valid = false;
|
}
|
}
|
if (valid) {
|
events2.push(...this.levelEvents[levelEventKeyStack]);
|
}
|
}
|
}
|
return events2;
|
};
|
let eventsDispatched = false;
|
const events = selectEvents();
|
if (events != void 0 && events.length > 0) {
|
window.dispatchEvent(new EventHandlerDispatchEvent({
|
async: false,
|
events
|
}));
|
eventsDispatched = true;
|
}
|
CardContainerBackButtonComponent.HideStateUpdate();
|
return eventsDispatched;
|
});
|
if (this.levelEventPreventsSelectionChange) {
|
if (yield dispatchLevelEvents()) {
|
return;
|
}
|
}
|
window.dispatchEvent(new EventHandlerDispatchEvent({
|
async: false,
|
events: this.selectionChangeEvents
|
}));
|
yield dispatchLevelEvents();
|
}));
|
this.lastClickedCard = void 0;
|
this.filter = new CardContainerFilterSelection();
|
this.addEventListener("card-clicked", (clickEvent) => __async(this, null, function* () {
|
if (clickEvent && clickEvent.detail && clickEvent.detail.data && clickEvent.detail.data.click) {
|
this.lastClickedCard = clickEvent.detail.data;
|
let hide = true;
|
let nextLevelKey = clickEvent.detail.data.click["next-level-key"];
|
if (typeof nextLevelKey == "number") {
|
nextLevelKey = nextLevelKey.toString();
|
}
|
if (nextLevelKey != void 0) {
|
if (nextLevelKey.length > 0) {
|
this.selection.selected = nextLevelKey;
|
hide = false;
|
this.selection.LastSelected = false;
|
} else if (clickEvent.detail.data.click["level-key"] != void 0) {
|
this.selection.selected = clickEvent.detail.data.click["level-key"];
|
this.selection.LastSelected = true;
|
}
|
}
|
this.triggerUpdateRequest(hide);
|
}
|
}));
|
this.addEventListener(CardContainerEvents.UpdateAdditionalData, (event) => {
|
if (event.detail == void 0)
|
return;
|
if (event.detail == "show-back-button") {
|
this.AdditionalData.Set(event.detail, this._showBackButton());
|
}
|
if (event.detail == "back-button-txt") {
|
const txt = this._getBackButtonText();
|
if (txt.length > 0) {
|
this.AdditionalData.Set(event.detail, txt);
|
}
|
}
|
});
|
this.addEventListener(CardContainerEvents.Back, () => {
|
if (this.isUpdatePending == false) {
|
this.selection.Back();
|
this.triggerUpdateRequest();
|
}
|
this.hideElement = false;
|
});
|
this.addEventListener(CardContainerEvents.CardContainerPreFill, () => {
|
this.selection.root = this.Settings.Fetch["root-level"];
|
});
|
}
|
get Selected() {
|
return this.selection.selected;
|
}
|
get SelectionRoot() {
|
return this.selection.root;
|
}
|
get SelectedLevel() {
|
if (this.CardData) {
|
return this.CardData.get(this.Selected);
|
}
|
return void 0;
|
}
|
get LastClicked() {
|
return this.lastClickedCard;
|
}
|
_showBackButton() {
|
if (typeof this.Selected == "string") {
|
if (this.Selected.length < 1) {
|
return false;
|
}
|
}
|
if (this.Selected == this.SelectionRoot) {
|
return false;
|
}
|
if (this.selection.LastSelected) {
|
return true;
|
}
|
if (this.hideElement) {
|
return false;
|
}
|
return false;
|
}
|
_getBackButtonText() {
|
const lvl = this.SelectedLevel;
|
if (lvl) {
|
return lvl.title.length > 0 ? lvl.title : "";
|
} else if (this.selection.LastSelected) {
|
if (this.LastClicked) {
|
if (this.LastClicked.txt) {
|
if (this.LastClicked.txt["title"]) {
|
return this.LastClicked.txt["title"];
|
}
|
const alternative = Object.keys(this.LastClicked.txt);
|
if (alternative.length > 0) {
|
const txt = alternative.at(0);
|
if (txt) {
|
return this.LastClicked.txt[txt];
|
}
|
}
|
}
|
}
|
}
|
return "";
|
}
|
CreateCards(result) {
|
const baseFiltered = super.CreateCards(result);
|
const newResult = new Map();
|
const activeIndex = this.selection.selected;
|
const active = baseFiltered.get(activeIndex);
|
if (active) {
|
newResult.set(activeIndex, active);
|
}
|
return newResult;
|
}
|
triggerUpdateRequest(hide = false) {
|
this.hideElement = hide;
|
if (this.filter == void 0)
|
return;
|
this.filter.Set(this.selection.parseToFilter(this.Settings.Filter["selection-strategy"]));
|
this.requestUpdate();
|
}
|
};
|
__decorateClass([
|
n({ type: Object, reflect: true, attribute: "level-events" })
|
], LevelPageCardContainerComponent.prototype, "levelEvents", 2);
|
__decorateClass([
|
n({ type: Array, reflect: true, attribute: "selection-change-events" })
|
], LevelPageCardContainerComponent.prototype, "selectionChangeEvents", 2);
|
__decorateClass([
|
n({ type: Boolean, reflect: true, attribute: "level-event-prevents-selection-change" })
|
], LevelPageCardContainerComponent.prototype, "levelEventPreventsSelectionChange", 2);
|
LevelPageCardContainerComponent = __decorateClass([
|
e("fv-level-pages-card-container")
|
], LevelPageCardContainerComponent);
|
|
export { LevelPageCardContainerComponent };
|