atriusmaps-node-sdk
Version:
This project provides an API to Atrius Personal Wayfinder maps within a Node environment. See the README.md for more information
49 lines (37 loc) • 1.57 kB
JavaScript
;
const $ = (expr, container) => (typeof expr === 'string' ? (container || document).querySelector(expr) : expr || null);
const $$ = (expr, container) => Array.prototype.slice.call((document).querySelectorAll(expr));
// adds an element (default: div) defined in eConf to parent element (default: body) - returns element
// i.e.
// const newDiv = ad() = creates a new div, adds to end of page and returns it
// const newDiv = ad({klass: "foo"}) = same as above with class of "foo"
// const newImg = ad({tag: "img", src: "test.png"}, "#top") = image at end of top
function ad(eConf, parent) {
const c = eConf || {};
parent = parent ? (typeof parent === 'string' ? document.querySelector(parent) : parent) : document.body;
let tag = 'div';
if (c.tag) tag = c.tag;
const node = document.createElement(tag);
for (const cc in c) {
if (c[cc] != null)
if (cc === 'klass')
// null or undefined
node.setAttribute('class', c.klass);
else if (cc === 'tag'); // already swallowed this
else if (cc === 'styles') setStyles(node, c.styles);
else if (cc === 'text') node.textContent = c.text;
else if (cc === 'html') node.innerHTML = c.html;
else node.setAttribute(cc, c[cc]);
}
parent.appendChild(node);
return node;
}
const del = element => element?.parentNode?.removeChild(element);
const setStyles = (node, styles) => {
for (const style in styles) node.style[style] = styles[style];
};
exports.$ = $;
exports.$$ = $$;
exports.ad = ad;
exports.del = del;
exports.setStyles = setStyles;