@baken667/share-kit
Version:
A simple share utility kit with native and social media share options
2 lines (1 loc) • 1.28 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var e=(e=>(e.WA_LINK_FORMAT="https://wa.me/?text={0}%20{1}",e.TG_LINK_FORMAT="https://t.me/share/url?url={0}&text={1}",e.NOT_SUPPORTED_MESSAGE="This feature is not supported on this browser or operating system.",e))(e||{});const t=(e,t)=>{if(!t)return e;const r=new URL(e);return Object.keys(t).forEach((e=>{t[e]&&r.searchParams.append(e,t[e])})),r.toString()},r=(e,...t)=>e.replace(/{(\d+)}/g,((e,r)=>t[r]||""));exports.appendUtmParams=t,exports.formatLink=r,exports.share=({url:o=window.location.href,title:a,desc:n,platform:s,utmParams:c})=>{const i=t(o,c),l=encodeURIComponent(i),p=encodeURIComponent(a&&n?`${a} - ${n}`:a||n||"");let d="";switch(s){case"whatsapp":d=r(e.WA_LINK_FORMAT,p,l);break;case"telegram":d=r(e.TG_LINK_FORMAT,l,p);break;case"email":d=`mailto:?subject=${encodeURIComponent(a||"Check this out!")}&body=${encodeURIComponent(`${a?`${a}\n\n`:""}${n?`${n}\n\n`:""}${l}`)}`;break;case"native":return navigator.canShare&&navigator.canShare({url:i})?void navigator.share({title:a,text:`${a||""}${l}${n?` - ${n}`:""}`,url:i}).catch((e=>console.error("Sharing failed",e))):void console.error(e.NOT_SUPPORTED_MESSAGE);default:console.warn(e.NOT_SUPPORTED_MESSAGE)}window.open(d,"_blank")};