vuepress-plugin-social-share
Version:
Social sharing plugin for VuePress
61 lines (60 loc) • 2.08 kB
JavaScript
/**
* @file utils
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createNetworksData = exports.inBrowser = exports.isSVG = exports.isExternalUrl = exports.isEmail = void 0;
exports.getMetaContentByName = getMetaContentByName;
const deepmerge_1 = __importDefault(require("deepmerge"));
const constants_1 = require("./constants");
const networks_1 = require("./networks");
/**
* Check if given val is valid email address
* @param val - given val
* @returns `true` if given an email address
*/
const isEmail = (val) => constants_1.RE_EMAIL.test(val);
exports.isEmail = isEmail;
/**
* Check if the given url is external
* @param url - given url
* @returns `true` is given an external url
*/
const isExternalUrl = (url) => constants_1.RE_EXTERNAL_LINK.test(url);
exports.isExternalUrl = isExternalUrl;
/**
* Check if the given source string is SVG
* @param source - given source string
* @returns `true` if given a svg source string
*/
const isSVG = (source) => constants_1.RE_SVG_SOURCE.test(source);
exports.isSVG = isSVG;
exports.inBrowser = typeof window !== 'undefined';
/**
* Return meta tag's content in browser by name
* @param name - meta tag's name
*
* @returns meta tag's content if exists, or `''`
*/
function getMetaContentByName(name) {
if (!exports.inBrowser)
return '';
const tag = document.querySelectorAll(name)[0];
if (!tag)
return '';
return tag.getAttribute('content') || '';
}
const createNetworksData = (options = {}) => {
const { email = '', extendsNetworks = {} } = options;
if ((0, exports.isEmail)(email)) {
networks_1.BASE_NETWORKS.email.sharer = networks_1.BASE_NETWORKS.email.sharer.replace('@email', email);
}
else {
delete networks_1.BASE_NETWORKS.email;
}
return (0, deepmerge_1.default)(networks_1.BASE_NETWORKS, extendsNetworks);
};
exports.createNetworksData = createNetworksData;
;