{ "version": 3, "sources": ["../client/src/dom.ts", "../client/src/jsx.ts", "../client/src/audit.ts", "../client/src/menu.ts", "../client/src/mode.ts", "../client/src/flash.ts", "../client/src/link.ts", "../client/src/time.ts", "../client/src/autocomplete.ts", "../client/src/modal.ts", "../client/src/util.ts", "../client/src/tags.ts", "../client/src/form.ts", "../client/src/theme.ts", "../client/src/client.ts"], "sourcesContent": ["export function els(selector: string, context?: Element): readonly T[] {\n let result: NodeListOf;\n if (context) {\n result = context.querySelectorAll(selector);\n } else {\n result = document.querySelectorAll(selector);\n }\n const ret: T[] = [];\n result.forEach((v) => {\n ret.push(v as T);\n });\n return ret;\n}\n\nexport function opt(selector: string, context?: Element): T | undefined {\n const e = els(selector, context);\n switch (e.length) {\n case 0:\n return undefined;\n case 1:\n return e[0];\n default:\n console.warn(`found [${e.length}] elements with selector [${selector}], wanted zero or one`);\n }\n}\n\nexport function req(selector: string, context?: Element): T {\n const res = opt(selector, context);\n if (!res) {\n throw new Error(`no element found for selector [${selector}]`);\n }\n return res;\n}\n\nexport function setHTML(el: string | HTMLElement, html: string) {\n if (typeof el === \"string\") {\n el = req(el);\n }\n el.innerHTML = html;\n return el;\n}\n\nexport function setDisplay(el: string | HTMLElement, condition: boolean, v = \"block\") {\n if (typeof el === \"string\") {\n el = req(el);\n }\n\n el.style.display = condition ? v : \"none\";\n return el;\n}\n\nexport function clear(el: string | HTMLElement) {\n return setHTML(el, \"\");\n}\n\nexport function setText(el: string | HTMLElement, text: string): HTMLElement {\n if (typeof el === \"string\") {\n el = req(el);\n }\n el.innerText = text;\n return el;\n}\n", "import {setHTML} from \"./dom\";\n\ndeclare global {\n namespace JSX { // eslint-disable-line @typescript-eslint/no-namespace, no-shadow\n type IntrinsicElements = {\n [elemName: string]: unknown;\n }\n }\n}\n\n// noinspection JSUnusedGlobalSymbols\nexport function JSX(tag: string, attrs: any[], ...args: Node[]) { // eslint-disable-line @typescript-eslint/no-explicit-any\n const e = document.createElement(tag);\n for (let name in attrs) {\n if (name === \"for\") {\n name = \"for\";\n }\n if (name === \"className\") {\n name = \"class\";\n }\n if (name && attrs.hasOwnProperty(name)) { // eslint-disable-line no-prototype-builtins\n const v = attrs[name];\n if (name === \"dangerouslySetInnerHTML\") {\n setHTML(e, v.__html); // eslint-disable-line no-underscore-dangle\n } else if (v === true) {\n e.setAttribute(name, name);\n } else if (v !== false && v !== null && v !== undefined) {\n e.setAttribute(name, v.toString());\n }\n }\n }\n for (let child of args) {\n if (Array.isArray(child)) {\n child.forEach((c) => {\n if (child === undefined || child === null) {\n throw new Error(`child array for tag [${tag}] is ${child}\\n${e.outerHTML}`);\n }\n if (c === undefined || c === null) {\n throw new Error(`child for tag [${tag}] is ${c}\\n${e.outerHTML}`);\n }\n if (typeof c === \"string\") {\n c = document.createTextNode(c);\n }\n e.appendChild(c);\n });\n } else if (child === undefined || child === null) {\n throw new Error(`child for tag [${tag}] is ${child}\\n${e.outerHTML}`);\n } else {\n if (!child.nodeType) {\n child = document.createTextNode(child.toString());\n }\n e.appendChild(child);\n }\n }\n return e;\n}\n", "import {opt} from \"./dom\";\n\nfunction renderAudit(msg: string, ...codes: unknown[]) {\n const li = document.createElement(\"li\");\n li.innerText = msg;\n for (const code of codes) {\n const pre = document.createElement(\"pre\");\n if (typeof code === \"string\") {\n pre.innerText = code;\n } else {\n pre.innerText = JSON.stringify(code, null, 2);\n }\n li.appendChild(pre);\n }\n return li;\n}\n\nexport function audit(msg: string, ...codes: any) { // eslint-disable-line @typescript-eslint/no-explicit-any\n const el = opt(\"#audit-log\");\n if (el) {\n el.appendChild(renderAudit(msg, ...codes));\n } else {\n console.log(\"### Audit ###\\n\" + msg, ...codes);\n }\n}\n", "import {els} from \"./dom\";\n\nexport function menuInit() {\n for (const n of els(\".menu-container .final\")) {\n n.scrollIntoView({block: \"center\"});\n }\n}\n", "import {els} from \"./dom\";\n\nconst l = \"mode-light\";\nconst d = \"mode-dark\";\n\nexport function modeInit() {\n for (const el of els(\".mode-input\")) {\n el.onclick = () => {\n switch (el.value) {\n case \"\":\n document.body.classList.remove(l);\n document.body.classList.remove(d);\n break;\n case \"light\":\n document.body.classList.add(l);\n document.body.classList.remove(d);\n break;\n case \"dark\":\n document.body.classList.remove(l);\n document.body.classList.add(d);\n break;\n }\n };\n }\n}\n", "function fade(el: HTMLElement) {\n setTimeout(() => {\n el.style.opacity = \"0\";\n setTimeout(() => el.remove(), 500);\n }, 5000);\n}\n\nexport function flashCreate(key: string, level: \"success\" | \"error\", msg: string) {\n let container = document.getElementById(\"flash-container\");\n if (container === null) {\n container = document.createElement(\"div\");\n container.id = \"flash-container\";\n document.body.insertAdjacentElement(\"afterbegin\", container);\n }\n const fl = document.createElement(\"div\");\n fl.className = \"flash\";\n\n const radio = document.createElement(\"input\");\n radio.type = \"radio\";\n radio.style.display = \"none\";\n radio.id = \"hide-flash-\" + key;\n fl.appendChild(radio);\n\n const label = document.createElement(\"label\");\n label.htmlFor = \"hide-flash-\" + key;\n const close = document.createElement(\"span\");\n close.innerHTML = \"\u00D7\";\n label.appendChild(close);\n fl.appendChild(label);\n\n const content = document.createElement(\"div\");\n content.className = \"content flash-\" + level;\n content.innerText = msg;\n fl.appendChild(content);\n\n container.appendChild(fl);\n fade(fl);\n}\n\nexport function flashInit() {\n const container = document.getElementById(\"flash-container\");\n if (container === null) {\n return flashCreate;\n }\n const x = container.querySelectorAll(\".flash\");\n if (x.length > 0) {\n for (const f of x) {\n fade(f);\n }\n }\n return flashCreate;\n}\n", "import {els} from \"./dom\";\n\nexport function linkInit() {\n for (const el of els(\".link-confirm\")) {\n el.onclick = () => {\n let msg = el.dataset.message as string;\n if (msg && msg.length === 0) {\n msg = \"Are you sure?\";\n }\n return confirm(msg);\n };\n }\n}\n", "import {els} from \"./dom\";\n\nexport function utc(date: Date) {\n const u = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\n return new Date(u).toISOString().substring(0, 19).replace(\"T\", \" \");\n}\n\nexport function wireTime(el: HTMLElement) {\n const tsStr = el.dataset.timestamp;\n if (!tsStr) {\n console.log(\"invalid timestamp [\" + tsStr + \"]\", el);\n return;\n }\n const ts = new Date(tsStr);\n\n const tsEl = document.createElement(\"span\");\n tsEl.title = ts.toISOString();\n if (el.classList.contains(\"millis\")) {\n tsEl.innerText = ts.toISOString();\n } else {\n tsEl.innerText = ts.toLocaleString();\n }\n el.replaceChildren(tsEl);\n}\n\nexport function relativeTime(el: HTMLElement): string {\n const timestamp = el.dataset.timestamp;\n const str = (timestamp || \"\").replace(/-/gu, \"/\").replace(/[TZ]/gu, \" \") + \" UTC\";\n const date = new Date(str);\n const diff = (new Date().getTime() - date.getTime()) / 1000;\n const dayDiff = Math.floor(diff / 86400);\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const day = date.getDate();\n\n if (isNaN(dayDiff) || dayDiff < 0 || dayDiff >= 31) {\n return year.toString() + \"-\" + (month < 10 ? \"0\" + month.toString() : month.toString()) + \"-\" + (day < 10 ? \"0\" + day.toString() : day.toString());\n }\n\n let ret: string;\n let timeoutSeconds: number;\n if (dayDiff === 0) {\n if (diff < 5) {\n timeoutSeconds = 1;\n ret = \"just now\";\n } else if (diff < 60) {\n timeoutSeconds = 1;\n ret = Math.floor(diff) + \" seconds ago\";\n } else if (diff < 120) {\n timeoutSeconds = 10;\n ret = \"1 minute ago\";\n } else if (diff < 3600) {\n timeoutSeconds = 30;\n ret = Math.floor(diff / 60) + \" minutes ago\";\n } else if (diff < 7200) {\n timeoutSeconds = 60;\n ret = \"1 hour ago\";\n } else {\n timeoutSeconds = 60;\n ret = Math.floor(diff / 3600) + \" hours ago\";\n }\n } else if (dayDiff === 1) {\n timeoutSeconds = 600;\n ret = \"yesterday\";\n } else if (dayDiff < 7) {\n timeoutSeconds = 600;\n ret = dayDiff + \" days ago\";\n } else {\n timeoutSeconds = 6000;\n ret = Math.ceil(dayDiff / 7) + \" weeks ago\";\n }\n if (el) {\n el.innerText = ret;\n setTimeout(() => relativeTime(el), timeoutSeconds * 1000);\n }\n return ret;\n}\n\nexport function timeInit(): [(el: HTMLElement) => void, (el: HTMLElement) => string] {\n els(\".timestamp\").forEach((el) => {\n wireTime(el);\n });\n els(\".reltime\").forEach((el) => {\n relativeTime(el);\n });\n return [wireTime, relativeTime];\n}\n", "function debounce(callback: (...args: unknown[]) => void, wait: number) {\n let timeoutId = 0;\n return (...args: unknown[]) => {\n if (timeoutId !== 0) {\n window.clearTimeout(timeoutId);\n }\n timeoutId = window.setTimeout(() => {\n callback(null, ...args);\n }, wait);\n };\n}\n\nfunction autocomplete(el: HTMLInputElement, url: string, field: string, title: (x: unknown) => string, val: (x: unknown) => string) {\n if (!el) {\n return;\n }\n const listId = el.id + \"-list\";\n const list = document.createElement(\"datalist\");\n\n const loadingOpt = document.createElement(\"option\");\n loadingOpt.value = \"\";\n loadingOpt.innerText = \"Loading...\";\n list.appendChild(loadingOpt);\n\n list.id = listId;\n el.parentElement?.prepend(list);\n\n el.setAttribute(\"autocomplete\", \"off\");\n el.setAttribute(\"list\", listId);\n\n const cache: {\n [_: string]: {\n url: string;\n complete: boolean;\n data: unknown[];\n frag: DocumentFragment;\n }\n } = {};\n let lastQuery = \"\";\n\n function getURL(q: string): string {\n const dest = url;\n if (dest.includes(\"?\")) {\n return dest + \"&t=json&\" + field + \"=\" + encodeURIComponent(q);\n }\n return dest + \"?t=json&\" + field + \"=\" + encodeURIComponent(q);\n }\n\n function datalistUpdate(q: string) {\n const c = cache[q];\n if (!c || !c.frag) {\n return;\n }\n lastQuery = q;\n list.replaceChildren(c.frag.cloneNode(true));\n }\n\n function f() {\n const q = el.value;\n if (q.length === 0) {\n return;\n }\n const dest = getURL(q);\n let proceed: boolean = !q || !lastQuery;\n if (!proceed) {\n const l = cache[lastQuery];\n if (l) {\n proceed = !l.data.find((d) => q === val(d));\n }\n }\n if (!proceed) {\n return;\n }\n if (cache[q] && cache[q].url === dest) {\n datalistUpdate(q);\n return;\n }\n\n fetch(dest, {credentials: \"include\"}).then((res) => res.json()).then((data) => {\n if (!data) {\n return;\n }\n const arr = Array.isArray(data) ? data : [data];\n const frag = document.createDocumentFragment();\n let optMax = 10;\n for (let d = 0; d < arr.length && optMax > 0; d++) {\n const v = val(arr[d]);\n const t = title(arr[d]);\n if (v) {\n const option = document.createElement(\"option\");\n option.value = v;\n option.innerText = t;\n frag.appendChild(option);\n optMax--;\n }\n }\n cache[q] = {url: dest, data: arr, frag: frag, complete: false};\n datalistUpdate(q);\n });\n }\n\n el.oninput = debounce(f, 250);\n console.log(\"managing [\" + el.id + \"] autocomplete\");\n}\n\nexport function autocompleteInit() {\n return autocomplete;\n}\n", "import {els} from \"./dom\";\n\nexport function modalInit() {\n document.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n if (document.location.hash.substring(0, 7) === \"#modal-\") {\n // document.location.hash = \"\";\n window.history.back();\n }\n }\n });\n els(\".backdrop, .modal-close\").forEach((el) => {\n el.addEventListener(\"click\", (ev) => {\n ev.preventDefault();\n window.history.back();\n });\n });\n}\nexport function modalNew(key: string, title: string) {\n const el = document.createElement(\"div\");\n el.classList.add(\"modal\");\n el.id = \"modal-\" + key;\n el.style.display = \"none\";\n\n const backdrop = document.createElement(\"a\");\n backdrop.classList.add(\"backdrop\");\n backdrop.href = \"#\";\n el.appendChild(backdrop);\n\n const content = document.createElement(\"div\");\n content.classList.add(\"modal-content\");\n el.appendChild(content);\n\n const hd = document.createElement(\"div\");\n hd.classList.add(\"modal-header\");\n content.appendChild(hd);\n\n const hdClose = document.createElement(\"a\");\n hdClose.classList.add(\"modal-close\");\n hdClose.href = \"#\";\n hdClose.innerText = \"\u00D7\";\n hd.appendChild(hdClose);\n\n const hdTitle = document.createElement(\"h2\");\n hdTitle.innerText = title;\n hd.appendChild(hdTitle);\n\n const bd = document.createElement(\"div\");\n bd.classList.add(\"modal-body\");\n content.appendChild(bd);\n\n document.body.appendChild(el);\n return el;\n}\n\nexport function modalGetOrCreate(key: string, title: string): HTMLElement {\n const el = document.getElementById(\"modal-\" + key);\n if (el) {\n const bodies = el.getElementsByClassName(\"modal-body\");\n if (bodies.length !== 1) {\n throw new Error(\"unable to find modal body\");\n }\n return el;\n }\n return modalNew(key, title);\n}\n\nexport function modalGetBody(m: HTMLElement) {\n const bodies = m.getElementsByClassName(\"modal-body\");\n if (bodies.length !== 1) {\n throw new Error(\"unable to find modal body\");\n }\n return bodies[0];\n}\n\nexport function modalGetHeader(m: HTMLElement) {\n const bodies = m.getElementsByClassName(\"modal-header\");\n if (bodies.length !== 1) {\n throw new Error(\"unable to find modal header\");\n }\n return bodies[0];\n}\n\nexport function modalSetTitle(m: HTMLElement, title: string) {\n const hd = modalGetHeader(m);\n const t = hd.getElementsByTagName(\"h2\");\n if (t.length !== 1) {\n throw new Error(\"unable to find modal title\");\n }\n t[0].innerText = title;\n}\n", "export const appKey = \"todoforge\";\nexport const appName = \"TODO Forge\";\n\nexport function svgRef(key: string, size?: number, cls?: string): string {\n if (!size) {\n size = 18;\n }\n if (cls === undefined || cls === null) {\n cls = \"icon\";\n }\n return ``;\n}\n\nexport function svg(key: string, size?: number, cls?: string) {\n return {\"__html\": svgRef(key, size, cls)};\n}\n\nexport function expandCollapse(extra?: string) {\n if (!extra) {\n extra = \"\";\n }\n const e = svgRef(\"right\", 15, \"expand-collapse\");\n return {\"__html\": e + extra};\n}\n\nexport function focusDelay(el: HTMLInputElement | HTMLTextAreaElement) {\n setTimeout(() => {\n el.setSelectionRange(el.value.length, el.value.length);\n el.focus();\n }, 100);\n return true;\n}\n", "import {els, opt, req, setDisplay} from \"./dom\";\nimport {svgRef} from \"./util\";\n\nfunction compareOrder(elem1: HTMLElement, elem2: HTMLElement) {\n if (elem1.parentElement !== elem2.parentElement) {\n return null;\n }\n if (elem1 === elem2) {\n return 0;\n }\n if (elem1.compareDocumentPosition(elem2) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return -1;\n }\n return 1;\n}\n\nlet draggedElement: HTMLElement;\n\nfunction tagsUpdate(editorEl: HTMLElement) {\n const values: string[] = [];\n const elements = els(\".item .value\", editorEl);\n for (const el of elements) {\n values.push(el.innerText);\n }\n const inputEl = req(\"input.result\", editorEl);\n inputEl.value = values.join(\", \");\n}\n\nfunction tagsRemove(itemEl: HTMLElement) {\n const editorEl = itemEl.parentElement?.parentElement;\n itemEl.remove();\n if (editorEl) {\n tagsUpdate(editorEl);\n }\n}\n\nfunction tagsEdit(itemEl: HTMLElement) {\n const value = req(\".value\", itemEl);\n const edit = req(\".editor\", itemEl);\n edit.value = value.innerText;\n const apply = () => {\n if (edit.value === \"\") {\n itemEl.remove();\n return;\n }\n value.innerText = edit.value;\n setDisplay(value, true);\n setDisplay(edit, false);\n const editorEl = itemEl.parentElement?.parentElement;\n if (editorEl) {\n tagsUpdate(editorEl);\n }\n };\n edit.onblur = apply;\n edit.onkeydown = (event) => {\n if (event.code === \"Enter\") {\n event.preventDefault();\n apply();\n return false;\n }\n };\n setDisplay(value, false);\n setDisplay(edit, true);\n edit.focus();\n}\n\nfunction tagsRender(v: string, editorEl: HTMLElement): HTMLDivElement {\n const item = document.createElement(\"div\");\n item.className = \"item\";\n item.draggable = true;\n item.ondragstart = (e) => {\n e.dataTransfer?.setDragImage(document.createElement(\"div\"), 0, 0);\n item.classList.add(\"dragging\");\n draggedElement = item;\n };\n item.ondragover = () => {\n const order = compareOrder(item, draggedElement);\n if (!order) {\n return;\n }\n const baseElement = order === -1 ? item : item.nextSibling;\n draggedElement.parentElement?.insertBefore(draggedElement, baseElement);\n tagsUpdate(editorEl);\n };\n item.ondrop = (e) => {\n e.preventDefault();\n };\n item.ondragend = (e) => {\n item.classList.remove(\"dragging\");\n e.preventDefault();\n };\n\n const value = document.createElement(\"div\");\n value.innerText = v;\n value.className = \"value\";\n value.onclick = () => {\n tagsEdit(item);\n };\n item.appendChild(value);\n\n const editor = document.createElement(\"input\");\n editor.className = \"editor\";\n item.appendChild(editor);\n\n const close = document.createElement(\"div\");\n close.innerHTML = svgRef(\"times\", 13);\n close.className = \"close\";\n close.onclick = () => {\n tagsRemove(item);\n };\n item.appendChild(close);\n\n return item;\n}\n\nfunction tagsAdd(tagContainerEl: HTMLElement, editorEl: HTMLElement) {\n const itemEl = tagsRender(\"\", editorEl);\n tagContainerEl.appendChild(itemEl);\n tagsEdit(itemEl);\n}\n\nexport function tagsWire(el: HTMLElement) {\n const input = opt(\"input.result\", el);\n if (!input) {\n return;\n }\n const tagContainer = req(\".tags\", el);\n const vals = input.value.split(\",\").map((x) => x.trim()).filter((k) => k !== \"\");\n\n setDisplay(input, false);\n tagContainer.innerHTML = \"\";\n for (const v of vals) {\n tagContainer.appendChild(tagsRender(v, el));\n }\n\n opt(\".add-item\", el)?.remove();\n\n const add = document.createElement(\"div\");\n add.className = \"add-item\";\n add.innerHTML = svgRef(\"plus\", 22);\n add.onclick = () => {\n tagsAdd(tagContainer, el);\n };\n el.insertBefore(add, req(\".clear\", el));\n}\n\nexport function tagsInit() {\n for (const el of els(\".tag-editor\")) {\n tagsWire(el);\n }\n return tagsWire;\n}\n", "import {els} from \"./dom\";\n\nconst selected = \"--selected\";\n\nexport function setSiblingToNull(el: HTMLElement) {\n const i = el.parentElement?.parentElement?.querySelector(\"input\");\n if (!i) {\n throw new Error(\"no associated input found\");\n }\n i.value = \"\u2205\";\n}\n\nexport function initForm(frm: HTMLFormElement) {\n frm.onreset = () => initForm(frm);\n const editorCache: { [key: string]: string; } = {};\n const selectedCache: { [key: string]: HTMLInputElement; } = {};\n for (const el of frm.elements) {\n const input = el as HTMLInputElement;\n if (input.name.length > 0) {\n if (input.name.endsWith(selected)) {\n selectedCache[input.name] = input;\n } else {\n if (input.type !== \"radio\" || input.checked) {\n editorCache[input.name] = input.value;\n }\n const evt = () => {\n const cv = selectedCache[input.name + selected];\n if (cv) {\n cv.checked = editorCache[input.name] !== input.value;\n }\n };\n input.onchange = evt;\n input.onkeyup = evt;\n }\n }\n }\n}\n\nexport function formInit(): [(el: HTMLElement) => void, (frm: HTMLFormElement) => void] {\n for (const n of els(\"form.editor\")) {\n initForm(n);\n }\n return [setSiblingToNull, initForm];\n}\n", "import {els} from \"./dom\";\n\nconst keys: string[] = [];\n\nfunction call(mockup: Element, sel: string, f: (el: HTMLElement) => void) {\n const q = mockup.querySelectorAll(sel);\n if (q.length === 0) {\n throw new Error(\"empty query selector [\" + sel + \"]\");\n }\n q.forEach((x) => f(x as HTMLElement));\n}\n\nfunction setBG(mockup: Element, sel: string, v: string) {\n call(mockup, sel, (el) => {\n el.style.backgroundColor = v;\n });\n}\n\nfunction setFG(mockup: Element, sel: string, v: string) {\n call(mockup, sel, (el) => {\n el.style.color = v;\n });\n}\n\nfunction set(mode: string, key: string, v: string) {\n const mockup = document.querySelector(\"#mockup-\" + mode);\n if (!mockup) {\n console.error(\"can't find mockup for mode [\" + mode + \"]\");\n return;\n }\n switch (key) {\n case \"color-foreground\":\n setFG(mockup, \".mock-main\", v);\n break;\n case \"color-background\":\n setBG(mockup, \".mock-main\", v);\n break;\n case \"color-foreground-muted\":\n setFG(mockup, \".mock-main .mock-muted\", v);\n break;\n case \"color-background-muted\":\n setBG(mockup, \".mock-main .mock-muted\", v);\n break;\n case \"color-link-foreground\":\n setFG(mockup, \".mock-main .mock-link\", v);\n break;\n case \"color-link-visited-foreground\":\n setFG(mockup, \".mock-main .mock-link-visited\", v);\n break;\n case \"color-nav-foreground\":\n setFG(mockup, \".mock-nav\", v);\n setFG(mockup, \".mock-nav .mock-link\", v);\n break;\n case \"color-nav-background\":\n setBG(mockup, \".mock-nav\", v);\n break;\n case \"color-menu-foreground\":\n setFG(mockup, \".mock-menu\", v);\n setFG(mockup, \".mock-menu .mock-link\", v);\n break;\n case \"color-menu-background\":\n setBG(mockup, \".mock-menu\", v);\n break;\n case \"color-menu-selected-foreground\":\n setFG(mockup, \".mock-menu .mock-link-selected\", v);\n break;\n case \"color-menu-selected-background\":\n setBG(mockup, \".mock-menu .mock-link-selected\", v);\n break;\n default:\n console.error(\"invalid key [\" + key + \"]\");\n }\n}\n\nexport function themeInit() {\n for (const el of els(\".color-var\")) {\n const v = el.dataset.var as string;\n const m = el.dataset.mode as string;\n keys.push(v);\n if (!v || v.length === 0) {\n continue;\n }\n el.oninput = () => {\n set(m, v, el.value);\n };\n }\n}\n", "import \"./client.css\";\nimport {JSX} from \"./jsx\";\nimport {audit} from \"./audit\";\nimport {menuInit} from \"./menu\";\nimport {modeInit} from \"./mode\";\nimport {flashInit} from \"./flash\";\nimport {linkInit} from \"./link\";\nimport {timeInit} from \"./time\";\nimport {autocompleteInit} from \"./autocomplete\";\nimport {modalInit} from \"./modal\";\nimport {tagsInit} from \"./tags\";\nimport {formInit} from \"./form\";\nimport {themeInit} from \"./theme\";\nimport {appInit} from \"./app\";\n\ndeclare global {\n interface Window { // eslint-disable-line @typescript-eslint/consistent-type-definitions\n \"todoforge\": {\n wireTime: (el: HTMLElement) => void;\n relativeTime: (el: HTMLElement) => string;\n autocomplete: (el: HTMLInputElement, url: string, field: string, title: (x: unknown) => string, val: (x: unknown) => string) => void;\n setSiblingToNull: (el: HTMLElement) => void;\n initForm: (frm: HTMLFormElement) => void;\n flash: (key: string, level: \"success\" | \"error\", msg: string) => void;\n tags: (el: HTMLElement) => void;\n };\n audit: (s: string, ...args: any) => void; // eslint-disable-line @typescript-eslint/no-explicit-any\n JSX: (tag: string, attrs: unknown[]) => HTMLElement;\n }\n}\n\nexport function init(): void {\n const [s, i] = formInit();\n const [wireTime, relativeTime] = timeInit();\n window.todoforge = {\n wireTime: wireTime,\n relativeTime: relativeTime,\n autocomplete: autocompleteInit(),\n setSiblingToNull: s,\n initForm: i,\n flash: flashInit(),\n tags: tagsInit()\n };\n menuInit();\n modeInit();\n linkInit();\n modalInit();\n themeInit();\n window.audit = audit;\n window.JSX = JSX;\n appInit();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", init);\n"], "mappings": "mBAAO,SAASA,EAA2BC,EAAkBC,EAAiC,CAC5F,IAAIC,EACAD,EACFC,EAASD,EAAQ,iBAAiBD,CAAQ,EAE1CE,EAAS,SAAS,iBAAiBF,CAAQ,EAE7C,IAAMG,EAAW,CAAC,EAClB,OAAAD,EAAO,QAASE,GAAM,CACpBD,EAAI,KAAKC,CAAM,CACjB,CAAC,EACMD,CACT,CAEO,SAASE,EAA2BL,EAAkBC,EAAkC,CAC7F,IAAMK,EAAIP,EAAOC,EAAUC,CAAO,EAClC,OAAQK,EAAE,OAAQ,CAChB,IAAK,GACH,OACF,IAAK,GACH,OAAOA,EAAE,CAAC,EACZ,QACE,QAAQ,KAAK,UAAUA,EAAE,MAAM,6BAA6BN,CAAQ,uBAAuB,CAC/F,CACF,CAEO,SAASO,EAA2BP,EAAkBC,EAAsB,CACjF,IAAMO,EAAMH,EAAOL,EAAUC,CAAO,EACpC,GAAI,CAACO,EACH,MAAM,IAAI,MAAM,kCAAkCR,CAAQ,GAAG,EAE/D,OAAOQ,CACT,CAEO,SAASC,EAAQC,EAA0BC,EAAc,CAC9D,OAAI,OAAOD,GAAO,WAChBA,EAAKH,EAAIG,CAAE,GAEbA,EAAG,UAAYC,EACRD,CACT,CAEO,SAASE,EAAWF,EAA0BG,EAAoBT,EAAI,QAAS,CACpF,OAAI,OAAOM,GAAO,WAChBA,EAAKH,EAAIG,CAAE,GAGbA,EAAG,MAAM,QAAUG,EAAYT,EAAI,OAC5BM,CACT,CCtCO,SAASI,EAAIC,EAAaC,KAAiBC,EAAc,CAC9D,IAAMC,EAAI,SAAS,cAAcH,CAAG,EACpC,QAASI,KAAQH,EAOf,GANIG,IAAS,QACXA,EAAO,OAELA,IAAS,cACXA,EAAO,SAELA,GAAQH,EAAM,eAAeG,CAAI,EAAG,CACtC,IAAMC,EAAIJ,EAAMG,CAAI,EAChBA,IAAS,0BACXE,EAAQH,EAAGE,EAAE,MAAM,EACVA,IAAM,GACfF,EAAE,aAAaC,EAAMA,CAAI,EAChBC,IAAM,IAASA,IAAM,MAAQA,IAAM,QAC5CF,EAAE,aAAaC,EAAMC,EAAE,SAAS,CAAC,CAErC,CAEF,QAASE,KAASL,EAChB,GAAI,MAAM,QAAQK,CAAK,EACrBA,EAAM,QAASC,GAAM,CACnB,GAA2BD,GAAU,KACnC,MAAM,IAAI,MAAM,wBAAwBP,CAAG,QAAQO,CAAK;AAAA,EAAKJ,EAAE,SAAS,EAAE,EAE5E,GAAuBK,GAAM,KAC3B,MAAM,IAAI,MAAM,kBAAkBR,CAAG,QAAQQ,CAAC;AAAA,EAAKL,EAAE,SAAS,EAAE,EAE9D,OAAOK,GAAM,WACfA,EAAI,SAAS,eAAeA,CAAC,GAE/BL,EAAE,YAAYK,CAAC,CACjB,CAAC,MACI,IAA2BD,GAAU,KAC1C,MAAM,IAAI,MAAM,kBAAkBP,CAAG,QAAQO,CAAK;AAAA,EAAKJ,EAAE,SAAS,EAAE,EAE/DI,EAAM,WACTA,EAAQ,SAAS,eAAeA,EAAM,SAAS,CAAC,GAElDJ,EAAE,YAAYI,CAAK,EAGvB,OAAOJ,CACT,CCrDA,SAASM,GAAYC,KAAgBC,EAAkB,CACrD,IAAMC,EAAK,SAAS,cAAc,IAAI,EACtCA,EAAG,UAAYF,EACf,QAAWG,KAAQF,EAAO,CACxB,IAAMG,EAAM,SAAS,cAAc,KAAK,EACpC,OAAOD,GAAS,SAClBC,EAAI,UAAYD,EAEhBC,EAAI,UAAY,KAAK,UAAUD,EAAM,KAAM,CAAC,EAE9CD,EAAG,YAAYE,CAAG,CACpB,CACA,OAAOF,CACT,CAEO,SAASG,EAAML,KAAgBC,EAAY,CAChD,IAAMK,EAAKC,EAAI,YAAY,EACvBD,EACFA,EAAG,YAAYP,GAAYC,EAAK,GAAGC,CAAK,CAAC,EAEzC,QAAQ,IAAI;AAAA,EAAoBD,EAAK,GAAGC,CAAK,CAEjD,CCtBO,SAASO,GAAW,CACzB,QAAWC,KAAKC,EAAI,wBAAwB,EAC1CD,EAAE,eAAe,CAAC,MAAO,QAAQ,CAAC,CAEtC,CCJA,IAAME,EAAI,aACJC,EAAI,YAEH,SAASC,GAAW,CACzB,QAAWC,KAAMC,EAAsB,aAAa,EAClDD,EAAG,QAAU,IAAM,CACjB,OAAQA,EAAG,MAAO,CAChB,IAAK,GACH,SAAS,KAAK,UAAU,OAAOH,CAAC,EAChC,SAAS,KAAK,UAAU,OAAOC,CAAC,EAChC,MACF,IAAK,QACH,SAAS,KAAK,UAAU,IAAID,CAAC,EAC7B,SAAS,KAAK,UAAU,OAAOC,CAAC,EAChC,MACF,IAAK,OACH,SAAS,KAAK,UAAU,OAAOD,CAAC,EAChC,SAAS,KAAK,UAAU,IAAIC,CAAC,EAC7B,KACJ,CACF,CAEJ,CCxBA,SAASI,EAAKC,EAAiB,CAC7B,WAAW,IAAM,CACfA,EAAG,MAAM,QAAU,IACnB,WAAW,IAAMA,EAAG,OAAO,EAAG,GAAG,CACnC,EAAG,GAAI,CACT,CAEO,SAASC,EAAYC,EAAaC,EAA4BC,EAAa,CAChF,IAAIC,EAAY,SAAS,eAAe,iBAAiB,EACrDA,IAAc,OAChBA,EAAY,SAAS,cAAc,KAAK,EACxCA,EAAU,GAAK,kBACf,SAAS,KAAK,sBAAsB,aAAcA,CAAS,GAE7D,IAAMC,EAAK,SAAS,cAAc,KAAK,EACvCA,EAAG,UAAY,QAEf,IAAMC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,KAAO,QACbA,EAAM,MAAM,QAAU,OACtBA,EAAM,GAAK,cAAgBL,EAC3BI,EAAG,YAAYC,CAAK,EAEpB,IAAMC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,QAAU,cAAgBN,EAChC,IAAMO,EAAQ,SAAS,cAAc,MAAM,EAC3CA,EAAM,UAAY,OAClBD,EAAM,YAAYC,CAAK,EACvBH,EAAG,YAAYE,CAAK,EAEpB,IAAME,EAAU,SAAS,cAAc,KAAK,EAC5CA,EAAQ,UAAY,iBAAmBP,EACvCO,EAAQ,UAAYN,EACpBE,EAAG,YAAYI,CAAO,EAEtBL,EAAU,YAAYC,CAAE,EACxBP,EAAKO,CAAE,CACT,CAEO,SAASK,GAAY,CAC1B,IAAMN,EAAY,SAAS,eAAe,iBAAiB,EAC3D,GAAIA,IAAc,KAChB,OAAOJ,EAET,IAAMW,EAAIP,EAAU,iBAA8B,QAAQ,EAC1D,GAAIO,EAAE,OAAS,EACb,QAAWC,KAAKD,EACdb,EAAKc,CAAC,EAGV,OAAOZ,CACT,CCjDO,SAASa,GAAW,CACzB,QAAWC,KAAMC,EAAI,eAAe,EAClCD,EAAG,QAAU,IAAM,CACjB,IAAIE,EAAMF,EAAG,QAAQ,QACrB,OAAIE,GAAOA,EAAI,SAAW,IACxBA,EAAM,iBAED,QAAQA,CAAG,CACpB,CAEJ,CCLO,SAASC,EAASC,EAAiB,CACxC,IAAMC,EAAQD,EAAG,QAAQ,UACzB,GAAI,CAACC,EAAO,CACV,QAAQ,IAAI,sBAAwBA,EAAQ,IAAKD,CAAE,EACnD,MACF,CACA,IAAME,EAAK,IAAI,KAAKD,CAAK,EAEnBE,EAAO,SAAS,cAAc,MAAM,EAC1CA,EAAK,MAAQD,EAAG,YAAY,EACxBF,EAAG,UAAU,SAAS,QAAQ,EAChCG,EAAK,UAAYD,EAAG,YAAY,EAEhCC,EAAK,UAAYD,EAAG,eAAe,EAErCF,EAAG,gBAAgBG,CAAI,CACzB,CAEO,SAASC,EAAaJ,EAAyB,CAEpD,IAAMK,GADYL,EAAG,QAAQ,WACH,IAAI,QAAQ,MAAO,GAAG,EAAE,QAAQ,SAAU,GAAG,EAAI,OACrEM,EAAO,IAAI,KAAKD,CAAG,EACnBE,GAAQ,IAAI,KAAK,EAAE,QAAQ,EAAID,EAAK,QAAQ,GAAK,IACjDE,EAAU,KAAK,MAAMD,EAAO,KAAK,EACjCE,EAAOH,EAAK,YAAY,EACxBI,EAAQJ,EAAK,SAAS,EAAI,EAC1BK,EAAML,EAAK,QAAQ,EAEzB,GAAI,MAAME,CAAO,GAAKA,EAAU,GAAKA,GAAW,GAC9C,OAAOC,EAAK,SAAS,EAAI,KAAOC,EAAQ,GAAK,IAAMA,EAAM,SAAS,EAAIA,EAAM,SAAS,GAAK,KAAOC,EAAM,GAAK,IAAMA,EAAI,SAAS,EAAIA,EAAI,SAAS,GAGlJ,IAAIC,EACAC,EACJ,OAAIL,IAAY,EACVD,EAAO,GACTM,EAAiB,EACjBD,EAAM,YACGL,EAAO,IAChBM,EAAiB,EACjBD,EAAM,KAAK,MAAML,CAAI,EAAI,gBAChBA,EAAO,KAChBM,EAAiB,GACjBD,EAAM,gBACGL,EAAO,MAChBM,EAAiB,GACjBD,EAAM,KAAK,MAAML,EAAO,EAAE,EAAI,gBACrBA,EAAO,MAChBM,EAAiB,GACjBD,EAAM,eAENC,EAAiB,GACjBD,EAAM,KAAK,MAAML,EAAO,IAAI,EAAI,cAEzBC,IAAY,GACrBK,EAAiB,IACjBD,EAAM,aACGJ,EAAU,GACnBK,EAAiB,IACjBD,EAAMJ,EAAU,cAEhBK,EAAiB,IACjBD,EAAM,KAAK,KAAKJ,EAAU,CAAC,EAAI,cAE7BR,IACFA,EAAG,UAAYY,EACf,WAAW,IAAMR,EAAaJ,CAAE,EAAGa,EAAiB,GAAI,GAEnDD,CACT,CAEO,SAASE,GAAqE,CACnF,OAAAC,EAAI,YAAY,EAAE,QAASf,GAAO,CAChCD,EAASC,CAAE,CACb,CAAC,EACDe,EAAI,UAAU,EAAE,QAASf,GAAO,CAC9BI,EAAaJ,CAAE,CACjB,CAAC,EACM,CAACD,EAAUK,CAAY,CAChC,CCtFA,SAASY,GAASC,EAAwCC,EAAc,CACtE,IAAIC,EAAY,EAChB,MAAO,IAAIC,IAAoB,CACzBD,IAAc,GAChB,OAAO,aAAaA,CAAS,EAE/BA,EAAY,OAAO,WAAW,IAAM,CAClCF,EAAS,KAAM,GAAGG,CAAI,CACxB,EAAGF,CAAI,CACT,CACF,CAEA,SAASG,GAAaC,EAAsBC,EAAaC,EAAeC,EAA+BC,EAA6B,CAClI,GAAI,CAACJ,EACH,OAEF,IAAMK,EAASL,EAAG,GAAK,QACjBM,EAAO,SAAS,cAAc,UAAU,EAExCC,EAAa,SAAS,cAAc,QAAQ,EAClDA,EAAW,MAAQ,GACnBA,EAAW,UAAY,aACvBD,EAAK,YAAYC,CAAU,EAE3BD,EAAK,GAAKD,EACVL,EAAG,eAAe,QAAQM,CAAI,EAE9BN,EAAG,aAAa,eAAgB,KAAK,EACrCA,EAAG,aAAa,OAAQK,CAAM,EAE9B,IAAMG,EAOF,CAAC,EACDC,EAAY,GAEhB,SAASC,EAAOC,EAAmB,CACjC,IAAMC,EAAOX,EACb,OAAIW,EAAK,SAAS,GAAG,EACZA,EAAO,WAAaV,EAAQ,IAAM,mBAAmBS,CAAC,EAExDC,EAAO,WAAaV,EAAQ,IAAM,mBAAmBS,CAAC,CAC/D,CAEA,SAASE,EAAeF,EAAW,CACjC,IAAMG,EAAIN,EAAMG,CAAC,EACb,CAACG,GAAK,CAACA,EAAE,OAGbL,EAAYE,EACZL,EAAK,gBAAgBQ,EAAE,KAAK,UAAU,EAAI,CAAC,EAC7C,CAEA,SAASC,IAAI,CACX,IAAMJ,EAAIX,EAAG,MACb,GAAIW,EAAE,SAAW,EACf,OAEF,IAAMC,EAAOF,EAAOC,CAAC,EACjBK,EAAmB,CAACL,GAAK,CAACF,EAC9B,GAAI,CAACO,EAAS,CACZ,IAAMC,EAAIT,EAAMC,CAAS,EACrBQ,IACFD,EAAU,CAACC,EAAE,KAAK,KAAMC,GAAMP,IAAMP,EAAIc,CAAC,CAAC,EAE9C,CACA,GAAKF,EAGL,IAAIR,EAAMG,CAAC,GAAKH,EAAMG,CAAC,EAAE,MAAQC,EAAM,CACrCC,EAAeF,CAAC,EAChB,MACF,CAEA,MAAMC,EAAM,CAAC,YAAa,SAAS,CAAC,EAAE,KAAMO,GAAQA,EAAI,KAAK,CAAC,EAAE,KAAMC,GAAS,CAC7E,GAAI,CAACA,EACH,OAEF,IAAMC,EAAM,MAAM,QAAQD,CAAI,EAAIA,EAAO,CAACA,CAAI,EACxCE,EAAO,SAAS,uBAAuB,EACzCC,EAAS,GACb,QAASL,EAAI,EAAGA,EAAIG,EAAI,QAAUE,EAAS,EAAGL,IAAK,CACjD,IAAMM,EAAIpB,EAAIiB,EAAIH,CAAC,CAAC,EACdO,GAAItB,EAAMkB,EAAIH,CAAC,CAAC,EACtB,GAAIM,EAAG,CACL,IAAME,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,MAAQF,EACfE,EAAO,UAAYD,GACnBH,EAAK,YAAYI,CAAM,EACvBH,GACF,CACF,CACAf,EAAMG,CAAC,EAAI,CAAC,IAAKC,EAAM,KAAMS,EAAK,KAAMC,EAAM,SAAU,EAAK,EAC7DT,EAAeF,CAAC,CAClB,CAAC,EACH,CAEAX,EAAG,QAAUN,GAASqB,GAAG,GAAG,EAC5B,QAAQ,IAAI,aAAef,EAAG,GAAK,gBAAgB,CACrD,CAEO,SAAS2B,GAAmB,CACjC,OAAO5B,EACT,CCzGO,SAAS6B,GAAY,CAC1B,SAAS,iBAAiB,UAAYC,GAAU,CAC1CA,EAAM,MAAQ,UACZ,SAAS,SAAS,KAAK,UAAU,EAAG,CAAC,IAAM,WAE7C,OAAO,QAAQ,KAAK,CAG1B,CAAC,EACDC,EAAI,yBAAyB,EAAE,QAASC,GAAO,CAC7CA,EAAG,iBAAiB,QAAUC,GAAO,CACnCA,EAAG,eAAe,EAClB,OAAO,QAAQ,KAAK,CACtB,CAAC,CACH,CAAC,CACH,CCdO,SAASC,EAAOC,EAAaC,EAAeC,EAAsB,CACvE,OAAKD,IACHA,EAAO,IAEgBC,GAAQ,OAC/BA,EAAM,QAED,eAAeA,CAAG,mBAAmBD,CAAI,eAAeA,EAAO,IAAI,4BAA4BD,CAAG,gBAC3G,CCRA,SAASG,GAAaC,EAAoBC,EAAoB,CAC5D,OAAID,EAAM,gBAAkBC,EAAM,cACzB,KAELD,IAAUC,EACL,EAELD,EAAM,wBAAwBC,CAAK,EAAI,KAAK,4BACvC,GAEF,CACT,CAEA,IAAIC,EAEJ,SAASC,EAAWC,EAAuB,CACzC,IAAMC,EAAmB,CAAC,EACpBC,EAAWC,EAAI,eAAgBH,CAAQ,EAC7C,QAAWI,KAAMF,EACfD,EAAO,KAAKG,EAAG,SAAS,EAE1B,IAAMC,EAAUC,EAAsB,eAAgBN,CAAQ,EAC9DK,EAAQ,MAAQJ,EAAO,KAAK,IAAI,CAClC,CAEA,SAASM,GAAWC,EAAqB,CACvC,IAAMR,EAAWQ,EAAO,eAAe,cACvCA,EAAO,OAAO,EACVR,GACFD,EAAWC,CAAQ,CAEvB,CAEA,SAASS,EAASD,EAAqB,CACrC,IAAME,EAAQJ,EAAI,SAAUE,CAAM,EAC5BG,EAAOL,EAAsB,UAAWE,CAAM,EACpDG,EAAK,MAAQD,EAAM,UACnB,IAAME,EAAQ,IAAM,CAClB,GAAID,EAAK,QAAU,GAAI,CACrBH,EAAO,OAAO,EACd,MACF,CACAE,EAAM,UAAYC,EAAK,MACvBE,EAAWH,EAAO,EAAI,EACtBG,EAAWF,EAAM,EAAK,EACtB,IAAMX,EAAWQ,EAAO,eAAe,cACnCR,GACFD,EAAWC,CAAQ,CAEvB,EACAW,EAAK,OAASC,EACdD,EAAK,UAAaG,GAAU,CAC1B,GAAIA,EAAM,OAAS,QACjB,OAAAA,EAAM,eAAe,EACrBF,EAAM,EACC,EAEX,EACAC,EAAWH,EAAO,EAAK,EACvBG,EAAWF,EAAM,EAAI,EACrBA,EAAK,MAAM,CACb,CAEA,SAASI,EAAWC,EAAWhB,EAAuC,CACpE,IAAMiB,EAAO,SAAS,cAAc,KAAK,EACzCA,EAAK,UAAY,OACjBA,EAAK,UAAY,GACjBA,EAAK,YAAeC,GAAM,CACxBA,EAAE,cAAc,aAAa,SAAS,cAAc,KAAK,EAAG,EAAG,CAAC,EAChED,EAAK,UAAU,IAAI,UAAU,EAC7BnB,EAAiBmB,CACnB,EACAA,EAAK,WAAa,IAAM,CACtB,IAAME,EAAQxB,GAAasB,EAAMnB,CAAc,EAC/C,GAAI,CAACqB,EACH,OAEF,IAAMC,EAAcD,IAAU,GAAKF,EAAOA,EAAK,YAC/CnB,EAAe,eAAe,aAAaA,EAAgBsB,CAAW,EACtErB,EAAWC,CAAQ,CACrB,EACAiB,EAAK,OAAUC,GAAM,CACnBA,EAAE,eAAe,CACnB,EACAD,EAAK,UAAaC,GAAM,CACtBD,EAAK,UAAU,OAAO,UAAU,EAChCC,EAAE,eAAe,CACnB,EAEA,IAAMR,EAAQ,SAAS,cAAc,KAAK,EAC1CA,EAAM,UAAYM,EAClBN,EAAM,UAAY,QAClBA,EAAM,QAAU,IAAM,CACpBD,EAASQ,CAAI,CACf,EACAA,EAAK,YAAYP,CAAK,EAEtB,IAAMW,EAAS,SAAS,cAAc,OAAO,EAC7CA,EAAO,UAAY,SACnBJ,EAAK,YAAYI,CAAM,EAEvB,IAAMC,EAAQ,SAAS,cAAc,KAAK,EAC1C,OAAAA,EAAM,UAAYC,EAAO,QAAS,EAAE,EACpCD,EAAM,UAAY,QAClBA,EAAM,QAAU,IAAM,CACpBf,GAAWU,CAAI,CACjB,EACAA,EAAK,YAAYK,CAAK,EAEfL,CACT,CAEA,SAASO,GAAQC,EAA6BzB,EAAuB,CACnE,IAAMQ,EAASO,EAAW,GAAIf,CAAQ,EACtCyB,EAAe,YAAYjB,CAAM,EACjCC,EAASD,CAAM,CACjB,CAEO,SAASkB,EAAStB,EAAiB,CACxC,IAAMuB,EAAQC,EAAsB,eAAgBxB,CAAE,EACtD,GAAI,CAACuB,EACH,OAEF,IAAME,EAAevB,EAAoB,QAASF,CAAE,EAC9C0B,EAAOH,EAAM,MAAM,MAAM,GAAG,EAAE,IAAKI,GAAMA,EAAE,KAAK,CAAC,EAAE,OAAQC,GAAMA,IAAM,EAAE,EAE/EnB,EAAWc,EAAO,EAAK,EACvBE,EAAa,UAAY,GACzB,QAAWb,KAAKc,EACdD,EAAa,YAAYd,EAAWC,EAAGZ,CAAE,CAAC,EAG5CwB,EAAI,YAAaxB,CAAE,GAAG,OAAO,EAE7B,IAAM6B,EAAM,SAAS,cAAc,KAAK,EACxCA,EAAI,UAAY,WAChBA,EAAI,UAAYV,EAAO,OAAQ,EAAE,EACjCU,EAAI,QAAU,IAAM,CAClBT,GAAQK,EAAczB,CAAE,CAC1B,EACAA,EAAG,aAAa6B,EAAK3B,EAAI,SAAUF,CAAE,CAAC,CACxC,CAEO,SAAS8B,GAAW,CACzB,QAAW9B,KAAMD,EAAI,aAAa,EAChCuB,EAAStB,CAAE,EAEb,OAAOsB,CACT,CCrJA,IAAMS,EAAW,aAEV,SAASC,GAAiBC,EAAiB,CAChD,IAAMC,EAAID,EAAG,eAAe,eAAe,cAAc,OAAO,EAChE,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,2BAA2B,EAE7CA,EAAE,MAAQ,QACZ,CAEO,SAASC,EAASC,EAAsB,CAC7CA,EAAI,QAAU,IAAMD,EAASC,CAAG,EAChC,IAAMC,EAA0C,CAAC,EAC3CC,EAAsD,CAAC,EAC7D,QAAWL,KAAMG,EAAI,SAAU,CAC7B,IAAMG,EAAQN,EACd,GAAIM,EAAM,KAAK,OAAS,EACtB,GAAIA,EAAM,KAAK,SAASR,CAAQ,EAC9BO,EAAcC,EAAM,IAAI,EAAIA,MACvB,EACDA,EAAM,OAAS,SAAWA,EAAM,WAClCF,EAAYE,EAAM,IAAI,EAAIA,EAAM,OAElC,IAAMC,EAAM,IAAM,CAChB,IAAMC,EAAKH,EAAcC,EAAM,KAAOR,CAAQ,EAC1CU,IACFA,EAAG,QAAUJ,EAAYE,EAAM,IAAI,IAAMA,EAAM,MAEnD,EACAA,EAAM,SAAWC,EACjBD,EAAM,QAAUC,CAClB,CAEJ,CACF,CAEO,SAASE,GAAwE,CACtF,QAAWC,KAAKC,EAAqB,aAAa,EAChDT,EAASQ,CAAC,EAEZ,MAAO,CAACX,GAAkBG,CAAQ,CACpC,CCzCA,IAAMU,GAAiB,CAAC,EAExB,SAASC,GAAKC,EAAiBC,EAAaC,EAA8B,CACxE,IAAMC,EAAIH,EAAO,iBAAiBC,CAAG,EACrC,GAAIE,EAAE,SAAW,EACf,MAAM,IAAI,MAAM,yBAA2BF,EAAM,GAAG,EAEtDE,EAAE,QAASC,GAAMF,EAAEE,CAAgB,CAAC,CACtC,CAEA,SAASC,EAAML,EAAiBC,EAAaK,EAAW,CACtDP,GAAKC,EAAQC,EAAMM,GAAO,CACxBA,EAAG,MAAM,gBAAkBD,CAC7B,CAAC,CACH,CAEA,SAASE,EAAMR,EAAiBC,EAAaK,EAAW,CACtDP,GAAKC,EAAQC,EAAMM,GAAO,CACxBA,EAAG,MAAM,MAAQD,CACnB,CAAC,CACH,CAEA,SAASG,GAAIC,EAAcC,EAAaL,EAAW,CACjD,IAAMN,EAAS,SAAS,cAAc,WAAaU,CAAI,EACvD,GAAI,CAACV,EAAQ,CACX,QAAQ,MAAM,+BAAiCU,EAAO,GAAG,EACzD,MACF,CACA,OAAQC,EAAK,CACX,IAAK,mBACHH,EAAMR,EAAQ,aAAcM,CAAC,EAC7B,MACF,IAAK,mBACHD,EAAML,EAAQ,aAAcM,CAAC,EAC7B,MACF,IAAK,yBACHE,EAAMR,EAAQ,yBAA0BM,CAAC,EACzC,MACF,IAAK,yBACHD,EAAML,EAAQ,yBAA0BM,CAAC,EACzC,MACF,IAAK,wBACHE,EAAMR,EAAQ,wBAAyBM,CAAC,EACxC,MACF,IAAK,gCACHE,EAAMR,EAAQ,gCAAiCM,CAAC,EAChD,MACF,IAAK,uBACHE,EAAMR,EAAQ,YAAaM,CAAC,EAC5BE,EAAMR,EAAQ,uBAAwBM,CAAC,EACvC,MACF,IAAK,uBACHD,EAAML,EAAQ,YAAaM,CAAC,EAC5B,MACF,IAAK,wBACHE,EAAMR,EAAQ,aAAcM,CAAC,EAC7BE,EAAMR,EAAQ,wBAAyBM,CAAC,EACxC,MACF,IAAK,wBACHD,EAAML,EAAQ,aAAcM,CAAC,EAC7B,MACF,IAAK,iCACHE,EAAMR,EAAQ,iCAAkCM,CAAC,EACjD,MACF,IAAK,iCACHD,EAAML,EAAQ,iCAAkCM,CAAC,EACjD,MACF,QACE,QAAQ,MAAM,gBAAkBK,EAAM,GAAG,CAC7C,CACF,CAEO,SAASC,IAAY,CAC1B,QAAWL,KAAMM,EAAsB,YAAY,EAAG,CACpD,IAAMP,EAAIC,EAAG,QAAQ,IACfO,EAAIP,EAAG,QAAQ,KACrBT,GAAK,KAAKQ,CAAC,EACP,GAACA,GAAKA,EAAE,SAAW,KAGvBC,EAAG,QAAU,IAAM,CACjBE,GAAIK,EAAGR,EAAGC,EAAG,KAAK,CACpB,EACF,CACF,CCvDO,SAASQ,IAAa,CAC3B,GAAM,CAACC,EAAGC,CAAC,EAAIC,EAAS,EAClB,CAACC,EAAUC,CAAY,EAAIC,EAAS,EAC1C,OAAO,UAAY,CACjB,SAAUF,EACV,aAAcC,EACd,aAAcE,EAAiB,EAC/B,iBAAkBN,EAClB,SAAUC,EACV,MAAOM,EAAU,EACjB,KAAMC,EAAS,CACjB,EACAC,EAAS,EACTC,EAAS,EACTC,EAAS,EACTC,EAAU,EACVC,GAAU,EACV,OAAO,MAAQC,EACf,OAAO,IAAMC,CAEf,CAEA,SAAS,iBAAiB,mBAAoBhB,EAAI", "names": ["els", "selector", "context", "result", "ret", "v", "opt", "e", "req", "res", "setHTML", "el", "html", "setDisplay", "condition", "JSX", "tag", "attrs", "args", "e", "name", "v", "setHTML", "child", "c", "renderAudit", "msg", "codes", "li", "code", "pre", "audit", "el", "opt", "menuInit", "n", "els", "l", "d", "modeInit", "el", "els", "fade", "el", "flashCreate", "key", "level", "msg", "container", "fl", "radio", "label", "close", "content", "flashInit", "x", "f", "linkInit", "el", "els", "msg", "wireTime", "el", "tsStr", "ts", "tsEl", "relativeTime", "str", "date", "diff", "dayDiff", "year", "month", "day", "ret", "timeoutSeconds", "timeInit", "els", "debounce", "callback", "wait", "timeoutId", "args", "autocomplete", "el", "url", "field", "title", "val", "listId", "list", "loadingOpt", "cache", "lastQuery", "getURL", "q", "dest", "datalistUpdate", "c", "f", "proceed", "l", "d", "res", "data", "arr", "frag", "optMax", "v", "t", "option", "autocompleteInit", "modalInit", "event", "els", "el", "ev", "svgRef", "key", "size", "cls", "compareOrder", "elem1", "elem2", "draggedElement", "tagsUpdate", "editorEl", "values", "elements", "els", "el", "inputEl", "req", "tagsRemove", "itemEl", "tagsEdit", "value", "edit", "apply", "setDisplay", "event", "tagsRender", "v", "item", "e", "order", "baseElement", "editor", "close", "svgRef", "tagsAdd", "tagContainerEl", "tagsWire", "input", "opt", "tagContainer", "vals", "x", "k", "add", "tagsInit", "selected", "setSiblingToNull", "el", "i", "initForm", "frm", "editorCache", "selectedCache", "input", "evt", "cv", "formInit", "n", "els", "keys", "call", "mockup", "sel", "f", "q", "x", "setBG", "v", "el", "setFG", "set", "mode", "key", "themeInit", "els", "m", "init", "s", "i", "formInit", "wireTime", "relativeTime", "timeInit", "autocompleteInit", "flashInit", "tagsInit", "menuInit", "modeInit", "linkInit", "modalInit", "themeInit", "audit", "JSX"] }