@residently/embed-sdk
Version:
Embed Residently listing collections and detail views within your website
4 lines (3 loc) • 1.79 kB
JavaScript
/* Residently SDK v0.0.1-rc.0 */
;var o=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var g=(n,e)=>{for(var i in e)o(n,i,{get:e[i],enumerable:!0})},u=(n,e,i,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of h(e))!f.call(n,t)&&t!==i&&o(n,t,{get:()=>e[t],enumerable:!(s=p(e,t))||s.enumerable});return n};var v=n=>u(o({},"__esModule",{value:!0}),n);var y={};g(y,{Residently:()=>d});module.exports=v(y);var l="0.0.1-rc.0";var a=`${l}`;var d=class n{iframe;events={};static version=a;constructor(){console.log(`Residently SDK version: ${n.version}`)}embedView(e){let{container:i,view:s,collectionToken:t,listingId:r}=e;if(s==="collection"&&!t)throw new Error("A collectionToken is required for the 'collection' view.");if(s==="listing"&&!r)throw new Error("A listingId is required for the 'listing' view.");let c=this.buildIframeUrl(s,t,r);this.iframe=document.createElement("iframe"),this.iframe.src=c,this.iframe.style.width="100%",this.iframe.style.height="100%",this.iframe.style.border="none",i.innerHTML="",i.appendChild(this.iframe),window.addEventListener("message",m=>this.handleMessage(m))}on(e,i){return(this.events[e]||=[]).push(i),()=>{this.events[e]=this.events[e]?.filter(s=>i!==s)}}emit(e,i){(this.events[e]||[]).forEach(t=>t(i))}buildIframeUrl(e,i,s){let t="https://api.residently.com/embed",r=new URLSearchParams;return r.set("view",e),i&&r.set("collection_token",i),s&&r.set("listing_id",s),`${t}?${r.toString()}`}handleMessage(e){if(e.origin!=="https://api.residently.com"){console.warn("Untrusted message origin:",e.origin);return}let i=e.data;i?.type==="listingClicked"&&i?.listingId&&this.emit("listingClicked",i.listingId)}};
//# sourceMappingURL=index.cjs.js.map