@dropins/tools 1.8.0 → 1.8.1-alpha-20260331163906

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @adobe-commerce/elsie
2
2
 
3
+ ## 1.8.1-alpha-20260331163906
4
+
5
+ ### Patch Changes
6
+
7
+ - e44f618: Fixed `srcset w` descriptors to use actual image widths instead of viewport breakpoints, preventing blurry product images.
8
+
3
9
  ## 1.8.0
4
10
 
5
11
  ### Minor Changes
@@ -1,15 +1,15 @@
1
1
  /*! Copyright 2026 Adobe
2
2
  All Rights Reserved. */
3
- var me=Object.defineProperty;var be=(e,t,r)=>t in e?me(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var ne=(e,t,r)=>be(e,typeof t!="symbol"?t+"":t,r);import{g as we}from"./image-params-keymap.js";import{jsx as $}from"../preact-jsx-runtime.js";import{l as h,_ as _e,k as V,G as xe,B as Q}from"./icons/Add.js";import{signal as ie}from"../signals.js";const Oe=e=>e.reduce((r,n)=>{if(!n)return r;if(typeof n=="string"&&(r+=` ${n}`),Array.isArray(n)){const[u,p]=n;u&&p&&(r+=` ${u}`)}return r},"").trim(),se={medium:768,large:1024,xlarge:1366,xxlarge:1920},je=(e,t)=>{const[r,n]=e.split("?"),u=new URLSearchParams(n),p=we(),v=p&&Object.keys(p)||[];let c={},m={...p};return(v==null?void 0:v.length)>0&&t?c=Object.entries(t).reduce((d,[y,o])=>{const a=p[y];if(typeof a=="string")d[a]=o;else if(typeof a=="function"){const[x,w]=a(o);d[x]=w}return delete m[y],d},{}):c={auto:"webp",quality:80,crop:!1,fit:"cover",...t},Object.entries(m).forEach(([,d])=>{if(typeof d=="function"){const[y,o]=d(void 0);c[y]=o}}),Object.entries(c).forEach(([d,y])=>{y!=null&&u.set(d,String(y))}),`${r}?${u.toString()}`},Ve=(e,t)=>{if(!e||!(t!=null&&t.width))return;const r=n=>je(e,{...n});return Object.entries(se).map(([,n])=>{const u=t.width*n/se.xxlarge;return`${r({...t,width:u})} ${n}w`}).join(`,
4
- `)};var Ae=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i,pe=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/,E=/[\s\n\\/='"\0<>]/,ve=/^xlink:?./,Se=/["&<]/;function T(e){if(Se.test(e+="")===!1)return e;for(var t=0,r=0,n="",u="";r<e.length;r++){switch(e.charCodeAt(r)){case 34:u="&quot;";break;case 38:u="&amp;";break;case 60:u="&lt;";break;default:continue}r!==t&&(n+=e.slice(t,r)),n+=u,t=r+1}return r!==t&&(n+=e.slice(t,r)),n}var ae=function(e,t){return String(e).replace(/(\n+)/g,"$1"+(t||" "))},oe=function(e,t,r){return String(e).length>40||String(e).indexOf(`
5
- `)!==-1||String(e).indexOf("<")!==-1},le={},$e=/([A-Z])/g;function he(e){var t="";for(var r in e){var n=e[r];n!=null&&n!==""&&(t&&(t+=" "),t+=r[0]=="-"?r:le[r]||(le[r]=r.replace($e,"-$1").toLowerCase()),t=typeof n=="number"&&Ae.test(r)===!1?t+": "+n+"px;":t+": "+n+";")}return t||void 0}function H(e,t){return Array.isArray(t)?t.reduce(H,e):t!=null&&t!==!1&&e.push(t),e}function fe(){this.__d=!0}function ge(e,t){return{__v:e,context:t,props:e.props,setState:fe,forceUpdate:fe,__d:!0,__h:[]}}function K(e,t){var r=e.contextType,n=r&&t[r.__c];return r!=null?n?n.props.value:r.__:t}var R=[];function F(e,t,r,n,u,p){if(e==null||typeof e=="boolean")return"";if(typeof e!="object")return typeof e=="function"?"":T(e);var v=r.pretty,c=v&&typeof v=="string"?v:" ";if(Array.isArray(e)){for(var m="",d=0;d<e.length;d++)v&&d>0&&(m+=`
6
- `),m+=F(e[d],t,r,n,u,p);return m}if(e.constructor!==void 0)return"";var y,o=e.type,a=e.props,x=!1;if(typeof o=="function"){if(x=!0,!r.shallow||!n&&r.renderRootComponent!==!1){if(o===V){var w=[];return H(w,e.props.children),F(w,t,r,r.shallowHighOrder!==!1,u,p)}var g,i=e.__c=ge(e,t);h.__b&&h.__b(e);var M=h.__r;if(o.prototype&&typeof o.prototype.render=="function"){var k=K(o,t);(i=e.__c=new o(a,k)).__v=e,i._dirty=i.__d=!0,i.props=a,i.state==null&&(i.state={}),i._nextState==null&&i.__s==null&&(i._nextState=i.__s=i.state),i.context=k,o.getDerivedStateFromProps?i.state=Object.assign({},i.state,o.getDerivedStateFromProps(i.props,i.state)):i.componentWillMount&&(i.componentWillMount(),i.state=i._nextState!==i.state?i._nextState:i.__s!==i.state?i.__s:i.state),M&&M(e),g=i.render(i.props,i.state,i.context)}else for(var N=K(o,t),P=0;i.__d&&P++<25;)i.__d=!1,M&&M(e),g=o.call(e.__c,a,N);return i.getChildContext&&(t=Object.assign({},t,i.getChildContext())),h.diffed&&h.diffed(e),F(g,t,r,r.shallowHighOrder!==!1,u,p)}o=(y=o).displayName||y!==Function&&y.name||function(X){var J=(Function.prototype.toString.call(X).match(/^\s*function\s+([^( ]+)/)||"")[1];if(!J){for(var W=-1,Y=R.length;Y--;)if(R[Y]===X){W=Y;break}W<0&&(W=R.push(X)-1),J="UnnamedComponent"+W}return J}(y)}var j,O,_="<"+o;if(a){var b=Object.keys(a);r&&r.sortAttributes===!0&&b.sort();for(var C=0;C<b.length;C++){var s=b[C],f=a[s];if(s!=="children"){if(!E.test(s)&&(r&&r.allAttributes||s!=="key"&&s!=="ref"&&s!=="__self"&&s!=="__source")){if(s==="defaultValue")s="value";else if(s==="defaultChecked")s="checked";else if(s==="defaultSelected")s="selected";else if(s==="className"){if(a.class!==void 0)continue;s="class"}else u&&ve.test(s)&&(s=s.toLowerCase().replace(/^xlink:?/,"xlink:"));if(s==="htmlFor"){if(a.for)continue;s="for"}s==="style"&&f&&typeof f=="object"&&(f=he(f)),s[0]==="a"&&s[1]==="r"&&typeof f=="boolean"&&(f=String(f));var l=r.attributeHook&&r.attributeHook(s,f,t,r,x);if(l||l==="")_+=l;else if(s==="dangerouslySetInnerHTML")O=f&&f.__html;else if(o==="textarea"&&s==="value")j=f;else if((f||f===0||f==="")&&typeof f!="function"){if(!(f!==!0&&f!==""||(f=s,r&&r.xml))){_=_+" "+s;continue}if(s==="value"){if(o==="select"){p=f;continue}o==="option"&&p==f&&a.selected===void 0&&(_+=" selected")}_=_+" "+s+'="'+T(f)+'"'}}}else j=f}}if(v){var A=_.replace(/\n\s*/," ");A===_||~A.indexOf(`
3
+ var me=Object.defineProperty;var be=(e,t,r)=>t in e?me(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var ne=(e,t,r)=>be(e,typeof t!="symbol"?t+"":t,r);import{g as we}from"./image-params-keymap.js";import{jsx as $}from"../preact-jsx-runtime.js";import{l as h,_ as _e,k as V,G as xe,B as Q}from"./icons/Add.js";import{signal as ie}from"../signals.js";const Oe=e=>e.reduce((r,i)=>{if(!i)return r;if(typeof i=="string"&&(r+=` ${i}`),Array.isArray(i)){const[f,p]=i;f&&p&&(r+=` ${f}`)}return r},"").trim(),se={medium:768,large:1024,xlarge:1366,xxlarge:1920},je=(e,t)=>{const[r,i]=e.split("?"),f=new URLSearchParams(i),p=we(),v=p&&Object.keys(p)||[];let c={},m={...p};return(v==null?void 0:v.length)>0&&t?c=Object.entries(t).reduce((d,[y,o])=>{const a=p[y];if(typeof a=="string")d[a]=o;else if(typeof a=="function"){const[x,w]=a(o);d[x]=w}return delete m[y],d},{}):c={auto:"webp",quality:80,crop:!1,fit:"cover",...t},Object.entries(m).forEach(([,d])=>{if(typeof d=="function"){const[y,o]=d(void 0);c[y]=o}}),Object.entries(c).forEach(([d,y])=>{y!=null&&f.set(d,String(y))}),`${r}?${f.toString()}`},Ve=(e,t)=>{if(!e||!(t!=null&&t.width))return;const r=i=>je(e,{...i});return Object.entries(se).map(([,i])=>{const f=Math.round(t.width*i/se.xxlarge);return`${r({...t,width:f})} ${f}w`}).join(`,
4
+ `)};var Ae=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i,pe=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/,E=/[\s\n\\/='"\0<>]/,ve=/^xlink:?./,Se=/["&<]/;function T(e){if(Se.test(e+="")===!1)return e;for(var t=0,r=0,i="",f="";r<e.length;r++){switch(e.charCodeAt(r)){case 34:f="&quot;";break;case 38:f="&amp;";break;case 60:f="&lt;";break;default:continue}r!==t&&(i+=e.slice(t,r)),i+=f,t=r+1}return r!==t&&(i+=e.slice(t,r)),i}var ae=function(e,t){return String(e).replace(/(\n+)/g,"$1"+(t||" "))},oe=function(e,t,r){return String(e).length>40||String(e).indexOf(`
5
+ `)!==-1||String(e).indexOf("<")!==-1},le={},$e=/([A-Z])/g;function he(e){var t="";for(var r in e){var i=e[r];i!=null&&i!==""&&(t&&(t+=" "),t+=r[0]=="-"?r:le[r]||(le[r]=r.replace($e,"-$1").toLowerCase()),t=typeof i=="number"&&Ae.test(r)===!1?t+": "+i+"px;":t+": "+i+";")}return t||void 0}function H(e,t){return Array.isArray(t)?t.reduce(H,e):t!=null&&t!==!1&&e.push(t),e}function fe(){this.__d=!0}function ge(e,t){return{__v:e,context:t,props:e.props,setState:fe,forceUpdate:fe,__d:!0,__h:[]}}function K(e,t){var r=e.contextType,i=r&&t[r.__c];return r!=null?i?i.props.value:r.__:t}var R=[];function F(e,t,r,i,f,p){if(e==null||typeof e=="boolean")return"";if(typeof e!="object")return typeof e=="function"?"":T(e);var v=r.pretty,c=v&&typeof v=="string"?v:" ";if(Array.isArray(e)){for(var m="",d=0;d<e.length;d++)v&&d>0&&(m+=`
6
+ `),m+=F(e[d],t,r,i,f,p);return m}if(e.constructor!==void 0)return"";var y,o=e.type,a=e.props,x=!1;if(typeof o=="function"){if(x=!0,!r.shallow||!i&&r.renderRootComponent!==!1){if(o===V){var w=[];return H(w,e.props.children),F(w,t,r,r.shallowHighOrder!==!1,f,p)}var g,n=e.__c=ge(e,t);h.__b&&h.__b(e);var M=h.__r;if(o.prototype&&typeof o.prototype.render=="function"){var k=K(o,t);(n=e.__c=new o(a,k)).__v=e,n._dirty=n.__d=!0,n.props=a,n.state==null&&(n.state={}),n._nextState==null&&n.__s==null&&(n._nextState=n.__s=n.state),n.context=k,o.getDerivedStateFromProps?n.state=Object.assign({},n.state,o.getDerivedStateFromProps(n.props,n.state)):n.componentWillMount&&(n.componentWillMount(),n.state=n._nextState!==n.state?n._nextState:n.__s!==n.state?n.__s:n.state),M&&M(e),g=n.render(n.props,n.state,n.context)}else for(var N=K(o,t),P=0;n.__d&&P++<25;)n.__d=!1,M&&M(e),g=o.call(e.__c,a,N);return n.getChildContext&&(t=Object.assign({},t,n.getChildContext())),h.diffed&&h.diffed(e),F(g,t,r,r.shallowHighOrder!==!1,f,p)}o=(y=o).displayName||y!==Function&&y.name||function(X){var J=(Function.prototype.toString.call(X).match(/^\s*function\s+([^( ]+)/)||"")[1];if(!J){for(var W=-1,Y=R.length;Y--;)if(R[Y]===X){W=Y;break}W<0&&(W=R.push(X)-1),J="UnnamedComponent"+W}return J}(y)}var j,O,_="<"+o;if(a){var b=Object.keys(a);r&&r.sortAttributes===!0&&b.sort();for(var C=0;C<b.length;C++){var s=b[C],u=a[s];if(s!=="children"){if(!E.test(s)&&(r&&r.allAttributes||s!=="key"&&s!=="ref"&&s!=="__self"&&s!=="__source")){if(s==="defaultValue")s="value";else if(s==="defaultChecked")s="checked";else if(s==="defaultSelected")s="selected";else if(s==="className"){if(a.class!==void 0)continue;s="class"}else f&&ve.test(s)&&(s=s.toLowerCase().replace(/^xlink:?/,"xlink:"));if(s==="htmlFor"){if(a.for)continue;s="for"}s==="style"&&u&&typeof u=="object"&&(u=he(u)),s[0]==="a"&&s[1]==="r"&&typeof u=="boolean"&&(u=String(u));var l=r.attributeHook&&r.attributeHook(s,u,t,r,x);if(l||l==="")_+=l;else if(s==="dangerouslySetInnerHTML")O=u&&u.__html;else if(o==="textarea"&&s==="value")j=u;else if((u||u===0||u==="")&&typeof u!="function"){if(!(u!==!0&&u!==""||(u=s,r&&r.xml))){_=_+" "+s;continue}if(s==="value"){if(o==="select"){p=u;continue}o==="option"&&p==u&&a.selected===void 0&&(_+=" selected")}_=_+" "+s+'="'+T(u)+'"'}}}else j=u}}if(v){var A=_.replace(/\n\s*/," ");A===_||~A.indexOf(`
7
7
  `)?v&&~_.indexOf(`
8
8
  `)&&(_+=`
9
9
  `):_=A}if(_+=">",E.test(o))throw new Error(o+" is not a valid HTML tag name in "+_);var D,ye=pe.test(o)||r.voidElements&&r.voidElements.test(o),S=[];if(O)v&&oe(O)&&(O=`
10
10
  `+c+ae(O,c)),_+=O;else if(j!=null&&H(D=[],j).length){for(var U=v&&~_.indexOf(`
11
- `),te=!1,Z=0;Z<D.length;Z++){var B=D[Z];if(B!=null&&B!==!1){var L=F(B,t,r,!0,o==="svg"||o!=="foreignObject"&&u,p);if(v&&!U&&oe(L)&&(U=!0),L)if(v){var re=L.length>0&&L[0]!="<";te&&re?S[S.length-1]+=L:S.push(L),te=re}else S.push(L)}}if(v&&U)for(var G=S.length;G--;)S[G]=`
11
+ `),te=!1,Z=0;Z<D.length;Z++){var B=D[Z];if(B!=null&&B!==!1){var L=F(B,t,r,!0,o==="svg"||o!=="foreignObject"&&f,p);if(v&&!U&&oe(L)&&(U=!0),L)if(v){var re=L.length>0&&L[0]!="<";te&&re?S[S.length-1]+=L:S.push(L),te=re}else S.push(L)}}if(v&&U)for(var G=S.length;G--;)S[G]=`
12
12
  `+c+ae(S[G],c)}if(S.length||O)_+=S.join("");else if(r&&r.xml)return _.substring(0,_.length-1)+" />";return!ye||D||O?(v&&~_.indexOf(`
13
13
  `)&&(_+=`
14
- `),_=_+"</"+o+">"):_=_.replace(/>$/," />"),_}var ke={shallow:!0};z.render=z;var Ce=function(e,t){return z(e,t,ke)},ue=[];function z(e,t,r){t=t||{};var n=h.__s;h.__s=!0;var u,p=_e(V,null);return p.__k=[e],u=r&&(r.pretty||r.voidElements||r.sortAttributes||r.shallow||r.allAttributes||r.xml||r.attributeHook)?F(e,t,r):q(e,t,!1,void 0,p),h.__c&&h.__c(e,ue),h.__s=n,ue.length=0,u}function I(e){return e==null||typeof e=="boolean"?null:typeof e=="string"||typeof e=="number"||typeof e=="bigint"?_e(null,null,e):e}function Ne(e,t){return e==="className"?"class":e==="htmlFor"?"for":e==="defaultValue"?"value":e==="defaultChecked"?"checked":e==="defaultSelected"?"selected":t&&ve.test(e)?e.toLowerCase().replace(/^xlink:?/,"xlink:"):e}function Le(e,t){return e==="style"&&t!=null&&typeof t=="object"?he(t):e[0]==="a"&&e[1]==="r"&&typeof t=="boolean"?String(t):t}var ce=Array.isArray,de=Object.assign;function q(e,t,r,n,u){if(e==null||e===!0||e===!1||e==="")return"";if(typeof e!="object")return typeof e=="function"?"":T(e);if(ce(e)){var p="";u.__k=e;for(var v=0;v<e.length;v++)p+=q(e[v],t,r,n,u),e[v]=I(e[v]);return p}if(e.constructor!==void 0)return"";e.__=u,h.__b&&h.__b(e);var c=e.type,m=e.props;if(typeof c=="function"){var d;if(c===V)d=m.children;else{d=c.prototype&&typeof c.prototype.render=="function"?function(b,C){var s=b.type,f=K(s,C),l=new s(b.props,f);b.__c=l,l.__v=b,l.__d=!0,l.props=b.props,l.state==null&&(l.state={}),l.__s==null&&(l.__s=l.state),l.context=f,s.getDerivedStateFromProps?l.state=de({},l.state,s.getDerivedStateFromProps(l.props,l.state)):l.componentWillMount&&(l.componentWillMount(),l.state=l.__s!==l.state?l.__s:l.state);var A=h.__r;return A&&A(b),l.render(l.props,l.state,l.context)}(e,t):function(b,C){var s,f=ge(b,C),l=K(b.type,C);b.__c=f;for(var A=h.__r,D=0;f.__d&&D++<25;)f.__d=!1,A&&A(b),s=b.type.call(f,b.props,l);return s}(e,t);var y=e.__c;y.getChildContext&&(t=de({},t,y.getChildContext()))}var o=q(d=d!=null&&d.type===V&&d.key==null?d.props.children:d,t,r,n,e);return h.diffed&&h.diffed(e),e.__=void 0,h.unmount&&h.unmount(e),o}var a,x,w="<";if(w+=c,m)for(var g in a=m.children,m){var i=m[g];if(!(g==="key"||g==="ref"||g==="__self"||g==="__source"||g==="children"||g==="className"&&"class"in m||g==="htmlFor"&&"for"in m||E.test(g))){if(i=Le(g=Ne(g,r),i),g==="dangerouslySetInnerHTML")x=i&&i.__html;else if(c==="textarea"&&g==="value")a=i;else if((i||i===0||i==="")&&typeof i!="function"){if(i===!0||i===""){i=g,w=w+" "+g;continue}if(g==="value"){if(c==="select"){n=i;continue}c!=="option"||n!=i||"selected"in m||(w+=" selected")}w=w+" "+g+'="'+T(i)+'"'}}}var M=w;if(w+=">",E.test(c))throw new Error(c+" is not a valid HTML tag name in "+w);var k="",N=!1;if(x)k+=x,N=!0;else if(typeof a=="string")k+=T(a),N=!0;else if(ce(a)){e.__k=a;for(var P=0;P<a.length;P++){var j=a[P];if(a[P]=I(j),j!=null&&j!==!1){var O=q(j,t,c==="svg"||c!=="foreignObject"&&r,n,e);O&&(k+=O,N=!0)}}}else if(a!=null&&a!==!1&&a!==!0){e.__k=[I(a)];var _=q(a,t,c==="svg"||c!=="foreignObject"&&r,n,e);_&&(k+=_,N=!0)}if(h.diffed&&h.diffed(e),e.__=void 0,h.unmount&&h.unmount(e),N)w+=k;else if(pe.test(c))return M+" />";return w+"</"+c+">"}z.shallowRender=Ce;const Me=xe(null);class ze{constructor(t){ne(this,"_provider");this._provider=t}render(t,r){return async n=>{var o;if(!t)throw new Error("Component is not defined");if(!n)throw new Error("Root element is not defined");const u=await((o=t.getInitialData)==null?void 0:o.call(t,r))??{},p=ie({...r}),v=ie(new Set),c=this._provider,m=({next:a})=>$(Me.Provider,{value:v,children:$(ee,{node:c,...c.props,children:$(t,{...a.value,initialData:u})})});n.innerHTML="";const d=document.createElement("div");n.classList.add("dropin-design"),n.setAttribute("data-dropin-container",t.name),n.__rootElement=d,Q($(m,{next:p}),d);const y={remove:()=>{Q(null,d)},setProps:a=>{const x=a(p.peek());p.value=x}};return new Promise(a=>{v.subscribe(x=>{if(x.size===0)return n.classList.add("dropin-design"),n.appendChild(d.firstChild??d),a(y)})})}}static unmount(t){const r=t==null?void 0:t.__rootElement;if(!r)throw new Error("Root element is not defined");Q(null,r)}unmount(t){var r;if(!t)throw new Error("Root element is not defined");(r=t.firstChild)==null||r.remove()}async toString(t,r,n){var p;if(!t)throw new Error("Component is not defined");const u=await((p=t.getInitialData)==null?void 0:p.call(t,r))??{};return z($(ee,{node:this._provider,...this._provider.props,children:$(t,{...r,initialData:u})}),{},{...n})}}function ee({node:e,...t}){return e?Array.isArray(e)?$(V,{children:e.map((r,n)=>$(ee,{node:r,className:t.className,...t},n))}):(t.className=Oe([e.props.className,t.className]),$(e.type,{ref:e.ref,...e.props,...t},e.key)):null}export{ze as R,Me as S,ee as V,Oe as c,Ve as g};
14
+ `),_=_+"</"+o+">"):_=_.replace(/>$/," />"),_}var ke={shallow:!0};z.render=z;var Ce=function(e,t){return z(e,t,ke)},ue=[];function z(e,t,r){t=t||{};var i=h.__s;h.__s=!0;var f,p=_e(V,null);return p.__k=[e],f=r&&(r.pretty||r.voidElements||r.sortAttributes||r.shallow||r.allAttributes||r.xml||r.attributeHook)?F(e,t,r):q(e,t,!1,void 0,p),h.__c&&h.__c(e,ue),h.__s=i,ue.length=0,f}function I(e){return e==null||typeof e=="boolean"?null:typeof e=="string"||typeof e=="number"||typeof e=="bigint"?_e(null,null,e):e}function Ne(e,t){return e==="className"?"class":e==="htmlFor"?"for":e==="defaultValue"?"value":e==="defaultChecked"?"checked":e==="defaultSelected"?"selected":t&&ve.test(e)?e.toLowerCase().replace(/^xlink:?/,"xlink:"):e}function Le(e,t){return e==="style"&&t!=null&&typeof t=="object"?he(t):e[0]==="a"&&e[1]==="r"&&typeof t=="boolean"?String(t):t}var ce=Array.isArray,de=Object.assign;function q(e,t,r,i,f){if(e==null||e===!0||e===!1||e==="")return"";if(typeof e!="object")return typeof e=="function"?"":T(e);if(ce(e)){var p="";f.__k=e;for(var v=0;v<e.length;v++)p+=q(e[v],t,r,i,f),e[v]=I(e[v]);return p}if(e.constructor!==void 0)return"";e.__=f,h.__b&&h.__b(e);var c=e.type,m=e.props;if(typeof c=="function"){var d;if(c===V)d=m.children;else{d=c.prototype&&typeof c.prototype.render=="function"?function(b,C){var s=b.type,u=K(s,C),l=new s(b.props,u);b.__c=l,l.__v=b,l.__d=!0,l.props=b.props,l.state==null&&(l.state={}),l.__s==null&&(l.__s=l.state),l.context=u,s.getDerivedStateFromProps?l.state=de({},l.state,s.getDerivedStateFromProps(l.props,l.state)):l.componentWillMount&&(l.componentWillMount(),l.state=l.__s!==l.state?l.__s:l.state);var A=h.__r;return A&&A(b),l.render(l.props,l.state,l.context)}(e,t):function(b,C){var s,u=ge(b,C),l=K(b.type,C);b.__c=u;for(var A=h.__r,D=0;u.__d&&D++<25;)u.__d=!1,A&&A(b),s=b.type.call(u,b.props,l);return s}(e,t);var y=e.__c;y.getChildContext&&(t=de({},t,y.getChildContext()))}var o=q(d=d!=null&&d.type===V&&d.key==null?d.props.children:d,t,r,i,e);return h.diffed&&h.diffed(e),e.__=void 0,h.unmount&&h.unmount(e),o}var a,x,w="<";if(w+=c,m)for(var g in a=m.children,m){var n=m[g];if(!(g==="key"||g==="ref"||g==="__self"||g==="__source"||g==="children"||g==="className"&&"class"in m||g==="htmlFor"&&"for"in m||E.test(g))){if(n=Le(g=Ne(g,r),n),g==="dangerouslySetInnerHTML")x=n&&n.__html;else if(c==="textarea"&&g==="value")a=n;else if((n||n===0||n==="")&&typeof n!="function"){if(n===!0||n===""){n=g,w=w+" "+g;continue}if(g==="value"){if(c==="select"){i=n;continue}c!=="option"||i!=n||"selected"in m||(w+=" selected")}w=w+" "+g+'="'+T(n)+'"'}}}var M=w;if(w+=">",E.test(c))throw new Error(c+" is not a valid HTML tag name in "+w);var k="",N=!1;if(x)k+=x,N=!0;else if(typeof a=="string")k+=T(a),N=!0;else if(ce(a)){e.__k=a;for(var P=0;P<a.length;P++){var j=a[P];if(a[P]=I(j),j!=null&&j!==!1){var O=q(j,t,c==="svg"||c!=="foreignObject"&&r,i,e);O&&(k+=O,N=!0)}}}else if(a!=null&&a!==!1&&a!==!0){e.__k=[I(a)];var _=q(a,t,c==="svg"||c!=="foreignObject"&&r,i,e);_&&(k+=_,N=!0)}if(h.diffed&&h.diffed(e),e.__=void 0,h.unmount&&h.unmount(e),N)w+=k;else if(pe.test(c))return M+" />";return w+"</"+c+">"}z.shallowRender=Ce;const Me=xe(null);class ze{constructor(t){ne(this,"_provider");this._provider=t}render(t,r){return async i=>{var o;if(!t)throw new Error("Component is not defined");if(!i)throw new Error("Root element is not defined");const f=await((o=t.getInitialData)==null?void 0:o.call(t,r))??{},p=ie({...r}),v=ie(new Set),c=this._provider,m=({next:a})=>$(Me.Provider,{value:v,children:$(ee,{node:c,...c.props,children:$(t,{...a.value,initialData:f})})});i.innerHTML="";const d=document.createElement("div");i.classList.add("dropin-design"),i.setAttribute("data-dropin-container",t.name),i.__rootElement=d,Q($(m,{next:p}),d);const y={remove:()=>{Q(null,d)},setProps:a=>{const x=a(p.peek());p.value=x}};return new Promise(a=>{v.subscribe(x=>{if(x.size===0)return i.classList.add("dropin-design"),i.appendChild(d.firstChild??d),a(y)})})}}static unmount(t){const r=t==null?void 0:t.__rootElement;if(!r)throw new Error("Root element is not defined");Q(null,r)}unmount(t){var r;if(!t)throw new Error("Root element is not defined");(r=t.firstChild)==null||r.remove()}async toString(t,r,i){var p;if(!t)throw new Error("Component is not defined");const f=await((p=t.getInitialData)==null?void 0:p.call(t,r))??{};return z($(ee,{node:this._provider,...this._provider.props,children:$(t,{...r,initialData:f})}),{},{...i})}}function ee({node:e,...t}){return e?Array.isArray(e)?$(V,{children:e.map((r,i)=>$(ee,{node:r,className:t.className,...t},i))}):(t.className=Oe([e.props.className,t.className]),$(e.type,{ref:e.ref,...e.props,...t},e.key)):null}export{ze as R,Me as S,ee as V,Oe as c,Ve as g};
15
15
  //# sourceMappingURL=vcomponent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vcomponent.js","sources":["/@dropins/tools/src/lib/classes.ts","/@dropins/tools/src/lib/resolve-image.ts","../../../../node_modules/preact-render-to-string/dist/index.mjs","/@dropins/tools/src/lib/render.tsx","/@dropins/tools/src/lib/vcomponent.tsx"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\n// @ts-ignore\nimport { JSXInternal } from 'preact/src/jsx';\n\ntype ClassName = string | JSXInternal.SignalLike<string | undefined>;\n\nexport const classes = (\n classes: Array<ClassName | [ClassName, boolean] | undefined>\n) => {\n const result = classes.reduce((result, item) => {\n if (!item) return result;\n\n if (typeof item === 'string') result += ` ${item}`;\n\n if (Array.isArray(item)) {\n const [className, isActive] = item;\n if (className && isActive) {\n result += ` ${className}`;\n }\n }\n\n return result;\n }, '') as string;\n\n return result.trim();\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { getImageParamsKeyMap } from '@adobe-commerce/elsie/lib/';\n\nconst BREAKPOINTS = {\n medium: 768,\n large: 1024,\n xlarge: 1366,\n xxlarge: 1920,\n};\n\nexport interface ResolveImageUrlOptions {\n width: number;\n height?: number;\n auto?: string;\n quality?: number;\n crop?: boolean;\n fit?: string;\n}\n\nconst resolveImageUrl = (url: string, _opts?: ResolveImageUrlOptions) => {\n const [base, query] = url.split('?');\n const params = new URLSearchParams(query);\n\n const keyMapping = getImageParamsKeyMap();\n const keyMappingKeys = (keyMapping && Object.keys(keyMapping)) || [];\n\n let opts: any = {};\n let unusedMapping = { ...keyMapping };\n\n if (keyMappingKeys?.length > 0 && _opts) {\n opts = Object.entries(_opts).reduce((acc, [key, value]) => {\n const newKey = keyMapping![key];\n if (typeof newKey === 'string') {\n acc[newKey] = value;\n } else if (typeof newKey === 'function') {\n const [newKeyString, newValue] = newKey(value);\n acc[newKeyString] = newValue;\n }\n delete unusedMapping![key];\n return acc;\n }, {} as { [key: string]: any });\n } else {\n opts = {\n auto: 'webp',\n quality: 80,\n crop: false,\n fit: 'cover',\n ..._opts,\n };\n }\n\n // Set unused mapping as default params\n Object.entries(unusedMapping).forEach(([, value]) => {\n if (typeof value === 'function') {\n const [newKeyString, newValue] = value(undefined);\n opts[newKeyString] = newValue;\n }\n });\n\n // Append image optimization parameters\n Object.entries(opts).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n });\n\n return `${base}?${params.toString()}`;\n};\n\nexport const generateSrcset = (\n imageURL: string,\n options: ResolveImageUrlOptions\n) => {\n if (!imageURL || !options?.width) return;\n\n const generateSrcsetUrl = (options: ResolveImageUrlOptions) => {\n return resolveImageUrl(imageURL, {\n ...options,\n });\n };\n\n return Object.entries(BREAKPOINTS)\n .map(([, value]) => {\n // calculate breakpoints width\n const relativeWidth = (options.width * value) / BREAKPOINTS.xxlarge;\n\n return `${generateSrcsetUrl({\n ...options,\n width: relativeWidth,\n })} ${value}w`;\n })\n .join(',\\n');\n};\n","import{Fragment as e,options as t,h as r}from\"preact\";var n=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i,o=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/,i=/[\\s\\n\\\\/='\"\\0<>]/,l=/^xlink:?./,a=/[\"&<]/;function s(e){if(!1===a.test(e+=\"\"))return e;for(var t=0,r=0,n=\"\",o=\"\";r<e.length;r++){switch(e.charCodeAt(r)){case 34:o=\"&quot;\";break;case 38:o=\"&amp;\";break;case 60:o=\"&lt;\";break;default:continue}r!==t&&(n+=e.slice(t,r)),n+=o,t=r+1}return r!==t&&(n+=e.slice(t,r)),n}var f=function(e,t){return String(e).replace(/(\\n+)/g,\"$1\"+(t||\"\\t\"))},u=function(e,t,r){return String(e).length>(t||40)||!r&&-1!==String(e).indexOf(\"\\n\")||-1!==String(e).indexOf(\"<\")},c={},_=/([A-Z])/g;function p(e){var t=\"\";for(var r in e){var o=e[r];null!=o&&\"\"!==o&&(t&&(t+=\" \"),t+=\"-\"==r[0]?r:c[r]||(c[r]=r.replace(_,\"-$1\").toLowerCase()),t=\"number\"==typeof o&&!1===n.test(r)?t+\": \"+o+\"px;\":t+\": \"+o+\";\")}return t||void 0}function d(e,t){return Array.isArray(t)?t.reduce(d,e):null!=t&&!1!==t&&e.push(t),e}function v(){this.__d=!0}function h(e,t){return{__v:e,context:t,props:e.props,setState:v,forceUpdate:v,__d:!0,__h:[]}}function g(e,t){var r=e.contextType,n=r&&t[r.__c];return null!=r?n?n.props.value:r.__:t}var y=[];function m(r,n,a,c,_,v){if(null==r||\"boolean\"==typeof r)return\"\";if(\"object\"!=typeof r)return\"function\"==typeof r?\"\":s(r);var b=a.pretty,x=b&&\"string\"==typeof b?b:\"\\t\";if(Array.isArray(r)){for(var k=\"\",S=0;S<r.length;S++)b&&S>0&&(k+=\"\\n\"),k+=m(r[S],n,a,c,_,v);return k}if(void 0!==r.constructor)return\"\";var w,C=r.type,O=r.props,j=!1;if(\"function\"==typeof C){if(j=!0,!a.shallow||!c&&!1!==a.renderRootComponent){if(C===e){var A=[];return d(A,r.props.children),m(A,n,a,!1!==a.shallowHighOrder,_,v)}var F,H=r.__c=h(r,n);t.__b&&t.__b(r);var M=t.__r;if(C.prototype&&\"function\"==typeof C.prototype.render){var L=g(C,n);(H=r.__c=new C(O,L)).__v=r,H._dirty=H.__d=!0,H.props=O,null==H.state&&(H.state={}),null==H._nextState&&null==H.__s&&(H._nextState=H.__s=H.state),H.context=L,C.getDerivedStateFromProps?H.state=Object.assign({},H.state,C.getDerivedStateFromProps(H.props,H.state)):H.componentWillMount&&(H.componentWillMount(),H.state=H._nextState!==H.state?H._nextState:H.__s!==H.state?H.__s:H.state),M&&M(r),F=H.render(H.props,H.state,H.context)}else for(var T=g(C,n),E=0;H.__d&&E++<25;)H.__d=!1,M&&M(r),F=C.call(r.__c,O,T);return H.getChildContext&&(n=Object.assign({},n,H.getChildContext())),t.diffed&&t.diffed(r),m(F,n,a,!1!==a.shallowHighOrder,_,v)}C=(w=C).displayName||w!==Function&&w.name||function(e){var t=(Function.prototype.toString.call(e).match(/^\\s*function\\s+([^( ]+)/)||\"\")[1];if(!t){for(var r=-1,n=y.length;n--;)if(y[n]===e){r=n;break}r<0&&(r=y.push(e)-1),t=\"UnnamedComponent\"+r}return t}(w)}var $,D,N=\"<\"+C;if(O){var P=Object.keys(O);a&&!0===a.sortAttributes&&P.sort();for(var W=0;W<P.length;W++){var I=P[W],R=O[I];if(\"children\"!==I){if(!i.test(I)&&(a&&a.allAttributes||\"key\"!==I&&\"ref\"!==I&&\"__self\"!==I&&\"__source\"!==I)){if(\"defaultValue\"===I)I=\"value\";else if(\"defaultChecked\"===I)I=\"checked\";else if(\"defaultSelected\"===I)I=\"selected\";else if(\"className\"===I){if(void 0!==O.class)continue;I=\"class\"}else _&&l.test(I)&&(I=I.toLowerCase().replace(/^xlink:?/,\"xlink:\"));if(\"htmlFor\"===I){if(O.for)continue;I=\"for\"}\"style\"===I&&R&&\"object\"==typeof R&&(R=p(R)),\"a\"===I[0]&&\"r\"===I[1]&&\"boolean\"==typeof R&&(R=String(R));var U=a.attributeHook&&a.attributeHook(I,R,n,a,j);if(U||\"\"===U)N+=U;else if(\"dangerouslySetInnerHTML\"===I)D=R&&R.__html;else if(\"textarea\"===C&&\"value\"===I)$=R;else if((R||0===R||\"\"===R)&&\"function\"!=typeof R){if(!(!0!==R&&\"\"!==R||(R=I,a&&a.xml))){N=N+\" \"+I;continue}if(\"value\"===I){if(\"select\"===C){v=R;continue}\"option\"===C&&v==R&&void 0===O.selected&&(N+=\" selected\")}N=N+\" \"+I+'=\"'+s(R)+'\"'}}}else $=R}}if(b){var V=N.replace(/\\n\\s*/,\" \");V===N||~V.indexOf(\"\\n\")?b&&~N.indexOf(\"\\n\")&&(N+=\"\\n\"):N=V}if(N+=\">\",i.test(C))throw new Error(C+\" is not a valid HTML tag name in \"+N);var q,z=o.test(C)||a.voidElements&&a.voidElements.test(C),Z=[];if(D)b&&u(D)&&(D=\"\\n\"+x+f(D,x)),N+=D;else if(null!=$&&d(q=[],$).length){for(var B=b&&~N.indexOf(\"\\n\"),G=!1,J=0;J<q.length;J++){var K=q[J];if(null!=K&&!1!==K){var Q=m(K,n,a,!0,\"svg\"===C||\"foreignObject\"!==C&&_,v);if(b&&!B&&u(Q)&&(B=!0),Q)if(b){var X=Q.length>0&&\"<\"!=Q[0];G&&X?Z[Z.length-1]+=Q:Z.push(Q),G=X}else Z.push(Q)}}if(b&&B)for(var Y=Z.length;Y--;)Z[Y]=\"\\n\"+x+f(Z[Y],x)}if(Z.length||D)N+=Z.join(\"\");else if(a&&a.xml)return N.substring(0,N.length-1)+\" />\";return!z||q||D?(b&&~N.indexOf(\"\\n\")&&(N+=\"\\n\"),N=N+\"</\"+C+\">\"):N=N.replace(/>$/,\" />\"),N}var b={shallow:!0};S.render=S;var x=function(e,t){return S(e,t,b)},k=[];function S(n,o,i){o=o||{};var l=t.__s;t.__s=!0;var a,s=r(e,null);return s.__k=[n],a=i&&(i.pretty||i.voidElements||i.sortAttributes||i.shallow||i.allAttributes||i.xml||i.attributeHook)?m(n,o,i):F(n,o,!1,void 0,s),t.__c&&t.__c(n,k),t.__s=l,k.length=0,a}function w(e){return null==e||\"boolean\"==typeof e?null:\"string\"==typeof e||\"number\"==typeof e||\"bigint\"==typeof e?r(null,null,e):e}function C(e,t){return\"className\"===e?\"class\":\"htmlFor\"===e?\"for\":\"defaultValue\"===e?\"value\":\"defaultChecked\"===e?\"checked\":\"defaultSelected\"===e?\"selected\":t&&l.test(e)?e.toLowerCase().replace(/^xlink:?/,\"xlink:\"):e}function O(e,t){return\"style\"===e&&null!=t&&\"object\"==typeof t?p(t):\"a\"===e[0]&&\"r\"===e[1]&&\"boolean\"==typeof t?String(t):t}var j=Array.isArray,A=Object.assign;function F(r,n,l,a,f){if(null==r||!0===r||!1===r||\"\"===r)return\"\";if(\"object\"!=typeof r)return\"function\"==typeof r?\"\":s(r);if(j(r)){var u=\"\";f.__k=r;for(var c=0;c<r.length;c++)u+=F(r[c],n,l,a,f),r[c]=w(r[c]);return u}if(void 0!==r.constructor)return\"\";r.__=f,t.__b&&t.__b(r);var _=r.type,p=r.props;if(\"function\"==typeof _){var d;if(_===e)d=p.children;else{d=_.prototype&&\"function\"==typeof _.prototype.render?function(e,r){var n=e.type,o=g(n,r),i=new n(e.props,o);e.__c=i,i.__v=e,i.__d=!0,i.props=e.props,null==i.state&&(i.state={}),null==i.__s&&(i.__s=i.state),i.context=o,n.getDerivedStateFromProps?i.state=A({},i.state,n.getDerivedStateFromProps(i.props,i.state)):i.componentWillMount&&(i.componentWillMount(),i.state=i.__s!==i.state?i.__s:i.state);var l=t.__r;return l&&l(e),i.render(i.props,i.state,i.context)}(r,n):function(e,r){var n,o=h(e,r),i=g(e.type,r);e.__c=o;for(var l=t.__r,a=0;o.__d&&a++<25;)o.__d=!1,l&&l(e),n=e.type.call(o,e.props,i);return n}(r,n);var v=r.__c;v.getChildContext&&(n=A({},n,v.getChildContext()))}var y=F(d=null!=d&&d.type===e&&null==d.key?d.props.children:d,n,l,a,r);return t.diffed&&t.diffed(r),r.__=void 0,t.unmount&&t.unmount(r),y}var m,b,x=\"<\";if(x+=_,p)for(var k in m=p.children,p){var S=p[k];if(!(\"key\"===k||\"ref\"===k||\"__self\"===k||\"__source\"===k||\"children\"===k||\"className\"===k&&\"class\"in p||\"htmlFor\"===k&&\"for\"in p||i.test(k)))if(S=O(k=C(k,l),S),\"dangerouslySetInnerHTML\"===k)b=S&&S.__html;else if(\"textarea\"===_&&\"value\"===k)m=S;else if((S||0===S||\"\"===S)&&\"function\"!=typeof S){if(!0===S||\"\"===S){S=k,x=x+\" \"+k;continue}if(\"value\"===k){if(\"select\"===_){a=S;continue}\"option\"!==_||a!=S||\"selected\"in p||(x+=\" selected\")}x=x+\" \"+k+'=\"'+s(S)+'\"'}}var H=x;if(x+=\">\",i.test(_))throw new Error(_+\" is not a valid HTML tag name in \"+x);var M=\"\",L=!1;if(b)M+=b,L=!0;else if(\"string\"==typeof m)M+=s(m),L=!0;else if(j(m)){r.__k=m;for(var T=0;T<m.length;T++){var E=m[T];if(m[T]=w(E),null!=E&&!1!==E){var $=F(E,n,\"svg\"===_||\"foreignObject\"!==_&&l,a,r);$&&(M+=$,L=!0)}}}else if(null!=m&&!1!==m&&!0!==m){r.__k=[w(m)];var D=F(m,n,\"svg\"===_||\"foreignObject\"!==_&&l,a,r);D&&(M+=D,L=!0)}if(t.diffed&&t.diffed(r),r.__=void 0,t.unmount&&t.unmount(r),L)x+=M;else if(o.test(_))return H+\" />\";return x+\"</\"+_+\">\"}S.shallowRender=x;export default S;export{S as render,S as renderToStaticMarkup,S as renderToString,x as shallowRender};\n//# sourceMappingURL=index.module.js.map\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { render, VNode, createContext } from 'preact';\nimport renderToString from 'preact-render-to-string';\nimport { Container, VComponent } from '@adobe-commerce/elsie/lib';\nimport { Signal, signal } from '@adobe-commerce/elsie/lib/signals';\n\nexport const SlotQueueContext = createContext<Signal<Set<string>> | null>(null);\n\ntype RenderAPI = {\n remove: () => void;\n setProps: (cb: (prev: any) => any) => void;\n};\n\n/**\n * The `Render` class provides methods to render and unmount components, as well as to render components to a string.\n * @class\n *\n * @property {Function} render - Renders a component to a root element.\n * @property {Function} toString - Renders a component to a string.\n */\nexport class Render {\n private _provider: VNode<any>;\n\n constructor(provider: VNode<any>) {\n this._provider = provider;\n }\n\n /**\n * Renders a container to a root element.\n * @param Container - The container to render.\n * @param props - The container parameters.\n * @returns A function to render the component to a root element.\n */\n render<T>(Component: Container<T>, props: T) {\n /**\n * Renders a component to a root element.\n * @param rootElement - The root element to render the component to.\n * @returns A promise that resolves to an object with methods to control the rendered component.\n */\n return async (rootElement: HTMLElement): Promise<RenderAPI> => {\n if (!Component) throw new Error('Component is not defined');\n if (!rootElement) throw new Error('Root element is not defined');\n\n const initialData = (await Component.getInitialData?.(props)) ?? {};\n\n const state = signal<T>({ ...props });\n\n const queue = signal<Set<string>>(new Set());\n\n const provider = this._provider;\n\n const Root = ({ next }: { next: Signal<T> }) => {\n return (\n <SlotQueueContext.Provider value={queue}>\n <VComponent node={provider} {...provider.props}>\n <Component {...next.value} initialData={initialData} />\n </VComponent>\n </SlotQueueContext.Provider>\n );\n };\n\n // clear the root element\n rootElement.innerHTML = '';\n\n // clone the root element to initialize rendering on the background\n const root = document.createElement('div');\n\n // apply base design tokens and global styles to the root element\n rootElement.classList.add('dropin-design');\n rootElement.setAttribute('data-dropin-container', Component.name);\n\n // store the virtual root element\n (rootElement as any).__rootElement = root;\n\n render(<Root next={state} />, root);\n\n // API object to control the rendered component\n const API: RenderAPI = {\n remove: () => {\n render(null, root);\n },\n setProps: (cb: (prev: T) => T) => {\n const next = cb(state.peek());\n state.value = next;\n },\n };\n\n // wait for all slots to be resolved\n return new Promise((resolve) => {\n queue.subscribe((pending) => {\n if (pending.size === 0) {\n // apply base design tokens and global styles to the root element\n rootElement.classList.add('dropin-design');\n\n // append the rendered component to the DOM only when all slots are resolved\n rootElement.appendChild(root.firstChild ?? root);\n\n return resolve(API);\n }\n });\n });\n };\n }\n\n /**\n * Unmounts a container from a root element.\n * @param rootElement - The root element to unmount the container from.\n */\n static unmount(rootElement: HTMLElement) {\n const root = (rootElement as any)?.__rootElement;\n if (!root) throw new Error('Root element is not defined');\n render(null, root);\n }\n\n /**\n * UnRenders a component from a root element.\n * @param rootElement - The root element to unmount the component from.\n * @deprecated Use `remove` method from the returned object of the `mount` method instead or `unmount` method from the `Render` class.\n */\n unmount(rootElement: HTMLElement) {\n if (!rootElement) throw new Error('Root element is not defined');\n rootElement.firstChild?.remove(); \n }\n\n /**\n * Renders a component to a string.\n * @param Component - The component to render.\n * @param props - The component props.\n * @param options - Optional rendering options.\n */\n async toString<T>(Component: Container<T>, props: T, options?: T) {\n if (!Component) throw new Error('Component is not defined');\n\n const initialData = (await Component.getInitialData?.(props)) ?? {};\n\n return renderToString(\n <VComponent node={this._provider} {...this._provider.props}>\n <Component {...props} initialData={initialData} />\n </VComponent>,\n {},\n { ...options }\n );\n }\n}","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { VNode, ComponentChildren } from 'preact';\nimport { classes } from '.';\n\nexport type VComponentProps = {\n node: VNode | VNode[];\n children?: ComponentChildren;\n [key: string]: any; // allow other unspecified props to be passed without any TS warning\n};\n\nexport function VComponent({ node, ...props }: VComponentProps) {\n if (!node) return null;\n\n if (Array.isArray(node)) {\n return (\n <>\n {node.map((n, key) => (\n <VComponent\n key={key}\n node={n}\n className={props.className}\n {...props}\n />\n ))}\n </>\n );\n }\n\n // @ts-ignore\n props.className = classes([node.props.className, props.className]);\n\n // @ts-ignore\n return <node.type ref={node.ref} key={node.key} {...node.props} {...props} />;\n}\n"],"names":["classes","result","item","className","isActive","BREAKPOINTS","resolveImageUrl","url","_opts","base","query","params","keyMapping","getImageParamsKeyMap","keyMappingKeys","opts","unusedMapping","acc","key","value","newKey","newKeyString","newValue","generateSrcset","imageURL","options","generateSrcsetUrl","relativeWidth","n","o","i","l","a","s","f","u","c","_","p","d","v","h","g","y","m","r","b","x","k","S","w","C","O","j","e","A","F","H","t","L","T","E","$","D","N","P","W","I","R","U","V","q","z","Z","B","G","J","K","Q","X","Y","M","SlotQueueContext","createContext","Render","provider","__publicField","Component","props","rootElement","initialData","_a","state","signal","queue","Root","next","jsx","VComponent","root","render","API","cb","resolve","pending","renderToString","node","Fragment"],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"vcomponent.js","sources":["/@dropins/tools/src/lib/classes.ts","/@dropins/tools/src/lib/resolve-image.ts","../../../../node_modules/preact-render-to-string/dist/index.mjs","/@dropins/tools/src/lib/render.tsx","/@dropins/tools/src/lib/vcomponent.tsx"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\n// @ts-ignore\nimport { JSXInternal } from 'preact/src/jsx';\n\ntype ClassName = string | JSXInternal.SignalLike<string | undefined>;\n\nexport const classes = (\n classes: Array<ClassName | [ClassName, boolean] | undefined>\n) => {\n const result = classes.reduce((result, item) => {\n if (!item) return result;\n\n if (typeof item === 'string') result += ` ${item}`;\n\n if (Array.isArray(item)) {\n const [className, isActive] = item;\n if (className && isActive) {\n result += ` ${className}`;\n }\n }\n\n return result;\n }, '') as string;\n\n return result.trim();\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { getImageParamsKeyMap } from '@adobe-commerce/elsie/lib/';\n\nconst BREAKPOINTS = {\n medium: 768,\n large: 1024,\n xlarge: 1366,\n xxlarge: 1920,\n};\n\nexport interface ResolveImageUrlOptions {\n width: number;\n height?: number;\n auto?: string;\n quality?: number;\n crop?: boolean;\n fit?: string;\n}\n\nconst resolveImageUrl = (url: string, _opts?: ResolveImageUrlOptions) => {\n const [base, query] = url.split('?');\n const params = new URLSearchParams(query);\n\n const keyMapping = getImageParamsKeyMap();\n const keyMappingKeys = (keyMapping && Object.keys(keyMapping)) || [];\n\n let opts: any = {};\n let unusedMapping = { ...keyMapping };\n\n if (keyMappingKeys?.length > 0 && _opts) {\n opts = Object.entries(_opts).reduce((acc, [key, value]) => {\n const newKey = keyMapping![key];\n if (typeof newKey === 'string') {\n acc[newKey] = value;\n } else if (typeof newKey === 'function') {\n const [newKeyString, newValue] = newKey(value);\n acc[newKeyString] = newValue;\n }\n delete unusedMapping![key];\n return acc;\n }, {} as { [key: string]: any });\n } else {\n opts = {\n auto: 'webp',\n quality: 80,\n crop: false,\n fit: 'cover',\n ..._opts,\n };\n }\n\n // Set unused mapping as default params\n Object.entries(unusedMapping).forEach(([, value]) => {\n if (typeof value === 'function') {\n const [newKeyString, newValue] = value(undefined);\n opts[newKeyString] = newValue;\n }\n });\n\n // Append image optimization parameters\n Object.entries(opts).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n params.set(key, String(value));\n }\n });\n\n return `${base}?${params.toString()}`;\n};\n\nexport const generateSrcset = (\n imageURL: string,\n options: ResolveImageUrlOptions\n) => {\n if (!imageURL || !options?.width) return;\n\n const generateSrcsetUrl = (options: ResolveImageUrlOptions) => {\n return resolveImageUrl(imageURL, {\n ...options,\n });\n };\n\n return Object.entries(BREAKPOINTS)\n .map(([, value]) => {\n const relativeWidth = Math.round(\n (options.width * value) / BREAKPOINTS.xxlarge\n );\n\n return `${generateSrcsetUrl({\n ...options,\n width: relativeWidth,\n })} ${relativeWidth}w`;\n })\n .join(',\\n');\n};\n","import{Fragment as e,options as t,h as r}from\"preact\";var n=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i,o=/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/,i=/[\\s\\n\\\\/='\"\\0<>]/,l=/^xlink:?./,a=/[\"&<]/;function s(e){if(!1===a.test(e+=\"\"))return e;for(var t=0,r=0,n=\"\",o=\"\";r<e.length;r++){switch(e.charCodeAt(r)){case 34:o=\"&quot;\";break;case 38:o=\"&amp;\";break;case 60:o=\"&lt;\";break;default:continue}r!==t&&(n+=e.slice(t,r)),n+=o,t=r+1}return r!==t&&(n+=e.slice(t,r)),n}var f=function(e,t){return String(e).replace(/(\\n+)/g,\"$1\"+(t||\"\\t\"))},u=function(e,t,r){return String(e).length>(t||40)||!r&&-1!==String(e).indexOf(\"\\n\")||-1!==String(e).indexOf(\"<\")},c={},_=/([A-Z])/g;function p(e){var t=\"\";for(var r in e){var o=e[r];null!=o&&\"\"!==o&&(t&&(t+=\" \"),t+=\"-\"==r[0]?r:c[r]||(c[r]=r.replace(_,\"-$1\").toLowerCase()),t=\"number\"==typeof o&&!1===n.test(r)?t+\": \"+o+\"px;\":t+\": \"+o+\";\")}return t||void 0}function d(e,t){return Array.isArray(t)?t.reduce(d,e):null!=t&&!1!==t&&e.push(t),e}function v(){this.__d=!0}function h(e,t){return{__v:e,context:t,props:e.props,setState:v,forceUpdate:v,__d:!0,__h:[]}}function g(e,t){var r=e.contextType,n=r&&t[r.__c];return null!=r?n?n.props.value:r.__:t}var y=[];function m(r,n,a,c,_,v){if(null==r||\"boolean\"==typeof r)return\"\";if(\"object\"!=typeof r)return\"function\"==typeof r?\"\":s(r);var b=a.pretty,x=b&&\"string\"==typeof b?b:\"\\t\";if(Array.isArray(r)){for(var k=\"\",S=0;S<r.length;S++)b&&S>0&&(k+=\"\\n\"),k+=m(r[S],n,a,c,_,v);return k}if(void 0!==r.constructor)return\"\";var w,C=r.type,O=r.props,j=!1;if(\"function\"==typeof C){if(j=!0,!a.shallow||!c&&!1!==a.renderRootComponent){if(C===e){var A=[];return d(A,r.props.children),m(A,n,a,!1!==a.shallowHighOrder,_,v)}var F,H=r.__c=h(r,n);t.__b&&t.__b(r);var M=t.__r;if(C.prototype&&\"function\"==typeof C.prototype.render){var L=g(C,n);(H=r.__c=new C(O,L)).__v=r,H._dirty=H.__d=!0,H.props=O,null==H.state&&(H.state={}),null==H._nextState&&null==H.__s&&(H._nextState=H.__s=H.state),H.context=L,C.getDerivedStateFromProps?H.state=Object.assign({},H.state,C.getDerivedStateFromProps(H.props,H.state)):H.componentWillMount&&(H.componentWillMount(),H.state=H._nextState!==H.state?H._nextState:H.__s!==H.state?H.__s:H.state),M&&M(r),F=H.render(H.props,H.state,H.context)}else for(var T=g(C,n),E=0;H.__d&&E++<25;)H.__d=!1,M&&M(r),F=C.call(r.__c,O,T);return H.getChildContext&&(n=Object.assign({},n,H.getChildContext())),t.diffed&&t.diffed(r),m(F,n,a,!1!==a.shallowHighOrder,_,v)}C=(w=C).displayName||w!==Function&&w.name||function(e){var t=(Function.prototype.toString.call(e).match(/^\\s*function\\s+([^( ]+)/)||\"\")[1];if(!t){for(var r=-1,n=y.length;n--;)if(y[n]===e){r=n;break}r<0&&(r=y.push(e)-1),t=\"UnnamedComponent\"+r}return t}(w)}var $,D,N=\"<\"+C;if(O){var P=Object.keys(O);a&&!0===a.sortAttributes&&P.sort();for(var W=0;W<P.length;W++){var I=P[W],R=O[I];if(\"children\"!==I){if(!i.test(I)&&(a&&a.allAttributes||\"key\"!==I&&\"ref\"!==I&&\"__self\"!==I&&\"__source\"!==I)){if(\"defaultValue\"===I)I=\"value\";else if(\"defaultChecked\"===I)I=\"checked\";else if(\"defaultSelected\"===I)I=\"selected\";else if(\"className\"===I){if(void 0!==O.class)continue;I=\"class\"}else _&&l.test(I)&&(I=I.toLowerCase().replace(/^xlink:?/,\"xlink:\"));if(\"htmlFor\"===I){if(O.for)continue;I=\"for\"}\"style\"===I&&R&&\"object\"==typeof R&&(R=p(R)),\"a\"===I[0]&&\"r\"===I[1]&&\"boolean\"==typeof R&&(R=String(R));var U=a.attributeHook&&a.attributeHook(I,R,n,a,j);if(U||\"\"===U)N+=U;else if(\"dangerouslySetInnerHTML\"===I)D=R&&R.__html;else if(\"textarea\"===C&&\"value\"===I)$=R;else if((R||0===R||\"\"===R)&&\"function\"!=typeof R){if(!(!0!==R&&\"\"!==R||(R=I,a&&a.xml))){N=N+\" \"+I;continue}if(\"value\"===I){if(\"select\"===C){v=R;continue}\"option\"===C&&v==R&&void 0===O.selected&&(N+=\" selected\")}N=N+\" \"+I+'=\"'+s(R)+'\"'}}}else $=R}}if(b){var V=N.replace(/\\n\\s*/,\" \");V===N||~V.indexOf(\"\\n\")?b&&~N.indexOf(\"\\n\")&&(N+=\"\\n\"):N=V}if(N+=\">\",i.test(C))throw new Error(C+\" is not a valid HTML tag name in \"+N);var q,z=o.test(C)||a.voidElements&&a.voidElements.test(C),Z=[];if(D)b&&u(D)&&(D=\"\\n\"+x+f(D,x)),N+=D;else if(null!=$&&d(q=[],$).length){for(var B=b&&~N.indexOf(\"\\n\"),G=!1,J=0;J<q.length;J++){var K=q[J];if(null!=K&&!1!==K){var Q=m(K,n,a,!0,\"svg\"===C||\"foreignObject\"!==C&&_,v);if(b&&!B&&u(Q)&&(B=!0),Q)if(b){var X=Q.length>0&&\"<\"!=Q[0];G&&X?Z[Z.length-1]+=Q:Z.push(Q),G=X}else Z.push(Q)}}if(b&&B)for(var Y=Z.length;Y--;)Z[Y]=\"\\n\"+x+f(Z[Y],x)}if(Z.length||D)N+=Z.join(\"\");else if(a&&a.xml)return N.substring(0,N.length-1)+\" />\";return!z||q||D?(b&&~N.indexOf(\"\\n\")&&(N+=\"\\n\"),N=N+\"</\"+C+\">\"):N=N.replace(/>$/,\" />\"),N}var b={shallow:!0};S.render=S;var x=function(e,t){return S(e,t,b)},k=[];function S(n,o,i){o=o||{};var l=t.__s;t.__s=!0;var a,s=r(e,null);return s.__k=[n],a=i&&(i.pretty||i.voidElements||i.sortAttributes||i.shallow||i.allAttributes||i.xml||i.attributeHook)?m(n,o,i):F(n,o,!1,void 0,s),t.__c&&t.__c(n,k),t.__s=l,k.length=0,a}function w(e){return null==e||\"boolean\"==typeof e?null:\"string\"==typeof e||\"number\"==typeof e||\"bigint\"==typeof e?r(null,null,e):e}function C(e,t){return\"className\"===e?\"class\":\"htmlFor\"===e?\"for\":\"defaultValue\"===e?\"value\":\"defaultChecked\"===e?\"checked\":\"defaultSelected\"===e?\"selected\":t&&l.test(e)?e.toLowerCase().replace(/^xlink:?/,\"xlink:\"):e}function O(e,t){return\"style\"===e&&null!=t&&\"object\"==typeof t?p(t):\"a\"===e[0]&&\"r\"===e[1]&&\"boolean\"==typeof t?String(t):t}var j=Array.isArray,A=Object.assign;function F(r,n,l,a,f){if(null==r||!0===r||!1===r||\"\"===r)return\"\";if(\"object\"!=typeof r)return\"function\"==typeof r?\"\":s(r);if(j(r)){var u=\"\";f.__k=r;for(var c=0;c<r.length;c++)u+=F(r[c],n,l,a,f),r[c]=w(r[c]);return u}if(void 0!==r.constructor)return\"\";r.__=f,t.__b&&t.__b(r);var _=r.type,p=r.props;if(\"function\"==typeof _){var d;if(_===e)d=p.children;else{d=_.prototype&&\"function\"==typeof _.prototype.render?function(e,r){var n=e.type,o=g(n,r),i=new n(e.props,o);e.__c=i,i.__v=e,i.__d=!0,i.props=e.props,null==i.state&&(i.state={}),null==i.__s&&(i.__s=i.state),i.context=o,n.getDerivedStateFromProps?i.state=A({},i.state,n.getDerivedStateFromProps(i.props,i.state)):i.componentWillMount&&(i.componentWillMount(),i.state=i.__s!==i.state?i.__s:i.state);var l=t.__r;return l&&l(e),i.render(i.props,i.state,i.context)}(r,n):function(e,r){var n,o=h(e,r),i=g(e.type,r);e.__c=o;for(var l=t.__r,a=0;o.__d&&a++<25;)o.__d=!1,l&&l(e),n=e.type.call(o,e.props,i);return n}(r,n);var v=r.__c;v.getChildContext&&(n=A({},n,v.getChildContext()))}var y=F(d=null!=d&&d.type===e&&null==d.key?d.props.children:d,n,l,a,r);return t.diffed&&t.diffed(r),r.__=void 0,t.unmount&&t.unmount(r),y}var m,b,x=\"<\";if(x+=_,p)for(var k in m=p.children,p){var S=p[k];if(!(\"key\"===k||\"ref\"===k||\"__self\"===k||\"__source\"===k||\"children\"===k||\"className\"===k&&\"class\"in p||\"htmlFor\"===k&&\"for\"in p||i.test(k)))if(S=O(k=C(k,l),S),\"dangerouslySetInnerHTML\"===k)b=S&&S.__html;else if(\"textarea\"===_&&\"value\"===k)m=S;else if((S||0===S||\"\"===S)&&\"function\"!=typeof S){if(!0===S||\"\"===S){S=k,x=x+\" \"+k;continue}if(\"value\"===k){if(\"select\"===_){a=S;continue}\"option\"!==_||a!=S||\"selected\"in p||(x+=\" selected\")}x=x+\" \"+k+'=\"'+s(S)+'\"'}}var H=x;if(x+=\">\",i.test(_))throw new Error(_+\" is not a valid HTML tag name in \"+x);var M=\"\",L=!1;if(b)M+=b,L=!0;else if(\"string\"==typeof m)M+=s(m),L=!0;else if(j(m)){r.__k=m;for(var T=0;T<m.length;T++){var E=m[T];if(m[T]=w(E),null!=E&&!1!==E){var $=F(E,n,\"svg\"===_||\"foreignObject\"!==_&&l,a,r);$&&(M+=$,L=!0)}}}else if(null!=m&&!1!==m&&!0!==m){r.__k=[w(m)];var D=F(m,n,\"svg\"===_||\"foreignObject\"!==_&&l,a,r);D&&(M+=D,L=!0)}if(t.diffed&&t.diffed(r),r.__=void 0,t.unmount&&t.unmount(r),L)x+=M;else if(o.test(_))return H+\" />\";return x+\"</\"+_+\">\"}S.shallowRender=x;export default S;export{S as render,S as renderToStaticMarkup,S as renderToString,x as shallowRender};\n//# sourceMappingURL=index.module.js.map\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { render, VNode, createContext } from 'preact';\nimport renderToString from 'preact-render-to-string';\nimport { Container, VComponent } from '@adobe-commerce/elsie/lib';\nimport { Signal, signal } from '@adobe-commerce/elsie/lib/signals';\n\nexport const SlotQueueContext = createContext<Signal<Set<string>> | null>(null);\n\ntype RenderAPI = {\n remove: () => void;\n setProps: (cb: (prev: any) => any) => void;\n};\n\n/**\n * The `Render` class provides methods to render and unmount components, as well as to render components to a string.\n * @class\n *\n * @property {Function} render - Renders a component to a root element.\n * @property {Function} toString - Renders a component to a string.\n */\nexport class Render {\n private _provider: VNode<any>;\n\n constructor(provider: VNode<any>) {\n this._provider = provider;\n }\n\n /**\n * Renders a container to a root element.\n * @param Container - The container to render.\n * @param props - The container parameters.\n * @returns A function to render the component to a root element.\n */\n render<T>(Component: Container<T>, props: T) {\n /**\n * Renders a component to a root element.\n * @param rootElement - The root element to render the component to.\n * @returns A promise that resolves to an object with methods to control the rendered component.\n */\n return async (rootElement: HTMLElement): Promise<RenderAPI> => {\n if (!Component) throw new Error('Component is not defined');\n if (!rootElement) throw new Error('Root element is not defined');\n\n const initialData = (await Component.getInitialData?.(props)) ?? {};\n\n const state = signal<T>({ ...props });\n\n const queue = signal<Set<string>>(new Set());\n\n const provider = this._provider;\n\n const Root = ({ next }: { next: Signal<T> }) => {\n return (\n <SlotQueueContext.Provider value={queue}>\n <VComponent node={provider} {...provider.props}>\n <Component {...next.value} initialData={initialData} />\n </VComponent>\n </SlotQueueContext.Provider>\n );\n };\n\n // clear the root element\n rootElement.innerHTML = '';\n\n // clone the root element to initialize rendering on the background\n const root = document.createElement('div');\n\n // apply base design tokens and global styles to the root element\n rootElement.classList.add('dropin-design');\n rootElement.setAttribute('data-dropin-container', Component.name);\n\n // store the virtual root element\n (rootElement as any).__rootElement = root;\n\n render(<Root next={state} />, root);\n\n // API object to control the rendered component\n const API: RenderAPI = {\n remove: () => {\n render(null, root);\n },\n setProps: (cb: (prev: T) => T) => {\n const next = cb(state.peek());\n state.value = next;\n },\n };\n\n // wait for all slots to be resolved\n return new Promise((resolve) => {\n queue.subscribe((pending) => {\n if (pending.size === 0) {\n // apply base design tokens and global styles to the root element\n rootElement.classList.add('dropin-design');\n\n // append the rendered component to the DOM only when all slots are resolved\n rootElement.appendChild(root.firstChild ?? root);\n\n return resolve(API);\n }\n });\n });\n };\n }\n\n /**\n * Unmounts a container from a root element.\n * @param rootElement - The root element to unmount the container from.\n */\n static unmount(rootElement: HTMLElement) {\n const root = (rootElement as any)?.__rootElement;\n if (!root) throw new Error('Root element is not defined');\n render(null, root);\n }\n\n /**\n * UnRenders a component from a root element.\n * @param rootElement - The root element to unmount the component from.\n * @deprecated Use `remove` method from the returned object of the `mount` method instead or `unmount` method from the `Render` class.\n */\n unmount(rootElement: HTMLElement) {\n if (!rootElement) throw new Error('Root element is not defined');\n rootElement.firstChild?.remove(); \n }\n\n /**\n * Renders a component to a string.\n * @param Component - The component to render.\n * @param props - The component props.\n * @param options - Optional rendering options.\n */\n async toString<T>(Component: Container<T>, props: T, options?: T) {\n if (!Component) throw new Error('Component is not defined');\n\n const initialData = (await Component.getInitialData?.(props)) ?? {};\n\n return renderToString(\n <VComponent node={this._provider} {...this._provider.props}>\n <Component {...props} initialData={initialData} />\n </VComponent>,\n {},\n { ...options }\n );\n }\n}","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { VNode, ComponentChildren } from 'preact';\nimport { classes } from '.';\n\nexport type VComponentProps = {\n node: VNode | VNode[];\n children?: ComponentChildren;\n [key: string]: any; // allow other unspecified props to be passed without any TS warning\n};\n\nexport function VComponent({ node, ...props }: VComponentProps) {\n if (!node) return null;\n\n if (Array.isArray(node)) {\n return (\n <>\n {node.map((n, key) => (\n <VComponent\n key={key}\n node={n}\n className={props.className}\n {...props}\n />\n ))}\n </>\n );\n }\n\n // @ts-ignore\n props.className = classes([node.props.className, props.className]);\n\n // @ts-ignore\n return <node.type ref={node.ref} key={node.key} {...node.props} {...props} />;\n}\n"],"names":["classes","result","item","className","isActive","BREAKPOINTS","resolveImageUrl","url","_opts","base","query","params","keyMapping","getImageParamsKeyMap","keyMappingKeys","opts","unusedMapping","acc","key","value","newKey","newKeyString","newValue","generateSrcset","imageURL","options","generateSrcsetUrl","relativeWidth","n","o","i","l","a","s","f","u","c","_","p","d","v","h","g","y","m","r","b","x","k","S","w","C","O","j","e","A","F","H","t","L","T","E","$","D","N","P","W","I","R","U","V","q","z","Z","B","G","J","K","Q","X","Y","M","SlotQueueContext","createContext","Render","provider","__publicField","Component","props","rootElement","initialData","_a","state","signal","queue","Root","next","jsx","VComponent","root","render","API","cb","resolve","pending","renderToString","node","Fragment"],"mappings":"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","x_google_ignoreList":[2]}
package/lib/aem/assets.js CHANGED
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2026 Adobe
2
2
  All Rights Reserved. */
3
- import{getConfigValue as O}from"./configs.js";import{p as f,I as g}from"../../chunks/Image.js";import"../../chunks/cjs.js";import"../../chunks/get-path-value.js";import"../../preact-jsx-runtime.js";import"../../chunks/icons/Add.js";import"../../i18n.js";import"../../chunks/vcomponent.js";import"../../chunks/image-params-keymap.js";import"../../signals.js";const b=["gif","jpg","jpeg","png","webp"],v=[90,180,270],U=["h","v","hv"];function l(e){let t=e;if(t.startsWith("//")){const{protocol:s}=window.location;t=s+t}return t}function I(e){return U.includes(e)}function L(e){return v.includes(e)}function y(e){return b.includes(e)}function u(e,t,s){if(e!==void 0&&!t(e))throw new Error(s)}function h(){const e=O("commerce-assets-enabled");return e&&(typeof e=="string"&&e.toLowerCase()==="true"||typeof e=="boolean"&&e===!0)}function R(){return{quality:80,format:"webp"}}function A(e){return!!(typeof e=="string"?new URL(l(e)):e).pathname.startsWith("/adobe/assets/urn:aaid:aem")}function w(e,t,s={}){const r={...R(),...s},{format:i,crop:n,...o}=r;u(i,y,"Invalid format"),u(o.flip,I,"Invalid flip"),u(o.rotate,L,"Invalid rotation");const a=Object.fromEntries(Object.entries(o).map(([p,d])=>[p,String(d)])),c=new URLSearchParams(a);if(n){const[p,d]=[n.xOrigin||0,n.yOrigin||0],[P,E]=[n.width||100,n.height||100],S=`${p}p,${d}p,${P}p,${E}p`;c.set("crop",S)}return`${e}/as/${t}.${i}?${c.toString()}`}function q(e,t,s={}){if(!h())return e;const r=new URL(l(e));if(!A(r))return e;const i=r.origin+r.pathname;return w(i,t,s)}function _(e){return t=>{const{wrapper:s,alias:m,params:r,imageProps:i}=e;if(!i.src)throw new Error("An image source is required. Please provide a `src` or `imageProps.src`.");const n=s??document.createElement("div"),o=w(i.src,m,r),a={width:r.width,height:r.height,crop:void 0,fit:void 0,auto:void 0},c={...i,width:r.width,height:r.height,src:o,params:a};f.render(g,c)(n),t.replaceWith(n)}}function x(e,t){function s(){const i=t.wrapper??document.createElement("div"),{imageProps:n,params:o}=t,a={...n,width:o.width,height:o.height};f.render(g,a)(i),e.replaceWith(i)}if(!h()){s();return}if(!t.imageProps.src)throw new Error("An image source is required. Please provide a `src` or `imageProps.src`.");const r=new URL(l(t.imageProps.src));if(!A(r)){s();return}_(t)(e)}export{w as generateAemAssetsOptimizedUrl,R as getDefaultAemAssetsOptimizationParams,h as isAemAssetsEnabled,A as isAemAssetsUrl,_ as makeAemAssetsImageSlot,q as tryGenerateAemAssetsOptimizedUrl,x as tryRenderAemAssetsImage};
3
+ import{getConfigValue as O}from"./configs.js";import{p as f,I as g}from"../../chunks/Image.js";import"../../chunks/get-path-value.js";import"../../chunks/cjs.js";import"../../preact-jsx-runtime.js";import"../../chunks/icons/Add.js";import"../../i18n.js";import"../../chunks/vcomponent.js";import"../../chunks/image-params-keymap.js";import"../../signals.js";const b=["gif","jpg","jpeg","png","webp"],v=[90,180,270],U=["h","v","hv"];function l(e){let t=e;if(t.startsWith("//")){const{protocol:s}=window.location;t=s+t}return t}function I(e){return U.includes(e)}function L(e){return v.includes(e)}function y(e){return b.includes(e)}function u(e,t,s){if(e!==void 0&&!t(e))throw new Error(s)}function h(){const e=O("commerce-assets-enabled");return e&&(typeof e=="string"&&e.toLowerCase()==="true"||typeof e=="boolean"&&e===!0)}function R(){return{quality:80,format:"webp"}}function A(e){return!!(typeof e=="string"?new URL(l(e)):e).pathname.startsWith("/adobe/assets/urn:aaid:aem")}function w(e,t,s={}){const r={...R(),...s},{format:i,crop:n,...o}=r;u(i,y,"Invalid format"),u(o.flip,I,"Invalid flip"),u(o.rotate,L,"Invalid rotation");const a=Object.fromEntries(Object.entries(o).map(([p,d])=>[p,String(d)])),c=new URLSearchParams(a);if(n){const[p,d]=[n.xOrigin||0,n.yOrigin||0],[P,E]=[n.width||100,n.height||100],S=`${p}p,${d}p,${P}p,${E}p`;c.set("crop",S)}return`${e}/as/${t}.${i}?${c.toString()}`}function q(e,t,s={}){if(!h())return e;const r=new URL(l(e));if(!A(r))return e;const i=r.origin+r.pathname;return w(i,t,s)}function _(e){return t=>{const{wrapper:s,alias:m,params:r,imageProps:i}=e;if(!i.src)throw new Error("An image source is required. Please provide a `src` or `imageProps.src`.");const n=s??document.createElement("div"),o=w(i.src,m,r),a={width:r.width,height:r.height,crop:void 0,fit:void 0,auto:void 0},c={...i,width:r.width,height:r.height,src:o,params:a};f.render(g,c)(n),t.replaceWith(n)}}function x(e,t){function s(){const i=t.wrapper??document.createElement("div"),{imageProps:n,params:o}=t,a={...n,width:o.width,height:o.height};f.render(g,a)(i),e.replaceWith(i)}if(!h()){s();return}if(!t.imageProps.src)throw new Error("An image source is required. Please provide a `src` or `imageProps.src`.");const r=new URL(l(t.imageProps.src));if(!A(r)){s();return}_(t)(e)}export{w as generateAemAssetsOptimizedUrl,R as getDefaultAemAssetsOptimizationParams,h as isAemAssetsEnabled,A as isAemAssetsUrl,_ as makeAemAssetsImageSlot,q as tryGenerateAemAssetsOptimizedUrl,x as tryRenderAemAssetsImage};
4
4
  //# sourceMappingURL=assets.js.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2026 Adobe
2
2
  All Rights Reserved. */
3
- import{d as c}from"../../chunks/cjs.js";import{g as s}from"../../chunks/get-path-value.js";let l=null,f=null,u=null,i=null;function z(){l=null,f=null,u=null,i=null}function g(t=l,e=f){return t?Object.keys(t==null?void 0:t.public).sort((n,r)=>{const o=n.split("/").filter(Boolean).length;return r.split("/").filter(Boolean).length-o}).find(n=>{var r;return window.location.pathname===n||(((r=e==null?void 0:e.match)==null?void 0:r.call(e,n))??window.location.pathname.startsWith(n))})??"/":(console.warn("No config found. Please call initializeConfig() first."),"/")}function h(){return l?Object.keys(l.public).filter(t=>t!=="default"&&t.startsWith("/")):(console.warn("No config found. Please call initializeConfig() first."),[])}function P(){return h().length>=1}function p(t){if(!i)throw new Error("Configuration not initialized. Call initializeConfig() first.");const e=i.headers??{};return{...e.all??{},...e[t]??{}}}function d(t,e){var n;const a=(n=t.public)==null?void 0:n.default;return e==="/"||!t.public[e]?a:c(a,t.public[e])}function v(t,e){return l=t,f=e??null,u=g(l,{match:e==null?void 0:e.match}),i=d(l,u),i}function S(t){if(!i)throw new Error("Configuration not initialized. Call initializeConfig() first.");return s(i,t)}export{S as getConfigValue,p as getHeaders,h as getListOfRootPaths,g as getRootPath,v as initializeConfig,P as isMultistore,z as resetConfig};
3
+ import{g as c}from"../../chunks/get-path-value.js";import{d as s}from"../../chunks/cjs.js";let l=null,f=null,u=null,i=null;function z(){l=null,f=null,u=null,i=null}function g(t=l,e=f){return t?Object.keys(t==null?void 0:t.public).sort((n,r)=>{const o=n.split("/").filter(Boolean).length;return r.split("/").filter(Boolean).length-o}).find(n=>{var r;return window.location.pathname===n||(((r=e==null?void 0:e.match)==null?void 0:r.call(e,n))??window.location.pathname.startsWith(n))})??"/":(console.warn("No config found. Please call initializeConfig() first."),"/")}function h(){return l?Object.keys(l.public).filter(t=>t!=="default"&&t.startsWith("/")):(console.warn("No config found. Please call initializeConfig() first."),[])}function P(){return h().length>=1}function p(t){if(!i)throw new Error("Configuration not initialized. Call initializeConfig() first.");const e=i.headers??{};return{...e.all??{},...e[t]??{}}}function d(t,e){var n;const a=(n=t.public)==null?void 0:n.default;return e==="/"||!t.public[e]?a:s(a,t.public[e])}function v(t,e){return l=t,f=e??null,u=g(l,{match:e==null?void 0:e.match}),i=d(l,u),i}function S(t){if(!i)throw new Error("Configuration not initialized. Call initializeConfig() first.");return c(i,t)}export{S as getConfigValue,p as getHeaders,h as getListOfRootPaths,g as getRootPath,v as initializeConfig,P as isMultistore,z as resetConfig};
4
4
  //# sourceMappingURL=configs.js.map
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@dropins/tools",
3
- "version": "1.8.0",
3
+ "version": "1.8.1-alpha-20260331163906",
4
4
  "license": "SEE LICENSE IN LICENSE.md"
5
5
  }
package/recaptcha.js CHANGED
@@ -1,15 +1,20 @@
1
1
  /*! Copyright 2026 Adobe
2
2
  All Rights Reserved. */
3
- import{FetchGraphQL as l}from"./fetch-graphql.js";const n={failedFetch:"Failed to fetch config from backend with status:",failedSetStorageConfig:"Failed to set storage config",failedGetStorageConfig:"Configuration could not be loaded.",failedExecutionRecaptcha:"Recaptcha execution failed",failedInitializing:"An error occurred while initializing ReCaptcha:"},u={PLACE_ORDER:"placeOrder",CONTACT:"contactUs",CUSTOMER_LOGIN:"generateCustomerToken",CUSTOMER_FORGOT_PASSWORD:"requestPasswordResetEmail",CUSTOMER_CREATE:"createCustomerV2",CUSTOMER_EDIT:"updateCustomerV2",NEWSLETTER:"subscribeEmailToNewsletter",PRODUCT_REVIEW:"createProductReview",SENDFRIEND:"SENDFRIEND",BRAINTREE:"BRAINTREE"},h=".grecaptcha-badge iframe",f=(o,e)=>{if(o&&o.forms){const t=o.forms.concat(e).map(a=>typeof a!="string"?{...a,enabledBadgePlace:!1}:{badgeId:u[a],enabledBadgePlace:!1});return{...o,forms:[...new Set(t)]}}},g=async(o,e=1,t=1e3)=>{const a=sessionStorage.getItem(o);return a!==null?JSON.parse(a):e>0?(await new Promise(r=>setTimeout(r,t)),g(o,e-1,t)):null},p=(o,e,t)=>{if(!o||!e.websiteKey)return null;try{sessionStorage.setItem(o,JSON.stringify(e))}catch(a){return t&&console.error(n.failedSetStorageConfig,a),null}},C=o=>new Promise((e,t)=>{try{if(document.querySelector(o)){e();return}const a=new MutationObserver(()=>{document.querySelector(o)&&(e(),a.disconnect())});a.observe(document.body,{childList:!0,subtree:!1})}catch(a){t(a)}}),m=async()=>{try{return await C(h),!0}catch{return!1}},b=o=>{const e=t=>t.replace(/_([a-z])/g,(a,r)=>r.toUpperCase());return Object.keys(o).reduce((t,a)=>{const r=e(a);return t[r]=o[a],t},{})},{failedExecutionRecaptcha:d}=n,y=async o=>{if(!window.grecaptcha)return Promise.reject(d);try{return await window.grecaptcha.execute(o,{action:"click"})}catch(e){return Promise.reject(`${d} : ${e}`)}},_=()=>new Promise(o=>{const e=new MutationObserver((a,r)=>{window.grecaptcha&&(r.disconnect(),o(!0))}),t={childList:!0,subtree:!0,attributes:!0};e.observe(document.body,t)}),w=async(o,e,t)=>(window.grecaptcha||await _(),grecaptcha.ready(()=>{const a=document.querySelectorAll(`#${o}`);a.length&&(a.forEach(r=>r.id=`${r.id}_${Math.random().toString(36)}`),a.forEach(r=>{if(r.innerHTML==="")try{grecaptcha.render(r.id,{sitekey:e.websiteKey,badge:e.badgePosition,size:"invisible",theme:e.theme??"light"})}catch(i){t&&console.error(i)}}))})),S=`query {
4
- recaptchaV3Config {
3
+ import{FetchGraphQL as C}from"./fetch-graphql.js";const s={failedFetch:"Failed to fetch config from backend with status:",failedSetStorageConfig:"Failed to set storage config",failedGetStorageConfig:"Configuration could not be loaded.",failedExecutionRecaptcha:"Recaptcha execution failed",failedInitializing:"An error occurred while initializing ReCaptcha:",mixedTypesWarning:"Multiple reCAPTCHA types detected across forms (both v3 and Enterprise). This configuration is not supported — all forms must use the same reCAPTCHA type. Please update your configuration in Commerce Admin "},f={PLACE_ORDER:"placeOrder",CONTACT:"contactUs",CUSTOMER_LOGIN:"generateCustomerToken",CUSTOMER_FORGOT_PASSWORD:"requestPasswordResetEmail",CUSTOMER_CREATE:"createCustomerV2",CUSTOMER_EDIT:"updateCustomerV2",NEWSLETTER:"subscribeEmailToNewsletter",PRODUCT_REVIEW:"createProductReview",SENDFRIEND:"SENDFRIEND",BRAINTREE:"BRAINTREE"},_=".grecaptcha-badge iframe",y=(o,e)=>{if(o&&o.forms){const t=o.forms.concat(e).map(i=>typeof i!="string"?{...i,enabledBadgePlace:!1}:{badgeId:f[i],enabledBadgePlace:!1});return{...o,forms:[...new Set(t)]}}},m=async(o,e=1,t=1e3)=>{const i=sessionStorage.getItem(o);return i!==null?JSON.parse(i):e>0?(await new Promise(r=>setTimeout(r,t)),m(o,e-1,t)):null},b=(o,e,t)=>{if(!o||!e.websiteKey)return null;try{sessionStorage.setItem(o,JSON.stringify(e))}catch(i){return t&&console.error(s.failedSetStorageConfig,i),null}},R=o=>new Promise((e,t)=>{try{if(document.querySelector(o)){e();return}const i=new MutationObserver(()=>{document.querySelector(o)&&(e(),i.disconnect())});i.observe(document.body,{childList:!0,subtree:!1})}catch(i){t(i)}}),w=async()=>{try{return await R(_),!0}catch{return!1}},E=o=>{const e=t=>t.replace(/_([a-z])/g,(i,r)=>r.toUpperCase());return Object.keys(o).reduce((t,i)=>{const r=e(i);return t[r]=o[i],t},{})},{failedExecutionRecaptcha:p}=s,S=async(o,e=!1)=>{if(!window.grecaptcha)return Promise.reject(p);try{return e?await window.grecaptcha.enterprise.execute(o,{action:"click"}):await window.grecaptcha.execute(o,{action:"click"})}catch(t){return Promise.reject(`${p} : ${t}`)}},T=()=>new Promise(o=>{const e=new MutationObserver((i,r)=>{window.grecaptcha&&(r.disconnect(),o(!0))}),t={childList:!0,subtree:!0,attributes:!0};e.observe(document.body,t)}),P=async(o,e,t,i=!1)=>{window.grecaptcha||await T();const r=i?grecaptcha.enterprise:grecaptcha;return r.ready(()=>{const n=document.querySelectorAll(`#${o}`);n.length&&(n.forEach(a=>a.id=`${a.id}_${Math.random().toString(36)}`),n.forEach(a=>{if(a.innerHTML==="")try{r.render(a.id,{sitekey:e.websiteKey,badge:e.badgePosition,size:"invisible",theme:e.theme??"light"})}catch(g){t&&console.error(g)}}))})},A=`
5
4
  is_enabled
6
- website_key
7
- minimum_score
8
- badge_position
9
- language_code
10
- failure_message
11
- forms
12
- theme
13
- }
14
- }`,c=new l().getMethods();class R{constructor(){var e;this._enableReCAPTCHA=!1,this._recaptchaBackendEndpoint=((e=c.getConfig())==null?void 0:e.endpoint)||"",this._recaptchaScriptUrl="https://www.google.com/recaptcha/api.js",this._configStorageKey="recaptchaConfig",this._logger=!1}async _updateBadgePosition(e,t){if(t)if((t==null?void 0:t.badgePosition)==="inline")await w(e,t,this._logger);else{if(!await m())return;const r=document.querySelector(h);t.theme&&r&&!r.src.includes("theme=dark")&&!r.src.includes("theme=light")&&r.setAttribute("src",`${r.src}&theme=${t.theme}`)}}async _addRecaptchaScript(){const e=await this._loadConfig();if(!document.getElementById("recaptchaId")&&e){const t=e.websiteKey,a=e.badgePosition==="inline",r=e.languageCode;if(!t)return;const i=document.createElement("script");i.setAttribute("id","recaptchaId"),i.defer=!0,i.src=a?`${this._recaptchaScriptUrl}?render=${t}&badge=none&hl=${r}`:`${this._recaptchaScriptUrl}?render=${t}&badge=${e.badgePosition}&hl=${r}`,document.head.appendChild(i)}}async _fetchStoreConfig(){var e;try{const t=await c.fetchGraphQl(S,{method:"GET",cache:"force-cache"});if((e=t==null?void 0:t.errors)!=null&&e.length){this._logger&&console.error(t.errors[0].message);return}return t}catch(t){this._logger&&console.error(`${n.failedFetch}:`,t)}}async _loadConfig(){const e=await g(this._configStorageKey);return e?(this._enableReCAPTCHA=!!e.isEnabled,e):(this._logger&&console.error(n.failedGetStorageConfig),null)}setEndpoint(e){e&&(this._recaptchaBackendEndpoint=e,c.setEndpoint(e))}async setConfig(e){var t,a;try{const r=await this._fetchStoreConfig();if(!((t=r==null?void 0:r.data)!=null&&t.recaptchaV3Config)){sessionStorage.removeItem(this._configStorageKey);return}const i=b((a=r==null?void 0:r.data)==null?void 0:a.recaptchaV3Config),s=f(i,e);s&&p(this._configStorageKey,s,this._logger)}catch(r){this._logger&&console.error(n.failedSetStorageConfig,r),sessionStorage.removeItem(this._configStorageKey)}}async initReCaptcha(e=3e3){setTimeout(()=>{(async()=>{try{const t=await this._loadConfig();if(!(t!=null&&t.forms)||!t.isEnabled)return;await this._addRecaptchaScript(),t.badgePosition==="inline"?await Promise.all(t.forms.map(a=>this._updateBadgePosition(a.badgeId,t))):await this._updateBadgePosition("",t)}catch(t){this._logger&&console.error(n.failedInitializing,t)}})()},e)}async verifyReCaptcha(){try{const e=await this._loadConfig();return!(e!=null&&e.forms)||!e.websiteKey||!e.isEnabled?void 0:await y(e.websiteKey)}catch(e){this._logger&&console.error(e)}}enableLogger(e){this._logger=e}getMethods(){return{enableLogger:this.enableLogger.bind(this),setEndpoint:this.setEndpoint.bind(this),setConfig:this.setConfig.bind(this),initReCaptcha:this.initReCaptcha.bind(this),verifyReCaptcha:this.verifyReCaptcha.bind(this)}}}const E=new R,{initReCaptcha:P,verifyReCaptcha:I,setEndpoint:O,setConfig:A,enableLogger:v}=E.getMethods();export{R as RecaptchaModule,v as enableLogger,P as initReCaptcha,c as recaptchaFetchApi,A as setConfig,O as setEndpoint,I as verifyReCaptcha};
5
+ configurations {
6
+ website_key
7
+ badge_position
8
+ language_code
9
+ minimum_score
10
+ re_captcha_type
11
+ technical_failure_message
12
+ validation_failure_message
13
+ theme
14
+ }`,v=o=>`query {
15
+ ${o.map(t=>` ${t}: recaptchaFormConfig(formType: ${t}) {${A}
16
+ }`).join(`
17
+ `)}
18
+ }`,l=new C().getMethods(),$="https://www.google.com/recaptcha/api.js",k="https://www.google.com/recaptcha/enterprise.js",u="[ReCaptcha]";class I{constructor(){var e;this._enableReCAPTCHA=!1,this._recaptchaBackendEndpoint=((e=l.getConfig())==null?void 0:e.endpoint)||"",this._recaptchaScriptUrl=$,this._configStorageKey="recaptchaConfig",this._logger=!1}_log(...e){this._logger&&console.log(u,...e)}_normalizeFormConfigResponse(e,t){const i=e==null?void 0:e.data;if(!i)return;const r=[];let n=null;const a=new Set;for(const h of t){const c=i[h];if(!(c!=null&&c.is_enabled))continue;const d=Array.isArray(c.configurations)?c.configurations[0]:c.configurations;if(d){if(d.re_captcha_type&&a.add(d.re_captcha_type),!d.website_key){this._log(`Skipping ${h}: enabled but missing website_key`);continue}r.push(h),n||(n=d)}}if(a.size>1){console.warn(u,s.mixedTypesWarning,`
19
+ Detected: ${[...a].join(", ")}`);return}if(!n||r.length===0){this._log("No enabled forms found in recaptchaFormConfig response");return}const g=n.re_captcha_type==="RECAPTCHA_ENTERPRISE";return this._log(`Using reCAPTCHA ${g?"Enterprise":"v3"}`,`| Enabled forms: ${r.join(", ")}`),{data:{recaptchaConfig:{is_enabled:!0,website_key:n.website_key,badge_position:n.badge_position,language_code:n.language_code,minimum_score:n.minimum_score,failure_message:n.validation_failure_message,theme:n.theme,forms:r,recaptcha_type:g?"enterprise":"v3"}}}}async _updateBadgePosition(e,t){if(t)if((t==null?void 0:t.badgePosition)==="inline")this._log(`Rendering inline badge for: ${e}`),await P(e,t,this._logger,t.recaptchaType==="enterprise");else{if(!await w())return;const r=document.querySelector(_);t.theme&&r&&!r.src.includes("theme=dark")&&!r.src.includes("theme=light")&&r.setAttribute("src",`${r.src}&theme=${t.theme}`)}}async _addRecaptchaScript(){const e=await this._loadConfig();if(!document.getElementById("recaptchaId")&&e){const t=e.websiteKey,i=e.badgePosition==="inline",r=e.languageCode;if(!t){this._log("No website key found, skipping script injection");return}const n=e.recaptchaType==="enterprise"?k:this._recaptchaScriptUrl,a=document.createElement("script");a.setAttribute("id","recaptchaId"),a.defer=!0,a.src=i?`${n}?render=${t}&badge=none&hl=${r}`:`${n}?render=${t}&badge=${e.badgePosition}&hl=${r}`,this._log(`Loading script: ${a.src}`),document.head.appendChild(a)}}async _fetchStoreConfig(){var e;try{const t=Object.keys(f),i=v(t);this._log(`Fetching config for forms: ${t.join(", ")}`);const r=await l.fetchGraphQl(i,{method:"GET",cache:"force-cache"});if((e=r==null?void 0:r.errors)!=null&&e.length){this._logger&&console.error(r.errors[0].message);return}return this._normalizeFormConfigResponse(r,t)}catch(t){this._logger&&console.error(`${s.failedFetch}:`,t)}}async _loadConfig(){const e=await m(this._configStorageKey);return e?(this._enableReCAPTCHA=!!e.isEnabled,e):(this._logger&&console.error(s.failedGetStorageConfig),null)}setEndpoint(e){e&&(this._recaptchaBackendEndpoint=e,l.setEndpoint(e))}async setConfig(e){var t,i;try{const r=await this._fetchStoreConfig();if(!((t=r==null?void 0:r.data)!=null&&t.recaptchaConfig)){this._log("No reCAPTCHA config returned, clearing storage"),sessionStorage.removeItem(this._configStorageKey);return}const n=E((i=r==null?void 0:r.data)==null?void 0:i.recaptchaConfig),a=y(n,e);a&&(this._log("Config stored:",{type:a.recaptchaType??"v3",enabled:a.isEnabled,badge:a.badgePosition,forms:a.forms}),b(this._configStorageKey,a,this._logger))}catch(r){this._logger&&console.error(s.failedSetStorageConfig,r),sessionStorage.removeItem(this._configStorageKey)}}async initReCaptcha(e=3e3){setTimeout(()=>{(async()=>{try{const t=await this._loadConfig();if(!(t!=null&&t.forms)||!t.isEnabled){this._log("reCAPTCHA disabled or no forms configured, skipping init");return}this._log(`Initializing reCAPTCHA (type: ${t.recaptchaType??"v3"}, badge: ${t.badgePosition})`),await this._addRecaptchaScript(),t.badgePosition==="inline"?await Promise.all(t.forms.map(i=>this._updateBadgePosition(i.badgeId,t))):await this._updateBadgePosition("",t)}catch(t){this._logger&&console.error(s.failedInitializing,t)}})()},e)}async verifyReCaptcha(){try{const e=await this._loadConfig();if(!(e!=null&&e.forms)||!e.websiteKey||!e.isEnabled){this._log("verifyReCaptcha skipped: reCAPTCHA not enabled or missing config");return}this._log(`Requesting token (type: ${e.recaptchaType??"v3"})`);const t=await S(e.websiteKey,e.recaptchaType==="enterprise");return this._log("Token obtained successfully"),t}catch(e){this._logger&&console.error(e)}}enableLogger(e){this._logger=e}getMethods(){return{enableLogger:this.enableLogger.bind(this),setEndpoint:this.setEndpoint.bind(this),setConfig:this.setConfig.bind(this),initReCaptcha:this.initReCaptcha.bind(this),verifyReCaptcha:this.verifyReCaptcha.bind(this)}}}const F=new I,{initReCaptcha:L,verifyReCaptcha:N,setEndpoint:B,setConfig:M,enableLogger:U}=F.getMethods();export{I as RecaptchaModule,U as enableLogger,L as initReCaptcha,l as recaptchaFetchApi,M as setConfig,B as setEndpoint,N as verifyReCaptcha};
15
20
  //# sourceMappingURL=recaptcha.js.map
package/recaptcha.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"recaptcha.js","sources":["@dropins/tools/src/recaptcha/configs/message.config.ts","@dropins/tools/src/recaptcha/configs/typeForms.config.ts","@dropins/tools/src/recaptcha/configs/recaptchaBadgeSelector.config.ts","@dropins/tools/src/recaptcha/lib/_extendConfig.ts","@dropins/tools/src/recaptcha/lib/_storageConfig.ts","@dropins/tools/src/recaptcha/lib/_checkRecaptchaBadge.ts","@dropins/tools/src/recaptcha/lib/_convertKeysToCamelCase.ts","@dropins/tools/src/recaptcha/services/recaptcha.service.ts","@dropins/tools/src/recaptcha/graphql/recaptchaConfig.graphql.ts","@dropins/tools/src/recaptcha/index.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const recaptchaMessage = {\n failedFetch: 'Failed to fetch config from backend with status:',\n failedSetStorageConfig: 'Failed to set storage config',\n failedGetStorageConfig: 'Configuration could not be loaded.',\n failedExecutionRecaptcha: 'Recaptcha execution failed',\n failedInitializing: 'An error occurred while initializing ReCaptcha:',\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const typeDefaultForm: Record<string, string> = {\n PLACE_ORDER: 'placeOrder',\n CONTACT: 'contactUs',\n CUSTOMER_LOGIN: 'generateCustomerToken',\n CUSTOMER_FORGOT_PASSWORD: 'requestPasswordResetEmail',\n CUSTOMER_CREATE: 'createCustomerV2',\n CUSTOMER_EDIT: 'updateCustomerV2',\n NEWSLETTER: 'subscribeEmailToNewsletter',\n PRODUCT_REVIEW: 'createProductReview',\n SENDFRIEND: 'SENDFRIEND',\n BRAINTREE: 'BRAINTREE',\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const recaptchaBadgeSelector = '.grecaptcha-badge iframe';","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ReCaptchaV3Model } from '../types/recaptcha.types';\nimport { typeDefaultForm } from '../configs/typeForms.config';\n\nexport const extendConfig = (\n config: ReCaptchaV3Model,\n modifyParams: any[]\n): ReCaptchaV3Model | undefined => {\n if (config && config.forms) {\n const modifyForm = config.forms.concat(modifyParams).map((el) => {\n if (typeof el !== 'string') return { ...el, enabledBadgePlace: false };\n\n return {\n badgeId: typeDefaultForm[el],\n enabledBadgePlace: false,\n };\n });\n\n return { ...config, forms: [...new Set(modifyForm)] };\n }\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { recaptchaMessage } from '../configs';\nimport { ReCaptchaV3Model } from '../types/recaptcha.types';\n\nconst getConfigStorage = async (\n storageKey: string,\n retries = 1,\n delay = 1000\n): Promise<ReCaptchaV3Model | null> => {\n const storedConfig = sessionStorage.getItem(storageKey);\n\n if (storedConfig !== null) {\n return JSON.parse(storedConfig);\n } else if (retries > 0) {\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n return getConfigStorage(storageKey, retries - 1, delay);\n }\n\n return null;\n};\n\nconst setConfigStorage = (\n storageKey: string,\n config: ReCaptchaV3Model,\n logger: boolean\n) => {\n if (!storageKey || !config.websiteKey) return null;\n\n try {\n sessionStorage.setItem(storageKey, JSON.stringify(config));\n } catch (error) {\n logger && console.error(recaptchaMessage.failedSetStorageConfig, error);\n return null;\n }\n};\n\nexport { getConfigStorage, setConfigStorage };\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { recaptchaBadgeSelector } from '../configs';\n\nconst waitForElement = (selector: string): Promise<void> => {\n return new Promise((resolve, reject) => {\n try {\n // Check if the element is already in the DOM\n if (document.querySelector(selector)) {\n resolve();\n return;\n }\n\n // Create an observer to watch for changes\n const observer = new MutationObserver(() => {\n if (document.querySelector(selector)) {\n resolve();\n observer.disconnect();\n }\n });\n\n // Start observing the body for child changes only\n observer.observe(document.body, {\n childList: true,\n subtree: false,\n });\n } catch (error) {\n reject(error);\n }\n });\n};\n\nexport const checkRecaptchaBadge = async (): Promise<boolean> => {\n try {\n await waitForElement(recaptchaBadgeSelector);\n return true;\n } catch (error) {\n return false;\n }\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const convertKeysToCamelCase = (obj: {\n [key: string]: any;\n}): { [key: string]: string | number | boolean } => {\n const camelCaseKey = (key: string): string => {\n return key.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n };\n\n return Object.keys(obj).reduce((result, key) => {\n const newKey = camelCaseKey(key);\n result[newKey] = obj[key];\n return result;\n }, {} as { [key: string]: any });\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { recaptchaMessage } from '../configs';\nimport {\n MutationObserverInit,\n ReCaptchaV3Model,\n} from '../types/recaptcha.types';\nconst { failedExecutionRecaptcha } = recaptchaMessage;\n\nexport const getRecaptchaToken = async (\n websiteKey: string\n): Promise<string> => {\n if (!(window as any).grecaptcha) {\n return Promise.reject(failedExecutionRecaptcha);\n }\n\n try {\n const token = await window.grecaptcha.execute(websiteKey, {\n action: 'click',\n });\n\n return token;\n } catch (error) {\n return Promise.reject(`${failedExecutionRecaptcha} : ${error}`);\n }\n};\n\nexport const waitForReCaptcha = () => {\n return new Promise((resolve) => {\n const observer = new MutationObserver((_, obs) => {\n if (window.grecaptcha) {\n obs.disconnect();\n resolve(true);\n }\n });\n\n const observerOptions: MutationObserverInit = {\n childList: true,\n subtree: true,\n attributes: true,\n };\n\n observer.observe(document.body, observerOptions);\n });\n};\n\nexport const verifyReCaptchaLoad = async (\n badgeId: string,\n config: ReCaptchaV3Model,\n logger: boolean\n): Promise<void> => {\n if (!window.grecaptcha) {\n await waitForReCaptcha();\n }\n\n return grecaptcha.ready(() => {\n const badgeContainers = document.querySelectorAll(`#${badgeId}`);\n\n if (!badgeContainers.length) return;\n\n // Handle the case when multiple instances of the drop-in container rendered on the same page\n\n badgeContainers.forEach(\n (element) => (element.id = `${element.id}_${Math.random().toString(36)}`) // NOSONAR\n );\n\n badgeContainers.forEach((element) => {\n if (element.innerHTML === '') {\n try {\n grecaptcha.render(element.id, {\n sitekey: config.websiteKey as string,\n badge: config.badgePosition,\n size: 'invisible',\n theme: config.theme ?? 'light',\n });\n } catch (error) {\n logger && console.error(error);\n }\n }\n });\n });\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const RECAPTCHA_CONFIGURATION_V3 = `query {\n recaptchaV3Config {\n is_enabled\n website_key\n minimum_score\n badge_position\n language_code\n failure_message\n forms\n theme\n } \n}`;\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport {\n ReCaptchaV3Response,\n PropsFormTypes,\n ReCaptchaV3Model,\n} from './types/recaptcha.types';\nimport { recaptchaMessage, recaptchaBadgeSelector } from './configs';\nimport {\n extendConfig,\n setConfigStorage,\n getConfigStorage,\n checkRecaptchaBadge,\n convertKeysToCamelCase,\n} from './lib';\nimport {\n getRecaptchaToken,\n verifyReCaptchaLoad,\n} from './services/recaptcha.service';\nimport { RECAPTCHA_CONFIGURATION_V3 } from './graphql/recaptchaConfig.graphql';\n\nimport { FetchGraphQL } from '@adobe-commerce/fetch-graphql';\n\nexport const recaptchaFetchApi = new FetchGraphQL().getMethods();\n\nexport class RecaptchaModule {\n _enableReCAPTCHA: boolean = false;\n _recaptchaBackendEndpoint: string =\n recaptchaFetchApi.getConfig()?.endpoint || '';\n _recaptchaScriptUrl: string = 'https://www.google.com/recaptcha/api.js';\n _configStorageKey: string = 'recaptchaConfig';\n _logger: boolean = false;\n\n async _updateBadgePosition(\n badgeId: string,\n config: ReCaptchaV3Model\n ): Promise<void | null> {\n if (!config) return;\n\n if (config?.badgePosition === 'inline') {\n await verifyReCaptchaLoad(badgeId, config, this._logger);\n } else {\n const isBadgeLoaded = await checkRecaptchaBadge();\n\n if (!isBadgeLoaded) return;\n\n const recaptchaBadge = document.querySelector(\n recaptchaBadgeSelector\n ) as HTMLIFrameElement;\n\n const shouldUpdateSrc =\n config.theme &&\n recaptchaBadge &&\n !recaptchaBadge.src.includes('theme=dark') &&\n !recaptchaBadge.src.includes('theme=light');\n\n if (shouldUpdateSrc) {\n recaptchaBadge.setAttribute(\n 'src',\n `${recaptchaBadge.src}&theme=${config.theme}`\n );\n }\n }\n }\n\n async _addRecaptchaScript(): Promise<void> {\n const config = await this._loadConfig();\n\n if (!document.getElementById('recaptchaId') && config) {\n const webApiKey = config.websiteKey;\n const isBadgeGlobal = config.badgePosition === 'inline';\n const languageCode = config.languageCode;\n\n if (!webApiKey) return;\n\n const script = document.createElement('script');\n script.setAttribute('id', 'recaptchaId');\n script.defer = true;\n script.src = isBadgeGlobal\n ? `${this._recaptchaScriptUrl}?render=${webApiKey}&badge=none&hl=${languageCode}`\n : `${this._recaptchaScriptUrl}?render=${webApiKey}&badge=${config.badgePosition}&hl=${languageCode}`;\n\n document.head.appendChild(script);\n }\n }\n\n async _fetchStoreConfig(): Promise<ReCaptchaV3Response | undefined> {\n try {\n const response = await recaptchaFetchApi.fetchGraphQl(\n RECAPTCHA_CONFIGURATION_V3,\n {\n method: 'GET',\n cache: 'force-cache',\n }\n );\n\n if (response?.errors?.length) {\n this._logger && console.error(response.errors[0].message);\n\n return;\n }\n\n return response;\n } catch (error) {\n this._logger && console.error(`${recaptchaMessage.failedFetch}:`, error);\n }\n }\n\n async _loadConfig(): Promise<ReCaptchaV3Model | null> {\n const config = await getConfigStorage(this._configStorageKey);\n\n if (!config) {\n this._logger && console.error(recaptchaMessage.failedGetStorageConfig);\n\n return null;\n }\n\n this._enableReCAPTCHA = !!config.isEnabled;\n\n return config;\n }\n\n setEndpoint(url: string) {\n if (!url) return;\n\n this._recaptchaBackendEndpoint = url;\n recaptchaFetchApi.setEndpoint(url);\n }\n\n async setConfig(configList: PropsFormTypes[]) {\n try {\n const config = await this._fetchStoreConfig();\n\n if (!config?.data?.recaptchaV3Config) {\n sessionStorage.removeItem(this._configStorageKey);\n return;\n }\n\n const transformConfig: ReCaptchaV3Model = convertKeysToCamelCase(\n config?.data?.recaptchaV3Config\n );\n\n const extendedRecaptchaConfig = extendConfig(transformConfig, configList);\n\n if (extendedRecaptchaConfig) {\n setConfigStorage(\n this._configStorageKey,\n extendedRecaptchaConfig,\n this._logger\n );\n }\n } catch (error) {\n this._logger &&\n console.error(recaptchaMessage.failedSetStorageConfig, error);\n\n sessionStorage.removeItem(this._configStorageKey);\n }\n }\n\n async initReCaptcha(lazyLoadTimeout = 3000) {\n // IIFE added to fix SonarQube error \"Promise returned in function argument where a void return was expected\"\n setTimeout(() => {\n (async () => {\n try {\n const config = await this._loadConfig();\n\n if (!config?.forms || !config.isEnabled) {\n return;\n }\n\n await this._addRecaptchaScript();\n\n if (config.badgePosition === 'inline') {\n await Promise.all(\n (config.forms as PropsFormTypes[]).map((element) =>\n this._updateBadgePosition(element.badgeId, config)\n )\n );\n } else {\n await this._updateBadgePosition('', config);\n }\n } catch (error) {\n this._logger &&\n console.error(recaptchaMessage.failedInitializing, error);\n }\n })();\n }, lazyLoadTimeout);\n }\n\n async verifyReCaptcha(): Promise<string | undefined> {\n try {\n const config = await this._loadConfig();\n\n if (!config?.forms || !config.websiteKey || !config.isEnabled) {\n return undefined;\n }\n\n return await getRecaptchaToken(config.websiteKey);\n } catch (error) {\n this._logger && console.error(error);\n }\n }\n\n enableLogger(logger: boolean) {\n this._logger = logger;\n }\n\n getMethods() {\n return {\n enableLogger: this.enableLogger.bind(this),\n setEndpoint: this.setEndpoint.bind(this),\n setConfig: this.setConfig.bind(this),\n initReCaptcha: this.initReCaptcha.bind(this),\n verifyReCaptcha: this.verifyReCaptcha.bind(this),\n };\n }\n}\n\nconst recaptcha = new RecaptchaModule();\n\nconst { initReCaptcha, verifyReCaptcha, setEndpoint, setConfig, enableLogger } =\n recaptcha.getMethods();\n\nexport { setEndpoint, setConfig, initReCaptcha, verifyReCaptcha, enableLogger };\n"],"names":["recaptchaMessage","typeDefaultForm","recaptchaBadgeSelector","extendConfig","config","modifyParams","modifyForm","el","getConfigStorage","storageKey","retries","delay","storedConfig","resolve","setConfigStorage","logger","error","waitForElement","selector","reject","observer","checkRecaptchaBadge","convertKeysToCamelCase","obj","camelCaseKey","key","_","letter","result","newKey","failedExecutionRecaptcha","getRecaptchaToken","websiteKey","waitForReCaptcha","obs","observerOptions","verifyReCaptchaLoad","badgeId","badgeContainers","element","RECAPTCHA_CONFIGURATION_V3","recaptchaFetchApi","FetchGraphQL","RecaptchaModule","_a","recaptchaBadge","webApiKey","isBadgeGlobal","languageCode","script","response","url","configList","transformConfig","_b","extendedRecaptchaConfig","lazyLoadTimeout","recaptcha","initReCaptcha","verifyReCaptcha","setEndpoint","setConfig","enableLogger"],"mappings":"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"}
1
+ {"version":3,"file":"recaptcha.js","sources":["@dropins/tools/src/recaptcha/configs/message.config.ts","@dropins/tools/src/recaptcha/configs/typeForms.config.ts","@dropins/tools/src/recaptcha/configs/recaptchaBadgeSelector.config.ts","@dropins/tools/src/recaptcha/lib/_extendConfig.ts","@dropins/tools/src/recaptcha/lib/_storageConfig.ts","@dropins/tools/src/recaptcha/lib/_checkRecaptchaBadge.ts","@dropins/tools/src/recaptcha/lib/_convertKeysToCamelCase.ts","@dropins/tools/src/recaptcha/services/recaptcha.service.ts","@dropins/tools/src/recaptcha/graphql/recaptchaConfig.graphql.ts","@dropins/tools/src/recaptcha/index.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const recaptchaMessage = {\n failedFetch: 'Failed to fetch config from backend with status:',\n failedSetStorageConfig: 'Failed to set storage config',\n failedGetStorageConfig: 'Configuration could not be loaded.',\n failedExecutionRecaptcha: 'Recaptcha execution failed',\n failedInitializing: 'An error occurred while initializing ReCaptcha:',\n mixedTypesWarning:\n 'Multiple reCAPTCHA types detected across forms (both v3 and Enterprise). ' +\n 'This configuration is not supported — all forms must use the same reCAPTCHA type. ' +\n 'Please update your configuration in Commerce Admin '\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const typeDefaultForm: Record<string, string> = {\n PLACE_ORDER: 'placeOrder',\n CONTACT: 'contactUs',\n CUSTOMER_LOGIN: 'generateCustomerToken',\n CUSTOMER_FORGOT_PASSWORD: 'requestPasswordResetEmail',\n CUSTOMER_CREATE: 'createCustomerV2',\n CUSTOMER_EDIT: 'updateCustomerV2',\n NEWSLETTER: 'subscribeEmailToNewsletter',\n PRODUCT_REVIEW: 'createProductReview',\n SENDFRIEND: 'SENDFRIEND',\n BRAINTREE: 'BRAINTREE',\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const recaptchaBadgeSelector = '.grecaptcha-badge iframe';","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { ReCaptchaModel } from '../types/recaptcha.types';\nimport { typeDefaultForm } from '../configs/typeForms.config';\n\nexport const extendConfig = (\n config: ReCaptchaModel,\n modifyParams: any[]\n): ReCaptchaModel | undefined => {\n if (config && config.forms) {\n const modifyForm = config.forms.concat(modifyParams).map((el) => {\n if (typeof el !== 'string') return { ...el, enabledBadgePlace: false };\n\n return {\n badgeId: typeDefaultForm[el],\n enabledBadgePlace: false,\n };\n });\n\n return { ...config, forms: [...new Set(modifyForm)] };\n }\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { recaptchaMessage } from '../configs';\nimport { ReCaptchaModel } from '../types/recaptcha.types';\n\nconst getConfigStorage = async (\n storageKey: string,\n retries = 1,\n delay = 1000\n): Promise<ReCaptchaModel | null> => {\n const storedConfig = sessionStorage.getItem(storageKey);\n\n if (storedConfig !== null) {\n return JSON.parse(storedConfig);\n } else if (retries > 0) {\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n return getConfigStorage(storageKey, retries - 1, delay);\n }\n\n return null;\n};\n\nconst setConfigStorage = (\n storageKey: string,\n config: ReCaptchaModel,\n logger: boolean\n) => {\n if (!storageKey || !config.websiteKey) return null;\n\n try {\n sessionStorage.setItem(storageKey, JSON.stringify(config));\n } catch (error) {\n logger && console.error(recaptchaMessage.failedSetStorageConfig, error);\n return null;\n }\n};\n\nexport { getConfigStorage, setConfigStorage };\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { recaptchaBadgeSelector } from '../configs';\n\nconst waitForElement = (selector: string): Promise<void> => {\n return new Promise((resolve, reject) => {\n try {\n // Check if the element is already in the DOM\n if (document.querySelector(selector)) {\n resolve();\n return;\n }\n\n // Create an observer to watch for changes\n const observer = new MutationObserver(() => {\n if (document.querySelector(selector)) {\n resolve();\n observer.disconnect();\n }\n });\n\n // Start observing the body for child changes only\n observer.observe(document.body, {\n childList: true,\n subtree: false,\n });\n } catch (error) {\n reject(error);\n }\n });\n};\n\nexport const checkRecaptchaBadge = async (): Promise<boolean> => {\n try {\n await waitForElement(recaptchaBadgeSelector);\n return true;\n } catch (error) {\n return false;\n }\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport const convertKeysToCamelCase = (obj: {\n [key: string]: any;\n}): { [key: string]: string | number | boolean } => {\n const camelCaseKey = (key: string): string => {\n return key.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n };\n\n return Object.keys(obj).reduce((result, key) => {\n const newKey = camelCaseKey(key);\n result[newKey] = obj[key];\n return result;\n }, {} as { [key: string]: any });\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { recaptchaMessage } from '../configs';\nimport {\n MutationObserverInit,\n ReCaptchaModel,\n} from '../types/recaptcha.types';\nconst { failedExecutionRecaptcha } = recaptchaMessage;\n\nexport const getRecaptchaToken = async (\n websiteKey: string,\n isEnterprise = false\n): Promise<string> => {\n if (!(window as any).grecaptcha) {\n return Promise.reject(failedExecutionRecaptcha);\n }\n\n try {\n const token = isEnterprise\n ? await window.grecaptcha.enterprise.execute(websiteKey, {\n action: 'click',\n })\n : await window.grecaptcha.execute(websiteKey, {\n action: 'click',\n });\n\n return token;\n } catch (error) {\n return Promise.reject(`${failedExecutionRecaptcha} : ${error}`);\n }\n};\n\nexport const waitForReCaptcha = () => {\n return new Promise((resolve) => {\n const observer = new MutationObserver((_, obs) => {\n if (window.grecaptcha) {\n obs.disconnect();\n resolve(true);\n }\n });\n\n const observerOptions: MutationObserverInit = {\n childList: true,\n subtree: true,\n attributes: true,\n };\n\n observer.observe(document.body, observerOptions);\n });\n};\n\nexport const verifyReCaptchaLoad = async (\n badgeId: string,\n config: ReCaptchaModel,\n logger: boolean,\n isEnterprise = false\n): Promise<void> => {\n if (!window.grecaptcha) {\n await waitForReCaptcha();\n }\n\n const api = isEnterprise ? grecaptcha.enterprise : grecaptcha;\n\n return api.ready(() => {\n const badgeContainers = document.querySelectorAll(`#${badgeId}`);\n\n if (!badgeContainers.length) return;\n\n // Handle the case when multiple instances of the drop-in container rendered on the same page\n\n badgeContainers.forEach(\n (element) => (element.id = `${element.id}_${Math.random().toString(36)}`) // NOSONAR\n );\n\n badgeContainers.forEach((element) => {\n if (element.innerHTML === '') {\n try {\n api.render(element.id, {\n sitekey: config.websiteKey as string,\n badge: config.badgePosition,\n size: 'invisible',\n theme: config.theme ?? 'light',\n });\n } catch (error) {\n logger && console.error(error);\n }\n }\n });\n });\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\nconst RECAPTCHA_FORM_CONFIG_FIELDS = `\n is_enabled\n configurations {\n website_key\n badge_position\n language_code\n minimum_score\n re_captcha_type\n technical_failure_message\n validation_failure_message\n theme\n }`;\n\nexport const buildRecaptchaFormConfigQuery = (\n formTypes: string[]\n): string => {\n const queries = formTypes\n .map(\n (formType) =>\n ` ${formType}: recaptchaFormConfig(formType: ${formType}) {${RECAPTCHA_FORM_CONFIG_FIELDS}\n }`\n )\n .join('\\n');\n\n return `query {\\n${queries}\\n}`;\n};\n","/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport {\n ReCaptchaResponse,\n PropsFormTypes,\n ReCaptchaModel,\n ReCaptchaFormConfigResult,\n} from './types/recaptcha.types';\nimport {\n recaptchaMessage,\n recaptchaBadgeSelector,\n typeDefaultForm,\n} from './configs';\nimport {\n extendConfig,\n setConfigStorage,\n getConfigStorage,\n checkRecaptchaBadge,\n convertKeysToCamelCase,\n} from './lib';\nimport {\n getRecaptchaToken,\n verifyReCaptchaLoad,\n} from './services/recaptcha.service';\nimport { buildRecaptchaFormConfigQuery } from './graphql/recaptchaConfig.graphql';\n\nimport { FetchGraphQL } from '@adobe-commerce/fetch-graphql';\n\nexport const recaptchaFetchApi = new FetchGraphQL().getMethods();\n\nconst RECAPTCHA_V3_SCRIPT_URL = 'https://www.google.com/recaptcha/api.js';\nconst RECAPTCHA_ENTERPRISE_SCRIPT_URL = 'https://www.google.com/recaptcha/enterprise.js';\n\nconst LOG_PREFIX = '[ReCaptcha]';\n\nexport class RecaptchaModule {\n _enableReCAPTCHA: boolean = false;\n _recaptchaBackendEndpoint: string = recaptchaFetchApi.getConfig()?.endpoint || '';\n _recaptchaScriptUrl: string = RECAPTCHA_V3_SCRIPT_URL;\n _configStorageKey: string = 'recaptchaConfig';\n _logger: boolean = false;\n\n _log(...args: any[]) {\n this._logger && console.log(LOG_PREFIX, ...args);\n }\n\n _normalizeFormConfigResponse(\n response: any,\n formTypes: string[]\n ): ReCaptchaResponse | undefined {\n const data = response?.data;\n if (!data) return undefined;\n\n const enabledForms: string[] = [];\n let globalConfig: ReCaptchaFormConfigResult | null = null;\n const detectedTypes = new Set<string>();\n\n for (const formType of formTypes) {\n const formData = data[formType];\n\n if (!formData?.is_enabled) continue;\n\n // configurations may be an array or a single object\n const config = Array.isArray(formData.configurations)\n ? formData.configurations[0]\n : formData.configurations;\n\n if (!config) continue;\n\n // Track all reCAPTCHA types across enabled forms, regardless of website_key\n if (config.re_captcha_type) {\n detectedTypes.add(config.re_captcha_type);\n }\n\n // Skip forms with empty website_key — enabled but not usable\n if (!config.website_key) {\n this._log(\n `Skipping ${formType}: enabled but missing website_key`\n );\n continue;\n }\n\n enabledForms.push(formType);\n\n if (!globalConfig) {\n globalConfig = config;\n }\n }\n\n // Abort if mixed reCAPTCHA types detected across enabled forms\n if (detectedTypes.size > 1) {\n console.warn(\n LOG_PREFIX,\n recaptchaMessage.mixedTypesWarning,\n `\\nDetected: ${[...detectedTypes].join(', ')}`\n );\n return undefined;\n }\n\n if (!globalConfig || enabledForms.length === 0) {\n this._log('No enabled forms found in recaptchaFormConfig response');\n return undefined;\n }\n\n // Map ReCaptchaConfiguration fields to the existing recaptchaConfig shape\n const isEnterprise =\n globalConfig.re_captcha_type === 'RECAPTCHA_ENTERPRISE';\n\n this._log(\n `Using reCAPTCHA ${isEnterprise ? 'Enterprise' : 'v3'}`,\n `| Enabled forms: ${enabledForms.join(', ')}`\n );\n\n return {\n data: {\n recaptchaConfig: {\n is_enabled: true,\n website_key: globalConfig.website_key,\n badge_position: globalConfig.badge_position,\n language_code: globalConfig.language_code,\n minimum_score: globalConfig.minimum_score,\n failure_message: globalConfig.validation_failure_message,\n theme: globalConfig.theme,\n forms: enabledForms,\n recaptcha_type: isEnterprise ? 'enterprise' : 'v3',\n },\n },\n };\n }\n\n async _updateBadgePosition(\n badgeId: string,\n config: ReCaptchaModel\n ): Promise<void | null> {\n if (!config) return;\n\n if (config?.badgePosition === 'inline') {\n this._log(`Rendering inline badge for: ${badgeId}`);\n await verifyReCaptchaLoad(\n badgeId,\n config,\n this._logger,\n config.recaptchaType === 'enterprise'\n );\n } else {\n const isBadgeLoaded = await checkRecaptchaBadge();\n\n if (!isBadgeLoaded) return;\n\n const recaptchaBadge = document.querySelector(\n recaptchaBadgeSelector\n ) as HTMLIFrameElement;\n\n const shouldUpdateSrc =\n config.theme &&\n recaptchaBadge &&\n !recaptchaBadge.src.includes('theme=dark') &&\n !recaptchaBadge.src.includes('theme=light');\n\n if (shouldUpdateSrc) {\n recaptchaBadge.setAttribute(\n 'src',\n `${recaptchaBadge.src}&theme=${config.theme}`\n );\n }\n }\n }\n\n async _addRecaptchaScript(): Promise<void> {\n const config = await this._loadConfig();\n\n if (!document.getElementById('recaptchaId') && config) {\n const webApiKey = config.websiteKey;\n const isBadgeGlobal = config.badgePosition === 'inline';\n const languageCode = config.languageCode;\n\n if (!webApiKey) {\n this._log('No website key found, skipping script injection');\n return;\n }\n\n const scriptUrl =\n config.recaptchaType === 'enterprise'\n ? RECAPTCHA_ENTERPRISE_SCRIPT_URL\n : this._recaptchaScriptUrl;\n\n const script = document.createElement('script');\n script.setAttribute('id', 'recaptchaId');\n script.defer = true;\n script.src = isBadgeGlobal\n ? `${scriptUrl}?render=${webApiKey}&badge=none&hl=${languageCode}`\n : `${scriptUrl}?render=${webApiKey}&badge=${config.badgePosition}&hl=${languageCode}`;\n\n this._log(`Loading script: ${script.src}`);\n document.head.appendChild(script);\n }\n }\n\n async _fetchStoreConfig(): Promise<ReCaptchaResponse | undefined> {\n try {\n const formTypes = Object.keys(typeDefaultForm);\n const query = buildRecaptchaFormConfigQuery(formTypes);\n\n this._log(`Fetching config for forms: ${formTypes.join(', ')}`);\n\n const response = await recaptchaFetchApi.fetchGraphQl(query, {\n method: 'GET',\n cache: 'force-cache',\n });\n\n if (response?.errors?.length) {\n this._logger && console.error(response.errors[0].message);\n\n return;\n }\n\n return this._normalizeFormConfigResponse(response, formTypes);\n } catch (error) {\n this._logger && console.error(`${recaptchaMessage.failedFetch}:`, error);\n }\n }\n\n async _loadConfig(): Promise<ReCaptchaModel | null> {\n const config = await getConfigStorage(this._configStorageKey);\n\n if (!config) {\n this._logger && console.error(recaptchaMessage.failedGetStorageConfig);\n\n return null;\n }\n\n this._enableReCAPTCHA = !!config.isEnabled;\n\n return config;\n }\n\n setEndpoint(url: string) {\n if (!url) return;\n\n this._recaptchaBackendEndpoint = url;\n recaptchaFetchApi.setEndpoint(url);\n }\n\n async setConfig(configList: PropsFormTypes[]) {\n try {\n const config = await this._fetchStoreConfig();\n\n if (!config?.data?.recaptchaConfig) {\n this._log('No reCAPTCHA config returned, clearing storage');\n sessionStorage.removeItem(this._configStorageKey);\n return;\n }\n\n const transformConfig: ReCaptchaModel = convertKeysToCamelCase(\n config?.data?.recaptchaConfig\n );\n\n const extendedRecaptchaConfig = extendConfig(transformConfig, configList);\n\n if (extendedRecaptchaConfig) {\n this._log('Config stored:', {\n type: extendedRecaptchaConfig.recaptchaType ?? 'v3',\n enabled: extendedRecaptchaConfig.isEnabled,\n badge: extendedRecaptchaConfig.badgePosition,\n forms: extendedRecaptchaConfig.forms,\n });\n setConfigStorage(\n this._configStorageKey,\n extendedRecaptchaConfig,\n this._logger\n );\n }\n } catch (error) {\n this._logger &&\n console.error(recaptchaMessage.failedSetStorageConfig, error);\n\n sessionStorage.removeItem(this._configStorageKey);\n }\n }\n\n async initReCaptcha(lazyLoadTimeout = 3000) {\n // IIFE added to fix SonarQube error \"Promise returned in function argument where a void return was expected\"\n setTimeout(() => {\n (async () => {\n try {\n const config = await this._loadConfig();\n\n if (!config?.forms || !config.isEnabled) {\n this._log('reCAPTCHA disabled or no forms configured, skipping init');\n return;\n }\n\n this._log(\n `Initializing reCAPTCHA (type: ${config.recaptchaType ?? 'v3'}, badge: ${config.badgePosition})`\n );\n\n await this._addRecaptchaScript();\n\n if (config.badgePosition === 'inline') {\n await Promise.all(\n (config.forms as PropsFormTypes[]).map((element) =>\n this._updateBadgePosition(element.badgeId, config)\n )\n );\n } else {\n await this._updateBadgePosition('', config);\n }\n } catch (error) {\n this._logger &&\n console.error(recaptchaMessage.failedInitializing, error);\n }\n })();\n }, lazyLoadTimeout);\n }\n\n async verifyReCaptcha(): Promise<string | undefined> {\n try {\n const config = await this._loadConfig();\n\n if (!config?.forms || !config.websiteKey || !config.isEnabled) {\n this._log('verifyReCaptcha skipped: reCAPTCHA not enabled or missing config');\n return undefined;\n }\n\n this._log(\n `Requesting token (type: ${config.recaptchaType ?? 'v3'})`\n );\n\n const token = await getRecaptchaToken(\n config.websiteKey,\n config.recaptchaType === 'enterprise'\n );\n\n this._log('Token obtained successfully');\n\n return token;\n } catch (error) {\n this._logger && console.error(error);\n }\n }\n\n enableLogger(logger: boolean) {\n this._logger = logger;\n }\n\n getMethods() {\n return {\n enableLogger: this.enableLogger.bind(this),\n setEndpoint: this.setEndpoint.bind(this),\n setConfig: this.setConfig.bind(this),\n initReCaptcha: this.initReCaptcha.bind(this),\n verifyReCaptcha: this.verifyReCaptcha.bind(this),\n };\n }\n}\n\nconst recaptcha = new RecaptchaModule();\n\nconst { initReCaptcha, verifyReCaptcha, setEndpoint, setConfig, enableLogger } =\n recaptcha.getMethods();\n\nexport { setEndpoint, setConfig, initReCaptcha, verifyReCaptcha, enableLogger };\n"],"names":["recaptchaMessage","typeDefaultForm","recaptchaBadgeSelector","extendConfig","config","modifyParams","modifyForm","el","getConfigStorage","storageKey","retries","delay","storedConfig","resolve","setConfigStorage","logger","error","waitForElement","selector","reject","observer","checkRecaptchaBadge","convertKeysToCamelCase","obj","camelCaseKey","key","_","letter","result","newKey","failedExecutionRecaptcha","getRecaptchaToken","websiteKey","isEnterprise","waitForReCaptcha","obs","observerOptions","verifyReCaptchaLoad","badgeId","api","badgeContainers","element","RECAPTCHA_FORM_CONFIG_FIELDS","buildRecaptchaFormConfigQuery","formTypes","formType","recaptchaFetchApi","FetchGraphQL","RECAPTCHA_V3_SCRIPT_URL","RECAPTCHA_ENTERPRISE_SCRIPT_URL","LOG_PREFIX","RecaptchaModule","_a","args","response","data","enabledForms","globalConfig","detectedTypes","formData","recaptchaBadge","webApiKey","isBadgeGlobal","languageCode","scriptUrl","script","query","url","configList","transformConfig","_b","extendedRecaptchaConfig","lazyLoadTimeout","token","recaptcha","initReCaptcha","verifyReCaptcha","setEndpoint","setConfig","enableLogger"],"mappings":"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"}
@@ -12,5 +12,6 @@ export declare const recaptchaMessage: {
12
12
  failedGetStorageConfig: string;
13
13
  failedExecutionRecaptcha: string;
14
14
  failedInitializing: string;
15
+ mixedTypesWarning: string;
15
16
  };
16
17
  //# sourceMappingURL=message.config.d.ts.map
@@ -1,10 +1,2 @@
1
- /********************************************************************
2
- * Copyright 2024 Adobe
3
- * All Rights Reserved.
4
- *
5
- * NOTICE: Adobe permits you to use, modify, and distribute this
6
- * file in accordance with the terms of the Adobe license agreement
7
- * accompanying it.
8
- *******************************************************************/
9
- export declare const RECAPTCHA_CONFIGURATION_V3 = "query {\n recaptchaV3Config {\n is_enabled\n website_key\n minimum_score\n badge_position\n language_code\n failure_message\n forms\n theme\n } \n}";
1
+ export declare const buildRecaptchaFormConfigQuery: (formTypes: string[]) => string;
10
2
  //# sourceMappingURL=recaptchaConfig.graphql.d.ts.map
@@ -1,4 +1,4 @@
1
- import { ReCaptchaV3Response, PropsFormTypes, ReCaptchaV3Model } from './types/recaptcha.types';
1
+ import { ReCaptchaResponse, PropsFormTypes, ReCaptchaModel } from './types/recaptcha.types';
2
2
 
3
3
  export declare const recaptchaFetchApi: {
4
4
  setEndpoint: (endpoint: string) => void;
@@ -23,10 +23,12 @@ export declare class RecaptchaModule {
23
23
  _recaptchaScriptUrl: string;
24
24
  _configStorageKey: string;
25
25
  _logger: boolean;
26
- _updateBadgePosition(badgeId: string, config: ReCaptchaV3Model): Promise<void | null>;
26
+ _log(...args: any[]): void;
27
+ _normalizeFormConfigResponse(response: any, formTypes: string[]): ReCaptchaResponse | undefined;
28
+ _updateBadgePosition(badgeId: string, config: ReCaptchaModel): Promise<void | null>;
27
29
  _addRecaptchaScript(): Promise<void>;
28
- _fetchStoreConfig(): Promise<ReCaptchaV3Response | undefined>;
29
- _loadConfig(): Promise<ReCaptchaV3Model | null>;
30
+ _fetchStoreConfig(): Promise<ReCaptchaResponse | undefined>;
31
+ _loadConfig(): Promise<ReCaptchaModel | null>;
30
32
  setEndpoint(url: string): void;
31
33
  setConfig(configList: PropsFormTypes[]): Promise<void>;
32
34
  initReCaptcha(lazyLoadTimeout?: number): Promise<void>;
@@ -1,4 +1,4 @@
1
- import { ReCaptchaV3Model } from '../types/recaptcha.types';
1
+ import { ReCaptchaModel } from '../types/recaptcha.types';
2
2
 
3
- export declare const extendConfig: (config: ReCaptchaV3Model, modifyParams: any[]) => ReCaptchaV3Model | undefined;
3
+ export declare const extendConfig: (config: ReCaptchaModel, modifyParams: any[]) => ReCaptchaModel | undefined;
4
4
  //# sourceMappingURL=_extendConfig.d.ts.map
@@ -1,6 +1,6 @@
1
- import { ReCaptchaV3Model } from '../types/recaptcha.types';
1
+ import { ReCaptchaModel } from '../types/recaptcha.types';
2
2
 
3
- declare const getConfigStorage: (storageKey: string, retries?: number, delay?: number) => Promise<ReCaptchaV3Model | null>;
4
- declare const setConfigStorage: (storageKey: string, config: ReCaptchaV3Model, logger: boolean) => null | undefined;
3
+ declare const getConfigStorage: (storageKey: string, retries?: number, delay?: number) => Promise<ReCaptchaModel | null>;
4
+ declare const setConfigStorage: (storageKey: string, config: ReCaptchaModel, logger: boolean) => null | undefined;
5
5
  export { getConfigStorage, setConfigStorage };
6
6
  //# sourceMappingURL=_storageConfig.d.ts.map
@@ -1,6 +1,6 @@
1
- import { ReCaptchaV3Model } from '../types/recaptcha.types';
1
+ import { ReCaptchaModel } from '../types/recaptcha.types';
2
2
 
3
- export declare const getRecaptchaToken: (websiteKey: string) => Promise<string>;
3
+ export declare const getRecaptchaToken: (websiteKey: string, isEnterprise?: boolean) => Promise<string>;
4
4
  export declare const waitForReCaptcha: () => Promise<unknown>;
5
- export declare const verifyReCaptchaLoad: (badgeId: string, config: ReCaptchaV3Model, logger: boolean) => Promise<void>;
5
+ export declare const verifyReCaptchaLoad: (badgeId: string, config: ReCaptchaModel, logger: boolean, isEnterprise?: boolean) => Promise<void>;
6
6
  //# sourceMappingURL=recaptcha.service.d.ts.map