UNPKG

@nfps.dev/runtime

Version:

Runtime library for NFPs

65 lines 2.7 kB
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