@cowprotocol/widget-lib 0.15.0 → 0.18.0

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/index.iife.js CHANGED
@@ -1 +1 @@
1
- var cowSwapWidget=function(l){"use strict";var fe=Object.defineProperty;var de=(l,T,R)=>T in l?fe(l,T,{enumerable:!0,configurable:!0,writable:!0,value:R}):l[T]=R;var v=(l,T,R)=>(de(l,typeof T!="symbol"?T+"":T,R),R);class T{constructor(n){this.key=n}postMessageToWindow(n,t,s){const E=typeof s=="object"?s:{},h={key:this.key,method:t,...E};n.postMessage(h,"*")}listenToMessageFromWindow(n,t,s){const E=h=>{!R(h.data)||h.data.key!==this.key||h.data.method!==t||s(h.data)};return n.addEventListener("message",E),E}stopListeningToMessageFromWindow(n,t,s){n.removeEventListener("message",s)}stopListeningWindowListener(n,t){n.removeEventListener("message",t)}}function R(e){return typeof e=="object"&&e!==null&&"key"in e&&"method"in e&&typeof e.key=="string"&&typeof e.method=="string"}var O=(e=>(e.PROVIDER_RPC_REQUEST="PROVIDER_RPC_REQUEST",e.PROVIDER_RPC_RESPONSE="PROVIDER_RPC_RESPONSE",e.PROVIDER_ON_EVENT="PROVIDER_ON_EVENT",e))(O||{});const W=new T("cowSwapIframeRpcProviderTransport"),H=["connect","disconnect","close","chainChanged","accountsChanged"];class x{constructor(n){v(this,"ethereumProvider",null);v(this,"requestWaitingForConnection",{});v(this,"processRpcCallFromWindow",({rpcRequest:n})=>{if(!this.ethereumProvider){n.id&&(this.requestWaitingForConnection[n.id]=n);return}this.processRpcRequest(n)});this.iframeWidow=n}disconnect(){this.ethereumProvider=null,W.stopListeningToMessageFromWindow(window,O.PROVIDER_RPC_REQUEST,this.processRpcCallFromWindow)}onConnect(n){this.ethereumProvider?this.disconnect():W.listenToMessageFromWindow(window,O.PROVIDER_RPC_REQUEST,this.processRpcCallFromWindow),this.ethereumProvider=n,this.processPendingRequests(),H.forEach(t=>{n.on(t,s=>this.onProviderEvent(t,s))})}processPendingRequests(){Object.keys(this.requestWaitingForConnection).forEach(n=>{this.processRpcRequest(this.requestWaitingForConnection[n])}),this.requestWaitingForConnection={}}processRpcRequest(n){const{id:t,jsonrpc:s,method:E}=n;if(!this.ethereumProvider||!t)return;(E==="enable"?this.ethereumProvider.enable():this.ethereumProvider.request({...n,id:t})).then(_=>this.forwardRpcResponseToIframe({rpcResponse:{jsonrpc:s,id:t,result:_}})).catch(_=>this.forwardRpcResponseToIframe({rpcResponse:{jsonrpc:s,id:t,error:_}}))}onProviderEvent(n,t){W.postMessageToWindow(this.iframeWidow,O.PROVIDER_ON_EVENT,{event:n,params:t})}forwardRpcResponseToIframe(n){W.postMessageToWindow(this.iframeWidow,O.PROVIDER_RPC_RESPONSE,n)}}var G={exports:{}};(function(e){var n=Object.prototype.hasOwnProperty,t="~";function s(){}Object.create&&(s.prototype=Object.create(null),new s().__proto__||(t=!1));function E(c,r,i){this.fn=c,this.context=r,this.once=i||!1}function h(c,r,i,o,w){if(typeof i!="function")throw new TypeError("The listener must be a function");var f=new E(i,o||c,w),d=t?t+r:r;return c._events[d]?c._events[d].fn?c._events[d]=[c._events[d],f]:c._events[d].push(f):(c._events[d]=f,c._eventsCount++),c}function _(c,r){--c._eventsCount===0?c._events=new s:delete c._events[r]}function u(){this._events=new s,this._eventsCount=0}u.prototype.eventNames=function(){var r=[],i,o;if(this._eventsCount===0)return r;for(o in i=this._events)n.call(i,o)&&r.push(t?o.slice(1):o);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(i)):r},u.prototype.listeners=function(r){var i=t?t+r:r,o=this._events[i];if(!o)return[];if(o.fn)return[o.fn];for(var w=0,f=o.length,d=new Array(f);w<f;w++)d[w]=o[w].fn;return d},u.prototype.listenerCount=function(r){var i=t?t+r:r,o=this._events[i];return o?o.fn?1:o.length:0},u.prototype.emit=function(r,i,o,w,f,d){var P=t?t+r:r;if(!this._events[P])return!1;var a=this._events[P],g=arguments.length,y,p;if(a.fn){switch(a.once&&this.removeListener(r,a.fn,void 0,!0),g){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,i),!0;case 3:return a.fn.call(a.context,i,o),!0;case 4:return a.fn.call(a.context,i,o,w),!0;case 5:return a.fn.call(a.context,i,o,w,f),!0;case 6:return a.fn.call(a.context,i,o,w,f,d),!0}for(p=1,y=new Array(g-1);p<g;p++)y[p-1]=arguments[p];a.fn.apply(a.context,y)}else{var ue=a.length,I;for(p=0;p<ue;p++)switch(a[p].once&&this.removeListener(r,a[p].fn,void 0,!0),g){case 1:a[p].fn.call(a[p].context);break;case 2:a[p].fn.call(a[p].context,i);break;case 3:a[p].fn.call(a[p].context,i,o);break;case 4:a[p].fn.call(a[p].context,i,o,w);break;default:if(!y)for(I=1,y=new Array(g-1);I<g;I++)y[I-1]=arguments[I];a[p].fn.apply(a[p].context,y)}}return!0},u.prototype.on=function(r,i,o){return h(this,r,i,o,!1)},u.prototype.once=function(r,i,o){return h(this,r,i,o,!0)},u.prototype.removeListener=function(r,i,o,w){var f=t?t+r:r;if(!this._events[f])return this;if(!i)return _(this,f),this;var d=this._events[f];if(d.fn)d.fn===i&&(!w||d.once)&&(!o||d.context===o)&&_(this,f);else{for(var P=0,a=[],g=d.length;P<g;P++)(d[P].fn!==i||w&&!d[P].once||o&&d[P].context!==o)&&a.push(d[P]);a.length?this._events[f]=a.length===1?a[0]:a:_(this,f)}return this},u.prototype.removeAllListeners=function(r){var i;return r?(i=t?t+r:r,this._events[i]&&_(this,i)):(this._events=new s,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=t,u.EventEmitter=u,e.exports=u})(G);class Q{constructor(){v(this,"subscriptions",{})}on(n){const{event:t,handler:s}=n;return this.subscriptions[t]||(this.subscriptions[t]=[]),this.subscriptions[t].push(s),n}off(n){const{event:t,handler:s}=n;return this.subscriptions[t]&&(this.subscriptions[t]=this.subscriptions[t].filter(E=>E!==s)),n}emit(n,t){this.subscriptions[n]&&this.subscriptions[n].forEach(s=>s(t))}}var C=(e=>(e.ACTIVATE="ACTIVATE",e.UPDATE_HEIGHT="UPDATE_HEIGHT",e.SET_FULL_HEIGHT="SET_FULL_HEIGHT",e.EMIT_COW_EVENT="EMIT_COW_EVENT",e.PROVIDER_RPC_REQUEST="PROVIDER_RPC_REQUEST",e.INTERCEPT_WINDOW_OPEN="INTERCEPT_WINDOW_OPEN",e))(C||{}),S=(e=>(e.UPDATE_PARAMS="UPDATE_PARAMS",e.UPDATE_APP_DATA="UPDATE_APP_DATA",e.PROVIDER_RPC_RESPONSE="PROVIDER_RPC_RESPONSE",e.PROVIDER_ON_EVENT="PROVIDER_ON_EVENT",e))(S||{}),A=(e=>(e.SWAP="swap",e.LIMIT="limit",e.ADVANCED="advanced",e))(A||{});const j=["primary","background","paper","text","danger","warning","alert","info","success"],m=new T("cowSwapWidget");class ${constructor(n,t=[]){v(this,"eventEmitter",new Q);v(this,"listeners",[]);v(this,"widgetListener");this.contentWindow=n,this.updateListeners(t),this.widgetListener=m.listenToMessageFromWindow(this.contentWindow,C.EMIT_COW_EVENT,s=>this.eventEmitter.emit(s.event,s.payload))}stopListeningIframe(){m.stopListeningWindowListener(this.contentWindow,this.widgetListener)}updateListeners(n){for(const t of this.listeners)this.eventEmitter.off(t);this.listeners=n||[];for(const t of this.listeners)this.eventEmitter.on(t)}}class B{constructor(n,t){v(this,"forwardSdkMessage");this.appWindow=n,this.iframeWidow=t,this.forwardSdkMessage=s=>{q(s.data)&&s.origin!==window.location.origin&&(z(s.data)?this.appWindow.parent.postMessage(s.data,"*"):J(s.data)&&this.iframeWidow.postMessage(s.data,"*"))},this.startListening()}startListening(){this.appWindow.addEventListener("message",this.forwardSdkMessage)}stopListening(){this.appWindow.removeEventListener("message",this.forwardSdkMessage)}}function q(e){return typeof e=="object"&&e!==null&&"id"in e&&typeof e.id=="string"}function z(e){return"method"in e&&typeof e.method=="string"&&"params"in e&&"env"in e&&typeof e.env=="object"&&e.env!==null&&"sdkVersion"in e.env}function J(e){return"success"in e&&typeof e.success=="boolean"&&"version"in e&&typeof e.version=="string"}function b(e){return!!(e&&typeof e=="object")}const N="_";function K(e){const n=typeof e.baseUrl=="string"?e.baseUrl:"https://swap.cow.fi",t=V(e);return n+"/#"+t+"?"+M(e)}function V(e){const{chainId:n=1,sell:t,buy:s,tradeType:E=A.SWAP}=e,h=[(t==null?void 0:t.asset)||N,(s==null?void 0:s.asset)||N].map(encodeURIComponent).join("/");return`/${n}/widget/${E}/${h}`}function M(e){const n=new URLSearchParams;return Y(X(n,e),e)}function X(e,n){const{sell:t,buy:s}=n;return t!=null&&t.amount&&e.append("sellAmount",t.amount),s!=null&&s.amount&&e.append("buyAmount",s.amount),e}function Y(e,n){const t=n.theme;return t?(b(t)?(e.append("palette",encodeURIComponent(JSON.stringify(t))),e.append("theme",t.baseTheme)):(e.append("palette","null"),e.append("theme",t)),e):(e.append("palette","null"),e)}const F="640px",Z="450px",ee=20;function te(e,n){const{params:t,provider:s,listeners:E}=n;let h=s,_=t;const u=ne(t);e.innerHTML="",e.appendChild(u);const{contentWindow:c}=u;if(!c)throw console.error("Iframe does not contain a window",u),new Error("Iframe does not contain a window!");const r=[];r.push(se(c,t.appCode)),r.push(...ie(u,t.height)),r.push(re());const i=new $(window,E);let o=U(c,null,h);u.addEventListener("load",()=>k(c,_,h));const w=new B(window,c);return{updateParams:f=>{_=f,k(c,_,h)},updateListeners:f=>i.updateListeners(f),updateProvider:f=>{h=f,o=U(c,o,f)},destroy:()=>{o.disconnect(),i.stopListeningIframe(),r.forEach(f=>window.removeEventListener("message",f)),w.stopListening(),e.removeChild(u)}}}function U(e,n,t){n&&n.disconnect();const s=n||new x(e);return t&&s.onConnect(t),s}function ne(e){const{width:n=Z,height:t=F}=e,s=document.createElement("iframe");return s.src=K(e),s.width=n,s.height=t,s.style.border="0",s.allow="clipboard-read; clipboard-write",s}function k(e,n,t){const s=!!t,E=V(n),h=M(n).toString(),{theme:_,...u}=n;m.postMessageToWindow(e,S.UPDATE_PARAMS,{urlParams:{pathname:E,search:h},appParams:u,hasProvider:s})}function se(e,n){return m.listenToMessageFromWindow(window,C.ACTIVATE,()=>{m.postMessageToWindow(e,S.UPDATE_APP_DATA,{metaData:n?{appCode:n}:void 0})})}function re(){return m.listenToMessageFromWindow(window,C.INTERCEPT_WINDOW_OPEN,({href:e,rel:n,target:t})=>{const s=e.toString();if(!s.startsWith("http")&&s.match(/^[a-zA-Z0-9]+:\/\//)){window.open(s,t,n);return}})}function ie(e,n=F){return[m.listenToMessageFromWindow(window,C.UPDATE_HEIGHT,t=>{e.style.height=t.height?`${t.height+ee}px`:n}),m.listenToMessageFromWindow(window,C.SET_FULL_HEIGHT,({isUpToSmall:t})=>{e.style.height=t?n:`${document.body.offsetHeight}px`})]}const oe=Object.values(A);function ae(e,n,t){if(L(e)){const s=e[t];return D(s)?s[n]:s}if(D(e)){const s=e[n];return L(s)?s[t]:s}return e}function L(e){return typeof e!="object"?!1:Object.keys(e).every(n=>oe.includes(n))}const ce=/^\d+$/;function D(e){return typeof e!="object"?!1:Object.keys(e).every(n=>typeof n=="number"||ce.test(n))}return l.TradeType=A,l.WIDGET_PALETTE_COLORS=j,l.WidgetMethodsEmit=C,l.WidgetMethodsListen=S,l.createCowSwapWidget=te,l.isCowSwapWidgetPalette=b,l.isPerNetworkConfig=D,l.isPerTradeTypeConfig=L,l.resolveFlexibleConfig=ae,l.widgetIframeTransport=m,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"}),l}({});
1
+ var cowSwapWidget=function(E){"use strict";var fe=Object.defineProperty;var de=(E,T,R)=>T in E?fe(E,T,{enumerable:!0,configurable:!0,writable:!0,value:R}):E[T]=R;var P=(E,T,R)=>(de(E,typeof T!="symbol"?T+"":T,R),R);class T{constructor(n){this.key=n}postMessageToWindow(n,t,s){const p=typeof s=="object"?s:{},l={key:this.key,method:t,...p};n.postMessage(l,"*")}listenToMessageFromWindow(n,t,s){const p=l=>{!R(l.data)||l.data.key!==this.key||l.data.method!==t||s(l.data)};return n.addEventListener("message",p),p}stopListeningToMessageFromWindow(n,t,s){n.removeEventListener("message",s)}stopListeningWindowListener(n,t){n.removeEventListener("message",t)}}function R(e){return typeof e=="object"&&e!==null&&"key"in e&&"method"in e&&typeof e.key=="string"&&typeof e.method=="string"}var O=(e=>(e.PROVIDER_RPC_REQUEST="PROVIDER_RPC_REQUEST",e.PROVIDER_RPC_RESPONSE="PROVIDER_RPC_RESPONSE",e.PROVIDER_ON_EVENT="PROVIDER_ON_EVENT",e))(O||{});const W=new T("cowSwapIframeRpcProviderTransport"),H=["connect","disconnect","close","chainChanged","accountsChanged"];class x{constructor(n){P(this,"ethereumProvider",null);P(this,"requestWaitingForConnection",{});P(this,"processRpcCallFromWindow",({rpcRequest:n})=>{if(!this.ethereumProvider){n.id&&(this.requestWaitingForConnection[n.id]=n);return}this.processRpcRequest(n)});this.iframeWidow=n}disconnect(){this.ethereumProvider=null,W.stopListeningToMessageFromWindow(window,O.PROVIDER_RPC_REQUEST,this.processRpcCallFromWindow)}onConnect(n){this.ethereumProvider?this.disconnect():W.listenToMessageFromWindow(window,O.PROVIDER_RPC_REQUEST,this.processRpcCallFromWindow),this.ethereumProvider=n,this.processPendingRequests(),H.forEach(t=>{n.on(t,s=>this.onProviderEvent(t,s))})}processPendingRequests(){Object.keys(this.requestWaitingForConnection).forEach(n=>{this.processRpcRequest(this.requestWaitingForConnection[n])}),this.requestWaitingForConnection={}}processRpcRequest(n){const{id:t,jsonrpc:s,method:p}=n;if(!this.ethereumProvider||!t)return;(p==="enable"?this.ethereumProvider.enable():this.ethereumProvider.request({...n,id:t})).then(_=>this.forwardRpcResponseToIframe({rpcResponse:{jsonrpc:s,id:t,result:_}})).catch(_=>this.forwardRpcResponseToIframe({rpcResponse:{jsonrpc:s,id:t,error:_}}))}onProviderEvent(n,t){W.postMessageToWindow(this.iframeWidow,O.PROVIDER_ON_EVENT,{event:n,params:t})}forwardRpcResponseToIframe(n){W.postMessageToWindow(this.iframeWidow,O.PROVIDER_RPC_RESPONSE,n)}}var G={exports:{}};(function(e){var n=Object.prototype.hasOwnProperty,t="~";function s(){}Object.create&&(s.prototype=Object.create(null),new s().__proto__||(t=!1));function p(c,r,i){this.fn=c,this.context=r,this.once=i||!1}function l(c,r,i,o,w){if(typeof i!="function")throw new TypeError("The listener must be a function");var f=new p(i,o||c,w),d=t?t+r:r;return c._events[d]?c._events[d].fn?c._events[d]=[c._events[d],f]:c._events[d].push(f):(c._events[d]=f,c._eventsCount++),c}function _(c,r){--c._eventsCount===0?c._events=new s:delete c._events[r]}function u(){this._events=new s,this._eventsCount=0}u.prototype.eventNames=function(){var r=[],i,o;if(this._eventsCount===0)return r;for(o in i=this._events)n.call(i,o)&&r.push(t?o.slice(1):o);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(i)):r},u.prototype.listeners=function(r){var i=t?t+r:r,o=this._events[i];if(!o)return[];if(o.fn)return[o.fn];for(var w=0,f=o.length,d=new Array(f);w<f;w++)d[w]=o[w].fn;return d},u.prototype.listenerCount=function(r){var i=t?t+r:r,o=this._events[i];return o?o.fn?1:o.length:0},u.prototype.emit=function(r,i,o,w,f,d){var v=t?t+r:r;if(!this._events[v])return!1;var a=this._events[v],g=arguments.length,y,h;if(a.fn){switch(a.once&&this.removeListener(r,a.fn,void 0,!0),g){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,i),!0;case 3:return a.fn.call(a.context,i,o),!0;case 4:return a.fn.call(a.context,i,o,w),!0;case 5:return a.fn.call(a.context,i,o,w,f),!0;case 6:return a.fn.call(a.context,i,o,w,f,d),!0}for(h=1,y=new Array(g-1);h<g;h++)y[h-1]=arguments[h];a.fn.apply(a.context,y)}else{var ue=a.length,I;for(h=0;h<ue;h++)switch(a[h].once&&this.removeListener(r,a[h].fn,void 0,!0),g){case 1:a[h].fn.call(a[h].context);break;case 2:a[h].fn.call(a[h].context,i);break;case 3:a[h].fn.call(a[h].context,i,o);break;case 4:a[h].fn.call(a[h].context,i,o,w);break;default:if(!y)for(I=1,y=new Array(g-1);I<g;I++)y[I-1]=arguments[I];a[h].fn.apply(a[h].context,y)}}return!0},u.prototype.on=function(r,i,o){return l(this,r,i,o,!1)},u.prototype.once=function(r,i,o){return l(this,r,i,o,!0)},u.prototype.removeListener=function(r,i,o,w){var f=t?t+r:r;if(!this._events[f])return this;if(!i)return _(this,f),this;var d=this._events[f];if(d.fn)d.fn===i&&(!w||d.once)&&(!o||d.context===o)&&_(this,f);else{for(var v=0,a=[],g=d.length;v<g;v++)(d[v].fn!==i||w&&!d[v].once||o&&d[v].context!==o)&&a.push(d[v]);a.length?this._events[f]=a.length===1?a[0]:a:_(this,f)}return this},u.prototype.removeAllListeners=function(r){var i;return r?(i=t?t+r:r,this._events[i]&&_(this,i)):(this._events=new s,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=t,u.EventEmitter=u,e.exports=u})(G);class Q{constructor(){P(this,"subscriptions",{})}on(n){const{event:t,handler:s}=n;return this.subscriptions[t]||(this.subscriptions[t]=[]),this.subscriptions[t].push(s),n}off(n){const{event:t,handler:s}=n;return this.subscriptions[t]&&(this.subscriptions[t]=this.subscriptions[t].filter(p=>p!==s)),n}emit(n,t){this.subscriptions[n]&&this.subscriptions[n].forEach(s=>s(t))}}var C=(e=>(e.ACTIVATE="ACTIVATE",e.UPDATE_HEIGHT="UPDATE_HEIGHT",e.SET_FULL_HEIGHT="SET_FULL_HEIGHT",e.EMIT_COW_EVENT="EMIT_COW_EVENT",e.PROVIDER_RPC_REQUEST="PROVIDER_RPC_REQUEST",e.INTERCEPT_WINDOW_OPEN="INTERCEPT_WINDOW_OPEN",e))(C||{}),S=(e=>(e.UPDATE_PARAMS="UPDATE_PARAMS",e.UPDATE_APP_DATA="UPDATE_APP_DATA",e.PROVIDER_RPC_RESPONSE="PROVIDER_RPC_RESPONSE",e.PROVIDER_ON_EVENT="PROVIDER_ON_EVENT",e))(S||{}),A=(e=>(e.SWAP="swap",e.LIMIT="limit",e.ADVANCED="advanced",e.YIELD="yield",e))(A||{});const j=["primary","background","paper","text","danger","warning","alert","info","success"],m=new T("cowSwapWidget");class ${constructor(n,t=[]){P(this,"eventEmitter",new Q);P(this,"listeners",[]);P(this,"widgetListener");this.contentWindow=n,this.updateListeners(t),this.widgetListener=m.listenToMessageFromWindow(this.contentWindow,C.EMIT_COW_EVENT,s=>this.eventEmitter.emit(s.event,s.payload))}stopListeningIframe(){m.stopListeningWindowListener(this.contentWindow,this.widgetListener)}updateListeners(n){for(const t of this.listeners)this.eventEmitter.off(t);this.listeners=n||[];for(const t of this.listeners)this.eventEmitter.on(t)}}class B{constructor(n,t){P(this,"forwardSdkMessage");this.appWindow=n,this.iframeWidow=t,this.forwardSdkMessage=s=>{q(s.data)&&s.origin!==window.location.origin&&(Y(s.data)?this.appWindow.parent.postMessage(s.data,"*"):z(s.data)&&this.iframeWidow.postMessage(s.data,"*"))},this.startListening()}startListening(){this.appWindow.addEventListener("message",this.forwardSdkMessage)}stopListening(){this.appWindow.removeEventListener("message",this.forwardSdkMessage)}}function q(e){return typeof e=="object"&&e!==null&&"id"in e&&typeof e.id=="string"}function Y(e){return"method"in e&&typeof e.method=="string"&&"params"in e&&"env"in e&&typeof e.env=="object"&&e.env!==null&&"sdkVersion"in e.env}function z(e){return"success"in e&&typeof e.success=="boolean"&&"version"in e&&typeof e.version=="string"}function b(e){return!!(e&&typeof e=="object")}const N="_";function J(e){const n=typeof e.baseUrl=="string"?e.baseUrl:"https://swap.cow.fi",t=M(e);return n+"/#"+t+"?"+V(e)}function M(e){const{chainId:n=1,sell:t,buy:s,tradeType:p=A.SWAP}=e,l=[(t==null?void 0:t.asset)||N,(s==null?void 0:s.asset)||N].map(encodeURIComponent).join("/");return`/${n}/widget/${p}/${l}`}function V(e){const n=new URLSearchParams;return X(K(n,e),e)}function K(e,n){const{sell:t,buy:s}=n;return t!=null&&t.amount&&e.append("sellAmount",t.amount),s!=null&&s.amount&&e.append("buyAmount",s.amount),e}function X(e,n){const t=n.theme;return t?(b(t)?(e.append("palette",encodeURIComponent(JSON.stringify(t))),e.append("theme",t.baseTheme)):(e.append("palette","null"),e.append("theme",t)),e):(e.append("palette","null"),e)}const F="640px",Z="450px",ee=20;function te(e,n){const{params:t,provider:s,listeners:p}=n;let l=s,_=t;const u=ne(t);e.innerHTML="",e.appendChild(u);const{contentWindow:c}=u;if(!c)throw console.error("Iframe does not contain a window",u),new Error("Iframe does not contain a window!");const r=[];r.push(se(c,t.appCode)),r.push(...ie(u,t.height,t.maxHeight)),r.push(re());const i=new $(window,p);let o=U(c,null,l);u.addEventListener("load",()=>k(c,_,l));const w=new B(window,c);return{updateParams:f=>{_=f,k(c,_,l)},updateListeners:f=>i.updateListeners(f),updateProvider:f=>{l=f,o=U(c,o,f)},destroy:()=>{o.disconnect(),i.stopListeningIframe(),r.forEach(f=>window.removeEventListener("message",f)),w.stopListening(),e.removeChild(u)}}}function U(e,n,t){n&&n.disconnect();const s=n||new x(e);return t&&s.onConnect(t),s}function ne(e){const{width:n=Z,height:t=F}=e,s=document.createElement("iframe");return s.src=J(e),s.width=n,s.height=t,s.style.border="0",s.allow="clipboard-read; clipboard-write",s}function k(e,n,t){const s=!!t,p=M(n),l=V(n).toString(),{theme:_,...u}=n;m.postMessageToWindow(e,S.UPDATE_PARAMS,{urlParams:{pathname:p,search:l},appParams:u,hasProvider:s})}function se(e,n){return m.listenToMessageFromWindow(window,C.ACTIVATE,()=>{m.postMessageToWindow(e,S.UPDATE_APP_DATA,{metaData:n?{appCode:n}:void 0})})}function re(){return m.listenToMessageFromWindow(window,C.INTERCEPT_WINDOW_OPEN,({href:e,rel:n,target:t})=>{const s=e.toString();if(!s.startsWith("http")&&s.match(/^[a-zA-Z0-9]+:\/\//)){window.open(s,t,n);return}})}function ie(e,n=F,t){return[m.listenToMessageFromWindow(window,C.UPDATE_HEIGHT,s=>{const p=s.height?s.height+ee:void 0;e.style.height=p?`${t?Math.min(p,t):p}px`:n}),m.listenToMessageFromWindow(window,C.SET_FULL_HEIGHT,({isUpToSmall:s})=>{e.style.height=s?n:`${t||document.body.offsetHeight}px`})]}const oe=Object.values(A);function ae(e,n,t){if(L(e)){const s=e[t];return D(s)?s[n]:s}if(D(e)){const s=e[n];return L(s)?s[t]:s}return e}function L(e){return typeof e!="object"?!1:Object.keys(e).every(n=>oe.includes(n))}const ce=/^\d+$/;function D(e){return typeof e!="object"?!1:Object.keys(e).every(n=>typeof n=="number"||ce.test(n))}return E.TradeType=A,E.WIDGET_PALETTE_COLORS=j,E.WidgetMethodsEmit=C,E.WidgetMethodsListen=S,E.createCowSwapWidget=te,E.isCowSwapWidgetPalette=b,E.isPerNetworkConfig=D,E.isPerTradeTypeConfig=L,E.resolveFlexibleConfig=ae,E.widgetIframeTransport=m,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"}),E}({});
package/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var k=Object.defineProperty;var x=(e,n,t)=>n in e?k(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var T=(e,n,t)=>(x(e,typeof n!="symbol"?n+"":n,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class b{constructor(n){this.key=n}postMessageToWindow(n,t,s){const l=typeof s=="object"?s:{},h={key:this.key,method:t,...l};n.postMessage(h,"*")}listenToMessageFromWindow(n,t,s){const l=h=>{!H(h.data)||h.data.key!==this.key||h.data.method!==t||s(h.data)};return n.addEventListener("message",l),l}stopListeningToMessageFromWindow(n,t,s){n.removeEventListener("message",s)}stopListeningWindowListener(n,t){n.removeEventListener("message",t)}}function H(e){return typeof e=="object"&&e!==null&&"key"in e&&"method"in e&&typeof e.key=="string"&&typeof e.method=="string"}var C=(e=>(e.PROVIDER_RPC_REQUEST="PROVIDER_RPC_REQUEST",e.PROVIDER_RPC_RESPONSE="PROVIDER_RPC_RESPONSE",e.PROVIDER_ON_EVENT="PROVIDER_ON_EVENT",e))(C||{});const y=new b("cowSwapIframeRpcProviderTransport"),G=["connect","disconnect","close","chainChanged","accountsChanged"];class Q{constructor(n){T(this,"ethereumProvider",null);T(this,"requestWaitingForConnection",{});T(this,"processRpcCallFromWindow",({rpcRequest:n})=>{if(!this.ethereumProvider){n.id&&(this.requestWaitingForConnection[n.id]=n);return}this.processRpcRequest(n)});this.iframeWidow=n}disconnect(){this.ethereumProvider=null,y.stopListeningToMessageFromWindow(window,C.PROVIDER_RPC_REQUEST,this.processRpcCallFromWindow)}onConnect(n){this.ethereumProvider?this.disconnect():y.listenToMessageFromWindow(window,C.PROVIDER_RPC_REQUEST,this.processRpcCallFromWindow),this.ethereumProvider=n,this.processPendingRequests(),G.forEach(t=>{n.on(t,s=>this.onProviderEvent(t,s))})}processPendingRequests(){Object.keys(this.requestWaitingForConnection).forEach(n=>{this.processRpcRequest(this.requestWaitingForConnection[n])}),this.requestWaitingForConnection={}}processRpcRequest(n){const{id:t,jsonrpc:s,method:l}=n;if(!this.ethereumProvider||!t)return;(l==="enable"?this.ethereumProvider.enable():this.ethereumProvider.request({...n,id:t})).then(w=>this.forwardRpcResponseToIframe({rpcResponse:{jsonrpc:s,id:t,result:w}})).catch(w=>this.forwardRpcResponseToIframe({rpcResponse:{jsonrpc:s,id:t,error:w}}))}onProviderEvent(n,t){y.postMessageToWindow(this.iframeWidow,C.PROVIDER_ON_EVENT,{event:n,params:t})}forwardRpcResponseToIframe(n){y.postMessageToWindow(this.iframeWidow,C.PROVIDER_RPC_RESPONSE,n)}}var j={exports:{}};(function(e){var n=Object.prototype.hasOwnProperty,t="~";function s(){}Object.create&&(s.prototype=Object.create(null),new s().__proto__||(t=!1));function l(c,r,o){this.fn=c,this.context=r,this.once=o||!1}function h(c,r,o,i,E){if(typeof o!="function")throw new TypeError("The listener must be a function");var f=new l(o,i||c,E),p=t?t+r:r;return c._events[p]?c._events[p].fn?c._events[p]=[c._events[p],f]:c._events[p].push(f):(c._events[p]=f,c._eventsCount++),c}function w(c,r){--c._eventsCount===0?c._events=new s:delete c._events[r]}function u(){this._events=new s,this._eventsCount=0}u.prototype.eventNames=function(){var r=[],o,i;if(this._eventsCount===0)return r;for(i in o=this._events)n.call(o,i)&&r.push(t?i.slice(1):i);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(o)):r},u.prototype.listeners=function(r){var o=t?t+r:r,i=this._events[o];if(!i)return[];if(i.fn)return[i.fn];for(var E=0,f=i.length,p=new Array(f);E<f;E++)p[E]=i[E].fn;return p},u.prototype.listenerCount=function(r){var o=t?t+r:r,i=this._events[o];return i?i.fn?1:i.length:0},u.prototype.emit=function(r,o,i,E,f,p){var _=t?t+r:r;if(!this._events[_])return!1;var a=this._events[_],P=arguments.length,v,d;if(a.fn){switch(a.once&&this.removeListener(r,a.fn,void 0,!0),P){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,o),!0;case 3:return a.fn.call(a.context,o,i),!0;case 4:return a.fn.call(a.context,o,i,E),!0;case 5:return a.fn.call(a.context,o,i,E,f),!0;case 6:return a.fn.call(a.context,o,i,E,f,p),!0}for(d=1,v=new Array(P-1);d<P;d++)v[d-1]=arguments[d];a.fn.apply(a.context,v)}else{var U=a.length,R;for(d=0;d<U;d++)switch(a[d].once&&this.removeListener(r,a[d].fn,void 0,!0),P){case 1:a[d].fn.call(a[d].context);break;case 2:a[d].fn.call(a[d].context,o);break;case 3:a[d].fn.call(a[d].context,o,i);break;case 4:a[d].fn.call(a[d].context,o,i,E);break;default:if(!v)for(R=1,v=new Array(P-1);R<P;R++)v[R-1]=arguments[R];a[d].fn.apply(a[d].context,v)}}return!0},u.prototype.on=function(r,o,i){return h(this,r,o,i,!1)},u.prototype.once=function(r,o,i){return h(this,r,o,i,!0)},u.prototype.removeListener=function(r,o,i,E){var f=t?t+r:r;if(!this._events[f])return this;if(!o)return w(this,f),this;var p=this._events[f];if(p.fn)p.fn===o&&(!E||p.once)&&(!i||p.context===i)&&w(this,f);else{for(var _=0,a=[],P=p.length;_<P;_++)(p[_].fn!==o||E&&!p[_].once||i&&p[_].context!==i)&&a.push(p[_]);a.length?this._events[f]=a.length===1?a[0]:a:w(this,f)}return this},u.prototype.removeAllListeners=function(r){var o;return r?(o=t?t+r:r,this._events[o]&&w(this,o)):(this._events=new s,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=t,u.EventEmitter=u,e.exports=u})(j);class ${constructor(){T(this,"subscriptions",{})}on(n){const{event:t,handler:s}=n;return this.subscriptions[t]||(this.subscriptions[t]=[]),this.subscriptions[t].push(s),n}off(n){const{event:t,handler:s}=n;return this.subscriptions[t]&&(this.subscriptions[t]=this.subscriptions[t].filter(l=>l!==s)),n}emit(n,t){this.subscriptions[n]&&this.subscriptions[n].forEach(s=>s(t))}}var g=(e=>(e.ACTIVATE="ACTIVATE",e.UPDATE_HEIGHT="UPDATE_HEIGHT",e.SET_FULL_HEIGHT="SET_FULL_HEIGHT",e.EMIT_COW_EVENT="EMIT_COW_EVENT",e.PROVIDER_RPC_REQUEST="PROVIDER_RPC_REQUEST",e.INTERCEPT_WINDOW_OPEN="INTERCEPT_WINDOW_OPEN",e))(g||{}),O=(e=>(e.UPDATE_PARAMS="UPDATE_PARAMS",e.UPDATE_APP_DATA="UPDATE_APP_DATA",e.PROVIDER_RPC_RESPONSE="PROVIDER_RPC_RESPONSE",e.PROVIDER_ON_EVENT="PROVIDER_ON_EVENT",e))(O||{}),I=(e=>(e.SWAP="swap",e.LIMIT="limit",e.ADVANCED="advanced",e))(I||{});const B=["primary","background","paper","text","danger","warning","alert","info","success"],m=new b("cowSwapWidget");class q{constructor(n,t=[]){T(this,"eventEmitter",new $);T(this,"listeners",[]);T(this,"widgetListener");this.contentWindow=n,this.updateListeners(t),this.widgetListener=m.listenToMessageFromWindow(this.contentWindow,g.EMIT_COW_EVENT,s=>this.eventEmitter.emit(s.event,s.payload))}stopListeningIframe(){m.stopListeningWindowListener(this.contentWindow,this.widgetListener)}updateListeners(n){for(const t of this.listeners)this.eventEmitter.off(t);this.listeners=n||[];for(const t of this.listeners)this.eventEmitter.on(t)}}class z{constructor(n,t){T(this,"forwardSdkMessage");this.appWindow=n,this.iframeWidow=t,this.forwardSdkMessage=s=>{J(s.data)&&s.origin!==window.location.origin&&(K(s.data)?this.appWindow.parent.postMessage(s.data,"*"):X(s.data)&&this.iframeWidow.postMessage(s.data,"*"))},this.startListening()}startListening(){this.appWindow.addEventListener("message",this.forwardSdkMessage)}stopListening(){this.appWindow.removeEventListener("message",this.forwardSdkMessage)}}function J(e){return typeof e=="object"&&e!==null&&"id"in e&&typeof e.id=="string"}function K(e){return"method"in e&&typeof e.method=="string"&&"params"in e&&"env"in e&&typeof e.env=="object"&&e.env!==null&&"sdkVersion"in e.env}function X(e){return"success"in e&&typeof e.success=="boolean"&&"version"in e&&typeof e.version=="string"}function N(e){return!!(e&&typeof e=="object")}const A="_";function Y(e){const n=typeof e.baseUrl=="string"?e.baseUrl:"https://swap.cow.fi",t=V(e);return n+"/#"+t+"?"+M(e)}function V(e){const{chainId:n=1,sell:t,buy:s,tradeType:l=I.SWAP}=e,h=[(t==null?void 0:t.asset)||A,(s==null?void 0:s.asset)||A].map(encodeURIComponent).join("/");return`/${n}/widget/${l}/${h}`}function M(e){const n=new URLSearchParams;return ee(Z(n,e),e)}function Z(e,n){const{sell:t,buy:s}=n;return t!=null&&t.amount&&e.append("sellAmount",t.amount),s!=null&&s.amount&&e.append("buyAmount",s.amount),e}function ee(e,n){const t=n.theme;return t?(N(t)?(e.append("palette",encodeURIComponent(JSON.stringify(t))),e.append("theme",t.baseTheme)):(e.append("palette","null"),e.append("theme",t)),e):(e.append("palette","null"),e)}const F="640px",te="450px",ne=20;function se(e,n){const{params:t,provider:s,listeners:l}=n;let h=s,w=t;const u=re(t);e.innerHTML="",e.appendChild(u);const{contentWindow:c}=u;if(!c)throw console.error("Iframe does not contain a window",u),new Error("Iframe does not contain a window!");const r=[];r.push(oe(c,t.appCode)),r.push(...ae(u,t.height)),r.push(ie());const o=new q(window,l);let i=L(c,null,h);u.addEventListener("load",()=>D(c,w,h));const E=new z(window,c);return{updateParams:f=>{w=f,D(c,w,h)},updateListeners:f=>o.updateListeners(f),updateProvider:f=>{h=f,i=L(c,i,f)},destroy:()=>{i.disconnect(),o.stopListeningIframe(),r.forEach(f=>window.removeEventListener("message",f)),E.stopListening(),e.removeChild(u)}}}function L(e,n,t){n&&n.disconnect();const s=n||new Q(e);return t&&s.onConnect(t),s}function re(e){const{width:n=te,height:t=F}=e,s=document.createElement("iframe");return s.src=Y(e),s.width=n,s.height=t,s.style.border="0",s.allow="clipboard-read; clipboard-write",s}function D(e,n,t){const s=!!t,l=V(n),h=M(n).toString(),{theme:w,...u}=n;m.postMessageToWindow(e,O.UPDATE_PARAMS,{urlParams:{pathname:l,search:h},appParams:u,hasProvider:s})}function oe(e,n){return m.listenToMessageFromWindow(window,g.ACTIVATE,()=>{m.postMessageToWindow(e,O.UPDATE_APP_DATA,{metaData:n?{appCode:n}:void 0})})}function ie(){return m.listenToMessageFromWindow(window,g.INTERCEPT_WINDOW_OPEN,({href:e,rel:n,target:t})=>{const s=e.toString();if(!s.startsWith("http")&&s.match(/^[a-zA-Z0-9]+:\/\//)){window.open(s,t,n);return}})}function ae(e,n=F){return[m.listenToMessageFromWindow(window,g.UPDATE_HEIGHT,t=>{e.style.height=t.height?`${t.height+ne}px`:n}),m.listenToMessageFromWindow(window,g.SET_FULL_HEIGHT,({isUpToSmall:t})=>{e.style.height=t?n:`${document.body.offsetHeight}px`})]}const ce=Object.values(I);function ue(e,n,t){if(W(e)){const s=e[t];return S(s)?s[n]:s}if(S(e)){const s=e[n];return W(s)?s[t]:s}return e}function W(e){return typeof e!="object"?!1:Object.keys(e).every(n=>ce.includes(n))}const fe=/^\d+$/;function S(e){return typeof e!="object"?!1:Object.keys(e).every(n=>typeof n=="number"||fe.test(n))}exports.TradeType=I;exports.WIDGET_PALETTE_COLORS=B;exports.WidgetMethodsEmit=g;exports.WidgetMethodsListen=O;exports.createCowSwapWidget=se;exports.isCowSwapWidgetPalette=N;exports.isPerNetworkConfig=S;exports.isPerTradeTypeConfig=W;exports.resolveFlexibleConfig=ue;exports.widgetIframeTransport=m;
1
+ "use strict";var k=Object.defineProperty;var x=(e,n,t)=>n in e?k(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var T=(e,n,t)=>(x(e,typeof n!="symbol"?n+"":n,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class b{constructor(n){this.key=n}postMessageToWindow(n,t,s){const d=typeof s=="object"?s:{},l={key:this.key,method:t,...d};n.postMessage(l,"*")}listenToMessageFromWindow(n,t,s){const d=l=>{!H(l.data)||l.data.key!==this.key||l.data.method!==t||s(l.data)};return n.addEventListener("message",d),d}stopListeningToMessageFromWindow(n,t,s){n.removeEventListener("message",s)}stopListeningWindowListener(n,t){n.removeEventListener("message",t)}}function H(e){return typeof e=="object"&&e!==null&&"key"in e&&"method"in e&&typeof e.key=="string"&&typeof e.method=="string"}var C=(e=>(e.PROVIDER_RPC_REQUEST="PROVIDER_RPC_REQUEST",e.PROVIDER_RPC_RESPONSE="PROVIDER_RPC_RESPONSE",e.PROVIDER_ON_EVENT="PROVIDER_ON_EVENT",e))(C||{});const y=new b("cowSwapIframeRpcProviderTransport"),G=["connect","disconnect","close","chainChanged","accountsChanged"];class Q{constructor(n){T(this,"ethereumProvider",null);T(this,"requestWaitingForConnection",{});T(this,"processRpcCallFromWindow",({rpcRequest:n})=>{if(!this.ethereumProvider){n.id&&(this.requestWaitingForConnection[n.id]=n);return}this.processRpcRequest(n)});this.iframeWidow=n}disconnect(){this.ethereumProvider=null,y.stopListeningToMessageFromWindow(window,C.PROVIDER_RPC_REQUEST,this.processRpcCallFromWindow)}onConnect(n){this.ethereumProvider?this.disconnect():y.listenToMessageFromWindow(window,C.PROVIDER_RPC_REQUEST,this.processRpcCallFromWindow),this.ethereumProvider=n,this.processPendingRequests(),G.forEach(t=>{n.on(t,s=>this.onProviderEvent(t,s))})}processPendingRequests(){Object.keys(this.requestWaitingForConnection).forEach(n=>{this.processRpcRequest(this.requestWaitingForConnection[n])}),this.requestWaitingForConnection={}}processRpcRequest(n){const{id:t,jsonrpc:s,method:d}=n;if(!this.ethereumProvider||!t)return;(d==="enable"?this.ethereumProvider.enable():this.ethereumProvider.request({...n,id:t})).then(w=>this.forwardRpcResponseToIframe({rpcResponse:{jsonrpc:s,id:t,result:w}})).catch(w=>this.forwardRpcResponseToIframe({rpcResponse:{jsonrpc:s,id:t,error:w}}))}onProviderEvent(n,t){y.postMessageToWindow(this.iframeWidow,C.PROVIDER_ON_EVENT,{event:n,params:t})}forwardRpcResponseToIframe(n){y.postMessageToWindow(this.iframeWidow,C.PROVIDER_RPC_RESPONSE,n)}}var j={exports:{}};(function(e){var n=Object.prototype.hasOwnProperty,t="~";function s(){}Object.create&&(s.prototype=Object.create(null),new s().__proto__||(t=!1));function d(c,r,o){this.fn=c,this.context=r,this.once=o||!1}function l(c,r,o,i,E){if(typeof o!="function")throw new TypeError("The listener must be a function");var f=new d(o,i||c,E),p=t?t+r:r;return c._events[p]?c._events[p].fn?c._events[p]=[c._events[p],f]:c._events[p].push(f):(c._events[p]=f,c._eventsCount++),c}function w(c,r){--c._eventsCount===0?c._events=new s:delete c._events[r]}function u(){this._events=new s,this._eventsCount=0}u.prototype.eventNames=function(){var r=[],o,i;if(this._eventsCount===0)return r;for(i in o=this._events)n.call(o,i)&&r.push(t?i.slice(1):i);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(o)):r},u.prototype.listeners=function(r){var o=t?t+r:r,i=this._events[o];if(!i)return[];if(i.fn)return[i.fn];for(var E=0,f=i.length,p=new Array(f);E<f;E++)p[E]=i[E].fn;return p},u.prototype.listenerCount=function(r){var o=t?t+r:r,i=this._events[o];return i?i.fn?1:i.length:0},u.prototype.emit=function(r,o,i,E,f,p){var _=t?t+r:r;if(!this._events[_])return!1;var a=this._events[_],P=arguments.length,v,h;if(a.fn){switch(a.once&&this.removeListener(r,a.fn,void 0,!0),P){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,o),!0;case 3:return a.fn.call(a.context,o,i),!0;case 4:return a.fn.call(a.context,o,i,E),!0;case 5:return a.fn.call(a.context,o,i,E,f),!0;case 6:return a.fn.call(a.context,o,i,E,f,p),!0}for(h=1,v=new Array(P-1);h<P;h++)v[h-1]=arguments[h];a.fn.apply(a.context,v)}else{var U=a.length,R;for(h=0;h<U;h++)switch(a[h].once&&this.removeListener(r,a[h].fn,void 0,!0),P){case 1:a[h].fn.call(a[h].context);break;case 2:a[h].fn.call(a[h].context,o);break;case 3:a[h].fn.call(a[h].context,o,i);break;case 4:a[h].fn.call(a[h].context,o,i,E);break;default:if(!v)for(R=1,v=new Array(P-1);R<P;R++)v[R-1]=arguments[R];a[h].fn.apply(a[h].context,v)}}return!0},u.prototype.on=function(r,o,i){return l(this,r,o,i,!1)},u.prototype.once=function(r,o,i){return l(this,r,o,i,!0)},u.prototype.removeListener=function(r,o,i,E){var f=t?t+r:r;if(!this._events[f])return this;if(!o)return w(this,f),this;var p=this._events[f];if(p.fn)p.fn===o&&(!E||p.once)&&(!i||p.context===i)&&w(this,f);else{for(var _=0,a=[],P=p.length;_<P;_++)(p[_].fn!==o||E&&!p[_].once||i&&p[_].context!==i)&&a.push(p[_]);a.length?this._events[f]=a.length===1?a[0]:a:w(this,f)}return this},u.prototype.removeAllListeners=function(r){var o;return r?(o=t?t+r:r,this._events[o]&&w(this,o)):(this._events=new s,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=t,u.EventEmitter=u,e.exports=u})(j);class ${constructor(){T(this,"subscriptions",{})}on(n){const{event:t,handler:s}=n;return this.subscriptions[t]||(this.subscriptions[t]=[]),this.subscriptions[t].push(s),n}off(n){const{event:t,handler:s}=n;return this.subscriptions[t]&&(this.subscriptions[t]=this.subscriptions[t].filter(d=>d!==s)),n}emit(n,t){this.subscriptions[n]&&this.subscriptions[n].forEach(s=>s(t))}}var g=(e=>(e.ACTIVATE="ACTIVATE",e.UPDATE_HEIGHT="UPDATE_HEIGHT",e.SET_FULL_HEIGHT="SET_FULL_HEIGHT",e.EMIT_COW_EVENT="EMIT_COW_EVENT",e.PROVIDER_RPC_REQUEST="PROVIDER_RPC_REQUEST",e.INTERCEPT_WINDOW_OPEN="INTERCEPT_WINDOW_OPEN",e))(g||{}),O=(e=>(e.UPDATE_PARAMS="UPDATE_PARAMS",e.UPDATE_APP_DATA="UPDATE_APP_DATA",e.PROVIDER_RPC_RESPONSE="PROVIDER_RPC_RESPONSE",e.PROVIDER_ON_EVENT="PROVIDER_ON_EVENT",e))(O||{}),I=(e=>(e.SWAP="swap",e.LIMIT="limit",e.ADVANCED="advanced",e.YIELD="yield",e))(I||{});const B=["primary","background","paper","text","danger","warning","alert","info","success"],m=new b("cowSwapWidget");class q{constructor(n,t=[]){T(this,"eventEmitter",new $);T(this,"listeners",[]);T(this,"widgetListener");this.contentWindow=n,this.updateListeners(t),this.widgetListener=m.listenToMessageFromWindow(this.contentWindow,g.EMIT_COW_EVENT,s=>this.eventEmitter.emit(s.event,s.payload))}stopListeningIframe(){m.stopListeningWindowListener(this.contentWindow,this.widgetListener)}updateListeners(n){for(const t of this.listeners)this.eventEmitter.off(t);this.listeners=n||[];for(const t of this.listeners)this.eventEmitter.on(t)}}class Y{constructor(n,t){T(this,"forwardSdkMessage");this.appWindow=n,this.iframeWidow=t,this.forwardSdkMessage=s=>{z(s.data)&&s.origin!==window.location.origin&&(J(s.data)?this.appWindow.parent.postMessage(s.data,"*"):K(s.data)&&this.iframeWidow.postMessage(s.data,"*"))},this.startListening()}startListening(){this.appWindow.addEventListener("message",this.forwardSdkMessage)}stopListening(){this.appWindow.removeEventListener("message",this.forwardSdkMessage)}}function z(e){return typeof e=="object"&&e!==null&&"id"in e&&typeof e.id=="string"}function J(e){return"method"in e&&typeof e.method=="string"&&"params"in e&&"env"in e&&typeof e.env=="object"&&e.env!==null&&"sdkVersion"in e.env}function K(e){return"success"in e&&typeof e.success=="boolean"&&"version"in e&&typeof e.version=="string"}function N(e){return!!(e&&typeof e=="object")}const A="_";function X(e){const n=typeof e.baseUrl=="string"?e.baseUrl:"https://swap.cow.fi",t=M(e);return n+"/#"+t+"?"+V(e)}function M(e){const{chainId:n=1,sell:t,buy:s,tradeType:d=I.SWAP}=e,l=[(t==null?void 0:t.asset)||A,(s==null?void 0:s.asset)||A].map(encodeURIComponent).join("/");return`/${n}/widget/${d}/${l}`}function V(e){const n=new URLSearchParams;return ee(Z(n,e),e)}function Z(e,n){const{sell:t,buy:s}=n;return t!=null&&t.amount&&e.append("sellAmount",t.amount),s!=null&&s.amount&&e.append("buyAmount",s.amount),e}function ee(e,n){const t=n.theme;return t?(N(t)?(e.append("palette",encodeURIComponent(JSON.stringify(t))),e.append("theme",t.baseTheme)):(e.append("palette","null"),e.append("theme",t)),e):(e.append("palette","null"),e)}const F="640px",te="450px",ne=20;function se(e,n){const{params:t,provider:s,listeners:d}=n;let l=s,w=t;const u=re(t);e.innerHTML="",e.appendChild(u);const{contentWindow:c}=u;if(!c)throw console.error("Iframe does not contain a window",u),new Error("Iframe does not contain a window!");const r=[];r.push(oe(c,t.appCode)),r.push(...ae(u,t.height,t.maxHeight)),r.push(ie());const o=new q(window,d);let i=L(c,null,l);u.addEventListener("load",()=>D(c,w,l));const E=new Y(window,c);return{updateParams:f=>{w=f,D(c,w,l)},updateListeners:f=>o.updateListeners(f),updateProvider:f=>{l=f,i=L(c,i,f)},destroy:()=>{i.disconnect(),o.stopListeningIframe(),r.forEach(f=>window.removeEventListener("message",f)),E.stopListening(),e.removeChild(u)}}}function L(e,n,t){n&&n.disconnect();const s=n||new Q(e);return t&&s.onConnect(t),s}function re(e){const{width:n=te,height:t=F}=e,s=document.createElement("iframe");return s.src=X(e),s.width=n,s.height=t,s.style.border="0",s.allow="clipboard-read; clipboard-write",s}function D(e,n,t){const s=!!t,d=M(n),l=V(n).toString(),{theme:w,...u}=n;m.postMessageToWindow(e,O.UPDATE_PARAMS,{urlParams:{pathname:d,search:l},appParams:u,hasProvider:s})}function oe(e,n){return m.listenToMessageFromWindow(window,g.ACTIVATE,()=>{m.postMessageToWindow(e,O.UPDATE_APP_DATA,{metaData:n?{appCode:n}:void 0})})}function ie(){return m.listenToMessageFromWindow(window,g.INTERCEPT_WINDOW_OPEN,({href:e,rel:n,target:t})=>{const s=e.toString();if(!s.startsWith("http")&&s.match(/^[a-zA-Z0-9]+:\/\//)){window.open(s,t,n);return}})}function ae(e,n=F,t){return[m.listenToMessageFromWindow(window,g.UPDATE_HEIGHT,s=>{const d=s.height?s.height+ne:void 0;e.style.height=d?`${t?Math.min(d,t):d}px`:n}),m.listenToMessageFromWindow(window,g.SET_FULL_HEIGHT,({isUpToSmall:s})=>{e.style.height=s?n:`${t||document.body.offsetHeight}px`})]}const ce=Object.values(I);function ue(e,n,t){if(W(e)){const s=e[t];return S(s)?s[n]:s}if(S(e)){const s=e[n];return W(s)?s[t]:s}return e}function W(e){return typeof e!="object"?!1:Object.keys(e).every(n=>ce.includes(n))}const fe=/^\d+$/;function S(e){return typeof e!="object"?!1:Object.keys(e).every(n=>typeof n=="number"||fe.test(n))}exports.TradeType=I;exports.WIDGET_PALETTE_COLORS=B;exports.WidgetMethodsEmit=g;exports.WidgetMethodsListen=O;exports.createCowSwapWidget=se;exports.isCowSwapWidgetPalette=N;exports.isPerNetworkConfig=S;exports.isPerTradeTypeConfig=W;exports.resolveFlexibleConfig=ue;exports.widgetIframeTransport=m;
package/index.mjs CHANGED
@@ -1,27 +1,27 @@
1
- var M = Object.defineProperty;
2
- var x = (e, n, t) => n in e ? M(e, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[n] = t;
3
- var m = (e, n, t) => (x(e, typeof n != "symbol" ? n + "" : n, t), t);
1
+ var F = Object.defineProperty;
2
+ var k = (e, n, t) => n in e ? F(e, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[n] = t;
3
+ var m = (e, n, t) => (k(e, typeof n != "symbol" ? n + "" : n, t), t);
4
4
  class b {
5
5
  constructor(n) {
6
6
  this.key = n;
7
7
  }
8
8
  postMessageToWindow(n, t, s) {
9
- const l = typeof s == "object" ? s : {}, h = {
9
+ const d = typeof s == "object" ? s : {}, l = {
10
10
  key: this.key,
11
11
  method: t,
12
- ...l
12
+ ...d
13
13
  };
14
14
  n.postMessage(
15
- h,
15
+ l,
16
16
  "*"
17
17
  // TODO: Change to CoW specific origin in production. https://github.com/cowprotocol/cowswap/issues/3828
18
18
  );
19
19
  }
20
20
  listenToMessageFromWindow(n, t, s) {
21
- const l = (h) => {
22
- !k(h.data) || h.data.key !== this.key || h.data.method !== t || s(h.data);
21
+ const d = (l) => {
22
+ !x(l.data) || l.data.key !== this.key || l.data.method !== t || s(l.data);
23
23
  };
24
- return n.addEventListener("message", l), l;
24
+ return n.addEventListener("message", d), d;
25
25
  }
26
26
  stopListeningToMessageFromWindow(n, t, s) {
27
27
  n.removeEventListener("message", s);
@@ -30,11 +30,11 @@ class b {
30
30
  n.removeEventListener("message", t);
31
31
  }
32
32
  }
33
- function k(e) {
33
+ function x(e) {
34
34
  return typeof e == "object" && e !== null && "key" in e && "method" in e && typeof e.key == "string" && typeof e.method == "string";
35
35
  }
36
- var O = /* @__PURE__ */ ((e) => (e.PROVIDER_RPC_REQUEST = "PROVIDER_RPC_REQUEST", e.PROVIDER_RPC_RESPONSE = "PROVIDER_RPC_RESPONSE", e.PROVIDER_ON_EVENT = "PROVIDER_ON_EVENT", e))(O || {});
37
- const y = new b(
36
+ var I = /* @__PURE__ */ ((e) => (e.PROVIDER_RPC_REQUEST = "PROVIDER_RPC_REQUEST", e.PROVIDER_RPC_RESPONSE = "PROVIDER_RPC_RESPONSE", e.PROVIDER_ON_EVENT = "PROVIDER_ON_EVENT", e))(I || {});
37
+ const O = new b(
38
38
  "cowSwapIframeRpcProviderTransport"
39
39
  ), H = ["connect", "disconnect", "close", "chainChanged", "accountsChanged"];
40
40
  class G {
@@ -64,9 +64,9 @@ class G {
64
64
  * Disconnects the JSON-RPC bridge from the Ethereum provider.
65
65
  */
66
66
  disconnect() {
67
- this.ethereumProvider = null, y.stopListeningToMessageFromWindow(
67
+ this.ethereumProvider = null, O.stopListeningToMessageFromWindow(
68
68
  window,
69
- O.PROVIDER_RPC_REQUEST,
69
+ I.PROVIDER_RPC_REQUEST,
70
70
  this.processRpcCallFromWindow
71
71
  );
72
72
  }
@@ -75,9 +75,9 @@ class G {
75
75
  * @param newProvider - The Ethereum provider to connect.
76
76
  */
77
77
  onConnect(n) {
78
- this.ethereumProvider ? this.disconnect() : y.listenToMessageFromWindow(
78
+ this.ethereumProvider ? this.disconnect() : O.listenToMessageFromWindow(
79
79
  window,
80
- O.PROVIDER_RPC_REQUEST,
80
+ I.PROVIDER_RPC_REQUEST,
81
81
  this.processRpcCallFromWindow
82
82
  ), this.ethereumProvider = n, this.processPendingRequests(), H.forEach((t) => {
83
83
  n.on(t, (s) => this.onProviderEvent(t, s));
@@ -93,10 +93,10 @@ class G {
93
93
  * @param request - The JSON-RPC request to be processed.
94
94
  */
95
95
  processRpcRequest(n) {
96
- const { id: t, jsonrpc: s, method: l } = n;
96
+ const { id: t, jsonrpc: s, method: d } = n;
97
97
  if (!this.ethereumProvider || !t)
98
98
  return;
99
- (l === "enable" ? this.ethereumProvider.enable() : this.ethereumProvider.request({ ...n, id: t })).then(
99
+ (d === "enable" ? this.ethereumProvider.enable() : this.ethereumProvider.request({ ...n, id: t })).then(
100
100
  (w) => this.forwardRpcResponseToIframe({
101
101
  rpcResponse: { jsonrpc: s, id: t, result: w }
102
102
  })
@@ -107,7 +107,7 @@ class G {
107
107
  );
108
108
  }
109
109
  onProviderEvent(n, t) {
110
- y.postMessageToWindow(this.iframeWidow, O.PROVIDER_ON_EVENT, {
110
+ O.postMessageToWindow(this.iframeWidow, I.PROVIDER_ON_EVENT, {
111
111
  event: n,
112
112
  params: t
113
113
  });
@@ -116,9 +116,9 @@ class G {
116
116
  * Forward a JSON-RPC message to the content window.
117
117
  */
118
118
  forwardRpcResponseToIframe(n) {
119
- y.postMessageToWindow(
119
+ O.postMessageToWindow(
120
120
  this.iframeWidow,
121
- O.PROVIDER_RPC_RESPONSE,
121
+ I.PROVIDER_RPC_RESPONSE,
122
122
  n
123
123
  );
124
124
  }
@@ -129,13 +129,13 @@ var Q = { exports: {} };
129
129
  function s() {
130
130
  }
131
131
  Object.create && (s.prototype = /* @__PURE__ */ Object.create(null), new s().__proto__ || (t = !1));
132
- function l(c, r, o) {
132
+ function d(c, r, o) {
133
133
  this.fn = c, this.context = r, this.once = o || !1;
134
134
  }
135
- function h(c, r, o, i, E) {
135
+ function l(c, r, o, i, E) {
136
136
  if (typeof o != "function")
137
137
  throw new TypeError("The listener must be a function");
138
- var f = new l(o, i || c, E), p = t ? t + r : r;
138
+ var f = new d(o, i || c, E), p = t ? t + r : r;
139
139
  return c._events[p] ? c._events[p].fn ? c._events[p] = [c._events[p], f] : c._events[p].push(f) : (c._events[p] = f, c._eventsCount++), c;
140
140
  }
141
141
  function w(c, r) {
@@ -167,7 +167,7 @@ var Q = { exports: {} };
167
167
  var _ = t ? t + r : r;
168
168
  if (!this._events[_])
169
169
  return !1;
170
- var a = this._events[_], T = arguments.length, P, d;
170
+ var a = this._events[_], T = arguments.length, P, h;
171
171
  if (a.fn) {
172
172
  switch (a.once && this.removeListener(r, a.fn, void 0, !0), T) {
173
173
  case 1:
@@ -183,37 +183,37 @@ var Q = { exports: {} };
183
183
  case 6:
184
184
  return a.fn.call(a.context, o, i, E, f, p), !0;
185
185
  }
186
- for (d = 1, P = new Array(T - 1); d < T; d++)
187
- P[d - 1] = arguments[d];
186
+ for (h = 1, P = new Array(T - 1); h < T; h++)
187
+ P[h - 1] = arguments[h];
188
188
  a.fn.apply(a.context, P);
189
189
  } else {
190
- var F = a.length, g;
191
- for (d = 0; d < F; d++)
192
- switch (a[d].once && this.removeListener(r, a[d].fn, void 0, !0), T) {
190
+ var U = a.length, g;
191
+ for (h = 0; h < U; h++)
192
+ switch (a[h].once && this.removeListener(r, a[h].fn, void 0, !0), T) {
193
193
  case 1:
194
- a[d].fn.call(a[d].context);
194
+ a[h].fn.call(a[h].context);
195
195
  break;
196
196
  case 2:
197
- a[d].fn.call(a[d].context, o);
197
+ a[h].fn.call(a[h].context, o);
198
198
  break;
199
199
  case 3:
200
- a[d].fn.call(a[d].context, o, i);
200
+ a[h].fn.call(a[h].context, o, i);
201
201
  break;
202
202
  case 4:
203
- a[d].fn.call(a[d].context, o, i, E);
203
+ a[h].fn.call(a[h].context, o, i, E);
204
204
  break;
205
205
  default:
206
206
  if (!P)
207
207
  for (g = 1, P = new Array(T - 1); g < T; g++)
208
208
  P[g - 1] = arguments[g];
209
- a[d].fn.apply(a[d].context, P);
209
+ a[h].fn.apply(a[h].context, P);
210
210
  }
211
211
  }
212
212
  return !0;
213
213
  }, u.prototype.on = function(r, o, i) {
214
- return h(this, r, o, i, !1);
214
+ return l(this, r, o, i, !1);
215
215
  }, u.prototype.once = function(r, o, i) {
216
- return h(this, r, o, i, !0);
216
+ return l(this, r, o, i, !0);
217
217
  }, u.prototype.removeListener = function(r, o, i, E) {
218
218
  var f = t ? t + r : r;
219
219
  if (!this._events[f])
@@ -244,13 +244,13 @@ class j {
244
244
  }
245
245
  off(n) {
246
246
  const { event: t, handler: s } = n;
247
- return this.subscriptions[t] && (this.subscriptions[t] = this.subscriptions[t].filter((l) => l !== s)), n;
247
+ return this.subscriptions[t] && (this.subscriptions[t] = this.subscriptions[t].filter((d) => d !== s)), n;
248
248
  }
249
249
  emit(n, t) {
250
250
  this.subscriptions[n] && this.subscriptions[n].forEach((s) => s(t));
251
251
  }
252
252
  }
253
- var R = /* @__PURE__ */ ((e) => (e.ACTIVATE = "ACTIVATE", e.UPDATE_HEIGHT = "UPDATE_HEIGHT", e.SET_FULL_HEIGHT = "SET_FULL_HEIGHT", e.EMIT_COW_EVENT = "EMIT_COW_EVENT", e.PROVIDER_RPC_REQUEST = "PROVIDER_RPC_REQUEST", e.INTERCEPT_WINDOW_OPEN = "INTERCEPT_WINDOW_OPEN", e))(R || {}), C = /* @__PURE__ */ ((e) => (e.UPDATE_PARAMS = "UPDATE_PARAMS", e.UPDATE_APP_DATA = "UPDATE_APP_DATA", e.PROVIDER_RPC_RESPONSE = "PROVIDER_RPC_RESPONSE", e.PROVIDER_ON_EVENT = "PROVIDER_ON_EVENT", e))(C || {}), I = /* @__PURE__ */ ((e) => (e.SWAP = "swap", e.LIMIT = "limit", e.ADVANCED = "advanced", e))(I || {});
253
+ var R = /* @__PURE__ */ ((e) => (e.ACTIVATE = "ACTIVATE", e.UPDATE_HEIGHT = "UPDATE_HEIGHT", e.SET_FULL_HEIGHT = "SET_FULL_HEIGHT", e.EMIT_COW_EVENT = "EMIT_COW_EVENT", e.PROVIDER_RPC_REQUEST = "PROVIDER_RPC_REQUEST", e.INTERCEPT_WINDOW_OPEN = "INTERCEPT_WINDOW_OPEN", e))(R || {}), y = /* @__PURE__ */ ((e) => (e.UPDATE_PARAMS = "UPDATE_PARAMS", e.UPDATE_APP_DATA = "UPDATE_APP_DATA", e.PROVIDER_RPC_RESPONSE = "PROVIDER_RPC_RESPONSE", e.PROVIDER_ON_EVENT = "PROVIDER_ON_EVENT", e))(y || {}), C = /* @__PURE__ */ ((e) => (e.SWAP = "swap", e.LIMIT = "limit", e.ADVANCED = "advanced", e.YIELD = "yield", e))(C || {});
254
254
  const ue = [
255
255
  "primary",
256
256
  "background",
@@ -288,7 +288,7 @@ class B {
288
288
  constructor(n, t) {
289
289
  m(this, "forwardSdkMessage");
290
290
  this.appWindow = n, this.iframeWidow = t, this.forwardSdkMessage = (s) => {
291
- q(s.data) && s.origin !== window.location.origin && (z(s.data) ? this.appWindow.parent.postMessage(s.data, "*") : J(s.data) && this.iframeWidow.postMessage(s.data, "*"));
291
+ q(s.data) && s.origin !== window.location.origin && (Y(s.data) ? this.appWindow.parent.postMessage(s.data, "*") : z(s.data) && this.iframeWidow.postMessage(s.data, "*"));
292
292
  }, this.startListening();
293
293
  }
294
294
  startListening() {
@@ -301,58 +301,58 @@ class B {
301
301
  function q(e) {
302
302
  return typeof e == "object" && e !== null && "id" in e && typeof e.id == "string";
303
303
  }
304
- function z(e) {
304
+ function Y(e) {
305
305
  return "method" in e && typeof e.method == "string" && "params" in e && "env" in e && typeof e.env == "object" && e.env !== null && "sdkVersion" in e.env;
306
306
  }
307
- function J(e) {
307
+ function z(e) {
308
308
  return "success" in e && typeof e.success == "boolean" && "version" in e && typeof e.version == "string";
309
309
  }
310
- function K(e) {
310
+ function J(e) {
311
311
  return !!(e && typeof e == "object");
312
312
  }
313
313
  const A = "_";
314
- function X(e) {
314
+ function K(e) {
315
315
  const n = typeof e.baseUrl == "string" ? e.baseUrl : "https://swap.cow.fi", t = N(e);
316
316
  return n + "/#" + t + "?" + V(e);
317
317
  }
318
318
  function N(e) {
319
- const { chainId: n = 1, sell: t, buy: s, tradeType: l = I.SWAP } = e, h = [(t == null ? void 0 : t.asset) || A, (s == null ? void 0 : s.asset) || A].map(encodeURIComponent).join("/");
320
- return `/${n}/widget/${l}/${h}`;
319
+ const { chainId: n = 1, sell: t, buy: s, tradeType: d = C.SWAP } = e, l = [(t == null ? void 0 : t.asset) || A, (s == null ? void 0 : s.asset) || A].map(encodeURIComponent).join("/");
320
+ return `/${n}/widget/${d}/${l}`;
321
321
  }
322
322
  function V(e) {
323
323
  const n = new URLSearchParams();
324
- return Z(Y(n, e), e);
324
+ return Z(X(n, e), e);
325
325
  }
326
- function Y(e, n) {
326
+ function X(e, n) {
327
327
  const { sell: t, buy: s } = n;
328
328
  return t != null && t.amount && e.append("sellAmount", t.amount), s != null && s.amount && e.append("buyAmount", s.amount), e;
329
329
  }
330
330
  function Z(e, n) {
331
331
  const t = n.theme;
332
- return t ? (K(t) ? (e.append("palette", encodeURIComponent(JSON.stringify(t))), e.append("theme", t.baseTheme)) : (e.append("palette", "null"), e.append("theme", t)), e) : (e.append("palette", "null"), e);
332
+ return t ? (J(t) ? (e.append("palette", encodeURIComponent(JSON.stringify(t))), e.append("theme", t.baseTheme)) : (e.append("palette", "null"), e.append("theme", t)), e) : (e.append("palette", "null"), e);
333
333
  }
334
- const U = "640px", ee = "450px", te = 20;
334
+ const M = "640px", ee = "450px", te = 20;
335
335
  function fe(e, n) {
336
- const { params: t, provider: s, listeners: l } = n;
337
- let h = s, w = t;
336
+ const { params: t, provider: s, listeners: d } = n;
337
+ let l = s, w = t;
338
338
  const u = ne(t);
339
339
  e.innerHTML = "", e.appendChild(u);
340
340
  const { contentWindow: c } = u;
341
341
  if (!c)
342
342
  throw console.error("Iframe does not contain a window", u), new Error("Iframe does not contain a window!");
343
343
  const r = [];
344
- r.push(se(c, t.appCode)), r.push(...oe(u, t.height)), r.push(re());
345
- const o = new $(window, l);
346
- let i = W(c, null, h);
347
- u.addEventListener("load", () => S(c, w, h));
344
+ r.push(se(c, t.appCode)), r.push(...oe(u, t.height, t.maxHeight)), r.push(re());
345
+ const o = new $(window, d);
346
+ let i = W(c, null, l);
347
+ u.addEventListener("load", () => L(c, w, l));
348
348
  const E = new B(window, c);
349
349
  return {
350
350
  updateParams: (f) => {
351
- w = f, S(c, w, h);
351
+ w = f, L(c, w, l);
352
352
  },
353
353
  updateListeners: (f) => o.updateListeners(f),
354
354
  updateProvider: (f) => {
355
- h = f, i = W(c, i, f);
355
+ l = f, i = W(c, i, f);
356
356
  },
357
357
  destroy: () => {
358
358
  i.disconnect(), o.stopListeningIframe(), r.forEach((f) => window.removeEventListener("message", f)), E.stopListening(), e.removeChild(u);
@@ -365,15 +365,15 @@ function W(e, n, t) {
365
365
  return t && s.onConnect(t), s;
366
366
  }
367
367
  function ne(e) {
368
- const { width: n = ee, height: t = U } = e, s = document.createElement("iframe");
369
- return s.src = X(e), s.width = n, s.height = t, s.style.border = "0", s.allow = "clipboard-read; clipboard-write", s;
368
+ const { width: n = ee, height: t = M } = e, s = document.createElement("iframe");
369
+ return s.src = K(e), s.width = n, s.height = t, s.style.border = "0", s.allow = "clipboard-read; clipboard-write", s;
370
370
  }
371
- function S(e, n, t) {
372
- const s = !!t, l = N(n), h = V(n).toString(), { theme: w, ...u } = n;
373
- v.postMessageToWindow(e, C.UPDATE_PARAMS, {
371
+ function L(e, n, t) {
372
+ const s = !!t, d = N(n), l = V(n).toString(), { theme: w, ...u } = n;
373
+ v.postMessageToWindow(e, y.UPDATE_PARAMS, {
374
374
  urlParams: {
375
- pathname: l,
376
- search: h
375
+ pathname: d,
376
+ search: l
377
377
  },
378
378
  appParams: u,
379
379
  hasProvider: s
@@ -381,7 +381,7 @@ function S(e, n, t) {
381
381
  }
382
382
  function se(e, n) {
383
383
  return v.listenToMessageFromWindow(window, R.ACTIVATE, () => {
384
- v.postMessageToWindow(e, C.UPDATE_APP_DATA, {
384
+ v.postMessageToWindow(e, y.UPDATE_APP_DATA, {
385
385
  metaData: n ? { appCode: n } : void 0
386
386
  });
387
387
  });
@@ -399,29 +399,30 @@ function re() {
399
399
  }
400
400
  );
401
401
  }
402
- function oe(e, n = U) {
402
+ function oe(e, n = M, t) {
403
403
  return [
404
- v.listenToMessageFromWindow(window, R.UPDATE_HEIGHT, (t) => {
405
- e.style.height = t.height ? `${t.height + te}px` : n;
404
+ v.listenToMessageFromWindow(window, R.UPDATE_HEIGHT, (s) => {
405
+ const d = s.height ? s.height + te : void 0;
406
+ e.style.height = d ? `${t ? Math.min(d, t) : d}px` : n;
406
407
  }),
407
- v.listenToMessageFromWindow(window, R.SET_FULL_HEIGHT, ({ isUpToSmall: t }) => {
408
- e.style.height = t ? n : `${document.body.offsetHeight}px`;
408
+ v.listenToMessageFromWindow(window, R.SET_FULL_HEIGHT, ({ isUpToSmall: s }) => {
409
+ e.style.height = s ? n : `${t || document.body.offsetHeight}px`;
409
410
  })
410
411
  ];
411
412
  }
412
- const ie = Object.values(I);
413
+ const ie = Object.values(C);
413
414
  function pe(e, n, t) {
414
- if (L(e)) {
415
+ if (S(e)) {
415
416
  const s = e[t];
416
417
  return D(s) ? s[n] : s;
417
418
  }
418
419
  if (D(e)) {
419
420
  const s = e[n];
420
- return L(s) ? s[t] : s;
421
+ return S(s) ? s[t] : s;
421
422
  }
422
423
  return e;
423
424
  }
424
- function L(e) {
425
+ function S(e) {
425
426
  return typeof e != "object" ? !1 : Object.keys(e).every((n) => ie.includes(n));
426
427
  }
427
428
  const ae = /^\d+$/;
@@ -429,14 +430,14 @@ function D(e) {
429
430
  return typeof e != "object" ? !1 : Object.keys(e).every((n) => typeof n == "number" || ae.test(n));
430
431
  }
431
432
  export {
432
- I as TradeType,
433
+ C as TradeType,
433
434
  ue as WIDGET_PALETTE_COLORS,
434
435
  R as WidgetMethodsEmit,
435
- C as WidgetMethodsListen,
436
+ y as WidgetMethodsListen,
436
437
  fe as createCowSwapWidget,
437
- K as isCowSwapWidgetPalette,
438
+ J as isCowSwapWidgetPalette,
438
439
  D as isPerNetworkConfig,
439
- L as isPerTradeTypeConfig,
440
+ S as isPerTradeTypeConfig,
440
441
  pe as resolveFlexibleConfig,
441
442
  v as widgetIframeTransport
442
443
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cowprotocol/widget-lib",
3
- "version": "0.15.0",
3
+ "version": "0.18.0",
4
4
  "type": "commonjs",
5
5
  "description": "CoW Swap Widget Library. Allows you to easily embed a CoW Swap widget on your website.",
6
6
  "main": "index.js",
package/types.d.ts CHANGED
@@ -63,6 +63,7 @@ interface TradeAsset {
63
63
  */
64
64
  amount?: string;
65
65
  }
66
+ export type ForcedOrderDeadline = FlexibleConfig<number>;
66
67
  export declare enum TradeType {
67
68
  SWAP = "swap",
68
69
  LIMIT = "limit",
@@ -70,7 +71,8 @@ export declare enum TradeType {
70
71
  * Currently it means only TWAP orders.
71
72
  * But in the future it can be extended to support other order types.
72
73
  */
73
- ADVANCED = "advanced"
74
+ ADVANCED = "advanced",
75
+ YIELD = "yield"
74
76
  }
75
77
  /**
76
78
  * The partner fee
@@ -159,6 +161,10 @@ export interface CowSwapWidgetParams {
159
161
  * The height of the widget in pixels. Default: 600px
160
162
  */
161
163
  height?: string;
164
+ /**
165
+ * The maximum height of the widget in pixels. Default: body.offsetHeight
166
+ */
167
+ maxHeight?: number;
162
168
  /**
163
169
  * Network ID.
164
170
  */
@@ -185,6 +191,14 @@ export interface CowSwapWidgetParams {
185
191
  * Buy token, and optionally the amount.
186
192
  */
187
193
  buy?: TradeAsset;
194
+ /**
195
+ * Forced order deadline in minutes. When set, user's won't be able to edit the deadline.
196
+ *
197
+ * Either a single value applied to each individual order type accordingly or an optional individual value per order type.
198
+ *
199
+ * The app will use the appropriated min/max value per order type.
200
+ */
201
+ forcedOrderDeadline?: ForcedOrderDeadline;
188
202
  /**
189
203
  * Enables the ability to switch between trade types in the widget.
190
204
  */
@@ -222,10 +236,20 @@ export interface CowSwapWidgetParams {
222
236
  * Option to hide the network selector in the widget.
223
237
  */
224
238
  hideNetworkSelector?: boolean;
239
+ /**
240
+ * Option to hide bridge info
241
+ */
242
+ hideBridgeInfo?: boolean;
243
+ /**
244
+ * Option to hide orders table on LIMIT and TWAP forms.
245
+ *
246
+ * Warning! When `true`, users won't be able to see their LIMIT/TWAP order status or history, neither they'll be able to cancel active orders.
247
+ */
248
+ hideOrdersTable?: boolean;
225
249
  /**
226
250
  * Defines the widget mode.
227
251
  * - `true` (standalone mode): The widget is standalone, so it will use its own Ethereum provider. The user can connect from within the widget.
228
- * - `false` (dapp mode): The widget is embedded in a dapp which is responsible of providing the Ethereum provider. Therefore, there won't be a connect button in the widget as this should happen in the host app.
252
+ * - `false` (dapp mode): The widget is embedded in a dapp which is responsible for providing the Ethereum provider. Therefore, there won't be a connect button in the widget as this should happen in the host app.
229
253
  *
230
254
  * Defaults to standalone.
231
255
  */