UNPKG

galhui

Version:

UI library using galho framework

804 lines 71 kB
import { G, active, clearEvent, delay, div, g, getAll, isE, onfocusout, svg, toSVG, wrap } from "galho"; import { orray, range } from "galho/orray.js"; import { call, def, isA, isF, isN, isP, isS, l, t } from "galho/util.js"; import { anim } from "./util.js"; export const icons = {}; /**settings */ export const $ = { // c: "_", delay: 500, rem: 16 }; /**words */ export const w = {}; export function word(key) { return key; } export function sentence(format) { const exp = /\{\w+\}/; format.replace(exp, (v) => w[v.slice(1, v.length - 1)]); } export const body = () => new G(document.body); export const doc = () => new G(document); /**selector for element that can gain focus*/ export const focusable = ":not(:disabled):is(a[href],button,input,textarea,select,[tabindex])"; export function icon(d, s) { if (d) { if (isS(d)) d = { d }; else if (isE(d)) return d.c(`icon ${s || ''}`); return svg('svg', { fill: d.c || "currentColor", viewBox: $.is || "0 0 24 24", }, svg('path', { d: d.d })).c(`icon ${s || ''}`); } } export const label = (v, cls) => v && ((isS(v) ? div(0, v) : isA(v) ? div([icon(v[0]), v[1]]) : g(v)))?.c(cls); export function bt(text, click, type = "button") { return g("button", "_ bt", text).p("type", type).on("click", click); } export const link = (text, href) => g("a", "_ link", text).p("href", href); /** button with icon */ export function ibt(i, text, click, type = "button") { return g("button", "_ bt", [icon(i), text]) .p("type", type) .c("icon", !text).on("click", click); } export function positive(i, text, click, type) { return ibt(i, text, click, type).c("accept"); } export function negative(i, text, click, type) { return ibt(i, text, click, type).c("error"); } /** link with icon */ export function ilink(i, text, href) { return g("a", "lk" /* C.link */, [icon(i), text]).p("href", href); } /**close button */ export function close(click) { return g("button", `_ ${"cl" /* C.close */}`, icon(icons.close)).p({ type: "button", tabIndex: -1 }).on("click", click); } /**cancel button */ export function cancel(click) { return negative(icons.cancel, w.cancel, click); } /**confirm button */ export function confirm(click) { return positive(null, w.confirm, click, "submit"); } export function buttons(...buttons) { return div("bs" /* C.buttons */, buttons); } export const img = (src, cls) => g("img", cls).p("src", src); export const a = (href, content, cls) => g("a", cls, content).p("href", href); export const hr = (cls) => g("hr", cls); export function logo(v) { if (v) if (isS(v)) { switch (v[0]) { case ".": case "/": return img(v).c("icon"); case "<": return toSVG(v).c("icon"); } } else return icon(v); } export function hoverBox({ x, y, right: r, bottom: b }, e, [o, side, main]) { /*m:main,s:side,w:windows,e:Element,h:Horizontal */ let { innerHeight: wh, innerWidth: ww } = window, { width: ew, height: eh } = e.rect, h = o == "h", border = $.rem * .4, [ws, wm, es, em, s0, m0, s1, m1] = h ? [wh, ww, eh, ew, y, x, b, r] : [ww, wh, ew, eh, x, y, r, b]; main ||= (m0 + (m1 - m0) / 2) > (wm / 2) ? "s" : "e"; e .css({ //main ["max" + (h ? "Width" : "Height")]: (main == "e" ? wm - m1 : m0) - border * 2 + "px", [h ? "left" : "top"]: (main == "e" ? m1 + border : Math.max(0, m0 - em) - border) + "px", //side ["max" + (h ? "Height" : "Width")]: (side == "e" ? ws - s0 : s1) - border + "px", [h ? "top" : "left"]: Math.max(0, Math.min(ws - es, side == "s" ? s1 - es : side == "e" ? s0 : s0 + (s1 - s0) / 2 - es / 2)) + "px", }); } export function notify(content, { style, close: cl, v, h }) { let temp = div(`_ notify msg ${style || ""} ${v || ""} ${h || ""}`).addTo(body()); let r = () => temp.remove(); temp.add([ content, t(cl) && close(r) ]); setTimeout(r, 2_000); } export function menu(items) { return div("_ menu", g("table", 0, items)); } /**menu item */ export function menuitem(i, text, action, side, disabled) { return g("tr", `i ${disabled ? "ds" /* C.disabled */ : ""}`, [ g("td", 0, icon(i)), g("td", 0, text), g("td", "sd" /* C.side */, side), g("td") ]).on("click", !disabled && action); } // export function menuitemFull(){ // return g("tr","i",[g("td"),g("td",{colSpan:3})]) // } /**checkbox */ export function menucb(checked, text, toggle, id, disabled) { let input = g("input", { id, checked, disabled, indeterminate: checked == null, type: "checkbox" }); toggle && input.on("input", () => toggle.call(input, input.e.checked)); return g("tr", `i ${disabled ? "ds" /* C.disabled */ : ""}`, [ g("td", 0, input), g("td", 0, text).on("click", () => input.e.click()), g("td"), g("td") ]).on("click", e => e.stopPropagation()); } export function menuwait(callback) { return call(g("tr", 0, g("td", 0, wait(1 /* WaitType.out */)).p("colSpan", 4)), tr => waiter(tr, callback)); } export const submenu = (i, text, items) => call(g("tr", "i", [ g("td", 0, icon(i)), g("td", 0, text), g("td"), g("td", 0, icon("menuR")) ]), e => { let mn; e.on("click", () => { e.tcls("on" /* C.on */).is('.' + "on" /* C.on */) ? hoverBox(e.rect, (mn ||= g("table", "menu", items)).addTo(e), "h") : mn.remove(); }); }); export const menusep = () => g("tr", "_ hr"); /** @deprecated */ export function menubar(...items) { return div("_ bar", items); } export function containedBar(...items) { return g("nav", "_ bar", div("_ container", items)); } /** @deprecated */ export function right() { return div("r" /* HAlign.right */); } export function mbitem(i, text, action) { return g("button", "i", [icon(i), text]).p({ type: "button" }).on("click", action); } /**menubar separator */ export function mbsep() { return g("hr"); } /**menubar checkbox */ export function barcb(checked, text, toggle, disabled) { let input = g("input", { checked, disabled, indeterminate: checked == null, type: "checkbox" }); toggle && input.on("input", () => toggle.call(input, input.e.checked)); return g("label", `i ${disabled ? "ds" /* C.disabled */ : ""}`, [input, text]); } /**place holder */ export function ph(type = 1 /* WaitType.out */) { switch (type) { case 0 /* WaitType.inline */: case 1 /* WaitType.out */: return div("ld" /* C.loading */, [ //icon({ /*s: size, */d: `loading ${C.centered}` }), //icon({ /*s: size, */d: `loading ${C.itemA} ${C.centered}` }), ]); } } export function waiter(element, cb) { cb && (isP(cb) ? cb : cb?.()).then(t => { if (t instanceof G) { t.c(Array.from(element.e.classList).slice(1)); t.attr("style", (t.attr("style") || "") + (element.attr("style") || "")); } element.replace(t); }); } export function wait(type, body) { if (!isN(type)) { body = type; type = 0 /* WaitType.inline */; } let loader = ph(type); waiter(loader, body); return loader; } //todo: colocar no galhui export function loading(sz = "n") { return div("_ blank", div("_ load " + sz)); } export function busy(arg0, arg1, arg2, arg3) { if (isF(arg0)) { let e = g("span"); (async () => { let t = setTimeout(() => e.replace(e = loading(arg1)), def(arg2, 750)); e.replace(e = await arg0()); clearTimeout(t); })(); // setTimeout(async () => e.replace(e = await arg0()), def(arg2, 750)); // let t = await arg0(); // e.parent && e.replace(t); // e = t; return e; } else { let e = loading(arg2), p, t = setTimeout(() => { p = arg0.add(e).css("position"); arg0.css({ position: "relative" }); }, arg3); let close = () => { e.remove(); clearTimeout(t); arg0.css({ position: p }); }; return (async () => { try { await arg1(close); } finally { close(); } })(); } } export const blobToBase64 = (v) => new Promise((rs, rj) => { var reader = new FileReader(); reader.readAsDataURL(v); reader.onloadend = () => rs(reader.result); reader.onerror = rj; }); export function moveondoc(cursor, move, endcallback) { topLayer().css({ cursor, userSelect: "none" }); doc() .on('mousemove', move) .one('mouseup', e => { topLayer().uncss("cursor", "userSelect"); doc().off('mousemove', move); endcallback?.(e); }); } export const input = (type, name, ph, input) => g("input", { type, name, placeholder: ph }).c("_ in").on("input", input); export const textarea = (name, ph, input) => g("textarea", { name, placeholder: ph }).c("_ in").on("input", input && (function () { input(this.value); })); export const checkbox = (label, input, checked) => g("label", "_ cb", [g("input", { type: "checkbox", checked }).on("input", input && (function () { input(this.checked); })), label]); export const radio = (label, name, input, checked) => g("label", "_ cb", [g("input", { type: "radio", checked, name }).on("input", input && (function () { input(this.checked); })), label]); export function search(input, value) { let t = g("input", { type: "search", placeholder: w.search, value }), i = icon(icons.search); input && delay(t, "input", $.delay, () => input(t.v())); return (i ? div([t, i]) : t).c("_ in"); } // export const loadImg = () => new Promise<Blob>((cb) => { // let p=g("img",{ onload:()=>cb()}); // }); //#region output export const output = (...content) => g("span", "_ out", content); export const keyVal = (key, val, c, tag = "span") => g(tag, `_ out ${c || ""}`, [key, ": ", val]); export const message = (c, data) => div("_ msg", data).c(c); export const errorMessage = (data) => message("error", data); export function dialog(cls, hd, bd, blur = true) { let content = g("dialog", "_ " + cls); content.on("cancel", (e) => { if (blur) { content.remove(); clearEvent(e); } }); if (blur) content.on("click", e => { if (e.target == e.currentTarget) content.remove(); }); content .add(g("form", 0, [ hd, bd(() => content.remove(), content), ])) .addTo(body()) .e.showModal(); return content; } export function sidebar(hd, bd, blur = true) { return dialog("side", hd, isF(bd) ? bd : (() => bd), blur); } /**open modal * @returns modal container, to close modal only remove the modal container */ export function modal(hd, bd, actions, sz, blur = true) { return dialog("modal " + (sz || ""), label(hd, "hd"), (cl, c) => [ isE(bd) ? bd.c("bd") : bd, actions && div("ft", actions(cl, c)) ], blur); } export function tabModal(initial, items, actions = (cl) => confirm(cl), sz = "xl") { let form = g("form", "_ tab"); let content = g("dialog", "_ modal " + (sz || ""), form); let hd = div("_ main bar", items.map(([h, b]) => call(label(h, "i"), e => e.on("click", () => { form.set([hd, b, div("ft", actions(() => content.remove(), content))]); hd.childs().c("on", false); e.c("on"); })))); content.addTo(body()).e.showModal(); hd.child(initial).e.click(); return content; } export const showDialog = (e) => e.addTo(body().c("dialog-on")).call("showModal").on("close", () => { e.remove(); body().c("dialog-on", false); }); /**modal with ok and cancel buttons */ export function mdOkCancel(body, sz = "xs", valid = () => true) { return new Promise(ok => modal(null, wrap(body), cl => [ confirm(() => { if (valid) { cl(); ok(true); } }).css({ width: "50%" }), cancel(() => { cl(); ok(false); }).css({ width: "50%" }) ], sz)); } /**modal with yes/no buttons */ export function mdYN(body, sz = "xs", valid = () => true) { return new Promise(ok => modal(null, wrap(body), cl => [ positive(null, w.yes, () => { if (valid) { cl(); ok(true); } }).css({ width: "50%" }), negative(null, w.no, () => { cl(); ok(false); }).css({ width: "50%" }) ], sz)); } /**modal with ok */ export function mdOk(body, sz = "xs") { return new Promise(ok => modal(null, wrap(body), cl => confirm(() => { cl(); ok(); }), sz)); } /**md with error style and ok button */ export function mdError(body, sz = "xs") { return new Promise(ok => modal(null, wrap(body), cl => confirm(() => { cl(); ok(); }), sz).c("error")); } export const topLayer = () => g(getAll(":modal>form").at(-1)) || body(); export function popup(refArea, div, align) { return anim(() => topLayer().contains(div) && hoverBox(refArea(), div, align)); } /**context menu */ export function ctxmenu(e, data, align = "ve") { clearEvent(e); let last = active(), tl = topLayer(); let wheelHandler = (e) => clearEvent(e); let ctx = div("_ menu", g("table", 0, data)).p("tabIndex", 0) .on({ focusout(e) { ctx.contains(e.relatedTarget) || (ctx.remove() && tl.off("wheel", wheelHandler)); }, keydown(e) { if (e.key == "Escape") { e.stopPropagation(); ctx.blur(); } } }).addTo(tl).focus(); ctx.queryAll('button').on('click', function () { last ? last.focus() : this.blur(); }); tl.on("wheel", wheelHandler, { passive: false }); popup(() => new DOMRect(e.clientX, e.clientY, 0, 0), ctx, align); } export function tip(root, tip, align = "v") { if (tip) { if (isP(tip)) { let t = tip; tip = div("_ tip", wait); t.then(v => { tip = wrap(v, "_ tip"); }); } else tip = wrap(tip, "_ tip"); return (root = g(root))?.on({ mouseenter() { let tl = topLayer(); tl.add(tip); anim(() => tl.contains(root) && tip.parent ? hoverBox(root.rect, tip, align) : (tip.remove(), false)); }, mouseleave() { tip.remove(); }, //TODO:focusin,focusout // focusout(e) { // tip.remove() // }, // focusin(){ // } }); } else return root; } /**create root, add handlers */ export function selectRoot(me, options, label, menu, setValue, tag) { let p = me.p; let root = onfocusout(g(tag || "button", `_ in ${"sel" /* C.select */}`, [label.c("bd"), t(p.icon) && icon(icons.dd)?.c("sd" /* C.side */) /*, me.menu*/]), () => me.set("open", false)) .p("tabIndex", 0).on({ focus(e) { if (p.off) { if (e.relatedTarget) g(e.relatedTarget).focus(); else root.blur(); } else root.c("on"); }, keydown(e) { switch (e.key) { case "ArrowUp": me.set("open", true); range.move(options, "on", -1, range.tp(e.shiftKey, e.ctrlKey)); break; case "ArrowDown": me.set("open", true); range.move(options, "on", 1, range.tp(e.shiftKey, e.ctrlKey)); break; case "Enter": if (me.p.open) { let _ = (l(options) == 1 ? options[0] : options.tag('on')); _ && setValue(_[options.key]); //sub(range.list(, "on"), options.key as any)[0] me.set("open", false); } else return; // else { // let frm = g(me).closest("form"); // if (frm) frm?.e.requestSubmit(); // else return; // } break; case "Escape": if (me.p.open) { me.set("open", false); break; } else return; default: return; } clearEvent(e); }, }); tag || root.attr("type", "button"); if (t(p.click)) root.on('click', (e) => { // if (p.off) { // e.stopImmediatePropagation(); // } else { } if (!menu.contains(e.target)) me.toggle("open"); }); me.on(state => { if ("off" in state) { if (p.off) me.set("open", false); //{root.blur().attr("disabled", true).p('tabIndex', -1); } root.attr("disabled", p.off); //.p('tabIndex', t(p.tab) ? 0 : -1); } if ("open" in state) { if (p.open && p.off) { me.set("open", false); return; } me.emit('open', p.open); root.c("on", p.open); if (p.open) { root.add(menu); anim(() => { let r = root.rect; return body().contains(menu) && (menu.css("minWidth", r.width + "px"), hoverBox(r, menu, "ve")); }); } else { root.c(["b" /* VAlign.bottom */, "t" /* VAlign.top */], false); menu.remove(); } } }); return root; } export async function setValue(me, label) { let v = me.value; if (label.is("input")) { label.p("value", me.value == null ? "" : me.value); } else { if (v == null) label.c("_ ph").set(me.p.ph); else { let o = await me.option(v); label.c("ph", false).set([me.p.item(o), t(me.p.clear) && close(() => me.value = null)]); me.set("open", false); } } } export const dropdown = (label, items, align = "ve", closeOnBlur) => call(div("_ dd i", label).p("tabIndex", 0), e => { function cl() { mn?.remove(); e.c("on", false); } let mn; // = ; t(closeOnBlur) && onfocusout(e, cl); e.on("click", () => { if (mn?.parent) cl(); else { (mn ||= isF(items) ? items(cl) : menu(items)).addTo(e.c("on")); popup(() => e.rect, mn, align); } }); }); export const idropdown = (label, items, align, closeOnBlur) => dropdown([label, icon(icons.dd)], items, align, closeOnBlur); export const hidden = (head, body, open) => div(`_ ${"ac" /* C.accordion */}`, [ head = div("hd", [ icon("menuR"), head ]).c("on" /* C.on */, !!open).on("click", () => head.tcls("on" /* C.on */)), wrap(body, "bd") ]); export function accordion(items, i = {}) { return orray(items).bind(div("_ accordion"), ([hd, bd], j, p) => { p.place(j * 2, [ hd = div("hd", [ t(i.icon) && icon("menuR"), hd ]).c("on" /* C.on */, i.def == j).on("click", () => { if (hd.is('.' + "on" /* C.on */)) hd.c("on" /* C.on */, false); else { t(i.single) && p.childs("." + "hd").c("on" /* C.on */, false); hd.c("on" /* C.on */); } }), wrap(bd, "bd") ]); }); } export function tab(initial, items) { let hd = div("_ bar", items.map(([h, b]) => call(label(h, "i"), e => e.on("click", () => { d.set([hd, b]); hd.childs().c("on", false); e.c("on"); })))), d = div("_ tab"); hd.child(initial).e.click(); return d; } //#endregion // export interface IOpenSelect<T extends Object = Dic, K extends Key = Key> extends bg.ISelect<T, K> { // input?: 'text' | 'number'; // valid?: (value: string) => boolean; // } // export function openSelect<T extends Object = Dic, K extends Key = Key>(input: (this: Select<T, K>, value) => any, options: (T | K)[], i: IOpenSelect<T, K> = {}) { // let ip = i.labelE = g('input', { type: i.input }).on('input', function () { // input.call(select, this.value); // }); // i.label = (value) => { // ip.p('value', <any>value); // } // let select = new Select<T, K>(i, options); // return select; // } // export interface ISelectBase<T extends Object, K> extends IRoot { // menuE?: S; // labelE?: S; // /**element in menu or menu itself where items will be added */ // items?: S<HTMLTableElement>; // labelParent?: S; // menu?: (this: this, value: T) => One; // /**called when value change */ // setMenu?: (this: this, value: K) => void; // /**elemento dentro da label onde a label vai ser renderizada */ // //labelItem?: S; // //label: S | ((key: K) => void); // } // export abstract class SelectBase<M extends ISelectBase<T, K> = ISelectBase<any, any>, T extends Object = any, K = Key, E extends SelectEvents = SelectEvents> extends E<M, E> { // menu: S; // label: S; // options: L<T, K>; // abstract setValue(...value: K[]): void; // constructor(i: M, options?: Alias<T, K>) { // super(i); // this.options = extend<T, K>(options, { // key: "key", // parse: (e) => isO(e) ? e : { key: e } as any // }); // } // view(): S { // let // i = this.i, // lb = g(i.labelE || 'div').c("bd"); // this.label = i.labelParent || lb // model.labelItem || label; // this.menu = (i.menuE || div(0, i.items = g("table"))).c("_ menu"); // //if (model.menuItems && model.menuItems != this.menu) { // // this.menu.setClass(Cls.fill); // // model.menuItems.setClass(Cls.full); // //} // i.open = false; // //if (!md.menuRender) // // md.menuRender = value => div( null, value[md.key]); // return root(this, i, this.options); // } // protected insertItem(value: T) { // var model = this.i; // return g(model.menu(value)) // //.setClass(Cls.option) // .on('click', (e) => { // e.stopPropagation(); // let k = value[model.key]; // this.setValue(k); // }); // } // } // export interface IMultselect<T extends Object = any, K extends str | num = str> extends ISelectBase<T, K> { // value?: L<K>; // empty?: (empty: boolean, container?: S) => void; // label?: (this: L<K>, value: K, index?: number, container?: S) => void | One;// Child | Promise; // } // export class Multselect<T extends Object = { key: str }, K extends str | num = str> extends SelectBase<IMultselect<T, K>, T, K, { add: K[], remove: K[]; input: K[] } & SelectEvents> { // constructor(i: IMultselect<T, K>, options?: Array<T | K>) { // super(i, options); // this.options.addGroup("on"); // i.value = orray(i.value, { // parse(item) { // if (this.indexOf(item) == -1) // return item; // } // }); // //.bindToE(this, "value"); // } // get value() { return this.i.value; } // view() { // let // i = this.i, // values = i.value, // options = this.options, // div = super.view(), // mItems = i.items, // menu = i.items || this.menu; // this.label.css('flexWrap', 'wrap'); // bind(options, menu, { // insert: this.insertItem.bind(this), // tag(s, active, tag) { // s.c(tag, active); // if (active) { // vScroll(menu, s.e.offsetTop - menu.p('clientHeight') / 2 + s.p('clientHeight') / 2); // } // }, // groups: { // ["on"](e, active) { e.c(C.on, active); } // } // }); // bind(values, menu, { // insert(key) { // let index = itemIndex(options, key); // if (index != -1) // mItems // .child(index) // .c(C.main); // }, // remove(key) { // let index = itemIndex(options, key); // if (index != -1) // mItems // .child(index) // .c(C.main, false); // } // }); // bind(values, this.label, { // insert: i.label, // empty: i.empty // }); // return root(this, i).on("keydown", e => { // switch (e.key) { // case "Delete": { // let target = g(e.target as HTMLElement); // if (is(target, 'input') || is(target, 'textarea') || !this.delete()) // return; // else break; // } // case "Backspace": { // let target = g(e.target as HTMLElement); // if (is(target, 'input') || is(target, 'textarea') || !this.backspace()) // return; // else break; // } // } // keydown(e, this.options); // }); // } // delete() { // let vl = this.i.value; // if (!vl.length) // return false; // this.removeValue(vl[0]); // return true; // } // backspace() { // let vl = this.i.value; // if (!vl.length) // return false; // this.removeValue(z(vl)); // return true; // } // setValue(...values: K[]) { // let md = this.i; // //let list = this.model.value; // if (values.length) { // //let l = list.length; // let inserted: K[] = []; // for (let value of values) { // if (md.value.indexOf(value) == -1) { // inserted.push(value); // } // } // //md.value.push(...values); // if (inserted.length > 0) { // md.value.push(...inserted); // this.emit('add', inserted); // this.emit('input', md.value.slice()); // if (md.open && this.$) // this.setMenu(this.$) // } // } // } // removeValue(...values: K[]) { // let // md = this.i, // removed: K[] = []; // for (let value of values) { // let i = md.value.indexOf(value); // if (i != -1) { // md.value.removeAt(i); // removed.push(value); // } // } // if (removed.length > 0) { // this.emit('remove', removed); // this.emit('input', md.value.slice()); // if (md.open && this.$) // this.setMenu(this.$) // } // } // //setLabel(value: T) { // // var model = this.model; // // return model.menuRender(<T>value) // // .setClass(Cls.option) // // .on('click', (e) => { // // e.stopPropagation(); // // let k = value[model.key]; // // this.set('value', k); // // model.child.setTag(focusKey, k); // // }) // //} // } // export interface IOpenMultselect<T extends Object = Dic, K extends Key = Key> extends IMultselect<T, K> { // input?: 'text' | 'number'; // valid?: (value: string) => boolean; // /**place holder */ // ph?: str; // } // export function openMultselect<T extends Object = Dic, K extends Key = Key>(i: IOpenMultselect<T, K>, allOptions: T[]) { // let // select = new Multselect<T, K>(assign(i, { // label(value) { // i.labelE.p('value', value); // }, // labelE: g('input', { type: i.input, placeholder: i.ph }).on({ // input() { // let arg: Arg<str> = { v: this.value }; // select.emit("type" as any, arg); // if (!arg.p) { // allOptions ||= opts.slice(); // let parts = valid(arg.v.split(/\s+/g)).map(q => new RegExp(q, "gu")); // opts.set(allOptions.filter(o => parts.every(p => p.test(o[i.key])))); // } // if (l(opts) == 1) // addSelection(opts, "on", opts[0], SelectionTp.set); // }, // keydown(e) { // if (e.key == "Enter" && !opts.tags["on"]) { // clearEvent(e); // let arg: Arg<str> = { v: this.value }; // if (i.valid ? i.valid(arg.v) : false) { // select.emit("submit" as any, arg) // if (!arg.p) { // opts.push({ [i.key]: arg.v } as any); // select.setValue(arg.v as K); // } // } // } // } // }) // }), allOptions), // opts = select.options; // g(select).c(C.input) // return select; // } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsaHVpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2FsaHVpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsQ0FBQyxFQUF3RCxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2xMLE9BQU8sRUFBSyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUF3QixJQUFJLEVBQUUsR0FBRyxFQUFxQixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBWSxDQUFDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQTZFakMsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFtQixFQUFFLENBQUE7QUFDdkMsY0FBYztBQUNkLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBYTtJQUN6QixVQUFVO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixHQUFHLEVBQUUsRUFBRTtDQUNSLENBQUE7QUFDRCxXQUFXO0FBQ1gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFtQixFQUFFLENBQUE7QUFJbkMsTUFBTSxVQUFVLElBQUksQ0FBQyxHQUFRLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLE1BQU0sVUFBVSxRQUFRLENBQUMsTUFBVztJQUNsQyxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUM7SUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBMEJELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWUsQ0FBQyxDQUFDO0FBRWhELDZDQUE2QztBQUM3QyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcscUVBQXFFLENBQUM7QUFJL0YsTUFBTSxVQUFVLElBQUksQ0FBQyxDQUFPLEVBQUUsQ0FBUTtJQUNwQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ04sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDakIsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2IsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEMsT0FBTyxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQ2hCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWM7WUFDM0IsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksV0FBVztTQUM3QixFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0FBQ0gsQ0FBQztBQUdELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQVEsRUFBRSxHQUFTLEVBQUUsRUFBRSxDQUMzQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFLaEYsTUFBTSxVQUFVLEVBQUUsQ0FBQyxJQUFTLEVBQUUsS0FBYSxFQUFFLE9BQW1CLFFBQVE7SUFDdEUsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUNELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLElBQVcsRUFBRSxJQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFeEYsdUJBQXVCO0FBQ3ZCLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBTyxFQUFFLElBQVcsRUFBRSxLQUFhLEVBQUUsT0FBbUIsUUFBUTtJQUNsRixPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3hDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO1NBQ2YsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBTyxFQUFFLElBQVcsRUFBRSxLQUFhLEVBQUUsSUFBaUI7SUFDN0UsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFDRCxNQUFNLFVBQVUsUUFBUSxDQUFDLENBQU8sRUFBRSxJQUFXLEVBQUUsS0FBYSxFQUFFLElBQWlCO0lBQzdFLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQscUJBQXFCO0FBQ3JCLE1BQU0sVUFBVSxLQUFLLENBQUMsQ0FBTyxFQUFFLElBQVcsRUFBRSxJQUFVO0lBQ3BELE9BQU8sQ0FBQyxDQUFDLEdBQUcscUJBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxrQkFBa0I7QUFDbEIsTUFBTSxVQUFVLEtBQUssQ0FBQyxLQUFhO0lBQ2pDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLGtCQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0csQ0FBQztBQUNELG1CQUFtQjtBQUNuQixNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQWE7SUFDbEMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFDRCxvQkFBb0I7QUFDcEIsTUFBTSxVQUFVLE9BQU8sQ0FBQyxLQUFhO0lBQ25DLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxHQUFHLE9BQVk7SUFDckMsT0FBTyxHQUFHLHVCQUFZLE9BQU8sQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFRLEVBQUUsR0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDeEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBUyxFQUFFLE9BQVksRUFBRSxHQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUYsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRTlDLE1BQU0sVUFBVSxJQUFJLENBQUMsQ0FBYTtJQUNoQyxJQUFJLENBQUM7UUFDSCxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1gsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDYixLQUFLLEdBQUcsQ0FBQztnQkFDVCxLQUFLLEdBQUc7b0JBQ04sT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQixLQUFLLEdBQUc7b0JBQ04sT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDOztZQUFNLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFVRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQWEsRUFBRSxDQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBYTtJQUNsRyxtREFBbUQ7SUFDbkQsSUFDRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxHQUFHLE1BQU0sRUFDNUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUNsQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFDWixNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQ25CLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDckQsQ0FBQztTQUNFLEdBQUcsQ0FBQztRQUNILE1BQU07UUFDTixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJO1FBQ3BGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUk7UUFDeEYsTUFBTTtRQUNOLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsSUFBSTtRQUNoRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7S0FDcEksQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQU9E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