Add building of .d.ts
parent
e501c0b5bb
commit
0fd35925b5
|
@ -4,24 +4,20 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {{
|
* Social networks with their URL building functions.
|
||||||
|
*
|
||||||
|
* The format of this object is a map of strings (social networks' names) to the
|
||||||
|
* respective URL building functions. Such functions takes an object with the
|
||||||
|
* metadata of the page and returns the built URL.
|
||||||
|
*
|
||||||
|
* @type {{ [network: string]: (d: {
|
||||||
* url: string,
|
* url: string,
|
||||||
* title?: string,
|
* title?: string,
|
||||||
* media?: string,
|
* media?: string,
|
||||||
* text?: string,
|
* text?: string,
|
||||||
* via?: string,
|
* via?: string,
|
||||||
* fbAppId?: string,
|
* fbAppId?: string
|
||||||
* }} PublicationData
|
* }) => string}}
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {function(PublicationData): string} UrlBuilder
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of social networks available to shareon
|
|
||||||
*
|
|
||||||
* @type {Record<string, UrlBuilder>}
|
|
||||||
*/
|
*/
|
||||||
const URL_BUILDERS = {
|
const URL_BUILDERS = {
|
||||||
facebook: (d) => `https://www.facebook.com/sharer/sharer.php?u=${d.url}`,
|
facebook: (d) => `https://www.facebook.com/sharer/sharer.php?u=${d.url}`,
|
||||||
|
@ -39,7 +35,14 @@ const URL_BUILDERS = {
|
||||||
whatsapp: (d) => `https://wa.me/?text=${d.title}%0D%0A${d.url}${d.text ? `%0D%0A%0D%0A${d.text}` : ''}`,
|
whatsapp: (d) => `https://wa.me/?text=${d.title}%0D%0A${d.url}${d.text ? `%0D%0A%0D%0A${d.text}` : ''}`,
|
||||||
};
|
};
|
||||||
|
|
||||||
const populate = () => {
|
/**
|
||||||
|
* Populates shareon buttons with correct URLs.
|
||||||
|
*
|
||||||
|
* This function generates the sharing URL for every share button and embeds
|
||||||
|
* them into the elements. For <a> elements, it updates the "href" attribute.
|
||||||
|
* For others, it sets a "click" listener.
|
||||||
|
*/
|
||||||
|
const shareon = () => {
|
||||||
const shareonContainers = document.getElementsByClassName('shareon');
|
const shareonContainers = document.getElementsByClassName('shareon');
|
||||||
|
|
||||||
// iterate over <div class="shareon">
|
// iterate over <div class="shareon">
|
||||||
|
@ -115,6 +118,6 @@ const populate = () => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
window.addEventListener('load', populate);
|
window.addEventListener('load', shareon);
|
||||||
|
|
||||||
export default populate;
|
export default shareon;
|
||||||
|
|
12
package.json
12
package.json
|
@ -22,23 +22,26 @@
|
||||||
"url": "https://karamoff.dev"
|
"url": "https://karamoff.dev"
|
||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./shareon.legacy.js",
|
"main": "shareon.legacy.js",
|
||||||
"module": "./shareon.js",
|
"module": "shareon.js",
|
||||||
"exports": {
|
"exports": {
|
||||||
"import": "./shareon.js"
|
"import": "./shareon.js"
|
||||||
},
|
},
|
||||||
|
"types": "shareon.d.ts",
|
||||||
"files": [
|
"files": [
|
||||||
"shareon.css",
|
"shareon.css",
|
||||||
"shareon.css.map",
|
"shareon.css.map",
|
||||||
"shareon.js",
|
"shareon.js",
|
||||||
"shareon.js.map",
|
"shareon.js.map",
|
||||||
"shareon.legacy.js",
|
"shareon.legacy.js",
|
||||||
"shareon.legacy.js.map"
|
"shareon.legacy.js.map",
|
||||||
|
"shareon.d.ts"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build-js": "esbuild lib/shareon.js --format=esm --minify --outfile=shareon.js --sourcemap --target=es6",
|
"build-js": "esbuild lib/shareon.js --format=esm --minify --outfile=shareon.js --sourcemap --target=es6",
|
||||||
"build-legacy-js": "esbuild lib/shareon.js --format=iife --minify --outfile=shareon.legacy.js --sourcemap --target=es6 --global-name=shareon",
|
"build-legacy-js": "esbuild lib/shareon.js --format=iife --minify --outfile=shareon.legacy.js --sourcemap --target=es6 --global-name=shareon",
|
||||||
"build-css": "postcss lib/shareon.css --map --output shareon.css",
|
"build-css": "postcss lib/shareon.css --map --output shareon.css",
|
||||||
|
"build-types": "tsc lib/shareon.js --declaration --allowJs --emitDeclarationOnly --outDir .",
|
||||||
"build": "run-p build-*",
|
"build": "run-p build-*",
|
||||||
"lint": "eslint lib",
|
"lint": "eslint lib",
|
||||||
"release": "np",
|
"release": "np",
|
||||||
|
@ -60,7 +63,8 @@
|
||||||
"postcss-calc": "^8.0.0",
|
"postcss-calc": "^8.0.0",
|
||||||
"postcss-cli": "^8.3.1",
|
"postcss-cli": "^8.3.1",
|
||||||
"postcss-css-variables": "^0.18.0",
|
"postcss-css-variables": "^0.18.0",
|
||||||
"size-limit": "^5.0.1"
|
"size-limit": "^5.0.1",
|
||||||
|
"typescript": "^4.3.5"
|
||||||
},
|
},
|
||||||
"size-limit": [
|
"size-limit": [
|
||||||
{
|
{
|
||||||
|
|
|
@ -6037,6 +6037,11 @@ typedarray@^0.0.6:
|
||||||
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||||
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
||||||
|
|
||||||
|
typescript@^4.3.5:
|
||||||
|
version "4.3.5"
|
||||||
|
resolved "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4"
|
||||||
|
integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==
|
||||||
|
|
||||||
unbox-primitive@^1.0.1:
|
unbox-primitive@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
|
resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
|
||||||
|
|
Loading…
Reference in New Issue