@onefootprint/footprint-js
Advanced tools
Comparing version 3.7.0 to 3.7.1
@@ -215,3 +215,3 @@ import * as CSS from 'csstype'; | ||
dialogVariant?: 'modal' | 'drawer'; | ||
onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void; | ||
onClick?: () => void; | ||
label?: string; | ||
@@ -218,0 +218,0 @@ }; |
@@ -1,13 +0,5 @@ | ||
var ve=Object.defineProperty,ge=Object.defineProperties;var he=Object.getOwnPropertyDescriptors;var O=Object.getOwnPropertySymbols;var U=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var $=(e,t,r)=>t in e?ve(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,w=(e,t)=>{for(var r in t||(t={}))U.call(t,r)&&$(e,r,t[r]);if(O)for(var r of O(t))j.call(t,r)&&$(e,r,t[r]);return e},S=(e,t)=>ge(e,he(t));var L=(e,t)=>{var r={};for(var n in e)U.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&O)for(var n of O(e))t.indexOf(n)<0&&j.call(e,n)&&(r[n]=e[n]);return r};var f=(e,t,r)=>new Promise((n,o)=>{var i=a=>{try{d(r.next(a));}catch(p){o(p);}},s=a=>{try{d(r.throw(a));}catch(p){o(p);}},d=a=>a.done?n(a.value):Promise.resolve(a.value).then(i,s);d((r=r.apply(e,t)).next());});var E="application/x-postmate-v1+json",Pe=5,Ee=0,Ce=function(){return ++Ee};var we=function(t){var r=document.createElement("a");r.href=t;var n=r.protocol.length>4?r.protocol:window.location.protocol,o=r.host.length?r.port==="80"||r.port==="443"?r.hostname:r.host:window.location.host;return r.origin||n+"//"+o},Ie={handshake:1,"handshake-reply":1,call:1,emit:1,reply:1,request:1},x=function(t,r){return !(typeof r=="string"&&t.origin!==r||!t.data||typeof t.data=="object"&&!("postmate"in t.data)||t.data.type!==E||!Ie[t.data.postmate])},be=function(t,r){var n=typeof t[r]=="function"?t[r]():t[r];return C.Promise.resolve(n)},Ve=function(){function e(r){var n=this;this.parent=r.parent,this.frame=r.frame,this.child=r.child,this.childOrigin=r.childOrigin,this.events={},this.listener=function(o){if(!x(o,n.childOrigin))return !1;var i=((o||{}).data||{}).value||{},s=i.data,d=i.name;o.data.postmate==="emit"&&d in n.events&&n.events[d].forEach(function(a){a.call(n,s);});},this.parent.addEventListener("message",this.listener,!1);}var t=e.prototype;return t.get=function(n){var o=this;return new C.Promise(function(i){var s=Ce(),d=function a(p){p.data.uid===s&&p.data.postmate==="reply"&&(o.parent.removeEventListener("message",a,!1),i(p.data.value));};o.parent.addEventListener("message",d,!1),o.child.postMessage({postmate:"request",type:E,property:n,uid:s},o.childOrigin);})},t.call=function(n,o){this.child.postMessage({postmate:"call",type:E,property:n,data:o},this.childOrigin);},t.on=function(n,o){this.events[n]||(this.events[n]=[]),this.events[n].push(o);},t.destroy=function(){window.removeEventListener("message",this.listener,!1),this.frame.parentNode.removeChild(this.frame);},e}(),Oe=function(){function e(r){var n=this;this.model=r.model,this.parent=r.parent,this.parentOrigin=r.parentOrigin,this.child=r.child,this.child.addEventListener("message",function(o){if(x(o,n.parentOrigin)){var i=o.data,s=i.property,d=i.uid,a=i.data;if(o.data.postmate==="call"){s in n.model&&typeof n.model[s]=="function"&&n.model[s](a);return}be(n.model,s).then(function(p){return o.source.postMessage({property:s,postmate:"reply",type:E,uid:d,value:p},o.origin)});}});}var t=e.prototype;return t.emit=function(n,o){this.parent.postMessage({postmate:"emit",type:E,value:{name:n,data:o}},this.parentOrigin);},e}(),C=function(){function e(r){var n=r.container,o=n===void 0?typeof o!="undefined"?o:document.body:n,i=r.model,s=r.url,d=r.name,a=d===void 0?"":d,p=r.allow,c=r.classListArray,m=c===void 0?[]:c;return this.parent=window,this.frame=document.createElement("iframe"),this.frame.name=a||"",this.frame.classList.add.apply(this.frame.classList,m),p&&(this.frame.allow=p),o.appendChild(this.frame),this.child=this.frame.contentWindow||this.frame.contentDocument.parentWindow,this.model=i||{},this.sendHandshake(s)}var t=e.prototype;return t.sendHandshake=function(n){var o=this,i=we(n),s=0,d;return new e.Promise(function(a,p){var c=function v(g){return x(g,i)?g.data.postmate==="handshake-reply"?(clearInterval(d),o.parent.removeEventListener("message",v,!1),o.childOrigin=g.origin,a(new Ve(o))):p("Failed handshake"):!1};o.parent.addEventListener("message",c,!1);var m=function(){s++,o.child.postMessage({postmate:"handshake",type:E,model:o.model},i),s===Pe&&clearInterval(d);},y=function(){m(),d=setInterval(m,500);};o.frame.attachEvent?o.frame.attachEvent("onload",y):o.frame.addEventListener("load",y),o.frame.src=n;})},e}();C.debug=!1;C.Promise=function(){try{return window?window.Promise:Promise}catch(e){return null}}();C.Model=function(){function e(r){return this.child=window,this.model=r,this.parent=this.child.parent,this.sendHandshakeReply()}var t=e.prototype;return t.sendHandshakeReply=function(){var n=this;return new C.Promise(function(o,i){var s=function d(a){if(a.data.postmate){if(a.data.postmate==="handshake"){n.child.removeEventListener("message",d,!1),a.source.postMessage({postmate:"handshake-reply",type:E},a.origin),n.parentOrigin=a.origin;var p=a.data.model;return p&&Object.keys(p).forEach(function(c){n.model[c]=p[c];}),o(new Oe(n))}return i("Handshake Reply Failed")}};n.child.addEventListener("message",s,!1);})},e}();var q=C;var b=(o=>(o.Verify="verify",o.Form="form",o.Render="render",o.VerifyButton="verify-button",o))(b||{});var k=(o=>(o.closed="closed",o.canceled="canceled",o.completed="completed",o.clicked="clicked",o))(k||{}),H=(o=>(o.propsReceived="propsReceived",o.started="started",o.formSaved="formSaved",o.formSaveComplete="formSaveComplete",o))(H||{});var z="footprint-inline-container",J="footprint-body-locked",X="footprint-overlay",Y="footprint-overlay-container",W=z,G=X,Z="footprint-loading-indicator",h=(e,t)=>`${e}-${t}`,Q=e=>f(void 0,null,function*(){A(e),Re(e),yield ke(e);}),ee=e=>{let t=h(Y,e),r=document.getElementById(t);if(r)return r;let n=document.createElement("div");return n.setAttribute("id",t),document.body.appendChild(n),n},ke=e=>f(void 0,null,function*(){let t=h(Y,e),r=document.getElementById(t);if(!r)return;let n=r.querySelector("iframe.footprint-drawer");n&&(n==null||n.classList.add("footprint-drawer-closing"),yield new Promise(d=>{setTimeout(d,300);}));let o=r.querySelector("iframe.footprint-modal");o&&(o==null||o.classList.add("footprint-modal-closing"),yield new Promise(d=>{setTimeout(d,100);}));let i=h(G,e),s=document.getElementById(i);s&&(s.classList.add("footprint-overlay-fading"),yield new Promise(d=>{setTimeout(d,200);}),r.remove(),s.remove(),document.body.classList.remove(J));}),te=(e,t)=>{let r=h(W,e),n=document.createElement("div");return n.classList.add(z),n.setAttribute("id",r),t.appendChild(n),n},Re=e=>{let t=h(W,e),r=document.getElementById(t);r&&r.remove();},A=e=>{let t=h(Z,e),r=document.getElementById(t);r&&r.remove();},N=(e,t)=>{let r=h(Z,t),n=Fe(r);e.appendChild(n);},re=(e,t)=>{document.body.classList.add(J);let r=document.createElement("div"),n=h(G,t);return r.setAttribute("id",n),r.classList.add(X),e.appendChild(r),r},Fe=e=>{let t=document.createElement("div");t.setAttribute("id",e),t.classList.add("footprint-loading-indicator");let r=document.createElement("div");r.classList.add("footprint-loading-spin");let n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width","24px"),n.setAttribute("height","24px"),n.setAttribute("fill","none"),n.setAttribute("aria-hidden","true");let o=document.createElementNS("http://www.w3.org/2000/svg","path");return o.setAttribute("d","M12 2a10 10 0 0 1 10 10h-2a7.999 7.999 0 0 0-8-8V2Z"),n.appendChild(o),r.appendChild(n),t.appendChild(r),t};var Se=()=>`${Math.floor(Math.random()*1e3)}`,R=Se;var _={["form"]:{["closed"]:"onClose",["canceled"]:"onCancel",["completed"]:"onComplete"},["verify"]:{["closed"]:"onClose",["canceled"]:"onCancel",["completed"]:"onComplete"},["verify-button"]:{["clicked"]:"onClick",["closed"]:"onClose",["canceled"]:"onCancel",["completed"]:"onComplete"},["render"]:{}},ne={["form"]:[],["verify"]:[],["render"]:[],["verify-button"]:[]};var Le={["form"]:["getRef"],["verify"]:[],["verify-button"]:[],["render"]:[]},oe=Le;var ae={["verify"]:["modal","drawer"],["verify-button"]:["inline"],["form"]:["inline","modal","drawer"],["render"]:["inline"]},K=(e,t)=>{var o;if(!t)return;let r=(o=ae[e])!=null?o:[];if(!r.includes(t))throw new Error(`Invalid variant: ${JSON.stringify(t)}. Valid variants for ${e} are ${r.join(", ")}`)},I=e=>{var r;let t=(r=ae[e])!=null?r:[];if(!t.length)throw new Error(`Invalid kind: ${e}`);return t[0]},D=e=>{if(!e)throw new Error("Kind is required");if(!Object.values(b).includes(e))throw new Error(`Invalid kind: ${e}. Valid kinds are: ${Object.values(b).join(", ")}}`)},xe=(e,t)=>{if(e==="inline"&&!t)throw new Error(`Inline component requires a containerId. Received ${t}`)},Ae=e=>{let{kind:t}=e;if(t==="verify-button"){let r=e,{kind:n,appearance:o,variant:i,dialogVariant:s,onClick:d,label:a,containerId:p}=r,c=L(r,["kind","appearance","variant","dialogVariant","onClick","label","containerId"]);return S(w({},c),{variant:s,kind:"verify"})}},Ne=e=>{var n;let{kind:t}=e;return (n=oe[t])!=null?n:[]},ie=(e,t,r)=>{var s;let{kind:n}=e,o=(s=_[n])!=null?s:{},i={};return Object.entries(o).forEach(([d,a])=>{let p=d;if(!Object.values(k).includes(p))return;let c=e[a];(!c||typeof c!="function")&&(c=()=>{});let m=p==="closed"||p==="canceled",y=n==="verify-button"&&p==="clicked";i[p]=v=>{c(v),m&&(t==null||t());let g=Ae(e);y&&g&&(r==null||r(g));};}),i},se=e=>{var m;let c=e,{kind:t,appearance:r,containerId:n}=c,o=L(c,["kind","appearance","containerId"]),i=(m=_[t])!=null?m:{},s=Object.values(i),d=Ne(e),a=Object.values(d);return Object.fromEntries(Object.entries(o).filter(([y])=>!s.includes(y)&&!a.includes(y)))},F=e=>{let{kind:t,variant:r,containerId:n}=e;D(t),K(t,r);let o=r||I(t);return xe(o,n),S(w({},e),{variant:o})};var _e=e=>typeof e=="object"&&!!e,B=({fontSrc:e,variables:t={},rules:r={},variant:n}={})=>{let o=()=>Object.keys(t).length?encodeURIComponent(JSON.stringify(t)):void 0,i=()=>Object.keys(r).length?encodeURIComponent(JSON.stringify(r)):void 0;return {fontSrc:e,variables:o(),rules:i(),variant:n}},de=()=>{let e=window.footprintAppearance;return !e||!_e(e)?{}:{fontSrc:e.fontSrc,rules:e.rules,theme:e.theme,variables:e.variables}};var Ke=e=>{let{kind:t}=e;return t==="verify"?De(e):Be(e)},De=e=>{let{appearance:t,variant:r,kind:n}=e,{fontSrc:o,rules:i,variables:s}=B(t),d="https://id.onefootprint.com",a=new URLSearchParams;"publicKey"in e&&e.publicKey&&a.append("public_key",e.publicKey),s&&a.append("variables",s),i&&a.append("rules",i),o&&a.append("font_src",o),a.append("variant",r!=null?r:I(n));let p=a.toString();return `${d}?${p}`},Be=e=>{let{appearance:t,kind:r,variant:n}=e,{fontSrc:o,rules:i,variables:s}=B(t),d="https://components.onefootprint.com",a=new URLSearchParams;s&&a.append("variables",s),i&&a.append("rules",i),o&&a.append("font_src",o),a.append("variant",n!=null?n:I(r));let p=a.toString();return `${d}/${r}?${p}`},pe=Ke;var Te=e=>{let t=null,r=!1,n=F(e),{variant:o,containerId:i}=n,s=o==="modal"||o==="drawer",d,a,p=R(),c=()=>{if(!t)throw new Error("Footprint should be initialized in order to listen events");let l=ie(n,d,a);Object.entries(l).forEach(([u,V])=>{t==null||t.on(u,V);});},m=()=>{if(!t)throw new Error("Footprint should be initialized in order to set up refs");let{kind:l}=n;if(l!=="form")return;let{getRef:u}=n;if(!u)return;u({save:()=>{if(!t)throw new Error("Footprint should be initialized to call ref methods");return new Promise(ye=>{t==null||t.call("formSaved"),t==null||t.on("formSaveComplete",()=>{ye();});})}});},y=()=>{if(!t)throw new Error("Footprint should be initialized in order to receive props");let l=se(n);t.call("propsReceived",l);},v=()=>{if(s)return ee(p);if(!i)throw new Error("containerId is required when rendering inline");let l=document.getElementById(i);if(!l)throw new Error(`Could not find container with id ${i} while rendering footprint`);return te(p,l)},g=(l,u)=>{if(!u){A(p),t==null||t.frame.classList.remove(`footprint-${o}-loading`),t==null||t.frame.classList.add(`footprint-${o}-loaded`);return}if(s){let V=re(l,p);N(V,p);}else N(l,p);};return {props:n,isRendered:r,render:()=>f(void 0,null,function*(){if(r)return;let l=v();if(!l)return;l.hasChildNodes()&&(l.innerHTML="");let u=pe(n);r=!0,g(l,!0),t=yield new q({classListArray:[`footprint-${o}`,`footprint-${o}-loading`],container:l,name:`footprint-iframe-${p}`,url:u,allow:"otp-credentials; publickey-credentials-get *; camera *; clipboard-write;"}),g(l,!1),c(),t.on("started",()=>{y(),m();});}),destroy:()=>f(void 0,null,function*(){r&&(r=!1,yield Q(p),t&&(t.destroy(),t=null));}),registerEvent:(l,u)=>{l==="renderSecondary"?a=u:l==="destroy"&&(d=u);}}},T=Te;var P=e=>{let t=F(e);return JSON.stringify(t)},Me=()=>{let e={};return {getOrCreate:i=>{let s=P(i.props),d=Object.values(e).find(a=>P(a.iframe.props)===s);return d?d.iframe:(e[s]={iframe:i,secondaryIframes:{}},i)},remove:i=>{let s=P(i.props),d=e[s];d&&(Object.keys(d.secondaryIframes).forEach(a=>{d.secondaryIframes[a].destroy();}),delete e[s]);},getOrCreateSecondary:(i,s)=>{let d=P(i.props),a=P(s.props);if(!e[d])throw new Error("iframe manager: primary iframe does not exist while adding secondary");let{secondaryIframes:p}=e[d],c=Object.values(p).find(m=>P(m.props)===a);return c||(p[a]=s,s)},removeSecondary:(i,s)=>{let d=P(i.props),a=P(s.props);if(!e[d])throw new Error("iframe manager: primary iframe does not exist while removing secondary");let{secondaryIframes:p}=e[d],c=p[a];c&&(c.destroy(),delete p[a]);}}},ce=Me;var $e=()=>{let e=ce();return {init:r=>{let n=T(r),o=()=>f(void 0,null,function*(){e.remove(n),yield n.destroy();}),i=a=>f(void 0,null,function*(){e.removeSecondary(n,a),yield a.destroy();}),s=a=>f(void 0,null,function*(){let p=T(a);p=e.getOrCreateSecondary(n,p),p.registerEvent("destroy",()=>{i(p);}),p.render();});return {render:()=>f(void 0,null,function*(){n=e.getOrCreate(n),n.registerEvent("destroy",o),n.registerEvent("renderSecondary",s),yield n.render();}),destroy:o}}}},Ue=$e(),M=Ue;var je=e=>{window.setTimeout(e,0);},le=e=>typeof e=="object"&&!!e,qe=e=>{if(typeof window=="undefined")return;let t=o=>{var d;let i=(d=window.footprintCallbacks)!=null?d:{};if(!le(i))throw Error("`window.footprintCallbacks` must be a valid mapping from callback names to functions.");return ne[o].forEach(a=>{if(!i[a])throw Error(`Callback '${a}' must be defined in window.footprintCallbacks`)}),i},r=o=>{var v;let i=o.getAttribute("data-kind");D(i);let s=(v=o.getAttribute("data-variant"))!=null?v:I(i);K(i,s);let d=de(),a=t(i),p=o.getAttribute("data-props")||"",c;try{c=JSON.parse(p);}catch(g){throw Error("Could not parse `data-props` for footprint.")}if(!le(c))throw Error("`data-props` on the footprint element has to be a valid JSON object stringified.");let m=R();o.setAttribute("id",m),e.init(w(w({kind:i,variant:s,appearance:d,containerId:o.id},a),c)).render();},n=()=>{let o=document.querySelectorAll("[data-footprint]");o.length&&o.forEach(i=>{r(i);});};document.addEventListener("DOMContentLoaded",()=>je(n));},me=qe;var fe=e=>f(void 0,null,function*(){let t=yield fetch("https://api.onefootprint.com/hosted/identify",{method:"POST",body:JSON.stringify(e)});if(!t.ok)throw Error(t.statusText);return (yield t.json()).user_found}),He=e=>f(void 0,null,function*(){if(!e)throw new Error("User data must be passed in order to identify an user");let t=e["id.email"],r=e["id.phone_number"];return t&&(yield fe({identifier:{email:t}}))?!0:r?yield fe({identifier:{phone_number:r}}):!1}),ue=He;var Ut=M;me(M);/*! Bundled license information: | ||
import Fe from '@onefootprint/postmate'; | ||
@onefootprint/postmate/build/postmate.es.js: | ||
(** | ||
@onefootprint/postmate - A powerful, simple, promise-based postMessage library | ||
@version v2.1.0 | ||
@link https://github.com/dollarshaveclub/postmate | ||
@author Jacob Kelley <jakie8@gmail.com> | ||
@license MIT | ||
**) | ||
*/ | ||
var me=Object.defineProperty,fe=Object.defineProperties;var ye=Object.getOwnPropertyDescriptors;var V=Object.getOwnPropertySymbols;var U=Object.prototype.hasOwnProperty,$=Object.prototype.propertyIsEnumerable;var N=(e,t,r)=>t in e?me(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,b=(e,t)=>{for(var r in t||(t={}))U.call(t,r)&&N(e,r,t[r]);if(V)for(var r of V(t))$.call(t,r)&&N(e,r,t[r]);return e},k=(e,t)=>fe(e,ye(t));var S=(e,t)=>{var r={};for(var o in e)U.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&V)for(var o of V(e))t.indexOf(o)<0&&$.call(e,o)&&(r[o]=e[o]);return r};var m=(e,t,r)=>new Promise((o,n)=>{var a=i=>{try{s(r.next(i));}catch(c){n(c);}},p=i=>{try{s(r.throw(i));}catch(c){n(c);}},s=i=>i.done?o(i.value):Promise.resolve(i.value).then(a,p);s((r=r.apply(e,t)).next());});var w=(n=>(n.Verify="verify",n.Form="form",n.Render="render",n.VerifyButton="verify-button",n))(w||{});var E=(n=>(n.closed="closed",n.canceled="canceled",n.completed="completed",n.clicked="clicked",n))(E||{}),D=(n=>(n.propsReceived="propsReceived",n.started="started",n.formSaved="formSaved",n.formSaveComplete="formSaveComplete",n))(D||{});var j="footprint-inline-container",M="footprint-body-locked",q="footprint-overlay",H="footprint-overlay-container",z=j,J=q,X="footprint-loading-indicator",u=(e,t)=>`${e}-${t}`,Y=e=>m(void 0,null,function*(){x(e),ge(e),yield ue(e);}),G=e=>{let t=u(H,e),r=document.getElementById(t);if(r)return r;let o=document.createElement("div");return o.setAttribute("id",t),document.body.appendChild(o),o},ue=e=>m(void 0,null,function*(){let t=u(H,e),r=document.getElementById(t);if(!r)return;let o=r.querySelector("iframe.footprint-drawer");o&&(o==null||o.classList.add("footprint-drawer-closing"),yield new Promise(s=>{setTimeout(s,300);}));let n=r.querySelector("iframe.footprint-modal");n&&(n==null||n.classList.add("footprint-modal-closing"),yield new Promise(s=>{setTimeout(s,100);}));let a=u(J,e),p=document.getElementById(a);p&&(p.classList.add("footprint-overlay-fading"),yield new Promise(s=>{setTimeout(s,200);}),r.remove(),p.remove(),document.body.classList.remove(M));}),Z=(e,t)=>{let r=u(z,e),o=document.createElement("div");return o.classList.add(j),o.setAttribute("id",r),t.appendChild(o),o},ge=e=>{let t=u(z,e),r=document.getElementById(t);r&&r.remove();},x=e=>{let t=u(X,e),r=document.getElementById(t);r&&r.remove();},O=(e,t)=>{let r=u(X,t),o=ve(r);e.appendChild(o);},Q=(e,t)=>{document.body.classList.add(M);let r=document.createElement("div"),o=u(J,t);return r.setAttribute("id",o),r.classList.add(q),e.appendChild(r),r},ve=e=>{let t=document.createElement("div");t.setAttribute("id",e),t.classList.add("footprint-loading-indicator");let r=document.createElement("div");r.classList.add("footprint-loading-spin");let o=document.createElementNS("http://www.w3.org/2000/svg","svg");o.setAttribute("width","24px"),o.setAttribute("height","24px"),o.setAttribute("fill","none"),o.setAttribute("aria-hidden","true");let n=document.createElementNS("http://www.w3.org/2000/svg","path");return n.setAttribute("d","M12 2a10 10 0 0 1 10 10h-2a7.999 7.999 0 0 0-8-8V2Z"),o.appendChild(n),r.appendChild(o),t.appendChild(r),t};var Pe=()=>`${Math.floor(Math.random()*1e3)}`,R=Pe;var L={["form"]:{["closed"]:"onClose",["canceled"]:"onCancel",["completed"]:"onComplete"},["verify"]:{["closed"]:"onClose",["canceled"]:"onCancel",["completed"]:"onComplete"},["verify-button"]:{["clicked"]:"onClick",["closed"]:"onClose",["canceled"]:"onCancel",["completed"]:"onComplete"},["render"]:{}},W={["form"]:[],["verify"]:[],["render"]:[],["verify-button"]:[]};var Ce={["form"]:["getRef"],["verify"]:[],["verify-button"]:[],["render"]:[]},ee=Ce;var te={["verify"]:["modal","drawer"],["verify-button"]:["inline"],["form"]:["inline","modal","drawer"],["render"]:["inline"]},A=(e,t)=>{var n;if(!t)return;let r=(n=te[e])!=null?n:[];if(!r.includes(t))throw new Error(`Invalid variant: ${JSON.stringify(t)}. Valid variants for ${e} are ${r.join(", ")}`)},I=e=>{var r;let t=(r=te[e])!=null?r:[];if(!t.length)throw new Error(`Invalid kind: ${e}`);return t[0]},K=e=>{if(!e)throw new Error("Kind is required");if(!Object.values(w).includes(e))throw new Error(`Invalid kind: ${e}. Valid kinds are: ${Object.values(w).join(", ")}}`)},be=(e,t)=>{if(e==="inline"&&!t)throw new Error(`Inline component requires a containerId. Received ${t}`)},Ie=e=>{let{kind:t}=e;if(t==="verify-button"){let r=e,{kind:o,appearance:n,variant:a,dialogVariant:p,onClick:s,label:i,containerId:c}=r,d=S(r,["kind","appearance","variant","dialogVariant","onClick","label","containerId"]);return k(b({},d),{variant:p,kind:"verify"})}},we=e=>{var o;let{kind:t}=e;return (o=ee[t])!=null?o:[]},re=(e,t,r)=>{var p;let{kind:o}=e,n=(p=L[o])!=null?p:{},a={};return Object.entries(n).forEach(([s,i])=>{let c=s;if(!Object.values(E).includes(c))return;let d=e[i];(!d||typeof d!="function")&&(d=()=>{});let y=c==="closed"||c==="canceled",v=o==="verify-button"&&c==="clicked";a[c]=P=>{d(P),y&&(t==null||t());let C=Ie(e);v&&C&&(r==null||r(C));};}),a},oe=e=>{var y;let d=e,{kind:t,appearance:r,containerId:o}=d,n=S(d,["kind","appearance","containerId"]),a=(y=L[t])!=null?y:{},p=Object.values(a),s=we(e),i=Object.values(s);return Object.fromEntries(Object.entries(n).filter(([v])=>!p.includes(v)&&!i.includes(v)))},F=e=>{let{kind:t,variant:r,containerId:o}=e;K(t),A(t,r);let n=r||I(t);return be(n,o),k(b({},e),{variant:n})};var he=e=>typeof e=="object"&&!!e,B=({fontSrc:e,variables:t={},rules:r={},variant:o}={})=>{let n=()=>Object.keys(t).length?encodeURIComponent(JSON.stringify(t)):void 0,a=()=>Object.keys(r).length?encodeURIComponent(JSON.stringify(r)):void 0;return {fontSrc:e,variables:n(),rules:a(),variant:o}},ne=()=>{let e=window.footprintAppearance;return !e||!he(e)?{}:{fontSrc:e.fontSrc,rules:e.rules,theme:e.theme,variables:e.variables}};var Ve=e=>{let{kind:t}=e;return t==="verify"?Ee(e):Re(e)},Ee=e=>{let{appearance:t,variant:r,kind:o}=e,{fontSrc:n,rules:a,variables:p}=B(t),s="https://id.onefootprint.com",i=new URLSearchParams;"publicKey"in e&&e.publicKey&&i.append("public_key",e.publicKey),p&&i.append("variables",p),a&&i.append("rules",a),n&&i.append("font_src",n),i.append("variant",r!=null?r:I(o));let c=i.toString();return `${s}?${c}`},Re=e=>{let{appearance:t,kind:r,variant:o}=e,{fontSrc:n,rules:a,variables:p}=B(t),s="https://components.onefootprint.com",i=new URLSearchParams;p&&i.append("variables",p),a&&i.append("rules",a),n&&i.append("font_src",n),i.append("variant",o!=null?o:I(r));let c=i.toString();return `${s}/${r}?${c}`},ie=Ve;var ke=e=>{let t=null,r=!1,o=F(e),{variant:n,containerId:a}=o,p=n==="modal"||n==="drawer",s,i,c=R(),d=()=>{if(!t)throw new Error("Footprint should be initialized in order to listen events");let l=re(o,s,i);Object.entries(l).forEach(([f,h])=>{t==null||t.on(f,h);});},y=()=>{if(!t)throw new Error("Footprint should be initialized in order to set up refs");let{kind:l}=o;if(l!=="form")return;let{getRef:f}=o;if(!f)return;f({save:()=>{if(!t)throw new Error("Footprint should be initialized to call ref methods");return new Promise(le=>{t==null||t.call("formSaved"),t==null||t.on("formSaveComplete",()=>{le();});})}});},v=()=>{if(!t)throw new Error("Footprint should be initialized in order to receive props");let l=oe(o);t.call("propsReceived",l);},P=()=>{if(p)return G(c);if(!a)throw new Error("containerId is required when rendering inline");let l=document.getElementById(a);if(!l)throw new Error(`Could not find container with id ${a} while rendering footprint`);return Z(c,l)},C=(l,f)=>{if(!f){x(c),t==null||t.frame.classList.remove(`footprint-${n}-loading`),t==null||t.frame.classList.add(`footprint-${n}-loaded`);return}if(p){let h=Q(l,c);O(h,c);}else O(l,c);};return {props:o,isRendered:r,render:()=>m(void 0,null,function*(){if(r)return;let l=P();if(!l)return;l.hasChildNodes()&&(l.innerHTML="");let f=ie(o);r=!0,C(l,!0),t=yield new Fe({classListArray:[`footprint-${n}`,`footprint-${n}-loading`],container:l,name:`footprint-iframe-${c}`,url:f,allow:"otp-credentials; publickey-credentials-get *; camera *; clipboard-write;"}),C(l,!1),d(),t.on("started",()=>{v(),y();});}),destroy:()=>m(void 0,null,function*(){r&&(r=!1,yield Y(c),t&&(t.destroy(),t=null));}),registerEvent:(l,f)=>{l==="renderSecondary"?i=f:l==="destroy"&&(s=f);}}},T=ke;var g=e=>{let t=F(e);return JSON.stringify(t)},Se=()=>{let e={};return {getOrCreate:a=>{let p=g(a.props),s=Object.values(e).find(i=>g(i.iframe.props)===p);return s?s.iframe:(e[p]={iframe:a,secondaryIframes:{}},a)},remove:a=>{let p=g(a.props),s=e[p];s&&(Object.keys(s.secondaryIframes).forEach(i=>{s.secondaryIframes[i].destroy();}),delete e[p]);},getOrCreateSecondary:(a,p)=>{let s=g(a.props),i=g(p.props);if(!e[s])throw new Error("iframe manager: primary iframe does not exist while adding secondary");let{secondaryIframes:c}=e[s],d=Object.values(c).find(y=>g(y.props)===i);return d||(c[i]=p,p)},removeSecondary:(a,p)=>{let s=g(a.props),i=g(p.props);if(!e[s])throw new Error("iframe manager: primary iframe does not exist while removing secondary");let{secondaryIframes:c}=e[s],d=c[i];d&&(d.destroy(),delete c[i]);}}},ae=Se;var xe=()=>{let e=ae();return {init:r=>{let o=T(r),n=()=>m(void 0,null,function*(){e.remove(o),yield o.destroy();}),a=i=>m(void 0,null,function*(){e.removeSecondary(o,i),yield i.destroy();}),p=i=>m(void 0,null,function*(){let c=T(i);c=e.getOrCreateSecondary(o,c),c.registerEvent("destroy",()=>{a(c);}),c.render();});return {render:()=>m(void 0,null,function*(){o=e.getOrCreate(o),o.registerEvent("destroy",n),o.registerEvent("renderSecondary",p),yield o.render();}),destroy:n}}}},Oe=xe(),_=Oe;var Le=e=>{window.setTimeout(e,0);},se=e=>typeof e=="object"&&!!e,Ae=e=>{if(typeof window=="undefined")return;let t=n=>{var s;let a=(s=window.footprintCallbacks)!=null?s:{};if(!se(a))throw Error("`window.footprintCallbacks` must be a valid mapping from callback names to functions.");return W[n].forEach(i=>{if(!a[i])throw Error(`Callback '${i}' must be defined in window.footprintCallbacks`)}),a},r=n=>{var P;let a=n.getAttribute("data-kind");K(a);let p=(P=n.getAttribute("data-variant"))!=null?P:I(a);A(a,p);let s=ne(),i=t(a),c=n.getAttribute("data-props")||"",d;try{d=JSON.parse(c);}catch(C){throw Error("Could not parse `data-props` for footprint.")}if(!se(d))throw Error("`data-props` on the footprint element has to be a valid JSON object stringified.");let y=R();n.setAttribute("id",y),e.init(b(b({kind:a,variant:p,appearance:s,containerId:n.id},i),d)).render();},o=()=>{let n=document.querySelectorAll("[data-footprint]");n.length&&n.forEach(a=>{r(a);});};document.addEventListener("DOMContentLoaded",()=>Le(o));},pe=Ae;var ce=e=>m(void 0,null,function*(){let t=yield fetch("https://api.onefootprint.com/hosted/identify",{method:"POST",body:JSON.stringify(e)});if(!t.ok)throw Error(t.statusText);return (yield t.json()).user_found}),Ke=e=>m(void 0,null,function*(){if(!e)throw new Error("User data must be passed in order to identify an user");let t=e["id.email"],r=e["id.phone_number"];return t&&(yield ce({identifier:{email:t}}))?!0:r?yield ce({identifier:{phone_number:r}}):!1}),de=Ke;var xt=_;pe(_); | ||
export { b as FootprintComponentKind, H as FootprintPrivateEvent, k as FootprintPublicEvent, Ut as default, ue as identifyFootprintUser }; | ||
export { w as FootprintComponentKind, D as FootprintPrivateEvent, E as FootprintPublicEvent, xt as default, de as identifyFootprintUser }; |
@@ -5,3 +5,3 @@ { | ||
"type": "module", | ||
"version": "3.7.0", | ||
"version": "3.7.1", | ||
"main": "./dist/footprint-js.cjs", | ||
@@ -33,5 +33,7 @@ "module": "./dist/footprint-js.js", | ||
}, | ||
"dependencies": { | ||
"@onefootprint/postmate": "2.1.0" | ||
}, | ||
"devDependencies": { | ||
"@onefootprint/jest-presets": "*", | ||
"@onefootprint/postmate": "2.1.0", | ||
"csstype": "^3.1.2", | ||
@@ -38,0 +40,0 @@ "eslint-config-footprint": "*", |
Sorry, the diff of this file is not supported yet
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
7
52934
1
456
2
+ Added@onefootprint/postmate@2.1.0
+ Added@onefootprint/postmate@2.1.0(transitive)