{"version":3,"file":"shareon.umd.js","sources":["../src/shareon.js","../src/index.js"],"sourcesContent":["// prettier-ignore\n/**\n * Map of social networks to their respective URL builders.\n *\n * The `d` argument of each builder is the object with the page metadata, such\n * as page title, URL, author name, etc.\n *\n * @type {{ [network: string]: (d: {\n * url: string,\n * title?: string,\n * media?: string,\n * text?: string,\n * via?: string,\n * fbAppId?: string\n * }) => string}}\n */\nconst urlBuilderMap = {\n facebook: (d) => `https://www.facebook.com/sharer/sharer.php?u=${d.url}`,\n linkedin: (d) => `https://www.linkedin.com/sharing/share-offsite/?url=${d.url}`,\n mastodon: (d) => `https://toot.kytta.dev/?text=${d.title}%0D%0A${d.url}${d.text ? `%0D%0A%0D%0A${d.text}` : ''}${d.via ? `%0D%0A%0D%0A${d.via}` : ''}`,\n messenger: (d) => `https://www.facebook.com/dialog/send?app_id=${d.fbAppId}&link=${d.url}&redirect_uri=${d.url}`,\n odnoklassniki: (d) => `https://connect.ok.ru/offer?url=${d.url}&title=${d.title}${d.media ? `&imageUrl=${d.media}` : ''}`,\n pinterest: (d) => `https://pinterest.com/pin/create/button/?url=${d.url}&description=${d.title}${d.media ? `&media=${d.media}` : ''}`,\n pocket: (d) => `https://getpocket.com/edit.php?url=${d.url}`,\n reddit: (d) => `https://www.reddit.com/submit?title=${d.title}&url=${d.url}`,\n telegram: (d) => `https://telegram.me/share/url?url=${d.url}${d.text ? `&text=${d.text}` : ''}`,\n twitter: (d) => `https://twitter.com/intent/tweet?url=${d.url}&text=${d.title}${d.via ? `&via=${d.via}` : ''}`,\n viber: (d) => `viber://forward?text=${d.title}%0D%0A${d.url}${d.text ? `%0D%0A%0D%0A${d.text}` : ''}`,\n vkontakte: (d) => `https://vk.com/share.php?url=${d.url}&title=${d.title}${d.media ? `&image=${d.media}` : ''}`,\n whatsapp: (d) => `https://wa.me/?text=${d.title}%0D%0A${d.url}${d.text ? `%0D%0A%0D%0A${d.text}` : ''}`,\n};\n\nconst openUrl = (buttonUrl) => () => {\n window.open(buttonUrl, \"_blank\", \"noopener,noreferrer\");\n};\n\nconst init = () => {\n const shareonContainers = document.querySelectorAll(\".shareon\");\n\n // iterate over
\n for (const container of shareonContainers) {\n // iterate over children of
\n for (const child of container.children) {\n if (child) {\n const classListLength = child.classList.length;\n\n // iterate over classes of the child element\n for (let k = 0; k < classListLength; k += 1) {\n const cls = child.classList.item(k);\n\n // if it's one of the networks\n if (Object.prototype.hasOwnProperty.call(urlBuilderMap, cls)) {\n const preset = {\n url: encodeURIComponent(\n child.dataset.url ||\n container.dataset.url ||\n window.location.href\n ),\n title: encodeURIComponent(\n child.dataset.title || container.dataset.title || document.title\n ),\n media: encodeURIComponent(\n child.dataset.media || container.dataset.media || \"\"\n ),\n text: encodeURIComponent(\n child.dataset.text || container.dataset.text || \"\"\n ),\n via: encodeURIComponent(\n child.dataset.via || container.dataset.via || \"\"\n ),\n fbAppId: encodeURIComponent(\n child.dataset.fbAppId || container.dataset.fbAppId || \"\"\n ),\n };\n const url = urlBuilderMap[cls](preset);\n\n if (child.tagName.toLowerCase() === \"a\") {\n child.setAttribute(\"href\", url);\n child.setAttribute(\"rel\", \"noopener noreferrer\");\n child.setAttribute(\"target\", \"_blank\");\n } else {\n child.addEventListener(\"click\", openUrl(url));\n }\n\n break; // once a network is detected we don't want to check further\n }\n }\n }\n }\n }\n};\n\nexport { init };\n","import { init } from \"./shareon\";\n\nconst s = document.currentScript;\nif (s && s.hasAttribute(\"init\")) {\n init();\n}\n\nexport { init } from \"./shareon\";\n"],"names":["facebook","t","url","linkedin","mastodon","title","text","via","messenger","fbAppId","odnoklassniki","media","pinterest","pocket","reddit","telegram","twitter","viber","vkontakte","whatsapp","c","window","open","a","document","querySelectorAll","children","e","classList","length","n","u","item","Object","prototype","hasOwnProperty","call","r","l","encodeURIComponent","dataset","o","location","href","p","d","tagName","toLowerCase","setAttribute","addEventListener","s","currentScript","hasAttribute"],"mappings":"oQAgBA,QAAsB,CACpBA,SAAWC,GAAM,gDAAgDA,EAAEC,MACnEC,SAAUF,GAAO,uDAAuDA,EAAEC,MAC1EE,SAAUH,GAAO,gCAAgCA,EAAEI,cAAcJ,EAAEC,MAAMD,EAAEK,KAAO,eAAeL,EAAEK,OAAS,KAAKL,EAAEM,IAAM,eAAeN,EAAEM,MAAQ,KAClJC,UAAWP,GAAO,+CAA+CA,EAAEQ,gBAAgBR,EAAEC,oBAAoBD,EAAEC,MAC3GQ,cAAgBT,GAAM,mCAAmCA,EAAEC,aAAaD,EAAEI,QAAQJ,EAAEU,MAAQ,aAAaV,EAAEU,QAAU,KACrHC,UAAYX,GAAM,gDAAgDA,EAAEC,mBAAmBD,EAAEI,QAAQJ,EAAEU,MAAQ,UAAUV,EAAEU,QAAU,KACjIE,OAAQZ,GAAO,sCAAsCA,EAAEC,MACvDY,OAAQb,GAAO,uCAAuCA,EAAEI,aAAaJ,EAAEC,MACvEa,SAAWd,GAAM,qCAAqCA,EAAEC,MAAMD,EAAEK,KAAO,SAASL,EAAEK,OAAS,KAC3FU,QAASf,GAAO,wCAAwCA,EAAEC,YAAYD,EAAEI,QAAQJ,EAAEM,IAAM,QAAQN,EAAEM,MAAQ,KAC1GU,MAAOhB,GAAO,wBAAwBA,EAAEI,cAAcJ,EAAEC,MAAMD,EAAEK,KAAO,eAAeL,EAAEK,OAAS,KACjGY,UAAWjB,GAAO,gCAAgCA,EAAEC,aAAaD,EAAEI,QAAQJ,EAAEU,MAAQ,UAAUV,EAAEU,QAAU,KAC3GQ,SAAUlB,GAAO,uBAAuBA,EAAEI,cAAcJ,EAAEC,MAAMD,EAAEK,KAAO,eAAeL,EAAEK,OAAS,MAG/Fc,EAAUnB,GAAe,KAC7BoB,OAAOC,KAAKrB,EAAW,SAAU,wBAG7BsB,EAAO,KACX,QAA0BC,SAASC,iBAAiB,YAGpD,iBAEE,iBAA8BC,SAC5B,GAAIC,EAAO,CACT,QAAwBA,EAAMC,UAAUC,OAGxC,UAAa,EAAGC,EAAIC,EAAiBD,GAAK,EAAG,CAC3C,QAAYH,EAAMC,UAAUI,KAAKF,GAGjC,GAAIG,OAAOC,UAAUC,eAAeC,KAAKC,EAAeC,GAAM,CAC5D,QAAe,CACbpC,IAAKqC,mBACHZ,EAAMa,QAAQtC,KACZuC,EAAUD,QAAQtC,KAClBmB,OAAOqB,SAASC,MAEpBtC,MAAOkC,mBACLZ,EAAMa,QAAQnC,OAASoC,EAAUD,QAAQnC,OAASmB,SAASnB,OAE7DM,MAAO4B,mBACLZ,EAAMa,QAAQ7B,OAAS8B,EAAUD,QAAQ7B,OAAS,IAEpDL,KAAMiC,mBACJZ,EAAMa,QAAQlC,MAAQmC,EAAUD,QAAQlC,MAAQ,IAElDC,IAAKgC,mBACHZ,EAAMa,QAAQjC,KAAOkC,EAAUD,QAAQjC,KAAO,IAEhDE,QAAS8B,mBACPZ,EAAMa,QAAQ/B,SAAWgC,EAAUD,QAAQ/B,SAAW,KAGpDmC,EAAMP,EAAcC,GAAKO,GAEK,MAAhClB,EAAMmB,QAAQC,iBACVC,aAAa,OAAQJ,GAC3BjB,EAAMqB,aAAa,MAAO,uBAC1BrB,EAAMqB,aAAa,SAAU,WAE7BrB,EAAMsB,iBAAiB,QAAS7B,EAAQwB,IAG1C,UClFNM,EAAI1B,SAAS2B,cACnBD,GAASA,EAAEE,aAAa,SACtB7B"}