@nebularstreams/libmui 3.0.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"libui.esm.js","sources":["../src/widgets/Basic.js","../src/widgets/CardieWidget.js","../src/util/widgets.utils.js","../src/widgets/Separator.js","../src/widgets/ButtonChoiceWidget.js","../src/widgets/InputWidget.js","../src/widgets/NoticeWidget.js","../src/widgets/ComboWidget.js","../src/util/widgets.js","../src/util/util.tokenizer.js","../src/util/widgets.core.js","../src/util/fuckingconfirm.js","../src/widgets/SwitchWidget.js","../src/util/util.clone.js","../src/widgets/OverflowUtils.js","../src/widgets/ComboPrompt.js","../src/util/colorjoe.js","../src/widgets/ColorJoeWidget.js","../src/widgets/ColorJoePack.js","../src/widgets/PlusMinusWidget.js","../src/widgets/TitleBarWidget.js","../src/util/mithril-range.js","../src/widgets/RangeWidget.js","../src/app/MainState.js","../src/widgets/SmileysButton.js","../src/app/app.js","../src/widgets/CoolContentTicker.js","../src/widgets/EmptyButton.js","../src/widgets/CoolerEmpty.js","../src/util/tainter.js","../src/util/filepath.js","../src/widgets/SelectFileMiniButton.js","../src/widgets/FontSelectorButton.js","../src/meta/InputTemplates.js","../src/widgets/TemplatedInputWidget.js"],"sourcesContent":["import m from \"mithril\";\n\nexport function defineWidget(view, oninit, oncreate, onremove, onupdate) {\n return {\n ...view && {view},\n ...oninit && {oninit},\n ...oncreate && {oncreate},\n ...onupdate && {onupdate},\n ...onremove && {onremove}\n }\n}\n\n\n// ------------------------------------------------------------------------\n\nfunction getAttrs(attrs, parentAttrs, panelInitialParams) {\n const data = ((typeof attrs === \"function\") ? attrs(parentAttrs) : attrs) || {};\n if (panelInitialParams) data.initialParams = panelInitialParams;\n return data;\n}\n\nconst\n\n isCurrent = ({currentIndex}, index) => currentIndex === index,\n\n Icon = {\n view: ({attrs}) => m(\n `i.icon.${attrs.pack || \"fas\"}.fa-${attrs.icon || \"cog\"}${attrs.size ? \".fa-\" + attrs.size + \"x\" : \"\"}`,\n {\n title: attrs.icontitle || undefined,\n role: \"presentation\",\n onclick: attrs.onclick || null, ...attrs.iconClass && {class: attrs.iconClass}\n }\n )\n },\n\n Button = {\n view: ({attrs, state, children}) => m((attrs.download || attrs.link) ? \"a.button\" : \"button\", {\n ...attrs.link && {href: attrs.link},\n ...attrs.download && {download: attrs.download},\n ...attrs.target && {target: attrs.target},\n \"aria-label\": attrs[\"aria-label\"] || attrs.title || attrs.text,\n title: attrs.title || attrs[\"aria-label\"],\n class: (attrs.class || \"\") + (state.busy ? \" busy\" : \"\"),\n ...state.error && {\"data-error\": state.error.message},\n ...attrs.onclick && {\n onclick: (event) => {\n clearTimeout(state.debounce);\n state.debounce = setTimeout(() => {\n const result = attrs.onclick(event, attrs);\n if (result && result.then && result.catch) {\n state.busy = true;\n m.redraw();\n result\n .then(() => {\n state.busy = false;\n m.redraw();\n })\n .catch((error) => {\n state.busy = false;\n state.error = error;\n m.redraw();\n });\n }\n }, 25);\n }\n }\n }, [\n ...(attrs.icon && !attrs.right) ? [m(Icon, attrs)] : [],\n ...attrs.text ? [m(\"span.pad-1.pad-h\", {class: attrs.textClass || null}, attrs.text)] : [],\n ...(attrs.icon && attrs.right) ? [m(Icon, attrs)] : [],\n ...children\n ])\n },\n\n ButtonNew = {\n view: ({attrs, state, children}) => m((attrs.download || attrs.link) ? \"a.button\" : \"button\", {\n ...attrs.link && {href: attrs.link},\n ...attrs.download && {rel: \"nofollow\", download: attrs.download},\n ...attrs.target && {target: attrs.target},\n \"aria-label\": attrs[\"aria-label\"] || attrs.title || attrs.text,\n title: attrs.title || attrs[\"aria-label\"],\n class: (attrs.class || \"\") + (state.busy ? \" busy\" : \"\"),\n ...state.error && {\"data-error\": state.error.message},\n ...attrs.onClick && {\n onclick: (event) => {\n clearTimeout(state.debounce);\n state.debounce = setTimeout(() => {\n const result = attrs.onClick(event, attrs);\n if (result && result.then && result.catch) {\n state.busy = true;\n m.redraw();\n result\n .then(() => {\n state.busy = false;\n m.redraw();\n })\n .catch((error) => {\n state.busy = false;\n state.error = error;\n m.redraw();\n });\n }\n }, 25);\n }\n }\n }, [\n ...(attrs.icon && !attrs.right) ? [m(Icon, attrs)] : [],\n ...attrs.text ? [m(\"span.pad-1.pad-h\", {class: attrs.textClass || null}, attrs.text)] : [],\n ...(attrs.icon && attrs.right) ? [m(Icon, attrs)] : [],\n ...children\n ])\n },\n\n Empty = {\n\n view: ({attrs, children}) => m(\n \".flexcol.flexcenter.al-center.grows.emptywidget\",\n {\n ...attrs.class && {class: attrs.class},\n ...attrs.key && {key: attrs.key},\n role: \"presentation\"\n },\n [\n m(Icon, attrs),\n ...attrs.message\n ? [\n m(\".marg-2.marg-v\",\n {\n role: \"status\",\n class: attrs.size > 4 ? \"font-150\" : \"font-100\",\n \"aria-label\": attrs.message\n },\n attrs.message.split(\"\\n\")\n .map((str, idx, all) => all.length === 1 ? str : m(\"p.msg\" + idx, str))\n )\n ]\n : [],\n ...children\n ? [m(\".flexcol.additional\", children)]\n : []\n ]\n )\n },\n\n setItem = (attrs, state, index, params) => {\n\n\n const\n lastIndex = state.currentIndex,\n lastParams = state.currentParams;\n\n if (index === -1) {\n Object.assign(state, {\n current: null,\n currentIndex: -1,\n currentParams: []\n });\n } else {\n Object.assign(state, {\n current: attrs.items[index] || null,\n currentIndex: state.current ? index : -1,\n currentParams: params || []\n });\n }\n\n if (attrs.onSelected) attrs.onSelected(state.current, state.currentParams, state.currentIndex !== lastIndex, lastParams);\n\n m.redraw();\n },\n\n Selector = {\n\n oninit: ({attrs, state}) => {\n\n state = attrs.state || state;\n state.setItem = (index, ...params) => setItem(attrs, attrs.state || state, index, params);\n\n const\n hasState = !isNaN(state.currentIndex),\n selected = hasState ? state.currentIndex : attrs.selected,\n currentIndex = (attrs.items && attrs.items.length)\n ? (selected !== undefined && attrs.items[selected])\n ? selected\n : attrs.noinitial ? -1 : 0\n : -1,\n current = currentIndex !== -1 ? attrs.items[currentIndex] : null;\n\n Object.assign(state, {currentIndex, current});\n\n },\n\n onupdate: ({attrs, state}) => {\n (attrs.state || state).setItem = (index, ...params) => setItem(attrs, attrs.state || state, index, params);\n },\n\n view: ({attrs, state}) => {\n\n state = attrs.state || state;\n const {current} = state;\n\n return m(\n (attrs.element || \"widget\") + \".selector\" + (attrs.horizontal ? \".flexrow\" : \".flexcol\") + (attrs.className ? \".\" + attrs.className : \"\"),\n {\n ...attrs.key && {key: attrs.key},\n class: (state.current ? \"hascurrent\" : \"empty\") + (attrs.class ? \" \" + attrs.class : \"\") + (current?.bodyTitle ? \" withbodytitle\" : \"\")\n },\n [\n ...((!attrs.hideonly || (attrs.items.length > 1)) && (!attrs.hidesel))\n ? [\n /** navigation bar */\n m(\n \"nav.toolbar.fullwidth\" + (attrs.horizontal ? \".flexcol\" : \".flexrow\"),\n {\n \"aria-label\": attrs[\"aria-label\"] || attrs.title || \"selector\",\n class: attrs.toolbarClass\n },\n attrs.items.map((item, index) => m(Button, {\n class: (item.class ? item.class + \" \" : \"\") + (isCurrent(state, index) ? \"accent\" : \"nel\"),\n icon: item.icon || null,\n ...item.title && {title: item.title},\n ...item[\"aria-label\"] && {\"aria-label\": item[\"aria-label\"]},\n ...item.text && {text: item.text},\n onclick: () => {\n const t = Date.now();\n if (t - state.clickts < 200) return;\n state.clickts = Date.now();\n state.bodyHidden = false;\n state.setItem(index);\n }\n }))\n )]\n : [],\n ...current\n ? [\n ...(attrs.toggle && !state.bodyHidden)\n ? [\n m(ButtonNew, {\n class: \"selectornotch \" + (state.bodyHidden ? \"bodyhidden\" : \"bodyshown\"),\n icon: state.bodyHidden ? \"caret-up\" : \"caret-down\",\n title: state.bodyHidden ? \"expand panel\" : \"contract panel\",\n onClick: () => {\n state.bodyHidden = !state.bodyHidden;\n m.redraw();\n }\n })\n ] : [],\n ...(!attrs.toggle || !state.bodyHidden)\n ? [\n ...current?.bodyTitle ? [\n m(\".bodytitle\", current.bodyTitle)\n ] : [],\n /** body */\n m(\".grows.flexcol.ohidden.selectorbody\", {\n class: attrs.bodyClass,\n role: \"presentation\"\n }, [\n m(\n current.widget,\n getAttrs(current.attrs, attrs, state.currentParams),\n current.children\n )\n ])\n ]\n : [],\n ...attrs.closeButton\n ? [\n m(Button, {\n class: \"closebutton absolute toright\",\n icon: \"times\",\n onclick: () => {\n state.setItem(-1);\n },\n \"aria-label\": \"close item\"\n })] : []\n ]\n : m(Empty, attrs)\n ]\n );\n }\n };\n\nconst ICONS = {\n info: \"info\",\n error: \"exclamation-triangle\",\n success: \"check\"\n};\n\nfunction Notifications(TOAST_SHORT = 5000, altContainer) {\n\n let\n mNotifications = [],\n mTimer;\n\n function render(container, n) {\n m.render(\n container, m(\n Button, {\n class: \"notification \" + n.type,\n text: n.text,\n icon: ICONS[n.type] || \"info\",\n size: 1,\n role: \"status\",\n // eslint-disable-next-line no-use-before-define\n onclick: next\n }\n )\n );\n }\n\n function next() {\n\n const\n container = altContainer || document.getElementById(\"notification-container\");\n\n if (mNotifications.length) {\n const n = mNotifications.splice(0, 1)[0];\n render(container, n);\n clearTimeout(mTimer);\n mTimer = setTimeout(next, n.timer || TOAST_SHORT);\n } else {\n m.render(container, \"\");\n mTimer = null;\n }\n }\n\n return {\n add: (text, type) => {\n mNotifications.push({\n text,\n type\n });\n if (!mTimer) next();\n },\n clear: () => {\n mNotifications = [];\n next();\n }\n\n };\n}\n\nconst Notification = new Notifications();\n\nexport {\n Empty,\n Icon,\n Selector,\n Button,\n ButtonNew,\n Notification\n}\n","import m from \"mithril\";\nimport {ButtonNew, defineWidget} from \"./Basic\";\n\nconst\n globalState = {},\n CARDIE_CLOSED = 0;\n\nfunction setCardStatus(cardid, expanded = CARDIE_CLOSED) {\n if (cardid) {\n const [uniq, subname] = cardid.split(\"-\");\n if (expanded && uniq && subname) {\n Object.keys(globalState)\n .forEach((key) => {\n if (key.startsWith(uniq + \"-\")) {\n globalState[key] = CARDIE_CLOSED;\n }\n });\n }\n globalState[cardid] = expanded;\n }\n}\n\nconst CardieWidget = defineWidget(\n ({attrs, state, children}) => {\n\n const\n\n {\n nofold,\n cardid,\n size,\n title,\n action,\n collapsedAction,\n collapsedClass,\n expandedClass,\n cols,\n element,\n busy,\n expandedView,\n collapsedView,\n titleWidget: titWidget,\n titleAttrs,\n titleClass,\n bodyClass,\n titleExpanded,\n titleCollapsed\n } = attrs,\n\n collapsed = nofold\n ? false\n : cardid\n ? !globalState[cardid]\n : !!state.collapsed,\n\n items = (!collapsed)\n ? (\n expandedView\n ? expandedView(attrs, state)\n : (children || [])\n )\n : collapsedView ? collapsedView(attrs, state) : [],\n\n titleWidget = titWidget\n ? m(titWidget, titleAttrs || {})\n : title ? m(\"span.ellipsis.ohidden.unfold\", title) : undefined,\n\n buttonClass = busy\n ? \"fa-sync\"\n : `fa-caret-down ${collapsed ? \"iscollapsed\" : \"isexpanded\"}`;\n\n return items.length || !attrs.skipEmpty\n ? m(\n (element || \"ul\"),\n {\n class: \"cardie ohidden \"\n + (cols ? \"flexcol \" : \"flexrow wrap \")\n + (attrs.class ? \" \" + attrs.class : \"\")\n + (nofold\n ? \" expanded\"\n : ` ${collapsed ? \"collapsed \" + (collapsedClass || \"\") : \"expanded \" + (expandedClass || \"\")}`)\n + (size ? \" marg-\" + size : \"\") // marg-2\")\n + (titWidget ? \" withwidget\" : \"\")\n + (busy ? \" busycard\" : \"\")\n },\n [\n\n ...titleWidget\n ? [\n m(\n \".title.grows.fabf.flexrow.pointer.unfold\",\n nofold\n ? {\n class: titleClass || \"pad-2\"\n }\n : {\n class: `${titleClass || \"pad-2\"} ${buttonClass || \"\"}`,\n\n title: collapsed\n ? (titleCollapsed || \"Click to expand the options\")\n : (titleExpanded || titleCollapsed || \"Click to collapse the options\"),\n\n onclick: (e) => {\n\n if (e.target.classList.contains(\"unfold\")) {\n if (e.shiftKey && attrs.onShiftOpen) {\n attrs.onShiftOpen();\n } else if (attrs.cardid) {\n setCardStatus(cardid, collapsed); // !state\n } else {\n state.collapsed = !state.collapsed;\n }\n\n m.redraw();\n }\n }\n },\n action && (nofold || !collapsed)\n ? [\n m(ButtonNew, action),\n titleWidget\n ]\n : collapsedAction && collapsed\n ? [\n m(ButtonNew, collapsedAction),\n titleWidget\n ]\n : titleWidget\n )\n ]\n : [],\n\n ...items.length\n ? [\n m(\".flexbreak\"),\n m(\n \".cardiebody.fadein-filter.grows\",\n {\n class: (cols ? \"flexcol \" : \"flexrow wrap\") + \" \" + (bodyClass || \"\")\n },\n ...items\n )\n ] : [],\n\n ...(attrs.alwaysView\n ? [attrs.alwaysView({attrs, state})]\n : [])\n\n ]\n ) : [];\n },\n ({attrs, state}) => {\n if (!attrs.cardid) {\n state.collapsed = attrs.nofold\n ? false\n : attrs.cardid\n ? !globalState[attrs.cardid]\n : !!attrs.collapsed;\n }\n },\n undefined,\n undefined,\n undefined,\n {setCardStatus}\n);\n\nexport default CardieWidget;","export default function defineWidget (view, oninit, oncreate, onremove, onupdate) {\n return {\n ...view && {view},\n ...oninit && {oninit},\n ...oncreate && {oncreate},\n ...onupdate && {onupdate},\n ...onremove && {onremove}\n }\n}\n\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\n\n\nconst\n\n\tSeparator = defineWidget(\n\t\t({ attrs, children }) => m(\n\t\t\t\".separator\",\n\t\t\t{\n\t\t\t\tclass: attrs.class || \"mini\",\n\t\t\t\t...attrs.onClick && { onclick: attrs.onClick }\n\t\t\t},\n\t\t\t[\n\t\t\t\tm(\"span.grows\", attrs.text),\n\t\t\t\t...(children || [])\n\t\t\t]\n\t\t)\n\t);\n\nexport default Separator;\n","import m from \"mithril\";\nimport {ButtonNew, defineWidget} from \"./Basic\";\nimport Separator from \"./Separator\"\n\nconst\n\n /*\n SizeChoices = {\n \"1080p\": {width: 1920, height: 1080, value: \"1080p\"},\n \"720p\": {width: 1280, height: 720, value: \"720p\"},\n \"Fluid\": {width: null, height: null, value: \"Fluid\"},\n \"Custom\": {value: \"\"}\n }\n */\n\n ButtonChoiceWidget = defineWidget(\n ({attrs}) => {\n\n const\n {value, field, toggle, element, emptyMessage, chooseKey, chooseDict} = attrs,\n choose = (!attrs.choose && chooseKey && chooseDict) ? chooseDict[chooseKey] : attrs.choose,\n choices = choose\n ? choose.map((choice) => ({value: choice, caption: choice}))\n : attrs.choices || {};\n\n const\n keys = Object.keys(choices),\n has = keys.length,\n clase = (attrs.class || \"\") + (attrs.subclass ? \" \" + attrs.subclass : \" scaff scaff-b1\");\n\n return has || emptyMessage\n ? [\n ...attrs.label ? [m(Separator, {text: attrs.label, class: attrs.labelClass || \"\"})] : [],\n m(\n (element || \"div\") + \".buttonchoice.flexrow.ohidden\",\n {\n class: clase + (attrs.icon ? \" withicon fa-\" + attrs.icon : \"\"),\n title: attrs.title\n },\n m(\n \".flexrow.grows.ohidden.wrap\" + (attrs.icon ? \" scaff-left\" : \"\"),\n keys.length\n ? keys.map((choicekey) => {\n\n const\n choice = choices[choicekey],\n choicevalue = attrs.raw && field ? choice : choice.value,\n finalchoicevalue = field ? choicevalue[field] : choicevalue,\n current = finalchoicevalue === value;\n\n // noinspection EqualityComparisonWithCoercionJS\n return m(ButtonNew, {\n\n icon: choice.icon || undefined,\n class: \"grows scaff-b0 \" + (attrs.buttonClass ? attrs.buttonClass + \" \" : \"rectbutton unitheightsmall \") + (choice.class ? choice.class + \" \" : \"\") + (current ? \"accent\" : \"\"),\n title: choice.current ? choice.titleOn || choice.title : choice.titleOff || choice.title,\n onClick: (e) => {\n attrs.onchange(toggle ? current ? undefined : choice : choice, choicekey, e);\n m.redraw();\n }\n }, attrs.render ? attrs.render(choice) : choice.caption || choicekey);\n })\n : [m(\".emptychoice.grows.al-center.align-self-center.unitheightsmall\", attrs.emptyMessage)]\n )\n )\n ]\n : [];\n }\n );\n\nexport default ButtonChoiceWidget;\n\n","import m from \"mithril\";\nimport {ButtonNew} from \"./Basic\";\n\n/* eslint-disable no-prototype-builtins,no-nested-ternary */\n/* global m, Hammer */\n\nconst\n\n getInput = (attrs, value, parse = false) => {\n if (parse || attrs.type === \"number\") {\n const val = attrs.float ? Number.parseFloat(value) : Number.parseInt(value, 10);\n return Number.isNaN(val) ? undefined : val;\n }\n return value;\n },\n getValue = (attrs, state, parse) => {\n const lastVal = state.hasOwnProperty(\"value\") ? state.value : attrs.value;\n return getInput(attrs, lastVal, parse);\n },\n /*\n hammer = new Hammer.Manager(dom, { touchAction: \"pan-y\" }),\n panner = new Hammer.Pan({ direction: Hammer.DIRECTION_VERTICAL }),\n singleTap = listenTap && new Hammer.Tap();\n\n hammer.add(listenTap ? [panner, singleTap] : [panner]);\n hammer.on(\"panstart\", (e) => {\n\n */\n\n StaticFieldWidget = {\n view: (vnode) => {\n const {attrs, state} = vnode;\n // este vnode NO es el mismo que el del hammer, pero su estado SI !\n state.attrs = attrs; // guardamos una copia de los ultimos attrs en el estado\n\n return m(\n \".input-static.w-100.ellipsis\",\n {\n class: (attrs.onDrag ? \"withdrag \" : \"\") + (attrs.staticClass || \"grows\"),\n ...attrs.staticTitle && {title: attrs.staticTitle},\n ...attrs.onDrag || {onclick: attrs.onClick},\n oncreate: ({dom, state}) => {\n\n if (attrs.onDrag && !attrs.readonly) {\n\n const\n hammer = state.hammer = new Hammer.Manager(dom, {touchAction: \"pan-y\"}),\n panner = new Hammer.Pan({direction: Hammer.DIRECTION_VERTICAL}),\n singleTap = new Hammer.Tap();\n\n hammer.add([panner, singleTap]);\n hammer.on(\"tap\", () => vnode.state.attrs.onClick());\n hammer.on(\"panup\", (e) => vnode.state.attrs.onDrag(-1, e.srcEvent));\n hammer.on(\"pandown\", (e) => vnode.state.attrs.onDrag(1, e.srcEvent));\n hammer.on(\"panend pancancel\", (e) => vnode.state.attrs.onDrag(0, e.srcEvent));\n }\n if (attrs.focus) {\n dom.focus();\n }\n },\n onremove: ({state}) => {\n state.hammer && state.hammer.destroy();\n }\n },\n attrs.value\n );\n }\n },\n InputWidget = {\n view: ({attrs, state}) => {\n const reset = (redraw) => {\n // if (state.value !== undefined && state.showInput) delete state.showInput;\n if (state.value && state.showInput) delete state.showInput;\n delete state.value;\n if (redraw) m.redraw();\n },\n inputActions = [\n ...(attrs.multi && !attrs.alwaysmulti && (!attrs.type || attrs.type === \"text\"))\n ? [\n m(ButtonNew, {\n icon: state.multi ? \"angle-double-up\" : \"angle-double-down\",\n class: \"pad-2 transp inputaction\",\n onClick: () => {\n state.multi = !state.multi;\n m.redraw();\n }\n })\n ]\n : [],\n\n ...attrs.actions ? attrs.actions.map((action) => m(ButtonNew, {\n ...action,\n class: \"inputaction transp pad-2\"\n })) : [],\n\n ...attrs.action\n ? [\n m(ButtonNew, {...attrs.action, class: \"inputaction transp pad-2\"})\n ] : []\n ];\n\n return m(\n \".textfield.flexcol.relative\",\n {\n class: (attrs.label ? \"witharia\" : \"\") + (attrs.containerClass ? \" \" + attrs.containerClass : \"\"),\n ...attrs.label && {\"aria-label\": attrs.label}\n },\n m(\".textfieldinner.flexrow\", [\n (attrs.staticField && (attrs.readonly || !state.showInput))\n ? m(StaticFieldWidget, {\n readonly: attrs.readonly,\n staticClass: (state.dragging ? \"accent \" : \"\") + (attrs.staticClass || \"\"),\n staticTitle: attrs.staticTitle || attrs.draginc && \"Click then drag up and down to modify value, or just click to enter a custom value\",\n value: attrs.displayTitle || getValue(attrs, state),\n focus: attrs.focus,\n ...attrs.draginc && !attrs.readonly && {\n onDrag: (direction, event) => {\n if (direction) {\n state.dragging = true;\n let value = getValue(attrs, state, true);\n if (Number.isNaN(value) || value === undefined) return;\n value += direction * attrs.draginc;\n if (attrs.max !== undefined && value > attrs.max) value = attrs.max;\n if (attrs.min !== undefined && value < attrs.min) value = attrs.min;\n state.value = attrs.type === \"number\" ? value : String(value);\n attrs.onchange(state.value, event);\n } else {\n delete state.dragging;\n delete state.value;\n m.redraw();\n }\n }\n },\n ...attrs.readonly || {\n onClick: () => {\n state.showInput = true;\n state.value = attrs.value;\n m.redraw();\n }\n }\n })\n\n : ((state.multi || attrs.alwaysmulti) && (!attrs.type || attrs.type === \"text\"))\n ? m(\"textarea.w-100\", {\n class: attrs.class,\n value: getValue(attrs, state),\n ...attrs.title && {title: attrs.title},\n placeholder: attrs.hint || \"\",\n oninput: (event) => {\n state.value = getInput(attrs, event.target.value);\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n if (attrs.onchange) {\n (attrs.oninput || attrs.onchange)(state.value, event, true);\n }\n },\n onchange: (event) => {\n if (attrs.onchange) {\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n const value = getInput(attrs, event.target.value);\n reset(false);\n attrs.onchange(value, event, true);\n }\n },\n onblur: () => {\n if (state.showInput) {\n reset(true);\n }\n },\n onkeyup: (event) => {\n if (event.key === \"Escape\" && state.showInput) {\n reset(false);\n }\n }\n })\n : m(\"input.w-100\", {\n ...attrs.id && {id: attrs.id},\n type: attrs.type || \"text\",\n ...attrs.max !== undefined && {max: attrs.max},\n ...attrs.min !== undefined && {min: attrs.min},\n ...attrs.step > 0 && {step: attrs.step},\n ...attrs.maxlength && {maxlength: attrs.maxlength},\n class: (attrs.class || \"\") + (attrs.validator ? state.isValid ? \" bg-ok\" : \" bg-error\" : \"\"),\n ...attrs.title && {title: attrs.title},\n value: getValue(attrs, state),\n placeholder: attrs.hint || \"\",\n ...attrs.readonly\n ? {\n readonly: \"readonly\"\n }\n : {\n oninput: (event) => {\n state.value = getInput(attrs, event.target.value);\n event.fromoninput = true;\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n if (attrs.onchange) {\n (attrs.oninput || attrs.onchange)(state.value, event);\n }\n },\n onchange: (event) => {\n if (attrs.onchange) {\n if (attrs.validator) state.isValid = attrs.validator(state.value);\n event.enterPressed = state.enterPressed;\n delete state.enterPressed;\n attrs.onchange(getInput(attrs, event.target.value), event);\n if (attrs.staticField) {\n reset(true);\n } else {\n delete state.value;\n }\n }\n },\n onblur: () => {\n if (state.showInput) {\n reset(true);\n }\n },\n onkeyup: (event) => {\n if (state.showInput) {\n if (event.key === \"Escape\") {\n reset(true);\n } else if (event.key === \"Enter\") {\n if (state.value === attrs.value || !state.value) {\n attrs.onchange(attrs.value, event);\n reset(true);\n }\n }\n }\n },\n onbeforeinput: (e) => {\n if (attrs.subtype === \"number\" && e.data && !/^[0-9.\\-]$/.test(e.data)) {\n e.preventDefault(); // nothing but 0-9 or “.” gets through\n }\n },\n inputmode: attrs.subtype === \"number\" ? \"decimal\" : undefined, // nicer mobile keyboard\n onkeypress: (event) => {\n if (!state.showInput && event.key === \"Enter\") {\n attrs.onenter && attrs.onenter(event.target.value, event);\n }\n }\n },\n }),\n\n ...inputActions.length ? [m(\".span.actions\", inputActions)] : [],\n ]));\n },\n oninit: ({attrs, state}) => {\n if (attrs.staticField && attrs.draginc) {\n const value = getValue(attrs, state, true);\n state.showInput = (Number.isNaN(value) || value === undefined || value === null);\n }\n }\n };\n\nexport default InputWidget;\n","import m from \"mithril\";\nimport {Icon, defineWidget} from \"./Basic\";\n\nconst\n NoticeWidget = defineWidget(\n ({attrs, children}) => (\n children.length\n ? m(\n \".notice.cardie.flexcol.pad-3\",\n {class: attrs.class || \"marg-2 font-75\"},\n m(\n \".flexrow\",\n [\n ...attrs.icon ? [m(Icon, attrs)] : [],\n m(\".pad-2.pad-h\", attrs.text)\n ]\n ),\n ...children\n )\n : m(\n \".notice.cardie.flexrow.pad-3\",\n {class: attrs.class || \"marg-2 font-75\", onclick: attrs.onClick},\n [\n ...attrs.icon ? [m(Icon, attrs)] : [],\n (attrs.texts || [attrs.text]).map((t) => m(\".pad-2.pad-h\", t))\n ]\n )\n )\n );\n\nexport default NoticeWidget;\n","import m from \"mithril\";\nimport \"./css/combo-ellipsis.css\"\n\nconst\n PropGroup = {\n view: ({attrs}) => attrs.items.map(({name}, index) => m(\n \"option\",\n {\n ...(attrs.state.index === index + (attrs.offset || 0)) && {selected: true}\n },\n name\n ))\n };\n\nlet\n __timer;\n\nfunction parseGroups(attrs, state) {\n\n if (attrs.groups) {\n\n state.groups = {};\n state.allItems = [];\n\n attrs.parsed = true;\n\n const\n groupKeys = Object.keys(attrs.groups);\n\n groupKeys.forEach((groupKey) => {\n state.groups[groupKey] = {\n label: groupKey,\n len: attrs.groups[groupKey].length,\n items: attrs.groups[groupKey]\n };\n });\n\n const\n groupValues = Object.values(state.groups);\n\n groupValues\n .forEach((group, index) => {\n\n if (attrs.value) {\n state.index = 0;\n }\n\n group.offset = index ? groupValues[index - 1].offset + groupValues[index - 1].len : 0;\n state.allItems = state.allItems.concat(group.items);\n if (attrs.value) {\n\n group.items.forEach((item, itemIndex) => {\n const\n itemValue = item.value,\n parsedValue = attrs.parser ? attrs.parser(itemValue) : itemValue;\n if (parsedValue === attrs.value) {\n state.index = itemIndex + group.offset;\n }\n });\n }\n });\n } else if (attrs.items) {\n state.index = 0;\n for (let i = 0, l = attrs.items.length; i < l; i++) {\n const\n itemValue = attrs.items[i].value,\n parsedValue = attrs.parser ? attrs.parser(itemValue) : itemValue;\n if (parsedValue === attrs.value) {\n state.index = i;\n break;\n }\n }\n state.allItems = attrs.items;\n } else {\n state.allItems = [];\n }\n\n}\n\nconst ComboWidget = {\n\n /**\n * Creates the Widget View\n * @param vnode\n * @param {SelectAttrs} vnode.attrs\n * @param {Object} vnode.state\n * @return {*}\n * @private\n */\n\n\n view: ({attrs, state}) => {\n const {groups} = state;\n return m(\n \"select\",\n {\n \"aria-label\": attrs.caption,\n class: attrs.class,\n oninput: (ev) => {\n\n // el desincronismo es si se camian los items y el state no se entera\n // esto asegura que estan synchro\n parseGroups(attrs, state);\n\n const\n index = state.index = ev.target.selectedIndex,\n item = index >= 0 ? state.allItems[index] : null;\n\n if (attrs.onchange && item) {\n attrs.onchange(item.value, item, index);\n }\n\n m.redraw();\n }\n },\n groups\n ? Object.values(groups)\n .map((group) => m(\"optgroup\", {label: group.label}, m(PropGroup, {\n items: group.items,\n offset: group.offset,\n state\n })))\n : m(PropGroup, {items: (attrs.items != null ? attrs.items : []), state}));\n },\n\n oninit: ({attrs, state}) => {\n Object.assign(state, {\n index: attrs.index || 0,\n initial: attrs.value\n });\n parseGroups(attrs, state);\n },\n\n oncreate: () => {\n },\n\n onupdate: ({attrs, state}) => {\n\n const refresh = (attrs.value !== undefined && state.initial !== attrs.value);\n\n if (!state.groups && !state.allItems || refresh) {\n\n // sets index from attrs.value\n parseGroups(attrs, state);\n\n if (refresh) {\n state.initial = attrs.value;\n clearTimeout(__timer);\n __timer = setTimeout(() => m.redraw(), 50);\n }\n }\n\n }\n};\n\nexport default ComboWidget;\n","import m from \"mithril\";\n\nlet\n mCurrentCancelable;\n\nfunction runCancelable(container) {\n if (typeof mCurrentCancelable === \"function\") {\n mCurrentCancelable();\n mCurrentCancelable = undefined;\n }\n if (popupMessage.redraw) {\n popupMessage.redraw(true);\n delete popupMessage.redraw;\n }\n container.style.display = \"none\";\n}\n\n\n// There are ways of doing this inside m.route but it is probably\n// cleaner and faster when kept outside of the main auto\n// rendering system\n\nfunction popupMessage(message, cancelable = false, contentClass = \".modal-content\") {\n\n const container = document.getElementById(\"modal-container\");\n container.classList.toggle(\"iscustom\", contentClass !== \".modal-content\");\n\n if (cancelable) {\n\n mCurrentCancelable = cancelable;\n\n container.onclick = (event) => {\n if (event.target.id === \"modal-container\") {\n runCancelable(container);\n }\n };\n }\n\n if (!message) {\n\n if (popupMessage.redraw) {\n popupMessage.redraw(true);\n delete popupMessage.redraw;\n }\n if (message === null)\n container.style.display = \"none\";\n else\n runCancelable(container);\n\n return;\n }\n\n container.style.display = \"flex\";\n\n popupMessage.redraw = (remove) => {\n m.render(\n container,\n m(contentClass, {\n role: \"alertdialog\",\n \"aria-labelledby\": \"modaltitle\",\n \"aria-modal\": true\n }, remove || !message ? [] : [\n typeof message === \"function\" ? message() : message\n ])\n );\n };\n popupMessage.redraw();\n}\n\nfunction clearModal() {\n const container = document.getElementById(\"modal-container\");\n if (container.style.display !== \"none\") {\n runCancelable(container);\n return true;\n }\n return false;\n}\n\nexport {popupMessage, clearModal};\n","/* eslint-disable */\n/**\n *\n * String Tokenizer functions\n *\n * Substitutes parameters inside strings\n * Parameters are separated by $ at the beggining and end: $PARAM$, $PARAM1$\n * Parameters can navigate source object like $object/very/deep$\n * Parameters can include VERY SIMPLE default values like $object/very/deep=myvalue$\n *\n * Note that default values cannot contain conflicting regexp symbols. This is a side functionality\n * and never meant to support any default value use case, but alpha chars and numbers\n *\n * (c) Rodolfo LP 2001 - Public Domain\n *\n * @typedef {{ id:string,url:string}} UrlDefinition\n * @typedef {{ message:string, getTitle:boolean=false, defaultTitle:string=\"url\" }} ResolveUrlOptions\n */\n\n/* eslint-disable no-use-before-define,no-unused-vars,prefer-destructuring,no-param-reassign,no-prototype-builtins */\n\n// eslint-disable-next-line no-useless-escape\n// noinspection RegExpRedundantEscape\nconst\n TAG = \"[TOKENIZER]\",\n TOK_EXPR = /\\$([A-Za-z0-9_\\/\\:\\=]+)\\$/g,\n\n tokenize = (str, obj, isEncode) => tokenizeCore(str, obj, {\n encode: isEncode,\n defvalue: \"\"\n }),\n tokenizeKeep = (str, obj, isEncode) => tokenizeCore(str, obj, {encode: isEncode}),\n tokenizeWithDefault = (str, obj, defaultValue) => tokenizeCore(str, obj, defaultValue == null ? null : {defvalue: defaultValue}),\n tokenizeStrict = (str, obj, isEncode, isUnescape) => tokenizeCore(str, obj, {\n encode: isEncode,\n unescape: isUnescape,\n dothrow: true\n }),\n\n Parsers = {\n daterel: epoch => new Date(epoch).toISOString()\n };\n\nfunction tokenizeCore(str, obj, options) {\n\n if (!str) return \"\";\n if (typeof (str) !== \"string\") return str;\n\n // eslint-disable-next-line no-param-reassign\n options = options || {};\n obj = obj || {};\n\n let ckey;\n\n return str.replace(TOK_EXPR, (match, complexkey) => {\n\n let defval = null,\n isFreak = false;\n\n if (complexkey.indexOf(\"=\") > 0) {\n ckey = complexkey.split(\"=\");\n complexkey = ckey[0];\n isFreak = (ckey.length === 3);\n // eslint-disable-next-line no-nested-ternary\n defval = isFreak\n ? options.dothrow ? ckey[2] : null\n : ckey[1];\n }\n\n const typed = complexkey.split(\":\"),\n key = typed[0],\n keytype = typed[1] || null,\n\n keys = key.split(\"/\"),\n root = keys.shift();\n\n let\n data = obj[root];\n\n if (typeof (data) === \"number\") data = \"\" + data;\n\n let fdata = (keys.length ? getPointedData(data, keys.join(\"/\")) : data) || defval;\n\n if (fdata == null && options.dothrow) {\n throw new Error(\"Parameter \" + root + (keys.length ? \"/\" + keys.join(\"/\") : \"\") + \" is required\");\n }\n\n if (fdata == null) {\n fdata = options.hasOwnProperty(\"defvalue\")\n ? options.defvalue\n : \"$\" + key + (isFreak ? \"==\" + ckey[2] : \"\") + \"$\";\n }\n\n if (keytype && Parsers[keytype]) {\n fdata = Parsers[keytype](fdata);\n }\n\n if (options.unescape) {\n fdata = unescape(fdata);\n }\n\n return (options.encode ? escape(fdata) : fdata);\n\n });\n}\n\n/**\n * Resolves a pointer into a JSON data structure\n * @param {Object} data JSON Data\n * @param {String} pointer Pointer expression\n * @return {Object | null} resolved data\n */\n\nconst getPointedData = function (data, pointer) {\n if (!pointer) return data;\n try {\n const ps = pointer.split(\"/\");\n let d = data;\n // eslint-disable-next-line guard-for-in\n for (const l in ps) {\n d = d[ps[l]];\n if (!d) {\n d = null;\n break;\n }\n }\n return d;\n } catch (e) {\n return null;\n }\n};\n\n/**\n * Tokenizes one object with another\n * @param {object} source\n * @param {object} tokenizeValues\n * @param strict Whether to require all templates to be resolved\n * @retuen {object} source\n */\n\nfunction tokenizeObject(source, tokenizeValues, strict, asNewObject) {\n\n const tokenizer = strict ? tokenizeStrict : tokenizeKeep;\n const retObject = asNewObject ? {} : source;\n\n if (typeof source === \"string\") {\n return tokenizer(source, tokenizeValues);\n }\n\n if (typeof source === \"object\") {\n\n if (source.length) {\n // root is an array\n // an array\n const arr = [];\n for (const item of source) {\n arr.push(tokenizeObject(item, tokenizeValues, strict, true));\n }\n return arr;\n }\n\n for (const prop of Object.keys(source)) {\n const value = source[prop];\n if (typeof value === \"object\") {\n retObject[prop] = tokenizeObject(value, tokenizeValues, strict, true);\n } else if (typeof value === \"string\") {\n retObject[prop] = tokenizer(source[prop], tokenizeValues);\n } else {\n retObject[prop] = value;\n }\n }\n }\n return retObject;\n}\n\n/**\n * Resolves a playout URL\n * @param {string|UrlDefinition} tokenizedUrl The URL to parse\n * @param {Object=} parameters Parameters to tokenize the URL with\n * @param {ResolveUrlOptions=} options Miscellaneous options for this call\n * @return string\n */\n\nfunction tokenizeUrl(tokenizedUrl, parameters, options) {\n\n options = options || {};\n\n const\n {message, getTitle, defaultTitle} = options,\n finalDefaultTitle = defaultTitle || \"Url\",\n title = typeof tokenizedUrl === \"string\"\n ? defaultTitle\n : (typeof tokenizedUrl === \"object\" && tokenizedUrl.id ? tokenizedUrl.id || finalDefaultTitle : finalDefaultTitle);\n\n\n // just return the title of an URL\n if (getTitle) {\n return title;\n }\n\n // return the url itself\n const\n url = typeof tokenizedUrl === \"string\"\n ? tokenizedUrl\n : (typeof tokenizedUrl === \"object\" && tokenizedUrl.url ? tokenizedUrl.url : null);\n\n try {\n return tokenizeStrict(\n url,\n parameters || {},\n \"...\"\n );\n } catch (e) {\n console.log(TAG, e.message);\n return message || \"(not enough parameters)\";\n }\n}\n\nconst\n REGEX_DOTS = /[^0-9A-Z._\\-]+/gi,\n REGEX_NODOTS = /[^0-9A-Z_\\-]+/gi;\n\nfunction sanitizeFilename(filename, withDots = true) {\n // EDGE CASE -> NO DOT AT THE END\n withDots = withDots && !filename?.endsWith(\".\");\n return filename ? filename.trim()\n .toLowerCase()\n .replace(withDots ? REGEX_DOTS : REGEX_NODOTS, \"\") : null;\n}\n\n\nconst generateFilename = (url, prefix = undefined) => {\n\n const\n dateCode = parseInt(md5(url)\n .substring(24), 16)\n .toString(32);\n\n return (prefix ? sanitizeFilename(prefix) + \"-\" : \"\") + dateCode;\n\n}; // 2025 --- 24 years layer i'm 50 ! I wonder about my past self ...\n\nconst Tokenizer = {\n tokenize,\n tokenizeStrict,\n tokenizeObject,\n tokenizeKeep,\n tokenizeWithDefault,\n tokenizeUrl,\n getPointedData,\n sanitizeFilename,\n generateFilename\n};\n\nexport default Tokenizer;\nexport {\n tokenize,\n tokenizeStrict,\n tokenizeObject,\n tokenizeKeep,\n tokenizeWithDefault,\n tokenizeUrl,\n getPointedData,\n sanitizeFilename,\n generateFilename\n};\n","/* eslint-disable no-nested-ternary */\n/**\n * Basic Mithril Widget functions\n * Provides some utilities and basic UI functions like an Alert or a Confirmation dialog\n *\n * @author Rodolfo Lopez Pintor, 2020 <rlp@nebular.tv>\n * @module apps.widgets.basic\n *\n */\nimport m from \"mithril\";\nimport * as widget from \"./widgets\";\nimport * as Tokenizer from \"./util.tokenizer\";\nimport {Button, Empty} from \"../widgets/Basic\";\n\n/**\n *\n * Computes a Class String\n *\n * @param {string} initials INitial CSS Classes\n * @param {Object<string, boolean>} clases New classes dictionary\n * @return {string} The CSS Class expression like .class1.class2.class3\n * @public\n * @static\n */\n\nconst packClassString = (initials, clases) => {\n const finals = [];\n if (clases) for (const cla of Object.keys(clases)) if (clases[cla]) finals.push(\".\" + cla);\n return (initials || \"\") + finals.join(\"\");\n};\n\n\nconst packClass = (initials, clases) => {\n const finals = initials ? [initials] : [];\n if (clases) for (const cla of Object.keys(clases)) if (clases[cla]) finals.push(cla);\n return finals.join(\" \");\n};\n\n/**\n * Shows a modal confirm dialog\n * @param {string} title The dialog title\n * @param {string} message The dialog message\n * @param {Array} buttons Buttons to display\n * @param {Object=} options noCancel: dialog is uncanellable\n * @public\n * @static\n */\n\nfunction Confirm(title, message,\n buttons = [\"CANCEL\", \"OK\"], options = {}\n) {\n widget.popupMessage(\n m(\n {\n view: () => [\n ...title ? [m(\"h3\", title)] : [],\n ...message ? [m(\"h4\", message)] : [],\n m(\".container\",\n buttons.map(\n option => m(\n \"button\",\n {\n onclick: () => {\n document.getElementById(\"modal-container\").style.display = \"none\";\n if (option.onclick) option.onclick(option.caption);\n }\n },\n option.caption || \"OK\"\n )\n ))\n ]\n },\n {}\n ),\n options.onCancel || !options.noCancel\n );\n}\n\nfunction ConfirmPromise(title, message, actions, isModal = false) {\n\n let onCancel = undefined;\n\n if (typeof isModal === \"function\") {\n onCancel = isModal;\n isModal = false;\n }\n\n return new Promise((resolve) => {\n\n const opts = actions.map((name, idx) => ({\n caption: name,\n onclick: () => resolve({\n idx,\n name\n })\n }));\n\n Confirm(title, message, opts, {\n onCancel,\n noCancel: isModal\n });\n });\n}\n\n/**\n * Shows An Alert Modal Dialog\n * @param {string} title Dialog Title\n * @param {string} message Dialog Message\n * @param {string?} caption Button caption\n * @param {function?} onclick On press handler\n * @public\n * @static\n */\n\nfunction Alert(title, message, caption, onclick) {\n return Confirm(title, message, [{caption, onclick}]);\n}\n\n\nfunction OverflowMenu(domItem, item, actions, options) {\n\n return new Promise((resolve) => {\n\n options = options || {};\n\n function closeResolve(value) {\n widget.popupMessage(null);\n try {\n resolve(value);\n } catch (e) {\n //\n }\n }\n\n const\n classes = packClassString(\".popup.flexcol\", {\n \".favlist\": options.favlist,\n \".isfav\": domItem && domItem.classList.contains(\"isfav\"),\n \".isplay\": domItem && domItem.classList.contains(\"selected\")\n });\n\n widget.popupMessage(\n m({\n view: () => m(\n classes,\n {\n onclick: (event) => {\n\n if (event.target.nodeName === \"INPUT\") {\n return;\n }\n\n const\n action = event.target.getAttribute(\"data-action\");\n\n if (action) {\n closeResolve({\n domItem,\n item,\n action\n });\n } else {\n widget.popupMessage(null);\n }\n }\n },\n [\n ...item.title ? [m(\"h3\", {id: \"modaltitle\"}, item.title)] : [],\n ...actions.map(action => (action.type === \"text\"\n ? m(\n \"input.action\",\n {\n value: action.value || \"\",\n type: \"text\",\n placeholder: action.hint || \"\",\n oncreate: ({dom}) => dom.focus(),\n onkeyup: (ev) => {\n if (ev.keyCode === 27) {\n closeResolve({domItem, item, action});\n }\n },\n onchange: (ev) => {\n ev.target.blur();\n closeResolve({\n domItem,\n item,\n action,\n value: ev.target.value\n });\n }\n }\n )\n : m(\n Button,\n {\n ...action,\n onclick: () => closeResolve({\n domItem,\n item,\n action\n })\n },\n action.caption\n )))\n ]\n )\n }),\n true\n );\n });\n}\n\n/**\n * Creates an HTML UL/LI structure with the object properties\n * @param {Object} object An object to render\n * @param {RenderOptions?} options\n * @param {Object[]} children additional vnodes\n * @param {string} recurse parent key\n * @param isArrayChild\n * @return {m} The rendered view\n * @public\n * @static\n */\n\nfunction RenderObject(object, options, children, recurse, isArrayChild = false) {\n\n // noinspection JSValidateTypes\n options = options || {};\n const {arrayClass = \"isarray\", arrayChildClass = \"ischildren\", objectClass = \"isobject\"} = options;\n\n return m(\n \"ul\",\n {\n ...(options.attrs || {}),\n class: options.class\n },\n object\n ? [\n ...(options.keys || Object.keys(object))\n .map((key) => {\n\n const\n value = object[key] || null,\n isObject = value !== null && (typeof value === \"object\"),\n isArray = isObject && value.length,\n fullkey = (recurse ? recurse + \"_\" : \"\") + key;\n\n return m(\n \"li.field_\" + (options.start || \"\") + fullkey,\n {\n class: (isArray ? arrayClass : isObject ? (objectClass + \" \") : \"\") + (isArrayChild ? arrayChildClass : \"\"),\n \"data-title\": options.titles ? options.titles[key] || key : key,\n ...(options.itemAttrs || {})\n },\n // eslint-disable-next-line\n isObject\n ? [\n m(\".subvalues\",\n RenderObject(\n value,\n {\n ...options,\n keys: null\n },\n null,\n (recurse ? recurse + \"_\" : \"\") + key,\n isArray\n ))]\n : (\n (options.renderer && options.renderer[fullkey])\n ? options.renderer[fullkey](value)\n : m(\"span.value\", object[key])\n )\n );\n }),\n ...children || []\n ]\n : [\n m(\".empty\", {})\n ]\n );\n\n}\n\n\nconst\n JSONWidget = {\n view:\n ({attrs, children}) => {\n let object;\n try {\n object = attrs.pointer\n ? Tokenizer.getPointedData(attrs.object, attrs.pointer)\n : attrs.object;\n } catch (e) {\n return m(Empty, {message: e.message, ...attrs});\n }\n\n return object\n ? RenderObject(object, attrs, children)\n : m(Empty, attrs);\n }\n };\n\n// noinspection JSUnusedGlobalSymbols\nexport {\n Alert,\n Confirm,\n ConfirmPromise,\n RenderObject,\n OverflowMenu,\n JSONWidget,\n packClass\n}\n","import {ConfirmPromise} from \"./widgets.core\";\n\nfunction confirm(text, onAction, onCancel = undefined, optionYes = \"YES\", optionNo = \"NO\") {\n confirmPromise(text, [optionNo, optionYes], onCancel)\n .then((idx) => {\n if (idx) onAction(idx); else if (onCancel) onCancel();\n })\n .catch(() => {\n if (onCancel) onCancel();\n });\n}\n\nfunction confirmPromise(text, options = [\"NO\", \"YES\"], cancelError = \"cancelled\") {\n\n return new Promise((resolve, reject) => {\n ConfirmPromise(null, text, options, () => reject(new Error(cancelError)))\n .then(({idx}) => {\n if (idx >= 0) {\n resolve(idx);\n } else {\n reject(new Error(cancelError));\n }\n });\n });\n\n}\n\nexport {confirm, confirmPromise};\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport {Icon} from \"./Basic\";\n\nconst\n SwitchWidget = defineWidget(\n ({attrs, state}) => m((attrs.unit || \"\") + \".flexrow\" + (attrs.subline ? \" withsubline\" : \"\"),\n {\n class: attrs.class,\n text: attrs.text,\n title: attrs.title || null,\n onclick: () => {\n state.checked = !state.checked;\n if (attrs.onchange) {\n attrs.onchange(state.checked);\n }\n m.redraw();\n }\n },\n attrs.right\n ? [\n ...attrs.text ? [m(\"span.grows.caption\", attrs.subline ? {\"data-subline\": attrs.subline} : {}, attrs.text)] : [],\n m(Icon, {iconClass: \"pad-2 pad-h\", icon: state.checked ? \"toggle-on\" : \"toggle-off\"})\n ]\n : [\n m(Icon, {iconClass: \"pad-2 pad-h\", icon: state.checked ? \"toggle-on\" : \"toggle-off\"}),\n ...attrs.text ? [m(\"span.grows.caption\", attrs.subline ? {\"data-subline\": attrs.subline} : {}, attrs.text)] : []\n ]),\n ({attrs, state}) => {\n state.checked = state.original = attrs.checked;\n },\n null,\n null,\n ({attrs, state}) => {\n if (attrs.checked !== state.original) {\n state.checked = state.original = attrs.checked;\n m.redraw();\n }\n }\n );\n\nexport default SwitchWidget;","const\n ENABLE_SCLONE = true, // atm SLOWER than JSON\n softClone = (o) => JSON.parse(JSON.stringify(o)),\n clone = window.structuredClone && ENABLE_SCLONE\n ? window.structuredClone\n : softClone;\n\nexport default clone;\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport * as widget from \"../util/widgets\";\nimport {Icon, Notification, ButtonNew} from \"./Basic\"\nimport {OverflowMenu} from \"../util/widgets.core\";\nimport SwitchWidget from \"../widgets/SwitchWidget\";\nimport InputWidget from \"../widgets/InputWidget\";\nimport Notice from \"../widgets/NoticeWidget\";\nimport clone from \"../util/util.clone\"\n\nfunction choose(items, config = {\n icon: \"circle\", onSelect: () => {\n }\n}) {\n\n const\n {icon, title, field, onSelect, parser = (v) => v} = config,\n options = items.map((item, index) => ({\n icon: field && item.icon || icon,\n // WARNING !!!!!\n caption: parser(field ? item[field] : item, item),\n // caption: idField ? item[idField] : item,\n onClick: (e) => onSelect(item, e, index)\n }));\n\n if (Array.isArray(items) && !items.length) {\n Notification.add(\"No items available\");\n } else {\n OverflowMenu(\n document.body,\n {title},\n options\n )\n .then(({action}) => action.onClick());\n }\n}\n\nfunction promptOptions(items, onchange, options = {}) {\n\n const\n {title, field, icon, textNew, textHint, resolve} = options,\n dialogOptions = Array.isArray(items)\n ? items.map((item) => ({\n icon,\n // WARNING !!!!!\n caption: field ? item[field] : item,\n // caption: idField ? item[idField] : item,\n onClick: (e) => onchange(item, e)\n }))\n : Object.keys(items)\n .map((key) => ({\n icon: items[key].icon || icon,\n caption: items[key].caption || key,\n onClick: (e) => onchange(\n resolve && items[key].value !== undefined\n ? items[key].value\n : items[key],\n e)\n }));\n\n if (Array.isArray(items) && !items.length) {\n Notification.add(\"No items available\");\n } else {\n OverflowMenu(\n document.body,\n {title},\n [\n ...textNew && !field\n ? [\n {\n icon: \"plus\",\n caption: textNew,\n onClick: () => promptName(\n textNew,\n \"\",\n textHint,\n (value) => {\n if (value) {\n if (value && value.trim()) {\n onchange(value);\n m.redraw();\n }\n }\n }\n )\n }\n ]\n : [],\n ...dialogOptions\n ]\n )\n .then(({action}) => action.onClick())\n .finally(() => {\n });\n }\n}\n\nfunction promptName(title, value, hint, action, state = {}) {\n setTimeout(() => OverflowMenu(\n document.body,\n {title},\n [\n {\n type: \"text\",\n hint,\n value\n }\n ]\n )\n .then(({value: val}) => {\n state.refreshKey = String(Date.now());\n return action(val);\n }), 100);\n}\n\nconst\n WHAT_DO_UPDATE_LIGHTS = 0, // 0\n WHAT_DO_UPDATE_FACE = 1, // 1\n WHAT_DO_UPDATE_PARTICLES = 2, // 4\n WHAT_DO_UPDATE_SEGMENTATION = 3,\n WHAT_DO_UPDATE_VAL_VPLANE = 4,\n WHAT_DO_UPDATE_VAL_PANO = 5,\n WHAT_DO_UPDATE_VAL_FREE = 6,\n WHAT_DO_UPDATE_VAL_DRONE = 7,\n WHAT_DO_UPDATE_VAL_TRANSITION = 8,\n WHAT_DO_UPDATE_TVFX = 9,\n WHAT_DO_UPDATE_VAL_FOLLOW = 10,\n\n PROPERTIES = [\n [\"Lights and Fog\", null, [\"amblight\", \"l0\", \"l1\", \"l2\", \"l3\", \"fog\"], WHAT_DO_UPDATE_LIGHTS],\n [\"Face and Accessories\", null, [\"facekit\"], WHAT_DO_UPDATE_FACE],\n [\"Particle settings\", null, [\"particles\"], WHAT_DO_UPDATE_PARTICLES],\n [\"Video Segmentation\", \"common\", [\"segcam\", \"mask\", \"green\"], WHAT_DO_UPDATE_SEGMENTATION, true],\n [\"Video Effects\", null, [\"fxconfig\"], WHAT_DO_UPDATE_TVFX],\n [\"Video Plane\", \"val\", [\"xvideo\", \"yvideo\", \"zvideo\", \"rvideo\", \"svideo\", \"video\"], WHAT_DO_UPDATE_VAL_VPLANE],\n [\"Main Camera\", \"val\", [\"ypos\", \"xpos\", \"zoom\", \"yaw\", \"pitch\", \"roll\", \"ai\"], WHAT_DO_UPDATE_VAL_PANO],\n [\"Drone Camera\", \"val\", [\"free\"], WHAT_DO_UPDATE_VAL_FREE],\n [\"Followed Agent\", \"val\", [\"track\"], WHAT_DO_UPDATE_VAL_FOLLOW],\n [\"Game Camera\", \"val\", [\"orbit\", \"track\", \"ocam\"], WHAT_DO_UPDATE_VAL_DRONE, undefined, true],\n [\"Transition Speed\", \"val\", [\"spd\"], WHAT_DO_UPDATE_VAL_TRANSITION]\n ],\n\n TitleBarWidget = defineWidget(\n ({attrs}) => m(\"h2.marg-2.no-marg-bottom\", attrs.title)\n ),\n EntityTemplates = defineWidget(\n ({attrs}) => {\n\n const\n {type = \"changes\", meta, onInput, title, options} = attrs,\n valid = meta.title?.trim().length && meta.description?.trim().length,\n embedded = options && options.embedded;\n\n return m(\".flexcol.grows.ohidden.fadein\", [\n ...attrs.title ? [\n m(TitleBarWidget, {\n title\n })] : [],\n m(\".flexrow.wrap.grows.pad-3.propsgroup.scrolly\", [\n ...attrs.notice ? [\n m(Notice, {\n class: \"marg-1 marg-v withbottommargin font-75 col-12\",\n size: 1,\n icon: \"info-circle\",\n text: attrs.notice\n })\n ] : [],\n m(\n \".witharia.col-12.pad-1.pad-v\",\n {\"aria-label\": type + \" name\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh \" + (valid ? \"valid\" : \"invalid\"),\n value: meta.title,\n maxlength: 64,\n onchange: (newvalue) => {\n meta.title = newvalue;\n m.redraw();\n }\n })\n ),\n ...embedded ? []\n : [\n m(\n \".col-12.witharia.pad-1.pad-v\",\n {\"aria-label\": \"description\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh \" + (meta.description ? \"valid\" : \"invalid\"),\n value: meta.description,\n maxlength: 240,\n multi: true,\n alwaysmulti: true,\n onchange: (newvalue) => {\n meta.description = newvalue;\n m.redraw();\n }\n })\n ),\n m(\n \".col-8.witharia.pad-1.pad-v\",\n {\"aria-label\": \"tags\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.tags,\n maxlength: 128,\n onchange: (newvalue) => {\n meta.tags = newvalue.toLowerCase()\n .split(\" \")\n .join(\",\")\n .split(\",\")\n .filter((tag) => tag.length)\n .join(\",\");\n }\n })\n ),\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"youtube video\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.ytref || \"\",\n hint: \"YouTube ID\",\n maxlength: 16,\n onchange: (newvalue) => {\n newvalue = newvalue.trim();\n if (newvalue) {\n if (newvalue.indexOf(\" \") === -1) {\n meta.ytref = newvalue.trim();\n }\n } else {\n delete meta.ytref;\n }\n }\n })\n )\n ],\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"content attribution\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.author,\n hint: \"author name\",\n maxlength: 128,\n onchange: (newvalue) => {\n meta.author = newvalue;\n }\n })\n ),\n\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"license or author link\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n hint: \"https://...\",\n value: meta.link,\n maxlength: 128,\n onchange: (newvalue) => {\n meta.link = newvalue;\n }\n })\n ),\n m(\n \".col-4.witharia.pad-1.pad-v\",\n {\"aria-label\": \"source domain\"},\n m(InputWidget, {\n class: \"pad-2 pad-xh\",\n value: meta.source,\n hint: \"example.com\",\n maxlength: 128,\n onchange: (newvalue) => {\n meta.source = newvalue;\n }\n })\n ),\n\n m(\n \".col-12.al-right.marg-2.marg-v\",\n m(ButtonNew, {\n class: \"noshrink accentbutton unitheightsmall col-4\",\n text: \"save \" + type,\n onClick: () => {\n\n const isValid = meta.title?.trim().length && (embedded || meta.description?.trim().length);\n\n if (isValid) {\n widget.popupMessage(null);\n onInput(meta);\n } else {\n Notification.add(\"Information is incomplete or invalid\");\n }\n }\n })\n )\n ])\n ]);\n }\n ),\n promptEntity = (meta, title, type, options = {}) => new Promise((resolve, reject) => {\n widget.popupMessage(\n m(EntityTemplates, {\n meta,\n type,\n title,\n options,\n onInput: (newMeta) => resolve(newMeta)\n }),\n () => {\n reject(new Error(\"cancelled\"));\n }\n );\n }),\n PresetTemplate = defineWidget(\n ({attrs}) => {\n\n const\n\n {parameters, preset, presetComponents, types, globalData, fetcher} = attrs,\n available = [],\n sourceAvailable = [],\n items = types\n ? PROPERTIES\n : PROPERTIES.filter((cosa) => {\n\n const\n [, primaryTarget, elements, index, globalSource] = cosa,\n target = primaryTarget ? preset[primaryTarget] : preset,\n rootSource = globalSource ? globalData : parameters,\n source = primaryTarget ? rootSource[primaryTarget] : rootSource;\n\n let found = false;\n\n if (elements.length) {\n\n for (const element of elements) {\n if (target && target[element] !== undefined) {\n found = available[index] = true;\n }\n if (source[element] !== undefined) {\n found = sourceAvailable[index] = true;\n }\n }\n return found;\n } else {\n found = true;\n sourceAvailable[index] = !!source;\n available[index] = !!target;\n }\n return found;\n\n });\n\n return m(\n \"ul.flexrow.wrap.userdialog\",\n items.length\n ? items.map((cosa) => {\n\n const\n [title, primaryTarget, elements, cosaIndex, globalSource, fetchLive] = cosa,\n target = types ? undefined : primaryTarget ? preset[primaryTarget] : preset,\n rootSource = globalSource ? globalData : parameters,\n source = types ? undefined : primaryTarget ? rootSource[primaryTarget] : rootSource,\n deleteCurrent = () => {\n if (elements.length) {\n for (const field of elements) {\n delete target[field];\n }\n } else if (elements.length === 0 && primaryTarget) {\n delete preset[primaryTarget];\n }\n attrs.redraw && attrs.redraw();\n },\n updateCurrent = () => {\n if (elements.length) {\n if (primaryTarget && !preset[primaryTarget]) preset[primaryTarget] = {};\n const updatedTarget = primaryTarget ? preset[primaryTarget] : preset;\n for (const field of elements) {\n if (source[field] !== undefined) {\n const finalSource = fetchLive && fetcher ? fetcher(updatedTarget[field], cosaIndex) : source[field];\n updatedTarget[field] = clone(finalSource);\n }\n }\n } else if (elements.length === 0 && primaryTarget) {\n if (source !== undefined) {\n const finalSource = fetchLive && fetcher ? fetcher(source, cosaIndex) : source;\n preset[primaryTarget] = clone(finalSource);\n }\n }\n attrs.redraw && attrs.redraw();\n Notification.add(`updated ${title} from current scene`);\n },\n isAvailable = types || available[cosaIndex],\n isSourceAvailable = sourceAvailable[cosaIndex];\n\n return [\n ...presetComponents ? [\n m(SwitchWidget, {\n title: `Include ${cosa[0]} in snapshots`,\n class: \"grows unitheightsmall\" + (presetComponents[cosaIndex] ? \" accent\" : \"\"),\n checked: !!presetComponents[cosaIndex],\n onchange: (status) => {\n presetComponents[cosaIndex] = !presetComponents[cosaIndex];\n m.redraw();\n attrs.redraw && attrs.redraw();\n }\n }),\n m(\".grows\", {class: isAvailable ? \"avail\" : \"unavail\"}, title)\n ] : [],\n ...!attrs.types ? [\n m(ButtonNew, {\n class: \"col-3\" + (isSourceAvailable ? \"avail\" : \"unavail\"),\n icon: \"sync\", title: `Copy ${title} from current state`,\n onClick: updateCurrent\n }),\n m(ButtonNew, {\n class: \"col-3 \" + (isAvailable ? \"\" : \"disabled text-lo\"),\n icon: \"trash\", title: `Delete ${title} in preset`,\n onClick: () => isAvailable && deleteCurrent()\n })\n ] : [],\n m(\".flexbreak\")\n ];\n\n })\n : m(\"h3\", \"Preset is Empty\")\n );\n }\n ),\n promptPreset = (preset, parameters, options = {}) => new Promise((resolve, reject) => {\n widget.popupMessage(\n () => m(PresetTemplate, {\n ...options,\n preset,\n parameters,\n redraw: () => widget.popupMessage.redraw()\n }),\n () => {\n reject(new Error(\"cancelled\"));\n }\n );\n });\n\nexport {\n promptName,\n promptEntity,\n promptPreset,\n promptOptions,\n choose\n};\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport {confirm} from \"../util/fuckingconfirm\";\nimport {ButtonNew} from \"./Basic\"\nimport {promptOptions} from \"./OverflowUtils\";\n\nfunction storyOverflow(attrs) {\n\n const\n {\n title,\n items: maybeFunctionItems,\n itemsKey,\n itemsText,\n field,\n onchange,\n textNew,\n textHint,\n resolve,\n icon\n } = attrs,\n source = typeof maybeFunctionItems === \"function\" ? maybeFunctionItems() : maybeFunctionItems,\n items = itemsKey ? typeof itemsKey === \"function\" ? itemsKey() : source[itemsKey] || [] : source;\n\n return promptOptions(items, onchange, {title, field, icon, textNew, textHint, resolve});\n}\n\nconst\n ComboPrompt = defineWidget(\n ({attrs}) => m(\n \".flexcol.combocontainer.grows\", {\n class: (attrs.outerClass || \"\") + \" \" + (attrs.label ? \"witharia\" : \"\"),\n ...attrs.label && {\"aria-label\": attrs.label},\n title: attrs.hint\n }, [\n\n m(\n \".flexrow.combowidget.bg-inputs\",\n {\n class: (attrs.value ? \"yesvalue \" : \"novalue \") + (attrs.class || \"\")\n },\n [\n m(ButtonNew, {\n class: \"transp combovalue grows flexrow \" + (attrs.buttonClass || \"\") + (attrs.innerLabel ? \" witharia\" : \"\"),\n textClass: \"grows \" + attrs.textClass,\n iconClass: \"noshrink\",\n ...attrs.innerLabel && {\"aria-label\": attrs.innerLabel},\n onClick: (e) => {\n if (e.shiftKey) {\n attrs.onchange(undefined, e);\n } else if (!attrs.locked) {\n storyOverflow(attrs);\n }\n },\n ...attrs.value\n ? {\n icon: attrs.value?.icon || attrs.icon,\n text: attrs.field || attrs.fieldTitle\n ? attrs.value[attrs.fieldTitle || attrs.field]\n : attrs.itemsText\n ? attrs.itemsText[attrs.value] || attrs.value\n : attrs.value\n }\n : {\n icon: attrs.emptyIcon || (attrs.emptyText ? \"\" : \"plus\"),\n text: attrs.emptyText || \"\"\n }\n }),\n attrs.value && !attrs.nodelete\n ? [\n m(\n ButtonNew,\n {\n class: \"clrcombo pad-2 pad-h transp \" + (attrs.closeClass || \"scaff-left\"),\n onClick: (e) => {\n\n const {field} = attrs;\n if (attrs.confirm && !e.shiftKey && !e.metaKey && !e.ctrlKey && !e.altKey) {\n const msg = attrs.confirm();\n if (msg) {\n confirm(msg, () => {\n attrs.onchange(field ? undefined : \"\", e);\n });\n } else {\n attrs.onchange(field ? undefined : \"\", e);\n }\n } else {\n attrs.onchange(field ? undefined : \"\", e);\n }\n m.redraw();\n /*\n if (attrs.confirm && !e.shiftKey && !e.metaKey && !e.ctrlKey && !e.altKey) {\n confirm(attrs.confirm, () => {\n attrs.onchange(attrs.field ? undefined : \"\", e);\n });\n } else {\n attrs.onchange(attrs.field ? undefined : \"\", e);\n }\n m.redraw();\n */\n },\n icon: attrs.removeIcon || \"times\",\n title: attrs.removeHint || \"remove this item\"\n }\n )\n ]\n : []\n ]\n )])\n );\n\nexport default ComboPrompt;\n","/*! colorjoe - v4.1.1 - Juho Vepsalainen <bebraw@gmail.com> - MIT\nhttps://bebraw.github.com/colorjoe - 2020-01-27 */\nconst\n factory = (function () {\n \"use strict\";\n\n var commonjsGlobal = typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\n\n function createCommonjsModule(fn, module) {\n return module = {exports: {}}, fn(module, module.exports), module.exports;\n }\n\n var dragjs_umd = createCommonjsModule(function (module, exports) {\n (function (root, factory) {\n\n {\n module.exports = factory();\n }\n\n }(commonjsGlobal, function () {\n\n /*! dragjs - v0.8.0 - Juho Vepsalainen <bebraw@gmail.com> - MIT\n https://bebraw.github.com/dragjs - 2018-07-03 */\n var drag = (function () {\n function drag(elem, cbs) {\n if (!elem) {\n console.warn(\"drag is missing elem!\");\n return;\n }\n\n dragTemplate(elem, cbs, \"touchstart\", \"touchmove\", \"touchend\");\n dragTemplate(elem, cbs, \"mousedown\", \"mousemove\", \"mouseup\");\n }\n\n function xyslider(o) {\n var twod = div(o[\"class\"] || \"\", o.parent);\n var pointer = div(\"pointer\", twod);\n div(\"shape shape1\", pointer);\n div(\"shape shape2\", pointer);\n div(\"bg bg1\", twod);\n div(\"bg bg2\", twod);\n\n drag(twod, attachPointer(o.cbs, pointer));\n\n return {\n background: twod,\n pointer: pointer\n };\n }\n\n function slider(o) {\n var oned = div(o[\"class\"], o.parent);\n var pointer = div(\"pointer\", oned);\n div(\"shape\", pointer);\n div(\"bg\", oned);\n\n drag(oned, attachPointer(o.cbs, pointer));\n\n return {\n background: oned,\n pointer: pointer\n };\n }\n\n drag.xyslider = xyslider;\n drag.slider = slider;\n\n return drag;\n\n function attachPointer(cbs, pointer) {\n var ret = {};\n\n for (var n in cbs) {\n ret[n] = wrap(cbs[n]);\n }\n\n function wrap(fn) {\n return function (p) {\n p.pointer = pointer;\n fn(p);\n };\n }\n\n return ret;\n }\n\n // move to elemutils lib?\n function div(klass, p) {\n return e(\"div\", klass, p);\n }\n\n function e(type, klass, p) {\n var elem = document.createElement(type);\n if (klass) {\n elem.className = klass;\n }\n p.appendChild(elem);\n\n return elem;\n }\n\n function dragTemplate(elem, cbs, down, move, up) {\n\n cbs = getCbs(cbs);\n\n var beginCb = cbs.begin;\n var changeCb = cbs.change;\n var endCb = cbs.end;\n\n on(elem, down, function (e) {\n\n var moveHandler = partial(callCb, changeCb, elem);\n\n function upHandler() {\n\n off(document, move, moveHandler);\n off(document, up, upHandler);\n\n callCb(endCb, elem, e);\n }\n\n on(document, move, moveHandler);\n on(document, up, upHandler);\n\n callCb(beginCb, elem, e);\n });\n }\n\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n function on(elem, evt, handler) {\n // Test via a getter in the options object to see if the passive property is accessed\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, \"passive\", {\n get: function () {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"testPassive\", null, opts);\n window.removeEventListener(\"testPassive\", null, opts);\n } catch (e) {\n }\n\n elem.addEventListener(evt, handler, supportsPassive ? {passive: false} : false);\n }\n\n function off(elem, evt, handler) {\n elem.removeEventListener(evt, handler, false);\n }\n\n function getCbs(cbs) {\n if (!cbs) {\n var initialOffset;\n var initialPos;\n\n return {\n begin: function (c) {\n initialOffset = {x: c.elem.offsetLeft, y: c.elem.offsetTop};\n initialPos = c.cursor;\n },\n change: function (c) {\n style(c.elem, \"left\", (initialOffset.x + c.cursor.x - initialPos.x) + \"px\");\n style(c.elem, \"top\", (initialOffset.y + c.cursor.y - initialPos.y) + \"px\");\n },\n end: empty\n };\n } else {\n return {\n begin: cbs.begin || empty,\n change: cbs.change || empty,\n end: cbs.end || empty\n };\n }\n }\n\n // TODO: set draggable class (handy for fx)\n function style(e, prop, value) {\n e.style[prop] = value;\n }\n\n function empty() {\n }\n\n function callCb(cb, elem, e) {\n e.preventDefault();\n\n var offset = findPos(elem);\n var width = elem.clientWidth * (window.SCALE || 1);\n var height = elem.clientHeight * (window.SCALE || 1);\n var cursor = {\n x: cursorX(elem, e),\n y: cursorY(elem, e)\n };\n var x = (cursor.x - offset.x) / width;\n var y = (cursor.y - offset.y) / height;\n\n cb({\n x: isNaN(x) ? 0 : x,\n y: isNaN(y) ? 0 : y,\n cursor: cursor,\n elem: elem,\n e: e\n });\n }\n\n // http://stackoverflow.com/questions/4394747/javascript-curry-function\n function partial(fn) {\n var slice = Array.prototype.slice;\n var args = slice.apply(arguments, [1]);\n\n return function () {\n return fn.apply(null, args.concat(slice.apply(arguments)));\n };\n }\n\n // http://www.quirksmode.org/js/findpos.html\n function findPos(e) {\n var r = e.getBoundingClientRect();\n\n return {\n x: r.left,\n y: r.top\n };\n }\n\n // http://javascript.about.com/library/blmousepos.htm\n function cursorX(elem, evt) {\n var evtPos = evt.touches ? evt.touches[evt.touches.length - 1] : evt;\n return Math.floor(evtPos.clientX);\n }\n\n function cursorY(elem, evt) {\n var evtPos = evt.touches ? evt.touches[evt.touches.length - 1] : evt;\n return Math.floor(evtPos.clientY);\n }\n })();\n return drag;\n\n }));\n });\n\n var oneColorAll = createCommonjsModule(function (module, exports) {\n !function (e, a) {\n module.exports = a();\n }(commonjsGlobal,\n function () {\n function e(a) {\n if (Array.isArray(a)) {\n if (\"string\" == typeof a[0] && \"function\" == typeof e[a[0]]) return new e[a[0]](a.slice(1, a.length));\n if (4 === a.length) return new e.RGB(a[0] / 255, a[1] / 255, a[2] / 255, a[3] / 255);\n } else if (\"string\" == typeof a) {\n var r = a.toLowerCase();\n e.namedColors[r] && (a = \"#\" + e.namedColors[r]), \"transparent\" === r && (a = \"rgba(0,0,0,0)\");\n var o = a.match(i);\n if (o) {\n var s = o[1].toUpperCase(),\n f = t(o[8]) ? o[8] : parseFloat(o[8]),\n u = \"H\" === s[0],\n l = o[3] ? 100 : u ? 360 : 255,\n h = o[5] || u ? 100 : 255,\n c = o[7] || u ? 100 : 255;\n if (t(e[s])) throw new Error(\"color.\" + s + \" is not installed.\");\n return new e[s](parseFloat(o[2]) / l, parseFloat(o[4]) / h, parseFloat(o[6]) / c, f);\n }\n a.length < 6 && (a = a.replace(/^#?([0-9a-f])([0-9a-f])([0-9a-f])$/i, \"$1$1$2$2$3$3\"));\n var d = a.match(/^#?([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$/i);\n if (d) return new e.RGB(parseInt(d[1], 16) / 255, parseInt(d[2], 16) / 255, parseInt(d[3], 16) / 255);\n if (e.CMYK) {\n var b = a.match(new RegExp(\"^cmyk\\\\(\" + n.source + \",\" + n.source + \",\" + n.source + \",\" + n.source + \"\\\\)$\", \"i\"));\n if (b) return new e.CMYK(parseFloat(b[1]) / 100, parseFloat(b[2]) / 100, parseFloat(b[3]) / 100, parseFloat(b[4]) / 100);\n }\n } else if (\"object\" == typeof a && a.isColor) return a;\n return !1;\n }\n\n var a = [],\n t = function (e) {\n return void 0 === e;\n },\n r = /\\s*(\\.\\d+|\\d+(?:\\.\\d+)?)(%)?\\s*/,\n n = /\\s*(\\.\\d+|100|\\d?\\d(?:\\.\\d+)?)%\\s*/,\n i = new RegExp(\"^(rgb|hsl|hsv)a?\\\\(\" + r.source + \",\" + r.source + \",\" + r.source + \"(?:,\" + /\\s*(\\.\\d+|\\d+(?:\\.\\d+)?)\\s*/.source + \")?\\\\)$\", \"i\");\n e.namedColors = {}, e.installColorSpace = function (r, n, i) {\n function o(a, t) {\n var r = {};\n r[t.toLowerCase()] = function () {\n return this.rgb()[t.toLowerCase()]();\n }, e[t].propertyNames.forEach(function (e) {\n var a = \"black\" === e ? \"k\" : e.charAt(0);\n r[e] = r[a] = function (a, r) {\n return this[t.toLowerCase()]()[e](a, r);\n };\n });\n for (var n in r) r.hasOwnProperty(n) && void 0 === e[a].prototype[n] && (e[a].prototype[n] = r[n]);\n }\n\n e[r] = function (e) {\n var a = Array.isArray(e) ? e : arguments;\n n.forEach(function (e, t) {\n var i = a[t];\n if (\"alpha\" === e) {\n this._alpha = isNaN(i) || i > 1 ? 1 : i < 0 ? 0 : i;\n } else {\n if (isNaN(i)) throw new Error(\"[\" + r + \"]: Invalid color: (\" + n.join(\",\") + \")\");\n \"hue\" === e ? this._hue = i < 0 ? i - Math.floor(i) : i % 1 : this[\"_\" + e] = i < 0 ? 0 : i > 1 ? 1 : i;\n }\n }, this);\n }, e[r].propertyNames = n;\n var s = e[r].prototype;\n [\"valueOf\", \"hex\", \"hexa\", \"css\", \"cssa\"].forEach(function (e) {\n s[e] = s[e] || (\"RGB\" === r ? s.hex : function () {\n return this.rgb()[e]();\n });\n }), s.isColor = !0, s.equals = function (e, a) {\n t(a) && (a = 1e-10), e = e[r.toLowerCase()]();\n for (var i = 0; i < n.length; i += 1) if (Math.abs(this[\"_\" + n[i]] - e[\"_\" + n[i]]) > a) return !1;\n return !0;\n }, s.toJSON = function () {\n return [r].concat(n.map(function (e) {\n return this[\"_\" + e];\n }, this));\n };\n for (var f in i) {\n if (i.hasOwnProperty(f)) {\n var u = f.match(/^from(.*)$/);\n u ? e[u[1].toUpperCase()].prototype[r.toLowerCase()] = i[f] : s[f] = i[f];\n }\n }\n return s[r.toLowerCase()] = function () {\n return this;\n }, s.toString = function () {\n return \"[\" + r + \" \" + n.map(function (e) {\n return this[\"_\" + e];\n }, this)\n .join(\", \") + \"]\";\n }, n.forEach(function (e) {\n var a = \"black\" === e ? \"k\" : e.charAt(0);\n s[e] = s[a] = function (a, t) {\n return void 0 === a ? this[\"_\" + e] : t ? new this.constructor(n.map(function (t) {\n return this[\"_\" + t] + (e === t ? a : 0);\n }, this)) : new this.constructor(n.map(function (t) {\n return e === t ? a : this[\"_\" + t];\n }, this));\n };\n }), a.forEach(function (e) {\n o(r, e), o(e, r);\n }), a.push(r), e;\n }, e.pluginList = [], e.use = function (a) {\n return -1 === e.pluginList.indexOf(a) && (this.pluginList.push(a), a(e)), e;\n }, e.installMethod = function (t, r) {\n return a.forEach(function (a) {\n e[a].prototype[t] = r;\n }), this;\n }, e.installColorSpace(\"RGB\", [\"red\", \"green\", \"blue\", \"alpha\"], {\n hex: function () {\n var e = (65536 * Math.round(255 * this._red) + 256 * Math.round(255 * this._green) + Math.round(255 * this._blue)).toString(16);\n return \"#\" + \"00000\".substr(0, 6 - e.length) + e;\n }, hexa: function () {\n var e = Math.round(255 * this._alpha)\n .toString(16);\n return \"#\" + \"00\".substr(0, 2 - e.length) + e + this.hex()\n .substr(1, 6);\n }, css: function () {\n return \"rgb(\" + Math.round(255 * this._red) + \",\" + Math.round(255 * this._green) + \",\" + Math.round(255 * this._blue) + \")\";\n }, cssa: function () {\n return \"rgba(\" + Math.round(255 * this._red) + \",\" + Math.round(255 * this._green) + \",\" + Math.round(255 * this._blue) + \",\" + this._alpha + \")\";\n }\n });\n var o = e,\n s = function (e) {\n e.installColorSpace(\"XYZ\", [\"x\", \"y\", \"z\", \"alpha\"], {\n fromRgb: function () {\n var a = function (e) {\n return e > .04045 ? Math.pow((e + .055) / 1.055, 2.4) : e / 12.92;\n },\n t = a(this._red),\n r = a(this._green),\n n = a(this._blue);\n return new e.XYZ(.4124564 * t + .3575761 * r + .1804375 * n, .2126729 * t + .7151522 * r + .072175 * n, .0193339 * t + .119192 * r + .9503041 * n,\n this._alpha);\n }, rgb: function () {\n var a = this._x,\n t = this._y,\n r = this._z,\n n = function (e) {\n return e > .0031308 ? 1.055 * Math.pow(e, 1 / 2.4) - .055 : 12.92 * e;\n };\n return new e.RGB(n(3.2404542 * a + -1.5371385 * t + -.4985314 * r), n(-.969266 * a + 1.8760108 * t + .041556 * r),\n n(.0556434 * a + -.2040259 * t + 1.0572252 * r), this._alpha);\n }, lab: function () {\n var a = function (e) {\n return e > .008856 ? Math.pow(e, 1 / 3) : 7.787037 * e + 4 / 29;\n },\n t = a(this._x / 95.047),\n r = a(this._y / 100),\n n = a(this._z / 108.883);\n return new e.LAB(116 * r - 16, 500 * (t - r), 200 * (r - n), this._alpha);\n }\n });\n },\n f = function (e) {\n e.use(s), e.installColorSpace(\"LAB\", [\"l\", \"a\", \"b\", \"alpha\"], {\n fromRgb: function () {\n return this.xyz()\n .lab();\n }, rgb: function () {\n return this.xyz()\n .rgb();\n }, xyz: function () {\n var a = function (e) {\n var a = Math.pow(e, 3);\n return a > .008856 ? a : (e - 16 / 116) / 7.87;\n },\n t = (this._l + 16) / 116,\n r = this._a / 500 + t,\n n = t - this._b / 200;\n return new e.XYZ(95.047 * a(r), 100 * a(t), 108.883 * a(n), this._alpha);\n }\n });\n },\n u = function (e) {\n e.installColorSpace(\"HSV\", [\"hue\", \"saturation\", \"value\", \"alpha\"], {\n rgb: function () {\n var a,\n t,\n r,\n n = this._hue,\n i = this._saturation,\n o = this._value,\n s = Math.min(5, Math.floor(6 * n)),\n f = 6 * n - s,\n u = o * (1 - i),\n l = o * (1 - f * i),\n h = o * (1 - (1 - f) * i);\n switch (s) {\n case 0:\n a = o, t = h, r = u;\n break;\n case 1:\n a = l, t = o, r = u;\n break;\n case 2:\n a = u, t = o, r = h;\n break;\n case 3:\n a = u, t = l, r = o;\n break;\n case 4:\n a = h, t = u, r = o;\n break;\n case 5:\n a = o, t = u, r = l;\n }\n return new e.RGB(a, t, r, this._alpha);\n }, hsl: function () {\n var a,\n t = (2 - this._saturation) * this._value,\n r = this._saturation * this._value,\n n = t <= 1 ? t : 2 - t;\n return a = n < 1e-9 ? 0 : r / n, new e.HSL(this._hue, a, t / 2, this._alpha);\n }, fromRgb: function () {\n var a,\n t = this._red,\n r = this._green,\n n = this._blue,\n i = Math.max(t, r, n),\n o = Math.min(t, r, n),\n s = i - o,\n f = 0 === i ? 0 : s / i,\n u = i;\n if (0 === s) {\n a = 0;\n } else {\n switch (i) {\n case t:\n a = (r - n) / s / 6 + (r < n ? 1 : 0);\n break;\n case r:\n a = (n - t) / s / 6 + 1 / 3;\n break;\n case n:\n a = (t - r) / s / 6 + 2 / 3;\n }\n }\n return new e.HSV(a, f, u, this._alpha);\n }\n });\n },\n l = function (e) {\n e.use(u), e.installColorSpace(\"HSL\", [\"hue\", \"saturation\", \"lightness\", \"alpha\"], {\n hsv: function () {\n var a,\n t = 2 * this._lightness,\n r = this._saturation * (t <= 1 ? t : 2 - t);\n return a = t + r < 1e-9 ? 0 : 2 * r / (t + r), new e.HSV(this._hue, a, (t + r) / 2, this._alpha);\n }, rgb: function () {\n return this.hsv()\n .rgb();\n }, fromRgb: function () {\n return this.hsv()\n .hsl();\n }\n });\n },\n h = function (e) {\n e.installColorSpace(\"CMYK\", [\"cyan\", \"magenta\", \"yellow\", \"black\", \"alpha\"], {\n rgb: function () {\n return new e.RGB(1 - this._cyan * (1 - this._black) - this._black, 1 - this._magenta * (1 - this._black) - this._black,\n 1 - this._yellow * (1 - this._black) - this._black, this._alpha);\n }, fromRgb: function () {\n var a = this._red,\n t = this._green,\n r = this._blue,\n n = 1 - a,\n i = 1 - t,\n o = 1 - r,\n s = 1;\n return a || t || r ? (s = Math.min(n, Math.min(i, o)), n = (n - s) / (1 - s), i = (i - s) / (1 - s), o = (o - s) / (1 - s)) : s = 1, new e.CMYK(n, i, o,\n s, this._alpha);\n }\n });\n },\n c = function (e) {\n e.namedColors = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgrey: \"a9a9a9\",\n darkgreen: \"006400\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n grey: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"d87093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"639\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n };\n },\n d = function (e) {\n e.installMethod(\"clearer\", function (e) {\n return this.alpha(isNaN(e) ? -.1 : -e, !0);\n });\n },\n b = function (e) {\n e.use(l), e.installMethod(\"darken\", function (e) {\n return this.lightness(isNaN(e) ? -.1 : -e, !0);\n });\n },\n p = function (e) {\n e.use(l), e.installMethod(\"desaturate\", function (e) {\n return this.saturation(isNaN(e) ? -.1 : -e, !0);\n });\n },\n g = function (e) {\n function a() {\n var a = this.rgb(),\n t = .3 * a._red + .59 * a._green + .11 * a._blue;\n return new e.RGB(t, t, t, a._alpha);\n }\n\n e.installMethod(\"greyscale\", a)\n .installMethod(\"grayscale\", a);\n },\n _ = function (e) {\n e.use(l), e.installMethod(\"lighten\", function (e) {\n return this.lightness(isNaN(e) ? .1 : e, !0);\n });\n },\n m = function (e) {\n e.installMethod(\"mix\", function (a, t) {\n a = e(a)\n .rgb(), t = 1 - (isNaN(t) ? .5 : t);\n var r = 2 * t - 1,\n n = this._alpha - a._alpha,\n i = ((r * n == -1 ? r : (r + n) / (1 + r * n)) + 1) / 2,\n o = 1 - i,\n s = this.rgb();\n return new e.RGB(s._red * i + a._red * o, s._green * i + a._green * o, s._blue * i + a._blue * o, s._alpha * t + a._alpha * (1 - t));\n });\n },\n w = function (e) {\n e.installMethod(\"negate\", function () {\n var a = this.rgb();\n return new e.RGB(1 - a._red, 1 - a._green, 1 - a._blue, this._alpha);\n });\n },\n y = function (e) {\n e.installMethod(\"opaquer\", function (e) {\n return this.alpha(isNaN(e) ? .1 : e, !0);\n });\n },\n v = function (e) {\n e.use(l), e.installMethod(\"rotate\", function (e) {\n return this.hue((e || 0) / 360, !0);\n });\n },\n k = function (e) {\n e.use(l), e.installMethod(\"saturate\", function (e) {\n return this.saturation(isNaN(e) ? .1 : e, !0);\n });\n },\n M = function (e) {\n e.installMethod(\"toAlpha\", function (e) {\n var a = this.rgb(),\n t = e(e)\n .rgb(),\n r = new e.RGB(0, 0, 0, a._alpha),\n n = [\"_red\", \"_green\", \"_blue\"];\n return n.forEach(function (e) {\n a[e] < 1e-10 ? r[e] = a[e] : a[e] > t[e] ? r[e] = (a[e] - t[e]) / (1 - t[e]) : a[e] > t[e] ? r[e] = (t[e] - a[e]) / t[e] : r[e] = 0;\n }), r._red > r._green ? r._red > r._blue ? a._alpha = r._red : a._alpha = r._blue : r._green > r._blue ? a._alpha = r._green : a._alpha = r._blue, a._alpha < 1e-10 ? a : (n.forEach(\n function (e) {\n a[e] = (a[e] - t[e]) / a._alpha + t[e];\n }), a._alpha *= r._alpha, a);\n });\n };\n return o.use(s)\n .use(f)\n .use(u)\n .use(l)\n .use(h)\n .use(c)\n .use(d)\n .use(b)\n .use(p)\n .use(g)\n .use(_)\n .use(m)\n .use(w)\n .use(y)\n .use(v)\n .use(k)\n .use(M);\n }\n );\n\n });\n\n var div = partial(e, \"div\");\n\n function e(type, klass, p) {\n var elem = document.createElement(type);\n elem.className = klass;\n p.appendChild(elem);\n\n return elem;\n }\n\n // http://stackoverflow.com/questions/4394747/javascript-curry-function\n function partial(fn) {\n var slice = Array.prototype.slice;\n var args = slice.apply(arguments, [1]);\n\n return function () {\n return fn.apply(null, args.concat(slice.apply(arguments)));\n };\n }\n\n function labelInput(klass, n, p, maxLen) {\n var id = \"colorPickerInput\" + Math.floor(Math.random() * 1001);\n var d = div(klass, p);\n var l = label(n, d, id);\n var i = input(\"text\", d, maxLen, id);\n\n return {\n label: l,\n input: i\n };\n }\n\n function label(c, p, id) {\n var elem = e(\"label\", \"\", p);\n elem.innerHTML = c;\n\n if (id) {\n elem.setAttribute(\"for\", id);\n }\n\n return elem;\n }\n\n function input(t, p, maxLen, id) {\n var elem = e(\"input\", \"\", p);\n elem.type = t;\n\n if (maxLen) {\n elem.maxLength = maxLen;\n }\n\n if (id) {\n elem.setAttribute(\"id\", id);\n }\n\n if (maxLen) {\n elem.maxLength = maxLen;\n }\n\n return elem;\n }\n\n function X(p, a) {\n p.style.left = clamp(a * 100, 0, 100) + \"%\";\n }\n\n function Y(p, a) {\n p.style.top = clamp(a * 100, 0, 100) + \"%\";\n }\n\n function BG(e, c) {\n e.style.background = c;\n }\n\n function clamp(a, minValue, maxValue) {\n return Math.min(Math.max(a, minValue), maxValue);\n }\n\n var utils = {\n clamp: clamp,\n e: e,\n div: div,\n partial: partial,\n labelInput: labelInput,\n X: X,\n Y: Y,\n BG: BG\n };\n\n function currentColor(p) {\n var e1 = utils.div(\"currentColorContainer\", p);\n var e = utils.div(\"currentColor\", e1);\n\n return {\n change: function (col) {\n utils.BG(e, col.cssa());\n }\n };\n }\n\n function fields(p, joe, o) {\n var cs = o.space;\n var fac = o.limit || 255;\n var fix = o.fix >= 0 ? o.fix : 0;\n var inputLen = (\"\" + fac).length + fix;\n inputLen = fix ? inputLen + 1 : inputLen;\n\n var initials = cs.split(\"\");\n var useAlpha = cs[cs.length - 1] == \"A\";\n cs = useAlpha ? cs.slice(0, -1) : cs;\n\n if ([\"RGB\", \"HSL\", \"HSV\", \"CMYK\"].indexOf(cs) < 0) {\n return console.warn(\"Invalid field names\", cs);\n }\n\n var c = utils.div(\"colorFields\", p);\n var elems = initials.map(function (n) {\n n = n.toLowerCase();\n\n var e = utils.labelInput(\"color \" + n, n, c, inputLen);\n e.input.onblur = done;\n e.input.onkeydown = validate;\n e.input.onkeyup = update;\n\n return {\n name: n,\n e: e\n };\n });\n\n function done() {\n joe.done();\n }\n\n function validate(e) {\n if (!(e.ctrlKey || e.altKey) && /^[a-zA-Z]$/.test(e.key)) {\n e.preventDefault();\n }\n }\n\n function update() {\n var col = [cs];\n\n elems.forEach(function (o) {\n col.push(o.e.input.value / fac);\n });\n\n if (!useAlpha) {\n col.push(joe.getAlpha());\n }\n\n joe.set(col);\n }\n\n return {\n change: function (col) {\n elems.forEach(function (o) {\n o.e.input.value = (col[o.name]() * fac).toFixed(fix);\n });\n }\n };\n }\n\n function alpha(p, joe) {\n var e = dragjs_umd.slider({\n parent: p,\n \"class\": \"oned alpha chequered\",\n cbs: {\n begin: change,\n change: change,\n end: done\n }\n });\n\n function done() {\n joe.done();\n }\n\n function change(p) {\n var val = utils.clamp(p.y, 0, 1);\n\n utils.Y(p.pointer, val);\n joe.setAlpha(1 - val);\n }\n\n return {\n change: function (col) {\n utils.Y(e.pointer, 1 - col.alpha());\n }\n };\n }\n\n function hex(p, joe, o) {\n var e = utils.labelInput(\"hex\", o.label || \"\", p, 7);\n e.input.value = \"#\";\n\n e.input.onkeyup = function (elem) {\n var key = elem.keyCode || elem.which;\n var val = elem.target.value;\n val = val[0] == \"#\" ? val : \"#\" + val;\n val = pad(val, 7, \"0\");\n\n if (key == 13) {\n joe.set(val);\n }\n };\n\n e.input.onblur = function (elem) {\n joe.set(elem.target.value);\n joe.done();\n };\n\n return {\n change: function (col) {\n e.input.value = e.input.value[0] == \"#\" ? \"#\" : \"\";\n e.input.value += col.hex()\n .slice(1);\n }\n };\n }\n\n function close(p, joe, o) {\n var elem = utils.e(\"a\", o[\"class\"] || \"close\", p);\n elem.href = \"#\";\n elem.innerHTML = o.label || \"Close\";\n\n elem.onclick = function (e) {\n e.preventDefault();\n\n joe.hide();\n };\n }\n\n function pad(a, n, c) {\n var ret = a;\n\n for (var i = a.length; i < n; i++) {\n ret += c;\n }\n\n return ret;\n }\n\n var extras = {\n currentColor: currentColor,\n fields: fields,\n hex: hex,\n alpha: alpha,\n close: close\n };\n\n // Use the all build with cmyk and everything\n\n var colorjoe = function (cbs) {\n if (!all(isFunction, [cbs.init, cbs.xy, cbs.z])) {\n return console.warn(\"colorjoe: missing cb\");\n }\n\n return function (element, initialColor, extras$$1) {\n return setup({\n e: element,\n color: initialColor,\n cbs: cbs,\n extras: extras$$1\n });\n };\n };\n\n /* pickers */\n colorjoe.rgb = colorjoe({\n init: function (col, xy, z) {\n var ret = oneColorAll(col)\n .hsv();\n\n this.xy(ret, {x: ret.saturation(), y: 1 - ret.value()}, xy, z);\n this.z(ret, ret.hue(), xy, z);\n\n return ret;\n },\n xy: function (col, p, xy) {\n utils.X(xy.pointer, p.x);\n utils.Y(xy.pointer, p.y);\n\n return col.saturation(p.x)\n .value(1 - p.y);\n },\n z: function (col, v, xy, z) {\n utils.Y(z.pointer, v);\n RGB_BG(xy.background, v);\n\n return col.hue(v);\n }\n });\n\n colorjoe.hsl = colorjoe({\n init: function (col, xy, z) {\n var ret = oneColorAll(col)\n .hsl();\n\n this.xy(ret, {x: ret.hue(), y: 1 - ret.saturation()}, xy, z);\n this.z(ret, 1 - ret.lightness(), xy, z);\n\n return ret;\n },\n xy: function (col, p, xy, z) {\n utils.X(xy.pointer, p.x);\n utils.Y(xy.pointer, p.y);\n RGB_BG(z.background, p.x);\n\n return col.hue(p.x)\n .saturation(1 - p.y);\n },\n z: function (col, v, xy, z) {\n utils.Y(z.pointer, v);\n\n return col.lightness(1 - v);\n }\n });\n\n colorjoe.extras = {};\n\n colorjoe.registerExtra = function (name, fn) {\n if (name in colorjoe.extras) {\n console.warn(\"Extra \\\"\" + name + \"\\\"has been registered already!\");\n }\n\n colorjoe.extras[name] = fn;\n };\n\n for (var k in extras) {\n colorjoe.registerExtra(k, extras[k]);\n }\n\n function RGB_BG(e, h) {\n utils.BG(e, new oneColorAll.HSV(h, 1, 1).cssa());\n }\n\n function setup(o) {\n if (!o.e) {\n return console.warn(\"colorjoe: missing element\");\n }\n\n var e = isString(o.e) ? document.getElementById(o.e) : o.e;\n e.className = \"colorPicker\";\n\n var cbs = o.cbs;\n\n var xy = dragjs_umd.xyslider({\n parent: e,\n class: \"twod\",\n cbs: {\n begin: changeXY,\n change: changeXY,\n end: done\n }\n });\n\n function changeXY(p) {\n col = cbs.xy(\n col,\n {\n x: utils.clamp(p.x, 0, 1),\n y: utils.clamp(p.y, 0, 1)\n },\n xy,\n z\n );\n changed();\n }\n\n var z = dragjs_umd.slider({\n parent: e,\n class: \"oned\",\n cbs: {\n begin: changeZ,\n change: changeZ,\n end: done\n }\n });\n\n function changeZ(p) {\n col = cbs.z(col, utils.clamp(p.y, 0, 1), xy, z);\n changed();\n }\n\n // Initial color\n var previous = getColor(o.color);\n var col = cbs.init(previous, xy, z);\n var listeners = {change: [], done: []};\n\n function changed(skip) {\n skip = isArray(skip) ? skip : [];\n\n var li = listeners.change;\n var v;\n\n for (var i = 0, len = li.length; i < len; i++) {\n v = li[i];\n if (skip.indexOf(v.name) == -1) {\n v.fn(col);\n }\n }\n }\n\n function done() {\n // Do not call done callback if the color did not change\n if (previous.equals(col)) {\n return;\n }\n\n for (var i = 0, len = listeners.done.length; i < len; i++) {\n listeners.done[i].fn(col);\n }\n\n previous = col;\n }\n\n var ob = {\n e: e,\n done: function () {\n done();\n\n return this;\n },\n update: function (skip) {\n changed(skip);\n\n return this;\n },\n hide: function () {\n e.style.display = \"none\";\n\n return this;\n },\n show: function () {\n e.style.display = \"\";\n\n return this;\n },\n get: function () {\n return col;\n },\n set: function (c) {\n var oldCol = this.get();\n col = cbs.init(getColor(c), xy, z);\n\n if (!oldCol.equals(col)) {\n this.update();\n }\n\n return this;\n },\n getAlpha: function () {\n return col.alpha();\n },\n setAlpha: function (v) {\n col = col.alpha(v);\n\n this.update();\n\n return this;\n },\n on: function (evt, cb, name) {\n if (evt == \"change\" || evt == \"done\") {\n listeners[evt].push({name: name, fn: cb});\n } else {\n console.warn(\n \"Passed invalid evt name \\\"\" + evt + \"\\\" to colorjoe.on\"\n );\n }\n\n return this;\n },\n removeAllListeners: function (evt) {\n if (evt) {\n listeners[evt] = [];\n } else {\n for (var key in listeners) {\n listeners[key] = [];\n }\n }\n\n return this;\n }\n };\n\n setupExtras(e, ob, o.extras);\n changed();\n\n return ob;\n }\n\n function getColor(c) {\n if (!isDefined(c)) {\n return oneColorAll(\"#000\");\n }\n if (c.isColor) {\n return c;\n }\n\n var ret = oneColorAll(c);\n\n if (ret) {\n return ret;\n }\n\n if (isDefined(c)) {\n console.warn(\"Passed invalid color to colorjoe, using black instead\");\n }\n\n return oneColorAll(\"#000\");\n }\n\n function setupExtras(p, joe, extras$$1) {\n if (!extras$$1) {\n return;\n }\n\n var c = utils.div(\"extras\", p);\n var cbs;\n var name;\n var params;\n\n extras$$1.forEach(function (e, i) {\n if (isArray(e)) {\n name = e[0];\n params = e.length > 1 ? e[1] : {};\n } else {\n name = e;\n params = {};\n }\n var extra = name in colorjoe.extras ? colorjoe.extras[name] : null;\n\n if (extra) {\n cbs = extra(c, extraProxy(joe, name + i), params);\n for (var k in cbs) {\n joe.on(k, cbs[k], name);\n }\n }\n });\n }\n\n function extraProxy(joe, name) {\n var ret = copy(joe);\n\n ret.update = function () {\n joe.update([name]);\n };\n\n return ret;\n }\n\n function copy(o) {\n // returns a shallow copy\n var ret = {};\n\n for (var k in o) {\n ret[k] = o[k];\n }\n\n return ret;\n }\n\n function all(cb, a) {\n return a.map(cb)\n .filter(id).length == a.length;\n }\n\n function isArray(o) {\n return Object.prototype.toString.call(o) === \"[object Array]\";\n }\n\n function isString(o) {\n return typeof o === \"string\";\n }\n\n function isDefined(input) {\n return typeof input !== \"undefined\";\n }\n\n function isFunction(input) {\n return typeof input === \"function\";\n }\n\n function id(a) {\n return a;\n }\n\n var colorjoe_1 = colorjoe;\n window.OneColor = oneColorAll;\n return colorjoe_1;\n\n }),\n colorjoe = factory();\n\nexport default colorjoe;\n","import m from \"mithril\";\nimport defineWidget from \"../util/widgets.utils\";\nimport {popupMessage} from \"../util/widgets\"\nimport colorjoe from \"../util/colorjoe\"\n\nconst\n ColorJoe = defineWidget(\n () => m(\".colorjoe-frame.absolute\"),\n null,\n ({attrs, dom}) => {\n\n window.SCALE = 1;\n\n attrs.state.joe = (attrs.hsl ? colorjoe.hsl : colorjoe.rgb)(\n dom,\n attrs.color,\n attrs.noalpha\n ? []\n : [\n // \"currentColor\",\n \"alpha\"\n ]\n );\n\n attrs.state.joe.on(\"change\", (c) => {\n attrs.onColor(attrs.noalpha ? c.css() : c.cssa(), c);\n })\n .update();\n }\n ),\n FAVORITES = [],\n ColorJoeWrapper = defineWidget(\n ({attrs, state, children}) => m(\".colorjoe-popper.flexcol\", {\n class: attrs.noalpha ? \"no-alpha\" : \"\"\n }, [\n m(ColorJoe, {...attrs, state}),\n ...children,\n m(\".flexrow.extended.w-100.scaff-top.pad-2.wrap\", [\n\n [0, 1, 2, 3, 4, 5, 6, 7, 8].map((i) => m(\"button.scaff.scaff-b1.marg-1.unitheightsmall.grows\", {\n class: FAVORITES[i] ? \"\" : \"chequered\",\n style: {\n ...FAVORITES[i] && {backgroundColor: FAVORITES[i]}\n },\n onclick: (e) => {\n if (e.shiftKey) {\n FAVORITES[i] = state.joe.get()\n .css();\n } else {\n if (FAVORITES[i]) state.joe.set(FAVORITES[i]);\n }\n if (attrs.onRedraw) attrs.onRedraw(); else m.redraw();\n }\n })),\n m(\".flexbreak\"),\n /* TODO ELECTRON\n m(ColorProbeButton, {\n class: \"grows marg-1 scaff scaff-b1 unitheightsmall\",\n icon: \"magic\",\n title: \"Pick a color from the scene\",\n onColor: (color) => state.joe.set(color)\n }),\n */\n ...attrs.onRemove ? [m(\"button.scaff.scaff-b1.unitheightsmall.marg-1.pad-2.pad-h.grows.fabf.transp.bg-accent.fa-trash\", {\n onclick: () => attrs.onRemove(state.joe.get())\n })] : []\n ])\n ])\n ),\n popupColor = (vnode) => popupMessage(\n () => m(ColorJoeWrapper, {\n noalpha: vnode.attrs.noalpha,\n color: vnode.state.color,\n hsl: vnode.attrs.hsl,\n onColor: (parsedColor, colorObject) => {\n vnode.state.color = parsedColor;\n if (vnode.attrs.onchange) vnode.attrs.onchange(parsedColor, colorObject);\n m.redraw();\n },\n onRemove: () => {\n if (vnode.attrs.onchange) vnode.attrs.onchange(null, null);\n popupMessage(null);\n },\n onRedraw: () => {\n popupMessage.redraw();\n m.redraw();\n }\n }, vnode.children),\n\n () => {\n },\n\n \".modal-content-popper\"\n );\n\nconst ColorJoeWidget = defineWidget(\n (vnode) => {\n const {attrs, state} = vnode;\n return [\n m(\n \".colorjoe-cell.chequered\",\n {\n class: (attrs.class || \"\") + (state.shown ? \" open\" : \"\"),\n title: attrs.title,\n ...attrs.style && {style: attrs.style}\n },\n [\n m(\".inset\", {\n style: {\n backgroundColor: state.color\n },\n ...attrs.caption && {\"data-caption\": attrs.caption, class: \"titled\"},\n onclick: (e) => {\n if (attrs.onshiftclick && (e.shiftKey || e.ctrlKey)) {\n attrs.onshiftclick();\n } else {\n popupColor(vnode);\n }\n }\n })\n ])\n ];\n },\n ({attrs, state}) => {\n state.original = attrs.color;\n state.color = state.original || \"rgba(0,0,0,0)\";\n },\n null,\n null,\n ({attrs, state}) => {\n if (state.original !== attrs.color) {\n state.original = attrs.color;\n state.color = state.original || \"rgba(0,0,0,0)\";\n m.redraw();\n }\n }\n);\n\n\nexport default ColorJoeWidget;","import m from \"mithril\";\nimport {ButtonNew, defineWidget} from \"./Basic\";\nimport ColorJoeWidget from \"./ColorJoeWidget\";\n\nconst\n DEFAULT_COLOR = [255, 255, 255, 1],\n hslToRgb = (h, s, l) => {\n\n let r,\n g,\n b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n const hue2rgb = (p, q, t) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const\n q = l < 0.5 ? l * (1 + s) : l + s - l * s,\n p = 2 * l - q;\n\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n };\n\nexport default defineWidget(\n ({attrs}) => {\n\n const\n {colors = [], max = 8} = attrs,\n length = colors.length,\n getRgb = (colorBase = [0, 0, 0, 0]) => (\"rgba(\"\n + (colorBase.map((c, i) => (i < 3 ? Math.floor(c * 255) : c)).join(\",\")) + \")\"),\n\n getHsl = (colorBase = [0, 0, 0, 0]) => (\"rgba(\"\n + (hslToRgb(colorBase[0], colorBase[1], colorBase[2]).join(\",\"))\n + \",\" + colorBase[3] + \")\");\n\n return m(\".flexrow.wrap.gradient.grows\",\n {\n class: attrs.class\n },\n [\n\n ...colors.map((entry, index) => m(\n ColorJoeWidget,\n {\n class: \"grows\",\n color: attrs.hsl ? getHsl(colors[index]) : getRgb(colors[index]),\n title: \"Click to edit, or Shift-click to remove this color from the collection\",\n hsl: attrs.hsl,\n onchange: (parsedColor, colorObject) => {\n let finalColor;\n if (attrs.hsl) {\n const hsl = colorObject.hsl();\n finalColor = [hsl.hue(), hsl.saturation(), hsl.lightness(), colorObject.a()];\n } else {\n finalColor = [colorObject.r(), colorObject.g(), colorObject.b(), colorObject.a()];\n }\n colors[index] = finalColor;\n if (attrs.onchange) {\n attrs.onchange(colors);\n }\n m.redraw();\n },\n onshiftclick: () => {\n colors.splice(index, 1);\n if (attrs.onchange) {\n attrs.onchange(colors);\n }\n m.redraw();\n }\n }\n )),\n\n ...(length < max)\n ? [\n m(ButtonNew, {\n icon: \"plus\",\n class: \"unitheightsmall accent bg-window-lo \" + (length ? \"mini\" : \"grows\"),\n title: \"Add a new color to the collection, or SHIFT-CLICK to delete all colors\",\n onClick: (e) => {\n if (e.shiftKey) {\n colors.splice(0, colors.length);\n } else {\n colors.push(DEFAULT_COLOR);\n }\n if (attrs.onchange) {\n attrs.onchange(colors);\n }\n m.redraw();\n }\n })\n ] : []\n ]);\n }\n);\n","import m from \"mithril\";\nimport {ButtonNew, defineWidget} from \"./Basic\";\n\nconst\n PlusMinus = defineWidget(\n ({attrs}) => {\n return m(\".flexrow.wrap.grows\",\n {\n ...attrs.label && {\"aria-label\": attrs.label},\n class: (attrs.label ? \"witharia\" : \"\") + \" \" + (attrs.class || \"\"),\n title: attrs.title || \"\"\n },\n [\n m(ButtonNew, {\n icon: \"minus\",\n class: \"unitsizesmall transp\",\n title: attrs.title ? \"decrease the \" + attrs.title : \"\",\n onClick: () => {\n const {\n step = 1,\n min = 0\n } = attrs;\n let v = attrs.value || 0;\n if (Number.isNaN(v)) v = 0;\n v -= step;\n if (v < min) v = min;\n attrs.onchange(v);\n m.redraw();\n }\n }),\n m(\".currentvalue.al-center.grows.unitheightsmall\", {\n title: attrs.title\n }, String(attrs.value || 0)),\n m(ButtonNew, {\n icon: \"plus\",\n class: \"unitsizesmall transp\",\n title: attrs.title ? \"decrease the \" + attrs.title : \"\",\n onClick: () => {\n const {\n step = 1,\n max = 0\n } = attrs;\n\n let v = attrs.value || 0;\n if (max && v === max) return;\n v += step;\n attrs.onchange(v);\n m.redraw();\n }\n })\n ]);\n }\n );\n\nexport default PlusMinus;\n","import m from \"mithril\"\nimport {ButtonNew, defineWidget} from \"./Basic\";\nimport InputWidget from \"./InputWidget.js\"\nimport {OverflowMenu} from \"../util/widgets.core.js\"\n\nconst TitleBarWidget = defineWidget(\n ({attrs, dom}) => m(\n \".titlebar.noshrink.flexrow\",\n {\n class: (attrs.class ? \" \" + attrs.class : \"unitheight bg-window-hi pad-2 pad-h shadow-2 font-125\"),\n ...attrs.onTitleClick && {onclick: attrs.onTitleClick}\n },\n [\n ...attrs.onClick ? [m(ButtonNew, {icon: \"arrow-left\", onClick: () => attrs.onClick()})] : [],\n\n ...attrs.logo\n ? [m(\"img.title-logo\", {src: attrs.logo})]\n : [],\n ...(attrs.editable && attrs.onchange)\n ? [\n m(InputWidget, {\n containerClass: \"grows\" + (attrs.onClick ? \"\" : \" pad-2 pad-h\"),\n hint: attrs.title, // attrs.hint,\n onchange: attrs.onchange,\n oninput: () => {\n },\n value: attrs.value\n })\n ]\n : [m(\"span.grows.ellipsis\", {class: attrs.onClick ? \"\" : \"pad-2 pad-h\"}, attrs.title)],\n\n ...attrs.auxaction ? [m(ButtonNew, {\n icon: attrs.auxaction.icon,\n class: attrs.auxaction.class,\n title: attrs.auxaction.title,\n onClick: attrs.auxaction.onClick\n })] : [],\n ...attrs.auxactions\n ? attrs.auxactions.map((action) => m(ButtonNew, {\n class: action.class,\n title: action.title,\n icon: action.icon,\n text: action.caption,\n onClick: action.onClick\n }))\n : [],\n ...attrs.action ? [m(ButtonNew, {\n icon: attrs.action.icon,\n class: attrs.action.class,\n title: attrs.action.title,\n onClick: attrs.action.onClick\n\n })] : [],\n ...attrs.overflow\n ? [\n m(ButtonNew, {\n icon: attrs.overflow.icon || \"ellipsis-v\",\n class: attrs.overflow.class || \"\",\n onClick: () => OverflowMenu(\n dom,\n {title: attrs.title},\n attrs.overflow.items\n )\n .then(({action}) => action.onClick())\n })\n ]\n : []\n ])\n);\n\nexport default TitleBarWidget;","import m from \"mithril\";\n\n\n///////////////////////////////////////////////\n// Mithril Range\n// (c) 2017-2018 by Mike Linkovich\n// https://github.com/spacejack/mithril-range\n// License: MIT\n///////////////////////////////////////////////\nconst\n\n NONE = 0,\n MOUSE = 1,\n TOUCH = 2,\n\n // So we aren't triggered by echoed mouse events (some mobile browsers)\n DEVICE_DELAY = 350,\n\n isIOS = !!navigator.userAgent.match(/iPhone|iPad|iPod/i);\n\n// This is some unbelievable stone-age nonsense.\n// Workaround for webkit bug where event.preventDefault\n// within touchmove handler fails to prevent scrolling.\n\nlet\n iOSHackApplied = false;\n\n/** Clamp number to range */\nfunction clamp(n, min, max) {\n return Math.min(Math.max(n, min), max);\n}\n\nfunction applyIOSHack() {\n // Only apply this hack if iOS, haven't yet applied it,\n // and only if a component is actually created\n if (!isIOS || iOSHackApplied) {\n return;\n }\n window.addEventListener(\"touchmove\", function () {\n });\n iOSHackApplied = true;\n}\n\nexport function quantize(val, min, max, step) {\n if (max - min <= 0) {\n return min;\n }\n if (step <= 0) {\n return clamp(val, min, max);\n }\n const\n steps = Math.ceil((max - min) / step),\n v = min + Math.round(steps * (val - min) / (max - min)) * step;\n return clamp(v, min, max);\n}\n\n\n/** Range Component */\nfunction MithrilRange() {\n let\n elHit,\n elBar,\n elBar0,\n elBar1,\n elHandle,\n rcBar,\n device = NONE,\n pressed = false,\n\n useAbsolute = false,\n factorCoarse = 4,\n factorFine = 1,\n absolute,\n lastRead,\n\n // Attrs we need to cache\n min = 0,\n max = 10,\n value = 0,\n startValue = 0,\n step = 1,\n orientation = \"horizontal\",\n onchange,\n ondrag;\n\n // App handlers\n function onPressAbsolute(x, y) {\n startValue = value;\n pressed = absolute = true;\n rcBar = elBar.getBoundingClientRect();\n const val = moveHandleAbsolute(x, y);\n if (val !== value) {\n value = val;\n if (ondrag && ondrag(value) !== false) {\n m.redraw();\n }\n }\n }\n\n function onPressDelta(x, y, e, isTouch) {\n startValue = value;\n pressed = true;\n absolute = false;\n rcBar = elBar.getBoundingClientRect();\n lastRead = (orientation === \"vertical\") ? y : x;\n if (!isTouch) e.target.requestPointerLock();\n }\n\n function moveHandleAbsolute(x, y) {\n\n let\n barLength,\n delta;\n\n if (orientation === \"vertical\") {\n\n barLength = rcBar.bottom - rcBar.top;\n delta = rcBar.bottom - y;\n\n } else {\n barLength = rcBar.right - rcBar.left;\n delta = x - rcBar.left;\n }\n\n delta = clamp(delta, 0, barLength);\n const val = quantize((delta / barLength) * (max - min) + min, min, max, step);\n setStyles(val);\n return val;\n }\n\n function moveHandleDelta(x, y, event) {\n\n const\n factor = event.shiftKey\n ? factorCoarse\n : (event.metaKey || event.ctrlKey)\n ? 4 * factorCoarse\n : factorFine;\n\n let\n delta;\n\n if (orientation === \"vertical\") {\n delta = event.movementY || 0;\n } else {\n delta = event.movementX || 0;\n }\n\n let newVal;\n let s = step > 0 ? step : (max - min) / 100;\n\n if (delta < 0) {\n newVal = Math.max(value + s * factor * delta, min);\n } else if (delta > 0) { // right/up\n newVal = Math.min(value + s * factor * delta, max);\n } else {\n return value;\n }\n\n newVal = quantize(newVal, min, max, step);\n\n setStyles(newVal);\n return newVal;\n\n }\n\n function onPress(x, y, event) {\n return useAbsolute\n ? onPressAbsolute(x, y, event)\n : onPressDelta(x, y, event);\n }\n\n function moveHandle(x, y, event) {\n return absolute\n ? moveHandleAbsolute(x, y, event)\n : moveHandleDelta(x, y, event);\n }\n\n // Event handlers\n function onMouseDown(e) {\n if (device === TOUCH) {\n return;\n }\n device = MOUSE;\n if (e.button !== 0) {\n return;\n }\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"mouseup\", onMouseUp);\n onPress(e.clientX, e.clientY, e);\n }\n\n function onMouseMove(e) {\n e.preventDefault();\n onMove(e.clientX, e.clientY, e);\n }\n\n function onMouseUp(e) {\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"mouseup\", onMouseUp);\n onRelease(e.clientX, e.clientY, e);\n }\n\n function onTouchStart(e) {\n if (device === MOUSE) {\n return;\n }\n elHit.addEventListener(\"touchmove\", onTouchMove);\n elHit.addEventListener(\"touchend\", onTouchEnd);\n const t = e.changedTouches[0];\n onPress(t.clientX, t.clientY, e, true);\n }\n\n function onTouchMove(e) {\n e.preventDefault();\n const t = e.changedTouches[0];\n onMove(t.clientX, t.clientY, e);\n }\n\n function onTouchEnd(e) {\n elHit.removeEventListener(\"touchmove\", onTouchMove);\n elHit.removeEventListener(\"touchend\", onTouchEnd);\n const t = e.changedTouches[0];\n onRelease(t.clientX, t.clientY, t);\n }\n\n function onKeyDown(e) {\n\n const k = e.keyCode;\n let newVal;\n\n if (k === 33) { // pgup\n e.preventDefault();\n let s = Math.max((max - min) / 10, step);\n if (s <= 0) {\n s = 1;\n }\n newVal = quantize(value + s, min, max, step);\n } else if (k === 34) { // pgdown\n e.preventDefault();\n let s = Math.max((max - min) / 10, step);\n if (s <= 0) {\n s = 1;\n }\n newVal = quantize(value - s, min, max, step);\n } else if (k === 35) { // end\n e.preventDefault();\n newVal = max;\n } else if (k === 36) { // home\n e.preventDefault();\n newVal = min;\n } else if (k === 37 || k === 40) { // left/down\n e.preventDefault();\n let s = (step > 0 ? step : (max - min) / 10) * (e.shiftKey ? 0.25 : (e.ctrlKey || e.metaKey) ? 4 : 1);\n newVal = Math.max(value - s, min);\n } else if (k === 38 || k === 39) { // right/up\n e.preventDefault();\n let s = (step > 0 ? step : (max - min) / 10) * (e.shiftKey ? 0.25 : (e.ctrlKey || e.metaKey) ? 4 : 1);\n newVal = Math.min(value + s, max);\n } else if (k === 48) { // 0\n newVal = (max + min) / 2;\n }\n if (typeof newVal !== \"number\" || newVal === value) {\n return; // no change to make\n }\n value = newVal;\n setStyles(value);\n if (onchange && onchange(value) !== false) {\n m.redraw();\n }\n }\n\n function onMove(x, y, event) {\n if (!pressed) {\n return;\n }\n\n const val = moveHandle(x, y, event);\n if (val !== value) {\n value = val;\n if (ondrag && ondrag(value) !== false) {\n m.redraw();\n }\n }\n }\n\n function onRelease(x, y, e) {\n\n if (!pressed) {\n return;\n }\n\n pressed = false;\n value = moveHandle(x, y, e);\n\n if (onchange && onchange(value) !== false) {\n m.redraw();\n }\n\n /*\n if (value !== startValue) {\n if (onchange && onchange(value) !== false) {\n m.redraw();\n }\n }\n */\n\n if (!absolute) document.exitPointerLock();\n\n setTimeout(function () {\n if (!pressed) {\n device = NONE;\n }\n }, DEVICE_DELAY);\n }\n\n /** Compute handle position style */\n function positionStyle(val) {\n let s = (val - min) / (max - min);\n if (orientation === \"vertical\") {\n s = 1.0 - s;\n }\n return String(100 * s) + \"%\";\n }\n\n /** Set styles for movable parts */\n function setStyles(value) {\n const\n ps = positionStyle(value),\n rps = positionStyle(max - value + min);\n\n if (orientation === \"vertical\") {\n elHandle.style.top = ps;\n elBar0.style.height = ps;\n elBar1.style.height = rps;\n } else {\n elHandle.style.left = ps;\n elBar0.style.width = rps;\n elBar1.style.width = ps;\n }\n }\n\n /** Some attrs need to be cached (and updated) so that they are current in event handlers */\n function updateAttrs(attrs) {\n min = attrs.min;\n max = attrs.max;\n step = (typeof attrs.step === \"number\" && !Number.isNaN(attrs.step))\n ? clamp(attrs.step, 0, max - min) : 1;\n orientation = attrs.orientation === \"vertical\" ? \"vertical\" : \"horizontal\";\n onchange = attrs.onchange;\n ondrag = attrs.ondrag;\n if (typeof attrs.value === \"number\") {\n value = clamp(attrs.value, min, max);\n }\n useAbsolute = !attrs.relative;\n factorCoarse = (attrs.factor && attrs.factor[0]) || 4;\n factorFine = (attrs.factor && attrs.factor[1]) || 1;\n\n }\n\n /** Return mithril component hooks object */\n return {\n oncreate: ({attrs, dom}) => {\n applyIOSHack();\n updateAttrs(attrs);\n elHit = dom;\n elBar = elHit.querySelector(\".mithril-range-bar\");\n elBar0 = elBar.querySelector(\".mithril-range-bar-0\");\n elBar1 = elBar.querySelector(\".mithril-range-bar-1\");\n elHandle = elBar.querySelector(\".mithril-range-handle\");\n elHit.addEventListener(\"mousedown\", onMouseDown);\n elHit.addEventListener(\"touchstart\", onTouchStart);\n elHit.addEventListener(\"keydown\", onKeyDown);\n },\n onremove: function () {\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"mouseup\", onMouseUp);\n elHit.removeEventListener(\"mousedown\", onMouseDown);\n elHit.removeEventListener(\"touchstart\", onTouchStart);\n elHit.removeEventListener(\"touchmove\", onTouchMove);\n elHit.removeEventListener(\"touchend\", onTouchEnd);\n elHit.removeEventListener(\"keydown\", onKeyDown);\n },\n view: function ({attrs, children}) {\n\n const NOKEY = attrs.nokey ? \" nokey\" : \"\";\n\n updateAttrs(attrs);\n value = quantize(value, min, max, step);\n const a = {\n class: \"mithril-range \" + NOKEY + (attrs.relative ? \" isrelative \" : \" \") + (value === 0 ? \"atzero\" : value < 0 ? \"belowzero\" : \"overzero\") + (attrs.class != null ? \" \" + attrs.class : \"\"),\n tabIndex: \"0\",\n role: \"slider\",\n \"aria-valuemin\": String(min),\n \"aria-valuemax\": String(max),\n \"aria-valuenow\": String(value),\n \"aria-orientation\": orientation\n };\n if (attrs.id) {\n a.id = attrs.id;\n }\n // noinspection JSUnresolvedVariable\n if (attrs.ariaLabelledby) {\n a[\"aria-labelledby\"] = attrs.ariaLabelledby;\n }\n if (attrs.disabled) {\n a.style = {pointerEvents: \"none\"};\n a[\"aria-disabled\"] = \"true\";\n }\n const\n ps = positionStyle(value),\n rps = positionStyle(max - value + min);\n let\n handleStyle,\n bar0Style,\n bar1Style;\n\n if (orientation === \"vertical\") {\n handleStyle = {top: ps};\n bar0Style = {height: ps};\n bar1Style = {height: rps};\n } else {\n handleStyle = {left: ps};\n bar0Style = {width: rps};\n bar1Style = {width: ps};\n }\n return m(\"div\", a, m(\"div\", {class: \"mithril-range-bar\" + NOKEY}, m(\"div\", {\n class: \"mithril-range-bar-0\" + NOKEY,\n style: bar0Style\n }), m(\"div\", {\n class: \"mithril-range-bar-1\" + NOKEY,\n style: bar1Style\n }), m(\"div\", {\n class: \"mithril-range-handle\" + NOKEY,\n style: handleStyle\n }, children)), !!attrs.name && m(\"input\", {\n type: \"hidden\",\n name: attrs.name,\n value: String(value)\n }));\n }\n };\n}\n\nexport default MithrilRange;\n","import m from \"mithril\";\nimport MithrilRange from \"../util/mithril-range\";\n\nlet\n __timer;\n\nconst\n resetMultiplier = (state) => {\n /*\n if (state.curMultiplier > 1 && state.value < state.curMax * (state.curMultiplier - 1)) {\n state.curMultiplier = Math.ceil(state.value / state.curMax);\n m.redraw();\n }\n */\n\n const\n // req multiplier to show value within negative bounds\n maxMultiplier = state.value > state.curMax ? Math.ceil(state.value / state.curMax) : 1,\n // req multiplier to show value within positive bounds\n minMultiplier = (state.curMin < 0 && state.value < state.curMin) ? Math.abs(Math.ceil(state.value / state.curMin)) : 1,\n // chosen\n multiplier = Math.min(Math.max(minMultiplier, maxMultiplier), state.maxMultiplier);\n\n if (state.curMultiplier !== multiplier) {\n state.curMultiplier = multiplier;\n m.redraw();\n }\n },\n increaseMultiplier = (state) => {\n if (\n state.value >= (state.curMax * state.curMultiplier) * 0.9\n && state.maxMultiplier > 1\n && state.curMultiplier <= state.maxMultiplier - 1\n ) {\n state.curMultiplier++;\n return true;\n }\n if (state.curMin < 0) return increaseMinMultiplier(state);\n },\n increaseMinMultiplier = (state) => {\n if (state.value <= (state.curMin * state.curMultiplier) * 0.9\n && state.maxMultiplier > 1\n && state.curMultiplier <= state.maxMultiplier - 1\n ) {\n state.curMultiplier++;\n return true;\n }\n },\n RangeSlider = {\n\n oninit: ({attrs, state}) => {\n Object.assign(state, {\n value: attrs.value || 0,\n initial: attrs.value || 0,\n curMax: attrs.max,\n curMin: attrs.min,\n curMultiplier: 1,\n maxMultiplier: attrs.multiplier || 1,\n id: \"I\" + Date.now()\n });\n // adjust initial multiplier\n if (state.maxMultiplier > 1) {\n if (state.value > attrs.max) {\n state.curMultiplier = Math.ceil(state.value / attrs.max);\n } else if (attrs.min < 0 && state.value < attrs.min) {\n state.curMultiplier = Math.abs(Math.ceil(state.value / attrs.min));\n }\n }\n },\n onupdate: ({attrs, state}) => {\n const\n attrsMultiplier = attrs.multiplier || 1,\n attrsValue = attrs.value || 0;\n\n if (state.curMax !== attrs.max || state.maxMultiplier !== attrsMultiplier) {\n\n Object.assign(state, {\n curMax: attrs.max,\n curMin: attrs.min,\n maxMultiplier: attrsMultiplier,\n value: attrs.value,\n initial: attrsValue\n });\n if (!increaseMultiplier(state)) {\n clearTimeout(state.timer);\n state.timer = setTimeout(resetMultiplier, 1000, state);\n }\n\n m.redraw();\n\n } else if (state.initial !== attrsValue) {\n\n Object.assign(state, {\n value: attrsValue,\n initial: attrsValue\n });\n\n clearTimeout(__timer);\n __timer = setTimeout(() => m.redraw(), 50);\n\n /*\n if (!increaseMultiplier(state)) {\n state.timer = setTimeout(resetMultiplier, 1000, state);\n clearTimeout(state.timer);\n }\n */\n }\n },\n view: ({attrs, state}) => m(\n \".range.flexcol.control.relative\" + (attrs.multiplier > 1 ? \".withmultiplier\" : \"\"),\n {\n ...attrs.class && {class: attrs.class},\n title: attrs.hint || \"Click, then use arrows to finetune value if needed\"\n },\n [\n ...attrs.title ? [m(\"label\", {class: \"rangelabel\", htmlFor: state.id}, attrs.title)] : [],\n m(MithrilRange, {\n onchange: (value) => {\n\n state.value = value;\n\n const increased = increaseMultiplier(state);\n\n if (!increased && state.curMultiplier > 1) {\n clearTimeout(state.timer);\n state.timer = setTimeout(resetMultiplier, 1000, state);\n }\n\n if (attrs.onchange) {\n attrs.onchange(value);\n } else {\n m.redraw();\n }\n },\n ondrag: (value) => {\n if (value !== state.value) {\n state.value = value;\n if (attrs.ondrag) attrs.ondrag(value);\n return true;\n }\n return false;\n },\n value: state.value || 0,\n min: (attrs.min || 0) * state.curMultiplier,\n max: (state.curMax * state.curMultiplier) || 100,\n step: attrs.step || 1,\n relative: attrs.relative,\n factor: attrs.factor\n }, [\n m(\".currentval\", attrs.parser\n ? attrs.parser(state.value, attrs.step < 1)\n : state.value\n ? attrs.step < 1\n ? state.value.toFixed(2)\n : (\"\" + Math.floor(state.value)) : \"\")\n ])\n /*\n m(\".datalist.flexrow\", [\n m(\"div\", attrs.getLabel(0)),\n m(\".ismax\", attrs.getLabel(attrs.max || 100))\n ])\n */\n ]\n )\n },\n RangeWidget = {\n view: ({attrs, state}) => m(RangeSlider, {\n value: attrs.value || 0,\n min: attrs.min || 0,\n max: attrs.max || 100,\n step: attrs.step || 0.1,\n class: (attrs.disabled ? \"disabled \" : \"\") + (attrs.class || \"\"),\n title: attrs.title,\n multiplier: attrs.multiplier,\n hint: attrs.hint,\n parser: attrs.parser,\n relative: attrs.relative,\n factor: attrs.factor,\n\n // values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n getLabel: (value) => (value ? \"\" + value : \"default\"),\n ondrag: (value) => {\n state.changed = true;\n state.value = value;\n if (attrs.onchange) attrs.onchange(value, true);\n return true;\n },\n onchange: (value) => {\n if (attrs.auto0) {\n value = 0;\n } else if (attrs.autoValue) value = attrs.autoValue;\n state.changed = true;\n state.value = value;\n if (attrs.onchange) attrs.onchange(value, false);\n return true;\n }\n })\n };\n\nexport default RangeWidget;\n","const\n MAINSTATE = {\n setTransState: () => {\n console.warn(\"MainState: Not Implemented setTransState\")\n },\n WIDGETS: {}\n }\n\nfunction implement(functs) {\n Object.assign(MAINSTATE, functs);\n}\n\nfunction registerWidget(name, widget) {\n Object.assign(MAINSTATE.WIDGETS, {[name]: widget});\n}\n\nfunction getWidget(name) {\n return typeof (name) === \"string\" ? MAINSTATE.WIDGETS[name] : name;\n}\n\nexport default MAINSTATE;\nexport {implement, registerWidget, getWidget};\n","import m from \"mithril\";\nimport {defineWidget, ButtonNew} from \"./Basic\";\nimport MainState from \"../app/MainState.js\"\n\nconst\n SmileysButton = defineWidget(\n ({attrs}) => {\n const {icon, onchange, icons, state} = attrs;\n return m(ButtonNew, {\n title: \"Click to select icon or emoji for this marker\",\n class: \"chequered \" + (attrs.class || \"font-200\"),\n icon: icon && icon.icon,\n text: icon && icon.glyph,\n onClick: () => MainState.setTransState(\"emoji\", onchange, {icons})\n });\n }\n );\n\nexport default SmileysButton;\n","function startApp(target, appMetadata) {\n m.route(\n document.getElementById(target),\n appMetadata.default || \"/\",\n appMetadata.routes\n );\n}\n\nexport default startApp;","import m from 'mithril';\nimport {defineWidget, ButtonNew} from \"./Basic.js\"\nimport {promptName} from \"./OverflowUtils\"\nimport {confirmPromise} from \"../util/fuckingconfirm.js\"\n\nconst\n ThematicWrapper = defineWidget(\n ({attrs, children}) => m(\n \".buttonchoice.withicon.flexrow.scaff.scaff-b1.fadein.ohidden.fa-\" + (attrs.icon || \"gear\"),\n {class: (attrs.containerClass || \"col-11 grows marg-1\"), title: attrs.title},\n m(\n (attrs.themeClass ? attrs.themeClass:\".flexrow.wrap\") + \".grows.col-11.ohidden.scaff-left.bg-inputs\",\n {class: attrs.class},\n children\n )\n )\n ),\n optionsPrompt = (items, index, onAdd, onDelete, onEdit, allowUpdate) => {\n\n const item = items[index];\n\n confirmPromise(\n \"Choose an action for this preset\",\n onAdd && allowUpdate\n ? [\"DELETE\", \"RENAME\", \"UPDATE\", \"CANCEL\"]\n : [\"DELETE\", \"RENAME\", \"CANCEL\"]\n )\n .then((idx) => {\n\n if (idx === 0) {\n items.splice(index, 1);\n if (onDelete) onDelete(index);\n m.redraw();\n } else if (idx === 1) {\n setTimeout(() => promptName(\n \"Rename Preset\",\n item.title || \"\",\n \"type a name for this preset\",\n (newName) => {\n if (newName) {\n newName = newName.trim();\n if (newName) {\n item.title = newName.substring(0, 24);\n m.redraw();\n }\n }\n }\n ), 10);\n } else if (onAdd && idx === 2) {\n onAdd(false, index);\n }\n });\n },\n GenericButtonTicker = defineWidget(\n ({attrs, children}) => {\n\n const\n {\n title, noUpdate, items = [], current, altIndex, onEdit, emptyText,\n onAdd, onSelect, onDelete, addText = \"Add New\",\n unconfirm, buttonClass, themeIcon, themeTitle\n } = attrs,\n\n allItems = [\n\n ...items.map(\n (item, index) => m(\n \"button.grows.marg-1.ellipsis.ohidden.hasShift\",\n {\n\n class: (buttonClass ? buttonClass : \"unitheightsmall scaff-b1\")\n + (index === current ? \" accent\" : \"\")\n + (index === altIndex ? \" alt-accent\" : \"\"),\n\n title,\n onclick: (e) => {\n if (e.metaKey && onEdit) {\n onEdit(item);\n } else if (onAdd && e.shiftKey) {\n if (unconfirm) {\n items.splice(index, 1);\n if (onDelete) onDelete(index);\n m.redraw();\n } else {\n optionsPrompt(items, index, onAdd, onDelete, undefined, !noUpdate);\n }\n } else {\n onSelect && onSelect(item, index, e.metaKey, e.shiftKey);\n }\n }\n },\n (item.title || item.name || item.text || String(1 + index)).substring(0, 32)\n )\n ),\n\n ...!items.length && emptyText\n ? [\n m(\".grows.marg-1.ellipsis.ohidden.al-center\", emptyText)\n ] : [],\n\n ...onAdd\n ? [\n m(ButtonNew, {\n tabIndex: -1,\n icon: attrs.icon || \"plus\",\n title: attrs.addTitle || \"Add a new item\",\n class: \"pad-2 pad-h al-center unitheightsmall transp addbut scaff-left bg-window-lo grows\" + (items.length ? \" some\" : \" empty\"),\n onClick: (e) => onAdd(e.ctrlKey || e.metaKey),\n text: items?.length ? \"\" : addText\n })\n ]\n : [],\n\n ...!themeIcon && attrs.currentWidget && current >= 0 && items[current]\n ? attrs.currentWidget(items[current], current) || []\n : [],\n\n ...!themeIcon && attrs.altCurrentWidget && altIndex >= 0 && items[altIndex]\n ? attrs.altCurrentWidget(items[altIndex], current) || []\n : [],\n\n ...children\n ];\n\n return themeIcon\n ? [\n m(ThematicWrapper, {\n title: themeTitle,\n containerClass: attrs.containerClass,\n themeClass: attrs.themeClass,\n icon: themeIcon\n }, allItems),\n ...attrs.currentWidget && current >= 0 && items[current] ? attrs.currentWidget(items[current], current) || [] : [],\n ...attrs.altCurrentWidget && altIndex >= 0 && items[altIndex] ? attrs.altCurrentWidget(items[altIndex], altIndex) || [] : [],\n\n ] : allItems;\n }\n ),\n CoolGenericTicker = defineWidget(\n ({attrs, children}) => {\n\n const\n {\n nocontainer,\n emptyText,\n title,\n addTitle,\n items,\n currentIndex,\n altIndex,\n onEdit,\n onDelta,\n onSelect,\n onAdd,\n addText,\n icon,\n buttonClass\n } = attrs,\n itemz = ((items && items.length <= (attrs.max || 15)) || !onDelta)\n ? m(GenericButtonTicker, {\n addTitle,\n emptyText,\n title,\n items,\n current: currentIndex,\n altIndex,\n onSelect,\n onAdd,\n onEdit,\n addText,\n icon,\n buttonClass\n }, children)\n : [\n m(ButtonNew, {\n tabIndex: -1,\n icon: \"caret-right\",\n class: \"unitheightsmall grows marg-1 no-marg-left\",\n onClick: () => onDelta(-1)\n }),\n ...items\n ? [\n m(\n \".scaff.unitheightsmall.value.al-center.bg-window-lo.grows.marg-1.no-marg-left \",\n (1 + currentIndex) + \" / \" + items.length\n )\n ]\n : [],\n m(ButtonNew, {\n tabIndex: -1,\n icon: \"caret-left\",\n class: \"unitheightsmall grows marg-1 marg-v\",\n onClick: () => onDelta(1)\n }),\n ...onAdd\n ? [\n m(ButtonNew, {\n tabIndex: -1,\n icon: attrs.icon || \"plus\",\n class: \"unitheightsmall marg-1 marg-v\",\n onClick: () => onAdd()\n })\n ] : []\n ];\n\n return nocontainer\n ? itemz\n : items.length || !onAdd ? m(\n \".flexrow.wrap.max.minusbar\",\n {class: (attrs.dynclass ? attrs.dynclass() + \" \" : \"\") + attrs.class},\n itemz\n ) : [];\n }\n ),\n\n CoolContentTicker = defineWidget(\n ({attrs}) => {\n\n if (!attrs.layer.items) return [];\n\n const\n {global, layer, remoteFirst: isRemote, isCue} = attrs,\n {storyWrapper} = global,\n {id, items} = layer,\n\n currentIndex = storyWrapper.getTickerIndex(id, isRemote),\n altIndex = isRemote ? storyWrapper.getTickerIndex(id, false) : undefined;\n\n // noinspection JSUnusedGlobalSymbols\n return m(CoolGenericTicker, {\n title: attrs.title,\n onAdd: attrs.onAdd,\n class: \"marg-1 marg-h grows\",\n items,\n currentIndex,\n altIndex,\n current: items[currentIndex] || undefined,\n onDelta: (direction) => storyWrapper.tickLayer(layer, direction, isRemote, isCue),\n onSelect: (item, index, force) => storyWrapper.setTickerIndex(layer, index, force, isRemote, isCue)\n });\n }\n );\n\nexport {CoolContentTicker, CoolGenericTicker, GenericButtonTicker, ThematicWrapper, optionsPrompt};\n","import m from \"mithril\"\nimport {defineWidget, ButtonNew, Empty} from \"./Basic.js\"\n\n\nconst EmptyButton = defineWidget(\n ({attrs}) => m(\n Empty,\n {\n size: 2,\n icon: attrs.icon,\n class: \"pad-2\"\n },\n [\n ...attrs.texts\n .map((text) => m(\".text\", text)),\n ...attrs.buttonText ? [\n m(ButtonNew, {\n class: \"font-125 accentbutton unitheightsmall\",\n icon: attrs.icon || \"plus\",\n text: attrs.buttonText,\n onClick: attrs.onClick\n })\n ] : [],\n ...attrs.buttonAlt ? [\n m(ButtonNew, {\n class: \"font-125 accentbutton unitheightsmall\",\n icon: attrs.iconAlt || \"plus\",\n text: attrs.buttonTextAlt,\n onClick: attrs.onClick\n })\n ] : []\n ]\n )\n);\n\nexport default EmptyButton;\n","import m from \"mithril\"\nimport {defineWidget, ButtonNew, Empty} from \"./Basic.js\"\n\n\nfunction TRANSLATE(message, arr, def) {\n return arr ? arr[message] || (def || message) : (def || message);\n}\n\nconst\n CoolerEmpty = {\n oninit: ({attrs}) => {\n attrs.oninit && attrs.oninit()\n },\n view: ({attrs}) => m(Empty, {\n class: attrs.class,\n icon: attrs.icon,\n size: attrs.size || 4\n }, [\n ...attrs.header ? [m(\"h3.pad-2.marg-0\", TRANSLATE(attrs.header, attrs.headers))] : [],\n m(\".pad-2\", TRANSLATE(attrs.message, attrs.messages)),\n ...attrs.action ? [\n m(ButtonNew, {\n text: attrs.action.caption,\n class: \"accentbutton marg-4 marg-v pad-2 font-150\",\n onClick: attrs.action.onclick\n })\n ] : [],\n ...attrs.actions\n ? attrs.actions.map((action) => m(ButtonNew, {\n text: action.caption,\n class: \"accentbutton marg-4 marg-v pad-2 font-150\",\n onClick: action.onclick\n }))\n : []\n ])\n };\nexport default CoolerEmpty;\n","import m from \"mithril\";\n\nlet\n gTainted = false;\n\nfunction taint() {\n gTainted = true;\n}\n\nfunction taintRedraw() {\n const r = gTainted;\n gTainted = true;\n // eslint-disable-next-line no-unused-expressions\n r && m.redraw();\n}\n\nfunction isTainted() {\n return gTainted;\n}\n\nfunction untaint() {\n gTainted = false;\n m.redraw();\n}\n\n\nexport {\n taint,\n taintRedraw,\n isTainted,\n untaint\n};\n\nexport default {\n taint,\n taintRedraw,\n isTainted,\n untaint\n}","const\n AGENT = \"Windows NT\",\n isWindows = () => navigator.userAgent.indexOf(AGENT) !== -1,\n SEPARATOR_WINDOWS = \"\\\\\",\n SEPARATOR_LINUX = \"/\",\n SEPARATOR = isWindows() ? SEPARATOR_WINDOWS : SEPARATOR_LINUX,\n makeLocalPath = (pathArray) => pathArray.join(SEPARATOR),\n makeLocalUrl = (base, pathArray) => [\"file://\", ...base.split(SEPARATOR_WINDOWS), ...pathArray].join(SEPARATOR_LINUX);\n\nexport {makeLocalPath, makeLocalUrl}","/**\n *\n * A Button to read a text file\n * @typedef {{ root:string, key:string, format:string, type:string, onUpload:function(boolean,Error?), quality:number}} UploadImageAttrs\n *\n * @author Rodolfo Lopez Pintor, 2019\n *\n */\n\nimport m from \"mithril\";\nimport {defineWidget, Icon, ButtonNew, Notification} from \"./Basic\";\nimport MainState from \"../app/MainState.js\"\n\n\nfunction processDataUrl(file) {\n return new Promise((resolve, reject) => {\n\n const reader = new FileReader();\n reader.onload = function (evt) {\n\n const\n data = evt.target.result;\n\n if (data) resolve({name: file.name, url: data}); else reject(new Error(\"no data\"));\n\n };\n reader.readAsDataURL(file);\n });\n\n}\n\nfunction processImage(file) {\n return new Promise((resolve, reject) => {\n\n const reader = new FileReader();\n reader.onload = function (evt) {\n\n const\n data = evt.target.result,\n pict = new Image();\n\n pict.onerror = function (error) {\n evt.target.value = \"\";\n reject(error);\n };\n\n pict.onload = function () {\n resolve(pict);\n };\n\n // noinspection JSValidateTypes\n pict.src = data;\n\n };\n reader.readAsDataURL(file);\n });\n\n}\n\nconst\n MediaSelectButton = defineWidget(\n ({attrs}) => m(ButtonNew, {\n class: \"unitsizesmall rectbutton ohidden\",\n icon: \"images\",\n onClick: () => MainState.setTransState(\"image\", undefined, {\n giphyQuery: \"frame\",\n onOverride: (global, item) => {\n const translated = item ? attrs.parse ? attrs.parse(item) : item : undefined;\n if (translated) {\n attrs.onImage(translated);\n m.redraw();\n }\n }\n })\n })\n );\n\n// noinspection JSValidateTypes\nconst\n FileSelectButton = defineWidget(\n (vnode) => {\n\n const {attrs} = vnode;\n\n return m(\n \"button.selectfile.relative\",\n {\n ...attrs.class && {class: attrs.class}\n },\n [\n m(Icon, {icon: attrs.icon || \"upload\", iconClass: attrs.iconClass}),\n ...attrs.text ? [m(\"span.text\", {class: attrs.textClass}, attrs.text)] : [],\n m(\"input\", {\n class: \"absolute w-100 h-100 ohidden\",\n type: \"file\",\n accept: attrs.accept || null,\n title: attrs.title,\n onchange: (event) => {\n if (event.target.files && event.target.files.length) {\n attrs.onFile(event.target.files[0]);\n event.target.value = \"\";\n }\n }\n })\n\n ]\n );\n }\n ),\n\n ImageSelectButton = defineWidget(\n ({attrs}) => m(FileSelectButton, {\n class: attrs.class,\n accept: attrs.accept || \"image/*\",\n icon: attrs.icon || \"image\",\n iconClass: attrs.iconClass,\n textClass: attrs.textClass,\n text: attrs.text,\n onFile: (file) => attrs.onImageFiles([{type: \"image\", file}])\n })\n ),\n\n\n ImageProcessButton = defineWidget(\n ({attrs}) => m(ImageSelectButton, {\n class: attrs.class,\n icon: attrs.icon,\n text: attrs.text,\n accept: attrs.accept,\n iconClass: attrs.iconClass,\n textClass: attrs.textClass,\n onImageFiles: (files) => {\n if (files.length) {\n processImage(files[0].file)\n .then(attrs.onImage)\n .catch((e) => {\n if (attrs.onError) attrs.onError(e);\n });\n }\n }\n })\n ),\n ImageDataButton = defineWidget(\n ({attrs}) => m(ImageSelectButton, {\n class: attrs.class,\n icon: attrs.icon,\n text: attrs.text,\n accept: attrs.accept,\n iconClass: attrs.iconClass,\n textClass: attrs.textClass,\n onImageFiles: (files) => {\n if (files.length) {\n processDataUrl(files[0].file)\n .then(attrs.onImageUrl)\n .catch((e) => {\n if (attrs.onError) attrs.onError(e);\n });\n }\n }\n })\n );\n\nexport {\n FileSelectButton,\n ImageDataButton,\n ImageSelectButton,\n ImageProcessButton,\n MediaSelectButton,\n processImage\n};\n","import m from \"mithril\";\nimport {defineWidget, ButtonNew} from \"./Basic\";\nimport MainState from \"../app/MainState.js\"\n\nconst\n // TODO\n FontSelectorButton = defineWidget(\n ({attrs}) => {\n const {fontFamily, state, onchange} = attrs;\n return m(\".flexrow.grows.fontgroup\", {class: attrs.class}, [\n ...fontFamily && !attrs.nodelete\n ? [\n m(ButtonNew, {\n class: \"scaff-right unitsize\",\n icon: \"trash\",\n onClick: () => {\n onchange(undefined);\n MainState.setTransState();\n }\n })\n ]\n : [],\n m(ButtonNew, {\n class: \"grows transp font-125 ohidden\",\n text: fontFamily || \"default\",\n icon: \"font\",\n onClick: () => MainState.setTransState(\"fontsel\", (selected) => {\n onchange(selected);\n MainState.setTransState();\n })\n }),\n\n ]);\n }\n );\n\nexport default FontSelectorButton;\n","const InputTemplates = {};\n\nexport default InputTemplates;","import m from \"mithril\";\n\nimport {defineWidget, Notification, ButtonNew, Icon, Empty, Selector} from \"./Basic\";\nimport CardieWidget from \"./CardieWidget\";\nimport ButtonChoiceWidget from \"./ButtonChoiceWidget\";\nimport InputWidget from \"./InputWidget\";\nimport NoticeWidget from \"./NoticeWidget\";\nimport ComboWidget from \"./ComboWidget\";\nimport ComboPrompt from \"./ComboPrompt\";\nimport SwitchWidget from \"./SwitchWidget\";\nimport ColorJoeWidget from \"./ColorJoeWidget\";\nimport Separator from \"./Separator\";\nimport PlusMinusWidget from \"./PlusMinusWidget\";\nimport RangeWidget from \"./RangeWidget\";\nimport FontSelectorButton from \"./FontSelectorButton\";\nimport SmileysButton from \"./SmileysButton.js\"\nimport InputTemplates from \"../meta/InputTemplates.js\"\n\nimport cloneObject from \"../util/util.clone.js\"\n\nimport {confirm} from \"../util/fuckingconfirm.js\"\nimport {promptName} from \"./OverflowUtils.js\"\nimport {sanitizeFilename} from \"../util/util.tokenizer\"\nimport {taint} from \"../util/tainter\"\nimport MainState, {getWidget} from \"../app/MainState.js\"\n\nconst\n\n NEEDS_UPDATE = \"needsUpdate\",\n REBUILD_CHILDREN = \"_rebuild_children\",\n NEEDS_DELETE = \"delete\",\n KeyWrapper = defineWidget(\n ({children}) => [children]\n ),\n ToggleWidget = defineWidget(\n ({attrs}) => m(ButtonNew, {\n text: attrs.text,\n icon: attrs.icon,\n title: attrs.hint,\n iconClass: attrs.iconClass,\n class: (attrs.checked ? attrs.inverted ? \"\" : \"accent \" : attrs.inverted ? \"accent \" : \"\") + (attrs.class || \"\") + (attrs.noclass || \" tgbutton\"),\n onClick: () => attrs.onchange(!attrs.checked)\n })\n ),\n RangeToggleWidget = defineWidget(\n ({attrs}) => m(RangeWidget, {\n\n min: 0,\n max: attrs.max || 1,\n step: 0.1,\n ...attrs.mul && {multiplier: attrs.mul},\n class: \"tgrange grows innerlabel\",\n title: attrs.text,\n value: attrs.value ?? 0,\n hint: attrs.hint,\n onchange: (value) => attrs.onchange(value),\n parser: (v) => v || \"OFF\"\n })\n ),\n\n MultiToggleWidget = defineWidget(\n ({attrs, children}) => m(\".flexrow.wrap\", {class: attrs.class}, attrs.source\n ? Object.keys(attrs.source)\n .map((key) => m(getWidget(attrs.widget) || ToggleWidget, {\n text: key,\n icon: attrs.icon,\n checked: !!attrs.source[key],\n hint: attrs.hint,\n value: attrs.source[key],\n class: attrs.buttonClass,\n max: attrs.max,\n mul: attrs.mul,\n onchange: (checked) => {\n attrs.source[key] = checked >= 0 ? checked : !!checked;\n attrs.onchange(key);\n }\n }))\n .concat(children)\n : [])\n ),\n PagedMultiToggleWidget = defineWidget(\n ({attrs, state, children}) => [\n ...attrs.keys.length > 1\n ? [\n m(\n \".flexrow.wrap\",\n {class: attrs.class},\n attrs.source\n ? attrs.keys\n .map((key) => m(ToggleWidget, {\n text: key,\n checked: state.current === key,\n class: attrs.selectorButtonClass || \"transp\",\n hint: attrs.hint,\n onchange: () => {\n state.current = key;\n m.redraw();\n }\n }))\n : []\n )\n ]\n : [],\n ...state.current\n ? [\n m(MultiToggleWidget, {\n class: attrs.class,\n source: attrs.source[state.current],\n icon: attrs.icon,\n buttonClass: attrs.buttonClass,\n onchange: attrs.onchange,\n hint: attrs.hint,\n widget: attrs.nocustom !== state.current ? getWidget(attrs.widget) : undefined,\n max: attrs.max,\n mul: attrs.mul\n }, children)\n ]\n : []\n ],\n ({attrs, state}) => {\n state.current = attrs.keys[0];\n }\n ),\n KeyIteratorWidget = defineWidget(\n ({attrs, children}) => {\n const\n isArray = attrs.source && Array.isArray(attrs.source),\n keys = isArray ? attrs.source.map((_, i) => i) : attrs.keys || attrs.source && Object.keys(attrs.source),\n expandedView = () => (keys && keys.length) || attrs.add\n ? [\n ...attrs.cardie || attrs.noseparator\n ? []\n : [m(Separator, {\n class: attrs.separatorClass,\n text: attrs.caption\n })],\n\n m(\".flexrow.wrap\", {class: attrs.class},\n (\n attrs.source\n ? keys.map((key) => m(getWidget(attrs.widget.name), {\n keyName: key,\n class: attrs.widgetClass,\n ...((typeof attrs.widget.attrs === \"function\" ? attrs.widget.attrs(attrs, key) : attrs.widget.attrs) || {}),\n value: attrs.source[key],\n parameters: attrs.targetParameters,\n onchange: (newValue, event) => {\n if (!newValue && attrs.add && event.shiftKey) {\n\n if (isArray) {\n attrs.source.splice(key, 1);\n } else {\n delete attrs.source[key];\n }\n } else {\n attrs.source[key] = newValue;\n }\n attrs.onchange(key);\n }\n }))\n : []\n )\n .concat(attrs.add && !attrs.keys ? [\n m(ButtonNew, {\n icon: \"plus\",\n class: attrs.addButtonClass || \"marg-1 transp leftbutton grows unitsizesmall\",\n text: `add ${attrs.add}`,\n onClick: () => {\n promptName(\n `Enter new ${attrs.add} name`,\n \"\",\n `type ${attrs.add} name`,\n (newName) => {\n\n const NEWITEM = \"\"; // TODO\n\n if (newName) {\n newName = sanitizeFilename(newName)\n .toLowerCase();\n }\n if (newName) {\n if (isArray) {\n attrs.source.push(NEWITEM);\n } else {\n if (!attrs.source[newName]) {\n attrs.source[newName] = NEWITEM;\n m.redraw();\n }\n }\n }\n });\n }\n })\n ] : [])\n .concat(children)\n )\n ]\n : attrs.empty ? m(Empty, attrs.empty) : [];\n\n return attrs.cardie\n ? m(CardieWidget, {\n nofold: false,\n size: 1,\n cols: false,\n\n title: attrs.caption,\n\n cardid: attrs.cardie,\n class: \"relative grows\" + (attrs.cardieClass ? \" \" + attrs.cardieClass : \"\"),\n expandedView\n })\n : expandedView();\n }\n ),\n ToggleStateWidget = defineWidget(\n ({attrs}) => m(ButtonNew, {\n text: attrs.states[Number.parseInt(attrs.checked, 10) || 0] || \"---\",\n icon: attrs.icon,\n hint: attrs.hint,\n class: \"tgbutton \" + (attrs.checked ? attrs.inverted ? \"\" : \"accent \" : attrs.inverted ? \"accent \" : \"\") + (attrs.class || \"\"),\n onClick: () => {\n let v = Number.parseInt(attrs.checked, 10) || 0;\n v++;\n v %= attrs.states.length;\n attrs.onchange(v);\n }\n })\n ),\n\n TemplateWidget = defineWidget(\n ({attrs, state}) => {\n\n const\n items = attrs.template.presets\n .concat(state.files || []);\n\n return m(\".templatepresets.flexrow.wrap\", {class: attrs.class}, items.length ? items.map((item) => m(attrs.template.render, {\n item,\n title: \"Apply \" + attrs.template.name + \" to \" + attrs.type,\n onClick: () => attrs.onClick(item),\n layer: attrs.layer\n })) : attrs.template.empty ? m(NoticeWidget, attrs.template.empty) : m(\".emptybox\", \"No presets available\"));\n },\n\n ({attrs, state}) => {\n if (attrs.template.files && attrs.entity) {\n attrs.template.files(attrs.entity)\n .then((files) => {\n state.files = files;\n m.redraw();\n })\n .catch(() => {\n //\n });\n }\n }\n ),\n\n checkWhen = (whenner, parameters, auxParameters, targetParameters) => {\n return typeof whenner === \"function\"\n ? whenner(parameters, auxParameters)\n : typeof whenner === \"string\"\n ? !!targetParameters[whenner]\n : whenner.key\n ? whenner.value\n ? whenner.not\n ? targetParameters[whenner.key] !== whenner.value\n : targetParameters[whenner.key] == whenner.value\n : whenner.not\n ? !targetParameters[whenner.key]\n : !!targetParameters[whenner.key]\n : !!targetParameters[whenner.key];\n\n },\n\n ParameterTable = defineWidget(\n ({attrs, state, children}) => {\n\n let total = 0;\n\n const\n\n {\n meta,\n crit = {}, when = {}, sizes = {},\n metaKeys = Object.keys(attrs.meta),\n global,\n parameters, auxParameters, clone, onchange, itemClass, wrapper,\n empty: vacioperovacio,\n name // new to index a parent\n } = attrs,\n\n widgets = metaKeys.map((metaKey) => {\n\n const\n metaDef = meta[metaKey],\n whenner = metaDef.when || (when ? when[metaKey] : undefined),\n isObj = typeof metaDef === \"object\" && !metaDef.length,\n targetSource = isObj && ((metaDef.auxTarget && !metaDef.target) || attrs.auxTargetIsDefault)\n ? auxParameters : parameters,\n\n targetParameters = isObj && (metaDef.target || metaDef.forTarget)\n ? targetSource[metaDef.target || targetSource.forTarget]\n : targetSource;\n\n // targetSource estaba antes, targetParameters incluye TARGET !!!!\n if (!parameters || (whenner && !checkWhen(whenner, parameters, auxParameters, targetParameters))) {\n return [];\n }\n\n const\n\n isWidget = isObj && metaDef.widget,\n UPDATECODE = isObj ? metaDef.update || crit[metaKey] : false,\n\n paramKey = (isObj && metaDef.key) || metaKey,\n\n isCardie = isObj && metaDef.type === \"group\",\n isCardieArray = isObj && metaDef.type === \"groupArray\",\n isString = typeof metaDef === \"string\" || (isObj && metaDef.type === \"text\"),\n isJson = (isObj && metaDef.type === \"json\"),\n isBoolean = typeof metaDef === \"boolean\" || (isObj && metaDef.type === \"boolean\"),\n\n isNumber = isObj && metaDef.type === \"number\",\n isRange = isObj && !Number.isNaN(metaDef.min),\n isActionButton = isObj && (metaDef.type === \"action\"),\n isButtonChoice = isObj && (metaDef.choices || metaDef.choose || metaDef.chooseKey),\n isMultiToggle = isObj && metaDef.type === \"keytoggle\",\n isKeyIterator = isObj && metaDef.type === \"iterakey\",\n isCombo = isObj && (metaDef.options || metaDef.optionsKey),\n isFullCombo = isObj && metaDef.items,\n isColor = isObj && metaDef.type === \"color\",\n isPlusMinus = isObj && metaDef.type === \"plusminus\",\n isSeparator = isObj && metaDef.type === \"separator\",\n isText = isObj && metaDef.type === \"static\",\n isEmoji = isObj && metaDef.type === \"emoji\",\n isFont = isObj && metaDef.type === \"font\",\n isNotice = isObj && metaDef.type === \"notice\",\n isAsset = isObj && metaDef.type === \"asset\",\n\n size = isSeparator ? \"col-12\" : \"col-\" + (metaDef.size || sizes[metaKey] || 4);\n\n\n // TODO\n if (!targetParameters) return [];\n\n // situacion: mostrar props f0 (objeto 3d), pero source[f0] no existe\n // targetParameters es NULL en ese caso !\n const\n altMeta = isObj && metaDef.altMeta && meta[metaDef.altMeta],\n\n idx = metaDef.idx,\n hasIndex = idx >= 0,\n\n rawValue = isObj && metaDef.get\n ? metaDef.get(targetParameters, auxParameters, parameters)\n : hasIndex ? targetParameters[paramKey] ? targetParameters[paramKey][idx] : 0 : targetParameters[paramKey],\n\n altMetaKey = altMeta && metaDef.altMeta,\n altKey = altMeta && altMeta.key,\n\n internalSet = isObj && metaDef.set\n ? (v) => metaDef.set(\n targetParameters,\n (\n (v && clone && typeof v === \"object\")\n ? cloneObject(v)\n : v\n ),\n auxParameters,\n parameters,\n idx\n )\n // eslint-disable-next-line no-return-assign\n : (v, nothing, altKey) => {\n\n const\n finalKey = altKey || paramKey,\n xdest = hasIndex ? idx : altKey || paramKey;\n let\n xsource = hasIndex ? targetParameters[finalKey] : targetParameters;\n\n if (idx >= 0 && !xsource) targetParameters[finalKey] = xsource = [0, 0, 0];\n\n return xsource[xdest] = ((v && clone && typeof v === \"object\")\n ? cloneObject(v)\n : v);\n },\n\n set = attrs.onbeforechange\n ? (value, nothing, altKey, altMeta) => {\n if (attrs.onbeforechange(altKey || metaKey, value, altMeta || metaDef)) {\n internalSet(value, undefined, altKey, altMeta);\n return true;\n }\n return false;\n }\n : internalSet;\n\n total++;\n\n return m(\n \".grows.flexrow.\" + size,\n {\n class: \"mk_\" + metaKey\n + (isObj && metaDef.type ? \" ptype_\" + metaDef.type : \"\")\n + (isString ? \"witharia\" : \"\")\n + ((metaDef.itemClass || itemClass) ? \" \" + (metaDef.itemClass || itemClass) : \"\"),\n \"aria-label\": metaKey\n },\n isCardieArray\n ? Array.isArray(rawValue)\n ? rawValue.map(\n (item, index) => metaDef.small\n ? m(ParameterTable, {\n meta: metaDef.items,\n crit: {},\n when: {},\n sizes: {},\n\n parameters: item,\n auxParameters,\n\n arrayInfo: {source: rawValue, item: targetParameters, index},\n\n global,\n clone,\n onchange,\n itemClass,\n wrapper,\n empty: vacioperovacio,\n itemsDict: attrs.itemsDict,\n layer: attrs.layer,\n onAction: attrs.onAction,\n optionsDict: attrs.optionsDict,\n play: attrs.play,\n auxTargetIsDefault: false,\n AssetButton: attrs.AssetButton,\n CodeMirror: attrs.CodeMirror\n })\n : m(CardieWidget, {\n class: \"relative grows \" + (metaDef.class || \"pad-h emby w-max\") + (metaDef.dynClass ? \" \" + metaDef.dynClass(parameters, auxParameters, index) : \"\"),\n title: metaDef.dynTitle ? metaDef.dynTitle(parameters, auxParameters, index) : metaDef.title + \" \" + (index + 1) + (item.title ? \" - \" + item.title : \"\"),\n cardid: metaDef.cardid + \"-\" + index,\n nofold: false,\n size: metaDef.margin || 0,\n expandedView: () => [\n m(ParameterTable, {\n meta: metaDef.items,\n crit: {},\n when: {},\n sizes: {},\n\n parameters: item,\n auxParameters,\n\n global,\n clone,\n onchange,\n itemClass,\n wrapper,\n empty: vacioperovacio,\n itemsDict: attrs.itemsDict,\n layer: attrs.layer,\n onAction: attrs.onAction,\n optionsDict: attrs.optionsDict,\n play: attrs.play,\n auxTargetIsDefault: false,\n AssetButton: attrs.AssetButton,\n CodeMirror: attrs.CodeMirror\n })\n ],\n titleExpended: metaDef.titleExpanded || metaDef.hint,\n titleCollapsed: metaDef.titleCollapsed || metaDef.hint,\n })\n )\n .concat(\n metaDef.addAction ? [\n m(ButtonNew, {\n ...metaDef.addAction,\n onClick: (e) => {\n if (metaDef.addAction.onClick) {\n metaDef.addAction.onClick(e, parameters, auxParameters);\n } else if (metaDef.addAction.template) {\n rawValue.push(cloneObject(metaDef.addAction.template));\n }\n m.redraw();\n }\n })\n ] : [])\n : []\n\n : isCardie\n ? [\n m(CardieWidget, {\n class: \"relative grows \" + (metaDef.class || \"emby w-max\") + (metaDef.dynClass ? \" \" + metaDef.dynClass(parameters, auxParameters) : \"\"),\n title: metaDef.dynTitle ? metaDef.dynTitle(parameters, auxParameters) : metaDef.title,\n cardid: metaDef.cardid,\n nofold: false,\n size: metaDef.margin || 0,\n expandedView: () => [\n m(ParameterTable, {\n meta: metaDef.items,\n crit: {},\n when: {},\n sizes: {},\n\n parameters,\n auxParameters,\n\n global,\n clone,\n onchange,\n itemClass,\n wrapper,\n empty: vacioperovacio,\n itemsDict: attrs.itemsDict,\n layer: attrs.layer,\n onAction: attrs.onAction,\n optionsDict: attrs.optionsDict,\n play: attrs.play,\n auxTargetIsDefault: attrs.auxTargetIsDefault,\n AssetButton: attrs.AssetButton,\n CodeMirror: attrs.CodeMirror\n }),\n ...metaDef.addAction ? [\n m(ButtonNew, {\n ...metaDef.addAction,\n onClick: (e) => {\n metaDef.addAction.onClick(e, parameters, auxParameters);\n m.redraw();\n }\n })\n ] : []\n ],\n titleExpended: metaDef.titleExpanded || metaDef.hint,\n titleCollapsed: metaDef.titleCollapsed || metaDef.hint,\n })\n ]\n : isSeparator\n ? [\n m(Separator, {\n class: metaDef.class || \"mini\",\n text: typeof metaDef.title === \"string\"\n ? metaDef.title : metaDef.label || metaKey\n })\n ]\n : isText\n ? metaDef.icon\n ? [\n m(Icon, {icon: metaDef.icon, class: metaDef.iconClass}),\n m(\".innertext\", {class: metaDef.class, title: metaDef.hint}, rawValue)\n ] : [\n m(\".innertext\", {class: metaDef.class, title: metaDef.hint}, rawValue)\n ]\n : isWidget\n ? [\n m(\n getWidget(metaDef.widget),\n\n typeof metaDef.attrs === \"function\"\n ? metaDef.attrs(\n rawValue,\n state,\n (critical, rootParameters) => onchange(critical || UPDATECODE, rootParameters ? parameters : targetParameters, metaKey, undefined, metaDef),\n global,\n attrs,\n targetParameters\n )\n : metaDef.attrs,\n\n metaDef.children\n ? metaDef.children(rawValue, state, (critical, rootParameters) => {\n onchange(critical || UPDATECODE, rootParameters ? parameters : targetParameters, metaKey, undefined, metaDef);\n }, global, attrs, targetParameters)\n : [])\n ]\n : isPlusMinus\n ? [\n m(PlusMinusWidget, {\n max: metaDef.max,\n min: metaDef.min,\n title: metaDef.title,\n label: metaDef.label,\n value: rawValue,\n onchange: (value) => {\n set(value);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n }\n })\n ]\n : isString || (isJson && !attrs.CodeMirror)\n ? [\n m(InputWidget, {\n containerClass: \"grows\",\n class: metaDef.inputClass,\n value: rawValue,\n label: metaDef.label,\n hint: isObj ? metaDef.hint : metaDef,\n title: metaDef.title,\n maxlength: isObj ? metaDef.maxlength || 256 : 256,\n ...metaDef.final && {\n oninput: () => {\n }\n },\n multi: isJson || metaDef.multi,\n alwaysmulti: isJson || metaDef.alwaysmulti,\n onchange: (value) => {\n set(value);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n }\n })]\n : isJson\n ? [\n m(KeyWrapper, [\n m(attrs.CodeMirror, {\n key: parameters.id,\n doc: rawValue,\n schema: metaDef.schema,\n templates: metaDef.templates,\n hint: metaDef.dynamicHint ? metaDef.dynamicHint(targetParameters) : metaDef.hint,\n empty: metaDef.empty,\n onSave: (content) => {\n if (content !== null) {\n set(content || \"\");\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n if (!content) {\n Notification.add(metaDef.hint + \" cleared\");\n }\n }\n }\n })\n ])\n ]\n : isNumber\n ? [\n m(InputWidget, {\n containerClass: \"grows\",\n class: metaDef.inputClass,\n value: (metaDef.step > 0 && metaDef.step < 1 || metaDef.float)\n ? rawValue !== undefined\n ? (parseFloat(rawValue) || 0).toFixed(3)\n : \"\"\n : rawValue,\n type: \"text\",\n label: metaDef.label,\n hint: isObj ? metaDef.hint : metaDef,\n title: metaDef.title,\n subtype: \"number\",\n ...metaDef.final && {\n oninput: () => {\n }\n },\n onchange: (value) => {\n\n let\n isFloat = metaDef.step > 0 && metaDef.step < 1 || metaDef.float,\n {min, max} = metaDef;\n\n if (value === undefined) {\n set(undefined);\n } else {\n\n let val = isFloat ? parseFloat(value) : parseInt(value, 10);\n\n if (!isNaN(val)) {\n\n if (val < min) val = min;\n if (val > max) val = max;\n\n } else {\n val = undefined;\n }\n\n set(val);\n\n }\n\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n }\n })]\n : isNotice\n ? [m(NoticeWidget, metaDef)]\n : isAsset\n ? attrs.AssetButton ? [\n m(attrs.AssetButton, {\n global,\n value: rawValue, // metaDef.values ? metaDef.values[parameters[metaKey].id] : parameters[metaKey],\n confirm: metaDef.confirm,\n class: \"grows \" + (metaDef.containerClass || \"scaff scaff-b1\"),\n buttonClass: (metaDef.buttonClass || \"unitheight scaff-left\"),\n readonly: metaDef.readOnly,\n closeClass: metaDef.closeClass,\n textClass: metaDef.textClass || \"\",\n iconClass: metaDef.iconClass || \"\",\n field: metaDef.field,\n\n types: metaDef.types,\n subtype: metaDef.subtype,\n file: metaDef.file,\n pack: metaDef.pack,\n\n shiftUpdate: metaDef.shiftUpdate,\n shiftIcon: metaDef.shiftIcon,\n removeIcon: metaDef.removeIcon,\n emptyValue: metaDef.emptyText || \"off\",\n emptyText: metaDef.emptyText || \"off\",\n emptyIcon: metaDef.emptyIcon || metaDef.icon,\n icon: metaDef.icon,\n title: metaDef.title,\n titleCollapsed: metaDef.titleCollapsed,\n titleClass: \"pad-2 pad-v no-pad-bottom\",\n parameters,\n auxParameters,\n onchange: (value, e) => {\n if (e && e.shiftKey && attrs.onShiftPress) {\n attrs.onShiftPress(metaKey, targetParameters, value);\n } else {\n if (value === undefined) value = metaDef.nullValue || undefined;\n set(value);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n }\n }\n })]\n : [\n m(ButtonNew, {\n icon: metaDef.icon,\n title: metaDef.title,\n class: \"unitheight\",\n text: \"No Asset Module\"\n })\n ]\n : isEmoji\n ? [\n m(SmileysButton, {\n class: \"grows \" + (metaDef.class || \"scaff scaff-b1 unitheight font-200\"),\n icon: {glyph: rawValue},\n icons: false,\n onchange: (glyph) => {\n set(glyph);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n }\n })]\n : isFont\n ? [\n m(FontSelectorButton, {\n class: \"grows \" + (metaDef.class || \"scaff-right unitheight\"),\n fontFamily: rawValue,\n nodelete: metaDef.nodelete,\n onchange: (glyph) => {\n if (metaDef.nodelete && !glyph) return;\n set(glyph);\n // could be erased\n const newTargetParameters = (metaDef.target || metaDef.forTarget) ? parameters[metaDef.target || metaDef.forTarget] : parameters;\n onchange(!glyph ? NEEDS_DELETE : UPDATECODE, newTargetParameters, metaKey, !glyph, metaDef);\n }\n })]\n : isColor\n ? [\n m(ColorJoeWidget, {\n class: \"grows \" + (metaDef.class || \"unitheight\") + (altKey ? \" withalt\" : \"\"),\n color: rawValue,\n caption: metaDef.caption,\n noalpha: metaDef.noalpha,\n remove: metaDef.remove,\n onchange: (color, colorObject) => {\n let finalColor = color;\n if (finalColor) {\n if (metaDef.hsl) {\n const hsl = colorObject.hsl();\n finalColor = [hsl.hue(), hsl.saturation(), hsl.lightness()];\n } else if (metaDef.rgba) {\n finalColor = [colorObject.r(), colorObject.g(), colorObject.b(), colorObject.a()];\n\n }\n }\n set(finalColor);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n },\n ...altKey && {\n style: {\n \"--data-altval\": ((((targetParameters[altKey] ?? altMeta.min) - altMeta.min) / (altMeta.max - altMeta.min)) * 100) + \"%\"\n }\n }\n\n },\n altMeta\n ? [\n m(RangeWidget, {\n auto0: altMeta.auto0,\n min: altMeta.min,\n max: altMeta.max,\n step: altMeta.step || 0.1,\n ...altMeta.mul && {multiplier: altMeta.mul},\n class: \"col-11 grows innerlabel order-first\",\n title: altMeta.title,\n value: targetParameters[altKey] ?? altMeta.min,\n onchange: (value) => {\n set(value, undefined, altKey, altMeta);\n onchange(crit[altMetaKey], targetParameters, altMetaKey, undefined, metaDef);\n }\n })\n ]\n : undefined)]\n : isBoolean\n ? [\n m(\n isObj && metaDef.toggle\n ? metaDef.states ? ToggleStateWidget : ToggleWidget\n : SwitchWidget,\n {\n class: \"grows \" + (metaDef.class || \"unitheight\"),\n text: isObj ? metaDef.title || metaDef.label : metaKey,\n icon: isObj ? metaDef.icon : undefined,\n noclass: metaDef.noclass,\n subline: metaDef.subline,\n checked: rawValue,\n title: metaDef.hint,\n hint: metaDef.hint,\n inverted: isObj && metaDef.inverted,\n states: metaDef.states,\n iconClass: metaDef.iconClass,\n onchange: (st) => {\n set(metaDef.states ? st : !!st);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n }\n }\n )\n ]\n : isActionButton\n ? [\n m(\n ButtonNew,\n {\n class: \"grows \" + (metaDef.class || \"accentbutton unitheight\"),\n text: metaDef.label === \"\"\n ? null\n : metaDef.parse ? metaDef.parse(targetParameters, auxParameters) : metaDef.label || metaDef.text || metaKey,\n icon: metaDef.icon,\n title: metaDef.title || metaDef.hint,\n onClick: (e) => {\n\n const runAction = () => {\n if (metaDef.onClick) {\n metaDef.onClick(metaKey, e, targetParameters, auxParameters, global, attrs);\n } else {\n if (attrs.onAction) attrs.onAction(metaKey, e, targetSource, attrs.arrayInfo);\n }\n };\n\n if (metaDef.confirm) {\n confirm(metaDef.confirm, runAction);\n } else {\n runAction();\n }\n }\n }\n )\n ]\n : isMultiToggle\n ? [\n m(metaDef.keys ? PagedMultiToggleWidget : MultiToggleWidget, {\n class: \"col-12 \" + (metaDef.toggle ? \"istoggler\" : \"\"),\n icon: metaDef.icon,\n buttonClass: metaDef.buttonClass,\n selectorClass: metaDef.selectorClass || \"grows\",\n selectorButtonClass: metaDef.selectorButtonClass,\n keys: metaDef.keys,\n hint: metaDef.hint,\n nocustom: metaDef.nocustom,\n source: rawValue,\n onchange: () => onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef),\n ...(metaDef.customWidget || {})\n })\n ]\n : isKeyIterator\n ? [\n m(KeyIteratorWidget, {\n class: \"col-12\" + (metaDef.class ? \" \" + metaDef.class : \"\"),\n buttonClass: metaDef.widgetClass,\n cardie: metaDef.cardie,\n cardieClass: metaDef.cardieClass,\n addButtonClass: metaDef.addButtonClass,\n caption: metaDef.caption,\n separatorClass: metaDef.separatorClass,\n noseparator: metaDef.noseparator,\n source: rawValue,\n onchange: () => onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef),\n widget: metaDef.keyWidget,\n keys: metaDef.keys,\n add: metaDef.add,\n targetParameters,\n auxParameters,\n empty: metaDef.empty\n })\n ]\n : isButtonChoice\n ? [\n m(ButtonChoiceWidget, {\n class: \"col-12 \" + (metaDef.toggle ? \"istoggler\" : \"\"),\n subclass: metaDef.class,\n buttonClass: metaDef.buttonClass,\n choices: metaDef.choices,\n choose: metaDef.choose,\n chooseKey: metaDef.chooseKey,\n chooseDict: attrs.chooseDict,\n label: metaDef.label,\n field: metaDef.field,\n icon: metaDef.icon,\n value: rawValue,\n title: metaDef.title,\n onchange: (choice) => {\n\n let\n {value} = choice;\n\n if (value || value >= 0) {\n if (metaDef.toggle && value === rawValue) value = !value;\n set(value, choice);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n } else {\n set(undefined, choice);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n }\n taint();\n }\n })\n ]\n : !isCombo\n ? isFullCombo\n ? [\n m(ComboWidget, {\n class: \"grows scaff scaff-b1 \" + (metaDef.class || \"unitheight\"),\n value: rawValue,\n emptyText: metaDef.emptyText || \"off\",\n icon: metaDef.icon,\n title: metaDef.title,\n items: metaDef.items,\n textClass: metaDef.textClass || \"\",\n onchange: (value) => {\n if (typeof value === \"string\") value = value.trim();\n if (value) {\n set(value);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n } else {\n set(undefined);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n }\n taint();\n }\n })\n ]\n : isRange\n ? [\n m(RangeWidget, {\n auto0: metaDef.auto0,\n relative: !metaDef.auto0 && !metaDef.absolute,\n factor: metaDef.factor,\n min: metaDef.min,\n max: metaDef.max,\n step: metaDef.step || 0.1,\n ...metaDef.mul\n ? {\n multiplier: metaDef.mul\n }\n : {},\n class: \"col-11 grows innerlabel\",\n title: metaDef.label || metaDef.title || (metaKey.indexOf(\"-\") === -1 ? metaKey : metaKey.substring(metaKey.lastIndexOf(\"-\") + 1)),\n hint: metaDef.hint,\n value: parseFloat(rawValue) ?? metaDef ?? metaDef.min,\n parser: metaDef.parser,\n onchange: (value) => {\n set(value);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n }\n })\n ]\n : [\n m(RangeWidget, {\n min: metaDef[0],\n max: metaDef[1],\n step: metaDef[2] || 0.1,\n ...metaDef[3]\n ? {\n multiplier: metaDef[3]\n } : {},\n class: \"col-11 grows innerlabel\",\n title: metaDef[4] || (metaKey.indexOf(\"-\") === -1 ? metaKey : metaKey.substring(metaKey.lastIndexOf(\"-\") + 1)),\n value: parseFloat(rawValue) || metaDef[0],\n onchange: (value) => {\n set(value);\n onchange(UPDATECODE, targetParameters, metaKey, undefined, metaDef);\n }\n })\n ]\n : [\n m(ComboPrompt, {\n class: metaDef.containerClass || \"scaff scaff-b1\",\n buttonClass: metaDef.class || \"unitheightsmall scaff-left\",\n closeClass: metaDef.buttonClass || undefined,\n textClass: metaDef.textClass || \"\",\n locked: metaDef.locked,\n value: rawValue, // metaDef.values ? metaDef.values[parameters[metaKey].id] : parameters[metaKey],\n field: metaDef.field,\n fieldTitle: metaDef.fieldTitle,\n emptyText: metaDef.emptyText || \"off\",\n emptyIcon: metaDef.emptyIcon || metaDef.icon,\n confirm: metaDef.confirm,\n icon: metaDef.icon || attrs.icon,\n hint: metaDef.hint,\n label: metaDef.label,\n title: metaDef.question,\n itemsKey: typeof metaDef.optionsKey === \"function\" ? () => {\n return metaDef.optionsKey(targetParameters);\n } : metaDef.optionsKey,\n items: metaDef.options || attrs.optionsDict,\n removeIcon: metaDef.removeIcon,\n nodelete: metaDef.nodelete,\n onchange: (value, event) => {\n if (event?.shiftKey) {\n if (metaDef.shiftPress) {\n metaDef.shiftPress(targetParameters, auxParameters);\n }\n return;\n }\n if (typeof value === \"string\") value = value.trim();\n if (value) {\n set(metaDef.values ? metaDef.values[value] : value, metaDef.clone);\n onchange(UPDATECODE, targetParameters, metaKey, false, metaDef);\n } else {\n set(metaDef.nullValue || undefined);\n onchange(UPDATECODE, targetParameters, metaKey, true, metaDef);\n }\n taint();\n }\n })]);\n });\n\n return total || children.length\n\n ? wrapper\n ? wrapper(widgets.concat(children))\n : widgets.concat(children)\n\n : vacioperovacio && !children.length\n ? m(Empty, vacioperovacio)\n : [];\n }\n ),\n\n ParameterCardie = defineWidget(\n ({attrs, children}) => {\n\n const\n {\n busy, parameters, auxParameters, cardid, size, index,\n titleWidget, parametersTitle, parametersBody, rootUpdate: mainRootUpdate, global, layer,\n tableChildren, cols, onLayerReset, onAction, nofold, bodyClass, titleAction,\n AssetButton, CodeMirror\n } = attrs;\n\n return m(CardieWidget, {\n\n busy,\n nofold,\n size,\n cols,\n\n title: parametersBody.titleCollapsed || parametersBody.title,\n titleCollapsed: parametersBody.titleCollapsed || parametersBody.title,\n titleExpanded: parametersBody.titleExpanded || parametersBody.title,\n action: titleAction,\n expandedClass: attrs.expandedClass,\n\n onShiftOpen: () => {\n\n },\n\n titleWidget: titleWidget || ParameterTable,\n titleAttrs: {\n ...parametersTitle,\n onShiftPress: attrs.onShiftPress,\n confirm: attrs.confirmTitle,\n itemClass: \"\",\n parameters,\n auxParameters,\n clone: true,\n global, layer,\n AssetButton,\n CodeMirror,\n onAction,\n onchange: (realtime, targetParameters, metaKey, wasDeleted, metaDef) => {\n\n taint();\n\n const rootUpdate = metaDef.rootUpdate || mainRootUpdate;\n\n if (metaDef?.onchange) {\n metaDef.onchange(realtime, targetParameters, parameters);\n } else if (realtime) {\n\n if (rootUpdate === \"none\") return;\n\n if (rootUpdate === \"both\" && auxParameters) {\n targetParameters[NEEDS_UPDATE] = auxParameters[NEEDS_UPDATE] = realtime;\n } else if (rootUpdate === \"parent\" && auxParameters) {\n targetParameters[NEEDS_UPDATE] = realtime;\n auxParameters[NEEDS_UPDATE] = true;\n } else if (rootUpdate === \"target\" && targetParameters !== parameters) {\n targetParameters[NEEDS_UPDATE] = realtime;\n parameters[NEEDS_UPDATE] = true;\n } else if (rootUpdate === 2) {\n parameters[NEEDS_UPDATE] = realtime;\n } else if (rootUpdate === 1) {\n if (targetParameters) targetParameters[NEEDS_UPDATE] = realtime;\n } else if (typeof rootUpdate === \"string\" && rootUpdate !== \"both\" && rootUpdate !== \"parent\" && rootUpdate !== \"target\") {\n if (parameters[rootUpdate]) {\n parameters[rootUpdate][NEEDS_UPDATE] = realtime;\n parameters[NEEDS_UPDATE] = true;\n } else {\n parameters[NEEDS_UPDATE] = REBUILD_CHILDREN;\n }\n } else if (rootUpdate !== -1 && targetParameters) targetParameters[NEEDS_UPDATE] = realtime;\n\n } else {\n onLayerReset && onLayerReset();\n }\n\n if (attrs.onTitleChange) {\n attrs.onTitleChange(realtime, targetParameters, metaKey, wasDeleted);\n }\n\n m.redraw();\n }\n },\n\n cardid,\n class: \"withbottommargin relative\" + (attrs.class ? \" \" + attrs.class : \"\"),\n bodyClass,\n expandedView: () => [\n\n ...parametersBody.meta\n ? [\n m(ParameterTable, {\n ...parametersBody,\n confirm: attrs.confirmBody,\n itemClass: \"pad-1\",\n parameters,\n auxParameters,\n clone: true,\n global, layer,\n index,\n play: attrs.play,\n itemsDict: attrs.itemsDict,\n optionsDict: attrs.optionsDict,\n AssetButton,\n CodeMirror,\n onAction,\n onchange: (realtime, targetParameters, metaKey, wasDeleted, metaDef, event) => {\n const rootUpdate = metaDef.rootUpdate || mainRootUpdate;\n taint();\n if (metaDef?.onchange) {\n metaDef.onchange(realtime, targetParameters, parameters);\n } else if (realtime) {\n\n if (rootUpdate === \"none\") return;\n\n if (rootUpdate === \"both\" && auxParameters) {\n targetParameters[NEEDS_UPDATE] = auxParameters[NEEDS_UPDATE] = realtime;\n } else if (rootUpdate === \"parent\" && auxParameters) {\n targetParameters[NEEDS_UPDATE] = realtime;\n auxParameters[NEEDS_UPDATE] = true;\n } else if (rootUpdate === \"target\" && targetParameters !== parameters) {\n targetParameters[NEEDS_UPDATE] = realtime;\n parameters[NEEDS_UPDATE] = true;\n } else if (rootUpdate === 2) {\n parameters[NEEDS_UPDATE] = realtime;\n } else if (rootUpdate === 1) {\n if (targetParameters) targetParameters[NEEDS_UPDATE] = realtime;\n } else if (typeof rootUpdate === \"string\" && rootUpdate !== \"both\" && rootUpdate !== \"parent\" && rootUpdate !== \"target\") {\n if (parameters[rootUpdate]) {\n parameters[rootUpdate][NEEDS_UPDATE] = realtime;\n parameters[NEEDS_UPDATE] = true;\n } else {\n parameters[NEEDS_UPDATE] = REBUILD_CHILDREN;\n }\n } else if (rootUpdate !== -1 && targetParameters) targetParameters[NEEDS_UPDATE] = realtime;\n\n } else {\n onLayerReset && onLayerReset();\n }\n\n if (attrs.onChange) {\n attrs.onChange(realtime, metaKey, targetParameters, auxParameters, wasDeleted, metaDef, event, attrs);\n }\n m.redraw();\n }\n }, tableChildren)\n ]\n : parametersBody.emptyMeta\n ? [m(Empty, parametersBody.emptyMeta)]\n : [],\n\n ...(children || [])\n ],\n collapsedView: attrs.collapsedView,\n\n });\n }\n ),\n\n TemplatedInputWidget = defineWidget(({attrs, state, children}) => {\n\n const {layer, property, colorProperty} = attrs,\n template = InputTemplates[property],\n currentProperty = layer[property],\n\n has = currentProperty !== undefined && currentProperty !== null,\n hasObject = has && typeof currentProperty === \"object\" && currentProperty !== null,\n parameters = hasObject && currentProperty,\n dynamicExp = parameters && parameters.exp,\n\n [, meta] = dynamicExp || [],\n metaKeys = parameters && meta && Object.keys(meta),\n title = hasObject && currentProperty ? currentProperty.title : currentProperty,\n hasMeta = metaKeys && metaKeys.length,\n hasSize = (attrs.size && hasObject);\n\n // noinspection JSObjectNullOrUndefined\n return m(\n \"li.coord.witharia.relative.templatedinput\",\n {\n \"aria-label\": attrs[\"aria-label\"],\n class: (state.chooser && template ? attrs.chooserClass : attrs.containerClass) || \"col-12\"\n },\n [\n ...attrs.docs\n ? [\n m(\n \"a.extlink.absolute.to-right.to-top.font-75.pad-2.pointer\",\n {\n target: \"tool\",\n onclick: () => {\n NIPX.sys.open(attrs.docs.url);\n }\n },\n attrs.docs.caption || \"docs\"\n )\n ]\n : [],\n\n attrs.chooser ? [m(\".flexrow.grows.fontgroup\", [m(ButtonNew, {\n class: \"grows unitheightsmall rectbutton ohidden\",\n text: title || \"--- NONE ---\",\n icon: attrs.icon,\n onClick: (e) => {\n if (!state.chooser && e.shiftKey && template.images) {\n MainState.setTransState(\"image\", undefined, {\n giphyQuery: \"frame\",\n onOverride: (global, item) => {\n const translated = item && template.images(item);\n if (translated) {\n layer[property] = cloneObject(translated);\n taint();\n m.redraw();\n }\n }\n });\n return;\n }\n state.chooser = !state.chooser;\n m.redraw();\n }\n }), ...layer[property] ? [m(ButtonNew, {\n class: \"clearfont unitheightsmall bg-accent\",\n text: \"X\",\n onClick: () => {\n delete layer[property];\n taint();\n m.redraw();\n }\n })] : template.images && !title ? [m(ButtonNew, {\n class: \"unitsizesmall rectbutton ohidden\",\n icon: \"images\",\n onClick: () => MainState.setTransState(\"image\", undefined, {\n giphyQuery: \"frame\",\n onOverride: (global, item) => {\n const translated = item && template.images(item);\n if (translated) {\n layer[property] = cloneObject(translated);\n taint();\n m.redraw();\n }\n }\n })\n })] : []])] : [m(InputWidget, {\n class: \"withicon-2\" + (has ? \" has\" : \"\") + (attrs.class ? \" \" + attrs.class : \"\"),\n value: layer[property] || \"\",\n hint: attrs.hint,\n title: attrs.title,\n maxlength: attrs.maxlength || 2048,\n multi: attrs.multi,\n actions: [{\n icon: \"plus\",\n onClick: () => {\n state.chooser = !state.chooser;\n m.redraw();\n }\n }],\n onchange: (value) => {\n\n value = value.split(\"\\n\")\n .join(\" \")\n .trim();\n\n layer[property] = value;\n taint();\n m.redraw();\n }\n })],\n\n ...(hasMeta || hasSize) ? [m(\".flexrow.wrap.paramgroup\", [\n\n ...hasMeta ? [m(ParameterTable, {\n\n meta,\n metaKeys,\n parameters,\n onchange: () => {\n delete currentProperty.calc;\n taint();\n m.redraw();\n },\n AssetButton: attrs.AssetButton,\n CodeMirror: attrs.CodeMirror\n })] : [],\n\n ...hasSize ? [m(\".flexbreak\"), m(RangeWidget, {\n class: \"col-6 grows innerlabel\",\n title: \"size x\",\n min: 0,\n max: 100,\n step: 0.1,\n relative: true,\n value: parseFloat(currentProperty.w) || 0,\n onchange: (value) => {\n currentProperty.w = value;\n taint();\n m.redraw();\n }\n }), m(RangeWidget, {\n class: \"col-6 grows innerlabel\",\n title: \"size y\",\n min: 0,\n max: 100,\n step: 0.1,\n relative: true,\n value: parseFloat(currentProperty.h) || 0,\n onchange: (value) => {\n currentProperty.h = value;\n taint();\n m.redraw();\n }\n })] : []])] : [],\n\n ...(state.chooser && template) ? [m(TemplateWidget, {\n entity: attrs.entity,\n template,\n type: layer.type,\n layer,\n onClick: (item) => {\n\n state.chooser = false;\n\n layer[property] = typeof item.value === \"object\"\n ? cloneObject(item.value)\n : item.value;\n\n if (item.color && colorProperty) {\n layer[colorProperty] = item.color;\n }\n\n taint();\n\n m.redraw();\n\n }\n })] : [], ...has ? children : []]\n );\n });\n\nexport {\n TemplatedInputWidget, ParameterTable, ParameterCardie, MultiToggleWidget, RangeToggleWidget\n};\n"],"names":["defineWidget","view","oninit","oncreate","onremove","onupdate","getAttrs","attrs","parentAttrs","panelInitialParams","data","initialParams","isCurrent","currentIndex","index","Icon","m","pack","icon","size","title","icontitle","undefined","role","onclick","iconClass","class","Button","state","children","download","link","href","target","text","busy","error","message","event","clearTimeout","debounce","setTimeout","result","then","catch","redraw","right","textClass","ButtonNew","rel","onClick","Empty","key","split","map","str","idx","all","length","setItem","params","lastIndex","lastParams","currentParams","Object","assign","current","items","onSelected","Selector","selected","isNaN","noinitial","element","horizontal","className","bodyTitle","hideonly","hidesel","toolbarClass","item","Date","now","clickts","bodyHidden","toggle","bodyClass","widget","closeButton","ICONS","info","success","Notification","TOAST_SHORT","altContainer","mTimer","mNotifications","next","container","document","getElementById","n","splice","render","type","timer","add","push","clear","globalState","CardieWidget","nofold","cardid","action","collapsedAction","collapsedClass","expandedClass","cols","expandedView","collapsedView","titleWidget","titWidget","titleAttrs","titleClass","titleExpanded","titleCollapsed","collapsed","buttonClass","skipEmpty","e","classList","contains","shiftKey","onShiftOpen","expanded","uniq","subname","keys","forEach","startsWith","setCardStatus","alwaysView","Separator","ButtonChoiceWidget","value","field","emptyMessage","chooseKey","chooseDict","choose","choices","choice","caption","has","clase","subclass","label","labelClass","choicekey","choicevalue","raw","titleOn","titleOff","onchange","getInput","parse","val","float","Number","parseFloat","parseInt","getValue","lastVal","hasOwnProperty","StaticFieldWidget","vnode","onDrag","staticClass","staticTitle","dom","readonly","hammer","Hammer","Manager","touchAction","panner","Pan","direction","DIRECTION_VERTICAL","singleTap","Tap","on","srcEvent","focus","destroy","InputWidget","reset","showInput","inputActions","multi","alwaysmulti","actions","containerClass","staticField","id","max","min","step","maxlength","validator","isValid","placeholder","hint","oninput","fromoninput","enterPressed","onblur","onkeyup","onbeforeinput","subtype","test","preventDefault","inputmode","onkeypress","onenter","dragging","draginc","displayTitle","String","NoticeWidget","texts","t","PropGroup","name","offset","__timer","parseGroups","groups","allItems","parsed","groupKey","len","groupValues","values","group","concat","itemIndex","itemValue","parser","i","l","ComboWidget","ev","selectedIndex","initial","refresh","mCurrentCancelable","runCancelable","popupMessage","style","display","cancelable","contentClass","remove","clearModal","TOK_EXPR","tokenizeKeep","obj","isEncode","tokenizeCore","encode","tokenizeStrict","isUnescape","unescape","dothrow","Parsers","daterel","epoch","toISOString","options","ckey","replace","match","complexkey","defval","isFreak","indexOf","typed","keytype","root","shift","fdata","getPointedData","join","Error","defvalue","escape","pointer","ps","d","REGEX_DOTS","REGEX_NODOTS","sanitizeFilename","filename","withDots","endsWith","trim","toLowerCase","Tokenizer","tokenize","tokenizeObject","source","tokenizeValues","strict","asNewObject","tokenizer","retObject","arr","prop","tokenizeWithDefault","defaultValue","tokenizeUrl","tokenizedUrl","parameters","getTitle","defaultTitle","finalDefaultTitle","url","console","log","generateFilename","prefix","dateCode","md5","substring","toString","ConfirmPromise","isModal","onCancel","Promise","resolve","opts","buttons","widget.popupMessage","option","noCancel","Confirm","OverflowMenu","domItem","closeResolve","classes","initials","clases","finals","cla","packClassString","favlist","nodeName","getAttribute","keyCode","blur","confirm","onAction","optionYes","optionNo","confirmPromise","cancelError","reject","SwitchWidget","unit","subline","checked","original","clone","window","structuredClone","o","JSON","stringify","promptOptions","textNew","textHint","dialogOptions","Array","isArray","body","promptName","finally","refreshKey","PROPERTIES","TitleBarWidget","EntityTemplates","meta","onInput","valid","description","embedded","notice","Notice","newvalue","tags","filter","tag","ytref","author","PresetTemplate","preset","presetComponents","types","globalData","fetcher","available","sourceAvailable","cosa","primaryTarget","elements","globalSource","rootSource","found","cosaIndex","fetchLive","isAvailable","isSourceAvailable","status","updatedTarget","finalSource","deleteCurrent","config","onSelect","v","newMeta","ComboPrompt","outerClass","innerLabel","locked","maybeFunctionItems","itemsKey","itemsText","storyOverflow","fieldTitle","emptyIcon","emptyText","nodelete","closeClass","metaKey","ctrlKey","altKey","msg","removeIcon","removeHint","colorjoe","global","self","createCommonjsModule","fn","module","exports","dragjs_umd","drag","elem","cbs","dragTemplate","warn","xyslider","twod","div","parent","attachPointer","background","slider","oned","ret","wrap","p","klass","createElement","appendChild","down","move","up","beginCb","getCbs","begin","changeCb","change","endCb","end","moveHandler","partial","callCb","upHandler","off","evt","handler","supportsPassive","defineProperty","get","addEventListener","removeEventListener","passive","empty","c","initialOffset","x","offsetLeft","y","offsetTop","initialPos","cursor","cb","findPos","width","clientWidth","SCALE","height","clientHeight","cursorX","cursorY","slice","prototype","args","apply","arguments","r","getBoundingClientRect","left","top","evtPos","touches","Math","floor","clientX","clientY","oneColorAll","a","RGB","namedColors","s","toUpperCase","f","u","h","CMYK","b","RegExp","isColor","installColorSpace","this","rgb","propertyNames","charAt","_alpha","_hue","hex","equals","abs","toJSON","constructor","pluginList","use","installMethod","round","_red","_green","_blue","substr","hexa","css","cssa","fromRgb","pow","XYZ","_x","_y","_z","lab","LAB","xyz","_l","_a","_b","_saturation","_value","hsl","HSL","HSV","hsv","_lightness","_cyan","_black","_magenta","_yellow","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","alpha","lightness","saturation","g","_","w","hue","k","M","clamp","minValue","maxValue","utils","labelInput","maxLen","random","innerHTML","setAttribute","maxLength","input","X","Y","BG","extras","currentColor","e1","col","fields","joe","cs","space","fac","limit","fix","inputLen","useAlpha","elems","done","onkeydown","validate","update","getAlpha","set","toFixed","which","pad","setAlpha","close","hide","isFunction","init","xy","z","initialColor","extras$$1","isString","changeXY","changed","changeZ","previous","getColor","color","listeners","skip","li","ob","show","oldCol","removeAllListeners","extra","copy","extraProxy","setupExtras","setup","RGB_BG","registerExtra","isDefined","call","colorjoe_1","OneColor","factory","ColorJoe","noalpha","onColor","FAVORITES","ColorJoeWrapper","backgroundColor","onRedraw","onRemove","ColorJoeWidget","shown","onshiftclick","parsedColor","colorObject","popupColor","DEFAULT_COLOR","ColorJoePack","colors","getRgb","colorBase","getHsl","hue2rgb","q","hslToRgb","entry","finalColor","PlusMinus","onTitleClick","logo","src","editable","auxaction","auxactions","overflow","isIOS","navigator","userAgent","iOSHackApplied","quantize","steps","ceil","MithrilRange","elHit","elBar","elBar0","elBar1","elHandle","rcBar","absolute","ondrag","device","pressed","useAbsolute","factorCoarse","factorFine","orientation","moveHandleAbsolute","barLength","delta","bottom","setStyles","onPress","onPressAbsolute","isTouch","requestPointerLock","moveHandle","factor","newVal","movementY","movementX","moveHandleDelta","onMouseDown","button","onMouseMove","onMouseUp","onMove","onRelease","onTouchStart","onTouchMove","onTouchEnd","changedTouches","onKeyDown","exitPointerLock","positionStyle","rps","updateAttrs","relative","querySelector","NOKEY","nokey","tabIndex","ariaLabelledby","disabled","pointerEvents","handleStyle","bar0Style","bar1Style","resetMultiplier","maxMultiplier","curMax","minMultiplier","curMin","multiplier","curMultiplier","increaseMultiplier","increaseMinMultiplier","RangeSlider","attrsMultiplier","attrsValue","htmlFor","RangeWidget","getLabel","auto0","autoValue","MAINSTATE","setTransState","WIDGETS","implement","functs","getWidget","SmileysButton","icons","glyph","MainState","startApp","appMetadata","route","default","routes","ThematicWrapper","themeClass","optionsPrompt","onAdd","onDelete","onEdit","allowUpdate","newName","GenericButtonTicker","noUpdate","altIndex","addText","unconfirm","themeIcon","themeTitle","addTitle","currentWidget","altCurrentWidget","CoolGenericTicker","nocontainer","onDelta","itemz","dynclass","CoolContentTicker","layer","remoteFirst","isRemote","isCue","storyWrapper","getTickerIndex","tickLayer","force","setTickerIndex","EmptyButton","buttonText","buttonAlt","iconAlt","buttonTextAlt","TRANSLATE","def","CoolerEmpty","header","headers","messages","gTainted","taint","tainter","taintRedraw","isTainted","untaint","SEPARATOR","makeLocalPath","pathArray","makeLocalUrl","base","processImage","file","reader","FileReader","onload","pict","Image","onerror","readAsDataURL","MediaSelectButton","giphyQuery","onOverride","translated","onImage","FileSelectButton","accept","files","onFile","ImageSelectButton","onImageFiles","ImageProcessButton","onError","ImageDataButton","onImageUrl","FontSelectorButton","fontFamily","InputTemplates","NEEDS_UPDATE","REBUILD_CHILDREN","KeyWrapper","ToggleWidget","inverted","noclass","RangeToggleWidget","mul","MultiToggleWidget","PagedMultiToggleWidget","selectorButtonClass","nocustom","KeyIteratorWidget","cardie","noseparator","separatorClass","keyName","widgetClass","targetParameters","newValue","addButtonClass","cardieClass","ToggleStateWidget","states","TemplateWidget","template","presets","entity","ParameterTable","total","crit","when","sizes","metaKeys","auxParameters","itemClass","wrapper","vacioperovacio","widgets","metaDef","whenner","isObj","targetSource","auxTarget","auxTargetIsDefault","forTarget","not","checkWhen","isWidget","UPDATECODE","paramKey","isCardie","isCardieArray","isJson","isBoolean","isNumber","isRange","isActionButton","isButtonChoice","isMultiToggle","isKeyIterator","isCombo","optionsKey","isFullCombo","isPlusMinus","isSeparator","isText","isEmoji","isFont","isNotice","isAsset","altMeta","hasIndex","rawValue","altMetaKey","internalSet","cloneObject","nothing","finalKey","xdest","xsource","onbeforechange","small","arrayInfo","itemsDict","optionsDict","play","AssetButton","CodeMirror","dynClass","dynTitle","margin","titleExpended","addAction","critical","rootParameters","PlusMinusWidget","inputClass","final","doc","schema","templates","dynamicHint","onSave","content","isFloat","readOnly","shiftUpdate","shiftIcon","emptyValue","onShiftPress","nullValue","newTargetParameters","rgba","st","runAction","selectorClass","customWidget","keyWidget","question","shiftPress","lastIndexOf","ParameterCardie","parametersTitle","parametersBody","rootUpdate","mainRootUpdate","tableChildren","onLayerReset","titleAction","confirmTitle","realtime","wasDeleted","onTitleChange","confirmBody","onChange","emptyMeta","TemplatedInputWidget","property","colorProperty","currentProperty","hasObject","dynamicExp","exp","hasMeta","hasSize","chooser","chooserClass","docs","NIPX","sys","open","images","calc"],"mappings":"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"}