UNPKG

@alessiofrittoli/web-utils

Version:
3 lines (2 loc) 3.63 kB
import {Url}from'@alessiofrittoli/url-utils';import'@alessiofrittoli/date-utils';import'@alessiofrittoli/math-utils';var T=e=>typeof window<"u"?window.matchMedia(e).matches:false;var d=e=>new Map(e);var m=(e={})=>{let t=Math.max(100,e.width||600),n=Math.max(100,e.height||800),{url:r,context:a}=e,{features:s={}}=e,{left:o=window.screen.width/2-(t/2+10),top:p=window.screen.height/2-(n/2+50),...y}=s,u=d([["popup","yes"],["width",t.toString()],["height",n.toString()],["left",o.toString()],["top",p.toString()]]);Object.entries(y).map(([g,O])=>{u.set(g,O);});let w=Array.from(u).map(g=>g.join("=")).join(",");return window.open(r&&Url.format(r),a,w)};var f=e=>Array.isArray(e)?e.filter(Boolean).map(t=>{if(typeof t!="string"){if(!t.email)return null;let n=t.name?.trim(),r=t.email.trim();return n?`${n}<${r}>`:r}return t.trim()}).filter(Boolean).join(","):f([e]),x=(e={})=>{let{to:t,body:n,subject:r,cc:a,bcc:s}=e,o=new URLSearchParams;if(n&&o.append("body",n),r&&o.append("subject",r),a){let p=f(a);p&&o.append("cc",p);}if(s){let p=f(s);p&&o.append("bcc",p);}return ["mailto:",t&&f(t),o.size>0&&`?${o.toString().replace(/\+/g," ")}`].filter(Boolean).join("")};var S=()=>typeof navigator<"u"&&typeof navigator.canShare=="function"&&typeof navigator.share=="function",U=e=>S()&&navigator.canShare(e),_=async(e={})=>{let{title:t=document.title,text:n,url:r,files:a}=e,s=Object.keys(e).length>0?{title:t,text:n,url:r?Url.format(r):void 0,files:a}:{title:t,url:Url.format(location)};return U(s)?navigator.share(s):false},N=(e={})=>{window.location.href=x(e);},i=e=>{let{url:t=location,sharer:n,urlParam:r="url",...a}=e,s=Url.format(t),o=Url.parse(n);return o.searchParams.append(r,s),m({url:o,...a,context:"sharer"})},J=(e={})=>{let{title:t=document.title,...n}=e,r=new URL("https://facebook.com/sharer/sharer.php");return t&&r.searchParams.append("t",t),i({...n,sharer:r,urlParam:"u"})},z=(e={})=>{let{title:t=document.title,...n}=e,r=new URL("https://work.workplace.com/sharer.php");return t&&r.searchParams.append("t",t),i({...n,sharer:r})},H=(e={})=>{let{title:t=document.title,...n}=e,r=new URL("https://reddit.com/submit");return t&&r.searchParams.append("title",t),i({...n,sharer:r})},Z=(e={})=>i({...e,sharer:"https://service.weibo.com/share/share.php"}),q=(e={})=>i({...e,sharer:"https://vk.com/share.php"}),X=(e={})=>i({...e,sharer:"https://tumblr.com/widgets/share/tool",urlParam:"canonicalUrl"}),G=(e={})=>i({...e,sharer:"https://social-plugins.line.me/lineit/share"}),Q=(e={})=>i({...e,sharer:"https://x.com/intent/tweet"}),Y=(e={})=>i({...e,sharer:"https://linkedin.com/sharing/share-offsite"}),ee=(e={})=>i({...e,sharer:"https://telegram.me/share/url"}),te=(e={})=>{let{url:t=location,media:n,description:r=document.title||document.querySelector('[name="description"]')?.getAttribute("content"),...a}=e,s=Url.format(t),o=new URL("https://pinterest.it/pin-builder");return o.searchParams.append("method","button"),o.searchParams.append("media",n?Url.format(n):s),r&&o.searchParams.append("description",r),i({...a,url:t,sharer:o})},re=(e={})=>{let{url:t=location,text:n,...r}=e,a=Url.format(t),s=new URL("https://api.whatsapp.com/send"),o=n?`${n} ${a}`:a;return s.search=new URLSearchParams({text:o}).toString(),m({url:s,...r,context:"sharer"})};export{S as canWebApiShare,U as canWebApiShareData,T as getMediaMatches,m as openBrowserPopUp,i as openSharerPopUp,_ as share,J as shareOnFacebook,G as shareOnLine,Y as shareOnLinkedIn,te as shareOnPinterest,H as shareOnReddit,ee as shareOnTelegram,X as shareOnTumblr,q as shareOnVK,Z as shareOnWeibo,re as shareOnWhatsApp,z as shareOnWorkplace,Q as shareOnX,N as shareViaEmail};