Alle Baukasten-Dinge für die Distribution an die Server (Konfigurationen und Client-Build)
dh_heyart
vor 8 Std. b34327e4f293210d02e2598f7842f3720f59f961
client/vendor/wui.chunk.js
@@ -8,5 +8,4 @@
<!-- End Google Tag Manager -->
`,I=new class{constructor(){document.addEventListener(`DOMContentLoaded`,async()=>{await this.add()})}async add(){let e=await y.Configuration;if(await x.IsAppReady,e.gtm_setup&&e.gtm_setup.isActive){let t=e.gtm_setup.key,n=document.createElement(`script`);n.innerHTML=F.replace(`{{key}}`,t),document.head.prepend(n)}}async push(e){let t=await y.Configuration;t.gtm_setup&&t.gtm_setup.isActive&&(window.dataLayer=window.dataLayer||[],window.dataLayer.push(e))}},L=new class{isCreated=_();validated=_();currentElement;needValidation=!0;instance=-1;get IsCreated(){return this.isCreated}get Validating(){return this.validated}get needsValidation(){return this.needValidation}constructor(){window.onReCaptchaLoaded=()=>{this.IsCreated.resolve()},window.onReCaptchaSolved=async e=>{await this.checkReCaptcha(e)}}async checkReCaptchaRequest(e){try{let t=await v.post(v.setQuery(`/re-captcha/check`),JSON.stringify({token:e}));return t.ok?(await t.json()).ok:(console.error(`Unable to check Re Captcha`),!1)}catch(e){return console.error(`Unable to check Re Captcha`),console.error(e),!1}}async checkReCaptcha(e){await this.checkReCaptchaRequest(e)&&(this.validated.resolve([!0]),this.needValidation=!1)}createCaptcha(e){if(!window.g_reCaptcha){this.validated.resolve([!0]),this.needValidation=!1;return}if(e){this.currentElement=document.createElement(`div`),this.currentElement.classList.add(`g-recaptcha`),this.currentElement.setAttribute(`data-sitekey`,window.g_reCaptcha),this.currentElement.setAttribute(`data-callback`,`onReCaptchaSolved`);let t=document.createElement(`script`);t.setAttribute(`src`,`https://www.google.com/recaptcha/api.js?onload=onReCaptchaLoaded&render=explicit`),t.setAttribute(`async`,``),t.setAttribute(`defer`,``),e.appendChild(this.currentElement),e.appendChild(t)}}async validate(){await this.isCreated,this.currentElement&&requestAnimationFrame(()=>{this.instance>-1?window.grecaptcha.reset(this.instance):this.instance=window.grecaptcha.render(this.currentElement,{sitekey:window.g_reCaptcha})})}},R=class{_mutationObserver=new MutationObserver(e=>{this.observation(e)});_observees=[];_callbacks=new Map;_attributes=[];constructor(e){this._attributes=e}addNode(e){(e.nodeType==Node.DOCUMENT_NODE||e.nodeType==Node.DOCUMENT_FRAGMENT_NODE)&&this._register(e);let t=e.shadowRoot;t&&this._register(t)}unregisterCallback(e){return this._callbacks.delete(e)}runCallback(e,t){let n=this._callbacks.get(e);n&&n(...t)}checkLocalesAttribute(e){for(let t of this.Attributes)if(e.includes(t))return t;return``}observation(e){let t=[];e.forEach(e=>{t.includes(e)||t.push(e)});for(let e of t){if(e.attributeName){let t=this.checkLocalesAttribute(e.attributeName);t.length>0&&this.runCallback(`NodeObserved`,[e.target,t,e.attributeName])}e.addedNodes&&e.addedNodes.forEach(e=>{this.runCallback(`NodeAdded`,[e])})}this.CleanUpNodes()}_register(e){this.Observees.includes(e)||(this.Observees.push(e),this.Observer.observe(e,this.ObserverInit),this.runCallback(`NodeRegistered`,[e]))}removeNode(e){let t=this.Observees.indexOf(e);t>-1&&this.Observees.splice(t,1)}CleanUpNodes(){let e=[];for(let t of this.Observees)t.isConnected||e.push(t);if(e.length>0){for(let t of e)this.removeNode(t);this.Observer.disconnect();for(let e of this.Observees)this.Observer.observe(e,this.ObserverInit)}}registerCallback(e,t){this._callbacks.set(e,t)}get Attributes(){return this._attributes}get Observees(){return this._observees}get ObserverInit(){return{attributes:!0,childList:!0,subtree:!0}}get Observer(){return this._mutationObserver}},z=class{constructor(e,t=`de`){this.storageKey=e,this.defaultLangCode=t,this.activeLangCode=this._loadLanguage()}activeLangCode;defaultLangCode;_loadLanguage(){try{let e=new URL(window.location.href).searchParams.get(`lang`);if(e)return this._saveLanguage(e),e}catch{}let e=localStorage.getItem(this.storageKey);if(e)return e;if(navigator.language){let e=navigator.language.split(`-`)[0];return this._saveLanguage(e),e}return this._saveLanguage(this.defaultLangCode),this.defaultLangCode}_saveLanguage(e){localStorage.setItem(this.storageKey,e)}getLanguage(){return this.activeLangCode}setLanguage(e){return this.activeLangCode=e,this._saveLanguage(e),this.activeLangCode}},B=class{constructor(e,t=!1,n=``){this.path=e,this.activeLangCode=n,this.isRead=!1,this._mobile=t}_readDefer;_loadingDefer=_();_isRead=!1;_mobile=!1;_keys=[];_file={};_external={};_override={};_requestService;_utilityService;setServices(e,t){this._requestService=e,this._utilityService=t}set isRead(e){e?this._readDefer&&(this._readDefer.resolve([!0]),this._loadingDefer.resolve([!0])):this._readDefer=_(),this._isRead=e}get isRead(){return this._isRead}async IsFileRead(){return await this._readDefer,this.isRead}async ReadFile(){this.isRead=!1,this.read(this.language)}get mobile(){return this._mobile}get language(){return this.activeLangCode.length>0?this.activeLangCode:new URL(window.location.href).searchParams.get(`lang`)||`de`}get file(){return this._file}get keys(){return this._keys}async AddOverrides(e){await this._loadingDefer;let t=Object.keys(this._external);Object.entries(e).forEach(([e,n])=>{typeof n==`string`?t.forEach(t=>{let r=this._override[t]||{};r[e]=n,this._override[t]=r}):Object.entries(n).forEach(([t,n])=>{let r=this._override[e]||{};r[t]=n,this._override[e]=r})}),this.applyExternalsAndOverrides()}async AddLocales(e){if(Object.entries(e).forEach(([e,t])=>{let n=this._external[e]||{};Object.entries(t).forEach(([e,t])=>{n[e]=t}),this._external[e]=n}),await this._loadingDefer,await this.IsFileRead()){this.applyExternalsAndOverrides();return}console.error(`LocalesModel: Tried to Add Locales from Json, but failed, since file could not be read...`)}applyExternalsAndOverrides(){let e=this.language,t=this._external;if(t&&t[e]){let n=Object.keys(t[e]);for(let r of n)this._file[r]=t[e][r]}let n=this._override;if(n&&n[e]){let t=Object.keys(n[e]);for(let r of t)if(this._file[r]){let t=n[e][r];this._file[t]&&(this._file[r]=this._file[t])}}this._keys=Object.keys(this._file)}async read(e=this.language){let t=this.activeLangCode!=e||!this.isRead;return t&&(this._file=await this.getLocaleJson(this.path,e),this.applyExternalsAndOverrides(),this.isRead=!0,this._mobile=this._utilityService.isMobileDevice()),this.activeLangCode=e,{langCode:this.activeLangCode,changed:t}}async getLocaleJson(e,t){let n=e+t+`.json`,r=await this._requestService.buildRequestURL(n);return this._requestService.fetchJSON(r)}},V=new class{_observer;_initialised=!1;_storage;_reader;constructor(){this._observer=new R([`i18n`]),this._storage=new z(this.LocaleStorageKey),this._reader=new B(`locales/`),this._reader.setServices(v,k),this.init()}get LocaleStorageKey(){let e=window.location.href,t=new URLSearchParams(e);return`${t.get(`token`)}_${t.get(`a`)}_${t.get(`b`)}`}updateUrlLangParameter(e){try{let t=new URL(window.location.href);t.searchParams.has(`lang`)&&(t.searchParams.set(`lang`,e),window.history.replaceState({},``,t.toString()))}catch(e){console.error(e)}}async setLanguage(e){this._storage.setLanguage(e);let t=await this._reader.read(e);t.changed&&(this._observer.Observees.forEach(e=>{this.translateAddedElement(e)}),this.updateUrlLangParameter(t.langCode))}getLanguage(){return this.language}async init(){this._initialised||=(this._observer.registerCallback(`NodeObserved`,(e,t,n)=>{this._translateNode(e,t,n)}),this._observer.registerCallback(`NodeAdded`,this.translateAddedElement.bind(this)),this._observer.registerCallback(`NodeRegistered`,this.translateAddedElement.bind(this)),await this.setLanguage(this.language),document.addEventListener(`register-to-locales-observer`,(e=>{this._observer.addNode(e.target)})),this.Register(document),!0)}async _translateNode(e,t,n){await this.IsFileRead();let r=e.getAttribute(`locales-model-no-translation`)||e.textContent,i=e.getAttribute(n)||``;if(n.includes(t+`-`)){let a=n.replace(t+`-`,``);e.setAttribute(a,this.translate(i,r||``));return}n.includes(`mobile-`)==0&&e.hasAttribute(`mobile-`+n)&&this._reader.mobile||(e.textContent=this.translate(i,r||``))}translateAddedElement(e){if(e.getAttributeNames){let t=e.getAttributeNames();for(let n of t)for(let t of this._observer.Attributes)n.includes(t)&&this._translateNode(e,t,n)}e.querySelectorAll&&e.querySelectorAll(`*`).forEach(e=>{let t=e.getAttributeNames();for(let n of t)for(let t of this._observer.Attributes)n.includes(t)&&this._translateNode(e,t,n)})}observation(e){return function(t,n,r){e._translateNode(t,n,r)}}nodeAdded(e){return function(t){e.translateAddedElement(t)}}register(e){return function(t){e.translateAddedElement(t)}}get language(){return this._storage.getLanguage()}async get(e){return await this.IsFileRead(),e&&this.exists(e)?this._reader.file[e]:``}IsFileRead(){return this._reader.IsFileRead()}exists(e){return this._reader.keys.includes(e)}translate(e,t=``){let n=``;return e&&this.exists(e)&&(n=this._reader.file[e]),t&&!n&&(n=this.exists(t)?this._reader.file[t]:t),typeof n!=`string`&&(n=e),n&&=n.replace(`~`,`
`),n}async Register(e){await this.IsFileRead()&&this._observer.addNode(e)}async AddSource(e){return await this._reader.AddLocales(e)}async AddOverrides(e){return await this._reader.AddOverrides(e)}},H=new class{_modal;constructor(){u(`shared:mail-sent`,async e=>{await this.sendConfiguredMail(e)})}validateValue(e,t){switch(e||=``,t){case a.CLOUD_ID:return/^[a-z0-9]{8}$/.test(e);case a.E_MAIL:return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}}setLabel(e){let t=document.createElement(`label`);e?t.textContent=`E-Mail wurde erfolgreich versendet.`:t.textContent=`E-Mail konnte nicht versendet werden.`,this._modal.innerHTML=``,this._modal.appendChild(t),setTimeout(()=>{this._modal.hide()},2e3)}async validateGoogleCaptcha(){L.createCaptcha(this._modal),L.needsValidation&&L.validate(),await L.Validating}async shareByMail(e,t,n){if(this.validateValue(e,a.E_MAIL)&&this.validateValue(n,a.CLOUD_ID)){this._modal.show();try{await this.validateGoogleCaptcha();let r=await A.getShortUrl(window.location.href,n);await v.post(v.setQuery(`/webviewer/share-by-mail`),JSON.stringify({to:e,message:t,url:r})),this.setLabel(!0)}catch{this.setLabel(!1)}}}async sendRequestMail(e){if(this.validateValue(e.email,a.E_MAIL)&&this.validateValue(e.number,a.CLOUD_ID)){this._modal.show();try{await this.validateGoogleCaptcha(),await v.post(v.setQuery(`/webui/sendRequestMail`),JSON.stringify({message:e.message||``,name:e.name||``,surname:e.surname||``,email:e.email||``,phone:e.phone||``,postcode:e.postcode||``,number:e.number||``})),this.setLabel(!0)}catch{this.setLabel(!1)}}}async sendConfiguredMail(e){return await fetch(v.setQuery(`/mail/send-configurated-mail`),{method:`POST`,credentials:`include`,body:JSON.stringify(e)})}sendConfiguredMailByBeacon(e){let t=new Blob([JSON.stringify(e)],{type:`application/json; charset=UTF-8`});navigator.sendBeacon(v.setQuery(`/mail/send-configurated-mail`),t)}};new class{isInitialized;_resetMask;constructor(){u(`shared:configuration-fetched`,e=>{if(window.g_configuration.sessionResetSettings&&window.g_configuration.sessionResetSettings.enabled&&(this._resetMask=document.querySelector(`fv-reset-mask`)||Object.assign(document.createElement(`fv-reset-mask`)),this._resetMask)){let e=document.querySelector(`fv-modal.global-main-modal`)||Object.assign(document.createElement(`fv-modal`),{className:`global-main-modal`});e.append(this._resetMask),document.body.append(e)}})}async startTimer(){this.isInitialized?(await this.isInitialized,this._resetMask?this._resetMask.startTimer():console.warn(`Is not found`)):console.warn(`Is not initialized`)}async stopTimer(){this.isInitialized?(await this.isInitialized,this._resetMask?this._resetMask.stopTimer():console.warn(`Is not found`)):console.warn(`Is not initialized`)}};var U=class{static generateCSSVariables(e){return`:root { ${Object.entries(e.colors).map(([e,t])=>`${e}: ${t.value??t.default};`).join(`
`)} }`}static applyTemplateConfig(e,t,n=!1){let r=()=>{e.dispatchEvent(new CustomEvent(`template-loader-template-config-applied`,{bubbles:!0,detail:{"template-config":t,inverted:n}}))},i=t.value??t.default,a=n?!i:i;switch(t.type){case`string`:e.textContent=String(i);break;case`boolean`:a||e.remove();break;case`option`:case`dynamic-option`:t.attribute&&e.setAttribute(t.attribute,String(i));break;case`attribute`:this.handleAttributeType(e,t,n);break}r()}static handleAttributeType(e,t,n){if(!t.attribute)return;let r=t.value??t.default,i=t[`config-id`],a=t[`!config-id`];i&&typeof window.g_configuration?.[i]==`boolean`?r=window.g_configuration[i]:a&&typeof window.g_configuration?.[a]==`boolean`&&(r=!window.g_configuration[a]);let o=n?!r:r;t.varType===`boolean`?o?e.setAttribute(t.attribute,``):e.removeAttribute(t.attribute):e.setAttribute(t.attribute,String(r))}},W=new class{_loadingScreen;_theme;_initialized=_();_isFinished=_();_themeStyle=document.createElement(`style`);constructor(){this.setupLoadingScreen(),u(`construction:initialize`,()=>this.initialize())}setupLoadingScreen(){this._loadingScreen=document.createElement(`fv-loading`),this._loadingScreen&&(document.body.appendChild(this._loadingScreen),this._loadingScreen.show?.())}get IsInitialized(){return this._initialized}get IsFinished(){return Promise.all([this._initialized,this._isFinished])}async initialize(){try{let e=await v.buildRequestURL(`themeConfig`);this._theme=await v.fetchJSON(e),this._theme&&(this._themeStyle.innerHTML=U.generateCSSVariables(this._theme),document.head.appendChild(this._themeStyle),this._initialized.resolve()),await this.applyThemeToHierarchy(document,!this._theme)}finally{this._loadingScreen?.remove(),this._isFinished.resolve()}}async applyThemeToHierarchy(e,t=!1){let n=e.querySelectorAll(`*`);for(let e of Array.from(n))await this.processElement(e,t),e.shadowRoot&&await this.applyThemeToHierarchy(e.shadowRoot,t)}async processElement(e,t){let n=e.getAttribute(`template-id`),r=e.getAttribute(`config-id`);if(n&&!t&&this._theme){let t=n.startsWith(`!`),r=t?n.substring(1):n,i=this._theme.template[r];i&&(Array.isArray(i)?i:[i]).forEach(n=>U.applyTemplateConfig(e,n,t))}if(r){let t=r.startsWith(`!`),n=t?r.substring(1):r,i=window.g_configuration?.[n];typeof i==`boolean`&&(t?i:!i)&&e.remove()}}},G=new class{constructor(){}async PerformWebCabCommand(e){return(await A.PerformWebCabCommand(e))[0]}async ArrangeEqually(e){let t={webCabCommand:`ArrangeEqually`,webCabParams:{}};return t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleGroup(e){let t={webCabCommand:`ModifySingleGroup`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleSpace(e){let t={webCabCommand:`ModifySingleSpace`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams.InGroupID=e.InGroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUI(e){let t={webCabCommand:`getUI`,webCabParams:{}};return t.webCabParams[`itemManager.preventRun`]=e.preventRuns?`1`:`0`,t.webCabParams[`itemManager.targetIsLastInserted`]=e.lastInserted?`1`:`0`,t.webCabParams[`itemManager.runAllNoOptimizationNoCache`]=e.runAllNotOptimized?`1`:`0`,t.webCabParams[`itemManager.runAllWebCabElements`]=e.runAllWebCabs?`1`:`0`,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUiFromPoConfig(e){let t={webCabCommand:`getUiFromPoConfig`,webCabParams:{}};return t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.UIFromConfig_ForceCorner`]=+!!e.forceCorner,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,await this.PerformWebCabCommand(t)}async ModifyValues(e){let t={webCabCommand:`ModifyValues`,webCabParams:{Modified:{}}};return t.webCabParams.Modified||(t.webCabParams.Modified={}),t.webCabParams.Modified[e.modificationTarget]=e.value,e.preventRuns&&(t.webCabParams[`itemManager.preventRun`]=`1`),t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uiType,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.template&&(t.webCabParams[`itemManager.template`]=e.template),e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}};window.WebCabCommunicationService=G;var K=new class{constructor(){}async GetUIs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUI`,r,!1)}async GetUiFromPoConfig(e,t,n,r,i,a){let o={Manufacturer:e,Program:t,Article:n,ConfigSuffix:r,CustomerType:i,ForceCorner:+!!a};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUiFromPoConfig`,o,!1)}async ArrangeEqually(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,GroupIDs:t,ConfigSuffix:n||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ArrangeEqually`,i,!0)}async ModifyValues(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyValues`,i,!0)}async BulkModifyValues(e,t,n){let r={CustomerType:e,ConfigSuffix:n||``,BulkModifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_BulkModifyValues`,r,!0)}async ModifyGroups(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyGroups`,i,!0)}async ModifySpaces(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifySpaces`,i,!0)}async ModifyZSplitting(e,t,n,r){var i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyZSplitting`,i,!0)}async EnableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_EnableWebCabs`,r,!0)}async DisableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_DisableWebCabs`,r,!0)}async SetDisableDimensionVisuals(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,Value:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_SetDisableDimensionVisuals`,i,!0)}async GetDisableDimensionVisuals(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``},i=await A.executeWebCabApiMessage(`APIMessage_WebCab_GetDisableDimensionVisuals`,r,!1);if(i[`disabled-in-scene`])return!0;if(i.webcabs){for(let e=0;e<i.webcabs.length;++e)if(i.webcabs[e])return!0}return!1}async GetPlanned(e){let t=[],n=await A.getPlannedArticles();for(let r of n)if(r.keys.includes(10017)||r.keys.includes(10019)){if(e!=null){e.includes(r.typeInfo)&&t.push(r);continue}t.push(r)}return t}},q=function(e){let t=e.split(`,`).map(e=>+e),n=t[0]/255,r=t[1]/255,i=t[2]/255,a=Math.max(n,r,i),o=a-Math.min(n,r,i),s,c;return s=o===0?0:a===n?60*((r-i)/o%6):a===r?60*((i-n)/o+2):60*((n-r)/o+4),s<0&&(s+=360),c=a===0?0:o/a,[s,c,a]};new class{sortColor(e){let t=e.map(function(e){let t=q(e.code);return[t[0],t[1],t[2],e]}),n=[];for(let e=0;e<=360;e++){n.push([]);for(let t=0;t<=100;t++){n[e].push([]);for(let r=0;r<=100;r++)n[e][t].push([])}}t.forEach(e=>{let t=Math.round(e[0]),r=Math.round(e[1]*100),i=Math.round(e[2]*100);n[t][r][i].push(e[3])});let r=[];for(let e=0;e<=360;e++)for(let t=0;t<=100;t++)for(let i=0;i<=100;i++)r.push(n[e][t][i]);return r}async getRal(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ral`})).then(e=>e)}async getNCS(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ncs`})).then(e=>e)}async getSikkens(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`sikkens`})).then(e=>e)}};var J=new class{async get(e){return A.getPropTransfer(e)}async getDeletable(){return A?.getDeletablePropTransfer()}async traverse(e,t={}){let n=await this.get(t);t.grouped?t.manufacturer?t.manufacturer&&!t.program?await this.programCallback(e,n,t):t.manufacturer&&t.program&&await this.groupCallback(e,n,t):await this.manufacturerCallback(e,n,t):await this.itemCallback(e,n)}async manufacturerCallback(e,t,n){let r=t,i=r?Object.keys(r):[];for(let t of i)e.manufacturerCallback&&await e.manufacturerCallback(t,r[t]),await this.programCallback(e,r[t],Object.assign(n,{manufacturer:t}))}async programCallback(e,t,n){if(n.manufacturer){let r=t,i=Object.keys(r);for(let t of i)e.programCallback&&n.manufacturer&&await e.programCallback(n.manufacturer,t,r[t]),await this.groupCallback(e,r[t],Object.assign(n,{program:t}))}}async groupCallback(e,t,n){if(n.manufacturer&&n.program){let r=t,i=Object.keys(r);for(let t of i)e.groupCallback&&n.manufacturer&&n.program&&await e.groupCallback(n.manufacturer,n.program,t,r[t]),await this.itemCallback(e,r[t])}}async itemCallback(e,t){for(let n of t)e.itemsCallback&&await e.itemsCallback(n)}},Y=class{_cachedManufacturerList;_cachedGroupInformation={};_cachedFinishParams={};async getGroupInformation(e,t){return A?.getMerkmalGroupInformation({manufacturer:e,program:t})}async getFinishParams(e,t,n,r=!1){return r||!this._cachedFinishParams[e]||!this._cachedFinishParams[e][t]||!this._cachedFinishParams[e][t][n||`unknown`]?A?.getFinishParams({manufacturer:e,program:t,association:n}).then(r=>(this._cachedFinishParams[e]||(this._cachedFinishParams[e]={}),this._cachedFinishParams[e][t]||(this._cachedFinishParams[e][t]={}),n&&!this._cachedFinishParams[e][t][n]?this._cachedFinishParams[e][t][n]={}:!n&&!this._cachedFinishParams[e][t].unknown&&(this._cachedFinishParams[e][t].unknown={}),this._cachedFinishParams[e][t][n||`unknown`]=r,this._cachedFinishParams[e][t][n||`unknown`])):Promise.resolve(this._cachedFinishParams[e][t][n||`unknown`])}async _traverse(e,t,n=!1,r){let i=Object.values(t.children);for(let t=0;t<i.length;t++){let a=i[t];e.manufacturerCallback?.(a);let o=Object.values(a.children);for(let t=0;t<o.length;t++){let i=o[t],s=await this.getFinishParams(a.manufacturerName,i.programName);e.programCallback?.(a,i);let c=await this._getGroupInformation(e,a,i,n);c=this.mergeGroupInformation(c);let l=i.propertyKeyOrder||Object.keys(i.children);for(let t=0;t<l.length;t++){let n=l[t],o=i.children[n],s=Object.values(o.children),u=[],d=r?.propertyFilters?.[o.id];if(d){let e=d.filter.itemGroups;if(!(e.length===1&&e[0].filter.length===0)){for(let t of e)for(let e of t.items){let t=s.find(t=>t.key===e);t&&u.push(t)}s=u}}let f;if((s.length>1||s.length===1&&s[0].key.toLowerCase().startsWith(`[dh_ausf`))&&(f=s.find(e=>e.propertyKey===o.currentValue)),e.propertyCallback?.(a,i,o,s,f),c&&e.propertyGroupedCallback){let e=!1;for(let t=0;t<c.length;t++){for(let n of c[t].keys)if(n.key===+o.id){n.progPropertyModel=o,n.progPropertyValueList=s,n.currentValue=f,e=!0;break}if(e)break}}}if(c&&e.propertyGroupedCallback)for(let t=0;t<c.length;t++){let n=c[t];for(let e of l)n.keys.sort((t,n)=>e.endsWith(t.key.toString())?1:e.endsWith(n.key.toString())?-1:0);if(!n?.title){for(let t of n.keys){let r={keys:[t],title:t.progPropertyModel?.name||``,img:n.img,id:n.id};if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:r,finishParams:s}).then(()=>!0).catch(e=>!1))return!1}continue}if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:c[t],finishParams:s}).then(()=>!0).catch(e=>!1))return!1}}}return!0}async _getGroupInformation(e,t,n,r=!1){let i=e.propertyGroupedCallback?this._cachedGroupInformation&&r&&this._cachedGroupInformation[t.manufacturerName]&&this._cachedGroupInformation[t.manufacturerName][n.programName]?this._cachedGroupInformation[t.manufacturerName][n.programName]:await this.getGroupInformation(t.manufacturerName,n.programName):void 0;return i&&(i=await this._fetchImages(i,t,n),this._cachedGroupInformation[t.manufacturerName]||(this._cachedGroupInformation[t.manufacturerName]={}),r&&(this._cachedGroupInformation[t.manufacturerName][n.programName]=i)),i}async _fetchImages(e,t,n){return await Promise.all(e.map(async e=>Object.assign(e,{imgSrc:e.img?await A.getMediaUrl(t.manufacturerName,``,`groups`,e.img,!0,!1):void 0})))}mergeGroupInformation(e){if(!e)return;let t={};return e.forEach(e=>{let n=Object.keys(t).find(t=>e.id.startsWith(t))||e.id;t[n]||(t[n]=Object.assign(e,{id:n,title:e.title,img:e.img})),t[n].keys=Array.from(new Map([...t[n].keys||[],...e.keys||[]].map(e=>[e.key,e])).values())}),Object.values(t)}},X=new class extends Y{async get(e){return A.getProgProperties(e)}async findMany(e,t,n,r=!1){let i={};return await this.traverse({propertyCallback:(r,a,o,s,c)=>{n?.indexOf(o.key)!==-1&&r.manufacturerName===e&&a.programName===t&&(i[o.key]=Object.assign(r,a,o,{currentValue:c}))}}),i}async findOne(e,t,n,r=!1){let i;return await this.traverse({propertyCallback:(r,a,o)=>{o.key===n&&r.manufacturerName===e&&a.programName===t&&(i=Object.assign(r,a,o))}}),i}async find(e,t,n,r,i,a){return A?.getProgProperties({manufacturer:e,program:t,useSelection:n,useRelevant:r,fullHierarchy:i,instanceIdents:a})}async findAll(e,t,n){return await this.find(void 0,void 0,e,t,!0,n)}async traverse(e,t){t||={useSelection:!0,useRelevant:!0,fullHierarchy:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n,t)}},Z=new class extends Y{async initialize(e){return A.initializePropertyContext(e)}async get(e){return A.getPropertyContext(e)}async dispose(e){return A.disposePropertyContext(e)}async findMany(e,t,n,r){let i={};return await this.traverse({propertyCallback:(e,a,o,s,c)=>{r?.indexOf(o.key)!==-1&&e.manufacturerName===t&&a.programName===n&&(i[o.key]=Object.assign(e,a,o,{currentValue:c}))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),i}async findOne(e,t,n){let r;return await this.traverse({propertyCallback:(i,a,o)=>{o.key===n&&i.manufacturerName===e&&a.programName===t&&(r=Object.assign(i,a,o))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),r}async findAll(e,t,n,r){return await this.get({manufacturer:void 0,program:void 0,useSelection:e,useRelevant:t,instanceIdents:n,filterStrategy:r})}async traverse(e,t){t||={useRelevant:!0,useSelection:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n)}},Q=new class{_configuration;isInitialized;preventLeaveConfirmation=!1;constructor(){document.addEventListener(`readystatechange`,async()=>{await y.Initialized;let e=await v.fetchJSON(await v.buildRequestURL(`config/layout.json`)),t=await v.fetchJSON(await v.buildRequestURL(`config/styles.json`));await this.initialize(e,t)}),window.addEventListener(`beforeunload`,e=>{!this.preventLeaveConfirmation&&window.g_configuration?.request_leave_confirmation&&(e.preventDefault(),e.returnValue=``)})}get IsInitialized(){return this.isInitialized}get PreventLeaveConfirmation(){return this.preventLeaveConfirmation}set PreventLeaveConfirmation(e){this.preventLeaveConfirmation=e}get CustomMailService(){return this._configuration?.customMailService}async getLocales(){if(await this.IsInitialized,this._configuration)return this._configuration.locales}async TranslatePageTitle(e){if(e.locales){await V.AddSource(e.locales);let t=V.translate(`furnview-app-title`,document.title);document.title=t,document.querySelector(`title`)?.addEventListener(`template-loader-template-config-applied`,e=>{e.detail[`template-config`].value.length<1&&(document.title=V.translate(`furnview-app-title`,t))})}e[`locale-overrides`]&&await V.AddOverrides(e[`locale-overrides`])}SetDocumentLanguageCode(){let e=V.getLanguage();document&&document.documentElement&&(document.documentElement.lang=e)}loadChildren(e,t){if(e.children){let n=[];for(let r of e.children){let i=this.loadComponent(r);t[e.prepend?`prepend`:`append`](i),n.push(i)}t.dispatchEvent(new CustomEvent(`construction-service-children-loaded`,{detail:{children:n}}))}}async loadStylesheets(e,t){if(!e.customCSS)return;let n=Array.isArray(e.customCSS)?e.customCSS:[e.customCSS],r=Promise.resolve();!t.shadowRoot&&(r=t.getUpdateComplete)!==void 0&&await r;let i=t.shadowRoot;if(i)try{let e=n.map(e=>{let t=new CSSStyleSheet;return t.replaceSync(e),t});i.adoptedStyleSheets=[...i.adoptedStyleSheets,...e]}catch{n.forEach(e=>{let t=document.createElement(`style`);t.textContent=e,i.appendChild(t)})}else n.forEach((n,r)=>{let i=`${e.tag||e?.query||t.tagName.toLowerCase()}-${r}`;if(t.querySelector(`style[data-css-module="${i}"]`))return;let a=document.createElement(`style`);a.setAttribute(`data-css-module`,i),a.textContent=n,t===document.body?document.head.appendChild(a):t.prepend(a)})}loadStyleVars(e,t){e.styleVars&&(Object.keys(e.styleVars).forEach(n=>{n.startsWith(`--`)&&t.style.setProperty(n,e.styleVars?.[n])}),t.requestUpdate&&t.requestUpdate())}loadEvents(e,t){e.events&&Array.isArray(e.events)&&e.events.forEach(e=>{e.id&&t.addEventListener(e.defaultEvent||`click`,async t=>{let n=e.data;t instanceof CustomEvent&&(n=JSON.stringify(n).replace(`!$value`,t.detail.value),n=JSON.parse(n)),await g.emitAsync(e.id,{data:n||{},target:e.target||void 0})})})}loadSceneEvents(e){let t=e[`scene-events`];if(t)for(let e of Object.keys(t)){let n=t[e],r=n.events,i=n[`execute-async`]==null?!1:n[`execute-async`],a=n[`throttling-timeout`],o=P[e];if(!o||typeof o.register!=`function`){console.warn(`scene-events: unbekanntes EventFactoryService-Event "${e}"`);continue}let s=async()=>{for(let e of r)i?g.emitAsync(e.id,{data:e.data||{},target:void 0}):await g.emitAsync(e.id,{data:e.data||{},target:void 0})},c=a===void 0?s:f(s,p(a.baseline,a.min,a.max,a.modifier));o.register(c)}}loadProperties(e,t){let n=e=>{typeof e.value==`boolean`&&e.attribute&&e.value?t.setAttribute(e.key,``):typeof e.value==`boolean`&&e.attribute&&!e.value?t.removeAttribute(e.key,``):typeof e.value==`object`&&e.attribute?t.setAttribute(e.key,JSON.stringify(e.value)):e.attribute?t.setAttribute(e.key,e.value):t[e.key]=e.value};if(e.properties&&t)for(let t of e.properties){let e=t.readyValue;e&&x.IsAppReady.then(()=>{n(Object.assign(t,{value:e.value}))}),n(t)}}loadClasses(e,t){e.classes&&t&&t.classList.add(...e.classes)}loadComponent(e){let t=document.createElement(e.tag);return this.loadClasses(e,t),this.loadProperties(e,t),this.loadStyleVars(e,t),this.loadStylesheets(e,t),this.loadEvents(e,t),t}async loadModule(e,t){let n=this.loadComponent(e);if(t[e.prepend?`prepend`:`append`](n),e.execute&&n&&Object.values(e.execute).forEach(e=>{n[e.name].apply(e.arguments?e.arguments:[])}),n==null||n.getUpdateComplete==null){console.error(`component: [`+e.tag+`] could not be loaded!`);return}if(await n.getUpdateComplete(),e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadChildren(e,n)}async loadArea(e,t){let n=null;e.queryAll?(n=t.querySelectorAll(e.query),(!n||n.length===0)&&t.shadowRoot&&(n=t?.shadowRoot?.querySelectorAll(e.query))):e.query?(n=t.querySelector(e.query),!n&&t.shadowRoot&&(n=t?.shadowRoot?.querySelector(e.query))):n=t,n||console.warn(`loadArea failed to find target!`);let r=async(e,t,n)=>{if(n){if(e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadProperties(e,n),this.loadStyleVars(e,n),this.loadStylesheets(e,n),this.loadEvents(e,n),this.loadClasses(e,n)}};if(n&&n instanceof NodeList&&n.length)for(let i=0;i<n.length;i++)await r(e,t,n[i]);else await r(e,t,n);n&&n.dispatchEvent&&n.dispatchEvent(new CustomEvent(`area-updated`,{detail:{}}))}async initialize(e,t){if(!document.body.classList.contains(`construction-container`))return;document.body.classList.contains(`initialHide`)&&(document.body.classList.remove(`initialHide`),document.body.classList.add(`hidden`));let n=e;if(n?.mergeErrors)for(let e of n.mergeErrors)console.error(e[`pre-text`],e[`overwriting-object`],e[`post-text`]);console.log(`layout json:`,n);let r=JSON.stringify(n);if(r=r.replace(/webui\//g,`webui-content/${new URL(window.location.href).searchParams.get(`token`)}/`),r=r.replace(/:token\//g,`${new URL(window.location.href).searchParams.get(`token`)}/`),n=JSON.parse(r),this._configuration=n,n&&this.loadSceneEvents(n),t)for(let e of t?.styles||[]){let t=document.createElement(`style`);t.appendChild(document.createTextNode(e)),document.head.appendChild(t)}n&&t&&(await this.TranslatePageTitle(n),await this.loadArea(n,document),x.FurnviewWebViewer||x.initialize(void 0),this.SetDocumentLanguageCode(),document.body.classList.remove(`hidden`),l.emit(`construction:initialize`))}};export{k as _,N as a,g as c,H as d,Z as f,W as g,v as h,j as i,I as l,J as m,A as n,P as o,X as p,y as r,h as s,Q as t,V as u,K as v,x as y};
//# sourceMappingURL=wui.chunk.js.map
`)} }`}static applyTemplateConfig(e,t,n=!1){let r=()=>{e.dispatchEvent(new CustomEvent(`template-loader-template-config-applied`,{bubbles:!0,detail:{"template-config":t,inverted:n}}))},i=t.value??t.default,a=n?!i:i;switch(t.type){case`string`:e.textContent=String(i);break;case`boolean`:a||e.remove();break;case`option`:case`dynamic-option`:t.attribute&&e.setAttribute(t.attribute,String(i));break;case`attribute`:this.handleAttributeType(e,t,n);break}r()}static handleAttributeType(e,t,n){if(!t.attribute)return;let r=t.value??t.default,i=t[`config-id`],a=t[`!config-id`];i&&typeof window.g_configuration?.[i]==`boolean`?r=window.g_configuration[i]:a&&typeof window.g_configuration?.[a]==`boolean`&&(r=!window.g_configuration[a]);let o=n?!r:r;t.varType===`boolean`?o?e.setAttribute(t.attribute,``):e.removeAttribute(t.attribute):e.setAttribute(t.attribute,String(r))}},W=new class{_loadingScreen;_theme;_initialized=_();_isFinished=_();_themeStyle=document.createElement(`style`);constructor(){this.setupLoadingScreen(),u(`construction:initialize`,()=>this.initialize())}setupLoadingScreen(){this._loadingScreen=document.createElement(`fv-loading`),this._loadingScreen&&(document.body.appendChild(this._loadingScreen),this._loadingScreen.show?.())}get IsInitialized(){return this._initialized}get IsFinished(){return Promise.all([this._initialized,this._isFinished])}async initialize(){try{let e=await v.buildRequestURL(`themeConfig`);this._theme=await v.fetchJSON(e),this._theme&&(this._themeStyle.innerHTML=U.generateCSSVariables(this._theme),document.head.appendChild(this._themeStyle),this._initialized.resolve()),await this.applyThemeToHierarchy(document,!this._theme)}finally{this._loadingScreen?.remove(),this._isFinished.resolve()}}async applyThemeToHierarchy(e,t=!1){let n=e.querySelectorAll(`*`);for(let e of Array.from(n))await this.processElement(e,t),e.shadowRoot&&await this.applyThemeToHierarchy(e.shadowRoot,t)}async processElement(e,t){let n=e.getAttribute(`template-id`),r=e.getAttribute(`config-id`);if(n&&!t&&this._theme){let t=n.startsWith(`!`),r=t?n.substring(1):n,i=this._theme.template[r];i&&(Array.isArray(i)?i:[i]).forEach(n=>U.applyTemplateConfig(e,n,t))}if(r){let t=r.startsWith(`!`),n=t?r.substring(1):r,i=window.g_configuration?.[n];typeof i==`boolean`&&(t?i:!i)&&e.remove()}}},G=new class{constructor(){}async PerformWebCabCommand(e){return(await A.PerformWebCabCommand(e))[0]}async ArrangeEqually(e){let t={webCabCommand:`ArrangeEqually`,webCabParams:{}};return t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleGroup(e){let t={webCabCommand:`ModifySingleGroup`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async ModifySingleSpace(e){let t={webCabCommand:`ModifySingleSpace`,webCabParams:{}};return t.webCabParams[e.modificationTarget]=e.value,t.webCabParams.GroupID=e.GroupID,t.webCabParams.InGroupID=e.InGroupID,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.uiType`]=e.uitype,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUI(e){let t={webCabCommand:`getUI`,webCabParams:{}};return t.webCabParams[`itemManager.preventRun`]=e.preventRuns?`1`:`0`,t.webCabParams[`itemManager.targetIsLastInserted`]=e.lastInserted?`1`:`0`,t.webCabParams[`itemManager.runAllNoOptimizationNoCache`]=e.runAllNotOptimized?`1`:`0`,t.webCabParams[`itemManager.runAllWebCabElements`]=e.runAllWebCabs?`1`:`0`,t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}async getUiFromPoConfig(e){let t={webCabCommand:`getUiFromPoConfig`,webCabParams:{}};return t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.uiType`]=e.uitype,e.template&&(t.webCabParams[`itemManager.template`]=e.template),t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.UIFromConfig_ForceCorner`]=+!!e.forceCorner,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,await this.PerformWebCabCommand(t)}async ModifyValues(e){let t={webCabCommand:`ModifyValues`,webCabParams:{Modified:{}}};return t.webCabParams.Modified||(t.webCabParams.Modified={}),t.webCabParams.Modified[e.modificationTarget]=e.value,e.preventRuns&&(t.webCabParams[`itemManager.preventRun`]=`1`),t.webCabParams[`itemManager.TargetType`]=e.articlenumber,t.webCabParams[`itemManager.manufacturer`]=e.manufacturer,t.webCabParams[`itemManager.program`]=e.program,t.webCabParams[`itemManager.customerType`]=e.customerType?e.customerType:``,t.webCabParams[`itemManager.uiType`]=e.uiType,t.webCabParams[`itemManager.configSuffix`]=e.configSuffix,e.template&&(t.webCabParams[`itemManager.template`]=e.template),e.targetInstanceIdent&&(t.webCabParams[`itemManager.InstanceIdent`]=e.targetInstanceIdent.toFixed(0)),await this.PerformWebCabCommand(t)}};window.WebCabCommunicationService=G;var K=new class{constructor(){}async GetUIs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUI`,r,!1)}async GetUiFromPoConfig(e,t,n,r,i,a){let o={Manufacturer:e,Program:t,Article:n,ConfigSuffix:r,CustomerType:i,ForceCorner:+!!a};return await A.executeWebCabApiMessage(`APIMessage_WebCab_GetUiFromPoConfig`,o,!1)}async ArrangeEqually(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,GroupIDs:t,ConfigSuffix:n||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ArrangeEqually`,i,!0)}async ModifyValues(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyValues`,i,!0)}async BulkModifyValues(e,t,n){let r={CustomerType:e,ConfigSuffix:n||``,BulkModifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_BulkModifyValues`,r,!0)}async ModifyGroups(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyGroups`,i,!0)}async ModifySpaces(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifySpaces`,i,!0)}async ModifyZSplitting(e,t,n,r){var i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,modifications:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_ModifyZSplitting`,i,!0)}async EnableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_EnableWebCabs`,r,!0)}async DisableWebCabs(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``};return await A.executeWebCabApiMessage(`APIMessage_WebCab_DisableWebCabs`,r,!0)}async SetDisableDimensionVisuals(e,t,n,r){let i={InstanceIdentFilter:r||[],CustomerType:e,ConfigSuffix:n||``,Value:t};return await A.executeWebCabApiMessage(`APIMessage_WebCab_SetDisableDimensionVisuals`,i,!0)}async GetDisableDimensionVisuals(e,t,n){let r={InstanceIdentFilter:n||[],CustomerType:e,ConfigSuffix:t||``},i=await A.executeWebCabApiMessage(`APIMessage_WebCab_GetDisableDimensionVisuals`,r,!1);if(i[`disabled-in-scene`])return!0;if(i.webcabs){for(let e=0;e<i.webcabs.length;++e)if(i.webcabs[e])return!0}return!1}async GetPlanned(e){let t=[],n=await A.getPlannedArticles();for(let r of n)if(r.keys.includes(10017)||r.keys.includes(10019)){if(e!=null){e.includes(r.typeInfo)&&t.push(r);continue}t.push(r)}return t}},q=function(e){let t=e.split(`,`).map(e=>+e),n=t[0]/255,r=t[1]/255,i=t[2]/255,a=Math.max(n,r,i),o=a-Math.min(n,r,i),s,c;return s=o===0?0:a===n?60*((r-i)/o%6):a===r?60*((i-n)/o+2):60*((n-r)/o+4),s<0&&(s+=360),c=a===0?0:o/a,[s,c,a]};new class{sortColor(e){let t=e.map(function(e){let t=q(e.code);return[t[0],t[1],t[2],e]}),n=[];for(let e=0;e<=360;e++){n.push([]);for(let t=0;t<=100;t++){n[e].push([]);for(let r=0;r<=100;r++)n[e][t].push([])}}t.forEach(e=>{let t=Math.round(e[0]),r=Math.round(e[1]*100),i=Math.round(e[2]*100);n[t][r][i].push(e[3])});let r=[];for(let e=0;e<=360;e++)for(let t=0;t<=100;t++)for(let i=0;i<=100;i++)r.push(n[e][t][i]);return r}async getRal(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ral`})).then(e=>e)}async getNCS(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`ncs`})).then(e=>e)}async getSikkens(e){return e||={},await(A?.getColorPickerInfo({manufacturer:e.manufacturer,type:`sikkens`})).then(e=>e)}};var J=new class{async get(e){return A.getPropTransfer(e)}async getDeletable(){return A?.getDeletablePropTransfer()}async traverse(e,t={}){let n=await this.get(t);t.grouped?t.manufacturer?t.manufacturer&&!t.program?await this.programCallback(e,n,t):t.manufacturer&&t.program&&await this.groupCallback(e,n,t):await this.manufacturerCallback(e,n,t):await this.itemCallback(e,n)}async manufacturerCallback(e,t,n){let r=t,i=r?Object.keys(r):[];for(let t of i)e.manufacturerCallback&&await e.manufacturerCallback(t,r[t]),await this.programCallback(e,r[t],Object.assign(n,{manufacturer:t}))}async programCallback(e,t,n){if(n.manufacturer){let r=t,i=Object.keys(r);for(let t of i)e.programCallback&&n.manufacturer&&await e.programCallback(n.manufacturer,t,r[t]),await this.groupCallback(e,r[t],Object.assign(n,{program:t}))}}async groupCallback(e,t,n){if(n.manufacturer&&n.program){let r=t,i=Object.keys(r);for(let t of i)e.groupCallback&&n.manufacturer&&n.program&&await e.groupCallback(n.manufacturer,n.program,t,r[t]),await this.itemCallback(e,r[t])}}async itemCallback(e,t){for(let n of t)e.itemsCallback&&await e.itemsCallback(n)}},Y=class{_cachedManufacturerList;_cachedGroupInformation={};_cachedFinishParams={};async getGroupInformation(e,t){return A?.getMerkmalGroupInformation({manufacturer:e,program:t})}async getFinishParams(e,t,n,r=!1){return r||!this._cachedFinishParams[e]||!this._cachedFinishParams[e][t]||!this._cachedFinishParams[e][t][n||`unknown`]?A?.getFinishParams({manufacturer:e,program:t,association:n}).then(r=>(this._cachedFinishParams[e]||(this._cachedFinishParams[e]={}),this._cachedFinishParams[e][t]||(this._cachedFinishParams[e][t]={}),n&&!this._cachedFinishParams[e][t][n]?this._cachedFinishParams[e][t][n]={}:!n&&!this._cachedFinishParams[e][t].unknown&&(this._cachedFinishParams[e][t].unknown={}),this._cachedFinishParams[e][t][n||`unknown`]=r,this._cachedFinishParams[e][t][n||`unknown`])):Promise.resolve(this._cachedFinishParams[e][t][n||`unknown`])}async _traverse(e,t,n=!1,r){let i=Object.values(t.children);for(let t=0;t<i.length;t++){let a=i[t];e.manufacturerCallback?.(a);let o=Object.values(a.children);for(let t=0;t<o.length;t++){let i=o[t],s=await this.getFinishParams(a.manufacturerName,i.programName);e.programCallback?.(a,i);let c=await this._getGroupInformation(e,a,i,n);c=this.mergeGroupInformation(c);let l=i.propertyKeyOrder||Object.keys(i.children);for(let t=0;t<l.length;t++){let n=l[t],o=i.children[n],s=Object.values(o.children),u=[],d=r?.propertyFilters?.[o.id];if(d){let e=d.filter.itemGroups;if(!(e.length===1&&e[0].filter.length===0)){for(let t of e)for(let e of t.items){let t=s.find(t=>t.key===e);t&&u.push(t)}s=u}}let f;if((s.length>1||s.length===1&&s[0].key.toLowerCase().startsWith(`[dh_ausf`))&&(f=s.find(e=>e.propertyKey===o.currentValue)),e.propertyCallback?.(a,i,o,s,f),c&&e.propertyGroupedCallback){let e=!1;for(let t=0;t<c.length;t++){for(let n of c[t].keys)if(n.key===+o.id){n.progPropertyModel=o,n.progPropertyValueList=s,n.currentValue=f,e=!0;break}if(e)break}}}if(c&&e.propertyGroupedCallback)for(let t=0;t<c.length;t++){let n=c[t];for(let e of l)n.keys.sort((t,n)=>e.endsWith(t.key.toString())?1:e.endsWith(n.key.toString())?-1:0);if(!n?.title){for(let t of n.keys){let r={keys:[t],title:t.progPropertyModel?.name||``,img:n.img,id:n.id};if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:r,finishParams:s}).then(()=>!0).catch(e=>!1))return!1}continue}if(!await e.propertyGroupedCallback({manufacturerModel:a,programModel:i,propertyGroup:c[t],finishParams:s}).then(()=>!0).catch(e=>!1))return!1}}}return!0}async _getGroupInformation(e,t,n,r=!1){let i=e.propertyGroupedCallback?this._cachedGroupInformation&&r&&this._cachedGroupInformation[t.manufacturerName]&&this._cachedGroupInformation[t.manufacturerName][n.programName]?this._cachedGroupInformation[t.manufacturerName][n.programName]:await this.getGroupInformation(t.manufacturerName,n.programName):void 0;return i&&(i=await this._fetchImages(i,t,n),this._cachedGroupInformation[t.manufacturerName]||(this._cachedGroupInformation[t.manufacturerName]={}),r&&(this._cachedGroupInformation[t.manufacturerName][n.programName]=i)),i}async _fetchImages(e,t,n){return await Promise.all(e.map(async e=>Object.assign(e,{imgSrc:e.img?await A.getMediaUrl(t.manufacturerName,``,`groups`,e.img,!0,!1):void 0})))}mergeGroupInformation(e){if(!e)return;let t={};return e.forEach(e=>{let n=Object.keys(t).find(t=>e.id.startsWith(t))||e.id;t[n]||(t[n]=Object.assign(e,{id:n,title:e.title,img:e.img})),t[n].keys=Array.from(new Map([...t[n].keys||[],...e.keys||[]].map(e=>[e.key,e])).values())}),Object.values(t)}},X=new class extends Y{async get(e){return A.getProgProperties(e)}async findMany(e,t,n,r=!1){let i={};return await this.traverse({propertyCallback:(r,a,o,s,c)=>{n?.indexOf(o.key)!==-1&&r.manufacturerName===e&&a.programName===t&&(i[o.key]=Object.assign(r,a,o,{currentValue:c}))}}),i}async findOne(e,t,n,r=!1){let i;return await this.traverse({propertyCallback:(r,a,o)=>{o.key===n&&r.manufacturerName===e&&a.programName===t&&(i=Object.assign(r,a,o))}}),i}async find(e,t,n,r,i,a){return A?.getProgProperties({manufacturer:e,program:t,useSelection:n,useRelevant:r,fullHierarchy:i,instanceIdents:a})}async findAll(e,t,n){return await this.find(void 0,void 0,e,t,!0,n)}async traverse(e,t){t||={useSelection:!0,useRelevant:!0,fullHierarchy:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n,t)}},Z=new class extends Y{async initialize(e){return A.initializePropertyContext(e)}async get(e){return A.getPropertyContext(e)}async dispose(e){return A.disposePropertyContext(e)}async findMany(e,t,n,r){let i={};return await this.traverse({propertyCallback:(e,a,o,s,c)=>{r?.indexOf(o.key)!==-1&&e.manufacturerName===t&&a.programName===n&&(i[o.key]=Object.assign(e,a,o,{currentValue:c}))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),i}async findOne(e,t,n){let r;return await this.traverse({propertyCallback:(i,a,o)=>{o.key===n&&i.manufacturerName===e&&a.programName===t&&(r=Object.assign(i,a,o))}},{useRelevant:!0,useSelection:!0,filterStrategy:o.LOCAL}),r}async findAll(e,t,n,r){return await this.get({manufacturer:void 0,program:void 0,useSelection:e,useRelevant:t,instanceIdents:n,filterStrategy:r})}async traverse(e,t){t||={useRelevant:!0,useSelection:!0};let n=!!this._cachedManufacturerList,r=this._cachedManufacturerList||await this.get(t),i=n?r:await this.get(t);return this._cachedManufacturerList=n?i:void 0,!i||!i.children?!1:this._traverse(e,i,n)}},Q=new class{_configuration;isInitialized;preventLeaveConfirmation=!1;constructor(){document.addEventListener(`readystatechange`,async()=>{await y.Initialized;let e=await v.fetchJSON(await v.buildRequestURL(`config/layout.json`));console.log(`configuration to construct:`,e);let t=await v.fetchJSON(await v.buildRequestURL(`config/styles.json`));await this.initialize(e,t)}),window.addEventListener(`beforeunload`,e=>{!this.preventLeaveConfirmation&&window.g_configuration?.request_leave_confirmation&&(e.preventDefault(),e.returnValue=``)})}get IsInitialized(){return this.isInitialized}get PreventLeaveConfirmation(){return this.preventLeaveConfirmation}set PreventLeaveConfirmation(e){this.preventLeaveConfirmation=e}get CustomMailService(){return this._configuration?.customMailService}async getLocales(){if(await this.IsInitialized,this._configuration)return this._configuration.locales}async TranslatePageTitle(e){if(e.locales){await V.AddSource(e.locales);let t=V.translate(`furnview-app-title`,document.title);document.title=t,document.querySelector(`title`)?.addEventListener(`template-loader-template-config-applied`,e=>{e.detail[`template-config`].value.length<1&&(document.title=V.translate(`furnview-app-title`,t))})}e[`locale-overrides`]&&await V.AddOverrides(e[`locale-overrides`])}SetDocumentLanguageCode(){let e=V.getLanguage();document&&document.documentElement&&(document.documentElement.lang=e)}loadChildren(e,t){if(e.children){let n=[];for(let r of e.children){let i=this.loadComponent(r);t[e.prepend?`prepend`:`append`](i),n.push(i)}t.dispatchEvent(new CustomEvent(`construction-service-children-loaded`,{detail:{children:n}}))}}async loadStylesheets(e,t){if(!e.customCSS)return;let n=Array.isArray(e.customCSS)?e.customCSS:[e.customCSS],r=Promise.resolve();!t.shadowRoot&&(r=t.getUpdateComplete)!==void 0&&await r;let i=t.shadowRoot;if(i)try{let e=n.map(e=>{let t=new CSSStyleSheet;return t.replaceSync(e),t});i.adoptedStyleSheets=[...i.adoptedStyleSheets,...e]}catch{n.forEach(e=>{let t=document.createElement(`style`);t.textContent=e,i.appendChild(t)})}else n.forEach((n,r)=>{let i=`${e.tag||e?.query||t.tagName.toLowerCase()}-${r}`;if(t.querySelector(`style[data-css-module="${i}"]`))return;let a=document.createElement(`style`);a.setAttribute(`data-css-module`,i),a.textContent=n,t===document.body?document.head.appendChild(a):t.prepend(a)})}loadStyleVars(e,t){e.styleVars&&(Object.keys(e.styleVars).forEach(n=>{n.startsWith(`--`)&&t.style.setProperty(n,e.styleVars?.[n])}),t.requestUpdate&&t.requestUpdate())}loadEvents(e,t){e.events&&Array.isArray(e.events)&&e.events.forEach(e=>{e.id&&t.addEventListener(e.defaultEvent||`click`,async t=>{let n=e.data;t instanceof CustomEvent&&(n=JSON.stringify(n).replace(`!$value`,t.detail.value),n=JSON.parse(n)),await g.emitAsync(e.id,{data:n||{},target:e.target||void 0})})})}loadSceneEvents(e){let t=e[`scene-events`];if(t)for(let e of Object.keys(t)){let n=t[e],r=n.events,i=n[`execute-async`]==null?!1:n[`execute-async`],a=n[`throttling-timeout`],o=P[e];if(!o||typeof o.register!=`function`){console.warn(`scene-events: unbekanntes EventFactoryService-Event "${e}"`);continue}let s=async()=>{for(let e of r)i?g.emitAsync(e.id,{data:e.data||{},target:void 0}):await g.emitAsync(e.id,{data:e.data||{},target:void 0})},c=a===void 0?s:f(s,p(a.baseline,a.min,a.max,a.modifier));o.register(c)}}loadProperties(e,t){let n=e=>{typeof e.value==`boolean`&&e.attribute&&e.value?t.setAttribute(e.key,``):typeof e.value==`boolean`&&e.attribute&&!e.value?t.removeAttribute(e.key,``):typeof e.value==`object`&&e.attribute?t.setAttribute(e.key,JSON.stringify(e.value)):e.attribute?t.setAttribute(e.key,e.value):t[e.key]=e.value};if(e.properties&&t)for(let t of e.properties){let e=t.readyValue;e&&x.IsAppReady.then(()=>{n(Object.assign(t,{value:e.value}))}),n(t)}}loadClasses(e,t){e.classes&&t&&t.classList.add(...e.classes)}loadComponent(e){let t=document.createElement(e.tag);return this.loadClasses(e,t),this.loadProperties(e,t),this.loadStyleVars(e,t),this.loadStylesheets(e,t),this.loadEvents(e,t),t}async loadModule(e,t){let n=this.loadComponent(e);if(t[e.prepend?`prepend`:`append`](n),e.execute&&n&&Object.values(e.execute).forEach(e=>{n[e.name].apply(e.arguments?e.arguments:[])}),n==null||n.getUpdateComplete==null){console.error(`component: [`+e.tag+`] could not be loaded!`);return}if(await n.getUpdateComplete(),e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadChildren(e,n)}async loadArea(e,t){let n=null;e.queryAll?(n=t.querySelectorAll(e.query),(!n||n.length===0)&&t.shadowRoot&&(n=t?.shadowRoot?.querySelectorAll(e.query))):e.query?(n=t.querySelector(e.query),!n&&t.shadowRoot&&(n=t?.shadowRoot?.querySelector(e.query))):n=t;let r=async(e,t,n)=>{if(n){if(e.modules)for(let t of e.modules)await this.loadModule(t,n);if(e.areas)for(let t of e.areas)await this.loadArea(t,n);this.loadProperties(e,n),this.loadStyleVars(e,n),this.loadStylesheets(e,n),this.loadEvents(e,n),this.loadClasses(e,n)}};if(n&&n instanceof NodeList&&n.length)for(let i=0;i<n.length;i++)await r(e,t,n[i]);else await r(e,t,n);n&&n.dispatchEvent&&n.dispatchEvent(new CustomEvent(`area-updated`,{detail:{}}))}async initialize(e,t){if(!document.body.classList.contains(`construction-container`))return;document.body.classList.contains(`initialHide`)&&(document.body.classList.remove(`initialHide`),document.body.classList.add(`hidden`));let n=e;if(n?.mergeErrors)for(let e of n.mergeErrors)console.error(e[`pre-text`],e[`overwriting-object`],e[`post-text`]);let r=JSON.stringify(n);if(r=r.replace(/webui\//g,`webui-content/${new URL(window.location.href).searchParams.get(`token`)}/`),r=r.replace(/:token\//g,`${new URL(window.location.href).searchParams.get(`token`)}/`),n=JSON.parse(r),this._configuration=n,this.loadSceneEvents(n),t)for(let e of t?.styles||[]){let t=document.createElement(`style`);t.appendChild(document.createTextNode(e)),document.head.appendChild(t)}n&&t&&(await this.TranslatePageTitle(n),await this.loadArea(n,document),x.FurnviewWebViewer||x.initialize(void 0),this.SetDocumentLanguageCode(),document.body.classList.remove(`hidden`),l.emit(`construction:initialize`))}};export{k as _,N as a,g as c,H as d,Z as f,W as g,v as h,j as i,I as l,J as m,A as n,P as o,X as p,y as r,h as s,Q as t,V as u,K as v,x as y};