aemfed
Version:
Upload front-end changes into AEM, refresh relevant resources in the page and get instant notifications from the error.log, all for easier and faster development.
63 lines (62 loc) • 2.4 kB
JavaScript
;
((window, bs) => {
const PLUGIN_NAME = "QR Code";
if (bs) {
if (!bs.qr) {
bs.qr = printQrCode;
}
if (!window.qr) {
window.qr = printQrCode;
}
const socket = bs.socket;
socket.on("connection", options => {
const pluginOptions = getPluginOptions(options);
if (pluginOptions && pluginOptions.onload) {
printQrCode();
}
else {
console.log(`Show external QR code for current url using 'qr()' or '___browserSync___.qr()'`);
}
});
function printQrCode() {
if (!window.qrcodeTerminal) {
console.error("qrcode-terminal not yet loaded");
return;
}
const href = getExternalUrl();
qrcodeTerminal.generate(href, { small: true }, (qrcode) => {
const styling = getLogStyling(navigator);
console.log(`QR code for ${href}\n%c${qrcode}`, styling);
});
}
function getExternalUrl() {
return window.___browserSync___
? ___browserSync___.options.urls.external +
location.pathname +
location.search +
location.hash
: location.href;
}
function getLogStyling(navigator) {
const isSafari = /Safari/.test(navigator.userAgent) &&
/Apple Computer, Inc/.test(navigator.vendor);
const isEdge = /Edge/.test(navigator.userAgent) && !navigator.vendor;
const baseStyling = "font-family: 'Courier New';";
return (baseStyling +
(isSafari ? " line-height: 1em;" : isEdge ? " line-height: 1.2em;" : ""));
}
function getPluginOptions(options) {
if (!options || !options.plugins || options.plugins.length === 0) {
return;
}
function isPlugin(possiblePlugin) {
const pluginName = possiblePlugin["plugin:name"] || possiblePlugin.module["plugin:name"];
return pluginName === PLUGIN_NAME;
}
const plugin = options.plugins.find(isPlugin);
if (plugin) {
return plugin.options || plugin;
}
}
}
})(window, window.___browserSync___);