export const $ = (sel) => document.querySelector(sel);
export const create = (name = 'div') => document.createElement(name);
export const append = (child, parent = $('#root')) => parent.appendChild(child);
export const editClass = method => (name, el) => el.classList[method](name);
export const removeClass = editClass('remove');
export const addClass = editClass('add');
export const toggleClass = editClass('toggle');
export const tap = f => (a, ...rest) => (f(a, ...rest), a);
export const transitioned = f => el => new Promise(resolve =>
setTimeout(_ => {
f(el);
el.addEventListener('transitionend', () => resolve(el), { once: true });
}), 1);
export const show = transitioned(el => removeClass('hide', el));
export const delay = (time, a) => new Promise(resolve =>
setTimeout(_ => resolve(a), time)
);
export const nop = Symbol('nop');
export const race50 = async (...promises) => await Promise.race(
[
...promises,
delay(50, nop)
]
);
window.Storage.prototype.setObj = function (key, obj) {
return this.setItem(key, JSON.stringify(obj));
};
window.Storage.prototype.getObj = function (key) {
return JSON.parse(this.getItem(key));
};
export const setObjtoLocal = (k, v) => {
return window.localStorage.setObj(k, v);
};
export const getObjfromLocal = (k, v) => {
return window.localStorage.getObj(k, v);
};