@nfps.dev/runtime
Version:
Runtime library for NFPs
65 lines • 2.7 kB
JavaScript
import { base64_to_buffer, buffer_to_base64 } from '@blake.regalia/belt';
import { safe_json } from '@solar-republic/neutrino';
import { get, set } from 'idb-keyval';
import { P_NS_HTML, P_NS_SVG } from './constants';
/**
* Typed querySelector
* @param dm_node
* @param sq_selector
* @returns
*/
export const qs = (dm_node, sq_selector) => dm_node?.querySelector(sq_selector);
/**
* Typed querySelectorAll
* @param dm_node
* @param sq_selector
* @returns
*/
export const qsa = (dm_node, sq_selector) => Array.from(dm_node?.querySelectorAll(sq_selector) || []);
// export const create_element_ns = <
// p_ns extends DocumentNamespace=typeof P_NS_SVG,
// h_set extends DocumentNamespaceMap[p_ns]=A.Cast<SVGElementTagNameMap, DocumentNamespaceMap[p_ns]>,
// si_tag extends Extract<keyof h_set, string>=Extract<keyof h_set, string>,
// >(si_tag: si_tag, p_ns?: p_ns): h_set[si_tag] => document.createElementNS(p_ns || P_NS_SVG, si_tag) as h_set[si_tag];
const creator = (p_ns) => (si_tag, h_attrs, a_children) => {
// const dm_elmt = create_element_ns(si_tag, p_ns);
const dm_elmt = document.createElementNS(p_ns, si_tag);
// set attributes
for (const si_attr in h_attrs || {}) {
// event listener
if ('_' === si_attr[0]) {
const z_arg = h_attrs[si_attr];
dm_elmt.addEventListener(si_attr.slice(1), ...Array.isArray(z_arg) ? z_arg : [h_attrs[si_attr]]);
}
else {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
dm_elmt.setAttribute(si_attr, h_attrs[si_attr]);
}
}
// add children
dm_elmt.append(...a_children || []);
// return element
return dm_elmt;
};
/* eslint-disable @typescript-eslint/naming-convention */
export const create_svg = creator(P_NS_SVG);
export const create_html = creator(P_NS_HTML);
/* eslint-enable */
/* eslint-disable no-sequences */
export const ls_read = (si_key) => localStorage.getItem(si_key);
export const ls_write = (si_key, s_value) => (localStorage.setItem(si_key, s_value),
s_value);
export const ls_read_json = (si_key) => safe_json(ls_read(si_key) || '');
export const ls_write_json = (si_key, w_value) => (ls_write(si_key, JSON.stringify(w_value)),
w_value);
export const ls_read_b64 = (si_key) => {
const s_value = ls_read(si_key);
return null === s_value ? s_value : base64_to_buffer(s_value);
};
export const ls_write_b64 = (si_key, atu8_data) => (ls_write(si_key, buffer_to_base64(atu8_data)),
atu8_data);
export const idb_read = get;
export const idb_write = async (w_key, w_value) => (await set(w_key, w_value),
w_value);
/* eslint-enable */
//# sourceMappingURL=dom.js.map