@roomle/embedding-lib 5.11.1 → 5.12.0-alpha.10
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 +3 -3
- package/package.json +2 -2
- package/packages/build-tools/src/vite-translations-plugin.d.ts +6 -0
- package/packages/common/src/utils/configurations.d.ts +4 -0
- package/packages/common/src/utils/init-data.d.ts +1 -0
- package/roomle-embedding-lib.es.js +2 -1
- package/roomle-embedding-lib.es.min.js +1 -1
- package/roomle-embedding-lib.umd.js +2 -2
- package/roomle-embedding-lib.umd.min.js +1 -1
- package/src/common/components/SelectionButtons.vue.d.ts +4 -1
- package/src/common/components/ToggleButtons.vue.d.ts +8 -4
- package/src/common/components/drawer-layout/DrawerElement.vue.d.ts +1 -1
- package/src/common/components/utils/QRCode.vue.d.ts +14 -134
- package/src/common/composables/use-configurator-actions-visibility.d.ts +5 -0
- package/src/common/composables/use-event-emitter-listener.d.ts +4 -0
- package/src/common/composables/use-item-variants.d.ts +2 -2
- package/src/common/composables/use-planner-actions-visibility.d.ts +1 -0
- package/src/common/composables/use-shared-sidebar-setup.d.ts +1 -0
- package/src/common/translations/local-translation-source.d.ts +1 -2
- package/src/common/utils/dom.d.ts +1 -1
- package/src/common/utils/types.d.ts +1 -0
- package/src/configurator/business-logic/sdk-connector.d.ts +1 -0
- package/src/configurator/components/utils/RadioButton.vue.d.ts +16 -22
- package/src/configurator/components/utils/ScrollHint.vue.d.ts +30 -12
- package/src/configurator/embedding/exposed-api.d.ts +3 -0
- package/src/configurator/embedding/exposed-callbacks.d.ts +1 -0
- package/src/configurator/embedding/helper.d.ts +1 -1
- package/src/configurator/embedding/types.d.ts +27 -3
- package/src/planner/business-logic/sdk-connector-planner.d.ts +9 -3
- package/src/planner/components/overlays/ProductSettings.vue.d.ts +1 -1
- package/src/planner/components/overlays/rooms/DoorParametersSetting.vue.d.ts +19 -19
- package/src/planner/components/overlays/rooms/FloorColor.vue.d.ts +19 -19
- package/src/planner/components/overlays/rooms/SlopingRoof.vue.d.ts +12 -0
- package/src/planner/components/overlays/rooms/SlopingRoofDirection.vue.d.ts +15 -0
- package/src/planner/components/utils/WallSideIcon.vue.d.ts +11 -1
- package/src/planner/utils/planner-sidebar.d.ts +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
## [5.
|
|
1
|
+
## [5.12.0-alpha.10](https://github.com/roomle-dev/roomle-ui/compare/embedding-lib-v5.12.0-alpha.9...embedding-lib-v5.12.0-alpha.10) (2025-03-05)
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
###
|
|
4
|
+
### Features
|
|
5
5
|
|
|
6
|
-
* add
|
|
6
|
+
* add wall plasterings among options for wall materials ([35fa3c3](https://github.com/roomle-dev/roomle-ui/commit/35fa3c32d3d702c0cca1a41fd477317426445d6e))
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@roomle/embedding-lib",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.12.0-alpha.10",
|
|
4
4
|
"description": "This is a small library which can be used to communicate with the Roomle Configurator",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./roomle-embedding-lib.umd.js",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"npm": "8.3.1"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@roomle/web-sdk": "2.94.0"
|
|
32
|
+
"@roomle/web-sdk": "2.94.0-alpha.25"
|
|
33
33
|
},
|
|
34
34
|
"repository": {
|
|
35
35
|
"type": "git",
|
|
@@ -30,6 +30,7 @@ export declare const FALLBACK_INIT_DATA: {
|
|
|
30
30
|
wallAutoHeight: boolean;
|
|
31
31
|
};
|
|
32
32
|
rotationSnapDegrees: number;
|
|
33
|
+
interactionsCollapsed: boolean;
|
|
33
34
|
};
|
|
34
35
|
export declare const CONFIGURATOR_IDLE = "(idle)";
|
|
35
36
|
export declare const getInitData: (useFallbackId?: boolean) => UiInitData;
|
|
@@ -208,7 +208,8 @@ const z = {
|
|
|
208
208
|
mocAr: !0,
|
|
209
209
|
wallAutoHeight: !1
|
|
210
210
|
},
|
|
211
|
-
rotationSnapDegrees: 10
|
|
211
|
+
rotationSnapDegrees: 10,
|
|
212
|
+
interactionsCollapsed: !1
|
|
212
213
|
}, Y = "(idle)", q = (e) => (O(e), e != null && e.customApiUrl && (e.customApiUrl = decodeURIComponent(e.customApiUrl)), e.shareUrl && (e.deeplink = e.shareUrl.replace(
|
|
213
214
|
X,
|
|
214
215
|
Z
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var H=Object.defineProperty,U=(s,e,t)=>e in s?H(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,c=(s,e,t)=>U(s,typeof e!="symbol"?e+"":e,t);class I{constructor(e,t,r,i){c(this,"_side"),c(this,"_incomingMessageBus",null),c(this,"_outgoingMessageBus",null),c(this,"_execMessage",null),this._side=e,this._incomingMessageBus=t,this._outgoingMessageBus=r,this._execMessage=i,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(e){this._outgoingMessageBus=e}setMessageExecution(e){this._execMessage=e}sendMessage(e,t=[]){return new Promise((r,i)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return r(void 0);const o=new MessageChannel;o.port1.onmessage=n=>{if(!n||!n.data)return o.port1.close(),o.port2.close(),i(new Error(this._side+" received message but response can not be interpreted"));let l;try{l=JSON.parse(n.data)}catch(u){return o.port1.close(),o.port2.close(),this._prepareError(u),i(u)}l.error?i(l.error):l.result!==void 0?r(l.result):r(void 0),o.port1.close(),o.port2.close()};let a="";try{a=JSON.stringify({message:e,args:t})}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(a,"*",[o.port2])})}_handleMessage(e){const t=e.ports&&Array.isArray(e.ports)&&e.ports.length>0?e.ports[0]:null;if(e.data&&t)try{const r=JSON.parse(e.data);if(!this._execMessage)return t.postMessage(JSON.stringify({error:this._side+" is not ready to handle messages"}));Array.isArray(r.args)||(r.args=[r.args]);const i=this._execMessage(r,e);if(i===void 0)return;i.then((o={})=>{let a,n;typeof o=="object"&&o!==null&&(a=o.error,n=o.result),a?t.postMessage(JSON.stringify({error:a})):n!==void 0?t.postMessage(JSON.stringify({result:n})):t.postMessage(JSON.stringify({result:o}))},o=>{t.postMessage(JSON.stringify({error:this._prepareError(o)}))})}catch(r){t.postMessage(JSON.stringify({error:this._prepareError(r)}))}}_prepareError(e){if(typeof e=="string"){const t=this._side+": "+e;return console.error(t),t}return e.message=this._side+": "+e.message,console.error(e),e.message}}const p=".",f={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},_={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},B=async(s,e)=>{if(typeof s!="string")throw new Error('Configurator ID is not a string type: "'+typeof s+'"');const t=e.customApiUrl?e.customApiUrl:"https://api.roomle.com/v2",r=e.overrideTenant||9,i=t+"/configurators/"+s,o="roomle_portal_v2",a="03-"+window.btoa(new Date().toISOString()+";anonymous;"+o),n=()=>{const d={apiKey:o,currentTenant:r,locale:"en",language:"en",device:1,token:a,platform:"web"};return new Headers(d)},l=new Request(i,{method:"GET",headers:n(),mode:"cors",cache:"default"}),u=await fetch(l),{configurator:h}=await u.json();return h},F=()=>{try{return window.self!==window.top}catch{return!0}},C=["127.0.0.1","localhost","0.0.0.0"],k=()=>{const s=F();let e=window.location.href;if(s){if(!document.referrer)return null;e=document.referrer}const{hostname:t}=new URL(e);return t},x=s=>!!(C.includes(s)||s.endsWith("roomle.com")||s.endsWith("gitlab.io")||s.endsWith("gitlab.com")),y=["language","browserLanguage","userLanguage","systemLanguage"],W=(s=null)=>{const e=window.navigator;if(s)return s.substr(0,2);if(Array.isArray(e.languages)&&e.languages.length>0)return e.languages[0].substr(0,2);for(let t=0,r=y.length;t<r;t++){const i=e[y[t]];if(i)return i.substr(0,2)}return"en"},V=(s,e)=>{const t=JSON.parse(JSON.stringify(s));return w(t,e)},w=(s,e)=>{for(const t in e)try{e[t].constructor===Object?s[t]=w(s[t],e[t]):s[t]=e[t]}catch{s[t]=e[t]}return s};var T=(s=>(s.BOTTOM_BAR="bottom_bar",s.PARTLIST_BOUNDS="partlist_bounds",s.INTERACTION_NOTES="interaction_notes",s))(T||{}),G={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};const J={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[T.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1},rotationSnapDegrees:10},$="(idle)",j=s=>(E(s),s!=null&&s.customApiUrl&&(s.customApiUrl=decodeURIComponent(s.customApiUrl)),s.shareUrl&&(s.deeplink=s.shareUrl.replace(Y,Q)),s),E=s=>{if(!s)return;const e=Object.keys(s);for(const t of e){const r=s[t];if(!Array.isArray(r)&&typeof r=="object"&&r!==null&&E(r),Array.isArray(r))for(const i of r)E(i);(r==="true"||r==="false")&&(s[t]=r==="true")}},z=(s,e)=>{e.configuratorId=s.id;const t=s.settings||{};return!e.overrideTenant&&s.tenant&&(e.overrideTenant=s.tenant),V(t,e)},q=()=>{const s={...J};s.locale||(s.locale=W()),s.id===$&&delete s.id;const e=k();return e&&x(e)&&(s.configuratorId="demoConfigurator"),s.customApiUrl=G.VITE_RAPI_URL,s.emails=!1,s},Y="<CONF_ID>",Q="#CONFIGURATIONID#",K=s=>{s.featureFlags||(s.featureFlags={}),typeof s.featureFlags.realPartList!="boolean"&&(s.featureFlags.realPartList=!0),typeof s.featureFlags.globalCallbacks!="boolean"&&(s.featureFlags.globalCallbacks=!0),typeof s.featureFlags.mocAr!="boolean"&&(s.featureFlags.mocAr=!1)},M=()=>/(android)/i.test(navigator.userAgent);class v{constructor(){c(this,"_messageHandler",null),c(this,"isSetupDone",!1),c(this,"viewName","main"),c(this,"plugins",{}),c(this,"pluginsLoaded",[]),c(this,"ui",{callbacks:null}),c(this,"extended",{callbacks:null}),c(this,"configurator",{callbacks:null}),c(this,"analytics",{callbacks:{}}),c(this,"global",{callbacks:{}})}setMessageHandler(e){this._messageHandler=e}handleSetup(e){const{methods:t,callbacks:r}=e;t.forEach(i=>{const o=i.split(p),a=o[0],n=o[1];this[a]||(this[a]={}),this[a][n]=function(){if(!this._messageHandler){console.error("MessageHandler not set");return}return this._messageHandler.sendMessage(i,[...arguments])}.bind(this)}),r.forEach(i=>{const o=i.split(p),a=o[0],n=o[1],l=o[2];this[a]||(this[a]={}),this[a][n]||(this[a][n]={}),this[a][n][l]=()=>{}}),this.isSetupDone=!0}executeMessage({message:e,args:t}){const r=e.split(p),i=r[0],o=r[1],a=r.length===3?r[2]:null;if(a&&this[i][o][a]){const n=this[i][o][a](...t);return n instanceof Promise?n.then(l=>({result:l})):n!==void 0?Promise.resolve({result:n}):Promise.resolve({result:null})}return Promise.reject('Message "'+e+'" is unkown')}setupPlugins(e,t,r="website"){for(const i of e)typeof i=="string"&&i==="dragIn"?this.pluginsLoaded.push(new Promise((o,a)=>{try{import("./drag-in-CYmR1HFI.mjs").then(n=>n.l).then(({DragIn:n})=>{const l=new n(this.ui,t,r,this.viewName);l.init().then(()=>{this.plugins.dragIn=l,o()},a)})}catch(n){a(n)}})):i.name&&i.loader&&this.pluginsLoaded.push(new Promise((o,a)=>{try{i.loader().then(n=>{const l=new n(this.ui,t,r,this.viewName);l.init().then(()=>{this.plugins[i.name]=l,o()},a)})}catch(n){a(n)}}))}}const S=()=>{let s,e;return{promise:new Promise((t,r)=>{s=t,e=r}),resolve:s,reject:e}},N=(s,e,t)=>{let r=null;Object.defineProperty(s,e,{get(){return r||t},set(i){i!=null&&i.mute?r=i.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 }"),r=i)}})},R=()=>window.innerHeight*.01+"px",D=s=>{s&&setTimeout(()=>s.style.setProperty(O,R()),0)},L="rml-styles",X=450,O="--rml-full-height",g={CONTAINER:"rml-container",FILL:"rml-fill",POSITION:"rml-pos",TRANSITION:"rml-transition",ANDROID_HEIGHT:"rml-android-height",OVERFLOW_HIDDEN:"rml-overflow-hidden"},b=new Map;class Z extends v{constructor(e,t,r,i,o){if(super(),c(this,"_waitForIframe"),c(this,"_container"),c(this,"_configuratorSettings"),c(this,"_initData",{}),c(this,"_iframe"),!e||typeof e.id!="string")throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(b.has(t))throw new Error("There is already an instance on this DOM element");if(!document.getElementById(L)){const l=r.zIndex||9999999,u=document.createElement("style");u.type="text/css",u.id=L;const h="transition:all ease-in-out "+X+"ms;",d=["-webkit-","-o-"].reduce((P,A)=>P+=A+h,"")+h,m=R();u.innerHTML=`
|
|
1
|
+
var H=Object.defineProperty,U=(s,e,t)=>e in s?H(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,c=(s,e,t)=>U(s,typeof e!="symbol"?e+"":e,t);class I{constructor(e,t,r,i){c(this,"_side"),c(this,"_incomingMessageBus",null),c(this,"_outgoingMessageBus",null),c(this,"_execMessage",null),this._side=e,this._incomingMessageBus=t,this._outgoingMessageBus=r,this._execMessage=i,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(e){this._outgoingMessageBus=e}setMessageExecution(e){this._execMessage=e}sendMessage(e,t=[]){return new Promise((r,i)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return r(void 0);const o=new MessageChannel;o.port1.onmessage=n=>{if(!n||!n.data)return o.port1.close(),o.port2.close(),i(new Error(this._side+" received message but response can not be interpreted"));let l;try{l=JSON.parse(n.data)}catch(u){return o.port1.close(),o.port2.close(),this._prepareError(u),i(u)}l.error?i(l.error):l.result!==void 0?r(l.result):r(void 0),o.port1.close(),o.port2.close()};let a="";try{a=JSON.stringify({message:e,args:t})}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(a,"*",[o.port2])})}_handleMessage(e){const t=e.ports&&Array.isArray(e.ports)&&e.ports.length>0?e.ports[0]:null;if(e.data&&t)try{const r=JSON.parse(e.data);if(!this._execMessage)return t.postMessage(JSON.stringify({error:this._side+" is not ready to handle messages"}));Array.isArray(r.args)||(r.args=[r.args]);const i=this._execMessage(r,e);if(i===void 0)return;i.then((o={})=>{let a,n;typeof o=="object"&&o!==null&&(a=o.error,n=o.result),a?t.postMessage(JSON.stringify({error:a})):n!==void 0?t.postMessage(JSON.stringify({result:n})):t.postMessage(JSON.stringify({result:o}))},o=>{t.postMessage(JSON.stringify({error:this._prepareError(o)}))})}catch(r){t.postMessage(JSON.stringify({error:this._prepareError(r)}))}}_prepareError(e){if(typeof e=="string"){const t=this._side+": "+e;return console.error(t),t}return e.message=this._side+": "+e.message,console.error(e),e.message}}const p=".",f={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},_={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},B=async(s,e)=>{if(typeof s!="string")throw new Error('Configurator ID is not a string type: "'+typeof s+'"');const t=e.customApiUrl?e.customApiUrl:"https://api.roomle.com/v2",r=e.overrideTenant||9,i=t+"/configurators/"+s,o="roomle_portal_v2",a="03-"+window.btoa(new Date().toISOString()+";anonymous;"+o),n=()=>{const d={apiKey:o,currentTenant:r,locale:"en",language:"en",device:1,token:a,platform:"web"};return new Headers(d)},l=new Request(i,{method:"GET",headers:n(),mode:"cors",cache:"default"}),u=await fetch(l),{configurator:h}=await u.json();return h},F=()=>{try{return window.self!==window.top}catch{return!0}},C=["127.0.0.1","localhost","0.0.0.0"],k=()=>{const s=F();let e=window.location.href;if(s){if(!document.referrer)return null;e=document.referrer}const{hostname:t}=new URL(e);return t},x=s=>!!(C.includes(s)||s.endsWith("roomle.com")||s.endsWith("gitlab.io")||s.endsWith("gitlab.com")),y=["language","browserLanguage","userLanguage","systemLanguage"],W=(s=null)=>{const e=window.navigator;if(s)return s.substr(0,2);if(Array.isArray(e.languages)&&e.languages.length>0)return e.languages[0].substr(0,2);for(let t=0,r=y.length;t<r;t++){const i=e[y[t]];if(i)return i.substr(0,2)}return"en"},V=(s,e)=>{const t=JSON.parse(JSON.stringify(s));return w(t,e)},w=(s,e)=>{for(const t in e)try{e[t].constructor===Object?s[t]=w(s[t],e[t]):s[t]=e[t]}catch{s[t]=e[t]}return s};var T=(s=>(s.BOTTOM_BAR="bottom_bar",s.PARTLIST_BOUNDS="partlist_bounds",s.INTERACTION_NOTES="interaction_notes",s))(T||{}),G={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};const J={mobileLandscape:!0,floorMaterialRootTag:"materials_root",buttons:{renderimage:!0,requestproduct:!0,requestplan:!0,load_product:!0,partlist_print:!0},elements:{[T.INTERACTION_NOTES]:!0},helpcenter:{roomdesigner:!0,configurator:!1,disable:!1},firstPersonView:!0,saveToIdb:!0,featureFlags:{mocAr:!0,wallAutoHeight:!1},rotationSnapDegrees:10,interactionsCollapsed:!1},$="(idle)",j=s=>(E(s),s!=null&&s.customApiUrl&&(s.customApiUrl=decodeURIComponent(s.customApiUrl)),s.shareUrl&&(s.deeplink=s.shareUrl.replace(Y,Q)),s),E=s=>{if(!s)return;const e=Object.keys(s);for(const t of e){const r=s[t];if(!Array.isArray(r)&&typeof r=="object"&&r!==null&&E(r),Array.isArray(r))for(const i of r)E(i);(r==="true"||r==="false")&&(s[t]=r==="true")}},z=(s,e)=>{e.configuratorId=s.id;const t=s.settings||{};return!e.overrideTenant&&s.tenant&&(e.overrideTenant=s.tenant),V(t,e)},q=()=>{const s={...J};s.locale||(s.locale=W()),s.id===$&&delete s.id;const e=k();return e&&x(e)&&(s.configuratorId="demoConfigurator"),s.customApiUrl=G.VITE_RAPI_URL,s.emails=!1,s},Y="<CONF_ID>",Q="#CONFIGURATIONID#",K=s=>{s.featureFlags||(s.featureFlags={}),typeof s.featureFlags.realPartList!="boolean"&&(s.featureFlags.realPartList=!0),typeof s.featureFlags.globalCallbacks!="boolean"&&(s.featureFlags.globalCallbacks=!0),typeof s.featureFlags.mocAr!="boolean"&&(s.featureFlags.mocAr=!1)},M=()=>/(android)/i.test(navigator.userAgent);class v{constructor(){c(this,"_messageHandler",null),c(this,"isSetupDone",!1),c(this,"viewName","main"),c(this,"plugins",{}),c(this,"pluginsLoaded",[]),c(this,"ui",{callbacks:null}),c(this,"extended",{callbacks:null}),c(this,"configurator",{callbacks:null}),c(this,"analytics",{callbacks:{}}),c(this,"global",{callbacks:{}})}setMessageHandler(e){this._messageHandler=e}handleSetup(e){const{methods:t,callbacks:r}=e;t.forEach(i=>{const o=i.split(p),a=o[0],n=o[1];this[a]||(this[a]={}),this[a][n]=function(){if(!this._messageHandler){console.error("MessageHandler not set");return}return this._messageHandler.sendMessage(i,[...arguments])}.bind(this)}),r.forEach(i=>{const o=i.split(p),a=o[0],n=o[1],l=o[2];this[a]||(this[a]={}),this[a][n]||(this[a][n]={}),this[a][n][l]=()=>{}}),this.isSetupDone=!0}executeMessage({message:e,args:t}){const r=e.split(p),i=r[0],o=r[1],a=r.length===3?r[2]:null;if(a&&this[i][o][a]){const n=this[i][o][a](...t);return n instanceof Promise?n.then(l=>({result:l})):n!==void 0?Promise.resolve({result:n}):Promise.resolve({result:null})}return Promise.reject('Message "'+e+'" is unkown')}setupPlugins(e,t,r="website"){for(const i of e)typeof i=="string"&&i==="dragIn"?this.pluginsLoaded.push(new Promise((o,a)=>{try{import("./drag-in-CYmR1HFI.mjs").then(n=>n.l).then(({DragIn:n})=>{const l=new n(this.ui,t,r,this.viewName);l.init().then(()=>{this.plugins.dragIn=l,o()},a)})}catch(n){a(n)}})):i.name&&i.loader&&this.pluginsLoaded.push(new Promise((o,a)=>{try{i.loader().then(n=>{const l=new n(this.ui,t,r,this.viewName);l.init().then(()=>{this.plugins[i.name]=l,o()},a)})}catch(n){a(n)}}))}}const S=()=>{let s,e;return{promise:new Promise((t,r)=>{s=t,e=r}),resolve:s,reject:e}},N=(s,e,t)=>{let r=null;Object.defineProperty(s,e,{get(){return r||t},set(i){i!=null&&i.mute?r=i.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 }"),r=i)}})},R=()=>window.innerHeight*.01+"px",D=s=>{s&&setTimeout(()=>s.style.setProperty(O,R()),0)},L="rml-styles",X=450,O="--rml-full-height",g={CONTAINER:"rml-container",FILL:"rml-fill",POSITION:"rml-pos",TRANSITION:"rml-transition",ANDROID_HEIGHT:"rml-android-height",OVERFLOW_HIDDEN:"rml-overflow-hidden"},b=new Map;class Z extends v{constructor(e,t,r,i,o){if(super(),c(this,"_waitForIframe"),c(this,"_container"),c(this,"_configuratorSettings"),c(this,"_initData",{}),c(this,"_iframe"),!e||typeof e.id!="string")throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(b.has(t))throw new Error("There is already an instance on this DOM element");if(!document.getElementById(L)){const l=r.zIndex||9999999,u=document.createElement("style");u.type="text/css",u.id=L;const h="transition:all ease-in-out "+X+"ms;",d=["-webkit-","-o-"].reduce((P,A)=>P+=A+h,"")+h,m=R();u.innerHTML=`
|
|
2
2
|
.${g.CONTAINER}{${O}:${m};}
|
|
3
3
|
.${g.POSITION}{position:fixed;top:0;left:0;z-index:${l};opacity:0}
|
|
4
4
|
.${g.TRANSITION}{${d}}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
(function(_,p){typeof exports=="object"&&typeof module<"u"?module.exports=p():typeof define=="function"&&define.amd?define(p):(_=typeof globalThis<"u"?globalThis:_||self,_["roomle-embedding-lib"]=_["roomle-embedding-lib"]||{},_["roomle-embedding-lib"].umd=_["roomle-embedding-lib"].umd||{},_["roomle-embedding-lib"].umd.js=p())})(this,function(){"use strict";var te=Object.defineProperty;var ee=(_,p,E)=>p in _?te(_,p,{enumerable:!0,configurable:!0,writable:!0,value:E}):_[p]=E;var c=(_,p,E)=>ee(_,typeof p!="symbol"?p+"":p,E);class _{constructor(e,t,s,n){c(this,"_side");c(this,"_incomingMessageBus",null);c(this,"_outgoingMessageBus",null);c(this,"_execMessage",null);this._side=e,this._incomingMessageBus=t,this._outgoingMessageBus=s,this._execMessage=n,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(e){this._outgoingMessageBus=e}setMessageExecution(e){this._execMessage=e}sendMessage(e,t=[]){return new Promise((s,n)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return s(void 0);const i=new MessageChannel;i.port1.onmessage=a=>{if(!a||!a.data)return i.port1.close(),i.port2.close(),n(new Error(this._side+" received message but response can not be interpreted"));let l;try{l=JSON.parse(a.data)}catch(d){return i.port1.close(),i.port2.close(),this._prepareError(d),n(d)}l.error?n(l.error):l.result!==void 0?s(l.result):s(void 0),i.port1.close(),i.port2.close()};let o="";try{o=JSON.stringify({message:e,args:t})}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,"*",[i.port2])})}_handleMessage(e){const t=e.ports&&Array.isArray(e.ports)&&e.ports.length>0?e.ports[0]:null;if(e.data&&t)try{const s=JSON.parse(e.data);if(!this._execMessage)return t.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,e);if(n===void 0)return;n.then((i={})=>{let o,a;typeof i=="object"&&i!==null&&(o=i.error,a=i.result),o?t.postMessage(JSON.stringify({error:o})):a!==void 0?t.postMessage(JSON.stringify({result:a})):t.postMessage(JSON.stringify({result:i}))},i=>{t.postMessage(JSON.stringify({error:this._prepareError(i)}))})}catch(s){t.postMessage(JSON.stringify({error:this._prepareError(s)}))}}_prepareError(e){if(typeof e=="string"){const t=this._side+": "+e;return console.error(t),t}return e.message=this._side+": "+e.message,console.error(e),e.message}}const p=".",E={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},w={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},pt=async(r,e)=>{if(typeof r!="string")throw new Error('Configurator ID is not a string type: "'+typeof r+'"');const t=e.customApiUrl?e.customApiUrl:"https://api.roomle.com/v2",s=e.overrideTenant||9,n=t+"/configurators/"+r,i="roomle_portal_v2",o="03-"+window.btoa(new Date().toISOString()+";anonymous;"+i),a=()=>{const u={apiKey:i,currentTenant:s,locale:"en",language:"en",device:1,token:o,platform:"web"};return new Headers(u)},l=new Request(n,{method:"GET",headers:a(),mode:"cors",cache:"default"}),d=await fetch(l),{configurator:h}=await d.json();return h},yt=()=>{try{return window.self!==window.top}catch{return!0}},Et=["127.0.0.1","localhost","0.0.0.0"],Dt=()=>{const r=yt();let e=window.location.href;if(r){if(!document.referrer)return null;e=document.referrer}const{hostname:t}=new URL(e);return t},Tt=r=>!!(Et.includes(r)||r.endsWith("roomle.com")||r.endsWith("gitlab.io")||r.endsWith("gitlab.com")),k=["language","browserLanguage","userLanguage","systemLanguage"],St=(r=null)=>{const e=window.navigator;if(r)return r.substr(0,2);if(Array.isArray(e.languages)&&e.languages.length>0)return e.languages[0].substr(0,2);for(let t=0,s=k.length;t<s;t++){const n=e[k[t]];if(n)return n.substr(0,2)}return"en"},It=(r,e)=>{const t=JSON.parse(JSON.stringify(r));return
|
|
1
|
+
(function(_,p){typeof exports=="object"&&typeof module<"u"?module.exports=p():typeof define=="function"&&define.amd?define(p):(_=typeof globalThis<"u"?globalThis:_||self,_["roomle-embedding-lib"]=_["roomle-embedding-lib"]||{},_["roomle-embedding-lib"].umd=_["roomle-embedding-lib"].umd||{},_["roomle-embedding-lib"].umd.js=p())})(this,function(){"use strict";var te=Object.defineProperty;var ee=(_,p,E)=>p in _?te(_,p,{enumerable:!0,configurable:!0,writable:!0,value:E}):_[p]=E;var c=(_,p,E)=>ee(_,typeof p!="symbol"?p+"":p,E);class _{constructor(e,t,s,n){c(this,"_side");c(this,"_incomingMessageBus",null);c(this,"_outgoingMessageBus",null);c(this,"_execMessage",null);this._side=e,this._incomingMessageBus=t,this._outgoingMessageBus=s,this._execMessage=n,this._incomingMessageBus&&this._incomingMessageBus.addEventListener("message",this._handleMessage.bind(this))}setOutgoingMessageBus(e){this._outgoingMessageBus=e}setMessageExecution(e){this._execMessage=e}sendMessage(e,t=[]){return new Promise((s,n)=>{if(this._incomingMessageBus===this._outgoingMessageBus)return s(void 0);const i=new MessageChannel;i.port1.onmessage=a=>{if(!a||!a.data)return i.port1.close(),i.port2.close(),n(new Error(this._side+" received message but response can not be interpreted"));let l;try{l=JSON.parse(a.data)}catch(d){return i.port1.close(),i.port2.close(),this._prepareError(d),n(d)}l.error?n(l.error):l.result!==void 0?s(l.result):s(void 0),i.port1.close(),i.port2.close()};let o="";try{o=JSON.stringify({message:e,args:t})}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,"*",[i.port2])})}_handleMessage(e){const t=e.ports&&Array.isArray(e.ports)&&e.ports.length>0?e.ports[0]:null;if(e.data&&t)try{const s=JSON.parse(e.data);if(!this._execMessage)return t.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,e);if(n===void 0)return;n.then((i={})=>{let o,a;typeof i=="object"&&i!==null&&(o=i.error,a=i.result),o?t.postMessage(JSON.stringify({error:o})):a!==void 0?t.postMessage(JSON.stringify({result:a})):t.postMessage(JSON.stringify({result:i}))},i=>{t.postMessage(JSON.stringify({error:this._prepareError(i)}))})}catch(s){t.postMessage(JSON.stringify({error:this._prepareError(s)}))}}_prepareError(e){if(typeof e=="string"){const t=this._side+": "+e;return console.error(t),t}return e.message=this._side+": "+e.message,console.error(e),e.message}}const p=".",E={REQUEST_BOOT:"requestBoot",SETUP:"setup",WEBSITE_READY:"websiteReady"},w={GET_METHODS:"getMethods",RETURN_METHODS:"returnMethods",REGISTER_CUSTOM_VIEW:"registerCustomView",REGISTER_CUSTOM_VIEW_DONE:"registerCustomViewDone"},pt=async(r,e)=>{if(typeof r!="string")throw new Error('Configurator ID is not a string type: "'+typeof r+'"');const t=e.customApiUrl?e.customApiUrl:"https://api.roomle.com/v2",s=e.overrideTenant||9,n=t+"/configurators/"+r,i="roomle_portal_v2",o="03-"+window.btoa(new Date().toISOString()+";anonymous;"+i),a=()=>{const u={apiKey:i,currentTenant:s,locale:"en",language:"en",device:1,token:o,platform:"web"};return new Headers(u)},l=new Request(n,{method:"GET",headers:a(),mode:"cors",cache:"default"}),d=await fetch(l),{configurator:h}=await d.json();return h},yt=()=>{try{return window.self!==window.top}catch{return!0}},Et=["127.0.0.1","localhost","0.0.0.0"],Dt=()=>{const r=yt();let e=window.location.href;if(r){if(!document.referrer)return null;e=document.referrer}const{hostname:t}=new URL(e);return t},Tt=r=>!!(Et.includes(r)||r.endsWith("roomle.com")||r.endsWith("gitlab.io")||r.endsWith("gitlab.com")),k=["language","browserLanguage","userLanguage","systemLanguage"],St=(r=null)=>{const e=window.navigator;if(r)return r.substr(0,2);if(Array.isArray(e.languages)&&e.languages.length>0)return e.languages[0].substr(0,2);for(let t=0,s=k.length;t<s;t++){const n=e[k[t]];if(n)return n.substr(0,2)}return"en"},It=(r,e)=>{const t=JSON.parse(JSON.stringify(r));return C(t,e)},C=(r,e)=>{for(const t in e)try{e[t].constructor===Object?r[t]=C(r[t],e[t]):r[t]=e[t]}catch{r[t]=e[t]}return r};var z=(r=>(r.BOTTOM_BAR="bottom_bar",r.PARTLIST_BOUNDS="partlist_bounds",r.INTERACTION_NOTES="interaction_notes",r))(z||{}),wt={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};const At={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},rotationSnapDegrees:10,interactionsCollapsed:!1},bt="(idle)",Ot=r=>(L(r),r!=null&&r.customApiUrl&&(r.customApiUrl=decodeURIComponent(r.customApiUrl)),r.shareUrl&&(r.deeplink=r.shareUrl.replace(Mt,Ct)),r),L=r=>{if(!r)return;const e=Object.keys(r);for(const t of e){const s=r[t];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")&&(r[t]=s==="true")}},vt=(r,e)=>{e.configuratorId=r.id;const t=r.settings||{};return!e.overrideTenant&&r.tenant&&(e.overrideTenant=r.tenant),It(t,e)},Rt=()=>{const r={...At};r.locale||(r.locale=St()),r.id===bt&&delete r.id;const e=Dt();return e&&Tt(e)&&(r.configuratorId="demoConfigurator"),r.customApiUrl=wt.VITE_RAPI_URL,r.emails=!1,r},Mt="<CONF_ID>",Ct="#CONFIGURATIONID#",Lt=r=>{r.featureFlags||(r.featureFlags={}),typeof r.featureFlags.realPartList!="boolean"&&(r.featureFlags.realPartList=!0),typeof r.featureFlags.globalCallbacks!="boolean"&&(r.featureFlags.globalCallbacks=!0),typeof r.featureFlags.mocAr!="boolean"&&(r.featureFlags.mocAr=!1)},V=()=>/(android)/i.test(navigator.userAgent);class q{constructor(){c(this,"_messageHandler",null);c(this,"isSetupDone",!1);c(this,"viewName","main");c(this,"plugins",{});c(this,"pluginsLoaded",[]);c(this,"ui",{callbacks:null});c(this,"extended",{callbacks:null});c(this,"configurator",{callbacks:null});c(this,"analytics",{callbacks:{}});c(this,"global",{callbacks:{}})}setMessageHandler(e){this._messageHandler=e}handleSetup(e){const{methods:t,callbacks:s}=e;t.forEach(n=>{const i=n.split(p),o=i[0],a=i[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 i=n.split(p),o=i[0],a=i[1],l=i[2];this[o]||(this[o]={}),this[o][a]||(this[o][a]={}),this[o][a][l]=()=>{}}),this.isSetupDone=!0}executeMessage({message:e,args:t}){const s=e.split(p),n=s[0],i=s[1],o=s.length===3?s[2]:null;if(o&&this[n][i][o]){const a=this[n][i][o](...t);return a instanceof Promise?a.then(l=>({result:l})):a!==void 0?Promise.resolve({result:a}):Promise.resolve({result:null})}return Promise.reject('Message "'+e+'" is unkown')}setupPlugins(e,t,s="website"){for(const n of e)typeof n=="string"&&n==="dragIn"?this.pluginsLoaded.push(new Promise((i,o)=>{try{Promise.resolve().then(()=>Pt).then(({DragIn:a})=>{const l=new a(this.ui,t,s,this.viewName);l.init().then(()=>{this.plugins.dragIn=l,i()},o)})}catch(a){o(a)}})):n.name&&n.loader&&this.pluginsLoaded.push(new Promise((i,o)=>{try{n.loader().then(a=>{const l=new a(this.ui,t,s,this.viewName);l.init().then(()=>{this.plugins[n.name]=l,i()},o)})}catch(a){o(a)}}))}}const K=()=>{let r,e;return{promise:new Promise((s,n)=>{r=s,e=n}),resolve:r,reject:e}},J=(r,e,t)=>{let s=null;Object.defineProperty(r,e,{get(){return s||t},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)}})},j=()=>window.innerHeight*.01+"px",Q=r=>{r&&setTimeout(()=>r.style.setProperty(N,j()),0)},Z="rml-styles",Nt=450,N="--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"},x=new Map;class xt extends q{constructor(t,s,n,i,o){super();c(this,"_waitForIframe");c(this,"_container");c(this,"_configuratorSettings");c(this,"_initData",{});c(this,"_iframe");if(!t||typeof t.id!="string")throw new Error("Please provide a correct configuratorId, you get the correct ID from your Roomle Contact Person");if(x.has(s))throw new Error("There is already an instance on this DOM element");if(!!!document.getElementById(Z)){const h=n.zIndex||9999999,u=document.createElement("style");u.type="text/css",u.id=Z;const g="transition:all ease-in-out "+Nt+"ms;",f=["-webkit-","-o-"].reduce((D,y)=>D+=y+g,"")+g,S=j();u.innerHTML=`
|
|
2
2
|
.${m.CONTAINER}{${N}:${S};}
|
|
3
3
|
.${m.POSITION}{position:fixed;top:0;left:0;z-index:${h};opacity:0}
|
|
4
4
|
.${m.TRANSITION}{${f}}
|
|
5
5
|
.${m.FILL}{width:100%;height:100%;opacity:1}
|
|
6
6
|
.${m.ANDROID_HEIGHT}{height:calc(var(${N},1vh)*100)}
|
|
7
7
|
.${m.OVERFLOW_HIDDEN}{overflow:hidden}
|
|
8
|
-
`,document.head.appendChild(u)}this._executeMessage=this._executeMessage.bind(this);const l=new _("website",window,null,this._executeMessage);this.setMessageHandler(l),this._onResize=this._onResize.bind(this),V()&&window.addEventListener("resize",this._onResize),this._container=s,this._initData=n,this._configuratorSettings=t;const d=this._createIframe();this._onUseFullPage=this._onUseFullPage.bind(this),this._onBackToWebsite=this._onBackToWebsite.bind(this),this._waitForIframe=o,this._container.appendChild(d),this._iframe=d,this.setupPlugins(i,this._iframe),x.set(s,!0)}static createPlanner(t,s,n,i=[]){return this._create(t,s,n,i)}static async connect(t,s=[]){const n=new q;n.viewName=t;const{resolve:i,promise:o}=K(),{resolve:a,promise:l}=K(),d=({message:g,args:f})=>{switch(g){case w.REGISTER_CUSTOM_VIEW_DONE:i();break;case w.RETURN_METHODS:n.handleSetup(f[0]),a();break;default:if(n.isSetupDone)return n.executeMessage({message:g,args:f})}},h=new _("custom-view-"+t,window,window.parent,d);n.setMessageHandler(h);const u=[t];return h.sendMessage(w.REGISTER_CUSTOM_VIEW,u),await o,h.sendMessage(w.GET_METHODS,u),await l,n.setupPlugins(s,document.body,"custom-view"),await Promise.allSettled(n.pluginsLoaded),n}static createConfigurator(t,s,n,i=[]){return this._create(t,s,n,i)}static create(t,s,n,i){return this._create(t,s,n,i)}static createViewer(t,s,n,i=[]){return this._create(t,s,n,i)}static async _create(t,s,n,i){return new Promise(async(o,a)=>{try{const l=
|
|
8
|
+
`,document.head.appendChild(u)}this._executeMessage=this._executeMessage.bind(this);const l=new _("website",window,null,this._executeMessage);this.setMessageHandler(l),this._onResize=this._onResize.bind(this),V()&&window.addEventListener("resize",this._onResize),this._container=s,this._initData=n,this._configuratorSettings=t;const d=this._createIframe();this._onUseFullPage=this._onUseFullPage.bind(this),this._onBackToWebsite=this._onBackToWebsite.bind(this),this._waitForIframe=o,this._container.appendChild(d),this._iframe=d,this.setupPlugins(i,this._iframe),x.set(s,!0)}static createPlanner(t,s,n,i=[]){return this._create(t,s,n,i)}static async connect(t,s=[]){const n=new q;n.viewName=t;const{resolve:i,promise:o}=K(),{resolve:a,promise:l}=K(),d=({message:g,args:f})=>{switch(g){case w.REGISTER_CUSTOM_VIEW_DONE:i();break;case w.RETURN_METHODS:n.handleSetup(f[0]),a();break;default:if(n.isSetupDone)return n.executeMessage({message:g,args:f})}},h=new _("custom-view-"+t,window,window.parent,d);n.setMessageHandler(h);const u=[t];return h.sendMessage(w.REGISTER_CUSTOM_VIEW,u),await o,h.sendMessage(w.GET_METHODS,u),await l,n.setupPlugins(s,document.body,"custom-view"),await Promise.allSettled(n.pluginsLoaded),n}static createConfigurator(t,s,n,i=[]){return this._create(t,s,n,i)}static create(t,s,n,i){return this._create(t,s,n,i)}static createViewer(t,s,n,i=[]){return this._create(t,s,n,i)}static async _create(t,s,n,i){return new Promise(async(o,a)=>{try{const l=C(Rt(),Ot(n));Lt(l);const d=await pt(t,l);n=vt(d,l);const h=new this(d,s,n,i,o);return await Promise.allSettled(h.pluginsLoaded),h}catch(l){return a(l)}})}teardown(){this._container&&x.delete(this._container);const t=this._container.querySelector("iframe");t&&this._container.removeChild(t),window.removeEventListener("resize",this._onResize)}_createIframe(){var n;const t=document.createElement("iframe");let s=((n=this._configuratorSettings)==null?void 0:n.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),t.src=s,t.classList.add(m.CONTAINER),t.classList.add(m.FILL),t}_onResize(){Q(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()&&(Q(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:s},n){var i;if(n.source&&n.source===((i=this._iframe)==null?void 0:i.contentWindow))return t===E.REQUEST_BOOT?this._messageHandler?(this._messageHandler.setOutgoingMessageBus(n.source),Promise.resolve({result:this._initData})):(console.error("MessageHandler not set"),Promise.resolve({error:"MessageHandler not set"})):t===E.SETUP?(this.handleSetup(s[0]),J(this.ui.callbacks,"onUseFullPage",this._onUseFullPage),J(this.ui.callbacks,"onBackToWebsite",this._onBackToWebsite),this._waitForIframe(this),setTimeout(()=>{if(!this._messageHandler){console.error("MessageHandler not set");return}this._messageHandler.sendMessage(E.WEBSITE_READY)},0),Promise.resolve({result:null})):this.executeMessage({message:t,args:s})}}class Gt{constructor(e,t,s,n){c(this,"_mainDomElement");c(this,"_instance");c(this,"_mode","website");c(this,"_viewName","main");this._instance=e,this._mainDomElement=t,this._mode=s,this._viewName=n}async init(){return Promise.resolve()}}const A="rml-drag-in-styles",b="rml-drag-in-drag-element",O="rml-drag-in-overlay",v="rml-drag-in-drag-ghost",tt="rml-drag-in-fade-in",et="rml-drag-in-fade-out",G={DISPLAY_NONE:"rml-display-none"},st=.5,rt="250ms",nt="forwards",it=`@keyframes ${tt} {from{opacity: 0;}to {opacity: ${st};}}`,ot=`@keyframes ${et} {from{opacity: ${st};}to {opacity: 0;}}`,at=`${tt} ${rt} ${nt}`,ct=`${et} ${rt} ${nt}`,R="https://res.cloudinary.com/roomle/image/upload/v1729679975/fallback_afpyqr.jpg",F=112,P=112;class Ft extends Gt{constructor(t,s,n,i){super(t,s,n,i);c(this,"options",{});c(this,"_customDragSignal",new AbortController);this._mainDomElement=s,this._injectStyles(),this._initializeDragGhost()}_injectStyles(){if(!!!document.getElementById(A)){const s=document.createElement("style");s.type="text/css",s.id=A,s.innerHTML=`
|
|
9
9
|
.${G.DISPLAY_NONE}{display:none}
|
|
10
10
|
.${O}{position:absolute;top:0;left:0;width:100%;height:100%;z-index:999;}
|
|
11
11
|
.${v}{position:absolute;top:0;left:0;width:1px;height:1px;z-index:999;pointer-events:none;background-color:transparent;}
|
|
@@ -1,4 +1,4 @@
|
|
|
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=".",N={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 A(e,t)},A=(i,t)=>{for(const e in t)try{t[e].constructor===Object?i[e]=A(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},rotationSnapDegrees:10},Ot="(idle)",xt=i=>(L(i),i!=null&&i.customApiUrl&&(i.customApiUrl=decodeURIComponent(i.customApiUrl)),i.shareUrl&&(i.deeplink=i.shareUrl.replace(Nt,At)),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},Nt="<CONF_ID>",At="#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=`
|
|
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=".",N={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 A(e,t)},A=(i,t)=>{for(const e in t)try{t[e].constructor===Object?i[e]=A(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},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(Nt,At)),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},Nt="<CONF_ID>",At="#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
2
|
.${m.CONTAINER}{${R}:${g};}
|
|
3
3
|
.${m.POSITION}{position:fixed;top:0;left:0;z-index:${c};opacity:0}
|
|
4
4
|
.${m.TRANSITION}{${u}}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { SharedUiState } from '../store';
|
|
2
|
+
|
|
1
3
|
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
2
4
|
rise: BooleanConstructor;
|
|
3
5
|
}>, {}, {}, {
|
|
4
|
-
|
|
6
|
+
sharedUiState(): SharedUiState;
|
|
7
|
+
isExpanded(): boolean;
|
|
5
8
|
}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
6
9
|
rise: BooleanConstructor;
|
|
7
10
|
}>> & Readonly<{}>, {
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
declare const _default: import('vue').DefineComponent<{
|
|
2
|
-
firstIconName
|
|
3
|
-
secondIconName
|
|
2
|
+
firstIconName?: string;
|
|
3
|
+
secondIconName?: string;
|
|
4
|
+
firstLabel?: string;
|
|
5
|
+
secondLabel?: string;
|
|
4
6
|
isActive: boolean;
|
|
5
7
|
toggle: () => void;
|
|
6
8
|
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
7
|
-
firstIconName
|
|
8
|
-
secondIconName
|
|
9
|
+
firstIconName?: string;
|
|
10
|
+
secondIconName?: string;
|
|
11
|
+
firstLabel?: string;
|
|
12
|
+
secondLabel?: string;
|
|
9
13
|
isActive: boolean;
|
|
10
14
|
toggle: () => void;
|
|
11
15
|
}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
@@ -67,8 +67,8 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<im
|
|
|
67
67
|
element: any;
|
|
68
68
|
}>>> & Readonly<{}>, {
|
|
69
69
|
label: string;
|
|
70
|
-
element: CollectionViewElement<CollectionViewElementPossibleTypes>;
|
|
71
70
|
type: string;
|
|
71
|
+
element: CollectionViewElement<CollectionViewElementPossibleTypes>;
|
|
72
72
|
isLast: boolean;
|
|
73
73
|
elemKey: string;
|
|
74
74
|
hideBottomBorder: boolean;
|
|
@@ -1,139 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
4
|
-
text: {
|
|
5
|
-
type: StringConstructor;
|
|
6
|
-
required: true;
|
|
7
|
-
};
|
|
8
|
-
size: {
|
|
9
|
-
type: NumberConstructor;
|
|
10
|
-
required: false;
|
|
11
|
-
default: number;
|
|
12
|
-
};
|
|
13
|
-
color: {
|
|
14
|
-
type: StringConstructor;
|
|
15
|
-
required: false;
|
|
16
|
-
default: string;
|
|
17
|
-
};
|
|
18
|
-
bgColor: {
|
|
19
|
-
type: StringConstructor;
|
|
20
|
-
required: false;
|
|
21
|
-
default: string;
|
|
22
|
-
};
|
|
23
|
-
errorLevel: {
|
|
24
|
-
type: PropType<"M" | "L" | "Q" | "H">;
|
|
25
|
-
validator: (value: string) => boolean;
|
|
26
|
-
required: false;
|
|
27
|
-
default: string;
|
|
28
|
-
};
|
|
29
|
-
}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
30
|
-
text: {
|
|
31
|
-
type: StringConstructor;
|
|
32
|
-
required: true;
|
|
33
|
-
};
|
|
34
|
-
size: {
|
|
35
|
-
type: NumberConstructor;
|
|
36
|
-
required: false;
|
|
37
|
-
default: number;
|
|
38
|
-
};
|
|
39
|
-
color: {
|
|
40
|
-
type: StringConstructor;
|
|
41
|
-
required: false;
|
|
42
|
-
default: string;
|
|
43
|
-
};
|
|
44
|
-
bgColor: {
|
|
45
|
-
type: StringConstructor;
|
|
46
|
-
required: false;
|
|
47
|
-
default: string;
|
|
48
|
-
};
|
|
49
|
-
errorLevel: {
|
|
50
|
-
type: PropType<"M" | "L" | "Q" | "H">;
|
|
51
|
-
validator: (value: string) => boolean;
|
|
52
|
-
required: false;
|
|
53
|
-
default: string;
|
|
54
|
-
};
|
|
55
|
-
}>> & Readonly<{}>, {
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{
|
|
2
|
+
text: string;
|
|
56
3
|
size: number;
|
|
57
4
|
color: string;
|
|
58
5
|
bgColor: string;
|
|
59
6
|
errorLevel: "M" | "L" | "Q" | "H";
|
|
60
|
-
}, {}, {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
};
|
|
73
|
-
size: {
|
|
74
|
-
type: NumberConstructor;
|
|
75
|
-
default: number;
|
|
76
|
-
};
|
|
77
|
-
level: {
|
|
78
|
-
type: PropType<import('qrcode.vue').Level>;
|
|
79
|
-
default: string;
|
|
80
|
-
validator: (l: any) => boolean;
|
|
81
|
-
};
|
|
82
|
-
background: {
|
|
83
|
-
type: StringConstructor;
|
|
84
|
-
default: string;
|
|
85
|
-
};
|
|
86
|
-
foreground: {
|
|
87
|
-
type: StringConstructor;
|
|
88
|
-
default: string;
|
|
89
|
-
};
|
|
90
|
-
margin: {
|
|
91
|
-
type: NumberConstructor;
|
|
92
|
-
required: boolean;
|
|
93
|
-
default: number;
|
|
94
|
-
};
|
|
95
|
-
}, unknown, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, Readonly<import('vue').ExtractPropTypes<{
|
|
96
|
-
renderAs: {
|
|
97
|
-
type: PropType<import('qrcode.vue').RenderAs>;
|
|
98
|
-
required: boolean;
|
|
99
|
-
default: string;
|
|
100
|
-
validator: (as: any) => boolean;
|
|
101
|
-
};
|
|
102
|
-
value: {
|
|
103
|
-
type: StringConstructor;
|
|
104
|
-
required: boolean;
|
|
105
|
-
default: string;
|
|
106
|
-
};
|
|
107
|
-
size: {
|
|
108
|
-
type: NumberConstructor;
|
|
109
|
-
default: number;
|
|
110
|
-
};
|
|
111
|
-
level: {
|
|
112
|
-
type: PropType<import('qrcode.vue').Level>;
|
|
113
|
-
default: string;
|
|
114
|
-
validator: (l: any) => boolean;
|
|
115
|
-
};
|
|
116
|
-
background: {
|
|
117
|
-
type: StringConstructor;
|
|
118
|
-
default: string;
|
|
119
|
-
};
|
|
120
|
-
foreground: {
|
|
121
|
-
type: StringConstructor;
|
|
122
|
-
default: string;
|
|
123
|
-
};
|
|
124
|
-
margin: {
|
|
125
|
-
type: NumberConstructor;
|
|
126
|
-
required: boolean;
|
|
127
|
-
default: number;
|
|
128
|
-
};
|
|
129
|
-
}>>, {
|
|
130
|
-
value: string;
|
|
131
|
-
size: number;
|
|
132
|
-
level: import('qrcode.vue').Level;
|
|
133
|
-
background: string;
|
|
134
|
-
foreground: string;
|
|
135
|
-
margin: number;
|
|
136
|
-
renderAs: import('qrcode.vue').RenderAs;
|
|
137
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
138
|
-
}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
7
|
+
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
8
|
+
text: string;
|
|
9
|
+
size: number;
|
|
10
|
+
color: string;
|
|
11
|
+
bgColor: string;
|
|
12
|
+
errorLevel: "M" | "L" | "Q" | "H";
|
|
13
|
+
}> & Readonly<{}>, {
|
|
14
|
+
size: number;
|
|
15
|
+
color: string;
|
|
16
|
+
bgColor: string;
|
|
17
|
+
errorLevel: "M" | "L" | "Q" | "H";
|
|
18
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
139
19
|
export default _default;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { SceneSelection } from '../../configurator/store/ui-state';
|
|
2
|
+
import { Nullable } from '../utils/types';
|
|
3
|
+
|
|
4
|
+
export declare const isExternalModuleSelection: (currentSelection: Nullable<SceneSelection>) => boolean;
|
|
5
|
+
export declare const isDeletePossible: (currentSelection: Nullable<SceneSelection>) => boolean;
|
|
1
6
|
export declare const useConfiguratorActionsVisibility: () => {
|
|
2
7
|
showStartConfiguring: import('vue').ComputedRef<boolean>;
|
|
3
8
|
showDelete: import('vue').ComputedRef<any>;
|
|
@@ -23,11 +23,13 @@ export declare const SIDEBAR_EVENTS: {
|
|
|
23
23
|
readonly SET_SIDEBAR: "set-sidebar";
|
|
24
24
|
readonly POP_SIDEBAR: "pop-sidebar";
|
|
25
25
|
readonly TOGGLE_SIDEBAR: "toggle-sidebar";
|
|
26
|
+
readonly ACTIVATE_SIDEBAR: "activate-sidebar";
|
|
26
27
|
};
|
|
27
28
|
export interface SidebarEventTypes {
|
|
28
29
|
[SIDEBAR_EVENTS.SET_SIDEBAR]: SidebarType;
|
|
29
30
|
[SIDEBAR_EVENTS.POP_SIDEBAR]: void;
|
|
30
31
|
[SIDEBAR_EVENTS.TOGGLE_SIDEBAR]: void;
|
|
32
|
+
[SIDEBAR_EVENTS.ACTIVATE_SIDEBAR]: SidebarType;
|
|
31
33
|
}
|
|
32
34
|
export declare const NOTIFICATION_EVENTS: {
|
|
33
35
|
readonly SET_NOTIFICATION_STATE: "set-notification-state";
|
|
@@ -44,6 +46,7 @@ export interface UpdateEventTypes {
|
|
|
44
46
|
export declare const CUSTOM_VIEW_EVENTS: {
|
|
45
47
|
readonly SHOW: "show-custom-view";
|
|
46
48
|
readonly HIDE: "hide-custom-view";
|
|
49
|
+
readonly ATTIC_UPDATED: "attic-updated";
|
|
47
50
|
};
|
|
48
51
|
export interface CustomViewEventTypes {
|
|
49
52
|
[CUSTOM_VIEW_EVENTS.SHOW]: {
|
|
@@ -54,6 +57,7 @@ export interface CustomViewEventTypes {
|
|
|
54
57
|
viewName: PossibleCustomViews;
|
|
55
58
|
options: PossibleCustomViewSettings;
|
|
56
59
|
};
|
|
60
|
+
[CUSTOM_VIEW_EVENTS.ATTIC_UPDATED]: boolean;
|
|
57
61
|
}
|
|
58
62
|
interface EventEmitterTypes extends SidebarEventTypes, UpdateEventTypes, NotificationEventTypes, CustomViewEventTypes {
|
|
59
63
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SdkConnector } from '../../configurator/business-logic/sdk-connector';
|
|
2
|
-
import { RapiTag } from '@roomle/web-sdk/lib/definitions/typings/rapi-types';
|
|
2
|
+
import { RapiTag, RapiId } from '@roomle/web-sdk/lib/definitions/typings/rapi-types';
|
|
3
3
|
import { ComputedRef, Ref } from 'vue';
|
|
4
4
|
import { Enumify, PLAN_OBJECT_TYPES } from '../utils/types';
|
|
5
5
|
import { UseAsyncData } from '../utils/composable-helpers';
|
|
6
6
|
|
|
7
|
-
export declare const useItemVariants: (tagIdsRef: Ref<string[]> | ComputedRef<string[]>, sdkConnector: SdkConnector, filteredVariantType: Enumify<typeof PLAN_OBJECT_TYPES>) => ComputedRef<UseAsyncData<RapiTag[]>>;
|
|
7
|
+
export declare const useItemVariants: (tagIdsRef: Ref<string[]> | ComputedRef<string[]>, sdkConnector: SdkConnector, filteredVariantType: Enumify<typeof PLAN_OBJECT_TYPES> | Ref<Enumify<typeof PLAN_OBJECT_TYPES>>, rootTags?: RapiId | RapiId[]) => ComputedRef<UseAsyncData<RapiTag[]>>;
|
|
@@ -8,4 +8,5 @@ export declare const usePlannerActionsVisibility: () => {
|
|
|
8
8
|
showSwitchProduct: import('vue').ComputedRef<boolean>;
|
|
9
9
|
showProductFlip: import('vue').ComputedRef<boolean>;
|
|
10
10
|
selectionIsConstructionElement: import('vue').ComputedRef<boolean>;
|
|
11
|
+
showSlopingButton: import('vue').ComputedRef<any>;
|
|
11
12
|
};
|
|
@@ -34,6 +34,7 @@ export declare const useSharedSidebarSetup: (topBar: Ref<HTMLElement> | null) =>
|
|
|
34
34
|
tooltip: string;
|
|
35
35
|
}[];
|
|
36
36
|
checkboxToggle: Ref<HTMLInputElement, HTMLInputElement>;
|
|
37
|
+
isLandscape: import('vue').ComputedRef<any>;
|
|
37
38
|
currentViewMode: import('vue').ComputedRef<any>;
|
|
38
39
|
isPartlistShown: import('vue').ComputedRef<any>;
|
|
39
40
|
areDimensionsVisible: import('vue').ComputedRef<any>;
|
|
@@ -2,8 +2,7 @@ import { TranslationSource } from '../composables/use-intl';
|
|
|
2
2
|
|
|
3
3
|
export default class LocalTranslationSource implements TranslationSource {
|
|
4
4
|
private _locale;
|
|
5
|
-
private _overrideTranslation
|
|
5
|
+
private _overrideTranslation?;
|
|
6
6
|
constructor(locale: string, overrideTranslation?: any);
|
|
7
7
|
getTranslations(): Promise<any>;
|
|
8
|
-
private _getFallbackTranslations;
|
|
9
8
|
}
|
|
@@ -13,7 +13,7 @@ export declare const removeLoadingScreen: (e2e: boolean | undefined) => Promise<
|
|
|
13
13
|
export declare const hasLoadingScreen: () => boolean;
|
|
14
14
|
export declare const hasLoadingScreenIntend: () => boolean;
|
|
15
15
|
export declare const showLoadingScreen: (e2e: boolean | undefined, delay?: number) => Promise<void>;
|
|
16
|
-
export declare const copyToClipboard: (text: string) => void
|
|
16
|
+
export declare const copyToClipboard: (text: string) => Promise<void>;
|
|
17
17
|
export declare const setLoadingProgress: (percent: number) => void;
|
|
18
18
|
export declare const hideLoadingCircle: () => void;
|
|
19
19
|
export declare const scrollElement: (selectedElement: Element) => void;
|
|
@@ -51,6 +51,7 @@ export declare const DEMO_SCOPES: Record<string, CustomTutorialScope>;
|
|
|
51
51
|
export declare const DEMO_PLATFORMS: Record<string, CustomTutorialPlatform>;
|
|
52
52
|
export declare const PLAN_OBJECT_TYPES: {
|
|
53
53
|
readonly CONFIGURATION: "configuration";
|
|
54
|
+
readonly EXTERNAL_CONFIGURATION: "external-configuration";
|
|
54
55
|
readonly STATIC: "static";
|
|
55
56
|
readonly WALL: "wall";
|
|
56
57
|
readonly WINDOW: "window";
|
|
@@ -122,6 +122,7 @@ export declare class SdkConnector {
|
|
|
122
122
|
initConfigurator(): Promise<void>;
|
|
123
123
|
getTenant(): Promise<import('@roomle/web-sdk/lib/definitions/typings/rapi-types').RapiTenant>;
|
|
124
124
|
saveCurrentConfiguration(): Promise<RapiConfigurationEnhanced>;
|
|
125
|
+
saveCurrentPlanOrConfiguration(): Promise<RapiConfigurationEnhanced | RapiPlanSnapshotGetData>;
|
|
125
126
|
giveGaConsent(): void;
|
|
126
127
|
get hasPlanner(): boolean;
|
|
127
128
|
saveCurrentObject(): Promise<RapiPlan | RapiPlanSnapshotGetData | RapiConfigurationEnhanced>;
|
|
@@ -1,25 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
text: StringConstructor;
|
|
5
|
-
checked: BooleanConstructor;
|
|
6
|
-
value: StringConstructor;
|
|
7
|
-
onClick: PropType<(_payload: MouseEvent) => void>;
|
|
8
|
-
name: {
|
|
9
|
-
type: StringConstructor;
|
|
10
|
-
default: string;
|
|
11
|
-
};
|
|
12
|
-
}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
13
|
-
text: StringConstructor;
|
|
14
|
-
checked: BooleanConstructor;
|
|
15
|
-
value: StringConstructor;
|
|
16
|
-
onClick: PropType<(_payload: MouseEvent) => void>;
|
|
17
|
-
name: {
|
|
18
|
-
type: StringConstructor;
|
|
19
|
-
default: string;
|
|
20
|
-
};
|
|
21
|
-
}>> & Readonly<{}>, {
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{
|
|
2
|
+
checked: boolean;
|
|
3
|
+
value: string;
|
|
22
4
|
name: string;
|
|
5
|
+
onClick: (_payload: MouseEvent) => void;
|
|
6
|
+
text?: string;
|
|
7
|
+
size?: string;
|
|
8
|
+
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
23
9
|
checked: boolean;
|
|
24
|
-
|
|
10
|
+
value: string;
|
|
11
|
+
name: string;
|
|
12
|
+
onClick: (_payload: MouseEvent) => void;
|
|
13
|
+
text?: string;
|
|
14
|
+
size?: string;
|
|
15
|
+
}> & Readonly<{}>, {
|
|
16
|
+
size: string;
|
|
17
|
+
name: string;
|
|
18
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
25
19
|
export default _default;
|
|
@@ -1,13 +1,31 @@
|
|
|
1
|
-
declare const _default: import('vue').DefineComponent<{}, {}, {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
1
|
+
declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>, Readonly<{
|
|
2
|
+
'scroll-content'(_props: {
|
|
3
|
+
setTarget: (el: HTMLElement) => void;
|
|
4
|
+
}): any;
|
|
5
|
+
'left-indicator'(_props: {
|
|
6
|
+
hint: Record<string, boolean>;
|
|
7
|
+
scrollLeft: () => void;
|
|
8
|
+
}): any;
|
|
9
|
+
'right-indicator'(_props: {
|
|
10
|
+
hint: Record<string, boolean>;
|
|
11
|
+
scrollRight: () => void;
|
|
12
|
+
}): any;
|
|
13
|
+
}> & {
|
|
14
|
+
'scroll-content'(_props: {
|
|
15
|
+
setTarget: (el: HTMLElement) => void;
|
|
16
|
+
}): any;
|
|
17
|
+
'left-indicator'(_props: {
|
|
18
|
+
hint: Record<string, boolean>;
|
|
19
|
+
scrollLeft: () => void;
|
|
20
|
+
}): any;
|
|
21
|
+
'right-indicator'(_props: {
|
|
22
|
+
hint: Record<string, boolean>;
|
|
23
|
+
scrollRight: () => void;
|
|
24
|
+
}): any;
|
|
25
|
+
}>;
|
|
13
26
|
export default _default;
|
|
27
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
28
|
+
new (): {
|
|
29
|
+
$slots: S;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
@@ -16,6 +16,7 @@ import { Libs } from '../plugins/libs-plugin';
|
|
|
16
16
|
import { ExposedOverlays } from '../../common/components/utils/-utils/overlays';
|
|
17
17
|
import { default as EventEmitter } from '../../common/business-logic/event-emitter';
|
|
18
18
|
import { DragInOptions } from '../../../packages/embedding-lib/src/plugins/types';
|
|
19
|
+
import { CustomViewSettingsForIframe, PossibleCustomViews } from './types';
|
|
19
20
|
|
|
20
21
|
export declare class ExposedApi {
|
|
21
22
|
private _sdk;
|
|
@@ -163,6 +164,8 @@ export declare class ExposedApi {
|
|
|
163
164
|
disableEvents(): void;
|
|
164
165
|
enableEvents(): void;
|
|
165
166
|
toggleDrawer(): void;
|
|
167
|
+
activateCustomView(viewName: PossibleCustomViews, options: CustomViewSettingsForIframe<any>): void;
|
|
168
|
+
deactivateCustomView(viewName: PossibleCustomViews, options: CustomViewSettingsForIframe<any>): void;
|
|
166
169
|
private _websiteReady;
|
|
167
170
|
private _handleMessage;
|
|
168
171
|
private _forwardSdkCallbacks;
|
|
@@ -14,7 +14,7 @@ import { SelectionPayload } from '@roomle/web-sdk/lib/definitions/planner-core/s
|
|
|
14
14
|
|
|
15
15
|
export declare const startConfiguring: (store: Store<StoreState>, exposedCallbacks: ExposedCallbacks) => void;
|
|
16
16
|
export declare const resetCollectionViewStates: (store: Store<StoreState>) => void;
|
|
17
|
-
export declare const stopConfiguring: (store: Store<StoreState>, sdkConnector: SdkConnector, embeddingCallbacks
|
|
17
|
+
export declare const stopConfiguring: (store: Store<StoreState>, sdkConnector: SdkConnector, embeddingCallbacks?: ExposedCallbacks) => Promise<void>;
|
|
18
18
|
export declare const triggerRequestProduct: (embeddingCallbacks: ExposedCallbacks, sdkConnector: SdkConnector, store: Store<StoreState>, analytics: Analytics) => Promise<void>;
|
|
19
19
|
export declare const sendSaveDraft: (sdkConnector: SdkConnector, store: Store<StoreState>, currentConfiguration: RapiConfigurationEnhanced | Nullable<RapiPlanSnapshotGetData | RapiPlan>) => Promise<import('@roomle/web-sdk/lib/definitions/typings/rapi-types').RapiJson>;
|
|
20
20
|
export declare function handleSave(embeddingCallbacks: ExposedCallbacks, sdkConnector: SdkConnector, store: Store<StoreState>, analytics: Analytics, email?: string): Promise<SaveDraft>;
|
|
@@ -4,6 +4,7 @@ import { Enumify, MEASUREMENT_UNIT, MEASUREMENT_SYSTEM, Nullable, TutorialData }
|
|
|
4
4
|
import { ViewTypeState } from '../../common/store/collection-view-state';
|
|
5
5
|
import { KernelPartList } from '@roomle/web-sdk/lib/definitions/typings/kernel';
|
|
6
6
|
import { INTERACTION_NOTIFICATIONS, NOTIFICATIONS } from '../../common/components/utils/-utils/notifications';
|
|
7
|
+
import { SidebarEventTypes } from '../../common/composables/use-event-emitter-listener';
|
|
7
8
|
|
|
8
9
|
export interface ThumbnailsSettings {
|
|
9
10
|
collapsed: {
|
|
@@ -48,7 +49,8 @@ export declare enum UI_BUTTON {
|
|
|
48
49
|
ADD_MEASUREMENT_LINE = "add_measurement_line",
|
|
49
50
|
HELP_CENTER = "help_center",
|
|
50
51
|
LOAD_PRODUCT = "load_product",
|
|
51
|
-
CONFIGURE_IN_ROOM = "configure_in_room"
|
|
52
|
+
CONFIGURE_IN_ROOM = "configure_in_room",
|
|
53
|
+
SWAP_PRODUCT = "swap_product"
|
|
52
54
|
}
|
|
53
55
|
export declare enum UI_ELEMENTS {
|
|
54
56
|
BOTTOM_BAR = "bottom_bar",
|
|
@@ -65,6 +67,16 @@ interface UiFeatureFlags extends FeatureFlags {
|
|
|
65
67
|
globalCallbacks?: boolean;
|
|
66
68
|
mocAr?: boolean;
|
|
67
69
|
wallAutoHeight?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* @hidden
|
|
72
|
+
* @description ...
|
|
73
|
+
*/
|
|
74
|
+
imosix?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* @hidden
|
|
77
|
+
* @description ...
|
|
78
|
+
*/
|
|
79
|
+
prodmanager?: boolean;
|
|
68
80
|
}
|
|
69
81
|
export interface VariantsMap {
|
|
70
82
|
[key: string]: RapiId;
|
|
@@ -108,6 +120,7 @@ export interface UiInitData extends InitDataDefinition, GlobalInitDataDefinition
|
|
|
108
120
|
[UI_BUTTON.ADD_MEASUREMENT_LINE]?: boolean;
|
|
109
121
|
[UI_BUTTON.HELP_CENTER]?: boolean;
|
|
110
122
|
[UI_BUTTON.CONFIGURE_IN_ROOM]?: boolean;
|
|
123
|
+
[UI_BUTTON.SWAP_PRODUCT]?: boolean;
|
|
111
124
|
[key: string]: boolean | undefined;
|
|
112
125
|
};
|
|
113
126
|
/**
|
|
@@ -409,8 +422,10 @@ export interface UiInitData extends InitDataDefinition, GlobalInitDataDefinition
|
|
|
409
422
|
/**
|
|
410
423
|
* @description when the configurator/Room Designer is embedded into a too small space we start it in view
|
|
411
424
|
* only mode, then the user has to click the "start" button and the configurator/Room Designer expands over
|
|
412
|
-
* the whole window. This is great for UX but it's not always ideal in every use case. Therefore you can
|
|
413
|
-
*
|
|
425
|
+
* the whole window. This is great for UX, but it's not always ideal in every use case. Therefore, you can
|
|
426
|
+
* force either behaviour by setting autoStart to true or false.
|
|
427
|
+
*
|
|
428
|
+
* default: true if screen with is bigger than 1024px otherwise false
|
|
414
429
|
*/
|
|
415
430
|
autoStart?: boolean;
|
|
416
431
|
/**
|
|
@@ -422,6 +437,12 @@ export interface UiInitData extends InitDataDefinition, GlobalInitDataDefinition
|
|
|
422
437
|
* @description For use with planner only, if set to true the room will be shown while configuring a configurable object.
|
|
423
438
|
*/
|
|
424
439
|
configureInRoom?: boolean;
|
|
440
|
+
/**
|
|
441
|
+
* @internal
|
|
442
|
+
* @description Keeps the interaction container collapsed.
|
|
443
|
+
* This is only used if the room designer is embedded in the technical configurator. (BO PoC 2)
|
|
444
|
+
*/
|
|
445
|
+
interactionsCollapsed?: boolean;
|
|
425
446
|
/**
|
|
426
447
|
* @description define when you want to show the search bar, currently we hide the search bar until there are more than 10 elements.
|
|
427
448
|
* since it is a query param the value is a string. Please only provide a string that can be parseInt(x,10) otherwise it will be
|
|
@@ -502,4 +523,7 @@ export type CustomViewCallbackInfo = {
|
|
|
502
523
|
export type PossibleCustomViewSettings = CustomViews[keyof CustomViews];
|
|
503
524
|
export type PossibleCustomViews = keyof CustomViews;
|
|
504
525
|
export type PossibleCustomViewsAndMain = PossibleCustomViews | 'main';
|
|
526
|
+
export type SidebarEventCallbackInfo = {
|
|
527
|
+
[K in keyof SidebarEventTypes]: SidebarEventTypes[K] extends void ? [viewName: K] | [viewName: K, viewArgs: void] : [viewName: K, viewArgs: SidebarEventTypes[K]];
|
|
528
|
+
}[keyof SidebarEventTypes];
|
|
505
529
|
export {};
|
|
@@ -6,12 +6,13 @@ import { RoomleSdkWrapper } from '../../configurator/business-logic/roomle-sdk-w
|
|
|
6
6
|
import { UiInitData } from '../../configurator/embedding/types';
|
|
7
7
|
import { default as RoomlePlanner } from '@roomle/web-sdk/lib/definitions/planner-core/src/roomle-planner';
|
|
8
8
|
import { PLAN_ELEMENT_CHANGE_TYPES, SelectionPayload } from '@roomle/web-sdk/lib/definitions/planner-core/src/roomle-planner-ui-callback';
|
|
9
|
-
import { RapiId, RapiPlan, RapiPlanSnapshotGetData } from '@roomle/web-sdk/lib/definitions/typings/rapi-types';
|
|
9
|
+
import { RapiConfigurationEnhanced, RapiId, RapiPlan, RapiPlanSnapshotGetData } from '@roomle/web-sdk/lib/definitions/typings/rapi-types';
|
|
10
10
|
import { CancelSelectionReasons } from '@roomle/web-sdk/lib/definitions/typings/planner';
|
|
11
11
|
import { Connector } from '../../common/business-logic/connector';
|
|
12
12
|
import { default as PlanElementViewModel } from '@roomle/web-sdk/lib/definitions/common-core/src/view-model/plan-element-view-model';
|
|
13
13
|
import { RuntimeId } from '@roomle/web-sdk/lib/definitions/typings/kernel';
|
|
14
14
|
import { default as EventEmitter } from '../../common/business-logic/event-emitter';
|
|
15
|
+
import { SdkConnector } from '../../configurator/business-logic/sdk-connector';
|
|
15
16
|
|
|
16
17
|
export declare const getConstructionWallAngle: (selectionElement: Nullable<PlanElementViewModel>) => Nullable<number>;
|
|
17
18
|
export declare class SdkConnectorPlanner extends Connector {
|
|
@@ -22,10 +23,13 @@ export declare class SdkConnectorPlanner extends Connector {
|
|
|
22
23
|
private _analytics;
|
|
23
24
|
private _eventEmitter;
|
|
24
25
|
private _lastPlanId;
|
|
26
|
+
private _lastPlanWithSingleObjectId;
|
|
25
27
|
private _currentPlan;
|
|
28
|
+
private _currentPlanWithSingleObject;
|
|
26
29
|
private _loadedLocalPlan;
|
|
27
30
|
private _initData;
|
|
28
|
-
|
|
31
|
+
private _sdkConnector;
|
|
32
|
+
constructor(store: Store<StoreState>, analytics?: Nullable<Analytics>, eventEmitter?: Nullable<EventEmitter>, sdkConnector?: Nullable<SdkConnector>);
|
|
29
33
|
get api(): Promise<RoomlePlanner>;
|
|
30
34
|
init(sdkWrapper: RoomleSdkWrapper, element: HTMLElement, initData: UiInitData): Promise<void>;
|
|
31
35
|
initPlanner(planner: RoomlePlanner): Promise<void>;
|
|
@@ -36,13 +40,14 @@ export declare class SdkConnectorPlanner extends Connector {
|
|
|
36
40
|
onSelectionCancel(reason: CancelSelectionReasons): Promise<void>;
|
|
37
41
|
private _checkForVisibleDrawer;
|
|
38
42
|
saveCurrentPlan(): Promise<Nullable<RapiPlanSnapshotGetData | RapiPlan>>;
|
|
43
|
+
saveCurrentConfigurationInPlanSnapshot(configuration: RapiConfigurationEnhanced): Promise<Nullable<RapiPlanSnapshotGetData | RapiPlan>>;
|
|
39
44
|
private _disableWallDrawingState;
|
|
40
45
|
private _enableWallDrawingState;
|
|
41
46
|
switch2D(): Promise<void>;
|
|
42
47
|
switch3D(): Promise<void>;
|
|
43
48
|
switchFp(): Promise<void>;
|
|
44
49
|
confirmRoom(switchTo2D: boolean): Promise<void>;
|
|
45
|
-
cancelSelection(): Promise<void>;
|
|
50
|
+
cancelSelection(reason: CancelSelectionReasons): Promise<void>;
|
|
46
51
|
private _toggleFirstPersonControlsNotification;
|
|
47
52
|
private popSidebar;
|
|
48
53
|
onSelectionChange(_mode: string, objectType: Enumify<typeof PLAN_OBJECT_TYPES>, payload: SelectionPayload, payloadPromise: Promise<SelectionPayload>, planElementViewModel: PlanElementViewModel): void;
|
|
@@ -62,6 +67,7 @@ export declare class SdkConnectorPlanner extends Connector {
|
|
|
62
67
|
private _setSidebarViewNameState;
|
|
63
68
|
preparePartListData(selectedItemPayload: SelectionPayload): Promise<void>;
|
|
64
69
|
private _getCurrentPlanXML;
|
|
70
|
+
private _getPlanXmlWithSingleObject;
|
|
65
71
|
onPlanElementChanged(changeType: Enumify<typeof PLAN_ELEMENT_CHANGE_TYPES>): Promise<void>;
|
|
66
72
|
private _emitConstructionAttachedWallAngle;
|
|
67
73
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CloseReason, ToggleCallback } from '../../../common/utils/types';
|
|
2
1
|
import { default as RoomlePlanner } from '@roomle/web-sdk/lib/definitions/planner-core/src/roomle-planner';
|
|
3
2
|
import { BUTTON_ACTIONS } from '../../../configurator/store/ui-state';
|
|
3
|
+
import { CloseReason, ToggleCallback } from '../../../common/utils/types';
|
|
4
4
|
|
|
5
5
|
declare const _default: import('vue').DefineComponent<{
|
|
6
6
|
onClose: (_action: BUTTON_ACTIONS, _reason: CloseReason) => void;
|
|
@@ -2386,14 +2386,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
2386
2386
|
isDesktop: {
|
|
2387
2387
|
type: PropType<boolean>;
|
|
2388
2388
|
};
|
|
2389
|
-
element: {
|
|
2390
|
-
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
2391
|
-
default: any;
|
|
2392
|
-
};
|
|
2393
2389
|
type: {
|
|
2394
2390
|
type: PropType<string>;
|
|
2395
2391
|
default: string;
|
|
2396
2392
|
};
|
|
2393
|
+
element: {
|
|
2394
|
+
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
2395
|
+
default: any;
|
|
2396
|
+
};
|
|
2397
2397
|
onSelect: {
|
|
2398
2398
|
type: PropType<(element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>) => void>;
|
|
2399
2399
|
};
|
|
@@ -2465,14 +2465,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
2465
2465
|
isDesktop: {
|
|
2466
2466
|
type: PropType<boolean>;
|
|
2467
2467
|
};
|
|
2468
|
-
element: {
|
|
2469
|
-
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
2470
|
-
default: any;
|
|
2471
|
-
};
|
|
2472
2468
|
type: {
|
|
2473
2469
|
type: PropType<string>;
|
|
2474
2470
|
default: string;
|
|
2475
2471
|
};
|
|
2472
|
+
element: {
|
|
2473
|
+
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
2474
|
+
default: any;
|
|
2475
|
+
};
|
|
2476
2476
|
onSelect: {
|
|
2477
2477
|
type: PropType<(element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>) => void>;
|
|
2478
2478
|
};
|
|
@@ -2532,8 +2532,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
2532
2532
|
};
|
|
2533
2533
|
}>> & Readonly<{}>, {
|
|
2534
2534
|
label: string;
|
|
2535
|
-
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
2536
2535
|
type: string;
|
|
2536
|
+
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
2537
2537
|
isLast: boolean;
|
|
2538
2538
|
elemKey: string;
|
|
2539
2539
|
hideBottomBorder: boolean;
|
|
@@ -2558,14 +2558,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
2558
2558
|
isDesktop: {
|
|
2559
2559
|
type: PropType<boolean>;
|
|
2560
2560
|
};
|
|
2561
|
-
element: {
|
|
2562
|
-
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
2563
|
-
default: any;
|
|
2564
|
-
};
|
|
2565
2561
|
type: {
|
|
2566
2562
|
type: PropType<string>;
|
|
2567
2563
|
default: string;
|
|
2568
2564
|
};
|
|
2565
|
+
element: {
|
|
2566
|
+
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
2567
|
+
default: any;
|
|
2568
|
+
};
|
|
2569
2569
|
onSelect: {
|
|
2570
2570
|
type: PropType<(element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>) => void>;
|
|
2571
2571
|
};
|
|
@@ -2625,8 +2625,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
2625
2625
|
};
|
|
2626
2626
|
}>> & Readonly<{}>, {}, {}, {}, {}, {
|
|
2627
2627
|
label: string;
|
|
2628
|
-
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
2629
2628
|
type: string;
|
|
2629
|
+
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
2630
2630
|
isLast: boolean;
|
|
2631
2631
|
elemKey: string;
|
|
2632
2632
|
hideBottomBorder: boolean;
|
|
@@ -2648,14 +2648,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
2648
2648
|
isDesktop: {
|
|
2649
2649
|
type: PropType<boolean>;
|
|
2650
2650
|
};
|
|
2651
|
-
element: {
|
|
2652
|
-
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
2653
|
-
default: any;
|
|
2654
|
-
};
|
|
2655
2651
|
type: {
|
|
2656
2652
|
type: PropType<string>;
|
|
2657
2653
|
default: string;
|
|
2658
2654
|
};
|
|
2655
|
+
element: {
|
|
2656
|
+
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
2657
|
+
default: any;
|
|
2658
|
+
};
|
|
2659
2659
|
onSelect: {
|
|
2660
2660
|
type: PropType<(element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>) => void>;
|
|
2661
2661
|
};
|
|
@@ -2715,8 +2715,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
2715
2715
|
};
|
|
2716
2716
|
}>> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
|
|
2717
2717
|
label: string;
|
|
2718
|
-
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
2719
2718
|
type: string;
|
|
2719
|
+
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
2720
2720
|
isLast: boolean;
|
|
2721
2721
|
elemKey: string;
|
|
2722
2722
|
hideBottomBorder: boolean;
|
|
@@ -1258,14 +1258,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1258
1258
|
isDesktop: {
|
|
1259
1259
|
type: PropType<boolean>;
|
|
1260
1260
|
};
|
|
1261
|
-
element: {
|
|
1262
|
-
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
1263
|
-
default: any;
|
|
1264
|
-
};
|
|
1265
1261
|
type: {
|
|
1266
1262
|
type: PropType<string>;
|
|
1267
1263
|
default: string;
|
|
1268
1264
|
};
|
|
1265
|
+
element: {
|
|
1266
|
+
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
1267
|
+
default: any;
|
|
1268
|
+
};
|
|
1269
1269
|
onSelect: {
|
|
1270
1270
|
type: PropType<(element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>) => void>;
|
|
1271
1271
|
};
|
|
@@ -1337,14 +1337,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1337
1337
|
isDesktop: {
|
|
1338
1338
|
type: PropType<boolean>;
|
|
1339
1339
|
};
|
|
1340
|
-
element: {
|
|
1341
|
-
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
1342
|
-
default: any;
|
|
1343
|
-
};
|
|
1344
1340
|
type: {
|
|
1345
1341
|
type: PropType<string>;
|
|
1346
1342
|
default: string;
|
|
1347
1343
|
};
|
|
1344
|
+
element: {
|
|
1345
|
+
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
1346
|
+
default: any;
|
|
1347
|
+
};
|
|
1348
1348
|
onSelect: {
|
|
1349
1349
|
type: PropType<(element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>) => void>;
|
|
1350
1350
|
};
|
|
@@ -1404,8 +1404,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1404
1404
|
};
|
|
1405
1405
|
}>> & Readonly<{}>, {
|
|
1406
1406
|
label: string;
|
|
1407
|
-
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
1408
1407
|
type: string;
|
|
1408
|
+
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
1409
1409
|
isLast: boolean;
|
|
1410
1410
|
elemKey: string;
|
|
1411
1411
|
hideBottomBorder: boolean;
|
|
@@ -1430,14 +1430,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1430
1430
|
isDesktop: {
|
|
1431
1431
|
type: PropType<boolean>;
|
|
1432
1432
|
};
|
|
1433
|
-
element: {
|
|
1434
|
-
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
1435
|
-
default: any;
|
|
1436
|
-
};
|
|
1437
1433
|
type: {
|
|
1438
1434
|
type: PropType<string>;
|
|
1439
1435
|
default: string;
|
|
1440
1436
|
};
|
|
1437
|
+
element: {
|
|
1438
|
+
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
1439
|
+
default: any;
|
|
1440
|
+
};
|
|
1441
1441
|
onSelect: {
|
|
1442
1442
|
type: PropType<(element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>) => void>;
|
|
1443
1443
|
};
|
|
@@ -1497,8 +1497,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1497
1497
|
};
|
|
1498
1498
|
}>> & Readonly<{}>, {}, {}, {}, {}, {
|
|
1499
1499
|
label: string;
|
|
1500
|
-
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
1501
1500
|
type: string;
|
|
1501
|
+
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
1502
1502
|
isLast: boolean;
|
|
1503
1503
|
elemKey: string;
|
|
1504
1504
|
hideBottomBorder: boolean;
|
|
@@ -1520,14 +1520,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1520
1520
|
isDesktop: {
|
|
1521
1521
|
type: PropType<boolean>;
|
|
1522
1522
|
};
|
|
1523
|
-
element: {
|
|
1524
|
-
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
1525
|
-
default: any;
|
|
1526
|
-
};
|
|
1527
1523
|
type: {
|
|
1528
1524
|
type: PropType<string>;
|
|
1529
1525
|
default: string;
|
|
1530
1526
|
};
|
|
1527
|
+
element: {
|
|
1528
|
+
type: PropType<import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>>;
|
|
1529
|
+
default: any;
|
|
1530
|
+
};
|
|
1531
1531
|
onSelect: {
|
|
1532
1532
|
type: PropType<(element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>) => void>;
|
|
1533
1533
|
};
|
|
@@ -1587,8 +1587,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1587
1587
|
};
|
|
1588
1588
|
}>> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
|
|
1589
1589
|
label: string;
|
|
1590
|
-
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
1591
1590
|
type: string;
|
|
1591
|
+
element: import('../../../../common/components/collection-view/-utils/types').CollectionViewElement<import('../../../../common/components/collection-view/-utils/types').CollectionViewElementPossibleTypes>;
|
|
1592
1592
|
isLast: boolean;
|
|
1593
1593
|
elemKey: string;
|
|
1594
1594
|
hideBottomBorder: boolean;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { default as RoomlePlanner } from '@roomle/web-sdk/lib/definitions/planner-core/src/roomle-planner';
|
|
2
|
+
|
|
3
|
+
declare const _default: import('vue').DefineComponent<{
|
|
4
|
+
api: RoomlePlanner;
|
|
5
|
+
hideInputs?: boolean;
|
|
6
|
+
hideDirection?: boolean;
|
|
7
|
+
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
8
|
+
api: RoomlePlanner;
|
|
9
|
+
hideInputs?: boolean;
|
|
10
|
+
hideDirection?: boolean;
|
|
11
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { KernelAttic } from '@roomle/web-sdk/lib/definitions/typings/planner';
|
|
2
|
+
import { default as RoomlePlanner } from '@roomle/web-sdk/lib/definitions/planner-core/src/roomle-planner';
|
|
3
|
+
|
|
4
|
+
declare const _default: import('vue').DefineComponent<{
|
|
5
|
+
isActive: boolean;
|
|
6
|
+
attachedAttic: KernelAttic;
|
|
7
|
+
api: RoomlePlanner;
|
|
8
|
+
}, {
|
|
9
|
+
direction: import('vue').Ref<"left" | "right", "left" | "right">;
|
|
10
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
11
|
+
isActive: boolean;
|
|
12
|
+
attachedAttic: KernelAttic;
|
|
13
|
+
api: RoomlePlanner;
|
|
14
|
+
}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
15
|
+
export default _default;
|
|
@@ -5,13 +5,23 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
5
5
|
props: {
|
|
6
6
|
type: PropType<WallSideIconProps>;
|
|
7
7
|
};
|
|
8
|
+
flip: {
|
|
9
|
+
type: BooleanConstructor;
|
|
10
|
+
default: boolean;
|
|
11
|
+
};
|
|
8
12
|
}>, {
|
|
9
13
|
wallIconAngle: import('vue').ComputedRef<string>;
|
|
10
14
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
11
15
|
props: {
|
|
12
16
|
type: PropType<WallSideIconProps>;
|
|
13
17
|
};
|
|
14
|
-
|
|
18
|
+
flip: {
|
|
19
|
+
type: BooleanConstructor;
|
|
20
|
+
default: boolean;
|
|
21
|
+
};
|
|
22
|
+
}>> & Readonly<{}>, {
|
|
23
|
+
flip: boolean;
|
|
24
|
+
}, {}, {
|
|
15
25
|
SvgIcon: import('vue').DefineComponent<{
|
|
16
26
|
icon: string;
|
|
17
27
|
}, {
|