diff --git a/examples/updated/utterance_Contact.osdpi b/examples/updated/utterance_Contact.osdpi index c69b3a5..6c50307 100644 Binary files a/examples/updated/utterance_Contact.osdpi and b/examples/updated/utterance_Contact.osdpi differ diff --git a/index.css b/index.css index 10fb7b1..f07542e 100644 --- a/index.css +++ b/index.css @@ -77,28 +77,51 @@ div#messages { justify-content: center; align-items: center; } -div.labeledInput { +input:focus ~ span.propValue { + position: absolute; + top: -1.5em; + right: 0; + padding: 0.2em; + background-color: var(--surface2); display: inline-block; + font-size: 75%; } -div.labeledInput:has(div.Code) { +span.propValue { + display: none; +} +label[hiddenLabel]:has(div.Code) { display: block; flex-basis: 100%; } -label[hiddenLabel] { +label.labeledInput { + white-space: nowrap; + line-height: 1.7em; + position: relative; +} +label.labeledInput[hiddenLabel] span.labelText { + border: 0; clip: rect(0 0 0 0); - clip-path: inset(50%); height: 1px; + margin: -1px; overflow: hidden; + padding: 0; position: absolute; - white-space: nowrap; width: 1px; } +label.labeledInput input[type="checkbox"] { + vertical-align: middle; +} select:required:invalid { color: gray; border-color: red; } -input[inputmode="numeric"] { - width: 3em; +input[type="text"] { + min-width: 10ch; +} +input[type="text"][inputmode="numeric"], +input[type="text"][inputmode="decimal"] { + width: 3ch; + min-width: 3ch; } input[inputmode="numeric"]:invalid { color: red; @@ -110,6 +133,10 @@ textarea[invalid] { border-color: red; background-color: var(--warning); } +input, +select { + min-height: 1.5rem; +} option[value=""][disabled] { display: none; @@ -169,6 +196,15 @@ div.Code textarea.line-numbers::-webkit-scrollbar { display: none; } */ + +.swatch { + width: 1em; + height: 1em; + display: inline-block; + border: 1px solid black; + vertical-align: middle; + margin-left: 0.2em; +} button.treebase { background-color: rgba(0, 0, 0, 0.05); border-radius: 0.5em; @@ -213,27 +249,15 @@ div.Code textarea.line-numbers::-webkit-scrollbar { .treebase label { display: inline-block; } - color-input { - margin-right: 1em; - align-items: center; - } - - color-input input { - flex: 1 1 0; - margin-right: 0.2em; - } - - color-input .swatch { - width: 1em; - height: 1em; - display: inline-block; - border: 1px solid black; - vertical-align: middle; - } - color-input input:invalid { - background-color: #fcc; - border-color: red; - } +table.GridFilter td:nth-child(4) input { + width: 100% !important; +} +table.GridFilter td:nth-child(4) { + width: 100% !important; +} +table.GridFilter td:nth-child(4) label.labeledInput { + width: 100% !important; +} .stack { display: flex; width: 100%; @@ -351,10 +375,10 @@ body:not(.designing) video[dbsrc]:not([src]) { } .display button { - display: flex; width: 100%; height: 100%; background-color: inherit; + text-align: left; } .display button:disabled { @@ -379,6 +403,24 @@ body:not(.designing) video[dbsrc]:not([src]) { min-width: 45%; max-width: 45%; } + +.settings .Radio table.RadioOptions { + width: 100%; +} +.settings .Radio table.RadioOptions tr { + width: 100%; +} +.settings .Radio table.RadioOptions td:nth-child(2) { + width: 30%; +} + +.settings .Radio table.RadioOptions label.labeledInput { + width: 100% !important; +} + +.settings .Radio table.RadioOptions input { + width: 100% !important; +} .gap { display: flex; width: 100%; @@ -499,6 +541,13 @@ body:not(.designing) video[dbsrc]:not([src]) { .tabcontrol.none .buttons { display: none; } + +.tabcontrol .tabpanel { + display: none; +} +.tabcontrol .tabpanel.ActivePanel { + display: flex; +} div.modaldialog { visibility: hidden; position: fixed; @@ -606,48 +655,310 @@ button.button { height: 100%; width: 100%; } - #monitor { - margin-top: 1em; - margin-left: 1em; - } +#monitor { + margin-top: 1em; + margin-left: 1em; + overflow: auto; +} - #monitor div { - display: flex; - height: 100%; - overflow-y: auto; - font-size: 75%; - margin-top: 0.2em; - } +#monitor div { + display: flex; + overflow-y: auto; + font-size: 10px; + margin-top: 0.2em; +} - #monitor table { - border-collapse: collapse; - border: 1px solid black; - height: max-content; - margin-right: 1em; - } +#monitor table { + border-collapse: collapse; + border: 1px solid black; + height: max-content; + margin-right: 1em; +} - #monitor table td, - #monitor table th { - border: 1px solid black; - padding: 0.5em; - } - .content form { - display: flex; - width: 100%; - gap: 0.5em; - } +#monitor table td, +#monitor table th { + border: 1px solid black; + padding: 0.5em; +} - .content form input[type="url"] { - flex: 1; - max-width: 60%; - } +#monitor table tr[updated] { + font-weight: bold; +} - .content div#messages { - color: red; - font-size: 2em; - padding-left: 1em; - padding-top: 1em; - } +#monitor table tr[undefined] { + color: var(--failure); +} + +#monitor table tr[accessed] { + background-color: var(--surface2); +} +body.designing { + display: grid; + grid-template-rows: 2.5em 50% auto; + grid-template-columns: 50% 50%; +} + +body.designing div#UI { + font-size: 0.7vw; + flex: 1 1 0; +} + +div#designer { + display: none; +} + +div#tabs { + width: 100%; + overflow-y: hidden; + overflow-x: hidden; + flex: 1 1 0; +} + +body.designing div#designer { + display: flex; + grid-row-start: 1; + grid-row-end: 4; + grid-column-start: 2; + overflow: hidden; + height: 100vh; + flex-direction: column; +} +body.designing #UI { + grid-row-start: 1; + grid-row-end: 3; + grid-column-start: 1; + position: relative; +} +body.designing #monitor { + grid-row-start: 3; + grid-column-start: 1; +} + +#designer ol, +#designer ul { + list-style-type: none; + margin-block-start: 0; + padding-inline-start: 1em; + border-left: 1px solid #d0d0d0; +} + +#designer .settings > details > summary { + cursor: pointer; + background-color: var(--surface2); +} + +#designer .settings > details { + margin-bottom: 0.5em; +} + +details summary > * { + display: inline; +} + +#designer .settings > details[open] { + border: 4px inset var(--surface4); + padding-left: 0.2em; + padding-bottom: 0.2em; +} + +#designer .settings > details summary h3 { + font-weight: 500; +} + +#designer details label { + margin-left: 1em; + margin-bottom: 0.5em; +} + +#designer .settings { + background-color: var(--surface2); + color: var(--text2); + border: 0px; + box-shadow: none; +} + +#designer .settings:has([aria-selected="true"]), +#designer .settings[aria-selected="true"] { + background-color: var(--surface1); + color: var(--text1); + border: 4px dashed var(--brand); +} +#designer .settings:has(.settings [aria-selected="true"]) { + background-color: var(--surface2); + color: var(--text2); + border: 0px; + box-shadow: none; +} + +#designer :focus { + outline: var(--text2) 4px dashed; +} + +#designer .indicator { + color: var(--brand); +} + +#designer .panels { + display: block; + overflow-y: auto; +} + +.selectedInDesigner { + border: 2px dashed red; +} + +#UI [id]:has(.selectedInDesigner) { + border: 2px dotted yellow; +} + +.designer { + display: flex; + width: 100%; + height: 100%; +} +.designer .buttons button:focus { + background-color: var(--surface2); +} +.designer .panels { + display: flex; +} +.designer .buttons { + display: flex; + list-style-type: none; + padding-inline-start: 0 !important; + flex-direction: row; +} +.designer .buttons li { + flex: 1 1 0; + display: flex; +} +.designer .buttons button { + flex: 1 1 0; + background-color: var(--surface2); + color: var(--text2); +} +.designer .buttons button[active] { + font-weight: bold; + background-color: var(--surface1); + color: var(--text1); +} + +.designer.top { + flex-direction: column; +} +.designer.top .panels { + order: 2; +} +.designer.top .buttons { + order: 1; +} +.designer.top .buttons button[active] { + border-bottom: 1px; + margin-top: 0px; +} +.designer.top .buttons button { + border-top-left-radius: 1em; + border-top-right-radius: 1em; + margin-top: 10px; +} + +.designer.bottom { + flex-direction: column; +} +.designer.bottom .panels { + order: 1; +} +.designer.bottom .buttons { + order: 2; +} +.designer.bottom .buttons button[active] { + border-top: 1px; + margin-bottom: 0px; +} +.designer.bottom .buttons button { + border-bottom-left-radius: 1em; + border-bottom-right-radius: 1em; + margin-bottom: 10px; +} + +.designer.right { + flex-direction: row; +} +.designer.right .panels { + order: 1; +} +.designer.right .buttons { + order: 2; + flex-direction: column; +} +.designer.right .buttons button[active] { + border-left: 1px; + margin-right: 0; +} +.designer.right .buttons button { + border-top-right-radius: 1em; + border-bottom-right-radius: 1em; + margin-right: 10px; +} + +.designer.left { + flex-direction: row; +} +.designer.left .panels { + order: 2; + flex: 1; +} +.designer.left .buttons { + order: 1; + flex-direction: column; + flex: 1; +} +.designer.left .buttons button[active] { + border-right: 1px; + margin-left: 0; +} +.designer.left .buttons button { + border-top-left-radius: 1em; + border-bottom-left-radius: 1em; + margin-left: 10px; +} + +.designer.none .buttons { + display: none; +} + +.DesignerPanel { + display: none; +} + +.DesignerPanel.ActivePanel { + display: flex; + width: 100%; + height: 100%; + flex-direction: column; +} +.content form { + display: flex; + width: 100%; + gap: 0.5em; +} + +.content form input[type="url"] { + flex: 1; + max-width: 60%; +} + +.content div#messages { + color: red; + font-size: 2em; + padding-left: 1em; + padding-top: 1em; +} + +.content label input[type="checkbox"] { + vertical-align: bottom; + margin-right: 0.5em; +} #PleaseWait { position: fixed; width: 100vw; @@ -716,7 +1027,7 @@ div.logging-indicator[logging] { width: 100%; } -.settings div.labeledInput:has(textarea) { +.settings label.labeledInput:has(textarea) { width: 100%; } div.empty { @@ -741,12 +1052,10 @@ body.designing #UI [highlight="component"] { body.designing #UI [highlight="parent"] { border: 2px dotted red; } -div.actions { - display: flex; - flex-direction: column; - flex: 1 1 0; -} +#designer .layout summary { + border-bottom: 1px solid #d0d0d0; +} div.actions div.scroll { overflow-y: auto; } @@ -779,11 +1088,11 @@ div.actions div.scroll { margin-top: 0.2em; } -.actions div.condition div.labeledInput { +.actions div.condition label.labeledInput { width: 100%; } -.actions td.update div.labeledInput { +.actions td.update label.labeledInput { width: 100%; } @@ -791,6 +1100,10 @@ div.actions div.scroll { overflow-wrap: anywhere; } +.actions td.update input { + min-width: 100%; +} + .actions thead tr { background: white; } @@ -810,20 +1123,11 @@ div.actions div.scroll { background-color: var(--secondary-fg); } -.actions .updates { - display: grid; - grid-template-columns: auto 1fr; - grid-gap: 0.25em 1em; -} - -.actions input { +.actions input[type="text"] { + min-width: 100%; width: 100%; box-sizing: border-box; } - -.actions label { - width: 100%; -} #HotKeyHints { } @@ -839,6 +1143,10 @@ details.Method > *:not(summary) { font-weight: normal; font-size: 80%; } + +div.MethodChooser > ul { + width: 100%; +} div.access-pattern { padding-left: 12px; padding-top: 12px; @@ -871,13 +1179,7 @@ details.PatternManager summary h3 label { font-weight: normal; font-size: 80%; } -div.Cue { - display: flex; - flex-wrap: wrap; -} - .Cue details { - flex-basis: 100%; width: 100%; } @@ -1047,127 +1349,6 @@ dialog#OpenDialog button { display: inline; background-color: var(--primary-bg); } -body.designing { - display: grid; - grid-template-rows: 2.5em 50% auto; - grid-template-columns: 50% 50%; -} - -body.designing div#UI { - font-size: 0.7vw; - flex: 1 1 0; -} - -div#designer { - display: none; -} - -div#tabs { - width: 100%; - overflow-y: auto; - overflow-x: hidden; - flex: 1 1 0; -} - -body.designing div#designer { - display: flex; - grid-row-start: 1; - grid-row-end: 4; - grid-column-start: 2; - overflow: hidden; - height: 100vh; - flex-direction: column; -} -body.designing #UI { - grid-row-start: 1; - grid-row-end: 3; - grid-column-start: 1; - position: relative; -} -body.designing #monitor { - grid-row-start: 3; - grid-column-start: 1; -} - -#designer ol, -#designer ul { - list-style-type: none; - margin-block-start: 0; - padding-inline-start: 1em; - border-left: 1px solid #d0d0d0; -} - -#designer .panels ol li:not(:last-of-type), -#designer .panels ul li:not(:last-of-type) { - border-bottom: 1px solid #d0d0d0; - margin-bottom: 5px; -} - -#designer details summary { - cursor: pointer; -} - -details summary > * { - display: inline; -} - -#designer details[open] { - border: 1px solid black; - margin-left: 1em; -} - -#designer details[open] summary { - margin-left: -1em; -} - -#designer details summary h3 { - font-weight: 500; -} - -#designer details label { - margin-left: 1em; - margin-bottom: 0.5em; -} - -#designer .settings { - background-color: var(--surface2); - color: var(--text2); - border: 0px; - box-shadow: none; -} - -#designer .settings:has([aria-selected="true"]), -#designer .settings[aria-selected="true"] { - background-color: var(--surface1); - color: var(--text1); - border: 4px dashed var(--brand); -} -#designer .settings:has(.settings [aria-selected="true"]) { - background-color: var(--surface2); - color: var(--text2); - border: 0px; - box-shadow: none; -} - -#designer :focus { - outline: var(--text2) 4px dashed; -} - -#designer .indicator { - color: var(--brand); -} - -#designer .panels { - display: block; -} - -.selectedInDesigner { - border: 2px dashed red; -} - -#UI [id]:has(.selectedInDesigner) { - border: 2px dotted yellow; -} /* * Color management. * diff --git a/index.js b/index.js index e7e34b2..0af4f6e 100644 --- a/index.js +++ b/index.js @@ -3148,199 +3148,286 @@ function requireStacktraceGps () { var stacktraceExports = stacktrace.exports; -class MapSet extends Map { - set(key, value) { - super.set(key, value); - return value; - } -} - -class WeakMapSet extends WeakMap { - set(key, value) { - super.set(key, value); - return value; - } -} +const { isArray: isArray$3 } = Array; +const { getPrototypeOf: getPrototypeOf$1, getOwnPropertyDescriptor } = Object; -/*! (c) Andrea Giammarchi - ISC */ -const empty = /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i; -const elements = /<([a-z]+[a-z0-9:._-]*)([^>]*?)(\/?)>/g; -const attributes = /([^\s\\>"'=]+)\s*=\s*(['"]?)\x01/g; -const holes = /[\x01\x02]/g; +const empty = []; -// \x01 Node.ELEMENT_NODE -// \x02 Node.ATTRIBUTE_NODE +const newRange = () => document.createRange(); /** - * Given a template, find holes as both nodes and attributes and - * return a string with holes as either comment nodes or named attributes. - * @param {string[]} template a template literal tag array - * @param {string} prefix prefix to use per each comment/attribute - * @param {boolean} svg enforces self-closing tags - * @returns {string} X/HTML with prefixed comments or attributes + * Set the `key` `value` pair to the *Map* or *WeakMap* and returns the `value` + * @template T + * @param {Map | WeakMap} map + * @param {any} key + * @param {T} value + * @returns {T} */ -const instrument = (template, prefix, svg) => { - let i = 0; - return template - .join('\x01') - .trim() - .replace( - elements, - (_, name, attrs, selfClosing) => { - let ml = name + attrs.replace(attributes, '\x02=$2$1').trimEnd(); - if (selfClosing.length) - ml += (svg || empty.test(name)) ? ' /' : ('>'; - } - ) - .replace( - holes, - hole => hole === '\x01' ? - ('') : - (prefix + i++) - ); +const set = (map, key, value) => { + map.set(key, value); + return value; }; -const ELEMENT_NODE = 1; -const nodeType = 111; - -const remove = ({firstChild, lastChild}) => { - const range = document.createRange(); - range.setStartAfter(firstChild); - range.setEndAfter(lastChild); - range.deleteContents(); - return firstChild; +const gPD = (ref, prop) => { + let desc; + do { desc = getOwnPropertyDescriptor(ref, prop); } + while(!desc && (ref = getPrototypeOf$1(ref))); + return desc; }; -const diffable = (node, operation) => node.nodeType === nodeType ? - ((1 / operation) < 0 ? - (operation ? remove(node) : node.lastChild) : - (operation ? node.valueOf() : node.firstChild)) : - node -; - -const persistent = fragment => { - const {firstChild, lastChild} = fragment; - if (firstChild === lastChild) - return lastChild || fragment; - const {childNodes} = fragment; - const nodes = [...childNodes]; - return { - ELEMENT_NODE, - nodeType, - firstChild, - lastChild, - valueOf() { - if (childNodes.length !== nodes.length) - fragment.append(...nodes); - return fragment; - } - }; -}; +/** @typedef {import("domconstants/constants").ATTRIBUTE_NODE} ATTRIBUTE_NODE */ +/** @typedef {import("domconstants/constants").TEXT_NODE} TEXT_NODE */ +/** @typedef {import("domconstants/constants").COMMENT_NODE} COMMENT_NODE */ +/** @typedef {ATTRIBUTE_NODE | TEXT_NODE | COMMENT_NODE} Type */ -const {isArray: isArray$4} = Array; +/** @typedef {import("./persistent-fragment.js").PersistentFragment} PersistentFragment */ +/** @typedef {import("./rabbit.js").Hole} Hole */ -const aria = node => values => { - for (const key in values) { - const name = key === 'role' ? key : `aria-${key}`; - const value = values[key]; - if (value == null) - node.removeAttribute(name); - else - node.setAttribute(name, value); +/** @typedef {unknown} Value */ +/** @typedef {Node | Element | PersistentFragment} Target */ +/** @typedef {null | undefined | string | number | boolean | Node | Element | PersistentFragment} DOMValue */ + +/** + * @typedef {Object} Entry + * @property {Type} type + * @property {number[]} path + * @property {function} update + * @property {string} name + */ + +/** + * @param {PersistentFragment} c content retrieved from the template + * @param {Entry[]} e entries per each hole in the template + * @param {number} l the length of content childNodes + * @returns + */ +const cel = (c, e, l) => ({ c, e, l }); + +/** + * @typedef {Object} HoleDetails + * @property {null | Node | PersistentFragment} n the current live node, if any and not the `t` one + */ + +/** @type {() => HoleDetails} */ +const comment = () => ({ n: null }); + +/** + * @typedef {Object} Detail + * @property {any} v the current value of the interpolation / hole + * @property {function} u the callback to update the value + * @property {Node} t the target comment node or element + * @property {string} n the name of the attribute, if any + */ + +/** + * @param {any} v the current value of the interpolation / hole + * @param {function} u the callback to update the value + * @param {Node} t the target comment node or element + * @param {string} n the name of the attribute, if any + * @returns {Detail} + */ +const detail = (v, u, t, n) => ({ v, u, t, n }); + +/** + * @param {Type} t the operation type + * @param {number[]} p the path to retrieve the node + * @param {function} u the update function + * @param {string} n the attribute name, if any + * @returns {Entry} + */ +const entry = (t, p, u, n = '') => ({ t, p, u, n }); + +/** + * @typedef {Object} Cache + * @property {Cache[]} s the stack of caches per each interpolation / hole + * @property {null | TemplateStringsArray} t the cached template + * @property {null | Node | PersistentFragment} n the node returned when parsing the template + * @property {Detail[]} d the list of updates to perform + */ + +/** + * @param {Cache[]} s the cache stack + * @returns {Cache} + */ +const cache$1 = s => ({ s, t: null, n: null, d: empty}); + +/** + * @typedef {Object} Parsed + * @property {Node | PersistentFragment} n the returned node after parsing the template + * @property {Detail[]} d the list of details to update the node + */ + +/** + * @param {Node | PersistentFragment} n the returned node after parsing the template + * @param {Detail[]} d the list of details to update the node + * @returns {Parsed} + */ +const parsed = (n, d) => ({ n, d }); + +const ATTRIBUTE_NODE = 2; +const TEXT_NODE = 3; +const COMMENT_NODE = 8; +const DOCUMENT_FRAGMENT_NODE = 11; + +/*! (c) Andrea Giammarchi - ISC */ +const {setPrototypeOf} = Object; + +/** + * @param {Function} Class any base class to extend without passing through it via super() call. + * @returns {Function} an extensible class for the passed one. + * @example + * // creating this very same module utility + * import custom from 'custom-function/factory'; + * const CustomFunction = custom(Function); + * class MyFunction extends CustomFunction {} + * const mf = new MyFunction(() => {}); + */ +const custom = Class => { + function Custom(target) { + return setPrototypeOf(target, new.target.prototype); } + Custom.prototype = Class.prototype; + return Custom; }; -const getValue = value => value == null ? value : value.valueOf(); - -const attribute = (node, name) => { - let oldValue, orphan = true; - const attributeNode = document.createAttributeNS(null, name); - return newValue => { - const value = getValue(newValue); - if (oldValue !== value) { - if ((oldValue = value) == null) { - if (!orphan) { - node.removeAttributeNode(attributeNode); - orphan = true; - } - } - else { - attributeNode.value = value; - if (orphan) { - node.setAttributeNodeNS(attributeNode); - orphan = false; - } - } - } - }; +let range$1; +/** + * @param {Node | Element} firstChild + * @param {Node | Element} lastChild + * @param {boolean} preserve + * @returns + */ +const drop = (firstChild, lastChild, preserve) => { + if (!range$1) range$1 = newRange(); + if (preserve) + range$1.setStartAfter(firstChild); + else + range$1.setStartBefore(firstChild); + range$1.setEndAfter(lastChild); + range$1.deleteContents(); + return firstChild; }; -const boolean = (node, key, oldValue) => newValue => { - const value = !!getValue(newValue); - if (oldValue !== value) { - // when IE won't be around anymore ... - // node.toggleAttribute(key, oldValue = !!value); - if ((oldValue = value)) - node.setAttribute(key, ''); - else - node.removeAttribute(key); +/** + * @param {PersistentFragment} fragment + * @returns {Node | Element} + */ +const remove = ({firstChild, lastChild}, preserve) => drop(firstChild, lastChild, preserve); + +let checkType = false; + +/** + * @param {Node} node + * @param {1 | 0 | -0 | -1} operation + * @returns {Node} + */ +const diffFragment = (node, operation) => ( + checkType && node.nodeType === DOCUMENT_FRAGMENT_NODE ? + ((1 / operation) < 0 ? + (operation ? remove(node, true) : node.lastChild) : + (operation ? node.valueOf() : node.firstChild)) : + node +); + +/** @extends {DocumentFragment} */ +class PersistentFragment extends custom(DocumentFragment) { + #nodes; + #length; + constructor(fragment) { + const _nodes = [...fragment.childNodes]; + super(fragment); + this.#nodes = _nodes; + this.#length = _nodes.length; + checkType = true; + } + get firstChild() { return this.#nodes[0]; } + get lastChild() { return this.#nodes.at(-1); } + get parentNode() { return this.#nodes[0].parentNode; } + remove() { + remove(this, false); } -}; + replaceWith(node) { + remove(this, true).replaceWith(node); + } + valueOf() { + if (this.childNodes.length !== this.#length) + this.replaceChildren(...this.#nodes); + return this; + } +} -const data = ({dataset}) => values => { - for (const key in values) { - const value = values[key]; - if (value == null) - delete dataset[key]; - else - dataset[key] = value; +/** + * @param {DocumentFragment} content + * @param {number[]} path + * @returns {Element} + */ +const find = (content, path) => path.reduceRight(childNodesIndex, content); +const childNodesIndex = (node, i) => node.childNodes[i]; + +/** @param {(template: TemplateStringsArray, values: any[]) => import("./parser.js").Resolved} parse */ +const create = parse => ( + /** @param {(template: TemplateStringsArray, values: any[]) => import("./literals.js").Parsed} parse */ + (template, values) => { + const { c: content, e: entries, l: length } = parse(template, values); + const root = content.cloneNode(true); + // reverse loop to avoid missing paths while populating + // TODO: is it even worth to pre-populate nodes? see rabbit.js too + let current, prev, i = entries.length, details = i ? entries.slice(0) : empty; + while (i--) { + const { t: type, p: path, u: update, n: name } = entries[i]; + const node = path === prev ? current : (current = find(root, (prev = path))); + const callback = type === COMMENT_NODE ? update() : update; + details[i] = detail(callback(node, values[i], name, empty), callback, node, name); + } + return parsed( + length === 1 ? root.firstChild : new PersistentFragment(root), + details + ); } -}; +); -const event = (node, name) => { - let oldValue, lower, type = name.slice(2); - if (!(name in node) && (lower = name.toLowerCase()) in node) - type = lower.slice(2); - return newValue => { - const info = isArray$4(newValue) ? newValue : [newValue, false]; - if (oldValue !== info[0]) { - if (oldValue) - node.removeEventListener(type, oldValue, info[1]); - if (oldValue = info[0]) - node.addEventListener(type, oldValue, info[1]); - } - }; -}; +const TEXT_ELEMENTS = /^(?:plaintext|script|style|textarea|title|xmp)$/i; +const VOID_ELEMENTS = /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i; -const ref = node => { - let oldValue; - return value => { - if (oldValue !== value) { - oldValue = value; - if (typeof value === 'function') - value(node); - else - value.current = node; - } - }; -}; +/*! (c) Andrea Giammarchi - ISC */ -const setter = (node, key) => key === 'dataset' ? - data(node) : - value => { - node[key] = value; - }; +const elements = /<([a-zA-Z0-9]+[a-zA-Z0-9:._-]*)([^>]*?)(\/?)>/g; +const attributes = /([^\s\\>"'=]+)\s*=\s*(['"]?)\x01/g; +const holes = /[\x01\x02]/g; -const text = node => { - let oldValue; - return newValue => { - const value = getValue(newValue); - if (oldValue != value) { - oldValue = value; - node.textContent = value == null ? '' : value; - } - }; +// \x01 Node.ELEMENT_NODE +// \x02 Node.ATTRIBUTE_NODE + +/** + * Given a template, find holes as both nodes and attributes and + * return a string with holes as either comment nodes or named attributes. + * @param {string[]} template a template literal tag array + * @param {string} prefix prefix to use per each comment/attribute + * @param {boolean} xml enforces self-closing tags + * @returns {string} X/HTML with prefixed comments or attributes + */ +const parser$1 = (template, prefix, xml) => { + let i = 0; + return template + .join('\x01') + .trim() + .replace( + elements, + (_, name, attrs, selfClosing) => `<${ + name + }${ + attrs.replace(attributes, '\x02=$2$1').trimEnd() + }${ + selfClosing ? ( + (xml || VOID_ELEMENTS.test(name)) ? ' /' : `>` + ) + .replace( + holes, + hole => hole === '\x01' ? `` : (prefix + i++) + ) + ; }; /** @@ -3501,461 +3588,462 @@ const udomdiff = (parentNode, a, b, get, before) => { return b; }; -const {isArray: isArray$3, prototype} = Array; -const {indexOf} = prototype; - -const { - createDocumentFragment, - createElement, - createElementNS, - createTextNode, - createTreeWalker, - importNode -} = new Proxy({}, { - get: (_, method) => document[method].bind(document) -}); - -const createHTML = html => { - const template = createElement('template'); - template.innerHTML = html; - return template.content; -}; - -let xml; -const createSVG = svg => { - if (!xml) xml = createElementNS('http://www.w3.org/2000/svg', 'svg'); - xml.innerHTML = svg; - const content = createDocumentFragment(); - content.append(...xml.childNodes); - return content; -}; - -const createContent = (text, svg) => svg ? - createSVG(text) : createHTML(text); - -// from a generic path, retrieves the exact targeted node -const reducePath = ({childNodes}, i) => childNodes[i]; - -// this helper avoid code bloat around handleAnything() callback -const diff = (comment, oldNodes, newNodes) => udomdiff( - comment.parentNode, - // TODO: there is a possible edge case where a node has been - // removed manually, or it was a keyed one, attached - // to a shared reference between renders. - // In this case udomdiff might fail at removing such node - // as its parent won't be the expected one. - // The best way to avoid this issue is to filter oldNodes - // in search of those not live, or not in the current parent - // anymore, but this would require both a change to uwire, - // exposing a parentNode from the firstChild, as example, - // but also a filter per each diff that should exclude nodes - // that are not in there, penalizing performance quite a lot. - // As this has been also a potential issue with domdiff, - // and both lighterhtml and hyperHTML might fail with this - // very specific edge case, I might as well document this possible - // "diffing shenanigan" and call it a day. - oldNodes, - newNodes, - diffable, - comment -); - -// if an interpolation represents a comment, the whole -// diffing will be related to such comment. -// This helper is in charge of understanding how the new -// content for such interpolation/hole should be updated -const handleAnything = comment => { - let oldValue, text, nodes = []; - const anyContent = newValue => { - switch (typeof newValue) { - // primitives are handled as text content - case 'string': - case 'number': - case 'boolean': - if (oldValue !== newValue) { - oldValue = newValue; - if (!text) - text = createTextNode(''); - text.data = newValue; - nodes = diff(comment, nodes, [text]); - } - break; - // null, and undefined are used to cleanup previous content - case 'object': - case 'undefined': - if (newValue == null) { - if (oldValue != newValue) { - oldValue = newValue; - nodes = diff(comment, nodes, []); - } - break; - } - // arrays and nodes have a special treatment - if (isArray$3(newValue)) { - oldValue = newValue; - // arrays can be used to cleanup, if empty - if (newValue.length === 0) - nodes = diff(comment, nodes, []); - // or diffed, if these contains nodes or "wires" - else if (typeof newValue[0] === 'object') - nodes = diff(comment, nodes, newValue); - // in all other cases the content is stringified as is - else - anyContent(String(newValue)); - break; - } - // if the new value is a DOM node, or a wire, and it's - // different from the one already live, then it's diffed. - // if the node is a fragment, it's appended once via its childNodes - // There is no `else` here, meaning if the content - // is not expected one, nothing happens, as easy as that. - if (oldValue !== newValue) { - if ('ELEMENT_NODE' in newValue) { - oldValue = newValue; - nodes = diff( - comment, - nodes, - newValue.nodeType === 11 ? - [...newValue.childNodes] : - [newValue] - ); - } - else { - const value = newValue.valueOf(); - if (value !== newValue) - anyContent(value); - } - } - break; - case 'function': - anyContent(newValue(comment)); - break; - } - }; - return anyContent; -}; - -// attributes can be: -// * ref=${...} for hooks and other purposes -// * aria=${...} for aria attributes -// * ?boolean=${...} for boolean attributes -// * .dataset=${...} for dataset related attributes -// * .setter=${...} for Custom Elements setters or nodes with setters -// such as buttons, details, options, select, etc -// * @event=${...} to explicitly handle event listeners -// * onevent=${...} to automatically handle event listeners -// * generic=${...} to handle an attribute just like an attribute -const handleAttribute = (node, name/*, svg*/) => { - switch (name[0]) { - case '?': return boolean(node, name.slice(1), false); - case '.': return setter(node, name.slice(1)); - case '@': return event(node, 'on' + name.slice(1)); - case 'o': if (name[1] === 'n') return event(node, name); - } - - switch (name) { - case 'ref': return ref(node); - case 'aria': return aria(node); - } +const setAttribute = (element, name, value) => + element.setAttribute(name, value); - return attribute(node, name/*, svg*/); -}; +const removeAttribute = (element, name) => + element.removeAttribute(name); -// each mapped update carries the update type and its path -// the type is either node, attribute, or text, while -// the path is how to retrieve the related node to update. -// In the attribute case, the attribute name is also carried along. -function handlers(options) { - const {type, path} = options; - const node = path.reduceRight(reducePath, this); - return type === 'node' ? - handleAnything(node) : - (type === 'attr' ? - handleAttribute(node, options.name/*, options.svg*/) : - text(node)); -} - -// from a fragment container, create an array of indexes -// related to its child nodes, so that it's possible -// to retrieve later on exact node via reducePath -const createPath = node => { - const path = []; - let {parentNode} = node; - while (parentNode) { - path.push(indexOf.call(parentNode.childNodes, node)); - node = parentNode; - ({parentNode} = node); +/** + * @template T + * @param {Element} element + * @param {T} value + * @returns {T} + */ +const aria = (element, value) => { + for (const key in value) { + const $ = value[key]; + const name = key === 'role' ? key : `aria-${key}`; + if ($ == null) removeAttribute(element, name); + else setAttribute(element, name, $); } - return path; + return value; }; -// the prefix is used to identify either comments, attributes, or nodes -// that contain the related unique id. In the attribute cases -// isµX="attribute-name" will be used to map current X update to that -// attribute name, while comments will be like , to map -// the update to that specific comment node, hence its parent. -// style and textarea will have text content, and are handled -// directly through text-only updates. -const prefix = 'isµ'; +const arrayComment = () => array; -// Template Literals are unique per scope and static, meaning a template -// should be parsed once, and once only, as it will always represent the same -// content, within the exact same amount of updates each time. -// This cache relates each template to its unique content and updates. -const cache$1 = new WeakMapSet; - -// a RegExp that helps checking nodes that cannot contain comments -const textOnly = /^(?:textarea|script|style|title|plaintext|xmp)$/; - -const createCache = () => ({ - stack: [], // each template gets a stack for each interpolation "hole" - - entry: null, // each entry contains details, such as: - // * the template that is representing - // * the type of node it represents (html or svg) - // * the content fragment with all nodes - // * the list of updates per each node (template holes) - // * the "wired" node or fragment that will get updates - // if the template or type are different from the previous one - // the entry gets re-created each time - - wire: null // each rendered node represent some wired content and - // this reference to the latest one. If different, the node - // will be cleaned up and the new "wire" will be appended -}); +let listeners; -// the entry stored in the rendered node cache, and per each "hole" -const createEntry = (type, template) => { - const {content, updates} = mapUpdates(type, template); - return {type, template, content, updates, wire: null}; +/** + * @template T + * @param {Element} element + * @param {T} value + * @param {string} name + * @returns {T} + */ +const at = (element, value, name) => { + name = name.slice(1); + if (!listeners) listeners = new WeakMap; + const known = listeners.get(element) || set(listeners, element, {}); + let current = known[name]; + if (current && current[0]) element.removeEventListener(name, ...current); + current = isArray$3(value) ? value : [value, false]; + known[name] = current; + if (current[0]) element.addEventListener(name, ...current); + return value; }; -// a template is instrumented to be able to retrieve where updates are needed. -// Each unique template becomes a fragment, cloned once per each other -// operation based on the same template, i.e. data => html`

${data}

` -const mapTemplate = (type, template) => { - const svg = type === 'svg'; - const text = instrument(template, prefix, svg); - const content = createContent(text, svg); - // once instrumented and reproduced as fragment, it's crawled - // to find out where each update is in the fragment tree - const tw = createTreeWalker(content, 1 | 128); - const nodes = []; - const length = template.length - 1; - let i = 0; - // updates are searched via unique names, linearly increased across the tree - //
- let search = `${prefix}${i}`; - while (i < length) { - const node = tw.nextNode(); - // if not all updates are bound but there's nothing else to crawl - // it means that there is something wrong with the template. - if (!node) - throw `bad template: ${text}`; - // if the current node is a comment, and it contains isµX - // it means the update should take care of any content - if (node.nodeType === 8) { - // The only comments to be considered are those - // which content is exactly the same as the searched one. - if (node.data === search) { - nodes.push({type: 'node', path: createPath(node)}); - search = `${prefix}${++i}`; - } +/** + * @template T + * @this {import("./literals.js").HoleDetails} + * @param {Node} node + * @param {T} value + * @returns {T} + */ +function hole(node, value) { + const n = this.n || (this.n = node); + switch (typeof value) { + case 'string': + case 'number': + case 'boolean': { + if (n !== node) n.replaceWith((this.n = node)); + this.n.data = value; + break; } - else { - // if the node is not a comment, loop through all its attributes - // named isµX and relate attribute updates to this node and the - // attribute name, retrieved through node.getAttribute("isµX") - // the isµX attribute will be removed as irrelevant for the layout - // let svg = -1; - while (node.hasAttribute(search)) { - nodes.push({ - type: 'attr', - path: createPath(node), - name: node.getAttribute(search) - }); - node.removeAttribute(search); - search = `${prefix}${++i}`; - } - // if the node was a style, textarea, or others, check its content - // and if it is then update tex-only this node - if ( - textOnly.test(node.localName) && - node.textContent.trim() === `` - ){ - node.textContent = ''; - nodes.push({type: 'text', path: createPath(node)}); - search = `${prefix}${++i}`; - } + case 'object': + case 'undefined': { + if (value == null) (this.n = node).data = ''; + else this.n = value.valueOf(); + n.replaceWith(this.n); + break; } } - // once all nodes to update, or their attributes, are known, the content - // will be cloned in the future to represent the template, and all updates - // related to such content retrieved right away without needing to re-crawl - // the exact same template, and its content, more than once. - return {content, nodes}; -}; - -// if a template is unknown, perform the previous mapping, otherwise grab -// its details such as the fragment with all nodes, and updates info. -const mapUpdates = (type, template) => { - const {content, nodes} = ( - cache$1.get(template) || - cache$1.set(template, mapTemplate(type, template)) - ); - // clone deeply the fragment - const fragment = importNode(content, true); - // and relate an update handler per each node that needs one - const updates = nodes.map(handlers, fragment); - // return the fragment and all updates to use within its nodes - return {content: fragment, updates}; -}; + return value; +} +const boundComment = () => hole.bind(comment()); -// as html and svg can be nested calls, but no parent node is known -// until rendered somewhere, the unroll operation is needed to -// discover what to do with each interpolation, which will result -// into an update operation. -const unroll = (info, {type, template, values}) => { - // interpolations can contain holes and arrays, so these need - // to be recursively discovered - const length = unrollValues(info, values); - let {entry} = info; - // if the cache entry is either null or different from the template - // and the type this unroll should resolve, create a new entry - // assigning a new content fragment and the list of updates. - if (!entry || (entry.template !== template || entry.type !== type)) - info.entry = (entry = createEntry(type, template)); - const {content, updates, wire} = entry; - // even if the fragment and its nodes is not live yet, - // it is already possible to update via interpolations values. - for (let i = 0; i < length; i++) - updates[i](values[i]); - // if the entry was new, or representing a different template or type, - // create a new persistent entity to use during diffing. - // This is simply a DOM node, when the template has a single container, - // as in `

`, or a "wire" in `

` and similar cases. - return wire || (entry.wire = persistent(content)); -}; +/** + * @template T + * @param {Element} element + * @param {T} value + * @returns {T} + */ +const className = (element, value) => maybeDirect( + element, value, value == null ? 'class' : 'className' +); -// the stack retains, per each interpolation value, the cache -// related to each interpolation value, or null, if the render -// was conditional and the value is not special (Array or Hole) -const unrollValues = ({stack}, values) => { - const {length} = values; - for (let i = 0; i < length; i++) { - const hole = values[i]; - // each Hole gets unrolled and re-assigned as value - // so that domdiff will deal with a node/wire, not with a hole - if (hole instanceof Hole) - values[i] = unroll( - stack[i] || (stack[i] = createCache()), - hole - ); - // arrays are recursively resolved so that each entry will contain - // also a DOM node or a wire, hence it can be diffed if/when needed - else if (isArray$3(hole)) - unrollValues(stack[i] || (stack[i] = createCache()), hole); - // if the value is nothing special, the stack doesn't need to retain data - // this is useful also to cleanup previously retained data, if the value - // was a Hole, or an Array, but not anymore, i.e.: - // const update = content => html`
${content}
`; - // update(listOfItems); update(null); update(html`hole`) - else - stack[i] = null; +/** + * @template T + * @param {Element} element + * @param {T} value + * @returns {T} + */ +const data = (element, value) => { + const { dataset } = element; + for (const key in value) { + if (value[key] == null) delete dataset[key]; + else dataset[key] = value[key]; } - if (length < stack.length) - stack.splice(length); - return length; + return value; }; /** - * Holds all details wrappers needed to render the content further on. - * @constructor - * @param {string} type The hole type, either `html` or `svg`. - * @param {string[]} template The template literals used to the define the content. - * @param {Array} values Zero, one, or more interpolated values to render. + * @template T + * @param {Element | CSSStyleDeclaration} ref + * @param {T} value + * @param {string} name + * @returns {T} */ -class Hole { - constructor(type, template, values) { - this.type = type; - this.template = template; - this.values = values; - } -} - -// both `html` and `svg` template literal tags are polluted -// with a `for(ref[, id])` and a `node` tag too -const tag = type => { - // both `html` and `svg` tags have their own cache - const keyed = new WeakMapSet; - // keyed operations always re-use the same cache and unroll - // the template and its interpolations right away - const fixed = cache => (template, ...values) => unroll( - cache, - {type, template, values} - ); - return Object.assign( - // non keyed operations are recognized as instance of Hole - // during the "unroll", recursively resolved and updated - (template, ...values) => new Hole(type, template, values), - { - // keyed operations need a reference object, usually the parent node - // which is showing keyed results, and optionally a unique id per each - // related node, handy with JSON results and mutable list of objects - // that usually carry a unique identifier - for(ref, id) { - const memo = keyed.get(ref) || keyed.set(ref, new MapSet); - return memo.get(id) || memo.set(id, fixed(createCache())); - }, - // it is possible to create one-off content out of the box via node tag - // this might return the single created node, or a fragment with all - // nodes present at the root level and, of course, their child nodes - node: (template, ...values) => unroll(createCache(), new Hole(type, template, values)).valueOf() - } - ); -}; - -// each rendered node gets its own cache -const cache = new WeakMapSet; - -// rendering means understanding what `html` or `svg` tags returned -// and it relates a specific node to its own unique cache. -// Each time the content to render changes, the node is cleaned up -// and the new new content is appended, and if such content is a Hole -// then it's "unrolled" to resolve all its inner nodes. -const render = (where, what) => { - const hole = typeof what === 'function' ? what() : what; - const info = cache.get(where) || cache.set(where, createCache()); - const wire = hole instanceof Hole ? unroll(info, hole) : hole; - if (wire !== info.wire) { - info.wire = wire; - // valueOf() simply returns the node itself, but in case it was a "wire" - // it will eventually re-append all nodes to its fragment so that such - // fragment can be re-appended many times in a meaningful way - // (wires are basically persistent fragments facades with special behavior) - where.replaceChildren(wire.valueOf()); - } - return where; -}; +const direct = (ref, value, name) => (ref[name] = value); -const html = tag('html'); -tag('svg'); +/** + * @template T + * @param {Element} element + * @param {T} value + * @param {string} name + * @returns {T} + */ +const dot = (element, value, name) => direct(element, value, name.slice(1)); -const errors = ''; +/** + * @template T + * @param {Element} element + * @param {T} value + * @param {string} name + * @returns {T} + */ +const maybeDirect = (element, value, name) => ( + value == null ? + (removeAttribute(element, name), value) : + direct(element, value, name) +); -const props = ''; +/** + * @template T + * @param {Element} element + * @param {T} value + * @returns {T} + */ +const ref = (element, value) => ( + (typeof value === 'function' ? + value(element) : (value.current = element)), + value +); -var main = {}; +/** + * @template T + * @param {Element} element + * @param {T} value + * @param {string} name + * @returns {T} + */ +const regular = (element, value, name) => ( + (value == null ? + removeAttribute(element, name) : + setAttribute(element, name, value)), + value +); -var parse$1 = {}; +/** + * @template T + * @param {Element} element + * @param {T} value + * @returns {T} + */ +const style = (element, value) => ( + value == null ? + maybeDirect(element, value, 'style') : + direct(element.style, value, 'cssText') +); -/* remove eslint errors to see if there is something really wrong */ +/** + * @template T + * @param {Element} element + * @param {T} value + * @param {string} name + * @returns {T} + */ +const toggle = (element, value, name) => ( + element.toggleAttribute(name.slice(1), value), + value +); -var window$1 = { document: {} }; +/** + * @param {Node} node + * @param {Node[]} value + * @param {string} _ + * @param {Node[]} prev + * @returns {Node[]} + */ +const array = (node, value, _, prev) => ( + value.length ? + udomdiff(node.parentNode, prev, value, diffFragment, node) : + (prev.length && drop(prev[0], prev.at(-1), false), empty) +); -var hasOwnProperty = Object.prototype.hasOwnProperty; +const attr = new Map([ + ['aria', aria], + ['class', className], + ['data', data], + ['ref', ref], + ['style', style], +]); -var lowercase = function (string) { +/** + * @param {HTMLElement | SVGElement} element + * @param {string} name + * @param {boolean} svg + * @returns + */ +const attribute = (element, name, svg) => { + switch (name[0]) { + case '.': return dot; + case '?': return toggle; + case '@': return at; + default: return ( + svg || ('ownerSVGElement' in element) ? + (name === 'ref' ? ref : regular) : + (attr.get(name) || ( + name in element ? + (name.startsWith('on') ? + direct : + (gPD(element, name)?.set ? maybeDirect : regular) + ) : + regular + ) + ) + ); + } +}; + +/** + * @template T + * @param {Element} element + * @param {T} value + * @returns {T} + */ +const text = (element, value) => ( + (element.textContent = value == null ? '' : value), + value +); + +let template = document.createElement('template'), svg, range; + +/** + * @param {string} text + * @param {boolean} xml + * @returns {DocumentFragment} + */ +const createContent = (text, xml) => { + if (xml) { + if (!svg) { + svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + range = newRange(); + range.selectNodeContents(svg); + } + return range.createContextualFragment(text); + } + template.innerHTML = text; + const { content } = template; + template = template.cloneNode(false); + return content; +}; + +/** @typedef {import("./literals.js").Entry} Entry */ + +/** + * @typedef {Object} Resolved + * @property {DocumentFragment} content + * @property {Entry[]} entries + * @property {function[]} updates + * @property {number} length + */ + +/** + * @param {Element} node + * @returns {number[]} + */ +const createPath = node => { + const path = []; + let parentNode; + while ((parentNode = node.parentNode)) { + path.push(path.indexOf.call(parentNode.childNodes, node)); + node = parentNode; + } + return path; +}; + +/** + * @param {TemplateStringsArray} template + * @param {boolean} xml + * @returns {Resolved} + */ +const resolve = (template, values, xml) => { + const content = createContent(parser$1(template, prefix, xml), xml); + const { length } = template; + let asArray = false, entries = empty; + if (length > 1) { + const tw = document.createTreeWalker(content, 1 | 128); + const replace = []; + let i = 0, search = `${prefix}${i++}`; + entries = []; + while (i < length) { + const node = tw.nextNode(); + if (node.nodeType === COMMENT_NODE) { + if (node.data === search) { + let update = isArray$3(values[i - 1]) ? arrayComment : boundComment; + if (update === boundComment) replace.push(node); + else asArray = true; + entries.push(entry(COMMENT_NODE, createPath(node), update)); + search = `${prefix}${i++}`; + } + } + else { + let path; + while (node.hasAttribute(search)) { + if (!path) path = createPath(node); + const name = node.getAttribute(search); + entries.push(entry(ATTRIBUTE_NODE, path, attribute(node, name, xml), name)); + removeAttribute(node, search); + search = `${prefix}${i++}`; + } + if ( + TEXT_ELEMENTS.test(node.localName) && + node.textContent.trim() === `` + ) { + entries.push(entry(TEXT_NODE, path || createPath(node), text)); + search = `${prefix}${i++}`; + } + } + } + for (i = 0; i < replace.length; i++) + replace[i].replaceWith(document.createTextNode('')); + } + const l = content.childNodes.length; + return set(cache, template, cel(content, entries, l === 1 && asArray ? 0 : l)); +}; + +/** @type {WeakMap} */ +const cache = new WeakMap; +const prefix = 'isµ'; + +/** + * @param {boolean} xml + * @returns {(template: TemplateStringsArray, values: any[]) => Resolved} + */ +const parser = xml => (template, values) => cache.get(template) || resolve(template, values, xml); + +const parseHTML = create(parser(false)); +const parseSVG = create(parser(true)); + +/** + * @param {import("./literals.js").Cache} cache + * @param {Hole} hole + * @returns {Node} + */ +const unroll = (cache, { s: svg, t: template, v: values }) => { + if (values.length && cache.s === empty) cache.s = []; + const length = unrollValues(cache, values); + if (cache.t !== template) { + const { n: node, d: details } = (svg ? parseSVG : parseHTML)(template, values); + cache.t = template; + cache.n = node; + cache.d = details; + } + else { + const { d: details } = cache; + for (let i = 0; i < length; i++) { + const value = values[i]; + const detail = details[i]; + const { v: previous } = detail; + if (value !== previous) { + const { u: update, t: target, n: name } = detail; + detail.v = update(target, value, name, previous); + } + } + } + return cache.n; +}; + +/** + * @param {Cache} cache + * @param {any[]} values + * @returns {number} + */ +const unrollValues = ({ s: stack }, values) => { + const { length } = values; + for (let i = 0; i < length; i++) { + const hole = values[i]; + if (hole instanceof Hole) + values[i] = unroll(stack[i] || (stack[i] = cache$1(empty)), hole); + else if (isArray$3(hole)) + unrollValues(stack[i] || (stack[i] = cache$1([])), hole); + else + stack[i] = null; + } + if (length < stack.length) stack.splice(length); + return length; +}; + +/** + * Holds all details needed to render the content on a render. + * @constructor + * @param {boolean} svg The content type. + * @param {TemplateStringsArray} template The template literals used to the define the content. + * @param {any[]} values Zero, one, or more interpolated values to render. + */ +class Hole { + constructor(svg, template, values) { + this.s = svg; + this.t = template; + this.v = values; + } +} + +/** @typedef {import("../rabbit.js").Hole} Hole */ + +/** @type {WeakMap} */ +const known = new WeakMap; + +/** + * Render with smart updates within a generic container. + * @template T + * @param {T} where the DOM node where to render content + * @param {(() => Hole) | Hole} what the hole to render + * @returns + */ +const render = (where, what) => { + const info = known.get(where) || set(known, where, cache$1(empty)); + if (info.n !== unroll(info, typeof what === 'function' ? what() : what)) + where.replaceChildren(info.n); + return where; +}; + +/*! (c) Andrea Giammarchi - MIT */ + + +/** @typedef {import("./literals.js").Value} Value */ + +const tag = svg => (template, ...values) => new Hole(svg, template, values); + +/** @type {(template: TemplateStringsArray, ...values:Value[]) => Hole} A tag to render HTML content. */ +const html = tag(false); + +const errors = ''; + +const props = ''; + +var main = {}; + +var parse$1 = {}; + +/* remove eslint errors to see if there is something really wrong */ + +var window$1 = { document: {} }; + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +var lowercase = function (string) { return isString(string) ? string.toLowerCase() : string; }; @@ -3991,7 +4079,7 @@ if ("i" !== "I".toLowerCase()) { } var jqLite, // delay binding since jQuery could be loaded after us. - toString = Object.prototype.toString, + toString$1 = Object.prototype.toString, getPrototypeOf = Object.getPrototypeOf, ngMinErr = minErr("ng"); /** @name angular */ @@ -4282,12 +4370,12 @@ function isTypedArray(value) { return ( value && isNumber(value.length) && - TYPED_ARRAY_REGEXP.test(toString.call(value)) + TYPED_ARRAY_REGEXP.test(toString$1.call(value)) ); } function isArrayBuffer(obj) { - return toString.call(obj) === "[object ArrayBuffer]"; + return toString$1.call(obj) === "[object ArrayBuffer]"; } /** @@ -4459,7 +4547,7 @@ function copy(source, destination) { } function copyType(source) { - switch (toString.call(source)) { + switch (toString$1.call(source)) { case "[object Int8Array]": case "[object Int16Array]": case "[object Int32Array]": @@ -6855,6 +6943,11 @@ const Functions = { let args = arg.split(","); return args[Math.floor(Math.random() * args.length)]; }, + max: Math.max, + min: Math.min, + if: (/** @type {boolean} */ c, /** @type {any} */ t, /** @type {any} */ f) => + c ? t : f, + abs: (/** @type {number} */ v) => Math.abs(v), }; /** @@ -6865,10 +6958,12 @@ const Functions = { */ function translate(expression) { /* translate the expression from the excel like form to javascript */ + // remove any initial = sign + let exp = expression.replace(/^=/, ""); // translate single = to == - let exp = expression.replaceAll(/(?!])=/g, "=="); + exp = exp.replaceAll(/(?!])=/g, "=="); // translate words - exp = exp.replaceAll(/[$#]\w+/g, "access('$&')"); + exp = exp.replaceAll(/(? - exp({ ...Functions, access: access(Globals.state, context), ...context }); -} - -/** - * Evaluate a string as an expression in a given context - * - * @param {string} expression - Expression to evaluate - * @param {Object} context - Context for the evaluation - * @returns {any} Value returned by the expression +/** Track access to states and fields, true if the value was undefined + * @type {Map} */ -function evalInContext(expression, context) { - try { - const te = translate(expression); - const exp = main.compile(te); - return exp({ ...context, access: access(context.state, context.data) }); - } catch (e) { - console.error(e); - return null; - } -} - -/* Thinking about better properties */ - +const accessed = new Map(); -/** - * @typedef {Object} PropOptions - * @property {boolean} [hiddenLabel] - * @property {string} [placeholder] - * @property {string} [title] - * @property {string} [label] - * @property {boolean} [multiple] - * @property {string} [defaultValue] - * @property {string} [group] - * @property {string} [language] - * @property {Object} [replacements] - * @property {any} [valueWhenEmpty] - * @property {string} [pattern] - * @property {function(string):string} [validate] +/* intercept access to variables so I can track access to undefined state and field values + * and map them to empty strings. */ - -class Prop { - label = ""; - /** @type {any} */ - value; - - // Each prop gets a unique id based on the id of its container - id = ""; - - /** @type {import('./treebase').TreeBase} */ - container; - - /** attach the prop to its containing TreeBase component - * @param {string} name - * @param {any} value - * @param {TreeBase} container - * */ - initialize(name, value, container) { - // create id from the container id - this.id = `${container.id}-${name}`; - // link to the container - this.container = container; - // set the value if provided - if (value != null) { - this.set(value); +const variableHandler = { + /** @param {Object} target + * @param {string} prop + */ + get(target, prop) { + let result = undefined; + if (prop.startsWith("$")) { + result = target.states[prop]; + accessed.set(prop, prop in target.states); + } else if (prop.startsWith("_")) { + let ps = prop.slice(1); + result = target.data[ps]; + accessed.set(prop, Globals.data.allFields.has("#" + ps)); + } else if (prop in Functions) { + result = Functions[prop]; + } else { + console.error("undefined", prop); } - // create a label if it has none - this.label = - this.label || - name // convert from camelCase to Camel Case - .replace(/(?!^)([A-Z])/g, " $1") - .replace(/^./, (s) => s.toUpperCase()); - } - - get valueAsNumber() { - return parseFloat(this.value); - } - - /** @type {PropOptions} */ - options = {}; - - /** @param {PropOptions} options */ - constructor(options = {}) { - this.options = options; - if (options["label"]) { - this.label = options["label"]; + if (result === undefined || result === null) { + result = ""; } - } - /** @param {Object} _ - The context */ - eval(_ = {}) { - return this.value; - } - input() { - return html``; - } - /** @param {Hole} body */ - labeled(body) { - return html`
- - ${body} -
`; - } + return result; + }, - /** @param {any} value */ - set(value) { - this.value = value; - } + /** The expressions library is testing for own properties for safety. + * I need to defeat that for the renaming I want to do. + * @param {Object} target; + * @param {string} prop; + */ + getOwnPropertyDescriptor(target, prop) { + if (prop.startsWith("$")) { + return Object.getOwnPropertyDescriptor(target.states, prop); + } else if (prop.startsWith("_")) { + return Object.getOwnPropertyDescriptor(target.data, prop.slice(1)); + } else { + return Object.getOwnPropertyDescriptor(Functions, prop); + } + }, +}; - update() { - this.container.update(); +/** + * Compile an expression returning the function or an error + * @param {string} expression + * @returns {[ ((context?:Object)=>any ) | undefined, Error | undefined ]} + * + * */ +function compileExpression(expression) { + const te = translate(expression); + try { + const exp = main.compile(te); + /** @param {EvalContext} context */ + return [ + (context = {}) => { + let states = + "states" in context + ? { ...Globals.state.values, ...context.states } + : Globals.state.values; + let data = context.data ?? []; + const r = exp( + new Proxy( + { + Functions, + states, + data, + }, + variableHandler, + ), + ); + return r; + }, + undefined, + ]; + } catch (e) { + return [undefined, e]; } } -/** @param {string[] | Map | function():Map} arrayOrMap - * @returns Map - */ -function toMap(arrayOrMap) { - if (arrayOrMap instanceof Function) { - return arrayOrMap(); - } - if (Array.isArray(arrayOrMap)) { - return new Map(arrayOrMap.map((item) => [item, item])); - } - return arrayOrMap; -} - -class Select extends Prop { - /** - * @param {string[] | Map | function():Map} choices - * @param {PropOptions} options - */ - constructor(choices = [], options = {}) { - super(options); - this.choices = choices; - this.value = options.defaultValue || ""; - } - - /** @param {Map | null} choices */ - input(choices = null) { - if (!choices) { - choices = toMap(this.choices); - } - this.value = this.value || this.options.defaultValue || ""; - return this.labeled( - html``, - ); - } - - /** @param {any} value */ - set(value) { - this.value = value; - } -} - -class Field extends Select { - /** - * @param {PropOptions} options - */ - constructor(options = {}) { - super( - () => toMap([...Globals.data.allFields, "#ComponentName"].sort()), - options, - ); - } -} - -let Cue$1 = class Cue extends Select { - /** - * @param {PropOptions} options - */ - constructor(options = {}) { - super(() => Globals.cues.cueMap, options); - } -}; - -class Pattern extends Select { - /** - * @param {PropOptions} options - */ - constructor(options = {}) { - super(() => Globals.patterns.patternMap, options); - } -} - -class TypeSelect extends Select { - update() { - /* Magic happens here! The replace method on a TreeBaseSwitchable replaces the - * node with a new one to allow type switching in place - * */ - if (this.container instanceof TreeBaseSwitchable) - this.container.replace(this.value); - } -} - -let String$1 = class String extends Prop { - value = ""; - - constructor(value = "", options = {}) { - super(options); - this.value = value; - } - - input() { - return this.labeled( - html` { - if (target.checkValidity()) { - this.value = target.value; - this.update(); - } - }} - title=${this.options.title} - placeholder=${this.options.placeholder} - />`, - ); - } -}; - -/* Allow entering a key name by first pressing Enter than pressing a single key - */ -class KeyName extends Prop { - value = ""; - - constructor(value = "", options = {}) { - super(options); - this.value = value; - } - - input() { - /** @param {string} key */ - function mapKey(key) { - if (key == " ") return "Space"; - return key; - } - return this.labeled( - html` { - const target = event.target; - if (!(target instanceof HTMLInputElement)) return; - if (target.hasAttribute("readonly") && event.key == "Enter") { - target.removeAttribute("readonly"); - target.select(); - } else if (!target.hasAttribute("readonly")) { - event.stopPropagation(); - event.preventDefault(); - this.value = event.key; - target.value = mapKey(event.key); - target.setAttribute("readonly", ""); - } - }} - title="Press Enter to change then press a single key to set" - placeholder=${this.options.placeholder} - />`, - ); - } -} - -class TextArea extends Prop { - value = ""; - - constructor(value = "", options = {}) { - super(options); - this.value = value; - this.validate = this.options.validate || ((_) => ""); - } - - input() { - return this.labeled( - html` - - -
${this.errors.join("\n")}
- `, - ); - } - - /** @param {string} value */ - set(value) { - this.value = value; - this.editCSS(); - } -} - -class Color extends Prop { - value = "#ffffff"; - - constructor(value = "", options = {}) { - super(options); - this.value = value; - } - - input() { - return this.labeled( - html` { - this.value = event.target.value; - this.update(); - }} - />`, - ); - } -} - -class Voice extends Prop { - value = ""; - - constructor(value = "", options = {}) { - super(options); - this.value = value; - } - - input() { - return this.labeled( - html``, - ); - } -} - -class ADate extends Prop { - value = ""; - - constructor(value = "", options = {}) { - super(options); - this.value = value; - } - - input() { - return this.labeled( - html` { - this.value = event.target.value; - this.update(); - }} - />`, - ); - } -} - -const treebase = ''; - -/*! (c) Andrea Giammarchi */ - -const {iterator: iterator$1} = Symbol; - -const noop$1 = () => {}; - -/** - * A Map extend that transparently uses WeakRef around its values, - * providing a way to observe their collection at distance. - * @extends {Map} - */ -class WeakValue extends Map { - #delete = (key, ref) => { - super.delete(key); - this.#registry.unregister(ref); - }; - - #get = (key, [ref, onValueCollected]) => { - const value = ref.deref(); - if (!value) { - this.#delete(key, ref); - onValueCollected(key, this); - } - return value; - } - - #registry = new FinalizationRegistry(key => { - const pair = super.get(key); - if (pair) { - super.delete(key); - pair[1](key, this); - } - }); - - constructor(iterable) { - super(); - if (iterable) - for (const [key, value] of iterable) - this.set(key, value); - } - - clear() { - for (const [_, [ref]] of super[iterator$1]()) - this.#registry.unregister(ref); - super.clear(); - } - - delete(key) { - const pair = super.get(key); - return !!pair && !this.#delete(key, pair[0]); - } - - forEach(callback, context) { - for (const [key, value] of this) - callback.call(context, value, key, this); - } - - get(key) { - const pair = super.get(key); - return pair && this.#get(key, pair); - } - - has(key) { - return !!this.get(key); - } - - set(key, value, onValueCollected = noop$1) { - super.delete(key); - const ref = new WeakRef(value); - this.#registry.register(value, key, ref); - return super.set(key, [ref, onValueCollected]); - } - - *[iterator$1]() { - for (const [key, pair] of super[iterator$1]()) { - const value = this.#get(key, pair); - if (value) - yield [key, value]; - } - } - - *entries() { - yield *this[iterator$1](); - } - - *values() { - for (const [_, value] of this[iterator$1]()) - yield value; - } -} - -const style = ''; - -/* - * Bang color names from http://www.procato.com/rgb+index/?csv +/* + * Bang color names from http://www.procato.com/rgb+index/?csv */ const ColorNames = { + white: "#ffffff", + red: "#ff0000", + green: "#00ff00", + blue: "#0000ff", + yellow: "#ffff00", + magenta: "#ff00ff", + cyan: "#00ffff", + black: "#000000", "pinkish white": "#fff6f6", "very pale pink": "#ffe2e2", "pale pink": "#ffc2c2", @@ -8441,124 +7766,1071 @@ const ColorNames = { "deep amaranth": "#59000b", }; -/** @param {string} strColor */ -function isValidColor(strColor) { - if (strColor.length == 0 || strColor in ColorNames) { - return true; +/** @param {string} strColor */ +function isValidColor(strColor) { + if (strColor.length == 0 || strColor in ColorNames) { + return true; + } + var s = new Option().style; + s.color = strColor; + + // return 'false' if color wasn't assigned + return s.color !== ""; +} + +/** @param {string} name */ +function getColor(name) { + return ColorNames[name] || name; +} + +/** @param {Partial} style */ +function normalizeStyle(style) { + return Object.fromEntries( + Object.entries(style) + .filter(([_, value]) => value && value.toString().length) + .map(([key, value]) => + key.toLowerCase().indexOf("color") >= 0 + ? [key, getColor(/** @type {string} */ (value))] + : [key, value && value.toString()], + ), + ); +} + +/** @param {Partial} styles */ +function styleString(styles) { + return Object.entries(normalizeStyle(styles)).reduce( + (acc, [key, value]) => + acc + + key + .split(/(?=[A-Z])/) + .join("-") + .toLowerCase() + + ":" + + value + + ";", + "", + ); +} + +function colorNamesDataList() { + return html` + ${Object.keys(ColorNames).map((name) => html``; +} + +/* Thinking about better properties */ + + +/** + * @typedef {Object} PropOptions + * @property {boolean} [hiddenLabel] + * @property {string} [placeholder] + * @property {string} [title] + * @property {string} [label] + * @property {string} [defaultValue] + * @property {string} [group] + * @property {string} [language] + * @property {any} [valueWhenEmpty] + * @property {string} [pattern] + * @property {function(string):string} [validate] + * @property {string} [inputmode] + * @property {string} [datalist] + * @property {number} [min] + * @property {number} [max] + */ + +/** + * @template {number|boolean|string} T + */ +class Prop { + label = ""; + /** @type {T} */ + _value; + + /** true if this is a formula without leading = */ + isFormulaByDefault = false; + + /** If the entered value starts with = treat it as an expression and store it here */ + formula = ""; + + /** @type {((context?:EvalContext)=>any) | undefined} compiled expression if any */ + compiled = undefined; + + // Each prop gets a unique id based on the id of its container + id = ""; + + /** @type {TreeBase} */ + container; + + /** attach the prop to its containing TreeBase component + * @param {string} name + * @param {any} value + * @param {TreeBase} container + * */ + initialize(name, value, container) { + // create id from the container id + this.id = `${container.id}-${name}`; + // link to the container + this.container = container; + // set the value if provided + if (value != undefined) { + this.set(value); + } + // create a label if it has none + this.label = + this.label || + name // convert from camelCase to Camel Case + .replace(/(?!^)([A-Z])/g, " $1") + .replace(/^./, (s) => s.toUpperCase()); + } + + /** @type {PropOptions} */ + options = {}; + + /** + * @param {T} value + * @param {PropOptions} options */ + constructor(value, options = {}) { + this._value = value; + this.options = options; + if (options.label) { + this.label = options.label; + } + } + validate = debounce( + (/** @type {string} */ value, /** @type {HTMLInputElement} */ input) => { + input.setCustomValidity(""); + if (this.isFormulaByDefault || value.startsWith("=")) { + const [compiled, error] = compileExpression(value); + if (error) { + let message = error.message.replace(/^\[.*?\]/, ""); + message = message.split("\n")[0]; + input.setCustomValidity(message); + } else if (compiled && this.options.validate) + input.setCustomValidity(this.options.validate("" + compiled({}))); + } else if (this.options.validate) { + input.setCustomValidity(this.options.validate(value)); + } + input.reportValidity(); + }, + 100, + ); + + input() { + const text = this.text; + return this.labeled( + html`${this.showValue()}`, + ); + } + onkeydown = (/** @type {KeyboardEvent} */ event) => { + // restore the input on Escape + const { key, target } = event; + if (key == "Escape" && target instanceof HTMLInputElement) { + const text = this.text; + this.validate(text, target); + event.preventDefault(); + target.value = text; + } + }; + oninput = (/** @type {InputEvent} */ event) => { + // validate on each character + if (event.target instanceof HTMLInputElement) { + this.validate(event.target.value, event.target); + event.target.style.width = `${event.target.value.length + 1}ch`; + } + }; + onchange = (/** @type {InputEvent} */ event) => { + if ( + event.target instanceof HTMLInputElement && + event.target.checkValidity() + ) { + this.set(event.target.value); + this.update(); + } + }; + onfocus = (/** @type {FocusEvent}*/ event) => { + if (this.formula && event.target instanceof HTMLInputElement) { + const span = event.target.nextElementSibling; + if (span instanceof HTMLSpanElement) { + const value = this.value; + const type = typeof value; + let text = ""; + if (type === "string" || type === "number" || type === "boolean") { + text = "" + value; + } + span.innerText = text; + } + } + }; + + showValue() { + return this.formula ? [html``] : []; + } + + /** @param {Hole} body */ + labeled(body) { + return html` + + `; + } + + /** @param {HTMLInputElement} inputElement */ + setValidity(inputElement) { + if (inputElement instanceof HTMLInputElement) { + if (this.error) { + console.log("scv", this.error.message); + inputElement.setCustomValidity(this.error.message); + inputElement.reportValidity(); + } else { + console.log("csv"); + inputElement.setCustomValidity(""); + inputElement.reportValidity(); + } + } else { + console.log("not found", inputElement); + } + } + + /** @param {any} value + * @returns {T} + * */ + cast(value) { + return value; + } + + /** + * @param {any} value + */ + set(value) { + this.compiled = undefined; + this.formula = ""; + if ( + typeof value == "string" && + (this.isFormulaByDefault || value.startsWith("=")) + ) { + // compile it here + let error; + [this.compiled, error] = compileExpression(value); + if (error) { + console.error("set error", this.label, value, error.message); + } else { + this.formula = value; + } + } else { + this._value = this.cast(value); + } + } + + /** + * extract the value to save + * returns {string} + */ + get text() { + if (this.formula || this.isFormulaByDefault) return this.formula; + return "" + this._value; + } + + /** @returns {T} */ + get value() { + if (this.compiled) { + if (!this.formula) { + console.log(this.options); + this._value = this.options.valueWhenEmpty ?? ""; + } else { + const v = this.compiled(); + this._value = this.cast(v); + } + } + return this._value; + } + + /** @param {EvalContext} context - The context + * @returns {T} */ + valueInContext(context = {}) { + if (this.compiled) { + if (!this.formula) { + this._value = this.options.valueWhenEmpty ?? ""; + } else { + const v = this.compiled(context); + this._value = this.cast(v); + } + } + return this._value; + } + + update() { + this.container.update(); + } + + /** @param {Error} [error] */ + setError(error = undefined) { + this.error = error; + } +} + +/** @param {string[] | Map | function():Map} arrayOrMap + * @returns Map + */ +function toMap(arrayOrMap) { + if (arrayOrMap instanceof Function) { + return arrayOrMap(); + } + if (Array.isArray(arrayOrMap)) { + return new Map(arrayOrMap.map((item) => [item, item])); + } + return arrayOrMap; +} + +/** @extends {Prop} */ +class Select extends Prop { + /** + * @param {string[] | Map | function():Map} choices + * @param {PropOptions} options + */ + constructor(choices = [], options = {}) { + super("", options); + this.choices = choices; + this._value = options.defaultValue || ""; + } + + /** @param {Map | null} choices */ + input(choices = null) { + if (!choices) { + choices = toMap(this.choices); + } + this._value = this._value || this.options.defaultValue || ""; + return this.labeled( + html``, + ); + } + + /** @param {any} value */ + set(value) { + this._value = value; + } +} + +class Field extends Select { + /** + * @param {PropOptions} options + */ + constructor(options = {}) { + super( + () => toMap([...Globals.data.allFields, "#ComponentName"].sort()), + options, + ); + } +} + +let Cue$1 = class Cue extends Select { + /** + * @param {PropOptions} options + */ + constructor(options = {}) { + super(() => Globals.cues.cueMap, options); + } +}; + +class Pattern extends Select { + /** + * @param {PropOptions} options + */ + constructor(options = {}) { + super(() => Globals.patterns.patternMap, options); + } +} + +class TypeSelect extends Select { + update() { + /* Magic happens here! The replace method on a TreeBaseSwitchable replaces the + * node with a new one to allow type switching in place + * */ + if (this.container instanceof TreeBaseSwitchable) + this.container.replace(this._value); + } +} + +/** @extends {Prop} */ +let String$1 = class String extends Prop {}; + +/* Allow entering a key name by first pressing Enter than pressing a single key + */ +/** @extends {Prop} */ +class KeyName extends Prop { + /** + * @param {string} value + * @param {PropOptions} options + */ + constructor(value = "", options = {}) { + super(value, options); + } + + input() { + /** @param {string} key */ + function mapKey(key) { + if (key == " ") return "Space"; + return key; + } + return this.labeled( + html` { + const target = event.target; + if (!(target instanceof HTMLInputElement)) return; + if (target.hasAttribute("readonly") && event.key == "Enter") { + target.removeAttribute("readonly"); + target.select(); + } else if (!target.hasAttribute("readonly")) { + event.stopPropagation(); + event.preventDefault(); + this._value = event.key; + target.value = mapKey(event.key); + target.setAttribute("readonly", ""); + } + }} + title="Press Enter to change then press a single key to set" + placeholder=${this.options.placeholder} + />`, + ); + } +} + +/** @extends {Prop} */ +class TextArea extends Prop { + /** + * @param {string} value + * @param {PropOptions} options + */ + constructor(value = "", options = {}) { + super(value, options); + this.validate = this.options.validate || ((_) => ""); + } + + input() { + return this.labeled( + html` + + +
${this.errors.join("\n")}
+ `, + ); + } + + /** @param {string} value */ + set(value) { + this._value = value; + this.editCSS(); + } +} + +/** @extends {Prop} */ +class Color extends Prop { + /** + * @param {string} value + * @param {PropOptions} options + */ + constructor(value = "white", options = {}) { + options = { + /** @param {string} value */ + validate: (value) => { + if (isValidColor(value)) { + const swatch = document.querySelector(`#${this.id}~div`); + if (swatch instanceof HTMLDivElement) { + swatch.style.backgroundColor = getColor(value); + } + return ""; + } + return "invalid color"; + }, + datalist: "ColorNames", + ...options, + }; + super(value, options); + } + + showValue() { + return [ + html`
`, + ]; + } +} + +/** @extends {Prop} */ +class Voice extends Prop { + /** @param {string} value + * @param {PropOptions} options + */ + constructor(value = "", options = {}) { + super(value, options); + } + + input() { + return this.labeled( + html``, + ); + } +} +/** @extends {Prop} */ +class ADate extends Prop { + /** @param {string} value + * @param {PropOptions} options + */ + constructor(value = "", options = {}) { + super(value, options); + } + + input() { + return this.labeled( + html` { + this._value = event.target.value; + this.update(); + }} + />`, + ); + } +} + +/** + * @template {unknown[]} T + * @param {(...args: T)=>void} callback + * @param {number} wait + * @returns {(...args: T)=>void} + * */ +const debounce = (callback, wait) => { + let timeoutId = null; + return (...args) => { + window.clearTimeout(timeoutId); + timeoutId = window.setTimeout(() => { + callback(...args); + }, wait); + }; +}; + +const treebase = ''; + +/*! (c) Andrea Giammarchi */ + +const {iterator: iterator$1} = Symbol; + +const noop$1 = () => {}; + +/** + * A Map extend that transparently uses WeakRef around its values, + * providing a way to observe their collection at distance. + * @extends {Map} + */ +class WeakValue extends Map { + #delete = (key, ref) => { + super.delete(key); + this.#registry.unregister(ref); + }; + + #get = (key, [ref, onValueCollected]) => { + const value = ref.deref(); + if (!value) { + this.#delete(key, ref); + onValueCollected(key, this); + } + return value; } - var s = new Option().style; - s.color = strColor; - // return 'false' if color wasn't assigned - return s.color !== ""; -} + #registry = new FinalizationRegistry(key => { + const pair = super.get(key); + if (pair) { + super.delete(key); + pair[1](key, this); + } + }); -/** @param {string} name */ -function getColor(name) { - return ColorNames[name] || name; -} + constructor(iterable) { + super(); + if (iterable) + for (const [key, value] of iterable) + this.set(key, value); + } -/** @param {Partial} style */ -function normalizeStyle(style) { - return Object.fromEntries( - Object.entries(style) - .filter(([_, value]) => value && value.toString().length) - .map(([key, value]) => - key.toLowerCase().indexOf("color") >= 0 - ? [key, getColor(/** @type {string} */ (value))] - : [key, value && value.toString()], - ), - ); -} + clear() { + for (const [_, [ref]] of super[iterator$1]()) + this.#registry.unregister(ref); + super.clear(); + } -/** @param {Partial} styles */ -function styleString(styles) { - return Object.entries(normalizeStyle(styles)).reduce( - (acc, [key, value]) => - acc + - key - .split(/(?=[A-Z])/) - .join("-") - .toLowerCase() + - ":" + - value + - ";", - "", - ); -} + delete(key) { + const pair = super.get(key); + return !!pair && !this.#delete(key, pair[0]); + } -class ColorInput extends HTMLElement { - value = ""; - name = ""; - tabindex = "0"; + forEach(callback, context) { + for (const [key, value] of this) + callback.call(context, value, key, this); + } - /** - * Called when the element is added to a page. The first time this is called - * I will copy the props and call the init method - */ - connectedCallback() { - if (!Object.hasOwn(this, "initialized")) { - this.initialized = true; - this.init(); - } - this.render(); + get(key) { + const pair = super.get(key); + return pair && this.#get(key, pair); } - static get observedAttributes() { - return ["name", "value", "tabindex"]; + has(key) { + return !!this.get(key); } - /** - * watch for changing attributes - * @param {string} name - * @param {string} _ - * @param {string} newValue - */ - attributeChangedCallback(name, _, newValue) { - this[name] = newValue; - this.render(); + set(key, value, onValueCollected = noop$1) { + super.delete(key); + const ref = new WeakRef(value); + this.#registry.register(value, key, ref); + return super.set(key, [ref, onValueCollected]); } - init() { - if (!document.querySelector("datalist#ColorNames")) { - const list = html.node` - ${Object.keys(ColorNames).map((name) => html``; - document.body.appendChild(list); - } - } - validate() { - const input = this.querySelector("input"); - if (!input) return "not found"; - if (!isValidColor(input.value)) { - input.setCustomValidity("invalid color"); - input.reportValidity(); - } else { - input.setCustomValidity(""); - const div = this.querySelector("div"); - if (div) div.style.background = getColor(input.value); + *[iterator$1]() { + for (const [key, pair] of super[iterator$1]()) { + const value = this.#get(key, pair); + if (value) + yield [key, value]; } } - render() { - render( - this, - html` this.validate()} - tabindex=${this.tabindex} - /> -
`, - ); + + *entries() { + yield *this[iterator$1](); } -} -customElements.define("color-input", ColorInput); + *values() { + for (const [_, value] of this[iterator$1]()) + yield value; + } +} /** * Create an object that is persisted to sessionStorage @@ -8735,7 +9007,7 @@ class TreeBase { * Extract the class fields that are Props and return their values as an Object * @returns {Object} */ - get props() { + get propsAsObject() { return Object.fromEntries( Object.entries(this) .filter(([_, prop]) => prop instanceof Prop) @@ -8747,11 +9019,12 @@ class TreeBase { * Extract the values of the fields that are Props * @returns {Object} */ - get propsAsProps() { + get props() { return Object.fromEntries( Object.entries(this).filter(([_, prop]) => prop instanceof Prop), ); } + /** * Prepare a TreeBase tree for external storage by converting to simple objects and arrays * @param {Object} [options] @@ -8766,7 +9039,7 @@ class TreeBase { prop instanceof Prop && !options.omittedProps.includes(prop.constructor.name), ) - .map(([name, prop]) => [name, prop.value]), + .map(([name, prop]) => [name, prop.text]), ); const children = this.children.map((child) => child.toObject(options)); const result = { @@ -8782,7 +9055,18 @@ class TreeBase { * called in fromObject after the children have been added. If you * call create directly you should call init afterward. */ - init() {} + init() { + /** Make sure OnOfGroup is enforced */ + for (const child of this.children) { + const props = child.props; + for (const instance of Object.values(props)) { + if (instance instanceof OneOfGroup && instance._value) { + instance.clearPeers(); + break; + } + } + } + } /** * Create a TreeBase object @@ -8801,7 +9085,7 @@ class TreeBase { const result = new constructor(); // initialize the props - for (const [name, prop] of Object.entries(result.propsAsProps)) { + for (const [name, prop] of Object.entries(result.props)) { prop.initialize(name, props[name], result); } @@ -8889,7 +9173,7 @@ class TreeBase { class=${this.className} id=${detailsId} ?open=${this.persisted.settingsDetailsOpen} - ontoggle=${({ target }) => + @toggle=${({ target }) => (this.persisted.settingsDetailsOpen = target.open)} > ${this.settingsSummary()} @@ -8910,29 +9194,32 @@ class TreeBase { /** * Render the details of a components settings - * @returns {Hole|Hole[]} + * @returns {Hole[]} */ settingsDetails() { - const props = this.propsAsProps; + const props = this.props; const inputs = Object.values(props).map((prop) => prop.input()); return inputs; } + /** + * @returns {Hole} + */ settingsChildren() { return this.orderedChildren(); } /** * Render the user interface and return the resulting Hole - * @returns {Hole|Hole[]} + * @returns {Hole} */ template() { - return this.empty; + return html`
`; } /** * Render the user interface catching errors and return the resulting Hole - * @returns {Hole|Hole[]} + * @returns {Hole} */ safeTemplate() { try { @@ -8954,7 +9241,7 @@ class TreeBase { * Wrap the body of a component * * @param {ComponentAttrs} attrs - * @param {Hole|Hole[]} body + * @param {Hole} body * @returns {Hole} */ component(attrs, body) { @@ -9041,9 +9328,7 @@ class TreeBase { * Create HTML LI nodes from the children */ listChildren(children = this.children) { - return children.map( - (child) => html.for(child)`
  • ${child.settings()}
  • `, - ); + return children.map((child) => html`
  • ${child.settings()}
  • `); } /** @@ -9098,39 +9383,11 @@ class TreeBase { return result; } - /* Methods from original Base many not used */ - - /** Return matching strings from props - * @param {RegExp} pattern - * @param {string[]} [props] - * @returns {Set} + /** @param {string[]} classes + * @returns {string} */ - all(pattern, props) { - const matches = new Set(); - for (const [name, theProp] of Object.entries(this.props)) { - if (!props || props.indexOf(name) >= 0) { - if (theProp instanceof String$1) { - for (const [match] of theProp.value.matchAll(pattern)) { - matches.add(match); - } - } - } - } - for (const child of this.children) { - for (const match of child.all(pattern, props)) { - matches.add(match); - } - } - return matches; - } - - /** @returns {Set} */ - allStates() { - return this.all(/\$\w+/g); - } - - get empty() { - return html``; + CSSClasses(...classes) { + return classes.join(" "); } } @@ -9139,8 +9396,9 @@ class TreeBase { */ class TreeBaseSwitchable extends TreeBase { init() { + super.init(); // find the TypeSelect property and set its value - for (const prop of Object.values(this.propsAsProps)) { + for (const prop of Object.values(this.props)) { if (prop instanceof TypeSelect) { if (!prop.value) { prop.set(this.className); @@ -9155,7 +9413,11 @@ class TreeBaseSwitchable extends TreeBase { if (!this.parent) return; if (this.className == className) return; // extract the values of the old props - const props = this.props; + const props = Object.fromEntries( + Object.entries(this) + .filter(([_, prop]) => prop instanceof Prop) + .map(([name, prop]) => [name, prop.value]), + ); const replacement = TreeBase.create(className, null, props); replacement.init(); const index = this.parent.children.indexOf(this); @@ -9177,7 +9439,7 @@ class Messages extends TreeBase { this.messages = []; return result; } else { - return this.empty; + return html`
    `; } } @@ -9192,47 +9454,60 @@ class Messages extends TreeBase { * @param {string[]} trace - stack trace */ function reportInternalError(msg, trace) { - const result = html.node`
    -

    Internal Error

    -

    - Your browser has detected an internal error in OS-DPI. It was very likely - caused by our program bug. We hope you will help us by sending a report of - the information below. Simply click this button - - and then paste into an email to - gb@cs.unc.edu. - -

    -
    -

    Error Report

    -

    ${msg}

    -

    Stack Trace

    -
      - ${trace.map((s) => html`
    • ${s}
    • `)} -
    -
    -
    `; + const result = document.createElement("div"); + result.id = "ErrorReport"; + render( + result, + html`
    +

    Internal Error

    +

    + Your browser has detected an internal error in OS-DPI. It was very + likely caused by our program bug. We hope you will help us by sending a + report of the information below. Simply click this button + + and then paste into an email to + gb@cs.unc.edu. + +

    +
    +

    Error Report

    +

    ${msg}

    +

    Stack Trace

    +
      + ${trace.map((s) => html`
    • ${s}
    • `)} +
    +
    +
    `, + ); document.body.prepend(result); } +/** @param {string} msg + * @param {string} _file + * @param {number} _line + * @param {number} _col + * @param {Error} error + */ window.onerror = async function (msg, _file, _line, _col, error) { console.error("onerror", msg, error); if (error instanceof Error) { @@ -9267,25 +9542,95 @@ window.onunhandledrejection = function (error) { error.preventDefault(); reportInternalError( error.reason.message, - error.reason.stack?.split("\n") || ["no stack"] + error.reason.stack?.split("\n") || ["no stack"], ); }; +const gridfilter = ''; + +class GridFilter extends TreeBase { + field = new Field({ hiddenLabel: true }); + operator = new Select(Object.keys(comparators), { hiddenLabel: true }); + value = new Expression("", { hiddenLabel: true }); + + /** move my parent instead of me. + * @param {boolean} up + */ + moveUpDown(up) { + this.parent?.moveUpDown(up); + } + + /** Format the settings + * @param {GridFilter[]} filters + * @return {Hole} + */ + static FilterSettings(filters) { + /** @type {Hole} */ + let table; + if (filters.length > 0) { + table = html` + + + + + + + + + + + ${filters.map( + (filter, index) => html` + + + + + + + `, + )} + +
    #FieldOperatorValue
    ${index + 1}${filter.field.input()}${filter.operator.input()}${filter.value.input()}
    + `; + } else { + table = html`
    `; + } + return html`
    + Filters + ${table} +
    `; + } + + /** Convert from Props to values for data module + * @param {GridFilter[]} filters + */ + static toContentFilters(filters) { + return filters.map((child) => ({ + field: child.field.value, + operator: child.operator.value, + value: child.value.value, + })); + } +} +TreeBase.register(GridFilter, "GridFilter"); + +const collator = new Intl.Collator("en", { sensitivity: "base" }); +const collatorNumber = new Intl.Collator("en", { numeric: true }); + /** Implement comparison operators * @typedef {function(string, string): boolean} Comparator * * @type {Object} */ const comparators = { - equals: (f, v) => - f.localeCompare(v, undefined, { sensitivity: "base" }) === 0 || - f === "*" || - v === "*", - "less than": (f, v) => f.localeCompare(v, undefined, { numeric: true }) < 0, - "starts with": (f, v) => - f.toUpperCase().startsWith(v.toUpperCase()) || f === "*" || v === "*", + equals: (f, v) => collator.compare(f, v) === 0 || f === "*" || v === "*", + "starts with": (f, v) => f.toUpperCase().startsWith(v.toUpperCase()), empty: (f) => !f, "not empty": (f) => !!f, + "less than": (f, v) => collatorNumber.compare(f, v) < 0, + "greater than": (f, v) => collatorNumber.compare(f, v) > 0, + "less or equal": (f, v) => collatorNumber.compare(f, v) <= 0, + "greater or equal": (f, v) => collatorNumber.compare(f, v) >= 0, }; /** Test a row with a filter @@ -9307,104 +9652,63 @@ class Data { constructor(rows) { this.contentRows = (Array.isArray(rows) && rows) || []; this.allrows = this.contentRows; - /** @type {string[]} */ - this.allFields = []; + /** @type {Set} */ + this.allFields = new Set(); this.updateAllFields(); this.loadTime = new Date(); } updateAllFields() { - this.allFields = this.contentRows.reduce( - (previous, current) => - Array.from( - new Set([ - ...previous, - ...Object.keys(current).map((field) => "#" + field), - ]), - ), - [], - ); - this.clearFields = Object.fromEntries( - this.allFields.map((field) => [field.slice(1), null]), - ); + this.allFields = this.contentRows.reduce((previous, current) => { + for (const field of Object.keys(current)) { + previous.add("#" + field); + } + return previous; + }, new Set()); + this.clearFields = {}; + for (const field of this.allFields) { + this.clearFields[field.slice(1)] = null; + } } /** * Extract rows with the given filters * - * @param {ContentFilter[]} filters - each filter must return true - * @param {State} state - * @param {RowCache} [cache] + * @param {GridFilter[]} filters - each filter must return true * @param {boolean} [clearFields] - return null for undefined fields * @return {Rows} Rows that pass the filters */ - getMatchingRows(filters, state, cache, clearFields = true) { + getMatchingRows(filters, clearFields = true) { // all the filters must match the row - const boundFilters = filters.map((filter) => - Object.assign({}, filter, { - value: evalInContext(filter.value, { state }), - }), - ); - if (cache) { - const newKey = JSON.stringify(boundFilters); - if ( - cache.key == newKey && - cache.loadTime == this.loadTime && - cache.rows - ) { - cache.updated = false; - return cache.rows; - } - cache.key = newKey; - } + const boundFilters = filters.map((filter) => ({ + field: filter.field.value, + operator: filter.operator.value, + value: filter.value.value, + })); let result = this.allrows.filter((row) => boundFilters.every((filter) => match(filter, row)), ); if (clearFields) result = result.map((row) => ({ ...this.clearFields, ...row })); - if (cache) { - cache.rows = result; - cache.updated = true; - cache.loadTime = this.loadTime; - } - // console.log("gtr result", result); return result; } /** - * Test if any rows exist after filtering - * - * @param {ContentFilter[]} filters - * @param {State} state - * @param {RowCache} [cache] - * @return {Boolean} true if tag combination occurs - */ - hasMatchingRows(filters, state, cache) { - const boundFilters = filters.map((filter) => - Object.assign({}, filter, { - value: evalInContext(filter.value, { state }), - }), - ); - if (cache) { - const newKey = JSON.stringify(boundFilters); - if ( - cache.key == newKey && - cache.loadTime == this.loadTime && - cache.result - ) { - cache.updated = false; - return cache.result; - } - cache.key = newKey; - } + * Test if any rows exist after filtering + * + * @param {GridFilter[]} filters + * @param {EvalContext} context + * @return {Boolean} true if tag combination occurs + */ + hasMatchingRows(filters, context) { + const boundFilters = filters.map((filter) => ({ + field: filter.field.value, + operator: filter.operator.value, + value: filter.value.valueInContext(context), + })); const result = this.allrows.some((row) => boundFilters.every((filter) => match(filter, row)), ); - if (cache) { - cache.result = result; - cache.updated = true; - cache.loadTime = this.loadTime; - } return result; } @@ -9436,7 +9740,6 @@ let State$1 = class State { const persist = window.sessionStorage.getItem(this.persistKey); if (persist) { this.values = JSON.parse(persist); - // console.log("restored $tabControl", this.values["$tabControl"]); } } } @@ -9466,18 +9769,9 @@ let State$1 = class State { for (const key in patch) { this.updated.add(key); } - const oldValues = this.values; - this.values = o$1(oldValues, patch); - // see which values changed. - const allKeys = new Set([ - ...Object.keys(oldValues), - ...Object.keys(this.values), - ]); - const changed = new Set( - [...allKeys].filter((key) => oldValues[key] !== this.values[key]) - ); + this.values = o$1(this.values, patch); for (const callback of this.listeners) { - callback(changed); + callback(); } if (this.persistKey) { @@ -9502,10 +9796,10 @@ let State$1 = class State { */ clear() { const userState = Object.keys(this.values).filter((name) => - name.startsWith("$") + name.startsWith("$"), ); const patch = Object.fromEntries( - userState.map((name) => [name, undefined]) + userState.map((name) => [name, undefined]), ); this.update(patch); } @@ -9517,16 +9811,18 @@ let State$1 = class State { this.listeners.add(callback); } - /** return true if the given state has been upated since last you asked + /** return true if the given state has been upated on this cycle * @param {string} stateName * @returns boolean */ hasBeenUpdated(stateName) { - const result = this.updated.has(stateName); - if (result) { - this.updated.delete(stateName); - } - return result; + return this.updated.has(stateName); + } + + /** clear updated for the next cycle + */ + clearUpdated() { + this.updated.clear(); } /** define - add a named state to the global system state @@ -9543,11 +9839,11 @@ let State$1 = class State { * @returns {string} input with $name replaced by values from the state */ interpolate(input) { - let result = input.replace(/(\$[a-zA-Z0-9_.]+)/, (_, name) => - this.get(name) + let result = input.replace(/(\$[a-zA-Z0-9_.]+)/g, (_, name) => + this.get(name), ); - result = result.replace(/\$\{([a-zA-Z0-9_.]+)}/, (_, name) => - this.get("$" + name) + result = result.replace(/\$\{([a-zA-Z0-9_.]+)}/g, (_, name) => + this.get("$" + name), ); return result; } @@ -9571,15 +9867,15 @@ class Stack extends TreeBase { "Button", ]; - /** @returns {Hole|Hole[]} */ + /** @returns {Hole} */ template() { /** return the scale of the child making sure it isn't zero or undefined. - * @param {TreeBase} child + * @param {TreeBase } child * @returns {number} */ function getScale(child) { const SCALE_MIN = 0.0; - let scale = +child.props.scale; + let scale = +child["scale"]?.value; if (!scale || scale < SCALE_MIN) { scale = SCALE_MIN; } @@ -9590,16 +9886,17 @@ class Stack extends TreeBase { 0, ); const empty = this.children.length && scaleSum ? "" : "empty"; - const dimension = this.props.direction == "row" ? "width" : "height"; + const direction = this.direction.value; + const dimension = direction == "row" ? "width" : "height"; return this.component( { - classes: [this.props.direction, empty], + classes: [this.CSSClasses(direction, empty)], style: { - backgroundColor: this.props.background, + backgroundColor: this.background.value, }, }, - this.children.map( + html`${this.children.map( (child) => html`
    ${child.safeTemplate()}
    `, - ), + )}`, ); } } @@ -9632,101 +9929,247 @@ class Page extends Stack { } Stack.register(Page, "Page"); -class GridFilter extends TreeBase { - field = new Field({ hiddenLabel: true }); - operator = new Select(Object.keys(comparators), { hiddenLabel: true }); - value = new String$1("", { hiddenLabel: true }); +/** Gather Slots code into one module + * + * Slots are coded in strings like $$ kind = value $$ where kind is used + * to access the Content for choices and value is the initial and default value. + * + */ - /** move my parent instead of me. - * @param {boolean} up - */ - moveUpDown(up) { - this.parent?.moveUpDown(up); + +/** Slot descriptor + * @typedef {Object} Slot + * @property {string} name - the name of the slot list + * @property {string} value - the current value + */ + +/** Editor state + * @typedef {Object} Editor + * @property {"editor"} type + * @property {string} message - the message text + * @property {Slot[]} slots - slots if any + * @property {number} slotIndex - slot being edited + * @property {string} slotName - current slot type + * @property {string} value - value stripped of any markup + */ + +/** + * Edit slots markup to replace with highlighed values + * @param {string|Editor} msg - the string possibly containing $$ kind = value $$ markup + * @returns {Hole[]} - formatted string + */ +function formatSlottedString(msg) { + if (typeof msg === "string") { + return msg.split(/(\$\$.*?\$\$)/).map((part) => { + const m = part.match(/\$\$(?.*?)=(?.*?)\$\$/); + if (m) { + return html`${m.groups?.value || ""}`; + } else { + return html`${part}`; + } + }); + } else if (typeof msg === "object" && msg.type === "editor") { + let editor = msg; + // otherwise it is an editor object + // highlight the current slot + let i = 0; + return editor.message.split(/(\$\$.*?\$\$)/).map((part) => { + const m = part.match(/\$\$(?.*?)=(?.*?)\$\$/); + if (m) { + if (i === editor.slotIndex) { + // highlight the current slot + return html`${editor.slots[i++].value}`; + } else { + return html`${editor.slots[i++].value.replace(/^\*/, "")}`; + } + } + return html`${part}`; + }); + } else { + return []; } +} - /** Format the settings - * @param {GridFilter[]} filters - * @return {Hole} +/** Edit slots markup to replace with values + * @param {string|Editor} value + * @returns {string} + */ +function toString(value) { + value ??= ""; + if (typeof value === "string") { + // strip any slot markup + value = value.replaceAll(/\$\$(?.*?)=(?.*?)\$\$/g, "$2"); + return value; + } else if (typeof value === "object" && value.type === "editor") { + let editor = value; + // otherwise it is an editor object + let i = 0; + const parts = editor.message.split(/(\$\$.*?\$\$)/).map((part) => { + const m = part.match(/\$\$(?.*?)=(?.*?)\$\$/); + if (m) { + return editor.slots[i++].value.replace(/^\*/, ""); + } + return part; + }); + return parts.join(""); + } + return value.toString(); +} + +/** We need to keep some additional state around to enable editing slotted messages. + * + * These functions are used in Updates to manipulate the state. + */ + +/** Test if this message has slots + * @param {string|Editor} message + * @returns {boolean} + */ +function hasSlots(message) { + if (message instanceof Object && message.type === "editor") { + return message.slots.length > 0; + } else if (typeof message == "string") return message.indexOf("$$") >= 0; + return false; +} + +/** initialize the editor + * @param {String} message + * @returns Editor + */ +function init(message) { + message = message || ""; + const slots = Array.from( + message.matchAll(/\$\$(?.*?)=(?.*?)\$\$/g), + ).map((m) => m.groups); + let result = { + type: "editor", + message, + slots, + slotIndex: 0, + slotName: (slots[0] && slots[0].name) || "", + }; + return result; +} + +/** cancel slot editing + * @returns Editor + */ +function cancel() { + return { + type: "editor", + message: "", + slots: [], + slotIndex: 0, + slotName: "", + }; +} + +/** update the value of the current slot + * @param {String} message + */ +function update(message) { + message ??= ""; + /** @param {Editor} old + * @returns {Editor|string} */ - static FilterSettings(filters) { - const table = []; - if (filters.length > 0) { - table.push(html` - - - - - - - - - - - ${filters.map( - (filter, index) => html` - - - - - - - `, - )} - -
    #FieldOperatorValue
    ${index + 1}${filter.field.input()}${filter.operator.input()}${filter.value.input()}
    - `); + return (old) => { + // copy the slots from the old value + if (!old || !old.slots) { + return ""; + } + const slots = [...old.slots]; + let slotIndex = old.slotIndex; + // replace the current one + if (message.startsWith("*")) { + slots[slotIndex].value = message; + } else { + if (slots[slotIndex].value.startsWith("*")) { + slots[slotIndex].value = `${slots[slotIndex].value} ${message}`; + } else { + slots[slotIndex].value = message; + } + slotIndex++; + if (slotIndex >= slots.length) { + Globals.actions.queueEvent("okSlot", "press"); + } } - return html`
    - Filters - ${table} -
    `; - } + return o$1(old, { + slots, + slotIndex, + slotName: slots[slotIndex]?.name, + }); + }; +} - /** Convert from Props to values for data module - * @param {GridFilter[]} filters +/** advance to the next slot + */ +function nextSlot() { + /** @param {Editor} old */ - static toContentFilters(filters) { - return filters.map((child) => ({ - field: child.field.value, - operator: child.operator.value, - value: child.value.value, - })); - } + return (old) => { + if (!old || !old.slots) return; + const slotIndex = old.slotIndex + 1; + if (slotIndex >= old.slots.length) { + Globals.actions.queueEvent("okSlot", "press"); + } + return o$1(old, { slotIndex, slotName: old.slots[slotIndex]?.name }); + }; } -TreeBase.register(GridFilter, "GridFilter"); -/** - * Edit slots markup to replace with values - * @param {string} msg - the string possibly containing $$ kind = value $$ markup - * @param {string[]} slotValues - values to replace slots - * @returns {Hole[]} - formatted string +/** duplicate the current slot */ -function formatSlottedString(msg, slotValues = []) { - let slotIndex = 0; - msg = msg || ""; - return msg.split(/(\$\$.*?\$\$)/).map((part) => { - const m = part.match(/\$\$(?.*?)=(?.*?)\$\$/); - if (m) { - return html`${slotValues[slotIndex++] || m.groups?.value || ""}`; +function duplicate() { + /** @param {Editor} old + */ + return (old) => { + if (!old || !old.slots) return; + const matches = Array.from( + old.message.matchAll(/\$\$(?.*?)=(?.*?)\$\$/g), + ); + const current = matches[old.slotIndex]; + if (current !== undefined && current.index !== undefined) { + const message = + old.message.slice(0, current.index) + + current[0] + + " and " + + current[0] + + old.message.slice(current.index + current[0].length); + const slots = [ + ...old.slots.slice(0, old.slotIndex + 1), + { ...old.slots[old.slotIndex] }, // copy it + ...old.slots.slice(old.slotIndex + 1), + ]; + return o$1(old, { + message, + slots, + }); } else { - return html`${part}`; + return old; } - }); + }; } -/** - * Conditionally show an indicator with a title - * - * @param {boolean} toggle - * @param {string} title - * @returns {Hole} +/** Get the slot name + * @param {string|Editor} message + * @returns string; */ -function toggleIndicator(toggle, title) { - if (toggle) { - return html``; - } else { - return html``; - } +function slotName(message) { + if (typeof message === "object" && message.type === "editor") { + return message.slotName; + } + return ""; +} +{ + Functions["slots"] = { + init, + cancel, + update, + hasSlots, + duplicate, + nextSlot, + slotName, + toString, + }; } const grid = ''; @@ -9753,11 +10196,16 @@ function imageOrVideo(src, title, onload = null) { ?loop=${options.indexOf("loop") >= 0} ?autoplay=${options.indexOf("autoplay") >= 0} ?muted=${options.indexOf("muted") >= 0} - onload=${onload} + @load=${onload} />`; } else { // image - return html``; + return html``; } } @@ -9776,30 +10224,28 @@ class Grid extends TreeBase { page = 1; pageBoundaries = { 0: 0 }; //track starting indices of pages - /** - * @type {Object} - * @property {string} key - */ - cache = {}; /** @param {Row} item */ gridCell(item) { - const { name } = this.props; + const name = this.name.value; + /** @type {Hole[]} */ let content; let msg = formatSlottedString(item.label || ""); if (item.symbol) { - content = html`
    -
    - ${imageOrVideo(item.symbol, item.label || "")} -
    ${msg}
    -
    -
    `; + content = [ + html`
    +
    + ${imageOrVideo(item.symbol, item.label || "")} +
    ${msg}
    +
    +
    `, + ]; } else { content = msg; } return html``; }); return this.component( {}, html`
    - ${(this.props.label && html`${this.props.label}`) || - this.empty} + ${(radioLabel && [html`${radioLabel}`]) || []} ${choices}
    `, ); } - get name() { - return this.props.name || this.props.label || this.props.stateName; - } - settingsDetails() { - const props = this.propsAsProps; + const props = this.props; const inputs = Object.values(props).map((prop) => prop.input()); const filters = this.filterChildren(GridFilter); const editFilters = !filters.length - ? this.empty - : GridFilter.FilterSettings(filters); + ? [] + : [GridFilter.FilterSettings(filters)]; const options = this.filterChildren(Option$1); const editOptions = html`
    Options - +
    @@ -10365,11 +10599,11 @@ class Radio extends TreeBase {
    #
    `; - return html`
    ${editFilters}${editOptions}${inputs}
    `; + return [html`
    ${editFilters}${editOptions}${inputs}
    `]; } settingsChildren() { - return this.empty; + return html`
    `; } } TreeBase.register(Radio, "Radio"); @@ -10384,10 +10618,10 @@ class Gap extends TreeBase { return this.component( { style: styleString({ - backgroundColor: this.props.background, + backgroundColor: this.background.value, }), }, - this.empty + html`
    `, ); } } @@ -10437,7 +10671,7 @@ function safeRender(id, component) { class TabControl extends TreeBase { stateName = new String$1("$tabControl"); - background = new String$1(""); + background = new Color(""); scale = new Float(6); tabEdge = new Select(["bottom", "top", "left", "right", "none"], { defaultValue: "top", @@ -10455,23 +10689,23 @@ class TabControl extends TreeBase { template() { const { state } = Globals; const panels = this.children; - let activeTabName = state.get(this.props.stateName); + let activeTabName = state.get(this.stateName.value); // collect panel info panels.forEach((panel, index) => { - panel.tabName = state.interpolate(panel.props.name); // internal name - panel.tabLabel = state.interpolate(panel.props.label || panel.props.name); // display name + panel.tabName = state.interpolate(panel.name.value); // internal name + panel.tabLabel = state.interpolate(panel.label.value || panel.name.value); // display name if (index == 0 && !activeTabName) { activeTabName = panel.tabName; - state.define(this.props.stateName, panel.tabName); + state.define(this.stateName.value, panel.tabName); } panel.active = activeTabName == panel.tabName || panels.length === 1; }); - let buttons = [this.empty]; - if (this.props.tabEdge != "none") { + let buttons = []; + if (this.tabEdge.value != "none") { buttons = panels - .filter((panel) => panel.props.label != "UNLABELED") + .filter((panel) => panel.label.value != "UNLABELED") .map((panel) => { - const color = panel.props.background; + const color = panel.background.value; const buttonStyle = { backgroundColor: color, }; @@ -10479,14 +10713,14 @@ class TabControl extends TreeBase { `, @@ -10766,14 +11001,14 @@ class VSD extends TreeBase { } settingsDetails() { - const props = this.propsAsProps; + const props = this.props; const inputs = Object.values(props).map((prop) => prop.input()); const filters = GridFilter.FilterSettings(this.children); - return html`
    ${filters}${inputs}
    `; + return [html`
    ${filters}${inputs}
    `]; } settingsChildren() { - return this.empty; + return html`
    `; } } TreeBase.register(VSD, "VSD"); @@ -10787,23 +11022,24 @@ class Button extends TreeBase { scale = new Float(1); template() { - const style = styleString({ backgroundColor: this.props.background }); - const { name, label } = this.props; + const style = styleString({ backgroundColor: this.background.value }); + const name = this.name.value; + const label = this.label.value; return this.component( {}, html`` + `, ); } @@ -10818,6 +11054,9 @@ const monitor = ''; class Monitor extends TreeBase { template() { const { state, actions: rules } = Globals; + const stateKeys = [ + ...new Set([...Object.keys(state.values), ...accessed.keys()]), + ].sort(); const s = html` @@ -10826,15 +11065,19 @@ class Monitor extends TreeBase { - ${Object.keys(state.values) + ${stateKeys .filter((key) => key.startsWith("$")) .map((key) => { - const value = state.get(key).toString(); + let value = state.get(key); + value = toString(value); let clamped = value.slice(0, 30); if (value.length > clamped.length) { clamped += "..."; } - return html` + return html``; @@ -10843,6 +11086,12 @@ class Monitor extends TreeBase {
    ${key} ${clamped}
    `; const row = rules.last.data || {}; + const rowAccessedKeys = [...accessed.keys()] + .filter((key) => key.startsWith("_")) + .map((key) => key.slice(1)); + const rowKeys = [ + ...new Set([...Object.keys(row), ...rowAccessedKeys]), + ].sort(); const f = html` @@ -10851,9 +11100,12 @@ class Monitor extends TreeBase { - ${Object.keys(row).map((key) => { + ${rowKeys.map((key) => { const value = row[key]; - return html` + return html``; @@ -10862,7 +11114,7 @@ class Monitor extends TreeBase {
    #${key} ${value}
    `; return html` + `; + }); + return this.component( + { classes: ["top", "tabcontrol"] }, + html` +
      + ${buttons} +
    +
    + ${panels.map((panel) => panel.settings())} +
    + ${colorNamesDataList()} + `, + ); } /** @@ -13090,7 +13368,7 @@ class Designer extends TabControl { */ switchTab(tabName) { callAfterRender(() => this.restoreFocus()); - super.switchTab(tabName); + Globals.state.update({ [this.stateName.value]: tabName }); } /** @@ -13106,9 +13384,11 @@ class Designer extends TabControl { for (const element of panel.querySelectorAll("[aria-selected]")) { element.removeAttribute("aria-selected"); } - const id = event.target.closest("[id]")?.id || ""; - this.currentPanel.lastFocused = id; - event.target.setAttribute("aria-selected", "true"); + if (panel.contains(event.target)) { + const id = event.target.closest("[id]")?.id || ""; + this.currentPanel.lastFocused = id; + event.target.setAttribute("aria-selected", "true"); + } if (this.currentPanel.name.value == "Layout") { this.currentPanel.highlight(); @@ -13147,15 +13427,8 @@ class Designer extends TabControl { elem = document.querySelector(`[id^=${prefix}]`); } } - // console.log( - // "restore focus", - // elem, - // this.currentPanel.lastFocused, - // this.currentPanel - // ); if (elem) elem.focus(); } else { - // console.log("restoreFocus else path"); const panelNode = document.getElementById(this.currentPanel.id); if (panelNode) { const focusable = /** @type {HTMLElement} */ ( @@ -13168,10 +13441,8 @@ class Designer extends TabControl { if (focusable) { focusable.focus(); - // console.log("send focus to element in panel"); } else { panelNode.focus(); - // console.log("send focus to empty panel"); } } } @@ -13185,7 +13456,7 @@ class Designer extends TabControl { if (!this.currentPanel) return; if ( event.target instanceof HTMLButtonElement && - event.target.matches("#designer .tabcontrol .buttons button") + event.target.matches("#designer .buttons button") ) { this.tabButtonKeyHandler(event); } else { @@ -13213,14 +13484,16 @@ class Designer extends TabControl { callAfterRender(() => Globals.designer.restoreFocus()); Globals.state.update(); } else { + event.preventDefault(); // get the components on this panel // todo expand this to all components - const components = [...document.querySelectorAll(".panels .settings")]; + const components = [ + ...document.querySelectorAll(".DesignerPanel.ActivePanel .settings"), + ]; // determine which one contains the focus const focusedComponent = document.querySelector( - '.panels .settings:has([aria-selected="true"]):not(:has(.settings [aria-selected="true"]))', + '.DesignerPanel.ActivePanel .settings:has([aria-selected="true"]):not(:has(.settings [aria-selected="true"]))', ); - console.log({ event, focusedComponent }); if (!focusedComponent) return; // get its index const index = components.indexOf(focusedComponent); @@ -13250,10 +13523,10 @@ class Designer extends TabControl { */ tabButtonKeyHandler({ key }) { const tabButtons = /** @type {HTMLButtonElement[]} */ ([ - ...document.querySelectorAll("#designer .tabcontrol .buttons button"), + ...document.querySelectorAll("#designer .buttons button"), ]); const focused = /** @type {HTMLButtonElement} */ ( - document.querySelector("#designer .tabcontrol .buttons button:focus") + document.querySelector("#designer .buttons button:focus") ); if (key == "Escape") { Globals.designer.restoreFocus(); @@ -13325,7 +13598,18 @@ class Designer extends TabControl { } TreeBase.register(Designer, "Designer"); -class DesignerPanel extends TabPanel { +class DesignerPanel extends TreeBase { + name = new String$1(""); + label = new String$1(""); + + /** @type {Designer | null} */ + parent = null; + + active = false; + tabName = ""; + tabLabel = ""; + lastFocused = ""; + // where to store in the db static tableName = ""; // default value if it isn't found @@ -13337,9 +13621,6 @@ class DesignerPanel extends TabPanel { return this.constructor.tableName; } - /** @type {string[]} */ - allowedChildren = []; - /** * Load a panel from the database. * @@ -13363,6 +13644,35 @@ class DesignerPanel extends TabPanel { return this.create(expected); } + /** + * Render the details of a components settings + */ + settingsDetails() { + const caption = this.active ? "Active" : "Activate"; + let details = super.settingsDetails(); + if (!Array.isArray(details)) details = [details]; + return [ + ...details, + html``, + ]; + } + + highlight() {} + /** * An opportunity to upgrade the format if needed * @param {any} obj @@ -13389,6 +13699,17 @@ class DesignerPanel extends TabPanel { Globals.restart(); } } + + /** @param {string[]} classes + * @returns {string} + */ + CSSClasses(...classes) { + classes.push("DesignerPanel"); + if (this.active) { + classes.push("ActivePanel"); + } + return super.CSSClasses(...classes); + } } const content = ''; @@ -13424,14 +13745,14 @@ async function wait(promise, message = "Please wait") { html`

    ${e.message}

    -
    ` +
    `, ); }); } @@ -13523,7 +13844,7 @@ async function saveContent(name, rows, type) { const workbook = XLSX.utils.book_new(); for (const sheetName of sheetNames) { let sheetRows = rows.filter( - (row) => sheetName == (row.sheetName || "sheet1") + (row) => sheetName == (row.sheetName || "sheet1"), ); if (type != "csv") { sheetRows = sheetRows.map((row) => { @@ -13547,7 +13868,7 @@ class Content extends DesignerPanel { // list the names that are checked const toDelete = [ ...document.querySelectorAll( - "#ContentMedia input[type=checkbox]:checked" + "#ContentMedia input[type=checkbox]:checked", ), ].map((element) => { // clear the checks as we go @@ -13568,7 +13889,7 @@ class Content extends DesignerPanel { /** Check or uncheck all the media file checkboxes */ selectAll({ target }) { for (const element of document.querySelectorAll( - '#ContentMedia input[type="checkbox"]' + '#ContentMedia input[type="checkbox"]', )) { const checkbox = /** @type {HTMLInputElement} */ (element); checkbox.checked = target.checked; @@ -13577,45 +13898,39 @@ class Content extends DesignerPanel { settings() { const data = Globals.data; - return html`
    -

    Content

    -

    - ${data.allrows.length} rows with these fields: - ${String(data.allFields).replaceAll(",", ", ")} -

    -

    Media files

    - - -
      - ${(/** @type {HTMLElement} */ comment) => { - /* I'm experimenting here. db.listImages() is asynchronous but I don't want - * to convert this entire application to the async version of uhtml. Can I - * inject content asynchronously using the callback mechanism he provides? - * As I understand it, when an interpolation is a function he places a - * comment node in the output and passes it to the function. - * I am using the comment node to find the parent container, then rendering - * the asynchronous content when it becomes available being careful to keep - * the comment node in the output. It seems to work, is it safe? - */ - db.listMedia().then((names) => { - const list = names.map( - (name) => - html`
    1. - -
    2. ` - ); - if (comment.parentNode) - render(comment.parentNode, html`${comment}${list}`); - }); - }} -
    + return html`
    +
    +

    Content

    +

    + ${data.allrows.length} rows with these fields: + ${String([...data.allFields].sort()).replaceAll(",", ", ")} +

    +

    Media files

    + + +
      { + db.listMedia().then((names) => { + const list = names.map( + (name) => + html`
    1. + +
    2. `, + ); + render(ol, html`${list}`); + }); + }} + >
    +
    `; } } @@ -13660,7 +13975,9 @@ class Logger extends TreeBase { template() { const { state, actions } = Globals; - const { stateName, logUntil, logThese } = this.props; + const stateName = this.stateName.value; + const logUntil = this.logUntil.value; + const logThese = this.logThese.value; const logging = !!state.get(stateName) && logUntil && new Date() < new Date(logUntil); const getValue = access(state, actions.last.data); @@ -13701,6 +14018,7 @@ class Logger extends TreeBase { } init() { + super.init(); this.onUpdate(); } @@ -13808,10 +14126,10 @@ class Layout extends DesignerPanel { settings() { return html`
    { + @keydown=${(/** @type {KeyboardEvent} */ event) => { const { key, ctrlKey } = event; if ((key == "H" || key == "h") && ctrlKey) { event.preventDefault(); @@ -13834,11 +14152,10 @@ class Layout extends DesignerPanel { /** @param {Object} obj */ function oldToNew(obj) { if ("type" in obj) { - // console.log("upgrade", obj); // convert to new representation const newObj = { children: obj.children.map((/** @type {Object} */ child) => - oldToNew(child) + oldToNew(child), ), }; if ("filters" in obj.props) { @@ -13854,7 +14171,6 @@ class Layout extends DesignerPanel { const { filters, ...props } = obj.props; newObj.props = props; obj = newObj; - // console.log("upgraded", obj); } return obj; } @@ -13886,7 +14202,7 @@ class Layout extends DesignerPanel { element.removeAttribute("highlight"); } // find the selection in the panel - let selected = document.querySelector("[aria-selected]"); + let selected = document.querySelector("#UI [aria-selected]"); if (!selected) return; selected = selected.closest("[id]"); if (!selected) return; @@ -13945,7 +14261,7 @@ const actions = ''; class Actions extends DesignerPanel { name = new String$1("Actions"); - scale = new Integer(1); + scale = new Float(1); allowedChildren = ["Action"]; @@ -13961,7 +14277,7 @@ class Actions extends DesignerPanel { last = { /** @type {Action|Null} */ rule: null, - /** @type {Object} */ + /** @type {Row} */ data: {}, /** @type {string} */ event: "", @@ -14003,20 +14319,19 @@ class Actions extends DesignerPanel { this.last = { origin, event, data, rule: null }; // first for the event then for any that got queued. for (;;) { - const context = { ...Functions, state: Globals.state, ...data }; for (const rule of this.children) { - if (origin != rule.props.origin && rule.props.origin != "*") { + if (origin != rule.origin.value && rule.origin.value != "*") { continue; } const result = rule.conditions.every((restriction) => - restriction.Condition.eval(context), + restriction.Condition.valueInContext({ data }), ); if (result) { this.last.rule = rule; const patch = Object.fromEntries( rule.updates.map((update) => [ - update.props.stateName, - update.newValue.eval(context), + update.stateName.value, + update.newValue.valueInContext({ data }), ]), ); Globals.state.update(patch); @@ -14056,13 +14371,13 @@ class Actions extends DesignerPanel { const result = new Set(); for (const rule of this.children) { for (const condition of rule.conditions) { - for (const [match] of condition.props.Condition.matchAll(/\$\w+/g)) { + for (const [match] of condition.Condition.text.matchAll(/\$\w+/g)) { result.add(match); } } for (const update of rule.updates) { - result.add(update.props.stateName); - for (const [match] of update.newValue.value.matchAll(/\$\w+/g)) { + result.add(update.stateName.value); + for (const [match] of update.newValue.text.matchAll(/\$\w+/g)) { result.add(match); } } @@ -14073,7 +14388,11 @@ class Actions extends DesignerPanel { settings() { const { actions } = Globals; const rule = this.last.rule; - return html`
    + return html`
    @@ -14181,6 +14500,7 @@ let Action$1 = class Action extends TreeBase { } init() { + super.init(); if (this.children.length == 0) { // add a condition and update if none are present TreeBase.create(ActionCondition, this, {}).init(); @@ -14191,7 +14511,7 @@ let Action$1 = class Action extends TreeBase { TreeBase.register(Action$1, "Action"); class ActionCondition extends TreeBase { - Condition = new Expression("", { + Condition = new Conditional("", { hiddenLabel: true, valueWhenEmpty: true, }); @@ -14277,14 +14597,15 @@ function focusPanel() { function focusTabs() { clearHints(); const currentTab = /** @type {HTMLButtonElement} */ ( - document.querySelector("#designer .tabcontrol .buttons button[active]") + document.querySelector("#designer #tabs .buttons button[active]") ); + console.log({ currentTab }); if (currentTab) { currentTab.focus(); return; } const tabs = /** @type {HTMLButtonElement[]} */ ([ - ...document.querySelectorAll(".designing .tabcontrol .buttons button"), + ...document.querySelectorAll(".designing #designer #tabs .buttons button"), ]); if (!tabs.length) return; tabs[0].focus(); @@ -14373,7 +14694,7 @@ class Customize extends TreeBase { template() { return html``; } } @@ -14414,7 +14735,10 @@ class imgFromDb extends HTMLImageElement { // if it contains a slash treat it like an external url // if not, fetch it from the db if (url && url.indexOf("/") < 0) url = await db.getMediaURL(url); - if (url) this.src = url; + if (url) { + this.src = url; + this.dispatchEvent(new Event("load", { bubbles: true })); + } } } customElements.define("img-db", imgFromDb, { extends: "img" }); @@ -16801,6 +17125,21 @@ const defaultMethods = { const method = ''; +/** + * Conditionally show an indicator with a title + * + * @param {boolean} toggle + * @param {string} title + * @returns {Hole} + */ +function toggleIndicator(toggle, title) { + if (toggle) { + return html``; + } else { + return html``; + } +} + // allow tearing down handlers when changing configurations const stop$ = new Subject(); @@ -16834,7 +17173,7 @@ class MethodChooser extends DesignerPanel { } settings() { - return html`
    + return html`
    ${this.unorderedChildren()}
    `; } @@ -16910,7 +17249,7 @@ class Method extends TreeBase { PointerEnterDebounce = new Float(0, { label: "Pointer enter/leave" }); PointerDownDebounce = new Float(0, { label: "Pointer down/up" }); Key = new UID(); - Active = new Boolean$1(false); + Active = new OneOfGroup(false, { group: "ActiveMethod" }); allowedChildren = [ "Timer", @@ -17011,23 +17350,27 @@ class Method extends TreeBase { `, ] : []; - return html`
    - ${Name.input()} ${Active.input()} ${Pattern.input()} ${Debounce} - ${timers.length > 0 - ? html`
    - Timers - ${this.unorderedChildren(timers)} -
    ` - : this.empty} -
    - Handlers - ${this.orderedChildren(this.handlers)} -
    -
    `; + return [ + html`
    + ${Name.input()} ${Active.input()} ${Pattern.input()} ${Debounce} + ${timers.length > 0 + ? [ + html`
    + Timers + ${this.unorderedChildren(timers)} +
    `, + ] + : []} +
    + Handlers + ${this.orderedChildren(this.handlers)} +
    +
    `, + ]; } settingsChildren() { - return this.empty; + return html`
    `; } /** Configure the rxjs pipelines to implement this method */ @@ -17132,7 +17475,9 @@ class Handler extends TreeBase { test(event) { return ( this.Signal.value == event.type && - this.conditions.every((condition) => condition.eval(event.access)) + this.conditions.every((condition) => + condition.eval({ data: event.access }), + ) ); } @@ -17145,7 +17490,6 @@ class Handler extends TreeBase { /** @param {EventLike} event */ respond(event) { - // console.log("handler respond", event.type, this.responses); const method = this.nearestParent(Method); if (!method) return; method.cancelTimers(); @@ -17156,16 +17500,16 @@ class Handler extends TreeBase { } class HandlerCondition extends TreeBase { - Condition = new Expression("", { hiddenLabel: true }); + Condition = new Conditional("", { hiddenLabel: true }); settings() { const { Condition } = this; return html`
    ${Condition.input()}
    `; } - /** @param {Object} context */ + /** @param {EvalContext} context */ eval(context) { - return this.Condition.eval(context); + return this.Condition.valueInContext(context); } /** move my parent instead of me. @@ -17188,9 +17532,9 @@ class HandlerKeyCondition extends HandlerCondition { return html`
    ${Key.input()}
    `; } - /** @param {Object} context */ + /** @param {EvalContext} context */ eval(context) { - return this.Key.value == context.key; + return this.Key.value == context.data.key; } } TreeBase.register(HandlerKeyCondition, "HandlerKeyCondition"); @@ -17220,7 +17564,7 @@ class HandlerResponse extends TreeBaseSwitchable { } subTemplate() { - return this.empty; + return html`
    `; } /** move my parent instead of me. @@ -17405,7 +17749,7 @@ function cueTarget(target, defaultValue) { } function clearCues() { - for (const element of document.querySelectorAll("[cue]")) { + for (const element of document.querySelectorAll("#UI [cue]")) { element.removeAttribute("cue"); const video = element.querySelector("video"); if (video && !video.hasAttribute("autoplay")) { @@ -17448,7 +17792,6 @@ class Group { if (!value) { value = this.access.Cue; } - // console.log("cue group", this); for (const member of this.members) { if (member instanceof HTMLButtonElement) cueTarget(member, value); else if (member instanceof Group) member.cue(value); @@ -17497,7 +17840,7 @@ class PatternList extends DesignerPanel { static defaultValue = defaultPatterns; settings() { - return html`
    + return html`
    ${this.unorderedChildren()}
    `; } @@ -17562,7 +17905,7 @@ class PatternManager extends PatternBase { Name = new String$1("a pattern"); Key = new UID(); Active = new OneOfGroup(false, { - name: "pattern-active", + group: "pattern-active", label: "Default", }); @@ -17575,23 +17918,25 @@ class PatternManager extends PatternBase { settingsDetails() { const { Cue, Name, Active } = this; - return html` -
    - ${Name.input()} ${Active.input()} ${Cue.input()} - - ${this.orderedChildren()} -
    - `; + return [ + html` +
    + ${Name.input()} ${Active.input()} ${Cue.input()} + + ${this.orderedChildren()} +
    + `, + ]; } settingsChildren() { - return this.empty; + return html`
    `; } /** @@ -17610,7 +17955,7 @@ class PatternManager extends PatternBase { } } } - if (members.length > 0) return [new Group(members, this.props)]; + if (members.length > 0) return [new Group(members, this.propsAsObject)]; else return []; } @@ -17639,9 +17984,8 @@ class PatternManager extends PatternBase { } else { members = buttons; } - this.targets = new Group(members, { ...this.props, Cycles: 1 }); - // console.log("refresh", this.targets); - this.stack = [{ group: this.targets, index: -1 }]; + this.targets = new Group(members, { ...this.propsAsObject, Cycles: 1 }); + this.stack = [{ group: this.targets, index: 0 }]; this.cue(); // stop any running animations @@ -17660,12 +18004,10 @@ class PatternManager extends PatternBase { next() { const top = this.stack[0]; - // console.log("next", { top }, this); if (top.index < top.group.length - 1) { top.index++; } else if (this.stack.length > 1) { this.stack.shift(); - // console.log("stack pop"); } else if (this.stack.length == 1) { top.index = 0; } else ; @@ -17675,7 +18017,6 @@ class PatternManager extends PatternBase { /** @param {EventLike} event */ activate(event) { const target = event.target; - // console.log("activate", event); if (target) { // adjust the stack to accomodate the target for (;;) { @@ -17683,37 +18024,29 @@ class PatternManager extends PatternBase { const newIndex = top.group.members.indexOf(target); if (newIndex >= 0) { top.index = newIndex; - // console.log("set index", top.index); break; } if (this.stack.length == 1) { top.index = 0; - // console.log("not found"); break; } else { this.stack.shift(); - // console.log("pop stack"); } } } - // console.log("stack", this.stack); let current = this.current; if (!current) return; if (current instanceof Group) { - // console.log("activate group", current, this.stack); while (current.length == 1 && current.members[0] instanceof Group) { current = current.members[0]; } // I need to work out the index here. Should be the group under the pointer this.stack.unshift({ group: current, index: event?.groupIndex || 0 }); - // console.log("push stack", this.current, this.stack); } else if (current instanceof HTMLButtonElement) { if (current.hasAttribute("click")) { - current.click(); + current.dispatchEvent(new Event("Activate")); } else { const name = current.dataset.ComponentName; - // console.log("activate button", current); - // console.log("applyRules", name, current.access); Globals.actions.applyRules(name || "", "press", current.dataset); } } @@ -17728,7 +18061,6 @@ class PatternManager extends PatternBase { cue() { this.clearCue(); const current = this.current; - // console.log("cue current", current); if (!current) return; this.cued = true; cueTarget(current, this.Cue.value); @@ -17761,7 +18093,6 @@ class PatternManager extends PatternBase { event.access = event.target.dataset; } if (!event.target) return event; - // console.log("ret", this.stack); event.originalTarget = event.target; for (let level = 0; level < this.stack.length; level++) { const group = this.stack[level].group; @@ -17770,10 +18101,8 @@ class PatternManager extends PatternBase { let index = members.indexOf(event.target); if (index >= 0) { if (level === 0) { - // console.log("A", event); return event; } else { - // console.log("B", index); return { ...event, target: group, @@ -17788,7 +18117,6 @@ class PatternManager extends PatternBase { if (member instanceof Group) { let i = member.contains(event.target); if (i >= 0) { - // console.log("C", i); return { ...event, target: member, @@ -17880,7 +18208,7 @@ class PatternGroup extends PatternBase { } } } - if (members.length > 0) return [new Group(members, this.props)]; + if (members.length > 0) return [new Group(members, this.propsAsObject)]; else return []; } } @@ -17934,7 +18262,7 @@ class Filter extends PatternBase { .filter((target) => target.length > 0); } else { return input.filter((/** @type {HTMLButtonElement} */ button) => - this.Filter.eval(button.dataset), + this.Filter.valueInContext({ data: button.dataset }), ); } } @@ -18012,7 +18340,7 @@ class GroupBy extends PatternBase { ) .filter((target) => target.length > 0); } else { - const { GroupBy, Name, ...props } = this.props; + const { GroupBy, Name, ...props } = this.propsAsObject; const key = GroupBy.slice(1); const result = []; const groupMap = new Map(); @@ -18072,7 +18400,6 @@ class ResponderCue extends HandlerResponse { /** @param {EventLike} event */ respond(event) { - // console.log("cue", event); cueTarget(event.target, this.Cue.value); } } @@ -18112,7 +18439,7 @@ class ResponderStartTimer extends HandlerResponse { // hand the interval to Cue CSS for animations document.documentElement.style.setProperty( "--timerInterval", - `${timer.Interval.value}s` + `${timer.Interval.value}s`, ); timer.start(event); } @@ -18167,7 +18494,7 @@ class KeyHandler extends Handler { if (method.streams[streamName]) return; // construct debounced key event stream - const debounceInterval = method.KeyDebounce.valueAsNumber * 1000; + const debounceInterval = method.KeyDebounce.value * 1000; const keyDown$ = /** @type RxJs.Observable */ ( fromEvent(document, "keydown") ); @@ -18247,8 +18574,9 @@ class KeyHandler extends Handler { ); return ( event.type == signal && - (keys.length == 0 || keys.some((key) => key.eval(event.access))) && - conditions.every((condition) => condition.eval(event.access)) + (keys.length == 0 || + keys.some((key) => key.eval({ data: event.access }))) && + conditions.every((condition) => condition.eval({ data: event.access })) ); } } @@ -18273,18 +18601,13 @@ class PointerHandler extends Handler { allowedChildren = ["HandlerCondition", "HandlerResponse"]; Signal = new Select(pointerSignals); - SkipOnRedraw = new Boolean$1(false); settings() { const { conditions, responses, Signal } = this; - const skip = - this.Signal.value == "pointerover" - ? this.SkipOnRedraw.input() - : this.empty; return html`
    Pointer Handler - ${Signal.input()} ${skip} + ${Signal.input()}
    Conditions ${this.unorderedChildren(conditions)} @@ -18306,8 +18629,8 @@ class PointerHandler extends Handler { const pattern = method.pattern; - const inOutThreshold = method.PointerEnterDebounce.valueAsNumber * 1000; - const upDownThreshold = method.PointerDownDebounce.valueAsNumber * 1000; + const inOutThreshold = method.PointerEnterDebounce.value * 1000; + const upDownThreshold = method.PointerDownDebounce.value * 1000; /** * Get the types correct @@ -18399,7 +18722,6 @@ class PointerHandler extends Handler { current = over; if (current !== None) { emittedEvents.push({ ...current, type: "pointerover" }); - // console.log("push pointerover", events); } } else { current = over; @@ -18739,6 +19061,7 @@ class SocketHandler extends Handler { } init() { + super.init(); // set the signal value this.Signal.set("socket"); @@ -18834,12 +19157,10 @@ class SocketHandler extends Handler { URL: this.URL.value, state: Globals.state.values, }; - const filters = GridFilter.toContentFilters(this.filters); + const filters = this.filters; if (filters.length > 0) { const content = Globals.data.getMatchingRows( filters, - Globals.state, - undefined, // no cache for now false, // do not pass NULL for the undefined fields ); message["content"] = content; @@ -18892,7 +19213,7 @@ class TimerHandler extends Handler { const timer = method.timer(timerName); if (!timer) return; - const delayTime = 1000 * timer.Interval.valueAsNumber; + const delayTime = 1000 * timer.Interval.value; method.streams[streamName] = timer.subject$.pipe( switchMap((event) => event.type == "cancel" @@ -18996,32 +19317,31 @@ class CueList extends DesignerPanel { allowDelete = false; settings() { - return html`
    + return html`
    ${this.unorderedChildren()}
    `; } - /** @returns {Hole|Hole[]} */ template() { const result = this.children.map( (child) => html`` + `, ); if (this.children.length > 0) { const defaultCue = this.defaultCue; const defaultCSS = defaultCue.css.replaceAll( defaultCue.Key.value, - "DefaultCue" + "DefaultCue", ); result.push( html`` + `, ); } - return result; + return html`${result}`; } get cueMap() { @@ -19065,7 +19385,7 @@ class Cue extends TreeBaseSwitchable { Name = new String$1("a cue"); Key = new UID(); CueType = new TypeSelect(CueTypes); - Default = new OneOfGroup(false, { name: "DefaultCue" }); + Default = new OneOfGroup(false, { group: "DefaultCue" }); settingsSummary() { return html`

    @@ -19074,15 +19394,17 @@ class Cue extends TreeBaseSwitchable { } settingsDetails() { - return html`
    - ${this.Name.input()} ${this.Default.input()} ${this.CueType.input()} - ${this.subTemplate()} -
    `; + return [ + html`
    + ${this.Name.input()} ${this.Default.input()} ${this.CueType.input()} + ${this.subTemplate()} +
    `, + ]; } /** @returns {Hole[]} */ subTemplate() { - return [this.empty]; + return []; } get css() { @@ -19102,14 +19424,15 @@ class CueCss extends Cue { } get css() { - return this.Code.editedValue; + return Globals.state.interpolate(this.Code.editedValue); } onUpdate() { - this.Code.editCSS(this.props); + this.Code.editCSS(this.propsAsObject); } init() { + super.init(); this.onUpdate(); } } @@ -19120,11 +19443,14 @@ class CueOverlay extends Cue { Opacity = new Float(0.3); subTemplate() { - return [this.Color.input(), this.Opacity.input(), + return [ + this.Color.input(), + this.Opacity.input(), html`
    generated CSS
    ${this.css.replaceAll(this.Key.value, "$Key")}
    -
    `]; + `, + ]; } get css() { @@ -19163,12 +19489,16 @@ class CueFill extends Cue { Repeat = new Boolean$1(false); subTemplate() { - return [this.Color.input(), this.Opacity.input(), - this.Direction.input(), this.Repeat.input(), + return [ + this.Color.input(), + this.Opacity.input(), + this.Direction.input(), + this.Repeat.input(), html`
    generated CSS
    ${this.css.replaceAll(this.Key.value, "$Key")}
    -
    `]; + `, + ]; } get css() { @@ -19208,11 +19538,14 @@ class CueCircle extends Cue { Opacity = new Float(0.3); subTemplate() { - return [this.Color.input(), this.Opacity.input(), + return [ + this.Color.input(), + this.Opacity.input(), html`
    generated CSS
    ${this.css.replaceAll(this.Key.value, "$Key")}
    -
    `]; + `, + ]; } get css() { @@ -19279,7 +19612,7 @@ const TrackyMouse = { TrackyMouse.loadDependencies = function () { TrackyMouse.dependenciesRoot = TrackyMouse.dependenciesRoot.replace( /\/+$/, - "" + "", ); const loadScript = (src) => { return new Promise((resolve, reject) => { @@ -19430,12 +19763,11 @@ TrackyMouse.init = function (div) { facemeshFirstEstimation = true; facemeshLoaded = false; facemeshWorker = new Worker( - `${TrackyMouse.dependenciesRoot}/facemesh.worker.js` + `${TrackyMouse.dependenciesRoot}/facemesh.worker.js`, ); facemeshWorker.addEventListener( "message", (e) => { - // console.log('Message received from worker', e.data); if (e.data.type === "LOADED") { facemeshLoaded = true; facemeshEstimateFaces = () => { @@ -19452,13 +19784,13 @@ TrackyMouse.init = function (div) { resolve(e.data.predictions); } }, - { once: true } + { once: true }, ); }); }; } }, - { once: true } + { once: true }, ); facemeshWorker.postMessage({ type: "LOAD", options: facemeshOptions }); }; @@ -19529,7 +19861,7 @@ TrackyMouse.init = function (div) { }, (error) => { console.log(error); - } + }, ); paused = false; }; @@ -19623,12 +19955,12 @@ TrackyMouse.init = function (div) { this.curPyramid.allocate( cameraVideo.videoWidth, cameraVideo.videoHeight, - jsfeat.U8C1_t + jsfeat.U8C1_t, ); this.prevPyramid.allocate( cameraVideo.videoWidth, cameraVideo.videoHeight, - jsfeat.U8C1_t + jsfeat.U8C1_t, ); this.pointCount = 0; @@ -19670,12 +20002,12 @@ TrackyMouse.init = function (div) { debugPointsCtx, this.curXY[inputOffset], this.curXY[inputOffset + 1], - 5 + 5, ); debugPointsCtx.fillText( condition.toString(), 5 + this.curXY[inputOffset], - this.curXY[inputOffset + 1] + this.curXY[inputOffset + 1], ); // console.log(this.curXY[inputOffset], this.curXY[inputOffset + 1]); ctx.strokeStyle = ctx.fillStyle; @@ -19722,7 +20054,7 @@ TrackyMouse.init = function (div) { imageData.data, imageData.width, imageData.height, - this.curPyramid.data[0] + this.curPyramid.data[0], ); this.curPyramid.build(this.curPyramid.data[0], true); jsfeat.optical_flow_lk.track( @@ -19735,7 +20067,7 @@ TrackyMouse.init = function (div) { maxIterations, this.pointStatus, epsilon, - minEigen + minEigen, ); this.prunePoints(); } @@ -19785,12 +20117,12 @@ TrackyMouse.init = function (div) { if (mirror) { mainOops.addPoint( ((rect.right - event.clientX) / rect.width) * canvas.width, - ((event.clientY - rect.top) / rect.height) * canvas.height + ((event.clientY - rect.top) / rect.height) * canvas.height, ); } else { mainOops.addPoint( ((event.clientX - rect.left) / rect.width) * canvas.width, - ((event.clientY - rect.top) / rect.height) * canvas.height + ((event.clientY - rect.top) / rect.height) * canvas.height, ); } }); @@ -19921,7 +20253,7 @@ TrackyMouse.init = function (div) { } catch (e) {} }, 500); }, - facemeshFirstEstimation ? 20000 : 2000 + facemeshFirstEstimation ? 20000 : 2000, ); facemeshEstimateFaces().then( (predictions) => { @@ -19960,16 +20292,16 @@ TrackyMouse.init = function (div) { // nostrils workerSyncedOops.addPoint( annotations.noseLeftCorner[0][0], - annotations.noseLeftCorner[0][1] + annotations.noseLeftCorner[0][1], ); workerSyncedOops.addPoint( annotations.noseRightCorner[0][0], - annotations.noseRightCorner[0][1] + annotations.noseRightCorner[0][1], ); // midway between eyes workerSyncedOops.addPoint( annotations.midwayBetweenEyes[0][0], - annotations.midwayBetweenEyes[0][1] + annotations.midwayBetweenEyes[0][1], ); // Bring points from workerSyncedOops to realtime mainOops @@ -19982,7 +20314,7 @@ TrackyMouse.init = function (div) { maybeAddPoint( mainOops, workerSyncedOops.curXY[pointOffset], - workerSyncedOops.curXY[pointOffset + 1] + workerSyncedOops.curXY[pointOffset + 1], ); } // Don't do this! It's not how this is supposed to work. @@ -20019,11 +20351,11 @@ TrackyMouse.init = function (div) { var distance = Math.hypot( (annotations.noseTip[0][0] - mainOops.curXY[pointOffset]) * 1.4, - annotations.noseTip[0][1] - mainOops.curXY[pointOffset + 1] + annotations.noseTip[0][1] - mainOops.curXY[pointOffset + 1], ); var headSize = Math.hypot( annotations.leftCheek[0][0] - annotations.rightCheek[0][0], - annotations.leftCheek[0][1] - annotations.rightCheek[0][1] + annotations.leftCheek[0][1] - annotations.rightCheek[0][1], ); if (distance > headSize) { return false; @@ -20035,14 +20367,14 @@ TrackyMouse.init = function (div) { annotations.leftEyeLower0[0][0] - mainOops.curXY[pointOffset], annotations.leftEyeLower0[0][1] - - mainOops.curXY[pointOffset + 1] + mainOops.curXY[pointOffset + 1], ), Math.hypot( annotations.rightEyeLower0[0][0] - mainOops.curXY[pointOffset], annotations.rightEyeLower0[0][1] - - mainOops.curXY[pointOffset + 1] - ) + mainOops.curXY[pointOffset + 1], + ), ); if (distance < headSize * 0.42) { return false; @@ -20053,7 +20385,7 @@ TrackyMouse.init = function (div) { () => { facemeshEstimating = false; facemeshFirstEstimation = false; - } + }, ); } } @@ -20121,12 +20453,12 @@ TrackyMouse.init = function (div) { // distance from tip of nose (stretched so make an ellipse taller than wide) var distance = Math.hypot( (face[62][0] - mainOops.curXY[pointOffset]) * 1.4, - face[62][1] - mainOops.curXY[pointOffset + 1] + face[62][1] - mainOops.curXY[pointOffset + 1], ); // distance based on outer eye corners var headSize = Math.hypot( face[23][0] - face[28][0], - face[23][1] - face[28][1] + face[23][1] - face[28][1], ); if (distance > headSize) { return false; @@ -20251,11 +20583,12 @@ class HeadMouse extends TreeBase { promise; template() { + const stateName = this.stateName.value; + const { state } = Globals; + const updated = state.hasBeenUpdated(stateName); this.promise.then(() => { - const stateName = this.stateName.value; - const { state } = Globals; - if (state.hasBeenUpdated(stateName)) { - const status = state.values[stateName]; + if (updated) { + const status = state.get(stateName, "off"); if (status == "on" || status == "setup") { document.body.classList.toggle("HeadMouse", true); TrackyMouse.useCamera(); @@ -20267,10 +20600,11 @@ class HeadMouse extends TreeBase { } } }); - return []; + return html`
    `; } init() { + super.init(); TrackyMouse.dependenciesRoot = "./tracky-mouse"; this.promise = TrackyMouse.loadDependencies(); this.promise.then(() => { @@ -20289,6 +20623,9 @@ class HeadMouse extends TreeBase { }; }; let last_el_over; + /** @param {number} x + * @param {number} y + */ TrackyMouse.onPointerMove = (x, y) => { const target = document.elementFromPoint(x, y) || document.body; if (target !== last_el_over) { @@ -20300,7 +20637,7 @@ class HeadMouse extends TreeBase { buttons: 1, bubbles: true, cancelable: false, - }) + }), ); last_el_over.dispatchEvent(event); } @@ -20311,7 +20648,7 @@ class HeadMouse extends TreeBase { buttons: 1, bubbles: true, cancelable: false, - }) + }), ); target.dispatchEvent(event); last_el_over = target; @@ -20323,7 +20660,7 @@ class HeadMouse extends TreeBase { buttons: 1, bubbles: true, cancelable: true, - }) + }), ); target.dispatchEvent(event); }; @@ -20404,7 +20741,7 @@ class Menu { return html``; +
    `; if (dialog) { - dialog.innerHTML = ""; - dialog.appendChild(list); + render(dialog, list); } dialog.showModal(); } @@ -21161,7 +21503,7 @@ class DesignListDialog { } dialog.close(); } - const list = html.node`
    + const list = html`

    Check the designs you want to unload

      ${names.map((name) => { @@ -21176,12 +21518,11 @@ class DesignListDialog { `; })}
    - - -
    `; + + +
    `; if (dialog) { - dialog.innerHTML = ""; - dialog.appendChild(list); + render(dialog, list); } dialog.showModal(); } @@ -21200,7 +21541,7 @@ class ToolBar extends TreeBase { () => { const { child, parent } = getPanelMenuItems("add"); if (parent.length > 0) { - parent[0].divider = "Parent"; + parent[0].divider = "Parent" + (parent.length > 1 ? "s" : ""); } return child.concat(parent); }, @@ -21222,7 +21563,7 @@ class ToolBar extends TreeBase { type="text" .value=${db.designName} .size=${Math.max(db.designName.length, 12)} - onchange=${(/** @type {InputEventWithTarget} */ event) => + @change=${(/** @type {InputEventWithTarget} */ event) => db .renameDesign(event.target.value) .then(() => (window.location.hash = db.designName))} @@ -21263,8 +21604,6 @@ class ToolBar extends TreeBase { } TreeBase.register(ToolBar, "ToolBar"); -const designer = ''; - const colors = ''; /** let me wait for the page to load */ @@ -21278,11 +21617,13 @@ const pageLoaded = new Promise((resolve) => { /** Load page and data then go */ async function start() { + let editing = true; if (window.location.search && !window.location.hash.slice(1)) { const params = new URLSearchParams(window.location.search); const fetch = params.get("fetch"); if (fetch) { await wait(db.readDesignFromURL(fetch)); + editing = params.get("edit") !== null; window.history.replaceState( {}, document.title, @@ -21299,18 +21640,19 @@ async function start() { const dataArray = await db.read("content", []); await pageLoaded; + Globals.data = new Data(dataArray); const layout = await Layout.load(Layout); Globals.layout = layout; Globals.tree = layout.children[0]; Globals.state = new State$1(`UIState`); Globals.actions = await Actions.load(Actions); - Globals.data = new Data(dataArray); Globals.cues = await CueList.load(CueList); Globals.patterns = await PatternList.load(PatternList); Globals.method = await MethodChooser.load(MethodChooser); Globals.restart = async () => { // tear down any existing event handlers before restarting Globals.method.stop(); + TreeBase.treeBaseCounter = 0; start(); }; Globals.error = new Messages(); @@ -21325,7 +21667,7 @@ async function start() { } /* Designer */ - Globals.state.define("editing", true); // for now + Globals.state.define("editing", editing); // for now Globals.designer = /** @type {Designer} */ ( Designer.fromObject({ className: "Designer", @@ -21356,6 +21698,7 @@ async function start() { function renderUI() { const startTime = performance.now(); document.body.classList.toggle("designing", Globals.state.get("editing")); + // clear the changed flag, TODO there must be a better way! safeRender("cues", Globals.cues); safeRender("UI", Globals.tree); safeRender("toolbar", toolbar); @@ -21364,6 +21707,11 @@ async function start() { safeRender("errors", Globals.error); postRender(); Globals.method.refresh(); + // clear the accessed bits for the next cycle + accessed.clear(); + // clear the updated bits for the next cycle + Globals.state.clearUpdated(); + if (location.host.startsWith("localhost")) { const timer = document.getElementById("timer"); if (timer) { diff --git a/index.js.map b/index.js.map index 1081a3f..0dec10a 100644 --- a/index.js.map +++ b/index.js.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["this","require$$0","require$$1","require$$2","require$$3","require$$4","isArray","cache","window","isArrayLike","isFunction","noop","Lexer","Parser","parse","expressions","iterator","Props.Prop","Props.String","Props.TypeSelect","StackTrace.fromError","e","t","o","merge","Props.Select","Props.Color","Props.Float","Props.Field","Props.Boolean","Props.Integer","Option","Props.Voice","fileSave","Audio","pleaseWait","Props.ADate","Props.TextArea","Action","Props.Expression","Props.Code","Symbol_observable","Symbol_iterator","asyncScheduler","RxJs.Subject","Props.Pattern","Props.UID","RxJs.merge","RxJs.takeUntil","Props.KeyName","Props.Cue","Props.OneOfGroup","Props.toMap","RxJs.fromEvent","RxJs.mergeWith","RxJs.filter","RxJs.tap","RxJs.groupBy","RxJs.mergeMap","RxJs.debounceTime","RxJs.skipWhile","RxJs.distinctUntilKeyChanged","RxJs.map","RxJs.throttleTime","RxJs.timer","RxJs.scan","RxJs.of","RxJs.share","RxJs.retry","RxJs.switchMap","RxJs.EMPTY","RxJs.delay","fileOpen","State"],"sources":["../node_modules/stackframe/stackframe.js","../node_modules/error-stack-parser/error-stack-parser.js","../node_modules/stack-generator/stack-generator.js","../node_modules/source-map/lib/util.js","../node_modules/source-map/lib/binary-search.js","../node_modules/source-map/lib/array-set.js","../node_modules/source-map/lib/base64.js","../node_modules/source-map/lib/base64-vlq.js","../node_modules/source-map/lib/quick-sort.js","../node_modules/source-map/lib/source-map-consumer.js","../node_modules/stacktrace-gps/stacktrace-gps.js","../node_modules/stacktrace-js/stacktrace.js","../node_modules/@webreflection/mapset/esm/index.js","../node_modules/@webreflection/uparser/esm/index.js","../node_modules/@webreflection/uwire/esm/index.js","../node_modules/uarray/esm/index.js","../node_modules/uhandlers/esm/index.js","../node_modules/udomdiff/esm/index.js","../node_modules/uhtml/esm/utils.js","../node_modules/uhtml/esm/handlers.js","../node_modules/uhtml/esm/rabbit.js","../node_modules/uhtml/esm/index.js","../node_modules/angular-expressions/lib/parse.js","../node_modules/angular-expressions/lib/main.js","../globals.js","../eval.js","../components/props.js","../node_modules/weak-value/esm/index.js","../components/color-names.js","../components/style.js","../components/persist.js","../components/names.js","../components/treebase.js","../components/errors.js","../data.js","../node_modules/mergerino/dist/mergerino.min.js","../state.js","../components/stack.js","../components/page.js","../components/gridFilter.js","../components/helpers.js","../components/grid.js","../components/display.js","../components/radio.js","../components/gap.js","../render.js","../components/tabcontrol.js","../components/modal-dialog.js","../components/vsd.js","../components/button.js","../components/monitor.js","../components/speech.js","../node_modules/idb/build/wrap-idb-value.js","../node_modules/idb/build/index.js","../node_modules/idb/build/async-iterators.js","../node_modules/fflate/esm/browser.js","../node_modules/browser-fs-access/dist/index.modern.js","../db.js","../components/audio.js","../components/designer.js","../components/wait.js","../components/content.js","../components/logger.js","../components/layout.js","../components/actions.js","../components/hotkeys.js","../components/customize.js","../components/img-db.js","../components/video-db.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../node_modules/rxjs/dist/esm5/internal/Subscription.js","../node_modules/rxjs/dist/esm5/internal/config.js","../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../node_modules/rxjs/dist/esm5/internal/util/noop.js","../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../node_modules/rxjs/dist/esm5/internal/util/identity.js","../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../node_modules/rxjs/dist/esm5/internal/Observable.js","../node_modules/rxjs/dist/esm5/internal/util/lift.js","../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../node_modules/rxjs/dist/esm5/internal/Subject.js","../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../node_modules/rxjs/dist/esm5/internal/Scheduler.js","../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../node_modules/rxjs/dist/esm5/internal/observable/empty.js","../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../node_modules/rxjs/dist/esm5/internal/util/args.js","../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../node_modules/rxjs/dist/esm5/internal/observable/from.js","../node_modules/rxjs/dist/esm5/internal/observable/of.js","../node_modules/rxjs/dist/esm5/internal/util/isDate.js","../node_modules/rxjs/dist/esm5/internal/operators/map.js","../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../node_modules/rxjs/dist/esm5/internal/observable/concat.js","../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../node_modules/rxjs/dist/esm5/internal/observable/timer.js","../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js","../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../node_modules/rxjs/dist/esm5/internal/operators/take.js","../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../node_modules/rxjs/dist/esm5/internal/operators/delay.js","../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js","../node_modules/rxjs/dist/esm5/internal/operators/groupBy.js","../node_modules/rxjs/dist/esm5/internal/operators/merge.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js","../node_modules/rxjs/dist/esm5/internal/operators/retry.js","../node_modules/rxjs/dist/esm5/internal/operators/scan.js","../node_modules/rxjs/dist/esm5/internal/operators/share.js","../node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js","../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../node_modules/rxjs/dist/esm5/internal/operators/tap.js","../node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../components/access/method/defaultMethods.js","../components/access/method/index.js","../components/access/pattern/defaultPatterns.js","../components/access/pattern/index.js","../components/access/method/responses.js","../components/access/method/keyHandler.js","../components/access/method/pointerHandler.js","../node_modules/rxjs/dist/esm5/internal/observable/dom/WebSocketSubject.js","../node_modules/rxjs/dist/esm5/internal/observable/dom/webSocket.js","../components/access/method/socketHandler.js","../components/access/method/timerHandler.js","../components/access/cues/defaultCues.js","../components/access/cues/index.js","../public/tracky-mouse/tracky-mouse.js","../components/head-mouse.js","../components/menu.js","../components/serviceWorker.js","../components/toolbar.js","../start.js"],"sourcesContent":["(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').replace(/^.*?\\s+/, '');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n // because this line doesn't have function name\n var locationParts = this.extractLocation(location ? location[1] : sanitizedLine);\n var functionName = location && sanitizedLine || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(//, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n}(this, function(StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({functionName: RegExp.$1 || undefined, args: args}));\n } else {\n stack.push(new StackFrame({args: args}));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n}));\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace-gps', ['source-map', 'stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('source-map/lib/source-map-consumer'), require('stackframe'));\n } else {\n root.StackTraceGPS = factory(root.SourceMap || root.sourceMap, root.StackFrame);\n }\n}(this, function(SourceMap, StackFrame) {\n 'use strict';\n\n /**\n * Make a X-Domain request to url and callback.\n *\n * @param {String} url\n * @returns {Promise} with response text if fulfilled\n */\n function _xdr(url) {\n return new Promise(function(resolve, reject) {\n var req = new XMLHttpRequest();\n req.open('get', url);\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if ((req.status >= 200 && req.status < 300) ||\n (url.substr(0, 7) === 'file://' && req.responseText)) {\n resolve(req.responseText);\n } else {\n reject(new Error('HTTP status: ' + req.status + ' retrieving ' + url));\n }\n }\n };\n req.send();\n });\n\n }\n\n /**\n * Convert a Base64-encoded string into its original representation.\n * Used for inline sourcemaps.\n *\n * @param {String} b64str Base-64 encoded string\n * @returns {String} original representation of the base64-encoded string.\n */\n function _atob(b64str) {\n if (typeof window !== 'undefined' && window.atob) {\n return window.atob(b64str);\n } else {\n throw new Error('You must supply a polyfill for window.atob in this environment');\n }\n }\n\n function _parseJson(string) {\n if (typeof JSON !== 'undefined' && JSON.parse) {\n return JSON.parse(string);\n } else {\n throw new Error('You must supply a polyfill for JSON.parse in this environment');\n }\n }\n\n function _findFunctionName(source, lineNumber/*, columnNumber*/) {\n var syntaxes = [\n // {name} = function ({args}) TODO args capture\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,\n // function {name}({args}) m[1]=name m[2]=args\n /function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,\n // {name} = eval()\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,\n // fn_name() {\n /\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,\n // {name} = () => {\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/\n ];\n var lines = source.split('\\n');\n\n // Walk backwards in the source lines until we find the line which matches one of the patterns above\n var code = '';\n var maxLines = Math.min(lineNumber, 20);\n for (var i = 0; i < maxLines; ++i) {\n // lineNo is 1-based, source[] is 0-based\n var line = lines[lineNumber - i - 1];\n var commentPos = line.indexOf('//');\n if (commentPos >= 0) {\n line = line.substr(0, commentPos);\n }\n\n if (line) {\n code = line + code;\n var len = syntaxes.length;\n for (var index = 0; index < len; index++) {\n var m = syntaxes[index].exec(code);\n if (m && m[1]) {\n return m[1];\n }\n }\n }\n }\n return undefined;\n }\n\n function _ensureSupportedEnvironment() {\n if (typeof Object.defineProperty !== 'function' || typeof Object.create !== 'function') {\n throw new Error('Unable to consume source maps in older browsers');\n }\n }\n\n function _ensureStackFrameIsLegit(stackframe) {\n if (typeof stackframe !== 'object') {\n throw new TypeError('Given StackFrame is not an object');\n } else if (typeof stackframe.fileName !== 'string') {\n throw new TypeError('Given file name is not a String');\n } else if (typeof stackframe.lineNumber !== 'number' ||\n stackframe.lineNumber % 1 !== 0 ||\n stackframe.lineNumber < 1) {\n throw new TypeError('Given line number must be a positive integer');\n } else if (typeof stackframe.columnNumber !== 'number' ||\n stackframe.columnNumber % 1 !== 0 ||\n stackframe.columnNumber < 0) {\n throw new TypeError('Given column number must be a non-negative integer');\n }\n return true;\n }\n\n function _findSourceMappingURL(source) {\n var sourceMappingUrlRegExp = /\\/\\/[#@] ?sourceMappingURL=([^\\s'\"]+)\\s*$/mg;\n var lastSourceMappingUrl;\n var matchSourceMappingUrl;\n // eslint-disable-next-line no-cond-assign\n while (matchSourceMappingUrl = sourceMappingUrlRegExp.exec(source)) {\n lastSourceMappingUrl = matchSourceMappingUrl[1];\n }\n if (lastSourceMappingUrl) {\n return lastSourceMappingUrl;\n } else {\n throw new Error('sourceMappingURL not found');\n }\n }\n\n function _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache) {\n return new Promise(function(resolve, reject) {\n var loc = sourceMapConsumer.originalPositionFor({\n line: stackframe.lineNumber,\n column: stackframe.columnNumber\n });\n\n if (loc.source) {\n // cache mapped sources\n var mappedSource = sourceMapConsumer.sourceContentFor(loc.source);\n if (mappedSource) {\n sourceCache[loc.source] = mappedSource;\n }\n\n resolve(\n // given stackframe and source location, update stackframe\n new StackFrame({\n functionName: loc.name || stackframe.functionName,\n args: stackframe.args,\n fileName: loc.source,\n lineNumber: loc.line,\n columnNumber: loc.column\n }));\n } else {\n reject(new Error('Could not get original source for given stackframe and source map'));\n }\n });\n }\n\n /**\n * @constructor\n * @param {Object} opts\n * opts.sourceCache = {url: \"Source String\"} => preload source cache\n * opts.sourceMapConsumerCache = {/path/file.js.map: SourceMapConsumer}\n * opts.offline = True to prevent network requests.\n * Best effort without sources or source maps.\n * opts.ajax = Promise returning function to make X-Domain requests\n */\n return function StackTraceGPS(opts) {\n if (!(this instanceof StackTraceGPS)) {\n return new StackTraceGPS(opts);\n }\n opts = opts || {};\n\n this.sourceCache = opts.sourceCache || {};\n this.sourceMapConsumerCache = opts.sourceMapConsumerCache || {};\n\n this.ajax = opts.ajax || _xdr;\n\n this._atob = opts.atob || _atob;\n\n this._get = function _get(location) {\n return new Promise(function(resolve, reject) {\n var isDataUrl = location.substr(0, 5) === 'data:';\n if (this.sourceCache[location]) {\n resolve(this.sourceCache[location]);\n } else if (opts.offline && !isDataUrl) {\n reject(new Error('Cannot make network requests in offline mode'));\n } else {\n if (isDataUrl) {\n // data URLs can have parameters.\n // see http://tools.ietf.org/html/rfc2397\n var supportedEncodingRegexp =\n /^data:application\\/json;([\\w=:\"-]+;)*base64,/;\n var match = location.match(supportedEncodingRegexp);\n if (match) {\n var sourceMapStart = match[0].length;\n var encodedSource = location.substr(sourceMapStart);\n var source = this._atob(encodedSource);\n this.sourceCache[location] = source;\n resolve(source);\n } else {\n reject(new Error('The encoding of the inline sourcemap is not supported'));\n }\n } else {\n var xhrPromise = this.ajax(location, {method: 'get'});\n // Cache the Promise to prevent duplicate in-flight requests\n this.sourceCache[location] = xhrPromise;\n xhrPromise.then(resolve, reject);\n }\n }\n }.bind(this));\n };\n\n /**\n * Creating SourceMapConsumers is expensive, so this wraps the creation of a\n * SourceMapConsumer in a per-instance cache.\n *\n * @param {String} sourceMappingURL = URL to fetch source map from\n * @param {String} defaultSourceRoot = Default source root for source map if undefined\n * @returns {Promise} that resolves a SourceMapConsumer\n */\n this._getSourceMapConsumer = function _getSourceMapConsumer(sourceMappingURL, defaultSourceRoot) {\n return new Promise(function(resolve) {\n if (this.sourceMapConsumerCache[sourceMappingURL]) {\n resolve(this.sourceMapConsumerCache[sourceMappingURL]);\n } else {\n var sourceMapConsumerPromise = new Promise(function(resolve, reject) {\n return this._get(sourceMappingURL).then(function(sourceMapSource) {\n if (typeof sourceMapSource === 'string') {\n sourceMapSource = _parseJson(sourceMapSource.replace(/^\\)\\]\\}'/, ''));\n }\n if (typeof sourceMapSource.sourceRoot === 'undefined') {\n sourceMapSource.sourceRoot = defaultSourceRoot;\n }\n\n resolve(new SourceMap.SourceMapConsumer(sourceMapSource));\n }).catch(reject);\n }.bind(this));\n this.sourceMapConsumerCache[sourceMappingURL] = sourceMapConsumerPromise;\n resolve(sourceMapConsumerPromise);\n }\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, enhance function name and use source maps for a\n * better StackFrame.\n *\n * @param {StackFrame} stackframe object\n * @returns {Promise} that resolves with with source-mapped StackFrame\n */\n this.pinpoint = function StackTraceGPS$$pinpoint(stackframe) {\n return new Promise(function(resolve, reject) {\n this.getMappedLocation(stackframe).then(function(mappedStackFrame) {\n function resolveMappedStackFrame() {\n resolve(mappedStackFrame);\n }\n\n this.findFunctionName(mappedStackFrame)\n .then(resolve, resolveMappedStackFrame)\n // eslint-disable-next-line no-unexpected-multiline\n ['catch'](resolveMappedStackFrame);\n }.bind(this), reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, guess function name from location information.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.findFunctionName = function StackTraceGPS$$findFunctionName(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureStackFrameIsLegit(stackframe);\n this._get(stackframe.fileName).then(function getSourceCallback(source) {\n var lineNumber = stackframe.lineNumber;\n var columnNumber = stackframe.columnNumber;\n var guessedFunctionName = _findFunctionName(source, lineNumber, columnNumber);\n // Only replace functionName if we found something\n if (guessedFunctionName) {\n resolve(new StackFrame({\n functionName: guessedFunctionName,\n args: stackframe.args,\n fileName: stackframe.fileName,\n lineNumber: lineNumber,\n columnNumber: columnNumber\n }));\n } else {\n resolve(stackframe);\n }\n }, reject)['catch'](reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, seek source-mapped location and return new enhanced StackFrame.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.getMappedLocation = function StackTraceGPS$$getMappedLocation(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureSupportedEnvironment();\n _ensureStackFrameIsLegit(stackframe);\n\n var sourceCache = this.sourceCache;\n var fileName = stackframe.fileName;\n this._get(fileName).then(function(source) {\n var sourceMappingURL = _findSourceMappingURL(source);\n var isDataUrl = sourceMappingURL.substr(0, 5) === 'data:';\n var defaultSourceRoot = fileName.substring(0, fileName.lastIndexOf('/') + 1);\n\n if (sourceMappingURL[0] !== '/' && !isDataUrl && !(/^https?:\\/\\/|^\\/\\//i).test(sourceMappingURL)) {\n sourceMappingURL = defaultSourceRoot + sourceMappingURL;\n }\n\n return this._getSourceMapConsumer(sourceMappingURL, defaultSourceRoot)\n .then(function(sourceMapConsumer) {\n return _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache)\n .then(resolve)['catch'](function() {\n resolve(stackframe);\n });\n });\n }.bind(this), reject)['catch'](reject);\n }.bind(this));\n };\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace', ['error-stack-parser', 'stack-generator', 'stacktrace-gps'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('error-stack-parser'), require('stack-generator'), require('stacktrace-gps'));\n } else {\n root.StackTrace = factory(root.ErrorStackParser, root.StackGenerator, root.StackTraceGPS);\n }\n}(this, function StackTrace(ErrorStackParser, StackGenerator, StackTraceGPS) {\n var _options = {\n filter: function(stackframe) {\n // Filter out stackframes for this library by default\n return (stackframe.functionName || '').indexOf('StackTrace$$') === -1 &&\n (stackframe.functionName || '').indexOf('ErrorStackParser$$') === -1 &&\n (stackframe.functionName || '').indexOf('StackTraceGPS$$') === -1 &&\n (stackframe.functionName || '').indexOf('StackGenerator$$') === -1;\n },\n sourceCache: {}\n };\n\n var _generateError = function StackTrace$$GenerateError() {\n try {\n // Error must be thrown to get stack in IE\n throw new Error();\n } catch (err) {\n return err;\n }\n };\n\n /**\n * Merge 2 given Objects. If a conflict occurs the second object wins.\n * Does not do deep merges.\n *\n * @param {Object} first base object\n * @param {Object} second overrides\n * @returns {Object} merged first and second\n * @private\n */\n function _merge(first, second) {\n var target = {};\n\n [first, second].forEach(function(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n target[prop] = obj[prop];\n }\n }\n return target;\n });\n\n return target;\n }\n\n function _isShapedLikeParsableError(err) {\n return err.stack || err['opera#sourceloc'];\n }\n\n function _filtered(stackframes, filter) {\n if (typeof filter === 'function') {\n return stackframes.filter(filter);\n }\n return stackframes;\n }\n\n return {\n /**\n * Get a backtrace from invocation point.\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n get: function StackTrace$$get(opts) {\n var err = _generateError();\n return _isShapedLikeParsableError(err) ? this.fromError(err, opts) : this.generateArtificially(opts);\n },\n\n /**\n * Get a backtrace from invocation point.\n * IMPORTANT: Does not handle source maps or guess function names!\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n getSync: function StackTrace$$getSync(opts) {\n opts = _merge(_options, opts);\n var err = _generateError();\n var stack = _isShapedLikeParsableError(err) ? ErrorStackParser.parse(err) : StackGenerator.backtrace(opts);\n return _filtered(stack, opts.filter);\n },\n\n /**\n * Given an error object, parse it.\n *\n * @param {Error} error object\n * @param {Object} opts\n * @returns {Promise} for Array[StackFrame}\n */\n fromError: function StackTrace$$fromError(error, opts) {\n opts = _merge(_options, opts);\n var gps = new StackTraceGPS(opts);\n return new Promise(function(resolve) {\n var stackframes = _filtered(ErrorStackParser.parse(error), opts.filter);\n resolve(Promise.all(stackframes.map(function(sf) {\n return new Promise(function(resolve) {\n function resolveOriginal() {\n resolve(sf);\n }\n\n gps.pinpoint(sf).then(resolve, resolveOriginal)['catch'](resolveOriginal);\n });\n })));\n }.bind(this));\n },\n\n /**\n * Use StackGenerator to generate a backtrace.\n *\n * @param {Object} opts\n * @returns {Promise} of Array[StackFrame]\n */\n generateArtificially: function StackTrace$$generateArtificially(opts) {\n opts = _merge(_options, opts);\n var stackFrames = StackGenerator.backtrace(opts);\n if (typeof opts.filter === 'function') {\n stackFrames = stackFrames.filter(opts.filter);\n }\n return Promise.resolve(stackFrames);\n },\n\n /**\n * Given a function, wrap it such that invocations trigger a callback that\n * is called with a stack trace.\n *\n * @param {Function} fn to be instrumented\n * @param {Function} callback function to call with a stack trace on invocation\n * @param {Function} errback optional function to call with error if unable to get stack trace.\n * @param {Object} thisArg optional context object (e.g. window)\n */\n instrument: function StackTrace$$instrument(fn, callback, errback, thisArg) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n // Already instrumented, return given Function\n return fn;\n }\n\n var instrumented = function StackTrace$$instrumented() {\n try {\n this.get().then(callback, errback)['catch'](errback);\n return fn.apply(thisArg || this, arguments);\n } catch (e) {\n if (_isShapedLikeParsableError(e)) {\n this.fromError(e).then(callback, errback)['catch'](errback);\n }\n throw e;\n }\n }.bind(this);\n instrumented.__stacktraceOriginalFn = fn;\n\n return instrumented;\n },\n\n /**\n * Given a function that has been instrumented,\n * revert the function to it's original (non-instrumented) state.\n *\n * @param {Function} fn to de-instrument\n */\n deinstrument: function StackTrace$$deinstrument(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot de-instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n return fn.__stacktraceOriginalFn;\n } else {\n // Function not instrumented, return original\n return fn;\n }\n },\n\n /**\n * Given an error message and Array of StackFrames, serialize and POST to given URL.\n *\n * @param {Array} stackframes\n * @param {String} url\n * @param {String} errorMsg\n * @param {Object} requestOptions\n */\n report: function StackTrace$$report(stackframes, url, errorMsg, requestOptions) {\n return new Promise(function(resolve, reject) {\n var req = new XMLHttpRequest();\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 400) {\n resolve(req.responseText);\n } else {\n reject(new Error('POST to ' + url + ' failed with status: ' + req.status));\n }\n }\n };\n req.open('post', url);\n\n // Set request headers\n req.setRequestHeader('Content-Type', 'application/json');\n if (requestOptions && typeof requestOptions.headers === 'object') {\n var headers = requestOptions.headers;\n for (var header in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, header)) {\n req.setRequestHeader(header, headers[header]);\n }\n }\n }\n\n var reportPayload = {stack: stackframes};\n if (errorMsg !== undefined && errorMsg !== null) {\n reportPayload.message = errorMsg;\n }\n\n req.send(JSON.stringify(reportPayload));\n });\n }\n };\n}));\n","export class MapSet extends Map {\n set(key, value) {\n super.set(key, value);\n return value;\n }\n}\n\nexport class WeakMapSet extends WeakMap {\n set(key, value) {\n super.set(key, value);\n return value;\n }\n}\n","/*! (c) Andrea Giammarchi - ISC */\nconst empty = /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;\nconst elements = /<([a-z]+[a-z0-9:._-]*)([^>]*?)(\\/?)>/g;\nconst attributes = /([^\\s\\\\>\"'=]+)\\s*=\\s*(['\"]?)\\x01/g;\nconst holes = /[\\x01\\x02]/g;\n\n// \\x01 Node.ELEMENT_NODE\n// \\x02 Node.ATTRIBUTE_NODE\n\n/**\n * Given a template, find holes as both nodes and attributes and\n * return a string with holes as either comment nodes or named attributes.\n * @param {string[]} template a template literal tag array\n * @param {string} prefix prefix to use per each comment/attribute\n * @param {boolean} svg enforces self-closing tags\n * @returns {string} X/HTML with prefixed comments or attributes\n */\nexport default (template, prefix, svg) => {\n let i = 0;\n return template\n .join('\\x01')\n .trim()\n .replace(\n elements,\n (_, name, attrs, selfClosing) => {\n let ml = name + attrs.replace(attributes, '\\x02=$2$1').trimEnd();\n if (selfClosing.length)\n ml += (svg || empty.test(name)) ? ' /' : ('>';\n }\n )\n .replace(\n holes,\n hole => hole === '\\x01' ?\n ('') :\n (prefix + i++)\n );\n};\n","const ELEMENT_NODE = 1;\nconst nodeType = 111;\n\nconst remove = ({firstChild, lastChild}) => {\n const range = document.createRange();\n range.setStartAfter(firstChild);\n range.setEndAfter(lastChild);\n range.deleteContents();\n return firstChild;\n};\n\nexport const diffable = (node, operation) => node.nodeType === nodeType ?\n ((1 / operation) < 0 ?\n (operation ? remove(node) : node.lastChild) :\n (operation ? node.valueOf() : node.firstChild)) :\n node\n;\n\nexport const persistent = fragment => {\n const {firstChild, lastChild} = fragment;\n if (firstChild === lastChild)\n return lastChild || fragment;\n const {childNodes} = fragment;\n const nodes = [...childNodes];\n return {\n ELEMENT_NODE,\n nodeType,\n firstChild,\n lastChild,\n valueOf() {\n if (childNodes.length !== nodes.length)\n fragment.append(...nodes);\n return fragment;\n }\n };\n};\n","const {isArray} = Array;\nconst {indexOf, slice} = [];\n\nexport {isArray, indexOf, slice};\n","import {isArray} from 'uarray';\n\n// flag for foreign checks (slower path, fast by default)\nlet useForeign = false;\n\nexport class Foreign {\n constructor(handler, value) {\n useForeign = true;\n this._ = (...args) => handler(...args, value);\n }\n}\n\nexport const foreign = (handler, value) => new Foreign(handler, value);\n\nexport const aria = node => values => {\n for (const key in values) {\n const name = key === 'role' ? key : `aria-${key}`;\n const value = values[key];\n if (value == null)\n node.removeAttribute(name);\n else\n node.setAttribute(name, value);\n }\n};\n\nconst getValue = value => value == null ? value : value.valueOf();\n\nexport const attribute = (node, name) => {\n let oldValue, orphan = true;\n const attributeNode = document.createAttributeNS(null, name);\n return newValue => {\n const value = useForeign && (newValue instanceof Foreign) ?\n newValue._(node, name) : getValue(newValue);\n if (oldValue !== value) {\n if ((oldValue = value) == null) {\n if (!orphan) {\n node.removeAttributeNode(attributeNode);\n orphan = true;\n }\n }\n else {\n attributeNode.value = value;\n if (orphan) {\n node.setAttributeNodeNS(attributeNode);\n orphan = false;\n }\n }\n }\n };\n};\n\nexport const boolean = (node, key, oldValue) => newValue => {\n const value = !!getValue(newValue);\n if (oldValue !== value) {\n // when IE won't be around anymore ...\n // node.toggleAttribute(key, oldValue = !!value);\n if ((oldValue = value))\n node.setAttribute(key, '');\n else\n node.removeAttribute(key);\n }\n};\n\nexport const data = ({dataset}) => values => {\n for (const key in values) {\n const value = values[key];\n if (value == null)\n delete dataset[key];\n else\n dataset[key] = value;\n }\n};\n\nexport const event = (node, name) => {\n let oldValue, lower, type = name.slice(2);\n if (!(name in node) && (lower = name.toLowerCase()) in node)\n type = lower.slice(2);\n return newValue => {\n const info = isArray(newValue) ? newValue : [newValue, false];\n if (oldValue !== info[0]) {\n if (oldValue)\n node.removeEventListener(type, oldValue, info[1]);\n if (oldValue = info[0])\n node.addEventListener(type, oldValue, info[1]);\n }\n };\n};\n\nexport const ref = node => {\n let oldValue;\n return value => {\n if (oldValue !== value) {\n oldValue = value;\n if (typeof value === 'function')\n value(node);\n else\n value.current = node;\n }\n };\n};\n\nexport const setter = (node, key) => key === 'dataset' ?\n data(node) :\n value => {\n node[key] = value;\n };\n\nexport const text = node => {\n let oldValue;\n return newValue => {\n const value = getValue(newValue);\n if (oldValue != value) {\n oldValue = value;\n node.textContent = value == null ? '' : value;\n }\n };\n};\n","/**\n * ISC License\n *\n * Copyright (c) 2020, Andrea Giammarchi, @WebReflection\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE\n * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * @param {Node} parentNode The container where children live\n * @param {Node[]} a The list of current/live children\n * @param {Node[]} b The list of future children\n * @param {(entry: Node, action: number) => Node} get\n * The callback invoked per each entry related DOM operation.\n * @param {Node} [before] The optional node used as anchor to insert before.\n * @returns {Node[]} The same list of future children.\n */\nexport default (parentNode, a, b, get, before) => {\n const bLength = b.length;\n let aEnd = a.length;\n let bEnd = bLength;\n let aStart = 0;\n let bStart = 0;\n let map = null;\n while (aStart < aEnd || bStart < bEnd) {\n // append head, tail, or nodes in between: fast path\n if (aEnd === aStart) {\n // we could be in a situation where the rest of nodes that\n // need to be added are not at the end, and in such case\n // the node to `insertBefore`, if the index is more than 0\n // must be retrieved, otherwise it's gonna be the first item.\n const node = bEnd < bLength ?\n (bStart ?\n (get(b[bStart - 1], -0).nextSibling) :\n get(b[bEnd - bStart], 0)) :\n before;\n while (bStart < bEnd)\n parentNode.insertBefore(get(b[bStart++], 1), node);\n }\n // remove head or tail: fast path\n else if (bEnd === bStart) {\n while (aStart < aEnd) {\n // remove the node only if it's unknown or not live\n if (!map || !map.has(a[aStart]))\n parentNode.removeChild(get(a[aStart], -1));\n aStart++;\n }\n }\n // same node: fast path\n else if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n }\n // same tail: fast path\n else if (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n // The once here single last swap \"fast path\" has been removed in v1.1.0\n // https://github.com/WebReflection/udomdiff/blob/single-final-swap/esm/index.js#L69-L85\n // reverse swap: also fast path\n else if (\n a[aStart] === b[bEnd - 1] &&\n b[bStart] === a[aEnd - 1]\n ) {\n // this is a \"shrink\" operation that could happen in these cases:\n // [1, 2, 3, 4, 5]\n // [1, 4, 3, 2, 5]\n // or asymmetric too\n // [1, 2, 3, 4, 5]\n // [1, 2, 3, 5, 6, 4]\n const node = get(a[--aEnd], -1).nextSibling;\n parentNode.insertBefore(\n get(b[bStart++], 1),\n get(a[aStart++], -1).nextSibling\n );\n parentNode.insertBefore(get(b[--bEnd], 1), node);\n // mark the future index as identical (yeah, it's dirty, but cheap 👍)\n // The main reason to do this, is that when a[aEnd] will be reached,\n // the loop will likely be on the fast path, as identical to b[bEnd].\n // In the best case scenario, the next loop will skip the tail,\n // but in the worst one, this node will be considered as already\n // processed, bailing out pretty quickly from the map index check\n a[aEnd] = b[bEnd];\n }\n // map based fallback, \"slow\" path\n else {\n // the map requires an O(bEnd - bStart) operation once\n // to store all future nodes indexes for later purposes.\n // In the worst case scenario, this is a full O(N) cost,\n // and such scenario happens at least when all nodes are different,\n // but also if both first and last items of the lists are different\n if (!map) {\n map = new Map;\n let i = bStart;\n while (i < bEnd)\n map.set(b[i], i++);\n }\n // if it's a future node, hence it needs some handling\n if (map.has(a[aStart])) {\n // grab the index of such node, 'cause it might have been processed\n const index = map.get(a[aStart]);\n // if it's not already processed, look on demand for the next LCS\n if (bStart < index && index < bEnd) {\n let i = aStart;\n // counts the amount of nodes that are the same in the future\n let sequence = 1;\n while (++i < aEnd && i < bEnd && map.get(a[i]) === (index + sequence))\n sequence++;\n // effort decision here: if the sequence is longer than replaces\n // needed to reach such sequence, which would brings again this loop\n // to the fast path, prepend the difference before a sequence,\n // and move only the future list index forward, so that aStart\n // and bStart will be aligned again, hence on the fast path.\n // An example considering aStart and bStart are both 0:\n // a: [1, 2, 3, 4]\n // b: [7, 1, 2, 3, 6]\n // this would place 7 before 1 and, from that time on, 1, 2, and 3\n // will be processed at zero cost\n if (sequence > (index - bStart)) {\n const node = get(a[aStart], 0);\n while (bStart < index)\n parentNode.insertBefore(get(b[bStart++], 1), node);\n }\n // if the effort wasn't good enough, fallback to a replace,\n // moving both source and target indexes forward, hoping that some\n // similar node will be found later on, to go back to the fast path\n else {\n parentNode.replaceChild(\n get(b[bStart++], 1),\n get(a[aStart++], -1)\n );\n }\n }\n // otherwise move the source forward, 'cause there's nothing to do\n else\n aStart++;\n }\n // this node has no meaning in the future list, so it's more than safe\n // to remove it, and check the next live node out instead, meaning\n // that only the live list index should be forwarded\n else\n parentNode.removeChild(get(a[aStart++], -1));\n }\n }\n return b;\n};\n","const {isArray, prototype} = Array;\nconst {indexOf} = prototype;\n\nexport {isArray, indexOf};\n\nconst {\n createDocumentFragment,\n createElement,\n createElementNS,\n createTextNode,\n createTreeWalker,\n importNode\n} = new Proxy({}, {\n get: (_, method) => document[method].bind(document)\n});\n\nexport {createTextNode, createTreeWalker, importNode};\n\nconst createHTML = html => {\n const template = createElement('template');\n template.innerHTML = html;\n return template.content;\n};\n\nlet xml;\nconst createSVG = svg => {\n if (!xml) xml = createElementNS('http://www.w3.org/2000/svg', 'svg');\n xml.innerHTML = svg;\n const content = createDocumentFragment();\n content.append(...xml.childNodes);\n return content;\n};\n\nexport const createContent = (text, svg) => svg ?\n createSVG(text) : createHTML(text);\n","import {diffable} from '@webreflection/uwire';\n\nimport {aria, attribute, boolean, event, ref, setter, text} from 'uhandlers';\nimport udomdiff from 'udomdiff';\n\nimport {isArray, createTextNode} from './utils.js';\n\n// from a generic path, retrieves the exact targeted node\nconst reducePath = ({childNodes}, i) => childNodes[i];\n\n// this helper avoid code bloat around handleAnything() callback\nconst diff = (comment, oldNodes, newNodes) => udomdiff(\n comment.parentNode,\n // TODO: there is a possible edge case where a node has been\n // removed manually, or it was a keyed one, attached\n // to a shared reference between renders.\n // In this case udomdiff might fail at removing such node\n // as its parent won't be the expected one.\n // The best way to avoid this issue is to filter oldNodes\n // in search of those not live, or not in the current parent\n // anymore, but this would require both a change to uwire,\n // exposing a parentNode from the firstChild, as example,\n // but also a filter per each diff that should exclude nodes\n // that are not in there, penalizing performance quite a lot.\n // As this has been also a potential issue with domdiff,\n // and both lighterhtml and hyperHTML might fail with this\n // very specific edge case, I might as well document this possible\n // \"diffing shenanigan\" and call it a day.\n oldNodes,\n newNodes,\n diffable,\n comment\n);\n\n// if an interpolation represents a comment, the whole\n// diffing will be related to such comment.\n// This helper is in charge of understanding how the new\n// content for such interpolation/hole should be updated\nconst handleAnything = comment => {\n let oldValue, text, nodes = [];\n const anyContent = newValue => {\n switch (typeof newValue) {\n // primitives are handled as text content\n case 'string':\n case 'number':\n case 'boolean':\n if (oldValue !== newValue) {\n oldValue = newValue;\n if (!text)\n text = createTextNode('');\n text.data = newValue;\n nodes = diff(comment, nodes, [text]);\n }\n break;\n // null, and undefined are used to cleanup previous content\n case 'object':\n case 'undefined':\n if (newValue == null) {\n if (oldValue != newValue) {\n oldValue = newValue;\n nodes = diff(comment, nodes, []);\n }\n break;\n }\n // arrays and nodes have a special treatment\n if (isArray(newValue)) {\n oldValue = newValue;\n // arrays can be used to cleanup, if empty\n if (newValue.length === 0)\n nodes = diff(comment, nodes, []);\n // or diffed, if these contains nodes or \"wires\"\n else if (typeof newValue[0] === 'object')\n nodes = diff(comment, nodes, newValue);\n // in all other cases the content is stringified as is\n else\n anyContent(String(newValue));\n break;\n }\n // if the new value is a DOM node, or a wire, and it's\n // different from the one already live, then it's diffed.\n // if the node is a fragment, it's appended once via its childNodes\n // There is no `else` here, meaning if the content\n // is not expected one, nothing happens, as easy as that.\n if (oldValue !== newValue) {\n if ('ELEMENT_NODE' in newValue) {\n oldValue = newValue;\n nodes = diff(\n comment,\n nodes,\n newValue.nodeType === 11 ?\n [...newValue.childNodes] :\n [newValue]\n );\n }\n else {\n const value = newValue.valueOf();\n if (value !== newValue)\n anyContent(value);\n }\n }\n break;\n case 'function':\n anyContent(newValue(comment));\n break;\n }\n };\n return anyContent;\n};\n\n// attributes can be:\n// * ref=${...} for hooks and other purposes\n// * aria=${...} for aria attributes\n// * ?boolean=${...} for boolean attributes\n// * .dataset=${...} for dataset related attributes\n// * .setter=${...} for Custom Elements setters or nodes with setters\n// such as buttons, details, options, select, etc\n// * @event=${...} to explicitly handle event listeners\n// * onevent=${...} to automatically handle event listeners\n// * generic=${...} to handle an attribute just like an attribute\nconst handleAttribute = (node, name/*, svg*/) => {\n switch (name[0]) {\n case '?': return boolean(node, name.slice(1), false);\n case '.': return setter(node, name.slice(1));\n case '@': return event(node, 'on' + name.slice(1));\n case 'o': if (name[1] === 'n') return event(node, name);\n }\n\n switch (name) {\n case 'ref': return ref(node);\n case 'aria': return aria(node);\n }\n\n return attribute(node, name/*, svg*/);\n};\n\n// each mapped update carries the update type and its path\n// the type is either node, attribute, or text, while\n// the path is how to retrieve the related node to update.\n// In the attribute case, the attribute name is also carried along.\nexport function handlers(options) {\n const {type, path} = options;\n const node = path.reduceRight(reducePath, this);\n return type === 'node' ?\n handleAnything(node) :\n (type === 'attr' ?\n handleAttribute(node, options.name/*, options.svg*/) :\n text(node));\n};\n","import {WeakMapSet} from '@webreflection/mapset';\nimport instrument from '@webreflection/uparser';\nimport {persistent} from '@webreflection/uwire';\n\nimport {handlers} from './handlers.js';\nimport {isArray, indexOf, createContent, createTreeWalker, importNode} from './utils.js';\n\n// from a fragment container, create an array of indexes\n// related to its child nodes, so that it's possible\n// to retrieve later on exact node via reducePath\nconst createPath = node => {\n const path = [];\n let {parentNode} = node;\n while (parentNode) {\n path.push(indexOf.call(parentNode.childNodes, node));\n node = parentNode;\n ({parentNode} = node);\n }\n return path;\n};\n\n// the prefix is used to identify either comments, attributes, or nodes\n// that contain the related unique id. In the attribute cases\n// isµX=\"attribute-name\" will be used to map current X update to that\n// attribute name, while comments will be like , to map\n// the update to that specific comment node, hence its parent.\n// style and textarea will have text content, and are handled\n// directly through text-only updates.\nconst prefix = 'isµ';\n\n// Template Literals are unique per scope and static, meaning a template\n// should be parsed once, and once only, as it will always represent the same\n// content, within the exact same amount of updates each time.\n// This cache relates each template to its unique content and updates.\nconst cache = new WeakMapSet;\n\n// a RegExp that helps checking nodes that cannot contain comments\nconst textOnly = /^(?:textarea|script|style|title|plaintext|xmp)$/;\n\nexport const createCache = () => ({\n stack: [], // each template gets a stack for each interpolation \"hole\"\n\n entry: null, // each entry contains details, such as:\n // * the template that is representing\n // * the type of node it represents (html or svg)\n // * the content fragment with all nodes\n // * the list of updates per each node (template holes)\n // * the \"wired\" node or fragment that will get updates\n // if the template or type are different from the previous one\n // the entry gets re-created each time\n\n wire: null // each rendered node represent some wired content and\n // this reference to the latest one. If different, the node\n // will be cleaned up and the new \"wire\" will be appended\n});\n\n// the entry stored in the rendered node cache, and per each \"hole\"\nconst createEntry = (type, template) => {\n const {content, updates} = mapUpdates(type, template);\n return {type, template, content, updates, wire: null};\n};\n\n// a template is instrumented to be able to retrieve where updates are needed.\n// Each unique template becomes a fragment, cloned once per each other\n// operation based on the same template, i.e. data => html`

    ${data}

    `\nconst mapTemplate = (type, template) => {\n const svg = type === 'svg';\n const text = instrument(template, prefix, svg);\n const content = createContent(text, svg);\n // once instrumented and reproduced as fragment, it's crawled\n // to find out where each update is in the fragment tree\n const tw = createTreeWalker(content, 1 | 128);\n const nodes = [];\n const length = template.length - 1;\n let i = 0;\n // updates are searched via unique names, linearly increased across the tree\n //
    \n let search = `${prefix}${i}`;\n while (i < length) {\n const node = tw.nextNode();\n // if not all updates are bound but there's nothing else to crawl\n // it means that there is something wrong with the template.\n if (!node)\n throw `bad template: ${text}`;\n // if the current node is a comment, and it contains isµX\n // it means the update should take care of any content\n if (node.nodeType === 8) {\n // The only comments to be considered are those\n // which content is exactly the same as the searched one.\n if (node.data === search) {\n nodes.push({type: 'node', path: createPath(node)});\n search = `${prefix}${++i}`;\n }\n }\n else {\n // if the node is not a comment, loop through all its attributes\n // named isµX and relate attribute updates to this node and the\n // attribute name, retrieved through node.getAttribute(\"isµX\")\n // the isµX attribute will be removed as irrelevant for the layout\n // let svg = -1;\n while (node.hasAttribute(search)) {\n nodes.push({\n type: 'attr',\n path: createPath(node),\n name: node.getAttribute(search)\n });\n node.removeAttribute(search);\n search = `${prefix}${++i}`;\n }\n // if the node was a style, textarea, or others, check its content\n // and if it is then update tex-only this node\n if (\n textOnly.test(node.localName) &&\n node.textContent.trim() === ``\n ){\n node.textContent = '';\n nodes.push({type: 'text', path: createPath(node)});\n search = `${prefix}${++i}`;\n }\n }\n }\n // once all nodes to update, or their attributes, are known, the content\n // will be cloned in the future to represent the template, and all updates\n // related to such content retrieved right away without needing to re-crawl\n // the exact same template, and its content, more than once.\n return {content, nodes};\n};\n\n// if a template is unknown, perform the previous mapping, otherwise grab\n// its details such as the fragment with all nodes, and updates info.\nconst mapUpdates = (type, template) => {\n const {content, nodes} = (\n cache.get(template) ||\n cache.set(template, mapTemplate(type, template))\n );\n // clone deeply the fragment\n const fragment = importNode(content, true);\n // and relate an update handler per each node that needs one\n const updates = nodes.map(handlers, fragment);\n // return the fragment and all updates to use within its nodes\n return {content: fragment, updates};\n};\n\n// as html and svg can be nested calls, but no parent node is known\n// until rendered somewhere, the unroll operation is needed to\n// discover what to do with each interpolation, which will result\n// into an update operation.\nexport const unroll = (info, {type, template, values}) => {\n // interpolations can contain holes and arrays, so these need\n // to be recursively discovered\n const length = unrollValues(info, values);\n let {entry} = info;\n // if the cache entry is either null or different from the template\n // and the type this unroll should resolve, create a new entry\n // assigning a new content fragment and the list of updates.\n if (!entry || (entry.template !== template || entry.type !== type))\n info.entry = (entry = createEntry(type, template));\n const {content, updates, wire} = entry;\n // even if the fragment and its nodes is not live yet,\n // it is already possible to update via interpolations values.\n for (let i = 0; i < length; i++)\n updates[i](values[i]);\n // if the entry was new, or representing a different template or type,\n // create a new persistent entity to use during diffing.\n // This is simply a DOM node, when the template has a single container,\n // as in `

    `, or a \"wire\" in `

    ` and similar cases.\n return wire || (entry.wire = persistent(content));\n};\n\n// the stack retains, per each interpolation value, the cache\n// related to each interpolation value, or null, if the render\n// was conditional and the value is not special (Array or Hole)\nconst unrollValues = ({stack}, values) => {\n const {length} = values;\n for (let i = 0; i < length; i++) {\n const hole = values[i];\n // each Hole gets unrolled and re-assigned as value\n // so that domdiff will deal with a node/wire, not with a hole\n if (hole instanceof Hole)\n values[i] = unroll(\n stack[i] || (stack[i] = createCache()),\n hole\n );\n // arrays are recursively resolved so that each entry will contain\n // also a DOM node or a wire, hence it can be diffed if/when needed\n else if (isArray(hole))\n unrollValues(stack[i] || (stack[i] = createCache()), hole);\n // if the value is nothing special, the stack doesn't need to retain data\n // this is useful also to cleanup previously retained data, if the value\n // was a Hole, or an Array, but not anymore, i.e.:\n // const update = content => html`
    ${content}
    `;\n // update(listOfItems); update(null); update(html`hole`)\n else\n stack[i] = null;\n }\n if (length < stack.length)\n stack.splice(length);\n return length;\n};\n\n/**\n * Holds all details wrappers needed to render the content further on.\n * @constructor\n * @param {string} type The hole type, either `html` or `svg`.\n * @param {string[]} template The template literals used to the define the content.\n * @param {Array} values Zero, one, or more interpolated values to render.\n */\nexport class Hole {\n constructor(type, template, values) {\n this.type = type;\n this.template = template;\n this.values = values;\n }\n};\n","import {MapSet, WeakMapSet} from '@webreflection/mapset';\n\nimport {Hole, createCache, unroll} from './rabbit.js';\n\n// both `html` and `svg` template literal tags are polluted\n// with a `for(ref[, id])` and a `node` tag too\nconst tag = type => {\n // both `html` and `svg` tags have their own cache\n const keyed = new WeakMapSet;\n // keyed operations always re-use the same cache and unroll\n // the template and its interpolations right away\n const fixed = cache => (template, ...values) => unroll(\n cache,\n {type, template, values}\n );\n return Object.assign(\n // non keyed operations are recognized as instance of Hole\n // during the \"unroll\", recursively resolved and updated\n (template, ...values) => new Hole(type, template, values),\n {\n // keyed operations need a reference object, usually the parent node\n // which is showing keyed results, and optionally a unique id per each\n // related node, handy with JSON results and mutable list of objects\n // that usually carry a unique identifier\n for(ref, id) {\n const memo = keyed.get(ref) || keyed.set(ref, new MapSet);\n return memo.get(id) || memo.set(id, fixed(createCache()));\n },\n // it is possible to create one-off content out of the box via node tag\n // this might return the single created node, or a fragment with all\n // nodes present at the root level and, of course, their child nodes\n node: (template, ...values) => unroll(createCache(), new Hole(type, template, values)).valueOf()\n }\n );\n};\n\n// each rendered node gets its own cache\nconst cache = new WeakMapSet;\n\n// rendering means understanding what `html` or `svg` tags returned\n// and it relates a specific node to its own unique cache.\n// Each time the content to render changes, the node is cleaned up\n// and the new new content is appended, and if such content is a Hole\n// then it's \"unrolled\" to resolve all its inner nodes.\nconst render = (where, what) => {\n const hole = typeof what === 'function' ? what() : what;\n const info = cache.get(where) || cache.set(where, createCache());\n const wire = hole instanceof Hole ? unroll(info, hole) : hole;\n if (wire !== info.wire) {\n info.wire = wire;\n // valueOf() simply returns the node itself, but in case it was a \"wire\"\n // it will eventually re-append all nodes to its fragment so that such\n // fragment can be re-appended many times in a meaningful way\n // (wires are basically persistent fragments facades with special behavior)\n where.replaceChildren(wire.valueOf());\n }\n return where;\n};\n\nconst html = tag('html');\nconst svg = tag('svg');\n\nexport {Hole, render, html, svg};\n","/* remove eslint errors to see if there is something really wrong */\n/*eslint quotes: [0]*/\n/*eslint indent: [0]*/\n/*eslint vars-on-top: [0]*/\n/*eslint yoda: 0*/\n/*eslint curly: 0*/\n/*eslint no-implicit-coercion: 0*/\n/*eslint newline-after-var: 0*/\n/*eslint space-before-function-paren: 0*/\n/*eslint block-spacing: 0*/\n/*eslint brace-style: 0*/\n/*eslint complexity: 0*/\n/*eslint one-var: 0*/\n/*eslint eqeqeq: 0*/\n/*eslint object-curly-spacing: 0*/\n/*eslint quote-props: 0*/\n/*eslint key-spacing: 0*/\n/*eslint valid-jsdoc: 0*/\n/*eslint func-style: 0*/\n/*eslint no-nested-ternary: 0*/\n/*eslint operator-linebreak: 0*/\n/*eslint no-multi-spaces: 0*/\n/*eslint no-constant-condition: 0*/\n/*eslint comma-spacing: 0*/\n/*eslint no-else-return: 0*/\n/*eslint no-warning-comments: 0*/\n/*eslint default-case: 0*/\n/*eslint consistent-return: 0*/\n/*eslint no-undefined: 0*/\n/*eslint no-new-func: 0*/\n/*eslint max-nested-callbacks: 0*/\n/*eslint padded-blocks: 0*/\n/*eslint no-self-compare: 0*/\n/*eslint no-multiple-empty-lines: 0*/\n/*eslint no-new: 0*/\n/*eslint no-unused-vars: 0*/\n\"use strict\";\n\nvar window = { document: {} };\n\n/* We need to tell ESLint what variables are being exported */\n/* exported\n angular,\n msie,\n jqLite,\n jQuery,\n slice,\n splice,\n push,\n toString,\n ngMinErr,\n angularModule,\n uid,\n REGEX_STRING_REGEXP,\n VALIDITY_STATE_PROPERTY,\n\n lowercase,\n uppercase,\n manualLowercase,\n manualUppercase,\n nodeName_,\n isArrayLike,\n forEach,\n forEachSorted,\n reverseParams,\n nextUid,\n setHashKey,\n extend,\n toInt,\n inherit,\n merge,\n noop,\n identity,\n valueFn,\n isUndefined,\n isDefined,\n isObject,\n isBlankObject,\n isString,\n isNumber,\n isNumberNaN,\n isDate,\n isArray,\n isFunction,\n isRegExp,\n isWindow,\n isScope,\n isFile,\n isFormData,\n isBlob,\n isBoolean,\n isPromiseLike,\n trim,\n escapeForRegexp,\n isElement,\n makeMap,\n includes,\n arrayRemove,\n copy,\n equals,\n csp,\n jq,\n concat,\n sliceArgs,\n bind,\n toJsonReplacer,\n toJson,\n fromJson,\n convertTimezoneToLocal,\n timezoneToOffset,\n startingTag,\n tryDecodeURIComponent,\n parseKeyValue,\n toKeyValue,\n encodeUriSegment,\n encodeUriQuery,\n angularInit,\n bootstrap,\n getTestability,\n snake_case,\n bindJQuery,\n assertArg,\n assertArgFn,\n assertNotHasOwnProperty,\n getter,\n getBlockNodes,\n hasOwnProperty,\n createMap,\n stringify,\n\n NODE_TYPE_ELEMENT,\n NODE_TYPE_ATTRIBUTE,\n NODE_TYPE_TEXT,\n NODE_TYPE_COMMENT,\n NODE_TYPE_DOCUMENT,\n NODE_TYPE_DOCUMENT_FRAGMENT\n*/\n\n////////////////////////////////////\n\n/**\n * @ngdoc module\n * @name ng\n * @module ng\n * @installation\n * @description\n *\n * # ng (core module)\n * The ng module is loaded by default when an AngularJS application is started. The module itself\n * contains the essential components for an AngularJS application to function. The table below\n * lists a high level breakdown of each of the services/factories, filters, directives and testing\n * components available within this core module.\n *\n *
    \n */\n\nvar NODE_TYPE_ELEMENT = 1;\nvar NODE_TYPE_ATTRIBUTE = 2;\nvar NODE_TYPE_TEXT = 3;\nvar NODE_TYPE_COMMENT = 8;\nvar NODE_TYPE_DOCUMENT = 9;\nvar NODE_TYPE_DOCUMENT_FRAGMENT = 11;\nvar REGEX_STRING_REGEXP = /^\\/(.+)\\/([a-z]*)$/;\n\n// The name of a form control's ValidityState property.\n// This is used so that it's possible for internal tests to create mock ValidityStates.\nvar VALIDITY_STATE_PROPERTY = \"validity\";\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar lowercase = function (string) {\n\treturn isString(string) ? string.toLowerCase() : string;\n};\nvar uppercase = function (string) {\n\treturn isString(string) ? string.toUpperCase() : string;\n};\n\n/**\n * @ngdoc function\n * @name angular.isArray\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Array`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Array`.\n */\nvar isArray = Array.isArray;\n\nvar ngAttrPrefixes = [\"ng-\", \"data-ng-\", \"ng:\", \"x-ng-\"];\n\nvar manualLowercase = function (s) {\n\t/* eslint-disable no-bitwise */\n\treturn isString(s)\n\t\t? s.replace(/[A-Z]/g, function (ch) {\n\t\t\t\treturn String.fromCharCode(ch.charCodeAt(0) | 32);\n\t\t })\n\t\t: s;\n\t/* eslint-enable */\n};\nvar manualUppercase = function (s) {\n\t/* eslint-disable no-bitwise */\n\treturn isString(s)\n\t\t? s.replace(/[a-z]/g, function (ch) {\n\t\t\t\treturn String.fromCharCode(ch.charCodeAt(0) & ~32);\n\t\t })\n\t\t: s;\n\t/* eslint-enable */\n};\n\n// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish\n// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods\n// with correct but slower alternatives. See https://github.com/angular/angular.js/issues/11387\nif (\"i\" !== \"I\".toLowerCase()) {\n\tlowercase = manualLowercase;\n\tuppercase = manualUppercase;\n}\n\nvar msie, // holds major version number for IE, or NaN if UA is not IE.\n\tjqLite, // delay binding since jQuery could be loaded after us.\n\tjQuery, // delay binding\n\tslice = [].slice,\n\tsplice = [].splice,\n\tpush = [].push,\n\ttoString = Object.prototype.toString,\n\tgetPrototypeOf = Object.getPrototypeOf,\n\tngMinErr = minErr(\"ng\"),\n\t/** @name angular */\n\tangular = window.angular || (window.angular = {}),\n\tangularModule,\n\tuid = 0;\n\n/**\n * documentMode is an IE-only property\n * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx\n */\nmsie = window.document.documentMode;\n\n/**\n * @private\n * @param {*} obj\n * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,\n * String ...)\n */\nfunction isArrayLike(obj) {\n\t// `null`, `undefined` and `window` are not array-like\n\tif (obj == null || isWindow(obj)) return false;\n\n\t// arrays, strings and jQuery/jqLite objects are array like\n\t// * jqLite is either the jQuery or jqLite constructor function\n\t// * we have to check the existence of jqLite first as this method is called\n\t// via the forEach method when constructing the jqLite object in the first place\n\tif (isArray(obj) || isString(obj) || (jqLite && obj instanceof jqLite))\n\t\treturn true;\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// \"length\" in obj used to prevent JIT error (gh-11508)\n\tvar length = \"length\" in Object(obj) && obj.length;\n\n\t// NodeList objects (with `item` method) and\n\t// other objects with suitable length characteristics are array-like\n\treturn (\n\t\tisNumber(length) &&\n\t\t((length >= 0 && (length - 1 in obj || obj instanceof Array)) ||\n\t\t\ttypeof obj.item === \"function\")\n\t);\n}\n\n/**\n * @ngdoc function\n * @name angular.forEach\n * @module ng\n * @kind function\n *\n * @description\n * Invokes the `iterator` function once for each item in `obj` collection, which can be either an\n * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value`\n * is the value of an object property or an array element, `key` is the object property key or\n * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.\n *\n * It is worth noting that `.forEach` does not iterate over inherited properties because it filters\n * using the `hasOwnProperty` method.\n *\n * Unlike ES262's\n * [Array.prototype.forEach](http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18),\n * providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just\n * return the value provided.\n *\n ```js\n var values = {name: 'misko', gender: 'male'};\n var log = [];\n angular.forEach(values, function(value, key) {\n this.push(key + ': ' + value);\n }, log);\n expect(log).toEqual(['name: misko', 'gender: male']);\n ```\n *\n * @param {Object|Array} obj Object to iterate over.\n * @param {Function} iterator Iterator function.\n * @param {Object=} context Object to become context (`this`) for the iterator function.\n * @returns {Object|Array} Reference to `obj`.\n */\n\nfunction forEach(obj, iterator, context) {\n\tvar key, length;\n\tif (obj) {\n\t\tif (isFunction(obj)) {\n\t\t\tfor (key in obj) {\n\t\t\t\tif (\n\t\t\t\t\tkey !== \"prototype\" &&\n\t\t\t\t\tkey !== \"length\" &&\n\t\t\t\t\tkey !== \"name\" &&\n\t\t\t\t\tobj.hasOwnProperty(key)\n\t\t\t\t) {\n\t\t\t\t\titerator.call(context, obj[key], key, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isArray(obj) || isArrayLike(obj)) {\n\t\t\tvar isPrimitive = typeof obj !== \"object\";\n\t\t\tfor (key = 0, length = obj.length; key < length; key++) {\n\t\t\t\tif (isPrimitive || key in obj) {\n\t\t\t\t\titerator.call(context, obj[key], key, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (obj.forEach && obj.forEach !== forEach) {\n\t\t\tobj.forEach(iterator, context, obj);\n\t\t} else if (isBlankObject(obj)) {\n\t\t\t// createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty\n\t\t\t// eslint-disable-next-line guard-for-in\n\t\t\tfor (key in obj) {\n\t\t\t\titerator.call(context, obj[key], key, obj);\n\t\t\t}\n\t\t} else if (typeof obj.hasOwnProperty === \"function\") {\n\t\t\t// Slow path for objects inheriting Object.prototype, hasOwnProperty check needed\n\t\t\tfor (key in obj) {\n\t\t\t\tif (obj.hasOwnProperty(key)) {\n\t\t\t\t\titerator.call(context, obj[key], key, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Slow path for objects which do not have a method `hasOwnProperty`\n\t\t\tfor (key in obj) {\n\t\t\t\tif (hasOwnProperty.call(obj, key)) {\n\t\t\t\t\titerator.call(context, obj[key], key, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn obj;\n}\n\nfunction forEachSorted(obj, iterator, context) {\n\tvar keys = Object.keys(obj).sort();\n\tfor (var i = 0; i < keys.length; i++) {\n\t\titerator.call(context, obj[keys[i]], keys[i]);\n\t}\n\treturn keys;\n}\n\n/**\n * when using forEach the params are value, key, but it is often useful to have key, value.\n * @param {function(string, *)} iteratorFn\n * @returns {function(*, string)}\n */\nfunction reverseParams(iteratorFn) {\n\treturn function (value, key) {\n\t\titeratorFn(key, value);\n\t};\n}\n\n/**\n * A consistent way of creating unique IDs in angular.\n *\n * Using simple numbers allows us to generate 28.6 million unique ids per second for 10 years before\n * we hit number precision issues in JavaScript.\n *\n * Math.pow(2,53) / 60 / 60 / 24 / 365 / 10 = 28.6M\n *\n * @returns {number} an unique alpha-numeric string\n */\nfunction nextUid() {\n\treturn ++uid;\n}\n\n/**\n * Set or clear the hashkey for an object.\n * @param obj object\n * @param h the hashkey (!truthy to delete the hashkey)\n */\nfunction setHashKey(obj, h) {\n\tif (h) {\n\t\tobj.$$hashKey = h;\n\t} else {\n\t\tdelete obj.$$hashKey;\n\t}\n}\n\nfunction baseExtend(dst, objs, deep) {\n\tvar h = dst.$$hashKey;\n\n\tfor (var i = 0, ii = objs.length; i < ii; ++i) {\n\t\tvar obj = objs[i];\n\t\tif (!isObject(obj) && !isFunction(obj)) continue;\n\t\tvar keys = Object.keys(obj);\n\t\tfor (var j = 0, jj = keys.length; j < jj; j++) {\n\t\t\tvar key = keys[j];\n\t\t\tvar src = obj[key];\n\n\t\t\tif (deep && isObject(src)) {\n\t\t\t\tif (isDate(src)) {\n\t\t\t\t\tdst[key] = new Date(src.valueOf());\n\t\t\t\t} else if (isRegExp(src)) {\n\t\t\t\t\tdst[key] = new RegExp(src);\n\t\t\t\t} else if (src.nodeName) {\n\t\t\t\t\tdst[key] = src.cloneNode(true);\n\t\t\t\t} else if (isElement(src)) {\n\t\t\t\t\tdst[key] = src.clone();\n\t\t\t\t} else {\n\t\t\t\t\tif (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {};\n\t\t\t\t\tbaseExtend(dst[key], [src], true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdst[key] = src;\n\t\t\t}\n\t\t}\n\t}\n\n\tsetHashKey(dst, h);\n\treturn dst;\n}\n\n/**\n * @ngdoc function\n * @name angular.extend\n * @module ng\n * @kind function\n *\n * @description\n * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)\n * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so\n * by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`.\n *\n * **Note:** Keep in mind that `angular.extend` does not support recursive merge (deep copy). Use\n * {@link angular.merge} for this.\n *\n * @param {Object} dst Destination object.\n * @param {...Object} src Source object(s).\n * @returns {Object} Reference to `dst`.\n */\nfunction extend(dst) {\n\treturn baseExtend(dst, slice.call(arguments, 1), false);\n}\n\n/**\n * @ngdoc function\n * @name angular.merge\n * @module ng\n * @kind function\n *\n * @description\n * Deeply extends the destination object `dst` by copying own enumerable properties from the `src` object(s)\n * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so\n * by passing an empty object as the target: `var object = angular.merge({}, object1, object2)`.\n *\n * Unlike {@link angular.extend extend()}, `merge()` recursively descends into object properties of source\n * objects, performing a deep copy.\n *\n * @param {Object} dst Destination object.\n * @param {...Object} src Source object(s).\n * @returns {Object} Reference to `dst`.\n */\nfunction merge(dst) {\n\treturn baseExtend(dst, slice.call(arguments, 1), true);\n}\n\nfunction toInt(str) {\n\treturn parseInt(str, 10);\n}\n\nvar isNumberNaN =\n\tNumber.isNaN ||\n\tfunction isNumberNaN(num) {\n\t\t// eslint-disable-next-line no-self-compare\n\t\treturn num !== num;\n\t};\n\nfunction inherit(parent, extra) {\n\treturn extend(Object.create(parent), extra);\n}\n\n/**\n * @ngdoc function\n * @name angular.noop\n * @module ng\n * @kind function\n *\n * @description\n * A function that performs no operations. This function can be useful when writing code in the\n * functional style.\n ```js\n function foo(callback) {\n var result = calculateResult();\n (callback || angular.noop)(result);\n }\n ```\n */\nfunction noop() {}\nnoop.$inject = [];\n\n/**\n * @ngdoc function\n * @name angular.identity\n * @module ng\n * @kind function\n *\n * @description\n * A function that returns its first argument. This function is useful when writing code in the\n * functional style.\n *\n ```js\n function transformer(transformationFn, value) {\n return (transformationFn || angular.identity)(value);\n };\n\n // E.g.\n function getResult(fn, input) {\n return (fn || angular.identity)(input);\n };\n\n getResult(function(n) { return n * 2; }, 21); // returns 42\n getResult(null, 21); // returns 21\n getResult(undefined, 21); // returns 21\n ```\n *\n * @param {*} value to be returned.\n * @returns {*} the value passed in.\n */\nfunction identity($) {\n\treturn $;\n}\nidentity.$inject = [];\n\nfunction valueFn(value) {\n\treturn function valueRef() {\n\t\treturn value;\n\t};\n}\n\nfunction hasCustomToString(obj) {\n\treturn isFunction(obj.toString) && obj.toString !== toString;\n}\n\n/**\n * @ngdoc function\n * @name angular.isUndefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is undefined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is undefined.\n */\nfunction isUndefined(value) {\n\treturn typeof value === \"undefined\";\n}\n\n/**\n * @ngdoc function\n * @name angular.isDefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is defined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is defined.\n */\nfunction isDefined(value) {\n\treturn typeof value !== \"undefined\";\n}\n\n/**\n * @ngdoc function\n * @name angular.isObject\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not\n * considered to be objects. Note that JavaScript arrays are objects.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Object` but not `null`.\n */\nfunction isObject(value) {\n\t// http://jsperf.com/isobject4\n\treturn value !== null && typeof value === \"object\";\n}\n\n/**\n * Determine if a value is an object with a null prototype\n *\n * @returns {boolean} True if `value` is an `Object` with a null prototype\n */\nfunction isBlankObject(value) {\n\treturn value !== null && typeof value === \"object\" && !getPrototypeOf(value);\n}\n\n/**\n * @ngdoc function\n * @name angular.isString\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `String`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `String`.\n */\nfunction isString(value) {\n\treturn typeof value === \"string\";\n}\n\n/**\n * @ngdoc function\n * @name angular.isNumber\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Number`.\n *\n * This includes the \"special\" numbers `NaN`, `+Infinity` and `-Infinity`.\n *\n * If you wish to exclude these then you can use the native\n * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite)\n * method.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Number`.\n */\nfunction isNumber(value) {\n\treturn typeof value === \"number\";\n}\n\n/**\n * @ngdoc function\n * @name angular.isDate\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a value is a date.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Date`.\n */\nfunction isDate(value) {\n\treturn toString.call(value) === \"[object Date]\";\n}\n\n/**\n * @ngdoc function\n * @name angular.isFunction\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Function`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Function`.\n */\nfunction isFunction(value) {\n\treturn typeof value === \"function\";\n}\n\n/**\n * Determines if a value is a regular expression object.\n *\n * @private\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `RegExp`.\n */\nfunction isRegExp(value) {\n\treturn toString.call(value) === \"[object RegExp]\";\n}\n\n/**\n * Checks if `obj` is a window object.\n *\n * @private\n * @param {*} obj Object to check\n * @returns {boolean} True if `obj` is a window obj.\n */\nfunction isWindow(obj) {\n\treturn obj && obj.window === obj;\n}\n\nfunction isScope(obj) {\n\treturn obj && obj.$evalAsync && obj.$watch;\n}\n\nfunction isFile(obj) {\n\treturn toString.call(obj) === \"[object File]\";\n}\n\nfunction isFormData(obj) {\n\treturn toString.call(obj) === \"[object FormData]\";\n}\n\nfunction isBlob(obj) {\n\treturn toString.call(obj) === \"[object Blob]\";\n}\n\nfunction isBoolean(value) {\n\treturn typeof value === \"boolean\";\n}\n\nfunction isPromiseLike(obj) {\n\treturn obj && isFunction(obj.then);\n}\n\nvar TYPED_ARRAY_REGEXP =\n\t/^\\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array\\]$/;\nfunction isTypedArray(value) {\n\treturn (\n\t\tvalue &&\n\t\tisNumber(value.length) &&\n\t\tTYPED_ARRAY_REGEXP.test(toString.call(value))\n\t);\n}\n\nfunction isArrayBuffer(obj) {\n\treturn toString.call(obj) === \"[object ArrayBuffer]\";\n}\n\nvar trim = function (value) {\n\treturn isString(value) ? value.trim() : value;\n};\n\n// Copied from:\n// http://docs.closure-library.googlecode.com/git/local_closure_goog_string_string.js.source.html#line1021\n// Prereq: s is a string.\nvar escapeForRegexp = function (s) {\n\treturn (\n\t\ts\n\t\t\t.replace(/([-()\\[\\]{}+?*.$\\^|,:#= 0) {\n\t\tarray.splice(index, 1);\n\t}\n\treturn index;\n}\n\n/**\n * @ngdoc function\n * @name angular.copy\n * @module ng\n * @kind function\n *\n * @description\n * Creates a deep copy of `source`, which should be an object or an array.\n *\n * * If no destination is supplied, a copy of the object or array is created.\n * * If a destination is provided, all of its elements (for arrays) or properties (for objects)\n * are deleted and then all elements/properties from the source are copied to it.\n * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.\n * * If `source` is identical to `destination` an exception will be thrown.\n *\n *
    \n *
    \n * Only enumerable properties are taken into account. Non-enumerable properties (both on `source`\n * and on `destination`) will be ignored.\n *
    \n *\n * @param {*} source The source that will be used to make a copy.\n * Can be any type, including primitives, `null`, and `undefined`.\n * @param {(Object|Array)=} destination Destination into which the source is copied. If\n * provided, must be of the same type as `source`.\n * @returns {*} The copy or updated `destination`, if `destination` was specified.\n *\n * @example\n \n \n
    \n
    \n
    \n
    \n Gender: \n
    \n \n \n \n
    form = {{user | json}}
    \n
    master = {{master | json}}
    \n
    \n
    \n \n // Module: copyExample\n angular.\n module('copyExample', []).\n controller('ExampleController', ['$scope', function($scope) {\n $scope.master = {};\n\n $scope.reset = function() {\n // Example with 1 argument\n $scope.user = angular.copy($scope.master);\n };\n\n $scope.update = function(user) {\n // Example with 2 arguments\n angular.copy(user, $scope.master);\n };\n\n $scope.reset();\n }]);\n \n
    \n */\nfunction copy(source, destination) {\n\tvar stackSource = [];\n\tvar stackDest = [];\n\n\tif (destination) {\n\t\tif (isTypedArray(destination) || isArrayBuffer(destination)) {\n\t\t\tthrow ngMinErr(\n\t\t\t\t\"cpta\",\n\t\t\t\t\"Can't copy! TypedArray destination cannot be mutated.\"\n\t\t\t);\n\t\t}\n\t\tif (source === destination) {\n\t\t\tthrow ngMinErr(\n\t\t\t\t\"cpi\",\n\t\t\t\t\"Can't copy! Source and destination are identical.\"\n\t\t\t);\n\t\t}\n\n\t\t// Empty the destination object\n\t\tif (isArray(destination)) {\n\t\t\tdestination.length = 0;\n\t\t} else {\n\t\t\tforEach(destination, function (value, key) {\n\t\t\t\tif (key !== \"$$hashKey\") {\n\t\t\t\t\tdelete destination[key];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tstackSource.push(source);\n\t\tstackDest.push(destination);\n\t\treturn copyRecurse(source, destination);\n\t}\n\n\treturn copyElement(source);\n\n\tfunction copyRecurse(source, destination) {\n\t\tvar h = destination.$$hashKey;\n\t\tvar key;\n\t\tif (isArray(source)) {\n\t\t\tfor (var i = 0, ii = source.length; i < ii; i++) {\n\t\t\t\tdestination.push(copyElement(source[i]));\n\t\t\t}\n\t\t} else if (isBlankObject(source)) {\n\t\t\t// createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty\n\t\t\t// eslint-disable-next-line guard-for-in\n\t\t\tfor (key in source) {\n\t\t\t\tdestination[key] = copyElement(source[key]);\n\t\t\t}\n\t\t} else if (source && typeof source.hasOwnProperty === \"function\") {\n\t\t\t// Slow path, which must rely on hasOwnProperty\n\t\t\tfor (key in source) {\n\t\t\t\tif (source.hasOwnProperty(key)) {\n\t\t\t\t\tdestination[key] = copyElement(source[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Slowest path --- hasOwnProperty can't be called as a method\n\t\t\tfor (key in source) {\n\t\t\t\tif (hasOwnProperty.call(source, key)) {\n\t\t\t\t\tdestination[key] = copyElement(source[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsetHashKey(destination, h);\n\t\treturn destination;\n\t}\n\n\tfunction copyElement(source) {\n\t\t// Simple values\n\t\tif (!isObject(source)) {\n\t\t\treturn source;\n\t\t}\n\n\t\t// Already copied values\n\t\tvar index = stackSource.indexOf(source);\n\t\tif (index !== -1) {\n\t\t\treturn stackDest[index];\n\t\t}\n\n\t\tif (isWindow(source) || isScope(source)) {\n\t\t\tthrow ngMinErr(\n\t\t\t\t\"cpws\",\n\t\t\t\t\"Can't copy! Making copies of Window or Scope instances is not supported.\"\n\t\t\t);\n\t\t}\n\n\t\tvar needsRecurse = false;\n\t\tvar destination = copyType(source);\n\n\t\tif (destination === undefined) {\n\t\t\tdestination = isArray(source)\n\t\t\t\t? []\n\t\t\t\t: Object.create(getPrototypeOf(source));\n\t\t\tneedsRecurse = true;\n\t\t}\n\n\t\tstackSource.push(source);\n\t\tstackDest.push(destination);\n\n\t\treturn needsRecurse ? copyRecurse(source, destination) : destination;\n\t}\n\n\tfunction copyType(source) {\n\t\tswitch (toString.call(source)) {\n\t\t\tcase \"[object Int8Array]\":\n\t\t\tcase \"[object Int16Array]\":\n\t\t\tcase \"[object Int32Array]\":\n\t\t\tcase \"[object Float32Array]\":\n\t\t\tcase \"[object Float64Array]\":\n\t\t\tcase \"[object Uint8Array]\":\n\t\t\tcase \"[object Uint8ClampedArray]\":\n\t\t\tcase \"[object Uint16Array]\":\n\t\t\tcase \"[object Uint32Array]\":\n\t\t\t\treturn new source.constructor(\n\t\t\t\t\tcopyElement(source.buffer),\n\t\t\t\t\tsource.byteOffset,\n\t\t\t\t\tsource.length\n\t\t\t\t);\n\n\t\t\tcase \"[object ArrayBuffer]\":\n\t\t\t\t// Support: IE10\n\t\t\t\tif (!source.slice) {\n\t\t\t\t\t// If we're in this case we know the environment supports ArrayBuffer\n\t\t\t\t\t/* eslint-disable no-undef */\n\t\t\t\t\tvar copied = new ArrayBuffer(source.byteLength);\n\t\t\t\t\tnew Uint8Array(copied).set(new Uint8Array(source));\n\t\t\t\t\t/* eslint-enable */\n\t\t\t\t\treturn copied;\n\t\t\t\t}\n\t\t\t\treturn source.slice(0);\n\n\t\t\tcase \"[object Boolean]\":\n\t\t\tcase \"[object Number]\":\n\t\t\tcase \"[object String]\":\n\t\t\tcase \"[object Date]\":\n\t\t\t\treturn new source.constructor(source.valueOf());\n\n\t\t\tcase \"[object RegExp]\":\n\t\t\t\tvar re = new RegExp(\n\t\t\t\t\tsource.source,\n\t\t\t\t\tsource.toString().match(/[^\\/]*$/)[0]\n\t\t\t\t);\n\t\t\t\tre.lastIndex = source.lastIndex;\n\t\t\t\treturn re;\n\n\t\t\tcase \"[object Blob]\":\n\t\t\t\treturn new source.constructor([source], { type: source.type });\n\t\t}\n\n\t\tif (isFunction(source.cloneNode)) {\n\t\t\treturn source.cloneNode(true);\n\t\t}\n\t}\n}\n\n/**\n * @ngdoc function\n * @name angular.equals\n * @module ng\n * @kind function\n *\n * @description\n * Determines if two objects or two values are equivalent. Supports value types, regular\n * expressions, arrays and objects.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n * comparing them with `angular.equals`.\n * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)\n * * Both values represent the same regular expression (In JavaScript,\n * /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual\n * representation matches).\n *\n * During a property comparison, properties of `function` type and properties with names\n * that begin with `$` are ignored.\n *\n * Scope and DOMWindow objects are being compared only by identify (`===`).\n *\n * @param {*} o1 Object or value to compare.\n * @param {*} o2 Object or value to compare.\n * @returns {boolean} True if arguments are equal.\n *\n * @example\n \n \n
    \n
    \n

    User 1

    \n Name: \n Age: \n\n

    User 2

    \n Name: \n Age: \n\n
    \n
    \n \n
    \n User 1:
    {{user1 | json}}
    \n User 2:
    {{user2 | json}}
    \n Equal:
    {{result}}
    \n \n
    \n
    \n \n angular.module('equalsExample', []).controller('ExampleController', ['$scope', function($scope) {\n $scope.user1 = {};\n $scope.user2 = {};\n $scope.compare = function() {\n $scope.result = angular.equals($scope.user1, $scope.user2);\n };\n }]);\n \n
    \n */\nfunction equals(o1, o2) {\n\tif (o1 === o2) return true;\n\tif (o1 === null || o2 === null) return false;\n\t// eslint-disable-next-line no-self-compare\n\tif (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n\tvar t1 = typeof o1,\n\t\tt2 = typeof o2,\n\t\tlength,\n\t\tkey,\n\t\tkeySet;\n\tif (t1 === t2 && t1 === \"object\") {\n\t\tif (isArray(o1)) {\n\t\t\tif (!isArray(o2)) return false;\n\t\t\tif ((length = o1.length) === o2.length) {\n\t\t\t\tfor (key = 0; key < length; key++) {\n\t\t\t\t\tif (!equals(o1[key], o2[key])) return false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (isDate(o1)) {\n\t\t\tif (!isDate(o2)) return false;\n\t\t\treturn equals(o1.getTime(), o2.getTime());\n\t\t} else if (isRegExp(o1)) {\n\t\t\tif (!isRegExp(o2)) return false;\n\t\t\treturn o1.toString() === o2.toString();\n\t\t} else {\n\t\t\tif (\n\t\t\t\tisScope(o1) ||\n\t\t\t\tisScope(o2) ||\n\t\t\t\tisWindow(o1) ||\n\t\t\t\tisWindow(o2) ||\n\t\t\t\tisArray(o2) ||\n\t\t\t\tisDate(o2) ||\n\t\t\t\tisRegExp(o2)\n\t\t\t)\n\t\t\t\treturn false;\n\t\t\tkeySet = createMap();\n\t\t\tfor (key in o1) {\n\t\t\t\tif (key.charAt(0) === \"$\" || isFunction(o1[key])) continue;\n\t\t\t\tif (!equals(o1[key], o2[key])) return false;\n\t\t\t\tkeySet[key] = true;\n\t\t\t}\n\t\t\tfor (key in o2) {\n\t\t\t\tif (\n\t\t\t\t\t!(key in keySet) &&\n\t\t\t\t\tkey.charAt(0) !== \"$\" &&\n\t\t\t\t\tisDefined(o2[key]) &&\n\t\t\t\t\t!isFunction(o2[key])\n\t\t\t\t)\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nvar csp = function () {\n\tif (!isDefined(csp.rules)) {\n\t\tvar ngCspElement =\n\t\t\twindow.document.querySelector(\"[ng-csp]\") ||\n\t\t\twindow.document.querySelector(\"[data-ng-csp]\");\n\n\t\tif (ngCspElement) {\n\t\t\tvar ngCspAttribute =\n\t\t\t\tngCspElement.getAttribute(\"ng-csp\") ||\n\t\t\t\tngCspElement.getAttribute(\"data-ng-csp\");\n\t\t\tcsp.rules = {\n\t\t\t\tnoUnsafeEval:\n\t\t\t\t\t!ngCspAttribute || ngCspAttribute.indexOf(\"no-unsafe-eval\") !== -1,\n\t\t\t\tnoInlineStyle:\n\t\t\t\t\t!ngCspAttribute || ngCspAttribute.indexOf(\"no-inline-style\") !== -1,\n\t\t\t};\n\t\t} else {\n\t\t\tcsp.rules = {\n\t\t\t\tnoUnsafeEval: noUnsafeEval(),\n\t\t\t\tnoInlineStyle: false,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn csp.rules;\n\n\tfunction noUnsafeEval() {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-new, no-new-func\n\t\t\tnew Function(\"\");\n\t\t\treturn false;\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n};\n\n/**\n * @ngdoc directive\n * @module ng\n * @name ngJq\n *\n * @element ANY\n * @param {string=} ngJq the name of the library available under `window`\n * to be used for angular.element\n * @description\n * Use this directive to force the angular.element library. This should be\n * used to force either jqLite by leaving ng-jq blank or setting the name of\n * the jquery variable under window (eg. jQuery).\n *\n * Since angular looks for this directive when it is loaded (doesn't wait for the\n * DOMContentLoaded event), it must be placed on an element that comes before the script\n * which loads angular. Also, only the first instance of `ng-jq` will be used and all\n * others ignored.\n *\n * @example\n * This example shows how to force jqLite using the `ngJq` directive to the `html` tag.\n ```html\n \n \n ...\n ...\n \n ```\n * @example\n * This example shows how to use a jQuery based library of a different name.\n * The library name must be available at the top most 'window'.\n ```html\n \n \n ...\n ...\n \n ```\n */\nvar jq = function () {\n\tif (isDefined(jq.name_)) return jq.name_;\n\tvar el;\n\tvar i,\n\t\tii = ngAttrPrefixes.length,\n\t\tprefix,\n\t\tname;\n\tfor (i = 0; i < ii; ++i) {\n\t\tprefix = ngAttrPrefixes[i];\n\t\tel = window.document.querySelector(\n\t\t\t\"[\" + prefix.replace(\":\", \"\\\\:\") + \"jq]\"\n\t\t);\n\t\tif (el) {\n\t\t\tname = el.getAttribute(prefix + \"jq\");\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn (jq.name_ = name);\n};\n\nfunction concat(array1, array2, index) {\n\treturn array1.concat(slice.call(array2, index));\n}\n\nfunction sliceArgs(args, startIndex) {\n\treturn slice.call(args, startIndex || 0);\n}\n\n/**\n * @ngdoc function\n * @name angular.bind\n * @module ng\n * @kind function\n *\n * @description\n * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for\n * `fn`). You can supply optional `args` that are prebound to the function. This feature is also\n * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as\n * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application).\n *\n * @param {Object} self Context which `fn` should be evaluated in.\n * @param {function()} fn Function to be bound.\n * @param {...*} args Optional arguments to be prebound to the `fn` function call.\n * @returns {function()} Function that wraps the `fn` with all the specified bindings.\n */\n// eslint-disable-next-line consistent-this\nfunction bind(self, fn) {\n\tvar curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];\n\tif (isFunction(fn) && !(fn instanceof RegExp)) {\n\t\treturn curryArgs.length\n\t\t\t? function () {\n\t\t\t\t\treturn arguments.length\n\t\t\t\t\t\t? fn.apply(self, concat(curryArgs, arguments, 0))\n\t\t\t\t\t\t: fn.apply(self, curryArgs);\n\t\t\t }\n\t\t\t: function () {\n\t\t\t\t\treturn arguments.length ? fn.apply(self, arguments) : fn.call(self);\n\t\t\t };\n\t} else {\n\t\t// In IE, native methods are not functions so they cannot be bound (note: they don't need to be).\n\t\treturn fn;\n\t}\n}\n\nfunction toJsonReplacer(key, value) {\n\tvar val = value;\n\n\tif (\n\t\ttypeof key === \"string\" &&\n\t\tkey.charAt(0) === \"$\" &&\n\t\tkey.charAt(1) === \"$\"\n\t) {\n\t\tval = undefined;\n\t} else if (isWindow(value)) {\n\t\tval = \"$WINDOW\";\n\t} else if (value && window.document === value) {\n\t\tval = \"$DOCUMENT\";\n\t} else if (isScope(value)) {\n\t\tval = \"$SCOPE\";\n\t}\n\n\treturn val;\n}\n\n/**\n * @ngdoc function\n * @name angular.toJson\n * @module ng\n * @kind function\n *\n * @description\n * Serializes input into a JSON-formatted string. Properties with leading $$ characters will be\n * stripped since angular uses this notation internally.\n *\n * @param {Object|Array|Date|string|number|boolean} obj Input to be serialized into JSON.\n * @param {boolean|number} [pretty=2] If set to true, the JSON output will contain newlines and whitespace.\n * If set to an integer, the JSON output will contain that many spaces per indentation.\n * @returns {string|undefined} JSON-ified string representing `obj`.\n * @knownIssue\n *\n * The Safari browser throws a `RangeError` instead of returning `null` when it tries to stringify a `Date`\n * object with an invalid date value. The only reliable way to prevent this is to monkeypatch the\n * `Date.prototype.toJSON` method as follows:\n *\n * ```\n * var _DatetoJSON = Date.prototype.toJSON;\n * Date.prototype.toJSON = function() {\n * try {\n * return _DatetoJSON.call(this);\n * } catch(e) {\n * if (e instanceof RangeError) {\n * return null;\n * }\n * throw e;\n * }\n * };\n * ```\n *\n * See https://github.com/angular/angular.js/pull/14221 for more information.\n */\nfunction toJson(obj, pretty) {\n\tif (isUndefined(obj)) return undefined;\n\tif (!isNumber(pretty)) {\n\t\tpretty = pretty ? 2 : null;\n\t}\n\treturn JSON.stringify(obj, toJsonReplacer, pretty);\n}\n\n/**\n * @ngdoc function\n * @name angular.fromJson\n * @module ng\n * @kind function\n *\n * @description\n * Deserializes a JSON string.\n *\n * @param {string} json JSON string to deserialize.\n * @returns {Object|Array|string|number} Deserialized JSON string.\n */\nfunction fromJson(json) {\n\treturn isString(json) ? JSON.parse(json) : json;\n}\n\nvar ALL_COLONS = /:/g;\nfunction timezoneToOffset(timezone, fallback) {\n\t// IE/Edge do not \"understand\" colon (`:`) in timezone\n\ttimezone = timezone.replace(ALL_COLONS, \"\");\n\tvar requestedTimezoneOffset =\n\t\tDate.parse(\"Jan 01, 1970 00:00:00 \" + timezone) / 60000;\n\treturn isNumberNaN(requestedTimezoneOffset)\n\t\t? fallback\n\t\t: requestedTimezoneOffset;\n}\n\nfunction addDateMinutes(date, minutes) {\n\tdate = new Date(date.getTime());\n\tdate.setMinutes(date.getMinutes() + minutes);\n\treturn date;\n}\n\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n\treverse = reverse ? -1 : 1;\n\tvar dateTimezoneOffset = date.getTimezoneOffset();\n\tvar timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n\treturn addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));\n}\n\n/**\n * @returns {string} Returns the string representation of the element.\n */\nfunction startingTag(element) {\n\telement = jqLite(element).clone();\n\ttry {\n\t\t// turns out IE does not let you set .html() on elements which\n\t\t// are not allowed to have children. So we just ignore it.\n\t\telement.empty();\n\t} catch (e) {\n\t\t/* empty */\n\t}\n\tvar elemHtml = jqLite(\"
    \").append(element).html();\n\ttry {\n\t\treturn element[0].nodeType === NODE_TYPE_TEXT\n\t\t\t? lowercase(elemHtml)\n\t\t\t: elemHtml\n\t\t\t\t\t.match(/^(<[^>]+>)/)[1]\n\t\t\t\t\t.replace(/^<([\\w\\-]+)/, function (match, nodeName) {\n\t\t\t\t\t\treturn \"<\" + lowercase(nodeName);\n\t\t\t\t\t});\n\t} catch (e) {\n\t\treturn lowercase(elemHtml);\n\t}\n}\n\n/////////////////////////////////////////////////\n\n/**\n * Tries to decode the URI component without throwing an exception.\n *\n * @private\n * @param str value potential URI component to check.\n * @returns {boolean} True if `value` can be decoded\n * with the decodeURIComponent function.\n */\nfunction tryDecodeURIComponent(value) {\n\ttry {\n\t\treturn decodeURIComponent(value);\n\t} catch (e) {\n\t\t// Ignore any invalid uri component.\n\t}\n}\n\n/**\n * Parses an escaped url query string into key-value pairs.\n * @returns {Object.}\n */\nfunction parseKeyValue(/**string*/ keyValue) {\n\tvar obj = {};\n\tforEach((keyValue || \"\").split(\"&\"), function (keyValue) {\n\t\tvar splitPoint, key, val;\n\t\tif (keyValue) {\n\t\t\tkey = keyValue = keyValue.replace(/\\+/g, \"%20\");\n\t\t\tsplitPoint = keyValue.indexOf(\"=\");\n\t\t\tif (splitPoint !== -1) {\n\t\t\t\tkey = keyValue.substring(0, splitPoint);\n\t\t\t\tval = keyValue.substring(splitPoint + 1);\n\t\t\t}\n\t\t\tkey = tryDecodeURIComponent(key);\n\t\t\tif (isDefined(key)) {\n\t\t\t\tval = isDefined(val) ? tryDecodeURIComponent(val) : true;\n\t\t\t\tif (!hasOwnProperty.call(obj, key)) {\n\t\t\t\t\tobj[key] = val;\n\t\t\t\t} else if (isArray(obj[key])) {\n\t\t\t\t\tobj[key].push(val);\n\t\t\t\t} else {\n\t\t\t\t\tobj[key] = [obj[key], val];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn obj;\n}\n\nfunction toKeyValue(obj) {\n\tvar parts = [];\n\tforEach(obj, function (value, key) {\n\t\tif (isArray(value)) {\n\t\t\tforEach(value, function (arrayValue) {\n\t\t\t\tparts.push(\n\t\t\t\t\tencodeUriQuery(key, true) +\n\t\t\t\t\t\t(arrayValue === true ? \"\" : \"=\" + encodeUriQuery(arrayValue, true))\n\t\t\t\t);\n\t\t\t});\n\t\t} else {\n\t\t\tparts.push(\n\t\t\t\tencodeUriQuery(key, true) +\n\t\t\t\t\t(value === true ? \"\" : \"=\" + encodeUriQuery(value, true))\n\t\t\t);\n\t\t}\n\t});\n\treturn parts.length ? parts.join(\"&\") : \"\";\n}\n\n/**\n * We need our custom method because encodeURIComponent is too aggressive and doesn't follow\n * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path\n * segments:\n * segment = *pchar\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriSegment(val) {\n\treturn encodeUriQuery(val, true)\n\t\t.replace(/%26/gi, \"&\")\n\t\t.replace(/%3D/gi, \"=\")\n\t\t.replace(/%2B/gi, \"+\");\n}\n\n/**\n * This method is intended for encoding *key* or *value* parts of query component. We need a custom\n * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be\n * encoded per http://tools.ietf.org/html/rfc3986:\n * query = *( pchar / \"/\" / \"?\" )\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriQuery(val, pctEncodeSpaces) {\n\treturn encodeURIComponent(val)\n\t\t.replace(/%40/gi, \"@\")\n\t\t.replace(/%3A/gi, \":\")\n\t\t.replace(/%24/g, \"$\")\n\t\t.replace(/%2C/gi, \",\")\n\t\t.replace(/%3B/gi, \";\")\n\t\t.replace(/%20/g, pctEncodeSpaces ? \"%20\" : \"+\");\n}\n\nfunction getNgAttribute(element, ngAttr) {\n\tvar attr,\n\t\ti,\n\t\tii = ngAttrPrefixes.length;\n\tfor (i = 0; i < ii; ++i) {\n\t\tattr = ngAttrPrefixes[i] + ngAttr;\n\t\tif (isString((attr = element.getAttribute(attr)))) {\n\t\t\treturn attr;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction allowAutoBootstrap(document) {\n\tif (!document.currentScript) {\n\t\treturn true;\n\t}\n\tvar src = document.currentScript.getAttribute(\"src\");\n\tvar link = document.createElement(\"a\");\n\tlink.href = src;\n\tvar scriptProtocol = link.protocol;\n\tvar docLoadProtocol = document.location.protocol;\n\tif (\n\t\t(scriptProtocol === \"resource:\" ||\n\t\t\tscriptProtocol === \"chrome-extension:\") &&\n\t\tdocLoadProtocol !== scriptProtocol\n\t) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\n// Cached as it has to run during loading so that document.currentScript is available.\nvar isAutoBootstrapAllowed = allowAutoBootstrap(window.document);\n\n/**\n * @ngdoc directive\n * @name ngApp\n * @module ng\n *\n * @element ANY\n * @param {angular.Module} ngApp an optional application\n * {@link angular.module module} name to load.\n * @param {boolean=} ngStrictDi if this attribute is present on the app element, the injector will be\n * created in \"strict-di\" mode. This means that the application will fail to invoke functions which\n * do not use explicit function annotation (and are thus unsuitable for minification), as described\n * in {@link guide/di the Dependency Injection guide}, and useful debugging info will assist in\n * tracking down the root of these bugs.\n *\n * @description\n *\n * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive\n * designates the **root element** of the application and is typically placed near the root element\n * of the page - e.g. on the `` or `` tags.\n *\n * There are a few things to keep in mind when using `ngApp`:\n * - only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`\n * found in the document will be used to define the root element to auto-bootstrap as an\n * application. To run multiple applications in an HTML document you must manually bootstrap them using\n * {@link angular.bootstrap} instead.\n * - AngularJS applications cannot be nested within each other.\n * - Do not use a directive that uses {@link ng.$compile#transclusion transclusion} on the same element as `ngApp`.\n * This includes directives such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and\n * {@link ngRoute.ngView `ngView`}.\n * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector},\n * causing animations to stop working and making the injector inaccessible from outside the app.\n *\n * You can specify an **AngularJS module** to be used as the root module for the application. This\n * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It\n * should contain the application code needed or have dependencies on other modules that will\n * contain the code. See {@link angular.module} for more information.\n *\n * In the example below if the `ngApp` directive were not placed on the `html` element then the\n * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`\n * would not be resolved to `3`.\n *\n * `ngApp` is the easiest, and most common way to bootstrap an application.\n *\n \n \n
    \n I can add: {{a}} + {{b}} = {{ a+b }}\n
    \n
    \n \n angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n });\n \n
    \n *\n * Using `ngStrictDi`, you would see something like this:\n *\n \n \n
    \n
    \n I can add: {{a}} + {{b}} = {{ a+b }}\n\n

    This renders because the controller does not fail to\n instantiate, by using explicit annotation style (see\n script.js for details)\n

    \n
    \n\n
    \n Name:
    \n Hello, {{name}}!\n\n

    This renders because the controller does not fail to\n instantiate, by using explicit annotation style\n (see script.js for details)\n

    \n
    \n\n
    \n I can add: {{a}} + {{b}} = {{ a+b }}\n\n

    The controller could not be instantiated, due to relying\n on automatic function annotations (which are disabled in\n strict mode). As such, the content of this section is not\n interpolated, and there should be an error in your web console.\n

    \n
    \n
    \n
    \n \n angular.module('ngAppStrictDemo', [])\n // BadController will fail to instantiate, due to relying on automatic function annotation,\n // rather than an explicit annotation\n .controller('BadController', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n })\n // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated,\n // due to using explicit annotations using the array style and $inject property, respectively.\n .controller('GoodController1', ['$scope', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n }])\n .controller('GoodController2', GoodController2);\n function GoodController2($scope) {\n $scope.name = 'World';\n }\n GoodController2.$inject = ['$scope'];\n \n \n div[ng-controller] {\n margin-bottom: 1em;\n -webkit-border-radius: 4px;\n border-radius: 4px;\n border: 1px solid;\n padding: .5em;\n }\n div[ng-controller^=Good] {\n border-color: #d6e9c6;\n background-color: #dff0d8;\n color: #3c763d;\n }\n div[ng-controller^=Bad] {\n border-color: #ebccd1;\n background-color: #f2dede;\n color: #a94442;\n margin-bottom: 0;\n }\n \n
    \n */\n\n/**\n * @ngdoc function\n * @name angular.bootstrap\n * @module ng\n * @description\n * Use this function to manually start up angular application.\n *\n * For more information, see the {@link guide/bootstrap Bootstrap guide}.\n *\n * Angular will detect if it has been loaded into the browser more than once and only allow the\n * first loaded script to be bootstrapped and will report a warning to the browser console for\n * each of the subsequent scripts. This prevents strange results in applications, where otherwise\n * multiple instances of Angular try to work on the DOM.\n *\n *
    \n * **Note:** Protractor based end-to-end tests cannot use this function to bootstrap manually.\n * They must use {@link ng.directive:ngApp ngApp}.\n *
    \n *\n *
    \n * **Note:** Do not bootstrap the app on an element with a directive that uses {@link ng.$compile#transclusion transclusion},\n * such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and {@link ngRoute.ngView `ngView`}.\n * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector},\n * causing animations to stop working and making the injector inaccessible from outside the app.\n *
    \n *\n * ```html\n * \n * \n * \n *
    \n * {{greeting}}\n *
    \n *\n * \n * \n * \n * \n * ```\n *\n * @param {DOMElement} element DOM element which is the root of angular application.\n * @param {Array=} modules an array of modules to load into the application.\n * Each item in the array should be the name of a predefined module or a (DI annotated)\n * function that will be invoked by the injector as a `config` block.\n * See: {@link angular.module modules}\n * @param {Object=} config an object for defining configuration options for the application. The\n * following keys are supported:\n *\n * * `strictDi` - disable automatic function annotation for the application. This is meant to\n * assist in finding bugs which break minified code. Defaults to `false`.\n *\n * @returns {auto.$injector} Returns the newly created injector for this app.\n */\nfunction bootstrap(element, modules, config) {\n\tif (!isObject(config)) config = {};\n\tvar defaultConfig = {\n\t\tstrictDi: false,\n\t};\n\tconfig = extend(defaultConfig, config);\n\tvar doBootstrap = function () {\n\t\telement = jqLite(element);\n\n\t\tif (element.injector()) {\n\t\t\tvar tag =\n\t\t\t\telement[0] === window.document ? \"document\" : startingTag(element);\n\t\t\t// Encode angle brackets to prevent input from being sanitized to empty string #8683.\n\t\t\tthrow ngMinErr(\n\t\t\t\t\"btstrpd\",\n\t\t\t\t\"App already bootstrapped with this element '{0}'\",\n\t\t\t\ttag.replace(//, \">\")\n\t\t\t);\n\t\t}\n\n\t\tmodules = modules || [];\n\t\tmodules.unshift([\n\t\t\t\"$provide\",\n\t\t\tfunction ($provide) {\n\t\t\t\t$provide.value(\"$rootElement\", element);\n\t\t\t},\n\t\t]);\n\n\t\tif (config.debugInfoEnabled) {\n\t\t\t// Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`.\n\t\t\tmodules.push([\n\t\t\t\t\"$compileProvider\",\n\t\t\t\tfunction ($compileProvider) {\n\t\t\t\t\t$compileProvider.debugInfoEnabled(true);\n\t\t\t\t},\n\t\t\t]);\n\t\t}\n\n\t\tmodules.unshift(\"ng\");\n\t};\n\n\tvar NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;\n\tvar NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;\n\n\tif (window && NG_ENABLE_DEBUG_INFO.test(window.name)) {\n\t\tconfig.debugInfoEnabled = true;\n\t\twindow.name = window.name.replace(NG_ENABLE_DEBUG_INFO, \"\");\n\t}\n\n\tif (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {\n\t\treturn doBootstrap();\n\t}\n\n\twindow.name = window.name.replace(NG_DEFER_BOOTSTRAP, \"\");\n\tangular.resumeBootstrap = function (extraModules) {\n\t\tforEach(extraModules, function (module) {\n\t\t\tmodules.push(module);\n\t\t});\n\t\treturn doBootstrap();\n\t};\n\n\tif (isFunction(angular.resumeDeferredBootstrap)) {\n\t\tangular.resumeDeferredBootstrap();\n\t}\n}\n\n/**\n * @ngdoc function\n * @name angular.reloadWithDebugInfo\n * @module ng\n * @description\n * Use this function to reload the current application with debug information turned on.\n * This takes precedence over a call to `$compileProvider.debugInfoEnabled(false)`.\n *\n * See {@link ng.$compileProvider#debugInfoEnabled} for more.\n */\nfunction reloadWithDebugInfo() {\n\twindow.name = \"NG_ENABLE_DEBUG_INFO!\" + window.name;\n\twindow.location.reload();\n}\n\n/**\n * @name angular.getTestability\n * @module ng\n * @description\n * Get the testability service for the instance of Angular on the given\n * element.\n * @param {DOMElement} element DOM element which is the root of angular application.\n */\nfunction getTestability(rootElement) {\n\tvar injector = angular.element(rootElement).injector();\n\tif (!injector) {\n\t\tthrow ngMinErr(\n\t\t\t\"test\",\n\t\t\t\"no injector found for element argument to getTestability\"\n\t\t);\n\t}\n\treturn injector.get(\"$$testability\");\n}\n\nvar SNAKE_CASE_REGEXP = /[A-Z]/g;\nfunction snake_case(name, separator) {\n\tseparator = separator || \"_\";\n\treturn name.replace(SNAKE_CASE_REGEXP, function (letter, pos) {\n\t\treturn (pos ? separator : \"\") + letter.toLowerCase();\n\t});\n}\n\nvar bindJQueryFired = false;\nfunction bindJQuery() {\n\tvar originalCleanData;\n\n\tif (bindJQueryFired) {\n\t\treturn;\n\t}\n\n\t// bind to jQuery if present;\n\tvar jqName = jq();\n\tjQuery = isUndefined(jqName)\n\t\t? window.jQuery // use jQuery (if present)\n\t\t: !jqName\n\t\t? undefined // use jqLite\n\t\t: window[jqName]; // use jQuery specified by `ngJq`\n\n\t// Use jQuery if it exists with proper functionality, otherwise default to us.\n\t// Angular 1.2+ requires jQuery 1.7+ for on()/off() support.\n\t// Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older\n\t// versions. It will not work for sure with jQuery <1.7, though.\n\tif (jQuery && jQuery.fn.on) {\n\t\tjqLite = jQuery;\n\t\textend(jQuery.fn, {\n\t\t\tscope: JQLitePrototype.scope,\n\t\t\tisolateScope: JQLitePrototype.isolateScope,\n\t\t\tcontroller: JQLitePrototype.controller,\n\t\t\tinjector: JQLitePrototype.injector,\n\t\t\tinheritedData: JQLitePrototype.inheritedData,\n\t\t});\n\n\t\t// All nodes removed from the DOM via various jQuery APIs like .remove()\n\t\t// are passed through jQuery.cleanData. Monkey-patch this method to fire\n\t\t// the $destroy event on all removed nodes.\n\t\toriginalCleanData = jQuery.cleanData;\n\t\tjQuery.cleanData = function (elems) {\n\t\t\tvar events;\n\t\t\tfor (var i = 0, elem; (elem = elems[i]) != null; i++) {\n\t\t\t\tevents = jQuery._data(elem, \"events\");\n\t\t\t\tif (events && events.$destroy) {\n\t\t\t\t\tjQuery(elem).triggerHandler(\"$destroy\");\n\t\t\t\t}\n\t\t\t}\n\t\t\toriginalCleanData(elems);\n\t\t};\n\t} else {\n\t\tjqLite = JQLite;\n\t}\n\n\tangular.element = jqLite;\n\n\t// Prevent double-proxying.\n\tbindJQueryFired = true;\n}\n\n/**\n * throw error if the argument is falsy.\n */\nfunction assertArg(arg, name, reason) {\n\tif (!arg) {\n\t\tthrow ngMinErr(\n\t\t\t\"areq\",\n\t\t\t\"Argument '{0}' is {1}\",\n\t\t\tname || \"?\",\n\t\t\treason || \"required\"\n\t\t);\n\t}\n\treturn arg;\n}\n\nfunction assertArgFn(arg, name, acceptArrayAnnotation) {\n\tif (acceptArrayAnnotation && isArray(arg)) {\n\t\targ = arg[arg.length - 1];\n\t}\n\n\tassertArg(\n\t\tisFunction(arg),\n\t\tname,\n\t\t\"not a function, got \" +\n\t\t\t(arg && typeof arg === \"object\"\n\t\t\t\t? arg.constructor.name || \"Object\"\n\t\t\t\t: typeof arg)\n\t);\n\treturn arg;\n}\n\n/**\n * throw error if the name given is hasOwnProperty\n * @param {String} name the name to test\n * @param {String} context the context in which the name is used, such as module or directive\n */\nfunction assertNotHasOwnProperty(name, context) {\n\tif (name === \"hasOwnProperty\") {\n\t\tthrow ngMinErr(\n\t\t\t\"badname\",\n\t\t\t\"hasOwnProperty is not a valid {0} name\",\n\t\t\tcontext\n\t\t);\n\t}\n}\n\n/**\n * Return the value accessible from the object by path. Any undefined traversals are ignored\n * @param {Object} obj starting object\n * @param {String} path path to traverse\n * @param {boolean} [bindFnToScope=true]\n * @returns {Object} value as accessible by path\n */\n//TODO(misko): this function needs to be removed\nfunction getter(obj, path, bindFnToScope) {\n\tif (!path) return obj;\n\tvar keys = path.split(\".\");\n\tvar key;\n\tvar lastInstance = obj;\n\tvar len = keys.length;\n\n\tfor (var i = 0; i < len; i++) {\n\t\tkey = keys[i];\n\t\tif (obj) {\n\t\t\tobj = (lastInstance = obj)[key];\n\t\t}\n\t}\n\tif (!bindFnToScope && isFunction(obj)) {\n\t\treturn bind(lastInstance, obj);\n\t}\n\treturn obj;\n}\n\n/**\n * Return the DOM siblings between the first and last node in the given array.\n * @param {Array} array like object\n * @returns {Array} the inputted object or a jqLite collection containing the nodes\n */\nfunction getBlockNodes(nodes) {\n\t// TODO(perf): update `nodes` instead of creating a new object?\n\tvar node = nodes[0];\n\tvar endNode = nodes[nodes.length - 1];\n\tvar blockNodes;\n\n\tfor (var i = 1; node !== endNode && (node = node.nextSibling); i++) {\n\t\tif (blockNodes || nodes[i] !== node) {\n\t\t\tif (!blockNodes) {\n\t\t\t\tblockNodes = jqLite(slice.call(nodes, 0, i));\n\t\t\t}\n\t\t\tblockNodes.push(node);\n\t\t}\n\t}\n\n\treturn blockNodes || nodes;\n}\n\n/**\n * Creates a new object without a prototype. This object is useful for lookup without having to\n * guard against prototypically inherited properties via hasOwnProperty.\n *\n * Related micro-benchmarks:\n * - http://jsperf.com/object-create2\n * - http://jsperf.com/proto-map-lookup/2\n * - http://jsperf.com/for-in-vs-object-keys2\n *\n * @returns {Object}\n */\nfunction createMap() {\n\treturn Object.create(null);\n}\n\nfunction stringify(value) {\n\tif (value == null) {\n\t\t// null || undefined\n\t\treturn \"\";\n\t}\n\tswitch (typeof value) {\n\t\tcase \"string\":\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tvalue = \"\" + value;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif (hasCustomToString(value) && !isArray(value) && !isDate(value)) {\n\t\t\t\tvalue = value.toString();\n\t\t\t} else {\n\t\t\t\tvalue = toJson(value);\n\t\t\t}\n\t}\n\n\treturn value;\n}\n\n/* global toDebugString: true */\n\nfunction serializeObject(obj) {\n\tvar seen = [];\n\n\treturn JSON.stringify(obj, function (key, val) {\n\t\tval = toJsonReplacer(key, val);\n\t\tif (isObject(val)) {\n\t\t\tif (seen.indexOf(val) >= 0) return \"...\";\n\n\t\t\tseen.push(val);\n\t\t}\n\t\treturn val;\n\t});\n}\n\nfunction toDebugString(obj) {\n\tif (typeof obj === \"function\") {\n\t\treturn obj.toString().replace(/ \\{[\\s\\S]*$/, \"\");\n\t} else if (isUndefined(obj)) {\n\t\treturn \"undefined\";\n\t} else if (typeof obj !== \"string\") {\n\t\treturn serializeObject(obj);\n\t}\n\treturn obj;\n}\n\n/**\n * @description\n *\n * This object provides a utility for producing rich Error messages within\n * Angular. It can be called as follows:\n *\n * var exampleMinErr = minErr('example');\n * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);\n *\n * The above creates an instance of minErr in the example namespace. The\n * resulting error will have a namespaced error code of example.one. The\n * resulting error will replace {0} with the value of foo, and {1} with the\n * value of bar. The object is not restricted in the number of arguments it can\n * take.\n *\n * If fewer arguments are specified than necessary for interpolation, the extra\n * interpolation markers will be preserved in the final string.\n *\n * Since data will be parsed statically during a build step, some restrictions\n * are applied with respect to how minErr instances are created and called.\n * Instances should have names of the form namespaceMinErr for a minErr created\n * using minErr('namespace') . Error codes, namespaces and template strings\n * should all be static strings, not variables or general expressions.\n *\n * @param {string} module The namespace to use for the new minErr instance.\n * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning\n * error from returned function, for cases when a particular type of error is useful.\n * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance\n */\n\nfunction minErr(module, ErrorConstructor) {\n\tErrorConstructor = ErrorConstructor || Error;\n\treturn function () {\n\t\tvar SKIP_INDEXES = 2;\n\n\t\tvar templateArgs = arguments,\n\t\t\tcode = templateArgs[0],\n\t\t\tmessage = \"[\" + (module ? module + \":\" : \"\") + code + \"] \",\n\t\t\ttemplate = templateArgs[1],\n\t\t\tparamPrefix,\n\t\t\ti;\n\n\t\tmessage += template.replace(/\\{\\d+\\}/g, function (match) {\n\t\t\tvar index = +match.slice(1, -1),\n\t\t\t\tshiftedIndex = index + SKIP_INDEXES;\n\n\t\t\tif (shiftedIndex < templateArgs.length) {\n\t\t\t\treturn toDebugString(templateArgs[shiftedIndex]);\n\t\t\t}\n\n\t\t\treturn match;\n\t\t});\n\n\t\tmessage +=\n\t\t\t'\\nhttp://errors.angularjs.org/\"NG_VERSION_FULL\"/' +\n\t\t\t(module ? module + \"/\" : \"\") +\n\t\t\tcode;\n\n\t\tfor (\n\t\t\ti = SKIP_INDEXES, paramPrefix = \"?\";\n\t\t\ti < templateArgs.length;\n\t\t\ti++, paramPrefix = \"&\"\n\t\t) {\n\t\t\tmessage +=\n\t\t\t\tparamPrefix +\n\t\t\t\t\"p\" +\n\t\t\t\t(i - SKIP_INDEXES) +\n\t\t\t\t\"=\" +\n\t\t\t\tencodeURIComponent(toDebugString(templateArgs[i]));\n\t\t}\n\n\t\treturn new ErrorConstructor(message);\n\t};\n}\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Any commits to this file should be reviewed with security in mind. *\n * Changes to this file can potentially create security vulnerabilities. *\n * An approval from 2 Core members with history of modifying *\n * this file is required. *\n * *\n * Does the change somehow allow for arbitrary javascript to be executed? *\n * Or allows for someone to change the prototype of built-in objects? *\n * Or gives undesired access to variables likes document or window? *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\nvar $parseMinErr = minErr(\"$parse\");\n\nvar objectValueOf = {}.constructor.prototype.valueOf;\n\n// Sandboxing Angular Expressions\n// ------------------------------\n// Angular expressions are no longer sandboxed. So it is now even easier to access arbitrary JS code by\n// various means such as obtaining a reference to native JS functions like the Function constructor.\n//\n// As an example, consider the following Angular expression:\n//\n// {}.toString.constructor('alert(\"evil JS code\")')\n//\n// It is important to realize that if you create an expression from a string that contains user provided\n// content then it is possible that your application contains a security vulnerability to an XSS style attack.\n//\n// See https://docs.angularjs.org/guide/security\n\nfunction getStringValue(name) {\n\t// Property names must be strings. This means that non-string objects cannot be used\n\t// as keys in an object. Any non-string object, including a number, is typecasted\n\t// into a string via the toString method.\n\t// -- MDN, https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors#Property_names\n\t//\n\t// So, to ensure that we are checking the same `name` that JavaScript would use, we cast it\n\t// to a string. It's not always possible. If `name` is an object and its `toString` method is\n\t// 'broken' (doesn't return a string, isn't a function, etc.), an error will be thrown:\n\t//\n\t// TypeError: Cannot convert object to primitive value\n\t//\n\t// For performance reasons, we don't catch this error here and allow it to propagate up the call\n\t// stack. Note that you'll get the same error in JavaScript if you try to access a property using\n\t// such a 'broken' object as a key.\n\treturn name + \"\";\n}\n\nvar OPERATORS = createMap();\nforEach(\n\t\"+ - * / % === !== == != < > <= >= && || ! = |\".split(\" \"),\n\tfunction (operator) {\n\t\tOPERATORS[operator] = true;\n\t}\n);\nvar ESCAPE = {\n\tn: \"\\n\",\n\tf: \"\\f\",\n\tr: \"\\r\",\n\tt: \"\\t\",\n\tv: \"\\v\",\n\t\"'\": \"'\",\n\t'\"': '\"',\n};\n\n/////////////////////////////////////////\n\n/**\n * @constructor\n */\nvar Lexer = function Lexer(options) {\n\tthis.options = options;\n};\n\nLexer.prototype = {\n\tconstructor: Lexer,\n\n\tlex: function (text) {\n\t\tthis.text = text;\n\t\tthis.index = 0;\n\t\tthis.tokens = [];\n\n\t\twhile (this.index < this.text.length) {\n\t\t\tvar ch = this.text.charAt(this.index);\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tthis.readString(ch);\n\t\t\t} else if (\n\t\t\t\tthis.isNumber(ch) ||\n\t\t\t\t(ch === \".\" && this.isNumber(this.peek()))\n\t\t\t) {\n\t\t\t\tthis.readNumber();\n\t\t\t} else if (this.isIdentifierStart(this.peekMultichar())) {\n\t\t\t\tthis.readIdent();\n\t\t\t} else if (this.is(ch, \"(){}[].,;:?\")) {\n\t\t\t\tthis.tokens.push({ index: this.index, text: ch });\n\t\t\t\tthis.index++;\n\t\t\t} else if (this.isWhitespace(ch)) {\n\t\t\t\tthis.index++;\n\t\t\t} else {\n\t\t\t\tvar ch2 = ch + this.peek();\n\t\t\t\tvar ch3 = ch2 + this.peek(2);\n\t\t\t\tvar op1 = OPERATORS[ch];\n\t\t\t\tvar op2 = OPERATORS[ch2];\n\t\t\t\tvar op3 = OPERATORS[ch3];\n\t\t\t\tif (op1 || op2 || op3) {\n\t\t\t\t\tvar token = op3 ? ch3 : op2 ? ch2 : ch;\n\t\t\t\t\tthis.tokens.push({ index: this.index, text: token, operator: true });\n\t\t\t\t\tthis.index += token.length;\n\t\t\t\t} else {\n\t\t\t\t\tthis.throwError(\n\t\t\t\t\t\t\"Unexpected next character \",\n\t\t\t\t\t\tthis.index,\n\t\t\t\t\t\tthis.index + 1\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.tokens;\n\t},\n\n\tis: function (ch, chars) {\n\t\treturn chars.indexOf(ch) !== -1;\n\t},\n\n\tpeek: function (i) {\n\t\tvar num = i || 1;\n\t\treturn this.index + num < this.text.length\n\t\t\t? this.text.charAt(this.index + num)\n\t\t\t: false;\n\t},\n\n\tisNumber: function (ch) {\n\t\treturn \"0\" <= ch && ch <= \"9\" && typeof ch === \"string\";\n\t},\n\n\tisWhitespace: function (ch) {\n\t\t// IE treats non-breaking space as \\u00A0\n\t\treturn (\n\t\t\tch === \" \" ||\n\t\t\tch === \"\\r\" ||\n\t\t\tch === \"\\t\" ||\n\t\t\tch === \"\\n\" ||\n\t\t\tch === \"\\v\" ||\n\t\t\tch === \"\\u00A0\"\n\t\t);\n\t},\n\n\tisIdentifierStart: function (ch) {\n\t\treturn this.options.isIdentifierStart\n\t\t\t? this.options.isIdentifierStart(ch, this.codePointAt(ch))\n\t\t\t: this.isValidIdentifierStart(ch);\n\t},\n\n\tisValidIdentifierStart: function (ch) {\n\t\treturn (\n\t\t\t(\"a\" <= ch && ch <= \"z\") ||\n\t\t\t(\"A\" <= ch && ch <= \"Z\") ||\n\t\t\t\"_\" === ch ||\n\t\t\tch === \"$\"\n\t\t);\n\t},\n\n\tisIdentifierContinue: function (ch) {\n\t\treturn this.options.isIdentifierContinue\n\t\t\t? this.options.isIdentifierContinue(ch, this.codePointAt(ch))\n\t\t\t: this.isValidIdentifierContinue(ch);\n\t},\n\n\tisValidIdentifierContinue: function (ch, cp) {\n\t\treturn this.isValidIdentifierStart(ch, cp) || this.isNumber(ch);\n\t},\n\n\tcodePointAt: function (ch) {\n\t\tif (ch.length === 1) return ch.charCodeAt(0);\n\t\t// eslint-disable-next-line no-bitwise\n\t\treturn (ch.charCodeAt(0) << 10) + ch.charCodeAt(1) - 0x35fdc00;\n\t},\n\n\tpeekMultichar: function () {\n\t\tvar ch = this.text.charAt(this.index);\n\t\tvar peek = this.peek();\n\t\tif (!peek) {\n\t\t\treturn ch;\n\t\t}\n\t\tvar cp1 = ch.charCodeAt(0);\n\t\tvar cp2 = peek.charCodeAt(0);\n\t\tif (cp1 >= 0xd800 && cp1 <= 0xdbff && cp2 >= 0xdc00 && cp2 <= 0xdfff) {\n\t\t\treturn ch + peek;\n\t\t}\n\t\treturn ch;\n\t},\n\n\tisExpOperator: function (ch) {\n\t\treturn ch === \"-\" || ch === \"+\" || this.isNumber(ch);\n\t},\n\n\tthrowError: function (error, start, end) {\n\t\tend = end || this.index;\n\t\tvar colStr = isDefined(start)\n\t\t\t? \"s \" +\n\t\t\t start +\n\t\t\t \"-\" +\n\t\t\t this.index +\n\t\t\t \" [\" +\n\t\t\t this.text.substring(start, end) +\n\t\t\t \"]\"\n\t\t\t: \" \" + end;\n\t\tthrow $parseMinErr(\n\t\t\t\"lexerr\",\n\t\t\t\"Lexer Error: {0} at column{1} in expression [{2}].\",\n\t\t\terror,\n\t\t\tcolStr,\n\t\t\tthis.text\n\t\t);\n\t},\n\n\treadNumber: function () {\n\t\tvar number = \"\";\n\t\tvar start = this.index;\n\t\twhile (this.index < this.text.length) {\n\t\t\tvar ch = lowercase(this.text.charAt(this.index));\n\t\t\tif (ch === \".\" || this.isNumber(ch)) {\n\t\t\t\tnumber += ch;\n\t\t\t} else {\n\t\t\t\tvar peekCh = this.peek();\n\t\t\t\tif (ch === \"e\" && this.isExpOperator(peekCh)) {\n\t\t\t\t\tnumber += ch;\n\t\t\t\t} else if (\n\t\t\t\t\tthis.isExpOperator(ch) &&\n\t\t\t\t\tpeekCh &&\n\t\t\t\t\tthis.isNumber(peekCh) &&\n\t\t\t\t\tnumber.charAt(number.length - 1) === \"e\"\n\t\t\t\t) {\n\t\t\t\t\tnumber += ch;\n\t\t\t\t} else if (\n\t\t\t\t\tthis.isExpOperator(ch) &&\n\t\t\t\t\t(!peekCh || !this.isNumber(peekCh)) &&\n\t\t\t\t\tnumber.charAt(number.length - 1) === \"e\"\n\t\t\t\t) {\n\t\t\t\t\tthis.throwError(\"Invalid exponent\");\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.index++;\n\t\t}\n\t\tthis.tokens.push({\n\t\t\tindex: start,\n\t\t\ttext: number,\n\t\t\tconstant: true,\n\t\t\tvalue: Number(number),\n\t\t});\n\t},\n\n\treadIdent: function () {\n\t\tvar start = this.index;\n\t\tthis.index += this.peekMultichar().length;\n\t\twhile (this.index < this.text.length) {\n\t\t\tvar ch = this.peekMultichar();\n\t\t\tif (!this.isIdentifierContinue(ch)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.index += ch.length;\n\t\t}\n\t\tthis.tokens.push({\n\t\t\tindex: start,\n\t\t\ttext: this.text.slice(start, this.index),\n\t\t\tidentifier: true,\n\t\t});\n\t},\n\n\treadString: function (quote) {\n\t\tvar start = this.index;\n\t\tthis.index++;\n\t\tvar string = \"\";\n\t\tvar rawString = quote;\n\t\tvar escape = false;\n\t\twhile (this.index < this.text.length) {\n\t\t\tvar ch = this.text.charAt(this.index);\n\t\t\trawString += ch;\n\t\t\tif (escape) {\n\t\t\t\tif (ch === \"u\") {\n\t\t\t\t\tvar hex = this.text.substring(this.index + 1, this.index + 5);\n\t\t\t\t\tif (!hex.match(/[\\da-f]{4}/i)) {\n\t\t\t\t\t\tthis.throwError(\"Invalid unicode escape [\\\\u\" + hex + \"]\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.index += 4;\n\t\t\t\t\tstring += String.fromCharCode(parseInt(hex, 16));\n\t\t\t\t} else {\n\t\t\t\t\tvar rep = ESCAPE[ch];\n\t\t\t\t\tstring = string + (rep || ch);\n\t\t\t\t}\n\t\t\t\tescape = false;\n\t\t\t} else if (ch === \"\\\\\") {\n\t\t\t\tescape = true;\n\t\t\t} else if (ch === quote) {\n\t\t\t\tthis.index++;\n\t\t\t\tthis.tokens.push({\n\t\t\t\t\tindex: start,\n\t\t\t\t\ttext: rawString,\n\t\t\t\t\tconstant: true,\n\t\t\t\t\tvalue: string,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tstring += ch;\n\t\t\t}\n\t\t\tthis.index++;\n\t\t}\n\t\tthis.throwError(\"Unterminated quote\", start);\n\t},\n};\n\nvar AST = function AST(lexer, options) {\n\tthis.lexer = lexer;\n\tthis.options = options;\n};\n\nAST.Program = \"Program\";\nAST.ExpressionStatement = \"ExpressionStatement\";\nAST.AssignmentExpression = \"AssignmentExpression\";\nAST.ConditionalExpression = \"ConditionalExpression\";\nAST.LogicalExpression = \"LogicalExpression\";\nAST.BinaryExpression = \"BinaryExpression\";\nAST.UnaryExpression = \"UnaryExpression\";\nAST.CallExpression = \"CallExpression\";\nAST.MemberExpression = \"MemberExpression\";\nAST.Identifier = \"Identifier\";\nAST.Literal = \"Literal\";\nAST.ArrayExpression = \"ArrayExpression\";\nAST.Property = \"Property\";\nAST.ObjectExpression = \"ObjectExpression\";\nAST.ThisExpression = \"ThisExpression\";\nAST.LocalsExpression = \"LocalsExpression\";\n\n// Internal use only\nAST.NGValueParameter = \"NGValueParameter\";\n\nAST.prototype = {\n\tast: function (text) {\n\t\tthis.text = text;\n\t\tthis.tokens = this.lexer.lex(text);\n\n\t\tvar value = this.program();\n\n\t\tif (this.tokens.length !== 0) {\n\t\t\tthis.throwError(\"is an unexpected token\", this.tokens[0]);\n\t\t}\n\n\t\treturn value;\n\t},\n\n\tprogram: function () {\n\t\tvar body = [];\n\t\twhile (true) {\n\t\t\tif (this.tokens.length > 0 && !this.peek(\"}\", \")\", \";\", \"]\"))\n\t\t\t\tbody.push(this.expressionStatement());\n\t\t\tif (!this.expect(\";\")) {\n\t\t\t\treturn { type: AST.Program, body: body };\n\t\t\t}\n\t\t}\n\t},\n\n\texpressionStatement: function () {\n\t\treturn { type: AST.ExpressionStatement, expression: this.filterChain() };\n\t},\n\n\tfilterChain: function () {\n\t\tvar left = this.expression();\n\t\twhile (this.expect(\"|\")) {\n\t\t\tleft = this.filter(left);\n\t\t}\n\t\treturn left;\n\t},\n\n\texpression: function () {\n\t\treturn this.assignment();\n\t},\n\n\tassignment: function () {\n\t\tvar result = this.ternary();\n\t\tif (this.expect(\"=\")) {\n\t\t\tif (!isAssignable(result)) {\n\t\t\t\tthrow $parseMinErr(\"lval\", \"Trying to assign a value to a non l-value\");\n\t\t\t}\n\n\t\t\tresult = {\n\t\t\t\ttype: AST.AssignmentExpression,\n\t\t\t\tleft: result,\n\t\t\t\tright: this.assignment(),\n\t\t\t\toperator: \"=\",\n\t\t\t};\n\t\t}\n\t\treturn result;\n\t},\n\n\tternary: function () {\n\t\tvar test = this.logicalOR();\n\t\tvar alternate;\n\t\tvar consequent;\n\t\tif (this.expect(\"?\")) {\n\t\t\talternate = this.expression();\n\t\t\tif (this.consume(\":\")) {\n\t\t\t\tconsequent = this.expression();\n\t\t\t\treturn {\n\t\t\t\t\ttype: AST.ConditionalExpression,\n\t\t\t\t\ttest: test,\n\t\t\t\t\talternate: alternate,\n\t\t\t\t\tconsequent: consequent,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn test;\n\t},\n\n\tlogicalOR: function () {\n\t\tvar left = this.logicalAND();\n\t\twhile (this.expect(\"||\")) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.LogicalExpression,\n\t\t\t\toperator: \"||\",\n\t\t\t\tleft: left,\n\t\t\t\tright: this.logicalAND(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\tlogicalAND: function () {\n\t\tvar left = this.equality();\n\t\twhile (this.expect(\"&&\")) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.LogicalExpression,\n\t\t\t\toperator: \"&&\",\n\t\t\t\tleft: left,\n\t\t\t\tright: this.equality(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\tequality: function () {\n\t\tvar left = this.relational();\n\t\tvar token;\n\t\twhile ((token = this.expect(\"==\", \"!=\", \"===\", \"!==\"))) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.BinaryExpression,\n\t\t\t\toperator: token.text,\n\t\t\t\tleft: left,\n\t\t\t\tright: this.relational(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\trelational: function () {\n\t\tvar left = this.additive();\n\t\tvar token;\n\t\twhile ((token = this.expect(\"<\", \">\", \"<=\", \">=\"))) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.BinaryExpression,\n\t\t\t\toperator: token.text,\n\t\t\t\tleft: left,\n\t\t\t\tright: this.additive(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\tadditive: function () {\n\t\tvar left = this.multiplicative();\n\t\tvar token;\n\t\twhile ((token = this.expect(\"+\", \"-\"))) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.BinaryExpression,\n\t\t\t\toperator: token.text,\n\t\t\t\tleft: left,\n\t\t\t\tright: this.multiplicative(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\tmultiplicative: function () {\n\t\tvar left = this.unary();\n\t\tvar token;\n\t\twhile ((token = this.expect(\"*\", \"/\", \"%\"))) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.BinaryExpression,\n\t\t\t\toperator: token.text,\n\t\t\t\tleft: left,\n\t\t\t\tright: this.unary(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\tunary: function () {\n\t\tvar token;\n\t\tif ((token = this.expect(\"+\", \"-\", \"!\"))) {\n\t\t\treturn {\n\t\t\t\ttype: AST.UnaryExpression,\n\t\t\t\toperator: token.text,\n\t\t\t\tprefix: true,\n\t\t\t\targument: this.unary(),\n\t\t\t};\n\t\t} else {\n\t\t\treturn this.primary();\n\t\t}\n\t},\n\n\tprimary: function () {\n\t\tvar primary;\n\t\tif (this.expect(\"(\")) {\n\t\t\tprimary = this.filterChain();\n\t\t\tthis.consume(\")\");\n\t\t} else if (this.expect(\"[\")) {\n\t\t\tprimary = this.arrayDeclaration();\n\t\t} else if (this.expect(\"{\")) {\n\t\t\tprimary = this.object();\n\t\t} else if (this.selfReferential.hasOwnProperty(this.peek().text)) {\n\t\t\tprimary = copy(this.selfReferential[this.consume().text]);\n\t\t} else if (this.options.literals.hasOwnProperty(this.peek().text)) {\n\t\t\tprimary = {\n\t\t\t\ttype: AST.Literal,\n\t\t\t\tvalue: this.options.literals[this.consume().text],\n\t\t\t};\n\t\t} else if (this.peek().identifier) {\n\t\t\tprimary = this.identifier();\n\t\t} else if (this.peek().constant) {\n\t\t\tprimary = this.constant();\n\t\t} else {\n\t\t\tthis.throwError(\"not a primary expression\", this.peek());\n\t\t}\n\n\t\tvar next;\n\t\twhile ((next = this.expect(\"(\", \"[\", \".\"))) {\n\t\t\tif (next.text === \"(\") {\n\t\t\t\tprimary = {\n\t\t\t\t\ttype: AST.CallExpression,\n\t\t\t\t\tcallee: primary,\n\t\t\t\t\targuments: this.parseArguments(),\n\t\t\t\t};\n\t\t\t\tthis.consume(\")\");\n\t\t\t} else if (next.text === \"[\") {\n\t\t\t\tprimary = {\n\t\t\t\t\ttype: AST.MemberExpression,\n\t\t\t\t\tobject: primary,\n\t\t\t\t\tproperty: this.expression(),\n\t\t\t\t\tcomputed: true,\n\t\t\t\t};\n\t\t\t\tthis.consume(\"]\");\n\t\t\t} else if (next.text === \".\") {\n\t\t\t\tprimary = {\n\t\t\t\t\ttype: AST.MemberExpression,\n\t\t\t\t\tobject: primary,\n\t\t\t\t\tproperty: this.identifier(),\n\t\t\t\t\tcomputed: false,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tthis.throwError(\"IMPOSSIBLE\");\n\t\t\t}\n\t\t}\n\t\treturn primary;\n\t},\n\n\tfilter: function (baseExpression) {\n\t\tvar args = [baseExpression];\n\t\tvar result = {\n\t\t\ttype: AST.CallExpression,\n\t\t\tcallee: this.identifier(),\n\t\t\targuments: args,\n\t\t\tfilter: true,\n\t\t};\n\n\t\twhile (this.expect(\":\")) {\n\t\t\targs.push(this.expression());\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tparseArguments: function () {\n\t\tvar args = [];\n\t\tif (this.peekToken().text !== \")\") {\n\t\t\tdo {\n\t\t\t\targs.push(this.filterChain());\n\t\t\t} while (this.expect(\",\"));\n\t\t}\n\t\treturn args;\n\t},\n\n\tidentifier: function () {\n\t\tvar token = this.consume();\n\t\tif (!token.identifier) {\n\t\t\tthis.throwError(\"is not a valid identifier\", token);\n\t\t}\n\t\treturn { type: AST.Identifier, name: token.text };\n\t},\n\n\tconstant: function () {\n\t\t// TODO check that it is a constant\n\t\treturn { type: AST.Literal, value: this.consume().value };\n\t},\n\n\tarrayDeclaration: function () {\n\t\tvar elements = [];\n\t\tif (this.peekToken().text !== \"]\") {\n\t\t\tdo {\n\t\t\t\tif (this.peek(\"]\")) {\n\t\t\t\t\t// Support trailing commas per ES5.1.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telements.push(this.expression());\n\t\t\t} while (this.expect(\",\"));\n\t\t}\n\t\tthis.consume(\"]\");\n\n\t\treturn { type: AST.ArrayExpression, elements: elements };\n\t},\n\n\tobject: function () {\n\t\tvar properties = [],\n\t\t\tproperty;\n\t\tif (this.peekToken().text !== \"}\") {\n\t\t\tdo {\n\t\t\t\tif (this.peek(\"}\")) {\n\t\t\t\t\t// Support trailing commas per ES5.1.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tproperty = { type: AST.Property, kind: \"init\" };\n\t\t\t\tif (this.peek().constant) {\n\t\t\t\t\tproperty.key = this.constant();\n\t\t\t\t\tproperty.computed = false;\n\t\t\t\t\tthis.consume(\":\");\n\t\t\t\t\tproperty.value = this.expression();\n\t\t\t\t} else if (this.peek().identifier) {\n\t\t\t\t\tproperty.key = this.identifier();\n\t\t\t\t\tproperty.computed = false;\n\t\t\t\t\tif (this.peek(\":\")) {\n\t\t\t\t\t\tthis.consume(\":\");\n\t\t\t\t\t\tproperty.value = this.expression();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperty.value = property.key;\n\t\t\t\t\t}\n\t\t\t\t} else if (this.peek(\"[\")) {\n\t\t\t\t\tthis.consume(\"[\");\n\t\t\t\t\tproperty.key = this.expression();\n\t\t\t\t\tthis.consume(\"]\");\n\t\t\t\t\tproperty.computed = true;\n\t\t\t\t\tthis.consume(\":\");\n\t\t\t\t\tproperty.value = this.expression();\n\t\t\t\t} else {\n\t\t\t\t\tthis.throwError(\"invalid key\", this.peek());\n\t\t\t\t}\n\t\t\t\tproperties.push(property);\n\t\t\t} while (this.expect(\",\"));\n\t\t}\n\t\tthis.consume(\"}\");\n\n\t\treturn { type: AST.ObjectExpression, properties: properties };\n\t},\n\n\tthrowError: function (msg, token) {\n\t\tthrow $parseMinErr(\n\t\t\t\"syntax\",\n\t\t\t\"Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].\",\n\t\t\ttoken.text,\n\t\t\tmsg,\n\t\t\ttoken.index + 1,\n\t\t\tthis.text,\n\t\t\tthis.text.substring(token.index)\n\t\t);\n\t},\n\n\tconsume: function (e1) {\n\t\tif (this.tokens.length === 0) {\n\t\t\tthrow $parseMinErr(\n\t\t\t\t\"ueoe\",\n\t\t\t\t\"Unexpected end of expression: {0}\",\n\t\t\t\tthis.text\n\t\t\t);\n\t\t}\n\n\t\tvar token = this.expect(e1);\n\t\tif (!token) {\n\t\t\tthis.throwError(\"is unexpected, expecting [\" + e1 + \"]\", this.peek());\n\t\t}\n\t\treturn token;\n\t},\n\n\tpeekToken: function () {\n\t\tif (this.tokens.length === 0) {\n\t\t\tthrow $parseMinErr(\n\t\t\t\t\"ueoe\",\n\t\t\t\t\"Unexpected end of expression: {0}\",\n\t\t\t\tthis.text\n\t\t\t);\n\t\t}\n\t\treturn this.tokens[0];\n\t},\n\n\tpeek: function (e1, e2, e3, e4) {\n\t\treturn this.peekAhead(0, e1, e2, e3, e4);\n\t},\n\n\tpeekAhead: function (i, e1, e2, e3, e4) {\n\t\tif (this.tokens.length > i) {\n\t\t\tvar token = this.tokens[i];\n\t\t\tvar t = token.text;\n\t\t\tif (\n\t\t\t\tt === e1 ||\n\t\t\t\tt === e2 ||\n\t\t\t\tt === e3 ||\n\t\t\t\tt === e4 ||\n\t\t\t\t(!e1 && !e2 && !e3 && !e4)\n\t\t\t) {\n\t\t\t\treturn token;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\texpect: function (e1, e2, e3, e4) {\n\t\tvar token = this.peek(e1, e2, e3, e4);\n\t\tif (token) {\n\t\t\tthis.tokens.shift();\n\t\t\treturn token;\n\t\t}\n\t\treturn false;\n\t},\n\n\tselfReferential: {\n\t\tthis: { type: AST.ThisExpression },\n\t\t$locals: { type: AST.LocalsExpression },\n\t},\n};\n\nfunction ifDefined(v, d) {\n\treturn typeof v !== \"undefined\" ? v : d;\n}\n\nfunction plusFn(l, r) {\n\tif (typeof l === \"undefined\") return r;\n\tif (typeof r === \"undefined\") return l;\n\treturn l + r;\n}\n\nfunction isStateless($filter, filterName) {\n\tvar fn = $filter(filterName);\n\tif (!fn) {\n\t\tthrow new Error(\"Filter '\" + filterName + \"' is not defined\");\n\t}\n\treturn !fn.$stateful;\n}\n\nfunction findConstantAndWatchExpressions(ast, $filter) {\n\tvar allConstants;\n\tvar argsToWatch;\n\tvar isStatelessFilter;\n\tswitch (ast.type) {\n\t\tcase AST.Program:\n\t\t\tallConstants = true;\n\t\t\tforEach(ast.body, function (expr) {\n\t\t\t\tfindConstantAndWatchExpressions(expr.expression, $filter);\n\t\t\t\tallConstants = allConstants && expr.expression.constant;\n\t\t\t});\n\t\t\tast.constant = allConstants;\n\t\t\tbreak;\n\t\tcase AST.Literal:\n\t\t\tast.constant = true;\n\t\t\tast.toWatch = [];\n\t\t\tbreak;\n\t\tcase AST.UnaryExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.argument, $filter);\n\t\t\tast.constant = ast.argument.constant;\n\t\t\tast.toWatch = ast.argument.toWatch;\n\t\t\tbreak;\n\t\tcase AST.BinaryExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.left, $filter);\n\t\t\tfindConstantAndWatchExpressions(ast.right, $filter);\n\t\t\tast.constant = ast.left.constant && ast.right.constant;\n\t\t\tast.toWatch = ast.left.toWatch.concat(ast.right.toWatch);\n\t\t\tbreak;\n\t\tcase AST.LogicalExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.left, $filter);\n\t\t\tfindConstantAndWatchExpressions(ast.right, $filter);\n\t\t\tast.constant = ast.left.constant && ast.right.constant;\n\t\t\tast.toWatch = ast.constant ? [] : [ast];\n\t\t\tbreak;\n\t\tcase AST.ConditionalExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.test, $filter);\n\t\t\tfindConstantAndWatchExpressions(ast.alternate, $filter);\n\t\t\tfindConstantAndWatchExpressions(ast.consequent, $filter);\n\t\t\tast.constant =\n\t\t\t\tast.test.constant && ast.alternate.constant && ast.consequent.constant;\n\t\t\tast.toWatch = ast.constant ? [] : [ast];\n\t\t\tbreak;\n\t\tcase AST.Identifier:\n\t\t\tast.constant = false;\n\t\t\tast.toWatch = [ast];\n\t\t\tbreak;\n\t\tcase AST.MemberExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.object, $filter);\n\t\t\tif (ast.computed) {\n\t\t\t\tfindConstantAndWatchExpressions(ast.property, $filter);\n\t\t\t}\n\t\t\tast.constant =\n\t\t\t\tast.object.constant && (!ast.computed || ast.property.constant);\n\t\t\tast.toWatch = [ast];\n\t\t\tbreak;\n\t\tcase AST.CallExpression:\n\t\t\tisStatelessFilter = ast.filter\n\t\t\t\t? isStateless($filter, ast.callee.name)\n\t\t\t\t: false;\n\t\t\tallConstants = isStatelessFilter;\n\t\t\targsToWatch = [];\n\t\t\tforEach(ast.arguments, function (expr) {\n\t\t\t\tfindConstantAndWatchExpressions(expr, $filter);\n\t\t\t\tallConstants = allConstants && expr.constant;\n\t\t\t\tif (!expr.constant) {\n\t\t\t\t\targsToWatch.push.apply(argsToWatch, expr.toWatch);\n\t\t\t\t}\n\t\t\t});\n\t\t\tast.constant = allConstants;\n\t\t\tast.toWatch = isStatelessFilter ? argsToWatch : [ast];\n\t\t\tbreak;\n\t\tcase AST.AssignmentExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.left, $filter);\n\t\t\tfindConstantAndWatchExpressions(ast.right, $filter);\n\t\t\tast.constant = ast.left.constant && ast.right.constant;\n\t\t\tast.toWatch = [ast];\n\t\t\tbreak;\n\t\tcase AST.ArrayExpression:\n\t\t\tallConstants = true;\n\t\t\targsToWatch = [];\n\t\t\tforEach(ast.elements, function (expr) {\n\t\t\t\tfindConstantAndWatchExpressions(expr, $filter);\n\t\t\t\tallConstants = allConstants && expr.constant;\n\t\t\t\tif (!expr.constant) {\n\t\t\t\t\targsToWatch.push.apply(argsToWatch, expr.toWatch);\n\t\t\t\t}\n\t\t\t});\n\t\t\tast.constant = allConstants;\n\t\t\tast.toWatch = argsToWatch;\n\t\t\tbreak;\n\t\tcase AST.ObjectExpression:\n\t\t\tallConstants = true;\n\t\t\targsToWatch = [];\n\t\t\tforEach(ast.properties, function (property) {\n\t\t\t\tfindConstantAndWatchExpressions(property.value, $filter);\n\t\t\t\tallConstants =\n\t\t\t\t\tallConstants && property.value.constant && !property.computed;\n\t\t\t\tif (!property.value.constant) {\n\t\t\t\t\targsToWatch.push.apply(argsToWatch, property.value.toWatch);\n\t\t\t\t}\n\t\t\t});\n\t\t\tast.constant = allConstants;\n\t\t\tast.toWatch = argsToWatch;\n\t\t\tbreak;\n\t\tcase AST.ThisExpression:\n\t\t\tast.constant = false;\n\t\t\tast.toWatch = [];\n\t\t\tbreak;\n\t\tcase AST.LocalsExpression:\n\t\t\tast.constant = false;\n\t\t\tast.toWatch = [];\n\t\t\tbreak;\n\t}\n}\n\nfunction getInputs(body) {\n\tif (body.length !== 1) return;\n\tvar lastExpression = body[0].expression;\n\tvar candidate = lastExpression.toWatch;\n\tif (candidate.length !== 1) return candidate;\n\treturn candidate[0] !== lastExpression ? candidate : undefined;\n}\n\nfunction isAssignable(ast) {\n\treturn ast.type === AST.Identifier || ast.type === AST.MemberExpression;\n}\n\nfunction assignableAST(ast) {\n\tif (ast.body.length === 1 && isAssignable(ast.body[0].expression)) {\n\t\treturn {\n\t\t\ttype: AST.AssignmentExpression,\n\t\t\tleft: ast.body[0].expression,\n\t\t\tright: { type: AST.NGValueParameter },\n\t\t\toperator: \"=\",\n\t\t};\n\t}\n}\n\nfunction isLiteral(ast) {\n\treturn (\n\t\tast.body.length === 0 ||\n\t\t(ast.body.length === 1 &&\n\t\t\t(ast.body[0].expression.type === AST.Literal ||\n\t\t\t\tast.body[0].expression.type === AST.ArrayExpression ||\n\t\t\t\tast.body[0].expression.type === AST.ObjectExpression))\n\t);\n}\n\nfunction isConstant(ast) {\n\treturn ast.constant;\n}\n\nfunction ASTCompiler(astBuilder, $filter) {\n\tthis.astBuilder = astBuilder;\n\tthis.$filter = $filter;\n}\n\nASTCompiler.prototype = {\n\tcompile: function (expression) {\n\t\tvar self = this;\n\t\tvar ast = this.astBuilder.ast(expression);\n\t\tthis.state = {\n\t\t\tnextId: 0,\n\t\t\tfilters: {},\n\t\t\tfn: { vars: [], body: [], own: {} },\n\t\t\tassign: { vars: [], body: [], own: {} },\n\t\t\tinputs: [],\n\t\t};\n\t\tfindConstantAndWatchExpressions(ast, self.$filter);\n\t\tvar extra = \"\";\n\t\tvar assignable;\n\t\tthis.stage = \"assign\";\n\t\tif ((assignable = assignableAST(ast))) {\n\t\t\tthis.state.computing = \"assign\";\n\t\t\tvar result = this.nextId();\n\t\t\tthis.recurse(assignable, result);\n\t\t\tthis.return_(result);\n\t\t\textra = \"fn.assign=\" + this.generateFunction(\"assign\", \"s,v,l\");\n\t\t}\n\t\tvar toWatch = getInputs(ast.body);\n\t\tself.stage = \"inputs\";\n\t\tforEach(toWatch, function (watch, key) {\n\t\t\tvar fnKey = \"fn\" + key;\n\t\t\tself.state[fnKey] = { vars: [], body: [], own: {} };\n\t\t\tself.state.computing = fnKey;\n\t\t\tvar intoId = self.nextId();\n\t\t\tself.recurse(watch, intoId);\n\t\t\tself.return_(intoId);\n\t\t\tself.state.inputs.push(fnKey);\n\t\t\twatch.watchId = key;\n\t\t});\n\t\tthis.state.computing = \"fn\";\n\t\tthis.stage = \"main\";\n\t\tthis.recurse(ast);\n\t\tvar fnString =\n\t\t\t// The build and minification steps remove the string \"use strict\" from the code, but this is done using a regex.\n\t\t\t// This is a workaround for this until we do a better job at only removing the prefix only when we should.\n\t\t\t'\"' +\n\t\t\tthis.USE +\n\t\t\t\" \" +\n\t\t\tthis.STRICT +\n\t\t\t'\";\\n' +\n\t\t\tthis.filterPrefix() +\n\t\t\t\"var fn=\" +\n\t\t\tthis.generateFunction(\"fn\", \"s,l,a,i\") +\n\t\t\textra +\n\t\t\tthis.watchFns() +\n\t\t\t\"return fn;\";\n\t\t// eslint-disable-next-line no-new-func\n\t\tvar fn = new Function(\n\t\t\t\"$filter\",\n\t\t\t\"getStringValue\",\n\t\t\t\"ifDefined\",\n\t\t\t\"plus\",\n\t\t\tfnString\n\t\t)(this.$filter, getStringValue, ifDefined, plusFn);\n\n\t\tthis.state = this.stage = undefined;\n\t\tfn.ast = ast;\n\t\tfn.literal = isLiteral(ast);\n\t\tfn.constant = isConstant(ast);\n\t\treturn fn;\n\t},\n\n\tUSE: \"use\",\n\n\tSTRICT: \"strict\",\n\n\twatchFns: function () {\n\t\tvar result = [];\n\t\tvar fns = this.state.inputs;\n\t\tvar self = this;\n\t\tforEach(fns, function (name) {\n\t\t\tresult.push(\"var \" + name + \"=\" + self.generateFunction(name, \"s\"));\n\t\t});\n\t\tif (fns.length) {\n\t\t\tresult.push(\"fn.inputs=[\" + fns.join(\",\") + \"];\");\n\t\t}\n\t\treturn result.join(\"\");\n\t},\n\n\tgenerateFunction: function (name, params) {\n\t\treturn (\n\t\t\t\"function(\" +\n\t\t\tparams +\n\t\t\t\"){\" +\n\t\t\tthis.varsPrefix(name) +\n\t\t\tthis.body(name) +\n\t\t\t\"};\"\n\t\t);\n\t},\n\n\tfilterPrefix: function () {\n\t\tvar parts = [];\n\t\tvar self = this;\n\t\tforEach(this.state.filters, function (id, filter) {\n\t\t\tparts.push(id + \"=$filter(\" + self.escape(filter) + \")\");\n\t\t});\n\t\tif (parts.length) return \"var \" + parts.join(\",\") + \";\";\n\t\treturn \"\";\n\t},\n\n\tvarsPrefix: function (section) {\n\t\treturn this.state[section].vars.length\n\t\t\t? \"var \" + this.state[section].vars.join(\",\") + \";\"\n\t\t\t: \"\";\n\t},\n\n\tbody: function (section) {\n\t\treturn this.state[section].body.join(\"\");\n\t},\n\n\trecurse: function (\n\t\tast,\n\t\tintoId,\n\t\tnameId,\n\t\trecursionFn,\n\t\tcreate,\n\t\tskipWatchIdCheck\n\t) {\n\t\tvar left,\n\t\t\tright,\n\t\t\tself = this,\n\t\t\targs,\n\t\t\texpression,\n\t\t\tcomputed;\n\t\trecursionFn = recursionFn || noop;\n\t\tif (!skipWatchIdCheck && isDefined(ast.watchId)) {\n\t\t\tintoId = intoId || this.nextId();\n\t\t\tthis.if_(\n\t\t\t\t\"i\",\n\t\t\t\tthis.lazyAssign(intoId, this.unsafeComputedMember(\"i\", ast.watchId)),\n\t\t\t\tthis.lazyRecurse(ast, intoId, nameId, recursionFn, create, true)\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (ast.type) {\n\t\t\tcase AST.Program:\n\t\t\t\tforEach(ast.body, function (expression, pos) {\n\t\t\t\t\tself.recurse(\n\t\t\t\t\t\texpression.expression,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tfunction (expr) {\n\t\t\t\t\t\t\tright = expr;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tif (pos !== ast.body.length - 1) {\n\t\t\t\t\t\tself.current().body.push(right, \";\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.return_(right);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase AST.Literal:\n\t\t\t\texpression = this.escape(ast.value);\n\t\t\t\tthis.assign(intoId, expression);\n\t\t\t\trecursionFn(intoId || expression);\n\t\t\t\tbreak;\n\t\t\tcase AST.UnaryExpression:\n\t\t\t\tthis.recurse(ast.argument, undefined, undefined, function (expr) {\n\t\t\t\t\tright = expr;\n\t\t\t\t});\n\t\t\t\texpression = ast.operator + \"(\" + this.ifDefined(right, 0) + \")\";\n\t\t\t\tthis.assign(intoId, expression);\n\t\t\t\trecursionFn(expression);\n\t\t\t\tbreak;\n\t\t\tcase AST.BinaryExpression:\n\t\t\t\tthis.recurse(ast.left, undefined, undefined, function (expr) {\n\t\t\t\t\tleft = expr;\n\t\t\t\t});\n\t\t\t\tthis.recurse(ast.right, undefined, undefined, function (expr) {\n\t\t\t\t\tright = expr;\n\t\t\t\t});\n\t\t\t\tif (ast.operator === \"+\") {\n\t\t\t\t\texpression = this.plus(left, right);\n\t\t\t\t} else if (ast.operator === \"-\") {\n\t\t\t\t\texpression =\n\t\t\t\t\t\tthis.ifDefined(left, 0) + ast.operator + this.ifDefined(right, 0);\n\t\t\t\t} else {\n\t\t\t\t\texpression = \"(\" + left + \")\" + ast.operator + \"(\" + right + \")\";\n\t\t\t\t}\n\t\t\t\tthis.assign(intoId, expression);\n\t\t\t\trecursionFn(expression);\n\t\t\t\tbreak;\n\t\t\tcase AST.LogicalExpression:\n\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\tself.recurse(ast.left, intoId);\n\t\t\t\tself.if_(\n\t\t\t\t\tast.operator === \"&&\" ? intoId : self.not(intoId),\n\t\t\t\t\tself.lazyRecurse(ast.right, intoId)\n\t\t\t\t);\n\t\t\t\trecursionFn(intoId);\n\t\t\t\tbreak;\n\t\t\tcase AST.ConditionalExpression:\n\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\tself.recurse(ast.test, intoId);\n\t\t\t\tself.if_(\n\t\t\t\t\tintoId,\n\t\t\t\t\tself.lazyRecurse(ast.alternate, intoId),\n\t\t\t\t\tself.lazyRecurse(ast.consequent, intoId)\n\t\t\t\t);\n\t\t\t\trecursionFn(intoId);\n\t\t\t\tbreak;\n\t\t\tcase AST.Identifier:\n\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\tvar inAssignment = self.current().inAssignment;\n\t\t\t\tif (nameId) {\n\t\t\t\t\tif (inAssignment) {\n\t\t\t\t\t\tnameId.context = this.assign(this.nextId(), \"s\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnameId.context =\n\t\t\t\t\t\t\tself.stage === \"inputs\"\n\t\t\t\t\t\t\t\t? \"s\"\n\t\t\t\t\t\t\t\t: this.assign(\n\t\t\t\t\t\t\t\t\t\tthis.nextId(),\n\t\t\t\t\t\t\t\t\t\tthis.getHasOwnProperty(\"l\", ast.name) + \"?l:s\"\n\t\t\t\t\t\t\t\t );\n\t\t\t\t\t}\n\t\t\t\t\tnameId.computed = false;\n\t\t\t\t\tnameId.name = ast.name;\n\t\t\t\t}\n\t\t\t\tself.if_(\n\t\t\t\t\tself.stage === \"inputs\" ||\n\t\t\t\t\t\tself.not(self.getHasOwnProperty(\"l\", ast.name)),\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\tself.stage === \"inputs\" ||\n\t\t\t\t\t\t\t\tself.and_(\n\t\t\t\t\t\t\t\t\t\"s\",\n\t\t\t\t\t\t\t\t\tself.or_(\n\t\t\t\t\t\t\t\t\t\tself.isNull(self.nonComputedMember(\"s\", ast.name)),\n\t\t\t\t\t\t\t\t\t\tself.hasOwnProperty_(\"s\", ast.name)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tif (create && create !== 1) {\n\t\t\t\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\t\t\t\tself.isNull(self.nonComputedMember(\"s\", ast.name)),\n\t\t\t\t\t\t\t\t\t\tself.lazyAssign(self.nonComputedMember(\"s\", ast.name), \"{}\")\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tself.assign(intoId, self.nonComputedMember(\"s\", ast.name));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tintoId &&\n\t\t\t\t\t\tself.lazyAssign(intoId, self.nonComputedMember(\"l\", ast.name))\n\t\t\t\t);\n\t\t\t\trecursionFn(intoId);\n\t\t\t\tbreak;\n\t\t\tcase AST.MemberExpression:\n\t\t\t\tleft = (nameId && (nameId.context = this.nextId())) || this.nextId();\n\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\tself.recurse(\n\t\t\t\t\tast.object,\n\t\t\t\t\tleft,\n\t\t\t\t\tundefined,\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tvar member = null;\n\t\t\t\t\t\tvar inAssignment = self.current().inAssignment;\n\t\t\t\t\t\tif (ast.computed) {\n\t\t\t\t\t\t\tright = self.nextId();\n\t\t\t\t\t\t\tif (inAssignment || self.state.computing === \"assign\") {\n\t\t\t\t\t\t\t\tmember = self.unsafeComputedMember(left, right);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmember = self.computedMember(left, right);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (inAssignment || self.state.computing === \"assign\") {\n\t\t\t\t\t\t\t\tmember = self.unsafeNonComputedMember(left, ast.property.name);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmember = self.nonComputedMember(left, ast.property.name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tright = ast.property.name;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ast.computed) {\n\t\t\t\t\t\t\tif (ast.property.type === AST.Literal) {\n\t\t\t\t\t\t\t\tself.recurse(ast.property, right);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\tself.and_(\n\t\t\t\t\t\t\t\tself.notNull(left),\n\t\t\t\t\t\t\t\tself.or_(\n\t\t\t\t\t\t\t\t\tself.isNull(member),\n\t\t\t\t\t\t\t\t\tself.hasOwnProperty_(left, right, ast.computed)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tif (ast.computed) {\n\t\t\t\t\t\t\t\t\tif (ast.property.type !== AST.Literal) {\n\t\t\t\t\t\t\t\t\t\tself.recurse(ast.property, right);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (create && create !== 1) {\n\t\t\t\t\t\t\t\t\t\tself.if_(self.not(member), self.lazyAssign(member, \"{}\"));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tself.assign(intoId, member);\n\t\t\t\t\t\t\t\t\tif (nameId) {\n\t\t\t\t\t\t\t\t\t\tnameId.computed = true;\n\t\t\t\t\t\t\t\t\t\tnameId.name = right;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (create && create !== 1) {\n\t\t\t\t\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\t\t\t\t\tself.isNull(member),\n\t\t\t\t\t\t\t\t\t\t\tself.lazyAssign(member, \"{}\")\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tself.assign(intoId, member);\n\t\t\t\t\t\t\t\t\tif (nameId) {\n\t\t\t\t\t\t\t\t\t\tnameId.computed = false;\n\t\t\t\t\t\t\t\t\t\tnameId.name = ast.property.name;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tself.assign(intoId, \"undefined\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\trecursionFn(intoId);\n\t\t\t\t\t},\n\t\t\t\t\t!!create\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase AST.CallExpression:\n\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\tif (ast.filter) {\n\t\t\t\t\tright = self.filter(ast.callee.name);\n\t\t\t\t\targs = [];\n\t\t\t\t\tforEach(ast.arguments, function (expr) {\n\t\t\t\t\t\tvar argument = self.nextId();\n\t\t\t\t\t\tself.recurse(expr, argument);\n\t\t\t\t\t\targs.push(argument);\n\t\t\t\t\t});\n\t\t\t\t\texpression = right + \".call(\" + right + \",\" + args.join(\",\") + \")\";\n\t\t\t\t\tself.assign(intoId, expression);\n\t\t\t\t\trecursionFn(intoId);\n\t\t\t\t} else {\n\t\t\t\t\tright = self.nextId();\n\t\t\t\t\tleft = {};\n\t\t\t\t\targs = [];\n\t\t\t\t\tself.recurse(ast.callee, right, left, function () {\n\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\tself.notNull(right),\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tforEach(ast.arguments, function (expr) {\n\t\t\t\t\t\t\t\t\tself.recurse(\n\t\t\t\t\t\t\t\t\t\texpr,\n\t\t\t\t\t\t\t\t\t\tast.constant ? undefined : self.nextId(),\n\t\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\t\tfunction (argument) {\n\t\t\t\t\t\t\t\t\t\t\targs.push(argument);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (left.name) {\n\t\t\t\t\t\t\t\t\tvar x = self.member(left.context, left.name, left.computed);\n\t\t\t\t\t\t\t\t\texpression =\n\t\t\t\t\t\t\t\t\t\t\"(\" +\n\t\t\t\t\t\t\t\t\t\tx +\n\t\t\t\t\t\t\t\t\t\t\" === null ? null : \" +\n\t\t\t\t\t\t\t\t\t\tself.unsafeMember(left.context, left.name, left.computed) +\n\t\t\t\t\t\t\t\t\t\t\".call(\" +\n\t\t\t\t\t\t\t\t\t\t[left.context].concat(args).join(\",\") +\n\t\t\t\t\t\t\t\t\t\t\"))\";\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\texpression = right + \"(\" + args.join(\",\") + \")\";\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tself.assign(intoId, expression);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tself.assign(intoId, \"undefined\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\trecursionFn(intoId);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase AST.AssignmentExpression:\n\t\t\t\tright = this.nextId();\n\t\t\t\tleft = {};\n\t\t\t\tself.current().inAssignment = true;\n\t\t\t\tthis.recurse(\n\t\t\t\t\tast.left,\n\t\t\t\t\tundefined,\n\t\t\t\t\tleft,\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\tself.and_(\n\t\t\t\t\t\t\t\tself.notNull(left.context),\n\t\t\t\t\t\t\t\tself.or_(\n\t\t\t\t\t\t\t\t\tself.hasOwnProperty_(left.context, left.name),\n\t\t\t\t\t\t\t\t\tself.isNull(\n\t\t\t\t\t\t\t\t\t\tself.member(left.context, left.name, left.computed)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tself.recurse(ast.right, right);\n\t\t\t\t\t\t\t\texpression =\n\t\t\t\t\t\t\t\t\tself.member(left.context, left.name, left.computed) +\n\t\t\t\t\t\t\t\t\tast.operator +\n\t\t\t\t\t\t\t\t\tright;\n\t\t\t\t\t\t\t\tself.assign(intoId, expression);\n\t\t\t\t\t\t\t\trecursionFn(intoId || expression);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\tself.current().inAssignment = false;\n\t\t\t\t\t\tself.recurse(ast.right, right);\n\t\t\t\t\t\tself.current().inAssignment = true;\n\t\t\t\t\t},\n\t\t\t\t\t1\n\t\t\t\t);\n\t\t\t\tself.current().inAssignment = false;\n\t\t\t\tbreak;\n\t\t\tcase AST.ArrayExpression:\n\t\t\t\targs = [];\n\t\t\t\tforEach(ast.elements, function (expr) {\n\t\t\t\t\tself.recurse(\n\t\t\t\t\t\texpr,\n\t\t\t\t\t\tast.constant ? undefined : self.nextId(),\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tfunction (argument) {\n\t\t\t\t\t\t\targs.push(argument);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t\texpression = \"[\" + args.join(\",\") + \"]\";\n\t\t\t\tthis.assign(intoId, expression);\n\t\t\t\trecursionFn(intoId || expression);\n\t\t\t\tbreak;\n\t\t\tcase AST.ObjectExpression:\n\t\t\t\targs = [];\n\t\t\t\tcomputed = false;\n\t\t\t\tforEach(ast.properties, function (property) {\n\t\t\t\t\tif (property.computed) {\n\t\t\t\t\t\tcomputed = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (computed) {\n\t\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\t\tthis.assign(intoId, \"{}\");\n\t\t\t\t\tforEach(ast.properties, function (property) {\n\t\t\t\t\t\tif (property.computed) {\n\t\t\t\t\t\t\tleft = self.nextId();\n\t\t\t\t\t\t\tself.recurse(property.key, left);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tleft =\n\t\t\t\t\t\t\t\tproperty.key.type === AST.Identifier\n\t\t\t\t\t\t\t\t\t? property.key.name\n\t\t\t\t\t\t\t\t\t: \"\" + property.key.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tright = self.nextId();\n\t\t\t\t\t\tself.recurse(property.value, right);\n\t\t\t\t\t\tself.assign(\n\t\t\t\t\t\t\tself.unsafeMember(intoId, left, property.computed),\n\t\t\t\t\t\t\tright\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tforEach(ast.properties, function (property) {\n\t\t\t\t\t\tself.recurse(\n\t\t\t\t\t\t\tproperty.value,\n\t\t\t\t\t\t\tast.constant ? undefined : self.nextId(),\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tfunction (expr) {\n\t\t\t\t\t\t\t\targs.push(\n\t\t\t\t\t\t\t\t\tself.escape(\n\t\t\t\t\t\t\t\t\t\tproperty.key.type === AST.Identifier\n\t\t\t\t\t\t\t\t\t\t\t? property.key.name\n\t\t\t\t\t\t\t\t\t\t\t: \"\" + property.key.value\n\t\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t\t\t\t\t\":\" +\n\t\t\t\t\t\t\t\t\t\texpr\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t\texpression = \"{\" + args.join(\",\") + \"}\";\n\t\t\t\t\tthis.assign(intoId, expression);\n\t\t\t\t}\n\t\t\t\trecursionFn(intoId || expression);\n\t\t\t\tbreak;\n\t\t\tcase AST.ThisExpression:\n\t\t\t\tthis.assign(intoId, \"s\");\n\t\t\t\trecursionFn(intoId || \"s\");\n\t\t\t\tbreak;\n\t\t\tcase AST.LocalsExpression:\n\t\t\t\tthis.assign(intoId, \"l\");\n\t\t\t\trecursionFn(intoId || \"l\");\n\t\t\t\tbreak;\n\t\t\tcase AST.NGValueParameter:\n\t\t\t\tthis.assign(intoId, \"v\");\n\t\t\t\trecursionFn(intoId || \"v\");\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\tgetHasOwnProperty: function (element, property) {\n\t\tvar key = element + \".\" + property;\n\t\tvar own = this.current().own;\n\t\tif (!own.hasOwnProperty(key)) {\n\t\t\town[key] = this.nextId(\n\t\t\t\tfalse,\n\t\t\t\telement + \"&&(\" + this.escape(property) + \" in \" + element + \")\"\n\t\t\t);\n\t\t}\n\t\treturn own[key];\n\t},\n\n\tassign: function (id, value) {\n\t\tif (!id) return;\n\t\tthis.current().body.push(id, \"=\", value, \";\");\n\t\treturn id;\n\t},\n\n\tfilter: function (filterName) {\n\t\tif (!this.state.filters.hasOwnProperty(filterName)) {\n\t\t\tthis.state.filters[filterName] = this.nextId(true);\n\t\t}\n\t\treturn this.state.filters[filterName];\n\t},\n\n\tifDefined: function (id, defaultValue) {\n\t\treturn \"ifDefined(\" + id + \",\" + this.escape(defaultValue) + \")\";\n\t},\n\n\tplus: function (left, right) {\n\t\treturn \"plus(\" + left + \",\" + right + \")\";\n\t},\n\n\treturn_: function (id) {\n\t\tthis.current().body.push(\"return \", id, \";\");\n\t},\n\n\tif_: function (test, alternate, consequent) {\n\t\tif (test === true) {\n\t\t\talternate();\n\t\t} else {\n\t\t\tvar body = this.current().body;\n\t\t\tbody.push(\"if(\", test, \"){\");\n\t\t\talternate();\n\t\t\tbody.push(\"}\");\n\t\t\tif (consequent) {\n\t\t\t\tbody.push(\"else{\");\n\t\t\t\tconsequent();\n\t\t\t\tbody.push(\"}\");\n\t\t\t}\n\t\t}\n\t},\n\tor_: function (expr1, expr2) {\n\t\treturn \"(\" + expr1 + \") || (\" + expr2 + \")\";\n\t},\n\thasOwnProperty_: function (obj, prop, computed) {\n\t\tif (computed) {\n\t\t\treturn \"(Object.prototype.hasOwnProperty.call(\" + obj + \",\" + prop + \"))\";\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t\"(Object.prototype.hasOwnProperty.call(\" + obj + \",'\" + prop + \"'))\"\n\t\t\t);\n\t\t}\n\t},\n\tand_: function (expr1, expr2) {\n\t\treturn \"(\" + expr1 + \") && (\" + expr2 + \")\";\n\t},\n\tnot: function (expression) {\n\t\treturn \"!(\" + expression + \")\";\n\t},\n\n\tisNull: function (expression) {\n\t\treturn expression + \"==null\";\n\t},\n\n\tnotNull: function (expression) {\n\t\treturn expression + \"!=null\";\n\t},\n\n\tnonComputedMember: function (left, right) {\n\t\tvar SAFE_IDENTIFIER = /^[$_a-zA-Z][$_a-zA-Z0-9]*$/;\n\t\tvar UNSAFE_CHARACTERS = /[^$_a-zA-Z0-9]/g;\n\t\tvar expr = \"\";\n\t\tif (SAFE_IDENTIFIER.test(right)) {\n\t\t\texpr = left + \".\" + right;\n\t\t} else {\n\t\t\tright = right.replace(UNSAFE_CHARACTERS, this.stringEscapeFn);\n\t\t\texpr = left + '[\"' + right + '\"]';\n\t\t}\n\n\t\treturn expr;\n\t},\n\n\tunsafeComputedMember: function (left, right) {\n\t\treturn left + \"[\" + right + \"]\";\n\t},\n\tunsafeNonComputedMember: function (left, right) {\n\t\treturn this.nonComputedMember(left, right);\n\t},\n\n\tcomputedMember: function (left, right) {\n\t\tif (this.state.computing === \"assign\") {\n\t\t\treturn this.unsafeComputedMember(left, right);\n\t\t}\n\t\t// return left + \"[\" + right + \"]\";\n\t\treturn (\n\t\t\t\"(\" +\n\t\t\tleft +\n\t\t\t\".hasOwnProperty(\" +\n\t\t\tright +\n\t\t\t\") ? \" +\n\t\t\tleft +\n\t\t\t\"[\" +\n\t\t\tright +\n\t\t\t\"] : null)\"\n\t\t);\n\t},\n\n\tunsafeMember: function (left, right, computed) {\n\t\tif (computed) return this.unsafeComputedMember(left, right);\n\t\treturn this.unsafeNonComputedMember(left, right);\n\t},\n\n\tmember: function (left, right, computed) {\n\t\tif (computed) return this.computedMember(left, right);\n\t\treturn this.nonComputedMember(left, right);\n\t},\n\n\tgetStringValue: function (item) {\n\t\tthis.assign(item, \"getStringValue(\" + item + \")\");\n\t},\n\n\tlazyRecurse: function (\n\t\tast,\n\t\tintoId,\n\t\tnameId,\n\t\trecursionFn,\n\t\tcreate,\n\t\tskipWatchIdCheck\n\t) {\n\t\tvar self = this;\n\t\treturn function () {\n\t\t\tself.recurse(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck);\n\t\t};\n\t},\n\n\tlazyAssign: function (id, value) {\n\t\tvar self = this;\n\t\treturn function () {\n\t\t\tself.assign(id, value);\n\t\t};\n\t},\n\n\tstringEscapeRegex: /[^ a-zA-Z0-9]/g,\n\n\tstringEscapeFn: function (c) {\n\t\treturn \"\\\\u\" + (\"0000\" + c.charCodeAt(0).toString(16)).slice(-4);\n\t},\n\n\tescape: function (value) {\n\t\tif (isString(value))\n\t\t\treturn (\n\t\t\t\t\"'\" + value.replace(this.stringEscapeRegex, this.stringEscapeFn) + \"'\"\n\t\t\t);\n\t\tif (isNumber(value)) return value.toString();\n\t\tif (value === true) return \"true\";\n\t\tif (value === false) return \"false\";\n\t\tif (value === null) return \"null\";\n\t\tif (typeof value === \"undefined\") return \"undefined\";\n\n\t\tthrow $parseMinErr(\"esc\", \"IMPOSSIBLE\");\n\t},\n\n\tnextId: function (skip, init) {\n\t\tvar id = \"v\" + this.state.nextId++;\n\t\tif (!skip) {\n\t\t\tthis.current().vars.push(id + (init ? \"=\" + init : \"\"));\n\t\t}\n\t\treturn id;\n\t},\n\n\tcurrent: function () {\n\t\treturn this.state[this.state.computing];\n\t},\n};\n\nfunction ASTInterpreter(astBuilder, $filter) {\n\tthis.astBuilder = astBuilder;\n\tthis.$filter = $filter;\n}\n\nASTInterpreter.prototype = {\n\tcompile: function (expression) {\n\t\tvar self = this;\n\t\tvar ast = this.astBuilder.ast(expression);\n\t\tfindConstantAndWatchExpressions(ast, self.$filter);\n\t\tvar assignable;\n\t\tvar assign;\n\t\tif ((assignable = assignableAST(ast))) {\n\t\t\tassign = this.recurse(assignable);\n\t\t}\n\t\tvar toWatch = getInputs(ast.body);\n\t\tvar inputs;\n\t\tif (toWatch) {\n\t\t\tinputs = [];\n\t\t\tforEach(toWatch, function (watch, key) {\n\t\t\t\tvar input = self.recurse(watch);\n\t\t\t\twatch.input = input;\n\t\t\t\tinputs.push(input);\n\t\t\t\twatch.watchId = key;\n\t\t\t});\n\t\t}\n\t\tvar expressions = [];\n\t\tforEach(ast.body, function (expression) {\n\t\t\texpressions.push(self.recurse(expression.expression));\n\t\t});\n\t\tvar fn =\n\t\t\tast.body.length === 0\n\t\t\t\t? noop\n\t\t\t\t: ast.body.length === 1\n\t\t\t\t? expressions[0]\n\t\t\t\t: function (scope, locals) {\n\t\t\t\t\t\tvar lastValue;\n\t\t\t\t\t\tforEach(expressions, function (exp) {\n\t\t\t\t\t\t\tlastValue = exp(scope, locals);\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn lastValue;\n\t\t\t\t };\n\n\t\tif (assign) {\n\t\t\tfn.assign = function (scope, value, locals) {\n\t\t\t\treturn assign(scope, locals, value);\n\t\t\t};\n\t\t}\n\t\tif (inputs) {\n\t\t\tfn.inputs = inputs;\n\t\t}\n\t\tfn.ast = ast;\n\t\tfn.literal = isLiteral(ast);\n\t\tfn.constant = isConstant(ast);\n\t\treturn fn;\n\t},\n\n\trecurse: function (ast, context, create) {\n\t\tvar left,\n\t\t\tright,\n\t\t\tself = this,\n\t\t\targs;\n\t\tif (ast.input) {\n\t\t\treturn this.inputs(ast.input, ast.watchId);\n\t\t}\n\t\tswitch (ast.type) {\n\t\t\tcase AST.Literal:\n\t\t\t\treturn this.value(ast.value, context);\n\t\t\tcase AST.UnaryExpression:\n\t\t\t\tright = this.recurse(ast.argument);\n\t\t\t\treturn this[\"unary\" + ast.operator](right, context);\n\t\t\tcase AST.BinaryExpression:\n\t\t\t\tleft = this.recurse(ast.left);\n\t\t\t\tright = this.recurse(ast.right);\n\t\t\t\treturn this[\"binary\" + ast.operator](left, right, context);\n\t\t\tcase AST.LogicalExpression:\n\t\t\t\tleft = this.recurse(ast.left);\n\t\t\t\tright = this.recurse(ast.right);\n\t\t\t\treturn this[\"binary\" + ast.operator](left, right, context);\n\t\t\tcase AST.ConditionalExpression:\n\t\t\t\treturn this[\"ternary?:\"](\n\t\t\t\t\tthis.recurse(ast.test),\n\t\t\t\t\tthis.recurse(ast.alternate),\n\t\t\t\t\tthis.recurse(ast.consequent),\n\t\t\t\t\tcontext\n\t\t\t\t);\n\t\t\tcase AST.Identifier:\n\t\t\t\treturn self.identifier(ast.name, context, create);\n\t\t\tcase AST.MemberExpression:\n\t\t\t\tleft = this.recurse(ast.object, false, !!create);\n\t\t\t\tif (!ast.computed) {\n\t\t\t\t\tright = ast.property.name;\n\t\t\t\t}\n\t\t\t\tif (ast.computed) right = this.recurse(ast.property);\n\n\t\t\t\treturn ast.computed\n\t\t\t\t\t? this.computedMember(left, right, context, create)\n\t\t\t\t\t: this.nonComputedMember(left, right, context, create);\n\t\t\tcase AST.CallExpression:\n\t\t\t\targs = [];\n\t\t\t\tforEach(ast.arguments, function (expr) {\n\t\t\t\t\targs.push(self.recurse(expr));\n\t\t\t\t});\n\t\t\t\tif (ast.filter) right = this.$filter(ast.callee.name);\n\t\t\t\tif (!ast.filter) right = this.recurse(ast.callee, true);\n\t\t\t\treturn ast.filter\n\t\t\t\t\t? function (scope, locals, assign, inputs) {\n\t\t\t\t\t\t\tvar values = [];\n\t\t\t\t\t\t\tfor (var i = 0; i < args.length; ++i) {\n\t\t\t\t\t\t\t\tvalues.push(args[i](scope, locals, assign, inputs));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar value = right.apply(undefined, values, inputs);\n\t\t\t\t\t\t\treturn context\n\t\t\t\t\t\t\t\t? { context: undefined, name: undefined, value: value }\n\t\t\t\t\t\t\t\t: value;\n\t\t\t\t\t }\n\t\t\t\t\t: function (scope, locals, assign, inputs) {\n\t\t\t\t\t\t\tvar rhs = right(scope, locals, assign, inputs);\n\t\t\t\t\t\t\tvar value;\n\t\t\t\t\t\t\tif (rhs.value != null) {\n\t\t\t\t\t\t\t\tvar values = [];\n\t\t\t\t\t\t\t\tfor (var i = 0; i < args.length; ++i) {\n\t\t\t\t\t\t\t\t\tvalues.push(args[i](scope, locals, assign, inputs));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvalue = rhs.value.apply(rhs.context, values);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn context ? { value: value } : value;\n\t\t\t\t\t };\n\t\t\tcase AST.AssignmentExpression:\n\t\t\t\tleft = this.recurse(ast.left, true, 1);\n\t\t\t\tright = this.recurse(ast.right);\n\t\t\t\treturn function (scope, locals, assign, inputs) {\n\t\t\t\t\tvar lhs = left(scope, false, assign, inputs);\n\t\t\t\t\tvar rhs = right(scope, locals, assign, inputs);\n\t\t\t\t\tlhs.context[lhs.name] = rhs;\n\t\t\t\t\treturn context ? { value: rhs } : rhs;\n\t\t\t\t};\n\t\t\tcase AST.ArrayExpression:\n\t\t\t\targs = [];\n\t\t\t\tforEach(ast.elements, function (expr) {\n\t\t\t\t\targs.push(self.recurse(expr));\n\t\t\t\t});\n\t\t\t\treturn function (scope, locals, assign, inputs) {\n\t\t\t\t\tvar value = [];\n\t\t\t\t\tfor (var i = 0; i < args.length; ++i) {\n\t\t\t\t\t\tvalue.push(args[i](scope, locals, assign, inputs));\n\t\t\t\t\t}\n\t\t\t\t\treturn context ? { value: value } : value;\n\t\t\t\t};\n\t\t\tcase AST.ObjectExpression:\n\t\t\t\targs = [];\n\t\t\t\tforEach(ast.properties, function (property) {\n\t\t\t\t\tif (property.computed) {\n\t\t\t\t\t\targs.push({\n\t\t\t\t\t\t\tkey: self.recurse(property.key),\n\t\t\t\t\t\t\tcomputed: true,\n\t\t\t\t\t\t\tvalue: self.recurse(property.value),\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\targs.push({\n\t\t\t\t\t\t\tkey:\n\t\t\t\t\t\t\t\tproperty.key.type === AST.Identifier\n\t\t\t\t\t\t\t\t\t? property.key.name\n\t\t\t\t\t\t\t\t\t: \"\" + property.key.value,\n\t\t\t\t\t\t\tcomputed: false,\n\t\t\t\t\t\t\tvalue: self.recurse(property.value),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn function (scope, locals, assign, inputs) {\n\t\t\t\t\tvar value = {};\n\t\t\t\t\tfor (var i = 0; i < args.length; ++i) {\n\t\t\t\t\t\tif (args[i].computed) {\n\t\t\t\t\t\t\tvalue[args[i].key(scope, locals, assign, inputs)] = args[i].value(\n\t\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\t\tlocals,\n\t\t\t\t\t\t\t\tassign,\n\t\t\t\t\t\t\t\tinputs\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvalue[args[i].key] = args[i].value(scope, locals, assign, inputs);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn context ? { value: value } : value;\n\t\t\t\t};\n\t\t\tcase AST.ThisExpression:\n\t\t\t\treturn function (scope) {\n\t\t\t\t\treturn context ? { value: scope } : scope;\n\t\t\t\t};\n\t\t\tcase AST.LocalsExpression:\n\t\t\t\treturn function (scope, locals) {\n\t\t\t\t\treturn context ? { value: locals } : locals;\n\t\t\t\t};\n\t\t\tcase AST.NGValueParameter:\n\t\t\t\treturn function (scope, locals, assign) {\n\t\t\t\t\treturn context ? { value: assign } : assign;\n\t\t\t\t};\n\t\t}\n\t},\n\n\t\"unary+\": function (argument, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg = argument(scope, locals, assign, inputs);\n\t\t\tif (isDefined(arg)) {\n\t\t\t\targ = +arg;\n\t\t\t} else {\n\t\t\t\targ = 0;\n\t\t\t}\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"unary-\": function (argument, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg = argument(scope, locals, assign, inputs);\n\t\t\tif (isDefined(arg)) {\n\t\t\t\targ = -arg;\n\t\t\t} else {\n\t\t\t\targ = -0;\n\t\t\t}\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"unary!\": function (argument, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg = !argument(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary+\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar lhs = left(scope, locals, assign, inputs);\n\t\t\tvar rhs = right(scope, locals, assign, inputs);\n\t\t\tvar arg = plusFn(lhs, rhs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary-\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar lhs = left(scope, locals, assign, inputs);\n\t\t\tvar rhs = right(scope, locals, assign, inputs);\n\t\t\tvar arg = (isDefined(lhs) ? lhs : 0) - (isDefined(rhs) ? rhs : 0);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary*\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) *\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary/\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) /\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary%\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) %\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary===\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) ===\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary!==\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) !==\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary==\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) ==\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary!=\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) !=\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary<\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) <\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary>\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) >\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary<=\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) <=\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary>=\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) >=\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary&&\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) &&\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary||\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) ||\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"ternary?:\": function (test, alternate, consequent, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg = test(scope, locals, assign, inputs)\n\t\t\t\t? alternate(scope, locals, assign, inputs)\n\t\t\t\t: consequent(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\tvalue: function (value, context) {\n\t\treturn function () {\n\t\t\treturn context\n\t\t\t\t? { context: undefined, name: undefined, value: value }\n\t\t\t\t: value;\n\t\t};\n\t},\n\tidentifier: function (name, context, create) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar base = locals && name in locals ? locals : scope;\n\t\t\tif (create && create !== 1 && base && base[name] == null) {\n\t\t\t\tbase[name] = {};\n\t\t\t}\n\t\t\tvar value = base ? base[name] : undefined;\n\t\t\tif (context) {\n\t\t\t\treturn { context: base, name: name, value: value };\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t};\n\t},\n\tcomputedMember: function (left, right, context, create) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar lhs = left(scope, locals, assign, inputs);\n\t\t\tvar rhs;\n\t\t\tvar value;\n\t\t\tif (lhs != null) {\n\t\t\t\trhs = right(scope, locals, assign, inputs);\n\t\t\t\trhs = getStringValue(rhs);\n\t\t\t\tif (create && create !== 1) {\n\t\t\t\t\tif (lhs && !lhs[rhs]) {\n\t\t\t\t\t\tlhs[rhs] = {};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(lhs, rhs)) {\n\t\t\t\t\tvalue = lhs[rhs];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (context) {\n\t\t\t\treturn { context: lhs, name: rhs, value: value };\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t};\n\t},\n\tnonComputedMember: function (left, right, context, create) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar lhs = left(scope, locals, assign, inputs);\n\t\t\tif (create && create !== 1) {\n\t\t\t\tif (lhs && lhs[right] == null) {\n\t\t\t\t\tlhs[right] = {};\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar value = undefined;\n\t\t\tif (lhs != null && Object.prototype.hasOwnProperty.call(lhs, right)) {\n\t\t\t\tvalue = lhs[right];\n\t\t\t}\n\n\t\t\tif (context) {\n\t\t\t\treturn { context: lhs, name: right, value: value };\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t};\n\t},\n\tinputs: function (input, watchId) {\n\t\treturn function (scope, value, locals, inputs) {\n\t\t\tif (inputs) return inputs[watchId];\n\t\t\treturn input(scope, value, locals);\n\t\t};\n\t},\n};\n\n/**\n * @constructor\n */\nvar Parser = function Parser(lexer, $filter, options) {\n\tthis.lexer = lexer;\n\tthis.$filter = $filter;\n\tthis.options = options;\n\tthis.ast = new AST(lexer, options);\n\tthis.astCompiler = options.csp\n\t\t? new ASTInterpreter(this.ast, $filter)\n\t\t: new ASTCompiler(this.ast, $filter);\n};\n\nParser.prototype = {\n\tconstructor: Parser,\n\n\tparse: function (text) {\n\t\treturn this.astCompiler.compile(text);\n\t},\n};\n\nfunction getValueOf(value) {\n\treturn isFunction(value.valueOf)\n\t\t? value.valueOf()\n\t\t: objectValueOf.call(value);\n}\n\n///////////////////////////////////\n\n/**\n * @ngdoc service\n * @name $parse\n * @kind function\n *\n * @description\n *\n * Converts Angular {@link guide/expression expression} into a function.\n *\n * ```js\n * var getter = $parse('user.name');\n * var setter = getter.assign;\n * var context = {user:{name:'angular'}};\n * var locals = {user:{name:'local'}};\n *\n * expect(getter(context)).toEqual('angular');\n * setter(context, 'newValue');\n * expect(context.user.name).toEqual('newValue');\n * expect(getter(context, locals)).toEqual('local');\n * ```\n *\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n *\n * The returned function also has the following properties:\n * * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript\n * literal.\n * * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript\n * constant literals.\n * * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be\n * set to a function to change its value on the given context.\n *\n */\n\n/**\n * @ngdoc provider\n * @name $parseProvider\n * @this\n *\n * @description\n * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse}\n * service.\n */\nfunction $ParseProvider() {\n\tvar cache = createMap();\n\tvar literals = {\n\t\ttrue: true,\n\t\tfalse: false,\n\t\tnull: null,\n\t\tundefined: undefined,\n\t};\n\tvar identStart, identContinue;\n\n\t/**\n\t * @ngdoc method\n\t * @name $parseProvider#addLiteral\n\t * @description\n\t *\n\t * Configure $parse service to add literal values that will be present as literal at expressions.\n\t *\n\t * @param {string} literalName Token for the literal value. The literal name value must be a valid literal name.\n\t * @param {*} literalValue Value for this literal. All literal values must be primitives or `undefined`.\n\t *\n\t **/\n\tthis.addLiteral = function (literalName, literalValue) {\n\t\tliterals[literalName] = literalValue;\n\t};\n\n\t/**\n\t * @ngdoc method\n\t * @name $parseProvider#setIdentifierFns\n\t *\n\t * @description\n\t *\n\t * Allows defining the set of characters that are allowed in Angular expressions. The function\n\t * `identifierStart` will get called to know if a given character is a valid character to be the\n\t * first character for an identifier. The function `identifierContinue` will get called to know if\n\t * a given character is a valid character to be a follow-up identifier character. The functions\n\t * `identifierStart` and `identifierContinue` will receive as arguments the single character to be\n\t * identifier and the character code point. These arguments will be `string` and `numeric`. Keep in\n\t * mind that the `string` parameter can be two characters long depending on the character\n\t * representation. It is expected for the function to return `true` or `false`, whether that\n\t * character is allowed or not.\n\t *\n\t * Since this function will be called extensively, keep the implementation of these functions fast,\n\t * as the performance of these functions have a direct impact on the expressions parsing speed.\n\t *\n\t * @param {function=} identifierStart The function that will decide whether the given character is\n\t * a valid identifier start character.\n\t * @param {function=} identifierContinue The function that will decide whether the given character is\n\t * a valid identifier continue character.\n\t */\n\tthis.setIdentifierFns = function (identifierStart, identifierContinue) {\n\t\tidentStart = identifierStart;\n\t\tidentContinue = identifierContinue;\n\t\treturn this;\n\t};\n\n\tthis.$get = [\n\t\t\"$filter\",\n\t\tfunction ($filter) {\n\t\t\tvar noUnsafeEval = csp().noUnsafeEval;\n\t\t\tvar $parseOptions = {\n\t\t\t\tcsp: noUnsafeEval,\n\t\t\t\tliterals: copy(literals),\n\t\t\t\tisIdentifierStart: isFunction(identStart) && identStart,\n\t\t\t\tisIdentifierContinue: isFunction(identContinue) && identContinue,\n\t\t\t};\n\t\t\treturn $parse;\n\n\t\t\tfunction $parse(exp, interceptorFn) {\n\t\t\t\tvar parsedExpression, oneTime, cacheKey;\n\n\t\t\t\tswitch (typeof exp) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\texp = exp.trim();\n\t\t\t\t\t\tcacheKey = exp;\n\n\t\t\t\t\t\tparsedExpression = cache[cacheKey];\n\n\t\t\t\t\t\tif (!parsedExpression) {\n\t\t\t\t\t\t\tif (exp.charAt(0) === \":\" && exp.charAt(1) === \":\") {\n\t\t\t\t\t\t\t\toneTime = true;\n\t\t\t\t\t\t\t\texp = exp.substring(2);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar lexer = new Lexer($parseOptions);\n\t\t\t\t\t\t\tvar parser = new Parser(lexer, $filter, $parseOptions);\n\t\t\t\t\t\t\tparsedExpression = parser.parse(exp);\n\t\t\t\t\t\t\tif (parsedExpression.constant) {\n\t\t\t\t\t\t\t\tparsedExpression.$$watchDelegate = constantWatchDelegate;\n\t\t\t\t\t\t\t} else if (oneTime) {\n\t\t\t\t\t\t\t\tparsedExpression.$$watchDelegate = parsedExpression.literal\n\t\t\t\t\t\t\t\t\t? oneTimeLiteralWatchDelegate\n\t\t\t\t\t\t\t\t\t: oneTimeWatchDelegate;\n\t\t\t\t\t\t\t} else if (parsedExpression.inputs) {\n\t\t\t\t\t\t\t\tparsedExpression.$$watchDelegate = inputsWatchDelegate;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcache[cacheKey] = parsedExpression;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn addInterceptor(parsedExpression, interceptorFn);\n\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\treturn addInterceptor(exp, interceptorFn);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn addInterceptor(noop, interceptorFn);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction expressionInputDirtyCheck(newValue, oldValueOfValue) {\n\t\t\t\tif (newValue == null || oldValueOfValue == null) {\n\t\t\t\t\t// null/undefined\n\t\t\t\t\treturn newValue === oldValueOfValue;\n\t\t\t\t}\n\n\t\t\t\tif (typeof newValue === \"object\") {\n\t\t\t\t\t// attempt to convert the value to a primitive type\n\t\t\t\t\t// TODO(docs): add a note to docs that by implementing valueOf even objects and arrays can\n\t\t\t\t\t// be cheaply dirty-checked\n\t\t\t\t\tnewValue = getValueOf(newValue);\n\n\t\t\t\t\tif (typeof newValue === \"object\") {\n\t\t\t\t\t\t// objects/arrays are not supported - deep-watching them would be too expensive\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// fall-through to the primitive equality check\n\t\t\t\t}\n\n\t\t\t\t//Primitive or NaN\n\t\t\t\t// eslint-disable-next-line no-self-compare\n\t\t\t\treturn (\n\t\t\t\t\tnewValue === oldValueOfValue ||\n\t\t\t\t\t(newValue !== newValue && oldValueOfValue !== oldValueOfValue)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfunction inputsWatchDelegate(\n\t\t\t\tscope,\n\t\t\t\tlistener,\n\t\t\t\tobjectEquality,\n\t\t\t\tparsedExpression,\n\t\t\t\tprettyPrintExpression\n\t\t\t) {\n\t\t\t\tvar inputExpressions = parsedExpression.inputs;\n\t\t\t\tvar lastResult;\n\n\t\t\t\tif (inputExpressions.length === 1) {\n\t\t\t\t\tvar oldInputValueOf = expressionInputDirtyCheck; // init to something unique so that equals check fails\n\t\t\t\t\tinputExpressions = inputExpressions[0];\n\t\t\t\t\treturn scope.$watch(\n\t\t\t\t\t\tfunction expressionInputWatch(scope) {\n\t\t\t\t\t\t\tvar newInputValue = inputExpressions(scope);\n\t\t\t\t\t\t\tif (!expressionInputDirtyCheck(newInputValue, oldInputValueOf)) {\n\t\t\t\t\t\t\t\tlastResult = parsedExpression(scope, undefined, undefined, [\n\t\t\t\t\t\t\t\t\tnewInputValue,\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\toldInputValueOf = newInputValue && getValueOf(newInputValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn lastResult;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlistener,\n\t\t\t\t\t\tobjectEquality,\n\t\t\t\t\t\tprettyPrintExpression\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tvar oldInputValueOfValues = [];\n\t\t\t\tvar oldInputValues = [];\n\t\t\t\tfor (var i = 0, ii = inputExpressions.length; i < ii; i++) {\n\t\t\t\t\toldInputValueOfValues[i] = expressionInputDirtyCheck; // init to something unique so that equals check fails\n\t\t\t\t\toldInputValues[i] = null;\n\t\t\t\t}\n\n\t\t\t\treturn scope.$watch(\n\t\t\t\t\tfunction expressionInputsWatch(scope) {\n\t\t\t\t\t\tvar changed = false;\n\n\t\t\t\t\t\tfor (var i = 0, ii = inputExpressions.length; i < ii; i++) {\n\t\t\t\t\t\t\tvar newInputValue = inputExpressions[i](scope);\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tchanged ||\n\t\t\t\t\t\t\t\t(changed = !expressionInputDirtyCheck(\n\t\t\t\t\t\t\t\t\tnewInputValue,\n\t\t\t\t\t\t\t\t\toldInputValueOfValues[i]\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\toldInputValues[i] = newInputValue;\n\t\t\t\t\t\t\t\toldInputValueOfValues[i] =\n\t\t\t\t\t\t\t\t\tnewInputValue && getValueOf(newInputValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (changed) {\n\t\t\t\t\t\t\tlastResult = parsedExpression(\n\t\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\toldInputValues\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn lastResult;\n\t\t\t\t\t},\n\t\t\t\t\tlistener,\n\t\t\t\t\tobjectEquality,\n\t\t\t\t\tprettyPrintExpression\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfunction oneTimeWatchDelegate(\n\t\t\t\tscope,\n\t\t\t\tlistener,\n\t\t\t\tobjectEquality,\n\t\t\t\tparsedExpression,\n\t\t\t\tprettyPrintExpression\n\t\t\t) {\n\t\t\t\tvar unwatch, lastValue;\n\t\t\t\tif (parsedExpression.inputs) {\n\t\t\t\t\tunwatch = inputsWatchDelegate(\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\toneTimeListener,\n\t\t\t\t\t\tobjectEquality,\n\t\t\t\t\t\tparsedExpression,\n\t\t\t\t\t\tprettyPrintExpression\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tunwatch = scope.$watch(oneTimeWatch, oneTimeListener, objectEquality);\n\t\t\t\t}\n\t\t\t\treturn unwatch;\n\n\t\t\t\tfunction oneTimeWatch(scope) {\n\t\t\t\t\treturn parsedExpression(scope);\n\t\t\t\t}\n\t\t\t\tfunction oneTimeListener(value, old, scope) {\n\t\t\t\t\tlastValue = value;\n\t\t\t\t\tif (isFunction(listener)) {\n\t\t\t\t\t\tlistener(value, old, scope);\n\t\t\t\t\t}\n\t\t\t\t\tif (isDefined(value)) {\n\t\t\t\t\t\tscope.$$postDigest(function () {\n\t\t\t\t\t\t\tif (isDefined(lastValue)) {\n\t\t\t\t\t\t\t\tunwatch();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction oneTimeLiteralWatchDelegate(\n\t\t\t\tscope,\n\t\t\t\tlistener,\n\t\t\t\tobjectEquality,\n\t\t\t\tparsedExpression\n\t\t\t) {\n\t\t\t\tvar unwatch, lastValue;\n\t\t\t\tunwatch = scope.$watch(\n\t\t\t\t\tfunction oneTimeWatch(scope) {\n\t\t\t\t\t\treturn parsedExpression(scope);\n\t\t\t\t\t},\n\t\t\t\t\tfunction oneTimeListener(value, old, scope) {\n\t\t\t\t\t\tlastValue = value;\n\t\t\t\t\t\tif (isFunction(listener)) {\n\t\t\t\t\t\t\tlistener(value, old, scope);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isAllDefined(value)) {\n\t\t\t\t\t\t\tscope.$$postDigest(function () {\n\t\t\t\t\t\t\t\tif (isAllDefined(lastValue)) unwatch();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tobjectEquality\n\t\t\t\t);\n\n\t\t\t\treturn unwatch;\n\n\t\t\t\tfunction isAllDefined(value) {\n\t\t\t\t\tvar allDefined = true;\n\t\t\t\t\tforEach(value, function (val) {\n\t\t\t\t\t\tif (!isDefined(val)) allDefined = false;\n\t\t\t\t\t});\n\t\t\t\t\treturn allDefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction constantWatchDelegate(\n\t\t\t\tscope,\n\t\t\t\tlistener,\n\t\t\t\tobjectEquality,\n\t\t\t\tparsedExpression\n\t\t\t) {\n\t\t\t\tvar unwatch = scope.$watch(\n\t\t\t\t\tfunction constantWatch(scope) {\n\t\t\t\t\t\tunwatch();\n\t\t\t\t\t\treturn parsedExpression(scope);\n\t\t\t\t\t},\n\t\t\t\t\tlistener,\n\t\t\t\t\tobjectEquality\n\t\t\t\t);\n\t\t\t\treturn unwatch;\n\t\t\t}\n\n\t\t\tfunction addInterceptor(parsedExpression, interceptorFn) {\n\t\t\t\tif (!interceptorFn) return parsedExpression;\n\t\t\t\tvar watchDelegate = parsedExpression.$$watchDelegate;\n\t\t\t\tvar useInputs = false;\n\n\t\t\t\tvar regularWatch =\n\t\t\t\t\twatchDelegate !== oneTimeLiteralWatchDelegate &&\n\t\t\t\t\twatchDelegate !== oneTimeWatchDelegate;\n\n\t\t\t\tvar fn = regularWatch\n\t\t\t\t\t? function regularInterceptedExpression(\n\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\tlocals,\n\t\t\t\t\t\t\tassign,\n\t\t\t\t\t\t\tinputs\n\t\t\t\t\t ) {\n\t\t\t\t\t\t\tvar value =\n\t\t\t\t\t\t\t\tuseInputs && inputs\n\t\t\t\t\t\t\t\t\t? inputs[0]\n\t\t\t\t\t\t\t\t\t: parsedExpression(scope, locals, assign, inputs);\n\t\t\t\t\t\t\treturn interceptorFn(value, scope, locals);\n\t\t\t\t\t }\n\t\t\t\t\t: function oneTimeInterceptedExpression(\n\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\tlocals,\n\t\t\t\t\t\t\tassign,\n\t\t\t\t\t\t\tinputs\n\t\t\t\t\t ) {\n\t\t\t\t\t\t\tvar value = parsedExpression(scope, locals, assign, inputs);\n\t\t\t\t\t\t\tvar result = interceptorFn(value, scope, locals);\n\t\t\t\t\t\t\t// we only return the interceptor's result if the\n\t\t\t\t\t\t\t// initial value is defined (for bind-once)\n\t\t\t\t\t\t\treturn isDefined(value) ? result : value;\n\t\t\t\t\t };\n\n\t\t\t\t// Propagate $$watchDelegates other then inputsWatchDelegate\n\t\t\t\tuseInputs = !parsedExpression.inputs;\n\t\t\t\tif (\n\t\t\t\t\tparsedExpression.$$watchDelegate &&\n\t\t\t\t\tparsedExpression.$$watchDelegate !== inputsWatchDelegate\n\t\t\t\t) {\n\t\t\t\t\tfn.$$watchDelegate = parsedExpression.$$watchDelegate;\n\t\t\t\t\tfn.inputs = parsedExpression.inputs;\n\t\t\t\t} else if (!interceptorFn.$stateful) {\n\t\t\t\t\t// If there is an interceptor, but no watchDelegate then treat the interceptor like\n\t\t\t\t\t// we treat filters - it is assumed to be a pure function unless flagged with $stateful\n\t\t\t\t\tfn.$$watchDelegate = inputsWatchDelegate;\n\t\t\t\t\tfn.inputs = parsedExpression.inputs\n\t\t\t\t\t\t? parsedExpression.inputs\n\t\t\t\t\t\t: [parsedExpression];\n\t\t\t\t}\n\n\t\t\t\treturn fn;\n\t\t\t}\n\t\t},\n\t];\n}\n\nexports.Lexer = Lexer;\nexports.Parser = Parser;\n","\"use strict\";\n\nvar parse = require(\"./parse.js\");\n\nvar filters = {};\nvar Lexer = parse.Lexer;\nvar Parser = parse.Parser;\n/**\n * Compiles src and returns a function that executes src on a target object.\n * The compiled function is cached under compile.cache[src] to speed up further calls.\n *\n * @param {string} src\n * @returns {function}\n */\nfunction compile(src, lexerOptions) {\n\tlexerOptions = lexerOptions || {};\n\n\tvar cached;\n\n\tif (typeof src !== \"string\") {\n\t\tthrow new TypeError(\n\t\t\t\"src must be a string, instead saw '\" + typeof src + \"'\"\n\t\t);\n\t}\n\tvar parserOptions = {\n\t\tcsp: false, // noUnsafeEval,\n\t\tliterals: {\n\t\t\t// defined at: function $ParseProvider() {\n\t\t\ttrue: true,\n\t\t\tfalse: false,\n\t\t\tnull: null,\n\t\t\t/*eslint no-undefined: 0*/\n\t\t\tundefined: undefined,\n\t\t\t/* eslint: no-undefined: 1 */\n\t\t},\n\t};\n\n\tvar lexer = new Lexer(lexerOptions);\n\tvar parser = new Parser(\n\t\tlexer,\n\t\tfunction getFilter(name) {\n\t\t\treturn filters[name];\n\t\t},\n\t\tparserOptions\n\t);\n\n\tif (!compile.cache) {\n\t\treturn parser.parse(src);\n\t}\n\n\tcached = compile.cache[src];\n\tif (!cached) {\n\t\tcached = compile.cache[src] = parser.parse(src);\n\t}\n\n\treturn cached;\n}\n\n/**\n * A cache containing all compiled functions. The src is used as key.\n * Set this on false to disable the cache.\n *\n * @type {object}\n */\ncompile.cache = Object.create(null);\n\nexports.Lexer = Lexer;\nexports.Parser = Parser;\nexports.compile = compile;\nexports.filters = filters;\n","/**\n * Values I want to reference from anywhere\n * @typedef {Object} GlobalsObject\n * @property {State} state\n * @property {import(\"./data\").Data} data\n * @property {import(\"./components/actions\").Actions} actions\n * @property {TreeBase} tree\n * @property {import('./components/layout').Layout} layout\n * @property {import('./components/access/pattern').PatternList} patterns\n * @property {import('./components/access/cues').CueList} cues\n * @property {import('./components/access/method').MethodChooser} method\n * @property {import('./components/monitor').Monitor} monitor\n * @property {import('./components/toolbar').ToolBar} toolbar\n * @property {import('./components/designer').Designer} designer\n * @property {import('./components/errors').Messages} error\n * @property {function():Promise} restart\n */\n\n/** @type {GlobalsObject} */\n// @ts-ignore Object missing properties\nconst Globals = {}; // values are supplied in start.js\n\nexport default Globals;\n","import expressions from \"angular-expressions\";\nimport Globals from \"./globals\";\n\n/** @param {function(string, string): string} f */\nfunction updateString(f) {\n /** @param {string} value */\n return function (value) {\n /** @param {string | undefined} old */\n return function (old) {\n return f(old || \"\", value);\n };\n };\n}\n/** @param {function(number, number): number} f */\nfunction updateNumber(f) {\n /** @param {number} value */\n return function (value) {\n /** @param {number | undefined} old */\n return function (old) {\n return f(old || 0, value);\n };\n };\n}\nexport const Functions = {\n increment: updateNumber((old, value) => old + value),\n add_word: updateString((old, value) => old + value + \" \"),\n add_letter: updateString((old, value) => old + value),\n complete: updateString((old, value) => {\n if (old.length == 0 || old.endsWith(\" \")) {\n return old + value;\n } else {\n return old.replace(/\\w+$/, value);\n }\n }),\n replace_last: updateString((old, value) => old.replace(/\\w*\\s*$/, value)),\n replace_last_letter: updateString((old, value) => old.slice(0, -1) + value),\n random: (/** @type {string} */ arg) => {\n let args = arg.split(\",\");\n return args[Math.floor(Math.random() * args.length)];\n },\n};\n\n/**\n * Translate an expression from Excel-like to Javascript\n *\n * @param {string} expression\n * @returns {string}\n */\nfunction translate(expression) {\n /* translate the expression from the excel like form to javascript */\n // translate single = to ==\n let exp = expression.replaceAll(/(?!])=/g, \"==\");\n // translate words\n exp = exp.replaceAll(/[$#]\\w+/g, \"access('$&')\");\n return exp;\n}\n\n/**\n * Validate an expression string\n *\n * @param {string} expression\n * @returns {boolean}\n */\nexport function validateExpression(expression) {\n try {\n const exp = translate(expression);\n expressions.compile(exp);\n } catch (error) {\n console.error(\"validate\", error);\n return false;\n }\n return true;\n}\n\n/**\n * Cleanup access to state and data\n *\n * @param {State} state\n * @param {Row} data\n * @returns {function(string): any}\n */\nexport function access(state, data) {\n return function (name) {\n if (!name) return \"\";\n if (state && name.startsWith(\"$\")) {\n return state.get(name);\n }\n if (data && name.startsWith(\"#\")) {\n const r = data[name.slice(1)];\n if (r == null) return \"\";\n return r;\n }\n return \"\";\n };\n}\n\n/** @param {string} expression\n *\n * This could throw an error which we should catch and report.\n * */\nexport function compileExpression(expression) {\n const te = translate(expression);\n const exp = expressions.compile(te);\n /** @param {Object} context */\n return (context) =>\n exp({ ...Functions, access: access(Globals.state, context), ...context });\n}\n\n/**\n * Evaluate a string as an expression in a given context\n *\n * @param {string} expression - Expression to evaluate\n * @param {Object} context - Context for the evaluation\n * @returns {any} Value returned by the expression\n */\nexport function evalInContext(expression, context) {\n try {\n const te = translate(expression);\n const exp = expressions.compile(te);\n return exp({ ...context, access: access(context.state, context.data) });\n } catch (e) {\n console.error(e);\n return null;\n }\n}\n","/* Thinking about better properties */\n\nimport { html } from \"uhtml\";\nimport \"css/props.css\";\nimport { compileExpression } from \"app/eval\";\nimport Globals from \"app/globals\";\nimport { TreeBaseSwitchable } from \"./treebase\";\n\n/**\n * @typedef {Object} PropOptions\n * @property {boolean} [hiddenLabel]\n * @property {string} [placeholder]\n * @property {string} [title]\n * @property {string} [label]\n * @property {boolean} [multiple]\n * @property {string} [defaultValue]\n * @property {string} [group]\n * @property {string} [language]\n * @property {Object} [replacements]\n * @property {any} [valueWhenEmpty]\n * @property {string} [pattern]\n * @property {function(string):string} [validate]\n */\n\nexport class Prop {\n label = \"\";\n /** @type {any} */\n value;\n\n // Each prop gets a unique id based on the id of its container\n id = \"\";\n\n /** @type {import('./treebase').TreeBase} */\n container;\n\n /** attach the prop to its containing TreeBase component\n * @param {string} name\n * @param {any} value\n * @param {TreeBase} container\n * */\n initialize(name, value, container) {\n // create id from the container id\n this.id = `${container.id}-${name}`;\n // link to the container\n this.container = container;\n // set the value if provided\n if (value != null) {\n this.set(value);\n }\n // create a label if it has none\n this.label =\n this.label ||\n name // convert from camelCase to Camel Case\n .replace(/(?!^)([A-Z])/g, \" $1\")\n .replace(/^./, (s) => s.toUpperCase());\n }\n\n get valueAsNumber() {\n return parseFloat(this.value);\n }\n\n /** @type {PropOptions} */\n options = {};\n\n /** @param {PropOptions} options */\n constructor(options = {}) {\n this.options = options;\n if (options[\"label\"]) {\n this.label = options[\"label\"];\n }\n }\n /** @param {Object} _ - The context */\n eval(_ = {}) {\n return this.value;\n }\n input() {\n return html``;\n }\n /** @param {Hole} body */\n labeled(body) {\n return html`
    \n
    `;\n }\n\n /** @param {any} value */\n set(value) {\n this.value = value;\n }\n\n update() {\n this.container.update();\n }\n}\n\n/** @param {string[] | Map | function():Map} arrayOrMap\n * @returns Map\n */\nexport function toMap(arrayOrMap) {\n if (arrayOrMap instanceof Function) {\n return arrayOrMap();\n }\n if (Array.isArray(arrayOrMap)) {\n return new Map(arrayOrMap.map((item) => [item, item]));\n }\n return arrayOrMap;\n}\n\nexport class Select extends Prop {\n /**\n * @param {string[] | Map | function():Map} choices\n * @param {PropOptions} options\n */\n constructor(choices = [], options = {}) {\n super(options);\n this.choices = choices;\n this.value = options.defaultValue || \"\";\n }\n\n /** @param {Map | null} choices */\n input(choices = null) {\n if (!choices) {\n choices = toMap(this.choices);\n }\n this.value = this.value || this.options.defaultValue || \"\";\n return this.labeled(\n html` {\n this.value = target.value;\n this.update();\n }}\n >\n \n ${[...choices.entries()].map(\n ([key, value]) =>\n html``,\n )}\n `,\n );\n }\n\n /** @param {any} value */\n set(value) {\n this.value = value;\n }\n}\n\nexport class Field extends Select {\n /**\n * @param {PropOptions} options\n */\n constructor(options = {}) {\n super(\n () => toMap([...Globals.data.allFields, \"#ComponentName\"].sort()),\n options,\n );\n }\n}\n\nexport class State extends Select {\n /**\n * @param {PropOptions} options\n */\n constructor(options = {}) {\n super(() => toMap([...Globals.tree.allStates()]), options);\n }\n}\n\nexport class Cue extends Select {\n /**\n * @param {PropOptions} options\n */\n constructor(options = {}) {\n super(() => Globals.cues.cueMap, options);\n }\n}\n\nexport class Pattern extends Select {\n /**\n * @param {PropOptions} options\n */\n constructor(options = {}) {\n super(() => Globals.patterns.patternMap, options);\n }\n}\n\nexport class TypeSelect extends Select {\n update() {\n /* Magic happens here! The replace method on a TreeBaseSwitchable replaces the\n * node with a new one to allow type switching in place\n * */\n if (this.container instanceof TreeBaseSwitchable)\n this.container.replace(this.value);\n }\n}\n\nexport class String extends Prop {\n value = \"\";\n\n constructor(value = \"\", options = {}) {\n super(options);\n this.value = value;\n }\n\n input() {\n return this.labeled(\n html` {\n if (target.checkValidity()) {\n this.value = target.value;\n this.update();\n }\n }}\n title=${this.options.title}\n placeholder=${this.options.placeholder}\n />`,\n );\n }\n}\n\n/* Allow entering a key name by first pressing Enter than pressing a single key\n */\nexport class KeyName extends Prop {\n value = \"\";\n\n constructor(value = \"\", options = {}) {\n super(options);\n this.value = value;\n }\n\n input() {\n /** @param {string} key */\n function mapKey(key) {\n if (key == \" \") return \"Space\";\n return key;\n }\n return this.labeled(\n html` {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) return;\n if (target.hasAttribute(\"readonly\") && event.key == \"Enter\") {\n target.removeAttribute(\"readonly\");\n target.select();\n } else if (!target.hasAttribute(\"readonly\")) {\n event.stopPropagation();\n event.preventDefault();\n this.value = event.key;\n target.value = mapKey(event.key);\n target.setAttribute(\"readonly\", \"\");\n }\n }}\n title=\"Press Enter to change then press a single key to set\"\n placeholder=${this.options.placeholder}\n />`,\n );\n }\n}\n\nexport class TextArea extends Prop {\n value = \"\";\n\n constructor(value = \"\", options = {}) {\n super(options);\n this.value = value;\n this.validate = this.options.validate || ((_) => \"\");\n }\n\n input() {\n return this.labeled(\n html` {\n const errorMsg = this.validate(target.value);\n target.setCustomValidity(errorMsg);\n }}\n onchange=${({ target }) => {\n if (target.checkValidity()) {\n this.value = target.value;\n this.update();\n }\n }}\n title=${this.options.title}\n placeholder=${this.options.placeholder}\n />`,\n );\n }\n}\n\nexport class Integer extends Prop {\n /** @type {number} */\n value = 0;\n constructor(value = 0, options = {}) {\n super(options);\n this.value = value;\n }\n\n input() {\n return this.labeled(\n html` {\n if (target.checkValidity()) {\n this.value = parseInt(target.value);\n this.update();\n }\n }}\n title=${this.options.title}\n placeholder=${this.options.placeholder}\n />`,\n );\n }\n}\n\nexport class Float extends Prop {\n /** @type {number} */\n value = 0;\n constructor(value = 0, options = {}) {\n super(options);\n this.value = value;\n }\n\n input() {\n return this.labeled(\n html` {\n if (target.checkValidity()) {\n this.value = parseFloat(target.value);\n this.update();\n }\n }}\n title=${this.options.title}\n placeholder=${this.options.placeholder}\n step=\"any\"\n />`,\n );\n }\n}\n\nexport class Boolean extends Prop {\n /** @type {boolean} */\n value = false;\n\n constructor(value = false, options = {}) {\n super(options);\n this.value = value;\n }\n\n input(options = {}) {\n options = { ...this.options, ...options };\n return this.labeled(\n html` {\n this.value = target.checked;\n this.update();\n }}\n title=${options.title}\n />`,\n );\n }\n\n /** @param {any} value */\n set(value) {\n if (typeof value === \"boolean\") {\n this.value = value;\n } else if (typeof value === \"string\") {\n this.value = value === \"true\";\n }\n }\n}\n\nexport class OneOfGroup extends Prop {\n /** @type {boolean} */\n value = false;\n\n constructor(value = false, options = {}) {\n super(options);\n this.value = value;\n }\n\n input(options = {}) {\n options = { ...this.options, ...options };\n return this.labeled(\n html` {\n this.value = true;\n this.clearPeers(options.group);\n this.update();\n }}\n title=${this.options.title}\n />`,\n );\n }\n\n /** @param {any} value */\n set(value) {\n if (typeof value === \"boolean\") {\n this.value = value;\n } else if (typeof value === \"string\") {\n this.value = value === \"true\";\n }\n }\n\n /**\n * Clear the value of peer radio buttons with the same name\n * @param {string} name\n */\n clearPeers(name) {\n const peers = this.container?.parent?.children || [];\n for (const peer of peers) {\n const props = peer.propsAsProps;\n for (const propName in props) {\n const prop = props[propName];\n if (\n prop instanceof OneOfGroup &&\n prop.options.group == name &&\n prop != this\n ) {\n prop.set(false);\n }\n }\n }\n }\n}\n\nexport class UID extends Prop {\n constructor() {\n super({});\n this.value =\n \"id\" + Date.now().toString(36) + Math.random().toString(36).slice(2);\n }\n}\n\nexport class Expression extends Prop {\n /** @type {function | null}\n compiled = null;\n /** @param {string} value\n * @param {PropOptions} options\n */\n constructor(value = \"\", options = {}) {\n super(options);\n this.value = value;\n }\n\n input() {\n return this.labeled(\n html` {\n this.value = target.value;\n try {\n this.compiled = compileExpression(this.value);\n target.setCustomValidity(\"\");\n target.reportValidity();\n this.update();\n } catch (e) {\n target.setCustomValidity(e.message);\n target.reportValidity();\n }\n }}\n title=${this.options.title}\n placeholder=${this.options.placeholder}\n />`,\n );\n }\n\n /** @param {string} value */\n set(value) {\n this.value = value;\n try {\n this.compiled = compileExpression(this.value);\n } catch (e) {\n console.error(e);\n console.log(\"value=\", value, this);\n }\n }\n\n /** @param {Object} context */\n eval(context) {\n if (this.compiled && this.value) {\n const r = this.compiled(context);\n return r;\n } else {\n return this.options[\"valueWhenEmpty\"];\n }\n }\n}\n\nexport class Code extends Prop {\n value = \"\";\n editedValue = \"\";\n\n /** @type {string[]} */\n errors = [];\n\n /** @type {number[]} */\n lineOffsets = [];\n\n /** @param {PropOptions} options */\n constructor(value = \"\", options = {}) {\n options = {\n language: \"css\",\n replacements: {},\n ...options,\n };\n super(options);\n this.value = value;\n }\n\n /** @param {HTMLTextAreaElement} target */\n addLineNumbers = (target) => {\n const numberOfLines = target.value.split(\"\\n\").length;\n const lineNumbers = /** @type {HTMLTextAreaElement} */ (\n target.previousElementSibling\n );\n const numbers = [];\n for (let ln = 1; ln <= numberOfLines; ln++) {\n numbers.push(ln);\n }\n lineNumbers.value = numbers.join(\"\\n\");\n const rows = Math.max(4, Math.min(10, numberOfLines));\n target.rows = rows;\n lineNumbers.rows = rows;\n lineNumbers.scrollTop = target.scrollTop;\n };\n\n /** @param {number} offset - where the error happened\n * @param {string} message - the error message\n */\n addError(offset, message) {\n const line = this.value.slice(0, offset).match(/$/gm)?.length || \"??\";\n this.errors.push(`${line}: ${message}`);\n }\n\n /** Edit and validate the value */\n editCSS(props = {}, editSelector = (selector = \"\") => selector) {\n // replaces props in the full text\n let value = this.value;\n for (const prop in props) {\n value = value.replaceAll(\"$\" + prop, props[prop]);\n }\n // clear the errors\n this.errors = [];\n // build the new rules here\n const editedRules = [];\n // match a single rule\n const ruleRE = /([\\s\\S]*?)({\\s*[\\s\\S]*?}\\s*)/dg;\n for (const ruleMatch of value.matchAll(ruleRE)) {\n let selector = ruleMatch[1];\n const indices = ruleMatch.indices;\n if (!indices) continue;\n const selectorOffset = indices[1][0];\n const body = ruleMatch[2];\n const bodyOffset = indices[2][0];\n // replace field names in the selector\n selector = selector.replace(\n /#(\\w+)/g,\n (_, name) =>\n `data-${name.replace(\n /[A-Z]/g,\n (/** @type {string} */ m) => `-${m.toLowerCase()}`,\n )}`,\n );\n // prefix the selector so it only applies to the UI\n selector = `#UI ${editSelector(selector)}`;\n // reconstruct the rule\n const rule = selector + body;\n // add it to the result\n editedRules.push(rule);\n // validate the rule\n const styleSheet = new CSSStyleSheet();\n try {\n // add the rule to the sheet. If the selector is bad we'll get an\n // exception. If any properties are bad they will omitted in the\n // result. I'm adding a bogus ;gap:0; property to the end of the body\n // because we get an exception if there is only one invalid property.\n const index = styleSheet.insertRule(rule.replace(\"}\", \";gap:0;}\"));\n // retrieve the rule\n const newRule = styleSheet.cssRules[index].cssText;\n // extract the body\n const ruleRE = /([\\s\\S]*?)({\\s*[\\s\\S]*?}\\s*)/dg;\n const match = ruleRE.exec(newRule);\n if (match) {\n const newBody = match[2];\n const propRE = /[-\\w]+:/g;\n const newProperties = newBody.match(propRE);\n for (const propMatch of body.matchAll(propRE)) {\n if (!newProperties || newProperties.indexOf(propMatch[0]) < 0) {\n // the property was invalid\n this.addError(\n bodyOffset + (propMatch.index || 0),\n `property ${propMatch[0]} is invalid`,\n );\n }\n }\n } else {\n this.addError(selectorOffset, \"Rule is invalid\");\n }\n } catch (e) {\n this.addError(selectorOffset, \"Rule is invalid\");\n }\n }\n this.editedValue = editedRules.join(\"\");\n }\n\n input() {\n return this.labeled(\n html`
    \n
    \n \n {\n this.value = target.value;\n this.editCSS();\n this.update();\n }}\n onkeyup=${(\n /** @type {{ target: HTMLTextAreaElement; }} */ event,\n ) => {\n this.addLineNumbers(event.target);\n }}\n onscroll=${({ target }) => {\n target.previousElementSibling.scrollTop = target.scrollTop;\n }}\n ref=${this.addLineNumbers}\n title=${this.options.title}\n placeholder=${this.options.placeholder}\n >\n
    \n
    ${this.errors.join(\"\\n\")}
    \n
    `,\n );\n }\n\n /** @param {string} value */\n set(value) {\n this.value = value;\n this.editCSS();\n }\n}\n\nexport class Color extends Prop {\n value = \"#ffffff\";\n\n constructor(value = \"\", options = {}) {\n super(options);\n this.value = value;\n }\n\n input() {\n return this.labeled(\n html` {\n this.value = event.target.value;\n this.update();\n }}\n />`,\n );\n }\n}\n\nexport class Voice extends Prop {\n value = \"\";\n\n constructor(value = \"\", options = {}) {\n super(options);\n this.value = value;\n }\n\n input() {\n return this.labeled(\n html` {\n this.value = event.target.value;\n this.update();\n }}\n >\n \n `,\n );\n }\n}\n\nexport class ADate extends Prop {\n value = \"\";\n\n constructor(value = \"\", options = {}) {\n super(options);\n this.value = value;\n }\n\n input() {\n return this.labeled(\n html` {\n this.value = event.target.value;\n this.update();\n }}\n />`,\n );\n }\n}\n","/*! (c) Andrea Giammarchi */\n\nconst {iterator} = Symbol;\n\nconst noop = () => {};\n\n/**\n * A Map extend that transparently uses WeakRef around its values,\n * providing a way to observe their collection at distance.\n * @extends {Map}\n */\nclass WeakValue extends Map {\n #delete = (key, ref) => {\n super.delete(key);\n this.#registry.unregister(ref);\n };\n\n #get = (key, [ref, onValueCollected]) => {\n const value = ref.deref();\n if (!value) {\n this.#delete(key, ref);\n onValueCollected(key, this);\n }\n return value;\n }\n\n #registry = new FinalizationRegistry(key => {\n const pair = super.get(key);\n if (pair) {\n super.delete(key);\n pair[1](key, this);\n }\n });\n\n constructor(iterable) {\n super();\n if (iterable)\n for (const [key, value] of iterable)\n this.set(key, value);\n }\n\n clear() {\n for (const [_, [ref]] of super[iterator]())\n this.#registry.unregister(ref);\n super.clear();\n }\n\n delete(key) {\n const pair = super.get(key);\n return !!pair && !this.#delete(key, pair[0]);\n }\n\n forEach(callback, context) {\n for (const [key, value] of this)\n callback.call(context, value, key, this);\n }\n\n get(key) {\n const pair = super.get(key);\n return pair && this.#get(key, pair);\n }\n\n has(key) {\n return !!this.get(key);\n }\n\n set(key, value, onValueCollected = noop) {\n super.delete(key);\n const ref = new WeakRef(value);\n this.#registry.register(value, key, ref);\n return super.set(key, [ref, onValueCollected]);\n }\n\n *[iterator]() {\n for (const [key, pair] of super[iterator]()) {\n const value = this.#get(key, pair);\n if (value)\n yield [key, value];\n }\n }\n\n *entries() {\n yield *this[iterator]();\n }\n\n *values() {\n for (const [_, value] of this[iterator]())\n yield value;\n }\n}\n\nexport default WeakValue;\n","/*\n * Bang color names from http://www.procato.com/rgb+index/?csv\n */\nexport const ColorNames = {\n \"pinkish white\": \"#fff6f6\",\n \"very pale pink\": \"#ffe2e2\",\n \"pale pink\": \"#ffc2c2\",\n \"light pink\": \"#ff9e9e\",\n \"light brilliant red\": \"#ff6565\",\n \"luminous vivid red\": \"#ff0000\",\n \"pinkish gray\": \"#e7dada\",\n \"pale grayish pink\": \"#e7b8b8\",\n pink: \"#e78b8b\",\n \"brilliant red\": \"#e75151\",\n \"vivid red\": \"#e70000\",\n \"reddish gray\": \"#a89c9c\",\n \"grayish red\": \"#a87d7d\",\n \"moderate red\": \"#a84a4a\",\n \"strong red\": \"#a80000\",\n \"reddish brownish gray\": \"#595353\",\n \"dark grayish reddish brown\": \"#594242\",\n \"reddish brown\": \"#592727\",\n \"deep reddish brown\": \"#590000\",\n \"reddish brownish black\": \"#1d1a1a\",\n \"very reddish brown\": \"#1d1111\",\n \"very deep reddish brown\": \"#1d0000\",\n \"pale scarlet\": \"#ffc9c2\",\n \"very light scarlet\": \"#ffaa9e\",\n \"light brilliant scarlet\": \"#ff7865\",\n \"luminous vivid scarlet\": \"#ff2000\",\n \"light scarlet\": \"#e7968b\",\n \"brilliant scarlet\": \"#e76451\",\n \"vivid scarlet\": \"#e71d00\",\n \"moderate scarlet\": \"#a8554a\",\n \"strong scarlet\": \"#a81500\",\n \"dark scarlet\": \"#592d27\",\n \"deep scarlet\": \"#590b00\",\n \"very pale vermilion\": \"#ffe9e2\",\n \"pale vermilion\": \"#ffd1c2\",\n \"very light vermilion\": \"#ffb69e\",\n \"light brilliant vermilion\": \"#ff8b65\",\n \"luminous vivid vermilion\": \"#ff4000\",\n \"pale, light grayish vermilion\": \"#e7c4b8\",\n \"light vermilion\": \"#e7a28b\",\n \"brilliant vermilion\": \"#e77751\",\n \"vivid vermilion\": \"#e73a00\",\n \"grayish vermilion\": \"#a8887d\",\n \"moderate vermilion\": \"#a8614a\",\n \"strong vermilion\": \"#a82a00\",\n \"dark grayish vermilion\": \"#594842\",\n \"dark vermilion\": \"#593427\",\n \"deep vermilion\": \"#591600\",\n \"pale tangelo\": \"#ffd9c2\",\n \"very light tangelo\": \"#ffc29e\",\n \"light brilliant tangelo\": \"#ff9f65\",\n \"luminous vivid tangelo\": \"#ff6000\",\n \"light tangelo\": \"#e7ae8b\",\n \"brilliant tangelo\": \"#e78951\",\n \"vivid tangelo\": \"#e75700\",\n \"moderate tangelo\": \"#a86d4a\",\n \"strong tangelo\": \"#a83f00\",\n \"dark tangelo\": \"#593a27\",\n \"deep tangelo\": \"#592100\",\n \"very pale orange\": \"#fff0e2\",\n \"pale orange\": \"#ffe0c2\",\n \"very light orange\": \"#ffcf9e\",\n \"light brilliant orange\": \"#ffb265\",\n \"luminous vivid orange\": \"#ff8000\",\n \"pale, light grayish brown\": \"#e7d0b8\",\n \"light orange\": \"#e7b98b\",\n \"brilliant orange\": \"#e79c51\",\n \"vivid orange\": \"#e77400\",\n \"grayish brown\": \"#a8937d\",\n \"moderate orange\": \"#a8794a\",\n \"strong orange\": \"#a85400\",\n \"dark grayish brown\": \"#594e42\",\n brown: \"#594027\",\n \"deep brown\": \"#592d00\",\n \"very brown\": \"#1d1711\",\n \"very deep brown\": \"#1d0e00\",\n \"pale gamboge\": \"#ffe8c2\",\n \"very light gamboge\": \"#ffdb9e\",\n \"light brilliant gamboge\": \"#ffc565\",\n \"luminous vivid gamboge\": \"#ff9f00\",\n \"light gamboge\": \"#e7c58b\",\n \"brilliant gamboge\": \"#e7af51\",\n \"vivid gamboge\": \"#e79100\",\n \"moderate gamboge\": \"#a8854a\",\n \"strong gamboge\": \"#a86900\",\n \"dark gamboge\": \"#594627\",\n \"deep gamboge\": \"#593800\",\n \"very pale amber\": \"#fff8e2\",\n \"pale amber\": \"#fff0c2\",\n \"very light amber\": \"#ffe79e\",\n \"light brilliant amber\": \"#ffd865\",\n \"luminous vivid amber\": \"#ffbf00\",\n \"pale, light grayish amber\": \"#e7dcb8\",\n \"light amber\": \"#e7d08b\",\n \"brilliant amber\": \"#e7c251\",\n \"vivid amber\": \"#e7ae00\",\n \"grayish amber\": \"#a89e7d\",\n \"moderate amber\": \"#a8914a\",\n \"strong amber\": \"#a87e00\",\n \"dark grayish amber\": \"#595442\",\n \"dark amber\": \"#594d27\",\n \"deep amber\": \"#594300\",\n \"pale gold\": \"#fff7c2\",\n \"very light gold\": \"#fff39e\",\n \"light brilliant gold\": \"#ffec65\",\n \"luminous vivid gold\": \"#ffdf00\",\n \"light gold\": \"#e7dc8b\",\n \"brilliant gold\": \"#e7d551\",\n \"vivid gold\": \"#e7ca00\",\n \"moderate gold\": \"#a89c4a\",\n \"strong gold\": \"#a89300\",\n \"dark gold\": \"#595327\",\n \"deep gold\": \"#594e00\",\n \"yellowish white\": \"#fffff6\",\n \"very pale yellow\": \"#ffffe2\",\n \"pale yellow\": \"#ffffc2\",\n \"very light yellow\": \"#ffff9e\",\n \"light brilliant yellow\": \"#ffff65\",\n \"luminous vivid yellow\": \"#ffff00\",\n \"light yellowish gray\": \"#e7e7da\",\n \"pale, light grayish olive\": \"#e7e7b8\",\n \"light yellow\": \"#e7e78b\",\n \"brilliant yellow\": \"#e7e751\",\n \"vivid yellow\": \"#e7e700\",\n \"yellowish gray\": \"#a8a89c\",\n \"grayish olive\": \"#a8a87d\",\n \"moderate olive\": \"#a8a84a\",\n \"strong olive\": \"#a8a800\",\n \"dark olivish gray\": \"#595953\",\n \"dark grayish olive\": \"#595942\",\n \"dark olive\": \"#595927\",\n \"deep olive\": \"#595900\",\n \"yellowish black\": \"#1d1d1a\",\n \"very dark olive\": \"#1d1d11\",\n \"very deep olive\": \"#1d1d00\",\n \"pale apple green\": \"#f7ffc2\",\n \"very light apple green\": \"#f3ff9e\",\n \"light brilliant apple green\": \"#ecff65\",\n \"luminous vivid apple green\": \"#dfff00\",\n \"light apple green\": \"#dce78b\",\n \"brilliant apple green\": \"#d5e751\",\n \"vivid apple green\": \"#cae700\",\n \"moderate apple green\": \"#9ca84a\",\n \"strong apple green\": \"#93a800\",\n \"dark apple green\": \"#535927\",\n \"deep apple green\": \"#4e5900\",\n \"very pale lime green\": \"#f8ffe2\",\n \"pale lime green\": \"#f0ffc2\",\n \"very light lime green\": \"#e7ff9e\",\n \"light brilliant lime green\": \"#d8ff65\",\n \"luminous vivid lime green\": \"#bfff00\",\n \"pale, light grayish lime green\": \"#dce7b8\",\n \"light lime green\": \"#d0e78b\",\n \"brilliant lime green\": \"#c2e751\",\n \"vivid lime green\": \"#aee700\",\n \"grayish lime green\": \"#9ea87d\",\n \"moderate lime green\": \"#91a84a\",\n \"strong lime green\": \"#7ea800\",\n \"dark grayish lime green\": \"#545942\",\n \"dark lime green\": \"#4d5927\",\n \"deep lime green\": \"#435900\",\n \"pale spring bud\": \"#e8ffc2\",\n \"very light spring bud\": \"#dbff9e\",\n \"light brilliant spring bud\": \"#c5ff65\",\n \"luminous vivid spring bud\": \"#9fff00\",\n \"light spring bud\": \"#c5e78b\",\n \"brilliant spring bud\": \"#afe751\",\n \"vivid spring bud\": \"#91e700\",\n \"moderate spring bud\": \"#85a84a\",\n \"strong spring bud\": \"#69a800\",\n \"dark spring bud\": \"#465927\",\n \"deep spring bud\": \"#385900\",\n \"very pale chartreuse green\": \"#f0ffe2\",\n \"pale chartreuse green\": \"#e0ffc2\",\n \"very light chartreuse green\": \"#cfff9e\",\n \"light brilliant chartreuse green\": \"#b2ff65\",\n \"luminous vivid chartreuse green\": \"#80ff00\",\n \"pale, light grayish chartreuse green\": \"#d0e7b8\",\n \"light chartreuse green\": \"#b9e78b\",\n \"brilliant chartreuse green\": \"#9ce751\",\n \"vivid chartreuse green\": \"#74e700\",\n \"grayish chartreuse green\": \"#93a87d\",\n \"moderate chartreuse green\": \"#79a84a\",\n \"strong chartreuse green\": \"#54a800\",\n \"dark grayish chartreuse green\": \"#4e5942\",\n \"dark chartreuse green\": \"#405927\",\n \"deep chartreuse green\": \"#2d5900\",\n \"very dark chartreuse green\": \"#171d11\",\n \"very deep chartreuse green\": \"#0e1d00\",\n \"pale pistachio\": \"#d9ffc2\",\n \"very light pistachio\": \"#c2ff9e\",\n \"light brilliant pistachio\": \"#9fff65\",\n \"luminous vivid pistachio\": \"#60ff00\",\n \"light pistachio\": \"#aee78b\",\n \"brilliant pistachio\": \"#89e751\",\n \"vivid pistachio\": \"#57e700\",\n \"moderate pistachio\": \"#6da84a\",\n \"strong pistachio\": \"#3fa800\",\n \"dark pistachio\": \"#3a5927\",\n \"deep pistachio\": \"#215900\",\n \"very pale harlequin\": \"#e9ffe2\",\n \"pale harlequin\": \"#d1ffc2\",\n \"very light harlequin\": \"#b6ff9e\",\n \"light brilliant harlequin\": \"#8bff65\",\n \"luminous vivid harlequin\": \"#40ff00\",\n \"pale, light grayish harlequin\": \"#c4e7b8\",\n \"light harlequin\": \"#a2e78b\",\n \"brilliant harlequin\": \"#77e751\",\n \"vivid harlequin\": \"#3ae700\",\n \"grayish harlequin\": \"#88a87d\",\n \"moderate harlequin\": \"#61a84a\",\n \"strong harlequin\": \"#2aa800\",\n \"dark grayish harlequin\": \"#485942\",\n \"dark harlequin\": \"#345927\",\n \"deep harlequin\": \"#165900\",\n \"pale sap green\": \"#c9ffc2\",\n \"very light sap green\": \"#aaff9e\",\n \"light brilliant sap green\": \"#78ff65\",\n \"luminous vivid sap green\": \"#20ff00\",\n \"light sap green\": \"#96e78b\",\n \"brilliant sap green\": \"#64e751\",\n \"vivid sap green\": \"#1de700\",\n \"moderate sap green\": \"#55a84a\",\n \"strong sap green\": \"#15a800\",\n \"dark sap green\": \"#2d5927\",\n \"deep sap green\": \"#0b5900\",\n \"greenish white\": \"#f6fff6\",\n \"very pale green\": \"#e2ffe2\",\n \"pale green\": \"#c2ffc2\",\n \"very light green\": \"#9eff9e\",\n \"light brilliant green\": \"#65ff65\",\n \"luminous vivid green\": \"#00ff00\",\n \"light greenish gray\": \"#dae7da\",\n \"pale, light grayish green\": \"#b8e7b8\",\n \"light green\": \"#8be78b\",\n \"brilliant green\": \"#51e751\",\n \"vivid green\": \"#00e700\",\n \"greenish gray\": \"#9ca89c\",\n \"grayish green\": \"#7da87d\",\n \"moderate green\": \"#4aa84a\",\n \"strong green\": \"#00a800\",\n \"dark greenish gray\": \"#535953\",\n \"dark grayish green\": \"#425942\",\n \"dark green\": \"#275927\",\n \"deep green\": \"#005900\",\n \"greenish black\": \"#1a1d1a\",\n \"very dark green\": \"#111d11\",\n \"very deep green\": \"#001d00\",\n \"pale emerald green\": \"#c2ffc9\",\n \"very light emerald green\": \"#9effaa\",\n \"light brilliant emerald green\": \"#65ff78\",\n \"luminous vivid emerald green\": \"#00ff20\",\n \"light emerald green\": \"#8be796\",\n \"brilliant emerald green\": \"#51e764\",\n \"vivid emerald green\": \"#00e71d\",\n \"moderate emerald green\": \"#4aa855\",\n \"strong emerald green\": \"#00a815\",\n \"dark emerald green\": \"#27592d\",\n \"deep emerald green\": \"#00590b\",\n \"very pale malachite green\": \"#e2ffe9\",\n \"pale malachite green\": \"#c2ffd1\",\n \"very light malachite green\": \"#9effb6\",\n \"light brilliant malachite green\": \"#65ff8b\",\n \"luminous vivid malachite green\": \"#00ff40\",\n \"pale, light grayish malachite green\": \"#b8e7c4\",\n \"light malachite green\": \"#8be7a2\",\n \"brilliant malachite green\": \"#51e777\",\n \"vivid malachite green\": \"#00e73a\",\n \"grayish malachite green\": \"#7da888\",\n \"moderate malachite green\": \"#4aa861\",\n \"strong malachite green\": \"#00a82a\",\n \"dark grayish malachite green\": \"#425948\",\n \"dark malachite green\": \"#275934\",\n \"deep malachite green\": \"#005916\",\n \"pale sea green\": \"#c2ffd9\",\n \"very light sea green\": \"#9effc2\",\n \"light brilliant sea green\": \"#65ff9f\",\n \"luminous vivid sea green\": \"#00ff60\",\n \"light sea green\": \"#8be7ae\",\n \"brilliant sea green\": \"#51e789\",\n \"vivid sea green\": \"#00e757\",\n \"moderate sea green\": \"#4aa86d\",\n \"strong sea green\": \"#00a83f\",\n \"dark sea green\": \"#27593a\",\n \"deep sea green\": \"#005921\",\n \"very pale spring green\": \"#e2fff0\",\n \"pale spring green\": \"#c2ffe0\",\n \"very light spring green\": \"#9effcf\",\n \"light brilliant spring green\": \"#65ffb2\",\n \"luminous vivid spring green\": \"#00ff80\",\n \"pale, light grayish spring green\": \"#b8e7d0\",\n \"light spring green\": \"#8be7b9\",\n \"brilliant spring green\": \"#51e79c\",\n \"vivid spring green\": \"#00e774\",\n \"grayish spring green\": \"#7da893\",\n \"moderate spring green\": \"#4aa879\",\n \"strong spring green\": \"#00a854\",\n \"dark grayish spring green\": \"#42594e\",\n \"dark spring green\": \"#275940\",\n \"deep spring green\": \"#00592d\",\n \"very dark spring green\": \"#111d17\",\n \"very deep spring green\": \"#001d0e\",\n \"pale aquamarine\": \"#c2ffe8\",\n \"very light aquamarine\": \"#9effdb\",\n \"light brilliant aquamarine\": \"#65ffc5\",\n \"luminous vivid aquamarine\": \"#00ff9f\",\n \"light aquamarine\": \"#8be7c5\",\n \"brilliant aquamarine\": \"#51e7af\",\n \"vivid aquamarine\": \"#00e791\",\n \"moderate aquamarine\": \"#4aa885\",\n \"strong aquamarine\": \"#00a869\",\n \"dark aquamarine\": \"#275946\",\n \"deep aquamarine\": \"#005938\",\n \"very pale turquoise\": \"#e2fff8\",\n \"pale turquoise\": \"#c2fff0\",\n \"very light turquoise\": \"#9effe7\",\n \"light brilliant turquoise\": \"#65ffd8\",\n \"luminous vivid turquoise\": \"#00ffbf\",\n \"pale, light grayish turquoise\": \"#b8e7dc\",\n \"light turquoise\": \"#8be7d0\",\n \"brilliant turquoise\": \"#51e7c2\",\n \"vivid turquoise\": \"#00e7ae\",\n \"grayish turquoise\": \"#7da89e\",\n \"moderate turquoise\": \"#4aa891\",\n \"strong turquoise\": \"#00a87e\",\n \"dark grayish turquoise\": \"#425954\",\n \"dark turquoise\": \"#27594d\",\n \"deep turquoise\": \"#005943\",\n \"pale opal\": \"#c2fff7\",\n \"very light opal\": \"#9efff3\",\n \"light brilliant opal\": \"#65ffec\",\n \"luminous vivid opal\": \"#00ffdf\",\n \"light opal\": \"#8be7dc\",\n \"brilliant opal\": \"#51e7d5\",\n \"vivid opal\": \"#00e7ca\",\n \"moderate opal\": \"#4aa89c\",\n \"strong opal\": \"#00a893\",\n \"dark opal\": \"#275953\",\n \"deep opal\": \"#00594e\",\n \"cyanish white\": \"#f6ffff\",\n \"very pale cyan\": \"#e2ffff\",\n \"pale cyan\": \"#c2ffff\",\n \"very light cyan\": \"#9effff\",\n \"light brilliant cyan\": \"#65ffff\",\n \"luminous vivid cyan\": \"#00ffff\",\n \"light cyanish gray\": \"#dae7e7\",\n \"pale, light grayish cyan\": \"#b8e7e7\",\n \"light cyan\": \"#8be7e7\",\n \"brilliant cyan\": \"#51e7e7\",\n \"vivid cyan\": \"#00e7e7\",\n \"cyanish gray\": \"#9ca8a8\",\n \"grayish cyan\": \"#7da8a8\",\n \"moderate cyan\": \"#4aa8a8\",\n \"strong cyan\": \"#00a8a8\",\n \"dark cyanish gray\": \"#535959\",\n \"dark grayish cyan\": \"#425959\",\n \"dark cyan\": \"#275959\",\n \"deep cyan\": \"#005959\",\n \"cyanish black\": \"#1a1d1d\",\n \"very dark cyan\": \"#111d1d\",\n \"very deep cyan\": \"#001d1d\",\n \"pale arctic blue\": \"#c2f7ff\",\n \"very light arctic blue\": \"#9ef3ff\",\n \"light brilliant arctic blue\": \"#65ecff\",\n \"luminous vivid arctic blue\": \"#00dfff\",\n \"light arctic blue\": \"#8bdce7\",\n \"brilliant arctic blue\": \"#51d5e7\",\n \"vivid arctic blue\": \"#00cae7\",\n \"moderate arctic blue\": \"#4a9ca8\",\n \"strong arctic blue\": \"#0093a8\",\n \"dark arctic blue\": \"#275359\",\n \"deep arctic blue\": \"#004e59\",\n \"very pale cerulean\": \"#e2f8ff\",\n \"pale cerulean\": \"#c2f0ff\",\n \"very light cerulean\": \"#9ee7ff\",\n \"light brilliant cerulean\": \"#65d8ff\",\n \"luminous vivid cerulean\": \"#00bfff\",\n \"pale, light grayish cerulean\": \"#b8dce7\",\n \"light cerulean\": \"#8bd0e7\",\n \"brilliant cerulean\": \"#51c2e7\",\n \"vivid cerulean\": \"#00aee7\",\n \"grayish cerulean\": \"#7d9ea8\",\n \"moderate cerulean\": \"#4a91a8\",\n \"strong cerulean\": \"#007ea8\",\n \"dark grayish cerulean\": \"#425459\",\n \"dark cerulean\": \"#274d59\",\n \"deep cerulean\": \"#004359\",\n \"pale cornflower blue\": \"#c2e8ff\",\n \"very light cornflower blue\": \"#9edbff\",\n \"light brilliant cornflower blue\": \"#65c5ff\",\n \"luminous vivid cornflower blue\": \"#009fff\",\n \"light cornflower blue\": \"#8bc5e7\",\n \"brilliant cornflower blue\": \"#51afe7\",\n \"vivid cornflower blue\": \"#0091e7\",\n \"moderate cornflower blue\": \"#4a85a8\",\n \"strong cornflower blue\": \"#0069a8\",\n \"dark cornflower blue\": \"#274659\",\n \"deep cornflower blue\": \"#003859\",\n \"very pale azure\": \"#e2f0ff\",\n \"pale azure\": \"#c2e0ff\",\n \"very light azure\": \"#9ecfff\",\n \"light brilliant azure\": \"#65b2ff\",\n \"luminous vivid azure\": \"#0080ff\",\n \"pale, light grayish azure\": \"#b8d0e7\",\n \"light azure\": \"#8bb9e7\",\n \"brilliant azure\": \"#519ce7\",\n \"vivid azure\": \"#0074e7\",\n \"grayish azure\": \"#7d93a8\",\n \"moderate azure\": \"#4a79a8\",\n \"strong azure\": \"#0054a8\",\n \"dark grayish azure\": \"#424e59\",\n \"dark azure\": \"#274059\",\n \"deep azure\": \"#002d59\",\n \"very dark azure\": \"#11171d\",\n \"very deep azure\": \"#000e1d\",\n \"pale cobalt blue\": \"#c2d9ff\",\n \"very light cobalt blue\": \"#9ec2ff\",\n \"light brilliant cobalt blue\": \"#659fff\",\n \"luminous vivid cobalt blue\": \"#0060ff\",\n \"light cobalt blue\": \"#8baee7\",\n \"brilliant cobalt blue\": \"#5189e7\",\n \"vivid cobalt blue\": \"#0057e7\",\n \"moderate cobalt blue\": \"#4a6da8\",\n \"strong cobalt blue\": \"#003fa8\",\n \"dark cobalt blue\": \"#273a59\",\n \"deep cobalt blue\": \"#002159\",\n \"very pale sapphire blue\": \"#e2e9ff\",\n \"pale sapphire blue\": \"#c2d1ff\",\n \"very light sapphire blue\": \"#9eb6ff\",\n \"light brilliant sapphire blue\": \"#658bff\",\n \"luminous vivid sapphire blue\": \"#0040ff\",\n \"pale, light grayish sapphire blue\": \"#b8c4e7\",\n \"light sapphire blue\": \"#8ba2e7\",\n \"brilliant sapphire blue\": \"#5177e7\",\n \"vivid sapphire blue\": \"#003ae7\",\n \"grayish sapphire blue\": \"#7d88a8\",\n \"moderate sapphire blue\": \"#4a61a8\",\n \"strong sapphire blue\": \"#002aa8\",\n \"dark grayish sapphire blue\": \"#424859\",\n \"dark sapphire blue\": \"#273459\",\n \"deep sapphire blue\": \"#001659\",\n \"pale phthalo blue\": \"#c2c9ff\",\n \"very light phthalo blue\": \"#9eaaff\",\n \"light brilliant phthalo blue\": \"#6578ff\",\n \"luminous vivid phthalo blue\": \"#0020ff\",\n \"light phthalo blue\": \"#8b96e7\",\n \"brilliant phthalo blue\": \"#5164e7\",\n \"vivid phthalo blue\": \"#001de7\",\n \"moderate phthalo blue\": \"#4a55a8\",\n \"strong phthalo blue\": \"#0015a8\",\n \"dark phthalo blue\": \"#272d59\",\n \"deep phthalo blue\": \"#000b59\",\n \"bluish white\": \"#f6f6ff\",\n \"very pale blue\": \"#e2e2ff\",\n \"pale blue\": \"#c2c2ff\",\n \"very light blue\": \"#9e9eff\",\n \"light brilliant blue\": \"#6565ff\",\n \"luminous vivid blue\": \"#0000ff\",\n \"light bluish gray\": \"#dadae7\",\n \"pale, light grayish blue\": \"#b8b8e7\",\n \"light blue\": \"#8b8be7\",\n \"brilliant blue\": \"#5151e7\",\n \"vivid blue\": \"#0000e7\",\n \"bluish gray\": \"#9c9ca8\",\n \"grayish blue\": \"#7d7da8\",\n \"moderate blue\": \"#4a4aa8\",\n \"strong blue\": \"#0000a8\",\n \"dark bluish gray\": \"#535359\",\n \"dark grayish blue\": \"#424259\",\n \"dark blue\": \"#272759\",\n \"deep blue\": \"#000059\",\n \"bluish black\": \"#1a1a1d\",\n \"very dark blue\": \"#11111d\",\n \"very deep blue\": \"#00001d\",\n \"pale persian blue\": \"#c9c2ff\",\n \"very light persian blue\": \"#aa9eff\",\n \"light brilliant persian blue\": \"#7865ff\",\n \"luminous vivid persian blue\": \"#2000ff\",\n \"light persian blue\": \"#968be7\",\n \"brilliant persian blue\": \"#6451e7\",\n \"vivid persian blue\": \"#1d00e7\",\n \"moderate persian blue\": \"#554aa8\",\n \"strong persian blue\": \"#1500a8\",\n \"dark persian blue\": \"#2d2759\",\n \"deep persian blue\": \"#0b0059\",\n \"very pale indigo\": \"#e9e2ff\",\n \"pale indigo\": \"#d1c2ff\",\n \"very light indigo\": \"#b69eff\",\n \"light brilliant indigo\": \"#8b65ff\",\n \"luminous vivid indigo\": \"#4000ff\",\n \"pale, light grayish indigo\": \"#c4b8e7\",\n \"light indigo\": \"#a28be7\",\n \"brilliant indigo\": \"#7751e7\",\n \"vivid indigo\": \"#3a00e7\",\n \"grayish indigo\": \"#887da8\",\n \"moderate indigo\": \"#614aa8\",\n \"strong indigo\": \"#2a00a8\",\n \"dark grayish indigo\": \"#484259\",\n \"dark indigo\": \"#342759\",\n \"deep indigo\": \"#160059\",\n \"pale blue violet\": \"#d9c2ff\",\n \"very light blue violet\": \"#c29eff\",\n \"light brilliant blue violet\": \"#9f65ff\",\n \"luminous vivid blue violet\": \"#6000ff\",\n \"light blue violet\": \"#ae8be7\",\n \"brilliant blue violet\": \"#8951e7\",\n \"vivid blue violet\": \"#5700e7\",\n \"moderate blue violet\": \"#6d4aa8\",\n \"strong blue violet\": \"#3f00a8\",\n \"dark blue violet\": \"#3a2759\",\n \"deep blue violet\": \"#210059\",\n \"very pale violet\": \"#f0e2ff\",\n \"pale violet\": \"#e0c2ff\",\n \"very light violet\": \"#cf9eff\",\n \"light brilliant violet\": \"#b265ff\",\n \"luminous vivid violet\": \"#8000ff\",\n \"pale, light grayish violet\": \"#d0b8e7\",\n \"light violet\": \"#b98be7\",\n \"brilliant violet\": \"#9c51e7\",\n \"vivid violet\": \"#7400e7\",\n \"grayish violet\": \"#937da8\",\n \"moderate violet\": \"#794aa8\",\n \"strong violet\": \"#5400a8\",\n \"dark grayish violet\": \"#4e4259\",\n \"dark violet\": \"#402759\",\n \"deep violet\": \"#2d0059\",\n \"very dark violet\": \"#17111d\",\n \"very deep violet\": \"#0e001d\",\n \"pale purple\": \"#e8c2ff\",\n \"very light purple\": \"#db9eff\",\n \"light brilliant purple\": \"#c565ff\",\n \"luminous vivid purple\": \"#9f00ff\",\n \"light purple\": \"#c58be7\",\n \"brilliant purple\": \"#af51e7\",\n \"vivid purple\": \"#9100e7\",\n \"moderate purple\": \"#854aa8\",\n \"strong purple\": \"#6900a8\",\n \"dark purple\": \"#462759\",\n \"deep purple\": \"#380059\",\n \"very pale mulberry\": \"#f8e2ff\",\n \"pale mulberry\": \"#f0c2ff\",\n \"very light mulberry\": \"#e79eff\",\n \"light brilliant mulberry\": \"#d865ff\",\n \"luminous vivid mulberry\": \"#bf00ff\",\n \"pale, light grayish mulberry\": \"#dcb8e7\",\n \"light mulberry\": \"#d08be7\",\n \"brilliant mulberry\": \"#c251e7\",\n \"vivid mulberry\": \"#ae00e7\",\n \"grayish mulberry\": \"#9e7da8\",\n \"moderate mulberry\": \"#914aa8\",\n \"strong mulberry\": \"#7e00a8\",\n \"dark grayish mulberry\": \"#544259\",\n \"dark mulberry\": \"#4d2759\",\n \"deep mulberry\": \"#430059\",\n \"pale heliotrope\": \"#f7c2ff\",\n \"very light heliotrope\": \"#f39eff\",\n \"light brilliant heliotrope\": \"#ec65ff\",\n \"luminous vivid heliotrope\": \"#df00ff\",\n \"light heliotrope\": \"#dc8be7\",\n \"brilliant heliotrope\": \"#d551e7\",\n \"vivid heliotrope\": \"#ca00e7\",\n \"moderate heliotrope\": \"#9c4aa8\",\n \"strong heliotrope\": \"#9300a8\",\n \"dark heliotrope\": \"#532759\",\n \"deep heliotrope\": \"#4e0059\",\n \"magentaish white\": \"#fff6ff\",\n \"very pale magenta\": \"#ffe2ff\",\n \"pale magenta\": \"#ffc2ff\",\n \"very light magenta\": \"#ff9eff\",\n \"light brilliant magenta\": \"#ff65ff\",\n \"luminous vivid magenta\": \"#ff00ff\",\n \"light magentaish gray\": \"#e7dae7\",\n \"pale, light grayish magenta\": \"#e7b8e7\",\n \"light magenta\": \"#e78be7\",\n \"brilliant magenta\": \"#e751e7\",\n \"vivid magenta\": \"#e700e7\",\n \"magentaish gray\": \"#a89ca8\",\n \"grayish magenta\": \"#a87da8\",\n \"moderate magenta\": \"#a84aa8\",\n \"strong magenta\": \"#a800a8\",\n \"dark magentaish gray\": \"#595359\",\n \"dark grayish magenta\": \"#594259\",\n \"dark magenta\": \"#592759\",\n \"deep magenta\": \"#590059\",\n \"magentaish black\": \"#1d1a1d\",\n \"very dark magenta\": \"#1d111d\",\n \"very deep magenta\": \"#1d001d\",\n \"pale orchid\": \"#ffc2f7\",\n \"very light orchid\": \"#ff9ef3\",\n \"light brilliant orchid\": \"#ff65ec\",\n \"luminous vivid orchid\": \"#ff00df\",\n \"light orchid\": \"#e78bdc\",\n \"brilliant orchid\": \"#e751d5\",\n \"vivid orchid\": \"#e700ca\",\n \"moderate orchid\": \"#a84a9c\",\n \"strong orchid\": \"#a80093\",\n \"dark orchid\": \"#592753\",\n \"deep orchid\": \"#59004e\",\n \"very pale fuchsia\": \"#ffe2f8\",\n \"pale fuchsia\": \"#ffc2f0\",\n \"very light fuchsia\": \"#ff9ee7\",\n \"light brilliant fuchsia\": \"#ff65d8\",\n \"luminous vivid fuchsia\": \"#ff00bf\",\n \"pale, light grayish fuchsia\": \"#e7b8dc\",\n \"light fuchsia\": \"#e78bd0\",\n \"brilliant fuchsia\": \"#e751c2\",\n \"vivid fuchsia\": \"#e700ae\",\n \"grayish fuchsia\": \"#a87d9e\",\n \"moderate fuchsia\": \"#a84a91\",\n \"strong fuchsia\": \"#a8007e\",\n \"dark grayish fuchsia\": \"#594254\",\n \"dark fuchsia\": \"#59274d\",\n \"deep fuchsia\": \"#590043\",\n \"pale cerise\": \"#ffc2e8\",\n \"very light cerise\": \"#ff9edb\",\n \"light brilliant cerise\": \"#ff65c5\",\n \"luminous vivid cerise\": \"#ff009f\",\n \"light cerise\": \"#e78bc5\",\n \"brilliant cerise\": \"#e751af\",\n \"vivid cerise\": \"#e70091\",\n \"moderate cerise\": \"#a84a85\",\n \"strong cerise\": \"#a80069\",\n \"dark cerise\": \"#592746\",\n \"deep cerise\": \"#590038\",\n \"very pale rose\": \"#ffe2f0\",\n \"pale rose\": \"#ffc2e0\",\n \"very light rose\": \"#ff9ecf\",\n \"light brilliant rose\": \"#ff65b2\",\n \"luminous vivid rose\": \"#ff0080\",\n \"pale, light grayish rose\": \"#e7b8d0\",\n \"light rose\": \"#e78bb9\",\n \"brilliant rose\": \"#e7519c\",\n \"vivid rose\": \"#e70074\",\n \"grayish rose\": \"#a87d93\",\n \"moderate rose\": \"#a84a79\",\n \"strong rose\": \"#a80054\",\n \"dark grayish rose\": \"#59424e\",\n \"dark rose\": \"#592740\",\n \"deep rose\": \"#59002d\",\n \"very dark rose\": \"#1d1117\",\n \"very deep rose\": \"#1d000e\",\n \"pale raspberry\": \"#ffc2d9\",\n \"very light raspberry\": \"#ff9ec2\",\n \"light brilliant raspberry\": \"#ff659f\",\n \"luminous vivid raspberry\": \"#ff0060\",\n \"light raspberry\": \"#e78bae\",\n \"brilliant raspberry\": \"#e75189\",\n \"vivid raspberry\": \"#e70057\",\n \"moderate raspberry\": \"#a84a6d\",\n \"strong raspberry\": \"#a8003f\",\n \"dark raspberry\": \"#59273a\",\n \"deep raspberry\": \"#590021\",\n \"very pale crimson\": \"#ffe2e9\",\n \"pale crimson\": \"#ffc2d1\",\n \"very light crimson\": \"#ff9eb6\",\n \"light brilliant crimson\": \"#ff658b\",\n \"luminous vivid crimson\": \"#ff0040\",\n \"pale, light grayish crimson\": \"#e7b8c4\",\n \"light crimson\": \"#e78ba2\",\n \"brilliant crimson\": \"#e75177\",\n \"vivid crimson\": \"#e7003a\",\n \"grayish crimson\": \"#a87d88\",\n \"moderate crimson\": \"#a84a61\",\n \"strong crimson\": \"#a8002a\",\n \"dark grayish crimson\": \"#594248\",\n \"dark crimson\": \"#592734\",\n \"deep crimson\": \"#590016\",\n \"pale amaranth\": \"#ffc2c9\",\n \"very light amaranth\": \"#ff9eaa\",\n \"light brilliant amaranth\": \"#ff6578\",\n \"luminous vivid amaranth\": \"#ff0020\",\n \"light amaranth\": \"#e78b96\",\n \"brilliant amaranth\": \"#e75164\",\n \"vivid amaranth\": \"#e7001d\",\n \"moderate amaranth\": \"#a84a55\",\n \"strong amaranth\": \"#a80015\",\n \"dark amaranth\": \"#59272d\",\n \"deep amaranth\": \"#59000b\",\n};\n","import { html, render } from \"uhtml\";\nimport \"css/style.css\";\nimport { ColorNames } from \"./color-names\";\n\n/** @param {Event & { target: HTMLInputElement }} event\n */\nexport function validateColor(event) {\n const input = event.target;\n if (!isValidColor(input.value)) {\n input.setCustomValidity(\"invalid color\");\n input.reportValidity();\n return false;\n } else {\n input.setCustomValidity(\"\");\n const div = /** @type {HTMLElement} */ (input.nextElementSibling);\n div.style.background = getColor(input.value);\n return true;\n }\n}\n\n/** @param {string} strColor */\nexport function isValidColor(strColor) {\n if (strColor.length == 0 || strColor in ColorNames) {\n return true;\n }\n var s = new Option().style;\n s.color = strColor;\n\n // return 'false' if color wasn't assigned\n return s.color !== \"\";\n}\n\n/** @param {string} name */\nexport function getColor(name) {\n return ColorNames[name] || name;\n}\n\n/** @param {Partial} style */\nfunction normalizeStyle(style) {\n return Object.fromEntries(\n Object.entries(style)\n .filter(([_, value]) => value && value.toString().length)\n .map(([key, value]) =>\n key.toLowerCase().indexOf(\"color\") >= 0\n ? [key, getColor(/** @type {string} */ (value))]\n : [key, value && value.toString()],\n ),\n );\n}\n\n/** @param {HTMLElement} element\n * @param {Partial} styles */\nexport function setStyle(element, styles) {\n Object.assign(element.style, normalizeStyle(styles));\n}\n\n/** @param {Partial} styles */\nexport function styleString(styles) {\n return Object.entries(normalizeStyle(styles)).reduce(\n (acc, [key, value]) =>\n acc +\n key\n .split(/(?=[A-Z])/)\n .join(\"-\")\n .toLowerCase() +\n \":\" +\n value +\n \";\",\n \"\",\n );\n}\n\nexport function colorNamesDataList() {\n return html`\n ${Object.keys(ColorNames).map((name) => html``;\n}\n\nclass ColorInput extends HTMLElement {\n value = \"\";\n name = \"\";\n tabindex = \"0\";\n\n /**\n * Called when the element is added to a page. The first time this is called\n * I will copy the props and call the init method\n */\n connectedCallback() {\n if (!Object.hasOwn(this, \"initialized\")) {\n this.initialized = true;\n this.init();\n }\n this.render();\n }\n\n static get observedAttributes() {\n return [\"name\", \"value\", \"tabindex\"];\n }\n\n /**\n * watch for changing attributes\n * @param {string} name\n * @param {string} _\n * @param {string} newValue\n */\n attributeChangedCallback(name, _, newValue) {\n this[name] = newValue;\n this.render();\n }\n\n init() {\n if (!document.querySelector(\"datalist#ColorNames\")) {\n const list = html.node`\n ${Object.keys(ColorNames).map((name) => html``;\n document.body.appendChild(list);\n }\n }\n validate() {\n const input = this.querySelector(\"input\");\n if (!input) return \"not found\";\n if (!isValidColor(input.value)) {\n input.setCustomValidity(\"invalid color\");\n input.reportValidity();\n } else {\n input.setCustomValidity(\"\");\n const div = this.querySelector(\"div\");\n if (div) div.style.background = getColor(input.value);\n }\n }\n render() {\n render(\n this,\n html` this.validate()}\n tabindex=${this.tabindex}\n />\n
    `,\n );\n }\n}\n\ncustomElements.define(\"color-input\", ColorInput);\n","/**\n * Create an object that is persisted to sessionStorage\n *\n * @template {Object} T\n * @param {string} key\n * @param {T} initial\n * @returns {T} - same type as the initial value\n */\nexport function session(key, initial) {\n // import values from storage if present\n const json = window.sessionStorage.getItem(key);\n if (json) {\n const values = JSON.parse(json);\n if (!(values instanceof Object)) throw TypeError();\n // validate the value from storage\n if (sameObjectShape(initial, values)) initial = values;\n }\n if (!(initial instanceof Object)) throw TypeError();\n return new Proxy(initial, {\n set(obj, prop, value) {\n const r = Reflect.set(obj, prop, value);\n const json = JSON.stringify(obj);\n window.sessionStorage.setItem(key, json);\n return r;\n },\n });\n}\n\n/**\n * Compare objects to see if they have the same keys and types\n * @param {Object} a\n * @param {Object} b\n * @returns {boolean}\n */\nfunction sameObjectShape(a, b) {\n for (const key of Object.keys(a)) {\n if (typeof a[key] !== typeof b[key]) return false;\n }\n return true;\n}\n","/**\n * Provide user friendly names for the components\n */\n\n/**\n * Map the classname into the Menu name and the Help Wiki page name\n */\nconst namesMap = {\n Action: [\"Action\", \"Actions\"],\n ActionCondition: [\"Condition\", \"Actions#Condition\"],\n Actions: [\"Actions\", \"Actions\"],\n ActionUpdate: [\"Update\", \"Actions#Update\"],\n Audio: [\"Audio\", \"Audio\"],\n Button: [\"Button\", \"Button\"],\n Content: [\"Content\", \"Content\"],\n CueCircle: [\"Circle\", \"Cues\"],\n CueCss: [\"CSS\", \"Cues#CSS\"],\n CueFill: [\"Fill\", \"Cues#Fill\"],\n CueList: [\"Cues\", \"Cues\"],\n CueOverlay: [\"Overlay\", \"Cues#Overlay\"],\n Customize: [\"Customize\", \"Customize\"],\n Designer: [\"Designer\", \"Designer\"],\n Display: [\"Display\", \"Display\"],\n Filter: [\"Filter\", \"Patterns#Filter\"],\n Gap: [\"Gap\", \"Gap\"],\n Grid: [\"Grid\", \"Grid\"],\n GridFilter: [\"Filter\", \"Grid#Filter\"],\n GroupBy: [\"Group By\", \"Patterns#Group By\"],\n HandlerCondition: [\"Condition\", \"Methods#Condition\"],\n HandlerKeyCondition: [\"Key Condition\", \"Methods#Key Condition\"],\n HandlerResponse: [\"Response\", \"Methods#Response\"],\n HeadMouse: [\"Head Mouse\", \"Head Mouse\"],\n KeyHandler: [\"Key Handler\", \"Methods#Key Handler\"],\n Layout: [\"Layout\", \"Layout\"],\n Logger: [\"Logger\", \"Logger\"],\n Method: [\"Method\", \"Methods\"],\n MethodChooser: [\"Methods\", \"Methods\"],\n ModalDialog: [\"Modal Dialog\", \"Modal Dialog\"],\n Option: [\"Option\", \"Radio#Option\"],\n OrderBy: [\"Order By\", \"Patterns#Order By\"],\n Page: [\"Page\", \"Page\"],\n PatternGroup: [\"Group\", \"Patterns\"],\n PatternList: [\"Patterns\", \"Patterns\"],\n PatternManager: [\"Pattern\", \"Patterns\"],\n PatternSelector: [\"Selector\", \"Patterns\"],\n PointerHandler: [\"Pointer Handler\", \"Methods#Pointer Handler\"],\n Radio: [\"Radio\", \"Radio\"],\n ResponderActivate: [\"Activate\", \"Methods#Activate\"],\n ResponderCue: [\"Cue\", \"Methods#Cue\"],\n ResponderClearCue: [\"Clear Cue\", \"Methods#Clear Cue\"],\n ResponderEmit: [\"Emit\", \"Methods#Emit\"],\n ResponderNext: [\"Next\", \"Methods#Next\"],\n ResponderStartTimer: [\"Start Timer\", \"Methods\"],\n SocketHandler: [\"Socket Handler\", \"Methods#Socket Handler\"],\n Speech: [\"Speech\", \"Speech\"],\n Stack: [\"Stack\", \"Stack\"],\n TabControl: [\"Tab Control\", \"Tab Control\"],\n TabPanel: [\"Tab\", \"Tab\"],\n Timer: [\"Timer\", \"Methods#Timer\"],\n TimerHandler: [\"Timer Handler\", \"Methods#Timer Handler\"],\n VSD: [\"VSD\", \"VSD\"],\n};\n\n/**\n * Get the name for a menu item from the class name\n * @param {string} className\n */\nexport function friendlyName(className) {\n return className in namesMap ? namesMap[className][0] : className;\n}\n\n/**\n * Get the Wiki name from the class name\n * @param {string} className\n */\nexport function wikiName(className) {\n return namesMap[className][1].replace(\" \", \"-\");\n}\n","import { html } from \"uhtml\";\nimport * as Props from \"./props\";\nimport \"css/treebase.css\";\nimport WeakValue from \"weak-value\";\nimport { styleString } from \"./style\";\nimport { session } from \"./persist\";\nimport { errorHandler } from \"./errors\";\nimport { friendlyName } from \"./names\";\n\nexport class TreeBase {\n /** @type {TreeBase[]} */\n children = [];\n /** @type {TreeBase | null} */\n parent = null;\n /** @type {string[]} */\n allowedChildren = [];\n allowDelete = true;\n\n // every component has a unique id\n static treeBaseCounter = 0;\n id = `TreeBase-${TreeBase.treeBaseCounter++}`;\n\n // values here are stored in sessionStorage\n persisted = session(this.id, {\n settingsDetailsOpen: false,\n });\n\n // map from id to the component\n static idMap = new WeakValue();\n\n /** @param {string} id\n * @returns {TreeBase | null} */\n static componentFromId(id) {\n // strip off any added bits of the id\n const match = id.match(/TreeBase-\\d+/);\n if (match) {\n return this.idMap.get(match[0]);\n }\n return null;\n }\n\n designer = {};\n\n /** A mapping from the external class name to the class */\n static nameToClass = new Map();\n /** A mapping from the class to the external class name */\n static classToName = new Map();\n\n /** @param {typeof TreeBase} cls\n * @param {string} externalName\n * */\n static register(cls, externalName) {\n this.nameToClass.set(externalName, cls);\n this.classToName.set(cls, externalName);\n }\n\n get className() {\n return TreeBase.classToName.get(this.constructor);\n }\n\n /**\n * Extract the class fields that are Props and return their values as an Object\n * @returns {Object}\n */\n get props() {\n return Object.fromEntries(\n Object.entries(this)\n .filter(([_, prop]) => prop instanceof Props.Prop)\n .map(([name, prop]) => [name, prop.value]),\n );\n }\n\n /**\n * Extract the values of the fields that are Props\n * @returns {Object}\n */\n get propsAsProps() {\n return Object.fromEntries(\n Object.entries(this).filter(([_, prop]) => prop instanceof Props.Prop),\n );\n }\n /**\n * Prepare a TreeBase tree for external storage by converting to simple objects and arrays\n * @param {Object} [options]\n * @param {string[]} options.omittedProps - class names of props to omit\n * @returns {Object}\n * */\n toObject(options = { omittedProps: [] }) {\n const props = Object.fromEntries(\n Object.entries(this)\n .filter(\n ([_, prop]) =>\n prop instanceof Props.Prop &&\n !options.omittedProps.includes(prop.constructor.name),\n )\n .map(([name, prop]) => [name, prop.value]),\n );\n const children = this.children.map((child) => child.toObject(options));\n const result = {\n className: this.className,\n props,\n children,\n };\n return result;\n }\n\n /**\n * An opportunity for the component to initialize itself. This is\n * called in fromObject after the children have been added. If you\n * call create directly you should call init afterward.\n */\n init() {}\n\n /**\n * Create a TreeBase object\n * @template {TreeBase} TB\n * @param {string|(new()=>TB)} constructorOrName\n * @param {TreeBase | null} parent\n * @param {Object} props\n * @returns {TB}\n * */\n static create(constructorOrName, parent = null, props = {}) {\n const constructor =\n typeof constructorOrName == \"string\"\n ? TreeBase.nameToClass.get(constructorOrName)\n : constructorOrName;\n /** @type {TB} */\n const result = new constructor();\n\n // initialize the props\n for (const [name, prop] of Object.entries(result.propsAsProps)) {\n prop.initialize(name, props[name], result);\n }\n\n // link it to its parent\n if (parent) {\n result.parent = parent;\n parent.children.push(result);\n }\n\n // remember the relationship between id and component\n TreeBase.idMap.set(result.id, result);\n\n return result;\n }\n\n /**\n * Instantiate a TreeBase tree from its external representation\n * @param {Object} obj\n * @param {TreeBase | null} parent\n * @returns {TreeBase} - should be {this} but that isn't supported for some reason\n * */\n static fromObject(obj, parent = null) {\n // Get the constructor from the class map\n if (!obj) console.trace(\"fromObject\", obj);\n const className = obj.className;\n const constructor = this.nameToClass.get(className);\n if (!constructor) {\n console.trace(\"className not found\", className, obj);\n throw new Error(\"className not found\");\n }\n\n // Create the object and link it to its parent\n const result = this.create(constructor, parent, obj.props);\n\n // Link in the children\n for (const childObj of obj.children) {\n if (childObj instanceof TreeBase) {\n childObj.parent = result;\n result.children.push(childObj);\n } else {\n TreeBase.fromObject(childObj, result);\n }\n }\n\n // allow the component to initialize itself\n result.init();\n\n // Validate the type is what was expected\n if (result instanceof this) return result;\n\n // Die if not\n console.error(\"expected\", this);\n console.error(\"got\", result);\n throw new Error(`fromObject failed`);\n }\n\n /**\n * Signal nodes above that something has been updated\n */\n update() {\n let start = this;\n /** @type {TreeBase | null} */\n let p = start;\n while (p) {\n p.onUpdate(start);\n p = p.parent;\n }\n }\n\n /**\n * Called when something below is updated\n * @param {TreeBase} _start\n */\n onUpdate(_start) {}\n\n /**\n * Render the designer interface and return the resulting Hole\n * @returns {Hole}\n */\n settings() {\n const detailsId = this.id + \"-details\";\n const settingsId = this.id + \"-settings\";\n return html`
    \n \n (this.persisted.settingsDetailsOpen = target.open)}\n >\n ${this.settingsSummary()}\n ${this.settingsDetails()}\n \n ${this.settingsChildren()}\n
    `;\n }\n\n /**\n * Render the summary of a components settings\n * @returns {Hole}\n */\n settingsSummary() {\n const name = Object.hasOwn(this, \"name\") ? this[\"name\"].value : \"\";\n return html`

    ${friendlyName(this.className)} ${name}

    `;\n }\n\n /**\n * Render the details of a components settings\n * @returns {Hole|Hole[]}\n */\n settingsDetails() {\n const props = this.propsAsProps;\n const inputs = Object.values(props).map((prop) => prop.input());\n return inputs;\n }\n\n settingsChildren() {\n return this.orderedChildren();\n }\n\n /**\n * Render the user interface and return the resulting Hole\n * @returns {Hole|Hole[]}\n */\n template() {\n return this.empty;\n }\n\n /**\n * Render the user interface catching errors and return the resulting Hole\n * @returns {Hole|Hole[]}\n */\n safeTemplate() {\n try {\n return this.template();\n } catch (error) {\n errorHandler(error, ` safeTemplate ${this.className}`);\n let classes = [this.className.toLowerCase()];\n classes.push(\"error\");\n return html`
    ERROR
    `;\n }\n }\n\n /** @typedef {Object} ComponentAttrs\n * @property {string[]} [classes]\n * @property {Object} [style]\n */\n\n /**\n * Wrap the body of a component\n *\n * @param {ComponentAttrs} attrs\n * @param {Hole|Hole[]} body\n * @returns {Hole}\n */\n component(attrs, body) {\n attrs = { style: {}, ...attrs };\n let classes = [this.className.toLowerCase()];\n if (\"classes\" in attrs) {\n classes = classes.concat(attrs.classes);\n }\n return html`\n ${body}\n

    `;\n }\n\n /**\n * Swap two of my children\n * @param {number} i\n * @param {number} j\n */\n swap(i, j) {\n const A = this.children;\n [A[i], A[j]] = [A[j], A[i]];\n }\n\n /**\n * Move me to given position in my parent\n * @param {number} i\n */\n moveTo(i) {\n const peers = this.parent?.children || [];\n peers.splice(this.index, 1);\n peers.splice(i, 0, this);\n }\n\n /**\n * Move me up or down by 1 position if possible\n * @param {boolean} up\n */\n moveUpDown(up) {\n const parent = this.parent;\n if (!parent) return;\n const peers = parent.children;\n if (peers.length > 1) {\n const index = this.index;\n const step = up ? -1 : 1;\n if ((up && index > 0) || (!up && index < peers.length - 1)) {\n parent.swap(index, index + step);\n }\n }\n }\n\n /**\n * Get the index of this component in its parent\n * @returns {number}\n */\n get index() {\n return (this.parent && this.parent.children.indexOf(this)) || 0;\n }\n\n /**\n * * Remove this child from their parent and return the id of the child to receive focus\n * @returns {string}\n * */\n remove() {\n if (!this.parent) return \"\";\n const peers = this.parent.children;\n const index = peers.indexOf(this);\n const parent = this.parent;\n this.parent = null;\n peers.splice(index, 1);\n if (peers.length > index) {\n return peers[index].id;\n } else if (peers.length > 0) {\n return peers[peers.length - 1].id;\n } else {\n return parent.id;\n }\n }\n\n /**\n * Create HTML LI nodes from the children\n */\n listChildren(children = this.children) {\n return children.map(\n (child) => html.for(child)`
  • ${child.settings()}
  • `,\n );\n }\n\n /**\n * Create an HTML ordered list from the children\n */\n orderedChildren(children = this.children) {\n return html`
      \n ${this.listChildren(children)}\n
    `;\n }\n\n /**\n * Create an HTML unordered list from the children\n * */\n unorderedChildren(children = this.children) {\n return html`
      \n ${this.listChildren(children)}\n
    `;\n }\n\n /**\n * Return the nearest parent of the given type\n * @template T\n * @param {new() => T} type\n * @returns {T}\n * */\n nearestParent(type) {\n let p = this.parent;\n while (p) {\n if (p instanceof type) {\n return p;\n }\n p = p.parent;\n }\n throw new Error(\"No such parent\");\n }\n\n /**\n * Filter children by their type\n * @template T\n * @param {new() => T} type\n * @returns {T[]}\n */\n filterChildren(type) {\n /** @type {T[]} */\n const result = [];\n for (const child of this.children) {\n if (child instanceof type) {\n result.push(child);\n }\n }\n return result;\n }\n\n /* Methods from original Base many not used */\n\n /** Return matching strings from props\n * @param {RegExp} pattern\n * @param {string[]} [props]\n * @returns {Set}\n */\n all(pattern, props) {\n const matches = new Set();\n for (const [name, theProp] of Object.entries(this.props)) {\n if (!props || props.indexOf(name) >= 0) {\n if (theProp instanceof Props.String) {\n for (const [match] of theProp.value.matchAll(pattern)) {\n matches.add(match);\n }\n }\n }\n }\n for (const child of this.children) {\n for (const match of child.all(pattern, props)) {\n matches.add(match);\n }\n }\n return matches;\n }\n\n /** @returns {Set} */\n allStates() {\n return this.all(/\\$\\w+/g);\n }\n\n get empty() {\n return html``;\n }\n}\n\n/**\n * A variant of TreeBase that allows replacing a node with one of a similar type\n */\nexport class TreeBaseSwitchable extends TreeBase {\n init() {\n // find the TypeSelect property and set its value\n for (const prop of Object.values(this.propsAsProps)) {\n if (prop instanceof Props.TypeSelect) {\n if (!prop.value) {\n prop.set(this.className);\n }\n }\n }\n }\n\n /** Replace this node with one of a compatible type\n * @param {string} className */\n replace(className) {\n if (!this.parent) return;\n if (this.className == className) return;\n // extract the values of the old props\n const props = this.props;\n const replacement = TreeBase.create(className, null, props);\n replacement.init();\n const index = this.parent.children.indexOf(this);\n this.parent.children[index] = replacement;\n replacement.parent = this.parent;\n this.update();\n }\n}\n","import * as StackTrace from \"stacktrace-js\";\nimport { html } from \"uhtml\";\nimport \"css/errors.css\";\nimport { TreeBase } from \"./treebase\";\n\nexport class Messages extends TreeBase {\n /** @type {string[]} */\n messages = [];\n\n template() {\n if (this.messages.length) {\n const result = html`
    \n ${this.messages.map((message) => html`

    ${message}

    `)}\n
    `;\n this.messages = [];\n return result;\n } else {\n return this.empty;\n }\n }\n\n report(message = \"\") {\n console.log({ message });\n this.messages.push(message);\n }\n}\n\n/** Display an error message for user feedback\n * @param {string} msg - the error message\n * @param {string[]} trace - stack trace\n */\nfunction reportInternalError(msg, trace) {\n const result = html.node`
    \n

    Internal Error

    \n

    \n Your browser has detected an internal error in OS-DPI. It was very likely\n caused by our program bug. We hope you will help us by sending a report of\n the information below. Simply click this button\n {\n const html =\n document.getElementById(\"ErrorReportBody\")?.innerHTML || \"\";\n const blob = new Blob([html], { type: \"text/html\" });\n const data = [new ClipboardItem({ \"text/html\": blob })];\n navigator.clipboard.write(data);\n }}\n >\n Copy report to clipboard\n \n and then paste into an email to\n gb@cs.unc.edu.\n {\n document.getElementById(\"ErrorReport\")?.remove();\n }}\n >\n Dismiss this dialog\n \n

    \n
    \n

    Error Report

    \n

    ${msg}

    \n

    Stack Trace

    \n
      \n ${trace.map((s) => html`
    • ${s}
    • `)}\n
    \n
    \n
    `;\n document.body.prepend(result);\n}\n\nwindow.onerror = async function (msg, _file, _line, _col, error) {\n console.error(\"onerror\", msg, error);\n if (error instanceof Error) {\n try {\n const frames = await StackTrace.fromError(error);\n const trace = frames.map((frame) => `${frame.toString()}`);\n reportInternalError(msg.toString(), trace);\n } catch (e) {\n const msg2 = `Caught an error trying to report an error.\n The original message was \"${msg.toString()}\".\n With file=${_file} line=${_line} column=${_col}\n error=${error.toString()}`;\n reportInternalError(msg2, []);\n }\n }\n};\n\n/** @param {Error} error */\nexport function errorHandler(error, extra = \"\") {\n let stack = [];\n let cause = `${error.name}${extra}`;\n if (error.stack) {\n const errorLines = error.stack.split(\"\\n\");\n stack = errorLines.slice(1);\n cause = errorLines[0] + extra;\n }\n reportInternalError(cause, stack);\n}\n/** @param {PromiseRejectionEvent} error */\nwindow.onunhandledrejection = function (error) {\n console.error(\"onunhandlederror\", error);\n error.preventDefault();\n reportInternalError(\n error.reason.message,\n error.reason.stack?.split(\"\\n\") || [\"no stack\"]\n );\n};\n","import { evalInContext } from \"./eval\";\n\n/** Implement comparison operators\n * @typedef {function(string, string): boolean} Comparator\n *\n * @type {Object}\n */\nexport const comparators = {\n equals: (f, v) =>\n f.localeCompare(v, undefined, { sensitivity: \"base\" }) === 0 ||\n f === \"*\" ||\n v === \"*\",\n \"less than\": (f, v) => f.localeCompare(v, undefined, { numeric: true }) < 0,\n \"starts with\": (f, v) =>\n f.toUpperCase().startsWith(v.toUpperCase()) || f === \"*\" || v === \"*\",\n empty: (f) => !f,\n \"not empty\": (f) => !!f,\n};\n\n/** Test a row with a filter\n * @param {ContentFilter} filter\n * @param {Row} row\n * @returns {boolean}\n */\nfunction match(filter, row) {\n const field = row[filter.field.slice(1)] || \"\";\n let value = filter.value || \"\";\n const comparator = comparators[filter.operator];\n if (!comparator) return true;\n let r = comparator(field.toString(), value.toString());\n return r;\n}\n\nexport class Data {\n /** @param {Rows} rows - rows coming from the spreadsheet */\n constructor(rows) {\n this.contentRows = (Array.isArray(rows) && rows) || [];\n this.allrows = this.contentRows;\n /** @type {string[]} */\n this.allFields = [];\n this.updateAllFields();\n this.loadTime = new Date();\n }\n\n updateAllFields() {\n this.allFields = this.contentRows.reduce(\n (previous, current) =>\n Array.from(\n new Set([\n ...previous,\n ...Object.keys(current).map((field) => \"#\" + field),\n ]),\n ),\n [],\n );\n this.clearFields = Object.fromEntries(\n this.allFields.map((field) => [field.slice(1), null]),\n );\n }\n\n /**\n * Extract rows with the given filters\n *\n * @param {ContentFilter[]} filters - each filter must return true\n * @param {State} state\n * @param {RowCache} [cache]\n * @param {boolean} [clearFields] - return null for undefined fields\n * @return {Rows} Rows that pass the filters\n */\n getMatchingRows(filters, state, cache, clearFields = true) {\n // all the filters must match the row\n const boundFilters = filters.map((filter) =>\n Object.assign({}, filter, {\n value: evalInContext(filter.value, { state }),\n }),\n );\n if (cache) {\n const newKey = JSON.stringify(boundFilters);\n if (\n cache.key == newKey &&\n cache.loadTime == this.loadTime &&\n cache.rows\n ) {\n cache.updated = false;\n return cache.rows;\n }\n cache.key = newKey;\n }\n let result = this.allrows.filter((row) =>\n boundFilters.every((filter) => match(filter, row)),\n );\n if (clearFields)\n result = result.map((row) => ({ ...this.clearFields, ...row }));\n if (cache) {\n cache.rows = result;\n cache.updated = true;\n cache.loadTime = this.loadTime;\n }\n // console.log(\"gtr result\", result);\n return result;\n }\n\n /**\n * Test if any rows exist after filtering\n *\n * @param {ContentFilter[]} filters\n * @param {State} state\n * @param {RowCache} [cache]\n * @return {Boolean} true if tag combination occurs\n */\n hasMatchingRows(filters, state, cache) {\n const boundFilters = filters.map((filter) =>\n Object.assign({}, filter, {\n value: evalInContext(filter.value, { state }),\n }),\n );\n if (cache) {\n const newKey = JSON.stringify(boundFilters);\n if (\n cache.key == newKey &&\n cache.loadTime == this.loadTime &&\n cache.result\n ) {\n cache.updated = false;\n return cache.result;\n }\n cache.key = newKey;\n }\n const result = this.allrows.some((row) =>\n boundFilters.every((filter) => match(filter, row)),\n );\n if (cache) {\n cache.result = result;\n cache.updated = true;\n cache.loadTime = this.loadTime;\n }\n return result;\n }\n\n /**\n * Add rows from the socket interface\n * @param {Rows} rows\n */\n setDynamicRows(rows) {\n if (!Array.isArray(rows)) return;\n this.allrows = rows.concat(this.contentRows);\n this.updateAllFields();\n this.loadTime = new Date();\n }\n}\n","const e=Object.assign||((e,t)=>(t&&Object.keys(t).forEach(o=>e[o]=t[o]),e)),t=(e,r,s)=>{const c=typeof s;if(s&&\"object\"===c)if(Array.isArray(s))for(const o of s)r=t(e,r,o);else for(const c of Object.keys(s)){const f=s[c];\"function\"==typeof f?r[c]=f(r[c],o):void 0===f?e&&!isNaN(c)?r.splice(c,1):delete r[c]:null===f||\"object\"!=typeof f||Array.isArray(f)?r[c]=f:\"object\"==typeof r[c]?r[c]=f===r[c]?f:o(r[c],f):r[c]=t(!1,{},f)}else\"function\"===c&&(r=s(r,o));return r},o=(o,...r)=>{const s=Array.isArray(o);return t(s,s?o.slice():e({},o),r)};export default o;\n//# sourceMappingURL=mergerino.min.js.map","import merge from \"mergerino\";\n\nexport class State {\n constructor(persistKey = \"\") {\n this.persistKey = persistKey;\n /** @type {Set} */\n this.listeners = new Set();\n /** @type {Object} */\n this.values = {};\n /** @type {Set} */\n this.updated = new Set();\n if (this.persistKey) {\n /* persistence */\n const persist = window.sessionStorage.getItem(this.persistKey);\n if (persist) {\n this.values = JSON.parse(persist);\n // console.log(\"restored $tabControl\", this.values[\"$tabControl\"]);\n }\n }\n }\n\n /** unified interface to state\n * @param {string} [name] - possibly dotted path to a value\n * @param {any} defaultValue\n * @returns {any}\n */\n get(name, defaultValue = \"\") {\n if (name && name.length) {\n return name\n .split(\".\")\n .reduce((o, p) => (o ? o[p] : defaultValue), this.values);\n } else {\n return undefined;\n }\n }\n\n /**\n * update the state with a patch and invoke any listeners\n *\n * @param {Object} patch - the changes to make to the state\n * @return {void}\n */\n update(patch = {}) {\n for (const key in patch) {\n this.updated.add(key);\n }\n const oldValues = this.values;\n this.values = merge(oldValues, patch);\n // see which values changed.\n const allKeys = new Set([\n ...Object.keys(oldValues),\n ...Object.keys(this.values),\n ]);\n const changed = new Set(\n [...allKeys].filter((key) => oldValues[key] !== this.values[key])\n );\n for (const callback of this.listeners) {\n callback(changed);\n }\n\n if (this.persistKey) {\n const persist = JSON.stringify(this.values);\n window.sessionStorage.setItem(this.persistKey, persist);\n // console.trace(\"persist $tabControl\", this.values[\"$tabControl\"]);\n }\n }\n\n /**\n * return a new state with the patch applied\n * @param {Object} patch - changes to apply\n * @return {State} - new independent state\n */\n clone(patch = {}) {\n const result = new State();\n result.values = merge(this.values, patch);\n return result;\n }\n\n /** clear - reset the state\n */\n clear() {\n const userState = Object.keys(this.values).filter((name) =>\n name.startsWith(\"$\")\n );\n const patch = Object.fromEntries(\n userState.map((name) => [name, undefined])\n );\n this.update(patch);\n }\n\n /** observe - call this function when the state updates\n * @param {Function} callback\n */\n observe(callback) {\n this.listeners.add(callback);\n }\n\n /** return true if the given state has been upated since last you asked\n * @param {string} stateName\n * @returns boolean\n */\n hasBeenUpdated(stateName) {\n const result = this.updated.has(stateName);\n if (result) {\n this.updated.delete(stateName);\n }\n return result;\n }\n\n /** define - add a named state to the global system state\n * @param {String} name - name of the state\n * @param {any} defaultValue - value if not already defined\n */\n define(name, defaultValue) {\n if (typeof this.values[name] === \"undefined\") {\n this.values[name] = defaultValue;\n }\n }\n /** interpolate\n * @param {string} input\n * @returns {string} input with $name replaced by values from the state\n */\n interpolate(input) {\n let result = input.replace(/(\\$[a-zA-Z0-9_.]+)/, (_, name) =>\n this.get(name)\n );\n result = result.replace(/\\$\\{([a-zA-Z0-9_.]+)}/, (_, name) =>\n this.get(\"$\" + name)\n );\n return result;\n }\n}\n","import { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { html } from \"uhtml\";\nimport { styleString } from \"./style\";\nimport \"css/stack.css\";\n\nexport class Stack extends TreeBase {\n direction = new Props.Select([\"row\", \"column\"], { defaultValue: \"column\" });\n background = new Props.Color(\"\");\n scale = new Props.Float(1);\n\n allowedChildren = [\n \"Stack\",\n \"Gap\",\n \"Grid\",\n \"Display\",\n \"Radio\",\n \"TabControl\",\n \"VSD\",\n \"Button\",\n ];\n\n /** @returns {Hole|Hole[]} */\n template() {\n /** return the scale of the child making sure it isn't zero or undefined.\n * @param {TreeBase} child\n * @returns {number}\n */\n function getScale(child) {\n const SCALE_MIN = 0.0;\n let scale = +child.props.scale;\n if (!scale || scale < SCALE_MIN) {\n scale = SCALE_MIN;\n }\n return scale;\n }\n const scaleSum = this.children.reduce(\n (sum, child) => sum + getScale(child),\n 0,\n );\n const empty = this.children.length && scaleSum ? \"\" : \"empty\";\n const dimension = this.props.direction == \"row\" ? \"width\" : \"height\";\n\n return this.component(\n {\n classes: [this.props.direction, empty],\n style: {\n backgroundColor: this.props.background,\n },\n },\n this.children.map(\n (child) =>\n html`\n ${child.safeTemplate()}\n
    `,\n ),\n );\n }\n}\nTreeBase.register(Stack, \"Stack\");\n","import { Stack } from \"./stack\";\n\nexport class Page extends Stack {\n // you can't delete the page\n allowDelete = false;\n\n constructor() {\n super();\n this.allowedChildren = this.allowedChildren.concat(\n \"Speech\",\n \"Audio\",\n \"Logger\",\n \"ModalDialog\",\n \"Customize\",\n \"HeadMouse\"\n );\n }\n}\nStack.register(Page, \"Page\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport { comparators } from \"app/data\";\nimport * as Props from \"./props\";\n\nexport class GridFilter extends TreeBase {\n field = new Props.Field({ hiddenLabel: true });\n operator = new Props.Select(Object.keys(comparators), { hiddenLabel: true });\n value = new Props.String(\"\", { hiddenLabel: true });\n\n /** move my parent instead of me.\n * @param {boolean} up\n */\n moveUpDown(up) {\n this.parent?.moveUpDown(up);\n }\n\n /** Format the settings\n * @param {GridFilter[]} filters\n * @return {Hole}\n */\n static FilterSettings(filters) {\n const table = [];\n if (filters.length > 0) {\n table.push(html`\n
    \n \n \n \n \n \n \n \n \n \n ${filters.map(\n (filter, index) => html`\n \n \n \n \n \n \n `,\n )}\n \n
    #FieldOperatorValue
    ${index + 1}${filter.field.input()}${filter.operator.input()}${filter.value.input()}
    \n `);\n }\n return html`
    \n Filters\n ${table}\n
    `;\n }\n\n /** Convert from Props to values for data module\n * @param {GridFilter[]} filters\n */\n static toContentFilters(filters) {\n return filters.map((child) => ({\n field: child.field.value,\n operator: child.operator.value,\n value: child.value.value,\n }));\n }\n}\nTreeBase.register(GridFilter, \"GridFilter\");\n","import { html } from \"uhtml\";\n\n/**\n * Edit slots markup to replace with values\n * @param {string} msg - the string possibly containing $$ kind = value $$ markup\n * @param {string[]} slotValues - values to replace slots\n * @returns {Hole[]} - formatted string\n */\nexport function formatSlottedString(msg, slotValues = []) {\n let slotIndex = 0;\n msg = msg || \"\";\n return msg.split(/(\\$\\$.*?\\$\\$)/).map((part) => {\n const m = part.match(/\\$\\$(?.*?)=(?.*?)\\$\\$/);\n if (m) {\n return html`${slotValues[slotIndex++] || m.groups?.value || \"\"}`;\n } else {\n return html`${part}`;\n }\n });\n}\n\n/**\n * Interpolate values into a string using {{name}} for values to replace\n * @param {string} template - string to edit\n * @param {Object} values - values to interpolate\n * @returns {string} - interpolated string\n */\nexport function interpolate(template, values) {\n return template.replaceAll(\n /{{\\s*(\\w+)\\s*}}/g,\n (_, name) => values[name]?.toString() || \"\"\n );\n}\n\n/**\n * Convert a name from camelCase to Camel Case\n * @param {string} name\n * @returns {string}\n */\nexport function fromCamelCase(name) {\n return name\n .replace(/(?!^)([A-Z][a-z])/g, \" $1\")\n .replace(/^./, (s) => s.toUpperCase());\n}\n\n/**\n * Conditionally show an indicator with a title\n *\n * @param {boolean} toggle\n * @param {string} title\n * @returns {Hole}\n */\nexport function toggleIndicator(toggle, title) {\n if (toggle) {\n return html``;\n } else {\n return html``;\n }\n}\n","import { html } from \"uhtml\";\nimport * as Props from \"./props\";\nimport { TreeBase } from \"./treebase\";\nimport { GridFilter } from \"./gridFilter\";\nimport { styleString } from \"./style\";\nimport { formatSlottedString } from \"./helpers\";\nimport Globals from \"app/globals\";\nimport \"css/grid.css\";\n\n/**\n * Return an image or video element given the name + parameters\n * like \"foo.mp4 autoplay loop\".\n * @param {string} src\n * @param {string} title\n * @param {null|function():void} onload\n * @returns {Hole}\n */\nexport function imageOrVideo(src, title, onload = null) {\n const match = /(?.*\\.(?:mp4|webm))(?.*$)/.exec(src);\n\n if (match && match.groups) {\n // video\n const options = match.groups.options;\n const vsrc = match.groups.src;\n return html`= 0}\n ?autoplay=${options.indexOf(\"autoplay\") >= 0}\n ?muted=${options.indexOf(\"muted\") >= 0}\n onload=${onload}\n />`;\n } else {\n // image\n return html``;\n }\n}\n\nclass Grid extends TreeBase {\n fillItems = new Props.Boolean(false);\n rows = new Props.Integer(3);\n columns = new Props.Integer(3);\n scale = new Props.Float(1);\n name = new Props.String(\"grid\");\n background = new Props.Color(\"white\");\n\n allowedChildren = [\"GridFilter\"];\n\n /** @type {GridFilter[]} */\n children = [];\n\n page = 1;\n pageBoundaries = { 0: 0 }; //track starting indices of pages\n /**\n * @type {Object}\n * @property {string} key\n */\n cache = {};\n\n /** @param {Row} item */\n gridCell(item) {\n const { name } = this.props;\n let content;\n let msg = formatSlottedString(item.label || \"\");\n if (item.symbol) {\n content = html`
    \n
    \n ${imageOrVideo(item.symbol, item.label || \"\")}\n
    ${msg}
    \n
    \n
    `;\n } else {\n content = msg;\n }\n return html`\n ${content}\n `;\n }\n\n emptyCell() {\n return html``;\n }\n\n /**\n * Allow selecting pages in the grid\n *\n * @param {Number} pages\n * @param {Row} info\n */\n pageSelector(pages, info) {\n const { state } = Globals;\n const { background, name } = this.props;\n\n return html`
    \n
    Page ${this.page} of ${pages}
    \n
    \n {\n this.page = ((((this.page - 2) % pages) + pages) % pages) + 1;\n state.update(); // trigger redraw\n }}\n tabindex=\"-1\"\n >\n ☚ {\n this.page = (this.page % pages) + 1;\n state.update(); // trigger redraw\n }}\n tabindex=\"-1\"\n >\n ☛\n \n
    \n
    `;\n }\n\n template() {\n /** @type {Partial} */\n const style = { backgroundColor: this.props.background };\n const { data, state } = Globals;\n let { rows, columns, fillItems } = this.props;\n /** @type {Rows} */\n let items = data.getMatchingRows(\n GridFilter.toContentFilters(this.children),\n state,\n this.cache,\n );\n // reset the page when the key changes\n if (this.cache.updated) {\n this.page = 1;\n }\n let maxPage = 1;\n const result = [];\n if (!fillItems) {\n // collect the items for the current page\n // and get the dimensions\n let maxRow = 0,\n maxColumn = 0;\n const itemMap = new Map();\n /**\n * @param {number} row\n * @param {number} column\n */\n const itemKey = (row, column) => row * 1000 + column;\n\n for (const item of items) {\n // ignore items without row and column\n if (!item.row || !item.column) continue;\n // get the max page value if any\n maxPage = Math.max(maxPage, item.page || 1);\n // collect the items on this page\n if (this.page == (item.page || 1)) {\n maxRow = Math.max(maxRow, item.row);\n maxColumn = Math.max(maxColumn, item.column);\n const key = itemKey(item.row, item.column);\n // only use the first one\n if (!itemMap.has(key)) itemMap.set(key, item);\n }\n }\n rows = maxRow;\n columns = maxColumn;\n for (let row = 1; row <= rows; row++) {\n for (let column = 1; column <= columns; column++) {\n if (maxPage > 1 && row == rows && column == columns) {\n // draw the page selector in the last cell\n result.push(this.pageSelector(maxPage, { row, column }));\n } else {\n const key = itemKey(row, column);\n if (itemMap.has(key)) {\n result.push(this.gridCell(itemMap.get(key)));\n } else {\n result.push(this.emptyCell());\n }\n }\n }\n }\n } else {\n // fill items sequentially\n let perPage = rows * columns;\n if (items.length > perPage) {\n perPage = perPage - 1;\n }\n maxPage = Math.ceil(items.length / perPage);\n // get the items on this page\n items = items.slice((this.page - 1) * perPage, this.page * perPage);\n // render them into the result\n for (let i = 0; i < items.length; i++) {\n const row = Math.floor(i / columns) + 1;\n const column = (i % columns) + 1;\n const item = { ...items[i], row, column };\n result.push(this.gridCell({ ...item, row: row, column: column }));\n }\n // fill any spaces that remain\n for (let i = items.length; i < perPage; i++) {\n result.push(this.emptyCell());\n }\n // draw the page selector if needed\n if (maxPage > 1) {\n result.push(this.pageSelector(maxPage, { row: rows, column: columns }));\n }\n }\n\n style.gridTemplate = `repeat(${rows}, calc(100% / ${rows})) / repeat(${columns}, 1fr)`;\n\n return this.component({ style }, result);\n }\n\n /** @returns {Hole|Hole[]} */\n settingsDetails() {\n const props = this.propsAsProps;\n const inputs = Object.values(props).map((prop) => prop.input());\n const filters = GridFilter.FilterSettings(this.children);\n return html`
    ${filters}${inputs}
    `;\n }\n\n settingsChildren() {\n return this.empty;\n }\n}\nTreeBase.register(Grid, \"Grid\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { Functions } from \"app/eval\";\nimport merge from \"mergerino\";\nimport \"css/display.css\";\nimport Globals from \"app/globals\";\n\n/** Slot descriptor\n * @typedef {Object} Slot\n * @property {String} name - the name of the slot list\n * @property {String} value - the current value\n */\n\n/** Editor state\n * @typedef {Object} Editor\n * @property {String} message - the message text\n * @property {Slot[]} slots - slots if any\n * @property {Number} slotIndex - slot being edited\n * @property {String} slotName - current slot type\n */\n\nclass Display extends TreeBase {\n stateName = new Props.String(\"$Display\");\n Name = new Props.String(\"\");\n background = new Props.Color(\"white\");\n fontSize = new Props.Float(2);\n scale = new Props.Float(1);\n\n /** @type {HTMLDivElement | null} */\n current = null;\n\n static functionsInitialized = false;\n\n template() {\n this.initFunctions();\n const { state } = Globals;\n /** @type {Hole[]} */\n let content = [];\n /** @type {String|Editor} */\n let value = state.get(this.props.stateName) || \"\";\n if (typeof value === \"string\" || value instanceof String) {\n // strip any slot markup\n value = value.replaceAll(/\\$\\$(?.*?)=(?.*?)\\$\\$/g, \"$2\");\n content = [html`${value}`];\n } else {\n let editor = /** @type {Editor} */ (value);\n // otherwise it is an editor object\n // highlight the current slot\n let i = 0;\n content = editor.message.split(/(\\$\\$.*?\\$\\$)/).map((part) => {\n const m = part.match(/\\$\\$(?.*?)=(?.*?)\\$\\$/);\n if (m) {\n if (i === editor.slotIndex) {\n // highlight the current slot\n return html`${editor.slots[i++].value}`;\n } else {\n return html`${editor.slots[i++].value.replace(/^\\*/, \"\")}`;\n }\n }\n return html`${part}`;\n });\n }\n return this.component(\n {\n style: {\n backgroundColor: this.props.background,\n fontSize: this.props.fontSize + \"rem\",\n },\n },\n html`\n ${content}\n `,\n );\n }\n\n /** Attempt to locate the word the user is touching\n */\n click = () => {\n const s = window.getSelection();\n if (!s) return;\n let word = \"\";\n if (s.isCollapsed) {\n s.modify(\"move\", \"forward\", \"character\");\n s.modify(\"move\", \"backward\", \"word\");\n s.modify(\"extend\", \"forward\", \"word\");\n word = s.toString();\n s.modify(\"move\", \"forward\", \"character\");\n } else {\n word = s.toString();\n }\n this.current?.setAttribute(\"data--clicked-word\", word);\n };\n\n initFunctions() {\n let { actions } = Globals;\n\n // console.log({ actions });\n /** return true of the message contains slots\n * @param {String|Editor} message\n */\n function hasSlots(message) {\n // console.log(\"has slots\", message);\n if (message instanceof Object) {\n return message.slots.length > 0;\n }\n return message.indexOf(\"$$\") >= 0;\n }\n\n /** initialize the editor\n * @param {String} message\n * @returns Editor\n */\n function init(message) {\n // console.log(\"init\", message);\n const slots = Array.from(\n message.matchAll(/\\$\\$(?.*?)=(?.*?)\\$\\$/g),\n ).map((m) => m.groups);\n return {\n message,\n slots,\n slotIndex: 0,\n slotName: (slots[0] && slots[0].name) || \"\",\n };\n }\n\n /** cancel slot editing\n * @returns Editor\n */\n\n function cancel() {\n return {\n message: \"\",\n slots: [],\n slotIndex: 0,\n slotName: \"\",\n };\n }\n\n /** update the value of the current slot\n * @param {String} message\n */\n function update(message) {\n /** @param {Editor} old\n */\n return (old) => {\n // copy the slots from the old value\n if (!old || !old.slots) {\n return \"\";\n }\n const slots = [...old.slots];\n let slotIndex = old.slotIndex;\n // replace the current one\n if (message.startsWith(\"*\")) {\n slots[slotIndex].value = message;\n } else {\n if (slots[slotIndex].value.startsWith(\"*\")) {\n slots[slotIndex].value = `${slots[slotIndex].value} ${message}`;\n } else {\n slots[slotIndex].value = message;\n }\n slotIndex++;\n if (slotIndex >= slots.length) {\n actions.queueEvent(\"okSlot\", \"press\");\n }\n }\n return merge(old, {\n slots,\n slotIndex,\n slotName: slots[slotIndex]?.name,\n });\n };\n }\n\n /** advance to the next slot\n */\n function nextSlot() {\n /** @param {Editor} old\n */\n return (old) => {\n if (!old) return;\n const slotIndex = old.slotIndex + 1;\n if (slotIndex >= old.slots.length) {\n actions.queueEvent(\"okSlot\", \"press\");\n }\n return merge(old, { slotIndex });\n };\n }\n\n /** duplicate the current slot\n */\n function duplicate() {\n /** @param {Editor} old\n */\n return (old) => {\n const matches = Array.from(\n old.message.matchAll(/\\$\\$(?.*?)=(?.*?)\\$\\$/g),\n );\n const current = matches[old.slotIndex];\n if (current !== undefined && current.index !== undefined) {\n const message =\n old.message.slice(0, current.index) +\n current[0] +\n \" and \" +\n current[0] +\n old.message.slice(current.index + current[0].length);\n const slots = [\n ...old.slots.slice(0, old.slotIndex + 1),\n { ...old.slots[old.slotIndex] }, // copy it\n ...old.slots.slice(old.slotIndex + 1),\n ];\n return merge(old, {\n message,\n slots,\n });\n } else {\n return old;\n }\n };\n }\n\n if (!Display.functionsInitialized) {\n Display.functionsInitialized = true;\n\n Functions[\"slots\"] = {\n init,\n cancel,\n update,\n hasSlots,\n duplicate,\n nextSlot,\n strip,\n };\n }\n }\n}\n/* TODO: refactor the multiple versions of this formatting code */\n\n/** strip slots markup\n * @param {String|Editor} value\n * @returns {String}\n */\nexport function strip(value) {\n if (!value) return \"\";\n if (typeof value === \"string\" || value instanceof String) {\n // strip any slot markup\n value = value.replaceAll(/\\$\\$(?.*?)=(?.*?)\\$\\$/g, \"$2\");\n return value;\n }\n let editor = /** @type {Editor} */ (value);\n // otherwise it is an editor object\n let i = 0;\n const parts = editor.message.split(/(\\$\\$.*?\\$\\$)/).map((part) => {\n const m = part.match(/\\$\\$(?.*?)=(?.*?)\\$\\$/);\n if (m) {\n return editor.slots[i++].value.replace(/^\\*/, \"\");\n }\n return part;\n });\n return parts.join(\"\");\n}\nTreeBase.register(Display, \"Display\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { styleString } from \"./style\";\nimport \"css/radio.css\";\nimport Globals from \"app/globals\";\nimport { GridFilter } from \"./gridFilter\";\n\nclass Option extends TreeBase {\n name = new Props.String(\"\");\n value = new Props.String(\"\");\n cache = {};\n}\nTreeBase.register(Option, \"Option\");\n\nclass Radio extends TreeBase {\n scale = new Props.Float(1);\n label = new Props.String(\"\");\n stateName = new Props.String(\"$radio\");\n unselected = new Props.Color(\"lightgray\");\n selected = new Props.Color(\"pink\");\n\n allowedChildren = [\"Option\", \"GridFilter\"];\n\n /** @type {(Option | GridFilter)[]} */\n children = [];\n\n get options() {\n return this.filterChildren(Option);\n }\n\n /**\n * true if there exist rows with the this.filters and the value\n * @arg {Option} option\n * @returns {boolean}\n */\n valid(option) {\n const { data, state } = Globals;\n const filters = GridFilter.toContentFilters(\n this.filterChildren(GridFilter),\n );\n return (\n !filters.length ||\n data.hasMatchingRows(\n filters,\n state.clone({ [this.props.stateName]: option.props.value }),\n option.cache,\n )\n );\n }\n\n /**\n * handle clicks on the chooser\n * @param {MouseEvent} event\n */\n handleClick({ target }) {\n if (target instanceof HTMLButtonElement) {\n const value = target.value;\n const name = this.props.stateName;\n Globals.state.update({ [name]: value });\n }\n }\n\n template() {\n const { state } = Globals;\n const stateName = this.props.stateName;\n let current = state.get(stateName);\n const choices = this.options.map((child, index) => {\n const disabled = !this.valid(/** @type {Option}*/ (child));\n if (stateName && !current && !disabled && child.props.value) {\n current = child.props.value;\n state.update({ [stateName]: current });\n }\n const color =\n child.props.value == current || (!current && index == 0)\n ? this.props.selected\n : this.props.unselected;\n return html` state.update({ [stateName]: child.props.value })}\n >\n ${child.props.name}\n `;\n });\n\n return this.component(\n {},\n html`
    \n ${(this.props.label && html`${this.props.label}`) ||\n this.empty}\n ${choices}\n
    `,\n );\n }\n\n get name() {\n return this.props.name || this.props.label || this.props.stateName;\n }\n\n settingsDetails() {\n const props = this.propsAsProps;\n const inputs = Object.values(props).map((prop) => prop.input());\n const filters = this.filterChildren(GridFilter);\n const editFilters = !filters.length\n ? this.empty\n : GridFilter.FilterSettings(filters);\n const options = this.filterChildren(Option);\n const editOptions = html`
    \n Options\n \n \n \n \n \n \n \n \n \n ${options.map(\n (option, index) => html`\n \n \n \n \n \n `,\n )}\n \n
    #NameValue
    ${index + 1}${option.name.input()}${option.value.input()}
    \n
    `;\n return html`
    ${editFilters}${editOptions}${inputs}
    `;\n }\n\n settingsChildren() {\n return this.empty;\n }\n}\nTreeBase.register(Radio, \"Radio\");\n","import { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { styleString } from \"./style\";\nimport \"css/gap.css\";\n\nclass Gap extends TreeBase {\n scale = new Props.Float(1);\n background = new Props.Color(\"\");\n\n template() {\n return this.component(\n {\n style: styleString({\n backgroundColor: this.props.background,\n }),\n },\n this.empty\n );\n }\n}\nTreeBase.register(Gap, \"Gap\");\n","import { render, html } from \"uhtml\";\nimport { errorHandler } from \"./components/errors\";\n\n/** @type {Function[]} */\nconst PostRenderFunctions = [];\n/** @param {Function} f */\nexport function callAfterRender(f) {\n PostRenderFunctions.push(f);\n}\nexport function postRender() {\n while (PostRenderFunctions.length > 0) {\n const PRF = PostRenderFunctions.pop();\n if (PRF) PRF();\n }\n}\n\nconst safe = true;\n\n/** @param {string} id\n * @param {TreeBase} component\n */\nexport function safeRender(id, component) {\n const where = document.getElementById(id);\n if (!where) {\n console.error({ id, where });\n return;\n }\n let r;\n if (safe) {\n try {\n let what = component.safeTemplate();\n if (Array.isArray(what)) what = html`${what}`;\n r = render(where, what);\n } catch (error) {\n if (error instanceof Error) {\n errorHandler(error, ` rendering ${component.className} ${id}`);\n } else {\n console.error(\"crash\", error);\n }\n return;\n }\n } else {\n let what = component.safeTemplate();\n if (Array.isArray(what)) what = html`${what}`;\n r = render(where, what);\n }\n return r;\n}\n","import { html } from \"uhtml\";\nimport * as Props from \"./props\";\nimport { Stack } from \"./stack\";\nimport { styleString } from \"./style\";\nimport \"css/tabcontrol.css\";\nimport Globals from \"app/globals\";\nimport { TreeBase } from \"./treebase\";\nimport { callAfterRender } from \"app/render\";\n\nexport class TabControl extends TreeBase {\n stateName = new Props.String(\"$tabControl\");\n background = new Props.String(\"\");\n scale = new Props.Float(6);\n tabEdge = new Props.Select([\"bottom\", \"top\", \"left\", \"right\", \"none\"], {\n defaultValue: \"top\",\n });\n name = new Props.String(\"tabs\");\n\n allowedChildren = [\"TabPanel\"];\n\n /** @type {TabPanel[]} */\n children = [];\n\n /** @type {TabPanel | undefined} */\n currentPanel = undefined;\n\n template() {\n const { state } = Globals;\n const panels = this.children;\n let activeTabName = state.get(this.props.stateName);\n // collect panel info\n panels.forEach((panel, index) => {\n panel.tabName = state.interpolate(panel.props.name); // internal name\n panel.tabLabel = state.interpolate(panel.props.label || panel.props.name); // display name\n if (index == 0 && !activeTabName) {\n activeTabName = panel.tabName;\n state.define(this.props.stateName, panel.tabName);\n }\n panel.active = activeTabName == panel.tabName || panels.length === 1;\n });\n let buttons = [this.empty];\n if (this.props.tabEdge != \"none\") {\n buttons = panels\n .filter((panel) => panel.props.label != \"UNLABELED\")\n .map((panel) => {\n const color = panel.props.background;\n const buttonStyle = {\n backgroundColor: color,\n };\n return html`
  • \n {\n this.switchTab(panel.tabName);\n }}\n tabindex=\"-1\"\n >\n ${panel.tabLabel}\n \n
  • `;\n });\n }\n this.currentPanel = panels.find((panel) => panel.active);\n const panel = this.panelTemplate();\n return this.component(\n { classes: [this.props.tabEdge] },\n html`\n
      \n ${buttons}\n
    \n
    ${panel}
    \n `,\n );\n }\n\n panelTemplate() {\n return this.currentPanel?.safeTemplate() || this.empty;\n }\n\n /**\n * @param {string} tabName\n */\n switchTab(tabName) {\n Globals.state.update({ [this.props.stateName]: tabName });\n }\n\n /** @type {string | null} */\n hint = null;\n\n restoreFocus() {}\n}\nTreeBase.register(TabControl, \"TabControl\");\n\nexport class TabPanel extends Stack {\n name = new Props.String(\"\");\n label = new Props.String(\"\");\n\n /** @type {TabControl | null} */\n parent = null;\n\n active = false;\n tabName = \"\";\n tabLabel = \"\";\n lastFocused = \"\";\n\n /**\n * Render the details of a components settings\n */\n settingsDetails() {\n const caption = this.active ? \"Active\" : \"Activate\";\n let details = super.settingsDetails();\n if (!Array.isArray(details)) details = [details];\n return [\n ...details,\n html` {\n if (this.parent) {\n const parent = this.parent;\n callAfterRender(() => {\n Globals.layout.highlight();\n });\n parent.switchTab(this.name.value);\n }\n }}\n >\n ${caption}\n `,\n ];\n }\n\n highlight() {}\n}\nTreeBase.register(TabPanel, \"TabPanel\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport \"css/modal-dialog.css\";\n\nimport Globals from \"app/globals\";\n\nexport class ModalDialog extends TreeBase {\n stateName = new Props.String(\"$modalOpen\");\n open = new Props.Boolean(false);\n\n allowedChildren = [\"Stack\"];\n\n template() {\n const state = Globals.state;\n const { stateName } = this.props;\n const open = !!state.get(stateName) || this.open.value ? \"open\" : \"\";\n if (open) {\n return this.component(\n { classes: [open] },\n html`
    ${this.children.map((child) => child.safeTemplate())}
    `\n );\n } else {\n return this.empty;\n }\n }\n}\nTreeBase.register(ModalDialog, \"ModalDialog\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { styleString } from \"./style\";\nimport \"css/vsd.css\";\nimport Globals from \"app/globals\";\nimport { GridFilter } from \"./gridFilter\";\nimport { imageOrVideo } from \"./grid\";\n\n/** Allow await'ing for a short time\n * @param {number} ms */\nconst sleep = (ms) => new Promise((r) => setTimeout(r, ms));\n\n/** Wait for a condition to be satisfied\n * @param {() => boolean} test\n * @param {number} delay */\nasync function waitFor(test, delay = 100) {\n while (!test()) await sleep(delay);\n}\n\n/**\n * Calculate the actual image size undoing the effects of object-fit\n * This is async so it can wait for the image to be loaded initially.\n *\n * @param {HTMLImageElement} img\n * */\nasync function getActualImageSize(img) {\n let left = 0,\n top = 0,\n width = 1,\n height = 1;\n if (img) {\n // wait for the image to load\n await waitFor(() => img.complete && img.naturalWidth != 0);\n const cw = img.width,\n ch = img.height,\n iw = img.naturalWidth,\n ih = img.naturalHeight,\n iratio = iw / ih,\n cratio = cw / ch;\n if (iratio > cratio) {\n width = cw;\n height = cw / iratio;\n } else {\n width = ch * iratio;\n height = ch;\n }\n left = (cw - width) / 2 + img.x;\n top = (ch - height) / 2 + img.y;\n }\n return { left, top, width, height };\n}\n\n/** @param {number} v */\nfunction px(v) {\n return `${v}px`;\n}\n/** @param {number} v */\nfunction pct(v) {\n return `${v}%`;\n}\n\n/** @typedef {Object} vsdData\n * @property {number} x\n * @property {number} y\n * @property {number} w\n * @property {number} h\n * @property {string} image\n * @property {boolean} invisible\n */\n/** @typedef {Row & vsdData} VRow */\nclass VSD extends TreeBase {\n name = new Props.String(\"vsd\");\n scale = new Props.Float(1);\n\n /** @type {GridFilter[]} */\n children = [];\n\n allowedChildren = [\"GridFilter\"];\n\n /** @type {HTMLDivElement} */\n markers;\n\n template() {\n const { data, state, actions } = Globals;\n const editing = state.get(\"editing\");\n const items = /** @type {VRow[]} */ (\n data.getMatchingRows(GridFilter.toContentFilters(this.children), state)\n );\n const src = items.find((item) => item.image)?.image || \"\";\n let dragging = 0;\n const coords = [\n [0, 0], // start x and y\n [0, 0], // end x and y\n ];\n let clip = \"\";\n\n return this.component(\n { classes: [\"show\"] },\n html`
    \n ${imageOrVideo(src, \"\", () => this.sizeMarkers(this.markers))}\n {\n this.sizeMarkers(node);\n }}\n onpointermove=${editing &&\n ((/** @type {PointerEvent} */ event) => {\n const rect = this.markers.getBoundingClientRect();\n const div = document.querySelector(\"span.coords\");\n if (!div) return;\n coords[dragging][0] = Math.round(\n (100 * (event.pageX - rect.left)) / rect.width,\n );\n coords[dragging][1] = Math.round(\n (100 * (event.pageY - rect.top)) / rect.height,\n );\n clip = `${coords[0][0]}\\t${coords[0][1]}`;\n if (dragging) {\n clip =\n clip +\n `\\t${coords[1][0] - coords[0][0]}\\t${\n coords[1][1] - coords[0][1]\n }`;\n }\n div.innerHTML = clip;\n })}\n onpointerdown=${editing &&\n (() => {\n dragging = 1;\n })}\n onpointerup=${editing &&\n (() => {\n dragging = 0;\n navigator.clipboard.writeText(clip);\n })}\n >\n ${items\n .filter((item) => item.w)\n .map(\n (item) =>\n html`\n ${item.label || \"\"}\n `,\n )}\n \n
    \n
    `,\n );\n }\n\n /** @param {HTMLDivElement} node */\n async sizeMarkers(node) {\n this.markers = node;\n const img = /** @type {HTMLImageElement} */ (node.previousElementSibling);\n const rect = await getActualImageSize(img);\n node.style.position = \"absolute\";\n node.style.left = px(rect.left);\n node.style.top = px(rect.top);\n node.style.width = px(rect.width);\n node.style.height = px(rect.height);\n }\n\n settingsDetails() {\n const props = this.propsAsProps;\n const inputs = Object.values(props).map((prop) => prop.input());\n const filters = GridFilter.FilterSettings(this.children);\n return html`
    ${filters}${inputs}
    `;\n }\n\n settingsChildren() {\n return this.empty;\n }\n}\nTreeBase.register(VSD, \"VSD\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { styleString } from \"./style\";\nimport \"css/button.css\";\n\nclass Button extends TreeBase {\n label = new Props.String(\"click me\");\n name = new Props.String(\"button\");\n background = new Props.Color(\"\");\n scale = new Props.Float(1);\n\n template() {\n const style = styleString({ backgroundColor: this.props.background });\n const { name, label } = this.props;\n return this.component(\n {},\n html`\n ${label}\n `\n );\n }\n\n getChildren() {\n return [];\n }\n}\nTreeBase.register(Button, \"Button\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport \"css/monitor.css\";\nimport Globals from \"app/globals\";\n\nexport class Monitor extends TreeBase {\n template() {\n const { state, actions: rules } = Globals;\n const s = html`\n \n \n \n \n \n \n \n ${Object.keys(state.values)\n .filter((key) => key.startsWith(\"$\"))\n .map((key) => {\n const value = state.get(key).toString();\n let clamped = value.slice(0, 30);\n if (value.length > clamped.length) {\n clamped += \"...\";\n }\n return html`\n \n \n `;\n })}\n \n
    StateValue
    ${key}${clamped}
    `;\n\n const row = rules.last.data || {};\n const f = html`\n \n \n \n \n \n \n \n ${Object.keys(row).map((key) => {\n const value = row[key];\n return html`\n \n \n `;\n })}\n \n
    FieldValue
    #${key}${value}
    `;\n\n return html` {\n state.clear();\n rules.configure();\n }}\n >\n Clear state\n \n
    ${s}${f}
    `;\n }\n}\nTreeBase.register(Monitor, \"Monitor\");\n","import { strip } from \"./display\";\nimport { TreeBase } from \"./treebase\";\nimport { html } from \"uhtml\";\nimport Globals from \"app/globals\";\nimport * as Props from \"./props\";\n\nclass Speech extends TreeBase {\n stateName = new Props.String(\"$Speak\");\n voiceURI = new Props.Voice(\"\", { label: \"Voice\" });\n pitch = new Props.Float(1);\n rate = new Props.Float(1);\n volume = new Props.Float(1);\n\n async speak() {\n const { state } = Globals;\n const { stateName, voiceURI, pitch, rate, volume } = this.props;\n const message = strip(state.get(stateName));\n const voices = await getVoices();\n const voice =\n voiceURI && voices.find((voice) => voice.voiceURI == voiceURI);\n const utterance = new SpeechSynthesisUtterance(message);\n if (voice) {\n utterance.voice = voice;\n utterance.lang = voice.lang;\n }\n utterance.pitch = pitch;\n utterance.rate = rate;\n utterance.volume = volume;\n speechSynthesis.cancel();\n speechSynthesis.speak(utterance);\n }\n\n template() {\n const { stateName } = this.props;\n const { state } = Globals;\n if (state.hasBeenUpdated(stateName)) {\n this.speak();\n }\n return this.empty;\n }\n\n // settings() {\n // console.log(\"speech settings\");\n // return html`
    \n // ${this.stateName.input()} ${this.voiceURI.input()} ${this.pitch.input()}\n // ${this.rate.input()} ${this.volume.input()}\n //
    `;\n // }\n}\nTreeBase.register(Speech, \"Speech\");\n\n/** @type{SpeechSynthesisVoice[]} */\nlet voices = [];\n\n/**\n * Promise to return voices\n *\n * @return {Promise} Available voices\n */\nfunction getVoices() {\n return new Promise(function (resolve) {\n // iOS won't fire the voiceschanged event so we have to poll for them\n function f() {\n voices = (voices.length && voices) || speechSynthesis.getVoices();\n if (voices.length) resolve(voices);\n else setTimeout(f, 100);\n }\n f();\n });\n}\n\nclass VoiceSelect extends HTMLSelectElement {\n constructor() {\n super();\n }\n connectedCallback() {\n this.addVoices();\n }\n\n async addVoices() {\n const voices = await getVoices();\n const current = this.getAttribute(\"value\");\n for (const voice of voices) {\n const item = html.node``;\n this.add(/** @type {HTMLOptionElement} */ (item));\n }\n }\n}\ncustomElements.define(\"select-voice\", VoiceSelect, { extends: \"select\" });\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","import { r as replaceTraps, a as reverseTransformCache, u as unwrap, i as instanceOfAny } from './wrap-idb-value.js';\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n if (split) {\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n }\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n if (this.p.length)\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this_1 = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, function (offset) { return _this_1.onmember && _this_1.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.o = StrmOpt.call(this, opts, cb) || {};\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n var _this_2 = this;\n // enables reuse of this method by AsyncDecompress\n var cb = function () { _this_2.ondata.apply(_this_2, arguments); };\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o, cb)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o, cb)\n : new this.Z(this.o, cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n Decompress.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this_1 = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this_1.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this_1.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this_1.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this_1.ondata(err, dat, final);\n _this_1.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this_1 = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this_1.d & 1))\n return;\n _this_1.u.splice(-1, 1);\n _this_1.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this_1 = this;\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this_1 = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this_1 = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this_1.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this_1.k[0] == chks_3 && _this_1.c)\n _this_1.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","const e=(()=>{if(\"undefined\"==typeof self)return!1;if(\"top\"in self&&self!==top)try{top}catch(e){return!1}return\"showOpenFilePicker\"in self})(),t=e?Promise.resolve().then(function(){return l}):Promise.resolve().then(function(){return v});async function n(...e){return(await t).default(...e)}const r=e?Promise.resolve().then(function(){return y}):Promise.resolve().then(function(){return b});async function i(...e){return(await r).default(...e)}const a=e?Promise.resolve().then(function(){return m}):Promise.resolve().then(function(){return k});async function o(...e){return(await a).default(...e)}const s=async e=>{const t=await e.getFile();return t.handle=e,t};var c=async(e=[{}])=>{Array.isArray(e)||(e=[e]);const t=[];e.forEach((e,n)=>{t[n]={description:e.description||\"Files\",accept:{}},e.mimeTypes?e.mimeTypes.map(r=>{t[n].accept[r]=e.extensions||[]}):t[n].accept[\"*/*\"]=e.extensions||[]});const n=await window.showOpenFilePicker({id:e[0].id,startIn:e[0].startIn,types:t,multiple:e[0].multiple||!1,excludeAcceptAllOption:e[0].excludeAcceptAllOption||!1}),r=await Promise.all(n.map(s));return e[0].multiple?r:r[0]},l={__proto__:null,default:c};function u(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+\" is not an object.\"));var t=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:t}})}return u=function(e){this.s=e,this.n=e.next},u.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new u(e)}const p=async(e,t,n=e.name,r)=>{const i=[],a=[];var o,s=!1,c=!1;try{for(var l,d=function(e){var t,n,r,i=2;for(\"undefined\"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);i--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new u(t.call(e));n=\"@@asyncIterator\",r=\"@@iterator\"}throw new TypeError(\"Object is not async iterable\")}(e.values());s=!(l=await d.next()).done;s=!1){const o=l.value,s=`${n}/${o.name}`;\"file\"===o.kind?a.push(o.getFile().then(t=>(t.directoryHandle=e,t.handle=o,Object.defineProperty(t,\"webkitRelativePath\",{configurable:!0,enumerable:!0,get:()=>s})))):\"directory\"!==o.kind||!t||r&&r(o)||i.push(p(o,t,s,r))}}catch(e){c=!0,o=e}finally{try{s&&null!=d.return&&await d.return()}finally{if(c)throw o}}return[...(await Promise.all(i)).flat(),...await Promise.all(a)]};var d=async(e={})=>{e.recursive=e.recursive||!1,e.mode=e.mode||\"read\";const t=await window.showDirectoryPicker({id:e.id,startIn:e.startIn,mode:e.mode});return(await(await t.values()).next()).done?[t]:p(t,e.recursive,void 0,e.skipDirectory)},y={__proto__:null,default:d},f=async(e,t=[{}],n=null,r=!1,i=null)=>{Array.isArray(t)||(t=[t]),t[0].fileName=t[0].fileName||\"Untitled\";const a=[];let o=null;if(e instanceof Blob&&e.type?o=e.type:e.headers&&e.headers.get(\"content-type\")&&(o=e.headers.get(\"content-type\")),t.forEach((e,t)=>{a[t]={description:e.description||\"Files\",accept:{}},e.mimeTypes?(0===t&&o&&e.mimeTypes.push(o),e.mimeTypes.map(n=>{a[t].accept[n]=e.extensions||[]})):o?a[t].accept[o]=e.extensions||[]:a[t].accept[\"*/*\"]=e.extensions||[]}),n)try{await n.getFile()}catch(e){if(n=null,r)throw e}const s=n||await window.showSaveFilePicker({suggestedName:t[0].fileName,id:t[0].id,startIn:t[0].startIn,types:a,excludeAcceptAllOption:t[0].excludeAcceptAllOption||!1});!n&&i&&i(s);const c=await s.createWritable();if(\"stream\"in e){const t=e.stream();return await t.pipeTo(c),s}return\"body\"in e?(await e.body.pipeTo(c),s):(await c.write(await e),await c.close(),s)},m={__proto__:null,default:f},w=async(e=[{}])=>(Array.isArray(e)||(e=[e]),new Promise((t,n)=>{const r=document.createElement(\"input\");r.type=\"file\";const i=[...e.map(e=>e.mimeTypes||[]),...e.map(e=>e.extensions||[])].join();r.multiple=e[0].multiple||!1,r.accept=i||\"\",r.style.display=\"none\",document.body.append(r);const a=e=>{\"function\"==typeof o&&o(),t(e)},o=e[0].legacySetup&&e[0].legacySetup(a,()=>o(n),r),s=()=>{window.removeEventListener(\"focus\",s),r.remove()};r.addEventListener(\"click\",()=>{window.addEventListener(\"focus\",s)}),r.addEventListener(\"change\",()=>{window.removeEventListener(\"focus\",s),r.remove(),a(r.multiple?Array.from(r.files):r.files[0])}),\"showPicker\"in HTMLInputElement.prototype?r.showPicker():r.click()})),v={__proto__:null,default:w},h=async(e=[{}])=>(Array.isArray(e)||(e=[e]),e[0].recursive=e[0].recursive||!1,new Promise((t,n)=>{const r=document.createElement(\"input\");r.type=\"file\",r.webkitdirectory=!0;const i=e=>{\"function\"==typeof a&&a(),t(e)},a=e[0].legacySetup&&e[0].legacySetup(i,()=>a(n),r);r.addEventListener(\"change\",()=>{let t=Array.from(r.files);e[0].recursive?e[0].recursive&&e[0].skipDirectory&&(t=t.filter(t=>t.webkitRelativePath.split(\"/\").every(t=>!e[0].skipDirectory({name:t,kind:\"directory\"})))):t=t.filter(e=>2===e.webkitRelativePath.split(\"/\").length),i(t)}),\"showPicker\"in HTMLInputElement.prototype?r.showPicker():r.click()})),b={__proto__:null,default:h},P=async(e,t={})=>{Array.isArray(t)&&(t=t[0]);const n=document.createElement(\"a\");let r=e;\"body\"in e&&(r=await async function(e,t){const n=e.getReader(),r=new ReadableStream({start:e=>async function t(){return n.read().then(({done:n,value:r})=>{if(!n)return e.enqueue(r),t();e.close()})}()}),i=new Response(r),a=await i.blob();return n.releaseLock(),new Blob([a],{type:t})}(e.body,e.headers.get(\"content-type\"))),n.download=t.fileName||\"Untitled\",n.href=URL.createObjectURL(await r);const i=()=>{\"function\"==typeof a&&a()},a=t.legacySetup&&t.legacySetup(i,()=>a(),n);return n.addEventListener(\"click\",()=>{setTimeout(()=>URL.revokeObjectURL(n.href),3e4),i()}),n.click(),null},k={__proto__:null,default:P};export{i as directoryOpen,h as directoryOpenLegacy,d as directoryOpenModern,n as fileOpen,w as fileOpenLegacy,c as fileOpenModern,o as fileSave,P as fileSaveLegacy,f as fileSaveModern,e as supported};\n","import { openDB } from \"idb/with-async-ittr\";\nimport { zipSync, strToU8, unzipSync, strFromU8 } from \"fflate\";\nimport { fileSave } from \"browser-fs-access\";\nimport Globals from \"./globals\";\n\nconst N_RECORDS_SAVE = 10;\nconst N_RECORDS_MAX = 20;\n\nexport class DB {\n constructor() {\n this.dbPromise = openDB(\"os-dpi\", 4, {\n upgrade(db, oldVersion, newVersion) {\n if (oldVersion && oldVersion < 3) {\n for (const name of [\"store\", \"media\", \"saved\", \"url\"]) {\n try {\n db.deleteObjectStore(name);\n } catch (e) {\n // ignore the error\n }\n }\n } else if (oldVersion == 3) {\n db.deleteObjectStore(\"images\");\n }\n if (oldVersion < 3) {\n let objectStore = db.createObjectStore(\"store\", {\n keyPath: \"id\",\n autoIncrement: true,\n });\n objectStore.createIndex(\"by-name\", \"name\");\n objectStore.createIndex(\"by-name-type\", [\"name\", \"type\"]);\n }\n if (newVersion && newVersion >= 4) {\n db.createObjectStore(\"media\");\n }\n if (oldVersion < 3) {\n // keep track of the name and ETag (if any) of designs that have been saved\n let savedStore = db.createObjectStore(\"saved\", {\n keyPath: \"name\",\n });\n savedStore.createIndex(\"by-etag\", \"etag\");\n // track etags for urls\n db.createObjectStore(\"url\", {\n keyPath: \"url\",\n });\n }\n },\n });\n this.updateListeners = [];\n this.designName = \"\";\n this.fileName = \"\";\n this.fileHandle = null;\n this.fileVersion = 0.0;\n this.fileUid = \"\";\n }\n\n /** set the name for the current design\n * @param {string} name\n */\n setDesignName(name) {\n this.designName = name;\n document.title = name;\n }\n\n /** rename the design\n * @param {string} newName\n */\n async renameDesign(newName) {\n const db = await this.dbPromise;\n newName = await this.uniqueName(newName);\n const tx = db.transaction([\"store\", \"media\", \"saved\"], \"readwrite\");\n const index = tx.objectStore(\"store\").index(\"by-name\");\n for await (const cursor of index.iterate(this.designName)) {\n const record = { ...cursor.value };\n record.name = newName;\n cursor.update(record);\n }\n const mst = tx.objectStore(\"media\");\n for await (const cursor of mst.iterate()) {\n if (cursor && cursor.key[0] == this.designName) {\n const record = { ...cursor.value };\n const key = cursor.key;\n cursor.delete();\n key[0] = newName;\n mst.put(record, key);\n }\n }\n const cursor = await tx.objectStore(\"saved\").openCursor(this.designName);\n if (cursor) {\n cursor.delete();\n }\n await tx.done;\n this.fileHandle = null;\n this.fileName = \"\";\n\n this.notify({ action: \"rename\", name: this.designName, newName });\n this.designName = newName;\n }\n\n /**\n * return list of names of designs in the db\n * @returns {Promise}\n */\n async names() {\n const db = await this.dbPromise;\n const index = db.transaction(\"store\", \"readonly\").store.index(\"by-name\");\n const result = [];\n for await (const cursor of index.iterate(null, \"nextunique\")) {\n result.push(/** @type {string} */ (cursor.key));\n }\n return result;\n }\n\n /**\n * return list of names of saved designs in the db\n * @returns {Promise}\n */\n async saved() {\n const db = await this.dbPromise;\n const result = [];\n for (const key of await db.getAllKeys(\"saved\")) {\n result.push(key.toString());\n }\n return result;\n }\n\n /**\n * Create a unique name for new design\n * @param {string} name - the desired name\n * @returns {Promise}\n */\n async uniqueName(name = \"new\") {\n // strip off any suffix\n name = name.replace(/\\.osdpi$|\\.zip$/, \"\");\n // strip any -number off the end of base\n name = name.replace(/-\\d+$/, \"\") || name;\n // replace characters we don't want with _\n name = name.replaceAll(/[^a-zA-Z0-9]/g, \"_\");\n // replace multiple _ with one\n name = name.replaceAll(/_+/g, \"_\");\n // remove trailing _\n name = name.replace(/_+$/, \"\");\n // remove leading _\n name = name.replace(/^_+/, \"\");\n // if we're left with nothing the call it noname\n name = name || \"noname\";\n const allNames = await this.names();\n if (allNames.indexOf(name) < 0) return name;\n const base = name;\n for (let i = 1; ; i++) {\n const name = `${base}-${i}`;\n if (allNames.indexOf(name) < 0) return name;\n }\n }\n\n /** Return the most recent record for the type\n * @param {string} type\n * @param {any} defaultValue\n * @returns {Promise}\n */\n async read(type, defaultValue = {}) {\n const db = await this.dbPromise;\n const index = db\n .transaction(\"store\", \"readonly\")\n .store.index(\"by-name-type\");\n const cursor = await index.openCursor([this.designName, type], \"prev\");\n if (cursor) {\n const data = cursor.value.data;\n if (\n (Array.isArray(defaultValue) && !Array.isArray(data)) ||\n typeof data != typeof defaultValue\n ) {\n return defaultValue;\n }\n return data;\n }\n return defaultValue;\n }\n\n /**\n * Read all records of the given type\n *\n * @param {string} type\n * @returns {Promise}\n */\n async readAll(type) {\n const db = await this.dbPromise;\n const index = db\n .transaction(\"store\", \"readonly\")\n .store.index(\"by-name-type\");\n const key = [this.designName, type];\n const result = [];\n for await (const cursor of index.iterate(key)) {\n const data = cursor.value.data;\n result.push(data);\n }\n return result;\n }\n\n /** Add a new record\n * @param {string} type\n * @param {Object} data\n */\n async write(type, data) {\n const db = await this.dbPromise;\n // do all this in a transaction\n const tx = db.transaction([\"store\", \"saved\"], \"readwrite\");\n // note that this design has been updated\n await tx.objectStore(\"saved\").delete(this.designName);\n // add the record to the store\n const store = tx.objectStore(\"store\");\n await store.put({ name: this.designName, type, data });\n\n let n_max = N_RECORDS_MAX; // zero to prevent limiting\n let n_save = N_RECORDS_SAVE;\n if (type == \"content\") {\n n_max = n_save = 1; // only save 1 content record\n } else if (type == \"log\") {\n n_max = n_save = 0; // don't limit log records\n }\n\n /* Only keep the last few records per type */\n const index = store.index(\"by-name-type\");\n const key = [this.designName, type];\n if (n_max > 0) {\n // count how many we have\n let count = await index.count(key);\n if (count > n_max) {\n // get the number to delete\n let toDelete = count - n_save;\n // we're getting them in order so this will delete the oldest ones\n for await (const cursor of index.iterate(key)) {\n if (--toDelete <= 0) break;\n cursor.delete();\n }\n }\n }\n await tx.done;\n\n this.notify({ action: \"update\", name: this.designName });\n }\n\n /**\n * delete records of this type\n *\n * @param {string} type\n * @returns {Promise}\n */\n async clear(type) {\n const db = await this.dbPromise;\n const tx = db.transaction(\"store\", \"readwrite\");\n const index = tx.store.index(\"by-name-type\");\n for await (const cursor of index.iterate([this.designName, type])) {\n cursor.delete();\n }\n await tx.done;\n }\n\n /** Undo by deleting the most recent record\n * @param {string} type\n */\n async undo(type) {\n if (type == \"content\") return;\n const db = await this.dbPromise;\n const index = db\n .transaction(\"store\", \"readwrite\")\n .store.index(\"by-name-type\");\n const cursor = await index.openCursor([this.designName, type], \"prev\");\n if (cursor) await cursor.delete();\n await db.delete(\"saved\", this.designName);\n this.notify({ action: \"update\", name: this.designName });\n }\n\n /** Read a design from a local file\n * @param {import(\"browser-fs-access\").FileWithHandle} file\n */\n async readDesignFromFile(file) {\n // keep the handle so we can save to it later\n this.fileHandle = file.handle;\n return this.readDesignFromBlob(file, file.name);\n }\n\n /** Read a design from a URL\n * @param {string} url\n */\n async readDesignFromURL(url) {\n const db = await this.dbPromise;\n // have we seen this url before?\n const urlRecord = await db.get(\"url\", url);\n /** @type {HeadersInit} */\n const headers = {}; // for the fetch\n let name = \"\";\n if (urlRecord) {\n /** @type {string} */\n const etag = urlRecord.etag;\n // do we have any saved designs with this etag?\n const savedKey = await db.getKeyFromIndex(\"saved\", \"by-etag\", etag);\n if (savedKey) {\n // yes we have a previously saved design from this url\n // set the headers to check if it has changed\n headers[\"If-None-Match\"] = etag;\n name = savedKey.toString();\n }\n }\n\n const response = await fetch(url, { headers });\n if (response.status == 304) {\n // we already have it\n this.designName = name;\n return;\n }\n if (!response.ok) {\n throw new Error(`Fetching the URL (${url}) failed: ${response.status}`);\n }\n const etag = response.headers.get(\"ETag\") || \"\";\n await db.put(\"url\", { url, etag });\n\n const urlParts = new URL(url, window.location.origin);\n const pathParts = urlParts.pathname.split(\"/\");\n if (\n pathParts.length > 0 &&\n pathParts[pathParts.length - 1].endsWith(\".osdpi\")\n ) {\n name = pathParts[pathParts.length - 1];\n } else {\n throw new Error(`Design files should have .osdpi suffix`);\n }\n\n const blob = await response.blob();\n // parse the URL\n return this.readDesignFromBlob(blob, name, etag);\n }\n\n /** Read a design from a zip file\n * @param {Blob} blob\n * @param {string} filename\n * @param {string} etag\n */\n async readDesignFromBlob(blob, filename, etag = \"none\") {\n const db = await this.dbPromise;\n this.fileName = filename;\n\n const zippedBuf = await readAsArrayBuffer(blob);\n const zippedArray = new Uint8Array(zippedBuf);\n const unzipped = unzipSync(zippedArray);\n\n // normalize the fileName to make the design name\n let name = this.fileName;\n // make sure it is unique\n name = await this.uniqueName(name);\n\n this.designName = name;\n\n for (const fname in unzipped) {\n const mimetype = mime(fname) || \"application/octet-stream\";\n if (mimetype == \"application/json\") {\n const text = strFromU8(unzipped[fname]);\n let obj = {};\n try {\n obj = JSON.parse(text);\n } catch (e) {\n obj = {};\n console.trace(e);\n }\n const type = fname.split(\".\")[0];\n await this.write(type, obj);\n } else if (\n mimetype.startsWith(\"image\") ||\n mimetype.startsWith(\"audio\") ||\n mimetype.startsWith(\"video\")\n ) {\n const blob = new Blob([unzipped[fname]], {\n type: mimetype,\n });\n await db.put(\n \"media\",\n {\n name: fname,\n content: blob,\n },\n [name, fname],\n );\n }\n }\n await db.put(\"saved\", { name: this.designName, etag });\n this.notify({ action: \"update\", name: this.designName });\n return;\n }\n\n // do this part async to avoid file picker timeout\n async convertDesignToBlob() {\n const db = await this.dbPromise;\n // collect the parts of the design\n const layout = Globals.tree.toObject();\n const actions = Globals.actions.toObject();\n const content = await this.read(\"content\");\n const method = Globals.method.toObject();\n const pattern = Globals.patterns.toObject();\n const cues = Globals.cues.toObject();\n\n const zipargs = {\n \"layout.json\": strToU8(JSON.stringify(layout)),\n \"actions.json\": strToU8(JSON.stringify(actions)),\n \"content.json\": strToU8(JSON.stringify(content)),\n \"method.json\": strToU8(JSON.stringify(method)),\n \"pattern.json\": strToU8(JSON.stringify(pattern)),\n \"cues.json\": strToU8(JSON.stringify(cues)),\n };\n\n const mediaKeys = (await db.getAllKeys(\"media\")).filter((pair) =>\n Object.values(pair).includes(this.designName),\n );\n\n // add the encoded image to the zipargs\n for (const key of mediaKeys) {\n const record = await db.get(\"media\", key);\n if (record) {\n const contentBuf = await record.content.arrayBuffer();\n const contentArray = new Uint8Array(contentBuf);\n zipargs[key[1]] = contentArray;\n }\n }\n\n // zip it\n const zip = zipSync(zipargs);\n // create a blob from the zipped result\n const blob = new Blob([zip], { type: \"application/octet-stream\" });\n return blob;\n }\n\n /** Save a design into a zip file\n */\n async saveDesign() {\n const db = await this.dbPromise;\n\n const options = {\n fileName: this.fileName || this.designName + \".osdpi\",\n extensions: [\".osdpi\", \".zip\"],\n id: \"osdpi\",\n };\n try {\n await fileSave(this.convertDesignToBlob(), options, this.fileHandle);\n await db.put(\"saved\", { name: this.designName });\n } catch (error) {\n console.error(\"Export failed\");\n console.error(error);\n }\n }\n\n /** Unload a design from the database\n * @param {string} name - the name of the design to delete\n */\n async unload(name) {\n const db = await this.dbPromise;\n const tx = db.transaction(\"store\", \"readwrite\");\n const index = tx.store.index(\"by-name\");\n for await (const cursor of index.iterate(name)) {\n cursor.delete();\n }\n await tx.done;\n // delete media\n const txm = db.transaction(\"media\", \"readwrite\");\n const mediaKeys = (await txm.store.getAllKeys()).filter(\n (pair) => Object.values(pair)[0] == name,\n );\n\n // delete the media\n for (const key of mediaKeys) {\n await txm.store.delete(key);\n }\n await txm.done;\n await db.delete(\"saved\", name);\n this.notify({ action: \"unload\", name });\n }\n\n /** Return an image from the database\n * @param {string} name\n * @returns {Promise}\n */\n async getImage(name) {\n const db = await this.dbPromise;\n const record = await db.get(\"media\", [this.designName, name]);\n const img = new Image();\n if (record) {\n img.src = URL.createObjectURL(record.content);\n }\n img.title = record.name;\n return img;\n }\n\n /** Return an audio file from the database\n * @param {string} name\n * @returns {Promise}\n */\n async getAudio(name) {\n const db = await this.dbPromise;\n const record = await db.get(\"media\", [this.designName, name]);\n const audio = new Audio();\n if (record) {\n audio.src = URL.createObjectURL(record.content);\n }\n return audio;\n }\n\n /** Return an image URL from the database\n * @param {string} name\n * @returns {Promise}\n */\n async getMediaURL(name) {\n const db = await this.dbPromise;\n const record = await db.get(\"media\", [this.designName, name]);\n if (record) return URL.createObjectURL(record.content);\n else return \"\";\n }\n\n /** Add media to the database\n * @param {Blob} blob\n * @param {string} name\n */\n async addMedia(blob, name) {\n const db = await this.dbPromise;\n return await db.put(\n \"media\",\n {\n name: name,\n content: blob,\n },\n [this.designName, name],\n );\n }\n\n /** List media entries from a given store\n * @returns {Promise}\n * */\n async listMedia() {\n const db = await this.dbPromise;\n const keys = (await db.getAllKeys(\"media\")).filter(\n (key) => key[0] == this.designName, //only show resources from this design\n );\n const result = [];\n for (const key of keys) {\n result.push(key[1].toString());\n }\n return result;\n }\n\n /** delete media files\n * @param {string[]} names\n */\n async deleteMedia(...names) {\n const db = await this.dbPromise;\n const tx = db.transaction([\"media\", \"saved\"], \"readwrite\");\n const mst = tx.objectStore(\"media\");\n for await (const cursor of mst.iterate()) {\n if (\n cursor &&\n cursor.key[0] == this.designName &&\n names.includes(cursor.key[1])\n ) {\n cursor.delete();\n }\n }\n const cursor = await tx.objectStore(\"saved\").openCursor(this.designName);\n if (cursor) {\n cursor.delete();\n }\n await tx.done;\n }\n\n /** Listen for database update\n * @param {(message: UpdateNotification) =>void} callback\n */\n addUpdateListener(callback) {\n this.updateListeners.push(callback);\n }\n\n /** Notify listeners of database update\n * @param {UpdateNotification} message\n */\n notify(message) {\n for (const listener of this.updateListeners) {\n listener(message);\n }\n }\n}\n\nexport default new DB();\n\n/** Convert a blob into an array buffer\n * @param {Blob} blob */\nfunction readAsArrayBuffer(blob) {\n return new Promise((resolve) => {\n const fr = new FileReader();\n fr.onloadend = () => fr.result instanceof ArrayBuffer && resolve(fr.result);\n fr.readAsArrayBuffer(blob);\n });\n}\n\nconst mimetypes = {\n \".json\": \"application/json\",\n \".aac\": \"audio/aac\",\n \".mp3\": \"audio/mpeg\",\n \".mp4\": \"audio/mp4\",\n \".oga\": \"audio/ogg\",\n \".wav\": \"audio/wav\",\n \".weba\": \"audio/webm\",\n \".webm\": \"video/webm\",\n \".avif\": \"image/avif\",\n \".bmp\": \"image/bmp\",\n \".gif\": \"image/gif\",\n \".jpeg\": \"image/jpeg\",\n \".jpg\": \"image/jpeg\",\n \".jfif\": \"image/jpeg\",\n \".png\": \"image/png\",\n \".svg\": \"image/svg+xml\",\n \".tif\": \"image/tiff\",\n \".tiff\": \"image/tiff\",\n \".webp\": \"image/webp\",\n};\n/** Map filenames to mimetypes for unpacking the zip file\n * @param {string} fname\n */\nfunction mime(fname) {\n const extension = /\\.[-a-zA-Z0-9]+$/.exec(fname);\n if (!extension) return false;\n return mimetypes[extension] || false;\n}\n","import { strip } from \"./display\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport db from \"app/db\";\n\nimport Globals from \"app/globals\";\n\nclass Audio extends TreeBase {\n stateName = new Props.String(\"$Audio\");\n\n async playAudio() {\n const { state } = Globals;\n const { stateName } = this.props;\n const fileName = strip(state.get(stateName) || \"\");\n (await db.getAudio(fileName)).play();\n }\n\n template() {\n const { stateName } = this.props;\n const { state } = Globals;\n if (state.hasBeenUpdated(stateName)) {\n this.playAudio();\n }\n return this.empty;\n }\n}\nTreeBase.register(Audio, \"Audio\");\n","import \"css/tabcontrol.css\";\nimport { html } from \"uhtml\";\nimport Globals from \"app/globals\";\nimport { callAfterRender } from \"app/render\";\nimport { TreeBase } from \"./treebase\";\nimport { TabControl, TabPanel } from \"./tabcontrol\";\nimport db from \"app/db\";\n\n/**\n * Customize the TabControl for use in the Designer interface\n */\nexport class Designer extends TabControl {\n allowDelete = false;\n\n /** @type {DesignerPanel | undefined} */\n currentPanel = undefined;\n\n hint = \"T\";\n\n panelTemplate() {\n return this.currentPanel?.settings() || this.empty;\n }\n\n template() {\n return html`\n ${super.template()}\n `;\n }\n\n /**\n * Wrap the body of a component\n * Include the tabcontrol class so we inherit its properties\n *\n * @param {Object} attrs\n * @param {Hole} body\n * @returns {Hole}\n */\n component(attrs, body) {\n const { classes } = attrs;\n classes.push(\"tabcontrol\");\n attrs = { ...attrs, classes };\n return super.component(attrs, body);\n }\n\n /**\n * @param {string} tabName\n */\n switchTab(tabName) {\n callAfterRender(() => this.restoreFocus());\n super.switchTab(tabName);\n }\n\n /**\n * capture focusin events so we can remember what was focused last\n * @param {FocusEvent} event\n */\n focusin = (event) => {\n if (!(event.target instanceof HTMLElement)) return;\n if (event.target.hasAttribute(\"aria-selected\")) return;\n if (!this.currentPanel) return;\n const panel = document.getElementById(this.currentPanel.id);\n if (!panel) return;\n for (const element of panel.querySelectorAll(\"[aria-selected]\")) {\n element.removeAttribute(\"aria-selected\");\n }\n const id = event.target.closest(\"[id]\")?.id || \"\";\n this.currentPanel.lastFocused = id;\n event.target.setAttribute(\"aria-selected\", \"true\");\n\n if (this.currentPanel.name.value == \"Layout\") {\n this.currentPanel.highlight();\n }\n };\n\n /** @returns {TreeBase | null} */\n get selectedComponent() {\n // Figure out which tab is active\n const { designer } = Globals;\n const panel = designer.currentPanel;\n\n // Ask that tab which component is focused\n if (!panel?.lastFocused) {\n console.log(\"no lastFocused\");\n return null;\n }\n const component = TreeBase.componentFromId(panel.lastFocused);\n if (!component) {\n console.log(\"no component\");\n return null;\n }\n return component;\n }\n\n restoreFocus() {\n if (this.currentPanel) {\n if (this.currentPanel.lastFocused) {\n let targetId = this.currentPanel.lastFocused;\n let elem = document.getElementById(targetId);\n if (!elem) {\n // perhaps this one is embeded, look for something that starts with it\n const m = targetId.match(/^TreeBase-\\d+/);\n if (m) {\n const prefix = m[0];\n elem = document.querySelector(`[id^=${prefix}]`);\n }\n }\n // console.log(\n // \"restore focus\",\n // elem,\n // this.currentPanel.lastFocused,\n // this.currentPanel\n // );\n if (elem) elem.focus();\n } else {\n // console.log(\"restoreFocus else path\");\n const panelNode = document.getElementById(this.currentPanel.id);\n if (panelNode) {\n const focusable = /** @type {HTMLElement} */ (\n panelNode.querySelector(\n \"button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), \" +\n 'textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled]), ' +\n \"summary:not(:disabled)\",\n )\n );\n\n if (focusable) {\n focusable.focus();\n // console.log(\"send focus to element in panel\");\n } else {\n panelNode.focus();\n // console.log(\"send focus to empty panel\");\n }\n }\n }\n }\n }\n\n /**\n * @param {KeyboardEvent} event\n */\n keyHandler = (event) => {\n if (!this.currentPanel) return;\n if (\n event.target instanceof HTMLButtonElement &&\n event.target.matches(\"#designer .tabcontrol .buttons button\")\n ) {\n this.tabButtonKeyHandler(event);\n } else {\n const panel = document.getElementById(this.currentPanel.id);\n if (\n panel &&\n event.target instanceof HTMLElement &&\n panel.contains(event.target)\n ) {\n this.panelKeyHandler(event);\n }\n }\n };\n /**\n * @param {KeyboardEvent} event\n */\n panelKeyHandler(event) {\n if (event.target instanceof HTMLTextAreaElement) return;\n if (event.key != \"ArrowDown\" && event.key != \"ArrowUp\") return;\n if (event.shiftKey) {\n // move the component\n const component = Globals.designer.selectedComponent;\n if (!component) return;\n component.moveUpDown(event.key == \"ArrowUp\");\n callAfterRender(() => Globals.designer.restoreFocus());\n Globals.state.update();\n } else {\n // get the components on this panel\n // todo expand this to all components\n const components = [...document.querySelectorAll(\".panels .settings\")];\n // determine which one contains the focus\n const focusedComponent = document.querySelector(\n '.panels .settings:has([aria-selected=\"true\"]):not(:has(.settings [aria-selected=\"true\"]))',\n );\n console.log({ event, focusedComponent });\n if (!focusedComponent) return;\n // get its index\n const index = components.indexOf(focusedComponent);\n // get the next index\n const nextIndex = Math.min(\n components.length - 1,\n Math.max(0, index + (event.key == \"ArrowUp\" ? -1 : 1)),\n );\n if (nextIndex != index) {\n // focus on the first focusable in the next component\n const focusable = /** @type {HTMLElement} */ (\n components[nextIndex].querySelector(\n \"button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), \" +\n 'textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled]), ' +\n \"summary:not(:disabled)\",\n )\n );\n if (focusable) {\n focusable.focus();\n }\n }\n }\n }\n\n /**\n * @param {KeyboardEvent} event\n */\n tabButtonKeyHandler({ key }) {\n const tabButtons = /** @type {HTMLButtonElement[]} */ ([\n ...document.querySelectorAll(\"#designer .tabcontrol .buttons button\"),\n ]);\n const focused = /** @type {HTMLButtonElement} */ (\n document.querySelector(\"#designer .tabcontrol .buttons button:focus\")\n );\n if (key == \"Escape\") {\n Globals.designer.restoreFocus();\n } else if (key.startsWith(\"Arrow\")) {\n const index = tabButtons.indexOf(focused);\n const step = key == \"ArrowUp\" || key == \"ArrowLeft\" ? -1 : 1;\n let nextIndex = (index + step + tabButtons.length) % tabButtons.length;\n tabButtons[nextIndex].focus();\n } else if (key == \"Home\") {\n tabButtons[0].focus();\n } else if (key == \"End\") {\n tabButtons[tabButtons.length - 1].focus();\n } else if (\n key.length == 1 &&\n ((key >= \"a\" && key <= \"z\") || (key >= \"A\" && key <= \"Z\"))\n ) {\n const index = tabButtons.indexOf(focused);\n for (let i = 1; i < tabButtons.length; i++) {\n const j = (index + i) % tabButtons.length;\n if (tabButtons[j].innerText.toLowerCase().startsWith(key)) {\n tabButtons[j].focus();\n break;\n }\n }\n }\n }\n\n /** Tweak the focus behavior in the designer\n * I want clicking on blank space to focus the nearest focusable element\n\n * @param {KeyboardEvent} event\n */\n designerClick = (event) => {\n // return if target is not an HTMLElement\n if (!(event.target instanceof HTMLElement)) return;\n\n const panel = document.querySelector(\"#designer .designer div.panels\");\n // return if not in designer\n if (!panel) return;\n // return if click is not inside the panel\n if (!panel.contains(event.target)) return;\n // check for background elements\n if (\n event.target instanceof HTMLDivElement ||\n event.target instanceof HTMLFieldSetElement ||\n event.target instanceof HTMLTableRowElement ||\n event.target instanceof HTMLTableCellElement ||\n event.target instanceof HTMLDetailsElement\n ) {\n if (event.target.matches('[tabindex=\"0\"]')) return;\n /** @type {HTMLElement | null} */\n let target = event.target;\n while (target) {\n const focusable = /** @type {HTMLElement} */ (\n target.querySelector(\n \"button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), \" +\n 'textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled]), ' +\n \"summary:not(:disabled)\",\n )\n );\n if (focusable) {\n focusable.focus();\n break;\n }\n target = target.parentElement;\n }\n }\n };\n}\nTreeBase.register(Designer, \"Designer\");\n\nexport class DesignerPanel extends TabPanel {\n // where to store in the db\n static tableName = \"\";\n // default value if it isn't found\n static defaultValue = {};\n\n /** @returns {string} */\n get staticTableName() {\n // @ts-expect-error\n return this.constructor.tableName;\n }\n\n /** @type {string[]} */\n allowedChildren = [];\n\n /**\n * Load a panel from the database.\n *\n * I don't know why I have to pass the class as a parameter to get the types\n * to work. Why can't I refer to this in the static method which should be\n * the class.\n *\n * @template {DesignerPanel} T\n * @param {new()=>T} expected\n * @returns {Promise}\n */\n static async load(expected) {\n let obj = await db.read(this.tableName, this.defaultValue);\n obj = this.upgrade(obj);\n const result = this.fromObject(obj);\n if (result instanceof expected) {\n result.configure();\n return result;\n }\n // I don't think this happens\n return this.create(expected);\n }\n\n /**\n * An opportunity to upgrade the format if needed\n * @param {any} obj\n * @returns {Object}\n */\n static upgrade(obj) {\n return obj;\n }\n\n configure() {}\n\n onUpdate() {\n const tableName = this.staticTableName;\n if (tableName) {\n db.write(tableName, this.toObject());\n Globals.state.update();\n }\n }\n\n async undo() {\n const tableName = this.staticTableName;\n if (tableName) {\n await db.undo(tableName);\n Globals.restart();\n }\n }\n}\n","import { html, render } from \"uhtml\";\nimport \"css/wait.css\";\n\n/**\n * Handle displaying a \"please wait\" message and error reporting for\n * async functions that may take a while or throw errors\n * @template T\n * @param {Promise} promise\n * @param {string} message\n * @returns {Promise}\n */\nexport default async function wait(promise, message = \"Please wait\") {\n const div = document.createElement(\"div\");\n div.id = \"PleaseWait\";\n document.body.appendChild(div);\n const timer = window.setTimeout(() => {\n render(div, html`

    ${message}

    `);\n }, 500);\n try {\n const result = await promise;\n clearTimeout(timer);\n div.remove();\n return result;\n } catch (e) {\n console.trace(\"wait error\");\n clearTimeout(timer);\n return new Promise((resolve) => {\n render(\n div,\n html`
    \n

    ${e.message}

    \n {\n div.remove();\n resolve(e.message);\n }}\n >\n OK\n \n
    `\n );\n });\n }\n}\n","import { html, render } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport { DesignerPanel } from \"./designer\";\nimport * as Props from \"./props\";\nimport db from \"app/db\";\nimport \"css/content.css\";\nimport pleaseWait from \"./wait\";\nimport Globals from \"app/globals\";\n\n/** @param {Blob} blob */\nexport async function readSheetFromBlob(blob) {\n const XLSX = await import(\"xlsx\");\n const data = await blob.arrayBuffer();\n const workbook = XLSX.read(data, { codepage: 65001 });\n /** @type {Rows} */\n const dataArray = [];\n for (const sheetName of workbook.SheetNames) {\n const sheet = workbook.Sheets[sheetName];\n const ref = sheet[\"!ref\"];\n if (!ref) continue;\n const range = XLSX.utils.decode_range(ref);\n const names = [];\n const handlers = [];\n const validColumns = [];\n // process the header and choose a handler for each column\n for (let c = range.s.c; c <= range.e.c; c++) {\n let columnName = sheet[XLSX.utils.encode_cell({ r: 0, c })]?.v;\n if (typeof columnName !== \"string\" || !columnName) {\n continue;\n }\n columnName = columnName.toLowerCase();\n names.push(columnName.trim(\" \"));\n validColumns.push(c);\n switch (columnName) {\n case \"row\":\n case \"column\":\n case \"page\":\n handlers.push(\"number\");\n break;\n default:\n handlers.push(\"string\");\n break;\n }\n }\n // Process the rows\n for (let r = range.s.r + 1; r <= range.e.r; r++) {\n /** @type {Row} */\n const row = { sheetName };\n for (let i = 0; i < validColumns.length; i++) {\n /** @type {string} */\n const name = names[i];\n const c = validColumns[i];\n let value = sheet[XLSX.utils.encode_cell({ r, c })]?.v;\n switch (handlers[i]) {\n case \"string\":\n if (typeof value === \"undefined\") {\n value = \"\";\n }\n if (typeof value !== \"string\") {\n value = value.toString(10);\n }\n if (value && typeof value === \"string\") {\n row[name] = value;\n }\n break;\n case \"number\":\n if (typeof value === \"number\") {\n row[name] = Math.floor(value);\n } else if (value && typeof value === \"string\") {\n value = parseInt(value, 10);\n if (isNaN(value)) {\n value = 0;\n }\n row[name] = value;\n }\n break;\n }\n }\n if (Object.keys(row).length > 1) dataArray.push(row);\n }\n }\n return dataArray;\n}\n\n/** Save the content as a spreadsheet\n * @param {string} name\n * @param {Row[]} rows\n * @param {string} type\n */\nexport async function saveContent(name, rows, type) {\n const XLSX = await pleaseWait(import(\"xlsx\"));\n const sheetNames = new Set(rows.map((row) => row.sheetName || \"sheet1\"));\n const workbook = XLSX.utils.book_new();\n for (const sheetName of sheetNames) {\n let sheetRows = rows.filter(\n (row) => sheetName == (row.sheetName || \"sheet1\")\n );\n if (type != \"csv\") {\n sheetRows = sheetRows.map((row) => {\n const { sheetName, ...rest } = row;\n return rest;\n });\n }\n const worksheet = XLSX.utils.json_to_sheet(sheetRows);\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);\n }\n XLSX.writeFileXLSX(workbook, `${name}.${type}`);\n}\n\nexport class Content extends DesignerPanel {\n name = new Props.String(\"Content\");\n\n lastFocused = this.id;\n\n /** Delete the media files that are checked */\n async deleteSelected() {\n // list the names that are checked\n const toDelete = [\n ...document.querySelectorAll(\n \"#ContentMedia input[type=checkbox]:checked\"\n ),\n ].map((element) => {\n // clear the checks as we go\n const checkbox = /** @type{HTMLInputElement} */ (element);\n checkbox.checked = false;\n return checkbox.name;\n });\n const selectAll = /** @type {HTMLInputElement} */ (\n document.getElementById(\"ContentSelectAll\")\n );\n if (selectAll) selectAll.checked = false;\n // delete them\n await pleaseWait(db.deleteMedia(...toDelete));\n // refresh the page\n Globals.state.update();\n }\n\n /** Check or uncheck all the media file checkboxes */\n selectAll({ target }) {\n for (const element of document.querySelectorAll(\n '#ContentMedia input[type=\"checkbox\"]'\n )) {\n const checkbox = /** @type {HTMLInputElement} */ (element);\n checkbox.checked = target.checked;\n }\n }\n\n settings() {\n const data = Globals.data;\n return html`
    \n

    Content

    \n

    \n ${data.allrows.length} rows with these fields:\n ${String(data.allFields).replaceAll(\",\", \", \")}\n

    \n

    Media files

    \n \n Select All\n
      \n ${(/** @type {HTMLElement} */ comment) => {\n /* I'm experimenting here. db.listImages() is asynchronous but I don't want\n * to convert this entire application to the async version of uhtml. Can I\n * inject content asynchronously using the callback mechanism he provides?\n * As I understand it, when an interpolation is a function he places a\n * comment node in the output and passes it to the function.\n * I am using the comment node to find the parent container, then rendering\n * the asynchronous content when it becomes available being careful to keep\n * the comment node in the output. It seems to work, is it safe?\n */\n db.listMedia().then((names) => {\n const list = names.map(\n (name) =>\n html`
    1. \n \n
    2. `\n );\n if (comment.parentNode)\n render(comment.parentNode, html`${comment}${list}`);\n });\n }}\n
    \n
    `;\n }\n}\nTreeBase.register(Content, \"Content\");\n","import { html } from \"uhtml\";\nimport { saveContent } from \"./content\";\nimport { TreeBase } from \"./treebase\";\nimport db from \"app/db\";\nimport * as Props from \"./props\";\nimport Globals from \"app/globals\";\nimport { access } from \"app/eval\";\nimport \"css/logger.css\";\n\nexport class Logger extends TreeBase {\n // name = new Props.String(\"Log\");\n stateName = new Props.String(\"$Log\");\n logUntil = new Props.ADate();\n\n // I expect a string like #field1 $state1 $state2 #field3\n logThese = new Props.TextArea(\"\", {\n validate: this.validate,\n placeholder: \"Enter state and field names to log\",\n });\n\n // I expect a string listing event names to log\n logTheseEvents = new Props.TextArea(\"\", {\n validate: this.validateEventNames,\n placeholder: \"Enter names of events to log\",\n });\n\n /**\n * @param {string} s\n * @returns {string}\n */\n validate(s) {\n return /^(?:[#$]\\w+\\s*)*$/.test(s) ? \"\" : \"Invalid input\";\n }\n\n /**\n * Check for strings that look like event names\n *\n * @param {string} s\n * @returns {string}\n */\n validateEventNames(s) {\n return /^(?:\\w+\\s*)*$/.test(s) ? \"\" : \"Invalid input\";\n }\n\n template() {\n const { state, actions } = Globals;\n const { stateName, logUntil, logThese } = this.props;\n const logging =\n !!state.get(stateName) && logUntil && new Date() < new Date(logUntil);\n const getValue = access(state, actions.last.data);\n\n if (logging) {\n const names = logThese.split(/\\s+/);\n const record = {};\n for (const name of names) {\n const value = getValue(name);\n if (value) {\n record[name] = value;\n }\n }\n this.log(record);\n }\n\n return html``;\n }\n\n /** Log a record to the database\n * @param {Object} record\n * @returns {void}\n */\n log(record) {\n const DateTime = new Date().toLocaleDateString(\"en-US\", {\n fractionalSecondDigits: 2,\n hour12: false,\n hour: \"numeric\",\n minute: \"numeric\",\n second: \"numeric\",\n });\n record = { DateTime, ...record };\n db.write(\"log\", record);\n }\n\n init() {\n this.onUpdate();\n }\n\n /** @type {Set} */\n listeners = new Set();\n onUpdate() {\n const UI = document.getElementById(\"UI\");\n if (!UI) return;\n // cancel any listeners that are currently active\n for (const eventName of this.listeners) {\n UI.removeEventListener(eventName, this);\n }\n this.listeners.clear();\n\n // listen for each of the listed events\n for (const match of this.logTheseEvents.value.matchAll(/\\w+/g)) {\n UI.addEventListener(match[0], this);\n this.listeners.add(match[0]);\n }\n }\n\n typesToInclude = new Set([\"boolean\", \"number\", \"string\"]);\n propsToExclude = new Set([\n \"isTrusted\",\n \"bubbles\",\n \"cancelBubble\",\n \"cancelable\",\n \"defaultPrevented\",\n \"eventPhase\",\n \"returnValue\",\n \"timeStamp\",\n ]);\n /**\n * Make this object a listener\n * @param {Event} e\n */\n handleEvent(e) {\n // grab all the fields of the event that are simple types\n const record = {};\n for (const prop in e) {\n // skip all upper case and _\n if (/^[A-Z_]+$/.test(prop)) continue;\n const value = e[prop];\n if (this.propsToExclude.has(prop)) continue;\n if (!this.typesToInclude.has(typeof value)) continue;\n record[prop] = value;\n }\n this.log(record);\n }\n}\nTreeBase.register(Logger, \"Logger\");\n\nexport async function SaveLogs() {\n let toSave = await db.readAll(\"log\");\n if (toSave.length > 0) {\n await saveContent(\"log\", toSave, \"xlsx\");\n } else {\n Globals.error.report(\"No log records to be saved.\");\n Globals.state.update();\n }\n}\n\nexport async function ClearLogs() {\n await db.clear(\"log\");\n}\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport { DesignerPanel } from \"./designer\";\nimport \"css/layout.css\";\nimport db from \"app/db\";\nimport Globals from \"app/globals\";\nimport { TabPanel } from \"./tabcontrol\";\nimport { callAfterRender } from \"app/render\";\nimport { ModalDialog } from \"./modal-dialog\";\n\nconst emptyPage = {\n className: \"Page\",\n props: {},\n children: [\n {\n className: \"Speech\",\n props: {},\n children: [],\n },\n ],\n};\n\n// map old names to new for the transition\nconst typeToClassName = {\n audio: \"Audio\",\n stack: \"Stack\",\n page: \"Page\",\n grid: \"Grid\",\n speech: \"Speech\",\n button: \"Button\",\n logger: \"Logger\",\n gap: \"Gap\",\n option: \"Option\",\n radio: \"Radio\",\n vsd: \"VSD\",\n \"modal dialog\": \"ModalDialog\",\n \"tab control\": \"TabControl\",\n \"tab panel\": \"TabPanel\",\n display: \"Display\",\n};\n\nexport class Layout extends DesignerPanel {\n allowDelete = false;\n\n static tableName = \"layout\";\n static defaultValue = emptyPage;\n\n settings() {\n return html` {\n const { key, ctrlKey } = event;\n if ((key == \"H\" || key == \"h\") && ctrlKey) {\n event.preventDefault();\n this.highlight();\n }\n }}\n >\n ${this.children[0].settings()}\n `;\n }\n\n allowedChildren = [\"Page\"];\n\n /**\n * An opportunity to upgrade the format if needed\n * @param {any} obj\n * @returns {Object}\n */\n static upgrade(obj) {\n /** @param {Object} obj */\n function oldToNew(obj) {\n if (\"type\" in obj) {\n // console.log(\"upgrade\", obj);\n // convert to new representation\n const newObj = {\n children: obj.children.map((/** @type {Object} */ child) =>\n oldToNew(child)\n ),\n };\n if (\"filters\" in obj.props) {\n for (const filter of obj.props.filters) {\n newObj.children.push({\n className: \"GridFilter\",\n props: { ...filter },\n children: [],\n });\n }\n }\n newObj.className = typeToClassName[obj.type];\n const { filters, ...props } = obj.props;\n newObj.props = props;\n obj = newObj;\n // console.log(\"upgraded\", obj);\n }\n return obj;\n }\n obj = oldToNew(obj);\n // upgrade from the old format\n return {\n className: \"Layout\",\n props: { name: \"Layout\" },\n children: [obj],\n };\n }\n\n toObject() {\n return this.children[0].toObject();\n }\n\n /** Update the state\n */\n onUpdate() {\n db.write(\"layout\", this.children[0].toObject());\n Globals.state.update();\n }\n\n /** Allow highlighting the current component in the UI\n */\n highlight() {\n // clear any existing highlight\n for (const element of document.querySelectorAll(\"#UI [highlight]\")) {\n element.removeAttribute(\"highlight\");\n }\n // find the selection in the panel\n let selected = document.querySelector(\"[aria-selected]\");\n if (!selected) return;\n selected = selected.closest(\"[id]\");\n if (!selected) return;\n const id = selected.id;\n if (!id) return;\n let component = TreeBase.componentFromId(id);\n if (component) {\n const element = document.getElementById(component.id);\n if (element) {\n element.setAttribute(\"highlight\", \"component\");\n return;\n }\n // the component is not currently visible. Find its nearest visible parent\n component = component.parent;\n while (component) {\n const element = document.getElementById(component.id);\n if (element) {\n element.setAttribute(\"highlight\", \"parent\");\n return;\n }\n component = component.parent;\n }\n }\n }\n\n makeVisible() {\n let component = Globals.designer.selectedComponent;\n if (component) {\n const element = document.getElementById(component.id);\n if (element) {\n return; // already visible\n }\n // climb the tree scheduling updates to parent to make this component visible\n component = component.parent;\n let patch = {};\n while (component) {\n if (\n component instanceof TabPanel &&\n component.parent &&\n component.parent.currentPanel != component\n ) {\n patch[component.parent.stateName.value] = component.name.value;\n } else if (component instanceof ModalDialog) {\n patch[component.stateName.value] = 1;\n }\n component = component.parent;\n }\n callAfterRender(() => this.highlight());\n Globals.state.update(patch);\n }\n }\n}\nTreeBase.register(Layout, \"Layout\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { DesignerPanel } from \"./designer\";\nimport \"css/actions.css\";\nimport Globals from \"app/globals\";\nimport { Functions } from \"app/eval\";\n\nexport class Actions extends DesignerPanel {\n name = new Props.String(\"Actions\");\n scale = new Props.Integer(1);\n\n allowedChildren = [\"Action\"];\n\n static tableName = \"actions\";\n static defaultValue = {\n className: \"Actions\",\n props: {},\n children: [],\n };\n\n /** @type {Action[]} */\n children = [];\n last = {\n /** @type {Action|Null} */\n rule: null,\n /** @type {Object} */\n data: {},\n /** @type {string} */\n event: \"\",\n /** @type {string} */\n origin: \"\",\n };\n\n allowDelete = false;\n\n configure() {\n this.applyRules(\"init\", \"init\", {});\n }\n\n /** @typedef {Object} eventQueueItem\n * @property {string} origin\n * @property {string} event\n */\n\n /** @type {eventQueueItem[]} */\n eventQueue = [];\n\n /** queue an event from within an event handler\n * @param {String} origin\n * @param {String} event\n */\n queueEvent(origin, event) {\n this.eventQueue.push({ origin, event });\n }\n\n /**\n * Attempt to apply a rule\n *\n * @param {string} origin - name of the originating element\n * @param {string} event - type of event that occurred, i.e.press\n * @param {Object} data - data associated with the event\n */\n applyRules(origin, event, data) {\n // console.trace({ origin, event, data });\n this.last = { origin, event, data, rule: null };\n // first for the event then for any that got queued.\n for (;;) {\n const context = { ...Functions, state: Globals.state, ...data };\n for (const rule of this.children) {\n if (origin != rule.props.origin && rule.props.origin != \"*\") {\n continue;\n }\n const result = rule.conditions.every((restriction) =>\n restriction.Condition.eval(context),\n );\n if (result) {\n this.last.rule = rule;\n const patch = Object.fromEntries(\n rule.updates.map((update) => [\n update.props.stateName,\n update.newValue.eval(context),\n ]),\n );\n Globals.state.update(patch);\n break;\n }\n }\n if (this.eventQueue.length == 0) break;\n const item = this.eventQueue.pop();\n if (item) {\n origin = item.origin;\n event = item.event;\n }\n data = {};\n }\n }\n\n /**\n * Pass event to rules\n *\n * @param {string} origin - name of the originating element\n * @param {Object} data - data associated with the event\n * @param {string} [event] - optional name for the event\n * @return {(event:Event) => void}\n */\n handler(origin, data, event) {\n return (e) => {\n let ev = event;\n if (e instanceof PointerEvent && e.altKey) {\n ev = \"alt-\" + event;\n }\n this.applyRules(origin, ev || e.type, data);\n };\n }\n\n /** @returns {Set} */\n allStates() {\n const result = new Set();\n for (const rule of this.children) {\n for (const condition of rule.conditions) {\n for (const [match] of condition.props.Condition.matchAll(/\\$\\w+/g)) {\n result.add(match);\n }\n }\n for (const update of rule.updates) {\n result.add(update.props.stateName);\n for (const [match] of update.newValue.value.matchAll(/\\$\\w+/g)) {\n result.add(match);\n }\n }\n }\n return result;\n }\n\n settings() {\n const { actions } = Globals;\n const rule = this.last.rule;\n return html`
    \n \n \n \n \n \n \n \n \n \n \n \n \n ${actions.children.map((action) => {\n const updates = action.updates;\n const rs = updates.length;\n const used = action === actions.last.rule;\n /** @param {ActionUpdate} update */\n function showUpdate(update) {\n return html`\n \n \n `;\n }\n return html`\n \n \n \n ${!rs\n ? html`\n `\n : showUpdate(updates[0])}\n \n ${updates.slice(1).map(\n (update) =>\n html`\n ${showUpdate(update)}\n `,\n )}\n `;\n })}\n
    OriginConditionsUpdates
    StateNew value
    ${update.stateName.input()}${update.newValue.input()}
    ${action.origin.input()}\n
    \n ${action.conditions.map(\n (condition) =>\n html`
    \n ${condition.Condition.input()}\n
    `,\n )}\n
    \n
    \n
    `;\n }\n\n /** @param {any} actions */\n static upgrade(actions) {\n // convert from the old format if necessary\n if (Array.isArray(actions)) {\n actions = {\n className: \"Actions\",\n props: {},\n children: actions.map((action) => {\n let { event, origin, conditions, updates } = action;\n const children = [];\n for (const condition of conditions) {\n children.push({\n className: \"ActionCondition\",\n props: { Condition: condition },\n children: [],\n });\n }\n for (const [$var, value] of Object.entries(updates)) {\n children.push({\n className: \"ActionUpdate\",\n props: { stateName: $var, newValue: value },\n children: [],\n });\n }\n if (event == \"init\") origin = \"init\";\n return {\n className: \"Action\",\n props: { origin },\n children,\n };\n }),\n };\n }\n return actions;\n }\n}\nTreeBase.register(Actions, \"Actions\");\n\nclass Action extends TreeBase {\n allowedChildren = [\"ActionCondition\", \"ActionUpdate\"];\n /** @type {(ActionCondition | ActionUpdate)[]} */\n children = [];\n\n origin = new Props.String(\"\", { hiddenLabel: true });\n\n get conditions() {\n return this.filterChildren(ActionCondition);\n }\n\n get updates() {\n return this.filterChildren(ActionUpdate);\n }\n\n init() {\n if (this.children.length == 0) {\n // add a condition and update if none are present\n TreeBase.create(ActionCondition, this, {}).init();\n TreeBase.create(ActionUpdate, this, {}).init();\n }\n }\n}\nTreeBase.register(Action, \"Action\");\n\nexport class ActionCondition extends TreeBase {\n Condition = new Props.Expression(\"\", {\n hiddenLabel: true,\n valueWhenEmpty: true,\n });\n\n /** move my parent instead of me.\n * @param {boolean} up\n */\n moveUpDown(up) {\n this.parent?.moveUpDown(up);\n }\n}\nTreeBase.register(ActionCondition, \"ActionCondition\");\n\nexport class ActionUpdate extends TreeBase {\n stateName = new Props.String(\"\", { hiddenLabel: true });\n newValue = new Props.Expression(\"\", { hiddenLabel: true });\n\n /** move my parent instead of me.\n * @param {boolean} up\n */\n moveUpDown(up) {\n this.parent?.moveUpDown(up);\n }\n}\nTreeBase.register(ActionUpdate, \"ActionUpdate\");\n","/** Global Hot Keys for keyboard access */\n\nimport Globals from \"app/globals\";\nimport \"css/hotkeys.css\";\n\nfunction showHints() {\n document.body.classList.add(\"hints\");\n}\n\nfunction clearHints() {\n document.body.classList.remove(\"hints\");\n}\n\nfunction editMode() {\n Globals.state.update({ editing: true });\n}\n\nfunction userMode() {\n Globals.state.update({ editing: false });\n clearHints();\n}\n\n/**\n * Click a toolbar input based on its hint\n * @param {string} key\n */\nfunction clickToolbar(key) {\n clearHints();\n const hint = document.querySelector(`.toolbar div[hint=\"${key}\" i]`);\n if (hint) {\n const input = /** @type {HTMLInputElement} */ (\n hint.querySelector(\"button,input\")\n );\n input.focus();\n input.click();\n }\n}\n\n/**\n * Focus on the UI part of the designer for testing keyboard input\n * @returns {void}\n */\nfunction focusUI() {\n clearHints();\n document.getElementById(\"UI\")?.focus();\n}\n\n/**\n * Restore focus to the designer panel\n * @returns {void}\n */\nfunction focusPanel() {\n clearHints();\n Globals.designer.restoreFocus();\n}\n\nfunction focusTabs() {\n clearHints();\n const currentTab = /** @type {HTMLButtonElement} */ (\n document.querySelector(\"#designer .tabcontrol .buttons button[active]\")\n );\n if (currentTab) {\n currentTab.focus();\n return;\n }\n const tabs = /** @type {HTMLButtonElement[]} */ ([\n ...document.querySelectorAll(\".designing .tabcontrol .buttons button\"),\n ]);\n if (!tabs.length) return;\n tabs[0].focus();\n}\n\n/** Implement a state machine for managing the hotkeys\n * @enum {string}\n */\nconst State = {\n user: \"user\",\n userA: \"userA\",\n editing: \"editing\",\n hints: \"hints\",\n};\n\n/** @type {State | undefined} */\nlet state = undefined;\n\n/**\n * State machine transition table\n * @typedef {Object} Transition\n * @property {State} state - current state\n * @property {RegExp} key - input key\n * @property {State} next - next state\n * @property {Function} [call] - function to call on entering\n */\n\n/** @type {Transition[]} */\n// prettier-ignore\nconst transitions = [\n { state: State.user, key: /alt/i, next: State.userA },\n { state: State.userA, key: /d/i, next: State.editing, call: editMode },\n { state: State.editing, key: /alt/i, next: State.hints, call: showHints },\n { state: State.hints, key: /d/i, next: State.user, call: userMode },\n { state: State.hints, key: /[nfeah]/i,next: State.editing, call: clickToolbar },\n { state: State.hints, key: /t/i, next: State.editing, call: focusTabs },\n { state: State.hints, key: /u/i, next: State.editing, call: focusUI },\n { state: State.hints, key: /p/i, next: State.editing, call: focusPanel },\n { state: State.hints, key: /shift/i, next: State.hints },\n { state: State.hints, key: /.*/i, next: State.editing, call: clearHints },\n];\n\n/** Toolbar activation and hints\n *\n * @param {KeyboardEvent} event */\nfunction HotKeyHandler(event) {\n if (!Globals.state) return;\n if (!state) {\n // initialize the state on first call\n state = Globals.state.get(\"editing\") ? State.editing : State.user;\n }\n const key = event.key;\n if (!key) return;\n for (const T of transitions) {\n if (T.state == state) {\n const match = key.match(T.key);\n if (match && match[0].length === key.length) {\n // exact match\n event.preventDefault();\n if (event.repeat) break; // kill key repeat\n state = T.next;\n if (T.call) {\n T.call(key);\n }\n break;\n }\n }\n }\n}\ndocument.addEventListener(\"keydown\", HotKeyHandler, { capture: true });\n\nwindow.addEventListener(\"blur\", () => {\n clearHints();\n});\n","import { html } from \"uhtml\";\n// import \"css/customize.css\";\nimport { TreeBase } from \"components/treebase\";\nimport * as Props from \"components/props\";\n\n/**\n * Customize component allows modifying the CSS of the UI to\n * adjust colors, size and placement of elements.\n */\nexport class Customize extends TreeBase {\n name = new Props.String(\"Style\");\n css = new Props.Code(\"\", { placeholder: \"Enter CSS\", label: \"CSS\" });\n\n /** @type {string[]} */\n allowedChildren = [];\n\n template() {\n return html``;\n }\n}\nTreeBase.register(Customize, \"Customize\");\n","import db from \"app/db\";\n\n/**\n * An image that is extracted from the database\n */\nexport class imgFromDb extends HTMLImageElement {\n // watch for changes in dbsrc\n static get observedAttributes() {\n return [\"dbsrc\", \"refresh\"];\n }\n\n /**\n * Handle changes in dbsrc\n * @param {string} name\n * @param {string} _\n * @param {string} newValue */\n attributeChangedCallback(name, _, newValue) {\n if (name === \"dbsrc\" && newValue) {\n this.updateSrcFromDb(newValue);\n }\n }\n\n /**\n * Look again at the db which may have changed\n */\n async refresh() {\n const url = this.getAttribute(\"dbsrc\") || \"\";\n return this.updateSrcFromDb(url);\n }\n\n /** Update the img src from the db or the provided url\n * @param {string} url\n */\n async updateSrcFromDb(url) {\n // if it contains a slash treat it like an external url\n // if not, fetch it from the db\n if (url && url.indexOf(\"/\") < 0) url = await db.getMediaURL(url);\n if (url) this.src = url;\n }\n}\ncustomElements.define(\"img-db\", imgFromDb, { extends: \"img\" });\n","import db from \"app/db\";\n\n/**\n * A video that is extracted from the database\n */\nexport class videoFromDb extends HTMLVideoElement {\n // watch for changes in dbsrc\n static get observedAttributes() {\n return [\"dbsrc\", \"refresh\"];\n }\n\n /**\n * Handle changes in dbsrc\n * @param {string} name\n * @param {string} _\n * @param {string} newValue */\n attributeChangedCallback(name, _, newValue) {\n if (name === \"dbsrc\" && newValue) {\n this.updateSrcFromDb(newValue);\n }\n }\n\n /**\n * Look again at the db which may have changed\n */\n async refresh() {\n const url = this.getAttribute(\"dbsrc\") || \"\";\n return this.updateSrcFromDb(url);\n }\n\n /** Update the img src from the db or the provided url\n * @param {string} url\n */\n async updateSrcFromDb(url) {\n // if it contains a slash treat it like an external url\n // if not, fetch it from the db\n if (url && url.indexOf(\"/\") < 0) url = await db.getMediaURL(url);\n if (url) this.src = url;\n }\n}\ncustomElements.define(\"video-db\", videoFromDb, { extends: \"video\" });\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n//# sourceMappingURL=of.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { createOperatorSubscriber } from './OperatorSubscriber';\nexport function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return function (source, subscriber) {\n var hasState = hasSeed;\n var state = seed;\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (function () {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\n//# sourceMappingURL=scanInternals.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.js.map","import { map } from './map';\nexport function mapTo(value) {\n return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap(function (value, index) { return innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration = timer(due, scheduler);\n return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { distinctUntilChanged } from './distinctUntilChanged';\nexport function distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });\n}\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber, OperatorSubscriber } from './OperatorSubscriber';\nexport function groupBy(keySelector, elementOrOptions, duration, connector) {\n return operate(function (source, subscriber) {\n var element;\n if (!elementOrOptions || typeof elementOrOptions === 'function') {\n element = elementOrOptions;\n }\n else {\n (duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector);\n }\n var groups = new Map();\n var notify = function (cb) {\n groups.forEach(cb);\n cb(subscriber);\n };\n var handleError = function (err) { return notify(function (consumer) { return consumer.error(err); }); };\n var activeGroups = 0;\n var teardownAttempted = false;\n var groupBySourceSubscriber = new OperatorSubscriber(subscriber, function (value) {\n try {\n var key_1 = keySelector(value);\n var group_1 = groups.get(key_1);\n if (!group_1) {\n groups.set(key_1, (group_1 = connector ? connector() : new Subject()));\n var grouped = createGroupedObservable(key_1, group_1);\n subscriber.next(grouped);\n if (duration) {\n var durationSubscriber_1 = createOperatorSubscriber(group_1, function () {\n group_1.complete();\n durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe();\n }, undefined, undefined, function () { return groups.delete(key_1); });\n groupBySourceSubscriber.add(innerFrom(duration(grouped)).subscribe(durationSubscriber_1));\n }\n }\n group_1.next(element ? element(value) : value);\n }\n catch (err) {\n handleError(err);\n }\n }, function () { return notify(function (consumer) { return consumer.complete(); }); }, handleError, function () { return groups.clear(); }, function () {\n teardownAttempted = true;\n return activeGroups === 0;\n });\n source.subscribe(groupBySourceSubscriber);\n function createGroupedObservable(key, groupSubject) {\n var result = new Observable(function (groupSubscriber) {\n activeGroups++;\n var innerSub = groupSubject.subscribe(groupSubscriber);\n return function () {\n innerSub.unsubscribe();\n --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\n//# sourceMappingURL=groupBy.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mergeAll } from './mergeAll';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from '../observable/from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n args = argsOrArgArray(args);\n return operate(function (source, subscriber) {\n mergeAll(concurrent)(from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=merge.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { merge } from './merge';\nexport function mergeWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return merge.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=mergeWith.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/innerFrom';\nexport function retry(configOrCount) {\n if (configOrCount === void 0) { configOrCount = Infinity; }\n var config;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n }\n else {\n config = {\n count: configOrCount,\n };\n }\n var _a = config.count, count = _a === void 0 ? Infinity : _a, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b;\n return count <= 0\n ? identity\n : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRetry = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n }, undefined, function (err) {\n if (soFar++ < count) {\n var resub_1 = function () {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n else {\n syncUnsub = true;\n }\n };\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n var notifierSubscriber_1 = createOperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n resub_1();\n }, function () {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n resub_1();\n }\n }\n else {\n subscriber.error(err);\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\n//# sourceMappingURL=retry.js.map","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n//# sourceMappingURL=scan.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function skipWhile(predicate) {\n return operate(function (source, subscriber) {\n var taking = false;\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=skipWhile.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate(function (source, subscriber) {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=takeUntil.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n var tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n//# sourceMappingURL=tap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n return operate(function (source, subscriber) {\n var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n var startThrottle = function (value) {\n return (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n };\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=throttle.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration$ = timer(duration, scheduler);\n return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","export default {\n className: \"MethodChooser\",\n props: {},\n children: [\n {\n className: \"Method\",\n props: {\n Name: \"2 switch\",\n Key: \"idl6e14meiwzjdcquhgk9\",\n KeyDebounce: 0.1,\n PointerEnterDebounce: 0,\n PointerDownDebounce: 0,\n Active: \"false\",\n Pattern: \"DefaultPattern\",\n },\n children: [\n {\n className: \"KeyHandler\",\n props: { Signal: \"keyup\" },\n children: [\n {\n className: \"HandlerKeyCondition\",\n props: { Key: \" \" },\n children: [],\n },\n {\n className: \"HandlerKeyCondition\",\n props: { Key: \"ArrowRight\" },\n children: [],\n },\n {\n className: \"ResponderNext\",\n props: { Response: \"ResponderNext\" },\n children: [],\n },\n ],\n },\n {\n className: \"KeyHandler\",\n props: { Signal: \"keyup\" },\n children: [\n {\n className: \"HandlerKeyCondition\",\n props: { Key: \"Enter\" },\n children: [],\n },\n {\n className: \"HandlerKeyCondition\",\n props: { Key: \"ArrowLeft\" },\n children: [],\n },\n {\n className: \"ResponderActivate\",\n props: { Response: \"ResponderActivate\" },\n children: [],\n },\n ],\n },\n ],\n },\n {\n className: \"Method\",\n props: {\n Name: \"Pointer dwell\",\n Key: \"idl6wcdmjjkb48xmbxscn\",\n KeyDebounce: 0,\n PointerEnterDebounce: 0.1,\n PointerDownDebounce: 0.1,\n Active: \"false\",\n Pattern: \"idl83jg7qtj9wmyggtxf\",\n },\n children: [\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerover\" },\n children: [\n {\n className: \"ResponderCue\",\n props: { Response: \"ResponderCue\", Cue: \"idl7qm4cs28fh2ogf4ni\" },\n children: [],\n },\n {\n className: \"ResponderStartTimer\",\n props: {\n Response: \"ResponderStartTimer\",\n TimerName: \"idl7yrtido633vxa1bb1v\",\n },\n children: [],\n },\n ],\n },\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerout\" },\n children: [\n {\n className: \"ResponderClearCue\",\n props: { Response: \"ResponderClearCue\" },\n children: [],\n },\n ],\n },\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerdown\" },\n children: [\n {\n className: \"ResponderActivate\",\n props: { Response: \"ResponderActivate\" },\n children: [],\n },\n ],\n },\n {\n className: \"Timer\",\n props: {\n Interval: \"1.5\",\n Name: \"dwell\",\n Key: \"idl7yrtido633vxa1bb1v\",\n },\n children: [],\n },\n {\n className: \"TimerHandler\",\n props: { Signal: \"timer\", TimerName: \"idl7yrtido633vxa1bb1v\" },\n children: [\n {\n className: \"ResponderActivate\",\n props: { Response: \"ResponderActivate\" },\n children: [],\n },\n ],\n },\n ],\n },\n {\n className: \"Method\",\n props: {\n Name: \"Mouse\",\n KeyDebounce: 0,\n PointerEnterDebounce: 0,\n PointerDownDebounce: 0,\n Key: \"idl84ljjeoebyl94sow87\",\n Active: \"true\",\n Pattern: \"idl83jg7qtj9wmyggtxf\",\n },\n children: [\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerdown\" },\n children: [\n {\n className: \"ResponderActivate\",\n props: { Response: \"ResponderActivate\" },\n children: [],\n },\n ],\n },\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerover\" },\n children: [\n {\n className: \"ResponderCue\",\n props: { Response: \"ResponderCue\", Cue: \"idl7qm4cs28fh2ogf4ni\" },\n children: [],\n },\n ],\n },\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerout\" },\n children: [\n {\n className: \"ResponderClearCue\",\n props: { Response: \"ResponderClearCue\" },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n};\n","import { html } from \"uhtml\";\nimport { TreeBase, TreeBaseSwitchable } from \"components/treebase\";\nimport * as Props from \"components/props\";\nimport Globals from \"app/globals\";\nimport * as RxJs from \"rxjs\";\n// make sure the classes are registered\nimport defaultMethods from \"./defaultMethods\";\nimport { DesignerPanel } from \"components/designer\";\nimport \"css/method.css\";\nimport { toggleIndicator } from \"app/components/helpers\";\n\n// allow tearing down handlers when changing configurations\nconst stop$ = new RxJs.Subject();\n\nexport class MethodChooser extends DesignerPanel {\n name = new Props.String(\"Methods\");\n\n allowedChildren = [\"Method\"];\n /** @type {Method[]} */\n children = [];\n\n allowDelete = false;\n\n static tableName = \"method\";\n static defaultValue = defaultMethods;\n\n onUpdate() {\n super.onUpdate();\n this.configure();\n }\n\n configure() {\n // tear down the old configuration if any\n this.stop();\n for (const method of this.children) {\n method.configure(stop$);\n }\n }\n\n stop() {\n stop$.next(1);\n }\n\n settings() {\n return html`
    \n ${this.unorderedChildren()}\n
    `;\n }\n\n refresh() {\n this.children\n .filter((child) => child.Active.value)\n .forEach((child) => child.refresh());\n }\n\n /**\n * Upgrade Methods\n * @param {any} obj\n * @returns {Object}\n */\n static upgrade(obj) {\n // Debounce moves up to the method from the individual handlers\n // Take the maximum of all times for each category\n if (obj.className != \"MethodChooser\") return obj;\n\n for (const method of obj.children) {\n if (method.className != \"Method\") {\n throw new Error(\"Invalid Method upgrade\");\n }\n if (!(\"KeyDebounce\" in method.props)) {\n let keyDebounce = 0;\n let enterDebounce = 0;\n let downDebounce = 0;\n for (const handler of method.children) {\n if ([\"PointerHandler\", \"KeyHandler\"].includes(handler.className)) {\n const debounce = parseFloat(handler.props.Debounce || \"0\");\n const signal = handler.props.Signal;\n if (signal.startsWith(\"key\")) {\n keyDebounce = Math.max(keyDebounce, debounce);\n } else if ([\"pointerover\", \"pointerout\"].includes(signal)) {\n enterDebounce = Math.max(enterDebounce, debounce);\n } else if ([\"pointerdown\", \"pointerup\"].includes(signal)) {\n downDebounce = Math.max(downDebounce, debounce);\n }\n }\n }\n method.props.KeyDebounce = keyDebounce.toString();\n method.props.PointerEnterDebounce = enterDebounce.toString();\n method.props.PointerDownDebounce = downDebounce.toString();\n }\n if (!(\"Pattern\" in method.props)) {\n /* guess the best pattern to use\n * Prior to this upgrade PointerHandlers ignored the pattern. Now they don't.\n * To avoid breaking Methods that using PointerHandlers I'm defaulting them\n * to the NullPattern. This won't fix everything for sure but it shoudl help.\n */\n let pattern = \"DefaultPattern\";\n if (\n method.children.some(\n (/** @type {Object} */ handler) =>\n handler.className == \"PointerHandler\",\n )\n ) {\n pattern = \"NullPattern\";\n }\n method.props.Pattern = pattern;\n }\n }\n return obj;\n }\n}\nTreeBase.register(MethodChooser, \"MethodChooser\");\n\nexport class Method extends TreeBase {\n Name = new Props.String(\"New method\");\n Pattern = new Props.Pattern({ defaultValue: \"DefaultPattern\" });\n KeyDebounce = new Props.Float(0, { label: \"Key down/up\" });\n PointerEnterDebounce = new Props.Float(0, { label: \"Pointer enter/leave\" });\n PointerDownDebounce = new Props.Float(0, { label: \"Pointer down/up\" });\n Key = new Props.UID();\n Active = new Props.Boolean(false);\n\n allowedChildren = [\n \"Timer\",\n \"KeyHandler\",\n \"PointerHandler\",\n \"TimerHandler\",\n \"SocketHandler\",\n ];\n\n open = false;\n\n // Event streams from the devices\n /** @type {Object>} */\n streams = {};\n\n /** clear the pointerStream on any changes from below\n * @param {TreeBase} _start\n */\n onUpdate(_start) {\n super.onUpdate(_start);\n }\n\n /** @type {(Handler | Timer)[]} */\n children = [];\n\n /** Return a Map from Timer Key to the Timer\n * @returns {Map}\n * */\n get timers() {\n return new Map(\n this.filterChildren(Timer).map((child) => [child.Key.value, child]),\n );\n }\n\n /** Return a Map from Timer Key to its Name */\n get timerNames() {\n return new Map(\n this.filterChildren(Timer).map((timer) => [\n timer.Key.value,\n timer.Name.value,\n ]),\n );\n }\n\n /** Return a Timer given its key\n * @param {string} key\n * */\n timer(key) {\n return this.filterChildren(Timer).find((timer) => timer.Key.value == key);\n }\n\n /** Cancel all active Timers\n */\n cancelTimers() {\n for (const timer of this.timers.values()) {\n timer.cancel();\n }\n }\n\n /** Return an array of the Handlers */\n get handlers() {\n return this.filterChildren(Handler);\n }\n\n settingsSummary() {\n const { Name, Active } = this;\n return html`

    \n ${Name.value} ${toggleIndicator(Active.value, \"Active\")}\n

    `;\n }\n\n settingsDetails() {\n const {\n Name,\n Pattern,\n Active,\n KeyDebounce,\n PointerEnterDebounce,\n PointerDownDebounce,\n } = this;\n const timers = [...this.timers.values()];\n // determine which debounce controls we should display\n const handlerClasses = new Set(\n this.handlers.map((handler) => handler.className),\n );\n const keyDebounce = handlerClasses.has(\"KeyHandler\")\n ? [KeyDebounce.input()]\n : [];\n const pointerDebounce = handlerClasses.has(\"PointerHandler\")\n ? [PointerDownDebounce.input(), PointerEnterDebounce.input()]\n : [];\n const Debounce =\n handlerClasses.has(\"KeyHandler\") || handlerClasses.has(\"PointerHandler\")\n ? [\n html`
    \n Debounce\n ${keyDebounce} ${pointerDebounce}\n
    `,\n ]\n : [];\n return html`
    \n ${Name.input()} ${Active.input()} ${Pattern.input()} ${Debounce}\n ${timers.length > 0\n ? html`
    \n Timers\n ${this.unorderedChildren(timers)}\n
    `\n : this.empty}\n
    \n Handlers\n ${this.orderedChildren(this.handlers)}\n
    \n
    `;\n }\n\n settingsChildren() {\n return this.empty;\n }\n\n /** Configure the rxjs pipelines to implement this method */\n /** @param {RxJs.Subject} stop$\n * */\n configure(stop$) {\n if (this.Active.value) {\n this.streams = {};\n for (const child of this.handlers) {\n child.configure(stop$);\n }\n const streams = Object.values(this.streams);\n if (streams.length > 0) {\n const stream$ = RxJs.merge(...streams).pipe(RxJs.takeUntil(stop$));\n stream$.subscribe((e) => {\n for (const handler of this.handlers) {\n if (handler.test(e)) {\n handler.respond(e);\n return;\n }\n }\n });\n }\n }\n }\n\n get pattern() {\n return Globals.patterns.patternFromKey(this.Pattern.value);\n }\n\n /** Refresh the pattern and other state on redraw */\n refresh() {\n this.pattern.refresh();\n }\n}\nTreeBase.register(Method, \"Method\");\n\nclass Timer extends TreeBase {\n Interval = new Props.Float(0.5, { hiddenLabel: true });\n Name = new Props.String(\"timer\", { hiddenLabel: true });\n Key = new Props.UID();\n\n /** @type {RxJs.Subject} */\n subject$ = new RxJs.Subject();\n\n settings() {\n return html`
    \n ${this.Name.input()} ${this.Interval.input()}\n \n
    `;\n }\n\n /** @param {EventLike} event */\n start(event) {\n const fakeEvent = /** @type {EventLike} */ ({\n type: \"timer\",\n target: event.target,\n access: event.access,\n });\n this.subject$.next(fakeEvent);\n }\n\n cancel() {\n const event = { type: \"cancel\", target: null, timeStamp: 0 };\n this.subject$.next(event);\n }\n}\nTreeBase.register(Timer, \"Timer\");\n\n/** Handler is a base class for all event handlers */\nexport class Handler extends TreeBase {\n /** @type {(HandlerCondition | HandlerKeyCondition | HandlerResponse)[]} */\n children = [];\n\n /** Return the method containing this Handler */\n get method() {\n return /** @type {Method} */ (this.parent);\n }\n\n // overridden in the derived classes\n Signal = new Props.Select();\n\n get conditions() {\n return this.filterChildren(HandlerCondition);\n }\n\n get keys() {\n return this.filterChildren(HandlerKeyCondition);\n }\n\n get responses() {\n return this.filterChildren(HandlerResponse);\n }\n\n /**\n * Test the conditions for this handler\n * @param {EventLike} event\n * @returns {boolean}\n */\n test(event) {\n return (\n this.Signal.value == event.type &&\n this.conditions.every((condition) => condition.eval(event.access))\n );\n }\n\n /**\n * @param {RxJs.Subject} _stop$\n * */\n configure(_stop$) {\n throw new TypeError(\"Must override configure\");\n }\n\n /** @param {EventLike} event */\n respond(event) {\n // console.log(\"handler respond\", event.type, this.responses);\n const method = this.nearestParent(Method);\n if (!method) return;\n method.cancelTimers();\n for (const response of this.responses) {\n response.respond(event);\n }\n }\n}\n\nexport class HandlerCondition extends TreeBase {\n Condition = new Props.Expression(\"\", { hiddenLabel: true });\n\n settings() {\n const { Condition } = this;\n return html`
    ${Condition.input()}
    `;\n }\n\n /** @param {Object} context */\n eval(context) {\n return this.Condition.eval(context);\n }\n\n /** move my parent instead of me.\n * @param {boolean} up\n */\n moveUpDown(up) {\n this.parent?.moveUpDown(up);\n }\n}\nTreeBase.register(HandlerCondition, \"HandlerCondition\");\n\nexport class HandlerKeyCondition extends HandlerCondition {\n Key = new Props.KeyName(\"\", {\n placeholder: \"Press Enter to edit\",\n hiddenLabel: true,\n });\n\n settings() {\n const { Key } = this;\n return html`
    ${Key.input()}
    `;\n }\n\n /** @param {Object} context */\n eval(context) {\n return this.Key.value == context.key;\n }\n}\nTreeBase.register(HandlerKeyCondition, \"HandlerKeyCondition\");\n\nconst ResponderTypeMap = new Map([\n [\"HandlerResponse\", \"none\"],\n [\"ResponderCue\", \"cue\"],\n [\"ResponderActivate\", \"activate\"],\n [\"ResponderClearCue\", \"clear cue\"],\n [\"ResponderEmit\", \"emit\"],\n [\"ResponderNext\", \"next\"],\n [\"ResponderStartTimer\", \"start timer\"],\n]);\n\nexport class HandlerResponse extends TreeBaseSwitchable {\n Response = new Props.TypeSelect(ResponderTypeMap, { hiddenLabel: true });\n\n /** @param {EventLike} event */\n respond(event) {\n console.log(\"no response for\", event);\n }\n\n settings() {\n return html`
    \n ${this.Response.input()} ${this.subTemplate()}\n
    `;\n }\n\n subTemplate() {\n return this.empty;\n }\n\n /** move my parent instead of me.\n * @param {boolean} up\n */\n moveUpDown(up) {\n this.parent?.moveUpDown(up);\n }\n}\nTreeBase.register(HandlerResponse, \"HandlerResponse\");\n","export default {\n className: \"PatternList\",\n props: {\n direction: \"\",\n background: \"\",\n scale: 1,\n name: \"Patterns\",\n label: \"\",\n },\n children: [\n {\n className: \"PatternManager\",\n props: {\n Cycles: \"2\",\n Cue: \"DefaultCue\",\n Name: \"None\",\n Key: \"idl83jg7qtj9wmyggtxf\",\n Active: false,\n },\n children: [],\n },\n {\n className: \"PatternManager\",\n props: {\n Cycles: \"2\",\n Cue: \"DefaultCue\",\n Name: \"Row Column\",\n Key: \"idl83jjo4z0ibii6748fx\",\n Active: true,\n },\n children: [\n {\n className: \"PatternSelector\",\n props: {},\n children: [\n {\n className: \"GroupBy\",\n props: {\n GroupBy: \"#row\",\n Name: \"Row #row\",\n Cue: \"DefaultCue\",\n Cycles: \"2\",\n },\n children: [],\n },\n ],\n },\n ],\n },\n {\n className: \"PatternManager\",\n props: {\n Cycles: 2,\n Cue: \"DefaultCue\",\n Name: \"Column Row\",\n Key: \"idlh6dwljzc1nwvfrrp9v\",\n Active: false,\n },\n children: [\n {\n className: \"PatternSelector\",\n props: {},\n children: [\n {\n className: \"GroupBy\",\n props: {\n GroupBy: \"#column\",\n Name: \"Column #column\",\n Cue: \"DefaultCue\",\n Cycles: 2,\n },\n children: [],\n },\n ],\n },\n ],\n },\n {\n className: \"PatternManager\",\n props: {\n Cycles: \"2\",\n Cue: \"DefaultCue\",\n Name: \"Controls and Rows\",\n Key: \"idl83jjo4z0ibii6748fx\",\n Active: false,\n },\n children: [\n {\n className: \"PatternGroup\",\n props: { Name: \"Controls\", Cycles: \"2\", Cue: \"DefaultCue\" },\n children: [\n {\n className: \"PatternSelector\",\n props: {},\n children: [\n {\n className: \"Filter\",\n props: { Filter: \"#controls\" },\n children: [],\n },\n {\n className: \"OrderBy\",\n props: { OrderBy: \"#controls\" },\n children: [],\n },\n ],\n },\n ],\n },\n {\n className: \"PatternSelector\",\n props: {},\n children: [\n {\n className: \"Filter\",\n props: { Filter: \"! #controls\" },\n children: [],\n },\n {\n className: \"GroupBy\",\n props: {\n GroupBy: \"#ComponentName\",\n Name: \" Component\",\n Cue: \"DefaultCue\",\n Cycles: \"2\",\n },\n children: [],\n },\n {\n className: \"GroupBy\",\n props: {\n GroupBy: \"#row\",\n Name: \"Row #row\",\n Cue: \"DefaultCue\",\n Cycles: \"2\",\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n};\n","import { html } from \"uhtml\";\nimport \"css/pattern.css\";\nimport Globals from \"app/globals\";\nimport * as Props from \"components/props\";\nimport { TreeBase } from \"components/treebase\";\nimport defaultPatterns from \"./defaultPatterns\";\nimport { DesignerPanel } from \"components/designer\";\nimport { toggleIndicator } from \"app/components/helpers\";\n\n// only run one animation at a time\nlet animationNonce = 0;\n\n/** @param {Target} target\n * @param {string} defaultValue */\nexport function cueTarget(target, defaultValue) {\n if (target instanceof HTMLButtonElement) {\n target.setAttribute(\"cue\", defaultValue);\n const video = target.querySelector(\"video\");\n if (video && !video.hasAttribute(\"autoplay\")) {\n if (video.hasAttribute(\"muted\")) video.muted = true;\n const promise = video.play();\n if (promise !== undefined) {\n promise\n .then(() => {})\n .catch((error) => {\n console.log(\"autoplay prevented\", error);\n });\n }\n }\n } else if (target instanceof Group) {\n target.cue();\n }\n}\n\nexport function clearCues() {\n for (const element of document.querySelectorAll(\"[cue]\")) {\n element.removeAttribute(\"cue\");\n const video = element.querySelector(\"video\");\n if (video && !video.hasAttribute(\"autoplay\")) {\n video.pause();\n video.currentTime = 0;\n }\n }\n}\n\n/**\n * Group is a collection of Buttons or Groups and associated properties such as\n * the label and cue.\n */\nexport class Group {\n /**\n * @param {Target[]} members\n * @param {Object} props\n */\n constructor(members, props) {\n /** @type {Target[]} */\n this.members = members;\n this.access = props;\n }\n\n get length() {\n return this.members.length * +this.access.Cycles;\n }\n\n /** @param {Number} index */\n member(index) {\n if (index < 0 || index >= this.length) {\n return undefined;\n } else {\n return this.members[index % this.members.length];\n }\n }\n\n /** @param {string} value */\n cue(value = \"\") {\n if (!value) {\n value = this.access.Cue;\n }\n // console.log(\"cue group\", this);\n for (const member of this.members) {\n if (member instanceof HTMLButtonElement) cueTarget(member, value);\n else if (member instanceof Group) member.cue(value);\n }\n }\n\n /** Test if this group contains a button return the top-level index if so, -1 if not\n * @param {HTMLButtonElement} button\n * @returns {number}\n */\n contains(button) {\n for (let i = 0; i < this.members.length; i++) {\n const member = this.members[i];\n if (\n member === button ||\n (member instanceof Group && member.contains(button) >= 0)\n )\n return i;\n }\n return -1;\n }\n}\n\nclass PatternBase extends TreeBase {\n /** @type {PatternBase[]} */\n children = [];\n\n /**\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n return input;\n }\n}\n\nexport class PatternList extends DesignerPanel {\n name = new Props.String(\"Patterns\");\n allowDelete = false;\n\n allowedChildren = [\"PatternManager\"];\n /** @type {PatternManager[]} */\n children = [];\n\n static tableName = \"pattern\";\n static defaultValue = defaultPatterns;\n\n settings() {\n return html`
    \n ${this.unorderedChildren()}\n
    `;\n }\n\n /**\n * @returns {PatternManager}\n */\n get activePattern() {\n return (\n this.children.find((child) => child.Active.value) || this.children[0]\n );\n }\n\n get patternMap() {\n /** @type {[string,string][]} */\n const entries = this.children.map((child) => [\n child.Key.value,\n child.Name.value,\n ]);\n entries.unshift([\"DefaultPattern\", \"Default Pattern\"]);\n entries.unshift([\"NullPattern\", \"No Pattern\"]);\n return new Map(entries);\n }\n\n /**\n * return the pattern given its key\n * @param {string} key\n */\n patternFromKey(key) {\n let result;\n if (key === \"NullPattern\") {\n return nullPatternManager;\n }\n result = this.children.find((pattern) => pattern.Key.value == key);\n if (!result) {\n result = this.activePattern;\n }\n return result;\n }\n}\nTreeBase.register(PatternList, \"PatternList\");\n\nexport class PatternManager extends PatternBase {\n allowedChildren = [\"PatternSelector\", \"PatternGroup\"];\n\n /** @type {Group} */\n targets = new Group([], {});\n /**\n * Stack keeps track of the nesting as we walk the tree\n *\n * @type {{ group: Group; index: number }[]}\n */\n stack = [];\n\n /**\n * @type {Boolean} - cue is active when true\n */\n cued = false;\n\n // props\n Cue = new Props.Cue({ defaultValue: \"DefaultCue\" });\n Name = new Props.String(\"a pattern\");\n Key = new Props.UID();\n Active = new Props.OneOfGroup(false, {\n name: \"pattern-active\",\n label: \"Default\",\n });\n\n settingsSummary() {\n const { Name, Active } = this;\n return html`

    \n ${Name.value} ${toggleIndicator(Active.value, \"Active\")}\n

    `;\n }\n\n settingsDetails() {\n const { Cue, Name, Active } = this;\n return html`\n
    \n ${Name.input()} ${Active.input()} ${Cue.input()}\n {\n this.animate();\n }}\n >\n Animate\n \n ${this.orderedChildren()}\n
    \n `;\n }\n\n settingsChildren() {\n return this.empty;\n }\n\n /**\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n let members = [];\n for (const child of this.children) {\n const r = child.apply(input);\n if (r.length > 0) {\n if (r instanceof Group) {\n members.push(r);\n } else {\n members = members.concat(r);\n }\n }\n }\n if (members.length > 0) return [new Group(members, this.props)];\n else return [];\n }\n\n /** Collect the nodes from the DOM and process them into targets */\n refresh() {\n // gather the buttons from the UI\n const buttons = [];\n for (const node of /** @type {NodeListOf} */ (\n document.querySelectorAll(\"#UI button:not(:disabled)\")\n )) {\n buttons.push(node);\n }\n\n let members = [];\n if (this.children.length) {\n for (const child of this.children) {\n const r = child.apply(buttons);\n if (r.length > 0) {\n if (r instanceof Group) {\n members.push(r);\n } else {\n members = members.concat(r);\n }\n }\n }\n } else {\n members = buttons;\n }\n this.targets = new Group(members, { ...this.props, Cycles: 1 });\n // console.log(\"refresh\", this.targets);\n this.stack = [{ group: this.targets, index: -1 }];\n this.cue();\n\n // stop any running animations\n animationNonce += 1;\n }\n\n /**\n * Current keeps track of the currently active node or group\n *\n * @type {Target | undefined}\n */\n get current() {\n const { group, index } = this.stack[0];\n return group.member(index);\n }\n\n next() {\n const top = this.stack[0];\n // console.log(\"next\", { top }, this);\n if (top.index < top.group.length - 1) {\n top.index++;\n } else if (this.stack.length > 1) {\n this.stack.shift();\n // console.log(\"stack pop\");\n } else if (this.stack.length == 1) {\n top.index = 0;\n } else {\n // stack is empty ignore\n // console.log(\"empty stack?\");\n }\n this.cue();\n }\n\n /** @param {EventLike} event */\n activate(event) {\n const target = event.target;\n // console.log(\"activate\", event);\n if (target) {\n // adjust the stack to accomodate the target\n for (;;) {\n const top = this.stack[0];\n const newIndex = top.group.members.indexOf(target);\n if (newIndex >= 0) {\n top.index = newIndex;\n // console.log(\"set index\", top.index);\n break;\n }\n if (this.stack.length == 1) {\n top.index = 0;\n // console.log(\"not found\");\n break;\n } else {\n this.stack.shift();\n // console.log(\"pop stack\");\n }\n }\n }\n // console.log(\"stack\", this.stack);\n let current = this.current;\n if (!current) return;\n if (current instanceof Group) {\n // console.log(\"activate group\", current, this.stack);\n while (current.length == 1 && current.members[0] instanceof Group) {\n current = current.members[0];\n }\n // I need to work out the index here. Should be the group under the pointer\n this.stack.unshift({ group: current, index: event?.groupIndex || 0 });\n // console.log(\"push stack\", this.current, this.stack);\n } else if (current instanceof HTMLButtonElement) {\n if (current.hasAttribute(\"click\")) {\n current.click();\n } else {\n const name = current.dataset.ComponentName;\n // console.log(\"activate button\", current);\n // console.log(\"applyRules\", name, current.access);\n Globals.actions.applyRules(name || \"\", \"press\", current.dataset);\n }\n }\n this.cue();\n }\n\n clearCue() {\n this.cued = false;\n clearCues();\n }\n\n cue() {\n this.clearCue();\n const current = this.current;\n // console.log(\"cue current\", current);\n if (!current) return;\n this.cued = true;\n cueTarget(current, this.Cue.value);\n }\n\n /** Return the access info for current\n */\n getCurrentAccess() {\n const current = this.current;\n if (!current) return {};\n if (current instanceof HTMLButtonElement) {\n return current.dataset;\n } else if (current instanceof Group) {\n return { ...current.access };\n }\n return {};\n }\n\n /** Map the event target to a group\n * @param {EventLike} event\n * @returns {EventLike}\n */\n remapEventTarget(event) {\n event = {\n type: event.type,\n target: event.target,\n timeStamp: event.timeStamp,\n };\n if (event.target instanceof HTMLButtonElement) {\n event.access = event.target.dataset;\n }\n if (!event.target) return event;\n // console.log(\"ret\", this.stack);\n event.originalTarget = event.target;\n for (let level = 0; level < this.stack.length; level++) {\n const group = this.stack[level].group;\n const members = group.members;\n // first scan to see if the element is top level in this group\n let index = members.indexOf(event.target);\n if (index >= 0) {\n if (level === 0) {\n // console.log(\"A\", event);\n return event;\n } else {\n // console.log(\"B\", index);\n return {\n ...event,\n target: group,\n groupIndex: index,\n access: { ...event.access, ...group.access },\n };\n }\n } else if (event.target instanceof HTMLButtonElement) {\n // otherwise check to see if any group members contain it\n for (index = 0; index < members.length; index++) {\n const member = members[index];\n if (member instanceof Group) {\n let i = member.contains(event.target);\n if (i >= 0) {\n // console.log(\"C\", i);\n return {\n ...event,\n target: member,\n groupIndex: i,\n access: { ...event.access, ...member.access },\n };\n }\n }\n }\n }\n }\n return event;\n }\n\n async animate() {\n /** @param {Group} group\n * @param {string} cue\n */\n function* animateGroup(group, cue) {\n const cycles = +group.access.Cycles;\n const groupTime = 500;\n const buttonTime = Math.max(\n 100,\n Math.min(500, 600 / group.members.length),\n );\n for (let cycle = 0; cycle < cycles; cycle++) {\n for (const member of group.members) {\n cueTarget(member, cue);\n yield new Promise((resolve) =>\n setTimeout(\n resolve,\n member instanceof Group ? groupTime : buttonTime,\n ),\n );\n clearCues();\n if (member instanceof Group) {\n yield* animateGroup(member, cue);\n }\n }\n }\n }\n this.clearCue();\n this.refresh();\n\n // kill any running animations and save the new value\n let nonce = ++animationNonce;\n\n for (const promise of animateGroup(this.targets, this.Cue.value)) {\n await promise;\n // quit if the animationNonce changes\n if (nonce !== animationNonce) return;\n }\n }\n}\nPatternBase.register(PatternManager, \"PatternManager\");\n\nconst nullPatternManager = TreeBase.create(PatternManager);\n\nexport class PatternGroup extends PatternBase {\n // props\n Name = new Props.String(\"\");\n Cycles = new Props.Integer(2, { min: 1 });\n Cue = new Props.Cue({ defaultValue: \"DefaultCue\" });\n\n allowedChildren = [\"PatternGroup\", \"PatternSelector\"];\n\n settings() {\n const { Name, Cycles, Cue } = this;\n return html`
    \n Group: ${Name.value}\n ${Name.input()} ${Cycles.input()} ${Cue.input()} ${this.orderedChildren()}\n
    `;\n }\n\n /**\n * Build a group from the output of the selectors applied to the input\n *\n * @param {Target[]} input\n */\n apply(input) {\n let members = [];\n for (const child of this.children) {\n const r = child.apply(input);\n if (r.length > 0) {\n if (r instanceof Group) {\n members.push(r);\n } else {\n members = members.concat(r);\n }\n }\n }\n if (members.length > 0) return [new Group(members, this.props)];\n else return [];\n }\n}\nPatternBase.register(PatternGroup, \"PatternGroup\");\n\nclass PatternSelector extends PatternBase {\n allowedChildren = [\"Filter\", \"GroupBy\", \"OrderBy\"];\n settings() {\n return html`
    \n Selector\n ${this.unorderedChildren()}\n
    `;\n }\n\n /**\n * Select buttons from the input\n *\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n return this.children.reduce(\n (previous, operator) => operator.apply(previous),\n input,\n );\n }\n}\nPatternBase.register(PatternSelector, \"PatternSelector\");\n\nclass Filter extends PatternBase {\n Filter = new Props.Expression();\n settings() {\n const { Filter } = this;\n return html`
    \n ${Filter.input()}\n
    `;\n }\n /**\n * Select buttons from the input\n *\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n if (input[0] instanceof Group) {\n return input\n .map(\n (/** @type {Group} */ group) =>\n new Group(this.apply(group.members), group.access),\n )\n .filter((target) => target.length > 0);\n } else {\n return input.filter((/** @type {HTMLButtonElement} */ button) =>\n this.Filter.eval(button.dataset),\n );\n }\n }\n}\nPatternBase.register(Filter, \"Filter\");\n\n// allow the sort to handle numbers reasonably\nconst comparator = new Intl.Collator(undefined, {\n numeric: true,\n});\n\nclass OrderBy extends PatternBase {\n OrderBy = new Props.Field();\n settings() {\n const { OrderBy } = this;\n return html`
    \n ${OrderBy.input()}\n
    `;\n }\n /**\n * Select buttons from the input\n *\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n if (input[0] instanceof Group) {\n return input\n .map(\n (/** @type {Group} */ group) =>\n new Group(this.apply(group.members), group.access),\n )\n .filter((target) => target.length > 0);\n } else {\n const key = this.OrderBy.value.slice(1);\n return [.../** @type {HTMLButtonElement[]} */ (input)].sort((a, b) =>\n comparator.compare(a.dataset[key] || \"\", b.dataset[key] || \"\"),\n );\n }\n }\n}\nPatternBase.register(OrderBy, \"OrderBy\");\n\nclass GroupBy extends PatternBase {\n GroupBy = new Props.Field();\n Name = new Props.String(\"\");\n Cue = new Props.Cue({ defaultValue: \"DefaultCue\" });\n Cycles = new Props.Integer(2);\n settings() {\n const { GroupBy, Name, Cue, Cycles } = this;\n const fields = Props.toMap([\n ...new Set([\n ...Globals.data.allFields,\n \"#ComponentName\",\n \"#row\",\n \"#column\",\n ]),\n ]);\n return html`
    \n ${GroupBy.input(fields)} ${Name.input()} ${Cue.input()} ${Cycles.input()}\n
    `;\n }\n /**\n * Select buttons from the input\n *\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n if (input[0] instanceof Group) {\n return input\n .map(\n (/** @type {Group} */ group) =>\n new Group(this.apply(group.members), group.access),\n )\n .filter((target) => target.length > 0);\n } else {\n const { GroupBy, Name, ...props } = this.props;\n const key = GroupBy.slice(1);\n const result = [];\n const groupMap = new Map();\n for (const button of /** @type {HTMLButtonElement[]} */ (input)) {\n let k = button.dataset[key] || \"\";\n // if (!k) continue;\n k = k.toString();\n // we got a key, check to see if we have a group\n let group = groupMap.get(k);\n if (!group) {\n // no group, create one and add it to the map and the result\n group = new Group([button], {\n GroupName: Name.replace(GroupBy, k),\n [key]: k,\n ...props,\n });\n groupMap.set(k, group);\n result.push(group);\n } else {\n group.members.push(button);\n }\n }\n if (result.length === 1) {\n return result[0].members;\n }\n return result;\n }\n }\n}\nPatternBase.register(GroupBy, \"GroupBy\");\n","import { TreeBase } from \"components/treebase\";\nimport Globals from \"app/globals\";\nimport * as Props from \"components/props\";\nimport { Method, HandlerResponse } from \"./index\";\nimport { cueTarget, clearCues } from \"../pattern\";\n\nclass ResponderNext extends HandlerResponse {\n respond() {\n const method = this.nearestParent(Method);\n if (!method) return;\n method.pattern.next();\n }\n}\nTreeBase.register(ResponderNext, \"ResponderNext\");\n\nclass ResponderActivate extends HandlerResponse {\n /** @param {EventLike} event */\n respond(event) {\n const method = this.nearestParent(Method);\n if (!method) return;\n method.pattern.activate(event);\n }\n}\nTreeBase.register(ResponderActivate, \"ResponderActivate\");\n\nclass ResponderCue extends HandlerResponse {\n Cue = new Props.Cue();\n\n subTemplate() {\n return this.Cue.input();\n }\n\n /** @param {EventLike} event */\n respond(event) {\n // console.log(\"cue\", event);\n cueTarget(event.target, this.Cue.value);\n }\n}\nTreeBase.register(ResponderCue, \"ResponderCue\");\n\nclass ResponderClearCue extends HandlerResponse {\n respond() {\n clearCues();\n }\n}\nTreeBase.register(ResponderClearCue, \"ResponderClearCue\");\n\nclass ResponderEmit extends HandlerResponse {\n /** @param {EventLike} event */\n respond(event) {\n const method = this.nearestParent(Method);\n if (!method) return;\n Globals.actions.applyRules(method.Name.value, \"press\", event.access);\n }\n}\nTreeBase.register(ResponderEmit, \"ResponderEmit\");\n\nclass ResponderStartTimer extends HandlerResponse {\n TimerName = new Props.Select(() => this.nearestParent(Method).timerNames, {\n placeholder: \"Choose a timer\",\n hiddenLabel: true,\n });\n\n subTemplate() {\n return this.TimerName.input();\n }\n\n /** @param {EventLike} event */\n respond(event) {\n const timer = this.nearestParent(Method)?.timer(this.TimerName.value);\n if (!timer) return;\n // hand the interval to Cue CSS for animations\n document.documentElement.style.setProperty(\n \"--timerInterval\",\n `${timer.Interval.value}s`\n );\n timer.start(event);\n }\n}\nTreeBase.register(ResponderStartTimer, \"ResponderStartTimer\");\n","import { TreeBase } from \"components/treebase\";\nimport * as Props from \"components/props\";\nimport { html } from \"uhtml\";\nimport { Handler, HandlerKeyCondition } from \"./index\";\nimport * as RxJs from \"rxjs\";\n\nconst keySignals = new Map([\n [\"keyup\", \"Key up\"],\n [\"keydown\", \"Key down\"],\n]);\n\nexport class KeyHandler extends Handler {\n allowedChildren = [\n \"HandlerKeyCondition\",\n \"HandlerCondition\",\n \"HandlerResponse\",\n ];\n\n Signal = new Props.Select(keySignals);\n\n settings() {\n const { conditions, responses, keys } = this;\n const { Signal } = this;\n return html`\n
    \n Key Handler\n ${Signal.input()}\n
    \n Keys\n ${this.unorderedChildren(keys)}\n
    \n
    \n Conditions\n ${this.unorderedChildren(\n conditions.filter((c) => !(c instanceof HandlerKeyCondition)),\n )}\n
    \n
    \n Responses\n ${this.unorderedChildren(responses)}\n
    \n
    \n `;\n }\n\n /** @param {RxJs.Subject} _stop$ */\n configure(_stop$) {\n const method = this.method;\n const streamName = \"key\";\n\n // only create it once\n if (method.streams[streamName]) return;\n\n // construct debounced key event stream\n const debounceInterval = method.KeyDebounce.valueAsNumber * 1000;\n const keyDown$ = /** @type RxJs.Observable */ (\n RxJs.fromEvent(document, \"keydown\")\n );\n\n const keyUp$ = /** @type RxJs.Observable */ (\n RxJs.fromEvent(document, \"keyup\")\n );\n\n // don't capture key events originating in the designer\n function notDesigner({ target }) {\n const designer = document.getElementById(\"designer\");\n return !designer || !designer.contains(target);\n }\n\n // build the debounced key event stream\n const keyEvents$ = /** @type RxJs.Observable */ (\n // start with the key down stream\n keyDown$.pipe(\n // merge with the key up stream\n RxJs.mergeWith(keyUp$),\n // ignore events from the designer\n RxJs.filter((e) => notDesigner(e)),\n // prevent default actions\n RxJs.tap((e) => e.preventDefault()),\n // remove any repeats\n RxJs.filter((e) => !e.repeat),\n // group by the key\n RxJs.groupBy((e) => e.key),\n // process each group and merge the results\n RxJs.mergeMap((group$) =>\n group$.pipe(\n // debounce flurries of events\n RxJs.debounceTime(debounceInterval),\n // wait for a key down\n RxJs.skipWhile((e) => e.type != \"keydown\"),\n // only output when the type changes\n RxJs.distinctUntilKeyChanged(\"type\"),\n ),\n ),\n RxJs.map((e) => {\n // add context info to event for use in the conditions and response\n /** @type {EventLike} */\n let kw = {\n type: e.type,\n target: null,\n timeStamp: e.timeStamp,\n access: {\n key: e.key,\n altKey: e.altKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n shiftKey: e.shiftKey,\n eventType: e.type,\n ...method.pattern.getCurrentAccess(),\n },\n };\n return kw;\n }),\n )\n );\n method.streams[streamName] = keyEvents$;\n }\n\n /**\n * Test the conditions for this handler\n * @param {EventLike} event\n * @returns {boolean}\n */\n test(event) {\n const signal = this.Signal.value;\n\n // key conditions are OR'ed together\n // Other conditions are AND'ed\n const keys = this.keys;\n const conditions = this.conditions.filter(\n (condition) => !(condition instanceof HandlerKeyCondition),\n );\n return (\n event.type == signal &&\n (keys.length == 0 || keys.some((key) => key.eval(event.access))) &&\n conditions.every((condition) => condition.eval(event.access))\n );\n }\n}\nTreeBase.register(KeyHandler, \"KeyHandler\");\n","/**\n * Handle pointer events integrated with Pattern.Groups\n *\n * TODO: we should be \"over\" the current button after activate. We are\n * currently not until you leave the current button and return.\n */\n\nimport { TreeBase } from \"components/treebase\";\nimport { Handler } from \"./index\";\nimport * as Props from \"components/props\";\nimport { html } from \"uhtml\";\nimport * as RxJs from \"rxjs\";\n\nconst pointerSignals = new Map([\n [\"pointerdown\", \"Pointer down\"],\n [\"pointerup\", \"Pointer up\"],\n [\"pointerover\", \"Pointer enter\"],\n [\"pointerout\", \"Pointer leave\"],\n]);\n\nexport class PointerHandler extends Handler {\n allowedChildren = [\"HandlerCondition\", \"HandlerResponse\"];\n\n Signal = new Props.Select(pointerSignals);\n SkipOnRedraw = new Props.Boolean(false);\n\n settings() {\n const { conditions, responses, Signal } = this;\n const skip =\n this.Signal.value == \"pointerover\"\n ? this.SkipOnRedraw.input()\n : this.empty;\n return html`\n
    \n Pointer Handler\n ${Signal.input()} ${skip}\n
    \n Conditions\n ${this.unorderedChildren(conditions)}\n
    \n
    \n Responses\n ${this.unorderedChildren(responses)}\n
    \n
    \n `;\n }\n\n /** @param {RxJs.Subject} _ */\n configure(_) {\n const method = this.method;\n const streamName = \"pointer\";\n // only create it once\n if (method.streams[streamName]) return;\n\n const pattern = method.pattern;\n\n const inOutThreshold = method.PointerEnterDebounce.valueAsNumber * 1000;\n const upDownThreshold = method.PointerDownDebounce.valueAsNumber * 1000;\n\n /**\n * Get the types correct\n *\n * @param {string} event\n * @returns {RxJs.Observable}\n */\n function fromPointerEvent(event) {\n return /** @type {RxJs.Observable} */ (\n RxJs.fromEvent(document, event)\n );\n }\n\n const pointerDown$ = fromPointerEvent(\"pointerdown\").pipe(\n // disable pointer capture\n RxJs.tap(\n (x) =>\n x.target instanceof Element &&\n x.target.hasPointerCapture(x.pointerId) &&\n x.target.releasePointerCapture(x.pointerId),\n ),\n RxJs.throttleTime(upDownThreshold),\n );\n\n const pointerUp$ = fromPointerEvent(\"pointerup\").pipe(\n RxJs.throttleTime(upDownThreshold),\n );\n\n /** @type {EventLike} */\n const None = { type: \"none\", target: null, timeStamp: 0 };\n\n /** This function defines the State Machine that will be applied to the stream\n * of events by the RxJs.scan operator. It takes this function and an initial state\n * and produces a stream of states. On each cycle after the first the input state\n * will be the output state from the previous cycle.\n *\n * Define the state for the machine\n *\n * @typedef {Object} machineState\n * @property {EventLike} current - the currently active target\n * @property {EventLike} over - the element we're currently over\n * @property {number} timeStamp - the time of the last event\n * @property {Map} accumulators - total time spent over each element\n * @property {EventLike[]} emittedEvents - events to pass along\n *\n * @param {machineState} state\n * @param {EventLike} event - the incoming pointer event\n * @returns {machineState}\n */\n function stateMachine(\n { current, over, timeStamp, accumulators, emittedEvents },\n event,\n ) {\n // whenever we emit an event the pattern might get changed in the response\n // check here to see if the target is still the same\n if (emittedEvents.length > 0 && over !== None) {\n const newOver = pattern.remapEventTarget({\n ...over,\n target: over.originalTarget,\n });\n if (newOver.target !== over.target) {\n // copy the accumulator to the new target\n accumulators.set(newOver.target, accumulators.get(over.target) || 0);\n // zero the old target\n accumulators.set(over.target, 0);\n // use this new target\n over = newOver;\n }\n }\n\n // time since last event\n const dt = event.timeStamp - timeStamp;\n timeStamp = event.timeStamp;\n // clear the emitted Events\n emittedEvents = [];\n // increment the time of the target we are over\n let sum = accumulators.get(over.target) || 0;\n sum += dt;\n accumulators.set(over.target, sum);\n const threshold = inOutThreshold;\n // exceeding the threshold triggers production of events\n if (sum > threshold) {\n // clamp it at the threshold value\n accumulators.set(over.target, threshold);\n if (over.target != current.target) {\n if (current !== None) {\n emittedEvents.push({ ...current, type: \"pointerout\" });\n }\n current = over;\n if (current !== None) {\n emittedEvents.push({ ...current, type: \"pointerover\" });\n // console.log(\"push pointerover\", events);\n }\n } else {\n current = over;\n }\n }\n // decrement the other accumulators\n for (let [target, value] of accumulators) {\n if (target !== over.target) {\n value -= dt;\n if (value <= 0) {\n // this should prevent keeping old ones alive\n accumulators.delete(target);\n } else {\n accumulators.set(target, value);\n }\n }\n }\n if (event.type == \"pointerover\") {\n over = pattern.remapEventTarget(event);\n } else if (event.type == \"pointerout\") {\n over = None;\n } else if (event.type == \"pointerdown\" && current !== None) {\n emittedEvents.push({ ...current, type: \"pointerdown\" });\n } else if (event.type == \"pointerup\" && current !== None) {\n emittedEvents.push({ ...current, type: \"pointerup\" });\n }\n return {\n current,\n over,\n timeStamp,\n accumulators,\n emittedEvents,\n };\n }\n\n const pointerStream$ = pointerDown$.pipe(\n // merge the streams\n RxJs.mergeWith(\n pointerUp$,\n fromPointerEvent(\"pointerover\"),\n fromPointerEvent(\"pointerout\"),\n fromPointerEvent(\"contextmenu\"),\n ),\n // keep only events related to buttons within the UI\n RxJs.filter(\n (e) =>\n e.target instanceof HTMLButtonElement &&\n e.target.closest(\"div#UI\") !== null &&\n !e.target.disabled,\n ),\n // kill contextmenu events\n RxJs.tap((e) => e.type === \"contextmenu\" && e.preventDefault()),\n\n // Add the timer events\n RxJs.mergeWith(\n // I pulled 10ms out of my ear, would 20 or even 50 do?\n RxJs.timer(10, 10).pipe(RxJs.map(() => new PointerEvent(\"tick\"))),\n ),\n // run the state machine\n RxJs.scan(stateMachine, {\n // the initial state\n current: None,\n over: None,\n timeStamp: 0,\n accumulators: new Map(),\n emittedEvents: [],\n }),\n RxJs.filter((s) => s.emittedEvents.length > 0),\n RxJs.mergeMap((state) =>\n RxJs.of(\n ...state.emittedEvents.map((event) => {\n /** @type {EventLike} */\n let w = {\n ...event,\n timeStamp: state.timeStamp,\n access: event.access,\n };\n w.access.eventType = event.type;\n return w;\n }),\n ),\n ),\n // multicast the stream\n RxJs.share(),\n );\n\n method.streams[streamName] = pointerStream$;\n }\n}\nTreeBase.register(PointerHandler, \"PointerHandler\");\n","import { __assign, __extends } from \"tslib\";\nimport { Subject, AnonymousSubject } from '../../Subject';\nimport { Subscriber } from '../../Subscriber';\nimport { Observable } from '../../Observable';\nimport { Subscription } from '../../Subscription';\nimport { ReplaySubject } from '../../ReplaySubject';\nvar DEFAULT_WEBSOCKET_CONFIG = {\n url: '',\n deserializer: function (e) { return JSON.parse(e.data); },\n serializer: function (value) { return JSON.stringify(value); },\n};\nvar WEBSOCKETSUBJECT_INVALID_ERROR_OBJECT = 'WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }';\nvar WebSocketSubject = (function (_super) {\n __extends(WebSocketSubject, _super);\n function WebSocketSubject(urlConfigOrSource, destination) {\n var _this = _super.call(this) || this;\n _this._socket = null;\n if (urlConfigOrSource instanceof Observable) {\n _this.destination = destination;\n _this.source = urlConfigOrSource;\n }\n else {\n var config = (_this._config = __assign({}, DEFAULT_WEBSOCKET_CONFIG));\n _this._output = new Subject();\n if (typeof urlConfigOrSource === 'string') {\n config.url = urlConfigOrSource;\n }\n else {\n for (var key in urlConfigOrSource) {\n if (urlConfigOrSource.hasOwnProperty(key)) {\n config[key] = urlConfigOrSource[key];\n }\n }\n }\n if (!config.WebSocketCtor && WebSocket) {\n config.WebSocketCtor = WebSocket;\n }\n else if (!config.WebSocketCtor) {\n throw new Error('no WebSocket constructor can be found');\n }\n _this.destination = new ReplaySubject();\n }\n return _this;\n }\n WebSocketSubject.prototype.lift = function (operator) {\n var sock = new WebSocketSubject(this._config, this.destination);\n sock.operator = operator;\n sock.source = this;\n return sock;\n };\n WebSocketSubject.prototype._resetState = function () {\n this._socket = null;\n if (!this.source) {\n this.destination = new ReplaySubject();\n }\n this._output = new Subject();\n };\n WebSocketSubject.prototype.multiplex = function (subMsg, unsubMsg, messageFilter) {\n var self = this;\n return new Observable(function (observer) {\n try {\n self.next(subMsg());\n }\n catch (err) {\n observer.error(err);\n }\n var subscription = self.subscribe({\n next: function (x) {\n try {\n if (messageFilter(x)) {\n observer.next(x);\n }\n }\n catch (err) {\n observer.error(err);\n }\n },\n error: function (err) { return observer.error(err); },\n complete: function () { return observer.complete(); },\n });\n return function () {\n try {\n self.next(unsubMsg());\n }\n catch (err) {\n observer.error(err);\n }\n subscription.unsubscribe();\n };\n });\n };\n WebSocketSubject.prototype._connectSocket = function () {\n var _this = this;\n var _a = this._config, WebSocketCtor = _a.WebSocketCtor, protocol = _a.protocol, url = _a.url, binaryType = _a.binaryType;\n var observer = this._output;\n var socket = null;\n try {\n socket = protocol ? new WebSocketCtor(url, protocol) : new WebSocketCtor(url);\n this._socket = socket;\n if (binaryType) {\n this._socket.binaryType = binaryType;\n }\n }\n catch (e) {\n observer.error(e);\n return;\n }\n var subscription = new Subscription(function () {\n _this._socket = null;\n if (socket && socket.readyState === 1) {\n socket.close();\n }\n });\n socket.onopen = function (evt) {\n var _socket = _this._socket;\n if (!_socket) {\n socket.close();\n _this._resetState();\n return;\n }\n var openObserver = _this._config.openObserver;\n if (openObserver) {\n openObserver.next(evt);\n }\n var queue = _this.destination;\n _this.destination = Subscriber.create(function (x) {\n if (socket.readyState === 1) {\n try {\n var serializer = _this._config.serializer;\n socket.send(serializer(x));\n }\n catch (e) {\n _this.destination.error(e);\n }\n }\n }, function (err) {\n var closingObserver = _this._config.closingObserver;\n if (closingObserver) {\n closingObserver.next(undefined);\n }\n if (err && err.code) {\n socket.close(err.code, err.reason);\n }\n else {\n observer.error(new TypeError(WEBSOCKETSUBJECT_INVALID_ERROR_OBJECT));\n }\n _this._resetState();\n }, function () {\n var closingObserver = _this._config.closingObserver;\n if (closingObserver) {\n closingObserver.next(undefined);\n }\n socket.close();\n _this._resetState();\n });\n if (queue && queue instanceof ReplaySubject) {\n subscription.add(queue.subscribe(_this.destination));\n }\n };\n socket.onerror = function (e) {\n _this._resetState();\n observer.error(e);\n };\n socket.onclose = function (e) {\n if (socket === _this._socket) {\n _this._resetState();\n }\n var closeObserver = _this._config.closeObserver;\n if (closeObserver) {\n closeObserver.next(e);\n }\n if (e.wasClean) {\n observer.complete();\n }\n else {\n observer.error(e);\n }\n };\n socket.onmessage = function (e) {\n try {\n var deserializer = _this._config.deserializer;\n observer.next(deserializer(e));\n }\n catch (err) {\n observer.error(err);\n }\n };\n };\n WebSocketSubject.prototype._subscribe = function (subscriber) {\n var _this = this;\n var source = this.source;\n if (source) {\n return source.subscribe(subscriber);\n }\n if (!this._socket) {\n this._connectSocket();\n }\n this._output.subscribe(subscriber);\n subscriber.add(function () {\n var _socket = _this._socket;\n if (_this._output.observers.length === 0) {\n if (_socket && (_socket.readyState === 1 || _socket.readyState === 0)) {\n _socket.close();\n }\n _this._resetState();\n }\n });\n return subscriber;\n };\n WebSocketSubject.prototype.unsubscribe = function () {\n var _socket = this._socket;\n if (_socket && (_socket.readyState === 1 || _socket.readyState === 0)) {\n _socket.close();\n }\n this._resetState();\n _super.prototype.unsubscribe.call(this);\n };\n return WebSocketSubject;\n}(AnonymousSubject));\nexport { WebSocketSubject };\n//# sourceMappingURL=WebSocketSubject.js.map","import { WebSocketSubject } from './WebSocketSubject';\nexport function webSocket(urlConfigOrSource) {\n return new WebSocketSubject(urlConfigOrSource);\n}\n//# sourceMappingURL=webSocket.js.map","import { TreeBase } from \"components/treebase\";\nimport { Handler } from \"./index\";\nimport * as Props from \"components/props\";\nimport { html } from \"uhtml\";\nimport * as RxJs from \"rxjs\";\nimport { webSocket } from \"rxjs/webSocket\";\nimport Globals from \"app/globals\";\nimport { GridFilter } from \"components/gridFilter\";\n\nexport class SocketHandler extends Handler {\n allowedChildren = [\"HandlerCondition\", \"HandlerResponse\", \"GridFilter\"];\n\n StateName = new Props.String(\"$socket\");\n URL = new Props.String(\"ws://localhost:5678/\");\n\n get filters() {\n return this.filterChildren(GridFilter);\n }\n\n settings() {\n const { conditions, responses, StateName, URL } = this;\n return html`\n
    \n Socket Handler\n ${StateName.input()} ${URL.input()}\n
    \n Conditions\n ${this.unorderedChildren(conditions)}\n
    \n
    \n Responses\n ${this.unorderedChildren(responses)}\n
    \n ${GridFilter.FilterSettings(this.filters)}\n
    \n `;\n }\n\n init() {\n // set the signal value\n this.Signal.set(\"socket\");\n\n // arrange to watch for state changes\n // TODO: figure out how to remove these or make them weak\n Globals.state.observe(() => {\n if (Globals.state.hasBeenUpdated(this.StateName.value)) {\n if (!this.socket) {\n // the connect wasn't successfully opened, try again\n console.error(\"socket is not active\");\n return;\n }\n this.sendData();\n }\n });\n }\n\n /** The websocket wrapper object\n * @type {import(\"rxjs/webSocket\").WebSocketSubject | undefined} */\n socket = undefined;\n\n /** The stream of events from the websocket\n * @type {RxJs.Observable | undefined} */\n socket$ = undefined;\n\n /** @param {RxJs.Subject} _stop$ */\n configure(_stop$) {\n const method = this.method;\n const streamName = \"socket\";\n // only create it once\n if (method.streams[streamName]) return;\n\n // this is the socket object\n this.socket = webSocket(this.URL.value);\n\n // this is the stream of events from it\n this.socket$ = this.socket.pipe(\n RxJs.retry({ count: 10, delay: 5000 }),\n RxJs.map((msg) => {\n const event = new Event(\"socket\");\n /** @type {EventLike} */\n const wrapped = {\n type: \"socket\",\n timeStamp: event.timeStamp,\n access: msg,\n target: null,\n };\n return wrapped;\n }),\n RxJs.tap((e) => console.log(\"socket\", e)),\n );\n method.streams[streamName] = this.socket$;\n }\n\n /** @param {EventLike} event */\n respond(event) {\n console.log(\"socket respond\", event.type);\n\n /* Incoming data arrives here in the .access property. This code will filter any arrays of objects and\n * include them in the dynamic data\n */\n let dynamicRows = [];\n const fields = [];\n for (const [key, value] of Object.entries(event.access)) {\n console.log(key, value);\n if (\n Array.isArray(value) &&\n value.length > 0 &&\n typeof value[0] === \"object\" &&\n value[0] !== null\n ) {\n dynamicRows = dynamicRows.concat(value);\n } else {\n fields.push([key, value]);\n }\n }\n event.access = Object.fromEntries(fields);\n if (dynamicRows.length > 0) {\n Globals.data.setDynamicRows(dynamicRows);\n }\n // pass incoming messages to the response\n super.respond(event);\n }\n\n sendData() {\n if (!this.socket) return;\n\n // send the data over the websocket\n const name = this.method.Name.value;\n const message = {\n method: name,\n stateName: this.StateName.value,\n URL: this.URL.value,\n state: Globals.state.values,\n };\n const filters = GridFilter.toContentFilters(this.filters);\n if (filters.length > 0) {\n const content = Globals.data.getMatchingRows(\n filters,\n Globals.state,\n undefined, // no cache for now\n false, // do not pass NULL for the undefined fields\n );\n message[\"content\"] = content;\n }\n this.socket.next(message);\n }\n}\nTreeBase.register(SocketHandler, \"SocketHandler\");\n","import { TreeBase } from \"components/treebase\";\nimport { Handler } from \"./index\";\nimport * as Props from \"components/props\";\nimport { html } from \"uhtml\";\nimport * as RxJs from \"rxjs\";\nimport { Method } from \"./index\";\n\nconst timerSignals = new Map([\n [\"transitionend\", \"Transition end\"],\n [\"animationend\", \"Animation end\"],\n [\"timer\", \"Timer complete\"],\n]);\n\nexport class TimerHandler extends Handler {\n allowedChildren = [\"HandlerCondition\", \"HandlerResponse\"];\n\n Signal = new Props.Select(timerSignals);\n TimerName = new Props.Select([], { hiddenLabel: true });\n\n settings() {\n const { conditions, responses, Signal } = this;\n const timerNames = this.nearestParent(Method)?.timerNames;\n return html`\n
    \n Timer Handler\n ${Signal.input()} ${this.TimerName.input(timerNames)}\n
    \n Conditions\n ${this.unorderedChildren(conditions)}\n
    \n
    \n Responses\n ${this.unorderedChildren(responses)}\n
    \n
    \n `;\n }\n\n /** @param {RxJs.Subject} _stop$ */\n configure(_stop$) {\n const method = this.method;\n const timerName = this.TimerName.value;\n // there could be multiple timers active at once\n const streamName = `timer-${timerName}`;\n // only create it once\n if (method.streams[streamName]) return;\n\n const timer = method.timer(timerName);\n if (!timer) return;\n\n const delayTime = 1000 * timer.Interval.valueAsNumber;\n method.streams[streamName] = timer.subject$.pipe(\n RxJs.switchMap((event) =>\n event.type == \"cancel\"\n ? RxJs.EMPTY\n : RxJs.of(event).pipe(RxJs.delay(delayTime)),\n ),\n );\n }\n}\nTreeBase.register(TimerHandler, \"TimerHandler\");\n","export default {\n className: \"CueList\",\n props: {\n direction: \"\",\n background: \"\",\n scale: 1,\n name: \"Cues\",\n label: \"\",\n },\n children: [\n {\n className: \"CueOverlay\",\n props: {\n Name: \"red overlay\",\n Key: \"idl7w16hghqop9hcgn95\",\n CueType: \"CueOverlay\",\n Default: true,\n Color: \"red\",\n Opacity: \"0.2\",\n },\n children: [],\n },\n {\n className: \"CueFill\",\n props: {\n Name: \"fill\",\n Key: \"idl7ysqw4agxg63qvx4j5\",\n CueType: \"CueFill\",\n Default: false,\n Color: \"#7BAFD4\",\n Opacity: \"0.3\",\n Direction: \"top\",\n Repeat: false,\n },\n children: [],\n },\n {\n className: \"CueCircle\",\n props: {\n Name: \"circle\",\n Key: \"idl7ythslqew02w4pom29\",\n CueType: \"CueCircle\",\n Default: false,\n Color: \"#7BAFD4\",\n Opacity: 0.7,\n },\n children: [],\n },\n {\n className: \"CueCss\",\n props: {\n Name: \"yellow overlay using CSS\",\n Key: \"idl7qm4cs28fh2ogf4ni\",\n CueType: \"CueCss\",\n Default: false,\n Code: `button[cue=\"$Key\"] {\n position: relative;\n border-color: yellow;\n}\nbutton[cue=\"$Key\"]:after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: yellow;\n opacity: 0.3;\n z-index: 10;\n}`,\n },\n children: [],\n },\n ],\n};\n","import { html } from \"uhtml\";\nimport \"css/cues.css\";\nimport { TreeBase, TreeBaseSwitchable } from \"components/treebase\";\nimport { DesignerPanel } from \"components/designer\";\nimport * as Props from \"components/props\";\n\nimport { toggleIndicator } from \"components/helpers\";\nimport { getColor } from \"components/style\";\nimport defaultCues from \"./defaultCues\";\n\nexport class CueList extends DesignerPanel {\n name = new Props.String(\"Cues\");\n\n static tableName = \"cues\";\n static defaultValue = defaultCues;\n\n allowedChildren = [\"CueCss\", \"CueFill\", \"CueOverlay\", \"CueCircle\"];\n /** @type {Cue[]} */\n children = [];\n\n allowDelete = false;\n\n settings() {\n return html`
    \n ${this.unorderedChildren()}\n
    `;\n }\n\n /** @returns {Hole|Hole[]} */\n template() {\n const result = this.children.map(\n (child) =>\n html``\n );\n if (this.children.length > 0) {\n const defaultCue = this.defaultCue;\n const defaultCSS = defaultCue.css.replaceAll(\n defaultCue.Key.value,\n \"DefaultCue\"\n );\n result.push(\n html``\n );\n }\n return result;\n }\n\n get cueMap() {\n /** @type {[string,string][]} */\n const entries = this.children.map((child) => [\n child.Key.value,\n child.Name.value,\n ]);\n entries.unshift([\"DefaultCue\", \"Default Cue\"]);\n return new Map(entries);\n }\n\n get defaultCue() {\n return this.children.find((cue) => cue.Default.value) || this.children[0];\n }\n\n /** @param {Object} obj */\n static upgrade(obj) {\n // update any CueCss entries to the new style interpolation\n if (obj.className == \"CueList\") {\n for (const child of obj.children) {\n if (child.className == \"CueCss\") {\n child.props.Code = child.props.Code.replaceAll(\"{{Key}}\", \"$Key\");\n }\n }\n }\n return obj;\n }\n}\nTreeBase.register(CueList, \"CueList\");\n\nconst CueTypes = new Map([\n [\"Cue\", \"none\"],\n [\"CueOverlay\", \"overlay\"],\n [\"CueFill\", \"fill\"],\n [\"CueCss\", \"css\"],\n [\"CueCircle\", \"circle\"],\n]);\n\nclass Cue extends TreeBaseSwitchable {\n Name = new Props.String(\"a cue\");\n Key = new Props.UID();\n CueType = new Props.TypeSelect(CueTypes);\n Default = new Props.OneOfGroup(false, { name: \"DefaultCue\" });\n\n settingsSummary() {\n return html`

    \n ${this.Name.value} ${toggleIndicator(this.Default.value, \"Default cue\")}\n

    `;\n }\n\n settingsDetails() {\n return html`
    \n ${this.Name.input()} ${this.Default.input()} ${this.CueType.input()}\n ${this.subTemplate()}\n
    `;\n }\n\n /** @returns {Hole[]} */\n subTemplate() {\n return [this.empty];\n }\n\n get css() {\n return \"\";\n }\n}\nTreeBase.register(Cue, \"Cue\");\n\nclass CueCss extends Cue {\n Code = new Props.Code(\"\", {\n placeholder: \"Enter CSS for this cue\",\n hiddenLabel: true,\n });\n\n subTemplate() {\n return [this.Code.input()];\n }\n\n get css() {\n return this.Code.editedValue;\n }\n\n onUpdate() {\n this.Code.editCSS(this.props);\n }\n\n init() {\n this.onUpdate();\n }\n}\nTreeBase.register(CueCss, \"CueCss\");\n\nclass CueOverlay extends Cue {\n Color = new Props.Color(\"yellow\");\n Opacity = new Props.Float(0.3);\n\n subTemplate() {\n return [this.Color.input(), this.Opacity.input(),\n html`
    \n generated CSS\n
    ${this.css.replaceAll(this.Key.value, \"$Key\")}
    \n
    `];\n }\n\n get css() {\n return `\n#UI button[cue=\"${this.Key.value}\"] {\n position: relative;\n border-color: ${getColor(this.Color.value)};\n }\n#UI button[cue=\"${this.Key.value}\"]:after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: ${getColor(this.Color.value)};\n opacity: ${this.Opacity.value};\n z-index: 10;\n }\n `;\n }\n}\nTreeBase.register(CueOverlay, \"CueOverlay\");\n\nconst fillDirections = new Map([\n [\"top\", \"up\"],\n [\"bottom\", \"down\"],\n [\"right\", \"left to right\"],\n [\"left\", \"right to left\"],\n]);\nclass CueFill extends Cue {\n Color = new Props.Color(\"blue\");\n Opacity = new Props.Float(0.3);\n Direction = new Props.Select(fillDirections);\n Repeat = new Props.Boolean(false);\n\n subTemplate() {\n return [this.Color.input(), this.Opacity.input(),\n this.Direction.input(), this.Repeat.input(),\n html`
    \n generated CSS\n
    ${this.css.replaceAll(this.Key.value, \"$Key\")}
    \n
    `];\n }\n\n get css() {\n return `\n button[cue=\"${this.Key.value}\"] {\n position: relative;\n border-color: ${getColor(this.Color.value)};\n }\n button[cue=\"${this.Key.value}\"]:after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n\n background-color: ${getColor(this.Color.value)};\n opacity: ${this.Opacity.value};\n z-index: 10;\n animation-name: ${this.Key.value};\n animation-duration: var(--timerInterval);\n animation-timing-function: linear;\n animation-iteration-count: ${this.Repeat.value ? \"infinite\" : 1};\n }\n @keyframes ${this.Key.value} {\n 0% { ${this.Direction.value}: 100%; }\n 100% { ${this.Direction.value}: 0%; }\n }\n `;\n }\n}\nTreeBase.register(CueFill, \"CueFill\");\n\nclass CueCircle extends Cue {\n Color = new Props.Color(\"lightblue\");\n Opacity = new Props.Float(0.3);\n\n subTemplate() {\n return [this.Color.input(), this.Opacity.input(),\n html`
    \n generated CSS\n
    ${this.css.replaceAll(this.Key.value, \"$Key\")}
    \n
    `];\n }\n\n get css() {\n return `\n@property --percent-${this.Key.value} {\n syntax: \"\";\n initial-value: 100%;\n inherits: false;\n}\nbutton[cue=\"${this.Key.value}\"] {\n position: relative;\n border-color: ${getColor(this.Color.value)};\n}\nbutton[cue=\"${this.Key.value}\"]:after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n -webkit-mask-image: radial-gradient(\n transparent,\n transparent 50%,\n #000 51%,\n #000 0\n );\n mask: radial-gradient(transparent, transparent 50%, #000 51%, #000 0);\n\n background-image: conic-gradient(\n from 0,\n ${getColor(this.Color.value)},\n ${getColor(this.Color.value)} var(--percent-${this.Key.value}),\n transparent var(--percent-${this.Key.value})\n );\n opacity: ${this.Opacity.value};\n\n animation-name: conic-gradient-${this.Key.value};\n animation-duration: var(--timerInterval);\n animation-timing-function: linear;\n\n z-index: 0;\n}\n\n@keyframes conic-gradient-${this.Key.value} {\n 0% {\n --percent-${this.Key.value}: 0%;\n }\n\n 100% {\n --percent-${this.Key.value}: 100%;\n }\n}\n `;\n }\n}\nTreeBase.register(CueCircle, \"CueCircle\");\n","export const TrackyMouse = {\n dependenciesRoot: \"./tracky-mouse\",\n};\n\nTrackyMouse.loadDependencies = function () {\n TrackyMouse.dependenciesRoot = TrackyMouse.dependenciesRoot.replace(\n /\\/+$/,\n \"\"\n );\n const loadScript = (src) => {\n return new Promise((resolve, reject) => {\n // This wouldn't wait for them to load\n // for (const script of document.scripts) {\n // \tif (script.src.includes(src)) {\n // \t\tresolve();\n // \t\treturn;\n // \t}\n // }\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.onload = resolve;\n script.onerror = reject;\n script.src = src;\n document.head.append(script);\n });\n };\n const scriptFiles = [\n `${TrackyMouse.dependenciesRoot}/lib/clmtrackr.js`,\n `${TrackyMouse.dependenciesRoot}/lib/facemesh/facemesh.js`,\n `${TrackyMouse.dependenciesRoot}/lib/stats.js`,\n `${TrackyMouse.dependenciesRoot}/lib/tf.js`,\n ];\n return Promise.all(scriptFiles.map(loadScript));\n};\n\nTrackyMouse.init = function (div) {\n var uiContainer = div || document.createElement(\"div\");\n uiContainer.classList.add(\"tracky-mouse-ui\");\n uiContainer.innerHTML = `\n\t\t
    \n \n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t
    \n\t\t\n\t`;\n if (!div) {\n document.body.appendChild(uiContainer);\n }\n var mirrorCheckbox = uiContainer.querySelector(\"#mirror\");\n var sensitivityXSlider = uiContainer.querySelector(\"#sensitivity-x\");\n var sensitivityYSlider = uiContainer.querySelector(\"#sensitivity-y\");\n var accelerationSlider = uiContainer.querySelector(\"#acceleration\");\n var closeButton = uiContainer.querySelector(\"#tracky-mouse-close\");\n\n closeButton.addEventListener(\"click\", () => {\n console.log(\"click\");\n TrackyMouse.showUI(false);\n });\n\n var canvas = uiContainer.querySelector(\"#tracky-mouse-canvas\");\n var ctx = canvas.getContext(\"2d\");\n\n var pointerEl = document.createElement(\"div\");\n pointerEl.className = \"tracky-mouse-pointer\";\n document.body.appendChild(pointerEl);\n\n var cameraVideo = document.createElement(\"video\");\n // required to work in iOS 11 & up:\n cameraVideo.setAttribute(\"playsinline\", \"\");\n\n // var stats = new Stats();\n // stats.domElement.style.position = \"absolute\";\n // stats.domElement.style.top = \"0px\";\n // stats.domElement.style.right = \"0px\";\n // stats.domElement.style.left = \"\";\n // document.body.appendChild(stats.domElement);\n\n var defaultWidth = 640;\n var defaultHeight = 480;\n var maxPoints = 1000;\n var mouseX = 0;\n var mouseY = 0;\n var prevMovementX = 0;\n var prevMovementY = 0;\n var enableTimeTravel = false;\n // var movementXSinceFacemeshUpdate = 0;\n // var movementYSinceFacemeshUpdate = 0;\n var cameraFramesSinceFacemeshUpdate = [];\n var sensitivityX;\n var sensitivityY;\n var acceleration;\n var face;\n var faceScore = 0;\n var faceScoreThreshold = 0.5;\n var faceConvergence = 0;\n var faceConvergenceThreshold = 50;\n var pointsBasedOnFaceScore = 0;\n var paused = false;\n var mouseNeedsInitPos = true;\n const SLOWMO = false;\n var debugTimeTravel = false;\n var debugAcceleration = false;\n var showDebugText = false;\n var mirror;\n\n var useClmTracking = false;\n var showClmTracking = useClmTracking;\n var useFacemesh = true;\n var facemeshOptions = {\n maxContinuousChecks: 5,\n detectionConfidence: 0.9,\n maxFaces: 1,\n iouThreshold: 0.3,\n scoreThreshold: 0.75,\n };\n var fallbackTimeoutID;\n\n var facemeshLoaded = false;\n var facemeshFirstEstimation = true;\n var facemeshEstimating = false;\n var facemeshRejectNext = 0;\n var facemeshPrediction;\n var facemeshEstimateFaces;\n var faceInViewConfidenceThreshold = 0.7;\n var pointsBasedOnFaceInViewConfidence = 0;\n\n // scale of size of frames that are passed to worker and then computed several at once when backtracking for latency compensation\n // reducing this makes it much more likely to drop points and thus not work\n // THIS IS DISABLED and using a performance optimization of currentCameraImageData instead of getCameraImageData;\n // (the currentCameraImageData is also scaled differently, to the fixed canvas size instead of using the native camera image size)\n // const frameScaleForWorker = 1;\n\n var mainOops;\n var workerSyncedOops;\n\n // const frameCanvas = document.createElement(\"canvas\");\n // const frameCtx = frameCanvas.getContext(\"2d\");\n // const getCameraImageData = () => {\n // \tif (cameraVideo.videoWidth * frameScaleForWorker * cameraVideo.videoHeight * frameScaleForWorker < 1) {\n // \t\treturn;\n // \t}\n // \tframeCanvas.width = cameraVideo.videoWidth * frameScaleForWorker;\n // \tframeCanvas.height = cameraVideo.videoHeight * frameScaleForWorker;\n // \tframeCtx.drawImage(cameraVideo, 0, 0, frameCanvas.width, frameCanvas.height);\n // \treturn frameCtx.getImageData(0, 0, frameCanvas.width, frameCanvas.height);\n // };\n\n let currentCameraImageData;\n let facemeshWorker;\n const initFacemeshWorker = () => {\n if (facemeshWorker) {\n facemeshWorker.terminate();\n }\n facemeshEstimating = false;\n facemeshFirstEstimation = true;\n facemeshLoaded = false;\n facemeshWorker = new Worker(\n `${TrackyMouse.dependenciesRoot}/facemesh.worker.js`\n );\n facemeshWorker.addEventListener(\n \"message\",\n (e) => {\n // console.log('Message received from worker', e.data);\n if (e.data.type === \"LOADED\") {\n facemeshLoaded = true;\n facemeshEstimateFaces = () => {\n const imageData = currentCameraImageData; //getCameraImageData();\n if (!imageData) {\n return;\n }\n facemeshWorker.postMessage({ type: \"ESTIMATE_FACES\", imageData });\n return new Promise((resolve, reject) => {\n facemeshWorker.addEventListener(\n \"message\",\n (e) => {\n if (e.data.type === \"ESTIMATED_FACES\") {\n resolve(e.data.predictions);\n }\n },\n { once: true }\n );\n });\n };\n }\n },\n { once: true }\n );\n facemeshWorker.postMessage({ type: \"LOAD\", options: facemeshOptions });\n };\n\n if (useFacemesh) {\n initFacemeshWorker();\n }\n\n sensitivityXSlider.onchange = () => {\n sensitivityX = sensitivityXSlider.value / 1000;\n };\n sensitivityYSlider.onchange = () => {\n sensitivityY = sensitivityYSlider.value / 1000;\n };\n accelerationSlider.onchange = () => {\n acceleration = accelerationSlider.value / 100;\n };\n mirrorCheckbox.onchange = () => {\n mirror = mirrorCheckbox.checked;\n };\n mirrorCheckbox.onchange();\n sensitivityXSlider.onchange();\n sensitivityYSlider.onchange();\n accelerationSlider.onchange();\n\n // Don't use WebGL because clmTracker is our fallback! It's also not much slower than with WebGL.\n var clmTracker = new clm.tracker({ useWebGL: false });\n clmTracker.init();\n var clmTrackingStarted = false;\n\n const reset = () => {\n clmTrackingStarted = false;\n cameraFramesSinceFacemeshUpdate.length = 0;\n if (facemeshPrediction) {\n // facemesh has a setting maxContinuousChecks that determines \"How many frames to go without running\n // the bounding box detector. Only relevant if maxFaces > 1. Defaults to 5.\"\n facemeshRejectNext = facemeshOptions.maxContinuousChecks;\n }\n facemeshPrediction = null;\n useClmTracking = true;\n showClmTracking = true;\n pointsBasedOnFaceScore = 0;\n faceScore = 0;\n faceConvergence = 0;\n };\n\n TrackyMouse.useCamera = () => {\n navigator.mediaDevices\n .getUserMedia({\n audio: false,\n video: {\n width: defaultWidth,\n height: defaultHeight,\n facingMode: \"user\",\n },\n })\n .then(\n (stream) => {\n reset();\n try {\n if (\"srcObject\" in cameraVideo) {\n cameraVideo.srcObject = stream;\n } else {\n cameraVideo.src = window.URL.createObjectURL(stream);\n }\n } catch (err) {\n cameraVideo.src = stream;\n }\n },\n (error) => {\n console.log(error);\n }\n );\n paused = false;\n };\n\n TrackyMouse.pauseCamera = () => {\n cameraVideo.srcObject &&\n cameraVideo.srcObject.getTracks().forEach((track) => track.stop());\n paused = true;\n };\n\n TrackyMouse.showUI = (show) => {\n document\n .querySelector(\"div.tracky-mouse-ui\")\n .classList.toggle(\"show\", show);\n };\n // useDemoFootageButton.onclick = TrackyMouse.useDemoFootage = () => {\n // reset();\n // cameraVideo.srcObject = null;\n // cameraVideo.src = `${TrackyMouse.dependenciesRoot}/private/demo-input-footage.webm`;\n // cameraVideo.loop = true;\n // };\n\n if (!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia)) {\n console.log(\"getUserMedia not supported in this browser\");\n }\n\n cameraVideo.addEventListener(\"loadedmetadata\", () => {\n cameraVideo.play();\n cameraVideo.width = cameraVideo.videoWidth;\n cameraVideo.height = cameraVideo.videoHeight;\n canvas.width = cameraVideo.videoWidth;\n canvas.height = cameraVideo.videoHeight;\n debugFramesCanvas.width = cameraVideo.videoWidth;\n debugFramesCanvas.height = cameraVideo.videoHeight;\n debugPointsCanvas.width = cameraVideo.videoWidth;\n debugPointsCanvas.height = cameraVideo.videoHeight;\n\n mainOops = new OOPS();\n if (useFacemesh) {\n workerSyncedOops = new OOPS();\n }\n });\n cameraVideo.addEventListener(\"play\", () => {\n clmTracker.reset();\n clmTracker.initFaceDetector(cameraVideo);\n clmTrackingStarted = true;\n });\n\n canvas.width = defaultWidth;\n canvas.height = defaultHeight;\n cameraVideo.width = defaultWidth;\n cameraVideo.height = defaultHeight;\n\n const debugFramesCanvas = document.createElement(\"canvas\");\n debugFramesCanvas.width = canvas.width;\n debugFramesCanvas.height = canvas.height;\n const debugFramesCtx = debugFramesCanvas.getContext(\"2d\");\n\n const debugPointsCanvas = document.createElement(\"canvas\");\n debugPointsCanvas.width = canvas.width;\n debugPointsCanvas.height = canvas.height;\n const debugPointsCtx = debugPointsCanvas.getContext(\"2d\");\n\n // function getPyramidData(pyramid) {\n // \tconst array = new Float32Array(pyramid.data.reduce((sum, matrix)=> sum + matrix.buffer.f32.length, 0));\n // \tlet offset = 0;\n // \tfor (const matrix of pyramid.data) {\n // \t\tcopy matrix.buffer.f32 into array starting at offset;\n // \t\toffset += matrix.buffer.f32.length;\n // \t}\n // \treturn array;\n // }\n // function setPyramidData(pyramid, array) {\n // \tlet offset = 0;\n // \tfor (const matrix of pyramid.data) {\n // \t\tcopy portion of array starting at offset into matrix.buffer.f32\n // \t\toffset += matrix.buffer.f32.length;\n // \t}\n // }\n\n // maybe should be based on size of head in view?\n const pruningGridSize = 5;\n const minDistanceToAddPoint = pruningGridSize * 1.5;\n\n // Object Oriented Programming Sucks\n // or Optical flOw Points System\n class OOPS {\n constructor() {\n this.curPyramid = new jsfeat.pyramid_t(3);\n this.prevPyramid = new jsfeat.pyramid_t(3);\n this.curPyramid.allocate(\n cameraVideo.videoWidth,\n cameraVideo.videoHeight,\n jsfeat.U8C1_t\n );\n this.prevPyramid.allocate(\n cameraVideo.videoWidth,\n cameraVideo.videoHeight,\n jsfeat.U8C1_t\n );\n\n this.pointCount = 0;\n this.pointStatus = new Uint8Array(maxPoints);\n this.prevXY = new Float32Array(maxPoints * 2);\n this.curXY = new Float32Array(maxPoints * 2);\n }\n addPoint(x, y) {\n if (this.pointCount < maxPoints) {\n var pointIndex = this.pointCount * 2;\n this.curXY[pointIndex] = x;\n this.curXY[pointIndex + 1] = y;\n this.prevXY[pointIndex] = x;\n this.prevXY[pointIndex + 1] = y;\n this.pointCount++;\n }\n }\n filterPoints(condition) {\n var outputPointIndex = 0;\n for (\n var inputPointIndex = 0;\n inputPointIndex < this.pointCount;\n inputPointIndex++\n ) {\n if (condition(inputPointIndex)) {\n if (outputPointIndex < inputPointIndex) {\n var inputOffset = inputPointIndex * 2;\n var outputOffset = outputPointIndex * 2;\n this.curXY[outputOffset] = this.curXY[inputOffset];\n this.curXY[outputOffset + 1] = this.curXY[inputOffset + 1];\n this.prevXY[outputOffset] = this.prevXY[inputOffset];\n this.prevXY[outputOffset + 1] = this.prevXY[inputOffset + 1];\n }\n outputPointIndex++;\n } else {\n debugPointsCtx.fillStyle = \"red\";\n var inputOffset = inputPointIndex * 2;\n circle(\n debugPointsCtx,\n this.curXY[inputOffset],\n this.curXY[inputOffset + 1],\n 5\n );\n debugPointsCtx.fillText(\n condition.toString(),\n 5 + this.curXY[inputOffset],\n this.curXY[inputOffset + 1]\n );\n // console.log(this.curXY[inputOffset], this.curXY[inputOffset + 1]);\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.moveTo(this.prevXY[inputOffset], this.prevXY[inputOffset + 1]);\n ctx.lineTo(this.curXY[inputOffset], this.curXY[inputOffset + 1]);\n ctx.stroke();\n }\n }\n this.pointCount = outputPointIndex;\n }\n prunePoints() {\n // pointStatus is only valid (indices line up) before filtering occurs, so must come first (could be combined though)\n this.filterPoints((pointIndex) => this.pointStatus[pointIndex] == 1);\n\n // De-duplicate points that are too close together\n // - Points that have collapsed together are completely useless.\n // - Points that are too close together are not necessarily helpful,\n // and may adversely affect the tracking due to uneven weighting across your face.\n // - Reducing the number of points improves FPS.\n const grid = {};\n for (let pointIndex = 0; pointIndex < this.pointCount; pointIndex++) {\n const pointOffset = pointIndex * 2;\n grid[\n `${~~(this.curXY[pointOffset] / pruningGridSize)},${~~(\n this.curXY[pointOffset + 1] / pruningGridSize\n )}`\n ] = pointIndex;\n }\n const indexesToKeep = Object.values(grid);\n this.filterPoints((pointIndex) => indexesToKeep.includes(pointIndex));\n }\n update(imageData) {\n [this.prevXY, this.curXY] = [this.curXY, this.prevXY];\n [this.prevPyramid, this.curPyramid] = [this.curPyramid, this.prevPyramid];\n\n // these are options worth breaking out and exploring\n var winSize = 20;\n var maxIterations = 30;\n var epsilon = 0.01;\n var minEigen = 0.001;\n\n jsfeat.imgproc.grayscale(\n imageData.data,\n imageData.width,\n imageData.height,\n this.curPyramid.data[0]\n );\n this.curPyramid.build(this.curPyramid.data[0], true);\n jsfeat.optical_flow_lk.track(\n this.prevPyramid,\n this.curPyramid,\n this.prevXY,\n this.curXY,\n this.pointCount,\n winSize,\n maxIterations,\n this.pointStatus,\n epsilon,\n minEigen\n );\n this.prunePoints();\n }\n draw(ctx) {\n for (var i = 0; i < this.pointCount; i++) {\n var pointOffset = i * 2;\n // var distMoved = Math.hypot(\n // \tthis.prevXY[pointOffset] - this.curXY[pointOffset],\n // \tthis.prevXY[pointOffset + 1] - this.curXY[pointOffset + 1]\n // );\n // if (distMoved >= 1) {\n // \tctx.fillStyle = \"lime\";\n // } else {\n // \tctx.fillStyle = \"gray\";\n // }\n circle(ctx, this.curXY[pointOffset], this.curXY[pointOffset + 1], 3);\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.moveTo(this.prevXY[pointOffset], this.prevXY[pointOffset + 1]);\n ctx.lineTo(this.curXY[pointOffset], this.curXY[pointOffset + 1]);\n ctx.stroke();\n }\n }\n getMovement() {\n var movementX = 0;\n var movementY = 0;\n var numMovements = 0;\n for (var i = 0; i < this.pointCount; i++) {\n var pointOffset = i * 2;\n movementX += this.curXY[pointOffset] - this.prevXY[pointOffset];\n movementY += this.curXY[pointOffset + 1] - this.prevXY[pointOffset + 1];\n numMovements += 1;\n }\n if (numMovements > 0) {\n movementX /= numMovements;\n movementY /= numMovements;\n }\n return [movementX, movementY];\n }\n }\n\n canvas.addEventListener(\"click\", (event) => {\n if (!mainOops) {\n return;\n }\n const rect = canvas.getBoundingClientRect();\n if (mirror) {\n mainOops.addPoint(\n ((rect.right - event.clientX) / rect.width) * canvas.width,\n ((event.clientY - rect.top) / rect.height) * canvas.height\n );\n } else {\n mainOops.addPoint(\n ((event.clientX - rect.left) / rect.width) * canvas.width,\n ((event.clientY - rect.top) / rect.height) * canvas.height\n );\n }\n });\n\n function maybeAddPoint(oops, x, y) {\n // In order to prefer points that already exist, since they're already tracking,\n // in order to keep a smooth overall tracking calculation,\n // don't add points if they're close to an existing point.\n // Otherwise, it would not just be redundant, but often remove the older points, in the pruning.\n for (var pointIndex = 0; pointIndex < oops.pointCount; pointIndex++) {\n var pointOffset = pointIndex * 2;\n // var distance = Math.hypot(\n // \tx - oops.curXY[pointOffset],\n // \ty - oops.curXY[pointOffset + 1]\n // );\n // if (distance < 8) {\n // \treturn;\n // }\n // It might be good to base this on the size of the face...\n // Also, since we're pruning points based on a grid,\n // there's not much point in using Euclidean distance here,\n // we can just look at x and y distances.\n if (\n Math.abs(x - oops.curXY[pointOffset]) <= minDistanceToAddPoint ||\n Math.abs(y - oops.curXY[pointOffset + 1]) <= minDistanceToAddPoint\n ) {\n return;\n }\n }\n oops.addPoint(x, y);\n }\n\n function animate() {\n requestAnimationFrame(animate);\n if (!paused)\n draw(!SLOWMO && (!paused || document.visibilityState === \"visible\"));\n }\n\n function draw(update = true) {\n ctx.resetTransform(); // in case there is an error, don't flip constantly back and forth due to mirroring\n ctx.clearRect(0, 0, canvas.width, canvas.height); // in case there's no footage\n ctx.save();\n ctx.drawImage(cameraVideo, 0, 0, canvas.width, canvas.height);\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n currentCameraImageData = imageData;\n\n if (mirror) {\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n ctx.drawImage(cameraVideo, 0, 0, canvas.width, canvas.height);\n }\n\n if (!mainOops) {\n return;\n }\n\n if (update) {\n if (clmTrackingStarted) {\n if (useClmTracking || showClmTracking) {\n try {\n clmTracker.track(cameraVideo);\n } catch (error) {\n console.warn(\"Error in clmTracker.track()\", error);\n if (clmTracker.getCurrentParameters().includes(NaN)) {\n console.warn(\"NaNs creeped in.\");\n }\n }\n face = clmTracker.getCurrentPosition();\n faceScore = clmTracker.getScore();\n faceConvergence = Math.pow(clmTracker.getConvergence(), 0.5);\n }\n if (facemeshLoaded && !facemeshEstimating) {\n facemeshEstimating = true;\n // movementXSinceFacemeshUpdate = 0;\n // movementYSinceFacemeshUpdate = 0;\n cameraFramesSinceFacemeshUpdate = [];\n // If I switch virtual console desktop sessions in Ubuntu with Ctrl+Alt+F1 (and back with Ctrl+Alt+F2),\n // WebGL context is lost, which breaks facemesh (and clmTracker if useWebGL is not false)\n // Error: Size(8192) must match the product of shape 0, 0, 0\n // at inferFromImplicitShape (tf.js:14142)\n // at Object.reshape$3 [as kernelFunc] (tf.js:110368)\n // at kernelFunc (tf.js:17241)\n // at tf.js:17334\n // at Engine.scopedRun (tf.js:17094)\n // at Engine.runKernelFunc (tf.js:17328)\n // at Engine.runKernel (tf.js:17171)\n // at reshape_ (tf.js:25875)\n // at reshape__op (tf.js:18348)\n // at executeOp (tf.js:85396)\n // WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost\n\n // Note that the first estimation from facemesh often takes a while,\n // and we don't want to continuously terminate the worker as it's working on those first results.\n // And also, for the first estimate it hasn't actually disabled clmtracker yet, so it's fine if it's a long timeout.\n clearTimeout(fallbackTimeoutID);\n fallbackTimeoutID = setTimeout(\n () => {\n if (!useClmTracking) {\n reset();\n clmTracker.init();\n clmTracker.reset();\n clmTracker.initFaceDetector(cameraVideo);\n clmTrackingStarted = true;\n console.warn(\"Falling back to clmtracker\");\n }\n // If you've switched desktop sessions, it will presuably fail to get a new webgl context until you've switched back\n // Is this setInterval useful, vs just starting the worker?\n // It probably has a faster cycle, with the code as it is now, but maybe not inherently.\n // TODO: do the extra getContext() calls add to a GPU process crash limit\n // that makes it only able to recover a couple times (outside the electron app)?\n // For electron, I set chromium flag --disable-gpu-process-crash-limit so it can recover unlimited times.\n // TODO: there's still the case of WebGL backend failing to initialize NOT due to the process crash limit,\n // where it'd be good to have it try again (maybe with exponential falloff?)\n // (I think I can move my fallbackTimeout code into/around `initFacemeshWorker` and `facemeshEstimateFaces`)\n\n // Note: clearTimeout/clearInterval work interchangably\n fallbackTimeoutID = setInterval(() => {\n try {\n // Once we can create a webgl2 canvas...\n document.createElement(\"canvas\").getContext(\"webgl2\");\n clearInterval(fallbackTimeoutID);\n // It's worth trying to re-initialize...\n setTimeout(() => {\n console.warn(\"Re-initializing facemesh worker\");\n initFacemeshWorker();\n facemeshRejectNext = 1; // or more?\n }, 1000);\n } catch (e) {}\n }, 500);\n },\n facemeshFirstEstimation ? 20000 : 2000\n );\n facemeshEstimateFaces().then(\n (predictions) => {\n facemeshEstimating = false;\n facemeshFirstEstimation = false;\n\n facemeshRejectNext -= 1;\n if (facemeshRejectNext > 0) {\n return;\n }\n\n facemeshPrediction = predictions[0]; // undefined if no faces found\n\n useClmTracking = false;\n showClmTracking = false;\n clearTimeout(fallbackTimeoutID);\n\n if (!facemeshPrediction) {\n return;\n }\n // this applies to facemeshPrediction.annotations as well, which references the same points\n // facemeshPrediction.scaledMesh.forEach((point) => {\n // \tpoint[0] /= frameScaleForWorker;\n // \tpoint[1] /= frameScaleForWorker;\n // });\n\n // time travel latency compensation\n // keep a history of camera frames since the prediciton was requested,\n // and analyze optical flow of new points over that history\n\n // mainOops.filterPoints(() => false); // for DEBUG, empty points (could probably also just set pointCount = 0;\n\n workerSyncedOops.filterPoints(() => false); // empty points (could probably also just set pointCount = 0;\n\n const { annotations } = facemeshPrediction;\n // nostrils\n workerSyncedOops.addPoint(\n annotations.noseLeftCorner[0][0],\n annotations.noseLeftCorner[0][1]\n );\n workerSyncedOops.addPoint(\n annotations.noseRightCorner[0][0],\n annotations.noseRightCorner[0][1]\n );\n // midway between eyes\n workerSyncedOops.addPoint(\n annotations.midwayBetweenEyes[0][0],\n annotations.midwayBetweenEyes[0][1]\n );\n // inner eye corners\n // workerSyncedOops.addPoint(annotations.leftEyeLower0[8][0], annotations.leftEyeLower0[8][1]);\n // workerSyncedOops.addPoint(annotations.rightEyeLower0[8][0], annotations.rightEyeLower0[8][1]);\n\n // console.log(workerSyncedOops.pointCount, cameraFramesSinceFacemeshUpdate.length, workerSyncedOops.curXY);\n if (enableTimeTravel) {\n debugFramesCtx.clearRect(\n 0,\n 0,\n debugFramesCanvas.width,\n debugFramesCanvas.height\n );\n setTimeout(() => {\n debugPointsCtx.clearRect(\n 0,\n 0,\n debugPointsCanvas.width,\n debugPointsCanvas.height\n );\n }, 900);\n cameraFramesSinceFacemeshUpdate.forEach((imageData, index) => {\n if (debugTimeTravel) {\n debugFramesCtx.save();\n debugFramesCtx.globalAlpha = 0.1;\n // debugFramesCtx.globalCompositeOperation = index % 2 === 0 ? \"xor\" : \"xor\";\n frameCtx.putImageData(imageData, 0, 0);\n // debugFramesCtx.putImageData(imageData, 0, 0);\n debugFramesCtx.drawImage(\n frameCanvas,\n 0,\n 0,\n canvas.width,\n canvas.height\n );\n debugFramesCtx.restore();\n debugPointsCtx.fillStyle = \"aqua\";\n workerSyncedOops.draw(debugPointsCtx);\n }\n workerSyncedOops.update(imageData);\n });\n }\n\n // Bring points from workerSyncedOops to realtime mainOops\n for (\n var pointIndex = 0;\n pointIndex < workerSyncedOops.pointCount;\n pointIndex++\n ) {\n const pointOffset = pointIndex * 2;\n maybeAddPoint(\n mainOops,\n workerSyncedOops.curXY[pointOffset],\n workerSyncedOops.curXY[pointOffset + 1]\n );\n }\n // Don't do this! It's not how this is supposed to work.\n // mainOops.pointCount = workerSyncedOops.pointCount;\n // for (var pointIndex = 0; pointIndex < workerSyncedOops.pointCount; pointIndex++) {\n // \tconst pointOffset = pointIndex * 2;\n // \tmainOops.curXY[pointOffset] = workerSyncedOops.curXY[pointOffset];\n // \tmainOops.curXY[pointOffset+1] = workerSyncedOops.curXY[pointOffset+1];\n // \tmainOops.prevXY[pointOffset] = workerSyncedOops.prevXY[pointOffset];\n // \tmainOops.prevXY[pointOffset+1] = workerSyncedOops.prevXY[pointOffset+1];\n // }\n\n // naive latency compensation\n // Note: this applies to facemeshPrediction.annotations as well which references the same point objects\n // Note: This latency compensation only really works if it's already tracking well\n // if (prevFaceInViewConfidence > 0.99) {\n // \tfacemeshPrediction.scaledMesh.forEach((point) => {\n // \t\tpoint[0] += movementXSinceFacemeshUpdate;\n // \t\tpoint[1] += movementYSinceFacemeshUpdate;\n // \t});\n // }\n\n pointsBasedOnFaceInViewConfidence =\n facemeshPrediction.faceInViewConfidence;\n\n // TODO: separate confidence threshold for removing vs adding points?\n\n // cull points to those within useful facial region\n // TODO: use time travel for this too, probably! with a history of the points\n // a complexity would be that points can be removed over time and we need to keep them identified\n mainOops.filterPoints((pointIndex) => {\n var pointOffset = pointIndex * 2;\n // distance from tip of nose (stretched so make an ellipse taller than wide)\n var distance = Math.hypot(\n (annotations.noseTip[0][0] - mainOops.curXY[pointOffset]) *\n 1.4,\n annotations.noseTip[0][1] - mainOops.curXY[pointOffset + 1]\n );\n var headSize = Math.hypot(\n annotations.leftCheek[0][0] - annotations.rightCheek[0][0],\n annotations.leftCheek[0][1] - annotations.rightCheek[0][1]\n );\n if (distance > headSize) {\n return false;\n }\n // Avoid blinking eyes affecting pointer position.\n // distance to outer corners of eyes\n distance = Math.min(\n Math.hypot(\n annotations.leftEyeLower0[0][0] -\n mainOops.curXY[pointOffset],\n annotations.leftEyeLower0[0][1] -\n mainOops.curXY[pointOffset + 1]\n ),\n Math.hypot(\n annotations.rightEyeLower0[0][0] -\n mainOops.curXY[pointOffset],\n annotations.rightEyeLower0[0][1] -\n mainOops.curXY[pointOffset + 1]\n )\n );\n if (distance < headSize * 0.42) {\n return false;\n }\n return true;\n });\n },\n () => {\n facemeshEstimating = false;\n facemeshFirstEstimation = false;\n }\n );\n }\n }\n mainOops.update(imageData);\n }\n\n if (facemeshPrediction) {\n ctx.fillStyle = \"red\";\n\n const bad =\n facemeshPrediction.faceInViewConfidence < faceInViewConfidenceThreshold;\n ctx.fillStyle = bad ? \"rgb(255,255,0)\" : \"rgb(130,255,50)\";\n if (\n !bad ||\n mainOops.pointCount < 3 ||\n facemeshPrediction.faceInViewConfidence >\n pointsBasedOnFaceInViewConfidence + 0.05\n ) {\n if (bad) {\n ctx.fillStyle = \"rgba(255,0,255)\";\n }\n if (update && useFacemesh) {\n // this should just be visual, since we only add/remove points based on the facemesh data when receiving it\n facemeshPrediction.scaledMesh.forEach((point) => {\n point[0] += prevMovementX;\n point[1] += prevMovementY;\n });\n }\n facemeshPrediction.scaledMesh.forEach(([x, y, z]) => {\n ctx.fillRect(x, y, 1, 1);\n });\n } else {\n if (update && useFacemesh) {\n pointsBasedOnFaceInViewConfidence -= 0.001;\n }\n }\n }\n\n if (face) {\n const bad = faceScore < faceScoreThreshold;\n ctx.strokeStyle = bad ? \"rgb(255,255,0)\" : \"rgb(130,255,50)\";\n if (\n !bad ||\n mainOops.pointCount < 2 ||\n faceScore > pointsBasedOnFaceScore + 0.05\n ) {\n if (bad) {\n ctx.strokeStyle = \"rgba(255,0,255)\";\n }\n if (update && useClmTracking) {\n pointsBasedOnFaceScore = faceScore;\n\n // nostrils\n maybeAddPoint(mainOops, face[42][0], face[42][1]);\n maybeAddPoint(mainOops, face[43][0], face[43][1]);\n // inner eye corners\n // maybeAddPoint(mainOops, face[25][0], face[25][1]);\n // maybeAddPoint(mainOops, face[30][0], face[30][1]);\n\n // TODO: separate confidence threshold for removing vs adding points?\n\n // cull points to those within useful facial region\n mainOops.filterPoints((pointIndex) => {\n var pointOffset = pointIndex * 2;\n // distance from tip of nose (stretched so make an ellipse taller than wide)\n var distance = Math.hypot(\n (face[62][0] - mainOops.curXY[pointOffset]) * 1.4,\n face[62][1] - mainOops.curXY[pointOffset + 1]\n );\n // distance based on outer eye corners\n var headSize = Math.hypot(\n face[23][0] - face[28][0],\n face[23][1] - face[28][1]\n );\n if (distance > headSize) {\n return false;\n }\n return true;\n });\n }\n } else {\n if (update && useClmTracking) {\n pointsBasedOnFaceScore -= 0.001;\n }\n }\n if (showClmTracking) {\n clmTracker.draw(canvas, undefined, undefined, true);\n }\n }\n if (debugTimeTravel) {\n ctx.save();\n ctx.globalAlpha = 0.8;\n ctx.drawImage(debugFramesCanvas, 0, 0);\n ctx.restore();\n ctx.drawImage(debugPointsCanvas, 0, 0);\n }\n ctx.fillStyle = \"lime\";\n mainOops.draw(ctx);\n debugPointsCtx.fillStyle = \"green\";\n mainOops.draw(debugPointsCtx);\n\n if (update) {\n var [movementX, movementY] = mainOops.getMovement();\n\n // Acceleration curves add a lot of stability,\n // letting you focus on a specific point without jitter, but still move quickly.\n\n // var accelerate = (delta, distance) => (delta / 10) * (distance ** 0.8);\n // var accelerate = (delta, distance) => (delta / 1) * (Math.abs(delta) ** 0.8);\n var accelerate = (delta, distance) =>\n (delta / 1) * Math.abs(delta * 5) ** acceleration;\n\n var distance = Math.hypot(movementX, movementY);\n var deltaX = accelerate(movementX * sensitivityX, distance);\n var deltaY = accelerate(movementY * sensitivityY, distance);\n\n if (debugAcceleration) {\n const graphWidth = 200;\n const graphHeight = 150;\n const graphMaxInput = 0.2;\n const graphMaxOutput = 0.4;\n const hilightInputRange = 0.01;\n ctx.save();\n ctx.fillStyle = \"black\";\n ctx.fillRect(0, 0, graphWidth, graphHeight);\n const hilightInput = movementX * sensitivityX;\n for (let x = 0; x < graphWidth; x++) {\n const input = (x / graphWidth) * graphMaxInput;\n const output = accelerate(input, input);\n const y = (output / graphMaxOutput) * graphHeight;\n // ctx.fillStyle = Math.abs(y - deltaX) < 1 ? \"yellow\" : \"lime\";\n const hilight =\n Math.abs(Math.abs(input) - Math.abs(hilightInput)) <\n hilightInputRange;\n if (hilight) {\n ctx.fillStyle = \"rgba(255, 255, 0, 0.3)\";\n ctx.fillRect(x, 0, 1, graphHeight);\n }\n ctx.fillStyle = hilight ? \"yellow\" : \"lime\";\n ctx.fillRect(x, graphHeight - y, 1, y);\n }\n ctx.restore();\n }\n\n // This should never happen\n if (!isFinite(deltaX) || !isFinite(deltaY)) {\n return;\n }\n\n if (!paused) {\n const screenWidth = window.moveMouse ? screen.width : innerWidth;\n const screenHeight = window.moveMouse ? screen.height : innerHeight;\n\n mouseX -= deltaX * screenWidth;\n mouseY += deltaY * screenHeight;\n\n mouseX = Math.min(Math.max(0, mouseX), screenWidth);\n mouseY = Math.min(Math.max(0, mouseY), screenHeight);\n\n if (mouseNeedsInitPos) {\n // TODO: option to get preexisting mouse position instead of set it to center of screen\n mouseX = screenWidth / 2;\n mouseY = screenHeight / 2;\n mouseNeedsInitPos = false;\n }\n if (window.moveMouse) {\n window.moveMouse(~~mouseX, ~~mouseY);\n pointerEl.style.display = \"none\";\n } else {\n pointerEl.style.display = \"\";\n pointerEl.style.left = `${mouseX}px`;\n pointerEl.style.top = `${mouseY}px`;\n }\n if (TrackyMouse.onPointerMove) {\n TrackyMouse.onPointerMove(mouseX, mouseY);\n }\n }\n prevMovementX = movementX;\n prevMovementY = movementY;\n // movementXSinceFacemeshUpdate += movementX;\n // movementYSinceFacemeshUpdate += movementY;\n if (enableTimeTravel) {\n if (facemeshEstimating) {\n const imageData = getCameraImageData();\n if (imageData) {\n cameraFramesSinceFacemeshUpdate.push(imageData);\n }\n // limit this buffer size in case something goes wrong\n if (cameraFramesSinceFacemeshUpdate.length > 500) {\n // maybe just clear it entirely, because a partial buffer might not be useful\n cameraFramesSinceFacemeshUpdate.length = 0;\n }\n }\n }\n }\n ctx.restore();\n\n if (showDebugText) {\n ctx.save();\n ctx.fillStyle = \"#fff\";\n ctx.strokeStyle = \"#000\";\n ctx.lineWidth = 3;\n ctx.font = \"20px sans-serif\";\n ctx.beginPath();\n const text3 =\n \"Face convergence score: \" +\n (useFacemesh && facemeshPrediction\n ? \"N/A\"\n : faceConvergence.toFixed(4));\n const text1 =\n \"Face tracking score: \" +\n (useFacemesh && facemeshPrediction\n ? facemeshPrediction.faceInViewConfidence\n : faceScore\n ).toFixed(4);\n const text2 =\n \"Points based on score: \" +\n (useFacemesh && facemeshPrediction\n ? pointsBasedOnFaceInViewConfidence\n : pointsBasedOnFaceScore\n ).toFixed(4);\n ctx.strokeText(text1, 50, 50);\n ctx.fillText(text1, 50, 50);\n ctx.strokeText(text2, 50, 70);\n ctx.fillText(text2, 50, 70);\n ctx.strokeText(text3, 50, 170);\n ctx.fillText(text3, 50, 170);\n ctx.fillStyle = \"lime\";\n ctx.fillRect(0, 150, faceConvergence, 5);\n ctx.fillRect(0, 0, faceScore * canvas.width, 5);\n ctx.restore();\n }\n // stats.update();\n }\n\n function circle(ctx, x, y, r) {\n ctx.beginPath();\n ctx.arc(x, y, r, 0, Math.PI * 2);\n ctx.fill();\n }\n\n animate();\n if (SLOWMO) {\n setInterval(draw, 200);\n }\n\n if (window.moveMouse) {\n useCamera();\n }\n\n const handleShortcut = (shortcutType) => {\n if (shortcutType === \"toggle-tracking\") {\n paused = !paused;\n mouseNeedsInitPos = true;\n if (paused) {\n pointerEl.style.display = \"none\";\n }\n }\n };\n if (typeof onShortcut !== \"undefined\") {\n onShortcut(handleShortcut);\n } else {\n addEventListener(\"keydown\", (event) => {\n // Same shortcut as the global shortcut in the electron app (is that gonna be a problem?)\n if (\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n !event.shiftKey &&\n event.key === \"F9\"\n ) {\n handleShortcut(\"toggle-tracking\");\n }\n });\n }\n};\n","import { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { TrackyMouse } from \"../public/tracky-mouse/tracky-mouse\";\nimport \"css/tracky-mouse.css\";\nimport Globals from \"app/globals\";\n\nclass HeadMouse extends TreeBase {\n stateName = new Props.String(\"$HeadMouse\");\n\n /** @type {Promise} */\n promise;\n\n template() {\n this.promise.then(() => {\n const stateName = this.stateName.value;\n const { state } = Globals;\n if (state.hasBeenUpdated(stateName)) {\n const status = state.values[stateName];\n if (status == \"on\" || status == \"setup\") {\n document.body.classList.toggle(\"HeadMouse\", true);\n TrackyMouse.useCamera();\n TrackyMouse.showUI(status == \"setup\");\n } else if (status == \"off\") {\n document.body.classList.toggle(\"HeadMouse\", false);\n TrackyMouse.pauseCamera();\n TrackyMouse.showUI(false);\n }\n }\n });\n return [];\n }\n\n init() {\n TrackyMouse.dependenciesRoot = \"./tracky-mouse\";\n this.promise = TrackyMouse.loadDependencies();\n this.promise.then(() => {\n TrackyMouse.init();\n // TrackyMouse.useCamera();\n\n // Pointer event simulation logic should be built into tracky-mouse in the future.\n const getEventOptions = ({ x, y }) => {\n return {\n view: window, // needed so the browser can calculate offsetX/Y from the clientX/Y\n clientX: x,\n clientY: y,\n pointerId: 1234567890, // a special value so other code can detect these simulated events\n pointerType: \"mouse\",\n isPrimary: true,\n };\n };\n let last_el_over;\n TrackyMouse.onPointerMove = (x, y) => {\n const target = document.elementFromPoint(x, y) || document.body;\n if (target !== last_el_over) {\n if (last_el_over) {\n const event = new PointerEvent(\n \"pointerout\",\n Object.assign(getEventOptions({ x, y }), {\n button: 0,\n buttons: 1,\n bubbles: true,\n cancelable: false,\n })\n );\n last_el_over.dispatchEvent(event);\n }\n const event = new PointerEvent(\n \"pointerover\",\n Object.assign(getEventOptions({ x, y }), {\n button: 0,\n buttons: 1,\n bubbles: true,\n cancelable: false,\n })\n );\n target.dispatchEvent(event);\n last_el_over = target;\n }\n const event = new PointerEvent(\n \"pointermove\",\n Object.assign(getEventOptions({ x, y }), {\n button: 0,\n buttons: 1,\n bubbles: true,\n cancelable: true,\n })\n );\n target.dispatchEvent(event);\n };\n });\n }\n}\nTreeBase.register(HeadMouse, \"HeadMouse\");\n","/** A menu object with these features:\n * * Accessible\n * * Dynamically update available items\n */\n\nimport { html } from \"uhtml\";\nimport \"css/menu.css\";\nimport Globals from \"app/globals\";\nimport { callAfterRender } from \"app/render\";\n\nexport class MenuItem {\n /**\n * @param {Object} obj - argument object\n * @param {string} obj.label\n * @param {Function | null} [ obj.callback ]\n * @param {any[]} [ obj.args ]\n * @param {string} [ obj.title ]\n * @param {string} [ obj.divider ]\n */\n constructor({ label, callback = null, args = [], title = \"\", divider = \"\" }) {\n this.label = label;\n this.callback = callback;\n this.args = args;\n this.title = title;\n this.divider = divider;\n }\n\n apply() {\n if (this.callback) this.callback(...this.args);\n }\n}\n\nexport class Menu {\n // a unique id for each menu\n static _menuCount = 0;\n id = `menu_${Menu._menuCount++}`;\n\n // these are for aria references\n contentId = this.id + \"_content\";\n buttonId = this.id + \"_button\";\n\n expanded = false; // true when the menu is shown\n\n /** @type {MenuItem[]} */\n items = []; // cached items returned from the contentCallback\n\n /** @type {HTMLElement} - reference to the outer div */\n current;\n\n /**\n * @param {string} label - label on the menu button\n * @param {function(...any): MenuItem[]} contentCallback - returns the menu items to display\n * @param {any[]} callbackArgs - type\n */\n constructor(label, contentCallback, ...callbackArgs) {\n this.label = label;\n this.contentCallback = contentCallback;\n this.callbackArgs = callbackArgs;\n }\n\n render() {\n if (this.expanded) {\n this.items = this.contentCallback(...this.callbackArgs);\n if (this.items.length == 0) {\n this.items = [new MenuItem({ label: \"None\" })];\n }\n } else {\n this.items = [];\n }\n return html`\n \n ${this.label}\n \n \n ${this.items.map((item, index) => {\n return html`
  • \n {\n if (item.callback) {\n this.toggleExpanded();\n item.apply();\n }\n }}\n >\n ${item.label}\n \n
  • `;\n })}\n \n `;\n }\n\n /** @returns {HTMLButtonElement | null} */\n get focusedItem() {\n return this.current.querySelector(\"li > button:focus\");\n }\n\n /** @param {number} index */\n setFocus(index) {\n // make it a circular buffer\n if (!this.items.length) return;\n index = (index + this.items.length) % this.items.length;\n const item = /** @type {HTMLElement} */ (\n this.current.querySelector(`button[index=\"${index}\"]`)\n );\n if (item) item.focus();\n }\n\n /* Close the menu when it loses focus */\n focusHandler = ({ relatedTarget }) => {\n if (!relatedTarget) {\n // focus is gone, put it back on the button\n callAfterRender(() => {\n const button = document.getElementById(this.buttonId);\n if (button) button.focus();\n });\n if (this.expanded) this.toggleExpanded();\n return;\n }\n const menu = document.getElementById(this.id);\n if (menu && !menu.contains(relatedTarget) && this.expanded) {\n this.toggleExpanded();\n }\n };\n\n /* Toggle the menu state */\n toggleExpanded = (event = null, last = false) => {\n {\n this.expanded = !this.expanded;\n // this trick lets us distinguish between clicking the menu button with the mouse\n // and hitting Enter on the keyboard\n const mouseClick = event && event[\"detail\"] !== 0;\n if (this.expanded && (!event || !mouseClick)) {\n // focus on the first element when expanding via keyboard\n callAfterRender(() => {\n if (last) {\n this.setFocus(-1);\n } else {\n this.setFocus(0);\n }\n });\n } else if (!this.expanded && mouseClick) {\n callAfterRender(() => Globals.designer.restoreFocus());\n }\n Globals.state.update();\n }\n };\n\n /** handle the keyboard when inside the menu\n *\n * @param {KeyboardEvent} event\n * */\n menuKeyHandler = ({ key }) => {\n if (key == \"Escape\" && this.expanded) {\n this.toggleExpanded();\n } else if (key == \"ArrowUp\" || key == \"ArrowDown\") {\n const focused = this.focusedItem;\n const index = +(focused?.getAttribute(\"index\") || 0);\n const step = key == \"ArrowUp\" ? -1 : 1;\n this.setFocus(index + step);\n } else if (key == \"Home\") {\n this.setFocus(0);\n } else if (key == \"End\") {\n this.setFocus(-1);\n } else if (\n key.length == 1 &&\n ((key >= \"a\" && key <= \"z\") || (key >= \"A\" && key <= \"Z\"))\n ) {\n const focused = this.focusedItem;\n const index = +(focused?.getAttribute(\"index\") || 0);\n for (let i = 1; i < this.items.length; i++) {\n if (\n this.items[(index + i) % this.items.length].label\n .toLowerCase()\n .startsWith(key)\n ) {\n this.setFocus(i + index);\n break;\n }\n }\n }\n };\n\n /**\n * Handle the keyboard when on the menu button\n *\n * @param {KeyboardEvent} event */\n buttonKeyHandler = (event) => {\n if (event.key == \"ArrowDown\" || event.key == \" \") {\n event.preventDefault();\n this.toggleExpanded();\n } else if (event.key == \"ArrowUp\") {\n event.preventDefault();\n this.toggleExpanded(null, true);\n }\n };\n}\n","// Interface to the service worker for offline\n\nimport { html } from \"uhtml\";\nimport \"css/serviceWorker.css\";\n\n/** A pointer to the service worker\n * @type {ServiceWorkerRegistration} */\nlet registration;\n\n/**\n * Ask the service worker to check for an update\n */\nexport function workerCheckForUpdate() {\n if (registration) {\n registration.update();\n }\n}\n\n/**\n * Show the update button when an update is available\n */\nfunction signalUpdateAvailable() {\n document.body.classList.add(\"update-available\");\n}\n\n// only start the service worker in production mode\nif (import.meta.env.PROD && navigator.serviceWorker) {\n window.addEventListener(\"load\", async () => {\n registration = await navigator.serviceWorker.register(\"service-worker.js\", {\n scope: \"/OS-DPI/\",\n });\n // ensure the case when the updatefound event was missed is also handled\n // by re-invoking the prompt when there's a waiting Service Worker\n if (registration.waiting) {\n signalUpdateAvailable();\n }\n\n // detect Service Worker update available and wait for it to become installed\n registration.addEventListener(\"updatefound\", () => {\n if (registration.installing) {\n // wait until the new Service worker is actually installed (ready to take over)\n registration.installing.addEventListener(\"statechange\", () => {\n if (registration.waiting) {\n // if there's an existing controller (previous Service Worker), show the prompt\n if (navigator.serviceWorker.controller) {\n signalUpdateAvailable();\n } else {\n // otherwise it's the first install, nothing to do\n console.log(\"Service Worker initialized for the first time\");\n }\n }\n });\n }\n });\n\n let refreshing = false;\n\n // detect controller change and refresh the page\n navigator.serviceWorker.addEventListener(\"controllerchange\", () => {\n if (!refreshing) {\n window.location.reload();\n refreshing = true;\n }\n });\n });\n}\n\n/**\n * Return a button for updating the service worker\n * CSS assures this is only visible when an update is available\n * @returns {Hole}\n */\nexport function workerUpdateButton() {\n return html` {\n if (registration && registration.waiting) {\n registration.waiting.postMessage(\"SKIP_WAITING\");\n }\n }}\n title=\"Click to update the app\"\n >\n Update\n `;\n}\n","import { TreeBase } from \"./treebase\";\nimport { Stack } from \"./stack\";\nimport { PatternGroup } from \"components/access/pattern\";\nimport { Page } from \"components/page\";\n\nimport \"css/toolbar.css\";\nimport db from \"app/db\";\nimport { html } from \"uhtml\";\nimport Globals from \"app/globals\";\nimport { Menu, MenuItem } from \"./menu\";\nimport { callAfterRender } from \"app/render\";\nimport { fileOpen } from \"browser-fs-access\";\nimport pleaseWait from \"components/wait\";\nimport { DB } from \"app/db\";\nimport { Designer } from \"./designer\";\nimport { readSheetFromBlob, saveContent } from \"./content\";\nimport { Data } from \"app/data\";\nimport { SaveLogs, ClearLogs } from \"./logger\";\nimport { friendlyName, wikiName } from \"./names\";\n\nimport { workerUpdateButton } from \"components/serviceWorker\";\n\n/** Return a list of available Menu items on this component\n *\n * @param {TreeBase} component\n * @param {\"add\" | \"delete\" | \"move\" | \"all\"} which - which actions to return\n * @param {function} wrapper\n * @returns {MenuItem[]}\n */\nfunction getComponentMenuItems(component, which = \"all\", wrapper) {\n /** @type {MenuItem[]} */\n const result = [];\n\n // add actions\n if (which == \"add\" || which == \"all\") {\n for (const className of component.allowedChildren.sort()) {\n result.push(\n new MenuItem({\n label: `${friendlyName(className)}`,\n callback: wrapper(() => {\n console.log(\"add\", className, component.className);\n const result = TreeBase.create(className, component);\n result.init();\n return result.id;\n }),\n }),\n );\n }\n }\n // delete\n if (which == \"delete\" || which == \"all\") {\n if (component.allowDelete) {\n result.push(\n new MenuItem({\n label: `Delete`,\n title: `Delete ${friendlyName(component.className)}`,\n callback: wrapper(() => {\n // remove returns the id of the nearest neighbor or the parent\n console.log(\"delete\", component.className, component.id);\n const nextId = component.remove();\n return nextId;\n }),\n }),\n );\n }\n }\n\n // move\n if (which == \"move\" || which == \"all\") {\n const parent = component.parent;\n if (parent) {\n const index = component.index;\n\n if (index > 0) {\n // moveup\n result.push(\n new MenuItem({\n label: `Move up`,\n title: `Move up ${friendlyName(component.className)}`,\n callback: wrapper(() => {\n component.moveUpDown(true);\n return component.id;\n }),\n }),\n );\n }\n if (index < parent.children.length - 1) {\n // movedown\n result.push(\n new MenuItem({\n label: `Move down`,\n title: `Move down ${friendlyName(component.className)}`,\n callback: wrapper(() => {\n component.moveUpDown(false);\n return component.id;\n }),\n }),\n );\n }\n }\n }\n return result;\n}\n\n/**\n * Determines valid menu items given a menu type.\n * @param {\"add\" | \"delete\" | \"move\" | \"all\"} type\n * @return {{ child: MenuItem[], parent: MenuItem[]}}\n * */\nfunction getPanelMenuItems(type) {\n // Figure out which tab is active\n const { designer } = Globals;\n const panel = designer.currentPanel;\n\n // Ask that tab which component is focused\n if (!panel) {\n console.log(\"no panel\");\n return { child: [], parent: [] };\n }\n const component =\n TreeBase.componentFromId(panel.lastFocused) || panel.children[0] || panel;\n if (!component) {\n console.log(\"no component\");\n return { child: [], parent: [] };\n }\n\n /** @param {function():string} arg */\n function itemCallback(arg) {\n return () => {\n let nextId = arg();\n if (!panel) return;\n // we're looking for the settings view but we may have the id of the user view\n if (panel.lastFocused.startsWith(nextId)) {\n nextId = panel.lastFocused;\n }\n if (nextId.match(/^TreeBase-\\d+$/)) {\n nextId = nextId + \"-settings\";\n }\n panel.lastFocused = nextId;\n callAfterRender(() => panel.parent?.restoreFocus());\n panel.update();\n };\n }\n\n // Ask that component for its menu actions\n let menuItems = getComponentMenuItems(component, type, itemCallback);\n\n // Add the parent's actions in some cases\n const parent = component.parent;\n\n let parentItems = [];\n if (\n type === \"add\" &&\n parent &&\n !(component instanceof Stack && parent instanceof Stack) &&\n !(component instanceof PatternGroup && parent instanceof PatternGroup) &&\n !(parent instanceof Designer)\n ) {\n parentItems = getComponentMenuItems(parent, type, itemCallback);\n // if (menuItems.length && parentItems.length) {\n // parentItems[0].divider = \"Parent\";\n // }\n // menuItems = menuItems.concat(parentItems);\n }\n\n return { child: menuItems, parent: parentItems };\n}\n\n/** @param {ToolBar} bar */\nfunction getFileMenuItems(bar) {\n return [\n new MenuItem({\n label: \"Import\",\n callback: async () => {\n const local_db = new DB();\n fileOpen({\n mimeTypes: [\"application/octet-stream\"],\n extensions: [\".osdpi\", \".zip\"],\n description: \"OS-DPI designs\",\n id: \"os-dpi\",\n })\n .then((file) => pleaseWait(local_db.readDesignFromFile(file)))\n .then(() => {\n window.open(`#${local_db.designName}`, \"_blank\", `noopener=true`);\n })\n .catch((e) => console.log(e));\n },\n }),\n new MenuItem({\n label: \"Export\",\n callback: () => {\n db.saveDesign();\n },\n }),\n new MenuItem({\n label: \"New\",\n callback: async () => {\n const name = await db.uniqueName(\"new\");\n window.open(`#${name}`, \"_blank\", `noopener=true`);\n },\n }),\n new MenuItem({\n label: \"Open\",\n callback: () => {\n bar.designListDialog.open();\n },\n }),\n new MenuItem({\n label: \"Unload\",\n callback: async () => {\n const saved = await db.saved();\n if (saved.indexOf(db.designName) < 0) {\n try {\n await db.saveDesign();\n } catch (e) {\n if (e instanceof DOMException) {\n console.log(\"canceled save\");\n } else {\n throw e;\n }\n }\n }\n await db.unload(db.designName);\n window.close();\n },\n }),\n new MenuItem({\n label: \"Unload...\",\n callback: () => {\n bar.designListDialog.unload();\n },\n }),\n new MenuItem({\n label: \"Load Sheet\",\n title: \"Load a spreadsheet of content\",\n divider: \"Content\",\n callback: async () => {\n try {\n const blob = await fileOpen({\n extensions: [\".csv\", \".tsv\", \".ods\", \".xls\", \".xlsx\"],\n description: \"Spreadsheets\",\n id: \"os-dpi\",\n });\n if (blob) {\n sheet.handle = blob.handle;\n const result = await pleaseWait(readSheetFromBlob(blob));\n await db.write(\"content\", result);\n Globals.data = new Data(result);\n Globals.state.update();\n }\n } catch (e) {\n sheet.handle = undefined;\n }\n },\n }),\n new MenuItem({\n label: \"Reload sheet\",\n title: \"Reload a spreadsheet of content\",\n callback:\n sheet.handle && // only offer reload if we have the handle\n (async () => {\n if (!sheet.handle) return;\n let blob;\n blob = await sheet.handle.getFile();\n if (blob) {\n const result = await pleaseWait(readSheetFromBlob(blob));\n await db.write(\"content\", result);\n Globals.data = new Data(result);\n Globals.state.update();\n } else {\n console.log(\"no file to reload\");\n }\n }),\n }),\n new MenuItem({\n label: \"Save sheet\",\n title: \"Save the content as a spreadsheet\",\n callback: () => {\n saveContent(db.designName, Globals.data.allrows, \"xlsx\");\n },\n }),\n new MenuItem({\n label: \"Load media\",\n title: \"Load audio or images into the design\",\n callback: async () => {\n try {\n const files = await fileOpen({\n description: \"Media files\",\n mimeTypes: [\"image/*\", \"audio/*\", \"video/mp4\", \"video/webm\"],\n multiple: true,\n });\n for (const file of files) {\n await db.addMedia(file, file.name);\n if (file.type.startsWith(\"image/\")) {\n for (const img of document.querySelectorAll(\n `img[dbsrc=\"${file.name}\"]`,\n )) {\n /** @type {ImgDb} */ (img).refresh();\n }\n }\n if (file.type.startsWith(\"video/\")) {\n for (const img of document.querySelectorAll(\n `video[dbsrc=\"${file.name}\"]`,\n )) {\n /** @type {ImgDb} */ (img).refresh();\n }\n }\n }\n } catch {\n // ignore the error\n }\n Globals.state.update();\n },\n }),\n new MenuItem({\n label: \"Save logs\",\n title: \"Save any logs as spreadsheets\",\n divider: \"Logs\",\n callback: async () => {\n SaveLogs();\n },\n }),\n new MenuItem({\n label: \"Clear logs\",\n title: \"Clear any stored logs\",\n callback: async () => {\n ClearLogs();\n },\n }),\n ];\n}\n\n/** Copy (or cut) a component to the clipboard\n * @param {boolean} cut - true to cut\n */\nasync function copyComponent(cut = false) {\n const component = Globals.designer.selectedComponent;\n if (component) {\n const parent = component.parent;\n if (!(component instanceof Page) && !(parent instanceof Designer)) {\n const json = JSON.stringify(\n // don't include UID or OneOfGroup props in the copy\n component.toObject({ omittedProps: [\"UID\", \"OneOfGroup\"] }),\n );\n await navigator.clipboard.writeText(json);\n if (cut) {\n component.remove();\n Globals.designer.currentPanel?.onUpdate();\n }\n }\n }\n}\n\nfunction getEditMenuItems() {\n let items = [\n new MenuItem({\n label: \"Undo\",\n callback: () => {\n Globals.designer.currentPanel?.undo();\n },\n }),\n new MenuItem({\n label: \"Copy\",\n callback: copyComponent,\n }),\n new MenuItem({\n label: \"Cut\",\n callback: async () => {\n copyComponent(true);\n },\n }),\n new MenuItem({\n label: \"Paste\",\n callback: async () => {\n const json = await navigator.clipboard.readText();\n // we can't trust this input from the clipboard, catch and report errors\n\n try {\n var obj = JSON.parse(json);\n } catch (e) {\n Globals.error.report(\"Invalid input to Paste\");\n Globals.error.report(json);\n Globals.state.update();\n return;\n }\n const className = obj.className;\n if (!className) return;\n // find a place that can accept it\n const anchor = Globals.designer.selectedComponent;\n if (!anchor) return;\n /** @type {TreeBase | null } */\n let current = anchor;\n while (current) {\n if (current.allowedChildren.indexOf(className) >= 0) {\n const result = TreeBase.fromObject(obj, current);\n if (\n anchor.parent === result.parent &&\n result.index != anchor.index + 1\n ) {\n anchor.moveTo(anchor.index + 1);\n }\n Globals.designer.currentPanel?.onUpdate();\n return;\n }\n current = current.parent;\n }\n },\n }),\n new MenuItem({\n label: \"Paste Into\",\n callback: async () => {\n const json = await navigator.clipboard.readText();\n try {\n var obj = JSON.parse(json);\n } catch (e) {\n Globals.error.report(\"Invalid input to Paste Into\");\n Globals.error.report(json);\n Globals.state.update();\n return;\n }\n const className = obj.className;\n if (!className) return;\n // find a place that can accept it\n const current = Globals.designer.selectedComponent;\n if (current && current.allowedChildren.indexOf(className) >= 0) {\n TreeBase.fromObject(obj, current);\n Globals.designer.currentPanel?.onUpdate();\n }\n },\n }),\n ];\n const deleteItems = getPanelMenuItems(\"delete\");\n const moveItems = getPanelMenuItems(\"move\");\n items = items.concat(moveItems.child, deleteItems.child);\n const parentItems = moveItems.parent.concat(deleteItems.parent);\n if (parentItems.length > 0) {\n parentItems[0].divider = \"Parent\";\n items = items.concat(parentItems);\n }\n return items;\n}\n\n/** Open Wiki documentation in another tab\n * @param {string} name\n */\nfunction openHelpURL(name) {\n const wiki = \"https://github.com/unc-project-open-aac/os-dpi/wiki\";\n\n const url = `${wiki}/${name}`;\n\n window.open(url, \"help\");\n}\n\nfunction getHelpMenuItems() {\n /** @type {MenuItem[]} */\n const items = [];\n const names = new Set();\n let component =\n Globals.designer.selectedComponent || Globals.designer.currentPanel;\n while (component && component.parent) {\n const className = component.className;\n const menuName = friendlyName(className);\n if (!names.has(menuName)) {\n items.push(\n new MenuItem({\n label: menuName,\n callback: openHelpURL,\n args: [wikiName(className)],\n }),\n );\n names.add(menuName);\n }\n component = component.parent;\n }\n items.push(\n new MenuItem({\n label: \"About OS-DPI\",\n callback: openHelpURL,\n args: [\"About-Project-Open\"],\n }),\n );\n return items;\n}\n\n/**\n * @param {Hole} thing\n * @param {string} hint\n */\nfunction hinted(thing, hint) {\n return html`
    ${thing}
    `;\n}\n\nconst sheet = {\n /** @type {FileSystemFileHandle | undefined } */\n handle: undefined,\n};\n\n/**\n * Display a list of designs in the db so they can be reopened or unloaded\n */\nclass DesignListDialog {\n /** Show imported designs so they can be reopened */\n async open() {\n const names = await db.names();\n const dialog = /** @type {HTMLDialogElement} */ (\n document.getElementById(\"OpenDialog\")\n );\n const list = html.node` dialog.close()}\n >\n

    Open one of your designs

    \n
      \n ${names.map(\n (name) =>\n html`
    • \n ${name}\n
    • `,\n )}\n
    \n \n `;\n if (dialog) {\n dialog.innerHTML = \"\";\n dialog.appendChild(list);\n }\n dialog.showModal();\n }\n /** Show imported designs so they can be unloaded */\n async unload() {\n const names = await db.names();\n const saved = await db.saved();\n const dialog = /** @type {HTMLDialogElement} */ (\n document.getElementById(\"OpenDialog\")\n );\n /** Unload the checked designs */\n async function unloadChecked() {\n const checkboxes = /** @type {HTMLInputElement[]} */ ([\n ...dialog.querySelectorAll('input[type=\"checkbox\"]'),\n ]);\n for (const checkbox of checkboxes) {\n if (checkbox.checked) {\n await db.unload(checkbox.name);\n }\n }\n dialog.close();\n }\n const list = html.node`
    \n

    Check the designs you want to unload

    \n
      \n ${names.map((name) => {\n let label;\n if (saved.includes(name)) {\n label = html`${name}`;\n } else {\n label = html`${name} Not saved`;\n }\n return html`
    • \n \n
    • `;\n })}\n
    \n \n \n
    `;\n if (dialog) {\n dialog.innerHTML = \"\";\n dialog.appendChild(list);\n }\n dialog.showModal();\n }\n render() {\n return html``;\n }\n}\n\nexport class ToolBar extends TreeBase {\n constructor() {\n super();\n this.fileMenu = new Menu(\"File\", getFileMenuItems, this);\n this.editMenu = new Menu(\"Edit\", getEditMenuItems);\n this.addMenu = new Menu(\n \"Add\",\n () => {\n const { child, parent } = getPanelMenuItems(\"add\");\n if (parent.length > 0) {\n parent[0].divider = \"Parent\";\n }\n return child.concat(parent);\n },\n \"add\",\n );\n this.helpMenu = new Menu(\"Help\", getHelpMenuItems, this);\n this.designListDialog = new DesignListDialog();\n }\n\n template() {\n return html`\n
    \n
      \n
    • \n \n ${hinted(\n html`\n db\n .renameDesign(event.target.value)\n .then(() => (window.location.hash = db.designName))}\n />`,\n \"N\",\n )}\n
    • \n
    • \n ${\n // @ts-ignore\n hinted(this.fileMenu.render(), \"F\")\n }\n
    • \n
    • \n ${\n // @ts-ignore\n hinted(this.editMenu.render(), \"E\")\n }\n
    • \n
    • \n ${\n // @ts-ignore\n hinted(this.addMenu.render(), \"A\")\n }\n
    • \n
    • \n ${\n // @ts-ignore\n hinted(this.helpMenu.render(), \"H\")\n }\n
    • \n
    • ${workerUpdateButton()}
    • \n
    \n ${this.designListDialog.render()}\n
    \n `;\n }\n}\nTreeBase.register(ToolBar, \"ToolBar\");\n","import { Messages } from \"./components/errors\";\nimport { Data } from \"./data\";\nimport { State } from \"./state\";\nimport \"./components\";\nimport { Layout } from \"./components/layout\";\nimport { Monitor } from \"./components/monitor\";\nimport { ToolBar } from \"./components/toolbar\";\nimport db from \"./db\";\nimport pleaseWait from \"./components/wait\";\nimport \"css/designer.css\";\nimport \"css/colors.css\";\nimport { clearAccessChanged } from \"./components/access\";\nimport Globals from \"./globals\";\nimport { PatternList } from \"./components/access/pattern\";\nimport { MethodChooser } from \"./components/access/method\";\nimport { CueList } from \"./components/access/cues\";\nimport { Actions } from \"./components/actions\";\nimport { callAfterRender, safeRender, postRender } from \"./render\";\nimport { Designer } from \"components/designer\";\nimport { workerCheckForUpdate } from \"components/serviceWorker\";\n\n/** let me wait for the page to load */\nconst pageLoaded = new Promise((resolve) => {\n window.addEventListener(\"load\", () => {\n document.body.classList.add(\"loaded\");\n resolve(true);\n });\n});\n\n/** Load page and data then go\n */\nexport async function start() {\n if (window.location.search && !window.location.hash.slice(1)) {\n const params = new URLSearchParams(window.location.search);\n const fetch = params.get(\"fetch\");\n if (fetch) {\n await pleaseWait(db.readDesignFromURL(fetch));\n window.history.replaceState(\n {},\n document.title,\n window.location.origin + window.location.pathname + \"#\" + db.designName,\n );\n }\n }\n let name = window.location.hash.slice(1);\n if (!name) {\n name = await db.uniqueName(\"new\");\n window.location.hash = `#${name}`;\n }\n db.setDesignName(name);\n const dataArray = await db.read(\"content\", []);\n await pageLoaded;\n\n const layout = await Layout.load(Layout);\n Globals.layout = layout;\n Globals.tree = layout.children[0];\n Globals.state = new State(`UIState`);\n Globals.actions = await Actions.load(Actions);\n Globals.data = new Data(dataArray);\n Globals.cues = await CueList.load(CueList);\n Globals.patterns = await PatternList.load(PatternList);\n Globals.method = await MethodChooser.load(MethodChooser);\n Globals.restart = async () => {\n // tear down any existing event handlers before restarting\n Globals.method.stop();\n start();\n };\n Globals.error = new Messages();\n\n /** @param {() => void} f */\n function debounce(f) {\n let timeout = null;\n return () => {\n if (timeout) window.cancelAnimationFrame(timeout);\n timeout = window.requestAnimationFrame(f);\n };\n }\n\n /* Designer */\n Globals.state.define(\"editing\", true); // for now\n Globals.designer = /** @type {Designer} */ (\n Designer.fromObject({\n className: \"Designer\",\n props: { tabEdge: \"top\", stateName: \"designerTab\" },\n children: [\n layout,\n {\n className: \"Content\",\n props: {},\n children: [],\n },\n Globals.actions,\n Globals.cues,\n Globals.patterns,\n Globals.method,\n ],\n })\n );\n\n /* ToolBar */\n const toolbar = ToolBar.create(\"ToolBar\", null);\n toolbar.init();\n\n /* Monitor */\n const monitor = Monitor.create(\"Monitor\", null);\n monitor.init();\n\n function renderUI() {\n const startTime = performance.now();\n document.body.classList.toggle(\"designing\", Globals.state.get(\"editing\"));\n // clear the changed flag, TODO there must be a better way!\n clearAccessChanged();\n safeRender(\"cues\", Globals.cues);\n safeRender(\"UI\", Globals.tree);\n safeRender(\"toolbar\", toolbar);\n safeRender(\"tabs\", Globals.designer);\n safeRender(\"monitor\", monitor);\n safeRender(\"errors\", Globals.error);\n postRender();\n Globals.method.refresh();\n if (location.host.startsWith(\"localhost\")) {\n const timer = document.getElementById(\"timer\");\n if (timer) {\n timer.innerText = (performance.now() - startTime).toFixed(0);\n }\n }\n workerCheckForUpdate();\n }\n Globals.state.observe(debounce(renderUI));\n callAfterRender(() => Globals.designer.restoreFocus());\n renderUI();\n}\n\n/* Watch for updates happening in other tabs */\nconst channel = new BroadcastChannel(\"os-dpi\");\n/** @param {MessageEvent} event */\nchannel.onmessage = (event) => {\n const message = /** @type {UpdateNotification} */ (event.data);\n if (db.designName == message.name) {\n if (message.action == \"update\") {\n start();\n } else if (message.action == \"rename\" && message.newName) {\n window.location.hash = message.newName;\n } else if (message.action == \"unload\") {\n window.close();\n if (!window.closed) {\n window.location.hash = \"new\";\n }\n }\n }\n};\ndb.addUpdateListener((message) => {\n channel.postMessage(message);\n});\n\n// watch for changes to the hash such as using the browser back button\nwindow.addEventListener(\"hashchange\", () => {\n sessionStorage.clear();\n start();\n});\n\n// watch for window resize and force a redraw\nwindow.addEventListener(\"resize\", () => {\n if (!Globals.state) return;\n Globals.state.update();\n});\n\nstart();\n"],"file":"index.js"} \ No newline at end of file +{"version":3,"mappings":"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","names":["this","require$$0","require$$1","require$$2","require$$3","require$$4","isArray","getPrototypeOf","cache","range","parser","window","toString","isArrayLike","isFunction","noop","Lexer","Parser","parse","expressions","iterator","Props.Prop","Props.OneOfGroup","Props.TypeSelect","StackTrace.fromError","Props.Field","Props.Select","Props.Expression","e","t","o","merge","Props.Color","Props.Float","Props.Boolean","Props.Integer","Props.String","Option","Props.Voice","fileSave","Audio","pleaseWait","Props.ADate","Props.TextArea","Action","Props.Conditional","Props.Code","Symbol_observable","Symbol_iterator","asyncScheduler","RxJs.Subject","Props.Pattern","Props.UID","RxJs.merge","RxJs.takeUntil","Props.KeyName","Props.Cue","Props.toMap","RxJs.fromEvent","RxJs.mergeWith","RxJs.filter","RxJs.tap","RxJs.groupBy","RxJs.mergeMap","RxJs.debounceTime","RxJs.skipWhile","RxJs.distinctUntilKeyChanged","RxJs.map","RxJs.throttleTime","RxJs.timer","RxJs.scan","RxJs.of","RxJs.share","RxJs.retry","RxJs.switchMap","RxJs.EMPTY","RxJs.delay","fileOpen","State"],"sources":["../node_modules/stackframe/stackframe.js","../node_modules/error-stack-parser/error-stack-parser.js","../node_modules/stack-generator/stack-generator.js","../node_modules/source-map/lib/util.js","../node_modules/source-map/lib/binary-search.js","../node_modules/source-map/lib/array-set.js","../node_modules/source-map/lib/base64.js","../node_modules/source-map/lib/base64-vlq.js","../node_modules/source-map/lib/quick-sort.js","../node_modules/source-map/lib/source-map-consumer.js","../node_modules/stacktrace-gps/stacktrace-gps.js","../node_modules/stacktrace-js/stacktrace.js","../node_modules/uhtml/esm/utils.js","../node_modules/uhtml/esm/literals.js","../node_modules/domconstants/esm/constants.js","../node_modules/custom-function/esm/factory.js","../node_modules/uhtml/esm/range.js","../node_modules/uhtml/esm/persistent-fragment.js","../node_modules/uhtml/esm/creator.js","../node_modules/domconstants/esm/re.js","../node_modules/@webreflection/uparser/esm/index.js","../node_modules/udomdiff/esm/index.js","../node_modules/uhtml/esm/handler.js","../node_modules/uhtml/esm/create-content.js","../node_modules/uhtml/esm/parser.js","../node_modules/uhtml/esm/rabbit.js","../node_modules/uhtml/esm/render/hole.js","../node_modules/uhtml/esm/index.js","../node_modules/angular-expressions/lib/parse.js","../node_modules/angular-expressions/lib/main.js","../globals.js","../eval.js","../components/color-names.js","../components/style.js","../components/props.js","../node_modules/weak-value/esm/index.js","../components/persist.js","../components/names.js","../components/treebase.js","../components/errors.js","../components/gridFilter.js","../data.js","../node_modules/mergerino/dist/mergerino.min.js","../state.js","../components/stack.js","../components/page.js","../components/slots.js","../components/grid.js","../components/display.js","../components/radio.js","../components/gap.js","../render.js","../components/tabcontrol.js","../components/modal-dialog.js","../components/vsd.js","../components/button.js","../components/monitor.js","../components/speech.js","../node_modules/idb/build/wrap-idb-value.js","../node_modules/idb/build/index.js","../node_modules/idb/build/async-iterators.js","../node_modules/fflate/esm/browser.js","../node_modules/browser-fs-access/dist/index.modern.js","../db.js","../components/audio.js","../components/designer.js","../components/wait.js","../components/content.js","../components/logger.js","../components/layout.js","../components/actions.js","../components/hotkeys.js","../components/customize.js","../components/img-db.js","../components/video-db.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../node_modules/rxjs/dist/esm5/internal/Subscription.js","../node_modules/rxjs/dist/esm5/internal/config.js","../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../node_modules/rxjs/dist/esm5/internal/util/noop.js","../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../node_modules/rxjs/dist/esm5/internal/util/identity.js","../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../node_modules/rxjs/dist/esm5/internal/Observable.js","../node_modules/rxjs/dist/esm5/internal/util/lift.js","../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../node_modules/rxjs/dist/esm5/internal/Subject.js","../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../node_modules/rxjs/dist/esm5/internal/Scheduler.js","../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../node_modules/rxjs/dist/esm5/internal/observable/empty.js","../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../node_modules/rxjs/dist/esm5/internal/util/args.js","../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../node_modules/rxjs/dist/esm5/internal/observable/from.js","../node_modules/rxjs/dist/esm5/internal/observable/of.js","../node_modules/rxjs/dist/esm5/internal/util/isDate.js","../node_modules/rxjs/dist/esm5/internal/operators/map.js","../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../node_modules/rxjs/dist/esm5/internal/observable/concat.js","../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../node_modules/rxjs/dist/esm5/internal/observable/timer.js","../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js","../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../node_modules/rxjs/dist/esm5/internal/operators/take.js","../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../node_modules/rxjs/dist/esm5/internal/operators/delay.js","../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js","../node_modules/rxjs/dist/esm5/internal/operators/groupBy.js","../node_modules/rxjs/dist/esm5/internal/operators/merge.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js","../node_modules/rxjs/dist/esm5/internal/operators/retry.js","../node_modules/rxjs/dist/esm5/internal/operators/scan.js","../node_modules/rxjs/dist/esm5/internal/operators/share.js","../node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js","../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../node_modules/rxjs/dist/esm5/internal/operators/tap.js","../node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../components/access/method/defaultMethods.js","../components/helpers.js","../components/access/method/index.js","../components/access/pattern/defaultPatterns.js","../components/access/pattern/index.js","../components/access/method/responses.js","../components/access/method/keyHandler.js","../components/access/method/pointerHandler.js","../node_modules/rxjs/dist/esm5/internal/observable/dom/WebSocketSubject.js","../node_modules/rxjs/dist/esm5/internal/observable/dom/webSocket.js","../components/access/method/socketHandler.js","../components/access/method/timerHandler.js","../components/access/cues/defaultCues.js","../components/access/cues/index.js","../components/headmouse/tracky-mouse/tracky-mouse.js","../components/headmouse/index.js","../components/menu.js","../components/serviceWorker.js","../components/toolbar.js","../start.js"],"sourcesContent":["(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').replace(/^.*?\\s+/, '');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n // because this line doesn't have function name\n var locationParts = this.extractLocation(location ? location[1] : sanitizedLine);\n var functionName = location && sanitizedLine || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(//, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n}(this, function(StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({functionName: RegExp.$1 || undefined, args: args}));\n } else {\n stack.push(new StackFrame({args: args}));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n}));\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace-gps', ['source-map', 'stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('source-map/lib/source-map-consumer'), require('stackframe'));\n } else {\n root.StackTraceGPS = factory(root.SourceMap || root.sourceMap, root.StackFrame);\n }\n}(this, function(SourceMap, StackFrame) {\n 'use strict';\n\n /**\n * Make a X-Domain request to url and callback.\n *\n * @param {String} url\n * @returns {Promise} with response text if fulfilled\n */\n function _xdr(url) {\n return new Promise(function(resolve, reject) {\n var req = new XMLHttpRequest();\n req.open('get', url);\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if ((req.status >= 200 && req.status < 300) ||\n (url.substr(0, 7) === 'file://' && req.responseText)) {\n resolve(req.responseText);\n } else {\n reject(new Error('HTTP status: ' + req.status + ' retrieving ' + url));\n }\n }\n };\n req.send();\n });\n\n }\n\n /**\n * Convert a Base64-encoded string into its original representation.\n * Used for inline sourcemaps.\n *\n * @param {String} b64str Base-64 encoded string\n * @returns {String} original representation of the base64-encoded string.\n */\n function _atob(b64str) {\n if (typeof window !== 'undefined' && window.atob) {\n return window.atob(b64str);\n } else {\n throw new Error('You must supply a polyfill for window.atob in this environment');\n }\n }\n\n function _parseJson(string) {\n if (typeof JSON !== 'undefined' && JSON.parse) {\n return JSON.parse(string);\n } else {\n throw new Error('You must supply a polyfill for JSON.parse in this environment');\n }\n }\n\n function _findFunctionName(source, lineNumber/*, columnNumber*/) {\n var syntaxes = [\n // {name} = function ({args}) TODO args capture\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,\n // function {name}({args}) m[1]=name m[2]=args\n /function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,\n // {name} = eval()\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,\n // fn_name() {\n /\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,\n // {name} = () => {\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/\n ];\n var lines = source.split('\\n');\n\n // Walk backwards in the source lines until we find the line which matches one of the patterns above\n var code = '';\n var maxLines = Math.min(lineNumber, 20);\n for (var i = 0; i < maxLines; ++i) {\n // lineNo is 1-based, source[] is 0-based\n var line = lines[lineNumber - i - 1];\n var commentPos = line.indexOf('//');\n if (commentPos >= 0) {\n line = line.substr(0, commentPos);\n }\n\n if (line) {\n code = line + code;\n var len = syntaxes.length;\n for (var index = 0; index < len; index++) {\n var m = syntaxes[index].exec(code);\n if (m && m[1]) {\n return m[1];\n }\n }\n }\n }\n return undefined;\n }\n\n function _ensureSupportedEnvironment() {\n if (typeof Object.defineProperty !== 'function' || typeof Object.create !== 'function') {\n throw new Error('Unable to consume source maps in older browsers');\n }\n }\n\n function _ensureStackFrameIsLegit(stackframe) {\n if (typeof stackframe !== 'object') {\n throw new TypeError('Given StackFrame is not an object');\n } else if (typeof stackframe.fileName !== 'string') {\n throw new TypeError('Given file name is not a String');\n } else if (typeof stackframe.lineNumber !== 'number' ||\n stackframe.lineNumber % 1 !== 0 ||\n stackframe.lineNumber < 1) {\n throw new TypeError('Given line number must be a positive integer');\n } else if (typeof stackframe.columnNumber !== 'number' ||\n stackframe.columnNumber % 1 !== 0 ||\n stackframe.columnNumber < 0) {\n throw new TypeError('Given column number must be a non-negative integer');\n }\n return true;\n }\n\n function _findSourceMappingURL(source) {\n var sourceMappingUrlRegExp = /\\/\\/[#@] ?sourceMappingURL=([^\\s'\"]+)\\s*$/mg;\n var lastSourceMappingUrl;\n var matchSourceMappingUrl;\n // eslint-disable-next-line no-cond-assign\n while (matchSourceMappingUrl = sourceMappingUrlRegExp.exec(source)) {\n lastSourceMappingUrl = matchSourceMappingUrl[1];\n }\n if (lastSourceMappingUrl) {\n return lastSourceMappingUrl;\n } else {\n throw new Error('sourceMappingURL not found');\n }\n }\n\n function _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache) {\n return new Promise(function(resolve, reject) {\n var loc = sourceMapConsumer.originalPositionFor({\n line: stackframe.lineNumber,\n column: stackframe.columnNumber\n });\n\n if (loc.source) {\n // cache mapped sources\n var mappedSource = sourceMapConsumer.sourceContentFor(loc.source);\n if (mappedSource) {\n sourceCache[loc.source] = mappedSource;\n }\n\n resolve(\n // given stackframe and source location, update stackframe\n new StackFrame({\n functionName: loc.name || stackframe.functionName,\n args: stackframe.args,\n fileName: loc.source,\n lineNumber: loc.line,\n columnNumber: loc.column\n }));\n } else {\n reject(new Error('Could not get original source for given stackframe and source map'));\n }\n });\n }\n\n /**\n * @constructor\n * @param {Object} opts\n * opts.sourceCache = {url: \"Source String\"} => preload source cache\n * opts.sourceMapConsumerCache = {/path/file.js.map: SourceMapConsumer}\n * opts.offline = True to prevent network requests.\n * Best effort without sources or source maps.\n * opts.ajax = Promise returning function to make X-Domain requests\n */\n return function StackTraceGPS(opts) {\n if (!(this instanceof StackTraceGPS)) {\n return new StackTraceGPS(opts);\n }\n opts = opts || {};\n\n this.sourceCache = opts.sourceCache || {};\n this.sourceMapConsumerCache = opts.sourceMapConsumerCache || {};\n\n this.ajax = opts.ajax || _xdr;\n\n this._atob = opts.atob || _atob;\n\n this._get = function _get(location) {\n return new Promise(function(resolve, reject) {\n var isDataUrl = location.substr(0, 5) === 'data:';\n if (this.sourceCache[location]) {\n resolve(this.sourceCache[location]);\n } else if (opts.offline && !isDataUrl) {\n reject(new Error('Cannot make network requests in offline mode'));\n } else {\n if (isDataUrl) {\n // data URLs can have parameters.\n // see http://tools.ietf.org/html/rfc2397\n var supportedEncodingRegexp =\n /^data:application\\/json;([\\w=:\"-]+;)*base64,/;\n var match = location.match(supportedEncodingRegexp);\n if (match) {\n var sourceMapStart = match[0].length;\n var encodedSource = location.substr(sourceMapStart);\n var source = this._atob(encodedSource);\n this.sourceCache[location] = source;\n resolve(source);\n } else {\n reject(new Error('The encoding of the inline sourcemap is not supported'));\n }\n } else {\n var xhrPromise = this.ajax(location, {method: 'get'});\n // Cache the Promise to prevent duplicate in-flight requests\n this.sourceCache[location] = xhrPromise;\n xhrPromise.then(resolve, reject);\n }\n }\n }.bind(this));\n };\n\n /**\n * Creating SourceMapConsumers is expensive, so this wraps the creation of a\n * SourceMapConsumer in a per-instance cache.\n *\n * @param {String} sourceMappingURL = URL to fetch source map from\n * @param {String} defaultSourceRoot = Default source root for source map if undefined\n * @returns {Promise} that resolves a SourceMapConsumer\n */\n this._getSourceMapConsumer = function _getSourceMapConsumer(sourceMappingURL, defaultSourceRoot) {\n return new Promise(function(resolve) {\n if (this.sourceMapConsumerCache[sourceMappingURL]) {\n resolve(this.sourceMapConsumerCache[sourceMappingURL]);\n } else {\n var sourceMapConsumerPromise = new Promise(function(resolve, reject) {\n return this._get(sourceMappingURL).then(function(sourceMapSource) {\n if (typeof sourceMapSource === 'string') {\n sourceMapSource = _parseJson(sourceMapSource.replace(/^\\)\\]\\}'/, ''));\n }\n if (typeof sourceMapSource.sourceRoot === 'undefined') {\n sourceMapSource.sourceRoot = defaultSourceRoot;\n }\n\n resolve(new SourceMap.SourceMapConsumer(sourceMapSource));\n }).catch(reject);\n }.bind(this));\n this.sourceMapConsumerCache[sourceMappingURL] = sourceMapConsumerPromise;\n resolve(sourceMapConsumerPromise);\n }\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, enhance function name and use source maps for a\n * better StackFrame.\n *\n * @param {StackFrame} stackframe object\n * @returns {Promise} that resolves with with source-mapped StackFrame\n */\n this.pinpoint = function StackTraceGPS$$pinpoint(stackframe) {\n return new Promise(function(resolve, reject) {\n this.getMappedLocation(stackframe).then(function(mappedStackFrame) {\n function resolveMappedStackFrame() {\n resolve(mappedStackFrame);\n }\n\n this.findFunctionName(mappedStackFrame)\n .then(resolve, resolveMappedStackFrame)\n // eslint-disable-next-line no-unexpected-multiline\n ['catch'](resolveMappedStackFrame);\n }.bind(this), reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, guess function name from location information.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.findFunctionName = function StackTraceGPS$$findFunctionName(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureStackFrameIsLegit(stackframe);\n this._get(stackframe.fileName).then(function getSourceCallback(source) {\n var lineNumber = stackframe.lineNumber;\n var columnNumber = stackframe.columnNumber;\n var guessedFunctionName = _findFunctionName(source, lineNumber, columnNumber);\n // Only replace functionName if we found something\n if (guessedFunctionName) {\n resolve(new StackFrame({\n functionName: guessedFunctionName,\n args: stackframe.args,\n fileName: stackframe.fileName,\n lineNumber: lineNumber,\n columnNumber: columnNumber\n }));\n } else {\n resolve(stackframe);\n }\n }, reject)['catch'](reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, seek source-mapped location and return new enhanced StackFrame.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.getMappedLocation = function StackTraceGPS$$getMappedLocation(stackframe) {\n return new Promise(function(resolve, reject) {\n _ensureSupportedEnvironment();\n _ensureStackFrameIsLegit(stackframe);\n\n var sourceCache = this.sourceCache;\n var fileName = stackframe.fileName;\n this._get(fileName).then(function(source) {\n var sourceMappingURL = _findSourceMappingURL(source);\n var isDataUrl = sourceMappingURL.substr(0, 5) === 'data:';\n var defaultSourceRoot = fileName.substring(0, fileName.lastIndexOf('/') + 1);\n\n if (sourceMappingURL[0] !== '/' && !isDataUrl && !(/^https?:\\/\\/|^\\/\\//i).test(sourceMappingURL)) {\n sourceMappingURL = defaultSourceRoot + sourceMappingURL;\n }\n\n return this._getSourceMapConsumer(sourceMappingURL, defaultSourceRoot)\n .then(function(sourceMapConsumer) {\n return _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache)\n .then(resolve)['catch'](function() {\n resolve(stackframe);\n });\n });\n }.bind(this), reject)['catch'](reject);\n }.bind(this));\n };\n };\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace', ['error-stack-parser', 'stack-generator', 'stacktrace-gps'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('error-stack-parser'), require('stack-generator'), require('stacktrace-gps'));\n } else {\n root.StackTrace = factory(root.ErrorStackParser, root.StackGenerator, root.StackTraceGPS);\n }\n}(this, function StackTrace(ErrorStackParser, StackGenerator, StackTraceGPS) {\n var _options = {\n filter: function(stackframe) {\n // Filter out stackframes for this library by default\n return (stackframe.functionName || '').indexOf('StackTrace$$') === -1 &&\n (stackframe.functionName || '').indexOf('ErrorStackParser$$') === -1 &&\n (stackframe.functionName || '').indexOf('StackTraceGPS$$') === -1 &&\n (stackframe.functionName || '').indexOf('StackGenerator$$') === -1;\n },\n sourceCache: {}\n };\n\n var _generateError = function StackTrace$$GenerateError() {\n try {\n // Error must be thrown to get stack in IE\n throw new Error();\n } catch (err) {\n return err;\n }\n };\n\n /**\n * Merge 2 given Objects. If a conflict occurs the second object wins.\n * Does not do deep merges.\n *\n * @param {Object} first base object\n * @param {Object} second overrides\n * @returns {Object} merged first and second\n * @private\n */\n function _merge(first, second) {\n var target = {};\n\n [first, second].forEach(function(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n target[prop] = obj[prop];\n }\n }\n return target;\n });\n\n return target;\n }\n\n function _isShapedLikeParsableError(err) {\n return err.stack || err['opera#sourceloc'];\n }\n\n function _filtered(stackframes, filter) {\n if (typeof filter === 'function') {\n return stackframes.filter(filter);\n }\n return stackframes;\n }\n\n return {\n /**\n * Get a backtrace from invocation point.\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n get: function StackTrace$$get(opts) {\n var err = _generateError();\n return _isShapedLikeParsableError(err) ? this.fromError(err, opts) : this.generateArtificially(opts);\n },\n\n /**\n * Get a backtrace from invocation point.\n * IMPORTANT: Does not handle source maps or guess function names!\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n getSync: function StackTrace$$getSync(opts) {\n opts = _merge(_options, opts);\n var err = _generateError();\n var stack = _isShapedLikeParsableError(err) ? ErrorStackParser.parse(err) : StackGenerator.backtrace(opts);\n return _filtered(stack, opts.filter);\n },\n\n /**\n * Given an error object, parse it.\n *\n * @param {Error} error object\n * @param {Object} opts\n * @returns {Promise} for Array[StackFrame}\n */\n fromError: function StackTrace$$fromError(error, opts) {\n opts = _merge(_options, opts);\n var gps = new StackTraceGPS(opts);\n return new Promise(function(resolve) {\n var stackframes = _filtered(ErrorStackParser.parse(error), opts.filter);\n resolve(Promise.all(stackframes.map(function(sf) {\n return new Promise(function(resolve) {\n function resolveOriginal() {\n resolve(sf);\n }\n\n gps.pinpoint(sf).then(resolve, resolveOriginal)['catch'](resolveOriginal);\n });\n })));\n }.bind(this));\n },\n\n /**\n * Use StackGenerator to generate a backtrace.\n *\n * @param {Object} opts\n * @returns {Promise} of Array[StackFrame]\n */\n generateArtificially: function StackTrace$$generateArtificially(opts) {\n opts = _merge(_options, opts);\n var stackFrames = StackGenerator.backtrace(opts);\n if (typeof opts.filter === 'function') {\n stackFrames = stackFrames.filter(opts.filter);\n }\n return Promise.resolve(stackFrames);\n },\n\n /**\n * Given a function, wrap it such that invocations trigger a callback that\n * is called with a stack trace.\n *\n * @param {Function} fn to be instrumented\n * @param {Function} callback function to call with a stack trace on invocation\n * @param {Function} errback optional function to call with error if unable to get stack trace.\n * @param {Object} thisArg optional context object (e.g. window)\n */\n instrument: function StackTrace$$instrument(fn, callback, errback, thisArg) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n // Already instrumented, return given Function\n return fn;\n }\n\n var instrumented = function StackTrace$$instrumented() {\n try {\n this.get().then(callback, errback)['catch'](errback);\n return fn.apply(thisArg || this, arguments);\n } catch (e) {\n if (_isShapedLikeParsableError(e)) {\n this.fromError(e).then(callback, errback)['catch'](errback);\n }\n throw e;\n }\n }.bind(this);\n instrumented.__stacktraceOriginalFn = fn;\n\n return instrumented;\n },\n\n /**\n * Given a function that has been instrumented,\n * revert the function to it's original (non-instrumented) state.\n *\n * @param {Function} fn to de-instrument\n */\n deinstrument: function StackTrace$$deinstrument(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot de-instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n return fn.__stacktraceOriginalFn;\n } else {\n // Function not instrumented, return original\n return fn;\n }\n },\n\n /**\n * Given an error message and Array of StackFrames, serialize and POST to given URL.\n *\n * @param {Array} stackframes\n * @param {String} url\n * @param {String} errorMsg\n * @param {Object} requestOptions\n */\n report: function StackTrace$$report(stackframes, url, errorMsg, requestOptions) {\n return new Promise(function(resolve, reject) {\n var req = new XMLHttpRequest();\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 400) {\n resolve(req.responseText);\n } else {\n reject(new Error('POST to ' + url + ' failed with status: ' + req.status));\n }\n }\n };\n req.open('post', url);\n\n // Set request headers\n req.setRequestHeader('Content-Type', 'application/json');\n if (requestOptions && typeof requestOptions.headers === 'object') {\n var headers = requestOptions.headers;\n for (var header in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, header)) {\n req.setRequestHeader(header, headers[header]);\n }\n }\n }\n\n var reportPayload = {stack: stackframes};\n if (errorMsg !== undefined && errorMsg !== null) {\n reportPayload.message = errorMsg;\n }\n\n req.send(JSON.stringify(reportPayload));\n });\n }\n };\n}));\n","const { isArray } = Array;\nconst { getPrototypeOf, getOwnPropertyDescriptor } = Object;\n\nexport { isArray };\n\nexport const empty = [];\n\nexport const newRange = () => document.createRange();\n\n/**\n * Set the `key` `value` pair to the *Map* or *WeakMap* and returns the `value`\n * @template T\n * @param {Map | WeakMap} map\n * @param {any} key\n * @param {T} value\n * @returns {T}\n */\nexport const set = (map, key, value) => {\n map.set(key, value);\n return value;\n};\n\nexport const gPD = (ref, prop) => {\n let desc;\n do { desc = getOwnPropertyDescriptor(ref, prop); }\n while(!desc && (ref = getPrototypeOf(ref)));\n return desc;\n};\n","import { empty } from './utils.js';\n\n/** @typedef {import(\"domconstants/constants\").ATTRIBUTE_NODE} ATTRIBUTE_NODE */\n/** @typedef {import(\"domconstants/constants\").TEXT_NODE} TEXT_NODE */\n/** @typedef {import(\"domconstants/constants\").COMMENT_NODE} COMMENT_NODE */\n/** @typedef {ATTRIBUTE_NODE | TEXT_NODE | COMMENT_NODE} Type */\n\n/** @typedef {import(\"./persistent-fragment.js\").PersistentFragment} PersistentFragment */\n/** @typedef {import(\"./rabbit.js\").Hole} Hole */\n\n/** @typedef {unknown} Value */\n/** @typedef {Node | Element | PersistentFragment} Target */\n/** @typedef {null | undefined | string | number | boolean | Node | Element | PersistentFragment} DOMValue */\n\n/**\n * @typedef {Object} Entry\n * @property {Type} type\n * @property {number[]} path\n * @property {function} update\n * @property {string} name\n */\n\n/**\n * @param {PersistentFragment} c content retrieved from the template\n * @param {Entry[]} e entries per each hole in the template\n * @param {number} l the length of content childNodes\n * @returns\n */\nexport const cel = (c, e, l) => ({ c, e, l });\n\n/**\n * @typedef {Object} HoleDetails\n * @property {null | Node | PersistentFragment} n the current live node, if any and not the `t` one\n */\n\n/** @type {() => HoleDetails} */\nexport const comment = () => ({ n: null });\n\n/**\n * @typedef {Object} Detail\n * @property {any} v the current value of the interpolation / hole\n * @property {function} u the callback to update the value\n * @property {Node} t the target comment node or element\n * @property {string} n the name of the attribute, if any\n */\n\n/**\n * @param {any} v the current value of the interpolation / hole\n * @param {function} u the callback to update the value\n * @param {Node} t the target comment node or element\n * @param {string} n the name of the attribute, if any\n * @returns {Detail}\n */\nexport const detail = (v, u, t, n) => ({ v, u, t, n });\n\n/**\n * @param {Type} t the operation type\n * @param {number[]} p the path to retrieve the node\n * @param {function} u the update function\n * @param {string} n the attribute name, if any\n * @returns {Entry}\n */\nexport const entry = (t, p, u, n = '') => ({ t, p, u, n });\n\n/**\n * @typedef {Object} Cache\n * @property {Cache[]} s the stack of caches per each interpolation / hole\n * @property {null | TemplateStringsArray} t the cached template\n * @property {null | Node | PersistentFragment} n the node returned when parsing the template\n * @property {Detail[]} d the list of updates to perform\n */\n\n/**\n * @param {Cache[]} s the cache stack\n * @returns {Cache}\n */\nexport const cache = s => ({ s, t: null, n: null, d: empty});\n\n/**\n * @typedef {Object} Parsed\n * @property {Node | PersistentFragment} n the returned node after parsing the template\n * @property {Detail[]} d the list of details to update the node\n */\n\n/**\n * @param {Node | PersistentFragment} n the returned node after parsing the template\n * @param {Detail[]} d the list of details to update the node\n * @returns {Parsed}\n */\nexport const parsed = (n, d) => ({ n, d });\n","export const ELEMENT_NODE = 1;\nexport const ATTRIBUTE_NODE = 2;\nexport const TEXT_NODE = 3;\nexport const COMMENT_NODE = 8;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_TYPE_NODE = 10;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n","/*! (c) Andrea Giammarchi - ISC */\nconst {setPrototypeOf} = Object;\n\n/**\n * @param {Function} Class any base class to extend without passing through it via super() call.\n * @returns {Function} an extensible class for the passed one.\n * @example\n * // creating this very same module utility\n * import custom from 'custom-function/factory';\n * const CustomFunction = custom(Function);\n * class MyFunction extends CustomFunction {}\n * const mf = new MyFunction(() => {});\n */\nexport default Class => {\n function Custom(target) {\n return setPrototypeOf(target, new.target.prototype);\n }\n Custom.prototype = Class.prototype;\n return Custom;\n};\n","import { newRange } from './utils.js';\n\nlet range;\n/**\n * @param {Node | Element} firstChild\n * @param {Node | Element} lastChild\n * @param {boolean} preserve\n * @returns\n */\nexport default (firstChild, lastChild, preserve) => {\n if (!range) range = newRange();\n if (preserve)\n range.setStartAfter(firstChild);\n else\n range.setStartBefore(firstChild);\n range.setEndAfter(lastChild);\n range.deleteContents();\n return firstChild;\n};\n","import { DOCUMENT_FRAGMENT_NODE } from 'domconstants/constants';\nimport custom from 'custom-function/factory';\nimport drop from './range.js';\n\n/**\n * @param {PersistentFragment} fragment\n * @returns {Node | Element}\n */\nconst remove = ({firstChild, lastChild}, preserve) => drop(firstChild, lastChild, preserve);\n\nlet checkType = false;\n\n/**\n * @param {Node} node\n * @param {1 | 0 | -0 | -1} operation\n * @returns {Node}\n */\nexport const diffFragment = (node, operation) => (\n checkType && node.nodeType === DOCUMENT_FRAGMENT_NODE ?\n ((1 / operation) < 0 ?\n (operation ? remove(node, true) : node.lastChild) :\n (operation ? node.valueOf() : node.firstChild)) :\n node\n);\n\n/** @extends {DocumentFragment} */\nexport class PersistentFragment extends custom(DocumentFragment) {\n #nodes;\n #length;\n constructor(fragment) {\n const _nodes = [...fragment.childNodes];\n super(fragment);\n this.#nodes = _nodes;\n this.#length = _nodes.length;\n checkType = true;\n }\n get firstChild() { return this.#nodes[0]; }\n get lastChild() { return this.#nodes.at(-1); }\n get parentNode() { return this.#nodes[0].parentNode; }\n remove() {\n remove(this, false);\n }\n replaceWith(node) {\n remove(this, true).replaceWith(node);\n }\n valueOf() {\n if (this.childNodes.length !== this.#length)\n this.replaceChildren(...this.#nodes);\n return this;\n }\n}\n","import { COMMENT_NODE } from 'domconstants/constants';\n\nimport { PersistentFragment } from './persistent-fragment.js';\nimport { detail, parsed } from './literals.js';\nimport { empty } from './utils.js';\n\n/**\n * @param {DocumentFragment} content\n * @param {number[]} path\n * @returns {Element}\n */\nconst find = (content, path) => path.reduceRight(childNodesIndex, content);\nconst childNodesIndex = (node, i) => node.childNodes[i];\n\n/** @param {(template: TemplateStringsArray, values: any[]) => import(\"./parser.js\").Resolved} parse */\nexport default parse => (\n /** @param {(template: TemplateStringsArray, values: any[]) => import(\"./literals.js\").Parsed} parse */\n (template, values) => {\n const { c: content, e: entries, l: length } = parse(template, values);\n const root = content.cloneNode(true);\n // reverse loop to avoid missing paths while populating\n // TODO: is it even worth to pre-populate nodes? see rabbit.js too\n let current, prev, i = entries.length, details = i ? entries.slice(0) : empty;\n while (i--) {\n const { t: type, p: path, u: update, n: name } = entries[i];\n const node = path === prev ? current : (current = find(root, (prev = path)));\n const callback = type === COMMENT_NODE ? update() : update;\n details[i] = detail(callback(node, values[i], name, empty), callback, node, name);\n }\n return parsed(\n length === 1 ? root.firstChild : new PersistentFragment(root),\n details\n );\n }\n);\n","export const TEXT_ELEMENTS = /^(?:plaintext|script|style|textarea|title|xmp)$/i;\nexport const VOID_ELEMENTS = /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;\n","/*! (c) Andrea Giammarchi - ISC */\nimport { VOID_ELEMENTS } from 'domconstants/re';\n\nconst elements = /<([a-zA-Z0-9]+[a-zA-Z0-9:._-]*)([^>]*?)(\\/?)>/g;\nconst attributes = /([^\\s\\\\>\"'=]+)\\s*=\\s*(['\"]?)\\x01/g;\nconst holes = /[\\x01\\x02]/g;\n\n// \\x01 Node.ELEMENT_NODE\n// \\x02 Node.ATTRIBUTE_NODE\n\n/**\n * Given a template, find holes as both nodes and attributes and\n * return a string with holes as either comment nodes or named attributes.\n * @param {string[]} template a template literal tag array\n * @param {string} prefix prefix to use per each comment/attribute\n * @param {boolean} xml enforces self-closing tags\n * @returns {string} X/HTML with prefixed comments or attributes\n */\nexport default (template, prefix, xml) => {\n let i = 0;\n return template\n .join('\\x01')\n .trim()\n .replace(\n elements,\n (_, name, attrs, selfClosing) => `<${\n name\n }${\n attrs.replace(attributes, '\\x02=$2$1').trimEnd()\n }${\n selfClosing ? (\n (xml || VOID_ELEMENTS.test(name)) ? ' /' : `>`\n )\n .replace(\n holes,\n hole => hole === '\\x01' ? `` : (prefix + i++)\n )\n ;\n};\n","/**\n * ISC License\n *\n * Copyright (c) 2020, Andrea Giammarchi, @WebReflection\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE\n * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * @param {Node} parentNode The container where children live\n * @param {Node[]} a The list of current/live children\n * @param {Node[]} b The list of future children\n * @param {(entry: Node, action: number) => Node} get\n * The callback invoked per each entry related DOM operation.\n * @param {Node} [before] The optional node used as anchor to insert before.\n * @returns {Node[]} The same list of future children.\n */\nexport default (parentNode, a, b, get, before) => {\n const bLength = b.length;\n let aEnd = a.length;\n let bEnd = bLength;\n let aStart = 0;\n let bStart = 0;\n let map = null;\n while (aStart < aEnd || bStart < bEnd) {\n // append head, tail, or nodes in between: fast path\n if (aEnd === aStart) {\n // we could be in a situation where the rest of nodes that\n // need to be added are not at the end, and in such case\n // the node to `insertBefore`, if the index is more than 0\n // must be retrieved, otherwise it's gonna be the first item.\n const node = bEnd < bLength ?\n (bStart ?\n (get(b[bStart - 1], -0).nextSibling) :\n get(b[bEnd - bStart], 0)) :\n before;\n while (bStart < bEnd)\n parentNode.insertBefore(get(b[bStart++], 1), node);\n }\n // remove head or tail: fast path\n else if (bEnd === bStart) {\n while (aStart < aEnd) {\n // remove the node only if it's unknown or not live\n if (!map || !map.has(a[aStart]))\n parentNode.removeChild(get(a[aStart], -1));\n aStart++;\n }\n }\n // same node: fast path\n else if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n }\n // same tail: fast path\n else if (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n // The once here single last swap \"fast path\" has been removed in v1.1.0\n // https://github.com/WebReflection/udomdiff/blob/single-final-swap/esm/index.js#L69-L85\n // reverse swap: also fast path\n else if (\n a[aStart] === b[bEnd - 1] &&\n b[bStart] === a[aEnd - 1]\n ) {\n // this is a \"shrink\" operation that could happen in these cases:\n // [1, 2, 3, 4, 5]\n // [1, 4, 3, 2, 5]\n // or asymmetric too\n // [1, 2, 3, 4, 5]\n // [1, 2, 3, 5, 6, 4]\n const node = get(a[--aEnd], -1).nextSibling;\n parentNode.insertBefore(\n get(b[bStart++], 1),\n get(a[aStart++], -1).nextSibling\n );\n parentNode.insertBefore(get(b[--bEnd], 1), node);\n // mark the future index as identical (yeah, it's dirty, but cheap 👍)\n // The main reason to do this, is that when a[aEnd] will be reached,\n // the loop will likely be on the fast path, as identical to b[bEnd].\n // In the best case scenario, the next loop will skip the tail,\n // but in the worst one, this node will be considered as already\n // processed, bailing out pretty quickly from the map index check\n a[aEnd] = b[bEnd];\n }\n // map based fallback, \"slow\" path\n else {\n // the map requires an O(bEnd - bStart) operation once\n // to store all future nodes indexes for later purposes.\n // In the worst case scenario, this is a full O(N) cost,\n // and such scenario happens at least when all nodes are different,\n // but also if both first and last items of the lists are different\n if (!map) {\n map = new Map;\n let i = bStart;\n while (i < bEnd)\n map.set(b[i], i++);\n }\n // if it's a future node, hence it needs some handling\n if (map.has(a[aStart])) {\n // grab the index of such node, 'cause it might have been processed\n const index = map.get(a[aStart]);\n // if it's not already processed, look on demand for the next LCS\n if (bStart < index && index < bEnd) {\n let i = aStart;\n // counts the amount of nodes that are the same in the future\n let sequence = 1;\n while (++i < aEnd && i < bEnd && map.get(a[i]) === (index + sequence))\n sequence++;\n // effort decision here: if the sequence is longer than replaces\n // needed to reach such sequence, which would brings again this loop\n // to the fast path, prepend the difference before a sequence,\n // and move only the future list index forward, so that aStart\n // and bStart will be aligned again, hence on the fast path.\n // An example considering aStart and bStart are both 0:\n // a: [1, 2, 3, 4]\n // b: [7, 1, 2, 3, 6]\n // this would place 7 before 1 and, from that time on, 1, 2, and 3\n // will be processed at zero cost\n if (sequence > (index - bStart)) {\n const node = get(a[aStart], 0);\n while (bStart < index)\n parentNode.insertBefore(get(b[bStart++], 1), node);\n }\n // if the effort wasn't good enough, fallback to a replace,\n // moving both source and target indexes forward, hoping that some\n // similar node will be found later on, to go back to the fast path\n else {\n parentNode.replaceChild(\n get(b[bStart++], 1),\n get(a[aStart++], -1)\n );\n }\n }\n // otherwise move the source forward, 'cause there's nothing to do\n else\n aStart++;\n }\n // this node has no meaning in the future list, so it's more than safe\n // to remove it, and check the next live node out instead, meaning\n // that only the live list index should be forwarded\n else\n parentNode.removeChild(get(a[aStart++], -1));\n }\n }\n return b;\n};\n","import udomdiff from 'udomdiff';\nimport { empty, gPD, isArray, set } from './utils.js';\nimport { diffFragment } from './persistent-fragment.js';\nimport { comment } from './literals.js';\nimport drop from './range.js';\n\nconst setAttribute = (element, name, value) =>\n element.setAttribute(name, value);\n\nexport const removeAttribute = (element, name) =>\n element.removeAttribute(name);\n\n/**\n * @template T\n * @param {Element} element\n * @param {T} value\n * @returns {T}\n */\nexport const aria = (element, value) => {\n for (const key in value) {\n const $ = value[key];\n const name = key === 'role' ? key : `aria-${key}`;\n if ($ == null) removeAttribute(element, name);\n else setAttribute(element, name, $);\n }\n return value;\n};\n\nexport const arrayComment = () => array;\n\nlet listeners;\n\n/**\n * @template T\n * @param {Element} element\n * @param {T} value\n * @param {string} name\n * @returns {T}\n */\nexport const at = (element, value, name) => {\n name = name.slice(1);\n if (!listeners) listeners = new WeakMap;\n const known = listeners.get(element) || set(listeners, element, {});\n let current = known[name];\n if (current && current[0]) element.removeEventListener(name, ...current);\n current = isArray(value) ? value : [value, false];\n known[name] = current;\n if (current[0]) element.addEventListener(name, ...current);\n return value;\n};\n\n/**\n * @template T\n * @this {import(\"./literals.js\").HoleDetails}\n * @param {Node} node\n * @param {T} value\n * @returns {T}\n */\nfunction hole(node, value) {\n const n = this.n || (this.n = node);\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean': {\n if (n !== node) n.replaceWith((this.n = node));\n this.n.data = value;\n break;\n }\n case 'object':\n case 'undefined': {\n if (value == null) (this.n = node).data = '';\n else this.n = value.valueOf();\n n.replaceWith(this.n);\n break;\n }\n }\n return value;\n};\n\nexport const boundComment = () => hole.bind(comment());\n\n/**\n * @template T\n * @param {Element} element\n * @param {T} value\n * @returns {T}\n */\nexport const className = (element, value) => maybeDirect(\n element, value, value == null ? 'class' : 'className'\n);\n\n/**\n * @template T\n * @param {Element} element\n * @param {T} value\n * @returns {T}\n */\nexport const data = (element, value) => {\n const { dataset } = element;\n for (const key in value) {\n if (value[key] == null) delete dataset[key];\n else dataset[key] = value[key];\n }\n return value;\n};\n\n/**\n * @template T\n * @param {Element | CSSStyleDeclaration} ref\n * @param {T} value\n * @param {string} name\n * @returns {T}\n */\nexport const direct = (ref, value, name) => (ref[name] = value);\n\n/**\n * @template T\n * @param {Element} element\n * @param {T} value\n * @param {string} name\n * @returns {T}\n */\nexport const dot = (element, value, name) => direct(element, value, name.slice(1));\n\n/**\n * @template T\n * @param {Element} element\n * @param {T} value\n * @param {string} name\n * @returns {T}\n */\nexport const maybeDirect = (element, value, name) => (\n value == null ?\n (removeAttribute(element, name), value) :\n direct(element, value, name)\n);\n\n/**\n * @template T\n * @param {Element} element\n * @param {T} value\n * @returns {T}\n */\nexport const ref = (element, value) => (\n (typeof value === 'function' ?\n value(element) : (value.current = element)),\n value\n);\n\n/**\n * @template T\n * @param {Element} element\n * @param {T} value\n * @param {string} name\n * @returns {T}\n */\nconst regular = (element, value, name) => (\n (value == null ?\n removeAttribute(element, name) :\n setAttribute(element, name, value)),\n value\n);\n\n/**\n * @template T\n * @param {Element} element\n * @param {T} value\n * @returns {T}\n */\nexport const style = (element, value) => (\n value == null ?\n maybeDirect(element, value, 'style') :\n direct(element.style, value, 'cssText')\n);\n\n/**\n * @template T\n * @param {Element} element\n * @param {T} value\n * @param {string} name\n * @returns {T}\n */\nexport const toggle = (element, value, name) => (\n element.toggleAttribute(name.slice(1), value),\n value\n);\n\n/**\n * @param {Node} node\n * @param {Node[]} value\n * @param {string} _\n * @param {Node[]} prev\n * @returns {Node[]}\n */\nexport const array = (node, value, _, prev) => (\n value.length ?\n udomdiff(node.parentNode, prev, value, diffFragment, node) :\n (prev.length && drop(prev[0], prev.at(-1), false), empty)\n);\n\nexport const attr = new Map([\n ['aria', aria],\n ['class', className],\n ['data', data],\n ['ref', ref],\n ['style', style],\n]);\n\n/**\n * @param {HTMLElement | SVGElement} element\n * @param {string} name\n * @param {boolean} svg\n * @returns\n */\nexport const attribute = (element, name, svg) => {\n switch (name[0]) {\n case '.': return dot;\n case '?': return toggle;\n case '@': return at;\n default: return (\n svg || ('ownerSVGElement' in element) ?\n (name === 'ref' ? ref : regular) :\n (attr.get(name) || (\n name in element ?\n (name.startsWith('on') ?\n direct :\n (gPD(element, name)?.set ? maybeDirect : regular)\n ) :\n regular\n )\n )\n );\n }\n};\n\n/**\n * @template T\n * @param {Element} element\n * @param {T} value\n * @returns {T}\n */\nexport const text = (element, value) => (\n (element.textContent = value == null ? '' : value),\n value\n);\n","import { newRange } from './utils.js';\n\nlet template = document.createElement('template'), svg, range;\n\n/**\n * @param {string} text\n * @param {boolean} xml\n * @returns {DocumentFragment}\n */\nexport default (text, xml) => {\n if (xml) {\n if (!svg) {\n svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n range = newRange();\n range.selectNodeContents(svg);\n }\n return range.createContextualFragment(text);\n }\n template.innerHTML = text;\n const { content } = template;\n template = template.cloneNode(false);\n return content;\n};\n","import { ATTRIBUTE_NODE, TEXT_NODE, COMMENT_NODE } from 'domconstants/constants';\nimport { TEXT_ELEMENTS } from 'domconstants/re';\nimport parser from '@webreflection/uparser';\n\nimport { empty, isArray, set } from './utils.js';\nimport { cel, entry } from './literals.js';\n\nimport { attribute, text, arrayComment, boundComment, removeAttribute } from './handler.js';\nimport createContent from './create-content.js';\n\n/** @typedef {import(\"./literals.js\").Entry} Entry */\n\n/**\n * @typedef {Object} Resolved\n * @property {DocumentFragment} content\n * @property {Entry[]} entries\n * @property {function[]} updates\n * @property {number} length\n */\n\n/**\n * @param {Element} node\n * @returns {number[]}\n */\nconst createPath = node => {\n const path = [];\n let parentNode;\n while ((parentNode = node.parentNode)) {\n path.push(path.indexOf.call(parentNode.childNodes, node));\n node = parentNode;\n }\n return path;\n};\n\n/**\n * @param {TemplateStringsArray} template\n * @param {boolean} xml\n * @returns {Resolved}\n */\nconst resolve = (template, values, xml) => {\n const content = createContent(parser(template, prefix, xml), xml);\n const { length } = template;\n let asArray = false, entries = empty;\n if (length > 1) {\n const tw = document.createTreeWalker(content, 1 | 128);\n const replace = [];\n let i = 0, search = `${prefix}${i++}`;\n entries = [];\n while (i < length) {\n const node = tw.nextNode();\n if (node.nodeType === COMMENT_NODE) {\n if (node.data === search) {\n let update = isArray(values[i - 1]) ? arrayComment : boundComment;\n if (update === boundComment) replace.push(node);\n else asArray = true;\n entries.push(entry(COMMENT_NODE, createPath(node), update));\n search = `${prefix}${i++}`;\n }\n }\n else {\n let path;\n while (node.hasAttribute(search)) {\n if (!path) path = createPath(node);\n const name = node.getAttribute(search);\n entries.push(entry(ATTRIBUTE_NODE, path, attribute(node, name, xml), name));\n removeAttribute(node, search);\n search = `${prefix}${i++}`;\n }\n if (\n TEXT_ELEMENTS.test(node.localName) &&\n node.textContent.trim() === ``\n ) {\n entries.push(entry(TEXT_NODE, path || createPath(node), text));\n search = `${prefix}${i++}`;\n }\n }\n }\n for (i = 0; i < replace.length; i++)\n replace[i].replaceWith(document.createTextNode(''));\n }\n const l = content.childNodes.length;\n return set(cache, template, cel(content, entries, l === 1 && asArray ? 0 : l));\n};\n\n/** @type {WeakMap} */\nconst cache = new WeakMap;\nconst prefix = 'isµ';\n\n/**\n * @param {boolean} xml\n * @returns {(template: TemplateStringsArray, values: any[]) => Resolved}\n */\nexport default xml => (template, values) => cache.get(template) || resolve(template, values, xml);\n","import { cache } from './literals.js';\nimport { empty, isArray } from './utils.js';\nimport create from './creator.js';\nimport parser from './parser.js';\n\nconst parseHTML = create(parser(false));\nconst parseSVG = create(parser(true));\n\n/**\n * @param {import(\"./literals.js\").Cache} cache\n * @param {Hole} hole\n * @returns {Node}\n */\nexport const unroll = (cache, { s: svg, t: template, v: values }) => {\n if (values.length && cache.s === empty) cache.s = [];\n const length = unrollValues(cache, values);\n if (cache.t !== template) {\n const { n: node, d: details } = (svg ? parseSVG : parseHTML)(template, values);\n cache.t = template;\n cache.n = node;\n cache.d = details;\n }\n else {\n const { d: details } = cache;\n for (let i = 0; i < length; i++) {\n const value = values[i];\n const detail = details[i];\n const { v: previous } = detail;\n if (value !== previous) {\n const { u: update, t: target, n: name } = detail;\n detail.v = update(target, value, name, previous);\n }\n }\n }\n return cache.n;\n};\n\n/**\n * @param {Cache} cache\n * @param {any[]} values\n * @returns {number}\n */\nconst unrollValues = ({ s: stack }, values) => {\n const { length } = values;\n for (let i = 0; i < length; i++) {\n const hole = values[i];\n if (hole instanceof Hole)\n values[i] = unroll(stack[i] || (stack[i] = cache(empty)), hole);\n else if (isArray(hole))\n unrollValues(stack[i] || (stack[i] = cache([])), hole);\n else\n stack[i] = null;\n }\n if (length < stack.length) stack.splice(length);\n return length;\n};\n\n/**\n * Holds all details needed to render the content on a render.\n * @constructor\n * @param {boolean} svg The content type.\n * @param {TemplateStringsArray} template The template literals used to the define the content.\n * @param {any[]} values Zero, one, or more interpolated values to render.\n */\nexport class Hole {\n constructor(svg, template, values) {\n this.s = svg;\n this.t = template;\n this.v = values;\n }\n};\n","import { cache } from '../literals.js';\nimport { unroll } from '../rabbit.js';\nimport { empty, set } from '../utils.js';\n\n/** @typedef {import(\"../rabbit.js\").Hole} Hole */\n\n/** @type {WeakMap} */\nconst known = new WeakMap;\n\n/**\n * Render with smart updates within a generic container.\n * @template T\n * @param {T} where the DOM node where to render content\n * @param {(() => Hole) | Hole} what the hole to render\n * @returns\n */\nexport default (where, what) => {\n const info = known.get(where) || set(known, where, cache(empty));\n if (info.n !== unroll(info, typeof what === 'function' ? what() : what))\n where.replaceChildren(info.n);\n return where;\n};\n","/*! (c) Andrea Giammarchi - MIT */\n\nimport { Hole } from './rabbit.js';\nimport { attr } from './handler.js';\nimport render from './render/hole.js';\n\n/** @typedef {import(\"./literals.js\").Value} Value */\n\nconst tag = svg => (template, ...values) => new Hole(svg, template, values);\n\n/** @type {(template: TemplateStringsArray, ...values:Value[]) => Hole} A tag to render HTML content. */\nconst html = tag(false);\n\n/** @type {(template: TemplateStringsArray, ...values:Value[]) => Hole} A tag to render SVG content. */\nconst svg = tag(true);\n\nexport { Hole, render, html, svg, attr };\n","/* remove eslint errors to see if there is something really wrong */\n/*eslint quotes: [0]*/\n/*eslint indent: [0]*/\n/*eslint vars-on-top: [0]*/\n/*eslint yoda: 0*/\n/*eslint curly: 0*/\n/*eslint no-implicit-coercion: 0*/\n/*eslint newline-after-var: 0*/\n/*eslint space-before-function-paren: 0*/\n/*eslint block-spacing: 0*/\n/*eslint brace-style: 0*/\n/*eslint complexity: 0*/\n/*eslint one-var: 0*/\n/*eslint eqeqeq: 0*/\n/*eslint object-curly-spacing: 0*/\n/*eslint quote-props: 0*/\n/*eslint key-spacing: 0*/\n/*eslint valid-jsdoc: 0*/\n/*eslint func-style: 0*/\n/*eslint no-nested-ternary: 0*/\n/*eslint operator-linebreak: 0*/\n/*eslint no-multi-spaces: 0*/\n/*eslint no-constant-condition: 0*/\n/*eslint comma-spacing: 0*/\n/*eslint no-else-return: 0*/\n/*eslint no-warning-comments: 0*/\n/*eslint default-case: 0*/\n/*eslint consistent-return: 0*/\n/*eslint no-undefined: 0*/\n/*eslint no-new-func: 0*/\n/*eslint max-nested-callbacks: 0*/\n/*eslint padded-blocks: 0*/\n/*eslint no-self-compare: 0*/\n/*eslint no-multiple-empty-lines: 0*/\n/*eslint no-new: 0*/\n/*eslint no-unused-vars: 0*/\n\"use strict\";\n\nvar window = { document: {} };\n\n/* We need to tell ESLint what variables are being exported */\n/* exported\n angular,\n msie,\n jqLite,\n jQuery,\n slice,\n splice,\n push,\n toString,\n ngMinErr,\n angularModule,\n uid,\n REGEX_STRING_REGEXP,\n VALIDITY_STATE_PROPERTY,\n\n lowercase,\n uppercase,\n manualLowercase,\n manualUppercase,\n nodeName_,\n isArrayLike,\n forEach,\n forEachSorted,\n reverseParams,\n nextUid,\n setHashKey,\n extend,\n toInt,\n inherit,\n merge,\n noop,\n identity,\n valueFn,\n isUndefined,\n isDefined,\n isObject,\n isBlankObject,\n isString,\n isNumber,\n isNumberNaN,\n isDate,\n isArray,\n isFunction,\n isRegExp,\n isWindow,\n isScope,\n isFile,\n isFormData,\n isBlob,\n isBoolean,\n isPromiseLike,\n trim,\n escapeForRegexp,\n isElement,\n makeMap,\n includes,\n arrayRemove,\n copy,\n equals,\n csp,\n jq,\n concat,\n sliceArgs,\n bind,\n toJsonReplacer,\n toJson,\n fromJson,\n convertTimezoneToLocal,\n timezoneToOffset,\n startingTag,\n tryDecodeURIComponent,\n parseKeyValue,\n toKeyValue,\n encodeUriSegment,\n encodeUriQuery,\n angularInit,\n bootstrap,\n getTestability,\n snake_case,\n bindJQuery,\n assertArg,\n assertArgFn,\n assertNotHasOwnProperty,\n getter,\n getBlockNodes,\n hasOwnProperty,\n createMap,\n stringify,\n\n NODE_TYPE_ELEMENT,\n NODE_TYPE_ATTRIBUTE,\n NODE_TYPE_TEXT,\n NODE_TYPE_COMMENT,\n NODE_TYPE_DOCUMENT,\n NODE_TYPE_DOCUMENT_FRAGMENT\n*/\n\n////////////////////////////////////\n\n/**\n * @ngdoc module\n * @name ng\n * @module ng\n * @installation\n * @description\n *\n * # ng (core module)\n * The ng module is loaded by default when an AngularJS application is started. The module itself\n * contains the essential components for an AngularJS application to function. The table below\n * lists a high level breakdown of each of the services/factories, filters, directives and testing\n * components available within this core module.\n *\n *
    \n */\n\nvar NODE_TYPE_ELEMENT = 1;\nvar NODE_TYPE_ATTRIBUTE = 2;\nvar NODE_TYPE_TEXT = 3;\nvar NODE_TYPE_COMMENT = 8;\nvar NODE_TYPE_DOCUMENT = 9;\nvar NODE_TYPE_DOCUMENT_FRAGMENT = 11;\nvar REGEX_STRING_REGEXP = /^\\/(.+)\\/([a-z]*)$/;\n\n// The name of a form control's ValidityState property.\n// This is used so that it's possible for internal tests to create mock ValidityStates.\nvar VALIDITY_STATE_PROPERTY = \"validity\";\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar lowercase = function (string) {\n\treturn isString(string) ? string.toLowerCase() : string;\n};\nvar uppercase = function (string) {\n\treturn isString(string) ? string.toUpperCase() : string;\n};\n\n/**\n * @ngdoc function\n * @name angular.isArray\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Array`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Array`.\n */\nvar isArray = Array.isArray;\n\nvar ngAttrPrefixes = [\"ng-\", \"data-ng-\", \"ng:\", \"x-ng-\"];\n\nvar manualLowercase = function (s) {\n\t/* eslint-disable no-bitwise */\n\treturn isString(s)\n\t\t? s.replace(/[A-Z]/g, function (ch) {\n\t\t\t\treturn String.fromCharCode(ch.charCodeAt(0) | 32);\n\t\t })\n\t\t: s;\n\t/* eslint-enable */\n};\nvar manualUppercase = function (s) {\n\t/* eslint-disable no-bitwise */\n\treturn isString(s)\n\t\t? s.replace(/[a-z]/g, function (ch) {\n\t\t\t\treturn String.fromCharCode(ch.charCodeAt(0) & ~32);\n\t\t })\n\t\t: s;\n\t/* eslint-enable */\n};\n\n// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish\n// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods\n// with correct but slower alternatives. See https://github.com/angular/angular.js/issues/11387\nif (\"i\" !== \"I\".toLowerCase()) {\n\tlowercase = manualLowercase;\n\tuppercase = manualUppercase;\n}\n\nvar msie, // holds major version number for IE, or NaN if UA is not IE.\n\tjqLite, // delay binding since jQuery could be loaded after us.\n\tjQuery, // delay binding\n\tslice = [].slice,\n\tsplice = [].splice,\n\tpush = [].push,\n\ttoString = Object.prototype.toString,\n\tgetPrototypeOf = Object.getPrototypeOf,\n\tngMinErr = minErr(\"ng\"),\n\t/** @name angular */\n\tangular = window.angular || (window.angular = {}),\n\tangularModule,\n\tuid = 0;\n\n/**\n * documentMode is an IE-only property\n * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx\n */\nmsie = window.document.documentMode;\n\n/**\n * @private\n * @param {*} obj\n * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,\n * String ...)\n */\nfunction isArrayLike(obj) {\n\t// `null`, `undefined` and `window` are not array-like\n\tif (obj == null || isWindow(obj)) return false;\n\n\t// arrays, strings and jQuery/jqLite objects are array like\n\t// * jqLite is either the jQuery or jqLite constructor function\n\t// * we have to check the existence of jqLite first as this method is called\n\t// via the forEach method when constructing the jqLite object in the first place\n\tif (isArray(obj) || isString(obj) || (jqLite && obj instanceof jqLite))\n\t\treturn true;\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// \"length\" in obj used to prevent JIT error (gh-11508)\n\tvar length = \"length\" in Object(obj) && obj.length;\n\n\t// NodeList objects (with `item` method) and\n\t// other objects with suitable length characteristics are array-like\n\treturn (\n\t\tisNumber(length) &&\n\t\t((length >= 0 && (length - 1 in obj || obj instanceof Array)) ||\n\t\t\ttypeof obj.item === \"function\")\n\t);\n}\n\n/**\n * @ngdoc function\n * @name angular.forEach\n * @module ng\n * @kind function\n *\n * @description\n * Invokes the `iterator` function once for each item in `obj` collection, which can be either an\n * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value`\n * is the value of an object property or an array element, `key` is the object property key or\n * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.\n *\n * It is worth noting that `.forEach` does not iterate over inherited properties because it filters\n * using the `hasOwnProperty` method.\n *\n * Unlike ES262's\n * [Array.prototype.forEach](http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18),\n * providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just\n * return the value provided.\n *\n ```js\n var values = {name: 'misko', gender: 'male'};\n var log = [];\n angular.forEach(values, function(value, key) {\n this.push(key + ': ' + value);\n }, log);\n expect(log).toEqual(['name: misko', 'gender: male']);\n ```\n *\n * @param {Object|Array} obj Object to iterate over.\n * @param {Function} iterator Iterator function.\n * @param {Object=} context Object to become context (`this`) for the iterator function.\n * @returns {Object|Array} Reference to `obj`.\n */\n\nfunction forEach(obj, iterator, context) {\n\tvar key, length;\n\tif (obj) {\n\t\tif (isFunction(obj)) {\n\t\t\tfor (key in obj) {\n\t\t\t\tif (\n\t\t\t\t\tkey !== \"prototype\" &&\n\t\t\t\t\tkey !== \"length\" &&\n\t\t\t\t\tkey !== \"name\" &&\n\t\t\t\t\tobj.hasOwnProperty(key)\n\t\t\t\t) {\n\t\t\t\t\titerator.call(context, obj[key], key, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isArray(obj) || isArrayLike(obj)) {\n\t\t\tvar isPrimitive = typeof obj !== \"object\";\n\t\t\tfor (key = 0, length = obj.length; key < length; key++) {\n\t\t\t\tif (isPrimitive || key in obj) {\n\t\t\t\t\titerator.call(context, obj[key], key, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (obj.forEach && obj.forEach !== forEach) {\n\t\t\tobj.forEach(iterator, context, obj);\n\t\t} else if (isBlankObject(obj)) {\n\t\t\t// createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty\n\t\t\t// eslint-disable-next-line guard-for-in\n\t\t\tfor (key in obj) {\n\t\t\t\titerator.call(context, obj[key], key, obj);\n\t\t\t}\n\t\t} else if (typeof obj.hasOwnProperty === \"function\") {\n\t\t\t// Slow path for objects inheriting Object.prototype, hasOwnProperty check needed\n\t\t\tfor (key in obj) {\n\t\t\t\tif (obj.hasOwnProperty(key)) {\n\t\t\t\t\titerator.call(context, obj[key], key, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Slow path for objects which do not have a method `hasOwnProperty`\n\t\t\tfor (key in obj) {\n\t\t\t\tif (hasOwnProperty.call(obj, key)) {\n\t\t\t\t\titerator.call(context, obj[key], key, obj);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn obj;\n}\n\nfunction forEachSorted(obj, iterator, context) {\n\tvar keys = Object.keys(obj).sort();\n\tfor (var i = 0; i < keys.length; i++) {\n\t\titerator.call(context, obj[keys[i]], keys[i]);\n\t}\n\treturn keys;\n}\n\n/**\n * when using forEach the params are value, key, but it is often useful to have key, value.\n * @param {function(string, *)} iteratorFn\n * @returns {function(*, string)}\n */\nfunction reverseParams(iteratorFn) {\n\treturn function (value, key) {\n\t\titeratorFn(key, value);\n\t};\n}\n\n/**\n * A consistent way of creating unique IDs in angular.\n *\n * Using simple numbers allows us to generate 28.6 million unique ids per second for 10 years before\n * we hit number precision issues in JavaScript.\n *\n * Math.pow(2,53) / 60 / 60 / 24 / 365 / 10 = 28.6M\n *\n * @returns {number} an unique alpha-numeric string\n */\nfunction nextUid() {\n\treturn ++uid;\n}\n\n/**\n * Set or clear the hashkey for an object.\n * @param obj object\n * @param h the hashkey (!truthy to delete the hashkey)\n */\nfunction setHashKey(obj, h) {\n\tif (h) {\n\t\tobj.$$hashKey = h;\n\t} else {\n\t\tdelete obj.$$hashKey;\n\t}\n}\n\nfunction baseExtend(dst, objs, deep) {\n\tvar h = dst.$$hashKey;\n\n\tfor (var i = 0, ii = objs.length; i < ii; ++i) {\n\t\tvar obj = objs[i];\n\t\tif (!isObject(obj) && !isFunction(obj)) continue;\n\t\tvar keys = Object.keys(obj);\n\t\tfor (var j = 0, jj = keys.length; j < jj; j++) {\n\t\t\tvar key = keys[j];\n\t\t\tvar src = obj[key];\n\n\t\t\tif (deep && isObject(src)) {\n\t\t\t\tif (isDate(src)) {\n\t\t\t\t\tdst[key] = new Date(src.valueOf());\n\t\t\t\t} else if (isRegExp(src)) {\n\t\t\t\t\tdst[key] = new RegExp(src);\n\t\t\t\t} else if (src.nodeName) {\n\t\t\t\t\tdst[key] = src.cloneNode(true);\n\t\t\t\t} else if (isElement(src)) {\n\t\t\t\t\tdst[key] = src.clone();\n\t\t\t\t} else {\n\t\t\t\t\tif (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {};\n\t\t\t\t\tbaseExtend(dst[key], [src], true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdst[key] = src;\n\t\t\t}\n\t\t}\n\t}\n\n\tsetHashKey(dst, h);\n\treturn dst;\n}\n\n/**\n * @ngdoc function\n * @name angular.extend\n * @module ng\n * @kind function\n *\n * @description\n * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)\n * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so\n * by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`.\n *\n * **Note:** Keep in mind that `angular.extend` does not support recursive merge (deep copy). Use\n * {@link angular.merge} for this.\n *\n * @param {Object} dst Destination object.\n * @param {...Object} src Source object(s).\n * @returns {Object} Reference to `dst`.\n */\nfunction extend(dst) {\n\treturn baseExtend(dst, slice.call(arguments, 1), false);\n}\n\n/**\n * @ngdoc function\n * @name angular.merge\n * @module ng\n * @kind function\n *\n * @description\n * Deeply extends the destination object `dst` by copying own enumerable properties from the `src` object(s)\n * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so\n * by passing an empty object as the target: `var object = angular.merge({}, object1, object2)`.\n *\n * Unlike {@link angular.extend extend()}, `merge()` recursively descends into object properties of source\n * objects, performing a deep copy.\n *\n * @param {Object} dst Destination object.\n * @param {...Object} src Source object(s).\n * @returns {Object} Reference to `dst`.\n */\nfunction merge(dst) {\n\treturn baseExtend(dst, slice.call(arguments, 1), true);\n}\n\nfunction toInt(str) {\n\treturn parseInt(str, 10);\n}\n\nvar isNumberNaN =\n\tNumber.isNaN ||\n\tfunction isNumberNaN(num) {\n\t\t// eslint-disable-next-line no-self-compare\n\t\treturn num !== num;\n\t};\n\nfunction inherit(parent, extra) {\n\treturn extend(Object.create(parent), extra);\n}\n\n/**\n * @ngdoc function\n * @name angular.noop\n * @module ng\n * @kind function\n *\n * @description\n * A function that performs no operations. This function can be useful when writing code in the\n * functional style.\n ```js\n function foo(callback) {\n var result = calculateResult();\n (callback || angular.noop)(result);\n }\n ```\n */\nfunction noop() {}\nnoop.$inject = [];\n\n/**\n * @ngdoc function\n * @name angular.identity\n * @module ng\n * @kind function\n *\n * @description\n * A function that returns its first argument. This function is useful when writing code in the\n * functional style.\n *\n ```js\n function transformer(transformationFn, value) {\n return (transformationFn || angular.identity)(value);\n };\n\n // E.g.\n function getResult(fn, input) {\n return (fn || angular.identity)(input);\n };\n\n getResult(function(n) { return n * 2; }, 21); // returns 42\n getResult(null, 21); // returns 21\n getResult(undefined, 21); // returns 21\n ```\n *\n * @param {*} value to be returned.\n * @returns {*} the value passed in.\n */\nfunction identity($) {\n\treturn $;\n}\nidentity.$inject = [];\n\nfunction valueFn(value) {\n\treturn function valueRef() {\n\t\treturn value;\n\t};\n}\n\nfunction hasCustomToString(obj) {\n\treturn isFunction(obj.toString) && obj.toString !== toString;\n}\n\n/**\n * @ngdoc function\n * @name angular.isUndefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is undefined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is undefined.\n */\nfunction isUndefined(value) {\n\treturn typeof value === \"undefined\";\n}\n\n/**\n * @ngdoc function\n * @name angular.isDefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is defined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is defined.\n */\nfunction isDefined(value) {\n\treturn typeof value !== \"undefined\";\n}\n\n/**\n * @ngdoc function\n * @name angular.isObject\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not\n * considered to be objects. Note that JavaScript arrays are objects.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Object` but not `null`.\n */\nfunction isObject(value) {\n\t// http://jsperf.com/isobject4\n\treturn value !== null && typeof value === \"object\";\n}\n\n/**\n * Determine if a value is an object with a null prototype\n *\n * @returns {boolean} True if `value` is an `Object` with a null prototype\n */\nfunction isBlankObject(value) {\n\treturn value !== null && typeof value === \"object\" && !getPrototypeOf(value);\n}\n\n/**\n * @ngdoc function\n * @name angular.isString\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `String`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `String`.\n */\nfunction isString(value) {\n\treturn typeof value === \"string\";\n}\n\n/**\n * @ngdoc function\n * @name angular.isNumber\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Number`.\n *\n * This includes the \"special\" numbers `NaN`, `+Infinity` and `-Infinity`.\n *\n * If you wish to exclude these then you can use the native\n * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite)\n * method.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Number`.\n */\nfunction isNumber(value) {\n\treturn typeof value === \"number\";\n}\n\n/**\n * @ngdoc function\n * @name angular.isDate\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a value is a date.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Date`.\n */\nfunction isDate(value) {\n\treturn toString.call(value) === \"[object Date]\";\n}\n\n/**\n * @ngdoc function\n * @name angular.isFunction\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Function`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Function`.\n */\nfunction isFunction(value) {\n\treturn typeof value === \"function\";\n}\n\n/**\n * Determines if a value is a regular expression object.\n *\n * @private\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `RegExp`.\n */\nfunction isRegExp(value) {\n\treturn toString.call(value) === \"[object RegExp]\";\n}\n\n/**\n * Checks if `obj` is a window object.\n *\n * @private\n * @param {*} obj Object to check\n * @returns {boolean} True if `obj` is a window obj.\n */\nfunction isWindow(obj) {\n\treturn obj && obj.window === obj;\n}\n\nfunction isScope(obj) {\n\treturn obj && obj.$evalAsync && obj.$watch;\n}\n\nfunction isFile(obj) {\n\treturn toString.call(obj) === \"[object File]\";\n}\n\nfunction isFormData(obj) {\n\treturn toString.call(obj) === \"[object FormData]\";\n}\n\nfunction isBlob(obj) {\n\treturn toString.call(obj) === \"[object Blob]\";\n}\n\nfunction isBoolean(value) {\n\treturn typeof value === \"boolean\";\n}\n\nfunction isPromiseLike(obj) {\n\treturn obj && isFunction(obj.then);\n}\n\nvar TYPED_ARRAY_REGEXP =\n\t/^\\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array\\]$/;\nfunction isTypedArray(value) {\n\treturn (\n\t\tvalue &&\n\t\tisNumber(value.length) &&\n\t\tTYPED_ARRAY_REGEXP.test(toString.call(value))\n\t);\n}\n\nfunction isArrayBuffer(obj) {\n\treturn toString.call(obj) === \"[object ArrayBuffer]\";\n}\n\nvar trim = function (value) {\n\treturn isString(value) ? value.trim() : value;\n};\n\n// Copied from:\n// http://docs.closure-library.googlecode.com/git/local_closure_goog_string_string.js.source.html#line1021\n// Prereq: s is a string.\nvar escapeForRegexp = function (s) {\n\treturn (\n\t\ts\n\t\t\t.replace(/([-()\\[\\]{}+?*.$\\^|,:#= 0) {\n\t\tarray.splice(index, 1);\n\t}\n\treturn index;\n}\n\n/**\n * @ngdoc function\n * @name angular.copy\n * @module ng\n * @kind function\n *\n * @description\n * Creates a deep copy of `source`, which should be an object or an array.\n *\n * * If no destination is supplied, a copy of the object or array is created.\n * * If a destination is provided, all of its elements (for arrays) or properties (for objects)\n * are deleted and then all elements/properties from the source are copied to it.\n * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.\n * * If `source` is identical to `destination` an exception will be thrown.\n *\n *
    \n *
    \n * Only enumerable properties are taken into account. Non-enumerable properties (both on `source`\n * and on `destination`) will be ignored.\n *
    \n *\n * @param {*} source The source that will be used to make a copy.\n * Can be any type, including primitives, `null`, and `undefined`.\n * @param {(Object|Array)=} destination Destination into which the source is copied. If\n * provided, must be of the same type as `source`.\n * @returns {*} The copy or updated `destination`, if `destination` was specified.\n *\n * @example\n \n \n
    \n
    \n
    \n
    \n Gender: \n
    \n \n \n
    \n
    form = {{user | json}}
    \n
    master = {{master | json}}
    \n
    \n
    \n \n // Module: copyExample\n angular.\n module('copyExample', []).\n controller('ExampleController', ['$scope', function($scope) {\n $scope.master = {};\n\n $scope.reset = function() {\n // Example with 1 argument\n $scope.user = angular.copy($scope.master);\n };\n\n $scope.update = function(user) {\n // Example with 2 arguments\n angular.copy(user, $scope.master);\n };\n\n $scope.reset();\n }]);\n \n
    \n */\nfunction copy(source, destination) {\n\tvar stackSource = [];\n\tvar stackDest = [];\n\n\tif (destination) {\n\t\tif (isTypedArray(destination) || isArrayBuffer(destination)) {\n\t\t\tthrow ngMinErr(\n\t\t\t\t\"cpta\",\n\t\t\t\t\"Can't copy! TypedArray destination cannot be mutated.\"\n\t\t\t);\n\t\t}\n\t\tif (source === destination) {\n\t\t\tthrow ngMinErr(\n\t\t\t\t\"cpi\",\n\t\t\t\t\"Can't copy! Source and destination are identical.\"\n\t\t\t);\n\t\t}\n\n\t\t// Empty the destination object\n\t\tif (isArray(destination)) {\n\t\t\tdestination.length = 0;\n\t\t} else {\n\t\t\tforEach(destination, function (value, key) {\n\t\t\t\tif (key !== \"$$hashKey\") {\n\t\t\t\t\tdelete destination[key];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tstackSource.push(source);\n\t\tstackDest.push(destination);\n\t\treturn copyRecurse(source, destination);\n\t}\n\n\treturn copyElement(source);\n\n\tfunction copyRecurse(source, destination) {\n\t\tvar h = destination.$$hashKey;\n\t\tvar key;\n\t\tif (isArray(source)) {\n\t\t\tfor (var i = 0, ii = source.length; i < ii; i++) {\n\t\t\t\tdestination.push(copyElement(source[i]));\n\t\t\t}\n\t\t} else if (isBlankObject(source)) {\n\t\t\t// createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty\n\t\t\t// eslint-disable-next-line guard-for-in\n\t\t\tfor (key in source) {\n\t\t\t\tdestination[key] = copyElement(source[key]);\n\t\t\t}\n\t\t} else if (source && typeof source.hasOwnProperty === \"function\") {\n\t\t\t// Slow path, which must rely on hasOwnProperty\n\t\t\tfor (key in source) {\n\t\t\t\tif (source.hasOwnProperty(key)) {\n\t\t\t\t\tdestination[key] = copyElement(source[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// Slowest path --- hasOwnProperty can't be called as a method\n\t\t\tfor (key in source) {\n\t\t\t\tif (hasOwnProperty.call(source, key)) {\n\t\t\t\t\tdestination[key] = copyElement(source[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsetHashKey(destination, h);\n\t\treturn destination;\n\t}\n\n\tfunction copyElement(source) {\n\t\t// Simple values\n\t\tif (!isObject(source)) {\n\t\t\treturn source;\n\t\t}\n\n\t\t// Already copied values\n\t\tvar index = stackSource.indexOf(source);\n\t\tif (index !== -1) {\n\t\t\treturn stackDest[index];\n\t\t}\n\n\t\tif (isWindow(source) || isScope(source)) {\n\t\t\tthrow ngMinErr(\n\t\t\t\t\"cpws\",\n\t\t\t\t\"Can't copy! Making copies of Window or Scope instances is not supported.\"\n\t\t\t);\n\t\t}\n\n\t\tvar needsRecurse = false;\n\t\tvar destination = copyType(source);\n\n\t\tif (destination === undefined) {\n\t\t\tdestination = isArray(source)\n\t\t\t\t? []\n\t\t\t\t: Object.create(getPrototypeOf(source));\n\t\t\tneedsRecurse = true;\n\t\t}\n\n\t\tstackSource.push(source);\n\t\tstackDest.push(destination);\n\n\t\treturn needsRecurse ? copyRecurse(source, destination) : destination;\n\t}\n\n\tfunction copyType(source) {\n\t\tswitch (toString.call(source)) {\n\t\t\tcase \"[object Int8Array]\":\n\t\t\tcase \"[object Int16Array]\":\n\t\t\tcase \"[object Int32Array]\":\n\t\t\tcase \"[object Float32Array]\":\n\t\t\tcase \"[object Float64Array]\":\n\t\t\tcase \"[object Uint8Array]\":\n\t\t\tcase \"[object Uint8ClampedArray]\":\n\t\t\tcase \"[object Uint16Array]\":\n\t\t\tcase \"[object Uint32Array]\":\n\t\t\t\treturn new source.constructor(\n\t\t\t\t\tcopyElement(source.buffer),\n\t\t\t\t\tsource.byteOffset,\n\t\t\t\t\tsource.length\n\t\t\t\t);\n\n\t\t\tcase \"[object ArrayBuffer]\":\n\t\t\t\t// Support: IE10\n\t\t\t\tif (!source.slice) {\n\t\t\t\t\t// If we're in this case we know the environment supports ArrayBuffer\n\t\t\t\t\t/* eslint-disable no-undef */\n\t\t\t\t\tvar copied = new ArrayBuffer(source.byteLength);\n\t\t\t\t\tnew Uint8Array(copied).set(new Uint8Array(source));\n\t\t\t\t\t/* eslint-enable */\n\t\t\t\t\treturn copied;\n\t\t\t\t}\n\t\t\t\treturn source.slice(0);\n\n\t\t\tcase \"[object Boolean]\":\n\t\t\tcase \"[object Number]\":\n\t\t\tcase \"[object String]\":\n\t\t\tcase \"[object Date]\":\n\t\t\t\treturn new source.constructor(source.valueOf());\n\n\t\t\tcase \"[object RegExp]\":\n\t\t\t\tvar re = new RegExp(\n\t\t\t\t\tsource.source,\n\t\t\t\t\tsource.toString().match(/[^\\/]*$/)[0]\n\t\t\t\t);\n\t\t\t\tre.lastIndex = source.lastIndex;\n\t\t\t\treturn re;\n\n\t\t\tcase \"[object Blob]\":\n\t\t\t\treturn new source.constructor([source], { type: source.type });\n\t\t}\n\n\t\tif (isFunction(source.cloneNode)) {\n\t\t\treturn source.cloneNode(true);\n\t\t}\n\t}\n}\n\n/**\n * @ngdoc function\n * @name angular.equals\n * @module ng\n * @kind function\n *\n * @description\n * Determines if two objects or two values are equivalent. Supports value types, regular\n * expressions, arrays and objects.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n * comparing them with `angular.equals`.\n * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)\n * * Both values represent the same regular expression (In JavaScript,\n * /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual\n * representation matches).\n *\n * During a property comparison, properties of `function` type and properties with names\n * that begin with `$` are ignored.\n *\n * Scope and DOMWindow objects are being compared only by identify (`===`).\n *\n * @param {*} o1 Object or value to compare.\n * @param {*} o2 Object or value to compare.\n * @returns {boolean} True if arguments are equal.\n *\n * @example\n \n \n
    \n
    \n

    User 1

    \n Name: \n Age: \n\n

    User 2

    \n Name: \n Age: \n\n
    \n
    \n \n
    \n User 1:
    {{user1 | json}}
    \n User 2:
    {{user2 | json}}
    \n Equal:
    {{result}}
    \n
    \n
    \n
    \n \n angular.module('equalsExample', []).controller('ExampleController', ['$scope', function($scope) {\n $scope.user1 = {};\n $scope.user2 = {};\n $scope.compare = function() {\n $scope.result = angular.equals($scope.user1, $scope.user2);\n };\n }]);\n \n
    \n */\nfunction equals(o1, o2) {\n\tif (o1 === o2) return true;\n\tif (o1 === null || o2 === null) return false;\n\t// eslint-disable-next-line no-self-compare\n\tif (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n\tvar t1 = typeof o1,\n\t\tt2 = typeof o2,\n\t\tlength,\n\t\tkey,\n\t\tkeySet;\n\tif (t1 === t2 && t1 === \"object\") {\n\t\tif (isArray(o1)) {\n\t\t\tif (!isArray(o2)) return false;\n\t\t\tif ((length = o1.length) === o2.length) {\n\t\t\t\tfor (key = 0; key < length; key++) {\n\t\t\t\t\tif (!equals(o1[key], o2[key])) return false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else if (isDate(o1)) {\n\t\t\tif (!isDate(o2)) return false;\n\t\t\treturn equals(o1.getTime(), o2.getTime());\n\t\t} else if (isRegExp(o1)) {\n\t\t\tif (!isRegExp(o2)) return false;\n\t\t\treturn o1.toString() === o2.toString();\n\t\t} else {\n\t\t\tif (\n\t\t\t\tisScope(o1) ||\n\t\t\t\tisScope(o2) ||\n\t\t\t\tisWindow(o1) ||\n\t\t\t\tisWindow(o2) ||\n\t\t\t\tisArray(o2) ||\n\t\t\t\tisDate(o2) ||\n\t\t\t\tisRegExp(o2)\n\t\t\t)\n\t\t\t\treturn false;\n\t\t\tkeySet = createMap();\n\t\t\tfor (key in o1) {\n\t\t\t\tif (key.charAt(0) === \"$\" || isFunction(o1[key])) continue;\n\t\t\t\tif (!equals(o1[key], o2[key])) return false;\n\t\t\t\tkeySet[key] = true;\n\t\t\t}\n\t\t\tfor (key in o2) {\n\t\t\t\tif (\n\t\t\t\t\t!(key in keySet) &&\n\t\t\t\t\tkey.charAt(0) !== \"$\" &&\n\t\t\t\t\tisDefined(o2[key]) &&\n\t\t\t\t\t!isFunction(o2[key])\n\t\t\t\t)\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nvar csp = function () {\n\tif (!isDefined(csp.rules)) {\n\t\tvar ngCspElement =\n\t\t\twindow.document.querySelector(\"[ng-csp]\") ||\n\t\t\twindow.document.querySelector(\"[data-ng-csp]\");\n\n\t\tif (ngCspElement) {\n\t\t\tvar ngCspAttribute =\n\t\t\t\tngCspElement.getAttribute(\"ng-csp\") ||\n\t\t\t\tngCspElement.getAttribute(\"data-ng-csp\");\n\t\t\tcsp.rules = {\n\t\t\t\tnoUnsafeEval:\n\t\t\t\t\t!ngCspAttribute || ngCspAttribute.indexOf(\"no-unsafe-eval\") !== -1,\n\t\t\t\tnoInlineStyle:\n\t\t\t\t\t!ngCspAttribute || ngCspAttribute.indexOf(\"no-inline-style\") !== -1,\n\t\t\t};\n\t\t} else {\n\t\t\tcsp.rules = {\n\t\t\t\tnoUnsafeEval: noUnsafeEval(),\n\t\t\t\tnoInlineStyle: false,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn csp.rules;\n\n\tfunction noUnsafeEval() {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-new, no-new-func\n\t\t\tnew Function(\"\");\n\t\t\treturn false;\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n};\n\n/**\n * @ngdoc directive\n * @module ng\n * @name ngJq\n *\n * @element ANY\n * @param {string=} ngJq the name of the library available under `window`\n * to be used for angular.element\n * @description\n * Use this directive to force the angular.element library. This should be\n * used to force either jqLite by leaving ng-jq blank or setting the name of\n * the jquery variable under window (eg. jQuery).\n *\n * Since angular looks for this directive when it is loaded (doesn't wait for the\n * DOMContentLoaded event), it must be placed on an element that comes before the script\n * which loads angular. Also, only the first instance of `ng-jq` will be used and all\n * others ignored.\n *\n * @example\n * This example shows how to force jqLite using the `ngJq` directive to the `html` tag.\n ```html\n \n \n ...\n ...\n \n ```\n * @example\n * This example shows how to use a jQuery based library of a different name.\n * The library name must be available at the top most 'window'.\n ```html\n \n \n ...\n ...\n \n ```\n */\nvar jq = function () {\n\tif (isDefined(jq.name_)) return jq.name_;\n\tvar el;\n\tvar i,\n\t\tii = ngAttrPrefixes.length,\n\t\tprefix,\n\t\tname;\n\tfor (i = 0; i < ii; ++i) {\n\t\tprefix = ngAttrPrefixes[i];\n\t\tel = window.document.querySelector(\n\t\t\t\"[\" + prefix.replace(\":\", \"\\\\:\") + \"jq]\"\n\t\t);\n\t\tif (el) {\n\t\t\tname = el.getAttribute(prefix + \"jq\");\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn (jq.name_ = name);\n};\n\nfunction concat(array1, array2, index) {\n\treturn array1.concat(slice.call(array2, index));\n}\n\nfunction sliceArgs(args, startIndex) {\n\treturn slice.call(args, startIndex || 0);\n}\n\n/**\n * @ngdoc function\n * @name angular.bind\n * @module ng\n * @kind function\n *\n * @description\n * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for\n * `fn`). You can supply optional `args` that are prebound to the function. This feature is also\n * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as\n * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application).\n *\n * @param {Object} self Context which `fn` should be evaluated in.\n * @param {function()} fn Function to be bound.\n * @param {...*} args Optional arguments to be prebound to the `fn` function call.\n * @returns {function()} Function that wraps the `fn` with all the specified bindings.\n */\n// eslint-disable-next-line consistent-this\nfunction bind(self, fn) {\n\tvar curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];\n\tif (isFunction(fn) && !(fn instanceof RegExp)) {\n\t\treturn curryArgs.length\n\t\t\t? function () {\n\t\t\t\t\treturn arguments.length\n\t\t\t\t\t\t? fn.apply(self, concat(curryArgs, arguments, 0))\n\t\t\t\t\t\t: fn.apply(self, curryArgs);\n\t\t\t }\n\t\t\t: function () {\n\t\t\t\t\treturn arguments.length ? fn.apply(self, arguments) : fn.call(self);\n\t\t\t };\n\t} else {\n\t\t// In IE, native methods are not functions so they cannot be bound (note: they don't need to be).\n\t\treturn fn;\n\t}\n}\n\nfunction toJsonReplacer(key, value) {\n\tvar val = value;\n\n\tif (\n\t\ttypeof key === \"string\" &&\n\t\tkey.charAt(0) === \"$\" &&\n\t\tkey.charAt(1) === \"$\"\n\t) {\n\t\tval = undefined;\n\t} else if (isWindow(value)) {\n\t\tval = \"$WINDOW\";\n\t} else if (value && window.document === value) {\n\t\tval = \"$DOCUMENT\";\n\t} else if (isScope(value)) {\n\t\tval = \"$SCOPE\";\n\t}\n\n\treturn val;\n}\n\n/**\n * @ngdoc function\n * @name angular.toJson\n * @module ng\n * @kind function\n *\n * @description\n * Serializes input into a JSON-formatted string. Properties with leading $$ characters will be\n * stripped since angular uses this notation internally.\n *\n * @param {Object|Array|Date|string|number|boolean} obj Input to be serialized into JSON.\n * @param {boolean|number} [pretty=2] If set to true, the JSON output will contain newlines and whitespace.\n * If set to an integer, the JSON output will contain that many spaces per indentation.\n * @returns {string|undefined} JSON-ified string representing `obj`.\n * @knownIssue\n *\n * The Safari browser throws a `RangeError` instead of returning `null` when it tries to stringify a `Date`\n * object with an invalid date value. The only reliable way to prevent this is to monkeypatch the\n * `Date.prototype.toJSON` method as follows:\n *\n * ```\n * var _DatetoJSON = Date.prototype.toJSON;\n * Date.prototype.toJSON = function() {\n * try {\n * return _DatetoJSON.call(this);\n * } catch(e) {\n * if (e instanceof RangeError) {\n * return null;\n * }\n * throw e;\n * }\n * };\n * ```\n *\n * See https://github.com/angular/angular.js/pull/14221 for more information.\n */\nfunction toJson(obj, pretty) {\n\tif (isUndefined(obj)) return undefined;\n\tif (!isNumber(pretty)) {\n\t\tpretty = pretty ? 2 : null;\n\t}\n\treturn JSON.stringify(obj, toJsonReplacer, pretty);\n}\n\n/**\n * @ngdoc function\n * @name angular.fromJson\n * @module ng\n * @kind function\n *\n * @description\n * Deserializes a JSON string.\n *\n * @param {string} json JSON string to deserialize.\n * @returns {Object|Array|string|number} Deserialized JSON string.\n */\nfunction fromJson(json) {\n\treturn isString(json) ? JSON.parse(json) : json;\n}\n\nvar ALL_COLONS = /:/g;\nfunction timezoneToOffset(timezone, fallback) {\n\t// IE/Edge do not \"understand\" colon (`:`) in timezone\n\ttimezone = timezone.replace(ALL_COLONS, \"\");\n\tvar requestedTimezoneOffset =\n\t\tDate.parse(\"Jan 01, 1970 00:00:00 \" + timezone) / 60000;\n\treturn isNumberNaN(requestedTimezoneOffset)\n\t\t? fallback\n\t\t: requestedTimezoneOffset;\n}\n\nfunction addDateMinutes(date, minutes) {\n\tdate = new Date(date.getTime());\n\tdate.setMinutes(date.getMinutes() + minutes);\n\treturn date;\n}\n\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n\treverse = reverse ? -1 : 1;\n\tvar dateTimezoneOffset = date.getTimezoneOffset();\n\tvar timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n\treturn addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));\n}\n\n/**\n * @returns {string} Returns the string representation of the element.\n */\nfunction startingTag(element) {\n\telement = jqLite(element).clone();\n\ttry {\n\t\t// turns out IE does not let you set .html() on elements which\n\t\t// are not allowed to have children. So we just ignore it.\n\t\telement.empty();\n\t} catch (e) {\n\t\t/* empty */\n\t}\n\tvar elemHtml = jqLite(\"
    \").append(element).html();\n\ttry {\n\t\treturn element[0].nodeType === NODE_TYPE_TEXT\n\t\t\t? lowercase(elemHtml)\n\t\t\t: elemHtml\n\t\t\t\t\t.match(/^(<[^>]+>)/)[1]\n\t\t\t\t\t.replace(/^<([\\w\\-]+)/, function (match, nodeName) {\n\t\t\t\t\t\treturn \"<\" + lowercase(nodeName);\n\t\t\t\t\t});\n\t} catch (e) {\n\t\treturn lowercase(elemHtml);\n\t}\n}\n\n/////////////////////////////////////////////////\n\n/**\n * Tries to decode the URI component without throwing an exception.\n *\n * @private\n * @param str value potential URI component to check.\n * @returns {boolean} True if `value` can be decoded\n * with the decodeURIComponent function.\n */\nfunction tryDecodeURIComponent(value) {\n\ttry {\n\t\treturn decodeURIComponent(value);\n\t} catch (e) {\n\t\t// Ignore any invalid uri component.\n\t}\n}\n\n/**\n * Parses an escaped url query string into key-value pairs.\n * @returns {Object.}\n */\nfunction parseKeyValue(/**string*/ keyValue) {\n\tvar obj = {};\n\tforEach((keyValue || \"\").split(\"&\"), function (keyValue) {\n\t\tvar splitPoint, key, val;\n\t\tif (keyValue) {\n\t\t\tkey = keyValue = keyValue.replace(/\\+/g, \"%20\");\n\t\t\tsplitPoint = keyValue.indexOf(\"=\");\n\t\t\tif (splitPoint !== -1) {\n\t\t\t\tkey = keyValue.substring(0, splitPoint);\n\t\t\t\tval = keyValue.substring(splitPoint + 1);\n\t\t\t}\n\t\t\tkey = tryDecodeURIComponent(key);\n\t\t\tif (isDefined(key)) {\n\t\t\t\tval = isDefined(val) ? tryDecodeURIComponent(val) : true;\n\t\t\t\tif (!hasOwnProperty.call(obj, key)) {\n\t\t\t\t\tobj[key] = val;\n\t\t\t\t} else if (isArray(obj[key])) {\n\t\t\t\t\tobj[key].push(val);\n\t\t\t\t} else {\n\t\t\t\t\tobj[key] = [obj[key], val];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn obj;\n}\n\nfunction toKeyValue(obj) {\n\tvar parts = [];\n\tforEach(obj, function (value, key) {\n\t\tif (isArray(value)) {\n\t\t\tforEach(value, function (arrayValue) {\n\t\t\t\tparts.push(\n\t\t\t\t\tencodeUriQuery(key, true) +\n\t\t\t\t\t\t(arrayValue === true ? \"\" : \"=\" + encodeUriQuery(arrayValue, true))\n\t\t\t\t);\n\t\t\t});\n\t\t} else {\n\t\t\tparts.push(\n\t\t\t\tencodeUriQuery(key, true) +\n\t\t\t\t\t(value === true ? \"\" : \"=\" + encodeUriQuery(value, true))\n\t\t\t);\n\t\t}\n\t});\n\treturn parts.length ? parts.join(\"&\") : \"\";\n}\n\n/**\n * We need our custom method because encodeURIComponent is too aggressive and doesn't follow\n * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path\n * segments:\n * segment = *pchar\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriSegment(val) {\n\treturn encodeUriQuery(val, true)\n\t\t.replace(/%26/gi, \"&\")\n\t\t.replace(/%3D/gi, \"=\")\n\t\t.replace(/%2B/gi, \"+\");\n}\n\n/**\n * This method is intended for encoding *key* or *value* parts of query component. We need a custom\n * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be\n * encoded per http://tools.ietf.org/html/rfc3986:\n * query = *( pchar / \"/\" / \"?\" )\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriQuery(val, pctEncodeSpaces) {\n\treturn encodeURIComponent(val)\n\t\t.replace(/%40/gi, \"@\")\n\t\t.replace(/%3A/gi, \":\")\n\t\t.replace(/%24/g, \"$\")\n\t\t.replace(/%2C/gi, \",\")\n\t\t.replace(/%3B/gi, \";\")\n\t\t.replace(/%20/g, pctEncodeSpaces ? \"%20\" : \"+\");\n}\n\nfunction getNgAttribute(element, ngAttr) {\n\tvar attr,\n\t\ti,\n\t\tii = ngAttrPrefixes.length;\n\tfor (i = 0; i < ii; ++i) {\n\t\tattr = ngAttrPrefixes[i] + ngAttr;\n\t\tif (isString((attr = element.getAttribute(attr)))) {\n\t\t\treturn attr;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction allowAutoBootstrap(document) {\n\tif (!document.currentScript) {\n\t\treturn true;\n\t}\n\tvar src = document.currentScript.getAttribute(\"src\");\n\tvar link = document.createElement(\"a\");\n\tlink.href = src;\n\tvar scriptProtocol = link.protocol;\n\tvar docLoadProtocol = document.location.protocol;\n\tif (\n\t\t(scriptProtocol === \"resource:\" ||\n\t\t\tscriptProtocol === \"chrome-extension:\") &&\n\t\tdocLoadProtocol !== scriptProtocol\n\t) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\n// Cached as it has to run during loading so that document.currentScript is available.\nvar isAutoBootstrapAllowed = allowAutoBootstrap(window.document);\n\n/**\n * @ngdoc directive\n * @name ngApp\n * @module ng\n *\n * @element ANY\n * @param {angular.Module} ngApp an optional application\n * {@link angular.module module} name to load.\n * @param {boolean=} ngStrictDi if this attribute is present on the app element, the injector will be\n * created in \"strict-di\" mode. This means that the application will fail to invoke functions which\n * do not use explicit function annotation (and are thus unsuitable for minification), as described\n * in {@link guide/di the Dependency Injection guide}, and useful debugging info will assist in\n * tracking down the root of these bugs.\n *\n * @description\n *\n * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive\n * designates the **root element** of the application and is typically placed near the root element\n * of the page - e.g. on the `` or `` tags.\n *\n * There are a few things to keep in mind when using `ngApp`:\n * - only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`\n * found in the document will be used to define the root element to auto-bootstrap as an\n * application. To run multiple applications in an HTML document you must manually bootstrap them using\n * {@link angular.bootstrap} instead.\n * - AngularJS applications cannot be nested within each other.\n * - Do not use a directive that uses {@link ng.$compile#transclusion transclusion} on the same element as `ngApp`.\n * This includes directives such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and\n * {@link ngRoute.ngView `ngView`}.\n * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector},\n * causing animations to stop working and making the injector inaccessible from outside the app.\n *\n * You can specify an **AngularJS module** to be used as the root module for the application. This\n * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It\n * should contain the application code needed or have dependencies on other modules that will\n * contain the code. See {@link angular.module} for more information.\n *\n * In the example below if the `ngApp` directive were not placed on the `html` element then the\n * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`\n * would not be resolved to `3`.\n *\n * `ngApp` is the easiest, and most common way to bootstrap an application.\n *\n \n \n
    \n I can add: {{a}} + {{b}} = {{ a+b }}\n
    \n
    \n \n angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n });\n \n
    \n *\n * Using `ngStrictDi`, you would see something like this:\n *\n \n \n
    \n
    \n I can add: {{a}} + {{b}} = {{ a+b }}\n\n

    This renders because the controller does not fail to\n instantiate, by using explicit annotation style (see\n script.js for details)\n

    \n
    \n\n
    \n Name:
    \n Hello, {{name}}!\n\n

    This renders because the controller does not fail to\n instantiate, by using explicit annotation style\n (see script.js for details)\n

    \n
    \n\n
    \n I can add: {{a}} + {{b}} = {{ a+b }}\n\n

    The controller could not be instantiated, due to relying\n on automatic function annotations (which are disabled in\n strict mode). As such, the content of this section is not\n interpolated, and there should be an error in your web console.\n

    \n
    \n
    \n
    \n \n angular.module('ngAppStrictDemo', [])\n // BadController will fail to instantiate, due to relying on automatic function annotation,\n // rather than an explicit annotation\n .controller('BadController', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n })\n // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated,\n // due to using explicit annotations using the array style and $inject property, respectively.\n .controller('GoodController1', ['$scope', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n }])\n .controller('GoodController2', GoodController2);\n function GoodController2($scope) {\n $scope.name = 'World';\n }\n GoodController2.$inject = ['$scope'];\n \n \n div[ng-controller] {\n margin-bottom: 1em;\n -webkit-border-radius: 4px;\n border-radius: 4px;\n border: 1px solid;\n padding: .5em;\n }\n div[ng-controller^=Good] {\n border-color: #d6e9c6;\n background-color: #dff0d8;\n color: #3c763d;\n }\n div[ng-controller^=Bad] {\n border-color: #ebccd1;\n background-color: #f2dede;\n color: #a94442;\n margin-bottom: 0;\n }\n \n
    \n */\n\n/**\n * @ngdoc function\n * @name angular.bootstrap\n * @module ng\n * @description\n * Use this function to manually start up angular application.\n *\n * For more information, see the {@link guide/bootstrap Bootstrap guide}.\n *\n * Angular will detect if it has been loaded into the browser more than once and only allow the\n * first loaded script to be bootstrapped and will report a warning to the browser console for\n * each of the subsequent scripts. This prevents strange results in applications, where otherwise\n * multiple instances of Angular try to work on the DOM.\n *\n *
    \n * **Note:** Protractor based end-to-end tests cannot use this function to bootstrap manually.\n * They must use {@link ng.directive:ngApp ngApp}.\n *
    \n *\n *
    \n * **Note:** Do not bootstrap the app on an element with a directive that uses {@link ng.$compile#transclusion transclusion},\n * such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and {@link ngRoute.ngView `ngView`}.\n * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector},\n * causing animations to stop working and making the injector inaccessible from outside the app.\n *
    \n *\n * ```html\n * \n * \n * \n *
    \n * {{greeting}}\n *
    \n *\n * \n * \n * \n * \n * ```\n *\n * @param {DOMElement} element DOM element which is the root of angular application.\n * @param {Array=} modules an array of modules to load into the application.\n * Each item in the array should be the name of a predefined module or a (DI annotated)\n * function that will be invoked by the injector as a `config` block.\n * See: {@link angular.module modules}\n * @param {Object=} config an object for defining configuration options for the application. The\n * following keys are supported:\n *\n * * `strictDi` - disable automatic function annotation for the application. This is meant to\n * assist in finding bugs which break minified code. Defaults to `false`.\n *\n * @returns {auto.$injector} Returns the newly created injector for this app.\n */\nfunction bootstrap(element, modules, config) {\n\tif (!isObject(config)) config = {};\n\tvar defaultConfig = {\n\t\tstrictDi: false,\n\t};\n\tconfig = extend(defaultConfig, config);\n\tvar doBootstrap = function () {\n\t\telement = jqLite(element);\n\n\t\tif (element.injector()) {\n\t\t\tvar tag =\n\t\t\t\telement[0] === window.document ? \"document\" : startingTag(element);\n\t\t\t// Encode angle brackets to prevent input from being sanitized to empty string #8683.\n\t\t\tthrow ngMinErr(\n\t\t\t\t\"btstrpd\",\n\t\t\t\t\"App already bootstrapped with this element '{0}'\",\n\t\t\t\ttag.replace(//, \">\")\n\t\t\t);\n\t\t}\n\n\t\tmodules = modules || [];\n\t\tmodules.unshift([\n\t\t\t\"$provide\",\n\t\t\tfunction ($provide) {\n\t\t\t\t$provide.value(\"$rootElement\", element);\n\t\t\t},\n\t\t]);\n\n\t\tif (config.debugInfoEnabled) {\n\t\t\t// Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`.\n\t\t\tmodules.push([\n\t\t\t\t\"$compileProvider\",\n\t\t\t\tfunction ($compileProvider) {\n\t\t\t\t\t$compileProvider.debugInfoEnabled(true);\n\t\t\t\t},\n\t\t\t]);\n\t\t}\n\n\t\tmodules.unshift(\"ng\");\n\t};\n\n\tvar NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;\n\tvar NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;\n\n\tif (window && NG_ENABLE_DEBUG_INFO.test(window.name)) {\n\t\tconfig.debugInfoEnabled = true;\n\t\twindow.name = window.name.replace(NG_ENABLE_DEBUG_INFO, \"\");\n\t}\n\n\tif (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {\n\t\treturn doBootstrap();\n\t}\n\n\twindow.name = window.name.replace(NG_DEFER_BOOTSTRAP, \"\");\n\tangular.resumeBootstrap = function (extraModules) {\n\t\tforEach(extraModules, function (module) {\n\t\t\tmodules.push(module);\n\t\t});\n\t\treturn doBootstrap();\n\t};\n\n\tif (isFunction(angular.resumeDeferredBootstrap)) {\n\t\tangular.resumeDeferredBootstrap();\n\t}\n}\n\n/**\n * @ngdoc function\n * @name angular.reloadWithDebugInfo\n * @module ng\n * @description\n * Use this function to reload the current application with debug information turned on.\n * This takes precedence over a call to `$compileProvider.debugInfoEnabled(false)`.\n *\n * See {@link ng.$compileProvider#debugInfoEnabled} for more.\n */\nfunction reloadWithDebugInfo() {\n\twindow.name = \"NG_ENABLE_DEBUG_INFO!\" + window.name;\n\twindow.location.reload();\n}\n\n/**\n * @name angular.getTestability\n * @module ng\n * @description\n * Get the testability service for the instance of Angular on the given\n * element.\n * @param {DOMElement} element DOM element which is the root of angular application.\n */\nfunction getTestability(rootElement) {\n\tvar injector = angular.element(rootElement).injector();\n\tif (!injector) {\n\t\tthrow ngMinErr(\n\t\t\t\"test\",\n\t\t\t\"no injector found for element argument to getTestability\"\n\t\t);\n\t}\n\treturn injector.get(\"$$testability\");\n}\n\nvar SNAKE_CASE_REGEXP = /[A-Z]/g;\nfunction snake_case(name, separator) {\n\tseparator = separator || \"_\";\n\treturn name.replace(SNAKE_CASE_REGEXP, function (letter, pos) {\n\t\treturn (pos ? separator : \"\") + letter.toLowerCase();\n\t});\n}\n\nvar bindJQueryFired = false;\nfunction bindJQuery() {\n\tvar originalCleanData;\n\n\tif (bindJQueryFired) {\n\t\treturn;\n\t}\n\n\t// bind to jQuery if present;\n\tvar jqName = jq();\n\tjQuery = isUndefined(jqName)\n\t\t? window.jQuery // use jQuery (if present)\n\t\t: !jqName\n\t\t? undefined // use jqLite\n\t\t: window[jqName]; // use jQuery specified by `ngJq`\n\n\t// Use jQuery if it exists with proper functionality, otherwise default to us.\n\t// Angular 1.2+ requires jQuery 1.7+ for on()/off() support.\n\t// Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older\n\t// versions. It will not work for sure with jQuery <1.7, though.\n\tif (jQuery && jQuery.fn.on) {\n\t\tjqLite = jQuery;\n\t\textend(jQuery.fn, {\n\t\t\tscope: JQLitePrototype.scope,\n\t\t\tisolateScope: JQLitePrototype.isolateScope,\n\t\t\tcontroller: JQLitePrototype.controller,\n\t\t\tinjector: JQLitePrototype.injector,\n\t\t\tinheritedData: JQLitePrototype.inheritedData,\n\t\t});\n\n\t\t// All nodes removed from the DOM via various jQuery APIs like .remove()\n\t\t// are passed through jQuery.cleanData. Monkey-patch this method to fire\n\t\t// the $destroy event on all removed nodes.\n\t\toriginalCleanData = jQuery.cleanData;\n\t\tjQuery.cleanData = function (elems) {\n\t\t\tvar events;\n\t\t\tfor (var i = 0, elem; (elem = elems[i]) != null; i++) {\n\t\t\t\tevents = jQuery._data(elem, \"events\");\n\t\t\t\tif (events && events.$destroy) {\n\t\t\t\t\tjQuery(elem).triggerHandler(\"$destroy\");\n\t\t\t\t}\n\t\t\t}\n\t\t\toriginalCleanData(elems);\n\t\t};\n\t} else {\n\t\tjqLite = JQLite;\n\t}\n\n\tangular.element = jqLite;\n\n\t// Prevent double-proxying.\n\tbindJQueryFired = true;\n}\n\n/**\n * throw error if the argument is falsy.\n */\nfunction assertArg(arg, name, reason) {\n\tif (!arg) {\n\t\tthrow ngMinErr(\n\t\t\t\"areq\",\n\t\t\t\"Argument '{0}' is {1}\",\n\t\t\tname || \"?\",\n\t\t\treason || \"required\"\n\t\t);\n\t}\n\treturn arg;\n}\n\nfunction assertArgFn(arg, name, acceptArrayAnnotation) {\n\tif (acceptArrayAnnotation && isArray(arg)) {\n\t\targ = arg[arg.length - 1];\n\t}\n\n\tassertArg(\n\t\tisFunction(arg),\n\t\tname,\n\t\t\"not a function, got \" +\n\t\t\t(arg && typeof arg === \"object\"\n\t\t\t\t? arg.constructor.name || \"Object\"\n\t\t\t\t: typeof arg)\n\t);\n\treturn arg;\n}\n\n/**\n * throw error if the name given is hasOwnProperty\n * @param {String} name the name to test\n * @param {String} context the context in which the name is used, such as module or directive\n */\nfunction assertNotHasOwnProperty(name, context) {\n\tif (name === \"hasOwnProperty\") {\n\t\tthrow ngMinErr(\n\t\t\t\"badname\",\n\t\t\t\"hasOwnProperty is not a valid {0} name\",\n\t\t\tcontext\n\t\t);\n\t}\n}\n\n/**\n * Return the value accessible from the object by path. Any undefined traversals are ignored\n * @param {Object} obj starting object\n * @param {String} path path to traverse\n * @param {boolean} [bindFnToScope=true]\n * @returns {Object} value as accessible by path\n */\n//TODO(misko): this function needs to be removed\nfunction getter(obj, path, bindFnToScope) {\n\tif (!path) return obj;\n\tvar keys = path.split(\".\");\n\tvar key;\n\tvar lastInstance = obj;\n\tvar len = keys.length;\n\n\tfor (var i = 0; i < len; i++) {\n\t\tkey = keys[i];\n\t\tif (obj) {\n\t\t\tobj = (lastInstance = obj)[key];\n\t\t}\n\t}\n\tif (!bindFnToScope && isFunction(obj)) {\n\t\treturn bind(lastInstance, obj);\n\t}\n\treturn obj;\n}\n\n/**\n * Return the DOM siblings between the first and last node in the given array.\n * @param {Array} array like object\n * @returns {Array} the inputted object or a jqLite collection containing the nodes\n */\nfunction getBlockNodes(nodes) {\n\t// TODO(perf): update `nodes` instead of creating a new object?\n\tvar node = nodes[0];\n\tvar endNode = nodes[nodes.length - 1];\n\tvar blockNodes;\n\n\tfor (var i = 1; node !== endNode && (node = node.nextSibling); i++) {\n\t\tif (blockNodes || nodes[i] !== node) {\n\t\t\tif (!blockNodes) {\n\t\t\t\tblockNodes = jqLite(slice.call(nodes, 0, i));\n\t\t\t}\n\t\t\tblockNodes.push(node);\n\t\t}\n\t}\n\n\treturn blockNodes || nodes;\n}\n\n/**\n * Creates a new object without a prototype. This object is useful for lookup without having to\n * guard against prototypically inherited properties via hasOwnProperty.\n *\n * Related micro-benchmarks:\n * - http://jsperf.com/object-create2\n * - http://jsperf.com/proto-map-lookup/2\n * - http://jsperf.com/for-in-vs-object-keys2\n *\n * @returns {Object}\n */\nfunction createMap() {\n\treturn Object.create(null);\n}\n\nfunction stringify(value) {\n\tif (value == null) {\n\t\t// null || undefined\n\t\treturn \"\";\n\t}\n\tswitch (typeof value) {\n\t\tcase \"string\":\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tvalue = \"\" + value;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tif (hasCustomToString(value) && !isArray(value) && !isDate(value)) {\n\t\t\t\tvalue = value.toString();\n\t\t\t} else {\n\t\t\t\tvalue = toJson(value);\n\t\t\t}\n\t}\n\n\treturn value;\n}\n\n/* global toDebugString: true */\n\nfunction serializeObject(obj) {\n\tvar seen = [];\n\n\treturn JSON.stringify(obj, function (key, val) {\n\t\tval = toJsonReplacer(key, val);\n\t\tif (isObject(val)) {\n\t\t\tif (seen.indexOf(val) >= 0) return \"...\";\n\n\t\t\tseen.push(val);\n\t\t}\n\t\treturn val;\n\t});\n}\n\nfunction toDebugString(obj) {\n\tif (typeof obj === \"function\") {\n\t\treturn obj.toString().replace(/ \\{[\\s\\S]*$/, \"\");\n\t} else if (isUndefined(obj)) {\n\t\treturn \"undefined\";\n\t} else if (typeof obj !== \"string\") {\n\t\treturn serializeObject(obj);\n\t}\n\treturn obj;\n}\n\n/**\n * @description\n *\n * This object provides a utility for producing rich Error messages within\n * Angular. It can be called as follows:\n *\n * var exampleMinErr = minErr('example');\n * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);\n *\n * The above creates an instance of minErr in the example namespace. The\n * resulting error will have a namespaced error code of example.one. The\n * resulting error will replace {0} with the value of foo, and {1} with the\n * value of bar. The object is not restricted in the number of arguments it can\n * take.\n *\n * If fewer arguments are specified than necessary for interpolation, the extra\n * interpolation markers will be preserved in the final string.\n *\n * Since data will be parsed statically during a build step, some restrictions\n * are applied with respect to how minErr instances are created and called.\n * Instances should have names of the form namespaceMinErr for a minErr created\n * using minErr('namespace') . Error codes, namespaces and template strings\n * should all be static strings, not variables or general expressions.\n *\n * @param {string} module The namespace to use for the new minErr instance.\n * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning\n * error from returned function, for cases when a particular type of error is useful.\n * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance\n */\n\nfunction minErr(module, ErrorConstructor) {\n\tErrorConstructor = ErrorConstructor || Error;\n\treturn function () {\n\t\tvar SKIP_INDEXES = 2;\n\n\t\tvar templateArgs = arguments,\n\t\t\tcode = templateArgs[0],\n\t\t\tmessage = \"[\" + (module ? module + \":\" : \"\") + code + \"] \",\n\t\t\ttemplate = templateArgs[1],\n\t\t\tparamPrefix,\n\t\t\ti;\n\n\t\tmessage += template.replace(/\\{\\d+\\}/g, function (match) {\n\t\t\tvar index = +match.slice(1, -1),\n\t\t\t\tshiftedIndex = index + SKIP_INDEXES;\n\n\t\t\tif (shiftedIndex < templateArgs.length) {\n\t\t\t\treturn toDebugString(templateArgs[shiftedIndex]);\n\t\t\t}\n\n\t\t\treturn match;\n\t\t});\n\n\t\tmessage +=\n\t\t\t'\\nhttp://errors.angularjs.org/\"NG_VERSION_FULL\"/' +\n\t\t\t(module ? module + \"/\" : \"\") +\n\t\t\tcode;\n\n\t\tfor (\n\t\t\ti = SKIP_INDEXES, paramPrefix = \"?\";\n\t\t\ti < templateArgs.length;\n\t\t\ti++, paramPrefix = \"&\"\n\t\t) {\n\t\t\tmessage +=\n\t\t\t\tparamPrefix +\n\t\t\t\t\"p\" +\n\t\t\t\t(i - SKIP_INDEXES) +\n\t\t\t\t\"=\" +\n\t\t\t\tencodeURIComponent(toDebugString(templateArgs[i]));\n\t\t}\n\n\t\treturn new ErrorConstructor(message);\n\t};\n}\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Any commits to this file should be reviewed with security in mind. *\n * Changes to this file can potentially create security vulnerabilities. *\n * An approval from 2 Core members with history of modifying *\n * this file is required. *\n * *\n * Does the change somehow allow for arbitrary javascript to be executed? *\n * Or allows for someone to change the prototype of built-in objects? *\n * Or gives undesired access to variables likes document or window? *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\nvar $parseMinErr = minErr(\"$parse\");\n\nvar objectValueOf = {}.constructor.prototype.valueOf;\n\n// Sandboxing Angular Expressions\n// ------------------------------\n// Angular expressions are no longer sandboxed. So it is now even easier to access arbitrary JS code by\n// various means such as obtaining a reference to native JS functions like the Function constructor.\n//\n// As an example, consider the following Angular expression:\n//\n// {}.toString.constructor('alert(\"evil JS code\")')\n//\n// It is important to realize that if you create an expression from a string that contains user provided\n// content then it is possible that your application contains a security vulnerability to an XSS style attack.\n//\n// See https://docs.angularjs.org/guide/security\n\nfunction getStringValue(name) {\n\t// Property names must be strings. This means that non-string objects cannot be used\n\t// as keys in an object. Any non-string object, including a number, is typecasted\n\t// into a string via the toString method.\n\t// -- MDN, https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors#Property_names\n\t//\n\t// So, to ensure that we are checking the same `name` that JavaScript would use, we cast it\n\t// to a string. It's not always possible. If `name` is an object and its `toString` method is\n\t// 'broken' (doesn't return a string, isn't a function, etc.), an error will be thrown:\n\t//\n\t// TypeError: Cannot convert object to primitive value\n\t//\n\t// For performance reasons, we don't catch this error here and allow it to propagate up the call\n\t// stack. Note that you'll get the same error in JavaScript if you try to access a property using\n\t// such a 'broken' object as a key.\n\treturn name + \"\";\n}\n\nvar OPERATORS = createMap();\nforEach(\n\t\"+ - * / % === !== == != < > <= >= && || ! = |\".split(\" \"),\n\tfunction (operator) {\n\t\tOPERATORS[operator] = true;\n\t}\n);\nvar ESCAPE = {\n\tn: \"\\n\",\n\tf: \"\\f\",\n\tr: \"\\r\",\n\tt: \"\\t\",\n\tv: \"\\v\",\n\t\"'\": \"'\",\n\t'\"': '\"',\n};\n\n/////////////////////////////////////////\n\n/**\n * @constructor\n */\nvar Lexer = function Lexer(options) {\n\tthis.options = options;\n};\n\nLexer.prototype = {\n\tconstructor: Lexer,\n\n\tlex: function (text) {\n\t\tthis.text = text;\n\t\tthis.index = 0;\n\t\tthis.tokens = [];\n\n\t\twhile (this.index < this.text.length) {\n\t\t\tvar ch = this.text.charAt(this.index);\n\t\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t\tthis.readString(ch);\n\t\t\t} else if (\n\t\t\t\tthis.isNumber(ch) ||\n\t\t\t\t(ch === \".\" && this.isNumber(this.peek()))\n\t\t\t) {\n\t\t\t\tthis.readNumber();\n\t\t\t} else if (this.isIdentifierStart(this.peekMultichar())) {\n\t\t\t\tthis.readIdent();\n\t\t\t} else if (this.is(ch, \"(){}[].,;:?\")) {\n\t\t\t\tthis.tokens.push({ index: this.index, text: ch });\n\t\t\t\tthis.index++;\n\t\t\t} else if (this.isWhitespace(ch)) {\n\t\t\t\tthis.index++;\n\t\t\t} else {\n\t\t\t\tvar ch2 = ch + this.peek();\n\t\t\t\tvar ch3 = ch2 + this.peek(2);\n\t\t\t\tvar op1 = OPERATORS[ch];\n\t\t\t\tvar op2 = OPERATORS[ch2];\n\t\t\t\tvar op3 = OPERATORS[ch3];\n\t\t\t\tif (op1 || op2 || op3) {\n\t\t\t\t\tvar token = op3 ? ch3 : op2 ? ch2 : ch;\n\t\t\t\t\tthis.tokens.push({ index: this.index, text: token, operator: true });\n\t\t\t\t\tthis.index += token.length;\n\t\t\t\t} else {\n\t\t\t\t\tthis.throwError(\n\t\t\t\t\t\t\"Unexpected next character \",\n\t\t\t\t\t\tthis.index,\n\t\t\t\t\t\tthis.index + 1\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.tokens;\n\t},\n\n\tis: function (ch, chars) {\n\t\treturn chars.indexOf(ch) !== -1;\n\t},\n\n\tpeek: function (i) {\n\t\tvar num = i || 1;\n\t\treturn this.index + num < this.text.length\n\t\t\t? this.text.charAt(this.index + num)\n\t\t\t: false;\n\t},\n\n\tisNumber: function (ch) {\n\t\treturn \"0\" <= ch && ch <= \"9\" && typeof ch === \"string\";\n\t},\n\n\tisWhitespace: function (ch) {\n\t\t// IE treats non-breaking space as \\u00A0\n\t\treturn (\n\t\t\tch === \" \" ||\n\t\t\tch === \"\\r\" ||\n\t\t\tch === \"\\t\" ||\n\t\t\tch === \"\\n\" ||\n\t\t\tch === \"\\v\" ||\n\t\t\tch === \"\\u00A0\"\n\t\t);\n\t},\n\n\tisIdentifierStart: function (ch) {\n\t\treturn this.options.isIdentifierStart\n\t\t\t? this.options.isIdentifierStart(ch, this.codePointAt(ch))\n\t\t\t: this.isValidIdentifierStart(ch);\n\t},\n\n\tisValidIdentifierStart: function (ch) {\n\t\treturn (\n\t\t\t(\"a\" <= ch && ch <= \"z\") ||\n\t\t\t(\"A\" <= ch && ch <= \"Z\") ||\n\t\t\t\"_\" === ch ||\n\t\t\tch === \"$\"\n\t\t);\n\t},\n\n\tisIdentifierContinue: function (ch) {\n\t\treturn this.options.isIdentifierContinue\n\t\t\t? this.options.isIdentifierContinue(ch, this.codePointAt(ch))\n\t\t\t: this.isValidIdentifierContinue(ch);\n\t},\n\n\tisValidIdentifierContinue: function (ch, cp) {\n\t\treturn this.isValidIdentifierStart(ch, cp) || this.isNumber(ch);\n\t},\n\n\tcodePointAt: function (ch) {\n\t\tif (ch.length === 1) return ch.charCodeAt(0);\n\t\t// eslint-disable-next-line no-bitwise\n\t\treturn (ch.charCodeAt(0) << 10) + ch.charCodeAt(1) - 0x35fdc00;\n\t},\n\n\tpeekMultichar: function () {\n\t\tvar ch = this.text.charAt(this.index);\n\t\tvar peek = this.peek();\n\t\tif (!peek) {\n\t\t\treturn ch;\n\t\t}\n\t\tvar cp1 = ch.charCodeAt(0);\n\t\tvar cp2 = peek.charCodeAt(0);\n\t\tif (cp1 >= 0xd800 && cp1 <= 0xdbff && cp2 >= 0xdc00 && cp2 <= 0xdfff) {\n\t\t\treturn ch + peek;\n\t\t}\n\t\treturn ch;\n\t},\n\n\tisExpOperator: function (ch) {\n\t\treturn ch === \"-\" || ch === \"+\" || this.isNumber(ch);\n\t},\n\n\tthrowError: function (error, start, end) {\n\t\tend = end || this.index;\n\t\tvar colStr = isDefined(start)\n\t\t\t? \"s \" +\n\t\t\t start +\n\t\t\t \"-\" +\n\t\t\t this.index +\n\t\t\t \" [\" +\n\t\t\t this.text.substring(start, end) +\n\t\t\t \"]\"\n\t\t\t: \" \" + end;\n\t\tthrow $parseMinErr(\n\t\t\t\"lexerr\",\n\t\t\t\"Lexer Error: {0} at column{1} in expression [{2}].\",\n\t\t\terror,\n\t\t\tcolStr,\n\t\t\tthis.text\n\t\t);\n\t},\n\n\treadNumber: function () {\n\t\tvar number = \"\";\n\t\tvar start = this.index;\n\t\twhile (this.index < this.text.length) {\n\t\t\tvar ch = lowercase(this.text.charAt(this.index));\n\t\t\tif (ch === \".\" || this.isNumber(ch)) {\n\t\t\t\tnumber += ch;\n\t\t\t} else {\n\t\t\t\tvar peekCh = this.peek();\n\t\t\t\tif (ch === \"e\" && this.isExpOperator(peekCh)) {\n\t\t\t\t\tnumber += ch;\n\t\t\t\t} else if (\n\t\t\t\t\tthis.isExpOperator(ch) &&\n\t\t\t\t\tpeekCh &&\n\t\t\t\t\tthis.isNumber(peekCh) &&\n\t\t\t\t\tnumber.charAt(number.length - 1) === \"e\"\n\t\t\t\t) {\n\t\t\t\t\tnumber += ch;\n\t\t\t\t} else if (\n\t\t\t\t\tthis.isExpOperator(ch) &&\n\t\t\t\t\t(!peekCh || !this.isNumber(peekCh)) &&\n\t\t\t\t\tnumber.charAt(number.length - 1) === \"e\"\n\t\t\t\t) {\n\t\t\t\t\tthis.throwError(\"Invalid exponent\");\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.index++;\n\t\t}\n\t\tthis.tokens.push({\n\t\t\tindex: start,\n\t\t\ttext: number,\n\t\t\tconstant: true,\n\t\t\tvalue: Number(number),\n\t\t});\n\t},\n\n\treadIdent: function () {\n\t\tvar start = this.index;\n\t\tthis.index += this.peekMultichar().length;\n\t\twhile (this.index < this.text.length) {\n\t\t\tvar ch = this.peekMultichar();\n\t\t\tif (!this.isIdentifierContinue(ch)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.index += ch.length;\n\t\t}\n\t\tthis.tokens.push({\n\t\t\tindex: start,\n\t\t\ttext: this.text.slice(start, this.index),\n\t\t\tidentifier: true,\n\t\t});\n\t},\n\n\treadString: function (quote) {\n\t\tvar start = this.index;\n\t\tthis.index++;\n\t\tvar string = \"\";\n\t\tvar rawString = quote;\n\t\tvar escape = false;\n\t\twhile (this.index < this.text.length) {\n\t\t\tvar ch = this.text.charAt(this.index);\n\t\t\trawString += ch;\n\t\t\tif (escape) {\n\t\t\t\tif (ch === \"u\") {\n\t\t\t\t\tvar hex = this.text.substring(this.index + 1, this.index + 5);\n\t\t\t\t\tif (!hex.match(/[\\da-f]{4}/i)) {\n\t\t\t\t\t\tthis.throwError(\"Invalid unicode escape [\\\\u\" + hex + \"]\");\n\t\t\t\t\t}\n\t\t\t\t\tthis.index += 4;\n\t\t\t\t\tstring += String.fromCharCode(parseInt(hex, 16));\n\t\t\t\t} else {\n\t\t\t\t\tvar rep = ESCAPE[ch];\n\t\t\t\t\tstring = string + (rep || ch);\n\t\t\t\t}\n\t\t\t\tescape = false;\n\t\t\t} else if (ch === \"\\\\\") {\n\t\t\t\tescape = true;\n\t\t\t} else if (ch === quote) {\n\t\t\t\tthis.index++;\n\t\t\t\tthis.tokens.push({\n\t\t\t\t\tindex: start,\n\t\t\t\t\ttext: rawString,\n\t\t\t\t\tconstant: true,\n\t\t\t\t\tvalue: string,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tstring += ch;\n\t\t\t}\n\t\t\tthis.index++;\n\t\t}\n\t\tthis.throwError(\"Unterminated quote\", start);\n\t},\n};\n\nvar AST = function AST(lexer, options) {\n\tthis.lexer = lexer;\n\tthis.options = options;\n};\n\nAST.Program = \"Program\";\nAST.ExpressionStatement = \"ExpressionStatement\";\nAST.AssignmentExpression = \"AssignmentExpression\";\nAST.ConditionalExpression = \"ConditionalExpression\";\nAST.LogicalExpression = \"LogicalExpression\";\nAST.BinaryExpression = \"BinaryExpression\";\nAST.UnaryExpression = \"UnaryExpression\";\nAST.CallExpression = \"CallExpression\";\nAST.MemberExpression = \"MemberExpression\";\nAST.Identifier = \"Identifier\";\nAST.Literal = \"Literal\";\nAST.ArrayExpression = \"ArrayExpression\";\nAST.Property = \"Property\";\nAST.ObjectExpression = \"ObjectExpression\";\nAST.ThisExpression = \"ThisExpression\";\nAST.LocalsExpression = \"LocalsExpression\";\n\n// Internal use only\nAST.NGValueParameter = \"NGValueParameter\";\n\nAST.prototype = {\n\tast: function (text) {\n\t\tthis.text = text;\n\t\tthis.tokens = this.lexer.lex(text);\n\n\t\tvar value = this.program();\n\n\t\tif (this.tokens.length !== 0) {\n\t\t\tthis.throwError(\"is an unexpected token\", this.tokens[0]);\n\t\t}\n\n\t\treturn value;\n\t},\n\n\tprogram: function () {\n\t\tvar body = [];\n\t\twhile (true) {\n\t\t\tif (this.tokens.length > 0 && !this.peek(\"}\", \")\", \";\", \"]\"))\n\t\t\t\tbody.push(this.expressionStatement());\n\t\t\tif (!this.expect(\";\")) {\n\t\t\t\treturn { type: AST.Program, body: body };\n\t\t\t}\n\t\t}\n\t},\n\n\texpressionStatement: function () {\n\t\treturn { type: AST.ExpressionStatement, expression: this.filterChain() };\n\t},\n\n\tfilterChain: function () {\n\t\tvar left = this.expression();\n\t\twhile (this.expect(\"|\")) {\n\t\t\tleft = this.filter(left);\n\t\t}\n\t\treturn left;\n\t},\n\n\texpression: function () {\n\t\treturn this.assignment();\n\t},\n\n\tassignment: function () {\n\t\tvar result = this.ternary();\n\t\tif (this.expect(\"=\")) {\n\t\t\tif (!isAssignable(result)) {\n\t\t\t\tthrow $parseMinErr(\"lval\", \"Trying to assign a value to a non l-value\");\n\t\t\t}\n\n\t\t\tresult = {\n\t\t\t\ttype: AST.AssignmentExpression,\n\t\t\t\tleft: result,\n\t\t\t\tright: this.assignment(),\n\t\t\t\toperator: \"=\",\n\t\t\t};\n\t\t}\n\t\treturn result;\n\t},\n\n\tternary: function () {\n\t\tvar test = this.logicalOR();\n\t\tvar alternate;\n\t\tvar consequent;\n\t\tif (this.expect(\"?\")) {\n\t\t\talternate = this.expression();\n\t\t\tif (this.consume(\":\")) {\n\t\t\t\tconsequent = this.expression();\n\t\t\t\treturn {\n\t\t\t\t\ttype: AST.ConditionalExpression,\n\t\t\t\t\ttest: test,\n\t\t\t\t\talternate: alternate,\n\t\t\t\t\tconsequent: consequent,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn test;\n\t},\n\n\tlogicalOR: function () {\n\t\tvar left = this.logicalAND();\n\t\twhile (this.expect(\"||\")) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.LogicalExpression,\n\t\t\t\toperator: \"||\",\n\t\t\t\tleft: left,\n\t\t\t\tright: this.logicalAND(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\tlogicalAND: function () {\n\t\tvar left = this.equality();\n\t\twhile (this.expect(\"&&\")) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.LogicalExpression,\n\t\t\t\toperator: \"&&\",\n\t\t\t\tleft: left,\n\t\t\t\tright: this.equality(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\tequality: function () {\n\t\tvar left = this.relational();\n\t\tvar token;\n\t\twhile ((token = this.expect(\"==\", \"!=\", \"===\", \"!==\"))) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.BinaryExpression,\n\t\t\t\toperator: token.text,\n\t\t\t\tleft: left,\n\t\t\t\tright: this.relational(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\trelational: function () {\n\t\tvar left = this.additive();\n\t\tvar token;\n\t\twhile ((token = this.expect(\"<\", \">\", \"<=\", \">=\"))) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.BinaryExpression,\n\t\t\t\toperator: token.text,\n\t\t\t\tleft: left,\n\t\t\t\tright: this.additive(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\tadditive: function () {\n\t\tvar left = this.multiplicative();\n\t\tvar token;\n\t\twhile ((token = this.expect(\"+\", \"-\"))) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.BinaryExpression,\n\t\t\t\toperator: token.text,\n\t\t\t\tleft: left,\n\t\t\t\tright: this.multiplicative(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\tmultiplicative: function () {\n\t\tvar left = this.unary();\n\t\tvar token;\n\t\twhile ((token = this.expect(\"*\", \"/\", \"%\"))) {\n\t\t\tleft = {\n\t\t\t\ttype: AST.BinaryExpression,\n\t\t\t\toperator: token.text,\n\t\t\t\tleft: left,\n\t\t\t\tright: this.unary(),\n\t\t\t};\n\t\t}\n\t\treturn left;\n\t},\n\n\tunary: function () {\n\t\tvar token;\n\t\tif ((token = this.expect(\"+\", \"-\", \"!\"))) {\n\t\t\treturn {\n\t\t\t\ttype: AST.UnaryExpression,\n\t\t\t\toperator: token.text,\n\t\t\t\tprefix: true,\n\t\t\t\targument: this.unary(),\n\t\t\t};\n\t\t} else {\n\t\t\treturn this.primary();\n\t\t}\n\t},\n\n\tprimary: function () {\n\t\tvar primary;\n\t\tif (this.expect(\"(\")) {\n\t\t\tprimary = this.filterChain();\n\t\t\tthis.consume(\")\");\n\t\t} else if (this.expect(\"[\")) {\n\t\t\tprimary = this.arrayDeclaration();\n\t\t} else if (this.expect(\"{\")) {\n\t\t\tprimary = this.object();\n\t\t} else if (this.selfReferential.hasOwnProperty(this.peek().text)) {\n\t\t\tprimary = copy(this.selfReferential[this.consume().text]);\n\t\t} else if (this.options.literals.hasOwnProperty(this.peek().text)) {\n\t\t\tprimary = {\n\t\t\t\ttype: AST.Literal,\n\t\t\t\tvalue: this.options.literals[this.consume().text],\n\t\t\t};\n\t\t} else if (this.peek().identifier) {\n\t\t\tprimary = this.identifier();\n\t\t} else if (this.peek().constant) {\n\t\t\tprimary = this.constant();\n\t\t} else {\n\t\t\tthis.throwError(\"not a primary expression\", this.peek());\n\t\t}\n\n\t\tvar next;\n\t\twhile ((next = this.expect(\"(\", \"[\", \".\"))) {\n\t\t\tif (next.text === \"(\") {\n\t\t\t\tprimary = {\n\t\t\t\t\ttype: AST.CallExpression,\n\t\t\t\t\tcallee: primary,\n\t\t\t\t\targuments: this.parseArguments(),\n\t\t\t\t};\n\t\t\t\tthis.consume(\")\");\n\t\t\t} else if (next.text === \"[\") {\n\t\t\t\tprimary = {\n\t\t\t\t\ttype: AST.MemberExpression,\n\t\t\t\t\tobject: primary,\n\t\t\t\t\tproperty: this.expression(),\n\t\t\t\t\tcomputed: true,\n\t\t\t\t};\n\t\t\t\tthis.consume(\"]\");\n\t\t\t} else if (next.text === \".\") {\n\t\t\t\tprimary = {\n\t\t\t\t\ttype: AST.MemberExpression,\n\t\t\t\t\tobject: primary,\n\t\t\t\t\tproperty: this.identifier(),\n\t\t\t\t\tcomputed: false,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tthis.throwError(\"IMPOSSIBLE\");\n\t\t\t}\n\t\t}\n\t\treturn primary;\n\t},\n\n\tfilter: function (baseExpression) {\n\t\tvar args = [baseExpression];\n\t\tvar result = {\n\t\t\ttype: AST.CallExpression,\n\t\t\tcallee: this.identifier(),\n\t\t\targuments: args,\n\t\t\tfilter: true,\n\t\t};\n\n\t\twhile (this.expect(\":\")) {\n\t\t\targs.push(this.expression());\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tparseArguments: function () {\n\t\tvar args = [];\n\t\tif (this.peekToken().text !== \")\") {\n\t\t\tdo {\n\t\t\t\targs.push(this.filterChain());\n\t\t\t} while (this.expect(\",\"));\n\t\t}\n\t\treturn args;\n\t},\n\n\tidentifier: function () {\n\t\tvar token = this.consume();\n\t\tif (!token.identifier) {\n\t\t\tthis.throwError(\"is not a valid identifier\", token);\n\t\t}\n\t\treturn { type: AST.Identifier, name: token.text };\n\t},\n\n\tconstant: function () {\n\t\t// TODO check that it is a constant\n\t\treturn { type: AST.Literal, value: this.consume().value };\n\t},\n\n\tarrayDeclaration: function () {\n\t\tvar elements = [];\n\t\tif (this.peekToken().text !== \"]\") {\n\t\t\tdo {\n\t\t\t\tif (this.peek(\"]\")) {\n\t\t\t\t\t// Support trailing commas per ES5.1.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telements.push(this.expression());\n\t\t\t} while (this.expect(\",\"));\n\t\t}\n\t\tthis.consume(\"]\");\n\n\t\treturn { type: AST.ArrayExpression, elements: elements };\n\t},\n\n\tobject: function () {\n\t\tvar properties = [],\n\t\t\tproperty;\n\t\tif (this.peekToken().text !== \"}\") {\n\t\t\tdo {\n\t\t\t\tif (this.peek(\"}\")) {\n\t\t\t\t\t// Support trailing commas per ES5.1.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tproperty = { type: AST.Property, kind: \"init\" };\n\t\t\t\tif (this.peek().constant) {\n\t\t\t\t\tproperty.key = this.constant();\n\t\t\t\t\tproperty.computed = false;\n\t\t\t\t\tthis.consume(\":\");\n\t\t\t\t\tproperty.value = this.expression();\n\t\t\t\t} else if (this.peek().identifier) {\n\t\t\t\t\tproperty.key = this.identifier();\n\t\t\t\t\tproperty.computed = false;\n\t\t\t\t\tif (this.peek(\":\")) {\n\t\t\t\t\t\tthis.consume(\":\");\n\t\t\t\t\t\tproperty.value = this.expression();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperty.value = property.key;\n\t\t\t\t\t}\n\t\t\t\t} else if (this.peek(\"[\")) {\n\t\t\t\t\tthis.consume(\"[\");\n\t\t\t\t\tproperty.key = this.expression();\n\t\t\t\t\tthis.consume(\"]\");\n\t\t\t\t\tproperty.computed = true;\n\t\t\t\t\tthis.consume(\":\");\n\t\t\t\t\tproperty.value = this.expression();\n\t\t\t\t} else {\n\t\t\t\t\tthis.throwError(\"invalid key\", this.peek());\n\t\t\t\t}\n\t\t\t\tproperties.push(property);\n\t\t\t} while (this.expect(\",\"));\n\t\t}\n\t\tthis.consume(\"}\");\n\n\t\treturn { type: AST.ObjectExpression, properties: properties };\n\t},\n\n\tthrowError: function (msg, token) {\n\t\tthrow $parseMinErr(\n\t\t\t\"syntax\",\n\t\t\t\"Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].\",\n\t\t\ttoken.text,\n\t\t\tmsg,\n\t\t\ttoken.index + 1,\n\t\t\tthis.text,\n\t\t\tthis.text.substring(token.index)\n\t\t);\n\t},\n\n\tconsume: function (e1) {\n\t\tif (this.tokens.length === 0) {\n\t\t\tthrow $parseMinErr(\n\t\t\t\t\"ueoe\",\n\t\t\t\t\"Unexpected end of expression: {0}\",\n\t\t\t\tthis.text\n\t\t\t);\n\t\t}\n\n\t\tvar token = this.expect(e1);\n\t\tif (!token) {\n\t\t\tthis.throwError(\"is unexpected, expecting [\" + e1 + \"]\", this.peek());\n\t\t}\n\t\treturn token;\n\t},\n\n\tpeekToken: function () {\n\t\tif (this.tokens.length === 0) {\n\t\t\tthrow $parseMinErr(\n\t\t\t\t\"ueoe\",\n\t\t\t\t\"Unexpected end of expression: {0}\",\n\t\t\t\tthis.text\n\t\t\t);\n\t\t}\n\t\treturn this.tokens[0];\n\t},\n\n\tpeek: function (e1, e2, e3, e4) {\n\t\treturn this.peekAhead(0, e1, e2, e3, e4);\n\t},\n\n\tpeekAhead: function (i, e1, e2, e3, e4) {\n\t\tif (this.tokens.length > i) {\n\t\t\tvar token = this.tokens[i];\n\t\t\tvar t = token.text;\n\t\t\tif (\n\t\t\t\tt === e1 ||\n\t\t\t\tt === e2 ||\n\t\t\t\tt === e3 ||\n\t\t\t\tt === e4 ||\n\t\t\t\t(!e1 && !e2 && !e3 && !e4)\n\t\t\t) {\n\t\t\t\treturn token;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\texpect: function (e1, e2, e3, e4) {\n\t\tvar token = this.peek(e1, e2, e3, e4);\n\t\tif (token) {\n\t\t\tthis.tokens.shift();\n\t\t\treturn token;\n\t\t}\n\t\treturn false;\n\t},\n\n\tselfReferential: {\n\t\tthis: { type: AST.ThisExpression },\n\t\t$locals: { type: AST.LocalsExpression },\n\t},\n};\n\nfunction ifDefined(v, d) {\n\treturn typeof v !== \"undefined\" ? v : d;\n}\n\nfunction plusFn(l, r) {\n\tif (typeof l === \"undefined\") return r;\n\tif (typeof r === \"undefined\") return l;\n\treturn l + r;\n}\n\nfunction isStateless($filter, filterName) {\n\tvar fn = $filter(filterName);\n\tif (!fn) {\n\t\tthrow new Error(\"Filter '\" + filterName + \"' is not defined\");\n\t}\n\treturn !fn.$stateful;\n}\n\nfunction findConstantAndWatchExpressions(ast, $filter) {\n\tvar allConstants;\n\tvar argsToWatch;\n\tvar isStatelessFilter;\n\tswitch (ast.type) {\n\t\tcase AST.Program:\n\t\t\tallConstants = true;\n\t\t\tforEach(ast.body, function (expr) {\n\t\t\t\tfindConstantAndWatchExpressions(expr.expression, $filter);\n\t\t\t\tallConstants = allConstants && expr.expression.constant;\n\t\t\t});\n\t\t\tast.constant = allConstants;\n\t\t\tbreak;\n\t\tcase AST.Literal:\n\t\t\tast.constant = true;\n\t\t\tast.toWatch = [];\n\t\t\tbreak;\n\t\tcase AST.UnaryExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.argument, $filter);\n\t\t\tast.constant = ast.argument.constant;\n\t\t\tast.toWatch = ast.argument.toWatch;\n\t\t\tbreak;\n\t\tcase AST.BinaryExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.left, $filter);\n\t\t\tfindConstantAndWatchExpressions(ast.right, $filter);\n\t\t\tast.constant = ast.left.constant && ast.right.constant;\n\t\t\tast.toWatch = ast.left.toWatch.concat(ast.right.toWatch);\n\t\t\tbreak;\n\t\tcase AST.LogicalExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.left, $filter);\n\t\t\tfindConstantAndWatchExpressions(ast.right, $filter);\n\t\t\tast.constant = ast.left.constant && ast.right.constant;\n\t\t\tast.toWatch = ast.constant ? [] : [ast];\n\t\t\tbreak;\n\t\tcase AST.ConditionalExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.test, $filter);\n\t\t\tfindConstantAndWatchExpressions(ast.alternate, $filter);\n\t\t\tfindConstantAndWatchExpressions(ast.consequent, $filter);\n\t\t\tast.constant =\n\t\t\t\tast.test.constant && ast.alternate.constant && ast.consequent.constant;\n\t\t\tast.toWatch = ast.constant ? [] : [ast];\n\t\t\tbreak;\n\t\tcase AST.Identifier:\n\t\t\tast.constant = false;\n\t\t\tast.toWatch = [ast];\n\t\t\tbreak;\n\t\tcase AST.MemberExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.object, $filter);\n\t\t\tif (ast.computed) {\n\t\t\t\tfindConstantAndWatchExpressions(ast.property, $filter);\n\t\t\t}\n\t\t\tast.constant =\n\t\t\t\tast.object.constant && (!ast.computed || ast.property.constant);\n\t\t\tast.toWatch = [ast];\n\t\t\tbreak;\n\t\tcase AST.CallExpression:\n\t\t\tisStatelessFilter = ast.filter\n\t\t\t\t? isStateless($filter, ast.callee.name)\n\t\t\t\t: false;\n\t\t\tallConstants = isStatelessFilter;\n\t\t\targsToWatch = [];\n\t\t\tforEach(ast.arguments, function (expr) {\n\t\t\t\tfindConstantAndWatchExpressions(expr, $filter);\n\t\t\t\tallConstants = allConstants && expr.constant;\n\t\t\t\tif (!expr.constant) {\n\t\t\t\t\targsToWatch.push.apply(argsToWatch, expr.toWatch);\n\t\t\t\t}\n\t\t\t});\n\t\t\tast.constant = allConstants;\n\t\t\tast.toWatch = isStatelessFilter ? argsToWatch : [ast];\n\t\t\tbreak;\n\t\tcase AST.AssignmentExpression:\n\t\t\tfindConstantAndWatchExpressions(ast.left, $filter);\n\t\t\tfindConstantAndWatchExpressions(ast.right, $filter);\n\t\t\tast.constant = ast.left.constant && ast.right.constant;\n\t\t\tast.toWatch = [ast];\n\t\t\tbreak;\n\t\tcase AST.ArrayExpression:\n\t\t\tallConstants = true;\n\t\t\targsToWatch = [];\n\t\t\tforEach(ast.elements, function (expr) {\n\t\t\t\tfindConstantAndWatchExpressions(expr, $filter);\n\t\t\t\tallConstants = allConstants && expr.constant;\n\t\t\t\tif (!expr.constant) {\n\t\t\t\t\targsToWatch.push.apply(argsToWatch, expr.toWatch);\n\t\t\t\t}\n\t\t\t});\n\t\t\tast.constant = allConstants;\n\t\t\tast.toWatch = argsToWatch;\n\t\t\tbreak;\n\t\tcase AST.ObjectExpression:\n\t\t\tallConstants = true;\n\t\t\targsToWatch = [];\n\t\t\tforEach(ast.properties, function (property) {\n\t\t\t\tfindConstantAndWatchExpressions(property.value, $filter);\n\t\t\t\tallConstants =\n\t\t\t\t\tallConstants && property.value.constant && !property.computed;\n\t\t\t\tif (!property.value.constant) {\n\t\t\t\t\targsToWatch.push.apply(argsToWatch, property.value.toWatch);\n\t\t\t\t}\n\t\t\t});\n\t\t\tast.constant = allConstants;\n\t\t\tast.toWatch = argsToWatch;\n\t\t\tbreak;\n\t\tcase AST.ThisExpression:\n\t\t\tast.constant = false;\n\t\t\tast.toWatch = [];\n\t\t\tbreak;\n\t\tcase AST.LocalsExpression:\n\t\t\tast.constant = false;\n\t\t\tast.toWatch = [];\n\t\t\tbreak;\n\t}\n}\n\nfunction getInputs(body) {\n\tif (body.length !== 1) return;\n\tvar lastExpression = body[0].expression;\n\tvar candidate = lastExpression.toWatch;\n\tif (candidate.length !== 1) return candidate;\n\treturn candidate[0] !== lastExpression ? candidate : undefined;\n}\n\nfunction isAssignable(ast) {\n\treturn ast.type === AST.Identifier || ast.type === AST.MemberExpression;\n}\n\nfunction assignableAST(ast) {\n\tif (ast.body.length === 1 && isAssignable(ast.body[0].expression)) {\n\t\treturn {\n\t\t\ttype: AST.AssignmentExpression,\n\t\t\tleft: ast.body[0].expression,\n\t\t\tright: { type: AST.NGValueParameter },\n\t\t\toperator: \"=\",\n\t\t};\n\t}\n}\n\nfunction isLiteral(ast) {\n\treturn (\n\t\tast.body.length === 0 ||\n\t\t(ast.body.length === 1 &&\n\t\t\t(ast.body[0].expression.type === AST.Literal ||\n\t\t\t\tast.body[0].expression.type === AST.ArrayExpression ||\n\t\t\t\tast.body[0].expression.type === AST.ObjectExpression))\n\t);\n}\n\nfunction isConstant(ast) {\n\treturn ast.constant;\n}\n\nfunction ASTCompiler(astBuilder, $filter) {\n\tthis.astBuilder = astBuilder;\n\tthis.$filter = $filter;\n}\n\nASTCompiler.prototype = {\n\tcompile: function (expression) {\n\t\tvar self = this;\n\t\tvar ast = this.astBuilder.ast(expression);\n\t\tthis.state = {\n\t\t\tnextId: 0,\n\t\t\tfilters: {},\n\t\t\tfn: { vars: [], body: [], own: {} },\n\t\t\tassign: { vars: [], body: [], own: {} },\n\t\t\tinputs: [],\n\t\t};\n\t\tfindConstantAndWatchExpressions(ast, self.$filter);\n\t\tvar extra = \"\";\n\t\tvar assignable;\n\t\tthis.stage = \"assign\";\n\t\tif ((assignable = assignableAST(ast))) {\n\t\t\tthis.state.computing = \"assign\";\n\t\t\tvar result = this.nextId();\n\t\t\tthis.recurse(assignable, result);\n\t\t\tthis.return_(result);\n\t\t\textra = \"fn.assign=\" + this.generateFunction(\"assign\", \"s,v,l\");\n\t\t}\n\t\tvar toWatch = getInputs(ast.body);\n\t\tself.stage = \"inputs\";\n\t\tforEach(toWatch, function (watch, key) {\n\t\t\tvar fnKey = \"fn\" + key;\n\t\t\tself.state[fnKey] = { vars: [], body: [], own: {} };\n\t\t\tself.state.computing = fnKey;\n\t\t\tvar intoId = self.nextId();\n\t\t\tself.recurse(watch, intoId);\n\t\t\tself.return_(intoId);\n\t\t\tself.state.inputs.push(fnKey);\n\t\t\twatch.watchId = key;\n\t\t});\n\t\tthis.state.computing = \"fn\";\n\t\tthis.stage = \"main\";\n\t\tthis.recurse(ast);\n\t\tvar fnString =\n\t\t\t// The build and minification steps remove the string \"use strict\" from the code, but this is done using a regex.\n\t\t\t// This is a workaround for this until we do a better job at only removing the prefix only when we should.\n\t\t\t'\"' +\n\t\t\tthis.USE +\n\t\t\t\" \" +\n\t\t\tthis.STRICT +\n\t\t\t'\";\\n' +\n\t\t\tthis.filterPrefix() +\n\t\t\t\"var fn=\" +\n\t\t\tthis.generateFunction(\"fn\", \"s,l,a,i\") +\n\t\t\textra +\n\t\t\tthis.watchFns() +\n\t\t\t\"return fn;\";\n\t\t// eslint-disable-next-line no-new-func\n\t\tvar fn = new Function(\n\t\t\t\"$filter\",\n\t\t\t\"getStringValue\",\n\t\t\t\"ifDefined\",\n\t\t\t\"plus\",\n\t\t\tfnString\n\t\t)(this.$filter, getStringValue, ifDefined, plusFn);\n\n\t\tthis.state = this.stage = undefined;\n\t\tfn.ast = ast;\n\t\tfn.literal = isLiteral(ast);\n\t\tfn.constant = isConstant(ast);\n\t\treturn fn;\n\t},\n\n\tUSE: \"use\",\n\n\tSTRICT: \"strict\",\n\n\twatchFns: function () {\n\t\tvar result = [];\n\t\tvar fns = this.state.inputs;\n\t\tvar self = this;\n\t\tforEach(fns, function (name) {\n\t\t\tresult.push(\"var \" + name + \"=\" + self.generateFunction(name, \"s\"));\n\t\t});\n\t\tif (fns.length) {\n\t\t\tresult.push(\"fn.inputs=[\" + fns.join(\",\") + \"];\");\n\t\t}\n\t\treturn result.join(\"\");\n\t},\n\n\tgenerateFunction: function (name, params) {\n\t\treturn (\n\t\t\t\"function(\" +\n\t\t\tparams +\n\t\t\t\"){\" +\n\t\t\tthis.varsPrefix(name) +\n\t\t\tthis.body(name) +\n\t\t\t\"};\"\n\t\t);\n\t},\n\n\tfilterPrefix: function () {\n\t\tvar parts = [];\n\t\tvar self = this;\n\t\tforEach(this.state.filters, function (id, filter) {\n\t\t\tparts.push(id + \"=$filter(\" + self.escape(filter) + \")\");\n\t\t});\n\t\tif (parts.length) return \"var \" + parts.join(\",\") + \";\";\n\t\treturn \"\";\n\t},\n\n\tvarsPrefix: function (section) {\n\t\treturn this.state[section].vars.length\n\t\t\t? \"var \" + this.state[section].vars.join(\",\") + \";\"\n\t\t\t: \"\";\n\t},\n\n\tbody: function (section) {\n\t\treturn this.state[section].body.join(\"\");\n\t},\n\n\trecurse: function (\n\t\tast,\n\t\tintoId,\n\t\tnameId,\n\t\trecursionFn,\n\t\tcreate,\n\t\tskipWatchIdCheck\n\t) {\n\t\tvar left,\n\t\t\tright,\n\t\t\tself = this,\n\t\t\targs,\n\t\t\texpression,\n\t\t\tcomputed;\n\t\trecursionFn = recursionFn || noop;\n\t\tif (!skipWatchIdCheck && isDefined(ast.watchId)) {\n\t\t\tintoId = intoId || this.nextId();\n\t\t\tthis.if_(\n\t\t\t\t\"i\",\n\t\t\t\tthis.lazyAssign(intoId, this.unsafeComputedMember(\"i\", ast.watchId)),\n\t\t\t\tthis.lazyRecurse(ast, intoId, nameId, recursionFn, create, true)\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (ast.type) {\n\t\t\tcase AST.Program:\n\t\t\t\tforEach(ast.body, function (expression, pos) {\n\t\t\t\t\tself.recurse(\n\t\t\t\t\t\texpression.expression,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tfunction (expr) {\n\t\t\t\t\t\t\tright = expr;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tif (pos !== ast.body.length - 1) {\n\t\t\t\t\t\tself.current().body.push(right, \";\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.return_(right);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase AST.Literal:\n\t\t\t\texpression = this.escape(ast.value);\n\t\t\t\tthis.assign(intoId, expression);\n\t\t\t\trecursionFn(intoId || expression);\n\t\t\t\tbreak;\n\t\t\tcase AST.UnaryExpression:\n\t\t\t\tthis.recurse(ast.argument, undefined, undefined, function (expr) {\n\t\t\t\t\tright = expr;\n\t\t\t\t});\n\t\t\t\texpression = ast.operator + \"(\" + this.ifDefined(right, 0) + \")\";\n\t\t\t\tthis.assign(intoId, expression);\n\t\t\t\trecursionFn(expression);\n\t\t\t\tbreak;\n\t\t\tcase AST.BinaryExpression:\n\t\t\t\tthis.recurse(ast.left, undefined, undefined, function (expr) {\n\t\t\t\t\tleft = expr;\n\t\t\t\t});\n\t\t\t\tthis.recurse(ast.right, undefined, undefined, function (expr) {\n\t\t\t\t\tright = expr;\n\t\t\t\t});\n\t\t\t\tif (ast.operator === \"+\") {\n\t\t\t\t\texpression = this.plus(left, right);\n\t\t\t\t} else if (ast.operator === \"-\") {\n\t\t\t\t\texpression =\n\t\t\t\t\t\tthis.ifDefined(left, 0) + ast.operator + this.ifDefined(right, 0);\n\t\t\t\t} else {\n\t\t\t\t\texpression = \"(\" + left + \")\" + ast.operator + \"(\" + right + \")\";\n\t\t\t\t}\n\t\t\t\tthis.assign(intoId, expression);\n\t\t\t\trecursionFn(expression);\n\t\t\t\tbreak;\n\t\t\tcase AST.LogicalExpression:\n\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\tself.recurse(ast.left, intoId);\n\t\t\t\tself.if_(\n\t\t\t\t\tast.operator === \"&&\" ? intoId : self.not(intoId),\n\t\t\t\t\tself.lazyRecurse(ast.right, intoId)\n\t\t\t\t);\n\t\t\t\trecursionFn(intoId);\n\t\t\t\tbreak;\n\t\t\tcase AST.ConditionalExpression:\n\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\tself.recurse(ast.test, intoId);\n\t\t\t\tself.if_(\n\t\t\t\t\tintoId,\n\t\t\t\t\tself.lazyRecurse(ast.alternate, intoId),\n\t\t\t\t\tself.lazyRecurse(ast.consequent, intoId)\n\t\t\t\t);\n\t\t\t\trecursionFn(intoId);\n\t\t\t\tbreak;\n\t\t\tcase AST.Identifier:\n\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\tvar inAssignment = self.current().inAssignment;\n\t\t\t\tif (nameId) {\n\t\t\t\t\tif (inAssignment) {\n\t\t\t\t\t\tnameId.context = this.assign(this.nextId(), \"s\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnameId.context =\n\t\t\t\t\t\t\tself.stage === \"inputs\"\n\t\t\t\t\t\t\t\t? \"s\"\n\t\t\t\t\t\t\t\t: this.assign(\n\t\t\t\t\t\t\t\t\t\tthis.nextId(),\n\t\t\t\t\t\t\t\t\t\tthis.getHasOwnProperty(\"l\", ast.name) + \"?l:s\"\n\t\t\t\t\t\t\t\t );\n\t\t\t\t\t}\n\t\t\t\t\tnameId.computed = false;\n\t\t\t\t\tnameId.name = ast.name;\n\t\t\t\t}\n\t\t\t\tself.if_(\n\t\t\t\t\tself.stage === \"inputs\" ||\n\t\t\t\t\t\tself.not(self.getHasOwnProperty(\"l\", ast.name)),\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\tself.stage === \"inputs\" ||\n\t\t\t\t\t\t\t\tself.and_(\n\t\t\t\t\t\t\t\t\t\"s\",\n\t\t\t\t\t\t\t\t\tself.or_(\n\t\t\t\t\t\t\t\t\t\tself.isNull(self.nonComputedMember(\"s\", ast.name)),\n\t\t\t\t\t\t\t\t\t\tself.hasOwnProperty_(\"s\", ast.name)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tif (create && create !== 1) {\n\t\t\t\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\t\t\t\tself.isNull(self.nonComputedMember(\"s\", ast.name)),\n\t\t\t\t\t\t\t\t\t\tself.lazyAssign(self.nonComputedMember(\"s\", ast.name), \"{}\")\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tself.assign(intoId, self.nonComputedMember(\"s\", ast.name));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tintoId &&\n\t\t\t\t\t\tself.lazyAssign(intoId, self.nonComputedMember(\"l\", ast.name))\n\t\t\t\t);\n\t\t\t\trecursionFn(intoId);\n\t\t\t\tbreak;\n\t\t\tcase AST.MemberExpression:\n\t\t\t\tleft = (nameId && (nameId.context = this.nextId())) || this.nextId();\n\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\tself.recurse(\n\t\t\t\t\tast.object,\n\t\t\t\t\tleft,\n\t\t\t\t\tundefined,\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tvar member = null;\n\t\t\t\t\t\tvar inAssignment = self.current().inAssignment;\n\t\t\t\t\t\tif (ast.computed) {\n\t\t\t\t\t\t\tright = self.nextId();\n\t\t\t\t\t\t\tif (inAssignment || self.state.computing === \"assign\") {\n\t\t\t\t\t\t\t\tmember = self.unsafeComputedMember(left, right);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmember = self.computedMember(left, right);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (inAssignment || self.state.computing === \"assign\") {\n\t\t\t\t\t\t\t\tmember = self.unsafeNonComputedMember(left, ast.property.name);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmember = self.nonComputedMember(left, ast.property.name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tright = ast.property.name;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (ast.computed) {\n\t\t\t\t\t\t\tif (ast.property.type === AST.Literal) {\n\t\t\t\t\t\t\t\tself.recurse(ast.property, right);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\tself.and_(\n\t\t\t\t\t\t\t\tself.notNull(left),\n\t\t\t\t\t\t\t\tself.or_(\n\t\t\t\t\t\t\t\t\tself.isNull(member),\n\t\t\t\t\t\t\t\t\tself.hasOwnProperty_(left, right, ast.computed)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tif (ast.computed) {\n\t\t\t\t\t\t\t\t\tif (ast.property.type !== AST.Literal) {\n\t\t\t\t\t\t\t\t\t\tself.recurse(ast.property, right);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (create && create !== 1) {\n\t\t\t\t\t\t\t\t\t\tself.if_(self.not(member), self.lazyAssign(member, \"{}\"));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tself.assign(intoId, member);\n\t\t\t\t\t\t\t\t\tif (nameId) {\n\t\t\t\t\t\t\t\t\t\tnameId.computed = true;\n\t\t\t\t\t\t\t\t\t\tnameId.name = right;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (create && create !== 1) {\n\t\t\t\t\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\t\t\t\t\tself.isNull(member),\n\t\t\t\t\t\t\t\t\t\t\tself.lazyAssign(member, \"{}\")\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tself.assign(intoId, member);\n\t\t\t\t\t\t\t\t\tif (nameId) {\n\t\t\t\t\t\t\t\t\t\tnameId.computed = false;\n\t\t\t\t\t\t\t\t\t\tnameId.name = ast.property.name;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tself.assign(intoId, \"undefined\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\trecursionFn(intoId);\n\t\t\t\t\t},\n\t\t\t\t\t!!create\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase AST.CallExpression:\n\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\tif (ast.filter) {\n\t\t\t\t\tright = self.filter(ast.callee.name);\n\t\t\t\t\targs = [];\n\t\t\t\t\tforEach(ast.arguments, function (expr) {\n\t\t\t\t\t\tvar argument = self.nextId();\n\t\t\t\t\t\tself.recurse(expr, argument);\n\t\t\t\t\t\targs.push(argument);\n\t\t\t\t\t});\n\t\t\t\t\texpression = right + \".call(\" + right + \",\" + args.join(\",\") + \")\";\n\t\t\t\t\tself.assign(intoId, expression);\n\t\t\t\t\trecursionFn(intoId);\n\t\t\t\t} else {\n\t\t\t\t\tright = self.nextId();\n\t\t\t\t\tleft = {};\n\t\t\t\t\targs = [];\n\t\t\t\t\tself.recurse(ast.callee, right, left, function () {\n\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\tself.notNull(right),\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tforEach(ast.arguments, function (expr) {\n\t\t\t\t\t\t\t\t\tself.recurse(\n\t\t\t\t\t\t\t\t\t\texpr,\n\t\t\t\t\t\t\t\t\t\tast.constant ? undefined : self.nextId(),\n\t\t\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\t\t\tfunction (argument) {\n\t\t\t\t\t\t\t\t\t\t\targs.push(argument);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (left.name) {\n\t\t\t\t\t\t\t\t\tvar x = self.member(left.context, left.name, left.computed);\n\t\t\t\t\t\t\t\t\texpression =\n\t\t\t\t\t\t\t\t\t\t\"(\" +\n\t\t\t\t\t\t\t\t\t\tx +\n\t\t\t\t\t\t\t\t\t\t\" === null ? null : \" +\n\t\t\t\t\t\t\t\t\t\tself.unsafeMember(left.context, left.name, left.computed) +\n\t\t\t\t\t\t\t\t\t\t\".call(\" +\n\t\t\t\t\t\t\t\t\t\t[left.context].concat(args).join(\",\") +\n\t\t\t\t\t\t\t\t\t\t\"))\";\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\texpression = right + \"(\" + args.join(\",\") + \")\";\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tself.assign(intoId, expression);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tself.assign(intoId, \"undefined\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\trecursionFn(intoId);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase AST.AssignmentExpression:\n\t\t\t\tright = this.nextId();\n\t\t\t\tleft = {};\n\t\t\t\tself.current().inAssignment = true;\n\t\t\t\tthis.recurse(\n\t\t\t\t\tast.left,\n\t\t\t\t\tundefined,\n\t\t\t\t\tleft,\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tself.if_(\n\t\t\t\t\t\t\tself.and_(\n\t\t\t\t\t\t\t\tself.notNull(left.context),\n\t\t\t\t\t\t\t\tself.or_(\n\t\t\t\t\t\t\t\t\tself.hasOwnProperty_(left.context, left.name),\n\t\t\t\t\t\t\t\t\tself.isNull(\n\t\t\t\t\t\t\t\t\t\tself.member(left.context, left.name, left.computed)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tself.recurse(ast.right, right);\n\t\t\t\t\t\t\t\texpression =\n\t\t\t\t\t\t\t\t\tself.member(left.context, left.name, left.computed) +\n\t\t\t\t\t\t\t\t\tast.operator +\n\t\t\t\t\t\t\t\t\tright;\n\t\t\t\t\t\t\t\tself.assign(intoId, expression);\n\t\t\t\t\t\t\t\trecursionFn(intoId || expression);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\tself.current().inAssignment = false;\n\t\t\t\t\t\tself.recurse(ast.right, right);\n\t\t\t\t\t\tself.current().inAssignment = true;\n\t\t\t\t\t},\n\t\t\t\t\t1\n\t\t\t\t);\n\t\t\t\tself.current().inAssignment = false;\n\t\t\t\tbreak;\n\t\t\tcase AST.ArrayExpression:\n\t\t\t\targs = [];\n\t\t\t\tforEach(ast.elements, function (expr) {\n\t\t\t\t\tself.recurse(\n\t\t\t\t\t\texpr,\n\t\t\t\t\t\tast.constant ? undefined : self.nextId(),\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\tfunction (argument) {\n\t\t\t\t\t\t\targs.push(argument);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t\texpression = \"[\" + args.join(\",\") + \"]\";\n\t\t\t\tthis.assign(intoId, expression);\n\t\t\t\trecursionFn(intoId || expression);\n\t\t\t\tbreak;\n\t\t\tcase AST.ObjectExpression:\n\t\t\t\targs = [];\n\t\t\t\tcomputed = false;\n\t\t\t\tforEach(ast.properties, function (property) {\n\t\t\t\t\tif (property.computed) {\n\t\t\t\t\t\tcomputed = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (computed) {\n\t\t\t\t\tintoId = intoId || this.nextId();\n\t\t\t\t\tthis.assign(intoId, \"{}\");\n\t\t\t\t\tforEach(ast.properties, function (property) {\n\t\t\t\t\t\tif (property.computed) {\n\t\t\t\t\t\t\tleft = self.nextId();\n\t\t\t\t\t\t\tself.recurse(property.key, left);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tleft =\n\t\t\t\t\t\t\t\tproperty.key.type === AST.Identifier\n\t\t\t\t\t\t\t\t\t? property.key.name\n\t\t\t\t\t\t\t\t\t: \"\" + property.key.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tright = self.nextId();\n\t\t\t\t\t\tself.recurse(property.value, right);\n\t\t\t\t\t\tself.assign(\n\t\t\t\t\t\t\tself.unsafeMember(intoId, left, property.computed),\n\t\t\t\t\t\t\tright\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tforEach(ast.properties, function (property) {\n\t\t\t\t\t\tself.recurse(\n\t\t\t\t\t\t\tproperty.value,\n\t\t\t\t\t\t\tast.constant ? undefined : self.nextId(),\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tfunction (expr) {\n\t\t\t\t\t\t\t\targs.push(\n\t\t\t\t\t\t\t\t\tself.escape(\n\t\t\t\t\t\t\t\t\t\tproperty.key.type === AST.Identifier\n\t\t\t\t\t\t\t\t\t\t\t? property.key.name\n\t\t\t\t\t\t\t\t\t\t\t: \"\" + property.key.value\n\t\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t\t\t\t\t\":\" +\n\t\t\t\t\t\t\t\t\t\texpr\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t\texpression = \"{\" + args.join(\",\") + \"}\";\n\t\t\t\t\tthis.assign(intoId, expression);\n\t\t\t\t}\n\t\t\t\trecursionFn(intoId || expression);\n\t\t\t\tbreak;\n\t\t\tcase AST.ThisExpression:\n\t\t\t\tthis.assign(intoId, \"s\");\n\t\t\t\trecursionFn(intoId || \"s\");\n\t\t\t\tbreak;\n\t\t\tcase AST.LocalsExpression:\n\t\t\t\tthis.assign(intoId, \"l\");\n\t\t\t\trecursionFn(intoId || \"l\");\n\t\t\t\tbreak;\n\t\t\tcase AST.NGValueParameter:\n\t\t\t\tthis.assign(intoId, \"v\");\n\t\t\t\trecursionFn(intoId || \"v\");\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\tgetHasOwnProperty: function (element, property) {\n\t\tvar key = element + \".\" + property;\n\t\tvar own = this.current().own;\n\t\tif (!own.hasOwnProperty(key)) {\n\t\t\town[key] = this.nextId(\n\t\t\t\tfalse,\n\t\t\t\telement + \"&&(\" + this.escape(property) + \" in \" + element + \")\"\n\t\t\t);\n\t\t}\n\t\treturn own[key];\n\t},\n\n\tassign: function (id, value) {\n\t\tif (!id) return;\n\t\tthis.current().body.push(id, \"=\", value, \";\");\n\t\treturn id;\n\t},\n\n\tfilter: function (filterName) {\n\t\tif (!this.state.filters.hasOwnProperty(filterName)) {\n\t\t\tthis.state.filters[filterName] = this.nextId(true);\n\t\t}\n\t\treturn this.state.filters[filterName];\n\t},\n\n\tifDefined: function (id, defaultValue) {\n\t\treturn \"ifDefined(\" + id + \",\" + this.escape(defaultValue) + \")\";\n\t},\n\n\tplus: function (left, right) {\n\t\treturn \"plus(\" + left + \",\" + right + \")\";\n\t},\n\n\treturn_: function (id) {\n\t\tthis.current().body.push(\"return \", id, \";\");\n\t},\n\n\tif_: function (test, alternate, consequent) {\n\t\tif (test === true) {\n\t\t\talternate();\n\t\t} else {\n\t\t\tvar body = this.current().body;\n\t\t\tbody.push(\"if(\", test, \"){\");\n\t\t\talternate();\n\t\t\tbody.push(\"}\");\n\t\t\tif (consequent) {\n\t\t\t\tbody.push(\"else{\");\n\t\t\t\tconsequent();\n\t\t\t\tbody.push(\"}\");\n\t\t\t}\n\t\t}\n\t},\n\tor_: function (expr1, expr2) {\n\t\treturn \"(\" + expr1 + \") || (\" + expr2 + \")\";\n\t},\n\thasOwnProperty_: function (obj, prop, computed) {\n\t\tif (computed) {\n\t\t\treturn \"(Object.prototype.hasOwnProperty.call(\" + obj + \",\" + prop + \"))\";\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t\"(Object.prototype.hasOwnProperty.call(\" + obj + \",'\" + prop + \"'))\"\n\t\t\t);\n\t\t}\n\t},\n\tand_: function (expr1, expr2) {\n\t\treturn \"(\" + expr1 + \") && (\" + expr2 + \")\";\n\t},\n\tnot: function (expression) {\n\t\treturn \"!(\" + expression + \")\";\n\t},\n\n\tisNull: function (expression) {\n\t\treturn expression + \"==null\";\n\t},\n\n\tnotNull: function (expression) {\n\t\treturn expression + \"!=null\";\n\t},\n\n\tnonComputedMember: function (left, right) {\n\t\tvar SAFE_IDENTIFIER = /^[$_a-zA-Z][$_a-zA-Z0-9]*$/;\n\t\tvar UNSAFE_CHARACTERS = /[^$_a-zA-Z0-9]/g;\n\t\tvar expr = \"\";\n\t\tif (SAFE_IDENTIFIER.test(right)) {\n\t\t\texpr = left + \".\" + right;\n\t\t} else {\n\t\t\tright = right.replace(UNSAFE_CHARACTERS, this.stringEscapeFn);\n\t\t\texpr = left + '[\"' + right + '\"]';\n\t\t}\n\n\t\treturn expr;\n\t},\n\n\tunsafeComputedMember: function (left, right) {\n\t\treturn left + \"[\" + right + \"]\";\n\t},\n\tunsafeNonComputedMember: function (left, right) {\n\t\treturn this.nonComputedMember(left, right);\n\t},\n\n\tcomputedMember: function (left, right) {\n\t\tif (this.state.computing === \"assign\") {\n\t\t\treturn this.unsafeComputedMember(left, right);\n\t\t}\n\t\t// return left + \"[\" + right + \"]\";\n\t\treturn (\n\t\t\t\"(\" +\n\t\t\tleft +\n\t\t\t\".hasOwnProperty(\" +\n\t\t\tright +\n\t\t\t\") ? \" +\n\t\t\tleft +\n\t\t\t\"[\" +\n\t\t\tright +\n\t\t\t\"] : null)\"\n\t\t);\n\t},\n\n\tunsafeMember: function (left, right, computed) {\n\t\tif (computed) return this.unsafeComputedMember(left, right);\n\t\treturn this.unsafeNonComputedMember(left, right);\n\t},\n\n\tmember: function (left, right, computed) {\n\t\tif (computed) return this.computedMember(left, right);\n\t\treturn this.nonComputedMember(left, right);\n\t},\n\n\tgetStringValue: function (item) {\n\t\tthis.assign(item, \"getStringValue(\" + item + \")\");\n\t},\n\n\tlazyRecurse: function (\n\t\tast,\n\t\tintoId,\n\t\tnameId,\n\t\trecursionFn,\n\t\tcreate,\n\t\tskipWatchIdCheck\n\t) {\n\t\tvar self = this;\n\t\treturn function () {\n\t\t\tself.recurse(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck);\n\t\t};\n\t},\n\n\tlazyAssign: function (id, value) {\n\t\tvar self = this;\n\t\treturn function () {\n\t\t\tself.assign(id, value);\n\t\t};\n\t},\n\n\tstringEscapeRegex: /[^ a-zA-Z0-9]/g,\n\n\tstringEscapeFn: function (c) {\n\t\treturn \"\\\\u\" + (\"0000\" + c.charCodeAt(0).toString(16)).slice(-4);\n\t},\n\n\tescape: function (value) {\n\t\tif (isString(value))\n\t\t\treturn (\n\t\t\t\t\"'\" + value.replace(this.stringEscapeRegex, this.stringEscapeFn) + \"'\"\n\t\t\t);\n\t\tif (isNumber(value)) return value.toString();\n\t\tif (value === true) return \"true\";\n\t\tif (value === false) return \"false\";\n\t\tif (value === null) return \"null\";\n\t\tif (typeof value === \"undefined\") return \"undefined\";\n\n\t\tthrow $parseMinErr(\"esc\", \"IMPOSSIBLE\");\n\t},\n\n\tnextId: function (skip, init) {\n\t\tvar id = \"v\" + this.state.nextId++;\n\t\tif (!skip) {\n\t\t\tthis.current().vars.push(id + (init ? \"=\" + init : \"\"));\n\t\t}\n\t\treturn id;\n\t},\n\n\tcurrent: function () {\n\t\treturn this.state[this.state.computing];\n\t},\n};\n\nfunction ASTInterpreter(astBuilder, $filter) {\n\tthis.astBuilder = astBuilder;\n\tthis.$filter = $filter;\n}\n\nASTInterpreter.prototype = {\n\tcompile: function (expression) {\n\t\tvar self = this;\n\t\tvar ast = this.astBuilder.ast(expression);\n\t\tfindConstantAndWatchExpressions(ast, self.$filter);\n\t\tvar assignable;\n\t\tvar assign;\n\t\tif ((assignable = assignableAST(ast))) {\n\t\t\tassign = this.recurse(assignable);\n\t\t}\n\t\tvar toWatch = getInputs(ast.body);\n\t\tvar inputs;\n\t\tif (toWatch) {\n\t\t\tinputs = [];\n\t\t\tforEach(toWatch, function (watch, key) {\n\t\t\t\tvar input = self.recurse(watch);\n\t\t\t\twatch.input = input;\n\t\t\t\tinputs.push(input);\n\t\t\t\twatch.watchId = key;\n\t\t\t});\n\t\t}\n\t\tvar expressions = [];\n\t\tforEach(ast.body, function (expression) {\n\t\t\texpressions.push(self.recurse(expression.expression));\n\t\t});\n\t\tvar fn =\n\t\t\tast.body.length === 0\n\t\t\t\t? noop\n\t\t\t\t: ast.body.length === 1\n\t\t\t\t? expressions[0]\n\t\t\t\t: function (scope, locals) {\n\t\t\t\t\t\tvar lastValue;\n\t\t\t\t\t\tforEach(expressions, function (exp) {\n\t\t\t\t\t\t\tlastValue = exp(scope, locals);\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn lastValue;\n\t\t\t\t };\n\n\t\tif (assign) {\n\t\t\tfn.assign = function (scope, value, locals) {\n\t\t\t\treturn assign(scope, locals, value);\n\t\t\t};\n\t\t}\n\t\tif (inputs) {\n\t\t\tfn.inputs = inputs;\n\t\t}\n\t\tfn.ast = ast;\n\t\tfn.literal = isLiteral(ast);\n\t\tfn.constant = isConstant(ast);\n\t\treturn fn;\n\t},\n\n\trecurse: function (ast, context, create) {\n\t\tvar left,\n\t\t\tright,\n\t\t\tself = this,\n\t\t\targs;\n\t\tif (ast.input) {\n\t\t\treturn this.inputs(ast.input, ast.watchId);\n\t\t}\n\t\tswitch (ast.type) {\n\t\t\tcase AST.Literal:\n\t\t\t\treturn this.value(ast.value, context);\n\t\t\tcase AST.UnaryExpression:\n\t\t\t\tright = this.recurse(ast.argument);\n\t\t\t\treturn this[\"unary\" + ast.operator](right, context);\n\t\t\tcase AST.BinaryExpression:\n\t\t\t\tleft = this.recurse(ast.left);\n\t\t\t\tright = this.recurse(ast.right);\n\t\t\t\treturn this[\"binary\" + ast.operator](left, right, context);\n\t\t\tcase AST.LogicalExpression:\n\t\t\t\tleft = this.recurse(ast.left);\n\t\t\t\tright = this.recurse(ast.right);\n\t\t\t\treturn this[\"binary\" + ast.operator](left, right, context);\n\t\t\tcase AST.ConditionalExpression:\n\t\t\t\treturn this[\"ternary?:\"](\n\t\t\t\t\tthis.recurse(ast.test),\n\t\t\t\t\tthis.recurse(ast.alternate),\n\t\t\t\t\tthis.recurse(ast.consequent),\n\t\t\t\t\tcontext\n\t\t\t\t);\n\t\t\tcase AST.Identifier:\n\t\t\t\treturn self.identifier(ast.name, context, create);\n\t\t\tcase AST.MemberExpression:\n\t\t\t\tleft = this.recurse(ast.object, false, !!create);\n\t\t\t\tif (!ast.computed) {\n\t\t\t\t\tright = ast.property.name;\n\t\t\t\t}\n\t\t\t\tif (ast.computed) right = this.recurse(ast.property);\n\n\t\t\t\treturn ast.computed\n\t\t\t\t\t? this.computedMember(left, right, context, create)\n\t\t\t\t\t: this.nonComputedMember(left, right, context, create);\n\t\t\tcase AST.CallExpression:\n\t\t\t\targs = [];\n\t\t\t\tforEach(ast.arguments, function (expr) {\n\t\t\t\t\targs.push(self.recurse(expr));\n\t\t\t\t});\n\t\t\t\tif (ast.filter) right = this.$filter(ast.callee.name);\n\t\t\t\tif (!ast.filter) right = this.recurse(ast.callee, true);\n\t\t\t\treturn ast.filter\n\t\t\t\t\t? function (scope, locals, assign, inputs) {\n\t\t\t\t\t\t\tvar values = [];\n\t\t\t\t\t\t\tfor (var i = 0; i < args.length; ++i) {\n\t\t\t\t\t\t\t\tvalues.push(args[i](scope, locals, assign, inputs));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar value = right.apply(undefined, values, inputs);\n\t\t\t\t\t\t\treturn context\n\t\t\t\t\t\t\t\t? { context: undefined, name: undefined, value: value }\n\t\t\t\t\t\t\t\t: value;\n\t\t\t\t\t }\n\t\t\t\t\t: function (scope, locals, assign, inputs) {\n\t\t\t\t\t\t\tvar rhs = right(scope, locals, assign, inputs);\n\t\t\t\t\t\t\tvar value;\n\t\t\t\t\t\t\tif (rhs.value != null) {\n\t\t\t\t\t\t\t\tvar values = [];\n\t\t\t\t\t\t\t\tfor (var i = 0; i < args.length; ++i) {\n\t\t\t\t\t\t\t\t\tvalues.push(args[i](scope, locals, assign, inputs));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvalue = rhs.value.apply(rhs.context, values);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn context ? { value: value } : value;\n\t\t\t\t\t };\n\t\t\tcase AST.AssignmentExpression:\n\t\t\t\tleft = this.recurse(ast.left, true, 1);\n\t\t\t\tright = this.recurse(ast.right);\n\t\t\t\treturn function (scope, locals, assign, inputs) {\n\t\t\t\t\tvar lhs = left(scope, false, assign, inputs);\n\t\t\t\t\tvar rhs = right(scope, locals, assign, inputs);\n\t\t\t\t\tlhs.context[lhs.name] = rhs;\n\t\t\t\t\treturn context ? { value: rhs } : rhs;\n\t\t\t\t};\n\t\t\tcase AST.ArrayExpression:\n\t\t\t\targs = [];\n\t\t\t\tforEach(ast.elements, function (expr) {\n\t\t\t\t\targs.push(self.recurse(expr));\n\t\t\t\t});\n\t\t\t\treturn function (scope, locals, assign, inputs) {\n\t\t\t\t\tvar value = [];\n\t\t\t\t\tfor (var i = 0; i < args.length; ++i) {\n\t\t\t\t\t\tvalue.push(args[i](scope, locals, assign, inputs));\n\t\t\t\t\t}\n\t\t\t\t\treturn context ? { value: value } : value;\n\t\t\t\t};\n\t\t\tcase AST.ObjectExpression:\n\t\t\t\targs = [];\n\t\t\t\tforEach(ast.properties, function (property) {\n\t\t\t\t\tif (property.computed) {\n\t\t\t\t\t\targs.push({\n\t\t\t\t\t\t\tkey: self.recurse(property.key),\n\t\t\t\t\t\t\tcomputed: true,\n\t\t\t\t\t\t\tvalue: self.recurse(property.value),\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\targs.push({\n\t\t\t\t\t\t\tkey:\n\t\t\t\t\t\t\t\tproperty.key.type === AST.Identifier\n\t\t\t\t\t\t\t\t\t? property.key.name\n\t\t\t\t\t\t\t\t\t: \"\" + property.key.value,\n\t\t\t\t\t\t\tcomputed: false,\n\t\t\t\t\t\t\tvalue: self.recurse(property.value),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn function (scope, locals, assign, inputs) {\n\t\t\t\t\tvar value = {};\n\t\t\t\t\tfor (var i = 0; i < args.length; ++i) {\n\t\t\t\t\t\tif (args[i].computed) {\n\t\t\t\t\t\t\tvalue[args[i].key(scope, locals, assign, inputs)] = args[i].value(\n\t\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\t\tlocals,\n\t\t\t\t\t\t\t\tassign,\n\t\t\t\t\t\t\t\tinputs\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvalue[args[i].key] = args[i].value(scope, locals, assign, inputs);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn context ? { value: value } : value;\n\t\t\t\t};\n\t\t\tcase AST.ThisExpression:\n\t\t\t\treturn function (scope) {\n\t\t\t\t\treturn context ? { value: scope } : scope;\n\t\t\t\t};\n\t\t\tcase AST.LocalsExpression:\n\t\t\t\treturn function (scope, locals) {\n\t\t\t\t\treturn context ? { value: locals } : locals;\n\t\t\t\t};\n\t\t\tcase AST.NGValueParameter:\n\t\t\t\treturn function (scope, locals, assign) {\n\t\t\t\t\treturn context ? { value: assign } : assign;\n\t\t\t\t};\n\t\t}\n\t},\n\n\t\"unary+\": function (argument, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg = argument(scope, locals, assign, inputs);\n\t\t\tif (isDefined(arg)) {\n\t\t\t\targ = +arg;\n\t\t\t} else {\n\t\t\t\targ = 0;\n\t\t\t}\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"unary-\": function (argument, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg = argument(scope, locals, assign, inputs);\n\t\t\tif (isDefined(arg)) {\n\t\t\t\targ = -arg;\n\t\t\t} else {\n\t\t\t\targ = -0;\n\t\t\t}\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"unary!\": function (argument, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg = !argument(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary+\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar lhs = left(scope, locals, assign, inputs);\n\t\t\tvar rhs = right(scope, locals, assign, inputs);\n\t\t\tvar arg = plusFn(lhs, rhs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary-\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar lhs = left(scope, locals, assign, inputs);\n\t\t\tvar rhs = right(scope, locals, assign, inputs);\n\t\t\tvar arg = (isDefined(lhs) ? lhs : 0) - (isDefined(rhs) ? rhs : 0);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary*\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) *\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary/\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) /\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary%\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) %\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary===\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) ===\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary!==\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) !==\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary==\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) ==\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary!=\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) !=\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary<\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) <\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary>\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) >\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary<=\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) <=\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary>=\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) >=\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary&&\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) &&\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"binary||\": function (left, right, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg =\n\t\t\t\tleft(scope, locals, assign, inputs) ||\n\t\t\t\tright(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\t\"ternary?:\": function (test, alternate, consequent, context) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar arg = test(scope, locals, assign, inputs)\n\t\t\t\t? alternate(scope, locals, assign, inputs)\n\t\t\t\t: consequent(scope, locals, assign, inputs);\n\t\t\treturn context ? { value: arg } : arg;\n\t\t};\n\t},\n\tvalue: function (value, context) {\n\t\treturn function () {\n\t\t\treturn context\n\t\t\t\t? { context: undefined, name: undefined, value: value }\n\t\t\t\t: value;\n\t\t};\n\t},\n\tidentifier: function (name, context, create) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar base = locals && name in locals ? locals : scope;\n\t\t\tif (create && create !== 1 && base && base[name] == null) {\n\t\t\t\tbase[name] = {};\n\t\t\t}\n\t\t\tvar value = base ? base[name] : undefined;\n\t\t\tif (context) {\n\t\t\t\treturn { context: base, name: name, value: value };\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t};\n\t},\n\tcomputedMember: function (left, right, context, create) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar lhs = left(scope, locals, assign, inputs);\n\t\t\tvar rhs;\n\t\t\tvar value;\n\t\t\tif (lhs != null) {\n\t\t\t\trhs = right(scope, locals, assign, inputs);\n\t\t\t\trhs = getStringValue(rhs);\n\t\t\t\tif (create && create !== 1) {\n\t\t\t\t\tif (lhs && !lhs[rhs]) {\n\t\t\t\t\t\tlhs[rhs] = {};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(lhs, rhs)) {\n\t\t\t\t\tvalue = lhs[rhs];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (context) {\n\t\t\t\treturn { context: lhs, name: rhs, value: value };\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t};\n\t},\n\tnonComputedMember: function (left, right, context, create) {\n\t\treturn function (scope, locals, assign, inputs) {\n\t\t\tvar lhs = left(scope, locals, assign, inputs);\n\t\t\tif (create && create !== 1) {\n\t\t\t\tif (lhs && lhs[right] == null) {\n\t\t\t\t\tlhs[right] = {};\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar value = undefined;\n\t\t\tif (lhs != null && Object.prototype.hasOwnProperty.call(lhs, right)) {\n\t\t\t\tvalue = lhs[right];\n\t\t\t}\n\n\t\t\tif (context) {\n\t\t\t\treturn { context: lhs, name: right, value: value };\n\t\t\t} else {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t};\n\t},\n\tinputs: function (input, watchId) {\n\t\treturn function (scope, value, locals, inputs) {\n\t\t\tif (inputs) return inputs[watchId];\n\t\t\treturn input(scope, value, locals);\n\t\t};\n\t},\n};\n\n/**\n * @constructor\n */\nvar Parser = function Parser(lexer, $filter, options) {\n\tthis.lexer = lexer;\n\tthis.$filter = $filter;\n\tthis.options = options;\n\tthis.ast = new AST(lexer, options);\n\tthis.astCompiler = options.csp\n\t\t? new ASTInterpreter(this.ast, $filter)\n\t\t: new ASTCompiler(this.ast, $filter);\n};\n\nParser.prototype = {\n\tconstructor: Parser,\n\n\tparse: function (text) {\n\t\treturn this.astCompiler.compile(text);\n\t},\n};\n\nfunction getValueOf(value) {\n\treturn isFunction(value.valueOf)\n\t\t? value.valueOf()\n\t\t: objectValueOf.call(value);\n}\n\n///////////////////////////////////\n\n/**\n * @ngdoc service\n * @name $parse\n * @kind function\n *\n * @description\n *\n * Converts Angular {@link guide/expression expression} into a function.\n *\n * ```js\n * var getter = $parse('user.name');\n * var setter = getter.assign;\n * var context = {user:{name:'angular'}};\n * var locals = {user:{name:'local'}};\n *\n * expect(getter(context)).toEqual('angular');\n * setter(context, 'newValue');\n * expect(context.user.name).toEqual('newValue');\n * expect(getter(context, locals)).toEqual('local');\n * ```\n *\n *\n * @param {string} expression String expression to compile.\n * @returns {function(context, locals)} a function which represents the compiled expression:\n *\n * * `context` – `{object}` – an object against which any expressions embedded in the strings\n * are evaluated against (typically a scope object).\n * * `locals` – `{object=}` – local variables context object, useful for overriding values in\n * `context`.\n *\n * The returned function also has the following properties:\n * * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript\n * literal.\n * * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript\n * constant literals.\n * * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be\n * set to a function to change its value on the given context.\n *\n */\n\n/**\n * @ngdoc provider\n * @name $parseProvider\n * @this\n *\n * @description\n * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse}\n * service.\n */\nfunction $ParseProvider() {\n\tvar cache = createMap();\n\tvar literals = {\n\t\ttrue: true,\n\t\tfalse: false,\n\t\tnull: null,\n\t\tundefined: undefined,\n\t};\n\tvar identStart, identContinue;\n\n\t/**\n\t * @ngdoc method\n\t * @name $parseProvider#addLiteral\n\t * @description\n\t *\n\t * Configure $parse service to add literal values that will be present as literal at expressions.\n\t *\n\t * @param {string} literalName Token for the literal value. The literal name value must be a valid literal name.\n\t * @param {*} literalValue Value for this literal. All literal values must be primitives or `undefined`.\n\t *\n\t **/\n\tthis.addLiteral = function (literalName, literalValue) {\n\t\tliterals[literalName] = literalValue;\n\t};\n\n\t/**\n\t * @ngdoc method\n\t * @name $parseProvider#setIdentifierFns\n\t *\n\t * @description\n\t *\n\t * Allows defining the set of characters that are allowed in Angular expressions. The function\n\t * `identifierStart` will get called to know if a given character is a valid character to be the\n\t * first character for an identifier. The function `identifierContinue` will get called to know if\n\t * a given character is a valid character to be a follow-up identifier character. The functions\n\t * `identifierStart` and `identifierContinue` will receive as arguments the single character to be\n\t * identifier and the character code point. These arguments will be `string` and `numeric`. Keep in\n\t * mind that the `string` parameter can be two characters long depending on the character\n\t * representation. It is expected for the function to return `true` or `false`, whether that\n\t * character is allowed or not.\n\t *\n\t * Since this function will be called extensively, keep the implementation of these functions fast,\n\t * as the performance of these functions have a direct impact on the expressions parsing speed.\n\t *\n\t * @param {function=} identifierStart The function that will decide whether the given character is\n\t * a valid identifier start character.\n\t * @param {function=} identifierContinue The function that will decide whether the given character is\n\t * a valid identifier continue character.\n\t */\n\tthis.setIdentifierFns = function (identifierStart, identifierContinue) {\n\t\tidentStart = identifierStart;\n\t\tidentContinue = identifierContinue;\n\t\treturn this;\n\t};\n\n\tthis.$get = [\n\t\t\"$filter\",\n\t\tfunction ($filter) {\n\t\t\tvar noUnsafeEval = csp().noUnsafeEval;\n\t\t\tvar $parseOptions = {\n\t\t\t\tcsp: noUnsafeEval,\n\t\t\t\tliterals: copy(literals),\n\t\t\t\tisIdentifierStart: isFunction(identStart) && identStart,\n\t\t\t\tisIdentifierContinue: isFunction(identContinue) && identContinue,\n\t\t\t};\n\t\t\treturn $parse;\n\n\t\t\tfunction $parse(exp, interceptorFn) {\n\t\t\t\tvar parsedExpression, oneTime, cacheKey;\n\n\t\t\t\tswitch (typeof exp) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\texp = exp.trim();\n\t\t\t\t\t\tcacheKey = exp;\n\n\t\t\t\t\t\tparsedExpression = cache[cacheKey];\n\n\t\t\t\t\t\tif (!parsedExpression) {\n\t\t\t\t\t\t\tif (exp.charAt(0) === \":\" && exp.charAt(1) === \":\") {\n\t\t\t\t\t\t\t\toneTime = true;\n\t\t\t\t\t\t\t\texp = exp.substring(2);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar lexer = new Lexer($parseOptions);\n\t\t\t\t\t\t\tvar parser = new Parser(lexer, $filter, $parseOptions);\n\t\t\t\t\t\t\tparsedExpression = parser.parse(exp);\n\t\t\t\t\t\t\tif (parsedExpression.constant) {\n\t\t\t\t\t\t\t\tparsedExpression.$$watchDelegate = constantWatchDelegate;\n\t\t\t\t\t\t\t} else if (oneTime) {\n\t\t\t\t\t\t\t\tparsedExpression.$$watchDelegate = parsedExpression.literal\n\t\t\t\t\t\t\t\t\t? oneTimeLiteralWatchDelegate\n\t\t\t\t\t\t\t\t\t: oneTimeWatchDelegate;\n\t\t\t\t\t\t\t} else if (parsedExpression.inputs) {\n\t\t\t\t\t\t\t\tparsedExpression.$$watchDelegate = inputsWatchDelegate;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcache[cacheKey] = parsedExpression;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn addInterceptor(parsedExpression, interceptorFn);\n\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\treturn addInterceptor(exp, interceptorFn);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn addInterceptor(noop, interceptorFn);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction expressionInputDirtyCheck(newValue, oldValueOfValue) {\n\t\t\t\tif (newValue == null || oldValueOfValue == null) {\n\t\t\t\t\t// null/undefined\n\t\t\t\t\treturn newValue === oldValueOfValue;\n\t\t\t\t}\n\n\t\t\t\tif (typeof newValue === \"object\") {\n\t\t\t\t\t// attempt to convert the value to a primitive type\n\t\t\t\t\t// TODO(docs): add a note to docs that by implementing valueOf even objects and arrays can\n\t\t\t\t\t// be cheaply dirty-checked\n\t\t\t\t\tnewValue = getValueOf(newValue);\n\n\t\t\t\t\tif (typeof newValue === \"object\") {\n\t\t\t\t\t\t// objects/arrays are not supported - deep-watching them would be too expensive\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// fall-through to the primitive equality check\n\t\t\t\t}\n\n\t\t\t\t//Primitive or NaN\n\t\t\t\t// eslint-disable-next-line no-self-compare\n\t\t\t\treturn (\n\t\t\t\t\tnewValue === oldValueOfValue ||\n\t\t\t\t\t(newValue !== newValue && oldValueOfValue !== oldValueOfValue)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfunction inputsWatchDelegate(\n\t\t\t\tscope,\n\t\t\t\tlistener,\n\t\t\t\tobjectEquality,\n\t\t\t\tparsedExpression,\n\t\t\t\tprettyPrintExpression\n\t\t\t) {\n\t\t\t\tvar inputExpressions = parsedExpression.inputs;\n\t\t\t\tvar lastResult;\n\n\t\t\t\tif (inputExpressions.length === 1) {\n\t\t\t\t\tvar oldInputValueOf = expressionInputDirtyCheck; // init to something unique so that equals check fails\n\t\t\t\t\tinputExpressions = inputExpressions[0];\n\t\t\t\t\treturn scope.$watch(\n\t\t\t\t\t\tfunction expressionInputWatch(scope) {\n\t\t\t\t\t\t\tvar newInputValue = inputExpressions(scope);\n\t\t\t\t\t\t\tif (!expressionInputDirtyCheck(newInputValue, oldInputValueOf)) {\n\t\t\t\t\t\t\t\tlastResult = parsedExpression(scope, undefined, undefined, [\n\t\t\t\t\t\t\t\t\tnewInputValue,\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\toldInputValueOf = newInputValue && getValueOf(newInputValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn lastResult;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlistener,\n\t\t\t\t\t\tobjectEquality,\n\t\t\t\t\t\tprettyPrintExpression\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tvar oldInputValueOfValues = [];\n\t\t\t\tvar oldInputValues = [];\n\t\t\t\tfor (var i = 0, ii = inputExpressions.length; i < ii; i++) {\n\t\t\t\t\toldInputValueOfValues[i] = expressionInputDirtyCheck; // init to something unique so that equals check fails\n\t\t\t\t\toldInputValues[i] = null;\n\t\t\t\t}\n\n\t\t\t\treturn scope.$watch(\n\t\t\t\t\tfunction expressionInputsWatch(scope) {\n\t\t\t\t\t\tvar changed = false;\n\n\t\t\t\t\t\tfor (var i = 0, ii = inputExpressions.length; i < ii; i++) {\n\t\t\t\t\t\t\tvar newInputValue = inputExpressions[i](scope);\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tchanged ||\n\t\t\t\t\t\t\t\t(changed = !expressionInputDirtyCheck(\n\t\t\t\t\t\t\t\t\tnewInputValue,\n\t\t\t\t\t\t\t\t\toldInputValueOfValues[i]\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\toldInputValues[i] = newInputValue;\n\t\t\t\t\t\t\t\toldInputValueOfValues[i] =\n\t\t\t\t\t\t\t\t\tnewInputValue && getValueOf(newInputValue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (changed) {\n\t\t\t\t\t\t\tlastResult = parsedExpression(\n\t\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\t\toldInputValues\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn lastResult;\n\t\t\t\t\t},\n\t\t\t\t\tlistener,\n\t\t\t\t\tobjectEquality,\n\t\t\t\t\tprettyPrintExpression\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfunction oneTimeWatchDelegate(\n\t\t\t\tscope,\n\t\t\t\tlistener,\n\t\t\t\tobjectEquality,\n\t\t\t\tparsedExpression,\n\t\t\t\tprettyPrintExpression\n\t\t\t) {\n\t\t\t\tvar unwatch, lastValue;\n\t\t\t\tif (parsedExpression.inputs) {\n\t\t\t\t\tunwatch = inputsWatchDelegate(\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\toneTimeListener,\n\t\t\t\t\t\tobjectEquality,\n\t\t\t\t\t\tparsedExpression,\n\t\t\t\t\t\tprettyPrintExpression\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tunwatch = scope.$watch(oneTimeWatch, oneTimeListener, objectEquality);\n\t\t\t\t}\n\t\t\t\treturn unwatch;\n\n\t\t\t\tfunction oneTimeWatch(scope) {\n\t\t\t\t\treturn parsedExpression(scope);\n\t\t\t\t}\n\t\t\t\tfunction oneTimeListener(value, old, scope) {\n\t\t\t\t\tlastValue = value;\n\t\t\t\t\tif (isFunction(listener)) {\n\t\t\t\t\t\tlistener(value, old, scope);\n\t\t\t\t\t}\n\t\t\t\t\tif (isDefined(value)) {\n\t\t\t\t\t\tscope.$$postDigest(function () {\n\t\t\t\t\t\t\tif (isDefined(lastValue)) {\n\t\t\t\t\t\t\t\tunwatch();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction oneTimeLiteralWatchDelegate(\n\t\t\t\tscope,\n\t\t\t\tlistener,\n\t\t\t\tobjectEquality,\n\t\t\t\tparsedExpression\n\t\t\t) {\n\t\t\t\tvar unwatch, lastValue;\n\t\t\t\tunwatch = scope.$watch(\n\t\t\t\t\tfunction oneTimeWatch(scope) {\n\t\t\t\t\t\treturn parsedExpression(scope);\n\t\t\t\t\t},\n\t\t\t\t\tfunction oneTimeListener(value, old, scope) {\n\t\t\t\t\t\tlastValue = value;\n\t\t\t\t\t\tif (isFunction(listener)) {\n\t\t\t\t\t\t\tlistener(value, old, scope);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isAllDefined(value)) {\n\t\t\t\t\t\t\tscope.$$postDigest(function () {\n\t\t\t\t\t\t\t\tif (isAllDefined(lastValue)) unwatch();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tobjectEquality\n\t\t\t\t);\n\n\t\t\t\treturn unwatch;\n\n\t\t\t\tfunction isAllDefined(value) {\n\t\t\t\t\tvar allDefined = true;\n\t\t\t\t\tforEach(value, function (val) {\n\t\t\t\t\t\tif (!isDefined(val)) allDefined = false;\n\t\t\t\t\t});\n\t\t\t\t\treturn allDefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction constantWatchDelegate(\n\t\t\t\tscope,\n\t\t\t\tlistener,\n\t\t\t\tobjectEquality,\n\t\t\t\tparsedExpression\n\t\t\t) {\n\t\t\t\tvar unwatch = scope.$watch(\n\t\t\t\t\tfunction constantWatch(scope) {\n\t\t\t\t\t\tunwatch();\n\t\t\t\t\t\treturn parsedExpression(scope);\n\t\t\t\t\t},\n\t\t\t\t\tlistener,\n\t\t\t\t\tobjectEquality\n\t\t\t\t);\n\t\t\t\treturn unwatch;\n\t\t\t}\n\n\t\t\tfunction addInterceptor(parsedExpression, interceptorFn) {\n\t\t\t\tif (!interceptorFn) return parsedExpression;\n\t\t\t\tvar watchDelegate = parsedExpression.$$watchDelegate;\n\t\t\t\tvar useInputs = false;\n\n\t\t\t\tvar regularWatch =\n\t\t\t\t\twatchDelegate !== oneTimeLiteralWatchDelegate &&\n\t\t\t\t\twatchDelegate !== oneTimeWatchDelegate;\n\n\t\t\t\tvar fn = regularWatch\n\t\t\t\t\t? function regularInterceptedExpression(\n\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\tlocals,\n\t\t\t\t\t\t\tassign,\n\t\t\t\t\t\t\tinputs\n\t\t\t\t\t ) {\n\t\t\t\t\t\t\tvar value =\n\t\t\t\t\t\t\t\tuseInputs && inputs\n\t\t\t\t\t\t\t\t\t? inputs[0]\n\t\t\t\t\t\t\t\t\t: parsedExpression(scope, locals, assign, inputs);\n\t\t\t\t\t\t\treturn interceptorFn(value, scope, locals);\n\t\t\t\t\t }\n\t\t\t\t\t: function oneTimeInterceptedExpression(\n\t\t\t\t\t\t\tscope,\n\t\t\t\t\t\t\tlocals,\n\t\t\t\t\t\t\tassign,\n\t\t\t\t\t\t\tinputs\n\t\t\t\t\t ) {\n\t\t\t\t\t\t\tvar value = parsedExpression(scope, locals, assign, inputs);\n\t\t\t\t\t\t\tvar result = interceptorFn(value, scope, locals);\n\t\t\t\t\t\t\t// we only return the interceptor's result if the\n\t\t\t\t\t\t\t// initial value is defined (for bind-once)\n\t\t\t\t\t\t\treturn isDefined(value) ? result : value;\n\t\t\t\t\t };\n\n\t\t\t\t// Propagate $$watchDelegates other then inputsWatchDelegate\n\t\t\t\tuseInputs = !parsedExpression.inputs;\n\t\t\t\tif (\n\t\t\t\t\tparsedExpression.$$watchDelegate &&\n\t\t\t\t\tparsedExpression.$$watchDelegate !== inputsWatchDelegate\n\t\t\t\t) {\n\t\t\t\t\tfn.$$watchDelegate = parsedExpression.$$watchDelegate;\n\t\t\t\t\tfn.inputs = parsedExpression.inputs;\n\t\t\t\t} else if (!interceptorFn.$stateful) {\n\t\t\t\t\t// If there is an interceptor, but no watchDelegate then treat the interceptor like\n\t\t\t\t\t// we treat filters - it is assumed to be a pure function unless flagged with $stateful\n\t\t\t\t\tfn.$$watchDelegate = inputsWatchDelegate;\n\t\t\t\t\tfn.inputs = parsedExpression.inputs\n\t\t\t\t\t\t? parsedExpression.inputs\n\t\t\t\t\t\t: [parsedExpression];\n\t\t\t\t}\n\n\t\t\t\treturn fn;\n\t\t\t}\n\t\t},\n\t];\n}\n\nexports.Lexer = Lexer;\nexports.Parser = Parser;\n","\"use strict\";\n\nvar parse = require(\"./parse.js\");\n\nvar filters = {};\nvar Lexer = parse.Lexer;\nvar Parser = parse.Parser;\n/**\n * Compiles src and returns a function that executes src on a target object.\n * The compiled function is cached under compile.cache[src] to speed up further calls.\n *\n * @param {string} src\n * @returns {function}\n */\nfunction compile(src, lexerOptions) {\n\tlexerOptions = lexerOptions || {};\n\n\tvar cached;\n\n\tif (typeof src !== \"string\") {\n\t\tthrow new TypeError(\n\t\t\t\"src must be a string, instead saw '\" + typeof src + \"'\"\n\t\t);\n\t}\n\tvar parserOptions = {\n\t\tcsp: false, // noUnsafeEval,\n\t\tliterals: {\n\t\t\t// defined at: function $ParseProvider() {\n\t\t\ttrue: true,\n\t\t\tfalse: false,\n\t\t\tnull: null,\n\t\t\t/*eslint no-undefined: 0*/\n\t\t\tundefined: undefined,\n\t\t\t/* eslint: no-undefined: 1 */\n\t\t},\n\t};\n\n\tvar lexer = new Lexer(lexerOptions);\n\tvar parser = new Parser(\n\t\tlexer,\n\t\tfunction getFilter(name) {\n\t\t\treturn filters[name];\n\t\t},\n\t\tparserOptions\n\t);\n\n\tif (!compile.cache) {\n\t\treturn parser.parse(src);\n\t}\n\n\tcached = compile.cache[src];\n\tif (!cached) {\n\t\tcached = compile.cache[src] = parser.parse(src);\n\t}\n\n\treturn cached;\n}\n\n/**\n * A cache containing all compiled functions. The src is used as key.\n * Set this on false to disable the cache.\n *\n * @type {object}\n */\ncompile.cache = Object.create(null);\n\nexports.Lexer = Lexer;\nexports.Parser = Parser;\nexports.compile = compile;\nexports.filters = filters;\n","/**\n * Values I want to reference from anywhere\n * @typedef {Object} GlobalsObject\n * @property {State} state\n * @property {import(\"./data\").Data} data\n * @property {import(\"./components/actions\").Actions} actions\n * @property {TreeBase} tree\n * @property {import('./components/layout').Layout} layout\n * @property {import('./components/access/pattern').PatternList} patterns\n * @property {import('./components/access/cues').CueList} cues\n * @property {import('./components/access/method').MethodChooser} method\n * @property {import('./components/monitor').Monitor} monitor\n * @property {import('./components/toolbar').ToolBar} toolbar\n * @property {import('./components/designer').Designer} designer\n * @property {import('./components/errors').Messages} error\n * @property {function():Promise} restart\n */\n\n/** @type {GlobalsObject} */\n// @ts-ignore Object missing properties\nconst Globals = {}; // values are supplied in start.js\n\nexport default Globals;\n","import expressions from \"angular-expressions\";\nimport Globals from \"./globals\";\n\n/** @param {function(string, string): string} f */\nfunction updateString(f) {\n /** @param {string} value */\n return function (value) {\n /** @param {string | undefined} old */\n return function (old) {\n return f(old || \"\", value);\n };\n };\n}\n/** @param {function(number, number): number} f */\nfunction updateNumber(f) {\n /** @param {number} value */\n return function (value) {\n /** @param {number | undefined} old */\n return function (old) {\n return f(old || 0, value);\n };\n };\n}\nexport const Functions = {\n increment: updateNumber((old, value) => old + value),\n add_word: updateString((old, value) => old + value + \" \"),\n add_letter: updateString((old, value) => old + value),\n complete: updateString((old, value) => {\n if (old.length == 0 || old.endsWith(\" \")) {\n return old + value;\n } else {\n return old.replace(/\\w+$/, value);\n }\n }),\n replace_last: updateString((old, value) => old.replace(/\\w*\\s*$/, value)),\n replace_last_letter: updateString((old, value) => old.slice(0, -1) + value),\n random: (/** @type {string} */ arg) => {\n let args = arg.split(\",\");\n return args[Math.floor(Math.random() * args.length)];\n },\n max: Math.max,\n min: Math.min,\n if: (/** @type {boolean} */ c, /** @type {any} */ t, /** @type {any} */ f) =>\n c ? t : f,\n abs: (/** @type {number} */ v) => Math.abs(v),\n};\n\n/**\n * Translate an expression from Excel-like to Javascript\n *\n * @param {string} expression\n * @returns {string}\n */\nfunction translate(expression) {\n /* translate the expression from the excel like form to javascript */\n // remove any initial = sign\n let exp = expression.replace(/^=/, \"\");\n // translate single = to ==\n exp = exp.replaceAll(/(?!])=/g, \"==\");\n // translate words\n exp = exp.replaceAll(/(?}\n */\nexport const accessed = new Map();\n\n/* intercept access to variables so I can track access to undefined state and field values\n * and map them to empty strings.\n */\nconst variableHandler = {\n /** @param {Object} target\n * @param {string} prop\n */\n get(target, prop) {\n let result = undefined;\n if (prop.startsWith(\"$\")) {\n result = target.states[prop];\n accessed.set(prop, prop in target.states);\n } else if (prop.startsWith(\"_\")) {\n let ps = prop.slice(1);\n result = target.data[ps];\n accessed.set(prop, Globals.data.allFields.has(\"#\" + ps));\n } else if (prop in Functions) {\n result = Functions[prop];\n } else {\n console.error(\"undefined\", prop);\n }\n if (result === undefined || result === null) {\n result = \"\";\n }\n return result;\n },\n\n /** The expressions library is testing for own properties for safety.\n * I need to defeat that for the renaming I want to do.\n * @param {Object} target;\n * @param {string} prop;\n */\n getOwnPropertyDescriptor(target, prop) {\n if (prop.startsWith(\"$\")) {\n return Object.getOwnPropertyDescriptor(target.states, prop);\n } else if (prop.startsWith(\"_\")) {\n return Object.getOwnPropertyDescriptor(target.data, prop.slice(1));\n } else {\n return Object.getOwnPropertyDescriptor(Functions, prop);\n }\n },\n};\n\n/**\n * Compile an expression returning the function or an error\n * @param {string} expression\n * @returns {[ ((context?:Object)=>any ) | undefined, Error | undefined ]}\n *\n * */\nexport function compileExpression(expression) {\n const te = translate(expression);\n try {\n const exp = expressions.compile(te);\n /** @param {EvalContext} context */\n return [\n (context = {}) => {\n let states =\n \"states\" in context\n ? { ...Globals.state.values, ...context.states }\n : Globals.state.values;\n let data = context.data ?? [];\n const r = exp(\n new Proxy(\n {\n Functions,\n states,\n data,\n },\n variableHandler,\n ),\n );\n return r;\n },\n undefined,\n ];\n } catch (e) {\n return [undefined, e];\n }\n}\n","/*\n * Bang color names from http://www.procato.com/rgb+index/?csv\n */\nexport const ColorNames = {\n white: \"#ffffff\",\n red: \"#ff0000\",\n green: \"#00ff00\",\n blue: \"#0000ff\",\n yellow: \"#ffff00\",\n magenta: \"#ff00ff\",\n cyan: \"#00ffff\",\n black: \"#000000\",\n \"pinkish white\": \"#fff6f6\",\n \"very pale pink\": \"#ffe2e2\",\n \"pale pink\": \"#ffc2c2\",\n \"light pink\": \"#ff9e9e\",\n \"light brilliant red\": \"#ff6565\",\n \"luminous vivid red\": \"#ff0000\",\n \"pinkish gray\": \"#e7dada\",\n \"pale grayish pink\": \"#e7b8b8\",\n pink: \"#e78b8b\",\n \"brilliant red\": \"#e75151\",\n \"vivid red\": \"#e70000\",\n \"reddish gray\": \"#a89c9c\",\n \"grayish red\": \"#a87d7d\",\n \"moderate red\": \"#a84a4a\",\n \"strong red\": \"#a80000\",\n \"reddish brownish gray\": \"#595353\",\n \"dark grayish reddish brown\": \"#594242\",\n \"reddish brown\": \"#592727\",\n \"deep reddish brown\": \"#590000\",\n \"reddish brownish black\": \"#1d1a1a\",\n \"very reddish brown\": \"#1d1111\",\n \"very deep reddish brown\": \"#1d0000\",\n \"pale scarlet\": \"#ffc9c2\",\n \"very light scarlet\": \"#ffaa9e\",\n \"light brilliant scarlet\": \"#ff7865\",\n \"luminous vivid scarlet\": \"#ff2000\",\n \"light scarlet\": \"#e7968b\",\n \"brilliant scarlet\": \"#e76451\",\n \"vivid scarlet\": \"#e71d00\",\n \"moderate scarlet\": \"#a8554a\",\n \"strong scarlet\": \"#a81500\",\n \"dark scarlet\": \"#592d27\",\n \"deep scarlet\": \"#590b00\",\n \"very pale vermilion\": \"#ffe9e2\",\n \"pale vermilion\": \"#ffd1c2\",\n \"very light vermilion\": \"#ffb69e\",\n \"light brilliant vermilion\": \"#ff8b65\",\n \"luminous vivid vermilion\": \"#ff4000\",\n \"pale, light grayish vermilion\": \"#e7c4b8\",\n \"light vermilion\": \"#e7a28b\",\n \"brilliant vermilion\": \"#e77751\",\n \"vivid vermilion\": \"#e73a00\",\n \"grayish vermilion\": \"#a8887d\",\n \"moderate vermilion\": \"#a8614a\",\n \"strong vermilion\": \"#a82a00\",\n \"dark grayish vermilion\": \"#594842\",\n \"dark vermilion\": \"#593427\",\n \"deep vermilion\": \"#591600\",\n \"pale tangelo\": \"#ffd9c2\",\n \"very light tangelo\": \"#ffc29e\",\n \"light brilliant tangelo\": \"#ff9f65\",\n \"luminous vivid tangelo\": \"#ff6000\",\n \"light tangelo\": \"#e7ae8b\",\n \"brilliant tangelo\": \"#e78951\",\n \"vivid tangelo\": \"#e75700\",\n \"moderate tangelo\": \"#a86d4a\",\n \"strong tangelo\": \"#a83f00\",\n \"dark tangelo\": \"#593a27\",\n \"deep tangelo\": \"#592100\",\n \"very pale orange\": \"#fff0e2\",\n \"pale orange\": \"#ffe0c2\",\n \"very light orange\": \"#ffcf9e\",\n \"light brilliant orange\": \"#ffb265\",\n \"luminous vivid orange\": \"#ff8000\",\n \"pale, light grayish brown\": \"#e7d0b8\",\n \"light orange\": \"#e7b98b\",\n \"brilliant orange\": \"#e79c51\",\n \"vivid orange\": \"#e77400\",\n \"grayish brown\": \"#a8937d\",\n \"moderate orange\": \"#a8794a\",\n \"strong orange\": \"#a85400\",\n \"dark grayish brown\": \"#594e42\",\n brown: \"#594027\",\n \"deep brown\": \"#592d00\",\n \"very brown\": \"#1d1711\",\n \"very deep brown\": \"#1d0e00\",\n \"pale gamboge\": \"#ffe8c2\",\n \"very light gamboge\": \"#ffdb9e\",\n \"light brilliant gamboge\": \"#ffc565\",\n \"luminous vivid gamboge\": \"#ff9f00\",\n \"light gamboge\": \"#e7c58b\",\n \"brilliant gamboge\": \"#e7af51\",\n \"vivid gamboge\": \"#e79100\",\n \"moderate gamboge\": \"#a8854a\",\n \"strong gamboge\": \"#a86900\",\n \"dark gamboge\": \"#594627\",\n \"deep gamboge\": \"#593800\",\n \"very pale amber\": \"#fff8e2\",\n \"pale amber\": \"#fff0c2\",\n \"very light amber\": \"#ffe79e\",\n \"light brilliant amber\": \"#ffd865\",\n \"luminous vivid amber\": \"#ffbf00\",\n \"pale, light grayish amber\": \"#e7dcb8\",\n \"light amber\": \"#e7d08b\",\n \"brilliant amber\": \"#e7c251\",\n \"vivid amber\": \"#e7ae00\",\n \"grayish amber\": \"#a89e7d\",\n \"moderate amber\": \"#a8914a\",\n \"strong amber\": \"#a87e00\",\n \"dark grayish amber\": \"#595442\",\n \"dark amber\": \"#594d27\",\n \"deep amber\": \"#594300\",\n \"pale gold\": \"#fff7c2\",\n \"very light gold\": \"#fff39e\",\n \"light brilliant gold\": \"#ffec65\",\n \"luminous vivid gold\": \"#ffdf00\",\n \"light gold\": \"#e7dc8b\",\n \"brilliant gold\": \"#e7d551\",\n \"vivid gold\": \"#e7ca00\",\n \"moderate gold\": \"#a89c4a\",\n \"strong gold\": \"#a89300\",\n \"dark gold\": \"#595327\",\n \"deep gold\": \"#594e00\",\n \"yellowish white\": \"#fffff6\",\n \"very pale yellow\": \"#ffffe2\",\n \"pale yellow\": \"#ffffc2\",\n \"very light yellow\": \"#ffff9e\",\n \"light brilliant yellow\": \"#ffff65\",\n \"luminous vivid yellow\": \"#ffff00\",\n \"light yellowish gray\": \"#e7e7da\",\n \"pale, light grayish olive\": \"#e7e7b8\",\n \"light yellow\": \"#e7e78b\",\n \"brilliant yellow\": \"#e7e751\",\n \"vivid yellow\": \"#e7e700\",\n \"yellowish gray\": \"#a8a89c\",\n \"grayish olive\": \"#a8a87d\",\n \"moderate olive\": \"#a8a84a\",\n \"strong olive\": \"#a8a800\",\n \"dark olivish gray\": \"#595953\",\n \"dark grayish olive\": \"#595942\",\n \"dark olive\": \"#595927\",\n \"deep olive\": \"#595900\",\n \"yellowish black\": \"#1d1d1a\",\n \"very dark olive\": \"#1d1d11\",\n \"very deep olive\": \"#1d1d00\",\n \"pale apple green\": \"#f7ffc2\",\n \"very light apple green\": \"#f3ff9e\",\n \"light brilliant apple green\": \"#ecff65\",\n \"luminous vivid apple green\": \"#dfff00\",\n \"light apple green\": \"#dce78b\",\n \"brilliant apple green\": \"#d5e751\",\n \"vivid apple green\": \"#cae700\",\n \"moderate apple green\": \"#9ca84a\",\n \"strong apple green\": \"#93a800\",\n \"dark apple green\": \"#535927\",\n \"deep apple green\": \"#4e5900\",\n \"very pale lime green\": \"#f8ffe2\",\n \"pale lime green\": \"#f0ffc2\",\n \"very light lime green\": \"#e7ff9e\",\n \"light brilliant lime green\": \"#d8ff65\",\n \"luminous vivid lime green\": \"#bfff00\",\n \"pale, light grayish lime green\": \"#dce7b8\",\n \"light lime green\": \"#d0e78b\",\n \"brilliant lime green\": \"#c2e751\",\n \"vivid lime green\": \"#aee700\",\n \"grayish lime green\": \"#9ea87d\",\n \"moderate lime green\": \"#91a84a\",\n \"strong lime green\": \"#7ea800\",\n \"dark grayish lime green\": \"#545942\",\n \"dark lime green\": \"#4d5927\",\n \"deep lime green\": \"#435900\",\n \"pale spring bud\": \"#e8ffc2\",\n \"very light spring bud\": \"#dbff9e\",\n \"light brilliant spring bud\": \"#c5ff65\",\n \"luminous vivid spring bud\": \"#9fff00\",\n \"light spring bud\": \"#c5e78b\",\n \"brilliant spring bud\": \"#afe751\",\n \"vivid spring bud\": \"#91e700\",\n \"moderate spring bud\": \"#85a84a\",\n \"strong spring bud\": \"#69a800\",\n \"dark spring bud\": \"#465927\",\n \"deep spring bud\": \"#385900\",\n \"very pale chartreuse green\": \"#f0ffe2\",\n \"pale chartreuse green\": \"#e0ffc2\",\n \"very light chartreuse green\": \"#cfff9e\",\n \"light brilliant chartreuse green\": \"#b2ff65\",\n \"luminous vivid chartreuse green\": \"#80ff00\",\n \"pale, light grayish chartreuse green\": \"#d0e7b8\",\n \"light chartreuse green\": \"#b9e78b\",\n \"brilliant chartreuse green\": \"#9ce751\",\n \"vivid chartreuse green\": \"#74e700\",\n \"grayish chartreuse green\": \"#93a87d\",\n \"moderate chartreuse green\": \"#79a84a\",\n \"strong chartreuse green\": \"#54a800\",\n \"dark grayish chartreuse green\": \"#4e5942\",\n \"dark chartreuse green\": \"#405927\",\n \"deep chartreuse green\": \"#2d5900\",\n \"very dark chartreuse green\": \"#171d11\",\n \"very deep chartreuse green\": \"#0e1d00\",\n \"pale pistachio\": \"#d9ffc2\",\n \"very light pistachio\": \"#c2ff9e\",\n \"light brilliant pistachio\": \"#9fff65\",\n \"luminous vivid pistachio\": \"#60ff00\",\n \"light pistachio\": \"#aee78b\",\n \"brilliant pistachio\": \"#89e751\",\n \"vivid pistachio\": \"#57e700\",\n \"moderate pistachio\": \"#6da84a\",\n \"strong pistachio\": \"#3fa800\",\n \"dark pistachio\": \"#3a5927\",\n \"deep pistachio\": \"#215900\",\n \"very pale harlequin\": \"#e9ffe2\",\n \"pale harlequin\": \"#d1ffc2\",\n \"very light harlequin\": \"#b6ff9e\",\n \"light brilliant harlequin\": \"#8bff65\",\n \"luminous vivid harlequin\": \"#40ff00\",\n \"pale, light grayish harlequin\": \"#c4e7b8\",\n \"light harlequin\": \"#a2e78b\",\n \"brilliant harlequin\": \"#77e751\",\n \"vivid harlequin\": \"#3ae700\",\n \"grayish harlequin\": \"#88a87d\",\n \"moderate harlequin\": \"#61a84a\",\n \"strong harlequin\": \"#2aa800\",\n \"dark grayish harlequin\": \"#485942\",\n \"dark harlequin\": \"#345927\",\n \"deep harlequin\": \"#165900\",\n \"pale sap green\": \"#c9ffc2\",\n \"very light sap green\": \"#aaff9e\",\n \"light brilliant sap green\": \"#78ff65\",\n \"luminous vivid sap green\": \"#20ff00\",\n \"light sap green\": \"#96e78b\",\n \"brilliant sap green\": \"#64e751\",\n \"vivid sap green\": \"#1de700\",\n \"moderate sap green\": \"#55a84a\",\n \"strong sap green\": \"#15a800\",\n \"dark sap green\": \"#2d5927\",\n \"deep sap green\": \"#0b5900\",\n \"greenish white\": \"#f6fff6\",\n \"very pale green\": \"#e2ffe2\",\n \"pale green\": \"#c2ffc2\",\n \"very light green\": \"#9eff9e\",\n \"light brilliant green\": \"#65ff65\",\n \"luminous vivid green\": \"#00ff00\",\n \"light greenish gray\": \"#dae7da\",\n \"pale, light grayish green\": \"#b8e7b8\",\n \"light green\": \"#8be78b\",\n \"brilliant green\": \"#51e751\",\n \"vivid green\": \"#00e700\",\n \"greenish gray\": \"#9ca89c\",\n \"grayish green\": \"#7da87d\",\n \"moderate green\": \"#4aa84a\",\n \"strong green\": \"#00a800\",\n \"dark greenish gray\": \"#535953\",\n \"dark grayish green\": \"#425942\",\n \"dark green\": \"#275927\",\n \"deep green\": \"#005900\",\n \"greenish black\": \"#1a1d1a\",\n \"very dark green\": \"#111d11\",\n \"very deep green\": \"#001d00\",\n \"pale emerald green\": \"#c2ffc9\",\n \"very light emerald green\": \"#9effaa\",\n \"light brilliant emerald green\": \"#65ff78\",\n \"luminous vivid emerald green\": \"#00ff20\",\n \"light emerald green\": \"#8be796\",\n \"brilliant emerald green\": \"#51e764\",\n \"vivid emerald green\": \"#00e71d\",\n \"moderate emerald green\": \"#4aa855\",\n \"strong emerald green\": \"#00a815\",\n \"dark emerald green\": \"#27592d\",\n \"deep emerald green\": \"#00590b\",\n \"very pale malachite green\": \"#e2ffe9\",\n \"pale malachite green\": \"#c2ffd1\",\n \"very light malachite green\": \"#9effb6\",\n \"light brilliant malachite green\": \"#65ff8b\",\n \"luminous vivid malachite green\": \"#00ff40\",\n \"pale, light grayish malachite green\": \"#b8e7c4\",\n \"light malachite green\": \"#8be7a2\",\n \"brilliant malachite green\": \"#51e777\",\n \"vivid malachite green\": \"#00e73a\",\n \"grayish malachite green\": \"#7da888\",\n \"moderate malachite green\": \"#4aa861\",\n \"strong malachite green\": \"#00a82a\",\n \"dark grayish malachite green\": \"#425948\",\n \"dark malachite green\": \"#275934\",\n \"deep malachite green\": \"#005916\",\n \"pale sea green\": \"#c2ffd9\",\n \"very light sea green\": \"#9effc2\",\n \"light brilliant sea green\": \"#65ff9f\",\n \"luminous vivid sea green\": \"#00ff60\",\n \"light sea green\": \"#8be7ae\",\n \"brilliant sea green\": \"#51e789\",\n \"vivid sea green\": \"#00e757\",\n \"moderate sea green\": \"#4aa86d\",\n \"strong sea green\": \"#00a83f\",\n \"dark sea green\": \"#27593a\",\n \"deep sea green\": \"#005921\",\n \"very pale spring green\": \"#e2fff0\",\n \"pale spring green\": \"#c2ffe0\",\n \"very light spring green\": \"#9effcf\",\n \"light brilliant spring green\": \"#65ffb2\",\n \"luminous vivid spring green\": \"#00ff80\",\n \"pale, light grayish spring green\": \"#b8e7d0\",\n \"light spring green\": \"#8be7b9\",\n \"brilliant spring green\": \"#51e79c\",\n \"vivid spring green\": \"#00e774\",\n \"grayish spring green\": \"#7da893\",\n \"moderate spring green\": \"#4aa879\",\n \"strong spring green\": \"#00a854\",\n \"dark grayish spring green\": \"#42594e\",\n \"dark spring green\": \"#275940\",\n \"deep spring green\": \"#00592d\",\n \"very dark spring green\": \"#111d17\",\n \"very deep spring green\": \"#001d0e\",\n \"pale aquamarine\": \"#c2ffe8\",\n \"very light aquamarine\": \"#9effdb\",\n \"light brilliant aquamarine\": \"#65ffc5\",\n \"luminous vivid aquamarine\": \"#00ff9f\",\n \"light aquamarine\": \"#8be7c5\",\n \"brilliant aquamarine\": \"#51e7af\",\n \"vivid aquamarine\": \"#00e791\",\n \"moderate aquamarine\": \"#4aa885\",\n \"strong aquamarine\": \"#00a869\",\n \"dark aquamarine\": \"#275946\",\n \"deep aquamarine\": \"#005938\",\n \"very pale turquoise\": \"#e2fff8\",\n \"pale turquoise\": \"#c2fff0\",\n \"very light turquoise\": \"#9effe7\",\n \"light brilliant turquoise\": \"#65ffd8\",\n \"luminous vivid turquoise\": \"#00ffbf\",\n \"pale, light grayish turquoise\": \"#b8e7dc\",\n \"light turquoise\": \"#8be7d0\",\n \"brilliant turquoise\": \"#51e7c2\",\n \"vivid turquoise\": \"#00e7ae\",\n \"grayish turquoise\": \"#7da89e\",\n \"moderate turquoise\": \"#4aa891\",\n \"strong turquoise\": \"#00a87e\",\n \"dark grayish turquoise\": \"#425954\",\n \"dark turquoise\": \"#27594d\",\n \"deep turquoise\": \"#005943\",\n \"pale opal\": \"#c2fff7\",\n \"very light opal\": \"#9efff3\",\n \"light brilliant opal\": \"#65ffec\",\n \"luminous vivid opal\": \"#00ffdf\",\n \"light opal\": \"#8be7dc\",\n \"brilliant opal\": \"#51e7d5\",\n \"vivid opal\": \"#00e7ca\",\n \"moderate opal\": \"#4aa89c\",\n \"strong opal\": \"#00a893\",\n \"dark opal\": \"#275953\",\n \"deep opal\": \"#00594e\",\n \"cyanish white\": \"#f6ffff\",\n \"very pale cyan\": \"#e2ffff\",\n \"pale cyan\": \"#c2ffff\",\n \"very light cyan\": \"#9effff\",\n \"light brilliant cyan\": \"#65ffff\",\n \"luminous vivid cyan\": \"#00ffff\",\n \"light cyanish gray\": \"#dae7e7\",\n \"pale, light grayish cyan\": \"#b8e7e7\",\n \"light cyan\": \"#8be7e7\",\n \"brilliant cyan\": \"#51e7e7\",\n \"vivid cyan\": \"#00e7e7\",\n \"cyanish gray\": \"#9ca8a8\",\n \"grayish cyan\": \"#7da8a8\",\n \"moderate cyan\": \"#4aa8a8\",\n \"strong cyan\": \"#00a8a8\",\n \"dark cyanish gray\": \"#535959\",\n \"dark grayish cyan\": \"#425959\",\n \"dark cyan\": \"#275959\",\n \"deep cyan\": \"#005959\",\n \"cyanish black\": \"#1a1d1d\",\n \"very dark cyan\": \"#111d1d\",\n \"very deep cyan\": \"#001d1d\",\n \"pale arctic blue\": \"#c2f7ff\",\n \"very light arctic blue\": \"#9ef3ff\",\n \"light brilliant arctic blue\": \"#65ecff\",\n \"luminous vivid arctic blue\": \"#00dfff\",\n \"light arctic blue\": \"#8bdce7\",\n \"brilliant arctic blue\": \"#51d5e7\",\n \"vivid arctic blue\": \"#00cae7\",\n \"moderate arctic blue\": \"#4a9ca8\",\n \"strong arctic blue\": \"#0093a8\",\n \"dark arctic blue\": \"#275359\",\n \"deep arctic blue\": \"#004e59\",\n \"very pale cerulean\": \"#e2f8ff\",\n \"pale cerulean\": \"#c2f0ff\",\n \"very light cerulean\": \"#9ee7ff\",\n \"light brilliant cerulean\": \"#65d8ff\",\n \"luminous vivid cerulean\": \"#00bfff\",\n \"pale, light grayish cerulean\": \"#b8dce7\",\n \"light cerulean\": \"#8bd0e7\",\n \"brilliant cerulean\": \"#51c2e7\",\n \"vivid cerulean\": \"#00aee7\",\n \"grayish cerulean\": \"#7d9ea8\",\n \"moderate cerulean\": \"#4a91a8\",\n \"strong cerulean\": \"#007ea8\",\n \"dark grayish cerulean\": \"#425459\",\n \"dark cerulean\": \"#274d59\",\n \"deep cerulean\": \"#004359\",\n \"pale cornflower blue\": \"#c2e8ff\",\n \"very light cornflower blue\": \"#9edbff\",\n \"light brilliant cornflower blue\": \"#65c5ff\",\n \"luminous vivid cornflower blue\": \"#009fff\",\n \"light cornflower blue\": \"#8bc5e7\",\n \"brilliant cornflower blue\": \"#51afe7\",\n \"vivid cornflower blue\": \"#0091e7\",\n \"moderate cornflower blue\": \"#4a85a8\",\n \"strong cornflower blue\": \"#0069a8\",\n \"dark cornflower blue\": \"#274659\",\n \"deep cornflower blue\": \"#003859\",\n \"very pale azure\": \"#e2f0ff\",\n \"pale azure\": \"#c2e0ff\",\n \"very light azure\": \"#9ecfff\",\n \"light brilliant azure\": \"#65b2ff\",\n \"luminous vivid azure\": \"#0080ff\",\n \"pale, light grayish azure\": \"#b8d0e7\",\n \"light azure\": \"#8bb9e7\",\n \"brilliant azure\": \"#519ce7\",\n \"vivid azure\": \"#0074e7\",\n \"grayish azure\": \"#7d93a8\",\n \"moderate azure\": \"#4a79a8\",\n \"strong azure\": \"#0054a8\",\n \"dark grayish azure\": \"#424e59\",\n \"dark azure\": \"#274059\",\n \"deep azure\": \"#002d59\",\n \"very dark azure\": \"#11171d\",\n \"very deep azure\": \"#000e1d\",\n \"pale cobalt blue\": \"#c2d9ff\",\n \"very light cobalt blue\": \"#9ec2ff\",\n \"light brilliant cobalt blue\": \"#659fff\",\n \"luminous vivid cobalt blue\": \"#0060ff\",\n \"light cobalt blue\": \"#8baee7\",\n \"brilliant cobalt blue\": \"#5189e7\",\n \"vivid cobalt blue\": \"#0057e7\",\n \"moderate cobalt blue\": \"#4a6da8\",\n \"strong cobalt blue\": \"#003fa8\",\n \"dark cobalt blue\": \"#273a59\",\n \"deep cobalt blue\": \"#002159\",\n \"very pale sapphire blue\": \"#e2e9ff\",\n \"pale sapphire blue\": \"#c2d1ff\",\n \"very light sapphire blue\": \"#9eb6ff\",\n \"light brilliant sapphire blue\": \"#658bff\",\n \"luminous vivid sapphire blue\": \"#0040ff\",\n \"pale, light grayish sapphire blue\": \"#b8c4e7\",\n \"light sapphire blue\": \"#8ba2e7\",\n \"brilliant sapphire blue\": \"#5177e7\",\n \"vivid sapphire blue\": \"#003ae7\",\n \"grayish sapphire blue\": \"#7d88a8\",\n \"moderate sapphire blue\": \"#4a61a8\",\n \"strong sapphire blue\": \"#002aa8\",\n \"dark grayish sapphire blue\": \"#424859\",\n \"dark sapphire blue\": \"#273459\",\n \"deep sapphire blue\": \"#001659\",\n \"pale phthalo blue\": \"#c2c9ff\",\n \"very light phthalo blue\": \"#9eaaff\",\n \"light brilliant phthalo blue\": \"#6578ff\",\n \"luminous vivid phthalo blue\": \"#0020ff\",\n \"light phthalo blue\": \"#8b96e7\",\n \"brilliant phthalo blue\": \"#5164e7\",\n \"vivid phthalo blue\": \"#001de7\",\n \"moderate phthalo blue\": \"#4a55a8\",\n \"strong phthalo blue\": \"#0015a8\",\n \"dark phthalo blue\": \"#272d59\",\n \"deep phthalo blue\": \"#000b59\",\n \"bluish white\": \"#f6f6ff\",\n \"very pale blue\": \"#e2e2ff\",\n \"pale blue\": \"#c2c2ff\",\n \"very light blue\": \"#9e9eff\",\n \"light brilliant blue\": \"#6565ff\",\n \"luminous vivid blue\": \"#0000ff\",\n \"light bluish gray\": \"#dadae7\",\n \"pale, light grayish blue\": \"#b8b8e7\",\n \"light blue\": \"#8b8be7\",\n \"brilliant blue\": \"#5151e7\",\n \"vivid blue\": \"#0000e7\",\n \"bluish gray\": \"#9c9ca8\",\n \"grayish blue\": \"#7d7da8\",\n \"moderate blue\": \"#4a4aa8\",\n \"strong blue\": \"#0000a8\",\n \"dark bluish gray\": \"#535359\",\n \"dark grayish blue\": \"#424259\",\n \"dark blue\": \"#272759\",\n \"deep blue\": \"#000059\",\n \"bluish black\": \"#1a1a1d\",\n \"very dark blue\": \"#11111d\",\n \"very deep blue\": \"#00001d\",\n \"pale persian blue\": \"#c9c2ff\",\n \"very light persian blue\": \"#aa9eff\",\n \"light brilliant persian blue\": \"#7865ff\",\n \"luminous vivid persian blue\": \"#2000ff\",\n \"light persian blue\": \"#968be7\",\n \"brilliant persian blue\": \"#6451e7\",\n \"vivid persian blue\": \"#1d00e7\",\n \"moderate persian blue\": \"#554aa8\",\n \"strong persian blue\": \"#1500a8\",\n \"dark persian blue\": \"#2d2759\",\n \"deep persian blue\": \"#0b0059\",\n \"very pale indigo\": \"#e9e2ff\",\n \"pale indigo\": \"#d1c2ff\",\n \"very light indigo\": \"#b69eff\",\n \"light brilliant indigo\": \"#8b65ff\",\n \"luminous vivid indigo\": \"#4000ff\",\n \"pale, light grayish indigo\": \"#c4b8e7\",\n \"light indigo\": \"#a28be7\",\n \"brilliant indigo\": \"#7751e7\",\n \"vivid indigo\": \"#3a00e7\",\n \"grayish indigo\": \"#887da8\",\n \"moderate indigo\": \"#614aa8\",\n \"strong indigo\": \"#2a00a8\",\n \"dark grayish indigo\": \"#484259\",\n \"dark indigo\": \"#342759\",\n \"deep indigo\": \"#160059\",\n \"pale blue violet\": \"#d9c2ff\",\n \"very light blue violet\": \"#c29eff\",\n \"light brilliant blue violet\": \"#9f65ff\",\n \"luminous vivid blue violet\": \"#6000ff\",\n \"light blue violet\": \"#ae8be7\",\n \"brilliant blue violet\": \"#8951e7\",\n \"vivid blue violet\": \"#5700e7\",\n \"moderate blue violet\": \"#6d4aa8\",\n \"strong blue violet\": \"#3f00a8\",\n \"dark blue violet\": \"#3a2759\",\n \"deep blue violet\": \"#210059\",\n \"very pale violet\": \"#f0e2ff\",\n \"pale violet\": \"#e0c2ff\",\n \"very light violet\": \"#cf9eff\",\n \"light brilliant violet\": \"#b265ff\",\n \"luminous vivid violet\": \"#8000ff\",\n \"pale, light grayish violet\": \"#d0b8e7\",\n \"light violet\": \"#b98be7\",\n \"brilliant violet\": \"#9c51e7\",\n \"vivid violet\": \"#7400e7\",\n \"grayish violet\": \"#937da8\",\n \"moderate violet\": \"#794aa8\",\n \"strong violet\": \"#5400a8\",\n \"dark grayish violet\": \"#4e4259\",\n \"dark violet\": \"#402759\",\n \"deep violet\": \"#2d0059\",\n \"very dark violet\": \"#17111d\",\n \"very deep violet\": \"#0e001d\",\n \"pale purple\": \"#e8c2ff\",\n \"very light purple\": \"#db9eff\",\n \"light brilliant purple\": \"#c565ff\",\n \"luminous vivid purple\": \"#9f00ff\",\n \"light purple\": \"#c58be7\",\n \"brilliant purple\": \"#af51e7\",\n \"vivid purple\": \"#9100e7\",\n \"moderate purple\": \"#854aa8\",\n \"strong purple\": \"#6900a8\",\n \"dark purple\": \"#462759\",\n \"deep purple\": \"#380059\",\n \"very pale mulberry\": \"#f8e2ff\",\n \"pale mulberry\": \"#f0c2ff\",\n \"very light mulberry\": \"#e79eff\",\n \"light brilliant mulberry\": \"#d865ff\",\n \"luminous vivid mulberry\": \"#bf00ff\",\n \"pale, light grayish mulberry\": \"#dcb8e7\",\n \"light mulberry\": \"#d08be7\",\n \"brilliant mulberry\": \"#c251e7\",\n \"vivid mulberry\": \"#ae00e7\",\n \"grayish mulberry\": \"#9e7da8\",\n \"moderate mulberry\": \"#914aa8\",\n \"strong mulberry\": \"#7e00a8\",\n \"dark grayish mulberry\": \"#544259\",\n \"dark mulberry\": \"#4d2759\",\n \"deep mulberry\": \"#430059\",\n \"pale heliotrope\": \"#f7c2ff\",\n \"very light heliotrope\": \"#f39eff\",\n \"light brilliant heliotrope\": \"#ec65ff\",\n \"luminous vivid heliotrope\": \"#df00ff\",\n \"light heliotrope\": \"#dc8be7\",\n \"brilliant heliotrope\": \"#d551e7\",\n \"vivid heliotrope\": \"#ca00e7\",\n \"moderate heliotrope\": \"#9c4aa8\",\n \"strong heliotrope\": \"#9300a8\",\n \"dark heliotrope\": \"#532759\",\n \"deep heliotrope\": \"#4e0059\",\n \"magentaish white\": \"#fff6ff\",\n \"very pale magenta\": \"#ffe2ff\",\n \"pale magenta\": \"#ffc2ff\",\n \"very light magenta\": \"#ff9eff\",\n \"light brilliant magenta\": \"#ff65ff\",\n \"luminous vivid magenta\": \"#ff00ff\",\n \"light magentaish gray\": \"#e7dae7\",\n \"pale, light grayish magenta\": \"#e7b8e7\",\n \"light magenta\": \"#e78be7\",\n \"brilliant magenta\": \"#e751e7\",\n \"vivid magenta\": \"#e700e7\",\n \"magentaish gray\": \"#a89ca8\",\n \"grayish magenta\": \"#a87da8\",\n \"moderate magenta\": \"#a84aa8\",\n \"strong magenta\": \"#a800a8\",\n \"dark magentaish gray\": \"#595359\",\n \"dark grayish magenta\": \"#594259\",\n \"dark magenta\": \"#592759\",\n \"deep magenta\": \"#590059\",\n \"magentaish black\": \"#1d1a1d\",\n \"very dark magenta\": \"#1d111d\",\n \"very deep magenta\": \"#1d001d\",\n \"pale orchid\": \"#ffc2f7\",\n \"very light orchid\": \"#ff9ef3\",\n \"light brilliant orchid\": \"#ff65ec\",\n \"luminous vivid orchid\": \"#ff00df\",\n \"light orchid\": \"#e78bdc\",\n \"brilliant orchid\": \"#e751d5\",\n \"vivid orchid\": \"#e700ca\",\n \"moderate orchid\": \"#a84a9c\",\n \"strong orchid\": \"#a80093\",\n \"dark orchid\": \"#592753\",\n \"deep orchid\": \"#59004e\",\n \"very pale fuchsia\": \"#ffe2f8\",\n \"pale fuchsia\": \"#ffc2f0\",\n \"very light fuchsia\": \"#ff9ee7\",\n \"light brilliant fuchsia\": \"#ff65d8\",\n \"luminous vivid fuchsia\": \"#ff00bf\",\n \"pale, light grayish fuchsia\": \"#e7b8dc\",\n \"light fuchsia\": \"#e78bd0\",\n \"brilliant fuchsia\": \"#e751c2\",\n \"vivid fuchsia\": \"#e700ae\",\n \"grayish fuchsia\": \"#a87d9e\",\n \"moderate fuchsia\": \"#a84a91\",\n \"strong fuchsia\": \"#a8007e\",\n \"dark grayish fuchsia\": \"#594254\",\n \"dark fuchsia\": \"#59274d\",\n \"deep fuchsia\": \"#590043\",\n \"pale cerise\": \"#ffc2e8\",\n \"very light cerise\": \"#ff9edb\",\n \"light brilliant cerise\": \"#ff65c5\",\n \"luminous vivid cerise\": \"#ff009f\",\n \"light cerise\": \"#e78bc5\",\n \"brilliant cerise\": \"#e751af\",\n \"vivid cerise\": \"#e70091\",\n \"moderate cerise\": \"#a84a85\",\n \"strong cerise\": \"#a80069\",\n \"dark cerise\": \"#592746\",\n \"deep cerise\": \"#590038\",\n \"very pale rose\": \"#ffe2f0\",\n \"pale rose\": \"#ffc2e0\",\n \"very light rose\": \"#ff9ecf\",\n \"light brilliant rose\": \"#ff65b2\",\n \"luminous vivid rose\": \"#ff0080\",\n \"pale, light grayish rose\": \"#e7b8d0\",\n \"light rose\": \"#e78bb9\",\n \"brilliant rose\": \"#e7519c\",\n \"vivid rose\": \"#e70074\",\n \"grayish rose\": \"#a87d93\",\n \"moderate rose\": \"#a84a79\",\n \"strong rose\": \"#a80054\",\n \"dark grayish rose\": \"#59424e\",\n \"dark rose\": \"#592740\",\n \"deep rose\": \"#59002d\",\n \"very dark rose\": \"#1d1117\",\n \"very deep rose\": \"#1d000e\",\n \"pale raspberry\": \"#ffc2d9\",\n \"very light raspberry\": \"#ff9ec2\",\n \"light brilliant raspberry\": \"#ff659f\",\n \"luminous vivid raspberry\": \"#ff0060\",\n \"light raspberry\": \"#e78bae\",\n \"brilliant raspberry\": \"#e75189\",\n \"vivid raspberry\": \"#e70057\",\n \"moderate raspberry\": \"#a84a6d\",\n \"strong raspberry\": \"#a8003f\",\n \"dark raspberry\": \"#59273a\",\n \"deep raspberry\": \"#590021\",\n \"very pale crimson\": \"#ffe2e9\",\n \"pale crimson\": \"#ffc2d1\",\n \"very light crimson\": \"#ff9eb6\",\n \"light brilliant crimson\": \"#ff658b\",\n \"luminous vivid crimson\": \"#ff0040\",\n \"pale, light grayish crimson\": \"#e7b8c4\",\n \"light crimson\": \"#e78ba2\",\n \"brilliant crimson\": \"#e75177\",\n \"vivid crimson\": \"#e7003a\",\n \"grayish crimson\": \"#a87d88\",\n \"moderate crimson\": \"#a84a61\",\n \"strong crimson\": \"#a8002a\",\n \"dark grayish crimson\": \"#594248\",\n \"dark crimson\": \"#592734\",\n \"deep crimson\": \"#590016\",\n \"pale amaranth\": \"#ffc2c9\",\n \"very light amaranth\": \"#ff9eaa\",\n \"light brilliant amaranth\": \"#ff6578\",\n \"luminous vivid amaranth\": \"#ff0020\",\n \"light amaranth\": \"#e78b96\",\n \"brilliant amaranth\": \"#e75164\",\n \"vivid amaranth\": \"#e7001d\",\n \"moderate amaranth\": \"#a84a55\",\n \"strong amaranth\": \"#a80015\",\n \"dark amaranth\": \"#59272d\",\n \"deep amaranth\": \"#59000b\",\n};\n","import { html } from \"uhtml\";\nimport { ColorNames } from \"./color-names\";\n\n/** @param {Event & { target: HTMLInputElement }} event\n */\nexport function validateColor(event) {\n const input = event.target;\n if (!isValidColor(input.value)) {\n input.setCustomValidity(\"invalid color\");\n input.reportValidity();\n return false;\n } else {\n input.setCustomValidity(\"\");\n const div = /** @type {HTMLElement} */ (input.nextElementSibling);\n div.style.background = getColor(input.value);\n return true;\n }\n}\n\n/** @param {string} strColor */\nexport function isValidColor(strColor) {\n if (strColor.length == 0 || strColor in ColorNames) {\n return true;\n }\n var s = new Option().style;\n s.color = strColor;\n\n // return 'false' if color wasn't assigned\n return s.color !== \"\";\n}\n\n/** @param {string} name */\nexport function getColor(name) {\n return ColorNames[name] || name;\n}\n\n/** @param {Partial} style */\nfunction normalizeStyle(style) {\n return Object.fromEntries(\n Object.entries(style)\n .filter(([_, value]) => value && value.toString().length)\n .map(([key, value]) =>\n key.toLowerCase().indexOf(\"color\") >= 0\n ? [key, getColor(/** @type {string} */ (value))]\n : [key, value && value.toString()],\n ),\n );\n}\n\n/** @param {HTMLElement} element\n * @param {Partial} styles */\nexport function setStyle(element, styles) {\n Object.assign(element.style, normalizeStyle(styles));\n}\n\n/** @param {Partial} styles */\nexport function styleString(styles) {\n return Object.entries(normalizeStyle(styles)).reduce(\n (acc, [key, value]) =>\n acc +\n key\n .split(/(?=[A-Z])/)\n .join(\"-\")\n .toLowerCase() +\n \":\" +\n value +\n \";\",\n \"\",\n );\n}\n\nexport function colorNamesDataList() {\n return html`\n ${Object.keys(ColorNames).map((name) => html``;\n}\n","/* Thinking about better properties */\n\nimport { html } from \"uhtml\";\nimport \"css/props.css\";\nimport { compileExpression } from \"app/eval\";\nimport Globals from \"app/globals\";\nimport { TreeBaseSwitchable } from \"./treebase\";\nimport { getColor, isValidColor, styleString } from \"./style\";\n\n/**\n * @typedef {Object} PropOptions\n * @property {boolean} [hiddenLabel]\n * @property {string} [placeholder]\n * @property {string} [title]\n * @property {string} [label]\n * @property {string} [defaultValue]\n * @property {string} [group]\n * @property {string} [language]\n * @property {any} [valueWhenEmpty]\n * @property {string} [pattern]\n * @property {function(string):string} [validate]\n * @property {string} [inputmode]\n * @property {string} [datalist]\n * @property {number} [min]\n * @property {number} [max]\n */\n\n/**\n * @template {number|boolean|string} T\n */\nexport class Prop {\n label = \"\";\n /** @type {T} */\n _value;\n\n /** true if this is a formula without leading = */\n isFormulaByDefault = false;\n\n /** If the entered value starts with = treat it as an expression and store it here */\n formula = \"\";\n\n /** @type {((context?:EvalContext)=>any) | undefined} compiled expression if any */\n compiled = undefined;\n\n // Each prop gets a unique id based on the id of its container\n id = \"\";\n\n /** @type {TreeBase} */\n container;\n\n /** attach the prop to its containing TreeBase component\n * @param {string} name\n * @param {any} value\n * @param {TreeBase} container\n * */\n initialize(name, value, container) {\n // create id from the container id\n this.id = `${container.id}-${name}`;\n // link to the container\n this.container = container;\n // set the value if provided\n if (value != undefined) {\n this.set(value);\n }\n // create a label if it has none\n this.label =\n this.label ||\n name // convert from camelCase to Camel Case\n .replace(/(?!^)([A-Z])/g, \" $1\")\n .replace(/^./, (s) => s.toUpperCase());\n }\n\n /** @type {PropOptions} */\n options = {};\n\n /**\n * @param {T} value\n * @param {PropOptions} options */\n constructor(value, options = {}) {\n this._value = value;\n this.options = options;\n if (options.label) {\n this.label = options.label;\n }\n }\n validate = debounce(\n (/** @type {string} */ value, /** @type {HTMLInputElement} */ input) => {\n input.setCustomValidity(\"\");\n if (this.isFormulaByDefault || value.startsWith(\"=\")) {\n const [compiled, error] = compileExpression(value);\n if (error) {\n let message = error.message.replace(/^\\[.*?\\]/, \"\");\n message = message.split(\"\\n\")[0];\n input.setCustomValidity(message);\n } else if (compiled && this.options.validate)\n input.setCustomValidity(this.options.validate(\"\" + compiled({})));\n } else if (this.options.validate) {\n input.setCustomValidity(this.options.validate(value));\n }\n input.reportValidity();\n },\n 100,\n );\n\n input() {\n const text = this.text;\n return this.labeled(\n html`${this.showValue()}`,\n );\n }\n onkeydown = (/** @type {KeyboardEvent} */ event) => {\n // restore the input on Escape\n const { key, target } = event;\n if (key == \"Escape\" && target instanceof HTMLInputElement) {\n const text = this.text;\n this.validate(text, target);\n event.preventDefault();\n target.value = text;\n }\n };\n oninput = (/** @type {InputEvent} */ event) => {\n // validate on each character\n if (event.target instanceof HTMLInputElement) {\n this.validate(event.target.value, event.target);\n event.target.style.width = `${event.target.value.length + 1}ch`;\n }\n };\n onchange = (/** @type {InputEvent} */ event) => {\n if (\n event.target instanceof HTMLInputElement &&\n event.target.checkValidity()\n ) {\n this.set(event.target.value);\n this.update();\n }\n };\n onfocus = (/** @type {FocusEvent}*/ event) => {\n if (this.formula && event.target instanceof HTMLInputElement) {\n const span = event.target.nextElementSibling;\n if (span instanceof HTMLSpanElement) {\n const value = this.value;\n const type = typeof value;\n let text = \"\";\n if (type === \"string\" || type === \"number\" || type === \"boolean\") {\n text = \"\" + value;\n }\n span.innerText = text;\n }\n }\n };\n\n showValue() {\n return this.formula ? [html``] : [];\n }\n\n /** @param {Hole} body */\n labeled(body) {\n return html`\n
    `,\n ];\n }\n}\n\n/** @extends {Prop} */\nexport class Voice extends Prop {\n /** @param {string} value\n * @param {PropOptions} options\n */\n constructor(value = \"\", options = {}) {\n super(value, options);\n }\n\n input() {\n return this.labeled(\n html` {\n this._value = event.target.value;\n this.update();\n }}\n >\n \n `,\n );\n }\n}\n/** @extends {Prop} */\nexport class ADate extends Prop {\n /** @param {string} value\n * @param {PropOptions} options\n */\n constructor(value = \"\", options = {}) {\n super(value, options);\n }\n\n input() {\n return this.labeled(\n html` {\n this._value = event.target.value;\n this.update();\n }}\n />`,\n );\n }\n}\n\n/**\n * @template {unknown[]} T\n * @param {(...args: T)=>void} callback\n * @param {number} wait\n * @returns {(...args: T)=>void}\n * */\nconst debounce = (callback, wait) => {\n let timeoutId = null;\n return (...args) => {\n window.clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => {\n callback(...args);\n }, wait);\n };\n};\n","/*! (c) Andrea Giammarchi */\n\nconst {iterator} = Symbol;\n\nconst noop = () => {};\n\n/**\n * A Map extend that transparently uses WeakRef around its values,\n * providing a way to observe their collection at distance.\n * @extends {Map}\n */\nclass WeakValue extends Map {\n #delete = (key, ref) => {\n super.delete(key);\n this.#registry.unregister(ref);\n };\n\n #get = (key, [ref, onValueCollected]) => {\n const value = ref.deref();\n if (!value) {\n this.#delete(key, ref);\n onValueCollected(key, this);\n }\n return value;\n }\n\n #registry = new FinalizationRegistry(key => {\n const pair = super.get(key);\n if (pair) {\n super.delete(key);\n pair[1](key, this);\n }\n });\n\n constructor(iterable) {\n super();\n if (iterable)\n for (const [key, value] of iterable)\n this.set(key, value);\n }\n\n clear() {\n for (const [_, [ref]] of super[iterator]())\n this.#registry.unregister(ref);\n super.clear();\n }\n\n delete(key) {\n const pair = super.get(key);\n return !!pair && !this.#delete(key, pair[0]);\n }\n\n forEach(callback, context) {\n for (const [key, value] of this)\n callback.call(context, value, key, this);\n }\n\n get(key) {\n const pair = super.get(key);\n return pair && this.#get(key, pair);\n }\n\n has(key) {\n return !!this.get(key);\n }\n\n set(key, value, onValueCollected = noop) {\n super.delete(key);\n const ref = new WeakRef(value);\n this.#registry.register(value, key, ref);\n return super.set(key, [ref, onValueCollected]);\n }\n\n *[iterator]() {\n for (const [key, pair] of super[iterator]()) {\n const value = this.#get(key, pair);\n if (value)\n yield [key, value];\n }\n }\n\n *entries() {\n yield *this[iterator]();\n }\n\n *values() {\n for (const [_, value] of this[iterator]())\n yield value;\n }\n}\n\nexport default WeakValue;\n","/**\n * Create an object that is persisted to sessionStorage\n *\n * @template {Object} T\n * @param {string} key\n * @param {T} initial\n * @returns {T} - same type as the initial value\n */\nexport function session(key, initial) {\n // import values from storage if present\n const json = window.sessionStorage.getItem(key);\n if (json) {\n const values = JSON.parse(json);\n if (!(values instanceof Object)) throw TypeError();\n // validate the value from storage\n if (sameObjectShape(initial, values)) initial = values;\n }\n if (!(initial instanceof Object)) throw TypeError();\n return new Proxy(initial, {\n set(obj, prop, value) {\n const r = Reflect.set(obj, prop, value);\n const json = JSON.stringify(obj);\n window.sessionStorage.setItem(key, json);\n return r;\n },\n });\n}\n\n/**\n * Compare objects to see if they have the same keys and types\n * @param {Object} a\n * @param {Object} b\n * @returns {boolean}\n */\nfunction sameObjectShape(a, b) {\n for (const key of Object.keys(a)) {\n if (typeof a[key] !== typeof b[key]) return false;\n }\n return true;\n}\n","/**\n * Provide user friendly names for the components\n */\n\n/**\n * Map the classname into the Menu name and the Help Wiki page name\n */\nconst namesMap = {\n Action: [\"Action\", \"Actions\"],\n ActionCondition: [\"Condition\", \"Actions#Condition\"],\n Actions: [\"Actions\", \"Actions\"],\n ActionUpdate: [\"Update\", \"Actions#Update\"],\n Audio: [\"Audio\", \"Audio\"],\n Button: [\"Button\", \"Button\"],\n Content: [\"Content\", \"Content\"],\n CueCircle: [\"Circle\", \"Cues\"],\n CueCss: [\"CSS\", \"Cues#CSS\"],\n CueFill: [\"Fill\", \"Cues#Fill\"],\n CueList: [\"Cues\", \"Cues\"],\n CueOverlay: [\"Overlay\", \"Cues#Overlay\"],\n Customize: [\"Customize\", \"Customize\"],\n Designer: [\"Designer\", \"Designer\"],\n Display: [\"Display\", \"Display\"],\n Filter: [\"Filter\", \"Patterns#Filter\"],\n Gap: [\"Gap\", \"Gap\"],\n Grid: [\"Grid\", \"Grid\"],\n GridFilter: [\"Filter\", \"Grid#Filter\"],\n GroupBy: [\"Group By\", \"Patterns#Group By\"],\n HandlerCondition: [\"Condition\", \"Methods#Condition\"],\n HandlerKeyCondition: [\"Key Condition\", \"Methods#Key Condition\"],\n HandlerResponse: [\"Response\", \"Methods#Response\"],\n HeadMouse: [\"Head Mouse\", \"Head Mouse\"],\n KeyHandler: [\"Key Handler\", \"Methods#Key Handler\"],\n Layout: [\"Layout\", \"Layout\"],\n Logger: [\"Logger\", \"Logger\"],\n Method: [\"Method\", \"Methods\"],\n MethodChooser: [\"Methods\", \"Methods\"],\n ModalDialog: [\"Modal Dialog\", \"Modal Dialog\"],\n Option: [\"Option\", \"Radio#Option\"],\n OrderBy: [\"Order By\", \"Patterns#Order By\"],\n Page: [\"Page\", \"Page\"],\n PatternGroup: [\"Group\", \"Patterns\"],\n PatternList: [\"Patterns\", \"Patterns\"],\n PatternManager: [\"Pattern\", \"Patterns\"],\n PatternSelector: [\"Selector\", \"Patterns\"],\n PointerHandler: [\"Pointer Handler\", \"Methods#Pointer Handler\"],\n Radio: [\"Radio\", \"Radio\"],\n ResponderActivate: [\"Activate\", \"Methods#Activate\"],\n ResponderCue: [\"Cue\", \"Methods#Cue\"],\n ResponderClearCue: [\"Clear Cue\", \"Methods#Clear Cue\"],\n ResponderEmit: [\"Emit\", \"Methods#Emit\"],\n ResponderNext: [\"Next\", \"Methods#Next\"],\n ResponderStartTimer: [\"Start Timer\", \"Methods\"],\n SocketHandler: [\"Socket Handler\", \"Methods#Socket Handler\"],\n Speech: [\"Speech\", \"Speech\"],\n Stack: [\"Stack\", \"Stack\"],\n TabControl: [\"Tab Control\", \"Tab Control\"],\n TabPanel: [\"Tab\", \"Tab\"],\n Timer: [\"Timer\", \"Methods#Timer\"],\n TimerHandler: [\"Timer Handler\", \"Methods#Timer Handler\"],\n VSD: [\"VSD\", \"VSD\"],\n};\n\n/**\n * Get the name for a menu item from the class name\n * @param {string} className\n */\nexport function friendlyName(className) {\n return className in namesMap ? namesMap[className][0] : className;\n}\n\n/**\n * Get the Wiki name from the class name\n * @param {string} className\n */\nexport function wikiName(className) {\n return namesMap[className][1].replace(\" \", \"-\");\n}\n","import { html } from \"uhtml\";\nimport * as Props from \"./props\";\nimport \"css/treebase.css\";\nimport WeakValue from \"weak-value\";\nimport { styleString } from \"./style\";\nimport { session } from \"./persist\";\nimport { errorHandler } from \"./errors\";\nimport { friendlyName } from \"./names\";\n\nexport class TreeBase {\n /** @type {TreeBase[]} */\n children = [];\n /** @type {TreeBase | null} */\n parent = null;\n /** @type {string[]} */\n allowedChildren = [];\n allowDelete = true;\n\n // every component has a unique id\n static treeBaseCounter = 0;\n id = `TreeBase-${TreeBase.treeBaseCounter++}`;\n\n // values here are stored in sessionStorage\n persisted = session(this.id, {\n settingsDetailsOpen: false,\n });\n\n // map from id to the component\n static idMap = new WeakValue();\n\n /** @param {string} id\n * @returns {TreeBase | null} */\n static componentFromId(id) {\n // strip off any added bits of the id\n const match = id.match(/TreeBase-\\d+/);\n if (match) {\n return this.idMap.get(match[0]);\n }\n return null;\n }\n\n designer = {};\n\n /** A mapping from the external class name to the class */\n static nameToClass = new Map();\n /** A mapping from the class to the external class name */\n static classToName = new Map();\n\n /** @param {typeof TreeBase} cls\n * @param {string} externalName\n * */\n static register(cls, externalName) {\n this.nameToClass.set(externalName, cls);\n this.classToName.set(cls, externalName);\n }\n\n get className() {\n return TreeBase.classToName.get(this.constructor);\n }\n\n /**\n * Extract the class fields that are Props and return their values as an Object\n * @returns {Object}\n */\n get propsAsObject() {\n return Object.fromEntries(\n Object.entries(this)\n .filter(([_, prop]) => prop instanceof Props.Prop)\n .map(([name, prop]) => [name, prop.value]),\n );\n }\n\n /**\n * Extract the values of the fields that are Props\n * @returns {Object}\n */\n get props() {\n return Object.fromEntries(\n Object.entries(this).filter(([_, prop]) => prop instanceof Props.Prop),\n );\n }\n\n /**\n * Prepare a TreeBase tree for external storage by converting to simple objects and arrays\n * @param {Object} [options]\n * @param {string[]} options.omittedProps - class names of props to omit\n * @returns {Object}\n * */\n toObject(options = { omittedProps: [] }) {\n const props = Object.fromEntries(\n Object.entries(this)\n .filter(\n ([_, prop]) =>\n prop instanceof Props.Prop &&\n !options.omittedProps.includes(prop.constructor.name),\n )\n .map(([name, prop]) => [name, prop.text]),\n );\n const children = this.children.map((child) => child.toObject(options));\n const result = {\n className: this.className,\n props,\n children,\n };\n return result;\n }\n\n /**\n * An opportunity for the component to initialize itself. This is\n * called in fromObject after the children have been added. If you\n * call create directly you should call init afterward.\n */\n init() {\n /** Make sure OnOfGroup is enforced */\n for (const child of this.children) {\n const props = child.props;\n for (const instance of Object.values(props)) {\n if (instance instanceof Props.OneOfGroup && instance._value) {\n instance.clearPeers();\n break;\n }\n }\n }\n }\n\n /**\n * Create a TreeBase object\n * @template {TreeBase} TB\n * @param {string|(new()=>TB)} constructorOrName\n * @param {TreeBase | null} parent\n * @param {Object} props\n * @returns {TB}\n * */\n static create(constructorOrName, parent = null, props = {}) {\n const constructor =\n typeof constructorOrName == \"string\"\n ? TreeBase.nameToClass.get(constructorOrName)\n : constructorOrName;\n /** @type {TB} */\n const result = new constructor();\n\n // initialize the props\n for (const [name, prop] of Object.entries(result.props)) {\n prop.initialize(name, props[name], result);\n }\n\n // link it to its parent\n if (parent) {\n result.parent = parent;\n parent.children.push(result);\n }\n\n // remember the relationship between id and component\n TreeBase.idMap.set(result.id, result);\n\n return result;\n }\n\n /**\n * Instantiate a TreeBase tree from its external representation\n * @param {Object} obj\n * @param {TreeBase | null} parent\n * @returns {TreeBase} - should be {this} but that isn't supported for some reason\n * */\n static fromObject(obj, parent = null) {\n // Get the constructor from the class map\n if (!obj) console.trace(\"fromObject\", obj);\n const className = obj.className;\n const constructor = this.nameToClass.get(className);\n if (!constructor) {\n console.trace(\"className not found\", className, obj);\n throw new Error(\"className not found\");\n }\n\n // Create the object and link it to its parent\n const result = this.create(constructor, parent, obj.props);\n\n // Link in the children\n for (const childObj of obj.children) {\n if (childObj instanceof TreeBase) {\n childObj.parent = result;\n result.children.push(childObj);\n } else {\n TreeBase.fromObject(childObj, result);\n }\n }\n\n // allow the component to initialize itself\n result.init();\n\n // Validate the type is what was expected\n if (result instanceof this) return result;\n\n // Die if not\n console.error(\"expected\", this);\n console.error(\"got\", result);\n throw new Error(`fromObject failed`);\n }\n\n /**\n * Signal nodes above that something has been updated\n */\n update() {\n let start = this;\n /** @type {TreeBase | null} */\n let p = start;\n while (p) {\n p.onUpdate(start);\n p = p.parent;\n }\n }\n\n /**\n * Called when something below is updated\n * @param {TreeBase} _start\n */\n onUpdate(_start) {}\n\n /**\n * Render the designer interface and return the resulting Hole\n * @returns {Hole}\n */\n settings() {\n const detailsId = this.id + \"-details\";\n const settingsId = this.id + \"-settings\";\n return html`
    \n \n (this.persisted.settingsDetailsOpen = target.open)}\n >\n ${this.settingsSummary()}\n ${this.settingsDetails()}\n \n ${this.settingsChildren()}\n
    `;\n }\n\n /**\n * Render the summary of a components settings\n * @returns {Hole}\n */\n settingsSummary() {\n const name = Object.hasOwn(this, \"name\") ? this[\"name\"].value : \"\";\n return html`

    ${friendlyName(this.className)} ${name}

    `;\n }\n\n /**\n * Render the details of a components settings\n * @returns {Hole[]}\n */\n settingsDetails() {\n const props = this.props;\n const inputs = Object.values(props).map((prop) => prop.input());\n return inputs;\n }\n\n /**\n * @returns {Hole}\n */\n settingsChildren() {\n return this.orderedChildren();\n }\n\n /**\n * Render the user interface and return the resulting Hole\n * @returns {Hole}\n */\n template() {\n return html`
    `;\n }\n\n /**\n * Render the user interface catching errors and return the resulting Hole\n * @returns {Hole}\n */\n safeTemplate() {\n try {\n return this.template();\n } catch (error) {\n errorHandler(error, ` safeTemplate ${this.className}`);\n let classes = [this.className.toLowerCase()];\n classes.push(\"error\");\n return html`
    ERROR
    `;\n }\n }\n\n /** @typedef {Object} ComponentAttrs\n * @property {string[]} [classes]\n * @property {Object} [style]\n */\n\n /**\n * Wrap the body of a component\n *\n * @param {ComponentAttrs} attrs\n * @param {Hole} body\n * @returns {Hole}\n */\n component(attrs, body) {\n attrs = { style: {}, ...attrs };\n let classes = [this.className.toLowerCase()];\n if (\"classes\" in attrs) {\n classes = classes.concat(attrs.classes);\n }\n return html`\n ${body}\n
    `;\n }\n\n /**\n * Swap two of my children\n * @param {number} i\n * @param {number} j\n */\n swap(i, j) {\n const A = this.children;\n [A[i], A[j]] = [A[j], A[i]];\n }\n\n /**\n * Move me to given position in my parent\n * @param {number} i\n */\n moveTo(i) {\n const peers = this.parent?.children || [];\n peers.splice(this.index, 1);\n peers.splice(i, 0, this);\n }\n\n /**\n * Move me up or down by 1 position if possible\n * @param {boolean} up\n */\n moveUpDown(up) {\n const parent = this.parent;\n if (!parent) return;\n const peers = parent.children;\n if (peers.length > 1) {\n const index = this.index;\n const step = up ? -1 : 1;\n if ((up && index > 0) || (!up && index < peers.length - 1)) {\n parent.swap(index, index + step);\n }\n }\n }\n\n /**\n * Get the index of this component in its parent\n * @returns {number}\n */\n get index() {\n return (this.parent && this.parent.children.indexOf(this)) || 0;\n }\n\n /**\n * * Remove this child from their parent and return the id of the child to receive focus\n * @returns {string}\n * */\n remove() {\n if (!this.parent) return \"\";\n const peers = this.parent.children;\n const index = peers.indexOf(this);\n const parent = this.parent;\n this.parent = null;\n peers.splice(index, 1);\n if (peers.length > index) {\n return peers[index].id;\n } else if (peers.length > 0) {\n return peers[peers.length - 1].id;\n } else {\n return parent.id;\n }\n }\n\n /**\n * Create HTML LI nodes from the children\n */\n listChildren(children = this.children) {\n return children.map((child) => html`
  • ${child.settings()}
  • `);\n }\n\n /**\n * Create an HTML ordered list from the children\n */\n orderedChildren(children = this.children) {\n return html`
      \n ${this.listChildren(children)}\n
    `;\n }\n\n /**\n * Create an HTML unordered list from the children\n * */\n unorderedChildren(children = this.children) {\n return html`
      \n ${this.listChildren(children)}\n
    `;\n }\n\n /**\n * Return the nearest parent of the given type\n * @template T\n * @param {new() => T} type\n * @returns {T}\n * */\n nearestParent(type) {\n let p = this.parent;\n while (p) {\n if (p instanceof type) {\n return p;\n }\n p = p.parent;\n }\n throw new Error(\"No such parent\");\n }\n\n /**\n * Filter children by their type\n * @template T\n * @param {new() => T} type\n * @returns {T[]}\n */\n filterChildren(type) {\n /** @type {T[]} */\n const result = [];\n for (const child of this.children) {\n if (child instanceof type) {\n result.push(child);\n }\n }\n return result;\n }\n\n /** @param {string[]} classes\n * @returns {string}\n */\n CSSClasses(...classes) {\n return classes.join(\" \");\n }\n}\n\n/**\n * A variant of TreeBase that allows replacing a node with one of a similar type\n */\nexport class TreeBaseSwitchable extends TreeBase {\n init() {\n super.init();\n // find the TypeSelect property and set its value\n for (const prop of Object.values(this.props)) {\n if (prop instanceof Props.TypeSelect) {\n if (!prop.value) {\n prop.set(this.className);\n }\n }\n }\n }\n\n /** Replace this node with one of a compatible type\n * @param {string} className */\n replace(className) {\n if (!this.parent) return;\n if (this.className == className) return;\n // extract the values of the old props\n const props = Object.fromEntries(\n Object.entries(this)\n .filter(([_, prop]) => prop instanceof Props.Prop)\n .map(([name, prop]) => [name, prop.value]),\n );\n const replacement = TreeBase.create(className, null, props);\n replacement.init();\n const index = this.parent.children.indexOf(this);\n this.parent.children[index] = replacement;\n replacement.parent = this.parent;\n this.update();\n }\n}\n","import * as StackTrace from \"stacktrace-js\";\nimport { html, render } from \"uhtml\";\nimport \"css/errors.css\";\nimport { TreeBase } from \"./treebase\";\n\nexport class Messages extends TreeBase {\n /** @type {string[]} */\n messages = [];\n\n template() {\n if (this.messages.length) {\n const result = html`
    \n ${this.messages.map((message) => html`

    ${message}

    `)}\n
    `;\n this.messages = [];\n return result;\n } else {\n return html`
    `;\n }\n }\n\n report(message = \"\") {\n console.log({ message });\n this.messages.push(message);\n }\n}\n\n/** Display an error message for user feedback\n * @param {string} msg - the error message\n * @param {string[]} trace - stack trace\n */\nfunction reportInternalError(msg, trace) {\n const result = document.createElement(\"div\");\n result.id = \"ErrorReport\";\n render(\n result,\n html`
    \n

    Internal Error

    \n

    \n Your browser has detected an internal error in OS-DPI. It was very\n likely caused by our program bug. We hope you will help us by sending a\n report of the information below. Simply click this button\n {\n const html =\n document.getElementById(\"ErrorReportBody\")?.innerHTML || \"\";\n const blob = new Blob([html], { type: \"text/html\" });\n const data = [new ClipboardItem({ \"text/html\": blob })];\n navigator.clipboard.write(data);\n }}\n >\n Copy report to clipboard\n \n and then paste into an email to\n gb@cs.unc.edu.\n {\n document.getElementById(\"ErrorReport\")?.remove();\n }}\n >\n Dismiss this dialog\n \n

    \n
    \n

    Error Report

    \n

    ${msg}

    \n

    Stack Trace

    \n
      \n ${trace.map((s) => html`
    • ${s}
    • `)}\n
    \n
    \n
    `,\n );\n document.body.prepend(result);\n}\n\n/** @param {string} msg\n * @param {string} _file\n * @param {number} _line\n * @param {number} _col\n * @param {Error} error\n */\nwindow.onerror = async function (msg, _file, _line, _col, error) {\n console.error(\"onerror\", msg, error);\n if (error instanceof Error) {\n try {\n const frames = await StackTrace.fromError(error);\n const trace = frames.map((frame) => `${frame.toString()}`);\n reportInternalError(msg.toString(), trace);\n } catch (e) {\n const msg2 = `Caught an error trying to report an error.\n The original message was \"${msg.toString()}\".\n With file=${_file} line=${_line} column=${_col}\n error=${error.toString()}`;\n reportInternalError(msg2, []);\n }\n }\n};\n\n/** @param {Error} error */\nexport function errorHandler(error, extra = \"\") {\n let stack = [];\n let cause = `${error.name}${extra}`;\n if (error.stack) {\n const errorLines = error.stack.split(\"\\n\");\n stack = errorLines.slice(1);\n cause = errorLines[0] + extra;\n }\n reportInternalError(cause, stack);\n}\n/** @param {PromiseRejectionEvent} error */\nwindow.onunhandledrejection = function (error) {\n console.error(\"onunhandlederror\", error);\n error.preventDefault();\n reportInternalError(\n error.reason.message,\n error.reason.stack?.split(\"\\n\") || [\"no stack\"],\n );\n};\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport { comparators } from \"app/data\";\nimport \"css/gridfilter.css\";\nimport * as Props from \"./props\";\n\nexport class GridFilter extends TreeBase {\n field = new Props.Field({ hiddenLabel: true });\n operator = new Props.Select(Object.keys(comparators), { hiddenLabel: true });\n value = new Props.Expression(\"\", { hiddenLabel: true });\n\n /** move my parent instead of me.\n * @param {boolean} up\n */\n moveUpDown(up) {\n this.parent?.moveUpDown(up);\n }\n\n /** Format the settings\n * @param {GridFilter[]} filters\n * @return {Hole}\n */\n static FilterSettings(filters) {\n /** @type {Hole} */\n let table;\n if (filters.length > 0) {\n table = html`\n \n \n \n \n \n \n \n \n \n \n ${filters.map(\n (filter, index) => html`\n \n \n \n \n \n \n `,\n )}\n \n
    #FieldOperatorValue
    ${index + 1}${filter.field.input()}${filter.operator.input()}${filter.value.input()}
    \n `;\n } else {\n table = html`
    `;\n }\n return html`
    \n Filters\n ${table}\n
    `;\n }\n\n /** Convert from Props to values for data module\n * @param {GridFilter[]} filters\n */\n static toContentFilters(filters) {\n return filters.map((child) => ({\n field: child.field.value,\n operator: child.operator.value,\n value: child.value.value,\n }));\n }\n}\nTreeBase.register(GridFilter, \"GridFilter\");\n","import { GridFilter } from \"components/gridFilter\";\n\nconst collator = new Intl.Collator(\"en\", { sensitivity: \"base\" });\nconst collatorNumber = new Intl.Collator(\"en\", { numeric: true });\n\n/** Implement comparison operators\n * @typedef {function(string, string): boolean} Comparator\n *\n * @type {Object}\n */\nexport const comparators = {\n equals: (f, v) => collator.compare(f, v) === 0 || f === \"*\" || v === \"*\",\n \"starts with\": (f, v) => f.toUpperCase().startsWith(v.toUpperCase()),\n empty: (f) => !f,\n \"not empty\": (f) => !!f,\n \"less than\": (f, v) => collatorNumber.compare(f, v) < 0,\n \"greater than\": (f, v) => collatorNumber.compare(f, v) > 0,\n \"less or equal\": (f, v) => collatorNumber.compare(f, v) <= 0,\n \"greater or equal\": (f, v) => collatorNumber.compare(f, v) >= 0,\n};\n\n/** Test a row with a filter\n * @param {ContentFilter} filter\n * @param {Row} row\n * @returns {boolean}\n */\nfunction match(filter, row) {\n const field = row[filter.field.slice(1)] || \"\";\n let value = filter.value || \"\";\n const comparator = comparators[filter.operator];\n if (!comparator) return true;\n let r = comparator(field.toString(), value.toString());\n return r;\n}\n\nconst testRows = [];\nfor (let i = 0; i < 10; i++) {\n testRows.push({ label: \"\" + i });\n}\n\nexport class Data {\n /** @param {Rows} rows - rows coming from the spreadsheet */\n constructor(rows) {\n this.contentRows = (Array.isArray(rows) && rows) || [];\n this.allrows = this.contentRows;\n /** @type {Set} */\n this.allFields = new Set();\n this.updateAllFields();\n this.loadTime = new Date();\n }\n\n updateAllFields() {\n this.allFields = this.contentRows.reduce((previous, current) => {\n for (const field of Object.keys(current)) {\n previous.add(\"#\" + field);\n }\n return previous;\n }, new Set());\n this.clearFields = {};\n for (const field of this.allFields) {\n this.clearFields[field.slice(1)] = null;\n }\n }\n\n /**\n * Extract rows with the given filters\n *\n * @param {GridFilter[]} filters - each filter must return true\n * @param {boolean} [clearFields] - return null for undefined fields\n * @return {Rows} Rows that pass the filters\n */\n getMatchingRows(filters, clearFields = true) {\n // all the filters must match the row\n const boundFilters = filters.map((filter) => ({\n field: filter.field.value,\n operator: filter.operator.value,\n value: filter.value.value,\n }));\n let result = this.allrows.filter((row) =>\n boundFilters.every((filter) => match(filter, row)),\n );\n if (clearFields)\n result = result.map((row) => ({ ...this.clearFields, ...row }));\n return result;\n }\n\n /**\n * Test if any rows exist after filtering\n *\n * @param {GridFilter[]} filters\n * @param {EvalContext} context\n * @return {Boolean} true if tag combination occurs\n */\n hasMatchingRows(filters, context) {\n const boundFilters = filters.map((filter) => ({\n field: filter.field.value,\n operator: filter.operator.value,\n value: filter.value.valueInContext(context),\n }));\n const result = this.allrows.some((row) =>\n boundFilters.every((filter) => match(filter, row)),\n );\n return result;\n }\n\n /**\n * Add rows from the socket interface\n * @param {Rows} rows\n */\n setDynamicRows(rows) {\n if (!Array.isArray(rows)) return;\n this.allrows = rows.concat(this.contentRows);\n this.updateAllFields();\n this.loadTime = new Date();\n }\n}\n","const e=Object.assign||((e,t)=>(t&&Object.keys(t).forEach(o=>e[o]=t[o]),e)),t=(e,r,s)=>{const c=typeof s;if(s&&\"object\"===c)if(Array.isArray(s))for(const o of s)r=t(e,r,o);else for(const c of Object.keys(s)){const f=s[c];\"function\"==typeof f?r[c]=f(r[c],o):void 0===f?e&&!isNaN(c)?r.splice(c,1):delete r[c]:null===f||\"object\"!=typeof f||Array.isArray(f)?r[c]=f:\"object\"==typeof r[c]?r[c]=f===r[c]?f:o(r[c],f):r[c]=t(!1,{},f)}else\"function\"===c&&(r=s(r,o));return r},o=(o,...r)=>{const s=Array.isArray(o);return t(s,s?o.slice():e({},o),r)};export default o;\n//# sourceMappingURL=mergerino.min.js.map","import merge from \"mergerino\";\n\nexport class State {\n constructor(persistKey = \"\") {\n this.persistKey = persistKey;\n /** @type {Set} */\n this.listeners = new Set();\n /** @type {Object} */\n this.values = {};\n /** @type {Set} */\n this.updated = new Set();\n if (this.persistKey) {\n /* persistence */\n const persist = window.sessionStorage.getItem(this.persistKey);\n if (persist) {\n this.values = JSON.parse(persist);\n }\n }\n }\n\n /** unified interface to state\n * @param {string} [name] - possibly dotted path to a value\n * @param {any} defaultValue\n * @returns {any}\n */\n get(name, defaultValue = \"\") {\n if (name && name.length) {\n return name\n .split(\".\")\n .reduce((o, p) => (o ? o[p] : defaultValue), this.values);\n } else {\n return undefined;\n }\n }\n\n /**\n * update the state with a patch and invoke any listeners\n *\n * @param {Object} patch - the changes to make to the state\n * @return {void}\n */\n update(patch = {}) {\n for (const key in patch) {\n this.updated.add(key);\n }\n this.values = merge(this.values, patch);\n for (const callback of this.listeners) {\n callback();\n }\n\n if (this.persistKey) {\n const persist = JSON.stringify(this.values);\n window.sessionStorage.setItem(this.persistKey, persist);\n // console.trace(\"persist $tabControl\", this.values[\"$tabControl\"]);\n }\n }\n\n /**\n * return a new state with the patch applied\n * @param {Object} patch - changes to apply\n * @return {State} - new independent state\n */\n clone(patch = {}) {\n const result = new State();\n result.values = merge(this.values, patch);\n return result;\n }\n\n /** clear - reset the state\n */\n clear() {\n const userState = Object.keys(this.values).filter((name) =>\n name.startsWith(\"$\"),\n );\n const patch = Object.fromEntries(\n userState.map((name) => [name, undefined]),\n );\n this.update(patch);\n }\n\n /** observe - call this function when the state updates\n * @param {Function} callback\n */\n observe(callback) {\n this.listeners.add(callback);\n }\n\n /** return true if the given state has been upated on this cycle\n * @param {string} stateName\n * @returns boolean\n */\n hasBeenUpdated(stateName) {\n return this.updated.has(stateName);\n }\n\n /** clear updated for the next cycle\n */\n clearUpdated() {\n this.updated.clear();\n }\n\n /** define - add a named state to the global system state\n * @param {String} name - name of the state\n * @param {any} defaultValue - value if not already defined\n */\n define(name, defaultValue) {\n if (typeof this.values[name] === \"undefined\") {\n this.values[name] = defaultValue;\n }\n }\n /** interpolate\n * @param {string} input\n * @returns {string} input with $name replaced by values from the state\n */\n interpolate(input) {\n let result = input.replace(/(\\$[a-zA-Z0-9_.]+)/g, (_, name) =>\n this.get(name),\n );\n result = result.replace(/\\$\\{([a-zA-Z0-9_.]+)}/g, (_, name) =>\n this.get(\"$\" + name),\n );\n return result;\n }\n}\n","import { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { html } from \"uhtml\";\nimport { styleString } from \"./style\";\nimport \"css/stack.css\";\n\nexport class Stack extends TreeBase {\n direction = new Props.Select([\"row\", \"column\"], { defaultValue: \"column\" });\n background = new Props.Color(\"\");\n scale = new Props.Float(1);\n\n allowedChildren = [\n \"Stack\",\n \"Gap\",\n \"Grid\",\n \"Display\",\n \"Radio\",\n \"TabControl\",\n \"VSD\",\n \"Button\",\n ];\n\n /** @returns {Hole} */\n template() {\n /** return the scale of the child making sure it isn't zero or undefined.\n * @param {TreeBase } child\n * @returns {number}\n */\n function getScale(child) {\n const SCALE_MIN = 0.0;\n let scale = +child[\"scale\"]?.value;\n if (!scale || scale < SCALE_MIN) {\n scale = SCALE_MIN;\n }\n return scale;\n }\n const scaleSum = this.children.reduce(\n (sum, child) => sum + getScale(child),\n 0,\n );\n const empty = this.children.length && scaleSum ? \"\" : \"empty\";\n const direction = this.direction.value;\n const dimension = direction == \"row\" ? \"width\" : \"height\";\n\n return this.component(\n {\n classes: [this.CSSClasses(direction, empty)],\n style: {\n backgroundColor: this.background.value,\n },\n },\n html`${this.children.map(\n (child) =>\n html`\n ${child.safeTemplate()}\n
    `,\n )}`,\n );\n }\n}\nTreeBase.register(Stack, \"Stack\");\n","import { Stack } from \"./stack\";\n\nexport class Page extends Stack {\n // you can't delete the page\n allowDelete = false;\n\n constructor() {\n super();\n this.allowedChildren = this.allowedChildren.concat(\n \"Speech\",\n \"Audio\",\n \"Logger\",\n \"ModalDialog\",\n \"Customize\",\n \"HeadMouse\"\n );\n }\n}\nStack.register(Page, \"Page\");\n","/** Gather Slots code into one module\n *\n * Slots are coded in strings like $$ kind = value $$ where kind is used\n * to access the Content for choices and value is the initial and default value.\n *\n */\n\nimport { html } from \"uhtml\";\nimport { Functions } from \"app/eval\";\nimport merge from \"mergerino\";\nimport Globals from \"app/globals\";\n\n/** Slot descriptor\n * @typedef {Object} Slot\n * @property {string} name - the name of the slot list\n * @property {string} value - the current value\n */\n\n/** Editor state\n * @typedef {Object} Editor\n * @property {\"editor\"} type\n * @property {string} message - the message text\n * @property {Slot[]} slots - slots if any\n * @property {number} slotIndex - slot being edited\n * @property {string} slotName - current slot type\n * @property {string} value - value stripped of any markup\n */\n\n/**\n * Edit slots markup to replace with highlighed values\n * @param {string|Editor} msg - the string possibly containing $$ kind = value $$ markup\n * @returns {Hole[]} - formatted string\n */\nexport function formatSlottedString(msg) {\n if (typeof msg === \"string\") {\n return msg.split(/(\\$\\$.*?\\$\\$)/).map((part) => {\n const m = part.match(/\\$\\$(?.*?)=(?.*?)\\$\\$/);\n if (m) {\n return html`${m.groups?.value || \"\"}`;\n } else {\n return html`${part}`;\n }\n });\n } else if (typeof msg === \"object\" && msg.type === \"editor\") {\n let editor = msg;\n // otherwise it is an editor object\n // highlight the current slot\n let i = 0;\n return editor.message.split(/(\\$\\$.*?\\$\\$)/).map((part) => {\n const m = part.match(/\\$\\$(?.*?)=(?.*?)\\$\\$/);\n if (m) {\n if (i === editor.slotIndex) {\n // highlight the current slot\n return html`${editor.slots[i++].value}`;\n } else {\n return html`${editor.slots[i++].value.replace(/^\\*/, \"\")}`;\n }\n }\n return html`${part}`;\n });\n } else {\n return [];\n }\n}\n\n/** Edit slots markup to replace with values\n * @param {string|Editor} value\n * @returns {string}\n */\nexport function toString(value) {\n value ??= \"\";\n if (typeof value === \"string\") {\n // strip any slot markup\n value = value.replaceAll(/\\$\\$(?.*?)=(?.*?)\\$\\$/g, \"$2\");\n return value;\n } else if (typeof value === \"object\" && value.type === \"editor\") {\n let editor = value;\n // otherwise it is an editor object\n let i = 0;\n const parts = editor.message.split(/(\\$\\$.*?\\$\\$)/).map((part) => {\n const m = part.match(/\\$\\$(?.*?)=(?.*?)\\$\\$/);\n if (m) {\n return editor.slots[i++].value.replace(/^\\*/, \"\");\n }\n return part;\n });\n return parts.join(\"\");\n }\n return value.toString();\n}\n\n/** We need to keep some additional state around to enable editing slotted messages.\n *\n * These functions are used in Updates to manipulate the state.\n */\n\n/** Test if this message has slots\n * @param {string|Editor} message\n * @returns {boolean}\n */\nfunction hasSlots(message) {\n if (message instanceof Object && message.type === \"editor\") {\n return message.slots.length > 0;\n } else if (typeof message == \"string\") return message.indexOf(\"$$\") >= 0;\n return false;\n}\n\n/** initialize the editor\n * @param {String} message\n * @returns Editor\n */\nfunction init(message) {\n message = message || \"\";\n const slots = Array.from(\n message.matchAll(/\\$\\$(?.*?)=(?.*?)\\$\\$/g),\n ).map((m) => m.groups);\n let result = {\n type: \"editor\",\n message,\n slots,\n slotIndex: 0,\n slotName: (slots[0] && slots[0].name) || \"\",\n };\n return result;\n}\n\n/** cancel slot editing\n * @returns Editor\n */\nfunction cancel() {\n return {\n type: \"editor\",\n message: \"\",\n slots: [],\n slotIndex: 0,\n slotName: \"\",\n };\n}\n\n/** update the value of the current slot\n * @param {String} message\n */\nfunction update(message) {\n message ??= \"\";\n /** @param {Editor} old\n * @returns {Editor|string}\n */\n return (old) => {\n // copy the slots from the old value\n if (!old || !old.slots) {\n return \"\";\n }\n const slots = [...old.slots];\n let slotIndex = old.slotIndex;\n // replace the current one\n if (message.startsWith(\"*\")) {\n slots[slotIndex].value = message;\n } else {\n if (slots[slotIndex].value.startsWith(\"*\")) {\n slots[slotIndex].value = `${slots[slotIndex].value} ${message}`;\n } else {\n slots[slotIndex].value = message;\n }\n slotIndex++;\n if (slotIndex >= slots.length) {\n Globals.actions.queueEvent(\"okSlot\", \"press\");\n }\n }\n return merge(old, {\n slots,\n slotIndex,\n slotName: slots[slotIndex]?.name,\n });\n };\n}\n\n/** advance to the next slot\n */\nfunction nextSlot() {\n /** @param {Editor} old\n */\n return (old) => {\n if (!old || !old.slots) return;\n const slotIndex = old.slotIndex + 1;\n if (slotIndex >= old.slots.length) {\n Globals.actions.queueEvent(\"okSlot\", \"press\");\n }\n return merge(old, { slotIndex, slotName: old.slots[slotIndex]?.name });\n };\n}\n\n/** duplicate the current slot\n */\nfunction duplicate() {\n /** @param {Editor} old\n */\n return (old) => {\n if (!old || !old.slots) return;\n const matches = Array.from(\n old.message.matchAll(/\\$\\$(?.*?)=(?.*?)\\$\\$/g),\n );\n const current = matches[old.slotIndex];\n if (current !== undefined && current.index !== undefined) {\n const message =\n old.message.slice(0, current.index) +\n current[0] +\n \" and \" +\n current[0] +\n old.message.slice(current.index + current[0].length);\n const slots = [\n ...old.slots.slice(0, old.slotIndex + 1),\n { ...old.slots[old.slotIndex] }, // copy it\n ...old.slots.slice(old.slotIndex + 1),\n ];\n return merge(old, {\n message,\n slots,\n });\n } else {\n return old;\n }\n };\n}\n\n/** Get the slot name\n * @param {string|Editor} message\n * @returns string;\n */\nfunction slotName(message) {\n if (typeof message === \"object\" && message.type === \"editor\") {\n return message.slotName;\n }\n return \"\";\n}\n\nlet functionsInitialized = false;\nif (!functionsInitialized) {\n Functions[\"slots\"] = {\n init,\n cancel,\n update,\n hasSlots,\n duplicate,\n nextSlot,\n slotName,\n toString,\n };\n}\n","import { html } from \"uhtml\";\nimport * as Props from \"./props\";\nimport { TreeBase } from \"./treebase\";\nimport { GridFilter } from \"./gridFilter\";\nimport { styleString } from \"./style\";\nimport { formatSlottedString } from \"./slots\";\nimport Globals from \"app/globals\";\nimport \"css/grid.css\";\n\n/**\n * Return an image or video element given the name + parameters\n * like \"foo.mp4 autoplay loop\".\n * @param {string} src\n * @param {string} title\n * @param {null|function():void} onload\n * @returns {Hole}\n */\nexport function imageOrVideo(src, title, onload = null) {\n const match = /(?.*\\.(?:mp4|webm))(?.*$)/.exec(src);\n\n if (match && match.groups) {\n // video\n const options = match.groups.options;\n const vsrc = match.groups.src;\n return html`= 0}\n ?autoplay=${options.indexOf(\"autoplay\") >= 0}\n ?muted=${options.indexOf(\"muted\") >= 0}\n @load=${onload}\n />`;\n } else {\n // image\n return html``;\n }\n}\n\nclass Grid extends TreeBase {\n fillItems = new Props.Boolean(false);\n rows = new Props.Integer(3);\n columns = new Props.Integer(3);\n scale = new Props.Float(1);\n name = new Props.String(\"grid\");\n background = new Props.Color(\"white\");\n\n allowedChildren = [\"GridFilter\"];\n\n /** @type {GridFilter[]} */\n children = [];\n\n page = 1;\n pageBoundaries = { 0: 0 }; //track starting indices of pages\n\n /** @param {Row} item */\n gridCell(item) {\n const name = this.name.value;\n /** @type {Hole[]} */\n let content;\n let msg = formatSlottedString(item.label || \"\");\n if (item.symbol) {\n content = [\n html`
    \n
    \n ${imageOrVideo(item.symbol, item.label || \"\")}\n
    ${msg}
    \n
    \n
    `,\n ];\n } else {\n content = msg;\n }\n return html`\n ${content}\n `;\n }\n\n emptyCell() {\n return html``;\n }\n\n /**\n * Allow selecting pages in the grid\n *\n * @param {Number} pages\n * @param {Row} info\n */\n pageSelector(pages, info) {\n const { state } = Globals;\n const background = this.background.value;\n const name = this.name.value;\n\n return html`
    \n
    Page ${this.page} of ${pages}
    \n
    \n {\n this.page = ((((this.page - 2) % pages) + pages) % pages) + 1;\n state.update(); // trigger redraw\n }}\n tabindex=\"-1\"\n >\n ☚ {\n this.page = (this.page % pages) + 1;\n state.update(); // trigger redraw\n }}\n tabindex=\"-1\"\n >\n ☛\n \n
    \n
    `;\n }\n\n template() {\n /** @type {Partial} */\n const style = { backgroundColor: this.background.value };\n const { data } = Globals;\n let rows = this.rows.value;\n let columns = this.columns.value;\n let fillItems = this.fillItems.value;\n /** @type {Rows} */\n let items = data.getMatchingRows(this.children);\n let maxPage = 1;\n const result = [];\n if (!fillItems) {\n // collect the items for the current page\n // and get the dimensions\n let maxRow = 0,\n maxColumn = 0;\n const itemMap = new Map();\n /**\n * @param {number} row\n * @param {number} column\n */\n const itemKey = (row, column) => row * 1000 + column;\n\n for (const item of items) {\n // ignore items without row and column\n if (!item.row || !item.column) continue;\n // get the max page value if any\n maxPage = Math.max(maxPage, item.page || 1);\n // collect the items on this page\n if (this.page == (item.page || 1)) {\n maxRow = Math.max(maxRow, item.row);\n maxColumn = Math.max(maxColumn, item.column);\n const key = itemKey(item.row, item.column);\n // only use the first one\n if (!itemMap.has(key)) itemMap.set(key, item);\n }\n }\n rows = maxRow;\n columns = maxColumn;\n for (let row = 1; row <= rows; row++) {\n for (let column = 1; column <= columns; column++) {\n if (maxPage > 1 && row == rows && column == columns) {\n // draw the page selector in the last cell\n result.push(this.pageSelector(maxPage, { row, column }));\n } else {\n const key = itemKey(row, column);\n if (itemMap.has(key)) {\n result.push(this.gridCell(itemMap.get(key)));\n } else {\n result.push(this.emptyCell());\n }\n }\n }\n }\n } else {\n // fill items sequentially\n let perPage = rows * columns;\n if (items.length > perPage) {\n perPage = perPage - 1;\n }\n maxPage = Math.ceil(items.length / perPage);\n // get the items on this page\n items = items.slice((this.page - 1) * perPage, this.page * perPage);\n // render them into the result\n for (let i = 0; i < items.length; i++) {\n const row = Math.floor(i / columns) + 1;\n const column = (i % columns) + 1;\n const item = { ...items[i], row, column };\n result.push(this.gridCell({ ...item, row: row, column: column }));\n }\n // fill any spaces that remain\n for (let i = items.length; i < perPage; i++) {\n result.push(this.emptyCell());\n }\n // draw the page selector if needed\n if (maxPage > 1) {\n result.push(this.pageSelector(maxPage, { row: rows, column: columns }));\n }\n }\n\n style.gridTemplate = `repeat(${rows}, calc(100% / ${rows})) / repeat(${columns}, 1fr)`;\n\n return this.component({ style }, html`${result}`);\n }\n\n settingsDetails() {\n const props = this.props;\n const inputs = Object.values(props).map((prop) => prop.input());\n const filters = GridFilter.FilterSettings(this.children);\n return [html`
    ${filters}${inputs}
    `];\n }\n\n settingsChildren() {\n return html`
    `;\n }\n}\nTreeBase.register(Grid, \"Grid\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport \"css/display.css\";\nimport Globals from \"app/globals\";\nimport { formatSlottedString } from \"./slots\";\n\nclass Display extends TreeBase {\n stateName = new Props.String(\"$Display\");\n Name = new Props.String(\"\");\n background = new Props.Color(\"white\");\n fontSize = new Props.Float(2);\n scale = new Props.Float(1);\n\n /** @type {HTMLDivElement | null} */\n current = null;\n\n static functionsInitialized = false;\n\n template() {\n const { state } = Globals;\n let value = state.get(this.stateName.value) || \"\";\n const content = formatSlottedString(value);\n return this.component(\n {\n style: {\n backgroundColor: this.background.value,\n fontSize: this.fontSize.value + \"rem\",\n },\n },\n html`\n ${content}\n `,\n );\n }\n\n /** Attempt to locate the word the user is touching\n */\n click = () => {\n const s = window.getSelection();\n if (!s) return;\n let word = \"\";\n if (s.isCollapsed) {\n s.modify(\"move\", \"forward\", \"character\");\n s.modify(\"move\", \"backward\", \"word\");\n s.modify(\"extend\", \"forward\", \"word\");\n word = s.toString();\n s.modify(\"move\", \"forward\", \"character\");\n } else {\n word = s.toString();\n }\n this.current?.setAttribute(\"data--clicked-word\", word);\n };\n}\nTreeBase.register(Display, \"Display\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { styleString } from \"./style\";\nimport \"css/radio.css\";\nimport Globals from \"app/globals\";\nimport { GridFilter } from \"./gridFilter\";\n\nclass Option extends TreeBase {\n name = new Props.String(\"\", { hiddenLabel: true });\n value = new Props.String(\"\", { hiddenLabel: true });\n cache = {};\n}\nTreeBase.register(Option, \"Option\");\n\nclass Radio extends TreeBase {\n scale = new Props.Float(1);\n label = new Props.String(\"\");\n stateName = new Props.String(\"$radio\");\n unselected = new Props.Color(\"lightgray\");\n selected = new Props.Color(\"pink\");\n\n allowedChildren = [\"Option\", \"GridFilter\"];\n\n /** @type {(Option | GridFilter)[]} */\n children = [];\n\n get options() {\n return this.filterChildren(Option);\n }\n\n /**\n * true if there exist rows with the this.filters and the value\n * @arg {Option} option\n * @returns {boolean}\n */\n valid(option) {\n const { data } = Globals;\n const filters = this.filterChildren(GridFilter);\n return (\n !filters.length ||\n data.hasMatchingRows(filters, {\n states: {\n [this.stateName.value]: option.value.value,\n },\n })\n );\n }\n\n /**\n * handle clicks on the chooser\n * @param {MouseEvent} event\n */\n handleClick({ target }) {\n if (target instanceof HTMLButtonElement) {\n const value = target.value;\n const name = this.stateName.value;\n Globals.state.update({ [name]: value });\n }\n }\n\n template() {\n const { state } = Globals;\n const stateName = this.stateName.value;\n const selected = this.selected.value;\n const unselected = this.unselected.value;\n const radioLabel = this.label.value;\n let currentValue = state.get(stateName);\n const choices = this.options.map((choice, index) => {\n const choiceDisabled = !this.valid(choice);\n const choiceValue = choice.value.value;\n const choiceName = choice.name.value;\n if (stateName && !currentValue && !choiceDisabled && choiceValue) {\n currentValue = choiceValue;\n state.define(stateName, choiceValue);\n }\n const color =\n choiceValue == currentValue || (!currentValue && index == 0)\n ? selected\n : unselected;\n return html` state.update({ [stateName]: choice.value.value })}\n >\n ${choiceName}\n `;\n });\n\n return this.component(\n {},\n html`
    \n ${(radioLabel && [html`${radioLabel}`]) || []}\n ${choices}\n
    `,\n );\n }\n\n settingsDetails() {\n const props = this.props;\n const inputs = Object.values(props).map((prop) => prop.input());\n const filters = this.filterChildren(GridFilter);\n const editFilters = !filters.length\n ? []\n : [GridFilter.FilterSettings(filters)];\n const options = this.filterChildren(Option);\n const editOptions = html`
    \n Options\n \n \n \n \n \n \n \n \n \n ${options.map(\n (option, index) => html`\n \n \n \n \n \n `,\n )}\n \n
    #NameValue
    ${index + 1}${option.name.input()}${option.value.input()}
    \n
    `;\n return [html`
    ${editFilters}${editOptions}${inputs}
    `];\n }\n\n settingsChildren() {\n return html`
    `;\n }\n}\nTreeBase.register(Radio, \"Radio\");\n","import { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { styleString } from \"./style\";\nimport \"css/gap.css\";\nimport { html } from \"uhtml\";\n\nclass Gap extends TreeBase {\n scale = new Props.Float(1);\n background = new Props.Color(\"\");\n\n template() {\n return this.component(\n {\n style: styleString({\n backgroundColor: this.background.value,\n }),\n },\n html`
    `,\n );\n }\n}\nTreeBase.register(Gap, \"Gap\");\n","import { render, html } from \"uhtml\";\nimport { errorHandler } from \"./components/errors\";\n\n/** @type {Function[]} */\nconst PostRenderFunctions = [];\n/** @param {Function} f */\nexport function callAfterRender(f) {\n PostRenderFunctions.push(f);\n}\nexport function postRender() {\n while (PostRenderFunctions.length > 0) {\n const PRF = PostRenderFunctions.pop();\n if (PRF) PRF();\n }\n}\n\nconst safe = true;\n\n/** @param {string} id\n * @param {TreeBase} component\n */\nexport function safeRender(id, component) {\n const where = document.getElementById(id);\n if (!where) {\n console.error({ id, where });\n return;\n }\n let r;\n if (safe) {\n try {\n let what = component.safeTemplate();\n if (Array.isArray(what)) what = html`${what}`;\n r = render(where, what);\n } catch (error) {\n if (error instanceof Error) {\n errorHandler(error, ` rendering ${component.className} ${id}`);\n } else {\n console.error(\"crash\", error);\n }\n return;\n }\n } else {\n let what = component.safeTemplate();\n if (Array.isArray(what)) what = html`${what}`;\n r = render(where, what);\n }\n return r;\n}\n","import { html } from \"uhtml\";\nimport * as Props from \"./props\";\nimport { Stack } from \"./stack\";\nimport { styleString } from \"./style\";\nimport \"css/tabcontrol.css\";\nimport Globals from \"app/globals\";\nimport { TreeBase } from \"./treebase\";\nimport { callAfterRender } from \"app/render\";\n\nexport class TabControl extends TreeBase {\n stateName = new Props.String(\"$tabControl\");\n background = new Props.Color(\"\");\n scale = new Props.Float(6);\n tabEdge = new Props.Select([\"bottom\", \"top\", \"left\", \"right\", \"none\"], {\n defaultValue: \"top\",\n });\n name = new Props.String(\"tabs\");\n\n allowedChildren = [\"TabPanel\"];\n\n /** @type {TabPanel[]} */\n children = [];\n\n /** @type {TabPanel | undefined} */\n currentPanel = undefined;\n\n template() {\n const { state } = Globals;\n const panels = this.children;\n let activeTabName = state.get(this.stateName.value);\n // collect panel info\n panels.forEach((panel, index) => {\n panel.tabName = state.interpolate(panel.name.value); // internal name\n panel.tabLabel = state.interpolate(panel.label.value || panel.name.value); // display name\n if (index == 0 && !activeTabName) {\n activeTabName = panel.tabName;\n state.define(this.stateName.value, panel.tabName);\n }\n panel.active = activeTabName == panel.tabName || panels.length === 1;\n });\n let buttons = [];\n if (this.tabEdge.value != \"none\") {\n buttons = panels\n .filter((panel) => panel.label.value != \"UNLABELED\")\n .map((panel) => {\n const color = panel.background.value;\n const buttonStyle = {\n backgroundColor: color,\n };\n return html`
  • \n {\n this.switchTab(panel.tabName);\n }}\n tabindex=\"-1\"\n >\n ${panel.tabLabel}\n \n
  • `;\n });\n }\n return this.component(\n { classes: [this.tabEdge.value] },\n html`\n
      \n ${buttons}\n
    \n
    \n ${panels.map((panel) => panel.safeTemplate())}\n
    \n `,\n );\n }\n\n /**\n * @param {string} tabName\n */\n switchTab(tabName) {\n Globals.state.update({ [this.stateName.value]: tabName });\n }\n}\nTreeBase.register(TabControl, \"TabControl\");\n\nexport class TabPanel extends Stack {\n name = new Props.String(\"\");\n label = new Props.String(\"\");\n\n /** @type {TabControl | null} */\n parent = null;\n\n active = false;\n tabName = \"\";\n tabLabel = \"\";\n lastFocused = \"\";\n\n /**\n * Render the details of a components settings\n */\n settingsDetails() {\n const caption = this.active ? \"Active\" : \"Activate\";\n let details = super.settingsDetails();\n if (!Array.isArray(details)) details = [details];\n return [\n ...details,\n html` {\n if (this.parent) {\n const parent = this.parent;\n callAfterRender(() => {\n Globals.layout.highlight();\n });\n parent.switchTab(this.name.value);\n }\n }}\n >\n ${caption}\n `,\n ];\n }\n\n /** @param {string[]} classes\n * @returns {string}\n */\n CSSClasses(...classes) {\n if (this.active) {\n classes.push(\"ActivePanel\");\n }\n return super.CSSClasses(...classes);\n }\n\n highlight() {}\n}\nTreeBase.register(TabPanel, \"TabPanel\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport \"css/modal-dialog.css\";\n\nimport Globals from \"app/globals\";\n\nexport class ModalDialog extends TreeBase {\n stateName = new Props.String(\"$modalOpen\");\n open = new Props.Boolean(false);\n\n allowedChildren = [\"Stack\"];\n\n template() {\n const state = Globals.state;\n const open =\n !!state.get(this.stateName.value) || this.open.value ? \"open\" : \"\";\n return this.component(\n { classes: [open] },\n html`
    ${this.children.map((child) => child.safeTemplate())}
    `,\n );\n }\n}\nTreeBase.register(ModalDialog, \"ModalDialog\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { styleString } from \"./style\";\nimport \"css/vsd.css\";\nimport Globals from \"app/globals\";\nimport { GridFilter } from \"./gridFilter\";\nimport { imageOrVideo } from \"./grid\";\n\n/** Allow await'ing for a short time\n * @param {number} ms */\nconst sleep = (ms) => new Promise((r) => setTimeout(r, ms));\n\n/** Wait for a condition to be satisfied\n * @param {() => boolean} test\n * @param {number} delay */\nasync function waitFor(test, delay = 100) {\n while (!test()) await sleep(delay);\n}\n\n/**\n * Calculate the actual image size undoing the effects of object-fit\n * This is async so it can wait for the image to be loaded initially.\n *\n * @param {HTMLImageElement} img\n * */\nasync function getActualImageSize(img) {\n let left = 0,\n top = 0,\n width = 1,\n height = 1;\n if (img) {\n // wait for the image to load\n await waitFor(() => img.complete && img.naturalWidth != 0);\n const vsd = /** @type {HTMLDivElement} */ (img.closest(\"div.vsd\"));\n const cw = img.width,\n ch = img.height,\n iw = img.naturalWidth,\n ih = img.naturalHeight,\n pw = vsd.clientWidth,\n ph = vsd.clientHeight,\n iratio = iw / ih,\n cratio = cw / ch;\n if (iratio > cratio) {\n width = cw;\n height = cw / iratio;\n } else {\n width = ch * iratio;\n height = ch;\n }\n left = (pw - width) / 2;\n top = (ph - height) / 2;\n }\n return { left, top, width, height };\n}\n\n/** @param {number} v */\nfunction px(v) {\n return `${v}px`;\n}\n/** @param {number} v */\nfunction pct(v) {\n return `${v}%`;\n}\n\n/** @typedef {Object} vsdData\n * @property {number} x\n * @property {number} y\n * @property {number} w\n * @property {number} h\n * @property {string} image\n * @property {boolean} invisible\n */\n/** @typedef {Row & vsdData} VRow */\nclass VSD extends TreeBase {\n name = new Props.String(\"vsd\");\n scale = new Props.Float(1);\n\n /** @type {GridFilter[]} */\n children = [];\n\n allowedChildren = [\"GridFilter\"];\n\n /** @type {HTMLDivElement} */\n markers;\n\n template() {\n const { data, state, actions } = Globals;\n const editing = state.get(\"editing\");\n const items = /** @type {VRow[]} */ (data.getMatchingRows(this.children));\n const src = items.find((item) => item.image)?.image || \"\";\n let dragging = 0;\n const coords = [\n [0, 0], // start x and y\n [0, 0], // end x and y\n ];\n let clip = \"\";\n\n return this.component(\n { classes: [\"show\"] },\n html`
    \n ${imageOrVideo(src, \"\", () => {\n this.sizeMarkers(this.markers);\n })}\n {\n this.sizeMarkers(node);\n }}\n @pointermove=${editing &&\n ((/** @type {PointerEvent} */ event) => {\n const rect = this.markers.getBoundingClientRect();\n const div = document.querySelector(\"#UI span.coords\");\n if (!div) return;\n coords[dragging][0] = Math.round(\n (100 * (event.pageX - rect.left)) / rect.width,\n );\n coords[dragging][1] = Math.round(\n (100 * (event.pageY - rect.top)) / rect.height,\n );\n clip = `${coords[0][0]}\\t${coords[0][1]}`;\n if (dragging) {\n clip =\n clip +\n `\\t${coords[1][0] - coords[0][0]}\\t${\n coords[1][1] - coords[0][1]\n }`;\n }\n div.innerHTML = clip;\n })}\n @pointerdown=${editing &&\n (() => {\n dragging = 1;\n })}\n @pointerup=${editing &&\n (() => {\n dragging = 0;\n navigator.clipboard.writeText(clip);\n })}\n >\n ${items\n .filter((item) => item.w)\n .map(\n (item) =>\n html`\n ${item.label || \"\"}\n `,\n )}\n \n
    \n
    `,\n );\n }\n\n /** @param {HTMLDivElement} node */\n async sizeMarkers(node) {\n this.markers = node;\n const img = /** @type {HTMLImageElement} */ (node.previousElementSibling);\n const rect = await getActualImageSize(img);\n node.style.position = \"absolute\";\n node.style.left = px(rect.left);\n node.style.top = px(rect.top);\n node.style.width = px(rect.width);\n node.style.height = px(rect.height);\n }\n\n settingsDetails() {\n const props = this.props;\n const inputs = Object.values(props).map((prop) => prop.input());\n const filters = GridFilter.FilterSettings(this.children);\n return [html`
    ${filters}${inputs}
    `];\n }\n\n settingsChildren() {\n return html`
    `;\n }\n}\nTreeBase.register(VSD, \"VSD\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { styleString } from \"./style\";\nimport \"css/button.css\";\n\nclass Button extends TreeBase {\n label = new Props.String(\"click me\");\n name = new Props.String(\"button\");\n background = new Props.Color(\"\");\n scale = new Props.Float(1);\n\n template() {\n const style = styleString({ backgroundColor: this.background.value });\n const name = this.name.value;\n const label = this.label.value;\n return this.component(\n {},\n html`\n ${label}\n `,\n );\n }\n\n getChildren() {\n return [];\n }\n}\nTreeBase.register(Button, \"Button\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport \"css/monitor.css\";\nimport Globals from \"app/globals\";\nimport { accessed } from \"app/eval\";\nimport { toString } from \"components/slots\";\n\nexport class Monitor extends TreeBase {\n template() {\n const { state, actions: rules } = Globals;\n const stateKeys = [\n ...new Set([...Object.keys(state.values), ...accessed.keys()]),\n ].sort();\n const s = html`\n \n \n \n \n \n \n \n ${stateKeys\n .filter((key) => key.startsWith(\"$\"))\n .map((key) => {\n let value = state.get(key);\n value = toString(value);\n let clamped = value.slice(0, 30);\n if (value.length > clamped.length) {\n clamped += \"...\";\n }\n return html`\n \n \n `;\n })}\n \n
    StateValue
    ${key}${clamped}
    `;\n\n const row = rules.last.data || {};\n const rowAccessedKeys = [...accessed.keys()]\n .filter((key) => key.startsWith(\"_\"))\n .map((key) => key.slice(1));\n const rowKeys = [\n ...new Set([...Object.keys(row), ...rowAccessedKeys]),\n ].sort();\n const f = html`\n \n \n \n \n \n \n \n ${rowKeys.map((key) => {\n const value = row[key];\n return html`\n \n \n `;\n })}\n \n
    FieldValue
    #${key}${value}
    `;\n\n return html` {\n state.clear();\n rules.configure();\n }}\n >\n Clear state\n \n
    ${s}${f}
    `;\n }\n}\nTreeBase.register(Monitor, \"Monitor\");\n","import { TreeBase } from \"./treebase\";\nimport { html } from \"uhtml\";\nimport Globals from \"app/globals\";\nimport * as Props from \"./props\";\nimport { toString } from \"./slots\";\n\nclass Speech extends TreeBase {\n stateName = new Props.String(\"$Speak\");\n voiceURI = new Props.Voice(\"\", { label: \"Voice\" });\n pitch = new Props.Float(1);\n rate = new Props.Float(1);\n volume = new Props.Float(1);\n\n async speak() {\n const { state } = Globals;\n const voiceURI = this.voiceURI.value;\n const message = toString(state.get(this.stateName.value));\n const voices = await getVoices();\n const voice =\n voiceURI && voices.find((voice) => voice.voiceURI == voiceURI);\n const utterance = new SpeechSynthesisUtterance(message);\n if (voice) {\n utterance.voice = voice;\n utterance.lang = voice.lang;\n }\n utterance.pitch = this.pitch.value;\n utterance.rate = this.rate.value;\n utterance.volume = this.volume.value;\n speechSynthesis.cancel();\n speechSynthesis.speak(utterance);\n }\n\n template() {\n const { state } = Globals;\n if (state.hasBeenUpdated(this.stateName.value)) {\n this.speak();\n }\n return html`
    `;\n }\n}\nTreeBase.register(Speech, \"Speech\");\n\n/** @type{SpeechSynthesisVoice[]} */\nlet voices = [];\n\n/**\n * Promise to return voices\n *\n * @return {Promise} Available voices\n */\nfunction getVoices() {\n return new Promise(function (resolve) {\n // iOS won't fire the voiceschanged event so we have to poll for them\n function f() {\n voices = (voices.length && voices) || speechSynthesis.getVoices();\n if (voices.length) resolve(voices);\n else setTimeout(f, 100);\n }\n f();\n });\n}\n\nclass VoiceSelect extends HTMLSelectElement {\n constructor() {\n super();\n }\n connectedCallback() {\n this.addVoices();\n }\n\n async addVoices() {\n const voices = await getVoices();\n const current = this.getAttribute(\"value\");\n for (const voice of voices) {\n const item = document.createElement(\"option\");\n item.value = voice.voiceURI;\n if (voice.voiceURI == current) item.setAttribute(\"selected\", \"\");\n item.innerText = voice.name;\n this.add(item);\n }\n }\n}\ncustomElements.define(\"select-voice\", VoiceSelect, { extends: \"select\" });\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","import { r as replaceTraps, a as reverseTransformCache, u as unwrap, i as instanceOfAny } from './wrap-idb-value.js';\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new i32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return { b: b, r: r };\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 1; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n return new u8(v.subarray(s, e));\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, st, buf, dict) {\n // source length dict length\n var sl = dat.length, dl = dict ? dict.length : 0;\n if (!sl || st.f && !st.l)\n return buf || new u8(0);\n var noBuf = !buf;\n // have to estimate size\n var resize = noBuf || st.i != 2;\n // no state\n var noSt = st.i;\n // Assumes roughly 33% compression ratio average\n if (noBuf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (resize)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17\n if (resize)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (resize)\n cbuf(bt + 131072);\n var end = bt + add;\n if (bt < dt) {\n var shift = dl - dt, dend = Math.min(dt, end);\n if (shift + bt < 0)\n err(3);\n for (; bt < dend; ++bt)\n buf[bt] = dict[shift + bt];\n }\n for (; bt < end; ++bt)\n buf[bt] = buf[bt - dt];\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n // don't reallocate for streams or user buffers\n return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >> 8;\n d[o + 2] |= v >> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return { t: et, l: 0 };\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return { t: v, l: 1 };\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return { t: new u8(tr), l: mbt };\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return { c: cl.subarray(0, cli), n: s };\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n var _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n ++lcfreq[lclt[i] & 31];\n for (var i = 0; i < lcdt.length; ++i)\n ++lcfreq[lcdt[i] & 31];\n var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n if (bs >= 0 && flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n var sym = syms[i];\n if (sym > 255) {\n var len = (sym >> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (sym >> 23) & 31), p += fleb[len];\n var dst = sym & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[sym]), p += ll[sym];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, st) {\n var s = st.z || dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var lst = st.l;\n var pos = (st.r || 0) & 7;\n if (lvl) {\n if (pos)\n w[0] = st.r >> 3;\n var opt = deo[lvl - 1];\n var n = opt >> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new i32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx blkpos\n var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n for (; i + 2 < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j & 32767;\n var pti = prev[ti];\n var cd = ti - pti & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one int32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n for (i = Math.max(i, wi); i < s; ++i) {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n if (!lst) {\n st.r = (pos & 7) | w[(pos / 8) | 0] << 3;\n // shft(pos) now 1 less if pos & 7 != 0\n pos -= 7;\n st.h = head, st.p = prev, st.i = i, st.w = wi;\n }\n }\n else {\n for (var i = st.w || 0; i < s + lst; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[(pos / 8) | 0] = lst;\n e = s;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n st.i = s;\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Adler32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n if (!st) {\n st = { l: 1 };\n if (opt.dictionary) {\n var dict = opt.dictionary.subarray(-32768);\n var newDat = new u8(dict.length + dat.length);\n newDat.set(dict);\n newDat.set(dat, dict.length);\n dat = newDat;\n st.w = dict.length;\n }\n }\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return fnStr;\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n fnStr = wcln(fns[i], fnStr, td_1);\n ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };\n }\n var td = mrg({}, ch[id].e);\n return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };\nvar bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zls]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get opts\nvar gopt = function (o) { return o && {\n out: o.size && new u8(o.size),\n dictionary: o.dictionary\n}; };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id, ext) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else if (!Array.isArray(dat))\n ext(dat);\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += (d[10] | d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);\n c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;\n if (o.dictionary) {\n var h = adler();\n h.p(o.dictionary);\n wbytes(c, 2, h.d());\n }\n};\n// zlib start\nvar zls = function (d, dict) {\n if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if ((d[1] >> 5 & 1) == +!dict)\n err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');\n return (d[1] >> 3 & 4) + 2;\n};\nfunction StrmOpt(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n this.s = { l: 0, i: 32768, w: 32768, z: 32768 };\n // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev\n // 98304 = 32768 (lookback) + 65536 (common chunk size)\n this.b = new u8(98304);\n if (this.o.dictionary) {\n var dict = this.o.dictionary.subarray(-32768);\n this.b.set(dict, 32768 - dict.length);\n this.s.i = 32768 - dict.length;\n }\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, this.s), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.s.l)\n err(4);\n var endLen = chunk.length + this.s.z;\n if (endLen > this.b.length) {\n if (endLen > 2 * this.b.length - 32768) {\n var newBuf = new u8(endLen & -32768);\n newBuf.set(this.b.subarray(0, this.s.z));\n this.b = newBuf;\n }\n var split = this.b.length - this.s.z;\n if (split) {\n this.b.set(chunk.subarray(0, split), this.s.z);\n this.s.z = this.b.length;\n this.p(this.b, false);\n }\n this.b.set(this.b.subarray(-32768));\n this.b.set(chunk.subarray(split), 32768);\n this.s.z = chunk.length - split + 32768;\n this.s.i = 32766, this.s.w = 32768;\n }\n else {\n this.b.set(chunk, this.s.z);\n this.s.z += chunk.length;\n }\n this.s.l = final & 1;\n if (this.s.z > this.s.w + 8191 || final) {\n this.p(this.b, final || false);\n this.s.w = this.s.i, this.s.i -= 2;\n }\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n function Inflate(opts, cb) {\n // no StrmOpt here to avoid adding to workerizer\n if (typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);\n this.s = { i: 0, b: dict ? dict.length : 0 };\n this.o = new u8(32768);\n this.p = new u8(0);\n if (dict)\n this.o.set(dict);\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n if (!this.p.length)\n this.p = c;\n else if (c.length) {\n var n = new u8(this.p.length + c.length);\n n.set(this.p), n.set(c, this.p.length), this.p = n;\n }\n };\n Inflate.prototype.c = function (final) {\n this.s.i = +(this.d = final || false);\n var bts = this.s.b;\n var dt = inflt(this.p, this.s, this.o);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n function AsyncInflate(opts, cb) {\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Inflate(ev.data);\n onmessage = astrm(strm);\n }, 7);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, opts) {\n return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n this.l += chunk.length;\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming single or multi-member GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n function Gunzip(opts, cb) {\n this.v = 1;\n this.r = 0;\n Inflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n this.r += chunk.length;\n if (this.v) {\n var p = this.p.subarray(this.v - 1);\n var s = p.length > 3 ? gzs(p) : 4;\n if (s > p.length) {\n if (!final)\n return;\n }\n else if (this.v > 1 && this.onmember) {\n this.onmember(this.r - p.length);\n }\n this.p = p.subarray(s), this.v = 0;\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n // process concatenated GZIP\n if (this.s.f && !this.s.l) {\n this.v = shft(this.s.p) + 9;\n this.s = { i: 0 };\n this.o = new u8(0);\n if (this.p.length)\n this.push(new u8(0), final);\n }\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming single or multi-member GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n function AsyncGunzip(opts, cb) {\n var _this_1 = this;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Gunzip(ev.data);\n strm.onmember = function (offset) { return postMessage(offset); };\n onmessage = astrm(strm);\n }, 9, function (offset) { return _this_1.onmember && _this_1.onmember(offset); });\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, opts) {\n var st = gzs(data);\n if (st + 8 > data.length)\n err(6, 'invalid gzip data');\n return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n this.c.p(chunk);\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n function Unzlib(opts, cb) {\n Inflate.call(this, opts, cb);\n this.v = opts && opts.dictionary ? 2 : 1;\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 6 && !final)\n return;\n this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n function AsyncUnzlib(opts, cb) {\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, StrmOpt.call(this, opts, cb), function (ev) {\n var strm = new Unzlib(ev.data);\n onmessage = astrm(strm);\n }, 11);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, opts) {\n return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n function Decompress(opts, cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.o = StrmOpt.call(this, opts, cb) || {};\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n var _this_2 = this;\n // enables reuse of this method by AsyncDecompress\n var cb = function () { _this_2.ondata.apply(_this_2, arguments); };\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(this.o, cb)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(this.o, cb)\n : new this.Z(this.o, cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n function AsyncDecompress(opts, cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n Decompress.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param opts The decompression options\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, opts) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, opts)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, opts)\n : unzlibSync(data, opts);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return { s: r, r: slc(d, i - 1) };\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (final) {\n if (r.length)\n err(8);\n this.p = null;\n }\n else\n this.p = r;\n this.ondata(s, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td) {\n return td.decode(dat);\n }\n else {\n var _a = dutf8(dat), s = _a.s, r = _a.r;\n if (r.length)\n err(8);\n return s;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;\n if (c != -1) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c < 0 ? -c - 2 : c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this_1 = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u, -1);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this_1.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this_1.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this_1.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this_1.ondata(err, dat, final);\n _this_1.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this_1 = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this_1.d & 1))\n return;\n _this_1.u.splice(-1, 1);\n _this_1.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this_1 = this;\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this_1 = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this_1 = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this_1.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this_1.k[0] == chks_3 && _this_1.c)\n _this_1.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = lft = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, { out: new u8(su) }));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295 || c == 65535;\n if (z) {\n var ze = b4(data, e - 12);\n z = b4(data, ze) == 0x6064B50;\n if (z) {\n c = b4(data, ze + 32);\n o = b4(data, ze + 48);\n }\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","const e=(()=>{if(\"undefined\"==typeof self)return!1;if(\"top\"in self&&self!==top)try{top}catch(e){return!1}return\"showOpenFilePicker\"in self})(),t=e?Promise.resolve().then(function(){return l}):Promise.resolve().then(function(){return v});async function n(...e){return(await t).default(...e)}const r=e?Promise.resolve().then(function(){return y}):Promise.resolve().then(function(){return b});async function i(...e){return(await r).default(...e)}const a=e?Promise.resolve().then(function(){return m}):Promise.resolve().then(function(){return k});async function o(...e){return(await a).default(...e)}const s=async e=>{const t=await e.getFile();return t.handle=e,t};var c=async(e=[{}])=>{Array.isArray(e)||(e=[e]);const t=[];e.forEach((e,n)=>{t[n]={description:e.description||\"Files\",accept:{}},e.mimeTypes?e.mimeTypes.map(r=>{t[n].accept[r]=e.extensions||[]}):t[n].accept[\"*/*\"]=e.extensions||[]});const n=await window.showOpenFilePicker({id:e[0].id,startIn:e[0].startIn,types:t,multiple:e[0].multiple||!1,excludeAcceptAllOption:e[0].excludeAcceptAllOption||!1}),r=await Promise.all(n.map(s));return e[0].multiple?r:r[0]},l={__proto__:null,default:c};function u(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+\" is not an object.\"));var t=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:t}})}return u=function(e){this.s=e,this.n=e.next},u.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new u(e)}const p=async(e,t,n=e.name,r)=>{const i=[],a=[];var o,s=!1,c=!1;try{for(var l,d=function(e){var t,n,r,i=2;for(\"undefined\"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);i--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new u(t.call(e));n=\"@@asyncIterator\",r=\"@@iterator\"}throw new TypeError(\"Object is not async iterable\")}(e.values());s=!(l=await d.next()).done;s=!1){const o=l.value,s=`${n}/${o.name}`;\"file\"===o.kind?a.push(o.getFile().then(t=>(t.directoryHandle=e,t.handle=o,Object.defineProperty(t,\"webkitRelativePath\",{configurable:!0,enumerable:!0,get:()=>s})))):\"directory\"!==o.kind||!t||r&&r(o)||i.push(p(o,t,s,r))}}catch(e){c=!0,o=e}finally{try{s&&null!=d.return&&await d.return()}finally{if(c)throw o}}return[...(await Promise.all(i)).flat(),...await Promise.all(a)]};var d=async(e={})=>{e.recursive=e.recursive||!1,e.mode=e.mode||\"read\";const t=await window.showDirectoryPicker({id:e.id,startIn:e.startIn,mode:e.mode});return(await(await t.values()).next()).done?[t]:p(t,e.recursive,void 0,e.skipDirectory)},y={__proto__:null,default:d},f=async(e,t=[{}],n=null,r=!1,i=null)=>{Array.isArray(t)||(t=[t]),t[0].fileName=t[0].fileName||\"Untitled\";const a=[];let o=null;if(e instanceof Blob&&e.type?o=e.type:e.headers&&e.headers.get(\"content-type\")&&(o=e.headers.get(\"content-type\")),t.forEach((e,t)=>{a[t]={description:e.description||\"Files\",accept:{}},e.mimeTypes?(0===t&&o&&e.mimeTypes.push(o),e.mimeTypes.map(n=>{a[t].accept[n]=e.extensions||[]})):o?a[t].accept[o]=e.extensions||[]:a[t].accept[\"*/*\"]=e.extensions||[]}),n)try{await n.getFile()}catch(e){if(n=null,r)throw e}const s=n||await window.showSaveFilePicker({suggestedName:t[0].fileName,id:t[0].id,startIn:t[0].startIn,types:a,excludeAcceptAllOption:t[0].excludeAcceptAllOption||!1});!n&&i&&i(s);const c=await s.createWritable();if(\"stream\"in e){const t=e.stream();return await t.pipeTo(c),s}return\"body\"in e?(await e.body.pipeTo(c),s):(await c.write(await e),await c.close(),s)},m={__proto__:null,default:f},w=async(e=[{}])=>(Array.isArray(e)||(e=[e]),new Promise((t,n)=>{const r=document.createElement(\"input\");r.type=\"file\";const i=[...e.map(e=>e.mimeTypes||[]),...e.map(e=>e.extensions||[])].join();r.multiple=e[0].multiple||!1,r.accept=i||\"\",r.style.display=\"none\",document.body.append(r);const a=e=>{\"function\"==typeof o&&o(),t(e)},o=e[0].legacySetup&&e[0].legacySetup(a,()=>o(n),r),s=()=>{window.removeEventListener(\"focus\",s),r.remove()};r.addEventListener(\"click\",()=>{window.addEventListener(\"focus\",s)}),r.addEventListener(\"change\",()=>{window.removeEventListener(\"focus\",s),r.remove(),a(r.multiple?Array.from(r.files):r.files[0])}),\"showPicker\"in HTMLInputElement.prototype?r.showPicker():r.click()})),v={__proto__:null,default:w},h=async(e=[{}])=>(Array.isArray(e)||(e=[e]),e[0].recursive=e[0].recursive||!1,new Promise((t,n)=>{const r=document.createElement(\"input\");r.type=\"file\",r.webkitdirectory=!0;const i=e=>{\"function\"==typeof a&&a(),t(e)},a=e[0].legacySetup&&e[0].legacySetup(i,()=>a(n),r);r.addEventListener(\"change\",()=>{let t=Array.from(r.files);e[0].recursive?e[0].recursive&&e[0].skipDirectory&&(t=t.filter(t=>t.webkitRelativePath.split(\"/\").every(t=>!e[0].skipDirectory({name:t,kind:\"directory\"})))):t=t.filter(e=>2===e.webkitRelativePath.split(\"/\").length),i(t)}),\"showPicker\"in HTMLInputElement.prototype?r.showPicker():r.click()})),b={__proto__:null,default:h},P=async(e,t={})=>{Array.isArray(t)&&(t=t[0]);const n=document.createElement(\"a\");let r=e;\"body\"in e&&(r=await async function(e,t){const n=e.getReader(),r=new ReadableStream({start:e=>async function t(){return n.read().then(({done:n,value:r})=>{if(!n)return e.enqueue(r),t();e.close()})}()}),i=new Response(r),a=await i.blob();return n.releaseLock(),new Blob([a],{type:t})}(e.body,e.headers.get(\"content-type\"))),n.download=t.fileName||\"Untitled\",n.href=URL.createObjectURL(await r);const i=()=>{\"function\"==typeof a&&a()},a=t.legacySetup&&t.legacySetup(i,()=>a(),n);return n.addEventListener(\"click\",()=>{setTimeout(()=>URL.revokeObjectURL(n.href),3e4),i()}),n.click(),null},k={__proto__:null,default:P};export{i as directoryOpen,h as directoryOpenLegacy,d as directoryOpenModern,n as fileOpen,w as fileOpenLegacy,c as fileOpenModern,o as fileSave,P as fileSaveLegacy,f as fileSaveModern,e as supported};\n","import { openDB } from \"idb/with-async-ittr\";\nimport { zipSync, strToU8, unzipSync, strFromU8 } from \"fflate\";\nimport { fileSave } from \"browser-fs-access\";\nimport Globals from \"./globals\";\n\nconst N_RECORDS_SAVE = 10;\nconst N_RECORDS_MAX = 20;\n\nexport class DB {\n constructor() {\n this.dbPromise = openDB(\"os-dpi\", 4, {\n upgrade(db, oldVersion, newVersion) {\n if (oldVersion && oldVersion < 3) {\n for (const name of [\"store\", \"media\", \"saved\", \"url\"]) {\n try {\n db.deleteObjectStore(name);\n } catch (e) {\n // ignore the error\n }\n }\n } else if (oldVersion == 3) {\n db.deleteObjectStore(\"images\");\n }\n if (oldVersion < 3) {\n let objectStore = db.createObjectStore(\"store\", {\n keyPath: \"id\",\n autoIncrement: true,\n });\n objectStore.createIndex(\"by-name\", \"name\");\n objectStore.createIndex(\"by-name-type\", [\"name\", \"type\"]);\n }\n if (newVersion && newVersion >= 4) {\n db.createObjectStore(\"media\");\n }\n if (oldVersion < 3) {\n // keep track of the name and ETag (if any) of designs that have been saved\n let savedStore = db.createObjectStore(\"saved\", {\n keyPath: \"name\",\n });\n savedStore.createIndex(\"by-etag\", \"etag\");\n // track etags for urls\n db.createObjectStore(\"url\", {\n keyPath: \"url\",\n });\n }\n },\n });\n this.updateListeners = [];\n this.designName = \"\";\n this.fileName = \"\";\n this.fileHandle = null;\n this.fileVersion = 0.0;\n this.fileUid = \"\";\n }\n\n /** set the name for the current design\n * @param {string} name\n */\n setDesignName(name) {\n this.designName = name;\n document.title = name;\n }\n\n /** rename the design\n * @param {string} newName\n */\n async renameDesign(newName) {\n const db = await this.dbPromise;\n newName = await this.uniqueName(newName);\n const tx = db.transaction([\"store\", \"media\", \"saved\"], \"readwrite\");\n const index = tx.objectStore(\"store\").index(\"by-name\");\n for await (const cursor of index.iterate(this.designName)) {\n const record = { ...cursor.value };\n record.name = newName;\n cursor.update(record);\n }\n const mst = tx.objectStore(\"media\");\n for await (const cursor of mst.iterate()) {\n if (cursor && cursor.key[0] == this.designName) {\n const record = { ...cursor.value };\n const key = cursor.key;\n cursor.delete();\n key[0] = newName;\n mst.put(record, key);\n }\n }\n const cursor = await tx.objectStore(\"saved\").openCursor(this.designName);\n if (cursor) {\n cursor.delete();\n }\n await tx.done;\n this.fileHandle = null;\n this.fileName = \"\";\n\n this.notify({ action: \"rename\", name: this.designName, newName });\n this.designName = newName;\n }\n\n /**\n * return list of names of designs in the db\n * @returns {Promise}\n */\n async names() {\n const db = await this.dbPromise;\n const index = db.transaction(\"store\", \"readonly\").store.index(\"by-name\");\n const result = [];\n for await (const cursor of index.iterate(null, \"nextunique\")) {\n result.push(/** @type {string} */ (cursor.key));\n }\n return result;\n }\n\n /**\n * return list of names of saved designs in the db\n * @returns {Promise}\n */\n async saved() {\n const db = await this.dbPromise;\n const result = [];\n for (const key of await db.getAllKeys(\"saved\")) {\n result.push(key.toString());\n }\n return result;\n }\n\n /**\n * Create a unique name for new design\n * @param {string} name - the desired name\n * @returns {Promise}\n */\n async uniqueName(name = \"new\") {\n // strip off any suffix\n name = name.replace(/\\.osdpi$|\\.zip$/, \"\");\n // strip any -number off the end of base\n name = name.replace(/-\\d+$/, \"\") || name;\n // replace characters we don't want with _\n name = name.replaceAll(/[^a-zA-Z0-9]/g, \"_\");\n // replace multiple _ with one\n name = name.replaceAll(/_+/g, \"_\");\n // remove trailing _\n name = name.replace(/_+$/, \"\");\n // remove leading _\n name = name.replace(/^_+/, \"\");\n // if we're left with nothing the call it noname\n name = name || \"noname\";\n const allNames = await this.names();\n if (allNames.indexOf(name) < 0) return name;\n const base = name;\n for (let i = 1; ; i++) {\n const name = `${base}-${i}`;\n if (allNames.indexOf(name) < 0) return name;\n }\n }\n\n /** Return the most recent record for the type\n * @param {string} type\n * @param {any} defaultValue\n * @returns {Promise}\n */\n async read(type, defaultValue = {}) {\n const db = await this.dbPromise;\n const index = db\n .transaction(\"store\", \"readonly\")\n .store.index(\"by-name-type\");\n const cursor = await index.openCursor([this.designName, type], \"prev\");\n if (cursor) {\n const data = cursor.value.data;\n if (\n (Array.isArray(defaultValue) && !Array.isArray(data)) ||\n typeof data != typeof defaultValue\n ) {\n return defaultValue;\n }\n return data;\n }\n return defaultValue;\n }\n\n /**\n * Read all records of the given type\n *\n * @param {string} type\n * @returns {Promise}\n */\n async readAll(type) {\n const db = await this.dbPromise;\n const index = db\n .transaction(\"store\", \"readonly\")\n .store.index(\"by-name-type\");\n const key = [this.designName, type];\n const result = [];\n for await (const cursor of index.iterate(key)) {\n const data = cursor.value.data;\n result.push(data);\n }\n return result;\n }\n\n /** Add a new record\n * @param {string} type\n * @param {Object} data\n */\n async write(type, data) {\n const db = await this.dbPromise;\n // do all this in a transaction\n const tx = db.transaction([\"store\", \"saved\"], \"readwrite\");\n // note that this design has been updated\n await tx.objectStore(\"saved\").delete(this.designName);\n // add the record to the store\n const store = tx.objectStore(\"store\");\n await store.put({ name: this.designName, type, data });\n\n let n_max = N_RECORDS_MAX; // zero to prevent limiting\n let n_save = N_RECORDS_SAVE;\n if (type == \"content\") {\n n_max = n_save = 1; // only save 1 content record\n } else if (type == \"log\") {\n n_max = n_save = 0; // don't limit log records\n }\n\n /* Only keep the last few records per type */\n const index = store.index(\"by-name-type\");\n const key = [this.designName, type];\n if (n_max > 0) {\n // count how many we have\n let count = await index.count(key);\n if (count > n_max) {\n // get the number to delete\n let toDelete = count - n_save;\n // we're getting them in order so this will delete the oldest ones\n for await (const cursor of index.iterate(key)) {\n if (--toDelete <= 0) break;\n cursor.delete();\n }\n }\n }\n await tx.done;\n\n this.notify({ action: \"update\", name: this.designName });\n }\n\n /**\n * delete records of this type\n *\n * @param {string} type\n * @returns {Promise}\n */\n async clear(type) {\n const db = await this.dbPromise;\n const tx = db.transaction(\"store\", \"readwrite\");\n const index = tx.store.index(\"by-name-type\");\n for await (const cursor of index.iterate([this.designName, type])) {\n cursor.delete();\n }\n await tx.done;\n }\n\n /** Undo by deleting the most recent record\n * @param {string} type\n */\n async undo(type) {\n if (type == \"content\") return;\n const db = await this.dbPromise;\n const index = db\n .transaction(\"store\", \"readwrite\")\n .store.index(\"by-name-type\");\n const cursor = await index.openCursor([this.designName, type], \"prev\");\n if (cursor) await cursor.delete();\n await db.delete(\"saved\", this.designName);\n this.notify({ action: \"update\", name: this.designName });\n }\n\n /** Read a design from a local file\n * @param {import(\"browser-fs-access\").FileWithHandle} file\n */\n async readDesignFromFile(file) {\n // keep the handle so we can save to it later\n this.fileHandle = file.handle;\n return this.readDesignFromBlob(file, file.name);\n }\n\n /** Read a design from a URL\n * @param {string} url\n */\n async readDesignFromURL(url) {\n const db = await this.dbPromise;\n // have we seen this url before?\n const urlRecord = await db.get(\"url\", url);\n /** @type {HeadersInit} */\n const headers = {}; // for the fetch\n let name = \"\";\n if (urlRecord) {\n /** @type {string} */\n const etag = urlRecord.etag;\n // do we have any saved designs with this etag?\n const savedKey = await db.getKeyFromIndex(\"saved\", \"by-etag\", etag);\n if (savedKey) {\n // yes we have a previously saved design from this url\n // set the headers to check if it has changed\n headers[\"If-None-Match\"] = etag;\n name = savedKey.toString();\n }\n }\n\n const response = await fetch(url, { headers });\n if (response.status == 304) {\n // we already have it\n this.designName = name;\n return;\n }\n if (!response.ok) {\n throw new Error(`Fetching the URL (${url}) failed: ${response.status}`);\n }\n const etag = response.headers.get(\"ETag\") || \"\";\n await db.put(\"url\", { url, etag });\n\n const urlParts = new URL(url, window.location.origin);\n const pathParts = urlParts.pathname.split(\"/\");\n if (\n pathParts.length > 0 &&\n pathParts[pathParts.length - 1].endsWith(\".osdpi\")\n ) {\n name = pathParts[pathParts.length - 1];\n } else {\n throw new Error(`Design files should have .osdpi suffix`);\n }\n\n const blob = await response.blob();\n // parse the URL\n return this.readDesignFromBlob(blob, name, etag);\n }\n\n /** Read a design from a zip file\n * @param {Blob} blob\n * @param {string} filename\n * @param {string} etag\n */\n async readDesignFromBlob(blob, filename, etag = \"none\") {\n const db = await this.dbPromise;\n this.fileName = filename;\n\n const zippedBuf = await readAsArrayBuffer(blob);\n const zippedArray = new Uint8Array(zippedBuf);\n const unzipped = unzipSync(zippedArray);\n\n // normalize the fileName to make the design name\n let name = this.fileName;\n // make sure it is unique\n name = await this.uniqueName(name);\n\n this.designName = name;\n\n for (const fname in unzipped) {\n const mimetype = mime(fname) || \"application/octet-stream\";\n if (mimetype == \"application/json\") {\n const text = strFromU8(unzipped[fname]);\n let obj = {};\n try {\n obj = JSON.parse(text);\n } catch (e) {\n obj = {};\n console.trace(e);\n }\n const type = fname.split(\".\")[0];\n await this.write(type, obj);\n } else if (\n mimetype.startsWith(\"image\") ||\n mimetype.startsWith(\"audio\") ||\n mimetype.startsWith(\"video\")\n ) {\n const blob = new Blob([unzipped[fname]], {\n type: mimetype,\n });\n await db.put(\n \"media\",\n {\n name: fname,\n content: blob,\n },\n [name, fname],\n );\n }\n }\n await db.put(\"saved\", { name: this.designName, etag });\n this.notify({ action: \"update\", name: this.designName });\n return;\n }\n\n // do this part async to avoid file picker timeout\n async convertDesignToBlob() {\n const db = await this.dbPromise;\n // collect the parts of the design\n const layout = Globals.tree.toObject();\n const actions = Globals.actions.toObject();\n const content = await this.read(\"content\");\n const method = Globals.method.toObject();\n const pattern = Globals.patterns.toObject();\n const cues = Globals.cues.toObject();\n\n const zipargs = {\n \"layout.json\": strToU8(JSON.stringify(layout)),\n \"actions.json\": strToU8(JSON.stringify(actions)),\n \"content.json\": strToU8(JSON.stringify(content)),\n \"method.json\": strToU8(JSON.stringify(method)),\n \"pattern.json\": strToU8(JSON.stringify(pattern)),\n \"cues.json\": strToU8(JSON.stringify(cues)),\n };\n\n const mediaKeys = (await db.getAllKeys(\"media\")).filter((pair) =>\n Object.values(pair).includes(this.designName),\n );\n\n // add the encoded image to the zipargs\n for (const key of mediaKeys) {\n const record = await db.get(\"media\", key);\n if (record) {\n const contentBuf = await record.content.arrayBuffer();\n const contentArray = new Uint8Array(contentBuf);\n zipargs[key[1]] = contentArray;\n }\n }\n\n // zip it\n const zip = zipSync(zipargs);\n // create a blob from the zipped result\n const blob = new Blob([zip], { type: \"application/octet-stream\" });\n return blob;\n }\n\n /** Save a design into a zip file\n */\n async saveDesign() {\n const db = await this.dbPromise;\n\n const options = {\n fileName: this.fileName || this.designName + \".osdpi\",\n extensions: [\".osdpi\", \".zip\"],\n id: \"osdpi\",\n };\n try {\n await fileSave(this.convertDesignToBlob(), options, this.fileHandle);\n await db.put(\"saved\", { name: this.designName });\n } catch (error) {\n console.error(\"Export failed\");\n console.error(error);\n }\n }\n\n /** Unload a design from the database\n * @param {string} name - the name of the design to delete\n */\n async unload(name) {\n const db = await this.dbPromise;\n const tx = db.transaction(\"store\", \"readwrite\");\n const index = tx.store.index(\"by-name\");\n for await (const cursor of index.iterate(name)) {\n cursor.delete();\n }\n await tx.done;\n // delete media\n const txm = db.transaction(\"media\", \"readwrite\");\n const mediaKeys = (await txm.store.getAllKeys()).filter(\n (pair) => Object.values(pair)[0] == name,\n );\n\n // delete the media\n for (const key of mediaKeys) {\n await txm.store.delete(key);\n }\n await txm.done;\n await db.delete(\"saved\", name);\n this.notify({ action: \"unload\", name });\n }\n\n /** Return an image from the database\n * @param {string} name\n * @returns {Promise}\n */\n async getImage(name) {\n const db = await this.dbPromise;\n const record = await db.get(\"media\", [this.designName, name]);\n const img = new Image();\n if (record) {\n img.src = URL.createObjectURL(record.content);\n }\n img.title = record.name;\n return img;\n }\n\n /** Return an audio file from the database\n * @param {string} name\n * @returns {Promise}\n */\n async getAudio(name) {\n const db = await this.dbPromise;\n const record = await db.get(\"media\", [this.designName, name]);\n const audio = new Audio();\n if (record) {\n audio.src = URL.createObjectURL(record.content);\n }\n return audio;\n }\n\n /** Return an image URL from the database\n * @param {string} name\n * @returns {Promise}\n */\n async getMediaURL(name) {\n const db = await this.dbPromise;\n const record = await db.get(\"media\", [this.designName, name]);\n if (record) return URL.createObjectURL(record.content);\n else return \"\";\n }\n\n /** Add media to the database\n * @param {Blob} blob\n * @param {string} name\n */\n async addMedia(blob, name) {\n const db = await this.dbPromise;\n return await db.put(\n \"media\",\n {\n name: name,\n content: blob,\n },\n [this.designName, name],\n );\n }\n\n /** List media entries from a given store\n * @returns {Promise}\n * */\n async listMedia() {\n const db = await this.dbPromise;\n const keys = (await db.getAllKeys(\"media\")).filter(\n (key) => key[0] == this.designName, //only show resources from this design\n );\n const result = [];\n for (const key of keys) {\n result.push(key[1].toString());\n }\n return result;\n }\n\n /** delete media files\n * @param {string[]} names\n */\n async deleteMedia(...names) {\n const db = await this.dbPromise;\n const tx = db.transaction([\"media\", \"saved\"], \"readwrite\");\n const mst = tx.objectStore(\"media\");\n for await (const cursor of mst.iterate()) {\n if (\n cursor &&\n cursor.key[0] == this.designName &&\n names.includes(cursor.key[1])\n ) {\n cursor.delete();\n }\n }\n const cursor = await tx.objectStore(\"saved\").openCursor(this.designName);\n if (cursor) {\n cursor.delete();\n }\n await tx.done;\n }\n\n /** Listen for database update\n * @param {(message: UpdateNotification) =>void} callback\n */\n addUpdateListener(callback) {\n this.updateListeners.push(callback);\n }\n\n /** Notify listeners of database update\n * @param {UpdateNotification} message\n */\n notify(message) {\n for (const listener of this.updateListeners) {\n listener(message);\n }\n }\n}\n\nexport default new DB();\n\n/** Convert a blob into an array buffer\n * @param {Blob} blob */\nfunction readAsArrayBuffer(blob) {\n return new Promise((resolve) => {\n const fr = new FileReader();\n fr.onloadend = () => fr.result instanceof ArrayBuffer && resolve(fr.result);\n fr.readAsArrayBuffer(blob);\n });\n}\n\nconst mimetypes = {\n \".json\": \"application/json\",\n \".aac\": \"audio/aac\",\n \".mp3\": \"audio/mpeg\",\n \".mp4\": \"audio/mp4\",\n \".oga\": \"audio/ogg\",\n \".wav\": \"audio/wav\",\n \".weba\": \"audio/webm\",\n \".webm\": \"video/webm\",\n \".avif\": \"image/avif\",\n \".bmp\": \"image/bmp\",\n \".gif\": \"image/gif\",\n \".jpeg\": \"image/jpeg\",\n \".jpg\": \"image/jpeg\",\n \".jfif\": \"image/jpeg\",\n \".png\": \"image/png\",\n \".svg\": \"image/svg+xml\",\n \".tif\": \"image/tiff\",\n \".tiff\": \"image/tiff\",\n \".webp\": \"image/webp\",\n};\n/** Map filenames to mimetypes for unpacking the zip file\n * @param {string} fname\n */\nfunction mime(fname) {\n const extension = /\\.[-a-zA-Z0-9]+$/.exec(fname);\n if (!extension) return false;\n return mimetypes[extension] || false;\n}\n","import { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport db from \"app/db\";\nimport { html } from \"uhtml\";\n\nimport Globals from \"app/globals\";\n\nclass Audio extends TreeBase {\n stateName = new Props.String(\"$Audio\");\n\n async playAudio() {\n const { state } = Globals;\n const fileName = state.get(this.stateName.value) || \"\";\n (await db.getAudio(fileName)).play();\n }\n\n template() {\n const { state } = Globals;\n if (state.hasBeenUpdated(this.stateName.value)) {\n this.playAudio();\n }\n return html`
    `;\n }\n}\nTreeBase.register(Audio, \"Audio\");\n","import { html } from \"uhtml\";\nimport * as Props from \"./props\";\nimport { colorNamesDataList } from \"./style\";\nimport \"css/designer.css\";\nimport Globals from \"app/globals\";\nimport { TreeBase } from \"./treebase\";\nimport { callAfterRender } from \"app/render\";\nimport db from \"app/db\";\n\nexport class Designer extends TreeBase {\n stateName = new Props.String(\"$tabControl\");\n background = new Props.String(\"\");\n scale = new Props.Float(6);\n name = new Props.String(\"tabs\");\n\n hint = \"T\";\n\n allowedChildren = [\"DesignerPanel\"];\n\n /** @type {DesignerPanel[]} */\n children = [];\n\n /** @type {DesignerPanel | undefined} */\n currentPanel = undefined;\n\n template() {\n const { state } = Globals;\n const panels = this.children;\n let activeTabName = state.get(this.stateName.value);\n // collect panel info\n panels.forEach((panel, index) => {\n panel.tabName = state.interpolate(panel.name.value); // internal name\n panel.tabLabel = state.interpolate(panel.label.value || panel.name.value); // display name\n if (index == 0 && !activeTabName) {\n activeTabName = panel.tabName;\n state.define(this.stateName.value, panel.tabName);\n }\n panel.active = activeTabName == panel.tabName || panels.length === 1;\n if (panel.active) {\n this.currentPanel = panel;\n }\n });\n let buttons = [];\n buttons = panels\n .filter((panel) => panel.label.value != \"UNLABELED\")\n .map((panel) => {\n return html`
  • \n {\n this.switchTab(panel.tabName);\n }}\n tabindex=\"-1\"\n >\n ${panel.tabLabel}\n \n
  • `;\n });\n return this.component(\n { classes: [\"top\", \"tabcontrol\"] },\n html`\n
      \n ${buttons}\n
    \n \n ${panels.map((panel) => panel.settings())}\n
    \n ${colorNamesDataList()}\n `,\n );\n }\n\n /**\n * @param {string} tabName\n */\n switchTab(tabName) {\n callAfterRender(() => this.restoreFocus());\n Globals.state.update({ [this.stateName.value]: tabName });\n }\n\n /**\n * capture focusin events so we can remember what was focused last\n * @param {FocusEvent} event\n */\n focusin = (event) => {\n if (!(event.target instanceof HTMLElement)) return;\n if (event.target.hasAttribute(\"aria-selected\")) return;\n if (!this.currentPanel) return;\n const panel = document.getElementById(this.currentPanel.id);\n if (!panel) return;\n for (const element of panel.querySelectorAll(\"[aria-selected]\")) {\n element.removeAttribute(\"aria-selected\");\n }\n if (panel.contains(event.target)) {\n const id = event.target.closest(\"[id]\")?.id || \"\";\n this.currentPanel.lastFocused = id;\n event.target.setAttribute(\"aria-selected\", \"true\");\n }\n\n if (this.currentPanel.name.value == \"Layout\") {\n this.currentPanel.highlight();\n }\n };\n\n /** @returns {TreeBase | null} */\n get selectedComponent() {\n // Figure out which tab is active\n const { designer } = Globals;\n const panel = designer.currentPanel;\n\n // Ask that tab which component is focused\n if (!panel?.lastFocused) {\n console.log(\"no lastFocused\");\n return null;\n }\n const component = TreeBase.componentFromId(panel.lastFocused);\n if (!component) {\n console.log(\"no component\");\n return null;\n }\n return component;\n }\n\n restoreFocus() {\n if (this.currentPanel) {\n if (this.currentPanel.lastFocused) {\n let targetId = this.currentPanel.lastFocused;\n let elem = document.getElementById(targetId);\n if (!elem) {\n // perhaps this one is embeded, look for something that starts with it\n const m = targetId.match(/^TreeBase-\\d+/);\n if (m) {\n const prefix = m[0];\n elem = document.querySelector(`[id^=${prefix}]`);\n }\n }\n if (elem) elem.focus();\n } else {\n const panelNode = document.getElementById(this.currentPanel.id);\n if (panelNode) {\n const focusable = /** @type {HTMLElement} */ (\n panelNode.querySelector(\n \"button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), \" +\n 'textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled]), ' +\n \"summary:not(:disabled)\",\n )\n );\n\n if (focusable) {\n focusable.focus();\n } else {\n panelNode.focus();\n }\n }\n }\n }\n }\n\n /**\n * @param {KeyboardEvent} event\n */\n keyHandler = (event) => {\n if (!this.currentPanel) return;\n if (\n event.target instanceof HTMLButtonElement &&\n event.target.matches(\"#designer .buttons button\")\n ) {\n this.tabButtonKeyHandler(event);\n } else {\n const panel = document.getElementById(this.currentPanel.id);\n if (\n panel &&\n event.target instanceof HTMLElement &&\n panel.contains(event.target)\n ) {\n this.panelKeyHandler(event);\n }\n }\n };\n /**\n * @param {KeyboardEvent} event\n */\n panelKeyHandler(event) {\n if (event.target instanceof HTMLTextAreaElement) return;\n if (event.key != \"ArrowDown\" && event.key != \"ArrowUp\") return;\n if (event.shiftKey) {\n // move the component\n const component = Globals.designer.selectedComponent;\n if (!component) return;\n component.moveUpDown(event.key == \"ArrowUp\");\n callAfterRender(() => Globals.designer.restoreFocus());\n Globals.state.update();\n } else {\n event.preventDefault();\n // get the components on this panel\n // todo expand this to all components\n const components = [\n ...document.querySelectorAll(\".DesignerPanel.ActivePanel .settings\"),\n ];\n // determine which one contains the focus\n const focusedComponent = document.querySelector(\n '.DesignerPanel.ActivePanel .settings:has([aria-selected=\"true\"]):not(:has(.settings [aria-selected=\"true\"]))',\n );\n if (!focusedComponent) return;\n // get its index\n const index = components.indexOf(focusedComponent);\n // get the next index\n const nextIndex = Math.min(\n components.length - 1,\n Math.max(0, index + (event.key == \"ArrowUp\" ? -1 : 1)),\n );\n if (nextIndex != index) {\n // focus on the first focusable in the next component\n const focusable = /** @type {HTMLElement} */ (\n components[nextIndex].querySelector(\n \"button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), \" +\n 'textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled]), ' +\n \"summary:not(:disabled)\",\n )\n );\n if (focusable) {\n focusable.focus();\n }\n }\n }\n }\n\n /**\n * @param {KeyboardEvent} event\n */\n tabButtonKeyHandler({ key }) {\n const tabButtons = /** @type {HTMLButtonElement[]} */ ([\n ...document.querySelectorAll(\"#designer .buttons button\"),\n ]);\n const focused = /** @type {HTMLButtonElement} */ (\n document.querySelector(\"#designer .buttons button:focus\")\n );\n if (key == \"Escape\") {\n Globals.designer.restoreFocus();\n } else if (key.startsWith(\"Arrow\")) {\n const index = tabButtons.indexOf(focused);\n const step = key == \"ArrowUp\" || key == \"ArrowLeft\" ? -1 : 1;\n let nextIndex = (index + step + tabButtons.length) % tabButtons.length;\n tabButtons[nextIndex].focus();\n } else if (key == \"Home\") {\n tabButtons[0].focus();\n } else if (key == \"End\") {\n tabButtons[tabButtons.length - 1].focus();\n } else if (\n key.length == 1 &&\n ((key >= \"a\" && key <= \"z\") || (key >= \"A\" && key <= \"Z\"))\n ) {\n const index = tabButtons.indexOf(focused);\n for (let i = 1; i < tabButtons.length; i++) {\n const j = (index + i) % tabButtons.length;\n if (tabButtons[j].innerText.toLowerCase().startsWith(key)) {\n tabButtons[j].focus();\n break;\n }\n }\n }\n }\n\n /** Tweak the focus behavior in the designer\n * I want clicking on blank space to focus the nearest focusable element\n\n * @param {KeyboardEvent} event\n */\n designerClick = (event) => {\n // return if target is not an HTMLElement\n if (!(event.target instanceof HTMLElement)) return;\n\n const panel = document.querySelector(\"#designer .designer div.panels\");\n // return if not in designer\n if (!panel) return;\n // return if click is not inside the panel\n if (!panel.contains(event.target)) return;\n // check for background elements\n if (\n event.target instanceof HTMLDivElement ||\n event.target instanceof HTMLFieldSetElement ||\n event.target instanceof HTMLTableRowElement ||\n event.target instanceof HTMLTableCellElement ||\n event.target instanceof HTMLDetailsElement\n ) {\n if (event.target.matches('[tabindex=\"0\"]')) return;\n /** @type {HTMLElement | null} */\n let target = event.target;\n while (target) {\n const focusable = /** @type {HTMLElement} */ (\n target.querySelector(\n \"button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), \" +\n 'textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled]), ' +\n \"summary:not(:disabled)\",\n )\n );\n if (focusable) {\n focusable.focus();\n break;\n }\n target = target.parentElement;\n }\n }\n };\n}\nTreeBase.register(Designer, \"Designer\");\n\nexport class DesignerPanel extends TreeBase {\n name = new Props.String(\"\");\n label = new Props.String(\"\");\n\n /** @type {Designer | null} */\n parent = null;\n\n active = false;\n tabName = \"\";\n tabLabel = \"\";\n lastFocused = \"\";\n\n // where to store in the db\n static tableName = \"\";\n // default value if it isn't found\n static defaultValue = {};\n\n /** @returns {string} */\n get staticTableName() {\n // @ts-expect-error\n return this.constructor.tableName;\n }\n\n /**\n * Load a panel from the database.\n *\n * I don't know why I have to pass the class as a parameter to get the types\n * to work. Why can't I refer to this in the static method which should be\n * the class.\n *\n * @template {DesignerPanel} T\n * @param {new()=>T} expected\n * @returns {Promise}\n */\n static async load(expected) {\n let obj = await db.read(this.tableName, this.defaultValue);\n obj = this.upgrade(obj);\n const result = this.fromObject(obj);\n if (result instanceof expected) {\n result.configure();\n return result;\n }\n // I don't think this happens\n return this.create(expected);\n }\n\n /**\n * Render the details of a components settings\n */\n settingsDetails() {\n const caption = this.active ? \"Active\" : \"Activate\";\n let details = super.settingsDetails();\n if (!Array.isArray(details)) details = [details];\n return [\n ...details,\n html` {\n if (this.parent) {\n const parent = this.parent;\n callAfterRender(() => {\n Globals.layout.highlight();\n });\n parent.switchTab(this.name.value);\n }\n }}\n >\n ${caption}\n `,\n ];\n }\n\n highlight() {}\n\n /**\n * An opportunity to upgrade the format if needed\n * @param {any} obj\n * @returns {Object}\n */\n static upgrade(obj) {\n return obj;\n }\n\n configure() {}\n\n onUpdate() {\n const tableName = this.staticTableName;\n if (tableName) {\n db.write(tableName, this.toObject());\n Globals.state.update();\n }\n }\n\n async undo() {\n const tableName = this.staticTableName;\n if (tableName) {\n await db.undo(tableName);\n Globals.restart();\n }\n }\n\n /** @param {string[]} classes\n * @returns {string}\n */\n CSSClasses(...classes) {\n classes.push(\"DesignerPanel\");\n if (this.active) {\n classes.push(\"ActivePanel\");\n }\n return super.CSSClasses(...classes);\n }\n}\n","import { html, render } from \"uhtml\";\nimport \"css/wait.css\";\n\n/**\n * Handle displaying a \"please wait\" message and error reporting for\n * async functions that may take a while or throw errors\n * @template T\n * @param {Promise} promise\n * @param {string} message\n * @returns {Promise}\n */\nexport default async function wait(promise, message = \"Please wait\") {\n const div = document.createElement(\"div\");\n div.id = \"PleaseWait\";\n document.body.appendChild(div);\n const timer = window.setTimeout(() => {\n render(div, html`

    ${message}

    `);\n }, 500);\n try {\n const result = await promise;\n clearTimeout(timer);\n div.remove();\n return result;\n } catch (e) {\n console.trace(\"wait error\");\n clearTimeout(timer);\n return new Promise((resolve) => {\n render(\n div,\n html`
    \n

    ${e.message}

    \n {\n div.remove();\n resolve(e.message);\n }}\n >\n OK\n \n
    `,\n );\n });\n }\n}\n","import { html, render } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport { DesignerPanel } from \"./designer\";\nimport * as Props from \"./props\";\nimport db from \"app/db\";\nimport \"css/content.css\";\nimport pleaseWait from \"./wait\";\nimport Globals from \"app/globals\";\n\n/** @param {Blob} blob */\nexport async function readSheetFromBlob(blob) {\n const XLSX = await import(\"xlsx\");\n const data = await blob.arrayBuffer();\n const workbook = XLSX.read(data, { codepage: 65001 });\n /** @type {Rows} */\n const dataArray = [];\n for (const sheetName of workbook.SheetNames) {\n const sheet = workbook.Sheets[sheetName];\n const ref = sheet[\"!ref\"];\n if (!ref) continue;\n const range = XLSX.utils.decode_range(ref);\n const names = [];\n const handlers = [];\n const validColumns = [];\n // process the header and choose a handler for each column\n for (let c = range.s.c; c <= range.e.c; c++) {\n let columnName = sheet[XLSX.utils.encode_cell({ r: 0, c })]?.v;\n if (typeof columnName !== \"string\" || !columnName) {\n continue;\n }\n columnName = columnName.toLowerCase();\n names.push(columnName.trim(\" \"));\n validColumns.push(c);\n switch (columnName) {\n case \"row\":\n case \"column\":\n case \"page\":\n handlers.push(\"number\");\n break;\n default:\n handlers.push(\"string\");\n break;\n }\n }\n // Process the rows\n for (let r = range.s.r + 1; r <= range.e.r; r++) {\n /** @type {Row} */\n const row = { sheetName };\n for (let i = 0; i < validColumns.length; i++) {\n /** @type {string} */\n const name = names[i];\n const c = validColumns[i];\n let value = sheet[XLSX.utils.encode_cell({ r, c })]?.v;\n switch (handlers[i]) {\n case \"string\":\n if (typeof value === \"undefined\") {\n value = \"\";\n }\n if (typeof value !== \"string\") {\n value = value.toString(10);\n }\n if (value && typeof value === \"string\") {\n row[name] = value;\n }\n break;\n case \"number\":\n if (typeof value === \"number\") {\n row[name] = Math.floor(value);\n } else if (value && typeof value === \"string\") {\n value = parseInt(value, 10);\n if (isNaN(value)) {\n value = 0;\n }\n row[name] = value;\n }\n break;\n }\n }\n if (Object.keys(row).length > 1) dataArray.push(row);\n }\n }\n return dataArray;\n}\n\n/** Save the content as a spreadsheet\n * @param {string} name\n * @param {Row[]} rows\n * @param {string} type\n */\nexport async function saveContent(name, rows, type) {\n const XLSX = await pleaseWait(import(\"xlsx\"));\n const sheetNames = new Set(rows.map((row) => row.sheetName || \"sheet1\"));\n const workbook = XLSX.utils.book_new();\n for (const sheetName of sheetNames) {\n let sheetRows = rows.filter(\n (row) => sheetName == (row.sheetName || \"sheet1\"),\n );\n if (type != \"csv\") {\n sheetRows = sheetRows.map((row) => {\n const { sheetName, ...rest } = row;\n return rest;\n });\n }\n const worksheet = XLSX.utils.json_to_sheet(sheetRows);\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);\n }\n XLSX.writeFileXLSX(workbook, `${name}.${type}`);\n}\n\nexport class Content extends DesignerPanel {\n name = new Props.String(\"Content\");\n\n lastFocused = this.id;\n\n /** Delete the media files that are checked */\n async deleteSelected() {\n // list the names that are checked\n const toDelete = [\n ...document.querySelectorAll(\n \"#ContentMedia input[type=checkbox]:checked\",\n ),\n ].map((element) => {\n // clear the checks as we go\n const checkbox = /** @type{HTMLInputElement} */ (element);\n checkbox.checked = false;\n return checkbox.name;\n });\n const selectAll = /** @type {HTMLInputElement} */ (\n document.getElementById(\"ContentSelectAll\")\n );\n if (selectAll) selectAll.checked = false;\n // delete them\n await pleaseWait(db.deleteMedia(...toDelete));\n // refresh the page\n Globals.state.update();\n }\n\n /** Check or uncheck all the media file checkboxes */\n selectAll({ target }) {\n for (const element of document.querySelectorAll(\n '#ContentMedia input[type=\"checkbox\"]',\n )) {\n const checkbox = /** @type {HTMLInputElement} */ (element);\n checkbox.checked = target.checked;\n }\n }\n\n settings() {\n const data = Globals.data;\n return html`
    \n
    \n

    Content

    \n

    \n ${data.allrows.length} rows with these fields:\n ${String([...data.allFields].sort()).replaceAll(\",\", \", \")}\n

    \n

    Media files

    \n \n Select All\n {\n db.listMedia().then((names) => {\n const list = names.map(\n (name) =>\n html`
  • \n \n
  • `,\n );\n render(ol, html`${list}`);\n });\n }}\n >\n
    \n
    `;\n }\n}\nTreeBase.register(Content, \"Content\");\n","import { html } from \"uhtml\";\nimport { saveContent } from \"./content\";\nimport { TreeBase } from \"./treebase\";\nimport db from \"app/db\";\nimport * as Props from \"./props\";\nimport Globals from \"app/globals\";\nimport { access } from \"app/eval\";\nimport \"css/logger.css\";\n\nexport class Logger extends TreeBase {\n // name = new Props.String(\"Log\");\n stateName = new Props.String(\"$Log\");\n logUntil = new Props.ADate();\n\n // I expect a string like #field1 $state1 $state2 #field3\n logThese = new Props.TextArea(\"\", {\n validate: this.validate,\n placeholder: \"Enter state and field names to log\",\n });\n\n // I expect a string listing event names to log\n logTheseEvents = new Props.TextArea(\"\", {\n validate: this.validateEventNames,\n placeholder: \"Enter names of events to log\",\n });\n\n /**\n * @param {string} s\n * @returns {string}\n */\n validate(s) {\n return /^(?:[#$]\\w+\\s*)*$/.test(s) ? \"\" : \"Invalid input\";\n }\n\n /**\n * Check for strings that look like event names\n *\n * @param {string} s\n * @returns {string}\n */\n validateEventNames(s) {\n return /^(?:\\w+\\s*)*$/.test(s) ? \"\" : \"Invalid input\";\n }\n\n template() {\n const { state, actions } = Globals;\n const stateName = this.stateName.value;\n const logUntil = this.logUntil.value;\n const logThese = this.logThese.value;\n const logging =\n !!state.get(stateName) && logUntil && new Date() < new Date(logUntil);\n const getValue = access(state, actions.last.data);\n\n if (logging) {\n const names = logThese.split(/\\s+/);\n const record = {};\n for (const name of names) {\n const value = getValue(name);\n if (value) {\n record[name] = value;\n }\n }\n this.log(record);\n }\n\n return html``;\n }\n\n /** Log a record to the database\n * @param {Object} record\n * @returns {void}\n */\n log(record) {\n const DateTime = new Date().toLocaleDateString(\"en-US\", {\n fractionalSecondDigits: 2,\n hour12: false,\n hour: \"numeric\",\n minute: \"numeric\",\n second: \"numeric\",\n });\n record = { DateTime, ...record };\n db.write(\"log\", record);\n }\n\n init() {\n super.init();\n this.onUpdate();\n }\n\n /** @type {Set} */\n listeners = new Set();\n onUpdate() {\n const UI = document.getElementById(\"UI\");\n if (!UI) return;\n // cancel any listeners that are currently active\n for (const eventName of this.listeners) {\n UI.removeEventListener(eventName, this);\n }\n this.listeners.clear();\n\n // listen for each of the listed events\n for (const match of this.logTheseEvents.value.matchAll(/\\w+/g)) {\n UI.addEventListener(match[0], this);\n this.listeners.add(match[0]);\n }\n }\n\n typesToInclude = new Set([\"boolean\", \"number\", \"string\"]);\n propsToExclude = new Set([\n \"isTrusted\",\n \"bubbles\",\n \"cancelBubble\",\n \"cancelable\",\n \"defaultPrevented\",\n \"eventPhase\",\n \"returnValue\",\n \"timeStamp\",\n ]);\n /**\n * Make this object a listener\n * @param {Event} e\n */\n handleEvent(e) {\n // grab all the fields of the event that are simple types\n const record = {};\n for (const prop in e) {\n // skip all upper case and _\n if (/^[A-Z_]+$/.test(prop)) continue;\n const value = e[prop];\n if (this.propsToExclude.has(prop)) continue;\n if (!this.typesToInclude.has(typeof value)) continue;\n record[prop] = value;\n }\n this.log(record);\n }\n}\nTreeBase.register(Logger, \"Logger\");\n\nexport async function SaveLogs() {\n let toSave = await db.readAll(\"log\");\n if (toSave.length > 0) {\n await saveContent(\"log\", toSave, \"xlsx\");\n } else {\n Globals.error.report(\"No log records to be saved.\");\n Globals.state.update();\n }\n}\n\nexport async function ClearLogs() {\n await db.clear(\"log\");\n}\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport { DesignerPanel } from \"./designer\";\nimport \"css/layout.css\";\nimport db from \"app/db\";\nimport Globals from \"app/globals\";\nimport { TabPanel } from \"./tabcontrol\";\nimport { callAfterRender } from \"app/render\";\nimport { ModalDialog } from \"./modal-dialog\";\n\nconst emptyPage = {\n className: \"Page\",\n props: {},\n children: [\n {\n className: \"Speech\",\n props: {},\n children: [],\n },\n ],\n};\n\n// map old names to new for the transition\nconst typeToClassName = {\n audio: \"Audio\",\n stack: \"Stack\",\n page: \"Page\",\n grid: \"Grid\",\n speech: \"Speech\",\n button: \"Button\",\n logger: \"Logger\",\n gap: \"Gap\",\n option: \"Option\",\n radio: \"Radio\",\n vsd: \"VSD\",\n \"modal dialog\": \"ModalDialog\",\n \"tab control\": \"TabControl\",\n \"tab panel\": \"TabPanel\",\n display: \"Display\",\n};\n\nexport class Layout extends DesignerPanel {\n allowDelete = false;\n\n static tableName = \"layout\";\n static defaultValue = emptyPage;\n\n settings() {\n return html` {\n const { key, ctrlKey } = event;\n if ((key == \"H\" || key == \"h\") && ctrlKey) {\n event.preventDefault();\n this.highlight();\n }\n }}\n >\n ${this.children[0].settings()}\n `;\n }\n\n allowedChildren = [\"Page\"];\n\n /**\n * An opportunity to upgrade the format if needed\n * @param {any} obj\n * @returns {Object}\n */\n static upgrade(obj) {\n /** @param {Object} obj */\n function oldToNew(obj) {\n if (\"type\" in obj) {\n // convert to new representation\n const newObj = {\n children: obj.children.map((/** @type {Object} */ child) =>\n oldToNew(child),\n ),\n };\n if (\"filters\" in obj.props) {\n for (const filter of obj.props.filters) {\n newObj.children.push({\n className: \"GridFilter\",\n props: { ...filter },\n children: [],\n });\n }\n }\n newObj.className = typeToClassName[obj.type];\n const { filters, ...props } = obj.props;\n newObj.props = props;\n obj = newObj;\n }\n return obj;\n }\n obj = oldToNew(obj);\n // upgrade from the old format\n return {\n className: \"Layout\",\n props: { name: \"Layout\" },\n children: [obj],\n };\n }\n\n toObject() {\n return this.children[0].toObject();\n }\n\n /** Update the state\n */\n onUpdate() {\n db.write(\"layout\", this.children[0].toObject());\n Globals.state.update();\n }\n\n /** Allow highlighting the current component in the UI\n */\n highlight() {\n // clear any existing highlight\n for (const element of document.querySelectorAll(\"#UI [highlight]\")) {\n element.removeAttribute(\"highlight\");\n }\n // find the selection in the panel\n let selected = document.querySelector(\"#UI [aria-selected]\");\n if (!selected) return;\n selected = selected.closest(\"[id]\");\n if (!selected) return;\n const id = selected.id;\n if (!id) return;\n let component = TreeBase.componentFromId(id);\n if (component) {\n const element = document.getElementById(component.id);\n if (element) {\n element.setAttribute(\"highlight\", \"component\");\n return;\n }\n // the component is not currently visible. Find its nearest visible parent\n component = component.parent;\n while (component) {\n const element = document.getElementById(component.id);\n if (element) {\n element.setAttribute(\"highlight\", \"parent\");\n return;\n }\n component = component.parent;\n }\n }\n }\n\n makeVisible() {\n let component = Globals.designer.selectedComponent;\n if (component) {\n const element = document.getElementById(component.id);\n if (element) {\n return; // already visible\n }\n // climb the tree scheduling updates to parent to make this component visible\n component = component.parent;\n let patch = {};\n while (component) {\n if (\n component instanceof TabPanel &&\n component.parent &&\n component.parent.currentPanel != component\n ) {\n patch[component.parent.stateName.value] = component.name.value;\n } else if (component instanceof ModalDialog) {\n patch[component.stateName.value] = 1;\n }\n component = component.parent;\n }\n callAfterRender(() => this.highlight());\n Globals.state.update(patch);\n }\n }\n}\nTreeBase.register(Layout, \"Layout\");\n","import { html } from \"uhtml\";\nimport { TreeBase } from \"./treebase\";\nimport * as Props from \"./props\";\nimport { DesignerPanel } from \"./designer\";\nimport \"css/actions.css\";\nimport Globals from \"app/globals\";\n\nexport class Actions extends DesignerPanel {\n name = new Props.String(\"Actions\");\n scale = new Props.Float(1);\n\n allowedChildren = [\"Action\"];\n\n static tableName = \"actions\";\n static defaultValue = {\n className: \"Actions\",\n props: {},\n children: [],\n };\n\n /** @type {Action[]} */\n children = [];\n last = {\n /** @type {Action|Null} */\n rule: null,\n /** @type {Row} */\n data: {},\n /** @type {string} */\n event: \"\",\n /** @type {string} */\n origin: \"\",\n };\n\n allowDelete = false;\n\n configure() {\n this.applyRules(\"init\", \"init\", {});\n }\n\n /** @typedef {Object} eventQueueItem\n * @property {string} origin\n * @property {string} event\n */\n\n /** @type {eventQueueItem[]} */\n eventQueue = [];\n\n /** queue an event from within an event handler\n * @param {String} origin\n * @param {String} event\n */\n queueEvent(origin, event) {\n this.eventQueue.push({ origin, event });\n }\n\n /**\n * Attempt to apply a rule\n *\n * @param {string} origin - name of the originating element\n * @param {string} event - type of event that occurred, i.e.press\n * @param {Object} data - data associated with the event\n */\n applyRules(origin, event, data) {\n // console.trace({ origin, event, data });\n this.last = { origin, event, data, rule: null };\n // first for the event then for any that got queued.\n for (;;) {\n for (const rule of this.children) {\n if (origin != rule.origin.value && rule.origin.value != \"*\") {\n continue;\n }\n const result = rule.conditions.every((restriction) =>\n restriction.Condition.valueInContext({ data }),\n );\n if (result) {\n this.last.rule = rule;\n const patch = Object.fromEntries(\n rule.updates.map((update) => [\n update.stateName.value,\n update.newValue.valueInContext({ data }),\n ]),\n );\n Globals.state.update(patch);\n break;\n }\n }\n if (this.eventQueue.length == 0) break;\n const item = this.eventQueue.pop();\n if (item) {\n origin = item.origin;\n event = item.event;\n }\n data = {};\n }\n }\n\n /**\n * Pass event to rules\n *\n * @param {string} origin - name of the originating element\n * @param {Object} data - data associated with the event\n * @param {string} [event] - optional name for the event\n * @return {(event:Event) => void}\n */\n handler(origin, data, event) {\n return (e) => {\n let ev = event;\n if (e instanceof PointerEvent && e.altKey) {\n ev = \"alt-\" + event;\n }\n this.applyRules(origin, ev || e.type, data);\n };\n }\n\n /** @returns {Set} */\n allStates() {\n const result = new Set();\n for (const rule of this.children) {\n for (const condition of rule.conditions) {\n for (const [match] of condition.Condition.text.matchAll(/\\$\\w+/g)) {\n result.add(match);\n }\n }\n for (const update of rule.updates) {\n result.add(update.stateName.value);\n for (const [match] of update.newValue.text.matchAll(/\\$\\w+/g)) {\n result.add(match);\n }\n }\n }\n return result;\n }\n\n settings() {\n const { actions } = Globals;\n const rule = this.last.rule;\n return html`\n \n \n \n \n \n \n \n \n \n \n \n \n ${actions.children.map((action) => {\n const updates = action.updates;\n const rs = updates.length;\n const used = action === actions.last.rule;\n /** @param {ActionUpdate} update */\n function showUpdate(update) {\n return html`\n \n \n `;\n }\n return html`\n \n \n \n ${!rs\n ? html`\n `\n : showUpdate(updates[0])}\n \n ${updates.slice(1).map(\n (update) =>\n html`\n ${showUpdate(update)}\n `,\n )}\n `;\n })}\n
    OriginConditionsUpdates
    StateNew value
    ${update.stateName.input()}${update.newValue.input()}
    ${action.origin.input()}\n
    \n ${action.conditions.map(\n (condition) =>\n html`
    \n ${condition.Condition.input()}\n
    `,\n )}\n
    \n
    \n `;\n }\n\n /** @param {any} actions */\n static upgrade(actions) {\n // convert from the old format if necessary\n if (Array.isArray(actions)) {\n actions = {\n className: \"Actions\",\n props: {},\n children: actions.map((action) => {\n let { event, origin, conditions, updates } = action;\n const children = [];\n for (const condition of conditions) {\n children.push({\n className: \"ActionCondition\",\n props: { Condition: condition },\n children: [],\n });\n }\n for (const [$var, value] of Object.entries(updates)) {\n children.push({\n className: \"ActionUpdate\",\n props: { stateName: $var, newValue: value },\n children: [],\n });\n }\n if (event == \"init\") origin = \"init\";\n return {\n className: \"Action\",\n props: { origin },\n children,\n };\n }),\n };\n }\n return actions;\n }\n}\nTreeBase.register(Actions, \"Actions\");\n\nclass Action extends TreeBase {\n allowedChildren = [\"ActionCondition\", \"ActionUpdate\"];\n /** @type {(ActionCondition | ActionUpdate)[]} */\n children = [];\n\n origin = new Props.String(\"\", { hiddenLabel: true });\n\n get conditions() {\n return this.filterChildren(ActionCondition);\n }\n\n get updates() {\n return this.filterChildren(ActionUpdate);\n }\n\n init() {\n super.init();\n if (this.children.length == 0) {\n // add a condition and update if none are present\n TreeBase.create(ActionCondition, this, {}).init();\n TreeBase.create(ActionUpdate, this, {}).init();\n }\n }\n}\nTreeBase.register(Action, \"Action\");\n\nexport class ActionCondition extends TreeBase {\n Condition = new Props.Conditional(\"\", {\n hiddenLabel: true,\n valueWhenEmpty: true,\n });\n\n /** move my parent instead of me.\n * @param {boolean} up\n */\n moveUpDown(up) {\n this.parent?.moveUpDown(up);\n }\n}\nTreeBase.register(ActionCondition, \"ActionCondition\");\n\nexport class ActionUpdate extends TreeBase {\n stateName = new Props.String(\"\", { hiddenLabel: true });\n newValue = new Props.Expression(\"\", { hiddenLabel: true });\n\n /** move my parent instead of me.\n * @param {boolean} up\n */\n moveUpDown(up) {\n this.parent?.moveUpDown(up);\n }\n}\nTreeBase.register(ActionUpdate, \"ActionUpdate\");\n","/** Global Hot Keys for keyboard access */\n\nimport Globals from \"app/globals\";\nimport \"css/hotkeys.css\";\n\nfunction showHints() {\n document.body.classList.add(\"hints\");\n}\n\nfunction clearHints() {\n document.body.classList.remove(\"hints\");\n}\n\nfunction editMode() {\n Globals.state.update({ editing: true });\n}\n\nfunction userMode() {\n Globals.state.update({ editing: false });\n clearHints();\n}\n\n/**\n * Click a toolbar input based on its hint\n * @param {string} key\n */\nfunction clickToolbar(key) {\n clearHints();\n const hint = document.querySelector(`.toolbar div[hint=\"${key}\" i]`);\n if (hint) {\n const input = /** @type {HTMLInputElement} */ (\n hint.querySelector(\"button,input\")\n );\n input.focus();\n input.click();\n }\n}\n\n/**\n * Focus on the UI part of the designer for testing keyboard input\n * @returns {void}\n */\nfunction focusUI() {\n clearHints();\n document.getElementById(\"UI\")?.focus();\n}\n\n/**\n * Restore focus to the designer panel\n * @returns {void}\n */\nfunction focusPanel() {\n clearHints();\n Globals.designer.restoreFocus();\n}\n\nfunction focusTabs() {\n clearHints();\n const currentTab = /** @type {HTMLButtonElement} */ (\n document.querySelector(\"#designer #tabs .buttons button[active]\")\n );\n console.log({ currentTab });\n if (currentTab) {\n currentTab.focus();\n return;\n }\n const tabs = /** @type {HTMLButtonElement[]} */ ([\n ...document.querySelectorAll(\".designing #designer #tabs .buttons button\"),\n ]);\n if (!tabs.length) return;\n tabs[0].focus();\n}\n\n/** Implement a state machine for managing the hotkeys\n * @enum {string}\n */\nconst State = {\n user: \"user\",\n userA: \"userA\",\n editing: \"editing\",\n hints: \"hints\",\n};\n\n/** @type {State | undefined} */\nlet state = undefined;\n\n/**\n * State machine transition table\n * @typedef {Object} Transition\n * @property {State} state - current state\n * @property {RegExp} key - input key\n * @property {State} next - next state\n * @property {Function} [call] - function to call on entering\n */\n\n/** @type {Transition[]} */\n// prettier-ignore\nconst transitions = [\n { state: State.user, key: /alt/i, next: State.userA },\n { state: State.userA, key: /d/i, next: State.editing, call: editMode },\n { state: State.editing, key: /alt/i, next: State.hints, call: showHints },\n { state: State.hints, key: /d/i, next: State.user, call: userMode },\n { state: State.hints, key: /[nfeah]/i,next: State.editing, call: clickToolbar },\n { state: State.hints, key: /t/i, next: State.editing, call: focusTabs },\n { state: State.hints, key: /u/i, next: State.editing, call: focusUI },\n { state: State.hints, key: /p/i, next: State.editing, call: focusPanel },\n { state: State.hints, key: /shift/i, next: State.hints },\n { state: State.hints, key: /.*/i, next: State.editing, call: clearHints },\n];\n\n/** Toolbar activation and hints\n *\n * @param {KeyboardEvent} event */\nfunction HotKeyHandler(event) {\n if (!Globals.state) return;\n if (!state) {\n // initialize the state on first call\n state = Globals.state.get(\"editing\") ? State.editing : State.user;\n }\n const key = event.key;\n if (!key) return;\n for (const T of transitions) {\n if (T.state == state) {\n const match = key.match(T.key);\n if (match && match[0].length === key.length) {\n // exact match\n event.preventDefault();\n if (event.repeat) break; // kill key repeat\n state = T.next;\n if (T.call) {\n T.call(key);\n }\n break;\n }\n }\n }\n}\ndocument.addEventListener(\"keydown\", HotKeyHandler, { capture: true });\n\nwindow.addEventListener(\"blur\", () => {\n clearHints();\n});\n","import { html } from \"uhtml\";\n// import \"css/customize.css\";\nimport { TreeBase } from \"components/treebase\";\nimport * as Props from \"components/props\";\nimport Globals from \"app/globals\";\n\n/**\n * Customize component allows modifying the CSS of the UI to\n * adjust colors, size and placement of elements.\n */\nexport class Customize extends TreeBase {\n name = new Props.String(\"Style\");\n css = new Props.Code(\"\", { placeholder: \"Enter CSS\", label: \"CSS\" });\n\n /** @type {string[]} */\n allowedChildren = [];\n\n template() {\n return html``;\n }\n}\nTreeBase.register(Customize, \"Customize\");\n","import db from \"app/db\";\n\n/**\n * An image that is extracted from the database\n */\nexport class imgFromDb extends HTMLImageElement {\n // watch for changes in dbsrc\n static get observedAttributes() {\n return [\"dbsrc\", \"refresh\"];\n }\n\n /**\n * Handle changes in dbsrc\n * @param {string} name\n * @param {string} _\n * @param {string} newValue */\n attributeChangedCallback(name, _, newValue) {\n if (name === \"dbsrc\" && newValue) {\n this.updateSrcFromDb(newValue);\n }\n }\n\n /**\n * Look again at the db which may have changed\n */\n async refresh() {\n const url = this.getAttribute(\"dbsrc\") || \"\";\n return this.updateSrcFromDb(url);\n }\n\n /** Update the img src from the db or the provided url\n * @param {string} url\n */\n async updateSrcFromDb(url) {\n // if it contains a slash treat it like an external url\n // if not, fetch it from the db\n if (url && url.indexOf(\"/\") < 0) url = await db.getMediaURL(url);\n if (url) {\n this.src = url;\n this.dispatchEvent(new Event(\"load\", { bubbles: true }));\n }\n }\n}\ncustomElements.define(\"img-db\", imgFromDb, { extends: \"img\" });\n","import db from \"app/db\";\n\n/**\n * A video that is extracted from the database\n */\nexport class videoFromDb extends HTMLVideoElement {\n // watch for changes in dbsrc\n static get observedAttributes() {\n return [\"dbsrc\", \"refresh\"];\n }\n\n /**\n * Handle changes in dbsrc\n * @param {string} name\n * @param {string} _\n * @param {string} newValue */\n attributeChangedCallback(name, _, newValue) {\n if (name === \"dbsrc\" && newValue) {\n this.updateSrcFromDb(newValue);\n }\n }\n\n /**\n * Look again at the db which may have changed\n */\n async refresh() {\n const url = this.getAttribute(\"dbsrc\") || \"\";\n return this.updateSrcFromDb(url);\n }\n\n /** Update the img src from the db or the provided url\n * @param {string} url\n */\n async updateSrcFromDb(url) {\n // if it contains a slash treat it like an external url\n // if not, fetch it from the db\n if (url && url.indexOf(\"/\") < 0) url = await db.getMediaURL(url);\n if (url) this.src = url;\n }\n}\ncustomElements.define(\"video-db\", videoFromDb, { extends: \"video\" });\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n//# sourceMappingURL=of.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { createOperatorSubscriber } from './OperatorSubscriber';\nexport function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return function (source, subscriber) {\n var hasState = hasSeed;\n var state = seed;\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (function () {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\n//# sourceMappingURL=scanInternals.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.js.map","import { map } from './map';\nexport function mapTo(value) {\n return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap(function (value, index) { return innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration = timer(due, scheduler);\n return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { distinctUntilChanged } from './distinctUntilChanged';\nexport function distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });\n}\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber, OperatorSubscriber } from './OperatorSubscriber';\nexport function groupBy(keySelector, elementOrOptions, duration, connector) {\n return operate(function (source, subscriber) {\n var element;\n if (!elementOrOptions || typeof elementOrOptions === 'function') {\n element = elementOrOptions;\n }\n else {\n (duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector);\n }\n var groups = new Map();\n var notify = function (cb) {\n groups.forEach(cb);\n cb(subscriber);\n };\n var handleError = function (err) { return notify(function (consumer) { return consumer.error(err); }); };\n var activeGroups = 0;\n var teardownAttempted = false;\n var groupBySourceSubscriber = new OperatorSubscriber(subscriber, function (value) {\n try {\n var key_1 = keySelector(value);\n var group_1 = groups.get(key_1);\n if (!group_1) {\n groups.set(key_1, (group_1 = connector ? connector() : new Subject()));\n var grouped = createGroupedObservable(key_1, group_1);\n subscriber.next(grouped);\n if (duration) {\n var durationSubscriber_1 = createOperatorSubscriber(group_1, function () {\n group_1.complete();\n durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe();\n }, undefined, undefined, function () { return groups.delete(key_1); });\n groupBySourceSubscriber.add(innerFrom(duration(grouped)).subscribe(durationSubscriber_1));\n }\n }\n group_1.next(element ? element(value) : value);\n }\n catch (err) {\n handleError(err);\n }\n }, function () { return notify(function (consumer) { return consumer.complete(); }); }, handleError, function () { return groups.clear(); }, function () {\n teardownAttempted = true;\n return activeGroups === 0;\n });\n source.subscribe(groupBySourceSubscriber);\n function createGroupedObservable(key, groupSubject) {\n var result = new Observable(function (groupSubscriber) {\n activeGroups++;\n var innerSub = groupSubject.subscribe(groupSubscriber);\n return function () {\n innerSub.unsubscribe();\n --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\n//# sourceMappingURL=groupBy.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mergeAll } from './mergeAll';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from '../observable/from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n args = argsOrArgArray(args);\n return operate(function (source, subscriber) {\n mergeAll(concurrent)(from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=merge.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { merge } from './merge';\nexport function mergeWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return merge.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=mergeWith.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/innerFrom';\nexport function retry(configOrCount) {\n if (configOrCount === void 0) { configOrCount = Infinity; }\n var config;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n }\n else {\n config = {\n count: configOrCount,\n };\n }\n var _a = config.count, count = _a === void 0 ? Infinity : _a, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b;\n return count <= 0\n ? identity\n : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRetry = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n }, undefined, function (err) {\n if (soFar++ < count) {\n var resub_1 = function () {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n else {\n syncUnsub = true;\n }\n };\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n var notifierSubscriber_1 = createOperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n resub_1();\n }, function () {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n resub_1();\n }\n }\n else {\n subscriber.error(err);\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\n//# sourceMappingURL=retry.js.map","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n//# sourceMappingURL=scan.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function skipWhile(predicate) {\n return operate(function (source, subscriber) {\n var taking = false;\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=skipWhile.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate(function (source, subscriber) {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=takeUntil.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n var tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n//# sourceMappingURL=tap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n return operate(function (source, subscriber) {\n var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n var startThrottle = function (value) {\n return (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n };\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=throttle.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration$ = timer(duration, scheduler);\n return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","export default {\n className: \"MethodChooser\",\n props: {},\n children: [\n {\n className: \"Method\",\n props: {\n Name: \"2 switch\",\n Key: \"idl6e14meiwzjdcquhgk9\",\n KeyDebounce: 0.1,\n PointerEnterDebounce: 0,\n PointerDownDebounce: 0,\n Active: \"false\",\n Pattern: \"DefaultPattern\",\n },\n children: [\n {\n className: \"KeyHandler\",\n props: { Signal: \"keyup\" },\n children: [\n {\n className: \"HandlerKeyCondition\",\n props: { Key: \" \" },\n children: [],\n },\n {\n className: \"HandlerKeyCondition\",\n props: { Key: \"ArrowRight\" },\n children: [],\n },\n {\n className: \"ResponderNext\",\n props: { Response: \"ResponderNext\" },\n children: [],\n },\n ],\n },\n {\n className: \"KeyHandler\",\n props: { Signal: \"keyup\" },\n children: [\n {\n className: \"HandlerKeyCondition\",\n props: { Key: \"Enter\" },\n children: [],\n },\n {\n className: \"HandlerKeyCondition\",\n props: { Key: \"ArrowLeft\" },\n children: [],\n },\n {\n className: \"ResponderActivate\",\n props: { Response: \"ResponderActivate\" },\n children: [],\n },\n ],\n },\n ],\n },\n {\n className: \"Method\",\n props: {\n Name: \"Pointer dwell\",\n Key: \"idl6wcdmjjkb48xmbxscn\",\n KeyDebounce: 0,\n PointerEnterDebounce: 0.1,\n PointerDownDebounce: 0.1,\n Active: \"false\",\n Pattern: \"idl83jg7qtj9wmyggtxf\",\n },\n children: [\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerover\" },\n children: [\n {\n className: \"ResponderCue\",\n props: { Response: \"ResponderCue\", Cue: \"idl7qm4cs28fh2ogf4ni\" },\n children: [],\n },\n {\n className: \"ResponderStartTimer\",\n props: {\n Response: \"ResponderStartTimer\",\n TimerName: \"idl7yrtido633vxa1bb1v\",\n },\n children: [],\n },\n ],\n },\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerout\" },\n children: [\n {\n className: \"ResponderClearCue\",\n props: { Response: \"ResponderClearCue\" },\n children: [],\n },\n ],\n },\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerdown\" },\n children: [\n {\n className: \"ResponderActivate\",\n props: { Response: \"ResponderActivate\" },\n children: [],\n },\n ],\n },\n {\n className: \"Timer\",\n props: {\n Interval: \"1.5\",\n Name: \"dwell\",\n Key: \"idl7yrtido633vxa1bb1v\",\n },\n children: [],\n },\n {\n className: \"TimerHandler\",\n props: { Signal: \"timer\", TimerName: \"idl7yrtido633vxa1bb1v\" },\n children: [\n {\n className: \"ResponderActivate\",\n props: { Response: \"ResponderActivate\" },\n children: [],\n },\n ],\n },\n ],\n },\n {\n className: \"Method\",\n props: {\n Name: \"Mouse\",\n KeyDebounce: 0,\n PointerEnterDebounce: 0,\n PointerDownDebounce: 0,\n Key: \"idl84ljjeoebyl94sow87\",\n Active: \"true\",\n Pattern: \"idl83jg7qtj9wmyggtxf\",\n },\n children: [\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerdown\" },\n children: [\n {\n className: \"ResponderActivate\",\n props: { Response: \"ResponderActivate\" },\n children: [],\n },\n ],\n },\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerover\" },\n children: [\n {\n className: \"ResponderCue\",\n props: { Response: \"ResponderCue\", Cue: \"idl7qm4cs28fh2ogf4ni\" },\n children: [],\n },\n ],\n },\n {\n className: \"PointerHandler\",\n props: { Signal: \"pointerout\" },\n children: [\n {\n className: \"ResponderClearCue\",\n props: { Response: \"ResponderClearCue\" },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n};\n","import { html } from \"uhtml\";\n\n/**\n * Interpolate values into a string using {{name}} for values to replace\n * @param {string} template - string to edit\n * @param {Object} values - values to interpolate\n * @returns {string} - interpolated string\n */\nexport function interpolate(template, values) {\n return template.replaceAll(\n /{{\\s*(\\w+)\\s*}}/g,\n (_, name) => values[name]?.toString() || \"\",\n );\n}\n\n/**\n * Convert a name from camelCase to Camel Case\n * @param {string} name\n * @returns {string}\n */\nexport function fromCamelCase(name) {\n return name\n .replace(/(?!^)([A-Z][a-z])/g, \" $1\")\n .replace(/^./, (s) => s.toUpperCase());\n}\n\n/**\n * Conditionally show an indicator with a title\n *\n * @param {boolean} toggle\n * @param {string} title\n * @returns {Hole}\n */\nexport function toggleIndicator(toggle, title) {\n if (toggle) {\n return html``;\n } else {\n return html``;\n }\n}\n","import { html } from \"uhtml\";\nimport { TreeBase, TreeBaseSwitchable } from \"components/treebase\";\nimport * as Props from \"components/props\";\nimport Globals from \"app/globals\";\nimport * as RxJs from \"rxjs\";\n// make sure the classes are registered\nimport defaultMethods from \"./defaultMethods\";\nimport { DesignerPanel } from \"components/designer\";\nimport \"css/method.css\";\nimport { toggleIndicator } from \"app/components/helpers\";\n\n// allow tearing down handlers when changing configurations\nconst stop$ = new RxJs.Subject();\n\nexport class MethodChooser extends DesignerPanel {\n name = new Props.String(\"Methods\");\n\n allowedChildren = [\"Method\"];\n /** @type {Method[]} */\n children = [];\n\n allowDelete = false;\n\n static tableName = \"method\";\n static defaultValue = defaultMethods;\n\n onUpdate() {\n super.onUpdate();\n this.configure();\n }\n\n configure() {\n // tear down the old configuration if any\n this.stop();\n for (const method of this.children) {\n method.configure(stop$);\n }\n }\n\n stop() {\n stop$.next(1);\n }\n\n settings() {\n return html`
    \n ${this.unorderedChildren()}\n
    `;\n }\n\n refresh() {\n this.children\n .filter((child) => child.Active.value)\n .forEach((child) => child.refresh());\n }\n\n /**\n * Upgrade Methods\n * @param {any} obj\n * @returns {Object}\n */\n static upgrade(obj) {\n // Debounce moves up to the method from the individual handlers\n // Take the maximum of all times for each category\n if (obj.className != \"MethodChooser\") return obj;\n\n for (const method of obj.children) {\n if (method.className != \"Method\") {\n throw new Error(\"Invalid Method upgrade\");\n }\n if (!(\"KeyDebounce\" in method.props)) {\n let keyDebounce = 0;\n let enterDebounce = 0;\n let downDebounce = 0;\n for (const handler of method.children) {\n if ([\"PointerHandler\", \"KeyHandler\"].includes(handler.className)) {\n const debounce = parseFloat(handler.props.Debounce || \"0\");\n const signal = handler.props.Signal;\n if (signal.startsWith(\"key\")) {\n keyDebounce = Math.max(keyDebounce, debounce);\n } else if ([\"pointerover\", \"pointerout\"].includes(signal)) {\n enterDebounce = Math.max(enterDebounce, debounce);\n } else if ([\"pointerdown\", \"pointerup\"].includes(signal)) {\n downDebounce = Math.max(downDebounce, debounce);\n }\n }\n }\n method.props.KeyDebounce = keyDebounce.toString();\n method.props.PointerEnterDebounce = enterDebounce.toString();\n method.props.PointerDownDebounce = downDebounce.toString();\n }\n if (!(\"Pattern\" in method.props)) {\n /* guess the best pattern to use\n * Prior to this upgrade PointerHandlers ignored the pattern. Now they don't.\n * To avoid breaking Methods that using PointerHandlers I'm defaulting them\n * to the NullPattern. This won't fix everything for sure but it shoudl help.\n */\n let pattern = \"DefaultPattern\";\n if (\n method.children.some(\n (/** @type {Object} */ handler) =>\n handler.className == \"PointerHandler\",\n )\n ) {\n pattern = \"NullPattern\";\n }\n method.props.Pattern = pattern;\n }\n }\n return obj;\n }\n}\nTreeBase.register(MethodChooser, \"MethodChooser\");\n\nexport class Method extends TreeBase {\n Name = new Props.String(\"New method\");\n Pattern = new Props.Pattern({ defaultValue: \"DefaultPattern\" });\n KeyDebounce = new Props.Float(0, { label: \"Key down/up\" });\n PointerEnterDebounce = new Props.Float(0, { label: \"Pointer enter/leave\" });\n PointerDownDebounce = new Props.Float(0, { label: \"Pointer down/up\" });\n Key = new Props.UID();\n Active = new Props.OneOfGroup(false, { group: \"ActiveMethod\" });\n\n allowedChildren = [\n \"Timer\",\n \"KeyHandler\",\n \"PointerHandler\",\n \"TimerHandler\",\n \"SocketHandler\",\n ];\n\n open = false;\n\n // Event streams from the devices\n /** @type {Object>} */\n streams = {};\n\n /** clear the pointerStream on any changes from below\n * @param {TreeBase} _start\n */\n onUpdate(_start) {\n super.onUpdate(_start);\n }\n\n /** @type {(Handler | Timer)[]} */\n children = [];\n\n /** Return a Map from Timer Key to the Timer\n * @returns {Map}\n * */\n get timers() {\n return new Map(\n this.filterChildren(Timer).map((child) => [child.Key.value, child]),\n );\n }\n\n /** Return a Map from Timer Key to its Name */\n get timerNames() {\n return new Map(\n this.filterChildren(Timer).map((timer) => [\n timer.Key.value,\n timer.Name.value,\n ]),\n );\n }\n\n /** Return a Timer given its key\n * @param {string} key\n * */\n timer(key) {\n return this.filterChildren(Timer).find((timer) => timer.Key.value == key);\n }\n\n /** Cancel all active Timers\n */\n cancelTimers() {\n for (const timer of this.timers.values()) {\n timer.cancel();\n }\n }\n\n /** Return an array of the Handlers */\n get handlers() {\n return this.filterChildren(Handler);\n }\n\n settingsSummary() {\n const { Name, Active } = this;\n return html`

    \n ${Name.value} ${toggleIndicator(Active.value, \"Active\")}\n

    `;\n }\n\n settingsDetails() {\n const {\n Name,\n Pattern,\n Active,\n KeyDebounce,\n PointerEnterDebounce,\n PointerDownDebounce,\n } = this;\n const timers = [...this.timers.values()];\n // determine which debounce controls we should display\n const handlerClasses = new Set(\n this.handlers.map((handler) => handler.className),\n );\n const keyDebounce = handlerClasses.has(\"KeyHandler\")\n ? [KeyDebounce.input()]\n : [];\n const pointerDebounce = handlerClasses.has(\"PointerHandler\")\n ? [PointerDownDebounce.input(), PointerEnterDebounce.input()]\n : [];\n const Debounce =\n handlerClasses.has(\"KeyHandler\") || handlerClasses.has(\"PointerHandler\")\n ? [\n html`
    \n Debounce\n ${keyDebounce} ${pointerDebounce}\n
    `,\n ]\n : [];\n return [\n html`
    \n ${Name.input()} ${Active.input()} ${Pattern.input()} ${Debounce}\n ${timers.length > 0\n ? [\n html`
    \n Timers\n ${this.unorderedChildren(timers)}\n
    `,\n ]\n : []}\n
    \n Handlers\n ${this.orderedChildren(this.handlers)}\n
    \n
    `,\n ];\n }\n\n settingsChildren() {\n return html`
    `;\n }\n\n /** Configure the rxjs pipelines to implement this method */\n /** @param {RxJs.Subject} stop$\n * */\n configure(stop$) {\n if (this.Active.value) {\n this.streams = {};\n for (const child of this.handlers) {\n child.configure(stop$);\n }\n const streams = Object.values(this.streams);\n if (streams.length > 0) {\n const stream$ = RxJs.merge(...streams).pipe(RxJs.takeUntil(stop$));\n stream$.subscribe((e) => {\n for (const handler of this.handlers) {\n if (handler.test(e)) {\n handler.respond(e);\n return;\n }\n }\n });\n }\n }\n }\n\n get pattern() {\n return Globals.patterns.patternFromKey(this.Pattern.value);\n }\n\n /** Refresh the pattern and other state on redraw */\n refresh() {\n this.pattern.refresh();\n }\n}\nTreeBase.register(Method, \"Method\");\n\nclass Timer extends TreeBase {\n Interval = new Props.Float(0.5, { hiddenLabel: true });\n Name = new Props.String(\"timer\", { hiddenLabel: true });\n Key = new Props.UID();\n\n /** @type {RxJs.Subject} */\n subject$ = new RxJs.Subject();\n\n settings() {\n return html`
    \n ${this.Name.input()} ${this.Interval.input()}\n \n
    `;\n }\n\n /** @param {EventLike} event */\n start(event) {\n const fakeEvent = /** @type {EventLike} */ ({\n type: \"timer\",\n target: event.target,\n access: event.access,\n });\n this.subject$.next(fakeEvent);\n }\n\n cancel() {\n const event = { type: \"cancel\", target: null, timeStamp: 0 };\n this.subject$.next(event);\n }\n}\nTreeBase.register(Timer, \"Timer\");\n\n/** Handler is a base class for all event handlers */\nexport class Handler extends TreeBase {\n /** @type {(HandlerCondition | HandlerKeyCondition | HandlerResponse)[]} */\n children = [];\n\n /** Return the method containing this Handler */\n get method() {\n return /** @type {Method} */ (this.parent);\n }\n\n // overridden in the derived classes\n Signal = new Props.Select();\n\n get conditions() {\n return this.filterChildren(HandlerCondition);\n }\n\n get keys() {\n return this.filterChildren(HandlerKeyCondition);\n }\n\n get responses() {\n return this.filterChildren(HandlerResponse);\n }\n\n /**\n * Test the conditions for this handler\n * @param {EventLike} event\n * @returns {boolean}\n */\n test(event) {\n return (\n this.Signal.value == event.type &&\n this.conditions.every((condition) =>\n condition.eval({ data: event.access }),\n )\n );\n }\n\n /**\n * @param {RxJs.Subject} _stop$\n * */\n configure(_stop$) {\n throw new TypeError(\"Must override configure\");\n }\n\n /** @param {EventLike} event */\n respond(event) {\n const method = this.nearestParent(Method);\n if (!method) return;\n method.cancelTimers();\n for (const response of this.responses) {\n response.respond(event);\n }\n }\n}\n\nexport class HandlerCondition extends TreeBase {\n Condition = new Props.Conditional(\"\", { hiddenLabel: true });\n\n settings() {\n const { Condition } = this;\n return html`
    ${Condition.input()}
    `;\n }\n\n /** @param {EvalContext} context */\n eval(context) {\n return this.Condition.valueInContext(context);\n }\n\n /** move my parent instead of me.\n * @param {boolean} up\n */\n moveUpDown(up) {\n this.parent?.moveUpDown(up);\n }\n}\nTreeBase.register(HandlerCondition, \"HandlerCondition\");\n\nexport class HandlerKeyCondition extends HandlerCondition {\n Key = new Props.KeyName(\"\", {\n placeholder: \"Press Enter to edit\",\n hiddenLabel: true,\n });\n\n settings() {\n const { Key } = this;\n return html`
    ${Key.input()}
    `;\n }\n\n /** @param {EvalContext} context */\n eval(context) {\n return this.Key.value == context.data.key;\n }\n}\nTreeBase.register(HandlerKeyCondition, \"HandlerKeyCondition\");\n\nconst ResponderTypeMap = new Map([\n [\"HandlerResponse\", \"none\"],\n [\"ResponderCue\", \"cue\"],\n [\"ResponderActivate\", \"activate\"],\n [\"ResponderClearCue\", \"clear cue\"],\n [\"ResponderEmit\", \"emit\"],\n [\"ResponderNext\", \"next\"],\n [\"ResponderStartTimer\", \"start timer\"],\n]);\n\nexport class HandlerResponse extends TreeBaseSwitchable {\n Response = new Props.TypeSelect(ResponderTypeMap, { hiddenLabel: true });\n\n /** @param {EventLike} event */\n respond(event) {\n console.log(\"no response for\", event);\n }\n\n settings() {\n return html`
    \n ${this.Response.input()} ${this.subTemplate()}\n
    `;\n }\n\n subTemplate() {\n return html`
    `;\n }\n\n /** move my parent instead of me.\n * @param {boolean} up\n */\n moveUpDown(up) {\n this.parent?.moveUpDown(up);\n }\n}\nTreeBase.register(HandlerResponse, \"HandlerResponse\");\n","export default {\n className: \"PatternList\",\n props: {\n direction: \"\",\n background: \"\",\n scale: 1,\n name: \"Patterns\",\n label: \"\",\n },\n children: [\n {\n className: \"PatternManager\",\n props: {\n Cycles: \"2\",\n Cue: \"DefaultCue\",\n Name: \"None\",\n Key: \"idl83jg7qtj9wmyggtxf\",\n Active: false,\n },\n children: [],\n },\n {\n className: \"PatternManager\",\n props: {\n Cycles: \"2\",\n Cue: \"DefaultCue\",\n Name: \"Row Column\",\n Key: \"idl83jjo4z0ibii6748fx\",\n Active: true,\n },\n children: [\n {\n className: \"PatternSelector\",\n props: {},\n children: [\n {\n className: \"GroupBy\",\n props: {\n GroupBy: \"#row\",\n Name: \"Row #row\",\n Cue: \"DefaultCue\",\n Cycles: \"2\",\n },\n children: [],\n },\n ],\n },\n ],\n },\n {\n className: \"PatternManager\",\n props: {\n Cycles: 2,\n Cue: \"DefaultCue\",\n Name: \"Column Row\",\n Key: \"idlh6dwljzc1nwvfrrp9v\",\n Active: false,\n },\n children: [\n {\n className: \"PatternSelector\",\n props: {},\n children: [\n {\n className: \"GroupBy\",\n props: {\n GroupBy: \"#column\",\n Name: \"Column #column\",\n Cue: \"DefaultCue\",\n Cycles: 2,\n },\n children: [],\n },\n ],\n },\n ],\n },\n {\n className: \"PatternManager\",\n props: {\n Cycles: \"2\",\n Cue: \"DefaultCue\",\n Name: \"Controls and Rows\",\n Key: \"idl83jjo4z0ibii6748fx\",\n Active: false,\n },\n children: [\n {\n className: \"PatternGroup\",\n props: { Name: \"Controls\", Cycles: \"2\", Cue: \"DefaultCue\" },\n children: [\n {\n className: \"PatternSelector\",\n props: {},\n children: [\n {\n className: \"Filter\",\n props: { Filter: \"#controls\" },\n children: [],\n },\n {\n className: \"OrderBy\",\n props: { OrderBy: \"#controls\" },\n children: [],\n },\n ],\n },\n ],\n },\n {\n className: \"PatternSelector\",\n props: {},\n children: [\n {\n className: \"Filter\",\n props: { Filter: \"! #controls\" },\n children: [],\n },\n {\n className: \"GroupBy\",\n props: {\n GroupBy: \"#ComponentName\",\n Name: \" Component\",\n Cue: \"DefaultCue\",\n Cycles: \"2\",\n },\n children: [],\n },\n {\n className: \"GroupBy\",\n props: {\n GroupBy: \"#row\",\n Name: \"Row #row\",\n Cue: \"DefaultCue\",\n Cycles: \"2\",\n },\n children: [],\n },\n ],\n },\n ],\n },\n ],\n};\n","import { html } from \"uhtml\";\nimport \"css/pattern.css\";\nimport Globals from \"app/globals\";\nimport * as Props from \"components/props\";\nimport { TreeBase } from \"components/treebase\";\nimport defaultPatterns from \"./defaultPatterns\";\nimport { DesignerPanel } from \"components/designer\";\nimport { toggleIndicator } from \"app/components/helpers\";\n\n// only run one animation at a time\nlet animationNonce = 0;\n\n/** @param {Target} target\n * @param {string} defaultValue */\nexport function cueTarget(target, defaultValue) {\n if (target instanceof HTMLButtonElement) {\n target.setAttribute(\"cue\", defaultValue);\n const video = target.querySelector(\"video\");\n if (video && !video.hasAttribute(\"autoplay\")) {\n if (video.hasAttribute(\"muted\")) video.muted = true;\n const promise = video.play();\n if (promise !== undefined) {\n promise\n .then(() => {})\n .catch((error) => {\n console.log(\"autoplay prevented\", error);\n });\n }\n }\n } else if (target instanceof Group) {\n target.cue();\n }\n}\n\nexport function clearCues() {\n for (const element of document.querySelectorAll(\"#UI [cue]\")) {\n element.removeAttribute(\"cue\");\n const video = element.querySelector(\"video\");\n if (video && !video.hasAttribute(\"autoplay\")) {\n video.pause();\n video.currentTime = 0;\n }\n }\n}\n\n/**\n * Group is a collection of Buttons or Groups and associated properties such as\n * the label and cue.\n */\nexport class Group {\n /**\n * @param {Target[]} members\n * @param {Object} props\n */\n constructor(members, props) {\n /** @type {Target[]} */\n this.members = members;\n this.access = props;\n }\n\n get length() {\n return this.members.length * +this.access.Cycles;\n }\n\n /** @param {Number} index */\n member(index) {\n if (index < 0 || index >= this.length) {\n return undefined;\n } else {\n return this.members[index % this.members.length];\n }\n }\n\n /** @param {string} value */\n cue(value = \"\") {\n if (!value) {\n value = this.access.Cue;\n }\n for (const member of this.members) {\n if (member instanceof HTMLButtonElement) cueTarget(member, value);\n else if (member instanceof Group) member.cue(value);\n }\n }\n\n /** Test if this group contains a button return the top-level index if so, -1 if not\n * @param {HTMLButtonElement} button\n * @returns {number}\n */\n contains(button) {\n for (let i = 0; i < this.members.length; i++) {\n const member = this.members[i];\n if (\n member === button ||\n (member instanceof Group && member.contains(button) >= 0)\n )\n return i;\n }\n return -1;\n }\n}\n\nclass PatternBase extends TreeBase {\n /** @type {PatternBase[]} */\n children = [];\n\n /**\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n return input;\n }\n}\n\nexport class PatternList extends DesignerPanel {\n name = new Props.String(\"Patterns\");\n allowDelete = false;\n\n allowedChildren = [\"PatternManager\"];\n /** @type {PatternManager[]} */\n children = [];\n\n static tableName = \"pattern\";\n static defaultValue = defaultPatterns;\n\n settings() {\n return html`
    \n ${this.unorderedChildren()}\n
    `;\n }\n\n /**\n * @returns {PatternManager}\n */\n get activePattern() {\n return (\n this.children.find((child) => child.Active.value) || this.children[0]\n );\n }\n\n get patternMap() {\n /** @type {[string,string][]} */\n const entries = this.children.map((child) => [\n child.Key.value,\n child.Name.value,\n ]);\n entries.unshift([\"DefaultPattern\", \"Default Pattern\"]);\n entries.unshift([\"NullPattern\", \"No Pattern\"]);\n return new Map(entries);\n }\n\n /**\n * return the pattern given its key\n * @param {string} key\n */\n patternFromKey(key) {\n let result;\n if (key === \"NullPattern\") {\n return nullPatternManager;\n }\n result = this.children.find((pattern) => pattern.Key.value == key);\n if (!result) {\n result = this.activePattern;\n }\n return result;\n }\n}\nTreeBase.register(PatternList, \"PatternList\");\n\nexport class PatternManager extends PatternBase {\n allowedChildren = [\"PatternSelector\", \"PatternGroup\"];\n\n /** @type {Group} */\n targets = new Group([], {});\n /**\n * Stack keeps track of the nesting as we walk the tree\n *\n * @type {{ group: Group; index: number }[]}\n */\n stack = [];\n\n /**\n * @type {Boolean} - cue is active when true\n */\n cued = false;\n\n // props\n Cue = new Props.Cue({ defaultValue: \"DefaultCue\" });\n Name = new Props.String(\"a pattern\");\n Key = new Props.UID();\n Active = new Props.OneOfGroup(false, {\n group: \"pattern-active\",\n label: \"Default\",\n });\n\n settingsSummary() {\n const { Name, Active } = this;\n return html`

    \n ${Name.value} ${toggleIndicator(Active.value, \"Active\")}\n

    `;\n }\n\n settingsDetails() {\n const { Cue, Name, Active } = this;\n return [\n html`\n
    \n ${Name.input()} ${Active.input()} ${Cue.input()}\n {\n this.animate();\n }}\n >\n Animate\n \n ${this.orderedChildren()}\n
    \n `,\n ];\n }\n\n settingsChildren() {\n return html`
    `;\n }\n\n /**\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n let members = [];\n for (const child of this.children) {\n const r = child.apply(input);\n if (r.length > 0) {\n if (r instanceof Group) {\n members.push(r);\n } else {\n members = members.concat(r);\n }\n }\n }\n if (members.length > 0) return [new Group(members, this.propsAsObject)];\n else return [];\n }\n\n /** Collect the nodes from the DOM and process them into targets */\n refresh() {\n // gather the buttons from the UI\n const buttons = [];\n for (const node of /** @type {NodeListOf} */ (\n document.querySelectorAll(\"#UI button:not(:disabled)\")\n )) {\n buttons.push(node);\n }\n\n let members = [];\n if (this.children.length) {\n for (const child of this.children) {\n const r = child.apply(buttons);\n if (r.length > 0) {\n if (r instanceof Group) {\n members.push(r);\n } else {\n members = members.concat(r);\n }\n }\n }\n } else {\n members = buttons;\n }\n this.targets = new Group(members, { ...this.propsAsObject, Cycles: 1 });\n this.stack = [{ group: this.targets, index: 0 }];\n this.cue();\n\n // stop any running animations\n animationNonce += 1;\n }\n\n /**\n * Current keeps track of the currently active node or group\n *\n * @type {Target | undefined}\n */\n get current() {\n const { group, index } = this.stack[0];\n return group.member(index);\n }\n\n next() {\n const top = this.stack[0];\n if (top.index < top.group.length - 1) {\n top.index++;\n } else if (this.stack.length > 1) {\n this.stack.shift();\n } else if (this.stack.length == 1) {\n top.index = 0;\n } else {\n // stack is empty ignore\n }\n this.cue();\n }\n\n /** @param {EventLike} event */\n activate(event) {\n const target = event.target;\n if (target) {\n // adjust the stack to accomodate the target\n for (;;) {\n const top = this.stack[0];\n const newIndex = top.group.members.indexOf(target);\n if (newIndex >= 0) {\n top.index = newIndex;\n break;\n }\n if (this.stack.length == 1) {\n top.index = 0;\n break;\n } else {\n this.stack.shift();\n }\n }\n }\n let current = this.current;\n if (!current) return;\n if (current instanceof Group) {\n while (current.length == 1 && current.members[0] instanceof Group) {\n current = current.members[0];\n }\n // I need to work out the index here. Should be the group under the pointer\n this.stack.unshift({ group: current, index: event?.groupIndex || 0 });\n } else if (current instanceof HTMLButtonElement) {\n if (current.hasAttribute(\"click\")) {\n current.dispatchEvent(new Event(\"Activate\"));\n } else {\n const name = current.dataset.ComponentName;\n Globals.actions.applyRules(name || \"\", \"press\", current.dataset);\n }\n }\n this.cue();\n }\n\n clearCue() {\n this.cued = false;\n clearCues();\n }\n\n cue() {\n this.clearCue();\n const current = this.current;\n if (!current) return;\n this.cued = true;\n cueTarget(current, this.Cue.value);\n }\n\n /** Return the access info for current\n */\n getCurrentAccess() {\n const current = this.current;\n if (!current) return {};\n if (current instanceof HTMLButtonElement) {\n return current.dataset;\n } else if (current instanceof Group) {\n return { ...current.access };\n }\n return {};\n }\n\n /** Map the event target to a group\n * @param {EventLike} event\n * @returns {EventLike}\n */\n remapEventTarget(event) {\n event = {\n type: event.type,\n target: event.target,\n timeStamp: event.timeStamp,\n };\n if (event.target instanceof HTMLButtonElement) {\n event.access = event.target.dataset;\n }\n if (!event.target) return event;\n event.originalTarget = event.target;\n for (let level = 0; level < this.stack.length; level++) {\n const group = this.stack[level].group;\n const members = group.members;\n // first scan to see if the element is top level in this group\n let index = members.indexOf(event.target);\n if (index >= 0) {\n if (level === 0) {\n return event;\n } else {\n return {\n ...event,\n target: group,\n groupIndex: index,\n access: { ...event.access, ...group.access },\n };\n }\n } else if (event.target instanceof HTMLButtonElement) {\n // otherwise check to see if any group members contain it\n for (index = 0; index < members.length; index++) {\n const member = members[index];\n if (member instanceof Group) {\n let i = member.contains(event.target);\n if (i >= 0) {\n return {\n ...event,\n target: member,\n groupIndex: i,\n access: { ...event.access, ...member.access },\n };\n }\n }\n }\n }\n }\n return event;\n }\n\n async animate() {\n /** @param {Group} group\n * @param {string} cue\n */\n function* animateGroup(group, cue) {\n const cycles = +group.access.Cycles;\n const groupTime = 500;\n const buttonTime = Math.max(\n 100,\n Math.min(500, 600 / group.members.length),\n );\n for (let cycle = 0; cycle < cycles; cycle++) {\n for (const member of group.members) {\n cueTarget(member, cue);\n yield new Promise((resolve) =>\n setTimeout(\n resolve,\n member instanceof Group ? groupTime : buttonTime,\n ),\n );\n clearCues();\n if (member instanceof Group) {\n yield* animateGroup(member, cue);\n }\n }\n }\n }\n this.clearCue();\n this.refresh();\n\n // kill any running animations and save the new value\n let nonce = ++animationNonce;\n\n for (const promise of animateGroup(this.targets, this.Cue.value)) {\n await promise;\n // quit if the animationNonce changes\n if (nonce !== animationNonce) return;\n }\n }\n}\nPatternBase.register(PatternManager, \"PatternManager\");\n\nconst nullPatternManager = TreeBase.create(PatternManager);\n\nexport class PatternGroup extends PatternBase {\n // props\n Name = new Props.String(\"\");\n Cycles = new Props.Integer(2, { min: 1 });\n Cue = new Props.Cue({ defaultValue: \"DefaultCue\" });\n\n allowedChildren = [\"PatternGroup\", \"PatternSelector\"];\n\n settings() {\n const { Name, Cycles, Cue } = this;\n return html`
    \n Group: ${Name.value}\n ${Name.input()} ${Cycles.input()} ${Cue.input()} ${this.orderedChildren()}\n
    `;\n }\n\n /**\n * Build a group from the output of the selectors applied to the input\n *\n * @param {Target[]} input\n */\n apply(input) {\n let members = [];\n for (const child of this.children) {\n const r = child.apply(input);\n if (r.length > 0) {\n if (r instanceof Group) {\n members.push(r);\n } else {\n members = members.concat(r);\n }\n }\n }\n if (members.length > 0) return [new Group(members, this.propsAsObject)];\n else return [];\n }\n}\nPatternBase.register(PatternGroup, \"PatternGroup\");\n\nclass PatternSelector extends PatternBase {\n allowedChildren = [\"Filter\", \"GroupBy\", \"OrderBy\"];\n settings() {\n return html`
    \n Selector\n ${this.unorderedChildren()}\n
    `;\n }\n\n /**\n * Select buttons from the input\n *\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n return this.children.reduce(\n (previous, operator) => operator.apply(previous),\n input,\n );\n }\n}\nPatternBase.register(PatternSelector, \"PatternSelector\");\n\nclass Filter extends PatternBase {\n Filter = new Props.Expression();\n settings() {\n const { Filter } = this;\n return html`
    \n ${Filter.input()}\n
    `;\n }\n /**\n * Select buttons from the input\n *\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n if (input[0] instanceof Group) {\n return input\n .map(\n (/** @type {Group} */ group) =>\n new Group(this.apply(group.members), group.access),\n )\n .filter((target) => target.length > 0);\n } else {\n return input.filter((/** @type {HTMLButtonElement} */ button) =>\n this.Filter.valueInContext({ data: button.dataset }),\n );\n }\n }\n}\nPatternBase.register(Filter, \"Filter\");\n\n// allow the sort to handle numbers reasonably\nconst comparator = new Intl.Collator(undefined, {\n numeric: true,\n});\n\nclass OrderBy extends PatternBase {\n OrderBy = new Props.Field();\n settings() {\n const { OrderBy } = this;\n return html`
    \n ${OrderBy.input()}\n
    `;\n }\n /**\n * Select buttons from the input\n *\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n if (input[0] instanceof Group) {\n return input\n .map(\n (/** @type {Group} */ group) =>\n new Group(this.apply(group.members), group.access),\n )\n .filter((target) => target.length > 0);\n } else {\n const key = this.OrderBy.value.slice(1);\n return [.../** @type {HTMLButtonElement[]} */ (input)].sort((a, b) =>\n comparator.compare(a.dataset[key] || \"\", b.dataset[key] || \"\"),\n );\n }\n }\n}\nPatternBase.register(OrderBy, \"OrderBy\");\n\nclass GroupBy extends PatternBase {\n GroupBy = new Props.Field();\n Name = new Props.String(\"\");\n Cue = new Props.Cue({ defaultValue: \"DefaultCue\" });\n Cycles = new Props.Integer(2);\n settings() {\n const { GroupBy, Name, Cue, Cycles } = this;\n const fields = Props.toMap([\n ...new Set([\n ...Globals.data.allFields,\n \"#ComponentName\",\n \"#row\",\n \"#column\",\n ]),\n ]);\n return html`
    \n ${GroupBy.input(fields)} ${Name.input()} ${Cue.input()} ${Cycles.input()}\n
    `;\n }\n /**\n * Select buttons from the input\n *\n * @param {Target[]} input\n * @returns {Target[]}\n */\n apply(input) {\n if (input[0] instanceof Group) {\n return input\n .map(\n (/** @type {Group} */ group) =>\n new Group(this.apply(group.members), group.access),\n )\n .filter((target) => target.length > 0);\n } else {\n const { GroupBy, Name, ...props } = this.propsAsObject;\n const key = GroupBy.slice(1);\n const result = [];\n const groupMap = new Map();\n for (const button of /** @type {HTMLButtonElement[]} */ (input)) {\n let k = button.dataset[key] || \"\";\n // if (!k) continue;\n k = k.toString();\n // we got a key, check to see if we have a group\n let group = groupMap.get(k);\n if (!group) {\n // no group, create one and add it to the map and the result\n group = new Group([button], {\n GroupName: Name.replace(GroupBy, k),\n [key]: k,\n ...props,\n });\n groupMap.set(k, group);\n result.push(group);\n } else {\n group.members.push(button);\n }\n }\n if (result.length === 1) {\n return result[0].members;\n }\n return result;\n }\n }\n}\nPatternBase.register(GroupBy, \"GroupBy\");\n","import { TreeBase } from \"components/treebase\";\nimport Globals from \"app/globals\";\nimport * as Props from \"components/props\";\nimport { Method, HandlerResponse } from \"./index\";\nimport { cueTarget, clearCues } from \"../pattern\";\n\nclass ResponderNext extends HandlerResponse {\n respond() {\n const method = this.nearestParent(Method);\n if (!method) return;\n method.pattern.next();\n }\n}\nTreeBase.register(ResponderNext, \"ResponderNext\");\n\nclass ResponderActivate extends HandlerResponse {\n /** @param {EventLike} event */\n respond(event) {\n const method = this.nearestParent(Method);\n if (!method) return;\n method.pattern.activate(event);\n }\n}\nTreeBase.register(ResponderActivate, \"ResponderActivate\");\n\nclass ResponderCue extends HandlerResponse {\n Cue = new Props.Cue();\n\n subTemplate() {\n return this.Cue.input();\n }\n\n /** @param {EventLike} event */\n respond(event) {\n cueTarget(event.target, this.Cue.value);\n }\n}\nTreeBase.register(ResponderCue, \"ResponderCue\");\n\nclass ResponderClearCue extends HandlerResponse {\n respond() {\n clearCues();\n }\n}\nTreeBase.register(ResponderClearCue, \"ResponderClearCue\");\n\nclass ResponderEmit extends HandlerResponse {\n /** @param {EventLike} event */\n respond(event) {\n const method = this.nearestParent(Method);\n if (!method) return;\n Globals.actions.applyRules(method.Name.value, \"press\", event.access);\n }\n}\nTreeBase.register(ResponderEmit, \"ResponderEmit\");\n\nclass ResponderStartTimer extends HandlerResponse {\n TimerName = new Props.Select(() => this.nearestParent(Method).timerNames, {\n placeholder: \"Choose a timer\",\n hiddenLabel: true,\n });\n\n subTemplate() {\n return this.TimerName.input();\n }\n\n /** @param {EventLike} event */\n respond(event) {\n const timer = this.nearestParent(Method)?.timer(this.TimerName.value);\n if (!timer) return;\n // hand the interval to Cue CSS for animations\n document.documentElement.style.setProperty(\n \"--timerInterval\",\n `${timer.Interval.value}s`,\n );\n timer.start(event);\n }\n}\nTreeBase.register(ResponderStartTimer, \"ResponderStartTimer\");\n","import { TreeBase } from \"components/treebase\";\nimport * as Props from \"components/props\";\nimport { html } from \"uhtml\";\nimport { Handler, HandlerKeyCondition } from \"./index\";\nimport * as RxJs from \"rxjs\";\n\nconst keySignals = new Map([\n [\"keyup\", \"Key up\"],\n [\"keydown\", \"Key down\"],\n]);\n\nexport class KeyHandler extends Handler {\n allowedChildren = [\n \"HandlerKeyCondition\",\n \"HandlerCondition\",\n \"HandlerResponse\",\n ];\n\n Signal = new Props.Select(keySignals);\n\n settings() {\n const { conditions, responses, keys } = this;\n const { Signal } = this;\n return html`\n
    \n Key Handler\n ${Signal.input()}\n
    \n Keys\n ${this.unorderedChildren(keys)}\n
    \n
    \n Conditions\n ${this.unorderedChildren(\n conditions.filter((c) => !(c instanceof HandlerKeyCondition)),\n )}\n
    \n
    \n Responses\n ${this.unorderedChildren(responses)}\n
    \n
    \n `;\n }\n\n /** @param {RxJs.Subject} _stop$ */\n configure(_stop$) {\n const method = this.method;\n const streamName = \"key\";\n\n // only create it once\n if (method.streams[streamName]) return;\n\n // construct debounced key event stream\n const debounceInterval = method.KeyDebounce.value * 1000;\n const keyDown$ = /** @type RxJs.Observable */ (\n RxJs.fromEvent(document, \"keydown\")\n );\n\n const keyUp$ = /** @type RxJs.Observable */ (\n RxJs.fromEvent(document, \"keyup\")\n );\n\n // don't capture key events originating in the designer\n function notDesigner({ target }) {\n const designer = document.getElementById(\"designer\");\n return !designer || !designer.contains(target);\n }\n\n // build the debounced key event stream\n const keyEvents$ = /** @type RxJs.Observable */ (\n // start with the key down stream\n keyDown$.pipe(\n // merge with the key up stream\n RxJs.mergeWith(keyUp$),\n // ignore events from the designer\n RxJs.filter((e) => notDesigner(e)),\n // prevent default actions\n RxJs.tap((e) => e.preventDefault()),\n // remove any repeats\n RxJs.filter((e) => !e.repeat),\n // group by the key\n RxJs.groupBy((e) => e.key),\n // process each group and merge the results\n RxJs.mergeMap((group$) =>\n group$.pipe(\n // debounce flurries of events\n RxJs.debounceTime(debounceInterval),\n // wait for a key down\n RxJs.skipWhile((e) => e.type != \"keydown\"),\n // only output when the type changes\n RxJs.distinctUntilKeyChanged(\"type\"),\n ),\n ),\n RxJs.map((e) => {\n // add context info to event for use in the conditions and response\n /** @type {EventLike} */\n let kw = {\n type: e.type,\n target: null,\n timeStamp: e.timeStamp,\n access: {\n key: e.key,\n altKey: e.altKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n shiftKey: e.shiftKey,\n eventType: e.type,\n ...method.pattern.getCurrentAccess(),\n },\n };\n return kw;\n }),\n )\n );\n method.streams[streamName] = keyEvents$;\n }\n\n /**\n * Test the conditions for this handler\n * @param {EventLike} event\n * @returns {boolean}\n */\n test(event) {\n const signal = this.Signal.value;\n\n // key conditions are OR'ed together\n // Other conditions are AND'ed\n const keys = this.keys;\n const conditions = this.conditions.filter(\n (condition) => !(condition instanceof HandlerKeyCondition),\n );\n return (\n event.type == signal &&\n (keys.length == 0 ||\n keys.some((key) => key.eval({ data: event.access }))) &&\n conditions.every((condition) => condition.eval({ data: event.access }))\n );\n }\n}\nTreeBase.register(KeyHandler, \"KeyHandler\");\n","/**\n * Handle pointer events integrated with Pattern.Groups\n *\n * TODO: we should be \"over\" the current button after activate. We are\n * currently not until you leave the current button and return.\n */\n\nimport { TreeBase } from \"components/treebase\";\nimport { Handler } from \"./index\";\nimport * as Props from \"components/props\";\nimport { html } from \"uhtml\";\nimport * as RxJs from \"rxjs\";\n\nconst pointerSignals = new Map([\n [\"pointerdown\", \"Pointer down\"],\n [\"pointerup\", \"Pointer up\"],\n [\"pointerover\", \"Pointer enter\"],\n [\"pointerout\", \"Pointer leave\"],\n]);\n\nexport class PointerHandler extends Handler {\n allowedChildren = [\"HandlerCondition\", \"HandlerResponse\"];\n\n Signal = new Props.Select(pointerSignals);\n\n settings() {\n const { conditions, responses, Signal } = this;\n return html`\n
    \n Pointer Handler\n ${Signal.input()}\n
    \n Conditions\n ${this.unorderedChildren(conditions)}\n
    \n
    \n Responses\n ${this.unorderedChildren(responses)}\n
    \n
    \n `;\n }\n\n /** @param {RxJs.Subject} _ */\n configure(_) {\n const method = this.method;\n const streamName = \"pointer\";\n // only create it once\n if (method.streams[streamName]) return;\n\n const pattern = method.pattern;\n\n const inOutThreshold = method.PointerEnterDebounce.value * 1000;\n const upDownThreshold = method.PointerDownDebounce.value * 1000;\n\n /**\n * Get the types correct\n *\n * @param {string} event\n * @returns {RxJs.Observable}\n */\n function fromPointerEvent(event) {\n return /** @type {RxJs.Observable} */ (\n RxJs.fromEvent(document, event)\n );\n }\n\n const pointerDown$ = fromPointerEvent(\"pointerdown\").pipe(\n // disable pointer capture\n RxJs.tap(\n (x) =>\n x.target instanceof Element &&\n x.target.hasPointerCapture(x.pointerId) &&\n x.target.releasePointerCapture(x.pointerId),\n ),\n RxJs.throttleTime(upDownThreshold),\n );\n\n const pointerUp$ = fromPointerEvent(\"pointerup\").pipe(\n RxJs.throttleTime(upDownThreshold),\n );\n\n /** @type {EventLike} */\n const None = { type: \"none\", target: null, timeStamp: 0 };\n\n /** This function defines the State Machine that will be applied to the stream\n * of events by the RxJs.scan operator. It takes this function and an initial state\n * and produces a stream of states. On each cycle after the first the input state\n * will be the output state from the previous cycle.\n *\n * Define the state for the machine\n *\n * @typedef {Object} machineState\n * @property {EventLike} current - the currently active target\n * @property {EventLike} over - the element we're currently over\n * @property {number} timeStamp - the time of the last event\n * @property {Map} accumulators - total time spent over each element\n * @property {EventLike[]} emittedEvents - events to pass along\n *\n * @param {machineState} state\n * @param {EventLike} event - the incoming pointer event\n * @returns {machineState}\n */\n function stateMachine(\n { current, over, timeStamp, accumulators, emittedEvents },\n event,\n ) {\n // whenever we emit an event the pattern might get changed in the response\n // check here to see if the target is still the same\n if (emittedEvents.length > 0 && over !== None) {\n const newOver = pattern.remapEventTarget({\n ...over,\n target: over.originalTarget,\n });\n if (newOver.target !== over.target) {\n // copy the accumulator to the new target\n accumulators.set(newOver.target, accumulators.get(over.target) || 0);\n // zero the old target\n accumulators.set(over.target, 0);\n // use this new target\n over = newOver;\n }\n }\n\n // time since last event\n const dt = event.timeStamp - timeStamp;\n timeStamp = event.timeStamp;\n // clear the emitted Events\n emittedEvents = [];\n // increment the time of the target we are over\n let sum = accumulators.get(over.target) || 0;\n sum += dt;\n accumulators.set(over.target, sum);\n const threshold = inOutThreshold;\n // exceeding the threshold triggers production of events\n if (sum > threshold) {\n // clamp it at the threshold value\n accumulators.set(over.target, threshold);\n if (over.target != current.target) {\n if (current !== None) {\n emittedEvents.push({ ...current, type: \"pointerout\" });\n }\n current = over;\n if (current !== None) {\n emittedEvents.push({ ...current, type: \"pointerover\" });\n }\n } else {\n current = over;\n }\n }\n // decrement the other accumulators\n for (let [target, value] of accumulators) {\n if (target !== over.target) {\n value -= dt;\n if (value <= 0) {\n // this should prevent keeping old ones alive\n accumulators.delete(target);\n } else {\n accumulators.set(target, value);\n }\n }\n }\n if (event.type == \"pointerover\") {\n over = pattern.remapEventTarget(event);\n } else if (event.type == \"pointerout\") {\n over = None;\n } else if (event.type == \"pointerdown\" && current !== None) {\n emittedEvents.push({ ...current, type: \"pointerdown\" });\n } else if (event.type == \"pointerup\" && current !== None) {\n emittedEvents.push({ ...current, type: \"pointerup\" });\n }\n return {\n current,\n over,\n timeStamp,\n accumulators,\n emittedEvents,\n };\n }\n\n const pointerStream$ = pointerDown$.pipe(\n // merge the streams\n RxJs.mergeWith(\n pointerUp$,\n fromPointerEvent(\"pointerover\"),\n fromPointerEvent(\"pointerout\"),\n fromPointerEvent(\"contextmenu\"),\n ),\n // keep only events related to buttons within the UI\n RxJs.filter(\n (e) =>\n e.target instanceof HTMLButtonElement &&\n e.target.closest(\"div#UI\") !== null &&\n !e.target.disabled,\n ),\n // kill contextmenu events\n RxJs.tap((e) => e.type === \"contextmenu\" && e.preventDefault()),\n\n // Add the timer events\n RxJs.mergeWith(\n // I pulled 10ms out of my ear, would 20 or even 50 do?\n RxJs.timer(10, 10).pipe(RxJs.map(() => new PointerEvent(\"tick\"))),\n ),\n // run the state machine\n RxJs.scan(stateMachine, {\n // the initial state\n current: None,\n over: None,\n timeStamp: 0,\n accumulators: new Map(),\n emittedEvents: [],\n }),\n RxJs.filter((s) => s.emittedEvents.length > 0),\n RxJs.mergeMap((state) =>\n RxJs.of(\n ...state.emittedEvents.map((event) => {\n /** @type {EventLike} */\n let w = {\n ...event,\n timeStamp: state.timeStamp,\n access: event.access,\n };\n w.access.eventType = event.type;\n return w;\n }),\n ),\n ),\n // multicast the stream\n RxJs.share(),\n );\n\n method.streams[streamName] = pointerStream$;\n }\n}\nTreeBase.register(PointerHandler, \"PointerHandler\");\n","import { __assign, __extends } from \"tslib\";\nimport { Subject, AnonymousSubject } from '../../Subject';\nimport { Subscriber } from '../../Subscriber';\nimport { Observable } from '../../Observable';\nimport { Subscription } from '../../Subscription';\nimport { ReplaySubject } from '../../ReplaySubject';\nvar DEFAULT_WEBSOCKET_CONFIG = {\n url: '',\n deserializer: function (e) { return JSON.parse(e.data); },\n serializer: function (value) { return JSON.stringify(value); },\n};\nvar WEBSOCKETSUBJECT_INVALID_ERROR_OBJECT = 'WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }';\nvar WebSocketSubject = (function (_super) {\n __extends(WebSocketSubject, _super);\n function WebSocketSubject(urlConfigOrSource, destination) {\n var _this = _super.call(this) || this;\n _this._socket = null;\n if (urlConfigOrSource instanceof Observable) {\n _this.destination = destination;\n _this.source = urlConfigOrSource;\n }\n else {\n var config = (_this._config = __assign({}, DEFAULT_WEBSOCKET_CONFIG));\n _this._output = new Subject();\n if (typeof urlConfigOrSource === 'string') {\n config.url = urlConfigOrSource;\n }\n else {\n for (var key in urlConfigOrSource) {\n if (urlConfigOrSource.hasOwnProperty(key)) {\n config[key] = urlConfigOrSource[key];\n }\n }\n }\n if (!config.WebSocketCtor && WebSocket) {\n config.WebSocketCtor = WebSocket;\n }\n else if (!config.WebSocketCtor) {\n throw new Error('no WebSocket constructor can be found');\n }\n _this.destination = new ReplaySubject();\n }\n return _this;\n }\n WebSocketSubject.prototype.lift = function (operator) {\n var sock = new WebSocketSubject(this._config, this.destination);\n sock.operator = operator;\n sock.source = this;\n return sock;\n };\n WebSocketSubject.prototype._resetState = function () {\n this._socket = null;\n if (!this.source) {\n this.destination = new ReplaySubject();\n }\n this._output = new Subject();\n };\n WebSocketSubject.prototype.multiplex = function (subMsg, unsubMsg, messageFilter) {\n var self = this;\n return new Observable(function (observer) {\n try {\n self.next(subMsg());\n }\n catch (err) {\n observer.error(err);\n }\n var subscription = self.subscribe({\n next: function (x) {\n try {\n if (messageFilter(x)) {\n observer.next(x);\n }\n }\n catch (err) {\n observer.error(err);\n }\n },\n error: function (err) { return observer.error(err); },\n complete: function () { return observer.complete(); },\n });\n return function () {\n try {\n self.next(unsubMsg());\n }\n catch (err) {\n observer.error(err);\n }\n subscription.unsubscribe();\n };\n });\n };\n WebSocketSubject.prototype._connectSocket = function () {\n var _this = this;\n var _a = this._config, WebSocketCtor = _a.WebSocketCtor, protocol = _a.protocol, url = _a.url, binaryType = _a.binaryType;\n var observer = this._output;\n var socket = null;\n try {\n socket = protocol ? new WebSocketCtor(url, protocol) : new WebSocketCtor(url);\n this._socket = socket;\n if (binaryType) {\n this._socket.binaryType = binaryType;\n }\n }\n catch (e) {\n observer.error(e);\n return;\n }\n var subscription = new Subscription(function () {\n _this._socket = null;\n if (socket && socket.readyState === 1) {\n socket.close();\n }\n });\n socket.onopen = function (evt) {\n var _socket = _this._socket;\n if (!_socket) {\n socket.close();\n _this._resetState();\n return;\n }\n var openObserver = _this._config.openObserver;\n if (openObserver) {\n openObserver.next(evt);\n }\n var queue = _this.destination;\n _this.destination = Subscriber.create(function (x) {\n if (socket.readyState === 1) {\n try {\n var serializer = _this._config.serializer;\n socket.send(serializer(x));\n }\n catch (e) {\n _this.destination.error(e);\n }\n }\n }, function (err) {\n var closingObserver = _this._config.closingObserver;\n if (closingObserver) {\n closingObserver.next(undefined);\n }\n if (err && err.code) {\n socket.close(err.code, err.reason);\n }\n else {\n observer.error(new TypeError(WEBSOCKETSUBJECT_INVALID_ERROR_OBJECT));\n }\n _this._resetState();\n }, function () {\n var closingObserver = _this._config.closingObserver;\n if (closingObserver) {\n closingObserver.next(undefined);\n }\n socket.close();\n _this._resetState();\n });\n if (queue && queue instanceof ReplaySubject) {\n subscription.add(queue.subscribe(_this.destination));\n }\n };\n socket.onerror = function (e) {\n _this._resetState();\n observer.error(e);\n };\n socket.onclose = function (e) {\n if (socket === _this._socket) {\n _this._resetState();\n }\n var closeObserver = _this._config.closeObserver;\n if (closeObserver) {\n closeObserver.next(e);\n }\n if (e.wasClean) {\n observer.complete();\n }\n else {\n observer.error(e);\n }\n };\n socket.onmessage = function (e) {\n try {\n var deserializer = _this._config.deserializer;\n observer.next(deserializer(e));\n }\n catch (err) {\n observer.error(err);\n }\n };\n };\n WebSocketSubject.prototype._subscribe = function (subscriber) {\n var _this = this;\n var source = this.source;\n if (source) {\n return source.subscribe(subscriber);\n }\n if (!this._socket) {\n this._connectSocket();\n }\n this._output.subscribe(subscriber);\n subscriber.add(function () {\n var _socket = _this._socket;\n if (_this._output.observers.length === 0) {\n if (_socket && (_socket.readyState === 1 || _socket.readyState === 0)) {\n _socket.close();\n }\n _this._resetState();\n }\n });\n return subscriber;\n };\n WebSocketSubject.prototype.unsubscribe = function () {\n var _socket = this._socket;\n if (_socket && (_socket.readyState === 1 || _socket.readyState === 0)) {\n _socket.close();\n }\n this._resetState();\n _super.prototype.unsubscribe.call(this);\n };\n return WebSocketSubject;\n}(AnonymousSubject));\nexport { WebSocketSubject };\n//# sourceMappingURL=WebSocketSubject.js.map","import { WebSocketSubject } from './WebSocketSubject';\nexport function webSocket(urlConfigOrSource) {\n return new WebSocketSubject(urlConfigOrSource);\n}\n//# sourceMappingURL=webSocket.js.map","import { TreeBase } from \"components/treebase\";\nimport { Handler } from \"./index\";\nimport * as Props from \"components/props\";\nimport { html } from \"uhtml\";\nimport * as RxJs from \"rxjs\";\nimport { webSocket } from \"rxjs/webSocket\";\nimport Globals from \"app/globals\";\nimport { GridFilter } from \"components/gridFilter\";\n\nexport class SocketHandler extends Handler {\n allowedChildren = [\"HandlerCondition\", \"HandlerResponse\", \"GridFilter\"];\n\n StateName = new Props.String(\"$socket\");\n URL = new Props.String(\"ws://localhost:5678/\");\n\n get filters() {\n return this.filterChildren(GridFilter);\n }\n\n settings() {\n const { conditions, responses, StateName, URL } = this;\n return html`\n
    \n Socket Handler\n ${StateName.input()} ${URL.input()}\n
    \n Conditions\n ${this.unorderedChildren(conditions)}\n
    \n
    \n Responses\n ${this.unorderedChildren(responses)}\n
    \n ${GridFilter.FilterSettings(this.filters)}\n
    \n `;\n }\n\n init() {\n super.init();\n // set the signal value\n this.Signal.set(\"socket\");\n\n // arrange to watch for state changes\n // TODO: figure out how to remove these or make them weak\n Globals.state.observe(() => {\n if (Globals.state.hasBeenUpdated(this.StateName.value)) {\n if (!this.socket) {\n // the connect wasn't successfully opened, try again\n console.error(\"socket is not active\");\n return;\n }\n this.sendData();\n }\n });\n }\n\n /** The websocket wrapper object\n * @type {import(\"rxjs/webSocket\").WebSocketSubject | undefined} */\n socket = undefined;\n\n /** The stream of events from the websocket\n * @type {RxJs.Observable | undefined} */\n socket$ = undefined;\n\n /** @param {RxJs.Subject} _stop$ */\n configure(_stop$) {\n const method = this.method;\n const streamName = \"socket\";\n // only create it once\n if (method.streams[streamName]) return;\n\n // this is the socket object\n this.socket = webSocket(this.URL.value);\n\n // this is the stream of events from it\n this.socket$ = this.socket.pipe(\n RxJs.retry({ count: 10, delay: 5000 }),\n RxJs.map((msg) => {\n const event = new Event(\"socket\");\n /** @type {EventLike} */\n const wrapped = {\n type: \"socket\",\n timeStamp: event.timeStamp,\n access: msg,\n target: null,\n };\n return wrapped;\n }),\n RxJs.tap((e) => console.log(\"socket\", e)),\n );\n method.streams[streamName] = this.socket$;\n }\n\n /** @param {EventLike} event */\n respond(event) {\n console.log(\"socket respond\", event.type);\n\n /* Incoming data arrives here in the .access property. This code will filter any arrays of objects and\n * include them in the dynamic data\n */\n let dynamicRows = [];\n const fields = [];\n for (const [key, value] of Object.entries(event.access)) {\n console.log(key, value);\n if (\n Array.isArray(value) &&\n value.length > 0 &&\n typeof value[0] === \"object\" &&\n value[0] !== null\n ) {\n dynamicRows = dynamicRows.concat(value);\n } else {\n fields.push([key, value]);\n }\n }\n event.access = Object.fromEntries(fields);\n if (dynamicRows.length > 0) {\n Globals.data.setDynamicRows(dynamicRows);\n }\n // pass incoming messages to the response\n super.respond(event);\n }\n\n sendData() {\n if (!this.socket) return;\n\n // send the data over the websocket\n const name = this.method.Name.value;\n const message = {\n method: name,\n stateName: this.StateName.value,\n URL: this.URL.value,\n state: Globals.state.values,\n };\n const filters = this.filters;\n if (filters.length > 0) {\n const content = Globals.data.getMatchingRows(\n filters,\n false, // do not pass NULL for the undefined fields\n );\n message[\"content\"] = content;\n }\n this.socket.next(message);\n }\n}\nTreeBase.register(SocketHandler, \"SocketHandler\");\n","import { TreeBase } from \"components/treebase\";\nimport { Handler } from \"./index\";\nimport * as Props from \"components/props\";\nimport { html } from \"uhtml\";\nimport * as RxJs from \"rxjs\";\nimport { Method } from \"./index\";\n\nconst timerSignals = new Map([\n [\"transitionend\", \"Transition end\"],\n [\"animationend\", \"Animation end\"],\n [\"timer\", \"Timer complete\"],\n]);\n\nexport class TimerHandler extends Handler {\n allowedChildren = [\"HandlerCondition\", \"HandlerResponse\"];\n\n Signal = new Props.Select(timerSignals);\n TimerName = new Props.Select([], { hiddenLabel: true });\n\n settings() {\n const { conditions, responses, Signal } = this;\n const timerNames = this.nearestParent(Method)?.timerNames;\n return html`\n
    \n Timer Handler\n ${Signal.input()} ${this.TimerName.input(timerNames)}\n
    \n Conditions\n ${this.unorderedChildren(conditions)}\n
    \n
    \n Responses\n ${this.unorderedChildren(responses)}\n
    \n
    \n `;\n }\n\n /** @param {RxJs.Subject} _stop$ */\n configure(_stop$) {\n const method = this.method;\n const timerName = this.TimerName.value;\n // there could be multiple timers active at once\n const streamName = `timer-${timerName}`;\n // only create it once\n if (method.streams[streamName]) return;\n\n const timer = method.timer(timerName);\n if (!timer) return;\n\n const delayTime = 1000 * timer.Interval.value;\n method.streams[streamName] = timer.subject$.pipe(\n RxJs.switchMap((event) =>\n event.type == \"cancel\"\n ? RxJs.EMPTY\n : RxJs.of(event).pipe(RxJs.delay(delayTime)),\n ),\n );\n }\n}\nTreeBase.register(TimerHandler, \"TimerHandler\");\n","export default {\n className: \"CueList\",\n props: {\n direction: \"\",\n background: \"\",\n scale: 1,\n name: \"Cues\",\n label: \"\",\n },\n children: [\n {\n className: \"CueOverlay\",\n props: {\n Name: \"red overlay\",\n Key: \"idl7w16hghqop9hcgn95\",\n CueType: \"CueOverlay\",\n Default: true,\n Color: \"red\",\n Opacity: \"0.2\",\n },\n children: [],\n },\n {\n className: \"CueFill\",\n props: {\n Name: \"fill\",\n Key: \"idl7ysqw4agxg63qvx4j5\",\n CueType: \"CueFill\",\n Default: false,\n Color: \"#7BAFD4\",\n Opacity: \"0.3\",\n Direction: \"top\",\n Repeat: false,\n },\n children: [],\n },\n {\n className: \"CueCircle\",\n props: {\n Name: \"circle\",\n Key: \"idl7ythslqew02w4pom29\",\n CueType: \"CueCircle\",\n Default: false,\n Color: \"#7BAFD4\",\n Opacity: 0.7,\n },\n children: [],\n },\n {\n className: \"CueCss\",\n props: {\n Name: \"yellow overlay using CSS\",\n Key: \"idl7qm4cs28fh2ogf4ni\",\n CueType: \"CueCss\",\n Default: false,\n Code: `button[cue=\"$Key\"] {\n position: relative;\n border-color: yellow;\n}\nbutton[cue=\"$Key\"]:after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: yellow;\n opacity: 0.3;\n z-index: 10;\n}`,\n },\n children: [],\n },\n ],\n};\n","import { html } from \"uhtml\";\nimport \"css/cues.css\";\nimport { TreeBase, TreeBaseSwitchable } from \"components/treebase\";\nimport { DesignerPanel } from \"components/designer\";\nimport * as Props from \"components/props\";\nimport Globals from \"app/globals\";\n\nimport { toggleIndicator } from \"components/helpers\";\nimport { getColor } from \"components/style\";\nimport defaultCues from \"./defaultCues\";\n\nexport class CueList extends DesignerPanel {\n name = new Props.String(\"Cues\");\n\n static tableName = \"cues\";\n static defaultValue = defaultCues;\n\n allowedChildren = [\"CueCss\", \"CueFill\", \"CueOverlay\", \"CueCircle\"];\n /** @type {Cue[]} */\n children = [];\n\n allowDelete = false;\n\n settings() {\n return html`
    \n ${this.unorderedChildren()}\n
    `;\n }\n\n template() {\n const result = this.children.map(\n (child) =>\n html``,\n );\n if (this.children.length > 0) {\n const defaultCue = this.defaultCue;\n const defaultCSS = defaultCue.css.replaceAll(\n defaultCue.Key.value,\n \"DefaultCue\",\n );\n result.push(\n html``,\n );\n }\n return html`${result}`;\n }\n\n get cueMap() {\n /** @type {[string,string][]} */\n const entries = this.children.map((child) => [\n child.Key.value,\n child.Name.value,\n ]);\n entries.unshift([\"DefaultCue\", \"Default Cue\"]);\n return new Map(entries);\n }\n\n get defaultCue() {\n return this.children.find((cue) => cue.Default.value) || this.children[0];\n }\n\n /** @param {Object} obj */\n static upgrade(obj) {\n // update any CueCss entries to the new style interpolation\n if (obj.className == \"CueList\") {\n for (const child of obj.children) {\n if (child.className == \"CueCss\") {\n child.props.Code = child.props.Code.replaceAll(\"{{Key}}\", \"$Key\");\n }\n }\n }\n return obj;\n }\n}\nTreeBase.register(CueList, \"CueList\");\n\nconst CueTypes = new Map([\n [\"Cue\", \"none\"],\n [\"CueOverlay\", \"overlay\"],\n [\"CueFill\", \"fill\"],\n [\"CueCss\", \"css\"],\n [\"CueCircle\", \"circle\"],\n]);\n\nclass Cue extends TreeBaseSwitchable {\n Name = new Props.String(\"a cue\");\n Key = new Props.UID();\n CueType = new Props.TypeSelect(CueTypes);\n Default = new Props.OneOfGroup(false, { group: \"DefaultCue\" });\n\n settingsSummary() {\n return html`

    \n ${this.Name.value} ${toggleIndicator(this.Default.value, \"Default cue\")}\n

    `;\n }\n\n settingsDetails() {\n return [\n html`
    \n ${this.Name.input()} ${this.Default.input()} ${this.CueType.input()}\n ${this.subTemplate()}\n
    `,\n ];\n }\n\n /** @returns {Hole[]} */\n subTemplate() {\n return [];\n }\n\n get css() {\n return \"\";\n }\n}\nTreeBase.register(Cue, \"Cue\");\n\nclass CueCss extends Cue {\n Code = new Props.Code(\"\", {\n placeholder: \"Enter CSS for this cue\",\n hiddenLabel: true,\n });\n\n subTemplate() {\n return [this.Code.input()];\n }\n\n get css() {\n return Globals.state.interpolate(this.Code.editedValue);\n }\n\n onUpdate() {\n this.Code.editCSS(this.propsAsObject);\n }\n\n init() {\n super.init();\n this.onUpdate();\n }\n}\nTreeBase.register(CueCss, \"CueCss\");\n\nclass CueOverlay extends Cue {\n Color = new Props.Color(\"yellow\");\n Opacity = new Props.Float(0.3);\n\n subTemplate() {\n return [\n this.Color.input(),\n this.Opacity.input(),\n html`
    \n generated CSS\n
    ${this.css.replaceAll(this.Key.value, \"$Key\")}
    \n
    `,\n ];\n }\n\n get css() {\n return `\n#UI button[cue=\"${this.Key.value}\"] {\n position: relative;\n border-color: ${getColor(this.Color.value)};\n }\n#UI button[cue=\"${this.Key.value}\"]:after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: ${getColor(this.Color.value)};\n opacity: ${this.Opacity.value};\n z-index: 10;\n }\n `;\n }\n}\nTreeBase.register(CueOverlay, \"CueOverlay\");\n\nconst fillDirections = new Map([\n [\"top\", \"up\"],\n [\"bottom\", \"down\"],\n [\"right\", \"left to right\"],\n [\"left\", \"right to left\"],\n]);\nclass CueFill extends Cue {\n Color = new Props.Color(\"blue\");\n Opacity = new Props.Float(0.3);\n Direction = new Props.Select(fillDirections);\n Repeat = new Props.Boolean(false);\n\n subTemplate() {\n return [\n this.Color.input(),\n this.Opacity.input(),\n this.Direction.input(),\n this.Repeat.input(),\n html`
    \n generated CSS\n
    ${this.css.replaceAll(this.Key.value, \"$Key\")}
    \n
    `,\n ];\n }\n\n get css() {\n return `\n button[cue=\"${this.Key.value}\"] {\n position: relative;\n border-color: ${getColor(this.Color.value)};\n }\n button[cue=\"${this.Key.value}\"]:after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n\n background-color: ${getColor(this.Color.value)};\n opacity: ${this.Opacity.value};\n z-index: 10;\n animation-name: ${this.Key.value};\n animation-duration: var(--timerInterval);\n animation-timing-function: linear;\n animation-iteration-count: ${this.Repeat.value ? \"infinite\" : 1};\n }\n @keyframes ${this.Key.value} {\n 0% { ${this.Direction.value}: 100%; }\n 100% { ${this.Direction.value}: 0%; }\n }\n `;\n }\n}\nTreeBase.register(CueFill, \"CueFill\");\n\nclass CueCircle extends Cue {\n Color = new Props.Color(\"lightblue\");\n Opacity = new Props.Float(0.3);\n\n subTemplate() {\n return [\n this.Color.input(),\n this.Opacity.input(),\n html`
    \n generated CSS\n
    ${this.css.replaceAll(this.Key.value, \"$Key\")}
    \n
    `,\n ];\n }\n\n get css() {\n return `\n@property --percent-${this.Key.value} {\n syntax: \"\";\n initial-value: 100%;\n inherits: false;\n}\nbutton[cue=\"${this.Key.value}\"] {\n position: relative;\n border-color: ${getColor(this.Color.value)};\n}\nbutton[cue=\"${this.Key.value}\"]:after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n -webkit-mask-image: radial-gradient(\n transparent,\n transparent 50%,\n #000 51%,\n #000 0\n );\n mask: radial-gradient(transparent, transparent 50%, #000 51%, #000 0);\n\n background-image: conic-gradient(\n from 0,\n ${getColor(this.Color.value)},\n ${getColor(this.Color.value)} var(--percent-${this.Key.value}),\n transparent var(--percent-${this.Key.value})\n );\n opacity: ${this.Opacity.value};\n\n animation-name: conic-gradient-${this.Key.value};\n animation-duration: var(--timerInterval);\n animation-timing-function: linear;\n\n z-index: 0;\n}\n\n@keyframes conic-gradient-${this.Key.value} {\n 0% {\n --percent-${this.Key.value}: 0%;\n }\n\n 100% {\n --percent-${this.Key.value}: 100%;\n }\n}\n `;\n }\n}\nTreeBase.register(CueCircle, \"CueCircle\");\n","export const TrackyMouse = {\n dependenciesRoot: \"./tracky-mouse\",\n};\n\nTrackyMouse.loadDependencies = function () {\n TrackyMouse.dependenciesRoot = TrackyMouse.dependenciesRoot.replace(\n /\\/+$/,\n \"\",\n );\n const loadScript = (src) => {\n return new Promise((resolve, reject) => {\n // This wouldn't wait for them to load\n // for (const script of document.scripts) {\n // \tif (script.src.includes(src)) {\n // \t\tresolve();\n // \t\treturn;\n // \t}\n // }\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.onload = resolve;\n script.onerror = reject;\n script.src = src;\n document.head.append(script);\n });\n };\n const scriptFiles = [\n `${TrackyMouse.dependenciesRoot}/lib/clmtrackr.js`,\n `${TrackyMouse.dependenciesRoot}/lib/facemesh/facemesh.js`,\n `${TrackyMouse.dependenciesRoot}/lib/stats.js`,\n `${TrackyMouse.dependenciesRoot}/lib/tf.js`,\n ];\n return Promise.all(scriptFiles.map(loadScript));\n};\n\nTrackyMouse.init = function (div) {\n var uiContainer = div || document.createElement(\"div\");\n uiContainer.classList.add(\"tracky-mouse-ui\");\n uiContainer.innerHTML = `\n\t\t
    \n \n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t
    \n\t\t\n\t`;\n if (!div) {\n document.body.appendChild(uiContainer);\n }\n var mirrorCheckbox = uiContainer.querySelector(\"#mirror\");\n var sensitivityXSlider = uiContainer.querySelector(\"#sensitivity-x\");\n var sensitivityYSlider = uiContainer.querySelector(\"#sensitivity-y\");\n var accelerationSlider = uiContainer.querySelector(\"#acceleration\");\n var closeButton = uiContainer.querySelector(\"#tracky-mouse-close\");\n\n closeButton.addEventListener(\"click\", () => {\n console.log(\"click\");\n TrackyMouse.showUI(false);\n });\n\n var canvas = uiContainer.querySelector(\"#tracky-mouse-canvas\");\n var ctx = canvas.getContext(\"2d\");\n\n var pointerEl = document.createElement(\"div\");\n pointerEl.className = \"tracky-mouse-pointer\";\n document.body.appendChild(pointerEl);\n\n var cameraVideo = document.createElement(\"video\");\n // required to work in iOS 11 & up:\n cameraVideo.setAttribute(\"playsinline\", \"\");\n\n // var stats = new Stats();\n // stats.domElement.style.position = \"absolute\";\n // stats.domElement.style.top = \"0px\";\n // stats.domElement.style.right = \"0px\";\n // stats.domElement.style.left = \"\";\n // document.body.appendChild(stats.domElement);\n\n var defaultWidth = 640;\n var defaultHeight = 480;\n var maxPoints = 1000;\n var mouseX = 0;\n var mouseY = 0;\n var prevMovementX = 0;\n var prevMovementY = 0;\n var enableTimeTravel = false;\n // var movementXSinceFacemeshUpdate = 0;\n // var movementYSinceFacemeshUpdate = 0;\n var cameraFramesSinceFacemeshUpdate = [];\n var sensitivityX;\n var sensitivityY;\n var acceleration;\n var face;\n var faceScore = 0;\n var faceScoreThreshold = 0.5;\n var faceConvergence = 0;\n var faceConvergenceThreshold = 50;\n var pointsBasedOnFaceScore = 0;\n var paused = false;\n var mouseNeedsInitPos = true;\n const SLOWMO = false;\n var debugTimeTravel = false;\n var debugAcceleration = false;\n var showDebugText = false;\n var mirror;\n\n var useClmTracking = false;\n var showClmTracking = useClmTracking;\n var useFacemesh = true;\n var facemeshOptions = {\n maxContinuousChecks: 5,\n detectionConfidence: 0.9,\n maxFaces: 1,\n iouThreshold: 0.3,\n scoreThreshold: 0.75,\n };\n var fallbackTimeoutID;\n\n var facemeshLoaded = false;\n var facemeshFirstEstimation = true;\n var facemeshEstimating = false;\n var facemeshRejectNext = 0;\n var facemeshPrediction;\n var facemeshEstimateFaces;\n var faceInViewConfidenceThreshold = 0.7;\n var pointsBasedOnFaceInViewConfidence = 0;\n\n // scale of size of frames that are passed to worker and then computed several at once when backtracking for latency compensation\n // reducing this makes it much more likely to drop points and thus not work\n // THIS IS DISABLED and using a performance optimization of currentCameraImageData instead of getCameraImageData;\n // (the currentCameraImageData is also scaled differently, to the fixed canvas size instead of using the native camera image size)\n // const frameScaleForWorker = 1;\n\n var mainOops;\n var workerSyncedOops;\n\n // const frameCanvas = document.createElement(\"canvas\");\n // const frameCtx = frameCanvas.getContext(\"2d\");\n // const getCameraImageData = () => {\n // \tif (cameraVideo.videoWidth * frameScaleForWorker * cameraVideo.videoHeight * frameScaleForWorker < 1) {\n // \t\treturn;\n // \t}\n // \tframeCanvas.width = cameraVideo.videoWidth * frameScaleForWorker;\n // \tframeCanvas.height = cameraVideo.videoHeight * frameScaleForWorker;\n // \tframeCtx.drawImage(cameraVideo, 0, 0, frameCanvas.width, frameCanvas.height);\n // \treturn frameCtx.getImageData(0, 0, frameCanvas.width, frameCanvas.height);\n // };\n\n let currentCameraImageData;\n let facemeshWorker;\n const initFacemeshWorker = () => {\n if (facemeshWorker) {\n facemeshWorker.terminate();\n }\n facemeshEstimating = false;\n facemeshFirstEstimation = true;\n facemeshLoaded = false;\n facemeshWorker = new Worker(\n `${TrackyMouse.dependenciesRoot}/facemesh.worker.js`,\n );\n facemeshWorker.addEventListener(\n \"message\",\n (e) => {\n if (e.data.type === \"LOADED\") {\n facemeshLoaded = true;\n facemeshEstimateFaces = () => {\n const imageData = currentCameraImageData; //getCameraImageData();\n if (!imageData) {\n return;\n }\n facemeshWorker.postMessage({ type: \"ESTIMATE_FACES\", imageData });\n return new Promise((resolve, reject) => {\n facemeshWorker.addEventListener(\n \"message\",\n (e) => {\n if (e.data.type === \"ESTIMATED_FACES\") {\n resolve(e.data.predictions);\n }\n },\n { once: true },\n );\n });\n };\n }\n },\n { once: true },\n );\n facemeshWorker.postMessage({ type: \"LOAD\", options: facemeshOptions });\n };\n\n if (useFacemesh) {\n initFacemeshWorker();\n }\n\n sensitivityXSlider.onchange = () => {\n sensitivityX = sensitivityXSlider.value / 1000;\n };\n sensitivityYSlider.onchange = () => {\n sensitivityY = sensitivityYSlider.value / 1000;\n };\n accelerationSlider.onchange = () => {\n acceleration = accelerationSlider.value / 100;\n };\n mirrorCheckbox.onchange = () => {\n mirror = mirrorCheckbox.checked;\n };\n mirrorCheckbox.onchange();\n sensitivityXSlider.onchange();\n sensitivityYSlider.onchange();\n accelerationSlider.onchange();\n\n // Don't use WebGL because clmTracker is our fallback! It's also not much slower than with WebGL.\n var clmTracker = new clm.tracker({ useWebGL: false });\n clmTracker.init();\n var clmTrackingStarted = false;\n\n const reset = () => {\n clmTrackingStarted = false;\n cameraFramesSinceFacemeshUpdate.length = 0;\n if (facemeshPrediction) {\n // facemesh has a setting maxContinuousChecks that determines \"How many frames to go without running\n // the bounding box detector. Only relevant if maxFaces > 1. Defaults to 5.\"\n facemeshRejectNext = facemeshOptions.maxContinuousChecks;\n }\n facemeshPrediction = null;\n useClmTracking = true;\n showClmTracking = true;\n pointsBasedOnFaceScore = 0;\n faceScore = 0;\n faceConvergence = 0;\n };\n\n TrackyMouse.useCamera = () => {\n navigator.mediaDevices\n .getUserMedia({\n audio: false,\n video: {\n width: defaultWidth,\n height: defaultHeight,\n facingMode: \"user\",\n },\n })\n .then(\n (stream) => {\n reset();\n try {\n if (\"srcObject\" in cameraVideo) {\n cameraVideo.srcObject = stream;\n } else {\n cameraVideo.src = window.URL.createObjectURL(stream);\n }\n } catch (err) {\n cameraVideo.src = stream;\n }\n },\n (error) => {\n console.log(error);\n },\n );\n paused = false;\n };\n\n TrackyMouse.pauseCamera = () => {\n cameraVideo.srcObject &&\n cameraVideo.srcObject.getTracks().forEach((track) => track.stop());\n paused = true;\n };\n\n TrackyMouse.showUI = (show) => {\n document\n .querySelector(\"div.tracky-mouse-ui\")\n .classList.toggle(\"show\", show);\n };\n // useDemoFootageButton.onclick = TrackyMouse.useDemoFootage = () => {\n // reset();\n // cameraVideo.srcObject = null;\n // cameraVideo.src = `${TrackyMouse.dependenciesRoot}/private/demo-input-footage.webm`;\n // cameraVideo.loop = true;\n // };\n\n if (!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia)) {\n console.log(\"getUserMedia not supported in this browser\");\n }\n\n cameraVideo.addEventListener(\"loadedmetadata\", () => {\n cameraVideo.play();\n cameraVideo.width = cameraVideo.videoWidth;\n cameraVideo.height = cameraVideo.videoHeight;\n canvas.width = cameraVideo.videoWidth;\n canvas.height = cameraVideo.videoHeight;\n debugFramesCanvas.width = cameraVideo.videoWidth;\n debugFramesCanvas.height = cameraVideo.videoHeight;\n debugPointsCanvas.width = cameraVideo.videoWidth;\n debugPointsCanvas.height = cameraVideo.videoHeight;\n\n mainOops = new OOPS();\n if (useFacemesh) {\n workerSyncedOops = new OOPS();\n }\n });\n cameraVideo.addEventListener(\"play\", () => {\n clmTracker.reset();\n clmTracker.initFaceDetector(cameraVideo);\n clmTrackingStarted = true;\n });\n\n canvas.width = defaultWidth;\n canvas.height = defaultHeight;\n cameraVideo.width = defaultWidth;\n cameraVideo.height = defaultHeight;\n\n const debugFramesCanvas = document.createElement(\"canvas\");\n debugFramesCanvas.width = canvas.width;\n debugFramesCanvas.height = canvas.height;\n const debugFramesCtx = debugFramesCanvas.getContext(\"2d\");\n\n const debugPointsCanvas = document.createElement(\"canvas\");\n debugPointsCanvas.width = canvas.width;\n debugPointsCanvas.height = canvas.height;\n const debugPointsCtx = debugPointsCanvas.getContext(\"2d\");\n\n // function getPyramidData(pyramid) {\n // \tconst array = new Float32Array(pyramid.data.reduce((sum, matrix)=> sum + matrix.buffer.f32.length, 0));\n // \tlet offset = 0;\n // \tfor (const matrix of pyramid.data) {\n // \t\tcopy matrix.buffer.f32 into array starting at offset;\n // \t\toffset += matrix.buffer.f32.length;\n // \t}\n // \treturn array;\n // }\n // function setPyramidData(pyramid, array) {\n // \tlet offset = 0;\n // \tfor (const matrix of pyramid.data) {\n // \t\tcopy portion of array starting at offset into matrix.buffer.f32\n // \t\toffset += matrix.buffer.f32.length;\n // \t}\n // }\n\n // maybe should be based on size of head in view?\n const pruningGridSize = 5;\n const minDistanceToAddPoint = pruningGridSize * 1.5;\n\n // Object Oriented Programming Sucks\n // or Optical flOw Points System\n class OOPS {\n constructor() {\n this.curPyramid = new jsfeat.pyramid_t(3);\n this.prevPyramid = new jsfeat.pyramid_t(3);\n this.curPyramid.allocate(\n cameraVideo.videoWidth,\n cameraVideo.videoHeight,\n jsfeat.U8C1_t,\n );\n this.prevPyramid.allocate(\n cameraVideo.videoWidth,\n cameraVideo.videoHeight,\n jsfeat.U8C1_t,\n );\n\n this.pointCount = 0;\n this.pointStatus = new Uint8Array(maxPoints);\n this.prevXY = new Float32Array(maxPoints * 2);\n this.curXY = new Float32Array(maxPoints * 2);\n }\n addPoint(x, y) {\n if (this.pointCount < maxPoints) {\n var pointIndex = this.pointCount * 2;\n this.curXY[pointIndex] = x;\n this.curXY[pointIndex + 1] = y;\n this.prevXY[pointIndex] = x;\n this.prevXY[pointIndex + 1] = y;\n this.pointCount++;\n }\n }\n filterPoints(condition) {\n var outputPointIndex = 0;\n for (\n var inputPointIndex = 0;\n inputPointIndex < this.pointCount;\n inputPointIndex++\n ) {\n if (condition(inputPointIndex)) {\n if (outputPointIndex < inputPointIndex) {\n var inputOffset = inputPointIndex * 2;\n var outputOffset = outputPointIndex * 2;\n this.curXY[outputOffset] = this.curXY[inputOffset];\n this.curXY[outputOffset + 1] = this.curXY[inputOffset + 1];\n this.prevXY[outputOffset] = this.prevXY[inputOffset];\n this.prevXY[outputOffset + 1] = this.prevXY[inputOffset + 1];\n }\n outputPointIndex++;\n } else {\n debugPointsCtx.fillStyle = \"red\";\n var inputOffset = inputPointIndex * 2;\n circle(\n debugPointsCtx,\n this.curXY[inputOffset],\n this.curXY[inputOffset + 1],\n 5,\n );\n debugPointsCtx.fillText(\n condition.toString(),\n 5 + this.curXY[inputOffset],\n this.curXY[inputOffset + 1],\n );\n // console.log(this.curXY[inputOffset], this.curXY[inputOffset + 1]);\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.moveTo(this.prevXY[inputOffset], this.prevXY[inputOffset + 1]);\n ctx.lineTo(this.curXY[inputOffset], this.curXY[inputOffset + 1]);\n ctx.stroke();\n }\n }\n this.pointCount = outputPointIndex;\n }\n prunePoints() {\n // pointStatus is only valid (indices line up) before filtering occurs, so must come first (could be combined though)\n this.filterPoints((pointIndex) => this.pointStatus[pointIndex] == 1);\n\n // De-duplicate points that are too close together\n // - Points that have collapsed together are completely useless.\n // - Points that are too close together are not necessarily helpful,\n // and may adversely affect the tracking due to uneven weighting across your face.\n // - Reducing the number of points improves FPS.\n const grid = {};\n for (let pointIndex = 0; pointIndex < this.pointCount; pointIndex++) {\n const pointOffset = pointIndex * 2;\n grid[\n `${~~(this.curXY[pointOffset] / pruningGridSize)},${~~(\n this.curXY[pointOffset + 1] / pruningGridSize\n )}`\n ] = pointIndex;\n }\n const indexesToKeep = Object.values(grid);\n this.filterPoints((pointIndex) => indexesToKeep.includes(pointIndex));\n }\n update(imageData) {\n [this.prevXY, this.curXY] = [this.curXY, this.prevXY];\n [this.prevPyramid, this.curPyramid] = [this.curPyramid, this.prevPyramid];\n\n // these are options worth breaking out and exploring\n var winSize = 20;\n var maxIterations = 30;\n var epsilon = 0.01;\n var minEigen = 0.001;\n\n jsfeat.imgproc.grayscale(\n imageData.data,\n imageData.width,\n imageData.height,\n this.curPyramid.data[0],\n );\n this.curPyramid.build(this.curPyramid.data[0], true);\n jsfeat.optical_flow_lk.track(\n this.prevPyramid,\n this.curPyramid,\n this.prevXY,\n this.curXY,\n this.pointCount,\n winSize,\n maxIterations,\n this.pointStatus,\n epsilon,\n minEigen,\n );\n this.prunePoints();\n }\n draw(ctx) {\n for (var i = 0; i < this.pointCount; i++) {\n var pointOffset = i * 2;\n // var distMoved = Math.hypot(\n // \tthis.prevXY[pointOffset] - this.curXY[pointOffset],\n // \tthis.prevXY[pointOffset + 1] - this.curXY[pointOffset + 1]\n // );\n // if (distMoved >= 1) {\n // \tctx.fillStyle = \"lime\";\n // } else {\n // \tctx.fillStyle = \"gray\";\n // }\n circle(ctx, this.curXY[pointOffset], this.curXY[pointOffset + 1], 3);\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.moveTo(this.prevXY[pointOffset], this.prevXY[pointOffset + 1]);\n ctx.lineTo(this.curXY[pointOffset], this.curXY[pointOffset + 1]);\n ctx.stroke();\n }\n }\n getMovement() {\n var movementX = 0;\n var movementY = 0;\n var numMovements = 0;\n for (var i = 0; i < this.pointCount; i++) {\n var pointOffset = i * 2;\n movementX += this.curXY[pointOffset] - this.prevXY[pointOffset];\n movementY += this.curXY[pointOffset + 1] - this.prevXY[pointOffset + 1];\n numMovements += 1;\n }\n if (numMovements > 0) {\n movementX /= numMovements;\n movementY /= numMovements;\n }\n return [movementX, movementY];\n }\n }\n\n canvas.addEventListener(\"click\", (event) => {\n if (!mainOops) {\n return;\n }\n const rect = canvas.getBoundingClientRect();\n if (mirror) {\n mainOops.addPoint(\n ((rect.right - event.clientX) / rect.width) * canvas.width,\n ((event.clientY - rect.top) / rect.height) * canvas.height,\n );\n } else {\n mainOops.addPoint(\n ((event.clientX - rect.left) / rect.width) * canvas.width,\n ((event.clientY - rect.top) / rect.height) * canvas.height,\n );\n }\n });\n\n function maybeAddPoint(oops, x, y) {\n // In order to prefer points that already exist, since they're already tracking,\n // in order to keep a smooth overall tracking calculation,\n // don't add points if they're close to an existing point.\n // Otherwise, it would not just be redundant, but often remove the older points, in the pruning.\n for (var pointIndex = 0; pointIndex < oops.pointCount; pointIndex++) {\n var pointOffset = pointIndex * 2;\n // var distance = Math.hypot(\n // \tx - oops.curXY[pointOffset],\n // \ty - oops.curXY[pointOffset + 1]\n // );\n // if (distance < 8) {\n // \treturn;\n // }\n // It might be good to base this on the size of the face...\n // Also, since we're pruning points based on a grid,\n // there's not much point in using Euclidean distance here,\n // we can just look at x and y distances.\n if (\n Math.abs(x - oops.curXY[pointOffset]) <= minDistanceToAddPoint ||\n Math.abs(y - oops.curXY[pointOffset + 1]) <= minDistanceToAddPoint\n ) {\n return;\n }\n }\n oops.addPoint(x, y);\n }\n\n function animate() {\n requestAnimationFrame(animate);\n if (!paused)\n draw(!SLOWMO && (!paused || document.visibilityState === \"visible\"));\n }\n\n function draw(update = true) {\n ctx.resetTransform(); // in case there is an error, don't flip constantly back and forth due to mirroring\n ctx.clearRect(0, 0, canvas.width, canvas.height); // in case there's no footage\n ctx.save();\n ctx.drawImage(cameraVideo, 0, 0, canvas.width, canvas.height);\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n currentCameraImageData = imageData;\n\n if (mirror) {\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n ctx.drawImage(cameraVideo, 0, 0, canvas.width, canvas.height);\n }\n\n if (!mainOops) {\n return;\n }\n\n if (update) {\n if (clmTrackingStarted) {\n if (useClmTracking || showClmTracking) {\n try {\n clmTracker.track(cameraVideo);\n } catch (error) {\n console.warn(\"Error in clmTracker.track()\", error);\n if (clmTracker.getCurrentParameters().includes(NaN)) {\n console.warn(\"NaNs creeped in.\");\n }\n }\n face = clmTracker.getCurrentPosition();\n faceScore = clmTracker.getScore();\n faceConvergence = Math.pow(clmTracker.getConvergence(), 0.5);\n }\n if (facemeshLoaded && !facemeshEstimating) {\n facemeshEstimating = true;\n // movementXSinceFacemeshUpdate = 0;\n // movementYSinceFacemeshUpdate = 0;\n cameraFramesSinceFacemeshUpdate = [];\n // If I switch virtual console desktop sessions in Ubuntu with Ctrl+Alt+F1 (and back with Ctrl+Alt+F2),\n // WebGL context is lost, which breaks facemesh (and clmTracker if useWebGL is not false)\n // Error: Size(8192) must match the product of shape 0, 0, 0\n // at inferFromImplicitShape (tf.js:14142)\n // at Object.reshape$3 [as kernelFunc] (tf.js:110368)\n // at kernelFunc (tf.js:17241)\n // at tf.js:17334\n // at Engine.scopedRun (tf.js:17094)\n // at Engine.runKernelFunc (tf.js:17328)\n // at Engine.runKernel (tf.js:17171)\n // at reshape_ (tf.js:25875)\n // at reshape__op (tf.js:18348)\n // at executeOp (tf.js:85396)\n // WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost\n\n // Note that the first estimation from facemesh often takes a while,\n // and we don't want to continuously terminate the worker as it's working on those first results.\n // And also, for the first estimate it hasn't actually disabled clmtracker yet, so it's fine if it's a long timeout.\n clearTimeout(fallbackTimeoutID);\n fallbackTimeoutID = setTimeout(\n () => {\n if (!useClmTracking) {\n reset();\n clmTracker.init();\n clmTracker.reset();\n clmTracker.initFaceDetector(cameraVideo);\n clmTrackingStarted = true;\n console.warn(\"Falling back to clmtracker\");\n }\n // If you've switched desktop sessions, it will presuably fail to get a new webgl context until you've switched back\n // Is this setInterval useful, vs just starting the worker?\n // It probably has a faster cycle, with the code as it is now, but maybe not inherently.\n // TODO: do the extra getContext() calls add to a GPU process crash limit\n // that makes it only able to recover a couple times (outside the electron app)?\n // For electron, I set chromium flag --disable-gpu-process-crash-limit so it can recover unlimited times.\n // TODO: there's still the case of WebGL backend failing to initialize NOT due to the process crash limit,\n // where it'd be good to have it try again (maybe with exponential falloff?)\n // (I think I can move my fallbackTimeout code into/around `initFacemeshWorker` and `facemeshEstimateFaces`)\n\n // Note: clearTimeout/clearInterval work interchangably\n fallbackTimeoutID = setInterval(() => {\n try {\n // Once we can create a webgl2 canvas...\n document.createElement(\"canvas\").getContext(\"webgl2\");\n clearInterval(fallbackTimeoutID);\n // It's worth trying to re-initialize...\n setTimeout(() => {\n console.warn(\"Re-initializing facemesh worker\");\n initFacemeshWorker();\n facemeshRejectNext = 1; // or more?\n }, 1000);\n } catch (e) {}\n }, 500);\n },\n facemeshFirstEstimation ? 20000 : 2000,\n );\n facemeshEstimateFaces().then(\n (predictions) => {\n facemeshEstimating = false;\n facemeshFirstEstimation = false;\n\n facemeshRejectNext -= 1;\n if (facemeshRejectNext > 0) {\n return;\n }\n\n facemeshPrediction = predictions[0]; // undefined if no faces found\n\n useClmTracking = false;\n showClmTracking = false;\n clearTimeout(fallbackTimeoutID);\n\n if (!facemeshPrediction) {\n return;\n }\n // this applies to facemeshPrediction.annotations as well, which references the same points\n // facemeshPrediction.scaledMesh.forEach((point) => {\n // \tpoint[0] /= frameScaleForWorker;\n // \tpoint[1] /= frameScaleForWorker;\n // });\n\n // time travel latency compensation\n // keep a history of camera frames since the prediciton was requested,\n // and analyze optical flow of new points over that history\n\n // mainOops.filterPoints(() => false); // for DEBUG, empty points (could probably also just set pointCount = 0;\n\n workerSyncedOops.filterPoints(() => false); // empty points (could probably also just set pointCount = 0;\n\n const { annotations } = facemeshPrediction;\n // nostrils\n workerSyncedOops.addPoint(\n annotations.noseLeftCorner[0][0],\n annotations.noseLeftCorner[0][1],\n );\n workerSyncedOops.addPoint(\n annotations.noseRightCorner[0][0],\n annotations.noseRightCorner[0][1],\n );\n // midway between eyes\n workerSyncedOops.addPoint(\n annotations.midwayBetweenEyes[0][0],\n annotations.midwayBetweenEyes[0][1],\n );\n // inner eye corners\n // workerSyncedOops.addPoint(annotations.leftEyeLower0[8][0], annotations.leftEyeLower0[8][1]);\n // workerSyncedOops.addPoint(annotations.rightEyeLower0[8][0], annotations.rightEyeLower0[8][1]);\n\n // console.log(workerSyncedOops.pointCount, cameraFramesSinceFacemeshUpdate.length, workerSyncedOops.curXY);\n if (enableTimeTravel) {\n debugFramesCtx.clearRect(\n 0,\n 0,\n debugFramesCanvas.width,\n debugFramesCanvas.height,\n );\n setTimeout(() => {\n debugPointsCtx.clearRect(\n 0,\n 0,\n debugPointsCanvas.width,\n debugPointsCanvas.height,\n );\n }, 900);\n cameraFramesSinceFacemeshUpdate.forEach((imageData, index) => {\n if (debugTimeTravel) {\n debugFramesCtx.save();\n debugFramesCtx.globalAlpha = 0.1;\n // debugFramesCtx.globalCompositeOperation = index % 2 === 0 ? \"xor\" : \"xor\";\n frameCtx.putImageData(imageData, 0, 0);\n // debugFramesCtx.putImageData(imageData, 0, 0);\n debugFramesCtx.drawImage(\n frameCanvas,\n 0,\n 0,\n canvas.width,\n canvas.height,\n );\n debugFramesCtx.restore();\n debugPointsCtx.fillStyle = \"aqua\";\n workerSyncedOops.draw(debugPointsCtx);\n }\n workerSyncedOops.update(imageData);\n });\n }\n\n // Bring points from workerSyncedOops to realtime mainOops\n for (\n var pointIndex = 0;\n pointIndex < workerSyncedOops.pointCount;\n pointIndex++\n ) {\n const pointOffset = pointIndex * 2;\n maybeAddPoint(\n mainOops,\n workerSyncedOops.curXY[pointOffset],\n workerSyncedOops.curXY[pointOffset + 1],\n );\n }\n // Don't do this! It's not how this is supposed to work.\n // mainOops.pointCount = workerSyncedOops.pointCount;\n // for (var pointIndex = 0; pointIndex < workerSyncedOops.pointCount; pointIndex++) {\n // \tconst pointOffset = pointIndex * 2;\n // \tmainOops.curXY[pointOffset] = workerSyncedOops.curXY[pointOffset];\n // \tmainOops.curXY[pointOffset+1] = workerSyncedOops.curXY[pointOffset+1];\n // \tmainOops.prevXY[pointOffset] = workerSyncedOops.prevXY[pointOffset];\n // \tmainOops.prevXY[pointOffset+1] = workerSyncedOops.prevXY[pointOffset+1];\n // }\n\n // naive latency compensation\n // Note: this applies to facemeshPrediction.annotations as well which references the same point objects\n // Note: This latency compensation only really works if it's already tracking well\n // if (prevFaceInViewConfidence > 0.99) {\n // \tfacemeshPrediction.scaledMesh.forEach((point) => {\n // \t\tpoint[0] += movementXSinceFacemeshUpdate;\n // \t\tpoint[1] += movementYSinceFacemeshUpdate;\n // \t});\n // }\n\n pointsBasedOnFaceInViewConfidence =\n facemeshPrediction.faceInViewConfidence;\n\n // TODO: separate confidence threshold for removing vs adding points?\n\n // cull points to those within useful facial region\n // TODO: use time travel for this too, probably! with a history of the points\n // a complexity would be that points can be removed over time and we need to keep them identified\n mainOops.filterPoints((pointIndex) => {\n var pointOffset = pointIndex * 2;\n // distance from tip of nose (stretched so make an ellipse taller than wide)\n var distance = Math.hypot(\n (annotations.noseTip[0][0] - mainOops.curXY[pointOffset]) *\n 1.4,\n annotations.noseTip[0][1] - mainOops.curXY[pointOffset + 1],\n );\n var headSize = Math.hypot(\n annotations.leftCheek[0][0] - annotations.rightCheek[0][0],\n annotations.leftCheek[0][1] - annotations.rightCheek[0][1],\n );\n if (distance > headSize) {\n return false;\n }\n // Avoid blinking eyes affecting pointer position.\n // distance to outer corners of eyes\n distance = Math.min(\n Math.hypot(\n annotations.leftEyeLower0[0][0] -\n mainOops.curXY[pointOffset],\n annotations.leftEyeLower0[0][1] -\n mainOops.curXY[pointOffset + 1],\n ),\n Math.hypot(\n annotations.rightEyeLower0[0][0] -\n mainOops.curXY[pointOffset],\n annotations.rightEyeLower0[0][1] -\n mainOops.curXY[pointOffset + 1],\n ),\n );\n if (distance < headSize * 0.42) {\n return false;\n }\n return true;\n });\n },\n () => {\n facemeshEstimating = false;\n facemeshFirstEstimation = false;\n },\n );\n }\n }\n mainOops.update(imageData);\n }\n\n if (facemeshPrediction) {\n ctx.fillStyle = \"red\";\n\n const bad =\n facemeshPrediction.faceInViewConfidence < faceInViewConfidenceThreshold;\n ctx.fillStyle = bad ? \"rgb(255,255,0)\" : \"rgb(130,255,50)\";\n if (\n !bad ||\n mainOops.pointCount < 3 ||\n facemeshPrediction.faceInViewConfidence >\n pointsBasedOnFaceInViewConfidence + 0.05\n ) {\n if (bad) {\n ctx.fillStyle = \"rgba(255,0,255)\";\n }\n if (update && useFacemesh) {\n // this should just be visual, since we only add/remove points based on the facemesh data when receiving it\n facemeshPrediction.scaledMesh.forEach((point) => {\n point[0] += prevMovementX;\n point[1] += prevMovementY;\n });\n }\n facemeshPrediction.scaledMesh.forEach(([x, y, z]) => {\n ctx.fillRect(x, y, 1, 1);\n });\n } else {\n if (update && useFacemesh) {\n pointsBasedOnFaceInViewConfidence -= 0.001;\n }\n }\n }\n\n if (face) {\n const bad = faceScore < faceScoreThreshold;\n ctx.strokeStyle = bad ? \"rgb(255,255,0)\" : \"rgb(130,255,50)\";\n if (\n !bad ||\n mainOops.pointCount < 2 ||\n faceScore > pointsBasedOnFaceScore + 0.05\n ) {\n if (bad) {\n ctx.strokeStyle = \"rgba(255,0,255)\";\n }\n if (update && useClmTracking) {\n pointsBasedOnFaceScore = faceScore;\n\n // nostrils\n maybeAddPoint(mainOops, face[42][0], face[42][1]);\n maybeAddPoint(mainOops, face[43][0], face[43][1]);\n // inner eye corners\n // maybeAddPoint(mainOops, face[25][0], face[25][1]);\n // maybeAddPoint(mainOops, face[30][0], face[30][1]);\n\n // TODO: separate confidence threshold for removing vs adding points?\n\n // cull points to those within useful facial region\n mainOops.filterPoints((pointIndex) => {\n var pointOffset = pointIndex * 2;\n // distance from tip of nose (stretched so make an ellipse taller than wide)\n var distance = Math.hypot(\n (face[62][0] - mainOops.curXY[pointOffset]) * 1.4,\n face[62][1] - mainOops.curXY[pointOffset + 1],\n );\n // distance based on outer eye corners\n var headSize = Math.hypot(\n face[23][0] - face[28][0],\n face[23][1] - face[28][1],\n );\n if (distance > headSize) {\n return false;\n }\n return true;\n });\n }\n } else {\n if (update && useClmTracking) {\n pointsBasedOnFaceScore -= 0.001;\n }\n }\n if (showClmTracking) {\n clmTracker.draw(canvas, undefined, undefined, true);\n }\n }\n if (debugTimeTravel) {\n ctx.save();\n ctx.globalAlpha = 0.8;\n ctx.drawImage(debugFramesCanvas, 0, 0);\n ctx.restore();\n ctx.drawImage(debugPointsCanvas, 0, 0);\n }\n ctx.fillStyle = \"lime\";\n mainOops.draw(ctx);\n debugPointsCtx.fillStyle = \"green\";\n mainOops.draw(debugPointsCtx);\n\n if (update) {\n var [movementX, movementY] = mainOops.getMovement();\n\n // Acceleration curves add a lot of stability,\n // letting you focus on a specific point without jitter, but still move quickly.\n\n // var accelerate = (delta, distance) => (delta / 10) * (distance ** 0.8);\n // var accelerate = (delta, distance) => (delta / 1) * (Math.abs(delta) ** 0.8);\n var accelerate = (delta, distance) =>\n (delta / 1) * Math.abs(delta * 5) ** acceleration;\n\n var distance = Math.hypot(movementX, movementY);\n var deltaX = accelerate(movementX * sensitivityX, distance);\n var deltaY = accelerate(movementY * sensitivityY, distance);\n\n if (debugAcceleration) {\n const graphWidth = 200;\n const graphHeight = 150;\n const graphMaxInput = 0.2;\n const graphMaxOutput = 0.4;\n const hilightInputRange = 0.01;\n ctx.save();\n ctx.fillStyle = \"black\";\n ctx.fillRect(0, 0, graphWidth, graphHeight);\n const hilightInput = movementX * sensitivityX;\n for (let x = 0; x < graphWidth; x++) {\n const input = (x / graphWidth) * graphMaxInput;\n const output = accelerate(input, input);\n const y = (output / graphMaxOutput) * graphHeight;\n // ctx.fillStyle = Math.abs(y - deltaX) < 1 ? \"yellow\" : \"lime\";\n const hilight =\n Math.abs(Math.abs(input) - Math.abs(hilightInput)) <\n hilightInputRange;\n if (hilight) {\n ctx.fillStyle = \"rgba(255, 255, 0, 0.3)\";\n ctx.fillRect(x, 0, 1, graphHeight);\n }\n ctx.fillStyle = hilight ? \"yellow\" : \"lime\";\n ctx.fillRect(x, graphHeight - y, 1, y);\n }\n ctx.restore();\n }\n\n // This should never happen\n if (!isFinite(deltaX) || !isFinite(deltaY)) {\n return;\n }\n\n if (!paused) {\n const screenWidth = window.moveMouse ? screen.width : innerWidth;\n const screenHeight = window.moveMouse ? screen.height : innerHeight;\n\n mouseX -= deltaX * screenWidth;\n mouseY += deltaY * screenHeight;\n\n mouseX = Math.min(Math.max(0, mouseX), screenWidth);\n mouseY = Math.min(Math.max(0, mouseY), screenHeight);\n\n if (mouseNeedsInitPos) {\n // TODO: option to get preexisting mouse position instead of set it to center of screen\n mouseX = screenWidth / 2;\n mouseY = screenHeight / 2;\n mouseNeedsInitPos = false;\n }\n if (window.moveMouse) {\n window.moveMouse(~~mouseX, ~~mouseY);\n pointerEl.style.display = \"none\";\n } else {\n pointerEl.style.display = \"\";\n pointerEl.style.left = `${mouseX}px`;\n pointerEl.style.top = `${mouseY}px`;\n }\n if (TrackyMouse.onPointerMove) {\n TrackyMouse.onPointerMove(mouseX, mouseY);\n }\n }\n prevMovementX = movementX;\n prevMovementY = movementY;\n // movementXSinceFacemeshUpdate += movementX;\n // movementYSinceFacemeshUpdate += movementY;\n if (enableTimeTravel) {\n if (facemeshEstimating) {\n const imageData = getCameraImageData();\n if (imageData) {\n cameraFramesSinceFacemeshUpdate.push(imageData);\n }\n // limit this buffer size in case something goes wrong\n if (cameraFramesSinceFacemeshUpdate.length > 500) {\n // maybe just clear it entirely, because a partial buffer might not be useful\n cameraFramesSinceFacemeshUpdate.length = 0;\n }\n }\n }\n }\n ctx.restore();\n\n if (showDebugText) {\n ctx.save();\n ctx.fillStyle = \"#fff\";\n ctx.strokeStyle = \"#000\";\n ctx.lineWidth = 3;\n ctx.font = \"20px sans-serif\";\n ctx.beginPath();\n const text3 =\n \"Face convergence score: \" +\n (useFacemesh && facemeshPrediction\n ? \"N/A\"\n : faceConvergence.toFixed(4));\n const text1 =\n \"Face tracking score: \" +\n (useFacemesh && facemeshPrediction\n ? facemeshPrediction.faceInViewConfidence\n : faceScore\n ).toFixed(4);\n const text2 =\n \"Points based on score: \" +\n (useFacemesh && facemeshPrediction\n ? pointsBasedOnFaceInViewConfidence\n : pointsBasedOnFaceScore\n ).toFixed(4);\n ctx.strokeText(text1, 50, 50);\n ctx.fillText(text1, 50, 50);\n ctx.strokeText(text2, 50, 70);\n ctx.fillText(text2, 50, 70);\n ctx.strokeText(text3, 50, 170);\n ctx.fillText(text3, 50, 170);\n ctx.fillStyle = \"lime\";\n ctx.fillRect(0, 150, faceConvergence, 5);\n ctx.fillRect(0, 0, faceScore * canvas.width, 5);\n ctx.restore();\n }\n // stats.update();\n }\n\n function circle(ctx, x, y, r) {\n ctx.beginPath();\n ctx.arc(x, y, r, 0, Math.PI * 2);\n ctx.fill();\n }\n\n animate();\n if (SLOWMO) {\n setInterval(draw, 200);\n }\n\n if (window.moveMouse) {\n useCamera();\n }\n\n const handleShortcut = (shortcutType) => {\n if (shortcutType === \"toggle-tracking\") {\n paused = !paused;\n mouseNeedsInitPos = true;\n if (paused) {\n pointerEl.style.display = \"none\";\n }\n }\n };\n if (typeof onShortcut !== \"undefined\") {\n onShortcut(handleShortcut);\n } else {\n addEventListener(\"keydown\", (event) => {\n // Same shortcut as the global shortcut in the electron app (is that gonna be a problem?)\n if (\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n !event.shiftKey &&\n event.key === \"F9\"\n ) {\n handleShortcut(\"toggle-tracking\");\n }\n });\n }\n};\n","import { TreeBase } from \"components/treebase\";\nimport * as Props from \"components/props\";\nimport { TrackyMouse } from \"./tracky-mouse/tracky-mouse\";\nimport \"css/tracky-mouse.css\";\nimport Globals from \"app/globals\";\nimport { html } from \"uhtml\";\n\nclass HeadMouse extends TreeBase {\n stateName = new Props.String(\"$HeadMouse\");\n\n /** @type {Promise} */\n promise;\n\n template() {\n const stateName = this.stateName.value;\n const { state } = Globals;\n const updated = state.hasBeenUpdated(stateName);\n this.promise.then(() => {\n if (updated) {\n const status = state.get(stateName, \"off\");\n if (status == \"on\" || status == \"setup\") {\n document.body.classList.toggle(\"HeadMouse\", true);\n TrackyMouse.useCamera();\n TrackyMouse.showUI(status == \"setup\");\n } else if (status == \"off\") {\n document.body.classList.toggle(\"HeadMouse\", false);\n TrackyMouse.pauseCamera();\n TrackyMouse.showUI(false);\n }\n }\n });\n return html`
    `;\n }\n\n init() {\n super.init();\n TrackyMouse.dependenciesRoot = \"./tracky-mouse\";\n this.promise = TrackyMouse.loadDependencies();\n this.promise.then(() => {\n TrackyMouse.init();\n // TrackyMouse.useCamera();\n\n // Pointer event simulation logic should be built into tracky-mouse in the future.\n const getEventOptions = ({ x, y }) => {\n return {\n view: window, // needed so the browser can calculate offsetX/Y from the clientX/Y\n clientX: x,\n clientY: y,\n pointerId: 1234567890, // a special value so other code can detect these simulated events\n pointerType: \"mouse\",\n isPrimary: true,\n };\n };\n let last_el_over;\n /** @param {number} x\n * @param {number} y\n */\n TrackyMouse.onPointerMove = (x, y) => {\n const target = document.elementFromPoint(x, y) || document.body;\n if (target !== last_el_over) {\n if (last_el_over) {\n const event = new PointerEvent(\n \"pointerout\",\n Object.assign(getEventOptions({ x, y }), {\n button: 0,\n buttons: 1,\n bubbles: true,\n cancelable: false,\n }),\n );\n last_el_over.dispatchEvent(event);\n }\n const event = new PointerEvent(\n \"pointerover\",\n Object.assign(getEventOptions({ x, y }), {\n button: 0,\n buttons: 1,\n bubbles: true,\n cancelable: false,\n }),\n );\n target.dispatchEvent(event);\n last_el_over = target;\n }\n const event = new PointerEvent(\n \"pointermove\",\n Object.assign(getEventOptions({ x, y }), {\n button: 0,\n buttons: 1,\n bubbles: true,\n cancelable: true,\n }),\n );\n target.dispatchEvent(event);\n };\n });\n }\n}\nTreeBase.register(HeadMouse, \"HeadMouse\");\n","/** A menu object with these features:\n * * Accessible\n * * Dynamically update available items\n */\n\nimport { html } from \"uhtml\";\nimport \"css/menu.css\";\nimport Globals from \"app/globals\";\nimport { callAfterRender } from \"app/render\";\n\nexport class MenuItem {\n /**\n * @param {Object} obj - argument object\n * @param {string} obj.label\n * @param {Function | null} [ obj.callback ]\n * @param {any[]} [ obj.args ]\n * @param {string} [ obj.title ]\n * @param {string} [ obj.divider ]\n */\n constructor({ label, callback = null, args = [], title = \"\", divider = \"\" }) {\n this.label = label;\n this.callback = callback;\n this.args = args;\n this.title = title;\n this.divider = divider;\n }\n\n apply() {\n if (this.callback) this.callback(...this.args);\n }\n}\n\nexport class Menu {\n // a unique id for each menu\n static _menuCount = 0;\n id = `menu_${Menu._menuCount++}`;\n\n // these are for aria references\n contentId = this.id + \"_content\";\n buttonId = this.id + \"_button\";\n\n expanded = false; // true when the menu is shown\n\n /** @type {MenuItem[]} */\n items = []; // cached items returned from the contentCallback\n\n /** @type {HTMLElement} - reference to the outer div */\n current;\n\n /**\n * @param {string} label - label on the menu button\n * @param {function(...any): MenuItem[]} contentCallback - returns the menu items to display\n * @param {any[]} callbackArgs - type\n */\n constructor(label, contentCallback, ...callbackArgs) {\n this.label = label;\n this.contentCallback = contentCallback;\n this.callbackArgs = callbackArgs;\n }\n\n render() {\n if (this.expanded) {\n this.items = this.contentCallback(...this.callbackArgs);\n if (this.items.length == 0) {\n this.items = [new MenuItem({ label: \"None\" })];\n }\n } else {\n this.items = [];\n }\n return html`\n \n ${this.label}\n \n \n ${this.items.map((item, index) => {\n return html`
  • \n {\n if (item.callback) {\n this.toggleExpanded();\n item.apply();\n }\n }}\n >\n ${item.label}\n \n
  • `;\n })}\n \n
    `;\n }\n\n /** @returns {HTMLButtonElement | null} */\n get focusedItem() {\n return this.current.querySelector(\"li > button:focus\");\n }\n\n /** @param {number} index */\n setFocus(index) {\n // make it a circular buffer\n if (!this.items.length) return;\n index = (index + this.items.length) % this.items.length;\n const item = /** @type {HTMLElement} */ (\n this.current.querySelector(`button[index=\"${index}\"]`)\n );\n if (item) item.focus();\n }\n\n /* Close the menu when it loses focus */\n focusHandler = ({ relatedTarget }) => {\n if (!relatedTarget) {\n // focus is gone, put it back on the button\n callAfterRender(() => {\n const button = document.getElementById(this.buttonId);\n if (button) button.focus();\n });\n if (this.expanded) this.toggleExpanded();\n return;\n }\n const menu = document.getElementById(this.id);\n if (menu && !menu.contains(relatedTarget) && this.expanded) {\n this.toggleExpanded();\n }\n };\n\n /* Toggle the menu state */\n toggleExpanded = (event = null, last = false) => {\n {\n this.expanded = !this.expanded;\n // this trick lets us distinguish between clicking the menu button with the mouse\n // and hitting Enter on the keyboard\n const mouseClick = event && event[\"detail\"] !== 0;\n if (this.expanded && (!event || !mouseClick)) {\n // focus on the first element when expanding via keyboard\n callAfterRender(() => {\n if (last) {\n this.setFocus(-1);\n } else {\n this.setFocus(0);\n }\n });\n } else if (!this.expanded && mouseClick) {\n callAfterRender(() => Globals.designer.restoreFocus());\n }\n Globals.state.update();\n }\n };\n\n /** handle the keyboard when inside the menu\n *\n * @param {KeyboardEvent} event\n * */\n menuKeyHandler = ({ key }) => {\n if (key == \"Escape\" && this.expanded) {\n this.toggleExpanded();\n } else if (key == \"ArrowUp\" || key == \"ArrowDown\") {\n const focused = this.focusedItem;\n const index = +(focused?.getAttribute(\"index\") || 0);\n const step = key == \"ArrowUp\" ? -1 : 1;\n this.setFocus(index + step);\n } else if (key == \"Home\") {\n this.setFocus(0);\n } else if (key == \"End\") {\n this.setFocus(-1);\n } else if (\n key.length == 1 &&\n ((key >= \"a\" && key <= \"z\") || (key >= \"A\" && key <= \"Z\"))\n ) {\n const focused = this.focusedItem;\n const index = +(focused?.getAttribute(\"index\") || 0);\n for (let i = 1; i < this.items.length; i++) {\n if (\n this.items[(index + i) % this.items.length].label\n .toLowerCase()\n .startsWith(key)\n ) {\n this.setFocus(i + index);\n break;\n }\n }\n }\n };\n\n /**\n * Handle the keyboard when on the menu button\n *\n * @param {KeyboardEvent} event */\n buttonKeyHandler = (event) => {\n if (event.key == \"ArrowDown\" || event.key == \" \") {\n event.preventDefault();\n this.toggleExpanded();\n } else if (event.key == \"ArrowUp\") {\n event.preventDefault();\n this.toggleExpanded(null, true);\n }\n };\n}\n","// Interface to the service worker for offline\n\nimport { html } from \"uhtml\";\nimport \"css/serviceWorker.css\";\n\n/** A pointer to the service worker\n * @type {ServiceWorkerRegistration} */\nlet registration;\n\n/**\n * Ask the service worker to check for an update\n */\nexport function workerCheckForUpdate() {\n if (registration) {\n registration.update();\n }\n}\n\n/**\n * Show the update button when an update is available\n */\nfunction signalUpdateAvailable() {\n document.body.classList.add(\"update-available\");\n}\n\n// only start the service worker in production mode\nif (import.meta.env.PROD && navigator.serviceWorker) {\n window.addEventListener(\"load\", async () => {\n registration = await navigator.serviceWorker.register(\"service-worker.js\", {\n scope: \"/OS-DPI/\",\n });\n // ensure the case when the updatefound event was missed is also handled\n // by re-invoking the prompt when there's a waiting Service Worker\n if (registration.waiting) {\n signalUpdateAvailable();\n }\n\n // detect Service Worker update available and wait for it to become installed\n registration.addEventListener(\"updatefound\", () => {\n if (registration.installing) {\n // wait until the new Service worker is actually installed (ready to take over)\n registration.installing.addEventListener(\"statechange\", () => {\n if (registration.waiting) {\n // if there's an existing controller (previous Service Worker), show the prompt\n if (navigator.serviceWorker.controller) {\n signalUpdateAvailable();\n } else {\n // otherwise it's the first install, nothing to do\n console.log(\"Service Worker initialized for the first time\");\n }\n }\n });\n }\n });\n\n let refreshing = false;\n\n // detect controller change and refresh the page\n navigator.serviceWorker.addEventListener(\"controllerchange\", () => {\n if (!refreshing) {\n window.location.reload();\n refreshing = true;\n }\n });\n });\n}\n\n/**\n * Return a button for updating the service worker\n * CSS assures this is only visible when an update is available\n * @returns {Hole}\n */\nexport function workerUpdateButton() {\n return html` {\n if (registration && registration.waiting) {\n registration.waiting.postMessage(\"SKIP_WAITING\");\n }\n }}\n title=\"Click to update the app\"\n >\n Update\n `;\n}\n","import { TreeBase } from \"./treebase\";\nimport { Stack } from \"./stack\";\nimport { PatternGroup } from \"components/access/pattern\";\nimport { Page } from \"components/page\";\n\nimport \"css/toolbar.css\";\nimport db from \"app/db\";\nimport { html, render } from \"uhtml\";\nimport Globals from \"app/globals\";\nimport { Menu, MenuItem } from \"./menu\";\nimport { callAfterRender } from \"app/render\";\nimport { fileOpen } from \"browser-fs-access\";\nimport pleaseWait from \"components/wait\";\nimport { DB } from \"app/db\";\nimport { Designer } from \"./designer\";\nimport { readSheetFromBlob, saveContent } from \"./content\";\nimport { Data } from \"app/data\";\nimport { SaveLogs, ClearLogs } from \"./logger\";\nimport { friendlyName, wikiName } from \"./names\";\n\nimport { workerUpdateButton } from \"components/serviceWorker\";\n\n/** Return a list of available Menu items on this component\n *\n * @param {TreeBase} component\n * @param {\"add\" | \"delete\" | \"move\" | \"all\"} which - which actions to return\n * @param {function} wrapper\n * @returns {MenuItem[]}\n */\nfunction getComponentMenuItems(component, which = \"all\", wrapper) {\n /** @type {MenuItem[]} */\n const result = [];\n\n // add actions\n if (which == \"add\" || which == \"all\") {\n for (const className of component.allowedChildren.sort()) {\n result.push(\n new MenuItem({\n label: `${friendlyName(className)}`,\n callback: wrapper(() => {\n const result = TreeBase.create(className, component);\n result.init();\n return result.id;\n }),\n }),\n );\n }\n }\n // delete\n if (which == \"delete\" || which == \"all\") {\n if (component.allowDelete) {\n result.push(\n new MenuItem({\n label: `Delete`,\n title: `Delete ${friendlyName(component.className)}`,\n callback: wrapper(() => {\n // remove returns the id of the nearest neighbor or the parent\n const nextId = component.remove();\n return nextId;\n }),\n }),\n );\n }\n }\n\n // move\n if (which == \"move\" || which == \"all\") {\n const parent = component.parent;\n if (parent) {\n const index = component.index;\n\n if (index > 0) {\n // moveup\n result.push(\n new MenuItem({\n label: `Move up`,\n title: `Move up ${friendlyName(component.className)}`,\n callback: wrapper(() => {\n component.moveUpDown(true);\n return component.id;\n }),\n }),\n );\n }\n if (index < parent.children.length - 1) {\n // movedown\n result.push(\n new MenuItem({\n label: `Move down`,\n title: `Move down ${friendlyName(component.className)}`,\n callback: wrapper(() => {\n component.moveUpDown(false);\n return component.id;\n }),\n }),\n );\n }\n }\n }\n return result;\n}\n\n/**\n * Determines valid menu items given a menu type.\n * @param {\"add\" | \"delete\" | \"move\" | \"all\"} type\n * @return {{ child: MenuItem[], parent: MenuItem[]}}\n * */\nfunction getPanelMenuItems(type) {\n // Figure out which tab is active\n const { designer } = Globals;\n const panel = designer.currentPanel;\n\n // Ask that tab which component is focused\n if (!panel) {\n console.log(\"no panel\");\n return { child: [], parent: [] };\n }\n const component =\n TreeBase.componentFromId(panel.lastFocused) || panel.children[0] || panel;\n if (!component) {\n console.log(\"no component\");\n return { child: [], parent: [] };\n }\n\n /** @param {function():string} arg */\n function itemCallback(arg) {\n return () => {\n let nextId = arg();\n if (!panel) return;\n // we're looking for the settings view but we may have the id of the user view\n if (panel.lastFocused.startsWith(nextId)) {\n nextId = panel.lastFocused;\n }\n if (nextId.match(/^TreeBase-\\d+$/)) {\n nextId = nextId + \"-settings\";\n }\n panel.lastFocused = nextId;\n callAfterRender(() => panel.parent?.restoreFocus());\n panel.update();\n };\n }\n\n // Ask that component for its menu actions\n let menuItems = getComponentMenuItems(component, type, itemCallback);\n\n // Add the parent's actions in some cases\n let parent = component.parent;\n\n let parentItems = new Map();\n for (let i = 0; i < 3; i++) {\n if (\n type !== \"add\" ||\n !parent ||\n (component instanceof Stack && parent instanceof Stack) ||\n (component instanceof PatternGroup && parent instanceof PatternGroup) ||\n parent instanceof Designer\n ) {\n break;\n }\n\n for (const item of getComponentMenuItems(parent, type, itemCallback)) {\n if (!parentItems.has(item.label)) {\n parentItems.set(item.label, item);\n }\n }\n if (parentItems.size > 10) break;\n parent = parent.parent;\n // if (menuItems.length && parentItems.length) {\n // parentItems[0].divider = \"Parent\";\n // }\n // menuItems = menuItems.concat(parentItems);\n }\n\n return { child: menuItems, parent: [...parentItems.values()] };\n}\n\n/** @param {ToolBar} bar */\nfunction getFileMenuItems(bar) {\n return [\n new MenuItem({\n label: \"Import\",\n callback: async () => {\n const local_db = new DB();\n fileOpen({\n mimeTypes: [\"application/octet-stream\"],\n extensions: [\".osdpi\", \".zip\"],\n description: \"OS-DPI designs\",\n id: \"os-dpi\",\n })\n .then((file) => pleaseWait(local_db.readDesignFromFile(file)))\n .then(() => {\n window.open(`#${local_db.designName}`, \"_blank\", `noopener=true`);\n })\n .catch((e) => console.log(e));\n },\n }),\n new MenuItem({\n label: \"Export\",\n callback: () => {\n db.saveDesign();\n },\n }),\n new MenuItem({\n label: \"New\",\n callback: async () => {\n const name = await db.uniqueName(\"new\");\n window.open(`#${name}`, \"_blank\", `noopener=true`);\n },\n }),\n new MenuItem({\n label: \"Open\",\n callback: () => {\n bar.designListDialog.open();\n },\n }),\n new MenuItem({\n label: \"Unload\",\n callback: async () => {\n const saved = await db.saved();\n if (saved.indexOf(db.designName) < 0) {\n try {\n await db.saveDesign();\n } catch (e) {\n if (e instanceof DOMException) {\n console.log(\"canceled save\");\n } else {\n throw e;\n }\n }\n }\n await db.unload(db.designName);\n window.close();\n },\n }),\n new MenuItem({\n label: \"Unload...\",\n callback: () => {\n bar.designListDialog.unload();\n },\n }),\n new MenuItem({\n label: \"Load Sheet\",\n title: \"Load a spreadsheet of content\",\n divider: \"Content\",\n callback: async () => {\n try {\n const blob = await fileOpen({\n extensions: [\".csv\", \".tsv\", \".ods\", \".xls\", \".xlsx\"],\n description: \"Spreadsheets\",\n id: \"os-dpi\",\n });\n if (blob) {\n sheet.handle = blob.handle;\n const result = await pleaseWait(readSheetFromBlob(blob));\n await db.write(\"content\", result);\n Globals.data = new Data(result);\n Globals.state.update();\n }\n } catch (e) {\n sheet.handle = undefined;\n }\n },\n }),\n new MenuItem({\n label: \"Reload sheet\",\n title: \"Reload a spreadsheet of content\",\n callback:\n sheet.handle && // only offer reload if we have the handle\n (async () => {\n if (!sheet.handle) return;\n let blob;\n blob = await sheet.handle.getFile();\n if (blob) {\n const result = await pleaseWait(readSheetFromBlob(blob));\n await db.write(\"content\", result);\n Globals.data = new Data(result);\n Globals.state.update();\n } else {\n console.log(\"no file to reload\");\n }\n }),\n }),\n new MenuItem({\n label: \"Save sheet\",\n title: \"Save the content as a spreadsheet\",\n callback: () => {\n saveContent(db.designName, Globals.data.allrows, \"xlsx\");\n },\n }),\n new MenuItem({\n label: \"Load media\",\n title: \"Load audio or images into the design\",\n callback: async () => {\n try {\n const files = await fileOpen({\n description: \"Media files\",\n mimeTypes: [\"image/*\", \"audio/*\", \"video/mp4\", \"video/webm\"],\n multiple: true,\n });\n for (const file of files) {\n await db.addMedia(file, file.name);\n if (file.type.startsWith(\"image/\")) {\n for (const img of document.querySelectorAll(\n `img[dbsrc=\"${file.name}\"]`,\n )) {\n /** @type {ImgDb} */ (img).refresh();\n }\n }\n if (file.type.startsWith(\"video/\")) {\n for (const img of document.querySelectorAll(\n `video[dbsrc=\"${file.name}\"]`,\n )) {\n /** @type {ImgDb} */ (img).refresh();\n }\n }\n }\n } catch {\n // ignore the error\n }\n Globals.state.update();\n },\n }),\n new MenuItem({\n label: \"Save logs\",\n title: \"Save any logs as spreadsheets\",\n divider: \"Logs\",\n callback: async () => {\n SaveLogs();\n },\n }),\n new MenuItem({\n label: \"Clear logs\",\n title: \"Clear any stored logs\",\n callback: async () => {\n ClearLogs();\n },\n }),\n ];\n}\n\n/** Copy (or cut) a component to the clipboard\n * @param {boolean} cut - true to cut\n */\nasync function copyComponent(cut = false) {\n const component = Globals.designer.selectedComponent;\n if (component) {\n const parent = component.parent;\n if (!(component instanceof Page) && !(parent instanceof Designer)) {\n const json = JSON.stringify(\n // don't include UID or OneOfGroup props in the copy\n component.toObject({ omittedProps: [\"UID\", \"OneOfGroup\"] }),\n );\n await navigator.clipboard.writeText(json);\n if (cut) {\n component.remove();\n Globals.designer.currentPanel?.onUpdate();\n }\n }\n }\n}\n\nfunction getEditMenuItems() {\n let items = [\n new MenuItem({\n label: \"Undo\",\n callback: () => {\n Globals.designer.currentPanel?.undo();\n },\n }),\n new MenuItem({\n label: \"Copy\",\n callback: copyComponent,\n }),\n new MenuItem({\n label: \"Cut\",\n callback: async () => {\n copyComponent(true);\n },\n }),\n new MenuItem({\n label: \"Paste\",\n callback: async () => {\n const json = await navigator.clipboard.readText();\n // we can't trust this input from the clipboard, catch and report errors\n\n try {\n var obj = JSON.parse(json);\n } catch (e) {\n Globals.error.report(\"Invalid input to Paste\");\n Globals.error.report(json);\n Globals.state.update();\n return;\n }\n const className = obj.className;\n if (!className) return;\n // find a place that can accept it\n const anchor = Globals.designer.selectedComponent;\n if (!anchor) return;\n /** @type {TreeBase | null } */\n let current = anchor;\n while (current) {\n if (current.allowedChildren.indexOf(className) >= 0) {\n const result = TreeBase.fromObject(obj, current);\n if (\n anchor.parent === result.parent &&\n result.index != anchor.index + 1\n ) {\n anchor.moveTo(anchor.index + 1);\n }\n Globals.designer.currentPanel?.onUpdate();\n return;\n }\n current = current.parent;\n }\n },\n }),\n new MenuItem({\n label: \"Paste Into\",\n callback: async () => {\n const json = await navigator.clipboard.readText();\n try {\n var obj = JSON.parse(json);\n } catch (e) {\n Globals.error.report(\"Invalid input to Paste Into\");\n Globals.error.report(json);\n Globals.state.update();\n return;\n }\n const className = obj.className;\n if (!className) return;\n // find a place that can accept it\n const current = Globals.designer.selectedComponent;\n if (current && current.allowedChildren.indexOf(className) >= 0) {\n TreeBase.fromObject(obj, current);\n Globals.designer.currentPanel?.onUpdate();\n }\n },\n }),\n ];\n const deleteItems = getPanelMenuItems(\"delete\");\n const moveItems = getPanelMenuItems(\"move\");\n items = items.concat(moveItems.child, deleteItems.child);\n const parentItems = moveItems.parent.concat(deleteItems.parent);\n if (parentItems.length > 0) {\n parentItems[0].divider = \"Parents\";\n items = items.concat(parentItems);\n }\n return items;\n}\n\n/** Open Wiki documentation in another tab\n * @param {string} name\n */\nfunction openHelpURL(name) {\n const wiki = \"https://github.com/unc-project-open-aac/os-dpi/wiki\";\n\n const url = `${wiki}/${name}`;\n\n window.open(url, \"help\");\n}\n\nfunction getHelpMenuItems() {\n /** @type {MenuItem[]} */\n const items = [];\n const names = new Set();\n let component =\n Globals.designer.selectedComponent || Globals.designer.currentPanel;\n while (component && component.parent) {\n const className = component.className;\n const menuName = friendlyName(className);\n if (!names.has(menuName)) {\n items.push(\n new MenuItem({\n label: menuName,\n callback: openHelpURL,\n args: [wikiName(className)],\n }),\n );\n names.add(menuName);\n }\n component = component.parent;\n }\n items.push(\n new MenuItem({\n label: \"About OS-DPI\",\n callback: openHelpURL,\n args: [\"About-Project-Open\"],\n }),\n );\n return items;\n}\n\n/**\n * @param {Hole} thing\n * @param {string} hint\n */\nfunction hinted(thing, hint) {\n return html`
    ${thing}
    `;\n}\n\nconst sheet = {\n /** @type {FileSystemFileHandle | undefined } */\n handle: undefined,\n};\n\n/**\n * Display a list of designs in the db so they can be reopened or unloaded\n */\nclass DesignListDialog {\n /** Show imported designs so they can be reopened */\n async open() {\n const names = await db.names();\n const dialog = /** @type {HTMLDialogElement} */ (\n document.getElementById(\"OpenDialog\")\n );\n const list = html`
    dialog.close()}>\n

    Open one of your designs

    \n
      \n ${names.map(\n (name) =>\n html`
    • \n ${name}\n
    • `,\n )}\n
    \n \n
    `;\n if (dialog) {\n render(dialog, list);\n }\n dialog.showModal();\n }\n /** Show imported designs so they can be unloaded */\n async unload() {\n const names = await db.names();\n const saved = await db.saved();\n const dialog = /** @type {HTMLDialogElement} */ (\n document.getElementById(\"OpenDialog\")\n );\n /** Unload the checked designs */\n async function unloadChecked() {\n const checkboxes = /** @type {HTMLInputElement[]} */ ([\n ...dialog.querySelectorAll('input[type=\"checkbox\"]'),\n ]);\n for (const checkbox of checkboxes) {\n if (checkbox.checked) {\n await db.unload(checkbox.name);\n }\n }\n dialog.close();\n }\n const list = html`
    \n

    Check the designs you want to unload

    \n
      \n ${names.map((name) => {\n let label;\n if (saved.includes(name)) {\n label = html`${name}`;\n } else {\n label = html`${name} Not saved`;\n }\n return html`
    • \n \n
    • `;\n })}\n
    \n \n \n
    `;\n if (dialog) {\n render(dialog, list);\n }\n dialog.showModal();\n }\n render() {\n return html``;\n }\n}\n\nexport class ToolBar extends TreeBase {\n constructor() {\n super();\n this.fileMenu = new Menu(\"File\", getFileMenuItems, this);\n this.editMenu = new Menu(\"Edit\", getEditMenuItems);\n this.addMenu = new Menu(\n \"Add\",\n () => {\n const { child, parent } = getPanelMenuItems(\"add\");\n if (parent.length > 0) {\n parent[0].divider = \"Parent\" + (parent.length > 1 ? \"s\" : \"\");\n }\n return child.concat(parent);\n },\n \"add\",\n );\n this.helpMenu = new Menu(\"Help\", getHelpMenuItems, this);\n this.designListDialog = new DesignListDialog();\n }\n\n template() {\n return html`\n
    \n
      \n
    • \n \n ${hinted(\n html`\n db\n .renameDesign(event.target.value)\n .then(() => (window.location.hash = db.designName))}\n />`,\n \"N\",\n )}\n
    • \n
    • \n ${\n // @ts-ignore\n hinted(this.fileMenu.render(), \"F\")\n }\n
    • \n
    • \n ${\n // @ts-ignore\n hinted(this.editMenu.render(), \"E\")\n }\n
    • \n
    • \n ${\n // @ts-ignore\n hinted(this.addMenu.render(), \"A\")\n }\n
    • \n
    • \n ${\n // @ts-ignore\n hinted(this.helpMenu.render(), \"H\")\n }\n
    • \n
    • ${workerUpdateButton()}
    • \n
    \n ${this.designListDialog.render()}\n
    \n `;\n }\n}\nTreeBase.register(ToolBar, \"ToolBar\");\n","import { Messages } from \"./components/errors\";\nimport { Data } from \"./data\";\nimport { State } from \"./state\";\nimport \"./components\";\nimport { Layout } from \"./components/layout\";\nimport { Monitor } from \"./components/monitor\";\nimport { ToolBar } from \"./components/toolbar\";\nimport db from \"./db\";\nimport pleaseWait from \"./components/wait\";\nimport \"css/designer.css\";\nimport \"css/colors.css\";\nimport Globals from \"./globals\";\nimport { PatternList } from \"./components/access/pattern\";\nimport { MethodChooser } from \"./components/access/method\";\nimport { CueList } from \"./components/access/cues\";\nimport { Actions } from \"./components/actions\";\nimport { callAfterRender, safeRender, postRender } from \"./render\";\nimport { Designer } from \"components/designer\";\nimport { workerCheckForUpdate } from \"components/serviceWorker\";\nimport { accessed } from \"./eval\";\nimport { TreeBase } from \"./components/treebase\";\n\n/** let me wait for the page to load */\nconst pageLoaded = new Promise((resolve) => {\n window.addEventListener(\"load\", () => {\n document.body.classList.add(\"loaded\");\n resolve(true);\n });\n});\n\n/** Load page and data then go\n */\nexport async function start() {\n let editing = true;\n if (window.location.search && !window.location.hash.slice(1)) {\n const params = new URLSearchParams(window.location.search);\n const fetch = params.get(\"fetch\");\n if (fetch) {\n await pleaseWait(db.readDesignFromURL(fetch));\n editing = params.get(\"edit\") !== null;\n window.history.replaceState(\n {},\n document.title,\n window.location.origin + window.location.pathname + \"#\" + db.designName,\n );\n }\n }\n let name = window.location.hash.slice(1);\n if (!name) {\n name = await db.uniqueName(\"new\");\n window.location.hash = `#${name}`;\n }\n db.setDesignName(name);\n const dataArray = await db.read(\"content\", []);\n await pageLoaded;\n\n Globals.data = new Data(dataArray);\n const layout = await Layout.load(Layout);\n Globals.layout = layout;\n Globals.tree = layout.children[0];\n Globals.state = new State(`UIState`);\n Globals.actions = await Actions.load(Actions);\n Globals.cues = await CueList.load(CueList);\n Globals.patterns = await PatternList.load(PatternList);\n Globals.method = await MethodChooser.load(MethodChooser);\n Globals.restart = async () => {\n // tear down any existing event handlers before restarting\n Globals.method.stop();\n TreeBase.treeBaseCounter = 0;\n start();\n };\n Globals.error = new Messages();\n\n /** @param {() => void} f */\n function debounce(f) {\n let timeout = null;\n return () => {\n if (timeout) window.cancelAnimationFrame(timeout);\n timeout = window.requestAnimationFrame(f);\n };\n }\n\n /* Designer */\n Globals.state.define(\"editing\", editing); // for now\n Globals.designer = /** @type {Designer} */ (\n Designer.fromObject({\n className: \"Designer\",\n props: { tabEdge: \"top\", stateName: \"designerTab\" },\n children: [\n layout,\n {\n className: \"Content\",\n props: {},\n children: [],\n },\n Globals.actions,\n Globals.cues,\n Globals.patterns,\n Globals.method,\n ],\n })\n );\n\n /* ToolBar */\n const toolbar = ToolBar.create(\"ToolBar\", null);\n toolbar.init();\n\n /* Monitor */\n const monitor = Monitor.create(\"Monitor\", null);\n monitor.init();\n\n function renderUI() {\n const startTime = performance.now();\n document.body.classList.toggle(\"designing\", Globals.state.get(\"editing\"));\n // clear the changed flag, TODO there must be a better way!\n safeRender(\"cues\", Globals.cues);\n safeRender(\"UI\", Globals.tree);\n safeRender(\"toolbar\", toolbar);\n safeRender(\"tabs\", Globals.designer);\n safeRender(\"monitor\", monitor);\n safeRender(\"errors\", Globals.error);\n postRender();\n Globals.method.refresh();\n // clear the accessed bits for the next cycle\n accessed.clear();\n // clear the updated bits for the next cycle\n Globals.state.clearUpdated();\n\n if (location.host.startsWith(\"localhost\")) {\n const timer = document.getElementById(\"timer\");\n if (timer) {\n timer.innerText = (performance.now() - startTime).toFixed(0);\n }\n }\n workerCheckForUpdate();\n }\n Globals.state.observe(debounce(renderUI));\n callAfterRender(() => Globals.designer.restoreFocus());\n renderUI();\n}\n\n/* Watch for updates happening in other tabs */\nconst channel = new BroadcastChannel(\"os-dpi\");\n/** @param {MessageEvent} event */\nchannel.onmessage = (event) => {\n const message = /** @type {UpdateNotification} */ (event.data);\n if (db.designName == message.name) {\n if (message.action == \"update\") {\n start();\n } else if (message.action == \"rename\" && message.newName) {\n window.location.hash = message.newName;\n } else if (message.action == \"unload\") {\n window.close();\n if (!window.closed) {\n window.location.hash = \"new\";\n }\n }\n }\n};\ndb.addUpdateListener((message) => {\n channel.postMessage(message);\n});\n\n// watch for changes to the hash such as using the browser back button\nwindow.addEventListener(\"hashchange\", () => {\n sessionStorage.clear();\n start();\n});\n\n// watch for window resize and force a redraw\nwindow.addEventListener(\"resize\", () => {\n if (!Globals.state) return;\n Globals.state.update();\n});\n\nstart();\n"],"file":"index.js"} \ No newline at end of file diff --git a/service-worker.js b/service-worker.js index fb20db3..30cf2a9 100644 --- a/service-worker.js +++ b/service-worker.js @@ -1,6 +1,6 @@ var GHPATH = "/OS-DPI"; var APP_PREFIX = "osdpi_"; -var VERSION = "2023-11-13-15-41-11"; +var VERSION = "2024-0-1-11-8-43"; var URLS = [ `${GHPATH}/`, `${GHPATH}/index.html`, @@ -11,19 +11,16 @@ var URLS = [ var CACHE_NAME = APP_PREFIX + VERSION; self.addEventListener("fetch", function (/** @type {FetchEvent} */ e) { - // console.log("Fetch request : " + e.request.url); const url = new URL(e.request.url); if (URLS.includes(url.pathname)) { e.respondWith( caches.match(e.request).then(function (request) { if (request) { - // console.log("Responding with cache : " + e.request.url); return request; } else { - // console.log("File is not cached, fetching : " + e.request.url); return fetch(e.request); } - }) + }), ); } }); @@ -31,9 +28,8 @@ self.addEventListener("fetch", function (/** @type {FetchEvent} */ e) { self.addEventListener("install", function (/** @type {ExtendableEvent} */ e) { e.waitUntil( caches.open(CACHE_NAME).then(function (cache) { - // console.log("Installing cache : " + CACHE_NAME); return cache.addAll(URLS); - }) + }), ); }); @@ -47,20 +43,18 @@ self.addEventListener("activate", function (/** @type {ExtendableEvent} */ e) { return Promise.all( keyList.map(function (key, i) { if (cacheWhitelist.indexOf(key) === -1) { - // console.log("Deleting cache : " + keyList[i]); return caches.delete(keyList[i]); } - }) + }), ); - }) + }), ); }); - self.addEventListener("message", (/** @type {MessageEvent} */ event) => { if (event.data === "SKIP_WAITING") { - // I'm missing something in my config to cause the following error - // @ts-ignore - self.skipWaiting(); + /** @type {ServiceWorkerGlobalScope} */ ( + /** @type {unknown} */ (self) + ).skipWaiting(); } }); //# sourceMappingURL=service-worker.js.map diff --git a/service-worker.js.map b/service-worker.js.map index 201dcad..dcd4cba 100644 --- a/service-worker.js.map +++ b/service-worker.js.map @@ -1 +1 @@ -{"version":3,"file":"service-worker.js","sources":["../service-worker.js"],"sourcesContent":["var GHPATH = \"/OS-DPI\";\nvar APP_PREFIX = \"osdpi_\";\nvar VERSION = APP_VERSION;\nvar URLS = [\n `${GHPATH}/`,\n `${GHPATH}/index.html`,\n `${GHPATH}/index.css`,\n `${GHPATH}/index.js`,\n `${GHPATH}/xlsx.js`,\n];\n\nvar CACHE_NAME = APP_PREFIX + VERSION;\nself.addEventListener(\"fetch\", function (/** @type {FetchEvent} */ e) {\n // console.log(\"Fetch request : \" + e.request.url);\n const url = new URL(e.request.url);\n if (URLS.includes(url.pathname)) {\n e.respondWith(\n caches.match(e.request).then(function (request) {\n if (request) {\n // console.log(\"Responding with cache : \" + e.request.url);\n return request;\n } else {\n // console.log(\"File is not cached, fetching : \" + e.request.url);\n return fetch(e.request);\n }\n })\n );\n }\n});\n\nself.addEventListener(\"install\", function (/** @type {ExtendableEvent} */ e) {\n e.waitUntil(\n caches.open(CACHE_NAME).then(function (cache) {\n // console.log(\"Installing cache : \" + CACHE_NAME);\n return cache.addAll(URLS);\n })\n );\n});\n\nself.addEventListener(\"activate\", function (/** @type {ExtendableEvent} */ e) {\n e.waitUntil(\n caches.keys().then(function (keyList) {\n var cacheWhitelist = keyList.filter(function (key) {\n return key.indexOf(APP_PREFIX);\n });\n cacheWhitelist.push(CACHE_NAME);\n return Promise.all(\n keyList.map(function (key, i) {\n if (cacheWhitelist.indexOf(key) === -1) {\n // console.log(\"Deleting cache : \" + keyList[i]);\n return caches.delete(keyList[i]);\n }\n })\n );\n })\n );\n});\n\nself.addEventListener(\"message\", (/** @type {MessageEvent} */ event) => {\n if (event.data === \"SKIP_WAITING\") {\n // I'm missing something in my config to cause the following error\n // @ts-ignore\n self.skipWaiting();\n }\n});\n"],"names":[],"mappings":"AAAA,IAAI,MAAM,GAAG,SAAS,CAAC;AACvB,IAAI,UAAU,GAAG,QAAQ,CAAC;AAC1B,IAAI,OAAO,GAAG,qBAAW,CAAC;AAC1B,IAAI,IAAI,GAAG;AACX,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACd,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;AACxB,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;AACvB,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;AACtB,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrB,CAAC,CAAC;AACF;AACA,IAAI,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AACtC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,oCAAoC,CAAC,EAAE;AACtE;AACA,EAAE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACnC,IAAI,CAAC,CAAC,WAAW;AACjB,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE;AACtD,QAAQ,IAAI,OAAO,EAAE;AACrB;AACA,UAAU,OAAO,OAAO,CAAC;AACzB,SAAS,MAAM;AACf;AACA,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAClC,SAAS;AACT,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,yCAAyC,CAAC,EAAE;AAC7E,EAAE,CAAC,CAAC,SAAS;AACb,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE;AAClD;AACA,MAAM,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,KAAK,CAAC;AACN,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,yCAAyC,CAAC,EAAE;AAC9E,EAAE,CAAC,CAAC,SAAS;AACb,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE;AAC1C,MAAM,IAAI,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE;AACzD,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvC,OAAO,CAAC,CAAC;AACT,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,OAAO,OAAO,CAAC,GAAG;AACxB,QAAQ,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE;AACtC,UAAU,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AAClD;AACA,YAAY,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,WAAW;AACX,SAAS,CAAC;AACV,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,6BAA6B,KAAK,KAAK;AACxE,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;AACrC;AACA;AACA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,GAAG;AACH,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"service-worker.js","sources":["../service-worker.js"],"sourcesContent":["var GHPATH = \"/OS-DPI\";\nvar APP_PREFIX = \"osdpi_\";\nvar VERSION = APP_VERSION;\nvar URLS = [\n `${GHPATH}/`,\n `${GHPATH}/index.html`,\n `${GHPATH}/index.css`,\n `${GHPATH}/index.js`,\n `${GHPATH}/xlsx.js`,\n];\n\nvar CACHE_NAME = APP_PREFIX + VERSION;\nself.addEventListener(\"fetch\", function (/** @type {FetchEvent} */ e) {\n const url = new URL(e.request.url);\n if (URLS.includes(url.pathname)) {\n e.respondWith(\n caches.match(e.request).then(function (request) {\n if (request) {\n return request;\n } else {\n return fetch(e.request);\n }\n }),\n );\n }\n});\n\nself.addEventListener(\"install\", function (/** @type {ExtendableEvent} */ e) {\n e.waitUntil(\n caches.open(CACHE_NAME).then(function (cache) {\n return cache.addAll(URLS);\n }),\n );\n});\n\nself.addEventListener(\"activate\", function (/** @type {ExtendableEvent} */ e) {\n e.waitUntil(\n caches.keys().then(function (keyList) {\n var cacheWhitelist = keyList.filter(function (key) {\n return key.indexOf(APP_PREFIX);\n });\n cacheWhitelist.push(CACHE_NAME);\n return Promise.all(\n keyList.map(function (key, i) {\n if (cacheWhitelist.indexOf(key) === -1) {\n return caches.delete(keyList[i]);\n }\n }),\n );\n }),\n );\n});\nself.addEventListener(\"message\", (/** @type {MessageEvent} */ event) => {\n if (event.data === \"SKIP_WAITING\") {\n /** @type {ServiceWorkerGlobalScope} */ (\n /** @type {unknown} */ (self)\n ).skipWaiting();\n }\n});\n"],"names":[],"mappings":"AAAA,IAAI,MAAM,GAAG,SAAS,CAAC;AACvB,IAAI,UAAU,GAAG,QAAQ,CAAC;AAC1B,IAAI,OAAO,GAAG,kBAAW,CAAC;AAC1B,IAAI,IAAI,GAAG;AACX,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACd,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;AACxB,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;AACvB,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;AACtB,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrB,CAAC,CAAC;AACF;AACA,IAAI,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AACtC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,oCAAoC,CAAC,EAAE;AACtE,EAAE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACnC,IAAI,CAAC,CAAC,WAAW;AACjB,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE;AACtD,QAAQ,IAAI,OAAO,EAAE;AACrB,UAAU,OAAO,OAAO,CAAC;AACzB,SAAS,MAAM;AACf,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAClC,SAAS;AACT,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,yCAAyC,CAAC,EAAE;AAC7E,EAAE,CAAC,CAAC,SAAS;AACb,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE;AAClD,MAAM,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,KAAK,CAAC;AACN,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,yCAAyC,CAAC,EAAE;AAC9E,EAAE,CAAC,CAAC,SAAS;AACb,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE;AAC1C,MAAM,IAAI,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE;AACzD,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACvC,OAAO,CAAC,CAAC;AACT,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,OAAO,OAAO,CAAC,GAAG;AACxB,QAAQ,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE;AACtC,UAAU,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AAClD,YAAY,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,WAAW;AACX,SAAS,CAAC;AACV,OAAO,CAAC;AACR,KAAK,CAAC;AACN,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,6BAA6B,KAAK,KAAK;AACxE,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE;AACrC,4CAA4C;AAC5C,8BAA8B,IAAI;AAClC,MAAM,WAAW,EAAE,CAAC;AACpB,GAAG;AACH,CAAC,CAAC"} \ No newline at end of file diff --git a/tracky-mouse/facemesh.worker.js b/tracky-mouse/facemesh.worker.js index 789069d..6845d62 100644 --- a/tracky-mouse/facemesh.worker.js +++ b/tracky-mouse/facemesh.worker.js @@ -15,13 +15,12 @@ tf.setBackend("webgl").then( (error) => { console.log("tf.setBackend('webgl') error", error); close(); - } + }, ); var facemeshTensorFlowModel; onmessage = (e) => { - // console.log('Message received from main script', e.data); if (e.data.type === "LOAD") { facemesh.load(e.data.options).then((model) => { facemeshTensorFlowModel = model; @@ -34,7 +33,7 @@ onmessage = (e) => { }, (error) => { console.log(error); - } + }, ); } }; diff --git a/tracky-mouse/tracky-mouse.js b/tracky-mouse/tracky-mouse.js index b5631d0..39fe64d 100644 --- a/tracky-mouse/tracky-mouse.js +++ b/tracky-mouse/tracky-mouse.js @@ -168,7 +168,6 @@ TrackyMouse.init = function (div) { facemeshWorker.addEventListener( "message", (e) => { - // console.log('Message received from worker', e.data); if (e.data.type === "LOADED") { facemeshLoaded = true; facemeshEstimateFaces = () => { @@ -411,7 +410,6 @@ TrackyMouse.init = function (div) { 5 + this.curXY[inputOffset], this.curXY[inputOffset + 1] ); - // console.log(this.curXY[inputOffset], this.curXY[inputOffset + 1]); ctx.strokeStyle = ctx.fillStyle; ctx.beginPath(); ctx.moveTo(this.prevXY[inputOffset], this.prevXY[inputOffset + 1]); @@ -709,7 +707,6 @@ TrackyMouse.init = function (div) { // workerSyncedOops.addPoint(annotations.leftEyeLower0[8][0], annotations.leftEyeLower0[8][1]); // workerSyncedOops.addPoint(annotations.rightEyeLower0[8][0], annotations.rightEyeLower0[8][1]); - // console.log(workerSyncedOops.pointCount, cameraFramesSinceFacemeshUpdate.length, workerSyncedOops.curXY); if (enableTimeTravel) { debugFramesCtx.clearRect( 0,