/* * helper.js from admiraldus * (c) 2020 admiraldus (https://github.com/admiraldus) * use for your own modules but you have to attribute to me. * under the MIT license */ 'use strict'; const PATH = require('path'); const FS = require('fs-extra'); var x$ = { sel: function(els, mode = false, base = null) { base = base === null ? document : base; return mode ? base.querySelectorAll(els) : base.querySelector(els); }, cls: { r: function(els, cls, mode = false, base = null) { base = base === null ? document : base; mode ? x$.sel(els, true).forEach((el) => el.classList.remove(cls)) : els.classList.remove(cls); }, a: function(els, cls, mode = false, base = null) { base = base === null ? document : base; mode ? x$.sel(els, true).forEach((el) => el.classList.add(cls)) : els.classList.add(cls); }, c: function(els, cls, mode = false, base = null) { base = base === null ? document : base; return mode ? x$.sel(els, true).forEach((el) => el.classList.contains(cls)) : els.classList.contains(cls); }, }, svg: function(path) { return FS.readFile(PATH.resolve(__dirname + path)); }, on: function(base, event, fn, flag = false) { base.addEventListener(event, fn, flag); }, sim: function(events, els) { events.forEach((event) => els.dispatchEvent( new MouseEvent(event, { view: window, bubbles: true, cancelable: true, buttons: 1, }))); }, obs: function(fn, els, config) { const observer = new MutationObserver(fn); observer.observe(els, config); }, clp: function(mode = true, value) { switch (mode) { case false: navigator.clipboard.writeText(value); break; case true: return navigator.clipboard.readText(); break; } }, el: function(html) { const temp = document.createElement('template'); temp.innerHTML = html.trim(); return temp.content.firstElementChild; }, }; module.exports = { x$, };