;function iSPFrame(ops={}){let has=Object.prototype.hasOwnProperty;let origin="https://cloud.interactivespares.com";let client="stg";let iframe;if(ops&&ops.iframe){if(typeof ops.iframe=="string"){iframe=document.getElementById(ops.iframe)}else if(typeof ops.iframe){iframe=ops.iframe}};if(!iframe||!(iframe instanceof HTMLIFrameElement)){throw new Error("Passed tag must be an iframe");};let bootOrigin=window.origin;let addToCartHandler=null;let priceRequestHandler=null;let mustBeFunction=(arg)=>{if(typeof arg!="function"){throw new Error("Argument must be callable");}};this.onAddToCart=(handler)=>{mustBeFunction(handler);addToCartHandler=handler;return this};this.onPriceRequest=(handler)=>{mustBeFunction(handler);priceRequestHandler=handler;return this};this.goToCatalogue=function(e){var r=new URLSearchParams();if(ops&&ops.prices==!1){r.append("noprices",!0)};var t=r.toString(),a=origin+"/:client/catalogo_iframe/:catalogue"+(t?"?"+t:"");iframe.src=a.replace(":client",client).replace(":catalogue",btoa(e))};this.goToDrawing=function(e){var r=new URLSearchParams();if(ops&&ops.prices==!1){r.append("noprices",!0)};var t=r.toString(),a=origin+"/:client/catalogo_iframe/tavola/:drawing"+(t?"?"+t:"");iframe.src=a.replace(":client",client).replace(":drawing",btoa(e))};let messageHandler=function(r){if(r.origin!==origin||!iframe||r.source!==iframe.contentWindow){return};let data=r.data;switch(data.type){case"isp-msg-add-to-cart":{if(!addToCartHandler){throw new Error("Event handler not defined: 'AddToCart'");};addToCartHandler(data)};break;case"isp-msg-price-request":{if(!priceRequestHandler){throw new Error("Event handler not defined: 'PriceRequest'");};let result=priceRequestHandler(data);Promise.resolve(result).then((data)=>{if(typeof data!=="object"||!has.call(data,"code")||!has.call(data,"price")){throw new Error("Invalid object data in PriceRequest handler result");};var t={type:"isp-msg-price-response",code:data.code,price:data.price,};iframe.contentWindow.postMessage(t,origin)}).catch((e)=>{console.error(e)})};break;default:break}};this.startListener=function(){this.removeListener();window.addEventListener("message",messageHandler);return this};this.removeListener=function(){window.removeEventListener("message",messageHandler);return this}};