{ "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/editortypes.ts", "../client/src/editorfield.ts", "../client/src/editorobject.ts", "../client/src/editortable.ts", "../client/src/editor.ts", "../client/src/form.ts", "../client/src/theme.ts", "../client/src/socket.ts", "../client/src/socketlog.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 = \"projectforge\";\nexport const appName = \"Project 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", "export function typeKey(t?: string) {\n if (t && t !== \"\") {\n return t;\n }\n return \"string\";\n}\n\nexport type Type = string | {\n k: string\n t: { [key: string]: unknown }\n}\n\nexport function typeToString(t: Type): string {\n if (typeof t === \"string\") {\n return t;\n }\n switch (t.k) {\n case \"enum\":\n return \"enum(\" + t.t.ref + \")\";\n case \"list\":\n return \"[]\" + typeToString(t.t.v as Type);\n default:\n return t.k;\n }\n}\n\nexport type Column = {\n key: string\n title: string\n description?: string\n type?: string\n};\n\nexport type Editor = {\n key: string\n title: string\n columns: Column[]\n textarea: HTMLTextAreaElement,\n rows: { [key: string]: unknown; }[]\n table?: Element,\n};\n", "import {type Column, typeKey} from \"./editortypes\";\n\nfunction stringInput(id: string, col: Column, x: { [p: string]: unknown }, onChange?: () => void) {\n const input = document.createElement(\"input\");\n input.name = col.key;\n input.id = id;\n const v = x[col.key];\n if (v !== null && v) {\n input.value = v.toString();\n }\n if (!onChange) {\n onChange = () => {\n x[col.key] = input.value;\n };\n }\n input.onchange = onChange;\n return input;\n}\n\nfunction boolInput(col: Column, x: { [p: string]: unknown }) {\n const vx = x[col.key];\n const v = vx !== null && (vx === \"true\" || vx === true);\n\n const div = document.createElement(\"div\");\n\n [true, false].forEach((b: boolean) => {\n const label = document.createElement(\"label\");\n div.appendChild(label);\n const input = document.createElement(\"input\");\n label.appendChild(input);\n input.name = col.key;\n input.type = \"radio\";\n input.value = b ? \"true\" : \"false\";\n input.checked = v === b;\n input.onclick = () => {\n x[col.key] = b;\n return true;\n };\n const span = document.createElement(\"span\");\n label.appendChild(span);\n span.innerText = b ? \" True \" : \" False \";\n });\n return div;\n}\n\nfunction intInput(id: string, col: Column, x: { [p: string]: unknown }) {\n const input = stringInput(id, col, x, () => {\n x[col.key] = parseInt(input.value, 10);\n });\n input.type = \"number\";\n return input;\n}\n\nfunction typeInput(id: string, col: Column, x: { [p: string]: unknown }) {\n const textarea = document.createElement(\"textarea\");\n textarea.name = col.key;\n textarea.id = id;\n textarea.value = JSON.stringify(x[col.key], null, 2);\n return textarea;\n}\n\nexport function createEditorInput(id: string, col: Column, x: { [p: string]: unknown }): HTMLElement {\n const t = typeKey(col.type);\n switch (t) {\n case \"bool\":\n return boolInput(col, x);\n case \"int\":\n return intInput(id, col, x);\n case \"type\":\n return typeInput(id, col, x);\n default:\n return stringInput(id, col, x);\n }\n}\n", "import {createEditorInput} from \"./editorfield\";\nimport type {Editor} from \"./editortypes\";\nimport {modalGetBody, modalGetOrCreate, modalSetTitle} from \"./modal\";\nimport {createTable} from \"./editortable\";\n\nfunction createEditorButtons() {\n const btns = document.createElement(\"div\");\n btns.classList.add(\"mt\");\n\n const applyBtn = document.createElement(\"button\");\n btns.appendChild(applyBtn);\n applyBtn.innerText = \"Apply\";\n applyBtn.type = \"submit\";\n\n const spacer = document.createElement(\"span\");\n btns.appendChild(spacer);\n spacer.innerText = \" \";\n\n const cancelBtn = document.createElement(\"button\");\n btns.appendChild(cancelBtn);\n cancelBtn.innerText = \"Cancel\";\n cancelBtn.type = \"button\";\n // cancelBtn.onclick = () => window.history.back();\n cancelBtn.onclick = () => {\n window.location.href = \"#\";\n };\n\n return btns;\n}\n\nfunction createEditor(e: Editor, x: { [p: string]: unknown }, onComplete: (row: { [p: string]: unknown }) => void) {\n const editCopy: {[p: string]: unknown} = JSON.parse(JSON.stringify(x));\n\n const div = document.createElement(\"div\");\n div.classList.add(\"overflow\", \"full-width\");\n\n const form = document.createElement(\"form\");\n div.appendChild(form);\n form.classList.add(\"expanded\");\n form.onsubmit = () => {\n onComplete(editCopy);\n return false;\n };\n\n const t = document.createElement(\"table\");\n form.appendChild(t);\n t.classList.add(\"min-200\", \"full-width\");\n\n const tbody = document.createElement(\"tbody\");\n t.appendChild(tbody);\n\n e.columns.forEach((col) => {\n const id = `richedit-${col.key}`;\n const tr = document.createElement(\"tr\");\n tbody.appendChild(tr);\n\n const th = document.createElement(\"th\");\n tr.appendChild(th);\n th.classList.add(\"shrink\");\n\n const label = document.createElement(\"label\");\n th.appendChild(label);\n label.htmlFor = id;\n label.innerText = col.title;\n\n const td = document.createElement(\"td\");\n tr.appendChild(td);\n\n const input = createEditorInput(id, col, editCopy);\n td.appendChild(input);\n });\n\n form.appendChild(createEditorButtons());\n\n return div;\n}\n\nfunction onEditComplete(e: Editor, idx: number, row: { [p: string]: unknown }) {\n e.rows[idx] = row;\n e.textarea.value = JSON.stringify(e.rows, null, 2);\n if (e.table) {\n e.table.replaceWith(createTable(e));\n }\n window.location.href = \"#\";\n}\n\nexport function rowEditHandler(idx: number, e: Editor, x: { [p: string]: unknown }) {\n return () => {\n const modal = modalGetOrCreate(\"rich-editor\", \"Rich Editor\");\n modalSetTitle(modal, \"Editing Row\");\n const onComplete = (row: { [p: string]: unknown }) => {\n onEditComplete(e, idx, row);\n };\n const objectEditor = createEditor(e, x, onComplete);\n modalGetBody(modal).replaceChildren(objectEditor);\n window.location.href = \"#modal-rich-editor\";\n };\n}\n", "import {rowEditHandler} from \"./editorobject\";\nimport {type Column, type Editor, type Type, typeToString} from \"./editortypes\";\n\nfunction createTableHead(cols: Column[]): HTMLElement {\n const thead = document.createElement(\"thead\");\n const r = document.createElement(\"tr\");\n let first = true;\n cols.forEach((col) => {\n const c = document.createElement(\"th\");\n if (first) {\n c.classList.add(\"shrink\");\n first = false;\n }\n c.innerText = col.title;\n r.appendChild(c);\n });\n thead.appendChild(r);\n return thead;\n}\n\nfunction createTableCell(col: Column, v: unknown): HTMLElement {\n const c = document.createElement(\"td\");\n if (v === undefined || v === null) {\n const em = document.createElement(\"em\");\n em.innerText = \"-\";\n c.appendChild(em);\n } else if (col.type === \"code\" || col.type === \"json\") {\n const pre = document.createElement(\"pre\");\n pre.innerText = JSON.stringify(v, null, 2);\n c.appendChild(pre);\n } else if (col.type === \"type\") {\n if (typeof v === \"string\") {\n c.innerText = v;\n } else {\n c.innerText = typeToString(v as Type);\n }\n } else {\n c.innerText = v.toString();\n }\n return c;\n}\n\nfunction createTableRow(e: Editor, idx: number, x: { [key: string]: unknown; }): HTMLElement {\n const r = document.createElement(\"tr\");\n r.dataset.index = idx.toString();\n e.columns.forEach((col) => {\n const c = createTableCell(col, x[col.key]);\n r.appendChild(c);\n });\n r.onclick = rowEditHandler(idx, e, x);\n return r;\n}\n\nexport function createTable(e: Editor): HTMLElement {\n const tbl = document.createElement(\"table\");\n e.table = tbl;\n tbl.classList.add(\"min-200\");\n tbl.appendChild(createTableHead(e.columns));\n const tbody = document.createElement(\"tbody\");\n e.rows.forEach((row, idx) => {\n const tr = createTableRow(e, idx, row);\n tbody.appendChild(tr);\n });\n tbl.appendChild(tbody);\n\n const div = document.createElement(\"div\");\n div.classList.add(\"overflow\");\n div.classList.add(\"full-width\");\n div.appendChild(tbl);\n return div;\n}\n", "import {els, req} from \"./dom\";\nimport {createTable} from \"./editortable\";\nimport type {Column, Editor} from \"./editortypes\";\n\nconst rawLabel = \"Raw JSON\";\n\nfunction extractEditor(el: HTMLElement) {\n const key = el.dataset.key ?? \"editor\";\n const title = el.dataset.title ?? \"Object\";\n const columnsStr = el.dataset.columns ?? \"[]\";\n const columns: Column[] = JSON.parse(columnsStr.replace(/\\\\\"/gu, \"\\\"\"));\n\n const inp: HTMLTextAreaElement = req(\"textarea\", el);\n let curr: { [key: string]: unknown; }[] = JSON.parse(inp.value);\n if (curr === undefined || curr === null) {\n curr = [];\n }\n if (!Array.isArray(curr)) {\n throw new Error(\"input value for element [\" + key + \"] of type [\" + typeof curr + \"] must be an array\");\n }\n inp.hidden = true;\n\n const e: Editor = {key: key, title: title, columns: columns, textarea: inp, rows: curr};\n\n const tbl = createTable(e);\n el.appendChild(tbl);\n\n return e;\n}\n\nfunction editorShow(el: HTMLElement, e: Editor) {\n els(\".toggle-editor-\" + e.key).forEach((toggle) => {\n toggle.innerText = rawLabel;\n });\n e.rows = JSON.parse(e.textarea.value);\n if (e.rows === undefined || e.rows === null) {\n e.rows = [];\n }\n e.table?.remove();\n createTable(e);\n if (e.table) {\n el.appendChild(e.table);\n }\n e.textarea.hidden = true;\n}\n\nfunction editorHide(e: Editor, editorLabel: string) {\n els(\".toggle-editor-\" + e.key).forEach((toggle) => {\n toggle.innerText = editorLabel;\n });\n e.table?.remove();\n e.textarea.value = JSON.stringify(e.rows, null, 2);\n e.textarea.hidden = false;\n}\n\nfunction wireToggles(el: HTMLElement, e: Editor) {\n els(\".toggle-editor-\" + e.key).forEach((toggle) => {\n if (toggle.innerText === \"\") {\n toggle.innerText = \"Editor\";\n }\n const editorLabel = toggle.innerText;\n toggle.innerText = rawLabel;\n toggle.style.display = \"inline\";\n toggle.onclick = () => {\n if (toggle.innerText === rawLabel) {\n editorHide(e, editorLabel);\n } else {\n editorShow(el, e);\n }\n };\n });\n}\n\nexport function createEditor(el: HTMLElement): void {\n const e = extractEditor(el);\n wireToggles(el, e);\n}\n\nexport function editorInit() {\n els(\".rich-editor\").forEach((x) => {\n createEditor(x);\n });\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", "let appUnloading = false;\n\nexport type Message = {\n readonly channel: string;\n readonly cmd: string;\n readonly param: { [key: string]: unknown };\n}\n\nfunction socketUrl(u?: string) {\n if (!u) {\n u = \"/connect\";\n }\n if (u.indexOf(\"ws\") === 0) {\n return u;\n }\n const l = document.location;\n let protocol = \"ws\";\n if (l.protocol === \"https:\") {\n protocol = \"wss\";\n }\n if (u.indexOf(\"/\") !== 0) {\n u = \"/\" + u;\n }\n return protocol + `://${l.host}${u}`;\n}\n\nexport class Socket {\n readonly debug: boolean;\n private readonly open: () => void;\n private readonly recv: (m: Message) => void;\n private readonly err: (svc: string, err: string) => void;\n readonly url?: string;\n connected: boolean;\n pauseSeconds: number;\n pendingMessages: Message[];\n connectTime?: number;\n closed?: boolean;\n sock?: WebSocket;\n\n constructor(debug: boolean, o: () => void, r: (m: Message) => void, e: (svc: string, err: string) => void, url?: string) {\n this.debug = debug;\n this.open = o;\n this.recv = r;\n this.err = e;\n this.url = socketUrl(url);\n this.connected = false;\n this.pauseSeconds = 1;\n this.pendingMessages = [];\n\n this.connect();\n }\n\n connect() {\n window.onbeforeunload = () => {\n appUnloading = true;\n };\n this.connectTime = Date.now();\n this.sock = new WebSocket(socketUrl(this.url));\n const s = this; // eslint-disable-line @typescript-eslint/no-this-alias\n this.sock.onopen = () => {\n s.connected = true;\n s.pendingMessages.forEach(s.send);\n s.pendingMessages = [];\n if (s.debug) {\n console.log(\"WebSocket connected\");\n }\n s.open();\n };\n this.sock.onmessage = (event) => {\n const msg = JSON.parse(event.data) as Message;\n if (s.debug) {\n console.debug(\"[socket]: receive\", msg);\n }\n if (msg.cmd === \"close-connection\") {\n s.disconnect();\n } else {\n s.recv(msg);\n }\n };\n this.sock.onerror = (event) => () => {\n s.err(\"socket\", event.type);\n };\n this.sock.onclose = () => {\n if (appUnloading || s.closed) {\n return;\n }\n s.connected = false;\n const elapsed = s.connectTime ? Date.now() - s.connectTime : 0;\n if (elapsed > 0 && elapsed < 2000) {\n s.pauseSeconds = s.pauseSeconds * 2;\n if (s.debug) {\n console.debug(`socket closed immediately, reconnecting in ${s.pauseSeconds} seconds`);\n }\n setTimeout(() => {\n s.connect();\n }, s.pauseSeconds * 1000);\n } else {\n console.debug(\"socket closed after [\" + elapsed + \"ms]\");\n setTimeout(() => {\n s.connect();\n }, s.pauseSeconds * 500);\n }\n };\n }\n\n disconnect() {\n this.closed = true;\n setTimeout(() => {\n this.sock?.close();\n console.debug(\"[socket] closed\");\n }, 500);\n }\n\n send(msg: Message) {\n if (this.debug) {\n console.debug(\"out\", msg);\n }\n if (!this.sock) {\n throw new Error(\"socket not initialized\");\n }\n if (this.connected) {\n const m = JSON.stringify(msg, null, 2);\n this.sock.send(m);\n } else {\n this.pendingMessages.push(msg);\n }\n }\n}\n\nexport function socketInit() {\n return Socket;\n}\n", "import {Message, Socket} from \"./socket\";\nimport {req} from \"./dom\";\n\nexport function socketLog(debug: boolean, parentEl: HTMLElement, terminal: boolean, url: string, extraHandlers: Array<(m: Message) => void>) {\n const o = () => {\n if (debug) {\n console.log(\"[socket]: open\");\n }\n };\n\n const newRow = () => {\n if (terminal) {\n const row = document.createElement(\"tr\");\n const numTH = document.createElement(\"th\");\n numTH.innerText = parentEl.children.length.toString();\n const textTD = document.createElement(\"td\");\n row.append(numTH, textTD);\n parentEl.append(row);\n return textTD;\n }\n const div = document.createElement(\"div\");\n parentEl.append(div);\n return div;\n };\n\n let currRow: HTMLElement | null = null;\n const r = (m: Message) => {\n if (m.cmd !== \"output\") {\n if (extraHandlers.length === 0) {\n console.log(\"unknown command [\" + m.cmd + \"] received\");\n } else {\n for (const h of extraHandlers) {\n h(m);\n }\n }\n return;\n }\n if (m.param.html === undefined) {\n console.log(\"no [html] key in message param: \" + JSON.stringify(m, null, 2));\n }\n const html = m.param.html as string[];\n\n let content = \"\";\n for (const x of html) {\n if (!currRow) {\n currRow = newRow();\n }\n if (x === \"\\n\") {\n if (content === \"\") {\n content = \" \";\n }\n currRow!.innerHTML += content;\n content = \"\";\n currRow = null;\n } else {\n content += x;\n }\n }\n if (currRow) {\n currRow.innerHTML += content;\n }\n const c = req(\"#content\");\n c.scrollTo(0, c.scrollHeight);\n };\n\n const e = (svc: string, err: string) => {\n console.error(\"socket error\", svc, err);\n };\n\n return new Socket(false, o, r, e, url);\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 {editorInit} from \"./editor\";\nimport {formInit} from \"./form\";\nimport {themeInit} from \"./theme\";\nimport {Message, socketInit} from \"./socket\";\nimport {socketLog} from \"./socketlog\";\nimport {appInit} from \"./app\";\n\ndeclare global {\n interface Window { // eslint-disable-line @typescript-eslint/consistent-type-definitions\n \"projectforge\": {\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 Socket: unknown;\n socketLog: (debug: boolean, parentEl: HTMLElement, terminal: boolean, url: string, extraHandlers: Array<(m: Message) => void>) => 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.projectforge = {\n wireTime: wireTime,\n relativeTime: relativeTime,\n autocomplete: autocompleteInit(),\n setSiblingToNull: s,\n initForm: i,\n flash: flashInit(),\n tags: tagsInit(),\n Socket: socketInit(),\n socketLog: socketLog\n };\n menuInit();\n modeInit();\n linkInit();\n modalInit();\n themeInit();\n editorInit();\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,SAAS,GAAI,CACX,IAAMH,EAAIX,EAAG,MACb,GAAIW,EAAE,SAAW,EACf,OAEF,IAAMC,EAAOF,EAAOC,CAAC,EACjBI,EAAmB,CAACJ,GAAK,CAACF,EAC9B,GAAI,CAACM,EAAS,CACZ,IAAMC,EAAIR,EAAMC,CAAS,EACrBO,IACFD,EAAU,CAACC,EAAE,KAAK,KAAMC,GAAMN,IAAMP,EAAIa,CAAC,CAAC,EAE9C,CACA,GAAKF,EAGL,IAAIP,EAAMG,CAAC,GAAKH,EAAMG,CAAC,EAAE,MAAQC,EAAM,CACrCC,EAAeF,CAAC,EAChB,MACF,CAEA,MAAMC,EAAM,CAAC,YAAa,SAAS,CAAC,EAAE,KAAMM,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,EAAInB,EAAIgB,EAAIH,CAAC,CAAC,EACdO,GAAIrB,EAAMiB,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,CACAd,EAAMG,CAAC,EAAI,CAAC,IAAKC,EAAM,KAAMQ,EAAK,KAAMC,EAAM,SAAU,EAAK,EAC7DR,EAAeF,CAAC,CAClB,CAAC,EACH,CAEAX,EAAG,QAAUN,GAAS,EAAG,GAAG,EAC5B,QAAQ,IAAI,aAAeM,EAAG,GAAK,gBAAgB,CACrD,CAEO,SAAS0B,GAAmB,CACjC,OAAO3B,EACT,CCzGO,SAAS4B,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,CACO,SAASC,GAASC,EAAaC,EAAe,CACnD,IAAMJ,EAAK,SAAS,cAAc,KAAK,EACvCA,EAAG,UAAU,IAAI,OAAO,EACxBA,EAAG,GAAK,SAAWG,EACnBH,EAAG,MAAM,QAAU,OAEnB,IAAMK,EAAW,SAAS,cAAc,GAAG,EAC3CA,EAAS,UAAU,IAAI,UAAU,EACjCA,EAAS,KAAO,IAChBL,EAAG,YAAYK,CAAQ,EAEvB,IAAMC,EAAU,SAAS,cAAc,KAAK,EAC5CA,EAAQ,UAAU,IAAI,eAAe,EACrCN,EAAG,YAAYM,CAAO,EAEtB,IAAMC,EAAK,SAAS,cAAc,KAAK,EACvCA,EAAG,UAAU,IAAI,cAAc,EAC/BD,EAAQ,YAAYC,CAAE,EAEtB,IAAMC,EAAU,SAAS,cAAc,GAAG,EAC1CA,EAAQ,UAAU,IAAI,aAAa,EACnCA,EAAQ,KAAO,IACfA,EAAQ,UAAY,OACpBD,EAAG,YAAYC,CAAO,EAEtB,IAAMC,EAAU,SAAS,cAAc,IAAI,EAC3CA,EAAQ,UAAYL,EACpBG,EAAG,YAAYE,CAAO,EAEtB,IAAMC,EAAK,SAAS,cAAc,KAAK,EACvC,OAAAA,EAAG,UAAU,IAAI,YAAY,EAC7BJ,EAAQ,YAAYI,CAAE,EAEtB,SAAS,KAAK,YAAYV,CAAE,EACrBA,CACT,CAEO,SAASW,EAAiBR,EAAaC,EAA4B,CACxE,IAAMJ,EAAK,SAAS,eAAe,SAAWG,CAAG,EACjD,GAAIH,EAAI,CAEN,GADeA,EAAG,uBAAuB,YAAY,EAC1C,SAAW,EACpB,MAAM,IAAI,MAAM,2BAA2B,EAE7C,OAAOA,CACT,CACA,OAAOE,GAASC,EAAKC,CAAK,CAC5B,CAEO,SAASQ,GAAaC,EAAgB,CAC3C,IAAMC,EAASD,EAAE,uBAAuB,YAAY,EACpD,GAAIC,EAAO,SAAW,EACpB,MAAM,IAAI,MAAM,2BAA2B,EAE7C,OAAOA,EAAO,CAAC,CACjB,CAEO,SAASC,GAAeF,EAAgB,CAC7C,IAAMC,EAASD,EAAE,uBAAuB,cAAc,EACtD,GAAIC,EAAO,SAAW,EACpB,MAAM,IAAI,MAAM,6BAA6B,EAE/C,OAAOA,EAAO,CAAC,CACjB,CAEO,SAASE,GAAcH,EAAgBT,EAAe,CAE3D,IAAMa,EADKF,GAAeF,CAAC,EACd,qBAAqB,IAAI,EACtC,GAAII,EAAE,SAAW,EACf,MAAM,IAAI,MAAM,4BAA4B,EAE9CA,EAAE,CAAC,EAAE,UAAYb,CACnB,CCvFO,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,GAASD,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,GAAWC,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,GAASQ,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,GAAW,GAAIf,CAAQ,EACtCyB,EAAe,YAAYjB,CAAM,EACjCC,GAASD,CAAM,CACjB,CAEO,SAASkB,GAAStB,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,GAAWC,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,IAAW,CACzB,QAAW9B,KAAMD,EAAI,aAAa,EAChCuB,GAAStB,CAAE,EAEb,OAAOsB,EACT,CCvJO,SAASS,GAAQC,EAAY,CAClC,OAAIA,GAAKA,IAAM,GACNA,EAEF,QACT,CAOO,SAASC,EAAaD,EAAiB,CAC5C,GAAI,OAAOA,GAAM,SACf,OAAOA,EAET,OAAQA,EAAE,EAAG,CACX,IAAK,OACH,MAAO,QAAUA,EAAE,EAAE,IAAM,IAC7B,IAAK,OACH,MAAO,KAAOC,EAAaD,EAAE,EAAE,CAAS,EAC1C,QACE,OAAOA,EAAE,CACb,CACF,CCtBA,SAASE,GAAYC,EAAYC,EAAaC,EAA6BC,EAAuB,CAChG,IAAMC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,KAAOH,EAAI,IACjBG,EAAM,GAAKJ,EACX,IAAMK,EAAIH,EAAED,EAAI,GAAG,EACnB,OAAII,IAAM,MAAQA,IAChBD,EAAM,MAAQC,EAAE,SAAS,GAEtBF,IACHA,EAAW,IAAM,CACfD,EAAED,EAAI,GAAG,EAAIG,EAAM,KACrB,GAEFA,EAAM,SAAWD,EACVC,CACT,CAEA,SAASE,GAAUL,EAAaC,EAA6B,CAC3D,IAAMK,EAAKL,EAAED,EAAI,GAAG,EACdI,EAAIE,IAAO,OAASA,IAAO,QAAUA,IAAO,IAE5CC,EAAM,SAAS,cAAc,KAAK,EAExC,OAAC,GAAM,EAAK,EAAE,QAASC,GAAe,CACpC,IAAMC,EAAQ,SAAS,cAAc,OAAO,EAC5CF,EAAI,YAAYE,CAAK,EACrB,IAAMN,EAAQ,SAAS,cAAc,OAAO,EAC5CM,EAAM,YAAYN,CAAK,EACvBA,EAAM,KAAOH,EAAI,IACjBG,EAAM,KAAO,QACbA,EAAM,MAAQK,EAAI,OAAS,QAC3BL,EAAM,QAAUC,IAAMI,EACtBL,EAAM,QAAU,KACdF,EAAED,EAAI,GAAG,EAAIQ,EACN,IAET,IAAME,EAAO,SAAS,cAAc,MAAM,EAC1CD,EAAM,YAAYC,CAAI,EACtBA,EAAK,UAAYF,EAAI,SAAW,SAClC,CAAC,EACMD,CACT,CAEA,SAASI,GAASZ,EAAYC,EAAaC,EAA6B,CACtE,IAAME,EAAQL,GAAYC,EAAIC,EAAKC,EAAG,IAAM,CAC1CA,EAAED,EAAI,GAAG,EAAI,SAASG,EAAM,MAAO,EAAE,CACvC,CAAC,EACD,OAAAA,EAAM,KAAO,SACNA,CACT,CAEA,SAASS,GAAUb,EAAYC,EAAaC,EAA6B,CACvE,IAAMY,EAAW,SAAS,cAAc,UAAU,EAClD,OAAAA,EAAS,KAAOb,EAAI,IACpBa,EAAS,GAAKd,EACdc,EAAS,MAAQ,KAAK,UAAUZ,EAAED,EAAI,GAAG,EAAG,KAAM,CAAC,EAC5Ca,CACT,CAEO,SAASC,GAAkBf,EAAYC,EAAaC,EAA0C,CAEnG,OADUc,GAAQf,EAAI,IAAI,EACf,CACT,IAAK,OACH,OAAOK,GAAUL,EAAKC,CAAC,EACzB,IAAK,MACH,OAAOU,GAASZ,EAAIC,EAAKC,CAAC,EAC5B,IAAK,OACH,OAAOW,GAAUb,EAAIC,EAAKC,CAAC,EAC7B,QACE,OAAOH,GAAYC,EAAIC,EAAKC,CAAC,CACjC,CACF,CCpEA,SAASe,IAAsB,CAC7B,IAAMC,EAAO,SAAS,cAAc,KAAK,EACzCA,EAAK,UAAU,IAAI,IAAI,EAEvB,IAAMC,EAAW,SAAS,cAAc,QAAQ,EAChDD,EAAK,YAAYC,CAAQ,EACzBA,EAAS,UAAY,QACrBA,EAAS,KAAO,SAEhB,IAAMC,EAAS,SAAS,cAAc,MAAM,EAC5CF,EAAK,YAAYE,CAAM,EACvBA,EAAO,UAAY,IAEnB,IAAMC,EAAY,SAAS,cAAc,QAAQ,EACjD,OAAAH,EAAK,YAAYG,CAAS,EAC1BA,EAAU,UAAY,SACtBA,EAAU,KAAO,SAEjBA,EAAU,QAAU,IAAM,CACxB,OAAO,SAAS,KAAO,GACzB,EAEOH,CACT,CAEA,SAASI,GAAa,EAAWC,EAA6BC,EAAqD,CACjH,IAAMC,EAAmC,KAAK,MAAM,KAAK,UAAUF,CAAC,CAAC,EAE/DG,EAAM,SAAS,cAAc,KAAK,EACxCA,EAAI,UAAU,IAAI,WAAY,YAAY,EAE1C,IAAMC,EAAO,SAAS,cAAc,MAAM,EAC1CD,EAAI,YAAYC,CAAI,EACpBA,EAAK,UAAU,IAAI,UAAU,EAC7BA,EAAK,SAAW,KACdH,EAAWC,CAAQ,EACZ,IAGT,IAAMG,EAAI,SAAS,cAAc,OAAO,EACxCD,EAAK,YAAYC,CAAC,EAClBA,EAAE,UAAU,IAAI,UAAW,YAAY,EAEvC,IAAMC,EAAQ,SAAS,cAAc,OAAO,EAC5C,OAAAD,EAAE,YAAYC,CAAK,EAEnB,EAAE,QAAQ,QAASC,GAAQ,CACzB,IAAMC,EAAK,YAAYD,EAAI,GAAG,GACxBE,EAAK,SAAS,cAAc,IAAI,EACtCH,EAAM,YAAYG,CAAE,EAEpB,IAAMC,EAAK,SAAS,cAAc,IAAI,EACtCD,EAAG,YAAYC,CAAE,EACjBA,EAAG,UAAU,IAAI,QAAQ,EAEzB,IAAMC,EAAQ,SAAS,cAAc,OAAO,EAC5CD,EAAG,YAAYC,CAAK,EACpBA,EAAM,QAAUH,EAChBG,EAAM,UAAYJ,EAAI,MAEtB,IAAMK,EAAK,SAAS,cAAc,IAAI,EACtCH,EAAG,YAAYG,CAAE,EAEjB,IAAMC,EAAQC,GAAkBN,EAAID,EAAKL,CAAQ,EACjDU,EAAG,YAAYC,CAAK,CACtB,CAAC,EAEDT,EAAK,YAAYV,GAAoB,CAAC,EAE/BS,CACT,CAEA,SAASY,GAAe,EAAWC,EAAaC,EAA+B,CAC7E,EAAE,KAAKD,CAAG,EAAIC,EACd,EAAE,SAAS,MAAQ,KAAK,UAAU,EAAE,KAAM,KAAM,CAAC,EAC7C,EAAE,OACJ,EAAE,MAAM,YAAYC,EAAY,CAAC,CAAC,EAEpC,OAAO,SAAS,KAAO,GACzB,CAEO,SAASC,GAAeH,EAAaI,EAAWpB,EAA6B,CAClF,MAAO,IAAM,CACX,IAAMqB,EAAQC,EAAiB,cAAe,aAAa,EAC3DC,GAAcF,EAAO,aAAa,EAIlC,IAAMG,EAAezB,GAAaqB,EAAGpB,EAHjBiB,GAAkC,CACpDF,GAAeK,EAAGJ,EAAKC,CAAG,CAC5B,CACkD,EAClDQ,GAAaJ,CAAK,EAAE,gBAAgBG,CAAY,EAChD,OAAO,SAAS,KAAO,oBACzB,CACF,CC9FA,SAASE,GAAgBC,EAA6B,CACpD,IAAMC,EAAQ,SAAS,cAAc,OAAO,EACtCC,EAAI,SAAS,cAAc,IAAI,EACjCC,EAAQ,GACZ,OAAAH,EAAK,QAASI,GAAQ,CACpB,IAAMC,EAAI,SAAS,cAAc,IAAI,EACjCF,IACFE,EAAE,UAAU,IAAI,QAAQ,EACxBF,EAAQ,IAEVE,EAAE,UAAYD,EAAI,MAClBF,EAAE,YAAYG,CAAC,CACjB,CAAC,EACDJ,EAAM,YAAYC,CAAC,EACZD,CACT,CAEA,SAASK,GAAgBF,EAAaG,EAAyB,CAC7D,IAAMF,EAAI,SAAS,cAAc,IAAI,EACrC,GAAuBE,GAAM,KAAM,CACjC,IAAMC,EAAK,SAAS,cAAc,IAAI,EACtCA,EAAG,UAAY,IACfH,EAAE,YAAYG,CAAE,CAClB,SAAWJ,EAAI,OAAS,QAAUA,EAAI,OAAS,OAAQ,CACrD,IAAMK,EAAM,SAAS,cAAc,KAAK,EACxCA,EAAI,UAAY,KAAK,UAAUF,EAAG,KAAM,CAAC,EACzCF,EAAE,YAAYI,CAAG,CACnB,MAAWL,EAAI,OAAS,OAClB,OAAOG,GAAM,SACfF,EAAE,UAAYE,EAEdF,EAAE,UAAYK,EAAaH,CAAS,EAGtCF,EAAE,UAAYE,EAAE,SAAS,EAE3B,OAAOF,CACT,CAEA,SAASM,GAAe,EAAWC,EAAaC,EAA6C,CAC3F,IAAMX,EAAI,SAAS,cAAc,IAAI,EACrC,OAAAA,EAAE,QAAQ,MAAQU,EAAI,SAAS,EAC/B,EAAE,QAAQ,QAASR,GAAQ,CACzB,IAAMC,EAAIC,GAAgBF,EAAKS,EAAET,EAAI,GAAG,CAAC,EACzCF,EAAE,YAAYG,CAAC,CACjB,CAAC,EACDH,EAAE,QAAUY,GAAeF,EAAK,EAAGC,CAAC,EAC7BX,CACT,CAEO,SAASa,EAAY,EAAwB,CAClD,IAAMC,EAAM,SAAS,cAAc,OAAO,EAC1C,EAAE,MAAQA,EACVA,EAAI,UAAU,IAAI,SAAS,EAC3BA,EAAI,YAAYjB,GAAgB,EAAE,OAAO,CAAC,EAC1C,IAAMkB,EAAQ,SAAS,cAAc,OAAO,EAC5C,EAAE,KAAK,QAAQ,CAACC,EAAKN,IAAQ,CAC3B,IAAMO,EAAKR,GAAe,EAAGC,EAAKM,CAAG,EACrCD,EAAM,YAAYE,CAAE,CACtB,CAAC,EACDH,EAAI,YAAYC,CAAK,EAErB,IAAMG,EAAM,SAAS,cAAc,KAAK,EACxC,OAAAA,EAAI,UAAU,IAAI,UAAU,EAC5BA,EAAI,UAAU,IAAI,YAAY,EAC9BA,EAAI,YAAYJ,CAAG,EACZI,CACT,CClEA,IAAMC,EAAW,WAEjB,SAASC,GAAcC,EAAiB,CACtC,IAAMC,EAAMD,EAAG,QAAQ,KAAO,SACxBE,EAAQF,EAAG,QAAQ,OAAS,SAC5BG,EAAaH,EAAG,QAAQ,SAAW,KACnCI,EAAoB,KAAK,MAAMD,EAAW,QAAQ,QAAS,GAAI,CAAC,EAEhEE,EAA2BC,EAAyB,WAAYN,CAAE,EACpEO,EAAsC,KAAK,MAAMF,EAAI,KAAK,EAI9D,GAH0BE,GAAS,OACjCA,EAAO,CAAC,GAEN,CAAC,MAAM,QAAQA,CAAI,EACrB,MAAM,IAAI,MAAM,4BAA8BN,EAAM,cAAgB,OAAOM,EAAO,oBAAoB,EAExGF,EAAI,OAAS,GAEb,IAAMG,EAAY,CAAC,IAAKP,EAAK,MAAOC,EAAO,QAASE,EAAS,SAAUC,EAAK,KAAME,CAAI,EAEhFE,EAAMC,EAAYF,CAAC,EACzB,OAAAR,EAAG,YAAYS,CAAG,EAEXD,CACT,CAEA,SAASG,GAAWX,EAAiBQ,EAAW,CAC9CI,EAAI,kBAAoBJ,EAAE,GAAG,EAAE,QAASK,GAAW,CACjDA,EAAO,UAAYf,CACrB,CAAC,EACDU,EAAE,KAAO,KAAK,MAAMA,EAAE,SAAS,KAAK,GAChCA,EAAE,OAAS,QAAaA,EAAE,OAAS,QACrCA,EAAE,KAAO,CAAC,GAEZA,EAAE,OAAO,OAAO,EAChBE,EAAYF,CAAC,EACTA,EAAE,OACJR,EAAG,YAAYQ,EAAE,KAAK,EAExBA,EAAE,SAAS,OAAS,EACtB,CAEA,SAASM,GAAW,EAAWC,EAAqB,CAClDH,EAAI,kBAAoB,EAAE,GAAG,EAAE,QAASC,GAAW,CACjDA,EAAO,UAAYE,CACrB,CAAC,EACD,EAAE,OAAO,OAAO,EAChB,EAAE,SAAS,MAAQ,KAAK,UAAU,EAAE,KAAM,KAAM,CAAC,EACjD,EAAE,SAAS,OAAS,EACtB,CAEA,SAASC,GAAYhB,EAAiBQ,EAAW,CAC/CI,EAAI,kBAAoBJ,EAAE,GAAG,EAAE,QAASK,GAAW,CAC7CA,EAAO,YAAc,KACvBA,EAAO,UAAY,UAErB,IAAME,EAAcF,EAAO,UAC3BA,EAAO,UAAYf,EACnBe,EAAO,MAAM,QAAU,SACvBA,EAAO,QAAU,IAAM,CACjBA,EAAO,YAAcf,EACvBgB,GAAWN,EAAGO,CAAW,EAEzBJ,GAAWX,EAAIQ,CAAC,CAEpB,CACF,CAAC,CACH,CAEO,SAASS,GAAajB,EAAuB,CAClD,IAAMQ,EAAIT,GAAcC,CAAE,EAC1BgB,GAAYhB,EAAIQ,CAAC,CACnB,CAEO,SAASU,IAAa,CAC3BN,EAAI,cAAc,EAAE,QAASO,GAAM,CACjCF,GAAaE,CAAC,CAChB,CAAC,CACH,CChFA,IAAMC,GAAW,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,EAAQ,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,EAAQ,EAC1CU,IACFA,EAAG,QAAUJ,EAAYE,EAAM,IAAI,IAAMA,EAAM,MAEnD,EACAA,EAAM,SAAWC,EACjBD,EAAM,QAAUC,CAClB,CAEJ,CACF,CAEO,SAASE,IAAwE,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,CCtFA,IAAIQ,GAAe,GAQnB,SAASC,GAAUC,EAAY,CAI7B,GAHKA,IACHA,EAAI,YAEFA,EAAE,QAAQ,IAAI,IAAM,EACtB,OAAOA,EAET,IAAMC,EAAI,SAAS,SACfC,EAAW,KACf,OAAID,EAAE,WAAa,WACjBC,EAAW,OAETF,EAAE,QAAQ,GAAG,IAAM,IACrBA,EAAI,IAAMA,GAELE,EAAW,MAAMD,EAAE,IAAI,GAAGD,CAAC,EACpC,CAEO,IAAMG,EAAN,KAAa,CAalB,YAAYC,EAAgBC,EAAeC,EAAyBC,EAAuCC,EAAc,CACvH,KAAK,MAAQJ,EACb,KAAK,KAAOC,EACZ,KAAK,KAAOC,EACZ,KAAK,IAAMC,EACX,KAAK,IAAMR,GAAUS,CAAG,EACxB,KAAK,UAAY,GACjB,KAAK,aAAe,EACpB,KAAK,gBAAkB,CAAC,EAExB,KAAK,QAAQ,CACf,CAEA,SAAU,CACR,OAAO,eAAiB,IAAM,CAC5BV,GAAe,EACjB,EACA,KAAK,YAAc,KAAK,IAAI,EAC5B,KAAK,KAAO,IAAI,UAAUC,GAAU,KAAK,GAAG,CAAC,EAC7C,IAAMU,EAAI,KACV,KAAK,KAAK,OAAS,IAAM,CACvBA,EAAE,UAAY,GACdA,EAAE,gBAAgB,QAAQA,EAAE,IAAI,EAChCA,EAAE,gBAAkB,CAAC,EACjBA,EAAE,OACJ,QAAQ,IAAI,qBAAqB,EAEnCA,EAAE,KAAK,CACT,EACA,KAAK,KAAK,UAAaC,GAAU,CAC/B,IAAMC,EAAM,KAAK,MAAMD,EAAM,IAAI,EAC7BD,EAAE,OACJ,QAAQ,MAAM,oBAAqBE,CAAG,EAEpCA,EAAI,MAAQ,mBACdF,EAAE,WAAW,EAEbA,EAAE,KAAKE,CAAG,CAEd,EACA,KAAK,KAAK,QAAWD,GAAU,IAAM,CACnCD,EAAE,IAAI,SAAUC,EAAM,IAAI,CAC5B,EACA,KAAK,KAAK,QAAU,IAAM,CACxB,GAAIZ,IAAgBW,EAAE,OACpB,OAEFA,EAAE,UAAY,GACd,IAAMG,EAAUH,EAAE,YAAc,KAAK,IAAI,EAAIA,EAAE,YAAc,EACzDG,EAAU,GAAKA,EAAU,KAC3BH,EAAE,aAAeA,EAAE,aAAe,EAC9BA,EAAE,OACJ,QAAQ,MAAM,8CAA8CA,EAAE,YAAY,UAAU,EAEtF,WAAW,IAAM,CACfA,EAAE,QAAQ,CACZ,EAAGA,EAAE,aAAe,GAAI,IAExB,QAAQ,MAAM,wBAA0BG,EAAU,KAAK,EACvD,WAAW,IAAM,CACfH,EAAE,QAAQ,CACZ,EAAGA,EAAE,aAAe,GAAG,EAE3B,CACF,CAEA,YAAa,CACX,KAAK,OAAS,GACd,WAAW,IAAM,CACf,KAAK,MAAM,MAAM,EACjB,QAAQ,MAAM,iBAAiB,CACjC,EAAG,GAAG,CACR,CAEA,KAAKE,EAAc,CAIjB,GAHI,KAAK,OACP,QAAQ,MAAM,MAAOA,CAAG,EAEtB,CAAC,KAAK,KACR,MAAM,IAAI,MAAM,wBAAwB,EAE1C,GAAI,KAAK,UAAW,CAClB,IAAME,EAAI,KAAK,UAAUF,EAAK,KAAM,CAAC,EACrC,KAAK,KAAK,KAAKE,CAAC,CAClB,MACE,KAAK,gBAAgB,KAAKF,CAAG,CAEjC,CACF,EAEO,SAASG,IAAa,CAC3B,OAAOX,CACT,CChIO,SAASY,GAAUC,EAAgBC,EAAuBC,EAAmBC,EAAaC,EAA4C,CAC3I,IAAMC,EAAI,IAAM,CACVL,GACF,QAAQ,IAAI,gBAAgB,CAEhC,EAEMM,EAAS,IAAM,CACnB,GAAIJ,EAAU,CACZ,IAAMK,EAAM,SAAS,cAAc,IAAI,EACjCC,EAAQ,SAAS,cAAc,IAAI,EACzCA,EAAM,UAAYP,EAAS,SAAS,OAAO,SAAS,EACpD,IAAMQ,EAAS,SAAS,cAAc,IAAI,EAC1C,OAAAF,EAAI,OAAOC,EAAOC,CAAM,EACxBR,EAAS,OAAOM,CAAG,EACZE,CACT,CACA,IAAMC,EAAM,SAAS,cAAc,KAAK,EACxC,OAAAT,EAAS,OAAOS,CAAG,EACZA,CACT,EAEIC,EAA8B,KAC5BC,EAAKC,GAAe,CACxB,GAAIA,EAAE,MAAQ,SAAU,CACtB,GAAIT,EAAc,SAAW,EAC3B,QAAQ,IAAI,oBAAsBS,EAAE,IAAM,YAAY,MAEtD,SAAWC,KAAKV,EACdU,EAAED,CAAC,EAGP,MACF,CACIA,EAAE,MAAM,OAAS,QACnB,QAAQ,IAAI,mCAAqC,KAAK,UAAUA,EAAG,KAAM,CAAC,CAAC,EAE7E,IAAME,EAAOF,EAAE,MAAM,KAEjBG,EAAU,GACd,QAAWC,KAAKF,EACTJ,IACHA,EAAUL,EAAO,GAEfW,IAAM;AAAA,GACJD,IAAY,KACdA,EAAU,UAEZL,EAAS,WAAaK,EACtBA,EAAU,GACVL,EAAU,MAEVK,GAAWC,EAGXN,IACFA,EAAQ,WAAaK,GAEvB,IAAME,EAAIC,EAAI,UAAU,EACxBD,EAAE,SAAS,EAAGA,EAAE,YAAY,CAC9B,EAEME,EAAI,CAACC,EAAaC,IAAgB,CACtC,QAAQ,MAAM,eAAgBD,EAAKC,CAAG,CACxC,EAEA,OAAO,IAAIC,EAAO,GAAOlB,EAAGO,EAAGQ,EAAGjB,CAAG,CACvC,CClCO,SAASqB,IAAa,CAC3B,GAAM,CAACC,EAAGC,CAAC,EAAIC,GAAS,EAClB,CAACC,EAAUC,CAAY,EAAIC,EAAS,EAC1C,OAAO,aAAe,CACpB,SAAUF,EACV,aAAcC,EACd,aAAcE,EAAiB,EAC/B,iBAAkBN,EAClB,SAAUC,EACV,MAAOM,EAAU,EACjB,KAAMC,GAAS,EACf,OAAQC,GAAW,EACnB,UAAWC,EACb,EACAC,EAAS,EACTC,EAAS,EACTC,EAAS,EACTC,EAAU,EACVC,GAAU,EACVC,GAAW,EACX,OAAO,MAAQC,EACf,OAAO,IAAMC,CAEf,CAEA,SAAS,iBAAiB,mBAAoBnB,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", "proceed", "l", "d", "res", "data", "arr", "frag", "optMax", "v", "t", "option", "autocompleteInit", "modalInit", "event", "els", "el", "ev", "modalNew", "key", "title", "backdrop", "content", "hd", "hdClose", "hdTitle", "bd", "modalGetOrCreate", "modalGetBody", "m", "bodies", "modalGetHeader", "modalSetTitle", "t", "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", "typeKey", "t", "typeToString", "stringInput", "id", "col", "x", "onChange", "input", "v", "boolInput", "vx", "div", "b", "label", "span", "intInput", "typeInput", "textarea", "createEditorInput", "typeKey", "createEditorButtons", "btns", "applyBtn", "spacer", "cancelBtn", "createEditor", "x", "onComplete", "editCopy", "div", "form", "t", "tbody", "col", "id", "tr", "th", "label", "td", "input", "createEditorInput", "onEditComplete", "idx", "row", "createTable", "rowEditHandler", "e", "modal", "modalGetOrCreate", "modalSetTitle", "objectEditor", "modalGetBody", "createTableHead", "cols", "thead", "r", "first", "col", "c", "createTableCell", "v", "em", "pre", "typeToString", "createTableRow", "idx", "x", "rowEditHandler", "createTable", "tbl", "tbody", "row", "tr", "div", "rawLabel", "extractEditor", "el", "key", "title", "columnsStr", "columns", "inp", "req", "curr", "e", "tbl", "createTable", "editorShow", "els", "toggle", "editorHide", "editorLabel", "wireToggles", "createEditor", "editorInit", "x", "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", "appUnloading", "socketUrl", "u", "l", "protocol", "Socket", "debug", "o", "r", "e", "url", "s", "event", "msg", "elapsed", "m", "socketInit", "socketLog", "debug", "parentEl", "terminal", "url", "extraHandlers", "o", "newRow", "row", "numTH", "textTD", "div", "currRow", "r", "m", "h", "html", "content", "x", "c", "req", "e", "svc", "err", "Socket", "init", "s", "i", "formInit", "wireTime", "relativeTime", "timeInit", "autocompleteInit", "flashInit", "tagsInit", "socketInit", "socketLog", "menuInit", "modeInit", "linkInit", "modalInit", "themeInit", "editorInit", "audit", "JSX"] }