@roomle/embedding-lib 5.15.0 → 5.16.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/md/web/embedding/CHANGELOG.md +11 -45
- package/{drag-in-C6gLvrDx.mjs → drag-in-D5QSQ86J.mjs} +2 -2
- package/drag-in-DNbVoUkq.mjs +1 -0
- package/{from-custom-view-BEcgFlAL.mjs → from-custom-view-BcXfK7VI.mjs} +1 -1
- package/from-custom-view-BrrXfWzP.mjs +1 -0
- package/{from-website-VCMg3teu.mjs → from-website-B3kPg18n.mjs} +10 -10
- package/from-website-BOvSwnL1.mjs +1 -0
- package/package.json +2 -2
- package/packages/build-tools/src/vite-minify.d.ts +1 -1
- package/roomle-embedding-lib.es.js +14 -14
- package/roomle-embedding-lib.es.min.js +1 -8
- package/roomle-embedding-lib.umd.js +4 -4
- package/roomle-embedding-lib.umd.min.js +1 -17
- package/src/common/components/collection-view/-utils/collection-view-dynamic-components.d.ts +5 -0
- package/src/common/components/collection-view/CollectionViewElement.vue.d.ts +45 -209
- package/src/common/utils/parameters.d.ts +3 -0
- package/src/configurator/components/grid-view/-utils/GridViewElement.vue.d.ts +10 -1
- package/src/configurator/components/grid-view/-utils/GridViewHelper.d.ts +17 -2
- package/src/configurator/components/grid-view/-utils/GridViewMaterialElement.vue.d.ts +1 -2
- package/src/configurator/components/parameters/types/DisabledParameters.vue.d.ts +8 -0
- package/src/configurator/components/utils/WordWrap.vue.d.ts +11 -0
- package/src/configurator/embedding/types.d.ts +3 -1
- package/src/planner/business-logic/sdk-connector-planner.d.ts +0 -1
- package/src/planner/components/overlays/rooms/DoorParametersSetting.vue.d.ts +12 -12
- package/src/planner/components/overlays/rooms/FloorColor.vue.d.ts +12 -12
- package/src/planner/utils/planner-sidebar.d.ts +10 -0
- package/touch-drag-BYVdETHB.mjs +1 -0
- package/drag-in-w_TrusdP.mjs +0 -7
- package/from-custom-view-jmf3K6AT.mjs +0 -1
- package/from-website-Ckh5GB2h.mjs +0 -4
- package/touch-drag-C1SsZtt4.mjs +0 -1
|
@@ -1,17 +1 @@
|
|
|
1
|
-
(function(p,D){typeof exports=="object"&&typeof module<"u"?module.exports=D():typeof define=="function"&&define.amd?define(D):(p=typeof globalThis<"u"?globalThis:p||self,p["roomle-embedding-lib"]=p["roomle-embedding-lib"]||{},p["roomle-embedding-lib"].umd=p["roomle-embedding-lib"].umd||{},p["roomle-embedding-lib"].umd.min=p["roomle-embedding-lib"].umd.min||{},p["roomle-embedding-lib"].umd.min.js=D())})(this,function(){"use strict";var p=Object.defineProperty,D=(i,t,e)=>t in i?p(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,h=(i,t,e)=>D(i,typeof t!="symbol"?t+"":t,e);class ${constructor(t,e,s,n){h(this,"_side"),h(this,"_incomingMessageBus",null),h(this,"_outgoingMessageBus",null),h(this,"_execMessage",null),this._side=t,this._incomingMessageBus=e,this._outgoingMessageBus=s,this._execMessage=n,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(t){this._outgoingMessageBus=t}setMessageExecution(t){this._execMessage=t}sendMessage(t,e=[]){return new Promise((s,n)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return s(void 0);const r=new MessageChannel;r.port1.onmessage=a=>{if(!a||!a.data)return r.port1.close(),r.port2.close(),n(new Error(this._side+" received message but response can not be interpreted"));let c;try{c=JSON.parse(a.data)}catch(l){return r.port1.close(),r.port2.close(),this._prepareError(l),n(l)}c.error?n(c.error):c.result!==void 0?s(c.result):s(void 0),r.port1.close(),r.port2.close()};let o="";try{o=JSON.stringify({message:t,args:e})}catch{return n(new Error(this._side+": can not create command because it is not JSON.stringify able"))}if(!this._outgoingMessageBus)return n(new Error(this._side+": outgoing bus not set yet"));this._outgoingMessageBus.postMessage(o,"*",[r.port2])})}_handleMessage(t){const e=t.ports&&Array.isArray(t.ports)&&t.ports.length>0?t.ports[0]:null;if(t.data&&e)try{const s=JSON.parse(t.data);if(!this._execMessage)return e.postMessage(JSON.stringify({error:this._side+" is not ready to handle messages"}));Array.isArray(s.args)||(s.args=[s.args]);const n=this._execMessage(s,t);if(n===void 0)return;n.then((r={})=>{let o,a;typeof r=="object"&&r!==null&&(o=r.error,a=r.result),o?e.postMessage(JSON.stringify({error:o})):a!==void 0?e.postMessage(JSON.stringify({result:a})):e.postMessage(JSON.stringify({result:r}))},r=>{e.postMessage(JSON.stringify({error:this._prepareError(r)}))})}catch(s){e.postMessage(JSON.stringify({error:this._prepareError(s)}))}}_prepareError(t){if(typeof t=="string"){const e=this._side+": "+t;return console.error(e),e}return t.message=this._side+": "+t.message,console.error(t),t.message}}const C=".",A={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},E={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},yt=async(i,t)=>{if(typeof i!="string")throw new Error('Configurator ID is not a string type: "'+typeof i+'"');const e=t.customApiUrl?t.customApiUrl:"https://api.roomle.com/v2",s=t.overrideTenant||9,n=e+"/configurators/"+i,r="roomle_portal_v2",o="03-"+window.btoa(new Date().toISOString()+";anonymous;"+r),a=()=>{const u={apiKey:r,currentTenant:s,locale:"en",language:"en",device:1,token:o,platform:"web"};return new Headers(u)},c=new Request(n,{method:"GET",headers:a(),mode:"cors",cache:"default"}),l=await fetch(c),{configurator:d}=await l.json();return d},vt=()=>{try{return window.self!==window.top}catch{return!0}},Dt=["127.0.0.1","localhost","0.0.0.0"],bt=()=>{const i=vt();let t=window.location.href;if(i){if(!document.referrer)return null;t=document.referrer}const{hostname:e}=new URL(t);return e},wt=i=>!!(Dt.includes(i)||i.endsWith("roomle.com")||i.endsWith("gitlab.io")||i.endsWith("gitlab.com")),j=["language","browserLanguage","userLanguage","systemLanguage"],Et=(i=null)=>{const t=window.navigator;if(i)return i.substr(0,2);if(Array.isArray(t.languages)&&t.languages.length>0)return t.languages[0].substr(0,2);for(let e=0,s=j.length;e<s;e++){const n=t[j[e]];if(n)return n.substr(0,2)}return"en"},Tt=(i,t)=>{const e=JSON.parse(JSON.stringify(i));return N(e,t)},N=(i,t)=>{for(const e in t)try{t[e].constructor===Object?i[e]=N(i[e],t[e]):i[e]=t[e]}catch{i[e]=t[e]}return i};var z=(i=>(i.BOTTOM_BAR="bottom_bar",i.PARTLIST_BOUNDS="partlist_bounds",i.INTERACTION_NOTES="interaction_notes",i))(z||{}),It={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};const St={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[z.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1,openCloseAnimation:!1,showWallVisibilityToggle:!1},rotationSnapDegrees:10,interactionsCollapsed:!1},Ot="(idle)",xt=i=>(L(i),i!=null&&i.customApiUrl&&(i.customApiUrl=decodeURIComponent(i.customApiUrl)),i.shareUrl&&(i.deeplink=i.shareUrl.replace(At,Nt)),i),L=i=>{if(!i)return;const t=Object.keys(i);for(const e of t){const s=i[e];if(!Array.isArray(s)&&typeof s=="object"&&s!==null&&L(s),Array.isArray(s))for(const n of s)L(n);(s==="true"||s==="false")&&(i[e]=s==="true")}},Mt=(i,t)=>{t.configuratorId=i.id;const e=i.settings||{};return!t.overrideTenant&&i.tenant&&(t.overrideTenant=i.tenant),Tt(e,t)},Ct=()=>{const i={...St};i.locale||(i.locale=Et()),i.id===Ot&&delete i.id;const t=bt();return t&&wt(t)&&(i.configuratorId="demoConfigurator"),i.customApiUrl=It.VITE_RAPI_URL,i.emails=!1,i},At="<CONF_ID>",Nt="#CONFIGURATIONID#",Lt=i=>{i.featureFlags||(i.featureFlags={}),typeof i.featureFlags.realPartList!="boolean"&&(i.featureFlags.realPartList=!0),typeof i.featureFlags.globalCallbacks!="boolean"&&(i.featureFlags.globalCallbacks=!0),typeof i.featureFlags.mocAr!="boolean"&&(i.featureFlags.mocAr=!1)},V=()=>/(android)/i.test(navigator.userAgent);class q{constructor(){h(this,"_messageHandler",null),h(this,"isSetupDone",!1),h(this,"viewName","main"),h(this,"plugins",{}),h(this,"pluginsLoaded",[]),h(this,"ui",{callbacks:null}),h(this,"extended",{callbacks:null}),h(this,"configurator",{callbacks:null}),h(this,"analytics",{callbacks:{}}),h(this,"global",{callbacks:{}})}setMessageHandler(t){this._messageHandler=t}handleSetup(t){const{methods:e,callbacks:s}=t;e.forEach(n=>{const r=n.split(C),o=r[0],a=r[1];this[o]||(this[o]={}),this[o][a]=function(){if(!this._messageHandler){console.error("MessageHandler not set");return}return this._messageHandler.sendMessage(n,[...arguments])}.bind(this)}),s.forEach(n=>{const r=n.split(C),o=r[0],a=r[1],c=r[2];this[o]||(this[o]={}),this[o][a]||(this[o][a]={}),this[o][a][c]=()=>{}}),this.isSetupDone=!0}executeMessage({message:t,args:e}){const s=t.split(C),n=s[0],r=s[1],o=s.length===3?s[2]:null;if(o&&this[n][r][o]){const a=this[n][r][o](...e);return a instanceof Promise?a.then(c=>({result:c})):a!==void 0?Promise.resolve({result:a}):Promise.resolve({result:null})}return Promise.reject('Message "'+t+'" is unkown')}setupPlugins(t,e,s="website"){for(const n of t)typeof n=="string"&&n==="dragIn"?this.pluginsLoaded.push(new Promise((r,o)=>{try{Promise.resolve().then(()=>Ut).then(({DragIn:a})=>{const c=new a(this.ui,e,s,this.viewName);c.init().then(()=>{this.plugins.dragIn=c,r()},o)})}catch(a){o(a)}})):n.name&&n.loader&&this.pluginsLoaded.push(new Promise((r,o)=>{try{n.loader().then(a=>{const c=new a(this.ui,e,s,this.viewName);c.init().then(()=>{this.plugins[n.name]=c,r()},o)})}catch(a){o(a)}}))}}const J=()=>{let i,t;return{promise:new Promise((e,s)=>{i=e,t=s}),resolve:i,reject:t}},K=(i,t,e)=>{let s=null;Object.defineProperty(i,t,{get(){return s||e},set(n){n!=null&&n.mute?s=n.value:(console.warn("You override Roomle defined behaviour. To disalbe this warning pass in an object with the following properties"),console.warn("{ mute: true, value: () => void }"),s=n)}})},Q=()=>window.innerHeight*.01+"px",Z=i=>{i&&setTimeout(()=>i.style.setProperty(R,Q()),0)},tt="rml-styles",Rt=450,R="--rml-full-height",m={CONTAINER:"rml-container",FILL:"rml-fill",POSITION:"rml-pos",TRANSITION:"rml-transition",ANDROID_HEIGHT:"rml-android-height",OVERFLOW_HIDDEN:"rml-overflow-hidden"},P=new Map;class Pt extends q{constructor(t,e,s,n,r){if(super(),h(this,"_waitForIframe"),h(this,"_container"),h(this,"_configuratorSettings"),h(this,"_initData",{}),h(this,"_iframe"),!t||typeof t.id!="string")throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(P.has(e))throw new Error("There is already an instance on this DOM element");if(!document.getElementById(tt)){const c=s.zIndex||9999999,l=document.createElement("style");l.type="text/css",l.id=tt;const d="transition:all ease-in-out "+Rt+"ms;",u=["-webkit-","-o-"].reduce((_,y)=>_+=y+d,"")+d,g=Q();l.innerHTML=`
|
|
2
|
-
.${m.CONTAINER}{${R}:${g};}
|
|
3
|
-
.${m.POSITION}{position:fixed;top:0;left:0;z-index:${c};opacity:0}
|
|
4
|
-
.${m.TRANSITION}{${u}}
|
|
5
|
-
.${m.FILL}{width:100%;height:100%;opacity:1}
|
|
6
|
-
.${m.ANDROID_HEIGHT}{height:calc(var(${R},1vh)*100)}
|
|
7
|
-
.${m.OVERFLOW_HIDDEN}{overflow:hidden}
|
|
8
|
-
`,document.head.appendChild(l)}this._executeMessage=this._executeMessage.bind(this);const o=new $("website",window,null,this._executeMessage);this.setMessageHandler(o),this._onResize=this._onResize.bind(this),V()&&window.addEventListener("resize",this._onResize),this._container=e,this._initData=s,this._configuratorSettings=t;const a=this._createIframe();this._onUseFullPage=this._onUseFullPage.bind(this),this._onBackToWebsite=this._onBackToWebsite.bind(this),this._waitForIframe=r,this._container.appendChild(a),this._iframe=a,this.setupPlugins(n,this._iframe),P.set(e,!0)}static createPlanner(t,e,s,n=[]){return this._create(t,e,s,n)}static async connect(t,e=[]){const s=new q;s.viewName=t;const{resolve:n,promise:r}=J(),{resolve:o,promise:a}=J(),c=({message:u,args:g})=>{switch(u){case E.REGISTER_CUSTOM_VIEW_DONE:n();break;case E.RETURN_METHODS:s.handleSetup(g[0]),o();break;default:if(s.isSetupDone)return s.executeMessage({message:u,args:g})}},l=new $("custom-view-"+t,window,window.parent,c);s.setMessageHandler(l);const d=[t];return l.sendMessage(E.REGISTER_CUSTOM_VIEW,d),await r,l.sendMessage(E.GET_METHODS,d),await a,s.setupPlugins(e,document.body,"custom-view"),await Promise.allSettled(s.pluginsLoaded),s}static createConfigurator(t,e,s,n=[]){return this._create(t,e,s,n)}static create(t,e,s,n){return this._create(t,e,s,n)}static createViewer(t,e,s,n=[]){return this._create(t,e,s,n)}static async _create(t,e,s,n){return new Promise(async(r,o)=>{try{const a=N(Ct(),xt(s));Lt(a);const c=await yt(t,a);s=Mt(c,a);const l=new this(c,e,s,n,r);return await Promise.allSettled(l.pluginsLoaded),l}catch(a){return o(a)}})}teardown(){this._container&&P.delete(this._container);const t=this._container.querySelector("iframe");t&&this._container.removeChild(t),window.removeEventListener("resize",this._onResize)}_createIframe(){var t;const e=document.createElement("iframe");let s=((t=this._configuratorSettings)==null?void 0:t.url)||"https://www.roomle.com/t/cp/";return this._initData.useLocalRoomle&&(s=location.href.replace("embedding.html","")),location.href.includes("roomle.gitlab.io")&&(s=location.href.replace("embedding.html","index.html")),this._initData.overrideServerUrl&&(s=this._initData.overrideServerUrl),e.src=s,e.classList.add(m.CONTAINER),e.classList.add(m.FILL),e}_onResize(){Z(this._iframe)}_onUseFullPage(){this._iframe.classList.add(m.POSITION),document.documentElement.classList.add(m.OVERFLOW_HIDDEN),window.document.body.classList.add(m.OVERFLOW_HIDDEN),V()&&(Z(this._iframe),this._iframe.classList.add(m.ANDROID_HEIGHT))}_onBackToWebsite(){this._iframe.classList.remove(m.POSITION),this._iframe.classList.remove(m.ANDROID_HEIGHT),document.documentElement.classList.remove(m.OVERFLOW_HIDDEN),window.document.body.classList.remove(m.OVERFLOW_HIDDEN)}_executeMessage({message:t,args:e},s){var n;if(s.source&&s.source===((n=this._iframe)==null?void 0:n.contentWindow))return t===A.REQUEST_BOOT?this._messageHandler?(this._messageHandler.setOutgoingMessageBus(s.source),Promise.resolve({result:this._initData})):(console.error("MessageHandler not set"),Promise.resolve({error:"MessageHandler not set"})):t===A.SETUP?(this.handleSetup(e[0]),K(this.ui.callbacks,"onUseFullPage",this._onUseFullPage),K(this.ui.callbacks,"onBackToWebsite",this._onBackToWebsite),this._waitForIframe(this),setTimeout(()=>{if(!this._messageHandler){console.error("MessageHandler not set");return}this._messageHandler.sendMessage(A.WEBSITE_READY)},0),Promise.resolve({result:null})):this.executeMessage({message:t,args:e})}}class Ft{constructor(t,e,s,n){h(this,"_mainDomElement"),h(this,"_instance"),h(this,"_mode","website"),h(this,"_viewName","main"),this._instance=t,this._mainDomElement=e,this._mode=s,this._viewName=n}async init(){return Promise.resolve()}}const T="rml-drag-in-styles",I="rml-drag-in-drag-element",S="rml-drag-in-overlay",O="rml-drag-in-drag-ghost",et="rml-drag-in-fade-in",st="rml-drag-in-fade-out",F={DISPLAY_NONE:"rml-display-none"},it=.5,nt="250ms",rt="forwards",ot=`@keyframes ${et} {from{opacity: 0;}to {opacity: ${it};}}`,at=`@keyframes ${st} {from{opacity: ${it};}to {opacity: 0;}}`,lt=`${et} ${nt} ${rt}`,ht=`${st} ${nt} ${rt}`,x="https://res.cloudinary.com/roomle/image/upload/v1729679975/fallback_afpyqr.jpg",B=112,U=112;class Bt extends Ft{constructor(t,e,s,n){super(t,e,s,n),h(this,"options",{}),h(this,"_customDragSignal",new AbortController),this._mainDomElement=e,this._injectStyles(),this._initializeDragGhost()}_injectStyles(){if(!document.getElementById(T)){const t=document.createElement("style");t.type="text/css",t.id=T,t.innerHTML=`
|
|
9
|
-
.${F.DISPLAY_NONE}{display:none}
|
|
10
|
-
.${S}{position:absolute;top:0;left:0;width:100%;height:100%;z-index:999;}
|
|
11
|
-
.${O}{position:absolute;top:0;left:0;width:1px;height:1px;z-index:999;pointer-events:none;background-color:transparent;}
|
|
12
|
-
${ot}
|
|
13
|
-
${at}
|
|
14
|
-
`,document.head.appendChild(t)}}_initializeDragGhost(){const t=this._mainDomElement.parentNode;let e=t.querySelector("."+O);e||(e=document.createElement("div"),e.classList.add(O),e.innerText=" ",t.appendChild(e))}async init(){if(await super.init(),this._mode==="website")try{const{DragInFromWebsiteStrategy:t}=await Promise.resolve().then(()=>zt);this._strategy=new t(this._instance,this._mainDomElement,{settings:this.options,mode:"website"})}catch(t){throw console.error('Could not load Dragin strategy "FromWebsite"'),t}else if(this._mode==="custom-view")try{const{DragInFromCustomViewStrategy:t}=await Promise.resolve().then(()=>te);this._strategy=new t(this._instance,this.options,this._viewName)}catch(t){throw console.error('Could not load Dragin strategy "FromCustomView"'),t}else throw new Error("Unsupported mode")}get isDragging(){return this._strategy.isDragging}dragStart(t,e,s="rml_id"){this._strategy.dragStart(t,e,s)}dragUpdate(t){this._strategy.dragUpdate(t)}dragEnd(){this._strategy.dragEnd()}touchStart(t,e,s="rml_id"){this._strategy.touchStart(t,e,s)}touchMove(t){this._strategy.touchMove(t)}touchEnd(){this._strategy.touchEnd()}dispose(){this._strategy.dispose()}beforeUpdateGhost(t){this._strategy.beforeUpdateGhost(t)}registerCustomDrag({customDragStart:t,customDragEnd:e,customDragUpdate:s,beforeUpdateGhost:n}){n&&this._strategy.beforeUpdateGhost(n);const r=this._customDragSignal.signal,o=l=>{l.target.getAttribute("data-rml-draggable")==="true"&&t(l)},a=l=>{this._strategy.releaseInput(l),this._strategy.isDragging&&e(l)},c=l=>{s(l)};document.querySelectorAll('[data-rml-draggable="true"]').forEach(l=>{l.draggable=!1}),document.addEventListener("mousedown",o,{signal:r}),document.addEventListener("mouseup",a,{signal:r}),document.addEventListener("mousemove",c,{signal:r}),document.addEventListener("mouseleave",a,{signal:r}),document.addEventListener("touchstart",o,{signal:r}),document.addEventListener("touchend",a,{signal:r}),document.addEventListener("touchmove",c,{signal:r})}unregisterCustomDrag(){this._customDragSignal.abort(),this._customDragSignal=new AbortController}releaseInput(t){this._strategy.releaseInput(t)}}const Ut=Object.freeze(Object.defineProperty({__proto__:null,DragIn:Bt},Symbol.toStringTag,{value:"Module"}));class Ht{constructor(t=16){h(this,"_computedStyleCache",new Map),h(this,"_maxLifetime",16),h(this,"_cacheCleanInterval",null),this._maxLifetime=t}get(t){const e=this._computedStyleCache.get(t),s=Date.now();if(e&&s-e.updated<this._maxLifetime)return e.style;const n=getComputedStyle(t);return this._computedStyleCache.set(t,{style:n,updated:s}),this._cacheCleanInterval||(this._cacheCleanInterval=setInterval(()=>this._cleanUpCache,Math.max(this._maxLifetime*1e3,5e3))),n}_cleanUpCache(){const t=Date.now();for(const[e,{updated:s}]of this._computedStyleCache.entries())t-s>=this._maxLifetime&&this._computedStyleCache.delete(e);this._computedStyleCache.size===0&&this._cacheCleanInterval&&(clearInterval(this._cacheCleanInterval),this._cacheCleanInterval=null)}}const f=i=>window.TouchEvent&&i instanceof window.TouchEvent;let H;const M=i=>(H||(H=new Ht),H.get(i)),ct=(i,t,e)=>{const s=parseFloat(i),n=window.devicePixelRatio||1;if(t==="px")return s;if(t==="%"){const o=e===document.documentElement?window.innerWidth:e.offsetWidth;return s/100*o}if(t==="rem"){const o=parseFloat(M(document.documentElement).fontSize);return s*o}if(t==="em"){const o=parseFloat(M(e).fontSize);return s*o}if(t==="vh"||t==="vw"||t==="vmin"||t==="vmax"){const o={vh:window.innerHeight,vw:window.innerWidth,vmin:Math.min(window.innerWidth,window.innerHeight),vmax:Math.max(window.innerWidth,window.innerHeight)};return s/100*o[t]}const r={cm:37.7952755906,mm:3.77952755906,in:96};return t in r?s*r[t]*n:(console.warn("Unable to determine coordinates for drag-in. Therefore drag-in is not possible. Check the CSS that positions the iframe of Roomle"),0)},dt=(i,t,e={x:0,y:0})=>{const s=i.getBoundingClientRect(),n=M(i).transform;let r=0,o=0;if(n!=="none"){const u=/translate\(\s*([-+]?\d*\.?\d+|\d+)(px|%)?,?\s*([-+]?\d*\.?\d+|\d+)?(px|%)?\s*\)/,g=n.match(u);g&&(r=ct(g[1],g[2],i),o=ct(g[3],g[4],i))}const{clientX:a,clientY:c}=b(t,e),l=a-s.left-r+i.scrollLeft,d=c-s.top-o+i.scrollTop;return{x:l,y:d}},b=(i,t=null)=>{const{clientX:e,clientY:s}=f(i)?Gt(i):i,n=e>0?e:t?t.x:e,r=s>0?s:t?t.y:s;return{clientX:n,clientY:r}},Gt=i=>{if(i.touches.length){let{clientX:e,clientY:s}=i.touches[0];if(i.touches.length>1){const n=i.touches[1],r=n.clientX,o=n.clientY;e=(e+r)/2,s=(s+o)/2}return{clientX:e,clientY:s}}const t=i.changedTouches[0];return{clientX:t.clientX,clientY:t.clientY}},G=500,Y=10,Yt=100,ut=15,W=(i,t=0)=>f(i)?{clientX:i.touches[t].clientX,clientY:i.touches[t].clientY}:{clientX:i.clientX,clientY:i.clientY},gt=i=>i&&f(i)?i.touches.length>0:!0;class mt{constructor(t,{onTouchDragStart:e},s={}){h(this,"_touchDragTimeOut"),h(this,"_onTouchDragStart"),h(this,"_payload",null),h(this,"_delay",G),h(this,"_firstTouch",null),h(this,"_lastTouch",null),h(this,"_epsilon",Y),this._payload=t,this._onTouchDragStart=e,this._delay=typeof s.delay=="number"?s.delay:G,this._epsilon=typeof s.epsilon=="number"?s.epsilon:Y}onStart(t){gt(t)&&(this._touchDragTimeOut||(this._firstTouch=W(t,f(t)?t.touches.length-1:0),this._touchDragTimeOut=setTimeout(()=>{this._clearTimeout(),this._lastTouch||(this._lastTouch=W(t)),this._checkXDistance(t)()},this._delay)))}onEnd(){this._resetTouches()}onMove(t){gt(t)&&(this._lastTouch=W(t))}_clearTimeout(){this._touchDragTimeOut&&(clearTimeout(this._touchDragTimeOut),this._touchDragTimeOut=null)}_resetTouches(){this._clearTimeout(),this._lastTouch=null,this._firstTouch=null,this._payload=null}_checkXDistance(t){return()=>{if(!this._firstTouch||!this._lastTouch)return;let e=!1;e=Math.abs(this._firstTouch.clientX-this._lastTouch.clientX)<this._epsilon,e&&(this._onTouchDragStart(this._payload,t),this._resetTouches())}}}const _t=(i,t,e=0,s=0)=>{const n=t.x+t.width+e,r=t.x-e,o=t.y+t.height+s,a=t.y-s,{x:c,y:l}=i;return c>=r&&c<=n&&l>=a&&l<=o},pt=(i,t,e,s=0,n=0)=>{if(!(!e||!e.hiddenIn&&!e.visibleIn))return e.visibleIn?_t({x:i,y:t},e.visibleIn,s,n):e.hiddenIn?!_t({x:i,y:t},e.hiddenIn,-s,-n):!1},Wt=()=>{if(!document.getElementById(T)){const i=document.createElement("style");i.type="text/css",i.id=T,i.innerHTML=`
|
|
15
|
-
${ot}
|
|
16
|
-
${at}
|
|
17
|
-
`,document.head.appendChild(i)}},Xt=({x:i,y:t},e)=>{var s,n,r,o,a,c;let l=document.getElementById(I);if(!l){if(l=document.createElement("div"),(s=e.ghost)!=null&&s.element)l.appendChild(e.ghost.element);else{const d=document.createElement("img");d.src=((n=e.ghost)==null?void 0:n.url)||x,d.width=((r=e.ghost)==null?void 0:r.width)||B,d.height=((o=e.ghost)==null?void 0:o.height)||U,l.appendChild(d)}l.id=I,l.style.position="fixed",l.style.top="0",l.style.left="0",l.style.willChange="transform",l.style.transform="translate3d(0, 0, 0)",l.style.zIndex="9999",l.style.opacity="0.5",pt(i,t,e.ghost||{},(a=e.settings)==null?void 0:a.dragInOverlapX,(c=e.settings)==null?void 0:c.dragInOverlapY)||(l.style.display="none"),l.style.pointerEvents="none",document.body.appendChild(l)}},kt=({x:i,y:t},e)=>{var s,n,r,o;const a=document.getElementById(I);if(!a)return;let c=(s=e.ghost)==null?void 0:s.width,l=(n=e.ghost)==null?void 0:n.height;typeof c>"u"&&(c=a.getBoundingClientRect().width||B),typeof l>"u"&&(l=a.getBoundingClientRect().height||U);const d=i-c/2,u=t-l/2;a.style.transform=`translate3d(${d}px, ${u}px, 0)`,e.ghost&&(pt(i,t,e.ghost,(r=e.settings)==null?void 0:r.dragInOverlapX,(o=e.settings)==null?void 0:o.dragInOverlapY)?a.style.animation!=lt&&(a.style.animation=lt):a.style.animation!=ht&&(a.style.animation=ht))};class $t{constructor(t=null){h(this,"_dragGhostAnimationFrameId",null),h(this,"_dragGhostRemoveAnimationFrameId",null),h(this,"_dragGhostElement",null),this._dragGhostElement=t}updateDragGhost(t,e,s){var n;this._dragGhostRemoveAnimationFrameId&&(cancelAnimationFrame(this._dragGhostRemoveAnimationFrameId),this._dragGhostRemoveAnimationFrameId=null),!((n=s.ghost)!=null&&n.external)&&s.ghost&&(this._dragGhostAnimationFrameId||(this._dragGhostAnimationFrameId=requestAnimationFrame(()=>{Wt();const r={x:t,y:e};!s.ghost&&this._dragGhostElement&&(s.ghost={}),s.ghost&&!s.ghost.element&&this._dragGhostElement&&(s.ghost.element=this._dragGhostElement),Xt(r,s),kt(r,s),this._dragGhostAnimationFrameId=null})))}removeDragGhost(){this._dragGhostAnimationFrameId&&(cancelAnimationFrame(this._dragGhostAnimationFrameId),this._dragGhostAnimationFrameId=null),this._dragGhostRemoveAnimationFrameId||(this._dragGhostRemoveAnimationFrameId=requestAnimationFrame(()=>{const t=document.getElementById(I);t&&document.body.removeChild(t),this._dragGhostRemoveAnimationFrameId=null}))}}class jt{constructor(t,e,s){h(this,"_options",{}),h(this,"_instance"),h(this,"_mainDomElement"),h(this,"_currentDrag",{}),h(this,"_currentTouch",null),h(this,"_firefoxDragPosition",{x:0,y:0}),h(this,"_onBeforeUpdateDrag",()=>({})),h(this,"isDragging",!1),h(this,"_firefoxFallback",n=>{if(!this._currentDrag.event)return;n.preventDefault();const r=n||window.event;this._firefoxDragPosition.x=r.pageX||0,this._firefoxDragPosition.y=r.pageY||0}),this._instance=t,this._mainDomElement=e,this._options=s||{},this._firefoxFallback=this._firefoxFallback.bind(this),document.addEventListener("dragover",this._firefoxFallback)}beforeUpdateGhost(t){this._onBeforeUpdateDrag=t}dragStart(t,e,s="rml_id"){const n=this._mainDomElement.parentNode;if(M(n).position!=="relative"){console.warn("Parent of iframe should have position relative, otherwise drag-in can not detect the x/y coordinates correctly");return}this._mainDomElement.style.pointerEvents="none";let r=n.querySelector("."+S);r||(r=document.createElement("div"),r.classList.add(S),n.appendChild(r)),r.classList.remove(F.DISPLAY_NONE),e.target.getAttribute("draggable")||console.warn(`Draggable not detected correctly! Did you add draggable="true" to the element? In Sarafi only 'draggable' is too less`);const o=n.querySelector("."+O);this._currentDrag.event=e;const a=e.target,c=a.cloneNode(),l=a.getBoundingClientRect();c.style.width=`${l.width}px`,c.style.height=`${l.height}px`,this._currentDrag.ghost=new $t(c),this._currentDrag.offset||(this._currentDrag.offset={x:0,y:0});const{clientX:d,clientY:u}=b(e,this._firefoxDragPosition);this._currentDrag.offset.x=d-l.left,this._currentDrag.offset.y=u-l.top,e instanceof DragEvent&&e.dataTransfer&&e.dataTransfer.setDragImage&&e.dataTransfer.setDragImage(o,0,0);const{x:g,y:_}=dt(n,this._currentDrag.event||e,this._firefoxDragPosition),y=Math.max(1,g),w=Math.max(1,_);this.isDragging=!0,this._instance.dragInObject(t,y,w,s)}dragUpdate(t){var e;const s=this._mainDomElement.parentNode,{x:n,y:r}=dt(s,t,this._firefoxDragPosition);if(n===0&&r===0)return;const o=Math.max(1,n),a=Math.max(1,r);if(o===1&&a===1)return;let c=o,l=a;if(f(t)){const v=((e=this._options.settings)==null?void 0:e.fingerSize)||0;c=Math.max(2,o+v),l=Math.max(2,a-v)}const{x:d,y:u,options:g}=this._onBeforeUpdateDrag(c,l,{}),_=g||{settings:{},ghost:{}};_.ghost||(_.ghost={}),_.ghost.visibleIn&&_.ghost.hiddenIn||(_.ghost.hiddenIn=this._mainDomElement.getBoundingClientRect());const y=typeof d=="number"?d:c,w=typeof u=="number"?u:l;if(this._currentDrag.ghost){const{clientX:v,clientY:ee}=b(t,this._firefoxDragPosition);this._currentDrag.ghost.updateDragGhost(v,ee,_)}this._instance.updateDrag(y,w,{})}dragEnd(){this._mainDomElement.style.pointerEvents="all";const t=this._mainDomElement.parentNode;this.isDragging=!1,this._instance.dragInObjectEnd(),this._currentDrag.ghost&&(this._currentDrag.ghost.removeDragGhost(),this._currentDrag.ghost=null),this._currentDrag={},this._firefoxDragPosition={x:0,y:0};const e=t.querySelector("."+S);e&&e.classList.add(F.DISPLAY_NONE)}touchStart(t,e,s="rml_id"){var n,r,o,a;e.preventDefault();const c=(d,u)=>{this.dragStart(t,u,s)},l={};typeof((r=(n=this._options)==null?void 0:n.settings)==null?void 0:r.touchDragDelay)=="number"&&(l.delay=this._options.settings.touchDragDelay),(a=(o=this._options)==null?void 0:o.settings)!=null&&a.touchDragEpsilon&&(l.epsilon=this._options.settings.touchDragEpsilon),this._currentTouch=new mt(void 0,{onTouchDragStart:c},l),this._currentTouch.onStart(e)}touchMove(t){this._currentTouch&&this._currentTouch.onMove(t),this._currentDrag.event&&this.dragUpdate(t)}touchEnd(){this._currentTouch&&this._currentTouch.onEnd(),this._currentTouch=null,this.dragEnd()}dispose(){document.removeEventListener("dragover",this._firefoxFallback)}releaseInput(t){}}const zt=Object.freeze(Object.defineProperty({__proto__:null,DragInFromWebsiteStrategy:jt},Symbol.toStringTag,{value:"Module"})),Vt=i=>`[data-rml-custom-view="${i}"]`,X=i=>{i.preventDefault(),i.stopPropagation()},qt=(i,t,e,s)=>{const n=e-i,r=s-t;return Math.sqrt(n*n+r*r)};class Jt{constructor({onCustomDragStart:t},e={}){h(this,"_startX",0),h(this,"_startY",0),h(this,"_lastX",0),h(this,"_lastY",0),h(this,"_epsilon"),h(this,"_isWaiting",!1),h(this,"_onCustomDragStart"),this._epsilon=typeof e.epsilon=="number"?e.epsilon:ut,this._onCustomDragStart=t}onMove(t){this._lastX=t.clientX,this._lastY=t.clientY,this._isWaiting&&qt(this._startX,this._startY,this._lastX,this._lastY)>this._epsilon&&(this._onCustomDragStart(t),this._isWaiting=!1)}onStart(t){this._startX=t.clientX,this._startY=t.clientY,this.onMove(t),this._isWaiting=!0}onEnd(){this._reset()}_reset(){this._startX=0,this._startY=0,this._lastX=0,this._lastY=0,this._isWaiting=!1}}const k="data-rml-old-draggable",Kt=void 0,ft=(i,t)=>{const e=f(i),s={delay:e?G:Yt,epsilon:e?Y:ut};if(!t)return s;if(!e&&!(i instanceof MouseEvent))return console.warn("Unsupported event! It is not TouchEvent and also not MouseEvent"),s;const{delayKey:n,epsilonKey:r}=e?{delayKey:"touchDragDelay",epsilonKey:"touchDragEpsilon"}:{delayKey:"customDragDelay",epsilonKey:"customDragEpsilon"};return typeof t[n]=="number"&&(s.delay=t.touchDragDelay),typeof t[r]=="number"&&(s.epsilon=t.touchDragEpsilon),s},Qt=i=>{let t="",e=B,s=U;if(!i)return{url:x,width:e,height:s};const n=i;if(n instanceof HTMLElement){const r=n.getBoundingClientRect(),o=n.getAttribute("data-rml-ghost-url"),a=n.getAttribute("data-rml-ghost-width"),c=n.getAttribute("data-rml-ghost-height");o?t=o:!o&&n instanceof HTMLImageElement&&n.src&&(t=n.src),t?(e=r.width,s=r.height):t=x,e=a?parseInt(a,10):e,s=c?parseInt(c,10):s}return{url:t||x,width:e,height:s}};class Zt{constructor(t,e,s){h(this,"_options",{}),h(this,"_instance"),h(this,"_viewName"),h(this,"_currentCustomDrag",null),h(this,"_currentBb",null),h(this,"_startTarget",null),h(this,"_onBeforeUpdateDrag",()=>({})),h(this,"isDragging",!1),this._instance=t,this._options=e||{},this._viewName=s}beforeUpdateGhost(t){this._onBeforeUpdateDrag=t}async _dragStart(t,e,s="rml_id"){this._startTarget&&(this._startTarget.style.pointerEvents="none",this._startTarget.style.userSelect="none",this._startTarget.setAttribute(k,this._startTarget.draggable.toString()),this._startTarget.draggable=!1,this._startTarget.removeEventListener("dragstart",X),this._startTarget.addEventListener("dragstart",X)),this._currentBb=await this._instance.getBoundingClientRect(Vt(this._viewName));const{clientX:n,clientY:r}=b(e),o=this._currentBb.x+n,a=this._currentBb.y+r;this.isDragging=!0,this._instance.dragInObject(t,o,a,s)}_dragUpdate(t){if(document.body.focus(),this._currentCustomDrag&&this._currentCustomDrag.onMove(t),!this._currentBb||!this.isDragging)return;const{clientX:e,clientY:s}=b(t),{url:n,width:r,height:o}=Qt(this._startTarget),a=this._currentBb.x+e,c=this._currentBb.y+s,l=this._options||{},d={ghost:{visibleIn:{x:this._currentBb.x-(l.dragInOverlapX||0),y:this._currentBb.y+(l.dragInOverlapY||0),width:this._currentBb.width+(l.dragInOverlapX||0),height:this._currentBb.height+(l.dragInOverlapY||0)},url:n,width:r,height:o},mode:"custom-view"},{x:u,y:g,options:_}=this._onBeforeUpdateDrag(a,c,d),y=typeof u=="number"?u:a,w=typeof g=="number"?g:c,v=_||d;this._instance.updateDrag(y,w,v)}_dragEnd(){this._currentCustomDrag&&this._currentCustomDrag.onEnd(),this._currentCustomDrag=null,this.isDragging=!1,this._currentBb=null,this._resetStartTarget(),this._instance.enableEvents(),this._instance.dragInObjectEnd()}dragStart(t,e,s){this._instance.disableEvents(),this._startTarget=e.target;const n=(r,o)=>{this._dragStart(t,o,s)};this._currentCustomDrag=f(e)?new mt(Kt,{onTouchDragStart:n},ft(e,this._options)):new Jt({onCustomDragStart:r=>this._dragStart(t,r,s)},ft(e,this._options)),this._currentCustomDrag.onStart(e)}dragEnd(){this._dragEnd()}dragUpdate(t){this._dragUpdate(t)}touchStart(t,e,s="rml_id"){this.dragStart(t,e,s)}touchMove(t){this.dragUpdate(t)}touchEnd(){this.dragEnd()}dispose(){}_resetStartTarget(){this._startTarget&&(this._startTarget.style.pointerEvents="",this._startTarget.style.userSelect="",this._startTarget.draggable=this._startTarget.getAttribute(k)==="true",this._startTarget.removeAttribute(k),this._startTarget.removeEventListener("dragstart",X))}releaseInput(t){this._currentCustomDrag&&this._currentCustomDrag.onEnd(),this._resetStartTarget()}}const te=Object.freeze(Object.defineProperty({__proto__:null,DragInFromCustomViewStrategy:Zt},Symbol.toStringTag,{value:"Module"}));return Pt});
|
|
1
|
+
var t,e;t=this,e=function(){"use strict";var t=Object.defineProperty,e=(e,s,i)=>((e,s,i)=>s in e?t(e,s,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[s]=i)(e,"symbol"!=typeof s?s+"":s,i);class s{constructor(t,s,i,n){e(this,"_side"),e(this,"_incomingMessageBus",null),e(this,"_outgoingMessageBus",null),e(this,"_execMessage",null),this._side=t,this._incomingMessageBus=s,this._outgoingMessageBus=i,this._execMessage=n,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(t){this._outgoingMessageBus=t}setMessageExecution(t){this._execMessage=t}sendMessage(t,e=[]){return new Promise(((s,i)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return s(void 0);const n=new MessageChannel;n.port1.onmessage=t=>{if(!t||!t.data)return n.port1.close(),n.port2.close(),i(new Error(this._side+" received message but response can not be interpreted"));let e;try{e=JSON.parse(t.data)}catch(t){return n.port1.close(),n.port2.close(),this._prepareError(t),i(t)}e.error?i(e.error):void 0!==e.result?s(e.result):s(void 0),n.port1.close(),n.port2.close()};let r="";try{r=JSON.stringify({message:t,args:e})}catch{return i(new Error(this._side+": can not create command because it is not JSON.stringify able"))}if(!this._outgoingMessageBus)return i(new Error(this._side+": outgoing bus not set yet"));this._outgoingMessageBus.postMessage(r,"*",[n.port2])}))}_handleMessage(t){const e=t.ports&&Array.isArray(t.ports)&&t.ports.length>0?t.ports[0]:null;if(t.data&&e)try{const s=JSON.parse(t.data);if(!this._execMessage)return e.postMessage(JSON.stringify({error:this._side+" is not ready to handle messages"}));Array.isArray(s.args)||(s.args=[s.args]);const i=this._execMessage(s,t);if(void 0===i)return;i.then(((t={})=>{let s,i;"object"==typeof t&&null!==t&&(s=t.error,i=t.result),s?e.postMessage(JSON.stringify({error:s})):void 0!==i?e.postMessage(JSON.stringify({result:i})):e.postMessage(JSON.stringify({result:t}))}),(t=>{e.postMessage(JSON.stringify({error:this._prepareError(t)}))}))}catch(t){e.postMessage(JSON.stringify({error:this._prepareError(t)}))}}_prepareError(t){return"string"==typeof t?this._side+": "+t:(t.message=this._side+": "+t.message,t.message)}}const i=["127.0.0.1","localhost","0.0.0.0"],n=["language","browserLanguage","userLanguage","systemLanguage"],r=(t,e)=>{for(const s in e)try{e[s].constructor===Object?t[s]=r(t[s],e[s]):t[s]=e[s]}catch{t[s]=e[s]}return t};var a,o=((a=o||{}).BOTTOM_BAR="bottom_bar",a.PARTLIST_BOUNDS="partlist_bounds",a.INTERACTION_NOTES="interaction_notes",a.PARAMETER_GROUPS="parameter_groups",a),l={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};const h={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[o.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1,openCloseAnimation:!1,showWallVisibilityToggle:!1},rotationSnapDegrees:10,interactionsCollapsed:!1},c=t=>{if(!t)return;const e=Object.keys(t);for(const s of e){const e=t[s];if(!Array.isArray(e)&&"object"==typeof e&&null!==e&&c(e),Array.isArray(e))for(const t of e)c(t);("true"===e||"false"===e)&&(t[s]="true"===e)}},u=()=>/(android)/i.test(navigator.userAgent);class g{constructor(){e(this,"_messageHandler",null),e(this,"isSetupDone",!1),e(this,"viewName","main"),e(this,"plugins",{}),e(this,"pluginsLoaded",[]),e(this,"ui",{callbacks:null}),e(this,"extended",{callbacks:null}),e(this,"configurator",{callbacks:null}),e(this,"analytics",{callbacks:{}}),e(this,"global",{callbacks:{}})}setMessageHandler(t){this._messageHandler=t}handleSetup(t){const{methods:e,callbacks:s}=t;e.forEach((t=>{const e=t.split("."),s=e[0],i=e[1];this[s]||(this[s]={}),this[s][i]=function(){if(this._messageHandler)return this._messageHandler.sendMessage(t,[...arguments])}.bind(this)})),s.forEach((t=>{const e=t.split("."),s=e[0],i=e[1],n=e[2];this[s]||(this[s]={}),this[s][i]||(this[s][i]={}),this[s][i][n]=()=>{}})),this.isSetupDone=!0}executeMessage({message:t,args:e}){const s=t.split("."),i=s[0],n=s[1],r=3===s.length?s[2]:null;if(r&&this[i][n][r]){const t=this[i][n][r](...e);return t instanceof Promise?t.then((t=>({result:t}))):void 0!==t?Promise.resolve({result:t}):Promise.resolve({result:null})}return Promise.reject('Message "'+t+'" is unkown')}setupPlugins(t,e,s="website"){for(const i of t)"string"==typeof i&&"dragIn"===i?this.pluginsLoaded.push(new Promise(((t,i)=>{try{Promise.resolve().then((()=>G)).then((({DragIn:n})=>{const r=new n(this.ui,e,s,this.viewName);r.init().then((()=>{this.plugins.dragIn=r,t()}),i)}))}catch(t){i(t)}}))):i.name&&i.loader&&this.pluginsLoaded.push(new Promise(((t,n)=>{try{i.loader().then((r=>{const a=new r(this.ui,e,s,this.viewName);a.init().then((()=>{this.plugins[i.name]=a,t()}),n)}))}catch(t){n(t)}})))}}const d=()=>{let t,e;return{promise:new Promise(((s,i)=>{t=s,e=i})),resolve:t,reject:e}},m=(t,e,s)=>{let i=null;Object.defineProperty(t,e,{get:()=>i||s,set(t){i=null!=t&&t.mute?t.value:t}})},_=()=>.01*window.innerHeight+"px",p=t=>{t&&setTimeout((()=>t.style.setProperty(y,_())),0)},f="rml-styles",y="--rml-full-height",v="rml-container",b="rml-fill",w="rml-pos",D="rml-android-height",E="rml-overflow-hidden",T=new Map;class S{constructor(t,s,i,n){e(this,"_mainDomElement"),e(this,"_instance"),e(this,"_mode","website"),e(this,"_viewName","main"),this._instance=t,this._mainDomElement=s,this._mode=i,this._viewName=n}async init(){return Promise.resolve()}}const x="rml-drag-in-styles",I="rml-drag-in-drag-element",M="rml-drag-in-overlay",C="rml-drag-in-drag-ghost",A="rml-drag-in-fade-in",O="rml-drag-in-fade-out",L="rml-display-none",B="250ms",P="forwards",F=`@keyframes ${A} {from{opacity: 0;}to {opacity: 0.5;}}`,U=`@keyframes ${O} {from{opacity: 0.5;}to {opacity: 0;}}`,R=`${A} ${B} ${P}`,N=`${O} ${B} ${P}`,X="https://res.cloudinary.com/roomle/image/upload/v1729679975/fallback_afpyqr.jpg",G=Object.freeze(Object.defineProperty({__proto__:null,DragIn:class extends S{constructor(t,s,i,n){super(t,s,i,n),e(this,"options",{}),e(this,"_customDragSignal",new AbortController),this._mainDomElement=s,this._injectStyles(),this._initializeDragGhost()}_injectStyles(){if(!document.getElementById(x)){const t=document.createElement("style");t.type="text/css",t.id=x,t.innerHTML=`\n .${L}{display:none}\n .${M}{position:absolute;top:0;left:0;width:100%;height:100%;z-index:999;}\n .${C}{position:absolute;top:0;left:0;width:1px;height:1px;z-index:999;pointer-events:none;background-color:transparent;}\n ${F}\n ${U}\n `,document.head.appendChild(t)}}_initializeDragGhost(){const t=this._mainDomElement.parentNode;let e=t.querySelector("."+C);e||(e=document.createElement("div"),e.classList.add(C),e.innerText=" ",t.appendChild(e))}async init(){if(await super.init(),"website"===this._mode)try{const{DragInFromWebsiteStrategy:t}=await Promise.resolve().then((()=>et));this._strategy=new t(this._instance,this._mainDomElement,{settings:this.options,mode:"website"})}catch(t){throw t}else{if("custom-view"!==this._mode)throw new Error("Unsupported mode");try{const{DragInFromCustomViewStrategy:t}=await Promise.resolve().then((()=>at));this._strategy=new t(this._instance,this.options,this._viewName)}catch(t){throw t}}}get isDragging(){return this._strategy.isDragging}dragStart(t,e,s="rml_id"){this._strategy.dragStart(t,e,s)}dragUpdate(t){this._strategy.dragUpdate(t)}dragEnd(){this._strategy.dragEnd()}touchStart(t,e,s="rml_id"){this._strategy.touchStart(t,e,s)}touchMove(t){this._strategy.touchMove(t)}touchEnd(){this._strategy.touchEnd()}dispose(){this._strategy.dispose()}beforeUpdateGhost(t){this._strategy.beforeUpdateGhost(t)}registerCustomDrag({customDragStart:t,customDragEnd:e,customDragUpdate:s,beforeUpdateGhost:i}){i&&this._strategy.beforeUpdateGhost(i);const n=this._customDragSignal.signal,r=e=>{"true"===e.target.getAttribute("data-rml-draggable")&&t(e)},a=t=>{this._strategy.releaseInput(t),this._strategy.isDragging&&e(t)},o=t=>{s(t)};document.querySelectorAll('[data-rml-draggable="true"]').forEach((t=>{t.draggable=!1})),document.addEventListener("mousedown",r,{signal:n}),document.addEventListener("mouseup",a,{signal:n}),document.addEventListener("mousemove",o,{signal:n}),document.addEventListener("mouseleave",a,{signal:n}),document.addEventListener("touchstart",r,{signal:n}),document.addEventListener("touchend",a,{signal:n}),document.addEventListener("touchmove",o,{signal:n})}unregisterCustomDrag(){this._customDragSignal.abort(),this._customDragSignal=new AbortController}releaseInput(t){this._strategy.releaseInput(t)}}},Symbol.toStringTag,{value:"Module"}));class k{constructor(t=16){e(this,"_computedStyleCache",new Map),e(this,"_maxLifetime",16),e(this,"_cacheCleanInterval",null),this._maxLifetime=t}get(t){const e=this._computedStyleCache.get(t),s=Date.now();if(e&&s-e.updated<this._maxLifetime)return e.style;const i=getComputedStyle(t);return this._computedStyleCache.set(t,{style:i,updated:s}),this._cacheCleanInterval||(this._cacheCleanInterval=setInterval((()=>this._cleanUpCache),Math.max(1e3*this._maxLifetime,5e3))),i}_cleanUpCache(){const t=Date.now();for(const[e,{updated:s}]of this._computedStyleCache.entries())t-s>=this._maxLifetime&&this._computedStyleCache.delete(e);0===this._computedStyleCache.size&&this._cacheCleanInterval&&(clearInterval(this._cacheCleanInterval),this._cacheCleanInterval=null)}}const Y=t=>window.TouchEvent&&t instanceof window.TouchEvent;let $;const j=t=>($||($=new k),$.get(t)),H=(t,e,s)=>{const i=parseFloat(t),n=window.devicePixelRatio||1;if("px"===e)return i;if("%"===e)return i/100*(s===document.documentElement?window.innerWidth:s.offsetWidth);if("rem"===e)return i*parseFloat(j(document.documentElement).fontSize);if("em"===e)return i*parseFloat(j(s).fontSize);if("vh"===e||"vw"===e||"vmin"===e||"vmax"===e)return i/100*{vh:window.innerHeight,vw:window.innerWidth,vmin:Math.min(window.innerWidth,window.innerHeight),vmax:Math.max(window.innerWidth,window.innerHeight)}[e];const r={cm:37.7952755906,mm:3.77952755906,in:96};return e in r?i*r[e]*n:0},W=(t,e,s={x:0,y:0})=>{const i=t.getBoundingClientRect(),n=j(t).transform;let r=0,a=0;if("none"!==n){const e=/translate\(\s*([-+]?\d*\.?\d+|\d+)(px|%)?,?\s*([-+]?\d*\.?\d+|\d+)?(px|%)?\s*\)/,s=n.match(e);s&&(r=H(s[1],s[2],t),a=H(s[3],s[4],t))}const{clientX:o,clientY:l}=z(e,s);return{x:o-i.left-r+t.scrollLeft,y:l-i.top-a+t.scrollTop}},z=(t,e=null)=>{const{clientX:s,clientY:i}=Y(t)?q(t):t;return{clientX:s>0?s:e?e.x:s,clientY:i>0?i:e?e.y:i}},q=t=>{if(t.touches.length){let{clientX:e,clientY:s}=t.touches[0];if(t.touches.length>1){const i=t.touches[1];e=(e+i.clientX)/2,s=(s+i.clientY)/2}return{clientX:e,clientY:s}}const e=t.changedTouches[0];return{clientX:e.clientX,clientY:e.clientY}},J=(t,e=0)=>Y(t)?{clientX:t.touches[e].clientX,clientY:t.touches[e].clientY}:{clientX:t.clientX,clientY:t.clientY},V=t=>!t||!Y(t)||t.touches.length>0;class K{constructor(t,{onTouchDragStart:s},i={}){e(this,"_touchDragTimeOut"),e(this,"_onTouchDragStart"),e(this,"_payload",null),e(this,"_delay",500),e(this,"_firstTouch",null),e(this,"_lastTouch",null),e(this,"_epsilon",10),this._payload=t,this._onTouchDragStart=s,this._delay="number"==typeof i.delay?i.delay:500,this._epsilon="number"==typeof i.epsilon?i.epsilon:10}onStart(t){V(t)&&(this._touchDragTimeOut||(this._firstTouch=J(t,Y(t)?t.touches.length-1:0),this._touchDragTimeOut=setTimeout((()=>{this._clearTimeout(),this._lastTouch||(this._lastTouch=J(t)),this._checkXDistance(t)()}),this._delay)))}onEnd(){this._resetTouches()}onMove(t){V(t)&&(this._lastTouch=J(t))}_clearTimeout(){this._touchDragTimeOut&&(clearTimeout(this._touchDragTimeOut),this._touchDragTimeOut=null)}_resetTouches(){this._clearTimeout(),this._lastTouch=null,this._firstTouch=null,this._payload=null}_checkXDistance(t){return()=>{if(!this._firstTouch||!this._lastTouch)return;let e=!1;e=Math.abs(this._firstTouch.clientX-this._lastTouch.clientX)<this._epsilon,e&&(this._onTouchDragStart(this._payload,t),this._resetTouches())}}}const Q=(t,e,s=0,i=0)=>{const n=e.x+e.width+s,r=e.x-s,a=e.y+e.height+i,o=e.y-i,{x:l,y:h}=t;return l>=r&&l<=n&&h>=o&&h<=a},Z=(t,e,s,i=0,n=0)=>{if(s&&(s.hiddenIn||s.visibleIn))return s.visibleIn?Q({x:t,y:e},s.visibleIn,i,n):!!s.hiddenIn&&!Q({x:t,y:e},s.hiddenIn,-i,-n)};class tt{constructor(t=null){e(this,"_dragGhostAnimationFrameId",null),e(this,"_dragGhostRemoveAnimationFrameId",null),e(this,"_dragGhostElement",null),this._dragGhostElement=t}updateDragGhost(t,e,s){var i;this._dragGhostRemoveAnimationFrameId&&(cancelAnimationFrame(this._dragGhostRemoveAnimationFrameId),this._dragGhostRemoveAnimationFrameId=null),(null==(i=s.ghost)||!i.external)&&s.ghost&&(this._dragGhostAnimationFrameId||(this._dragGhostAnimationFrameId=requestAnimationFrame((()=>{(()=>{if(!document.getElementById(x)){const t=document.createElement("style");t.type="text/css",t.id=x,t.innerHTML=`\n ${F}\n ${U}\n `,document.head.appendChild(t)}})();const i={x:t,y:e};!s.ghost&&this._dragGhostElement&&(s.ghost={}),s.ghost&&!s.ghost.element&&this._dragGhostElement&&(s.ghost.element=this._dragGhostElement),(({x:t,y:e},s)=>{var i,n,r,a,o,l;let h=document.getElementById(I);if(!h){if(h=document.createElement("div"),null!=(i=s.ghost)&&i.element)h.appendChild(s.ghost.element);else{const t=document.createElement("img");t.src=(null==(n=s.ghost)?void 0:n.url)||X,t.width=(null==(r=s.ghost)?void 0:r.width)||112,t.height=(null==(a=s.ghost)?void 0:a.height)||112,h.appendChild(t)}h.id=I,h.style.position="fixed",h.style.top="0",h.style.left="0",h.style.willChange="transform",h.style.transform="translate3d(0, 0, 0)",h.style.zIndex="9999",h.style.opacity="0.5",Z(t,e,s.ghost||{},null==(o=s.settings)?void 0:o.dragInOverlapX,null==(l=s.settings)?void 0:l.dragInOverlapY)||(h.style.display="none"),h.style.pointerEvents="none",document.body.appendChild(h)}})(i,s),(({x:t,y:e},s)=>{var i,n,r,a;const o=document.getElementById(I);if(!o)return;let l=null==(i=s.ghost)?void 0:i.width,h=null==(n=s.ghost)?void 0:n.height;typeof l>"u"&&(l=o.getBoundingClientRect().width||112),typeof h>"u"&&(h=o.getBoundingClientRect().height||112);const c=t-l/2,u=e-h/2;o.style.transform=`translate3d(${c}px, ${u}px, 0)`,s.ghost&&(Z(t,e,s.ghost,null==(r=s.settings)?void 0:r.dragInOverlapX,null==(a=s.settings)?void 0:a.dragInOverlapY)?o.style.animation!=R&&(o.style.animation=R):o.style.animation!=N&&(o.style.animation=N))})(i,s),this._dragGhostAnimationFrameId=null}))))}removeDragGhost(){this._dragGhostAnimationFrameId&&(cancelAnimationFrame(this._dragGhostAnimationFrameId),this._dragGhostAnimationFrameId=null),this._dragGhostRemoveAnimationFrameId||(this._dragGhostRemoveAnimationFrameId=requestAnimationFrame((()=>{const t=document.getElementById(I);t&&document.body.removeChild(t),this._dragGhostRemoveAnimationFrameId=null})))}}const et=Object.freeze(Object.defineProperty({__proto__:null,DragInFromWebsiteStrategy:class{constructor(t,s,i){e(this,"_options",{}),e(this,"_instance"),e(this,"_mainDomElement"),e(this,"_currentDrag",{}),e(this,"_currentTouch",null),e(this,"_firefoxDragPosition",{x:0,y:0}),e(this,"_onBeforeUpdateDrag",(()=>({}))),e(this,"isDragging",!1),e(this,"_firefoxFallback",(t=>{if(!this._currentDrag.event)return;t.preventDefault();const e=t||window.event;this._firefoxDragPosition.x=e.pageX||0,this._firefoxDragPosition.y=e.pageY||0})),this._instance=t,this._mainDomElement=s,this._options=i||{},this._firefoxFallback=this._firefoxFallback.bind(this),document.addEventListener("dragover",this._firefoxFallback)}beforeUpdateGhost(t){this._onBeforeUpdateDrag=t}dragStart(t,e,s="rml_id"){const i=this._mainDomElement.parentNode;if("relative"!==j(i).position)return;this._mainDomElement.style.pointerEvents="none";let n=i.querySelector("."+M);n||(n=document.createElement("div"),n.classList.add(M),i.appendChild(n)),n.classList.remove(L),e.target.getAttribute("draggable");const r=i.querySelector("."+C);this._currentDrag.event=e;const a=e.target,o=a.cloneNode(!0),l=a.getBoundingClientRect();o.style.width=`${l.width}px`,o.style.height=`${l.height}px`,this._currentDrag.ghost=new tt(o),this._currentDrag.offset||(this._currentDrag.offset={x:0,y:0});const{clientX:h,clientY:c}=z(e,this._firefoxDragPosition);this._currentDrag.offset.x=h-l.left,this._currentDrag.offset.y=c-l.top,e instanceof DragEvent&&e.dataTransfer&&e.dataTransfer.setDragImage&&e.dataTransfer.setDragImage(r,0,0);const{x:u,y:g}=W(i,this._currentDrag.event||e,this._firefoxDragPosition),d=Math.max(1,u),m=Math.max(1,g);this.isDragging=!0,this._instance.dragInObject(t,d,m,s)}dragUpdate(t){var e;const s=this._mainDomElement.parentNode,{x:i,y:n}=W(s,t,this._firefoxDragPosition);if(0===i&&0===n)return;const r=Math.max(1,i),a=Math.max(1,n);if(1===r&&1===a)return;let o=r,l=a;if(Y(t)){const t=(null==(e=this._options.settings)?void 0:e.fingerSize)||0;o=Math.max(2,r+t),l=Math.max(2,a-t)}const{x:h,y:c,options:u}=this._onBeforeUpdateDrag(o,l,{}),g=u||{settings:{},ghost:{}};g.ghost||(g.ghost={}),g.ghost.visibleIn&&g.ghost.hiddenIn||(g.ghost.hiddenIn=this._mainDomElement.getBoundingClientRect());const d="number"==typeof h?h:o,m="number"==typeof c?c:l;if(this._currentDrag.ghost){const{clientX:e,clientY:s}=z(t,this._firefoxDragPosition);this._currentDrag.ghost.updateDragGhost(e,s,g)}this._instance.updateDrag(d,m,{})}dragEnd(){this._mainDomElement.style.pointerEvents="all";const t=this._mainDomElement.parentNode;this.isDragging=!1,this._instance.dragInObjectEnd(),this._currentDrag.ghost&&(this._currentDrag.ghost.removeDragGhost(),this._currentDrag.ghost=null),this._currentDrag={},this._firefoxDragPosition={x:0,y:0};const e=t.querySelector("."+M);e&&e.classList.add(L)}touchStart(t,e,s="rml_id"){var i,n,r,a;e.preventDefault();const o={};"number"==typeof(null==(n=null==(i=this._options)?void 0:i.settings)?void 0:n.touchDragDelay)&&(o.delay=this._options.settings.touchDragDelay),null!=(a=null==(r=this._options)?void 0:r.settings)&&a.touchDragEpsilon&&(o.epsilon=this._options.settings.touchDragEpsilon),this._currentTouch=new K(void 0,{onTouchDragStart:(e,i)=>{this.dragStart(t,i,s)}},o),this._currentTouch.onStart(e)}touchMove(t){this._currentTouch&&this._currentTouch.onMove(t),this._currentDrag.event&&this.dragUpdate(t)}touchEnd(){this._currentTouch&&this._currentTouch.onEnd(),this._currentTouch=null,this.dragEnd()}dispose(){document.removeEventListener("dragover",this._firefoxFallback)}releaseInput(t){}}},Symbol.toStringTag,{value:"Module"})),st=t=>{t.preventDefault(),t.stopPropagation()};class it{constructor({onCustomDragStart:t},s={}){e(this,"_startX",0),e(this,"_startY",0),e(this,"_lastX",0),e(this,"_lastY",0),e(this,"_epsilon"),e(this,"_isWaiting",!1),e(this,"_onCustomDragStart"),this._epsilon="number"==typeof s.epsilon?s.epsilon:15,this._onCustomDragStart=t}onMove(t){this._lastX=t.clientX,this._lastY=t.clientY,this._isWaiting&&((t,e)=>{const s=this._lastX-t,i=this._lastY-e;return Math.sqrt(s*s+i*i)})(this._startX,this._startY)>this._epsilon&&(this._onCustomDragStart(t),this._isWaiting=!1)}onStart(t){this._startX=t.clientX,this._startY=t.clientY,this.onMove(t),this._isWaiting=!0}onEnd(){this._reset()}_reset(){this._startX=0,this._startY=0,this._lastX=0,this._lastY=0,this._isWaiting=!1}}const nt="data-rml-old-draggable",rt=(t,e)=>{const s=Y(t),i={delay:s?500:100,epsilon:s?10:15};if(!e)return i;if(!(s||t instanceof MouseEvent))return i;const{delayKey:n,epsilonKey:r}=s?{delayKey:"touchDragDelay",epsilonKey:"touchDragEpsilon"}:{delayKey:"customDragDelay",epsilonKey:"customDragEpsilon"};return"number"==typeof e[n]&&(i.delay=e.touchDragDelay),"number"==typeof e[r]&&(i.epsilon=e.touchDragEpsilon),i},at=Object.freeze(Object.defineProperty({__proto__:null,DragInFromCustomViewStrategy:class{constructor(t,s,i){e(this,"_options",{}),e(this,"_instance"),e(this,"_viewName"),e(this,"_currentCustomDrag",null),e(this,"_currentBb",null),e(this,"_startTarget",null),e(this,"_onBeforeUpdateDrag",(()=>({}))),e(this,"isDragging",!1),this._instance=t,this._options=s||{},this._viewName=i}beforeUpdateGhost(t){this._onBeforeUpdateDrag=t}async _dragStart(t,e,s="rml_id"){this._startTarget&&(this._startTarget.style.pointerEvents="none",this._startTarget.style.userSelect="none",this._startTarget.setAttribute(nt,this._startTarget.draggable.toString()),this._startTarget.draggable=!1,this._startTarget.removeEventListener("dragstart",st),this._startTarget.addEventListener("dragstart",st)),this._currentBb=await this._instance.getBoundingClientRect((()=>`[data-rml-custom-view="${this._viewName}"]`)());const{clientX:i,clientY:n}=z(e),r=this._currentBb.x+i,a=this._currentBb.y+n;this.isDragging=!0,this._instance.dragInObject(t,r,a,s)}_dragUpdate(t){if(document.body.focus(),this._currentCustomDrag&&this._currentCustomDrag.onMove(t),!this._currentBb||!this.isDragging)return;const{clientX:e,clientY:s}=z(t),{url:i,width:n,height:r}=(t=>{let e="",s=112,i=112;if(!t)return{url:X,width:s,height:i};const n=t;if(n instanceof HTMLElement){const t=n.getBoundingClientRect(),r=n.getAttribute("data-rml-ghost-url"),a=n.getAttribute("data-rml-ghost-width"),o=n.getAttribute("data-rml-ghost-height");r?e=r:!r&&n instanceof HTMLImageElement&&n.src&&(e=n.src),e?(s=t.width,i=t.height):e=X,s=a?parseInt(a,10):s,i=o?parseInt(o,10):i}return{url:e||X,width:s,height:i}})(this._startTarget),a=this._currentBb.x+e,o=this._currentBb.y+s,l=this._options||{},h={ghost:{visibleIn:{x:this._currentBb.x-(l.dragInOverlapX||0),y:this._currentBb.y+(l.dragInOverlapY||0),width:this._currentBb.width+(l.dragInOverlapX||0),height:this._currentBb.height+(l.dragInOverlapY||0)},url:i,width:n,height:r},mode:"custom-view"},{x:c,y:u,options:g}=this._onBeforeUpdateDrag(a,o,h),d="number"==typeof c?c:a,m="number"==typeof u?u:o,_=g||h;this._instance.updateDrag(d,m,_)}_dragEnd(){this._currentCustomDrag&&this._currentCustomDrag.onEnd(),this._currentCustomDrag=null,this.isDragging=!1,this._currentBb=null,this._resetStartTarget(),this._instance.enableEvents(),this._instance.dragInObjectEnd()}dragStart(t,e,s){this._instance.disableEvents(),this._startTarget=e.target,this._currentCustomDrag=Y(e)?new K(void 0,{onTouchDragStart:(e,i)=>{this._dragStart(t,i,s)}},rt(e,this._options)):new it({onCustomDragStart:e=>this._dragStart(t,e,s)},rt(e,this._options)),this._currentCustomDrag.onStart(e)}dragEnd(){this._dragEnd()}dragUpdate(t){this._dragUpdate(t)}touchStart(t,e,s="rml_id"){this.dragStart(t,e,s)}touchMove(t){this.dragUpdate(t)}touchEnd(){this.dragEnd()}dispose(){}_resetStartTarget(){this._startTarget&&(this._startTarget.style.pointerEvents="",this._startTarget.style.userSelect="",this._startTarget.draggable="true"===this._startTarget.getAttribute(nt),this._startTarget.removeAttribute(nt),this._startTarget.removeEventListener("dragstart",st))}releaseInput(t){this._currentCustomDrag&&this._currentCustomDrag.onEnd(),this._resetStartTarget()}}},Symbol.toStringTag,{value:"Module"}));return class extends g{constructor(t,i,n,r,a){if(super(),e(this,"_waitForIframe"),e(this,"_container"),e(this,"_configuratorSettings"),e(this,"_initData",{}),e(this,"_iframe"),!t||"string"!=typeof t.id)throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(T.has(i))throw new Error("There is already an instance on this DOM element");if(!document.getElementById(f)){const t=n.zIndex||9999999,e=document.createElement("style");e.type="text/css",e.id=f;const s="transition:all ease-in-out 450ms;",i=["-webkit-","-o-"].reduce(((t,e)=>t+(e+s)),"")+s,r=_();e.innerHTML=`\n .${v}{${y}:${r};}\n .${w}{position:fixed;top:0;left:0;z-index:${t};opacity:0}\n .rml-transition{${i}}\n .${b}{width:100%;height:100%;opacity:1}\n .${D}{height:calc(var(${y},1vh)*100)}\n .${E}{overflow:hidden}\n `,document.head.appendChild(e)}this._executeMessage=this._executeMessage.bind(this);const o=new s("website",window,null,this._executeMessage);this.setMessageHandler(o),this._onResize=this._onResize.bind(this),u()&&window.addEventListener("resize",this._onResize),this._container=i,this._initData=n,this._configuratorSettings=t;const l=this._createIframe();this._onUseFullPage=this._onUseFullPage.bind(this),this._onBackToWebsite=this._onBackToWebsite.bind(this),this._waitForIframe=a,this._container.appendChild(l),this._iframe=l,this.setupPlugins(r,this._iframe),T.set(i,!0)}static createPlanner(t,e,s,i=[]){return this._create(t,e,s,i)}static async connect(t,e=[]){const i=new g;i.viewName=t;const{resolve:n,promise:r}=d(),{resolve:a,promise:o}=d(),l=new s("custom-view-"+t,window,window.parent,(({message:t,args:e})=>{switch(t){case"registerCustomViewDone":n();break;case"returnMethods":i.handleSetup(e[0]),a();break;default:if(i.isSetupDone)return i.executeMessage({message:t,args:e})}}));i.setMessageHandler(l);const h=[t];return l.sendMessage("registerCustomView",h),await r,l.sendMessage("getMethods",h),await o,i.setupPlugins(e,document.body,"custom-view"),await Promise.allSettled(i.pluginsLoaded),i}static createConfigurator(t,e,s,i=[]){return this._create(t,e,s,i)}static create(t,e,s,i){return this._create(t,e,s,i)}static createViewer(t,e,s,i=[]){return this._create(t,e,s,i)}static async _create(t,e,s,a){return new Promise((async(o,u)=>{try{const u=r((()=>{const t={...h};t.locale||(t.locale=((t=null)=>{const e=window.navigator;if(t)return t.substr(0,2);if(Array.isArray(e.languages)&&e.languages.length>0)return e.languages[0].substr(0,2);for(let t=0,s=n.length;t<s;t++){const s=e[n[t]];if(s)return s.substr(0,2)}return"en"})()),"(idle)"===t.id&&delete t.id;const e=(()=>{const t=(()=>{try{return window.self!==window.top}catch{return!0}})();let e=window.location.href;if(t){if(!document.referrer)return null;e=document.referrer}const{hostname:s}=new URL(e);return s})();return e&&(t=>!!(i.includes(t)||t.endsWith("roomle.com")||t.endsWith("gitlab.io")||t.endsWith("gitlab.com")))(e)&&(t.configuratorId="demoConfigurator"),t.customApiUrl=l.VITE_RAPI_URL,t.emails=!1,t})(),(t=>(c(t),null!=t&&t.customApiUrl&&(t.customApiUrl=decodeURIComponent(t.customApiUrl)),t.shareUrl&&(t.deeplink=t.shareUrl.replace("<CONF_ID>","#CONFIGURATIONID#")),t))(s));(t=>{t.featureFlags||(t.featureFlags={}),"boolean"!=typeof t.featureFlags.realPartList&&(t.featureFlags.realPartList=!0),"boolean"!=typeof t.featureFlags.globalCallbacks&&(t.featureFlags.globalCallbacks=!0),"boolean"!=typeof t.featureFlags.mocAr&&(t.featureFlags.mocAr=!1)})(u);const g=await(async(t,e)=>{if("string"!=typeof t)throw new Error('Configurator ID is not a string type: "'+typeof t+'"');const s=e.customApiUrl?e.customApiUrl:"https://api.roomle.com/v2",i=e.overrideTenant||9,n=s+"/configurators/"+t,r="roomle_portal_v2",a="03-"+window.btoa((new Date).toISOString()+";anonymous;"+r),o=new Request(n,{method:"GET",headers:new Headers({apiKey:r,currentTenant:i,locale:"en",language:"en",device:1,token:a,platform:"web"}),mode:"cors",cache:"default"}),l=await fetch(o),{configurator:h}=await l.json();return h})(t,u);s=((t,e)=>{e.configuratorId=t.id;const s=t.settings||{};return!e.overrideTenant&&t.tenant&&(e.overrideTenant=t.tenant),((t,e)=>{const s=JSON.parse(JSON.stringify(t));return r(s,e)})(s,e)})(g,u);const d=new this(g,e,s,a,o);return await Promise.allSettled(d.pluginsLoaded),d}catch(t){return u(t)}}))}teardown(){this._container&&T.delete(this._container);const t=this._container.querySelector("iframe");t&&this._container.removeChild(t),window.removeEventListener("resize",this._onResize)}_createIframe(){var t;const e=document.createElement("iframe");let s=(null==(t=this._configuratorSettings)?void 0:t.url)||"https://www.roomle.com/t/cp/";return this._initData.useLocalRoomle&&(s=location.href.replace("embedding.html","")),location.href.includes("roomle.gitlab.io")&&(s=location.href.replace("embedding.html","index.html")),this._initData.overrideServerUrl&&(s=this._initData.overrideServerUrl),e.src=s,e.classList.add(v),e.classList.add(b),e}_onResize(){p(this._iframe)}_onUseFullPage(){this._iframe.classList.add(w),document.documentElement.classList.add(E),window.document.body.classList.add(E),u()&&(p(this._iframe),this._iframe.classList.add(D))}_onBackToWebsite(){this._iframe.classList.remove(w),this._iframe.classList.remove(D),document.documentElement.classList.remove(E),window.document.body.classList.remove(E)}_executeMessage({message:t,args:e},s){var i;if(s.source&&s.source===(null==(i=this._iframe)?void 0:i.contentWindow))return"requestBoot"===t?this._messageHandler?(this._messageHandler.setOutgoingMessageBus(s.source),Promise.resolve({result:this._initData})):Promise.resolve({error:"MessageHandler not set"}):"setup"===t?(this.handleSetup(e[0]),m(this.ui.callbacks,"onUseFullPage",this._onUseFullPage),m(this.ui.callbacks,"onBackToWebsite",this._onBackToWebsite),this._waitForIframe(this),setTimeout((()=>{this._messageHandler&&this._messageHandler.sendMessage("websiteReady")}),0),Promise.resolve({result:null})):this.executeMessage({message:t,args:e})}}},"object"==typeof exports&&typeof module<"u"?module.exports=e():"function"==typeof define&&define.amd?define(e):((t=typeof globalThis<"u"?globalThis:t||self)["roomle-embedding-lib"]=t["roomle-embedding-lib"]||{},t["roomle-embedding-lib"].umd=t["roomle-embedding-lib"].umd||{},t["roomle-embedding-lib"].umd.min=t["roomle-embedding-lib"].umd.min||{},t["roomle-embedding-lib"].umd.min.js=e());
|
package/src/common/components/collection-view/-utils/collection-view-dynamic-components.d.ts
CHANGED
|
@@ -2884,6 +2884,11 @@ declare const dynamicComponents: {
|
|
|
2884
2884
|
lastItem: boolean;
|
|
2885
2885
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
2886
2886
|
}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
2887
|
+
readonly DisabledParameters: import('vue').DefineComponent<{
|
|
2888
|
+
parameter: import('./types').CollectionViewElement<import('./types').CollectionViewElementPossibleTypes>[];
|
|
2889
|
+
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
2890
|
+
parameter: import('./types').CollectionViewElement<import('./types').CollectionViewElementPossibleTypes>[];
|
|
2891
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
2887
2892
|
readonly Tooltip: {
|
|
2888
2893
|
new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & Readonly<{}> & Readonly<{}>, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
|
|
2889
2894
|
P: {};
|
|
@@ -1,216 +1,52 @@
|
|
|
1
|
-
import { PropType, CSSProperties } from 'vue';
|
|
2
1
|
import { CollectionViewElement, CollectionViewElementPossibleTypes } from './-utils/types';
|
|
3
|
-
import { Nullable } from '../../utils/types';
|
|
4
2
|
import { GridViewElement } from '../../../configurator/components/grid-view/-utils/GridViewHelper';
|
|
5
3
|
import { CollectionViewUiState } from '../../store/collection-view-state';
|
|
6
|
-
import {
|
|
7
|
-
import { UiPossibleChild, UiPossibleChildTag } from '@roomle/web-sdk/lib/definitions/typings/kernel';
|
|
4
|
+
import { UiPossibleChildTag } from '@roomle/web-sdk/lib/definitions/typings/kernel';
|
|
8
5
|
|
|
9
|
-
declare const _default: import('vue').DefineComponent<
|
|
10
|
-
payload
|
|
11
|
-
element:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
type: FunctionConstructor;
|
|
45
|
-
required: true;
|
|
46
|
-
};
|
|
47
|
-
state: {
|
|
48
|
-
type: PropType<CollectionViewUiState>;
|
|
49
|
-
required: true;
|
|
50
|
-
};
|
|
51
|
-
getTemplate: {
|
|
52
|
-
type: FunctionConstructor;
|
|
53
|
-
required: true;
|
|
54
|
-
};
|
|
55
|
-
useDesktopView: {
|
|
56
|
-
type: BooleanConstructor;
|
|
57
|
-
required: true;
|
|
58
|
-
};
|
|
59
|
-
isLast: {
|
|
60
|
-
type: BooleanConstructor;
|
|
61
|
-
default: boolean;
|
|
62
|
-
};
|
|
63
|
-
noHeightWrapper: BooleanConstructor;
|
|
64
|
-
disabled: {
|
|
65
|
-
type: BooleanConstructor;
|
|
66
|
-
default: boolean;
|
|
67
|
-
};
|
|
68
|
-
}>, {}, {
|
|
69
|
-
toggleReason: string;
|
|
70
|
-
customTooltipStyle: CSSProperties;
|
|
71
|
-
}, {
|
|
72
|
-
currentLanguage(): string;
|
|
73
|
-
showParamHeader(): boolean;
|
|
74
|
-
filteredItems(): Nullable<(UiPossibleChild | RapiItem)[]> | undefined;
|
|
75
|
-
showCollectionViewLabel(): boolean;
|
|
76
|
-
}, {
|
|
77
|
-
getCollectionViewTemplate: (collectionViewElement: CollectionViewElement<CollectionViewElementPossibleTypes>, useSnakeCase?: boolean) => string;
|
|
78
|
-
isDisabled(collectionViewElement: CollectionViewElement): boolean;
|
|
79
|
-
isCollectionViewElement(): boolean;
|
|
80
|
-
/**
|
|
81
|
-
* please remove me when refactor collection view
|
|
82
|
-
* only needed because we need the label for mobile but don't want a header on desktop
|
|
83
|
-
*/
|
|
84
|
-
_disableParamHeader(element: CollectionViewElement): boolean;
|
|
85
|
-
}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
86
|
-
payload: PropType<UiPossibleChildTag>;
|
|
87
|
-
element: {
|
|
88
|
-
type: PropType<CollectionViewElement<CollectionViewElementPossibleTypes>>;
|
|
89
|
-
required: true;
|
|
90
|
-
};
|
|
91
|
-
isGridViewExpanded: {
|
|
92
|
-
type: BooleanConstructor;
|
|
93
|
-
required: true;
|
|
94
|
-
};
|
|
95
|
-
onSelect: {
|
|
96
|
-
type: PropType<(...args: any[]) => void>;
|
|
97
|
-
required: true;
|
|
98
|
-
};
|
|
99
|
-
onDoCollapse: {
|
|
100
|
-
type: PropType<() => void>;
|
|
101
|
-
required: true;
|
|
102
|
-
};
|
|
103
|
-
isDesktop: {
|
|
104
|
-
type: BooleanConstructor;
|
|
105
|
-
required: true;
|
|
106
|
-
};
|
|
107
|
-
onShowDisabledMessage: {
|
|
108
|
-
type: PropType<(_payload: MouseEvent) => void>;
|
|
109
|
-
required: false;
|
|
110
|
-
};
|
|
111
|
-
selectedElement: {
|
|
112
|
-
type: PropType<GridViewElement<import('../../../configurator/components/grid-view/-utils/GridViewHelper').GridViewElementPossiblePayload>>;
|
|
113
|
-
required: false;
|
|
114
|
-
};
|
|
115
|
-
expandedOnDefault: {
|
|
116
|
-
type: BooleanConstructor;
|
|
117
|
-
required: true;
|
|
118
|
-
};
|
|
119
|
-
onExpandGridView: {
|
|
120
|
-
type: FunctionConstructor;
|
|
121
|
-
required: true;
|
|
122
|
-
};
|
|
123
|
-
state: {
|
|
124
|
-
type: PropType<CollectionViewUiState>;
|
|
125
|
-
required: true;
|
|
126
|
-
};
|
|
127
|
-
getTemplate: {
|
|
128
|
-
type: FunctionConstructor;
|
|
129
|
-
required: true;
|
|
130
|
-
};
|
|
131
|
-
useDesktopView: {
|
|
132
|
-
type: BooleanConstructor;
|
|
133
|
-
required: true;
|
|
134
|
-
};
|
|
135
|
-
isLast: {
|
|
136
|
-
type: BooleanConstructor;
|
|
137
|
-
default: boolean;
|
|
138
|
-
};
|
|
139
|
-
noHeightWrapper: BooleanConstructor;
|
|
140
|
-
disabled: {
|
|
141
|
-
type: BooleanConstructor;
|
|
142
|
-
default: boolean;
|
|
143
|
-
};
|
|
144
|
-
}>> & Readonly<{}>, {
|
|
6
|
+
declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
|
|
7
|
+
payload?: UiPossibleChildTag;
|
|
8
|
+
element: CollectionViewElement<CollectionViewElementPossibleTypes>;
|
|
9
|
+
isGridViewExpanded?: boolean;
|
|
10
|
+
onSelect?: (...args: any[]) => void;
|
|
11
|
+
onDoCollapse: () => void;
|
|
12
|
+
isDesktop: boolean;
|
|
13
|
+
onShowDisabledMessage?: (_payload: MouseEvent) => void;
|
|
14
|
+
selectedElement?: GridViewElement<import('../../../configurator/components/grid-view/-utils/GridViewHelper').GridViewElementPossiblePayload>;
|
|
15
|
+
expandedOnDefault?: boolean;
|
|
16
|
+
onExpandGridView: (element: CollectionViewElement<CollectionViewElementPossibleTypes>) => void;
|
|
17
|
+
state: CollectionViewUiState;
|
|
18
|
+
getTemplate: (collectionViewElement: CollectionViewElement<CollectionViewElementPossibleTypes>, useSnakeCase?: boolean) => string;
|
|
19
|
+
useDesktopView: boolean;
|
|
20
|
+
isLast?: boolean;
|
|
21
|
+
noHeightWrapper?: boolean;
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
24
|
+
payload?: UiPossibleChildTag;
|
|
25
|
+
element: CollectionViewElement<CollectionViewElementPossibleTypes>;
|
|
26
|
+
isGridViewExpanded?: boolean;
|
|
27
|
+
onSelect?: (...args: any[]) => void;
|
|
28
|
+
onDoCollapse: () => void;
|
|
29
|
+
isDesktop: boolean;
|
|
30
|
+
onShowDisabledMessage?: (_payload: MouseEvent) => void;
|
|
31
|
+
selectedElement?: GridViewElement<import('../../../configurator/components/grid-view/-utils/GridViewHelper').GridViewElementPossiblePayload>;
|
|
32
|
+
expandedOnDefault?: boolean;
|
|
33
|
+
onExpandGridView: (element: CollectionViewElement<CollectionViewElementPossibleTypes>) => void;
|
|
34
|
+
state: CollectionViewUiState;
|
|
35
|
+
getTemplate: (collectionViewElement: CollectionViewElement<CollectionViewElementPossibleTypes>, useSnakeCase?: boolean) => string;
|
|
36
|
+
useDesktopView: boolean;
|
|
37
|
+
isLast?: boolean;
|
|
38
|
+
noHeightWrapper?: boolean;
|
|
39
|
+
disabled?: boolean;
|
|
40
|
+
}> & Readonly<{}>, {
|
|
145
41
|
disabled: boolean;
|
|
146
|
-
noHeightWrapper: boolean;
|
|
147
42
|
isLast: boolean;
|
|
148
|
-
}, {}, {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
tooltipText: string;
|
|
153
|
-
parameterAdditionalInfos?: import('@roomle/web-sdk/lib/definitions/typings/rapi-types').AdditionalInfo[];
|
|
154
|
-
isParameter?: boolean;
|
|
155
|
-
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
156
|
-
payload: CollectionViewElementPossibleTypes | import('../../../configurator/components/grid-view/-utils/GridViewHelper').GridViewElementPossiblePayload;
|
|
157
|
-
onClick: () => void;
|
|
158
|
-
tooltipText: string;
|
|
159
|
-
parameterAdditionalInfos?: import('@roomle/web-sdk/lib/definitions/typings/rapi-types').AdditionalInfo[];
|
|
160
|
-
isParameter?: boolean;
|
|
161
|
-
}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
162
|
-
HeightContainer: {
|
|
163
|
-
new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & Readonly<{}> & Readonly<{}>, {}, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
|
|
164
|
-
P: {};
|
|
165
|
-
B: {};
|
|
166
|
-
D: {};
|
|
167
|
-
C: {};
|
|
168
|
-
M: {};
|
|
169
|
-
Defaults: {};
|
|
170
|
-
}, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, {}>;
|
|
171
|
-
__isFragment?: never;
|
|
172
|
-
__isTeleport?: never;
|
|
173
|
-
__isSuspense?: never;
|
|
174
|
-
} & import('vue').ComponentOptionsBase<Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
|
|
175
|
-
$slots: {
|
|
176
|
-
header?(_: {}): any;
|
|
177
|
-
header?(_: {}): any;
|
|
178
|
-
content?(_: {}): any;
|
|
179
|
-
content?(_: {}): any;
|
|
180
|
-
};
|
|
181
|
-
});
|
|
182
|
-
SvgIcon: import('vue').DefineComponent<{
|
|
183
|
-
icon: string;
|
|
184
|
-
}, {
|
|
185
|
-
svgIcon: import('vue').Ref<HTMLOrSVGElement, HTMLOrSVGElement>;
|
|
186
|
-
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
187
|
-
icon: string;
|
|
188
|
-
}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
189
|
-
ParameterTooltip: import('vue').DefineComponent<{
|
|
190
|
-
payload: CollectionViewElementPossibleTypes;
|
|
191
|
-
placement: "left" | "right" | "top" | "bottom";
|
|
192
|
-
customTooltipStyle: Record<string, any>;
|
|
193
|
-
mobileBehavior: boolean;
|
|
194
|
-
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
195
|
-
payload: CollectionViewElementPossibleTypes;
|
|
196
|
-
placement: "left" | "right" | "top" | "bottom";
|
|
197
|
-
customTooltipStyle: Record<string, any>;
|
|
198
|
-
mobileBehavior: boolean;
|
|
199
|
-
}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
200
|
-
ConfiguratorParameter: import('vue').DefineComponent<{
|
|
201
|
-
element: CollectionViewElement<CollectionViewElementPossibleTypes>;
|
|
202
|
-
onExpandGridView?: (element: any) => void;
|
|
203
|
-
onCollapse?: () => void;
|
|
204
|
-
onSelect?: (...args: any[]) => void;
|
|
205
|
-
isDesktop?: boolean;
|
|
206
|
-
state?: CollectionViewUiState;
|
|
207
|
-
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
208
|
-
element: CollectionViewElement<CollectionViewElementPossibleTypes>;
|
|
209
|
-
onExpandGridView?: (element: any) => void;
|
|
210
|
-
onCollapse?: () => void;
|
|
211
|
-
onSelect?: (...args: any[]) => void;
|
|
212
|
-
isDesktop?: boolean;
|
|
213
|
-
state?: CollectionViewUiState;
|
|
214
|
-
}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
215
|
-
}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
43
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
|
|
44
|
+
default?(_: {}): any;
|
|
45
|
+
default?(_: {}): any;
|
|
46
|
+
}>;
|
|
216
47
|
export default _default;
|
|
48
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
49
|
+
new (): {
|
|
50
|
+
$slots: S;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
@@ -3,7 +3,9 @@ import { KernelPartListParameter, UiPossibleChildTag } from '@roomle/web-sdk/lib
|
|
|
3
3
|
import { CollectionViewElement, TabCategory } from '../components/collection-view/-utils/types';
|
|
4
4
|
import { VariantsMap } from '../../configurator/embedding/types';
|
|
5
5
|
import { RoomleConfiguratorType } from './types';
|
|
6
|
+
import { Translator } from '../composables/use-intl';
|
|
6
7
|
|
|
8
|
+
export declare const DISABLED_PARAMETERS_ELEM_KEY = "disabled-parameters";
|
|
7
9
|
export interface RapiMaterialEmbeddedTextures extends RapiMaterial {
|
|
8
10
|
embeddedTextures?: RapiTexture[];
|
|
9
11
|
[key: string]: any;
|
|
@@ -17,3 +19,4 @@ export declare const addonsHaveGroups: (addons: UiPossibleChildTag[]) => boolean
|
|
|
17
19
|
export declare const extractRootComponentId: (id: string) => string;
|
|
18
20
|
export declare const getCurrentVariants: (api: RoomleConfiguratorType, id: string, variantChangeMap?: VariantsMap) => Promise<RapiTagForUi>;
|
|
19
21
|
export declare const prepareParametersForUi: (parameters: KernelPartListParameter[]) => KernelPartListParameter[];
|
|
22
|
+
export declare const createDisabledParamsElement: (elements: CollectionViewElement[], intl: Translator) => CollectionViewElement<CollectionViewElement[]>;
|
|
@@ -26,6 +26,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
26
26
|
useRGBColor(): boolean;
|
|
27
27
|
rgbColor(): CssHash;
|
|
28
28
|
roomSketch(): string;
|
|
29
|
+
label(): string;
|
|
29
30
|
}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
30
31
|
expanded: {
|
|
31
32
|
type: BooleanConstructor;
|
|
@@ -55,6 +56,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
55
56
|
type: NumberConstructor;
|
|
56
57
|
default: number;
|
|
57
58
|
};
|
|
59
|
+
uiLabels: {
|
|
60
|
+
type: PropType<import('./GridViewHelper').UiLabels>;
|
|
61
|
+
required: false;
|
|
62
|
+
};
|
|
58
63
|
}>, {}, {}, {
|
|
59
64
|
wrappedLines(): string[];
|
|
60
65
|
}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
@@ -69,6 +74,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
69
74
|
type: NumberConstructor;
|
|
70
75
|
default: number;
|
|
71
76
|
};
|
|
77
|
+
uiLabels: {
|
|
78
|
+
type: PropType<import('./GridViewHelper').UiLabels>;
|
|
79
|
+
required: false;
|
|
80
|
+
};
|
|
72
81
|
}>> & Readonly<{}>, {
|
|
73
82
|
thinText: boolean;
|
|
74
83
|
fontSmall: boolean;
|
|
@@ -96,7 +105,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
96
105
|
imageSize(): number;
|
|
97
106
|
hasMaterialAdditionalInfos(): boolean;
|
|
98
107
|
}, {
|
|
99
|
-
|
|
108
|
+
getGridViewMaterialThumbnail: (material: any, imageSize?: number) => CssHash;
|
|
100
109
|
}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
101
110
|
payload: {
|
|
102
111
|
type: PropType<GridViewElementPossiblePayload>;
|
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import { RapiComponent, RapiItem, RapiMaterial } from '@roomle/web-sdk/lib/definitions/typings/rapi-types';
|
|
2
2
|
import { KernelValue, UiPossibleChild, UiPossibleChildTag } from '@roomle/web-sdk/lib/definitions/typings/kernel';
|
|
3
|
-
import { Nullable } from '../../../../common/utils/types';
|
|
3
|
+
import { CssHash, Nullable } from '../../../../common/utils/types';
|
|
4
4
|
import { MaterialsForObjects, SampleRoom } from '../../../../planner/business-logic/rooms';
|
|
5
5
|
import { SampleMaterial } from '../../../../planner/components/overlays/rooms/utils/ral-colors';
|
|
6
6
|
import { CollectionViewElement } from '../../../../common/components/collection-view/-utils/types';
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
interface WrapLines {
|
|
9
|
+
line1: string;
|
|
10
|
+
line2: string;
|
|
11
|
+
line3: string;
|
|
12
|
+
fullLine: string;
|
|
13
|
+
}
|
|
14
|
+
export interface UiLabels {
|
|
15
|
+
desktop: WrapLines;
|
|
16
|
+
mobile: WrapLines;
|
|
17
|
+
}
|
|
18
|
+
type WithUiLabels<T> = T & {
|
|
19
|
+
uiLabels?: UiLabels;
|
|
20
|
+
};
|
|
21
|
+
export type GridViewElementPossiblePayload = WithUiLabels<RapiMaterial> | WithUiLabels<KernelValue> | WithUiLabels<UiPossibleChild> | WithUiLabels<RapiItem> | WithUiLabels<SampleRoom> | WithUiLabels<SampleMaterial> | WithUiLabels<RapiComponent> | WithUiLabels<MaterialsForObjects>;
|
|
9
22
|
export interface GridViewElement<T = GridViewElementPossiblePayload> {
|
|
10
23
|
key: string;
|
|
11
24
|
payload: T;
|
|
@@ -21,3 +34,5 @@ export interface GridViewGroup<T = GridViewElementPossiblePayload> {
|
|
|
21
34
|
export declare const toGridViewElements: <T = GridViewElementPossiblePayload>(elements: T[], key: string) => Array<GridViewElement<T>>;
|
|
22
35
|
export declare const getAddonSearchGridViewElement: (elements: CollectionViewElement<UiPossibleChildTag>[]) => CollectionViewElement<UiPossibleChildTag>[];
|
|
23
36
|
export declare const getImageSizeHelper: (showWithBigThumbnails: boolean, isDesktop: boolean) => number;
|
|
37
|
+
export declare const getGridViewMaterialThumbnail: (material: any, imageSize?: number) => CssHash;
|
|
38
|
+
export {};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { PropType } from 'vue';
|
|
2
|
-
import { CssHash } from '../../../../common/utils/types';
|
|
3
2
|
import { GridViewUiState } from '../../../../common/store/collection-view-state';
|
|
4
3
|
import { GridViewElementPossiblePayload } from './GridViewHelper';
|
|
5
4
|
|
|
@@ -17,7 +16,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
17
16
|
imageSize(): number;
|
|
18
17
|
hasMaterialAdditionalInfos(): boolean;
|
|
19
18
|
}, {
|
|
20
|
-
|
|
19
|
+
getGridViewMaterialThumbnail: (material: any, imageSize?: number) => import('../../../../common/utils/types').CssHash;
|
|
21
20
|
}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
22
21
|
payload: {
|
|
23
22
|
type: PropType<GridViewElementPossiblePayload>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CollectionViewElement, CollectionViewElementPossibleTypes } from '../../../../common/components/collection-view/-utils/types';
|
|
2
|
+
|
|
3
|
+
declare const _default: import('vue').DefineComponent<{
|
|
4
|
+
parameter: CollectionViewElement<CollectionViewElementPossibleTypes>[];
|
|
5
|
+
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
6
|
+
parameter: CollectionViewElement<CollectionViewElementPossibleTypes>[];
|
|
7
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
8
|
+
export default _default;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import { UiLabels } from '../grid-view/-utils/GridViewHelper';
|
|
3
|
+
|
|
1
4
|
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
2
5
|
text: StringConstructor;
|
|
3
6
|
thinText: BooleanConstructor;
|
|
@@ -10,6 +13,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
10
13
|
type: NumberConstructor;
|
|
11
14
|
default: number;
|
|
12
15
|
};
|
|
16
|
+
uiLabels: {
|
|
17
|
+
type: PropType<UiLabels>;
|
|
18
|
+
required: false;
|
|
19
|
+
};
|
|
13
20
|
}>, {}, {}, {
|
|
14
21
|
wrappedLines(): string[];
|
|
15
22
|
}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
@@ -24,6 +31,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
24
31
|
type: NumberConstructor;
|
|
25
32
|
default: number;
|
|
26
33
|
};
|
|
34
|
+
uiLabels: {
|
|
35
|
+
type: PropType<UiLabels>;
|
|
36
|
+
required: false;
|
|
37
|
+
};
|
|
27
38
|
}>> & Readonly<{}>, {
|
|
28
39
|
thinText: boolean;
|
|
29
40
|
fontSmall: boolean;
|
|
@@ -55,7 +55,8 @@ export declare enum UI_BUTTON {
|
|
|
55
55
|
export declare enum UI_ELEMENTS {
|
|
56
56
|
BOTTOM_BAR = "bottom_bar",
|
|
57
57
|
PARTLIST_BOUNDS = "partlist_bounds",
|
|
58
|
-
INTERACTION_NOTES = "interaction_notes"
|
|
58
|
+
INTERACTION_NOTES = "interaction_notes",
|
|
59
|
+
PARAMETER_GROUPS = "parameter_groups"
|
|
59
60
|
}
|
|
60
61
|
export interface HelpCenterSetting {
|
|
61
62
|
configurator?: boolean;
|
|
@@ -140,6 +141,7 @@ export interface UiInitData extends InitDataDefinition, GlobalInitDataDefinition
|
|
|
140
141
|
[UI_ELEMENTS.BOTTOM_BAR]?: boolean;
|
|
141
142
|
[UI_ELEMENTS.PARTLIST_BOUNDS]?: boolean;
|
|
142
143
|
[UI_ELEMENTS.INTERACTION_NOTES]?: boolean;
|
|
144
|
+
[UI_ELEMENTS.PARAMETER_GROUPS]?: boolean;
|
|
143
145
|
[key: string]: boolean | undefined;
|
|
144
146
|
};
|
|
145
147
|
/**
|
|
@@ -38,7 +38,6 @@ export declare class SdkConnectorPlanner extends Connector {
|
|
|
38
38
|
getObjects(): Promise<import('@roomle/web-sdk/lib/definitions/typings/kernel').UiPlanObject[]>;
|
|
39
39
|
updateProductList(): Promise<void>;
|
|
40
40
|
onSelectionCancel(reason: CancelSelectionReasons): Promise<void>;
|
|
41
|
-
private _checkForVisibleDrawer;
|
|
42
41
|
saveCurrentPlan(): Promise<Nullable<RapiPlanSnapshotGetData | RapiPlan>>;
|
|
43
42
|
saveCurrentConfigurationInPlanSnapshot(configuration: RapiConfigurationEnhanced | ExternalConfiguration): Promise<Nullable<RapiPlanSnapshotGetData | RapiPlan>>;
|
|
44
43
|
private _disableWallDrawingState;
|