@mailto.foo/sdk 1.4.3 → 1.4.4
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/dist/cdn.js +16 -9
- package/dist/cdn.js.map +1 -1
- package/dist/sdk.min.js +1 -1
- package/package.json +1 -1
package/dist/cdn.js
CHANGED
|
@@ -62,27 +62,34 @@ const setButtonsLoading = (buttons, loading) => {
|
|
|
62
62
|
};
|
|
63
63
|
const enhanceForm = (form, publishKey) => {
|
|
64
64
|
const mailto = new Mailto({ publishKey });
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
const
|
|
65
|
+
const silent = form.hasAttribute("_silent");
|
|
66
|
+
const errorElement = silent ? null : ensureMessageElement(form, ERROR_CLASS);
|
|
67
|
+
const successElement = silent ? null : ensureMessageElement(form, SUCCESS_CLASS);
|
|
68
|
+
const actionButtons = silent ? [] : getActionButtons(form);
|
|
68
69
|
form.addEventListener("submit", async (event) => {
|
|
69
70
|
event.preventDefault();
|
|
70
|
-
|
|
71
|
+
if (!silent)
|
|
72
|
+
setButtonsLoading(actionButtons, true);
|
|
71
73
|
form.dispatchEvent(new CustomEvent(SUBMITTING_EVENT, { bubbles: true }));
|
|
72
74
|
try {
|
|
73
75
|
await mailto.subscribe(collectFormData(form));
|
|
74
|
-
errorElement
|
|
75
|
-
|
|
76
|
+
if (errorElement)
|
|
77
|
+
errorElement.textContent = "";
|
|
78
|
+
if (successElement)
|
|
79
|
+
successElement.textContent = "Thanks for subscribing!";
|
|
76
80
|
form.reset();
|
|
77
81
|
form.dispatchEvent(new CustomEvent(SUCCESS_EVENT, { bubbles: true }));
|
|
78
82
|
}
|
|
79
83
|
catch (err) {
|
|
80
|
-
successElement
|
|
81
|
-
|
|
84
|
+
if (successElement)
|
|
85
|
+
successElement.textContent = "";
|
|
86
|
+
if (errorElement)
|
|
87
|
+
errorElement.textContent = err instanceof Error ? err.message : String(err);
|
|
82
88
|
form.dispatchEvent(new CustomEvent(ERROR_EVENT, { bubbles: true, detail: { error: err } }));
|
|
83
89
|
}
|
|
84
90
|
finally {
|
|
85
|
-
|
|
91
|
+
if (!silent)
|
|
92
|
+
setButtonsLoading(actionButtons, false);
|
|
86
93
|
}
|
|
87
94
|
});
|
|
88
95
|
};
|
package/dist/cdn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdn.js","sourceRoot":"","sources":["../src/cdn.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cdn.js","sourceRoot":"","sources":["../src/cdn.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var
|
|
1
|
+
"use strict";(()=>{var d="https://api-mailto-foo.dan-7bc.workers.dev",f=async t=>{let e=new AbortController,o=setTimeout(()=>e.abort(),5e3);try{let n=await fetch(`${d}/config/${t}/config`,{signal:e.signal});if(clearTimeout(o),!n.ok){if(n.status===404)throw new Error(`Invalid publish key: ${t}`);let i=(n.headers.get("content-type")??"").includes("application/json")?(await n.json()).error??`Config fetch failed: ${n.status}`:await n.text();throw new Error(i)}return n.json()}catch(n){throw clearTimeout(o),n}},a=null,g=()=>window.turnstile?Promise.resolve():a||(a=new Promise((t,e)=>{let o=document.createElement("script");o.src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit",o.async=!0,o.defer=!0,o.onload=()=>t(),o.onerror=n=>{a=null,e(n)},document.head.appendChild(o)}),a),h=t=>new Promise((e,o)=>{let n=document.createElement("div");n.style.cssText=["position:fixed","inset:0","z-index:2147483647","display:flex","align-items:center","justify-content:center","background:rgba(0,0,0,0.5)"].join(";");let r=document.createElement("div");n.appendChild(r),document.body.appendChild(n);let i,s=()=>{try{window.turnstile.remove(i)}catch{}try{document.body.removeChild(n)}catch{}};i=window.turnstile.render(r,{sitekey:t,callback:c=>{s(),e(c)},"error-callback":()=>{s(),o(new Error("Turnstile verification failed"))},"expired-callback":()=>{s(),o(new Error("Turnstile token expired"))}})}),y=async t=>{await g();let e=document.createElement("div");e.style.cssText="position:fixed;bottom:0;right:0;z-index:9999;visibility:hidden;",document.body.appendChild(e);let o,n=()=>{try{window.turnstile.remove(o)}catch{}try{document.body.removeChild(e)}catch{}};return await new Promise((i,s)=>{o=window.turnstile.render(e,{sitekey:t,appearance:"interaction-only",callback:c=>{n(),i(c)},"error-callback":()=>{n(),i(null)},"expired-callback":()=>{n(),s(new Error("Turnstile token expired"))}})})??h(t)},l=class{publishKey;constructor(e){this.publishKey=e.publishKey}async subscribe(e){let o=await f(this.publishKey),n=o.turnstileSiteKey?await y(o.turnstileSiteKey):void 0,r={data:e,config:{publishKey:this.publishKey,token:n}},i=await fetch(`${d}/subscribe`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!i.ok){let c=(i.headers.get("content-type")??"").includes("application/json")?(await i.json()).error??"Subscription failed":await i.text();throw new Error(c)}}};var w=/\/((?:pk_|ph_public_)[A-Za-z0-9_-]+)\/subscribe\/?(?:[?#].*)?$/,E=/\/[A-Za-z0-9_-]+\/subscribe\/?(?:[?#].*)?$/,T=/(?:^|\.)mailto-foo\.|(?:^|\.)mailto\.foo$/,S=t=>{try{let e=new URL(t,window.location.href);return T.test(e.hostname)&&E.test(e.pathname)}catch{return!1}},C=t=>{t.addEventListener("submit",e=>{e.preventDefault(),console.warn(`mailto.foo: unrecognized publish key in form action "${t.action}" \u2014 submission blocked to avoid a full-page redirect. Update the SDK or check the form action URL.`)})},v=t=>{let e={};for(let[o,n]of new FormData(t).entries())typeof n=="string"&&(e[o]=n);return e},k="mailto-foo-error",L="mailto-foo-success",A="mailto-foo-button",P="mailto:submitting",x="mailto:success",M="mailto:error",m=(t,e)=>{let o=t.querySelector(`.${e}`);if(o)return o;let n=document.createElement("div");return n.className=e,t.appendChild(n),n},_=t=>{let e=new Set;for(let o of t.querySelectorAll(`.${A}, button[type="submit"], input[type="submit"]`))(o instanceof HTMLButtonElement||o instanceof HTMLInputElement)&&e.add(o);return[...e]},b=(t,e)=>{for(let o of t)o.disabled=e,e?o.setAttribute("data-loading","true"):o.removeAttribute("data-loading")},B=(t,e)=>{let o=new l({publishKey:e}),n=t.hasAttribute("_silent"),r=n?null:m(t,k),i=n?null:m(t,L),s=n?[]:_(t);t.addEventListener("submit",async c=>{c.preventDefault(),n||b(s,!0),t.dispatchEvent(new CustomEvent(P,{bubbles:!0}));try{await o.subscribe(v(t)),r&&(r.textContent=""),i&&(i.textContent="Thanks for subscribing!"),t.reset(),t.dispatchEvent(new CustomEvent(x,{bubbles:!0}))}catch(u){i&&(i.textContent=""),r&&(r.textContent=u instanceof Error?u.message:String(u)),t.dispatchEvent(new CustomEvent(M,{bubbles:!0,detail:{error:u}}))}finally{n||b(s,!1)}})},p=()=>{for(let t of document.querySelectorAll("form[action]")){let e=t.action.match(w);e?.[1]?B(t,e[1]):S(t.action)&&C(t)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",p):p();window.Mailto=l;})();
|
package/package.json
CHANGED