@tko/build.reference 4.0.0-beta1.8 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +2 -2
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +2 -2
- package/dist/browser.min.js.map +2 -2
- package/dist/common.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +18 -18
package/dist/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../index.ts", "../../../packages/utils/dist/array.js", "../../../packages/utils/dist/options.js", "../../../packages/utils/dist/error.js", "../../../packages/utils/dist/async.js", "../../../packages/utils/dist/object.js", "../../../packages/utils/dist/function.js", "../../../packages/utils/dist/string.js", "../../../packages/utils/dist/symbol.js", "../../../packages/utils/dist/css.js", "../../../packages/utils/dist/dom/info.js", "../../../packages/utils/dist/dom/event.js", "../../../packages/utils/dist/dom/data.js", "../../../packages/utils/dist/dom/disposal.js", "../../../packages/utils/dist/dom/manipulation.js", "../../../packages/utils/dist/dom/fixes.js", "../../../packages/utils/dist/dom/virtualElements.js", "../../../packages/utils/dist/dom/html.js", "../../../packages/utils/dist/dom/selectExtensions.js", "../../../packages/utils/dist/memoization.js", "../../../packages/utils/dist/tasks.js", "../../../packages/observable/dist/dependencyDetection.js", "../../../packages/observable/dist/subscribableSymbol.js", "../../../packages/observable/dist/defer.js", "../../../packages/observable/dist/Subscription.js", "../../../packages/observable/dist/extenders.js", "../../../packages/observable/dist/subscribable.js", "../../../packages/observable/dist/observable.js", "../../../packages/observable/dist/observableArray.changeTracking.js", "../../../packages/observable/dist/observableArray.js", "../../../packages/observable/dist/mappingHelpers.js", "../../../packages/utils.parser/dist/operators.js", "../../../packages/utils.parser/dist/Node.js", "../../../packages/utils.parser/dist/Expression.js", "../../../packages/utils.parser/dist/Arguments.js", "../../../packages/utils.parser/dist/identifierExpressions.js", "../../../packages/utils.parser/dist/Identifier.js", "../../../packages/utils.parser/dist/Parameters.js", "../../../packages/utils.parser/dist/Ternary.js", "../../../packages/utils.parser/dist/Parser.js", "../../../packages/utils.parser/dist/preparse.js", "../../../packages/utils.parser/dist/index.js", "../../../packages/computed/dist/computed.js", "../../../packages/computed/dist/throttleExtender.js", "../../../packages/computed/dist/proxy.js", "../../../packages/computed/dist/when.js", "../../../packages/lifecycle/dist/LifeCycle.js", "../../../packages/bind/dist/bindingEvent.js", "../../../packages/bind/dist/bindingContext.js", "../../../packages/bind/dist/BindingResult.js", "../../../packages/bind/dist/BindingHandler.js", "../../../packages/bind/dist/LegacyBindingHandler.js", "../../../packages/bind/dist/applyBindings.js", "../../../packages/bind/dist/arrayToDomNodeChildren.js", "../../../packages/bind/dist/DescendantBindingHandler.js", "../../../packages/binding.template/dist/templateSources.js", "../../../packages/binding.template/dist/templateEngine.js", "../../../packages/binding.template/dist/templating.js", "../../../packages/binding.template/dist/nativeTemplateEngine.js", "../../../packages/binding.template/dist/foreach.js", "../../../packages/binding.template/dist/index.js", "../../../packages/builder/dist/Builder.js", "../../../packages/provider/dist/BindingHandlerObject.js", "../../../packages/provider/dist/Provider.js", "../../../packages/provider.bindingstring/dist/BindingStringProvider.js", "../../../packages/provider.virtual/dist/VirtualProvider.js", "../../../packages/provider.databind/dist/DataBindProvider.js", "../../../packages/utils.component/dist/registry.js", "../../../packages/utils.component/dist/loaders.js", "../../../packages/utils.component/dist/ComponentABC.js", "../../../packages/utils.component/dist/index.js", "../../../packages/provider.component/dist/ComponentProvider.js", "../../../packages/provider.attr/dist/AttributeProvider.js", "../../../packages/provider.multi/dist/MultiProvider.js", "../../../packages/provider.mustache/dist/mustacheParser.js", "../../../packages/provider.mustache/dist/AttributeMustacheProvider.js", "../../../packages/provider.mustache/dist/TextMustacheProvider.js", "../../../packages/provider.native/dist/NativeProvider.js", "../../../packages/binding.core/dist/attr.js", "../../../packages/binding.core/dist/checked.js", "../../../packages/binding.core/dist/event.js", "../../../packages/binding.core/dist/click.js", "../../../packages/binding.core/dist/css.js", "../../../packages/binding.core/dist/descendantsComplete.js", "../../../packages/binding.core/dist/enableDisable.js", "../../../packages/binding.core/dist/hasfocus.js", "../../../packages/binding.core/dist/html.js", "../../../packages/binding.core/dist/let.js", "../../../packages/binding.core/dist/options.js", "../../../packages/binding.core/dist/selectedOptions.js", "../../../packages/binding.core/dist/style.js", "../../../packages/binding.core/dist/submit.js", "../../../packages/binding.core/dist/text.js", "../../../packages/binding.core/dist/textInput.js", "../../../packages/binding.core/dist/uniqueName.js", "../../../packages/binding.core/dist/value.js", "../../../packages/binding.core/dist/visible.js", "../../../packages/binding.core/dist/using.js", "../../../packages/binding.core/dist/index.js", "../../../packages/binding.if/dist/ConditionalBindingHandler.js", "../../../packages/binding.if/dist/ifUnless.js", "../../../packages/binding.if/dist/with.js", "../../../packages/binding.if/dist/else.js", "../../../packages/binding.if/dist/index.js", "../../../packages/binding.foreach/dist/foreach.js", "../../../packages/binding.foreach/dist/index.js", "../../../packages/utils.jsx/dist/jsxClean.js", "../../../packages/utils.jsx/dist/JsxObserver.js", "../../../packages/utils.jsx/dist/jsx.js", "../../../packages/binding.component/dist/componentBinding.js", "../../../packages/binding.component/dist/slotBinding.js", "../../../packages/binding.component/dist/index.js", "../../../packages/filter.punches/dist/index.js", "../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["export {default} from './src'\nexport * from './src'\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nconst { isArray } = Array;\nexport function arrayForEach(array, action, actionOwner) {\n if (arguments.length > 2) {\n action = action.bind(actionOwner);\n }\n for (let i = 0, j = array.length; i < j; ++i) {\n action(array[i], i, array);\n }\n}\nexport function arrayIndexOf(array, item) {\n return (isArray(array) ? array : [...array]).indexOf(item);\n}\nexport function arrayFirst(array, predicate, predicateOwner) {\n return (isArray(array) ? array : [...array]).find(predicate, predicateOwner);\n}\nexport function arrayMap(array, mapping, thisArg) {\n if (arguments.length > 2) {\n mapping = mapping.bind(thisArg);\n }\n return array === null ? [] : Array.from(array, mapping);\n}\nexport function arrayRemoveItem(array, itemToRemove) {\n const index = arrayIndexOf(array, itemToRemove);\n if (index > 0) {\n array.splice(index, 1);\n } else if (index === 0) {\n array.shift();\n }\n}\nexport function arrayGetDistinctValues(array) {\n const seen = /* @__PURE__ */ new Set();\n if (array === null) {\n return [];\n }\n return (isArray(array) ? array : [...array]).filter((item) => seen.has(item) ? false : seen.add(item));\n}\nexport function arrayFilter(array, predicate, predicateOwner) {\n if (arguments.length > 2) {\n predicate = predicate.bind(predicateOwner);\n }\n return array === null ? [] : (isArray(array) ? array : [...array]).filter(predicate);\n}\nexport function arrayPushAll(array, valuesToPush) {\n if (isArray(valuesToPush)) {\n array.push.apply(array, valuesToPush);\n } else {\n for (let i = 0, j = valuesToPush.length; i < j; i++) {\n array.push(valuesToPush[i]);\n }\n }\n return array;\n}\nexport function addOrRemoveItem(array, value, included) {\n const existingEntryIndex = arrayIndexOf(typeof array.peek === \"function\" ? array.peek() : array, value);\n if (existingEntryIndex < 0) {\n if (included) {\n array.push(value);\n }\n } else {\n if (!included) {\n array.splice(existingEntryIndex, 1);\n }\n }\n}\nexport function makeArray(arrayLikeObject) {\n return Array.from(arrayLikeObject);\n}\nexport function range(min, max) {\n const minimum = typeof min === \"function\" ? min() : min;\n const maximum = typeof max === \"function\" ? max() : max;\n const result = [];\n for (let i = minimum; i <= maximum; i++) {\n result.push(i);\n }\n return result;\n}\nexport function findMovesInArrayComparison(left, right, limitFailedCompares) {\n if (left.length && right.length) {\n let failedCompares, l, r, leftItem, rightItem;\n for (failedCompares = l = 0; (!limitFailedCompares || failedCompares < limitFailedCompares) && (leftItem = left[l]); ++l) {\n for (r = 0; rightItem = right[r]; ++r) {\n if (leftItem.value === rightItem.value) {\n leftItem.moved = rightItem.index;\n rightItem.moved = leftItem.index;\n right.splice(r, 1);\n failedCompares = r = 0;\n break;\n }\n }\n failedCompares += r;\n }\n }\n}\nconst statusNotInOld = \"added\";\nconst statusNotInNew = \"deleted\";\nexport function compareArrays(oldArray, newArray, options) {\n options = typeof options === \"boolean\" ? { dontLimitMoves: options } : options || {};\n oldArray = oldArray || [];\n newArray = newArray || [];\n if (oldArray.length < newArray.length) {\n return compareSmallArrayToBigArray(oldArray, newArray, statusNotInOld, statusNotInNew, options);\n } else {\n return compareSmallArrayToBigArray(newArray, oldArray, statusNotInNew, statusNotInOld, options);\n }\n}\nfunction compareSmallArrayToBigArray(smlArray, bigArray, statusNotInSml, statusNotInBig, options) {\n let myMin = Math.min, myMax = Math.max, editDistanceMatrix = new Array(), smlIndex, smlIndexMax = smlArray.length, bigIndex, bigIndexMax = bigArray.length, compareRange = bigIndexMax - smlIndexMax || 1, maxDistance = smlIndexMax + bigIndexMax + 1, thisRow, lastRow, bigIndexMaxForRow, bigIndexMinForRow;\n for (smlIndex = 0; smlIndex <= smlIndexMax; smlIndex++) {\n lastRow = thisRow;\n editDistanceMatrix.push(thisRow = new Array());\n bigIndexMaxForRow = myMin(bigIndexMax, smlIndex + compareRange);\n bigIndexMinForRow = myMax(0, smlIndex - 1);\n for (bigIndex = bigIndexMinForRow; bigIndex <= bigIndexMaxForRow; bigIndex++) {\n if (!bigIndex) {\n thisRow[bigIndex] = smlIndex + 1;\n } else if (!smlIndex) {\n thisRow[bigIndex] = bigIndex + 1;\n } else if (smlArray[smlIndex - 1] === bigArray[bigIndex - 1]) {\n thisRow[bigIndex] = lastRow[bigIndex - 1];\n } else {\n const northDistance = lastRow[bigIndex] || maxDistance;\n const westDistance = thisRow[bigIndex - 1] || maxDistance;\n thisRow[bigIndex] = myMin(northDistance, westDistance) + 1;\n }\n }\n }\n let editScript = new Array(), meMinusOne, notInSml = new Array(), notInBig = new Array();\n for (smlIndex = smlIndexMax, bigIndex = bigIndexMax; smlIndex || bigIndex; ) {\n meMinusOne = editDistanceMatrix[smlIndex][bigIndex] - 1;\n if (bigIndex && meMinusOne === editDistanceMatrix[smlIndex][bigIndex - 1]) {\n notInSml.push(\n editScript[editScript.length] = {\n // added\n status: statusNotInSml,\n value: bigArray[--bigIndex],\n index: bigIndex\n }\n );\n } else if (smlIndex && meMinusOne === editDistanceMatrix[smlIndex - 1][bigIndex]) {\n notInBig.push(\n editScript[editScript.length] = {\n // deleted\n status: statusNotInBig,\n value: smlArray[--smlIndex],\n index: smlIndex\n }\n );\n } else {\n --bigIndex;\n --smlIndex;\n if (!options?.sparse) {\n editScript.push({ status: \"retained\", value: bigArray[bigIndex] });\n }\n }\n }\n findMovesInArrayComparison(notInBig, notInSml, !options.dontLimitMoves && smlIndexMax * 10);\n return editScript.reverse();\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nexport class Options {\n constructor() {\n // The following options can be set on ko.options to make a function rewriting or something similar.\n this.bindingStringPreparsers = [];\n // Reference to the own knockout instance\n this.knockoutInstance = null;\n this.deferUpdates = false;\n // Don't set this false, with jquery 3.7+\n this.useOnlyNativeEvents = true;\n // Use HTML5 <template> tags if is supported\n this.useTemplateTag = true;\n this.protoProperty = \"__ko_proto__\";\n // Modify the default attribute from `data-bind`.\n this.defaultBindingAttribute = \"data-bind\";\n // Enable/disable <!-- ko binding: ... -> style bindings\n this.allowVirtualElements = true;\n // Global variables that can be accessed from bindings.\n this.bindingGlobals = /* @__PURE__ */ Object.create(null);\n // Whether the `with` binding creates a child context when used with `as`.\n this.createChildContextWithAs = false;\n // jQuery will be automatically set to globalThis.jQuery in applyBindings\n // if it is (strictly equal to) undefined. Set it to true to\n // disable automatically setting jQuery.\n this.disableJQueryUsage = false;\n this.Promise = globalThis.Promise;\n this.taskScheduler = null;\n this.debug = false;\n /**\n * The maximum size of template to parse.\n * Set to 0 to disable the limit.\n */\n this.templateSizeLimit = 4096;\n /**\n * Whether or not to allow script tags in templates.\n * If false, an error will be thrown if a script tag is detected in the template.\n * It is not recommended to set this to true.\n */\n this.allowScriptTagsInTemplates = false;\n this._sanitizeWarningLogged = false;\n this.global = globalThis;\n this.document = globalThis.document;\n // Filters for bindings\n // data-bind=\"expression | filter_1 | filter_2\"\n this.filters = {};\n // Used by the template binding.\n this.includeDestroyed = false;\n this.foreachHidesDestroyed = false;\n }\n get jQuery() {\n if (this.disableJQueryUsage) return;\n return this._jQuery ?? globalThis.jQuery;\n }\n /**\n * Set jQuery manuall to be used by TKO.\n * @param jQuery If jQuery set to undefined, TKO will not use jQuery and this.disableJQueryUsage to true.\n */\n set jQuery(jQuery) {\n if (!jQuery) {\n this.disableJQueryUsage = true;\n this._jQuery = void 0;\n } else {\n this._jQuery = jQuery;\n this.disableJQueryUsage = false;\n }\n }\n /**\n * Sanitize HTML templates before parsing them. Default is a no-op.\n * Please configure something like DOMPurify or validator.js for your environment.\n * @param html HTML string to be sanitized\n * @returns Sanitized HTML string\n */\n sanitizeHtmlTemplate(html) {\n if (!this._sanitizeWarningLogged) {\n console.warn(\n \"WARNING -- You don't have a HTML sanitizer configured. Please configure options.sanitizeHtmlTemplate to avoid XSS vulnerabilities.\"\n );\n this._sanitizeWarningLogged = true;\n }\n return html;\n }\n onError(e, throws = true) {\n if (throws) throw e;\n return e;\n }\n set(name, value) {\n this[name] = value;\n }\n // Overload getBindingHandler to have a custom lookup function.\n getBindingHandler(key) {\n return null;\n }\n cleanExternalData(node, callback) {\n }\n}\nconst options = new Options();\nexport default options;\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport options from \"./options\";\nexport function catchFunctionErrors(delegate) {\n if (!options.onError) {\n return delegate;\n }\n return (...args) => {\n try {\n return delegate(...args);\n } catch (err) {\n options.onError(err);\n }\n };\n}\nexport function deferError(error) {\n safeSetTimeout(function() {\n throw error;\n }, 0);\n}\nexport function safeSetTimeout(handler, timeout) {\n return setTimeout(catchFunctionErrors(handler), timeout);\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { safeSetTimeout } from \"./error\";\nexport function throttle(callback, timeout) {\n let timeoutInstance;\n return function(...args) {\n if (!timeoutInstance) {\n timeoutInstance = safeSetTimeout(function() {\n timeoutInstance = void 0;\n callback(...args);\n }, timeout);\n }\n };\n}\nexport function debounce(callback, timeout) {\n let timeoutInstance;\n return function(...args) {\n clearTimeout(timeoutInstance);\n timeoutInstance = safeSetTimeout(() => callback(...args), timeout);\n };\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nexport function hasOwnProperty(obj, propName) {\n return Object.prototype.hasOwnProperty.call(obj, propName);\n}\nexport function isObjectLike(obj) {\n if (obj === null) {\n return false;\n }\n return typeof obj === \"object\" || typeof obj === \"function\";\n}\nexport function extend(target, source) {\n if (source) {\n for (const prop of Object.keys(source)) {\n if (hasOwnProperty(source, prop)) {\n ;\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nexport function objectForEach(obj, action) {\n for (const prop in obj) {\n if (hasOwnProperty(obj, prop)) {\n action(prop, obj[prop]);\n }\n }\n}\nexport function objectMap(source, mapping, thisArg) {\n if (!source) {\n return source;\n }\n if (arguments.length > 2) {\n mapping = mapping.bind(thisArg);\n }\n const target = {};\n for (const prop in source) {\n if (hasOwnProperty(source, prop)) {\n target[prop] = mapping(source[prop], prop, source);\n }\n }\n return target;\n}\nexport function getObjectOwnProperty(obj, propName) {\n return hasOwnProperty(obj, propName) ? obj[propName] : void 0;\n}\nexport function clonePlainObjectDeep(obj, seen) {\n if (!seen) {\n seen = new Array();\n }\n if (!obj || typeof obj !== \"object\" || obj.constructor !== Object || seen.indexOf(obj) !== -1) {\n return obj;\n }\n seen.push(obj);\n const result = {};\n for (const prop in obj) {\n if (hasOwnProperty(obj, prop)) {\n result[prop] = clonePlainObjectDeep(obj[prop], seen);\n }\n }\n return result;\n}\nexport function safeStringify(value) {\n const seen = /* @__PURE__ */ new Set();\n return JSON.stringify(value, (k, v) => {\n if (seen.has(v)) {\n return \"...\";\n }\n if (typeof v === \"object\") {\n seen.add(v);\n }\n return v;\n });\n}\nexport function isThenable(object) {\n return isObjectLike(object) && typeof object.then === \"function\";\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nfunction testOverwrite() {\n try {\n Object.defineProperty(function x() {\n }, \"length\", {});\n return true;\n } catch (e) {\n return false;\n }\n}\nexport const functionSupportsLengthOverwrite = testOverwrite();\nexport function overwriteLengthPropertyIfSupported(fn, descriptor) {\n if (functionSupportsLengthOverwrite) {\n Object.defineProperty(fn, \"length\", descriptor);\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nexport function stringTrim(string) {\n return string === null || string === void 0 ? \"\" : string.trim ? string.trim() : string.toString().replace(/^[\\s\\xa0]+|[\\s\\xa0]+$/g, \"\");\n}\nexport function stringStartsWith(string, startsWith) {\n string = string || \"\";\n if (startsWith.length > string.length) {\n return false;\n }\n return string.substring(0, startsWith.length) === startsWith;\n}\nexport function parseJson(jsonString) {\n if (typeof jsonString === \"string\") {\n jsonString = stringTrim(jsonString);\n if (jsonString) {\n return JSON.parse(jsonString);\n }\n }\n return null;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nexport const useSymbols = typeof Symbol === \"function\";\nexport function createSymbolOrString(identifier) {\n return useSymbols ? Symbol(identifier) : identifier;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { arrayForEach, addOrRemoveItem } from \"./array\";\nconst cssClassNameRegex = /\\S+/g;\nfunction toggleDomNodeCssClass(node, classNames, shouldHaveClass) {\n let addOrRemoveFn;\n if (!classNames) {\n return;\n }\n if (typeof node.classList === \"object\") {\n addOrRemoveFn = node.classList[shouldHaveClass ? \"add\" : \"remove\"];\n arrayForEach(classNames.match(cssClassNameRegex), function(className) {\n addOrRemoveFn.call(node.classList, className);\n });\n } else if (typeof node.className[\"baseVal\"] === \"string\") {\n toggleObjectClassPropertyString(node.className, \"baseVal\", classNames, shouldHaveClass);\n } else {\n toggleObjectClassPropertyString(node, \"className\", classNames, shouldHaveClass);\n }\n}\nfunction toggleObjectClassPropertyString(obj, prop, classNames, shouldHaveClass) {\n const currentClassNames = obj[prop].match(cssClassNameRegex) || [];\n arrayForEach(classNames.match(cssClassNameRegex), function(className) {\n addOrRemoveItem(currentClassNames, className, shouldHaveClass);\n });\n obj[prop] = currentClassNames.join(\" \");\n}\nexport { toggleDomNodeCssClass };\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { arrayFirst } from \"../array\";\nexport function domNodeIsContainedBy(node, containedByNode) {\n if (node === containedByNode) {\n return true;\n }\n if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n return false;\n }\n if (containedByNode.contains) {\n return containedByNode.contains(node.nodeType !== Node.ELEMENT_NODE ? node.parentNode : node);\n }\n if (containedByNode.compareDocumentPosition) {\n return (containedByNode.compareDocumentPosition(node) & 16) == 16;\n }\n let parentNode = node;\n while (parentNode && parentNode != containedByNode) {\n parentNode = parentNode.parentNode;\n }\n return !!parentNode;\n}\nexport function domNodeIsAttachedToDocument(node) {\n return domNodeIsContainedBy(node, node.ownerDocument.documentElement);\n}\nexport function anyDomNodeIsAttachedToDocument(nodes) {\n return !!arrayFirst(nodes, domNodeIsAttachedToDocument);\n}\nexport function tagNameLower(element) {\n return element && element.tagName && element.tagName.toLowerCase();\n}\nexport function isDomElement(obj) {\n if (window.HTMLElement) {\n return obj instanceof HTMLElement;\n } else {\n return obj && obj.tagName && obj.nodeType === Node.ELEMENT_NODE;\n }\n}\nexport function isDocumentFragment(obj) {\n if (window.DocumentFragment) {\n return obj instanceof DocumentFragment;\n } else {\n return obj && obj.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { objectForEach } from \"../object\";\nimport { catchFunctionErrors } from \"../error\";\nimport { tagNameLower } from \"./info\";\nimport options from \"../options\";\nconst knownEvents = {}, knownEventTypesByEventName = {};\nknownEvents[\"UIEvents\"] = [\"keyup\", \"keydown\", \"keypress\"];\nknownEvents[\"MouseEvents\"] = [\n \"click\",\n \"dblclick\",\n \"mousedown\",\n \"mouseup\",\n \"mousemove\",\n \"mouseover\",\n \"mouseout\",\n \"mouseenter\",\n \"mouseleave\"\n];\nobjectForEach(knownEvents, function(eventType, knownEventsForType) {\n if (knownEventsForType.length) {\n for (let i = 0, j = knownEventsForType.length; i < j; i++) {\n knownEventTypesByEventName[knownEventsForType[i]] = eventType;\n }\n }\n});\nfunction isClickOnCheckableElement(element, eventType) {\n if (tagNameLower(element) !== \"input\" || !element.type) return false;\n if (eventType.toLowerCase() != \"click\") return false;\n const inputType = element.type;\n return inputType == \"checkbox\" || inputType == \"radio\";\n}\nexport function registerEventHandler(element, eventType, handler, eventOptions = false) {\n const wrappedHandler = catchFunctionErrors(handler);\n const mustUseNative = Boolean(eventOptions);\n const jQuery = options.jQuery;\n if (!options.useOnlyNativeEvents && !mustUseNative && jQuery) {\n jQuery(element).on(eventType, wrappedHandler);\n } else if (typeof element.addEventListener === \"function\") {\n element.addEventListener(eventType, wrappedHandler, eventOptions);\n } else {\n throw new Error(\"Browser doesn't support addEventListener\");\n }\n}\nfunction hasClick(element) {\n return typeof element.click === \"function\";\n}\nexport function triggerEvent(element, eventType) {\n if (!(element && element.nodeType)) {\n throw new Error(\"element must be a DOM node when calling triggerEvent\");\n }\n const useClickWorkaround = isClickOnCheckableElement(element, eventType);\n if (!options.useOnlyNativeEvents && options.jQuery && !useClickWorkaround) {\n options.jQuery(element).trigger(eventType);\n } else if (typeof document.createEvent === \"function\") {\n if (typeof element.dispatchEvent === \"function\") {\n const eventCategory = knownEventTypesByEventName[eventType] || \"HTMLEvents\";\n const event = document.createEvent(eventCategory);\n event.initEvent(\n eventType,\n true,\n true,\n options.global,\n 0,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 0,\n element\n );\n element.dispatchEvent(event);\n } else {\n throw new Error(\"The supplied element doesn't support dispatchEvent\");\n }\n } else if (useClickWorkaround && hasClick(element)) {\n element.click();\n } else {\n throw new Error(\"Browser doesn't support triggering events\");\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nconst datastoreTime = (/* @__PURE__ */ new Date()).getTime();\nconst dataStoreKeyExpandoPropertyName = `__ko__${datastoreTime}`;\nconst dataStoreSymbol = /* @__PURE__ */ Symbol(\"Knockout data\");\nconst dataStore = {};\nlet uniqueId = 0;\nfunction isSafeKey(key) {\n return key !== \"__proto__\" && key !== \"constructor\" && key !== \"prototype\";\n}\nfunction getDataForNode(node, createIfNotFound) {\n let dataForNode = node[dataStoreSymbol];\n if (!dataForNode && createIfNotFound) {\n dataForNode = node[dataStoreSymbol] = {};\n }\n return dataForNode;\n}\nfunction clear(node) {\n if (node[dataStoreSymbol]) {\n delete node[dataStoreSymbol];\n return true;\n }\n return false;\n}\nexport function nextKey() {\n return uniqueId++ + dataStoreKeyExpandoPropertyName;\n}\nfunction get(node, key) {\n if (!isSafeKey(key)) throw new Error(\"Unsafe key for DOM data: \" + key);\n const dataForNode = getDataForNode(node, false);\n return dataForNode && dataForNode[key];\n}\nfunction set(node, key, value) {\n if (!isSafeKey(key)) throw new Error(\"Unsafe key for DOM data: \" + key);\n const dataForNode = getDataForNode(\n node,\n value !== void 0\n /* createIfNotFound */\n );\n if (dataForNode) {\n dataForNode[key] = value;\n }\n}\nfunction getOrSet(node, key, value) {\n if (!isSafeKey(key)) throw new Error(\"Unsafe key for DOM data: \" + key);\n const dataForNode = getDataForNode(\n node,\n true\n /* createIfNotFound */\n );\n return dataForNode[key] || (dataForNode[key] = value);\n}\nexport { get, set, getOrSet, clear };\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport * as domData from \"./data\";\nimport { default as options } from \"../options\";\nimport { arrayRemoveItem, arrayIndexOf } from \"../array\";\nconst domDataKey = domData.nextKey();\nconst cleanableNodeTypes = { 1: true, 8: true, 9: true };\nconst cleanableNodeTypesWithDescendants = { 1: true, 9: true };\nfunction getDisposeCallbacksCollection(node, createIfNotFound) {\n let allDisposeCallbacks = domData.get(node, domDataKey);\n if (allDisposeCallbacks === void 0 && createIfNotFound) {\n allDisposeCallbacks = new Array();\n domData.set(node, domDataKey, allDisposeCallbacks);\n }\n return allDisposeCallbacks;\n}\nfunction destroyCallbacksCollection(node) {\n domData.set(node, domDataKey, void 0);\n}\nfunction cleanSingleNode(node) {\n let callbacks = getDisposeCallbacksCollection(node, false);\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](node);\n }\n }\n domData.clear(node);\n for (let i = 0, j = otherNodeCleanerFunctions.length; i < j; ++i) {\n otherNodeCleanerFunctions[i](node);\n }\n if (options.cleanExternalData) {\n options.cleanExternalData(node);\n }\n if (cleanableNodeTypesWithDescendants[node.nodeType]) {\n cleanNodesInList(\n node.childNodes,\n true\n /* onlyComments */\n );\n }\n}\nfunction cleanNodesInList(nodeList, onlyComments) {\n const cleanedNodes = new Array();\n let lastCleanedNode;\n for (let i = 0; i < nodeList.length; i++) {\n if (!onlyComments || nodeList[i].nodeType === Node.COMMENT_NODE) {\n cleanSingleNode(cleanedNodes[cleanedNodes.length] = lastCleanedNode = nodeList[i]);\n if (nodeList[i] !== lastCleanedNode) {\n while (i-- && arrayIndexOf(cleanedNodes, nodeList[i]) === -1) {\n }\n }\n }\n }\n}\nexport function addDisposeCallback(node, callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Callback must be a function\");\n }\n getDisposeCallbacksCollection(node, true).push(callback);\n}\nexport function removeDisposeCallback(node, callback) {\n const callbacksCollection = getDisposeCallbacksCollection(node, false);\n if (callbacksCollection) {\n arrayRemoveItem(callbacksCollection, callback);\n if (callbacksCollection.length === 0) {\n destroyCallbacksCollection(node);\n }\n }\n}\nexport function cleanNode(node) {\n if (cleanableNodeTypes[node.nodeType]) {\n cleanSingleNode(node);\n if (cleanableNodeTypesWithDescendants[node.nodeType] && node instanceof Element) {\n cleanNodesInList(node.getElementsByTagName(\"*\"));\n }\n }\n return node;\n}\nexport function removeNode(node) {\n if (!node) {\n return;\n }\n cleanNode(node);\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nexport const otherNodeCleanerFunctions = new Array();\nexport function addCleaner(fn) {\n otherNodeCleanerFunctions.push(fn);\n}\nexport function removeCleaner(fn) {\n const fnIndex = otherNodeCleanerFunctions.indexOf(fn);\n if (fnIndex >= 0) {\n otherNodeCleanerFunctions.splice(fnIndex, 1);\n }\n}\nexport function cleanjQueryData(node) {\n const jQueryCleanNodeFn = options.jQuery ? options.jQuery.cleanData : null;\n if (jQueryCleanNodeFn) {\n jQueryCleanNodeFn([node]);\n }\n}\notherNodeCleanerFunctions.push(cleanjQueryData);\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { makeArray } from \"../array\";\nimport { cleanNode, removeNode } from \"./disposal\";\nexport function moveCleanedNodesToContainerElement(nodes) {\n const nodesArray = makeArray(nodes);\n const templateDocument = nodesArray[0] && nodesArray[0].ownerDocument || document;\n const container = templateDocument.createElement(\"div\");\n for (let i = 0, j = nodesArray.length; i < j; i++) {\n container.appendChild(cleanNode(nodesArray[i]));\n }\n return container;\n}\nexport function cloneNodes(nodesArray, shouldCleanNodes) {\n const newNodesArray = new Array();\n for (let i = 0; i < nodesArray.length; i++) {\n const clonedNode = nodesArray[i].cloneNode(true);\n newNodesArray.push(shouldCleanNodes ? cleanNode(clonedNode) : clonedNode);\n }\n return newNodesArray;\n}\nexport function setDomNodeChildren(domNode, childNodes) {\n emptyDomNode(domNode);\n if (childNodes) {\n for (let i = 0; i < childNodes.length; i++) {\n domNode.appendChild(childNodes[i]);\n }\n }\n}\nexport function replaceDomNodes(nodeToReplaceOrNodeArray, newNodesArray) {\n const nodesToReplaceArray = Array.isArray(nodeToReplaceOrNodeArray) ? nodeToReplaceOrNodeArray : [nodeToReplaceOrNodeArray];\n if (nodesToReplaceArray.length > 0) {\n const insertionPoint = nodesToReplaceArray[0];\n const parent = insertionPoint.parentNode;\n for (let i = 0; i < newNodesArray.length; i++) {\n parent?.insertBefore(newNodesArray[i], insertionPoint);\n }\n for (let i = 0; i < nodesToReplaceArray.length; i++) {\n removeNode(nodesToReplaceArray[i]);\n }\n }\n}\nexport function emptyDomNode(domNode) {\n while (domNode.firstChild) {\n removeNode(domNode.firstChild);\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nexport function fixUpContinuousNodeArray(continuousNodeArray, parentNode) {\n if (continuousNodeArray.length) {\n parentNode = parentNode.nodeType === Node.COMMENT_NODE && parentNode.parentNode || parentNode;\n while (continuousNodeArray.length && continuousNodeArray[0].parentNode !== parentNode) {\n continuousNodeArray.splice(0, 1);\n }\n while (continuousNodeArray.length > 1 && continuousNodeArray[continuousNodeArray.length - 1].parentNode !== parentNode) {\n continuousNodeArray.length--;\n }\n if (continuousNodeArray.length > 1) {\n let current = continuousNodeArray[0], last = continuousNodeArray[continuousNodeArray.length - 1];\n continuousNodeArray.length = 0;\n while (current !== last) {\n continuousNodeArray.push(current);\n current = current.nextSibling;\n }\n continuousNodeArray.push(last);\n }\n }\n return continuousNodeArray;\n}\nexport function setOptionNodeSelectionState(optionNode, isSelected) {\n optionNode.selected = isSelected;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { emptyDomNode, setDomNodeChildren as setRegularDomNodeChildren } from \"./manipulation\";\nimport { removeNode } from \"./disposal\";\nimport { tagNameLower } from \"./info\";\nimport * as domData from \"./data\";\nexport const startCommentRegex = /^\\s*ko(?:\\s+([\\s\\S]+))?\\s*$/;\nexport const endCommentRegex = /^\\s*\\/ko\\s*$/;\nconst htmlTagsWithOptionallyClosingChildren = { ul: true, ol: true };\nexport function isStartComment(node) {\n return node.nodeType === Node.COMMENT_NODE && startCommentRegex.test(node.nodeValue);\n}\nexport function isEndComment(node) {\n return node.nodeType === Node.COMMENT_NODE && endCommentRegex.test(node.nodeValue);\n}\nfunction isUnmatchedEndComment(node) {\n return isEndComment(node) && !domData.get(node, matchedEndCommentDataKey);\n}\nconst matchedEndCommentDataKey = \"__ko_matchedEndComment__\";\nexport function getVirtualChildren(startComment, allowUnbalanced) {\n let currentNode = startComment;\n let depth = 1;\n const children = new Array();\n while (currentNode = currentNode.nextSibling) {\n if (isEndComment(currentNode)) {\n domData.set(currentNode, matchedEndCommentDataKey, true);\n depth--;\n if (depth === 0) {\n return children;\n }\n }\n children.push(currentNode);\n if (isStartComment(currentNode)) {\n depth++;\n }\n }\n if (!allowUnbalanced) {\n throw new Error(\"Cannot find closing comment tag to match: \" + startComment.nodeValue);\n }\n return null;\n}\nfunction getMatchingEndComment(startComment, allowUnbalanced) {\n const allVirtualChildren = getVirtualChildren(startComment, allowUnbalanced);\n if (allVirtualChildren) {\n if (allVirtualChildren.length > 0) {\n return allVirtualChildren[allVirtualChildren.length - 1].nextSibling;\n }\n return startComment.nextSibling;\n } else {\n return null;\n }\n}\nfunction getUnbalancedChildTags(node) {\n let childNode = node.firstChild, captureRemaining = null;\n if (childNode) {\n do {\n if (captureRemaining) {\n captureRemaining.push(childNode);\n } else if (isStartComment(childNode)) {\n const matchingEndComment = getMatchingEndComment(\n childNode,\n /* allowUnbalanced: */\n true\n );\n if (matchingEndComment) {\n childNode = matchingEndComment;\n } else {\n captureRemaining = [childNode];\n }\n } else if (isEndComment(childNode)) {\n captureRemaining = [childNode];\n }\n } while (childNode = childNode.nextSibling);\n }\n return captureRemaining;\n}\nexport const allowedBindings = /* @__PURE__ */ Object.create(null);\nexport const hasBindingValue = isStartComment;\nexport function childNodes(node) {\n return isStartComment(node) ? getVirtualChildren(node) : node.childNodes;\n}\nexport function emptyNode(node) {\n if (!isStartComment(node)) {\n emptyDomNode(node);\n } else {\n const virtualChildren = childNodes(node);\n for (let i = 0, j = virtualChildren.length; i < j; i++) {\n removeNode(virtualChildren[i]);\n }\n }\n}\nexport function setDomNodeChildren(node, childNodes2) {\n if (!isStartComment(node)) {\n setRegularDomNodeChildren(node, childNodes2);\n } else {\n emptyNode(node);\n const endCommentNode = node.nextSibling;\n if (endCommentNode && endCommentNode.parentNode) {\n const parentNode = endCommentNode.parentNode;\n for (let i = 0, j = childNodes2.length; i < j; ++i) {\n parentNode.insertBefore(childNodes2[i], endCommentNode);\n }\n }\n }\n}\nexport function prepend(containerNode, nodeToPrepend) {\n if (!isStartComment(containerNode)) {\n if (containerNode.firstChild) {\n containerNode.insertBefore(nodeToPrepend, containerNode.firstChild);\n } else {\n containerNode.appendChild(nodeToPrepend);\n }\n } else {\n containerNode.parentNode?.insertBefore(nodeToPrepend, containerNode.nextSibling);\n }\n}\nexport function insertAfter(containerNode, nodeToInsert, insertAfterNode) {\n if (!insertAfterNode) {\n prepend(containerNode, nodeToInsert);\n } else if (!isStartComment(containerNode)) {\n if (insertAfterNode.nextSibling) {\n containerNode.insertBefore(nodeToInsert, insertAfterNode.nextSibling);\n } else {\n containerNode.appendChild(nodeToInsert);\n }\n } else {\n containerNode.parentNode?.insertBefore(nodeToInsert, insertAfterNode.nextSibling);\n }\n}\nexport function firstChild(node) {\n if (!isStartComment(node)) {\n if (node.firstChild && isEndComment(node.firstChild)) {\n throw new Error(\"Found invalid end comment, as the first child of \" + node.outerHTML);\n }\n return node.firstChild;\n }\n if (!node.nextSibling || isEndComment(node.nextSibling)) {\n return null;\n }\n return node.nextSibling;\n}\nexport function lastChild(node) {\n let nextChild = firstChild(node);\n if (!nextChild) return null;\n let lastChildNode;\n do {\n lastChildNode = nextChild;\n } while (nextChild = nextSibling(nextChild));\n return lastChildNode;\n}\nexport function nextSibling(node) {\n if (isStartComment(node)) {\n node = getMatchingEndComment(node);\n }\n if (node.nextSibling && isEndComment(node.nextSibling)) {\n if (isUnmatchedEndComment(node.nextSibling)) {\n throw Error(\n \"Found end comment without a matching opening comment, as next sibling of \" + node.outerHTML\n );\n }\n return null;\n } else {\n return node.nextSibling;\n }\n}\nexport function previousSibling(node) {\n let depth = 0;\n do {\n if (node.nodeType === Node.COMMENT_NODE) {\n if (isStartComment(node)) {\n if (--depth === 0) {\n return node;\n }\n } else if (isEndComment(node)) {\n depth++;\n }\n } else {\n if (depth === 0) {\n return node;\n }\n }\n } while (node = node.previousSibling);\n}\nexport function virtualNodeBindingValue(node) {\n const regexMatch = node.nodeValue.match(startCommentRegex);\n return regexMatch ? regexMatch[1] : null;\n}\nexport function normaliseVirtualElementDomStructure(elementVerified) {\n if (!htmlTagsWithOptionallyClosingChildren[tagNameLower(elementVerified)]) {\n return;\n }\n let childNode = elementVerified.firstChild;\n if (childNode) {\n do {\n if (childNode.nodeType === Node.ELEMENT_NODE) {\n const unbalancedTags = getUnbalancedChildTags(childNode);\n if (unbalancedTags) {\n const nodeToInsertBefore = childNode.nextSibling;\n for (let i = 0; i < unbalancedTags.length; i++) {\n if (nodeToInsertBefore) {\n elementVerified.insertBefore(unbalancedTags[i], nodeToInsertBefore);\n } else {\n elementVerified.appendChild(unbalancedTags[i]);\n }\n }\n }\n }\n } while (childNode = childNode.nextSibling);\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { makeArray } from \"../array\";\nimport { emptyDomNode, moveCleanedNodesToContainerElement } from \"./manipulation\";\nimport * as virtualElements from \"./virtualElements\";\nimport options from \"../options\";\nconst supportsTemplateTag = options.useTemplateTag && options.document && \"content\" in options.document.createElement(\"template\");\nfunction simpleHtmlParse(html, documentContext) {\n if (!documentContext) {\n documentContext = document;\n }\n const div = documentContext.createElement(\"div\");\n div.innerHTML = html;\n return makeArray(div.childNodes);\n}\nfunction templateHtmlParse(html, documentContext) {\n if (!documentContext) {\n documentContext = document;\n }\n const template = documentContext.createElement(\"template\");\n template.innerHTML = html;\n return makeArray(template.content.childNodes);\n}\nfunction jQueryHtmlParse(html, documentContext) {\n const jQuery = options.jQuery;\n if (jQuery) {\n return jQuery.parseHTML(html, documentContext) || [];\n }\n return [];\n}\nexport function parseHtmlFragment(html, documentContext) {\n const saferHtml = validateHTMLInput(html);\n if (supportsTemplateTag) return templateHtmlParse(saferHtml, documentContext);\n if (options.jQuery) {\n return jQueryHtmlParse(saferHtml, documentContext);\n }\n return simpleHtmlParse(saferHtml, documentContext);\n}\nconst scriptTagPattern = /<script\\b[^>]*>([\\s\\S]*?)<\\/script[^>]*>/i;\nfunction validateHTMLInput(html) {\n if (!html) return \"\";\n if (options.templateSizeLimit > 0 && html.length > options.templateSizeLimit) {\n throw new Error(\"Template is too long. Please configure the 'templateSizeLimit'\");\n }\n if (!options.allowScriptTagsInTemplates && scriptTagPattern.test(html)) {\n throw new Error(\"Script-tag in template detected.\");\n }\n return options.sanitizeHtmlTemplate(html);\n}\nexport function parseHtmlForTemplateNodes(html, documentContext) {\n const nodes = parseHtmlFragment(html, documentContext);\n return nodes.length && nodes[0].parentElement || moveCleanedNodesToContainerElement(nodes);\n}\nexport function setHtml(node, html) {\n emptyDomNode(node);\n if (typeof html === \"function\") {\n html = html();\n }\n if (html !== null && html !== void 0) {\n if (typeof html !== \"string\") {\n html = html.toString();\n }\n const jQuery = options.jQuery;\n if (jQuery && !supportsTemplateTag) {\n const saferHtml = validateHTMLInput(html);\n jQuery(node).html(saferHtml);\n } else {\n let parsedNodes;\n if (node.ownerDocument) {\n parsedNodes = parseHtmlFragment(html, node.ownerDocument);\n } else {\n parsedNodes = parseHtmlFragment(html);\n }\n if (node.nodeType === Node.COMMENT_NODE) {\n if (html === null) {\n virtualElements.emptyNode(node);\n } else {\n virtualElements.setDomNodeChildren(node, parsedNodes);\n }\n } else {\n for (let i = 0; i < parsedNodes.length; i++) {\n node.appendChild(parsedNodes[i]);\n }\n }\n }\n }\n}\nexport function setTextContent(element, textContent) {\n let value = typeof textContent === \"function\" ? textContent() : textContent;\n if (value === null || value === void 0) {\n value = \"\";\n }\n const innerTextNode = virtualElements.firstChild(element);\n if (!innerTextNode || innerTextNode.nodeType !== Node.TEXT_NODE || virtualElements.nextSibling(innerTextNode)) {\n virtualElements.setDomNodeChildren(element, [element.ownerDocument.createTextNode(value)]);\n } else {\n ;\n innerTextNode.data = value;\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { tagNameLower } from \"./info\";\nimport * as domData from \"./data\";\nconst hasDomDataExpandoProperty = /* @__PURE__ */ Symbol(\"Knockout selectExtensions hasDomDataProperty\");\nexport const selectExtensions = {\n optionValueDomDataKey: domData.nextKey(),\n readValue: function(element) {\n switch (tagNameLower(element)) {\n case \"option\": {\n if (element[hasDomDataExpandoProperty] === true) {\n return domData.get(element, selectExtensions.optionValueDomDataKey);\n }\n return element.value;\n }\n case \"select\": {\n const selectElement = element;\n return selectElement.selectedIndex >= 0 ? selectExtensions.readValue(selectElement.options[selectElement.selectedIndex]) : void 0;\n }\n default:\n return element.value;\n }\n },\n writeValue: function(element, value, allowUnset) {\n switch (tagNameLower(element)) {\n case \"option\":\n if (typeof value === \"string\") {\n domData.set(element, selectExtensions.optionValueDomDataKey, void 0);\n if (hasDomDataExpandoProperty in element) {\n delete element[hasDomDataExpandoProperty];\n }\n ;\n element.value = value;\n } else {\n const el = element;\n domData.set(element, selectExtensions.optionValueDomDataKey, value);\n el[hasDomDataExpandoProperty] = true;\n el.value = typeof value === \"number\" ? value : \"\";\n }\n break;\n case \"select\":\n {\n if (value === \"\" || value === null) {\n value = void 0;\n }\n let selection = -1;\n const selectElement = element;\n for (let i = 0, n = selectElement.options.length, optionValue; i < n; ++i) {\n optionValue = selectExtensions.readValue(selectElement.options[i]);\n const strictEqual = optionValue === value;\n const blankEqual = optionValue === \"\" && value === void 0;\n const numericEqual = typeof value === \"number\" && Number(optionValue) === value;\n if (strictEqual || blankEqual || numericEqual) {\n selection = i;\n break;\n }\n }\n if (allowUnset || selection >= 0 || value === void 0 && selectElement.size > 1) {\n selectElement.selectedIndex = selection;\n }\n }\n break;\n default:\n if (value === null || value === void 0) {\n value = \"\";\n }\n ;\n element.value = value;\n break;\n }\n }\n};\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { arrayPushAll } from \"./array\";\nconst memos = {};\nfunction randomMax8HexChars() {\n return ((1 + Math.random()) * 4294967296 | 0).toString(16).substring(1);\n}\nfunction generateRandomId() {\n return randomMax8HexChars() + randomMax8HexChars();\n}\nfunction findMemoNodes(rootNode, appendToArray) {\n if (!rootNode) {\n return;\n }\n if (rootNode.nodeType === Node.COMMENT_NODE) {\n const comment = rootNode;\n const memoId = parseMemoText(comment.nodeValue);\n if (memoId != null) {\n appendToArray.push({ domNode: rootNode, memoId });\n }\n } else if (rootNode.nodeType === Node.ELEMENT_NODE) {\n for (let i = 0, childNodes = rootNode.childNodes, j = childNodes.length; i < j; i++) {\n findMemoNodes(childNodes[i], appendToArray);\n }\n }\n}\nexport function memoize(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"You can only pass a function to memoization.memoize()\");\n }\n const memoId = generateRandomId();\n memos[memoId] = callback;\n return \"<!--[ko_memo:\" + memoId + \"]-->\";\n}\nexport function unmemoize(memoId, callbackParams) {\n const callback = memos[memoId];\n if (callback === void 0) {\n throw new Error(\"Couldn't find any memo with ID \" + memoId + \". Perhaps it's already been unmemoized.\");\n }\n try {\n callback.apply(null, callbackParams || []);\n return true;\n } finally {\n delete memos[memoId];\n }\n}\nexport function unmemoizeDomNodeAndDescendants(domNode, extraCallbackParamsArray) {\n const memos2 = new Array();\n findMemoNodes(domNode, memos2);\n for (let i = 0, j = memos2.length; i < j; i++) {\n const node = memos2[i].domNode;\n const combinedParams = [node];\n if (extraCallbackParamsArray) {\n arrayPushAll(combinedParams, extraCallbackParamsArray);\n }\n unmemoize(memos2[i].memoId, combinedParams);\n node.nodeValue = \"\";\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n}\nexport function parseMemoText(memoText) {\n if (!memoText) {\n return null;\n }\n const match = memoText.match(/^\\[ko_memo\\:(.*?)\\]$/);\n return match ? match[1] : null;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport options from \"./options\";\nimport { deferError } from \"./error\";\nlet taskQueue = new Array(), taskQueueLength = 0, nextHandle = 1, nextIndexToProcess = 0, w = options.global;\nif (w && w.MutationObserver && !(w.navigator && w.navigator.standalone)) {\n options.taskScheduler = (function(callback) {\n const div = w.document.createElement(\"div\");\n new w.MutationObserver(callback).observe(div, { attributes: true });\n return function() {\n div.classList.toggle(\"foo\");\n };\n })(scheduledProcess);\n} else {\n options.taskScheduler = function(callback) {\n setTimeout(callback, 0);\n };\n}\nfunction processTasks() {\n if (taskQueueLength) {\n let mark = taskQueueLength, countMarks = 0;\n for (let task; nextIndexToProcess < taskQueueLength; ) {\n if (task = taskQueue[nextIndexToProcess++]) {\n if (nextIndexToProcess > mark) {\n if (++countMarks >= 5e3) {\n nextIndexToProcess = taskQueueLength;\n deferError(Error(\"'Too much recursion' after processing \" + countMarks + \" task groups.\"));\n break;\n }\n mark = taskQueueLength;\n }\n try {\n task();\n } catch (ex) {\n deferError(ex);\n }\n }\n }\n }\n}\nfunction scheduledProcess() {\n processTasks();\n nextIndexToProcess = taskQueueLength = taskQueue.length = 0;\n}\nfunction scheduleTaskProcessing() {\n options.taskScheduler(scheduledProcess);\n}\nexport function schedule(func) {\n if (!taskQueueLength) {\n scheduleTaskProcessing();\n }\n taskQueue[taskQueueLength++] = func;\n return nextHandle++;\n}\nexport function cancel(handle) {\n const index = handle - (nextHandle - taskQueueLength);\n if (index >= nextIndexToProcess && index < taskQueueLength) {\n taskQueue[index] = null;\n }\n}\nexport function resetForTesting() {\n const length = taskQueueLength - nextIndexToProcess;\n nextIndexToProcess = taskQueueLength = taskQueue.length = 0;\n return length;\n}\nexport { processTasks as runEarly };\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { isSubscribable } from \"./subscribableSymbol\";\nconst outerFrames = new Array();\nlet currentFrame;\nlet lastId = 0;\nfunction getId() {\n return ++lastId;\n}\nexport function begin(options) {\n outerFrames.push(currentFrame);\n currentFrame = options;\n}\nexport function end() {\n currentFrame = outerFrames.pop();\n}\nexport function registerDependency(subscribable) {\n if (currentFrame) {\n if (!isSubscribable(subscribable)) {\n throw new Error(\"Only subscribable things can act as dependencies\");\n }\n currentFrame.callback.call(\n currentFrame.callbackTarget,\n subscribable,\n subscribable._id || (subscribable._id = getId())\n );\n }\n}\nexport function ignore(callback, callbackTarget, callbackArgs) {\n try {\n begin();\n return callback.apply(callbackTarget, callbackArgs || []);\n } finally {\n end();\n }\n}\nexport function getDependenciesCount() {\n if (currentFrame) {\n return currentFrame.computed.getDependenciesCount();\n }\n return void 0;\n}\nexport function getDependencies() {\n if (currentFrame) {\n return currentFrame.computed.getDependencies();\n }\n return void 0;\n}\nexport function isInitial() {\n if (currentFrame) {\n return currentFrame.isInitial;\n }\n return void 0;\n}\nexport { ignore as ignoreDependencies };\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nexport const SUBSCRIBABLE_SYM = /* @__PURE__ */ Symbol(\"Knockout Subscribable\");\nexport function isSubscribable(instance) {\n return instance && instance[SUBSCRIBABLE_SYM] || false;\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { tasks } from \"@tko/utils\";\nexport function deferUpdates(target) {\n if (target._deferUpdates) {\n return;\n }\n target._deferUpdates = true;\n target.limit(function(callback) {\n let handle;\n let ignoreUpdates = false;\n return function() {\n if (!ignoreUpdates) {\n tasks.cancel(handle);\n handle = tasks.schedule(callback);\n try {\n ignoreUpdates = true;\n target.notifySubscribers(void 0, \"dirty\");\n } finally {\n ignoreUpdates = false;\n }\n }\n };\n });\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { removeDisposeCallback, addDisposeCallback } from \"@tko/utils\";\nexport default class Subscription {\n constructor(target, observer, disposeCallback) {\n this._target = target;\n this._callback = observer.next;\n this._disposeCallback = disposeCallback;\n this._isDisposed = false;\n this._domNodeDisposalCallback = null;\n }\n dispose() {\n if (this._domNodeDisposalCallback) {\n removeDisposeCallback(this._node, this._domNodeDisposalCallback);\n }\n this._isDisposed = true;\n this._disposeCallback();\n }\n disposeWhenNodeIsRemoved(node) {\n this._node = node;\n addDisposeCallback(node, this._domNodeDisposalCallback = this.dispose.bind(this));\n }\n // TC39 Observable API\n unsubscribe() {\n this.dispose();\n }\n get closed() {\n return this._isDisposed;\n }\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { options, objectForEach, throttle as throttleFn, debounce as debounceFn } from \"@tko/utils\";\nimport { deferUpdates } from \"./defer\";\nconst primitiveTypes = { undefined: 1, boolean: 1, number: 1, string: 1 };\nexport function valuesArePrimitiveAndEqual(a, b) {\n const oldValueIsPrimitive = a === null || typeof a in primitiveTypes;\n return oldValueIsPrimitive ? a === b : false;\n}\nexport function applyExtenders(requestedExtenders) {\n let target = this;\n if (requestedExtenders) {\n objectForEach(requestedExtenders, function(key, value) {\n const extenderHandler = extenders[key];\n if (typeof extenderHandler === \"function\") {\n target = extenderHandler(target, value) || target;\n } else {\n options.onError(new Error(\"Extender not found: \" + key));\n }\n });\n }\n return target;\n}\nexport function notify(target, notifyWhen) {\n target.equalityComparer = notifyWhen == \"always\" ? null : valuesArePrimitiveAndEqual;\n}\nexport function deferred(target, option) {\n if (option !== true) {\n throw new Error(\n \"The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.\"\n );\n }\n deferUpdates(target);\n}\nexport function rateLimit(target, options2) {\n let timeout, method, limitFunction;\n if (typeof options2 === \"number\") {\n timeout = options2;\n } else {\n timeout = options2.timeout;\n method = options2.method;\n }\n target._deferUpdates = false;\n limitFunction = method === \"notifyWhenChangesStop\" ? debounceFn : throttleFn;\n target.limit(function(callback) {\n return limitFunction(callback, timeout);\n });\n}\nexport const extenders = { notify, deferred, rateLimit };\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { arrayRemoveItem, objectForEach, options } from \"@tko/utils\";\nimport Subscription from \"./Subscription\";\nimport { SUBSCRIBABLE_SYM } from \"./subscribableSymbol\";\nimport { applyExtenders } from \"./extenders\";\nimport * as dependencyDetection from \"./dependencyDetection\";\nexport { isSubscribable } from \"./subscribableSymbol\";\nexport const LATEST_VALUE = /* @__PURE__ */ Symbol(\"Knockout latest value\");\nif (!Symbol.observable) {\n Symbol.observable = /* @__PURE__ */ Symbol.for(\"@tko/Symbol.observable\");\n}\nexport const subscribable = function subscribableFactory() {\n Object.setPrototypeOf(this, ko_subscribable_fn);\n ko_subscribable_fn.init(this);\n};\nexport const defaultEvent = \"change\";\nconst ko_subscribable_fn = {\n [SUBSCRIBABLE_SYM]: true,\n [Symbol.observable]() {\n return this;\n },\n init(instance) {\n instance._subscriptions = { change: [] };\n instance._versionNumber = 1;\n },\n subscribe(callback, callbackTarget, event) {\n const isTC39Callback = typeof callback === \"object\" && callback.next;\n event = event || defaultEvent;\n const observer = isTC39Callback ? callback : { next: callbackTarget ? callback.bind(callbackTarget) : callback };\n const subscriptionInstance = new Subscription(this, observer, () => {\n arrayRemoveItem(this._subscriptions[event], subscriptionInstance);\n if (this.afterSubscriptionRemove) {\n this.afterSubscriptionRemove(event);\n }\n });\n if (this.beforeSubscriptionAdd) {\n this.beforeSubscriptionAdd(event);\n }\n if (!this._subscriptions[event]) {\n this._subscriptions[event] = new Array();\n }\n this._subscriptions[event].push(subscriptionInstance);\n if (isTC39Callback && LATEST_VALUE in this) {\n observer.next(this[LATEST_VALUE]);\n }\n return subscriptionInstance;\n },\n notifySubscribers(valueToNotify, event) {\n event = event || defaultEvent;\n if (event === defaultEvent) {\n this.updateVersion();\n }\n if (this.hasSubscriptionsForEvent(event)) {\n const subs = event === defaultEvent && this._changeSubscriptions || [...this._subscriptions[event]];\n try {\n dependencyDetection.begin();\n for (let i = 0, subscriptionInstance; subscriptionInstance = subs[i]; ++i) {\n if (!subscriptionInstance._isDisposed) {\n subscriptionInstance._callback(valueToNotify);\n }\n }\n } finally {\n dependencyDetection.end();\n }\n }\n },\n getVersion() {\n return this._versionNumber;\n },\n hasChanged(versionToCheck) {\n return this.getVersion() !== versionToCheck;\n },\n updateVersion() {\n ++this._versionNumber;\n },\n hasSubscriptionsForEvent(event) {\n return this._subscriptions[event] && this._subscriptions[event].length;\n },\n getSubscriptionsCount(event) {\n if (event) {\n return this._subscriptions[event] && this._subscriptions[event].length || 0;\n } else {\n let total = 0;\n objectForEach(this._subscriptions, function(eventName, subscriptions) {\n if (eventName !== \"dirty\") {\n total += subscriptions.length;\n }\n });\n return total;\n }\n },\n isDifferent(oldValue, newValue) {\n return !this.equalityComparer || !this.equalityComparer(oldValue, newValue);\n },\n once(cb) {\n const subs = this.subscribe((nv) => {\n subs.dispose();\n cb(nv);\n });\n },\n when(test, returnValue) {\n const current = this.peek();\n const givenRv = arguments.length > 1;\n const testFn = typeof test === \"function\" ? test : (v) => v === test;\n if (testFn(current)) {\n return options.Promise.resolve(givenRv ? returnValue : current);\n }\n return new options.Promise((resolve, reject) => {\n const subs = this.subscribe((newValue) => {\n if (testFn(newValue)) {\n subs.dispose();\n resolve(givenRv ? returnValue : newValue);\n }\n });\n });\n },\n yet(test, ...args) {\n const testFn = typeof test === \"function\" ? test : (v) => v === test;\n const negated = (v) => !testFn(v);\n return this.when(negated, ...args);\n },\n next() {\n return new Promise((resolve) => this.once(resolve));\n },\n toString() {\n return \"[object Object]\";\n },\n extend: applyExtenders\n};\nObject.setPrototypeOf(ko_subscribable_fn, Function.prototype);\nsubscribable.fn = ko_subscribable_fn;\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { options, overwriteLengthPropertyIfSupported } from \"@tko/utils\";\nimport * as dependencyDetection from \"./dependencyDetection\";\nimport { deferUpdates } from \"./defer\";\nimport { subscribable, defaultEvent, LATEST_VALUE } from \"./subscribable\";\nimport { valuesArePrimitiveAndEqual } from \"./extenders\";\nexport function observable(initialValue) {\n function Observable() {\n if (arguments.length > 0) {\n if (Observable.isDifferent(Observable[LATEST_VALUE], arguments[0])) {\n ;\n Observable.valueWillMutate();\n Observable[LATEST_VALUE] = arguments[0];\n Observable.valueHasMutated();\n }\n return this;\n } else {\n dependencyDetection.registerDependency(Observable);\n return Observable[LATEST_VALUE];\n }\n }\n overwriteLengthPropertyIfSupported(Observable, { value: void 0 });\n Observable[LATEST_VALUE] = initialValue;\n subscribable.fn.init(Observable);\n Object.setPrototypeOf(Observable, observable.fn);\n if (options.deferUpdates) {\n deferUpdates(Observable);\n }\n return Observable;\n}\nobservable.fn = {\n /**\n * Compares two values for equality.\n * @param a The first value.\n * @param b The second value.\n * @returns True if the values are equal, otherwise false.\n */\n equalityComparer: valuesArePrimitiveAndEqual,\n /**\n * Returns the current value of the observable without creating a dependency.\n * @returns The current value.\n */\n peek() {\n return this[LATEST_VALUE];\n },\n /**\n * Notifies subscribers that the value has changed.\n */\n valueHasMutated() {\n this.notifySubscribers(this[LATEST_VALUE], \"spectate\");\n this.notifySubscribers(this[LATEST_VALUE]);\n },\n /**\n * Notifies subscribers that the value is about to change.\n */\n valueWillMutate() {\n this.notifySubscribers(this[LATEST_VALUE], \"beforeChange\");\n },\n /**\n * Modifies the value of the observable using a function.\n * @param fn The function to modify the value.\n * @param peek Whether to use the current value without creating a dependency.\n * @returns The modified observable.\n */\n modify(fn, peek2 = true) {\n this(fn(peek2 ? this.peek() : this()));\n },\n // Some observables may not always be writeable, notably computeds.\n isWriteable: true\n};\nfunction limitNotifySubscribers(value, event) {\n if (!event || event === defaultEvent) {\n this._limitChange(value);\n } else if (event === \"beforeChange\") {\n this._limitBeforeChange(value);\n } else {\n this._origNotifySubscribers(value, event);\n }\n}\n;\nsubscribable.fn.limit = function limit(limitFunction) {\n const self = this;\n const selfIsObservable = isObservable(self);\n const beforeChange = \"beforeChange\";\n let ignoreBeforeChange, notifyNextChange, previousValue, pendingValue, didUpdate;\n if (!self._origNotifySubscribers) {\n self._origNotifySubscribers = self.notifySubscribers;\n self.notifySubscribers = limitNotifySubscribers;\n }\n const finish = limitFunction(function() {\n self._notificationIsPending = false;\n if (selfIsObservable && pendingValue === self) {\n pendingValue = self._evalIfChanged ? self._evalIfChanged() : self();\n }\n const shouldNotify = notifyNextChange || didUpdate && self.isDifferent(previousValue, pendingValue);\n self._notifyNextChange = didUpdate = ignoreBeforeChange = false;\n if (shouldNotify) {\n self._origNotifySubscribers(previousValue = pendingValue);\n }\n });\n Object.assign(self, {\n _limitChange(value, isDirty) {\n if (!isDirty || !self._notificationIsPending) {\n didUpdate = !isDirty;\n }\n self._changeSubscriptions = [...self._subscriptions[defaultEvent]];\n self._notificationIsPending = ignoreBeforeChange = true;\n pendingValue = value;\n finish();\n },\n _limitBeforeChange(value) {\n if (!ignoreBeforeChange) {\n previousValue = value;\n self._origNotifySubscribers(value, beforeChange);\n }\n },\n _notifyNextChangeIfValueIsDifferent() {\n if (self.isDifferent(previousValue, self.peek(\n true\n /* evaluate */\n ))) {\n notifyNextChange = true;\n }\n },\n _recordUpdate() {\n didUpdate = true;\n }\n });\n};\nObject.setPrototypeOf(observable.fn, subscribable.fn);\nconst protoProperty = observable.protoProperty = options.protoProperty;\nobservable.fn[protoProperty] = observable;\nobservable.observablePrototypes = /* @__PURE__ */ new Set([observable]);\nexport function isObservable(instance) {\n const proto = typeof instance === \"function\" && instance[protoProperty];\n if (proto && !observable.observablePrototypes.has(proto)) {\n throw Error(\"Invalid object that looks like an observable; possibly from another Knockout instance\");\n }\n return !!proto;\n}\nexport function unwrap(value) {\n return isObservable(value) ? value() : value;\n}\nexport function peek(value) {\n return isObservable(value) ? value.peek() : value;\n}\nexport function isWriteableObservable(instance) {\n return isObservable(instance) && instance.isWriteable;\n}\nexport { isWriteableObservable as isWritableObservable };\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { extend, compareArrays, findMovesInArrayComparison } from \"@tko/utils\";\nimport { defaultEvent } from \"./subscribable\";\nimport { extenders } from \"./extenders\";\nexport const arrayChangeEventName = \"arrayChange\";\nexport function trackArrayChanges(target, options) {\n target.compareArrayOptions = {};\n if (options && typeof options === \"object\") {\n extend(target.compareArrayOptions, options);\n }\n target.compareArrayOptions.sparse = true;\n if (target.cacheDiffForKnownOperation) {\n return;\n }\n let trackingChanges = false;\n let cachedDiff = null;\n let arrayChangeSubscription;\n let pendingNotifications = 0;\n let underlyingNotifySubscribersFunction;\n const underlyingBeforeSubscriptionAddFunction = target.beforeSubscriptionAdd;\n const underlyingAfterSubscriptionRemoveFunction = target.afterSubscriptionRemove;\n target.beforeSubscriptionAdd = function(event) {\n if (underlyingBeforeSubscriptionAddFunction) {\n underlyingBeforeSubscriptionAddFunction.call(target, event);\n }\n if (event === arrayChangeEventName) {\n trackChanges();\n }\n };\n target.afterSubscriptionRemove = function(event) {\n if (underlyingAfterSubscriptionRemoveFunction) {\n underlyingAfterSubscriptionRemoveFunction.call(target, event);\n }\n if (event === arrayChangeEventName && !target.hasSubscriptionsForEvent(arrayChangeEventName)) {\n if (underlyingNotifySubscribersFunction) {\n target.notifySubscribers = underlyingNotifySubscribersFunction;\n underlyingNotifySubscribersFunction = void 0;\n }\n if (arrayChangeSubscription) {\n arrayChangeSubscription.dispose();\n }\n arrayChangeSubscription = null;\n trackingChanges = false;\n }\n };\n function trackChanges() {\n if (trackingChanges) {\n return;\n }\n trackingChanges = true;\n underlyingNotifySubscribersFunction = target[\"notifySubscribers\"];\n target.notifySubscribers = function(valueToNotify, event) {\n if (!event || event === defaultEvent) {\n ++pendingNotifications;\n }\n return underlyingNotifySubscribersFunction.apply(this, arguments);\n };\n let previousContents = new Array().concat(target.peek() === void 0 ? [] : target.peek());\n cachedDiff = null;\n arrayChangeSubscription = target.subscribe(function(currentContents) {\n let changes;\n currentContents = new Array().concat(currentContents || []);\n if (target.hasSubscriptionsForEvent(arrayChangeEventName)) {\n changes = getChanges(previousContents, currentContents);\n }\n previousContents = currentContents;\n cachedDiff = null;\n pendingNotifications = 0;\n if (changes && changes.length) {\n target.notifySubscribers(changes, arrayChangeEventName);\n }\n });\n }\n function getChanges(previousContents, currentContents) {\n if (!cachedDiff || pendingNotifications > 1) {\n cachedDiff = trackArrayChanges.compareArrays(previousContents, currentContents, target.compareArrayOptions);\n }\n return cachedDiff;\n }\n target.cacheDiffForKnownOperation = function(rawArray, operationName, args) {\n if (!trackingChanges || pendingNotifications) {\n return;\n }\n let diff = new Array(), arrayLength = rawArray.length, argsLength = args.length, offset = 0;\n function pushDiff(status, value, index) {\n return diff[diff.length] = { status, value, index };\n }\n switch (operationName) {\n case \"push\":\n offset = arrayLength;\n case \"unshift\":\n for (let index = 0; index < argsLength; index++) {\n pushDiff(\"added\", args[index], offset + index);\n }\n break;\n case \"pop\":\n offset = arrayLength - 1;\n case \"shift\":\n if (arrayLength) {\n pushDiff(\"deleted\", rawArray[offset], offset);\n }\n break;\n case \"splice\":\n {\n const startIndex = Math.min(Math.max(0, args[0] < 0 ? arrayLength + args[0] : args[0]), arrayLength), endDeleteIndex = argsLength === 1 ? arrayLength : Math.min(startIndex + (args[1] || 0), arrayLength), endAddIndex = startIndex + argsLength - 2, endIndex = Math.max(endDeleteIndex, endAddIndex), additions = new Array(), deletions = new Array();\n for (let index = startIndex, argsIndex = 2; index < endIndex; ++index, ++argsIndex) {\n if (index < endDeleteIndex) {\n deletions.push(pushDiff(\"deleted\", rawArray[index], index));\n }\n if (index < endAddIndex) {\n additions.push(pushDiff(\"added\", args[argsIndex], index));\n }\n }\n findMovesInArrayComparison(deletions, additions);\n }\n break;\n default:\n return;\n }\n cachedDiff = diff;\n };\n}\ntrackArrayChanges.compareArrays = compareArrays;\nextenders.trackArrayChanges = trackArrayChanges;\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { arrayIndexOf, arrayForEach, overwriteLengthPropertyIfSupported } from \"@tko/utils\";\nimport { observable, isObservable } from \"./observable\";\nimport { trackArrayChanges } from \"./observableArray.changeTracking\";\nexport function observableArray(initialValues) {\n initialValues = initialValues || [];\n if (typeof initialValues !== \"object\" || !(\"length\" in initialValues)) {\n throw new Error(\n \"The argument passed when initializing an observable array must be an array, or null, or undefined.\"\n );\n }\n const result = Object.setPrototypeOf(observable(initialValues), observableArray.fn);\n trackArrayChanges(result);\n overwriteLengthPropertyIfSupported(result, { get: () => result()?.length });\n return result;\n}\nexport function isObservableArray(instance) {\n return isObservable(instance) && typeof instance.remove === \"function\" && typeof instance.push === \"function\";\n}\nobservableArray.fn = {\n remove(valueOrPredicate) {\n const underlyingArray = this.peek();\n const removedValues = new Array();\n const predicate = typeof valueOrPredicate === \"function\" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value) {\n return value === valueOrPredicate;\n };\n for (let i = 0; i < underlyingArray.length; i++) {\n const value = underlyingArray[i];\n if (predicate(value)) {\n if (removedValues.length === 0) {\n this.valueWillMutate();\n }\n if (underlyingArray[i] !== value) {\n throw Error(\"Array modified during remove; cannot remove item\");\n }\n removedValues.push(value);\n underlyingArray.splice(i, 1);\n i--;\n }\n }\n if (removedValues.length) {\n this.valueHasMutated();\n }\n return removedValues;\n },\n removeAll(arrayOfValues) {\n if (arrayOfValues === void 0) {\n const underlyingArray = this.peek();\n const allValues = underlyingArray.slice(0);\n this.valueWillMutate();\n underlyingArray.splice(0, underlyingArray.length);\n this.valueHasMutated();\n return allValues;\n }\n if (!arrayOfValues) {\n return [];\n }\n return this[\"remove\"](function(value) {\n return arrayIndexOf(arrayOfValues, value) >= 0;\n });\n },\n destroy(valueOrPredicate) {\n const underlyingArray = this.peek();\n const predicate = typeof valueOrPredicate === \"function\" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value) {\n return value === valueOrPredicate;\n };\n this.valueWillMutate();\n for (let i = underlyingArray.length - 1; i >= 0; i--) {\n const value = underlyingArray[i];\n if (predicate(value)) {\n value[\"_destroy\"] = true;\n }\n }\n this.valueHasMutated();\n },\n destroyAll(arrayOfValues) {\n if (arrayOfValues === void 0) {\n return this.destroy(function() {\n return true;\n });\n }\n if (!arrayOfValues) {\n return [];\n }\n return this.destroy(function(value) {\n return arrayIndexOf(arrayOfValues, value) >= 0;\n });\n },\n indexOf(item) {\n return arrayIndexOf(this(), item);\n },\n replace(oldItem, newItem) {\n const index = this.indexOf(oldItem);\n if (index >= 0) {\n this.valueWillMutate();\n this.peek()[index] = newItem;\n this.valueHasMutated();\n }\n },\n sorted(compareFn) {\n return [...this()].sort(compareFn);\n },\n reversed() {\n return [...this()].reverse();\n },\n [Symbol.iterator]: function* () {\n yield* this();\n }\n};\nObject.setPrototypeOf(observableArray.fn, observable.fn);\narrayForEach([\"pop\", \"push\", \"reverse\", \"shift\", \"sort\", \"splice\", \"unshift\"], function(methodName) {\n observableArray.fn[methodName] = function() {\n const underlyingArray = this.peek();\n this.valueWillMutate();\n this.cacheDiffForKnownOperation(underlyingArray, methodName, arguments);\n const methodCallResult = underlyingArray[methodName].apply(underlyingArray, arguments);\n this.valueHasMutated();\n return methodCallResult === underlyingArray ? this : methodCallResult;\n };\n});\narrayForEach([\"slice\"], function(methodName) {\n observableArray.fn[methodName] = function() {\n const underlyingArray = this();\n return underlyingArray[methodName].apply(underlyingArray, arguments);\n };\n});\nobservableArray.trackArrayChanges = trackArrayChanges;\n", "// @tko/observable \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { isObservable } from \"./observable\";\nconst maxNestedObservableDepth = 10;\nexport function toJS(rootObject) {\n if (arguments.length == 0) {\n throw new Error(\"When calling ko.toJS, pass the object you want to convert.\");\n }\n return mapJsObjectGraph(rootObject, function(valueToMap) {\n for (let i = 0; isObservable(valueToMap) && i < maxNestedObservableDepth; i++) {\n valueToMap = valueToMap();\n }\n return valueToMap;\n });\n}\nexport function toJSON(rootObject, replacer, space) {\n const plainJavaScriptObject = toJS(rootObject);\n return JSON.stringify(plainJavaScriptObject, replacer, space);\n}\nfunction mapJsObjectGraph(rootObject, mapInputCallback, visitedObjects = /* @__PURE__ */ new Map()) {\n rootObject = mapInputCallback(rootObject);\n const canHaveProperties = typeof rootObject === \"object\" && rootObject !== null && rootObject !== void 0 && !(rootObject instanceof RegExp) && !(rootObject instanceof Date) && !(rootObject instanceof String) && !(rootObject instanceof Number) && !(rootObject instanceof Boolean);\n if (!canHaveProperties) {\n return rootObject;\n }\n const outputProperties = rootObject instanceof Array ? [] : {};\n visitedObjects.set(rootObject, outputProperties);\n visitPropertiesOrArrayEntries(rootObject, function(indexer) {\n const propertyValue = mapInputCallback(rootObject[indexer]);\n switch (typeof propertyValue) {\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"function\":\n outputProperties[indexer] = propertyValue;\n break;\n case \"object\":\n case \"undefined\":\n {\n const previouslyMappedValue = visitedObjects.get(propertyValue);\n outputProperties[indexer] = previouslyMappedValue !== void 0 ? previouslyMappedValue : mapJsObjectGraph(propertyValue, mapInputCallback, visitedObjects);\n }\n break;\n }\n });\n return outputProperties;\n}\nfunction visitPropertiesOrArrayEntries(rootObject, visitorCallback) {\n if (rootObject instanceof Array) {\n for (let i = 0; i < rootObject.length; i++) {\n visitorCallback(i);\n }\n if (typeof rootObject[\"toJSON\"] === \"function\") {\n visitorCallback(\"toJSON\");\n }\n } else {\n for (const propertyName in rootObject) {\n visitorCallback(propertyName);\n }\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nexport function LAMBDA() {\n}\nfunction unwrapOrCall(a, b) {\n while (typeof b === \"function\") {\n b = b();\n }\n return b;\n}\nconst operators = {\n // unary\n \"@\": unwrapOrCall,\n \"#\": (a, b) => () => unwrap(b),\n // Convert to read-only.\n \"=>\": LAMBDA,\n \"!\": function not(a, b) {\n return !b;\n },\n \"!!\": function notnot(a, b) {\n return !!b;\n },\n \"++\": function preinc(a, b) {\n return ++b;\n },\n \"--\": function preinc2(a, b) {\n return --b;\n },\n // exponent\n \"**\": function exp(a, b) {\n return a ** b;\n },\n // mul/div\n \"*\": function mul(a, b) {\n return a * b;\n },\n \"/\": function div(a, b) {\n return a / b;\n },\n \"%\": function mod(a, b) {\n return a % b;\n },\n // sub/add\n \"+\": function add(a, b) {\n return a + b;\n },\n \"-\": function sub(a, b) {\n return (a || 0) - (b || 0);\n },\n \"&-\": function neg(a, b) {\n return -1 * b;\n },\n // unary -\n // relational\n \"<\": function lt(a, b) {\n return a < b;\n },\n \"<=\": function le(a, b) {\n return a <= b;\n },\n \">\": function gt(a, b) {\n return a > b;\n },\n \">=\": function ge(a, b) {\n return a >= b;\n },\n // TODO: 'in': function (a, b) { return a in b; },\n // TODO: 'instanceof': function (a, b) { return a instanceof b; },\n // TODO: 'typeof': function (a, b) { return typeof b; },\n // equality\n \"==\": function equal(a, b) {\n return a == b;\n },\n \"!=\": function ne(a, b) {\n return a != b;\n },\n \"===\": function sequal(a, b) {\n return a === b;\n },\n \"!==\": function sne(a, b) {\n return a !== b;\n },\n // bitwise\n \"&\": function bitAnd(a, b) {\n return a & b;\n },\n \"^\": function xor(a, b) {\n return a ^ b;\n },\n \"|\": function bitOr(a, b) {\n return a | b;\n },\n // logic\n \"&&\": function logicAnd(a, b) {\n return a && b;\n },\n \"||\": function logicOr(a, b) {\n return a || b;\n },\n \"??\": function nullishCoalesce(a, b) {\n return a ?? b;\n },\n // Access\n \".\": function member(a, b) {\n return a?.[b];\n },\n \"?.\": function omember(a, b) {\n return a?.[b];\n },\n \"[\": function bmember(a, b) {\n return a?.[b];\n },\n \",\": function comma(a, b) {\n return b;\n },\n // conditional/ternary\n // '?': ternary See Node.js\n // Function-Call\n call: function callOp(a, b) {\n return a.apply(null, b);\n }\n};\noperators[\"@\"].precedence = 21;\noperators[\"#\"].precedence = 21;\noperators[\".\"].precedence = 19;\noperators[\"[\"].precedence = 19;\noperators[\"?.\"].precedence = 19;\noperators[\"!\"].precedence = 16;\noperators[\"!!\"].precedence = 16;\noperators[\"++\"].precedence = 16;\noperators[\"--\"].precedence = 16;\noperators[\"&-\"].precedence = 16;\noperators[\"**\"].precedence = 15;\noperators[\"%\"].precedence = 14;\noperators[\"*\"].precedence = 14;\noperators[\"/\"].precedence = 14;\noperators[\"+\"].precedence = 13;\noperators[\"-\"].precedence = 13;\noperators[\"|\"].precedence = 12;\noperators[\"^\"].precedence = 11;\noperators[\"&\"].precedence = 10;\noperators[\"<\"].precedence = 11;\noperators[\"<=\"].precedence = 11;\noperators[\">\"].precedence = 11;\noperators[\">=\"].precedence = 11;\noperators[\"==\"].precedence = 10;\noperators[\"!=\"].precedence = 10;\noperators[\"===\"].precedence = 10;\noperators[\"!==\"].precedence = 10;\noperators[\"&&\"].precedence = 6;\noperators[\"||\"].precedence = 5;\noperators[\"??\"].precedence = 5;\noperators[\"&&\"].earlyOut = (a) => !a;\noperators[\"||\"].earlyOut = (a) => a;\noperators[\"??\"].earlyOut = (a) => a;\noperators[\",\"].precedence = 2;\noperators[\"call\"].precedence = 1;\noperators[\"=>\"].precedence = 1;\nexport { operators as default };\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nimport { default as operators, LAMBDA } from \"./operators\";\nconst IS_EXPR_OR_IDENT = /* @__PURE__ */ Symbol(\"Node - Is Expression Or Identifier\");\nexport default class Node {\n constructor(lhs, op, rhs) {\n this.lhs = lhs;\n this.op = op;\n this.rhs = rhs;\n }\n static get operators() {\n return operators;\n }\n get_leaf_value(leaf, context, globals, node) {\n if (typeof leaf === \"function\") {\n return unwrap(leaf());\n }\n if (typeof leaf !== \"object\" || leaf === null) {\n return leaf;\n }\n if (leaf[Node.isExpressionOrIdentifierSymbol]) {\n return unwrap(leaf.get_value(void 0, context, globals, node));\n }\n return leaf;\n }\n /**\n * Return a function that calculates and returns an expression's value\n * when called.\n * @param {array} ops The operations to perform\n * @return {function} The function that calculates the expression.\n *\n * Note that for a lambda, we do not evaluate the RHS expression until\n * the lambda is called.\n */\n get_value(notused, context, globals, node) {\n var node = this;\n if (node.op === LAMBDA) {\n return (...args) => {\n let lambdaContext = context;\n if (node.lhs) {\n lambdaContext = node.lhs.extendContext(context, args);\n }\n return node.get_leaf_value(node.rhs, lambdaContext, globals, node);\n };\n }\n const lhv = node.get_leaf_value(node.lhs, context, globals, node);\n const earlyOut = node.op.earlyOut;\n if (earlyOut && earlyOut(lhv)) {\n return lhv;\n }\n const rhv = node.get_leaf_value(node.rhs, context, globals, node);\n return node.op(lhv, rhv, context, globals);\n }\n //\n // Class variables.\n //\n static get isExpressionOrIdentifierSymbol() {\n return IS_EXPR_OR_IDENT;\n }\n get [IS_EXPR_OR_IDENT]() {\n return true;\n }\n static value_of(item, context, globals, node) {\n if (item && item[Node.isExpressionOrIdentifierSymbol]) {\n return item.get_value(item, context, globals, node);\n }\n return item;\n }\n /**\n * Convert an array of nodes to an executable tree.\n * @return {object} An object with a `lhs`, `rhs` and `op` key, corresponding\n * to the left hand side, right hand side, and\n * operation function.\n */\n static create_root(nodes, debug = false) {\n const out = new Array();\n const ops = new Array();\n for (let i = 0; i < nodes.length; i += 2) {\n out.push(nodes[i]);\n const op = nodes[i + 1];\n const prec = op?.precedence || 0;\n while (ops.length && prec <= ops[ops.length - 1].precedence) {\n const rhs = out.pop();\n const lhs = out.pop();\n out.push(new Node(lhs, ops.pop(), rhs));\n }\n ops.push(op);\n }\n if (out.length !== 1) {\n throw new Error(`unexpected nodes remain in shunting yard output stack: ${out}`);\n }\n return out[0];\n }\n}\noperators[\"?\"] = function ternary(a, b, context, globals, node) {\n return Node.value_of(a ? b.yes : b.no, context, globals, node);\n};\noperators[\"?\"].precedence = 4;\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport Node from \"./Node\";\nexport default class Expression {\n constructor(nodes) {\n this.nodes = nodes;\n this.root = Node.create_root(nodes);\n }\n /**\n * Return the value of `this` Expression instance.\n */\n get_value(parent, context, globals, node) {\n if (!this.root) {\n this.root = Node.create_root(this.nodes);\n }\n return this.root.get_value(parent, context, globals, node);\n }\n}\nExpression.prototype[Node.isExpressionOrIdentifierSymbol] = true;\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport Node from \"./Node\";\nexport default class Arguments {\n constructor(parser, args) {\n this.parser = parser;\n this.args = args;\n }\n get_value(parent, context, globals, node) {\n const deReffedArgs = new Array();\n for (let i = 0, j = this.args.length; i < j; ++i) {\n deReffedArgs.push(Node.value_of(this.args[i], context, globals, node));\n }\n return deReffedArgs;\n }\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true;\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nexport const IDStart = /[\\$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/;\nexport const IDContinue = /[\\$0-9A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/;\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport Node from \"./Node\";\nimport Arguments from \"./Arguments\";\nimport { hasOwnProperty, isObjectLike } from \"@tko/utils\";\nimport { isWriteableObservable, isObservable } from \"@tko/observable\";\nimport { IDStart, IDContinue } from \"./identifierExpressions\";\nexport default class Identifier {\n constructor(parser, token, dereferences) {\n this.token = token;\n this.dereferences = dereferences;\n this.parser = parser;\n }\n /**\n * Apply all () and [] functions on the identifier to the lhs value e.g.\n * a()[3] has deref functions that are essentially this:\n * [_deref_call, _deref_this where this=3]\n *\n * @param {mixed} value Should be an object.\n * @return {mixed} The dereferenced value.\n *\n * [1] We want to bind any function that is a method of an object, but not\n * corrupt any values (e.g. computed()s). e.g. Running x.bind(obj) where\n * we're given `data-bind='binding: obj.x'` and x is a computed will\n * break the computed's `this` and it will stop working as expected.\n *\n * The test `!last_value.hasOwnProperty(member)`\n * distinguishes between functions on the prototype chain (prototypal\n * members) and value-members added directly to the object. This may\n * not be the canonical test for this relationship, but it succeeds\n * in the known test cases.\n *\n * See: `this` tests of our dereference function.\n */\n dereference(value, $context, globals, node) {\n let member;\n const refs = this.dereferences || [];\n const $data = $context.$data || {};\n let lastValue;\n let i, n;\n for (i = 0, n = refs.length; i < n; ++i) {\n member = Node.value_of(refs[i], $context, globals, node);\n if (typeof value === \"function\" && refs[i] instanceof Arguments) {\n value = value.apply(lastValue || $data, member);\n lastValue = value;\n } else if (value === null || value === void 0) {\n return value;\n } else {\n lastValue = value;\n value = Node.value_of(value[member], $context, globals, node);\n }\n }\n if (typeof value === \"function\" && n > 0 && lastValue !== value && !hasOwnProperty(lastValue, member)) {\n return value.bind(lastValue);\n }\n return value;\n }\n /**\n * Return the value as one would get it from the top-level i.e.\n * $data.token/$context.token/globals.token; this does not return intermediate\n * values on a chain of members i.e. $data.hello.there -- requesting the\n * Identifier('there').value will return $data/$context/globals.there.\n *\n * This will dereference using () or [arg] member.\n * @param {object | Identifier | Expression} parent\n * @return {mixed} Return the primitive or an accessor.\n */\n get_value(parent, context, globals, node) {\n const intermediate = parent && !(parent instanceof Identifier) ? Node.value_of(parent, context, globals, node)[this.token] : context.lookup(this.token, globals, node);\n return this.dereference(intermediate, context, globals, node);\n }\n assign(object, property, value) {\n if (isWriteableObservable(object[property])) {\n object[property](value);\n } else if (!isObservable(object[property])) {\n object[property] = value;\n }\n }\n /**\n * Set the value of the Identifier.\n *\n * @param {Mixed} new_value The value that Identifier is to be set to.\n */\n set_value(new_value, $context, globals) {\n const $data = $context.$data || {};\n const refs = this.dereferences || [];\n let leaf = this.token;\n let i, n, root;\n if (isObjectLike($data) && leaf in $data) {\n root = $data;\n } else if (leaf in $context) {\n root = $context;\n } else if (leaf in globals) {\n root = globals;\n } else {\n throw new Error(\n \"Identifier::set_value -- The property '\" + leaf + \"' does not exist on the $data, $context, or globals.\"\n );\n }\n n = refs.length;\n if (n === 0) {\n this.assign(root, leaf, new_value);\n return;\n }\n root = root[leaf];\n for (i = 0; i < n - 1; ++i) {\n leaf = refs[i];\n if (leaf instanceof Arguments) {\n root = root();\n } else {\n root = root[Node.value_of(leaf)];\n }\n }\n if (refs[i] === true) {\n throw new Error(\"Cannot assign a value to a function.\");\n }\n if (refs[i]) {\n this.assign(root, Node.value_of(refs[i]), new_value);\n }\n }\n /**\n * Determine if a character is a valid item in an identifier.\n * Note that we do not check whether the first item is a number, nor do we\n * support unicode identifiers here.\n *\n * From: http://stackoverflow.com/a/9337047\n * @param {String} ch The character\n * @return {Boolean} True if this is a valid identifier\n */\n // function is_identifier_char(ch) {\n // return (ch >= 'A' && ch <= 'Z') ||\n // (ch >= 'a' && ch <= 'z') ||\n // (ch >= '0' && ch <= 9) ||\n // ch === '_' || ch === '$';\n // }\n static is_valid_start_char(ch) {\n return IDStart.test(ch);\n }\n static is_valid_continue_char(ch) {\n return IDContinue.test(ch);\n }\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true;\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport operators from \"./operators\";\nimport Node from \"./Node\";\nimport Expression from \"./Expression\";\nimport Identifier from \"./Identifier\";\nexport default class Parameters {\n #names;\n constructor(parser, node) {\n if (node instanceof Expression) {\n node = node.root;\n }\n try {\n this.#names = Parameters.nodeTreeToNames(node);\n } catch (e) {\n parser.error(e);\n }\n }\n extendContext(context, args) {\n if (!this.#names) {\n return context;\n } else {\n const newValues = {};\n this.#names.forEach((name, index) => {\n newValues[name] = args[index];\n });\n return context.extend(newValues);\n }\n }\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true;\n }\n static nodeTreeToNames(node) {\n const names = new Array();\n while (node) {\n if (node instanceof Identifier) {\n names.push(node.token);\n node = null;\n } else if (this.isCommaNode(node)) {\n names.push(node.rhs.token);\n node = node.lhs;\n } else {\n throw new Error(\n `only simple identifiers allowed in lambda parameter list but found ${JSON.stringify(node, null, 2)}`\n );\n }\n }\n names.reverse();\n return names;\n }\n static isCommaNode(node) {\n return node instanceof Node && node.op === operators[\",\"] && node.rhs instanceof Identifier;\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport Node from \"./Node\";\nexport default class Ternary {\n constructor(yes, no) {\n Object.assign(this, { yes, no });\n }\n get_value() {\n return this;\n }\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true;\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport { options, objectForEach, clonePlainObjectDeep, extend, hasOwnProperty } from \"@tko/utils\";\nimport { default as Expression } from \"./Expression\";\nimport { default as Identifier } from \"./Identifier\";\nimport { default as Arguments } from \"./Arguments\";\nimport { default as Parameters } from \"./Parameters\";\nimport { default as Ternary } from \"./Ternary\";\nimport { default as Node } from \"./Node\";\nimport { default as operators } from \"./operators\";\nconst escapee = {\n \"'\": \"'\",\n '\"': '\"',\n \"`\": \"`\",\n \"\\\\\": \"\\\\\",\n \"/\": \"/\",\n $: \"$\",\n b: \"\\b\",\n f: \"\\f\",\n n: \"\\n\",\n r: \"\\r\",\n t: \"\t\"\n};\nexport default class Parser {\n white() {\n let ch = this.ch;\n while (ch && ch <= \" \") {\n ch = this.next();\n }\n return this.comment(ch);\n }\n /**\n * Slurp any C or C++ style comments\n */\n comment(ch) {\n if (ch !== \"/\") {\n return ch;\n }\n const p = this.at;\n const second = this.lookahead();\n if (second === \"/\") {\n while (ch) {\n ch = this.next();\n if (ch === \"\\n\" || ch === \"\\r\") {\n break;\n }\n }\n ch = this.next();\n } else if (second === \"*\") {\n while (ch) {\n ch = this.next();\n if (ch === \"*\" && this.lookahead() === \"/\") {\n this.next();\n break;\n }\n }\n if (!ch) {\n this.error(\"Unclosed comment, starting at character \" + p);\n }\n this.next();\n return this.white();\n }\n return ch;\n }\n next(c) {\n if (c && c !== this.ch) {\n this.error(\"Expected '\" + c + \"' but got '\" + this.ch + \"'\");\n }\n this.ch = this.text.charAt(this.at);\n this.at += 1;\n return this.ch;\n }\n lookahead() {\n return this.text[this.at];\n }\n error(m) {\n if (m instanceof Error) {\n throw m;\n }\n throw this.createError(m);\n }\n createError(m) {\n const [name, msg] = m.name ? [m.name, m.message] : [m, \"\"];\n const message = `\n${name} ${msg} of ${this.text}\n` + Array(this.at).join(\" \") + \"_/ \\u{1F525} \\\\_\\n\";\n return new Error(message);\n }\n name() {\n let name = \"\";\n let enclosedBy;\n this.white();\n let ch = this.ch;\n if (ch === \"'\" || ch === '\"') {\n enclosedBy = ch;\n ch = this.next();\n }\n while (ch) {\n if (enclosedBy && ch === enclosedBy) {\n this.white();\n ch = this.next();\n if (ch !== \":\" && ch !== \",\") {\n this.error(\"Object name: \" + name + \" missing closing \" + enclosedBy);\n }\n return name;\n } else if (ch === \":\" || ch <= \" \" || ch === \",\" || ch === \"|\") {\n return name;\n }\n name += ch;\n ch = this.next();\n }\n return name;\n }\n number() {\n let number;\n let string = \"\";\n let ch = this.ch;\n if (ch === \"-\") {\n string = \"-\";\n ch = this.next(\"-\");\n }\n while (ch >= \"0\" && ch <= \"9\") {\n string += ch;\n ch = this.next();\n }\n if (ch === \".\") {\n string += \".\";\n ch = this.next();\n while (ch && ch >= \"0\" && ch <= \"9\") {\n string += ch;\n ch = this.next();\n }\n }\n if (ch === \"e\" || ch === \"E\") {\n string += ch;\n ch = this.next();\n if (ch === \"-\" || ch === \"+\") {\n string += ch;\n ch = this.next();\n }\n while (ch >= \"0\" && ch <= \"9\") {\n string += ch;\n ch = this.next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n options.onError(new Error(\"Bad number: \" + number + \" in \" + string));\n } else {\n return number;\n }\n }\n /**\n * Add a property to 'object' that equals the given value.\n * @param {Object} object The object to add the value to.\n * @param {String} key object[key] is set to the given value.\n * @param {mixed} value The value, may be a primitive or a function. If a\n * function it is unwrapped as a property.\n */\n objectAddValue(object, key, value) {\n if (value && value[Node.isExpressionOrIdentifierSymbol]) {\n Object.defineProperty(object, key, {\n get: () => Node.value_of(value, ...this.currentContextGlobals),\n enumerable: true\n });\n } else if (Array.isArray(value)) {\n Object.defineProperty(object, key, {\n get: () => value.map((v) => Node.value_of(v, ...this.currentContextGlobals)),\n enumerable: true\n });\n } else {\n object[key] = value;\n }\n }\n object() {\n let key;\n const object = {};\n let ch = this.ch;\n if (ch === \"{\") {\n this.next(\"{\");\n ch = this.white();\n if (ch === \"}\") {\n ch = this.next(\"}\");\n return object;\n }\n while (ch) {\n if (ch === '\"' || ch === \"'\" || ch === \"`\") {\n key = this.string();\n } else {\n key = this.name();\n }\n if (hasOwnProperty(object, key)) {\n this.error('Duplicate key \"' + key + '\"');\n }\n if (this.white() === \":\") {\n ch = this.next(\":\");\n this.objectAddValue(object, key, this.singleValueExpression());\n } else {\n const objectKeyIsValue = new Identifier(this, key, []);\n this.objectAddValue(object, key, objectKeyIsValue);\n }\n ch = this.white();\n if (ch === \"}\") {\n ch = this.next(\"}\");\n return object;\n }\n this.next(\",\");\n ch = this.white();\n if (ch === \"}\") {\n ch = this.next(\"}\");\n return object;\n }\n }\n }\n throw this.createError(\"Bad object\");\n }\n /**\n * Read up to delim and return the string\n * @param {string} delim The delimiter, either ' or \"\n * @return {string} The string read.\n */\n readString(delim) {\n let string = \"\";\n const nodes = [\"\"];\n const plusOp = operators[\"+\"];\n let hex;\n let i;\n let uffff;\n const interpolate = delim === \"`\";\n let ch = this.next();\n while (ch) {\n if (ch === delim) {\n ch = this.next();\n if (interpolate) {\n nodes.push(plusOp);\n }\n nodes.push(string);\n return nodes;\n }\n if (ch === \"\\\\\") {\n ch = this.next();\n if (ch === \"u\") {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(ch = this.next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === \"string\") {\n string += escapee[ch];\n } else {\n break;\n }\n } else if (interpolate && ch === \"$\") {\n ch = this.next();\n if (ch === \"{\") {\n this.next(\"{\");\n nodes.push(plusOp);\n nodes.push(string);\n nodes.push(plusOp);\n nodes.push(this.expression());\n string = \"\";\n } else {\n string += \"$\" + ch;\n }\n } else {\n string += ch;\n }\n ch = this.next();\n }\n throw this.createError(\"Bad string\");\n }\n string() {\n const ch = this.ch;\n if (ch === '\"') {\n return this.readString('\"')?.join(\"\");\n } else if (ch === \"'\") {\n return this.readString(\"'\")?.join(\"\");\n } else if (ch === \"`\") {\n return Node.create_root(this.readString(\"`\"));\n }\n this.error(\"Bad string\");\n }\n array() {\n const array = new Array();\n let ch = this.ch;\n if (ch === \"[\") {\n ch = this.next(\"[\");\n this.white();\n if (ch === \"]\") {\n ch = this.next(\"]\");\n return array;\n }\n while (ch) {\n array.push(this.singleValueExpression());\n ch = this.white();\n if (ch === \"]\") {\n ch = this.next(\"]\");\n return array;\n }\n this.next(\",\");\n ch = this.white();\n }\n }\n throw this.createError(\"Bad array\");\n }\n value() {\n this.white();\n const ch = this.ch;\n switch (ch) {\n case \"{\":\n return this.object();\n case \"[\":\n return this.array();\n case '\"':\n case \"'\":\n case \"`\":\n return this.string();\n case \"-\":\n return this.number();\n default:\n return ch >= \"0\" && ch <= \"9\" ? this.number() : this.identifier();\n }\n }\n /**\n * Get the function for the given operator.\n * A `.precedence` value is added to the function, with increasing\n * precedence having a higher number.\n * @return {function} The function that performs the infix operation\n */\n operator(opts) {\n let op = \"\";\n let opFn;\n let ch = this.white();\n let isIdentifierChar = Identifier.is_valid_start_char;\n while (ch) {\n if (isIdentifierChar(ch) || ch <= \" \" || ch === \"\" || ch === '\"' || ch === \"'\" || ch === \"{\" || ch === \"(\" || ch === \"`\" || ch === \")\" || ch <= \"9\" && ch >= \"0\") {\n break;\n }\n if (!opts.not_an_array && ch === \"[\") {\n break;\n }\n op += ch;\n ch = this.next();\n if (ch === \"@\") {\n break;\n }\n isIdentifierChar = Identifier.is_valid_continue_char;\n }\n if (op !== \"\") {\n if (opts.prefix && op === \"-\") {\n op = \"&-\";\n }\n opFn = operators[op];\n if (!opFn) {\n this.error(\"Bad operator: '\" + op + \"'.\");\n }\n }\n return opFn;\n }\n /**\n * Filters\n * Returns what the Node interprets as an \"operator\".\n * e.g.\n * <span data-bind=\"text: name | fit:20 | uppercase\"></span>\n */\n filter() {\n let ch = this.next();\n const args = new Array();\n let nextFilter = function(v) {\n return v;\n };\n const name = this.name();\n if (!options.filters[name]) {\n options.onError(new Error(\"Cannot find filter by the name of: \" + name));\n }\n ch = this.white();\n while (ch) {\n if (ch === \":\") {\n ch = this.next();\n args.push(this.singleValueExpression(\"|\"));\n }\n if (ch === \"|\") {\n nextFilter = this.filter();\n break;\n }\n if (ch === \",\") {\n break;\n }\n ch = this.white();\n }\n function filter(value, ignored, context, globals, node) {\n const argValues = [value];\n for (let i = 0, j = args.length; i < j; ++i) {\n argValues.push(Node.value_of(args[i], context, globals, node));\n }\n return nextFilter(options.filters[name].apply(context, argValues), ignored, context, globals, node);\n }\n filter.precedence = 1;\n return filter;\n }\n /**\n * Parse an expression \u2013 builds an operator tree, in something like\n * Shunting-Yard.\n * See: http://en.wikipedia.org/wiki/Shunting-yard_algorithm\n *\n * @param filterable - Whether the expression can include jinga-style filters.\n * An argument of '|' is used only by the filter() method to parse subsequent\n * filters.\n * @param allowMultipleValues - Whether multiple values separated by commas are\n * allowed in this expression. When true (default), this method consumes\n * subsequent comma-separated values.\n * @see {@link Parser.singleValueExpression}\n *\n * @returns a function that computes the value of the expression\n * when called or a primitive.\n */\n expression(filterable = false, allowMultipleValues = true) {\n let op;\n const nodes = new Array();\n let ch = this.white();\n while (ch) {\n op = this.operator({ prefix: true });\n if (op) {\n nodes.push(void 0);\n nodes.push(op);\n ch = this.white();\n }\n if (ch === \"(\") {\n this.next();\n nodes.push(this.expression());\n this.next(\")\");\n } else {\n nodes.push(this.value());\n }\n ch = this.white();\n if (ch === \":\" || ch === \"}\" || ch === \"]\" || ch === \")\" || ch === \"\" || ch === \"`\" || ch === \"|\" && filterable === \"|\" || ch === \",\" && !allowMultipleValues) {\n break;\n }\n if (ch === \"|\" && this.lookahead() !== \"|\" && filterable) {\n nodes.push(this.filter());\n nodes.push(void 0);\n break;\n }\n op = this.operator({ not_an_array: true });\n if (op === operators[\"?\"]) {\n this.ternary(nodes);\n break;\n } else if (op === operators[\".\"] || op === operators[\"?.\"]) {\n nodes.push(op);\n nodes.push(this.member());\n op = null;\n } else if (op === operators[\"[\"]) {\n nodes.push(op);\n nodes.push(this.expression());\n ch = this.next(\"]\");\n op = null;\n } else if (op === operators[\"=>\"]) {\n nodes[nodes.length - 1] = new Parameters(this, nodes[nodes.length - 1]);\n nodes.push(op);\n } else if (op) {\n nodes.push(op);\n }\n ch = this.white();\n if (ch === \"]\" || !op && ch === \"(\") {\n break;\n }\n }\n if (nodes.length === 0) {\n return void 0;\n }\n const dereferences = this.dereferences();\n if (nodes.length === 1 && !dereferences.length) {\n return nodes[0];\n }\n for (let i = 0, j = dereferences.length; i < j; ++i) {\n const deref = dereferences[i];\n if (deref.constructor === Arguments) {\n nodes.push(operators.call);\n } else {\n nodes.push(operators[\".\"]);\n }\n nodes.push(deref);\n }\n return new Expression(nodes);\n }\n /**\n * Use this method to parse expressions that can be followed by additional markup\n * seperated by a comma, such as in bindings strings.\n *\n * @returns an expression that cannot contain multiple values separated by commas.\n * @see {@link Parser.expression}\n */\n singleValueExpression(filterable = false) {\n return this.expression(filterable, false);\n }\n ternary(nodes) {\n const ternary = new Ternary();\n ternary.yes = this.singleValueExpression();\n this.next(\":\");\n ternary.no = this.singleValueExpression();\n nodes.push(operators[\"?\"]);\n nodes.push(ternary);\n }\n /**\n * Parse the arguments to a function, returning an Array.\n *\n */\n funcArguments() {\n const args = new Array();\n let ch = this.next(\"(\");\n while (ch) {\n ch = this.white();\n if (ch === \")\") {\n this.next(\")\");\n return new Arguments(this, args);\n } else {\n args.push(this.singleValueExpression());\n ch = this.white();\n }\n if (ch !== \")\") {\n this.next(\",\");\n }\n }\n throw this.createError(\"Bad arguments to function\");\n }\n /**\n * The literal string reference `abc` in an `x.abc` expression.\n */\n member() {\n let member = \"\";\n let ch = this.white();\n let isIdentifierChar = Identifier.is_valid_start_char;\n while (ch) {\n if (!isIdentifierChar(ch)) {\n break;\n }\n member += ch;\n ch = this.next();\n isIdentifierChar = Identifier.is_valid_continue_char;\n }\n return member;\n }\n /**\n * A dereference applies to an identifer, being either a function\n * call \"()\" or a membership lookup with square brackets \"[member]\".\n * @return {fn or undefined} Dereference function to be applied to the\n * Identifier\n */\n dereference() {\n let member;\n const ch = this.white();\n while (ch) {\n if (ch === \"(\") {\n return this.funcArguments();\n } else if (ch === \"[\") {\n this.next(\"[\");\n member = this.expression();\n this.white();\n this.next(\"]\");\n return member;\n } else if (ch === \".\") {\n this.next(\".\");\n return this.member();\n } else {\n break;\n }\n }\n }\n dereferences() {\n const ch = this.white();\n const dereferences = new Array();\n let deref;\n while (ch) {\n deref = this.dereference();\n if (deref !== void 0) {\n dereferences.push(deref);\n } else {\n break;\n }\n }\n return dereferences;\n }\n identifier() {\n let token = \"\";\n let isIdentifierChar = Identifier.is_valid_start_char;\n let ch = this.white();\n while (ch) {\n if (!isIdentifierChar(ch)) {\n break;\n }\n token += ch;\n ch = this.next();\n isIdentifierChar = Identifier.is_valid_continue_char;\n }\n switch (token) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n case \"null\":\n return null;\n case \"undefined\":\n return void 0;\n case \"function\":\n throw new Error(\"Knockout: Anonymous functions are no longer supported, but `=>` lambdas are. In: \" + this.text);\n }\n return new Identifier(this, token, this.dereferences());\n }\n readBindings() {\n let key;\n const bindings = {};\n let sep;\n let expr;\n let ch = this.ch;\n while (ch) {\n key = this.name();\n sep = this.white();\n if (!sep || sep === \",\") {\n if (sep) {\n ch = this.next(\",\");\n } else {\n ch = \"\";\n }\n bindings[key] = null;\n } else {\n if (key.indexOf(\".\") !== -1) {\n key = key.split(\".\");\n bindings[key[0]] = bindings[key[0]] || {};\n if (key.length !== 2) {\n options.onError(new Error(\"Binding \" + key + \" should have two parts (a.b).\"));\n } else if (bindings[key[0]].constructor !== Object) {\n options.onError(new Error(\"Binding \" + key[0] + \".\" + key[1] + \" paired with a non-object.\"));\n }\n ch = this.next(\":\");\n this.objectAddValue(bindings[key[0]], key[1], this.singleValueExpression(true));\n } else {\n ch = this.next(\":\");\n if (bindings[key] && typeof bindings[key] === \"object\" && bindings[key].constructor === Object) {\n expr = this.singleValueExpression(true);\n if (typeof expr !== \"object\" || expr.constructor !== Object) {\n options.onError(new Error(\"Expected plain object for \" + key + \" value.\"));\n } else {\n extend(bindings[key], expr);\n }\n } else {\n bindings[key] = this.singleValueExpression(true);\n }\n }\n this.white();\n if (this.ch) {\n ch = this.next(\",\");\n } else {\n ch = \"\";\n }\n }\n }\n return bindings;\n }\n valueAsAccessor(value, context, globals, node) {\n if (!value) {\n return () => value;\n }\n if (typeof value === \"function\") {\n return value;\n }\n if (value[Node.isExpressionOrIdentifierSymbol]) {\n return () => Node.value_of(value, context, globals, node);\n }\n if (Array.isArray(value)) {\n return () => value.map((v) => Node.value_of(v, context, globals, node));\n }\n if (typeof value !== \"function\") {\n return () => clonePlainObjectDeep(value);\n }\n throw new Error(\"Value has cannot be converted to accessor: \" + value);\n }\n /**\n * Convert result[name] from a value to a function (i.e. `valueAccessor()`)\n * @param {object} result [Map of top-level names to values]\n * @return {object} [Map of top-level names to functions]\n *\n * Accessors may be one of (below) constAccessor, identifierAccessor,\n * expressionAccessor, or nodeAccessor.\n */\n convertToAccessors(result, context, globals, node) {\n objectForEach(result, (name, value) => {\n if (value instanceof Identifier) {\n Object.defineProperty(result, name, {\n value: function(optionalValue, options2) {\n const currentValue = value.get_value(void 0, context, globals, node);\n if (arguments.length === 0) {\n return currentValue;\n }\n const unchanged = optionalValue === currentValue;\n if (options2 && options2.onlyIfChanged && unchanged) {\n return;\n }\n return value.set_value(optionalValue, context, globals);\n }\n });\n } else {\n result[name] = this.valueAsAccessor(value, context, globals, node);\n }\n });\n return result;\n }\n preparse(source = \"\") {\n const preparsers = options.bindingStringPreparsers || [];\n return preparsers.reduce((acc, fn) => fn(acc), source.trim());\n }\n runParse(source, fn) {\n this.text = this.preparse(source);\n this.at = 0;\n this.ch = \" \";\n try {\n const result = fn();\n this.white();\n if (this.ch) {\n this.error(\"Syntax Error\");\n }\n return result;\n } catch (e) {\n options.onError(e);\n }\n }\n /**\n * Get the bindings as name: accessor()\n * @param {string} source The binding string to parse.\n * @return {object} Map of name to accessor function.\n */\n parse(source, context = {}, globals = {}, node) {\n if (!source) {\n return () => null;\n }\n this.currentContextGlobals = [context, globals, node];\n const parseFn = () => this.readBindings();\n const bindingAccessors = this.runParse(source, parseFn);\n return this.convertToAccessors(bindingAccessors, context, globals, node);\n }\n /**\n * Return a function that evaluates and returns the result of the expression.\n */\n parseExpression(source, context = {}, globals = {}, node) {\n if (!source) {\n return () => \"\";\n }\n this.currentContextGlobals = [context, globals, node];\n const parseFn = () => this.singleValueExpression(true);\n const bindingAccessors = this.runParse(source, parseFn);\n return this.valueAsAccessor(bindingAccessors, context, globals, node);\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport { stringTrim } from \"@tko/utils\";\nconst specials = \",\\\"'`{}()/:[\\\\]\";\nconst bindingToken = RegExp(\n [\n // These match strings, either with double quotes, single quotes, or backticks\n '\"(?:\\\\\\\\.|[^\"])*\"',\n \"'(?:\\\\\\\\.|[^'])*'\",\n \"`(?:\\\\\\\\.|[^`])*`\",\n // Match C style comments\n \"/\\\\*(?:[^*]|\\\\*+[^*/])*\\\\*+/\",\n // Match C++ style comments\n \"//.*\\n\",\n // Match a regular expression (text enclosed by slashes), but will also match sets of divisions\n // as a regular expression (this is handled by the parsing loop below).\n \"/(?:\\\\\\\\.|[^/])+/\\\\w*\",\n // Match text (at least two characters) that does not contain any of the above special characters,\n // although some of the special characters are allowed to start it (all but the colon and comma).\n // The text can contain spaces, but leading or trailing spaces are skipped.\n \"[^\\\\s:,/][^\" + specials + \"]*[^\\\\s\" + specials + \"]\",\n // Match any non-space character not matched already. This will match colons and commas, since they're\n // not matched by \"everyThingElse\", but will also match any other single character that wasn't already\n // matched (for example: in \"a: 1, b: 2\", each of the non-space characters will be matched by oneNotSpace).\n \"[^\\\\s]\"\n ].join(\"|\"),\n \"g\"\n);\nconst divisionLookBehind = /[\\])\"'A-Za-z0-9_$]+$/;\nconst keywordRegexLookBehind = { in: 1, return: 1, typeof: 1 };\nexport default function parseObjectLiteral(objectLiteralString) {\n let str = stringTrim(objectLiteralString);\n if (str.charCodeAt(0) === 123) str = str.slice(1, -1);\n str += \"\\n,\";\n const result = new Array();\n let toks = str.match(bindingToken);\n let key;\n let values = new Array();\n let depth = 0;\n if (toks.length <= 1) {\n return [];\n }\n for (let i = 0, tok; tok = toks[i]; ++i) {\n const c = tok.charCodeAt(0);\n if (c === 44) {\n if (depth <= 0) {\n result.push(key && values.length ? { key, value: values.join(\"\") } : { unknown: key || values.join(\"\") });\n key = depth = 0;\n values = new Array();\n continue;\n }\n } else if (c === 58) {\n if (!depth && !key && values.length === 1) {\n key = values.pop();\n continue;\n }\n } else if (c === 47 && tok.length > 1 && (tok.charCodeAt(1) === 47 || tok.charCodeAt(1) === 42)) {\n continue;\n } else if (c === 47 && i && tok.length > 1) {\n const match = toks[i - 1].match(divisionLookBehind);\n if (match && !keywordRegexLookBehind[match[0]]) {\n str = str.substr(str.indexOf(tok) + 1);\n toks = str.match(bindingToken);\n i = -1;\n tok = \"/\";\n }\n } else if (c === 40 || c === 123 || c === 91) {\n ++depth;\n } else if (c === 41 || c === 125 || c === 93) {\n --depth;\n } else if (!key && !values.length && (c === 34 || c === 39)) {\n tok = tok.slice(1, -1);\n }\n values.push(tok);\n }\n return result;\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport operators from \"./operators\";\nexport { default as Parser } from \"./Parser\";\nexport { default as Identifier } from \"./Identifier\";\nexport { default as Arguments } from \"./Arguments\";\nexport { default as Ternary } from \"./Ternary\";\nexport { default as Node } from \"./Node\";\nexport { default as parseObjectLiteral } from \"./preparse\";\nexport function overloadOperator(op, fn, precedence) {\n operators[op] = fn;\n if (Number.isInteger(precedence)) {\n operators[op].precedence = precedence;\n }\n}\n", "// @tko/computed \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport {\n addDisposeCallback,\n arrayForEach,\n createSymbolOrString,\n domNodeIsAttachedToDocument,\n extend,\n options,\n hasOwnProperty,\n objectForEach,\n options as koOptions,\n removeDisposeCallback,\n safeSetTimeout\n} from \"@tko/utils\";\nimport {\n dependencyDetection,\n extenders,\n valuesArePrimitiveAndEqual,\n observable,\n subscribable,\n LATEST_VALUE\n} from \"@tko/observable\";\nconst computedState = createSymbolOrString(\"_state\");\nconst DISPOSED_STATE = {\n dependencyTracking: null,\n dependenciesCount: 0,\n isDisposed: true,\n isStale: false,\n isDirty: false,\n isSleeping: false,\n disposeWhenNodeIsRemoved: null,\n readFunction: null,\n _options: null\n};\nexport function computed(evaluatorFunctionOrOptions, evaluatorFunctionTarget, options2) {\n if (typeof evaluatorFunctionOrOptions === \"object\") {\n options2 = evaluatorFunctionOrOptions;\n } else {\n options2 = options2 || {};\n if (evaluatorFunctionOrOptions) {\n options2.read = evaluatorFunctionOrOptions;\n }\n }\n if (typeof options2?.read !== \"function\") {\n throw Error(\"Pass a function that returns the value of the computed\");\n }\n const writeFunction = options2.write;\n const state = {\n latestValue: void 0,\n isStale: true,\n isDirty: true,\n isBeingEvaluated: false,\n suppressDisposalUntilDisposeWhenReturnsFalse: false,\n isDisposed: false,\n pure: false,\n isSleeping: false,\n readFunction: options2.read,\n evaluatorFunctionTarget: evaluatorFunctionTarget || options2.owner,\n disposeWhenNodeIsRemoved: options2.disposeWhenNodeIsRemoved || null,\n disposeWhen: options2.disposeWhen,\n domNodeDisposalCallback: null,\n dependencyTracking: {},\n dependenciesCount: 0,\n evaluationTimeoutInstance: null\n };\n function computedObservable() {\n if (arguments.length > 0) {\n if (typeof writeFunction === \"function\") {\n writeFunction.apply(state.evaluatorFunctionTarget, arguments);\n } else {\n throw new Error(\n \"Cannot write a value to a computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.\"\n );\n }\n return this;\n } else {\n if (!state.isDisposed) {\n dependencyDetection.registerDependency(computedObservable);\n }\n if (state.isDirty || state.isSleeping && computedObservable.haveDependenciesChanged()) {\n ;\n computedObservable.evaluateImmediate();\n }\n return state.latestValue;\n }\n }\n computedObservable[computedState] = state;\n computedObservable.isWriteable = typeof writeFunction === \"function\";\n subscribable.fn.init(computedObservable);\n Object.setPrototypeOf(computedObservable, computed.fn);\n if (options2.pure) {\n state.pure = true;\n state.isSleeping = true;\n extend(computedObservable, pureComputedOverrides);\n } else if (options2.deferEvaluation) {\n extend(computedObservable, deferEvaluationOverrides);\n }\n if (koOptions.deferUpdates) {\n extenders.deferred(computedObservable, true);\n }\n if (koOptions.debug) {\n computedObservable._options = options2;\n }\n if (state.disposeWhenNodeIsRemoved) {\n state.suppressDisposalUntilDisposeWhenReturnsFalse = true;\n if (!state.disposeWhenNodeIsRemoved.nodeType) {\n state.disposeWhenNodeIsRemoved = null;\n }\n }\n if (!state.isSleeping && !options2.deferEvaluation) {\n ;\n computedObservable.evaluateImmediate();\n }\n if (state.disposeWhenNodeIsRemoved && computedObservable.isActive()) {\n addDisposeCallback(\n state.disposeWhenNodeIsRemoved,\n state.domNodeDisposalCallback = function() {\n ;\n computedObservable.dispose();\n }\n );\n }\n return computedObservable;\n}\nfunction computedDisposeDependencyCallback(id, entryToDispose) {\n if (entryToDispose !== null && entryToDispose.dispose) {\n entryToDispose.dispose();\n }\n}\nfunction computedBeginDependencyDetectionCallback(subscribable2, id) {\n const computedObservable = this.computedObservable, state = computedObservable[computedState];\n if (!state.isDisposed) {\n if (this.disposalCount && this.disposalCandidates[id]) {\n computedObservable.addDependencyTracking(id, subscribable2, this.disposalCandidates[id]);\n this.disposalCandidates[id] = null;\n --this.disposalCount;\n } else if (!state.dependencyTracking[id]) {\n computedObservable.addDependencyTracking(\n id,\n subscribable2,\n state.isSleeping ? { _target: subscribable2 } : computedObservable.subscribeToDependency(subscribable2)\n );\n }\n if (subscribable2._notificationIsPending) {\n subscribable2._notifyNextChangeIfValueIsDifferent();\n }\n }\n}\ncomputed.fn = {\n equalityComparer: valuesArePrimitiveAndEqual,\n getDependenciesCount() {\n return this[computedState].dependenciesCount;\n },\n getDependencies() {\n const dependencyTracking = this[computedState].dependencyTracking;\n const dependentObservables = new Array();\n objectForEach(dependencyTracking, function(id, dependency) {\n dependentObservables[dependency._order] = dependency._target;\n });\n return dependentObservables;\n },\n addDependencyTracking(id, target, trackingObj) {\n if (this[computedState].pure && target === this) {\n throw Error(\"A 'pure' computed must not be called recursively\");\n }\n this[computedState].dependencyTracking[id] = trackingObj;\n trackingObj._order = this[computedState].dependenciesCount++;\n trackingObj._version = target.getVersion();\n },\n haveDependenciesChanged() {\n let id, dependency, dependencyTracking = this[computedState].dependencyTracking;\n for (id in dependencyTracking) {\n if (hasOwnProperty(dependencyTracking, id)) {\n dependency = dependencyTracking[id];\n if (this._evalDelayed && dependency._target._notificationIsPending || dependency._target.hasChanged(dependency._version)) {\n return true;\n }\n }\n }\n return false;\n },\n markDirty() {\n if (this._evalDelayed && !this[computedState].isBeingEvaluated) {\n this._evalDelayed(\n false\n /* notifyChange */\n );\n }\n },\n isActive() {\n const state = this[computedState];\n return state.isDirty || state.dependenciesCount > 0;\n },\n respondToChange() {\n if (!this._notificationIsPending) {\n this.evaluatePossiblyAsync();\n } else if (this[computedState].isDirty) {\n this[computedState].isStale = true;\n }\n },\n subscribeToDependency(target) {\n if (target._deferUpdates) {\n const dirtySub = target.subscribe(this.markDirty, this, \"dirty\"), changeSub = target.subscribe(this.respondToChange, this);\n return {\n _target: target,\n dispose() {\n dirtySub.dispose();\n changeSub.dispose();\n }\n };\n } else {\n return target.subscribe(this.evaluatePossiblyAsync, this);\n }\n },\n evaluatePossiblyAsync() {\n const computedObservable = this, throttleEvaluationTimeout = computedObservable.throttleEvaluation;\n if (throttleEvaluationTimeout && throttleEvaluationTimeout >= 0) {\n clearTimeout(this[computedState].evaluationTimeoutInstance);\n this[computedState].evaluationTimeoutInstance = safeSetTimeout(function() {\n computedObservable.evaluateImmediate(\n true\n /* notifyChange */\n );\n }, throttleEvaluationTimeout);\n } else if (computedObservable._evalDelayed) {\n computedObservable._evalDelayed(\n true\n /* notifyChange */\n );\n } else {\n computedObservable.evaluateImmediate(\n true\n /* notifyChange */\n );\n }\n },\n evaluateImmediate(notifyChange) {\n let computedObservable = this, state = computedObservable[computedState], disposeWhen = state.disposeWhen, changed = false;\n if (state.isBeingEvaluated) {\n return;\n }\n if (state.isDisposed) {\n return;\n }\n if (state.disposeWhenNodeIsRemoved && !domNodeIsAttachedToDocument(state.disposeWhenNodeIsRemoved) || disposeWhen && disposeWhen()) {\n if (!state.suppressDisposalUntilDisposeWhenReturnsFalse) {\n computedObservable.dispose();\n return;\n }\n } else {\n state.suppressDisposalUntilDisposeWhenReturnsFalse = false;\n }\n state.isBeingEvaluated = true;\n try {\n changed = this.evaluateImmediate_CallReadWithDependencyDetection(notifyChange);\n } finally {\n state.isBeingEvaluated = false;\n }\n return changed;\n },\n evaluateImmediate_CallReadWithDependencyDetection(notifyChange) {\n let computedObservable = this, state = computedObservable[computedState], changed = false;\n const isInitial = state.pure ? void 0 : !state.dependenciesCount, dependencyDetectionContext = {\n computedObservable,\n disposalCandidates: state.dependencyTracking,\n disposalCount: state.dependenciesCount\n };\n dependencyDetection.begin({\n callbackTarget: dependencyDetectionContext,\n callback: computedBeginDependencyDetectionCallback,\n computed: computedObservable,\n isInitial\n });\n state.dependencyTracking = {};\n state.dependenciesCount = 0;\n const newValue = this.evaluateImmediate_CallReadThenEndDependencyDetection(state, dependencyDetectionContext);\n if (!state.dependenciesCount) {\n computedObservable.dispose();\n changed = true;\n } else {\n changed = computedObservable.isDifferent(state.latestValue, newValue);\n }\n if (changed) {\n if (!state.isSleeping) {\n computedObservable.notifySubscribers(state.latestValue, \"beforeChange\");\n } else {\n computedObservable.updateVersion();\n }\n state.latestValue = newValue;\n if (options.debug) {\n computedObservable._latestValue = newValue;\n }\n computedObservable.notifySubscribers(state.latestValue, \"spectate\");\n if (!state.isSleeping && notifyChange) {\n computedObservable.notifySubscribers(state.latestValue);\n }\n if (computedObservable._recordUpdate) {\n computedObservable._recordUpdate();\n }\n }\n if (isInitial) {\n computedObservable.notifySubscribers(state.latestValue, \"awake\");\n }\n return changed;\n },\n evaluateImmediate_CallReadThenEndDependencyDetection(state, dependencyDetectionContext) {\n try {\n const readFunction = state.readFunction;\n return state.evaluatorFunctionTarget ? readFunction.call(state.evaluatorFunctionTarget) : readFunction();\n } finally {\n dependencyDetection.end();\n if (dependencyDetectionContext.disposalCount && !state.isSleeping) {\n objectForEach(dependencyDetectionContext.disposalCandidates, computedDisposeDependencyCallback);\n }\n state.isStale = state.isDirty = false;\n }\n },\n peek(forceEvaluate) {\n const state = this[computedState];\n if (state.isDirty && (forceEvaluate || !state.dependenciesCount) || state.isSleeping && this.haveDependenciesChanged()) {\n this.evaluateImmediate();\n }\n return state.latestValue;\n },\n get [LATEST_VALUE]() {\n return this.peek();\n },\n limit(limitFunction) {\n const state = this[computedState];\n subscribable.fn.limit.call(this, limitFunction);\n Object.assign(this, {\n _evalIfChanged() {\n if (!this[computedState].isSleeping) {\n if (this[computedState].isStale) {\n this.evaluateImmediate();\n } else {\n this[computedState].isDirty = false;\n }\n }\n return state.latestValue;\n },\n _evalDelayed(isChange) {\n this._limitBeforeChange(state.latestValue);\n state.isDirty = true;\n if (isChange) {\n state.isStale = true;\n }\n this._limitChange(\n this,\n !isChange\n /* isDirty */\n );\n }\n });\n },\n dispose() {\n const state = this[computedState];\n if (!state.isSleeping && state.dependencyTracking) {\n objectForEach(state.dependencyTracking, function(id, dependency) {\n if (dependency.dispose) {\n dependency.dispose();\n }\n });\n }\n if (state.disposeWhenNodeIsRemoved && state.domNodeDisposalCallback) {\n removeDisposeCallback(state.disposeWhenNodeIsRemoved, state.domNodeDisposalCallback);\n }\n Object.assign(state, DISPOSED_STATE);\n }\n};\nconst pureComputedOverrides = {\n beforeSubscriptionAdd(event) {\n const computedObservable = this, state = computedObservable[computedState];\n if (!state.isDisposed && state.isSleeping && event === \"change\") {\n state.isSleeping = false;\n if (state.isStale || computedObservable.haveDependenciesChanged()) {\n state.dependencyTracking = null;\n state.dependenciesCount = 0;\n if (computedObservable.evaluateImmediate()) {\n computedObservable.updateVersion();\n }\n } else {\n const dependenciesOrder = new Array();\n objectForEach(state.dependencyTracking, function(id, dependency) {\n dependenciesOrder[dependency._order] = id;\n });\n arrayForEach(dependenciesOrder, function(id, order) {\n const dependency = state.dependencyTracking[id], subscription = computedObservable.subscribeToDependency(dependency._target);\n subscription._order = order;\n subscription._version = dependency._version;\n state.dependencyTracking[id] = subscription;\n });\n if (computedObservable.haveDependenciesChanged()) {\n if (computedObservable.evaluateImmediate()) {\n computedObservable.updateVersion();\n }\n }\n }\n if (!state.isDisposed) {\n computedObservable.notifySubscribers(state.latestValue, \"awake\");\n }\n }\n },\n afterSubscriptionRemove(event) {\n const state = this[computedState];\n if (!state.isDisposed && event === \"change\" && !this.hasSubscriptionsForEvent(\"change\")) {\n objectForEach(state.dependencyTracking, function(id, dependency) {\n if (dependency.dispose) {\n state.dependencyTracking[id] = {\n _target: dependency._target,\n _order: dependency._order,\n _version: dependency._version\n };\n dependency.dispose();\n }\n });\n state.isSleeping = true;\n this.notifySubscribers(void 0, \"asleep\");\n }\n },\n getVersion() {\n const state = this[computedState];\n if (state.isSleeping && (state.isStale || this.haveDependenciesChanged())) {\n this.evaluateImmediate();\n }\n return subscribable.fn.getVersion.call(this);\n }\n};\nconst deferEvaluationOverrides = {\n beforeSubscriptionAdd(event) {\n if (event === \"change\" || event === \"beforeChange\") {\n this.peek();\n }\n }\n};\nObject.setPrototypeOf(computed.fn, subscribable.fn);\nconst protoProp = observable.protoProperty;\ncomputed.fn[protoProp] = computed;\nobservable.observablePrototypes.add(computed);\nexport function isComputed(instance) {\n return typeof instance === \"function\" && instance[protoProp] === computed;\n}\nexport function isPureComputed(instance) {\n return isComputed(instance) && instance[computedState] && instance[computedState].pure;\n}\nexport function pureComputed(evaluatorFunctionOrOptions, evaluatorFunctionTarget) {\n if (typeof evaluatorFunctionOrOptions === \"function\") {\n const evaluator = evaluatorFunctionOrOptions;\n return computed(evaluator, evaluatorFunctionTarget, { pure: true });\n } else {\n let options2 = evaluatorFunctionOrOptions;\n options2 = extend({}, options2);\n options2.pure = true;\n return computed(options2, evaluatorFunctionTarget);\n }\n}\n", "// @tko/computed \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { extenders as baseExtenders } from \"@tko/observable\";\nimport { computed } from \"./computed\";\nexport function throttleExtender(target, timeout) {\n target.throttleEvaluation = timeout;\n let writeTimeoutInstance = void 0;\n return computed({\n read: target,\n write: function(value) {\n clearTimeout(writeTimeoutInstance);\n writeTimeoutInstance = setTimeout(function() {\n target(value);\n }, timeout);\n }\n });\n}\nconst extenders = baseExtenders;\nextenders.throttle = throttleExtender;\n", "// @tko/computed \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { observable, observableArray, unwrap } from \"@tko/observable\";\nimport { computed } from \"./computed\";\nconst PROXY_SYM = /* @__PURE__ */ Symbol(\"Knockout Proxied Object\");\nconst MIRROR_SYM = /* @__PURE__ */ Symbol(\"Knockout Proxied Observables\");\nfunction makeComputed(proxy2, fn) {\n return computed({\n owner: proxy2,\n read: fn,\n write: fn,\n pure: \"pure\" in fn ? fn.pure : true,\n deferEvaluation: \"deferEvaluation\" in fn ? fn.deferEvaluation : true\n }).extend({ deferred: true });\n}\nfunction setOrCreate(mirror, prop, value, proxy2) {\n if (!mirror[prop]) {\n const ctr = Array.isArray(value) ? observableArray : typeof value === \"function\" ? makeComputed.bind(null, proxy2) : observable;\n mirror[prop] = ctr(value);\n } else {\n mirror[prop](value);\n }\n}\nfunction assignOrUpdate(mirror, object, proxy2) {\n for (const key of Object.keys(object)) {\n setOrCreate(mirror, key, object[key], proxy2);\n }\n return object;\n}\nexport function proxy(object) {\n const mirror = { [PROXY_SYM]: object };\n mirror[MIRROR_SYM] = mirror;\n const proxy2 = new Proxy(function() {\n }, {\n has(target, prop) {\n return prop in mirror;\n },\n get(target, prop) {\n return unwrap(mirror[prop]);\n },\n set(target, prop, value, receiver) {\n setOrCreate(mirror, prop, value, proxy2);\n object[prop] = value;\n return true;\n },\n deleteProperty(property) {\n delete mirror[property];\n return delete object[property];\n },\n apply(target, thisArg, [props]) {\n if (props) {\n assignOrUpdate(mirror, props, proxy2);\n return Object.assign(object, props);\n }\n return object;\n },\n getPrototypeOf() {\n return Object.getPrototypeOf(object);\n },\n setPrototypeOf(target, proto) {\n return Object.setPrototypeOf(object, proto);\n },\n defineProperty(target, prop, desc) {\n return Object.defineProperty(object, prop, desc);\n },\n preventExtensions() {\n return Object.preventExtensions(object);\n },\n isExtensible() {\n return Object.isExtensible(object);\n },\n ownKeys() {\n return [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n });\n assignOrUpdate(mirror, object, proxy2);\n return proxy2;\n}\nexport function getObservable(proxied, prop) {\n return proxied[MIRROR_SYM][prop];\n}\nexport function peek(proxied, prop) {\n return getObservable(proxied, prop).peek();\n}\nexport function isProxied(proxied) {\n return PROXY_SYM in proxied;\n}\nObject.assign(proxy, { getObservable, peek, isProxied });\n", "// @tko/computed \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { pureComputed } from \"./computed\";\nfunction kowhen(predicate, context, resolve) {\n const observable = pureComputed(predicate, context).extend({ notify: \"always\" });\n const subscription = observable.subscribe((value) => {\n if (value) {\n subscription.dispose();\n resolve(value);\n }\n });\n observable.notifySubscribers(observable.peek());\n return subscription;\n}\nexport function when(predicate, callback, context) {\n const whenFn = kowhen.bind(null, predicate, context);\n return callback ? whenFn(callback.bind(context)) : new Promise(whenFn);\n}\n", "// @tko/lifecycle \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { addDisposeCallback, createSymbolOrString } from \"@tko/utils\";\nimport { computed } from \"@tko/computed\";\nconst SUBSCRIPTIONS = createSymbolOrString(\"LifeCycle Subscriptions List\");\nconst ANCHOR_NODE = createSymbolOrString(\"LifeCycle Anchor Node\");\nexport default class LifeCycle {\n // NOTE: For more advanced integration as an ES6 mixin, see e.g.:\n // http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/\n /**\n * Copy the properties of the LifeCycle class to the target (or its prototype)\n *\n * NOTE: getOwnPropertyNames is needed to copy the non-enumerable properties.\n */\n static mixInto(Constructor) {\n const target = Constructor.prototype || Constructor;\n const mixin = LifeCycle.prototype;\n for (const prop of Object.getOwnPropertyNames(mixin)) {\n target[prop] = mixin[prop];\n }\n }\n subscribe(observable, action, subscriptionType) {\n if (typeof action === \"string\") {\n action = this[action];\n }\n this.addDisposable(observable.subscribe(action, this, subscriptionType));\n }\n computed(params) {\n if (typeof params === \"string\") {\n params = { read: this[params], write: this[params] };\n }\n if (typeof params === \"object\") {\n params = Object.assign({ owner: this }, params);\n } else if (typeof params === \"function\") {\n const proto = Object.getPrototypeOf(this);\n if (proto && proto[params.name] === params) {\n params = params.bind(this);\n }\n params = { read: params, write: params };\n } else {\n throw new Error(\"LifeCycle::computed not given a valid type.\");\n }\n params.disposeWhenNodeIsRemoved = this[ANCHOR_NODE];\n return this.addDisposable(computed(params));\n }\n /**\n * Add an event listener for the given or anchored node.\n * @param {node} [node] (optional) The target node (otherwise the anchored node)\n * @param {string} [type] Event type\n * @param {function|string} [action] Either call the given function or `this[action]`\n * @param {object} [options] (optional) Passed as `options` to `node.addEventListener`\n */\n addEventListener(...args) {\n const node = args[0].nodeType ? args.shift() : this[ANCHOR_NODE];\n const [type, act, options] = args;\n const handler = typeof act === \"string\" ? this[act].bind(this) : act;\n this.__addEventListener(node, type, handler, options);\n }\n __addEventListener(node, eventType, handler, options) {\n node.addEventListener(eventType, handler, options);\n function dispose() {\n node.removeEventListener(eventType, handler);\n }\n addDisposeCallback(node, dispose);\n this.addDisposable({ dispose });\n }\n anchorTo(nodeOrLifeCycle) {\n if (\"addDisposable\" in nodeOrLifeCycle) {\n nodeOrLifeCycle.addDisposable(this);\n this[ANCHOR_NODE] = null;\n } else {\n this[ANCHOR_NODE] = nodeOrLifeCycle;\n addDisposeCallback(nodeOrLifeCycle, () => this[ANCHOR_NODE] === nodeOrLifeCycle && this.dispose());\n }\n }\n dispose() {\n const subscriptions = this[SUBSCRIPTIONS] || [];\n subscriptions.forEach((s) => s.dispose());\n this[SUBSCRIPTIONS] = new Array();\n this[ANCHOR_NODE] = null;\n }\n addDisposable(subscription) {\n const subscriptions = this[SUBSCRIPTIONS] || [];\n if (!this[SUBSCRIPTIONS]) {\n this[SUBSCRIPTIONS] = subscriptions;\n }\n if (typeof subscription.dispose !== \"function\") {\n throw new Error(\"Lifecycle::addDisposable argument missing `dispose`.\");\n }\n subscriptions.push(subscription);\n return subscription;\n }\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { domData } from \"@tko/utils\";\nimport { subscribable } from \"@tko/observable\";\nexport const contextAncestorBindingInfo = /* @__PURE__ */ Symbol(\"_ancestorBindingInfo\");\nconst boundElementDomDataKey = domData.nextKey();\nexport const bindingEvent = {\n //TODO better: String-Enum \"BindingEventEnum\"\n childrenComplete: \"childrenComplete\",\n descendantsComplete: \"descendantsComplete\",\n subscribe(node, event, callback, callbackContext) {\n const bindingInfo = domData.getOrSet(node, boundElementDomDataKey, {});\n if (!bindingInfo.eventSubscribable) {\n bindingInfo.eventSubscribable = new subscribable();\n }\n return bindingInfo.eventSubscribable.subscribe(callback, callbackContext, event);\n },\n notify(node, event) {\n const bindingInfo = domData.get(node, boundElementDomDataKey);\n if (bindingInfo) {\n if (bindingInfo.eventSubscribable) {\n ;\n bindingInfo.eventSubscribable.notifySubscribers(node, event);\n }\n }\n }\n};\n", "// @tko/bind \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { extend, options, domData, isObjectLike } from \"@tko/utils\";\nimport { pureComputed } from \"@tko/computed\";\nimport { unwrap, isObservable } from \"@tko/observable\";\nimport { contextAncestorBindingInfo } from \"./bindingEvent\";\nexport const boundElementDomDataKey = domData.nextKey();\nexport const contextSubscribeSymbol = /* @__PURE__ */ Symbol(\"Knockout Context Subscription\");\nconst inheritParentIndicator = /* @__PURE__ */ Symbol(\"Knockout Parent Indicator\");\nexport const bindingContext = function bindingContextFactory(dataItemOrAccessor, parentContext, dataItemAlias, extendCallback, settings) {\n const self = this;\n const shouldInheritData = dataItemOrAccessor === inheritParentIndicator;\n const realDataItemOrAccessor = shouldInheritData ? void 0 : dataItemOrAccessor;\n const isFunc = typeof realDataItemOrAccessor === \"function\" && !isObservable(realDataItemOrAccessor);\n self.ko = options.knockoutInstance;\n let subscribable;\n function updateContext() {\n const dataItemOrObservable = isFunc ? realDataItemOrAccessor() : realDataItemOrAccessor;\n let dataItem = unwrap(dataItemOrObservable);\n if (parentContext) {\n if (parentContext[contextSubscribeSymbol]) {\n parentContext[contextSubscribeSymbol]();\n }\n extend(self, parentContext);\n if (contextAncestorBindingInfo in parentContext) {\n self[contextAncestorBindingInfo] = parentContext[contextAncestorBindingInfo];\n }\n } else {\n self.$parents = new Array();\n self.$root = dataItem;\n }\n self[contextSubscribeSymbol] = subscribable;\n if (shouldInheritData) {\n dataItem = self.$data;\n } else {\n self.$rawData = dataItemOrObservable;\n self.$data = dataItem;\n }\n if (dataItemAlias) {\n self[dataItemAlias] = dataItem;\n }\n if (extendCallback) {\n extendCallback(self, parentContext, dataItem);\n }\n return self.$data;\n }\n if (settings && settings.exportDependencies) {\n updateContext();\n } else {\n subscribable = pureComputed(updateContext);\n subscribable.peek();\n if (subscribable.isActive()) {\n self[contextSubscribeSymbol] = subscribable;\n subscribable[\"equalityComparer\"] = null;\n } else {\n self[contextSubscribeSymbol] = void 0;\n }\n }\n};\nObject.assign(bindingContext.prototype, {\n lookup(token, globals, node) {\n switch (token) {\n case \"$element\":\n return node;\n case \"$context\":\n return this;\n case \"this\":\n case \"$data\":\n return this.$data;\n }\n const $data = this.$data;\n if (isObjectLike($data) && token in $data) {\n return $data[token];\n }\n if (token in this) {\n return this[token];\n }\n if (token in globals) {\n return globals[token];\n }\n throw new Error(`The variable \"${token}\" was not found on $data, $context, or globals.`);\n },\n // Extend the binding context hierarchy with a new view model object. If the parent context is watching\n // any observables, the new child context will automatically get a dependency on the parent context.\n // But this does not mean that the $data value of the child context will also get updated. If the child\n // view model also depends on the parent view model, you must provide a function that returns the correct\n // view model on each update.\n createChildContext(dataItemOrAccessor, dataItemAlias, extendCallback, settings) {\n return new bindingContext(\n dataItemOrAccessor,\n this,\n dataItemAlias,\n function(self, parentContext) {\n self.$parentContext = parentContext;\n self.$parent = parentContext?.$data;\n self.$parents = (parentContext?.$parents ?? []).slice(0);\n self.$parents.unshift(self.$parent);\n if (extendCallback) {\n extendCallback(self);\n }\n },\n settings\n );\n },\n // Extend the binding context with new custom properties. This doesn't change the context hierarchy.\n // Similarly to \"child\" contexts, provide a function here to make sure that the correct values are set\n // when an observable view model is updated.\n extend(properties) {\n return new bindingContext(inheritParentIndicator, this, void 0, function(self, parentContext) {\n extend(self, typeof properties === \"function\" ? properties.call(self) : properties);\n });\n },\n createStaticChildContext(dataItemOrAccessor, dataItemAlias) {\n return this.createChildContext(dataItemOrAccessor, dataItemAlias, null, { exportDependencies: true });\n }\n});\nexport function storedBindingContextForNode(node) {\n const bindingInfo = domData.get(node, boundElementDomDataKey);\n return bindingInfo && bindingInfo.context;\n}\nexport function contextFor(node) {\n if (node && (node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.COMMENT_NODE)) {\n return storedBindingContextForNode(node);\n }\n}\nexport function dataFor(node) {\n const context = contextFor(node);\n return context ? context.$data : void 0;\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nexport class BindingResult {\n constructor({ asyncBindingsApplied, rootNode, bindingContext }) {\n this.rootNode = rootNode;\n this.bindingContext = bindingContext;\n this.isSync = asyncBindingsApplied.size === 0;\n this.isComplete = this.isSync;\n if (!this.isSync) {\n this.completionPromise = this.completeWhenBindingsFinish(asyncBindingsApplied);\n }\n }\n async completeWhenBindingsFinish(asyncBindingsApplied) {\n await Promise.all(asyncBindingsApplied);\n this.isComplete = true;\n return this;\n }\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { options } from \"@tko/utils\";\nimport { isWriteableObservable } from \"@tko/observable\";\nimport { LifeCycle } from \"@tko/lifecycle\";\nexport class BindingHandler extends LifeCycle {\n constructor(params) {\n super();\n const { $element, valueAccessor, allBindings, $context } = params;\n this.$element = $element;\n this.valueAccessor = valueAccessor;\n this.allBindings = allBindings;\n this.$context = $context;\n this.$data = $context.$data;\n this.anchorTo($element);\n }\n get value() {\n return this.valueAccessor();\n }\n set value(v) {\n const va = this.valueAccessor();\n if (isWriteableObservable(va)) {\n va(v);\n } else {\n this.valueAccessor(v);\n }\n }\n get controlsDescendants() {\n return false;\n }\n static get allowVirtualElements() {\n return false;\n }\n static get isBindingHandlerClass() {\n return true;\n }\n /* Overload this for asynchronous bindings or bindings that recursively\n apply bindings (e.g. components, foreach, template).\n \n A binding should be complete when it has run through once, notably\n in server-side bindings for pre-rendering.\n */\n get bindingCompleted() {\n return true;\n }\n static registerAs(name, provider = options.bindingProviderInstance) {\n provider.bindingHandlers.set(name, this);\n }\n static registerBindingHandler(handler, name, provider = options.bindingProviderInstance) {\n provider.bindingHandlers.set(name, handler);\n }\n}\nconst ResolveSymbol = /* @__PURE__ */ Symbol(\"Async Binding Resolved\");\nexport class AsyncBindingHandler extends BindingHandler {\n constructor(params) {\n super(params);\n this.bindingCompletion = new Promise((resolve) => {\n this[ResolveSymbol] = resolve;\n });\n this.completeBinding = (bindingResult) => this[ResolveSymbol](bindingResult);\n }\n get bindingCompleted() {\n return this.bindingCompletion;\n }\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { virtualElements, options } from \"@tko/utils\";\nimport { BindingHandler } from \"./BindingHandler\";\nconst PossibleWeakMap = options.global.WeakMap || Map;\nconst legacyBindingMap = new PossibleWeakMap();\nexport class LegacyBindingHandler extends BindingHandler {\n get handler() {\n return void 0;\n }\n constructor(params) {\n super(params);\n const handler = this.handler;\n this.onError = params.onError;\n if (typeof handler.dispose === \"function\") {\n this.addDisposable(handler);\n }\n try {\n this.initReturn = handler.init && handler.init(...this.legacyArgs);\n } catch (e) {\n params.onError(\"init\", e);\n }\n }\n onValueChange() {\n const handler = this.handler;\n if (typeof handler.update !== \"function\") {\n return;\n }\n try {\n handler.update(...this.legacyArgs);\n } catch (e) {\n this.onError(\"update\", e);\n }\n }\n get legacyArgs() {\n return [this.$element, this.valueAccessor, this.allBindings, this.$data, this.$context];\n }\n get controlsDescendants() {\n const objectToTest = this.initReturn || this.handler || {};\n return objectToTest.controlsDescendantBindings;\n }\n /**\n * Create a handler instance from the `origin`, which may be:\n *\n * 1. an object (becomes LegacyBindingHandler)\n * 2. a function (becomes LegacyBindingHandler with `init: function`)\n *\n * If given an object (the only kind supported in knockout 3.x and before), it\n * shall draw the `init`, `update`, and `allowVirtualElements` properties\n */\n static getOrCreateFor(key, handler) {\n if (legacyBindingMap.has(handler)) {\n return legacyBindingMap.get(handler);\n }\n const newLegacyHandler = this.createFor(key, handler);\n legacyBindingMap.set(handler, newLegacyHandler);\n return newLegacyHandler;\n }\n static createFor(key, handler) {\n if (typeof handler === \"function\") {\n const [initFn, disposeFn] = [handler, handler.dispose];\n return class extends LegacyBindingHandler {\n get handler() {\n const init = initFn.bind(this);\n const dispose = disposeFn ? disposeFn.bind(this) : null;\n return { init, dispose };\n }\n static get after() {\n return handler.after;\n }\n static get allowVirtualElements() {\n return handler.allowVirtualElements || virtualElements.allowedBindings[key];\n }\n };\n }\n if (typeof handler === \"object\") {\n return class extends LegacyBindingHandler {\n get handler() {\n return handler;\n }\n static get after() {\n return handler.after;\n }\n static get allowVirtualElements() {\n return handler.allowVirtualElements || virtualElements.allowedBindings[key];\n }\n };\n }\n throw new Error(\"The given handler is not an appropriate type.\");\n }\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport {\n extend,\n objectMap,\n virtualElements,\n tagNameLower,\n domData,\n objectForEach,\n arrayIndexOf,\n arrayForEach,\n options\n} from \"@tko/utils\";\nimport { dependencyDetection } from \"@tko/observable\";\nimport { computed } from \"@tko/computed\";\nimport { dataFor, bindingContext, boundElementDomDataKey, contextSubscribeSymbol } from \"./bindingContext\";\nimport { bindingEvent } from \"./bindingEvent\";\nimport { BindingResult } from \"./BindingResult\";\nimport { LegacyBindingHandler } from \"./LegacyBindingHandler\";\nconst bindingDoesNotRecurseIntoElementTypes = {\n // Don't want bindings that operate on text nodes to mutate <script> and <textarea> contents,\n // because it's unexpected and a potential XSS issue.\n // Also bindings should not operate on <template> elements since this breaks in Internet Explorer\n // and because such elements' contents are always intended to be bound in a different context\n // from where they appear in the document.\n script: true,\n textarea: true,\n template: true\n};\nfunction getBindingProvider() {\n return options.bindingProviderInstance.instance || options.bindingProviderInstance;\n}\nfunction isProviderForNode(provider, node) {\n const nodeTypes = provider.FOR_NODE_TYPES || [Node.ELEMENT_NODE, Node.TEXT_NODE, Node.COMMENT_NODE];\n return nodeTypes.includes(node.nodeType);\n}\nfunction asProperHandlerClass(handler, bindingKey) {\n if (!handler) {\n return;\n }\n return handler.isBindingHandlerClass ? handler : LegacyBindingHandler.getOrCreateFor(bindingKey, handler);\n}\nfunction getBindingHandlerFromComponent(bindingKey, $component) {\n if (!$component || typeof $component.getBindingHandler !== \"function\") {\n return;\n }\n return asProperHandlerClass($component.getBindingHandler(bindingKey));\n}\nexport function getBindingHandler(bindingKey) {\n const bindingDefinition = options.getBindingHandler(bindingKey) || getBindingProvider().bindingHandlers.get(bindingKey);\n return asProperHandlerClass(bindingDefinition, bindingKey);\n}\nfunction evaluateValueAccessor(valueAccessor) {\n return valueAccessor();\n}\nfunction applyBindingsToDescendantsInternal(bindingContext2, elementOrVirtualElement, asyncBindingsApplied) {\n let nextInQueue = virtualElements.firstChild(elementOrVirtualElement);\n if (!nextInQueue) {\n return;\n }\n let currentChild;\n const provider = getBindingProvider();\n const preprocessNode = provider.preprocessNode;\n if (preprocessNode) {\n while (currentChild = nextInQueue) {\n nextInQueue = virtualElements.nextSibling(currentChild);\n preprocessNode.call(provider, currentChild);\n }\n nextInQueue = virtualElements.firstChild(elementOrVirtualElement);\n }\n while (currentChild = nextInQueue) {\n nextInQueue = virtualElements.nextSibling(currentChild);\n applyBindingsToNodeAndDescendantsInternal(bindingContext2, currentChild, asyncBindingsApplied);\n }\n bindingEvent.notify(elementOrVirtualElement, bindingEvent.childrenComplete);\n}\nfunction hasBindings(node) {\n const provider = getBindingProvider();\n return isProviderForNode(provider, node) && provider.nodeHasBindings(node);\n}\nfunction nodeOrChildHasBindings(node) {\n return hasBindings(node) || [...node.childNodes].some((c) => nodeOrChildHasBindings(c));\n}\nfunction applyBindingsToNodeAndDescendantsInternal(bindingContext2, nodeVerified, asyncBindingsApplied) {\n const isElement = nodeVerified.nodeType === Node.ELEMENT_NODE;\n if (isElement) {\n virtualElements.normaliseVirtualElementDomStructure(nodeVerified);\n }\n const shouldApplyBindings = isElement || hasBindings(nodeVerified);\n const { shouldBindDescendants } = shouldApplyBindings ? applyBindingsToNodeInternal(nodeVerified, null, bindingContext2, asyncBindingsApplied) : { shouldBindDescendants: true };\n if (shouldBindDescendants && !bindingDoesNotRecurseIntoElementTypes[tagNameLower(nodeVerified)]) {\n applyBindingsToDescendantsInternal(bindingContext2, nodeVerified, asyncBindingsApplied);\n }\n}\nfunction* topologicalSortBindings(bindings, $component) {\n const results = [];\n const bindingsConsidered = {};\n const cyclicDependencyStack = new Array();\n objectForEach(bindings, function pushBinding(bindingKey) {\n if (!bindingsConsidered[bindingKey]) {\n const binding = getBindingHandlerFromComponent(bindingKey, $component) || getBindingHandler(bindingKey);\n if (!binding) {\n return;\n }\n if (binding.after) {\n cyclicDependencyStack.push(bindingKey);\n arrayForEach(binding.after, function(bindingDependencyKey) {\n if (!bindings[bindingDependencyKey]) {\n return;\n }\n if (arrayIndexOf(cyclicDependencyStack, bindingDependencyKey) !== -1) {\n throw Error(\n \"Cannot combine the following bindings, because they have a cyclic dependency: \" + cyclicDependencyStack.join(\", \")\n );\n } else {\n pushBinding(bindingDependencyKey);\n }\n });\n cyclicDependencyStack.length--;\n }\n results.push([bindingKey, binding]);\n }\n bindingsConsidered[bindingKey] = true;\n });\n for (const result of results) {\n yield result;\n }\n}\nfunction applyBindingsToNodeInternal(node, sourceBindings, bindingContext2, asyncBindingsApplied) {\n const bindingInfo = domData.getOrSet(node, boundElementDomDataKey, {});\n const alreadyBound = bindingInfo.alreadyBound;\n if (!sourceBindings) {\n if (alreadyBound) {\n if (!nodeOrChildHasBindings(node)) {\n return false;\n }\n onBindingError({\n during: \"apply\",\n errorCaptured: new Error(\"You cannot apply bindings multiple times to the same element.\"),\n element: node,\n bindingContext: bindingContext2\n });\n return false;\n }\n bindingInfo.alreadyBound = true;\n }\n if (!alreadyBound) {\n bindingInfo.context = bindingContext2;\n }\n let bindings = null;\n let bindingsUpdater = null;\n if (sourceBindings && typeof sourceBindings !== \"function\") {\n bindings = sourceBindings;\n } else {\n const provider = getBindingProvider();\n const getBindings = provider.getBindingAccessors;\n if (isProviderForNode(provider, node)) {\n bindingsUpdater = computed(\n function() {\n bindings = sourceBindings ? sourceBindings(bindingContext2, node) : getBindings.call(provider, node, bindingContext2);\n if (bindings && bindingContext2[contextSubscribeSymbol]) {\n bindingContext2[contextSubscribeSymbol]();\n }\n return bindings;\n },\n null,\n { disposeWhenNodeIsRemoved: node }\n );\n if (!bindings || !bindingsUpdater.isActive()) {\n bindingsUpdater = null;\n }\n }\n }\n let bindingHandlerThatControlsDescendantBindings;\n if (bindings) {\n const $component = bindingContext2.$component || {};\n const allBindingHandlers = {};\n domData.set(node, \"bindingHandlers\", allBindingHandlers);\n const getValueAccessor = bindingsUpdater ? (bindingKey) => function(optionalValue) {\n const valueAccessor = bindingsUpdater()[bindingKey];\n if (arguments.length === 0) {\n return evaluateValueAccessor(valueAccessor);\n } else {\n return valueAccessor(optionalValue);\n }\n } : (bindingKey) => bindings[bindingKey];\n const allBindings = function() {\n return objectMap(bindingsUpdater ? bindingsUpdater() : bindings, evaluateValueAccessor);\n };\n allBindings.has = (key) => key in bindings;\n allBindings.get = (key) => bindings[key] && evaluateValueAccessor(getValueAccessor(key));\n if (bindingEvent.childrenComplete in bindings) {\n bindingEvent.subscribe(\n node,\n bindingEvent.childrenComplete,\n () => {\n const callback = evaluateValueAccessor(bindings[bindingEvent.childrenComplete]);\n if (!callback) {\n return;\n }\n const nodes = virtualElements.childNodes(node);\n if (nodes.length) {\n callback(nodes, dataFor(nodes[0]));\n }\n },\n null\n );\n }\n const bindingsGenerated = topologicalSortBindings(bindings, $component);\n const nodeAsyncBindingPromises = /* @__PURE__ */ new Set();\n for (const [key, BindingHandlerClass] of bindingsGenerated) {\n const reportBindingError = function(during, errorCaptured) {\n onBindingError({\n during,\n errorCaptured,\n bindings,\n allBindings,\n bindingKey: key,\n bindingContext: bindingContext2,\n element: node,\n valueAccessor: getValueAccessor(key)\n });\n };\n if (node.nodeType === Node.COMMENT_NODE && !BindingHandlerClass.allowVirtualElements) {\n throw new Error(`The binding '${key}' cannot be used with virtual elements`);\n }\n try {\n const bindingHandler = dependencyDetection.ignore(\n () => new BindingHandlerClass({\n allBindings,\n $element: node,\n $context: bindingContext2,\n onError: reportBindingError,\n valueAccessor(...v) {\n return getValueAccessor(key)(...v);\n }\n })\n );\n if (bindingHandler.onValueChange) {\n dependencyDetection.ignore(() => bindingHandler.computed(\"onValueChange\"));\n }\n allBindingHandlers[key] = bindingHandler;\n if (bindingHandler.controlsDescendants) {\n if (bindingHandlerThatControlsDescendantBindings !== void 0) {\n throw new Error(\n \"Multiple bindings (\" + bindingHandlerThatControlsDescendantBindings + \" and \" + key + \") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.\"\n );\n }\n bindingHandlerThatControlsDescendantBindings = key;\n }\n if (bindingHandler.bindingCompleted instanceof Promise) {\n asyncBindingsApplied.add(bindingHandler.bindingCompleted);\n nodeAsyncBindingPromises.add(bindingHandler.bindingCompleted);\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n reportBindingError(\"creation\", error);\n }\n }\n triggerDescendantsComplete(node, bindings, nodeAsyncBindingPromises);\n }\n const shouldBindDescendants = bindingHandlerThatControlsDescendantBindings === void 0;\n return { shouldBindDescendants };\n}\nfunction triggerDescendantsComplete(node, bindings, nodeAsyncBindingPromises) {\n const hasBindingHandler = bindingEvent.descendantsComplete in bindings;\n const hasFirstChild = virtualElements.firstChild(node);\n const accessor = hasBindingHandler && evaluateValueAccessor(bindings[bindingEvent.descendantsComplete]);\n const callback = () => {\n bindingEvent.notify(node, bindingEvent.descendantsComplete);\n if (accessor && hasFirstChild) {\n accessor(node);\n }\n };\n if (nodeAsyncBindingPromises.size) {\n Promise.all(nodeAsyncBindingPromises).then(callback);\n } else {\n callback();\n }\n}\nfunction getBindingContext(viewModelOrBindingContext, extendContextCallback) {\n return viewModelOrBindingContext && viewModelOrBindingContext instanceof bindingContext ? viewModelOrBindingContext : new bindingContext(viewModelOrBindingContext, void 0, void 0, extendContextCallback);\n}\nexport function applyBindingAccessorsToNode(node, bindings, viewModelOrBindingContext, asyncBindingsApplied) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n virtualElements.normaliseVirtualElementDomStructure(node);\n }\n return applyBindingsToNodeInternal(\n node,\n bindings,\n getBindingContext(viewModelOrBindingContext),\n asyncBindingsApplied\n );\n}\nexport function applyBindingsToNode(node, bindings, viewModelOrBindingContext) {\n const asyncBindingsApplied = /* @__PURE__ */ new Set();\n const bindingContext2 = getBindingContext(viewModelOrBindingContext);\n const bindingAccessors = getBindingProvider().makeBindingAccessors(bindings, bindingContext2, node);\n applyBindingAccessorsToNode(node, bindingAccessors, bindingContext2, asyncBindingsApplied);\n return new BindingResult({ asyncBindingsApplied, rootNode: node, bindingContext: bindingContext2 });\n}\nexport function applyBindingsToDescendants(viewModelOrBindingContext, rootNode) {\n const asyncBindingsApplied = /* @__PURE__ */ new Set();\n const bindingContext2 = getBindingContext(viewModelOrBindingContext);\n if (rootNode.nodeType === Node.ELEMENT_NODE || rootNode.nodeType === Node.COMMENT_NODE) {\n applyBindingsToDescendantsInternal(bindingContext2, rootNode, asyncBindingsApplied);\n return new BindingResult({ asyncBindingsApplied, rootNode, bindingContext: bindingContext2 });\n }\n return new BindingResult({ asyncBindingsApplied, rootNode, bindingContext: bindingContext2 });\n}\nexport function applyBindings(viewModelOrBindingContext, rootNode, extendContextCallback) {\n const asyncBindingsApplied = /* @__PURE__ */ new Set();\n if (!rootNode) {\n rootNode = window.document.body;\n if (!rootNode) {\n throw Error(\"ko.applyBindings: could not find window.document.body; has the document been loaded?\");\n }\n } else if (rootNode.nodeType !== Node.ELEMENT_NODE && rootNode.nodeType !== Node.COMMENT_NODE) {\n throw Error(\"ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node\");\n }\n const rootContext = getBindingContext(viewModelOrBindingContext, extendContextCallback);\n applyBindingsToNodeAndDescendantsInternal(rootContext, rootNode, asyncBindingsApplied);\n return Promise.all(asyncBindingsApplied);\n}\nfunction onBindingError(spec) {\n let error;\n if (spec.bindingKey) {\n error = spec.errorCaptured;\n spec.message = 'Unable to process binding \"' + spec.bindingKey + '\" in binding \"' + spec.bindingKey + '\"\\nMessage: ' + (error.message ? error.message : error);\n } else {\n error = spec.errorCaptured;\n }\n try {\n extend(error, spec);\n } catch (e) {\n spec.stack = error.stack;\n const message = error.message || String(error);\n const originalName = error.name;\n error = new Error(message);\n if (originalName && originalName !== \"Error\") {\n error.name = originalName;\n }\n extend(error, spec);\n }\n options.onError(error);\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport {\n fixUpContinuousNodeArray,\n replaceDomNodes,\n arrayPushAll,\n anyDomNodeIsAttachedToDocument,\n domData,\n arrayMap,\n arrayForEach,\n virtualElements,\n extend,\n cleanNode,\n removeNode,\n compareArrays\n} from \"@tko/utils\";\nimport { dependencyDetection, observable } from \"@tko/observable\";\nimport { computed } from \"@tko/computed\";\nfunction mapNodeAndRefreshWhenChanged(containerNode, mapping, valueToMap, callbackAfterAddingNodes, index) {\n const mappedNodes = [];\n const dependentObservable = computed(\n function() {\n const newMappedNodes = mapping(valueToMap, index, fixUpContinuousNodeArray(mappedNodes, containerNode)) || [];\n if (mappedNodes.length > 0) {\n replaceDomNodes(mappedNodes, newMappedNodes);\n if (callbackAfterAddingNodes) {\n dependencyDetection.ignore(callbackAfterAddingNodes, null, [valueToMap, newMappedNodes, index]);\n }\n }\n mappedNodes.length = 0;\n arrayPushAll(mappedNodes, newMappedNodes);\n },\n null,\n {\n disposeWhenNodeIsRemoved: containerNode,\n disposeWhen: function() {\n return !anyDomNodeIsAttachedToDocument(mappedNodes);\n }\n }\n );\n return {\n mappedNodes,\n dependentObservable: dependentObservable.isActive() ? dependentObservable : void 0\n };\n}\nconst lastMappingResultDomDataKey = domData.nextKey();\nconst deletedItemDummyValue = domData.nextKey();\nexport function setDomNodeChildrenFromArrayMapping(domNode, array, mapping, options, callbackAfterAddingNodes, editScript) {\n array = array || [];\n if (typeof array.length === \"undefined\") {\n array = [array];\n }\n options = options || {};\n const lastMappingResult = domData.get(domNode, lastMappingResultDomDataKey);\n const isFirstExecution = !lastMappingResult;\n const newMappingResult = new Array();\n let lastMappingResultIndex = 0;\n let newMappingResultIndex = 0;\n const nodesToDelete = [];\n const itemsToProcess = [];\n const itemsForBeforeRemoveCallbacks = [];\n const itemsForMoveCallbacks = [];\n const itemsForAfterAddCallbacks = [];\n let mapData;\n let countWaitingForRemove = 0;\n function itemAdded(value) {\n mapData = { arrayEntry: value, indexObservable: observable(newMappingResultIndex++) };\n newMappingResult.push(mapData);\n itemsToProcess.push(mapData);\n if (!isFirstExecution) {\n itemsForAfterAddCallbacks.push(mapData);\n }\n }\n function itemMovedOrRetained(oldPosition) {\n mapData = lastMappingResult[oldPosition];\n if (newMappingResultIndex !== oldPosition) {\n itemsForMoveCallbacks.push(mapData);\n }\n mapData.indexObservable(newMappingResultIndex++);\n fixUpContinuousNodeArray(mapData.mappedNodes, domNode);\n newMappingResult.push(mapData);\n itemsToProcess.push(mapData);\n }\n function callCallback(callback, items) {\n if (callback) {\n for (let i = 0, n = items.length; i < n; i++) {\n arrayForEach(items[i].mappedNodes, function(node) {\n callback(node, i, items[i].arrayEntry);\n });\n }\n }\n }\n if (isFirstExecution) {\n arrayForEach(array, itemAdded);\n } else {\n if (!editScript || lastMappingResult && lastMappingResult[\"_countWaitingForRemove\"]) {\n const lastArray = arrayMap(lastMappingResult, function(x) {\n return x.arrayEntry;\n });\n const compareOptions = { dontLimitMoves: options.dontLimitMoves, sparse: true };\n editScript = compareArrays(lastArray, array, compareOptions);\n }\n for (let i = 0, editScriptItem, movedIndex, itemIndex; editScriptItem = editScript[i]; i++) {\n movedIndex = editScriptItem[\"moved\"];\n itemIndex = editScriptItem[\"index\"];\n switch (editScriptItem[\"status\"]) {\n case \"deleted\":\n while (lastMappingResultIndex < itemIndex) {\n itemMovedOrRetained(lastMappingResultIndex++);\n }\n if (movedIndex === void 0) {\n mapData = lastMappingResult[lastMappingResultIndex];\n if (mapData.dependentObservable) {\n mapData.dependentObservable.dispose();\n mapData.dependentObservable = void 0;\n }\n if (fixUpContinuousNodeArray(mapData.mappedNodes, domNode).length) {\n if (options.beforeRemove) {\n newMappingResult.push(mapData);\n itemsToProcess.push(mapData);\n countWaitingForRemove++;\n if (mapData.arrayEntry === deletedItemDummyValue) {\n mapData = null;\n } else {\n itemsForBeforeRemoveCallbacks.push(mapData);\n }\n }\n if (mapData?.mappedNodes) {\n nodesToDelete.push.apply(nodesToDelete, mapData.mappedNodes);\n }\n }\n }\n lastMappingResultIndex++;\n break;\n case \"added\":\n while (newMappingResultIndex < itemIndex) {\n itemMovedOrRetained(lastMappingResultIndex++);\n }\n if (movedIndex !== void 0) {\n itemMovedOrRetained(movedIndex);\n } else {\n itemAdded(editScriptItem[\"value\"]);\n }\n break;\n }\n }\n while (newMappingResultIndex < array.length) {\n itemMovedOrRetained(lastMappingResultIndex++);\n }\n newMappingResult[\"_countWaitingForRemove\"] = countWaitingForRemove;\n }\n domData.set(domNode, lastMappingResultDomDataKey, newMappingResult);\n callCallback(options.beforeMove, itemsForMoveCallbacks);\n arrayForEach(nodesToDelete, options.beforeRemove ? cleanNode : removeNode);\n for (let k = 0, nextNode = virtualElements.firstChild(domNode), lastNode, node; mapData = itemsToProcess[k]; k++) {\n if (!mapData.mappedNodes) {\n extend(\n mapData,\n mapNodeAndRefreshWhenChanged(\n domNode,\n mapping,\n mapData.arrayEntry,\n callbackAfterAddingNodes,\n mapData.indexObservable\n )\n );\n }\n for (let j = 0; node = mapData.mappedNodes[j]; nextNode = node.nextSibling, lastNode = node, j++) {\n if (node !== nextNode) {\n virtualElements.insertAfter(domNode, node, lastNode);\n }\n }\n if (!mapData.initialized && callbackAfterAddingNodes) {\n callbackAfterAddingNodes(mapData.arrayEntry, mapData.mappedNodes, mapData.indexObservable);\n mapData.initialized = true;\n }\n }\n callCallback(options.beforeRemove, itemsForBeforeRemoveCallbacks);\n for (let x = 0; x < itemsForBeforeRemoveCallbacks.length; ++x) {\n itemsForBeforeRemoveCallbacks[x].arrayEntry = deletedItemDummyValue;\n }\n callCallback(options.afterMove, itemsForMoveCallbacks);\n callCallback(options.afterAdd, itemsForAfterAddCallbacks);\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { applyBindingsToDescendants } from \"./applyBindings\";\nimport { AsyncBindingHandler } from \"./BindingHandler\";\nexport class DescendantBindingHandler extends AsyncBindingHandler {\n get controlsDescendants() {\n return true;\n }\n async applyBindingsToDescendants(childContext, callback) {\n const bindingResult = applyBindingsToDescendants(childContext, this.$element);\n if (bindingResult.isSync) {\n this.bindingCompletion = bindingResult;\n } else {\n await bindingResult.completionPromise;\n }\n if (callback) {\n callback(bindingResult);\n }\n this.completeBinding(bindingResult);\n }\n}\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { tagNameLower as tagNameLowerFn, setHtml, domData, parseHtmlForTemplateNodes } from \"@tko/utils\";\nconst templateScript = 1, templateTextArea = 2, templateTemplate = 3, templateElement = 4, templateAnonymous = 5;\nconst dataDomDataPrefix = domData.nextKey() + \"_\";\nconst templatesDomDataKey = domData.nextKey();\nfunction getTemplateDomData(element) {\n return domData.get(element, templatesDomDataKey) || {};\n}\nfunction setTemplateDomData(element, data) {\n domData.set(element, templatesDomDataKey, data);\n}\nexport class domElement {\n constructor(element) {\n this.domElement = element;\n if (element.nodeType === Node.COMMENT_NODE) {\n this.templateType = templateElement;\n } else {\n const tagNameLower = tagNameLowerFn(this.domElement);\n this.templateType = tagNameLower === \"script\" ? templateScript : tagNameLower === \"textarea\" ? templateTextArea : (\n // For browsers with proper <template> element support, where the .content property gives a document fragment\n tagNameLower == \"template\" && element.content && element.content.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? templateTemplate : templateElement\n );\n }\n }\n text(valueToWrite) {\n const elemContentsProperty = this.templateType === templateScript ? \"text\" : this.templateType === templateTextArea ? \"value\" : \"innerHTML\";\n if (arguments.length == 0) {\n return this.domElement[elemContentsProperty];\n } else {\n if (elemContentsProperty === \"innerHTML\") {\n setHtml(this.domElement, valueToWrite);\n } else {\n this.domElement[elemContentsProperty] = valueToWrite;\n }\n }\n }\n data(key, valueToWrite) {\n if (arguments.length === 1) {\n return domData.get(this.domElement, dataDomDataPrefix + key);\n } else {\n domData.set(this.domElement, dataDomDataPrefix + key, valueToWrite);\n }\n }\n nodes(valueToWrite) {\n const element = this.domElement;\n if (arguments.length == 0) {\n const templateData = getTemplateDomData(element);\n let nodes = templateData.containerData || (this.templateType === templateTemplate ? element.content : this.templateType === templateElement ? element : void 0);\n if (!nodes || templateData.alwaysCheckText) {\n const text = this.text();\n if (text) {\n nodes = parseHtmlForTemplateNodes(text, element.ownerDocument);\n this.text(\"\");\n setTemplateDomData(element, { containerData: nodes, alwaysCheckText: true });\n }\n }\n return nodes;\n } else {\n setTemplateDomData(element, { containerData: valueToWrite });\n }\n return void 0;\n }\n}\nexport class anonymousTemplate extends domElement {\n constructor(element) {\n super(element);\n this.templateType = templateAnonymous;\n }\n text(valueToWrite) {\n if (arguments.length == 0) {\n const templateData = getTemplateDomData(this.domElement);\n if (templateData.textData === void 0 && templateData.containerData) {\n templateData.textData = templateData.containerData.innerHTML;\n }\n return templateData.textData;\n } else {\n setTemplateDomData(this.domElement, { textData: valueToWrite });\n }\n }\n}\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { extend, options } from \"@tko/utils\";\nimport { domElement, anonymousTemplate } from \"./templateSources\";\nexport function templateEngine() {\n}\nextend(templateEngine.prototype, {\n renderTemplateSource(templateSource, bindingContext, options2, templateDocument) {\n options2.onError(\"Override renderTemplateSource\");\n },\n createJavaScriptEvaluatorBlock(script) {\n options.onError(new Error(\"Override createJavaScriptEvaluatorBlock\"));\n },\n makeTemplateSource(template, templateDocument) {\n if (typeof template === \"string\") {\n templateDocument = templateDocument || document;\n const elem = templateDocument.getElementById(template);\n if (!elem) {\n throw options.onError(new Error(\"Cannot find template with ID \" + template), false);\n }\n return new domElement(elem);\n } else if (template.nodeType === Node.ELEMENT_NODE) {\n return new anonymousTemplate(template);\n } else if (template.nodeType === Node.COMMENT_NODE) {\n return new anonymousTemplate(template);\n } else {\n throw options.onError(new Error(\"Unknown template type: \" + template), false);\n }\n },\n renderTemplate(template, bindingContext, options2, templateDocument) {\n const templateSource = this.makeTemplateSource(template, templateDocument);\n return this.renderTemplateSource(templateSource, bindingContext, options2, templateDocument);\n }\n});\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport {\n virtualElements,\n fixUpContinuousNodeArray,\n replaceDomNodes,\n memoization,\n domNodeIsAttachedToDocument,\n moveCleanedNodesToContainerElement,\n arrayFilter,\n domData,\n options as koOptions\n} from \"@tko/utils\";\nimport {\n applyBindings,\n setDomNodeChildrenFromArrayMapping,\n AsyncBindingHandler,\n bindingEvent,\n bindingContext as BindingContextConstructor\n} from \"@tko/bind\";\nimport { computed } from \"@tko/computed\";\nimport { isObservable, dependencyDetection, unwrap, observable, isObservableArray } from \"@tko/observable\";\nimport { templateEngine } from \"./templateEngine\";\nimport { anonymousTemplate as AnonymousTemplate } from \"./templateSources\";\nlet _templateEngine;\nconst cleanContainerDomDataKey = domData.nextKey();\nexport function setTemplateEngine(tEngine) {\n if (tEngine !== void 0 && !(tEngine instanceof templateEngine)) {\n throw new Error(\"templateEngine must inherit from ko.templateEngine\");\n }\n _templateEngine = tEngine;\n}\nfunction invokeForEachNodeInContinuousRange(firstNode, lastNode, action) {\n let node;\n let nextInQueue = firstNode;\n const firstOutOfRangeNode = virtualElements.nextSibling(lastNode);\n while (nextInQueue && (node = nextInQueue) !== firstOutOfRangeNode) {\n nextInQueue = virtualElements.nextSibling(node);\n action(node, nextInQueue);\n }\n}\nfunction activateBindingsOnContinuousNodeArray(continuousNodeArray, bindingContext, afterBindingCallback) {\n if (continuousNodeArray.length) {\n let firstNode = continuousNodeArray[0];\n let lastNode = continuousNodeArray[continuousNodeArray.length - 1];\n const parentNode = firstNode.parentNode;\n const provider = koOptions.bindingProviderInstance;\n const preprocessNode = provider.preprocessNode;\n if (preprocessNode) {\n invokeForEachNodeInContinuousRange(firstNode, lastNode, function(node, nextNodeInRange) {\n const nodePreviousSibling = node.previousSibling;\n const newNodes = preprocessNode.call(provider, node);\n if (newNodes) {\n if (node === firstNode) {\n firstNode = newNodes[0] || nextNodeInRange;\n }\n if (node === lastNode) {\n lastNode = newNodes[newNodes.length - 1] || nodePreviousSibling;\n }\n }\n });\n continuousNodeArray.length = 0;\n if (!firstNode) {\n return;\n }\n if (firstNode === lastNode) {\n continuousNodeArray.push(firstNode);\n } else {\n continuousNodeArray.push(firstNode, lastNode);\n fixUpContinuousNodeArray(continuousNodeArray, parentNode);\n }\n }\n invokeForEachNodeInContinuousRange(firstNode, lastNode, function(node) {\n if (node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.COMMENT_NODE) {\n applyBindings(bindingContext, node).then(afterBindingCallback);\n }\n });\n invokeForEachNodeInContinuousRange(firstNode, lastNode, function(node) {\n if (node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.COMMENT_NODE) {\n memoization.unmemoizeDomNodeAndDescendants(node, [bindingContext]);\n }\n });\n fixUpContinuousNodeArray(continuousNodeArray, parentNode);\n }\n}\nfunction getFirstNodeFromPossibleArray(nodeOrNodeArray) {\n return nodeOrNodeArray.nodeType ? nodeOrNodeArray : nodeOrNodeArray.length > 0 ? nodeOrNodeArray[0] : null;\n}\nfunction executeTemplate(targetNodeOrNodeArray, renderMode, template, bindingContext, options, afterBindingCallback) {\n options = options || {};\n const firstTargetNode = targetNodeOrNodeArray && getFirstNodeFromPossibleArray(targetNodeOrNodeArray);\n const templateDocument = (firstTargetNode || template || {}).ownerDocument;\n const templateEngineToUse = options.templateEngine || _templateEngine;\n const renderedNodesArray = templateEngineToUse.renderTemplate(template, bindingContext, options, templateDocument);\n if (typeof renderedNodesArray.length !== \"number\" || renderedNodesArray.length > 0 && typeof renderedNodesArray[0].nodeType !== \"number\") {\n throw new Error(\"Template engine must return an array of DOM nodes\");\n }\n let haveAddedNodesToParent = false;\n switch (renderMode) {\n case \"replaceChildren\":\n virtualElements.setDomNodeChildren(targetNodeOrNodeArray, renderedNodesArray);\n haveAddedNodesToParent = true;\n break;\n case \"replaceNode\":\n replaceDomNodes(targetNodeOrNodeArray, renderedNodesArray);\n haveAddedNodesToParent = true;\n break;\n case \"ignoreTargetNode\":\n break;\n default:\n throw new Error(\"Unknown renderMode: \" + renderMode);\n }\n if (haveAddedNodesToParent) {\n activateBindingsOnContinuousNodeArray(renderedNodesArray, bindingContext, afterBindingCallback);\n if (options.afterRender) {\n dependencyDetection.ignore(options.afterRender, null, [renderedNodesArray, bindingContext[\"$data\"]]);\n }\n if (renderMode === \"replaceChildren\") {\n bindingEvent.notify(targetNodeOrNodeArray, bindingEvent.childrenComplete);\n }\n }\n return renderedNodesArray;\n}\nfunction resolveTemplateName(template, data, context) {\n if (isObservable(template)) {\n return template();\n } else if (typeof template === \"function\") {\n return template(data, context);\n } else {\n return template;\n }\n}\nexport function renderTemplate(template, dataOrBindingContext, options, targetNodeOrNodeArray, renderMode, afterBindingCallback) {\n options = options || {};\n if ((options.templateEngine || _templateEngine) === void 0) {\n throw new Error(\"Set a template engine before calling renderTemplate\");\n }\n renderMode = renderMode || \"replaceChildren\";\n if (targetNodeOrNodeArray) {\n let firstTargetNode = getFirstNodeFromPossibleArray(targetNodeOrNodeArray);\n const whenToDispose = function() {\n return !firstTargetNode || !domNodeIsAttachedToDocument(firstTargetNode);\n };\n const activelyDisposeWhenNodeIsRemoved = firstTargetNode && renderMode === \"replaceNode\" ? firstTargetNode.parentNode : firstTargetNode;\n return computed(\n // So the DOM is automatically updated when any dependency changes\n function() {\n const bindingContext = dataOrBindingContext && dataOrBindingContext instanceof BindingContextConstructor ? dataOrBindingContext : new BindingContextConstructor(dataOrBindingContext, void 0, void 0, void 0, {\n exportDependencies: true\n });\n const templateName = resolveTemplateName(template, bindingContext.$data, bindingContext);\n const renderedNodesArray = executeTemplate(\n targetNodeOrNodeArray,\n renderMode,\n templateName,\n bindingContext,\n options,\n afterBindingCallback\n );\n if (renderMode === \"replaceNode\") {\n targetNodeOrNodeArray = renderedNodesArray;\n firstTargetNode = getFirstNodeFromPossibleArray(targetNodeOrNodeArray);\n }\n },\n null,\n { disposeWhen: whenToDispose, disposeWhenNodeIsRemoved: activelyDisposeWhenNodeIsRemoved }\n );\n } else {\n return memoization.memoize(function(domNode) {\n renderTemplate(template, dataOrBindingContext, options, domNode, \"replaceNode\");\n });\n }\n}\nexport default function renderTemplateForEach(template, arrayOrObservableArray, options, targetNode, parentBindingContext, afterBindingCallback) {\n let arrayItemContext;\n function executeTemplateForArrayItem(arrayValue, index) {\n if (options.as) {\n if (koOptions.createChildContextWithAs) {\n arrayItemContext = parentBindingContext.createChildContext(arrayValue, options.as, (context) => {\n context.$index = index;\n });\n } else {\n arrayItemContext = parentBindingContext.extend({ [options.as]: arrayValue, $index: index });\n }\n } else {\n arrayItemContext = parentBindingContext.createChildContext(arrayValue, options.as, (context) => {\n context.$index = index;\n });\n }\n const templateName = resolveTemplateName(template, arrayValue, arrayItemContext);\n return executeTemplate(\n targetNode,\n \"ignoreTargetNode\",\n templateName,\n arrayItemContext,\n options,\n afterBindingCallback\n );\n }\n const activateBindingsCallback = function(arrayValue, addedNodesArray) {\n activateBindingsOnContinuousNodeArray(addedNodesArray, arrayItemContext, afterBindingCallback);\n if (options.afterRender) {\n options.afterRender(addedNodesArray, arrayValue);\n }\n arrayItemContext = null;\n };\n function localSetDomNodeChildrenFromArrayMapping(newArray, changeList) {\n dependencyDetection.ignore(setDomNodeChildrenFromArrayMapping, null, [\n targetNode,\n newArray,\n executeTemplateForArrayItem,\n options,\n activateBindingsCallback,\n changeList\n ]);\n bindingEvent.notify(targetNode, bindingEvent.childrenComplete);\n }\n const shouldHideDestroyed = options.includeDestroyed === false || koOptions.foreachHidesDestroyed && !options.includeDestroyed;\n if (!shouldHideDestroyed && !options.beforeRemove && isObservableArray(arrayOrObservableArray)) {\n localSetDomNodeChildrenFromArrayMapping(arrayOrObservableArray.peek());\n const subscription = arrayOrObservableArray.subscribe(\n function(changeList) {\n localSetDomNodeChildrenFromArrayMapping(arrayOrObservableArray(), changeList);\n },\n null,\n \"arrayChange\"\n );\n subscription.disposeWhenNodeIsRemoved(targetNode);\n return subscription;\n } else {\n return computed(\n function() {\n let unwrappedArray = unwrap(arrayOrObservableArray) || [];\n const unwrappedIsIterable = Symbol.iterator in unwrappedArray;\n if (!unwrappedIsIterable) {\n unwrappedArray = [unwrappedArray];\n }\n if (shouldHideDestroyed) {\n unwrappedArray = arrayFilter(unwrappedArray, function(item) {\n return item === void 0 || item === null || !unwrap(item._destroy);\n });\n }\n localSetDomNodeChildrenFromArrayMapping(unwrappedArray);\n },\n null,\n { disposeWhenNodeIsRemoved: targetNode }\n );\n }\n}\nconst templateComputedDomDataKey = domData.nextKey();\nexport class TemplateBindingHandler extends AsyncBindingHandler {\n constructor(params) {\n super(params);\n const element = this.$element;\n const bindingValue = unwrap(this.value);\n domData.set(element, \"conditional\", { elseChainSatisfied: observable(true) });\n if (typeof bindingValue === \"string\" || bindingValue.name) {\n this.bindNamedTemplate();\n } else if (\"nodes\" in bindingValue) {\n this.bindNodeTemplate(bindingValue.nodes || []);\n } else {\n this.bindAnonymousTemplate();\n }\n }\n bindNamedTemplate() {\n virtualElements.emptyNode(this.$element);\n }\n // We've been given an array of DOM nodes. Save them as the template source.\n // There is no known use case for the node array being an observable array (if the output\n // varies, put that behavior *into* your template - that's what templates are for), and\n // the implementation would be a mess, so assert that it's not observable.\n bindNodeTemplate(nodes) {\n if (isObservable(nodes)) {\n throw new Error('The \"nodes\" option must be a plain, non-observable array.');\n }\n let container = nodes[0] && nodes[0].parentNode;\n if (!container || !domData.get(container, cleanContainerDomDataKey)) {\n container = moveCleanedNodesToContainerElement(nodes);\n domData.set(container, cleanContainerDomDataKey, true);\n }\n new AnonymousTemplate(this.$element).nodes(container);\n }\n bindAnonymousTemplate() {\n const templateNodes = virtualElements.childNodes(this.$element);\n if (templateNodes.length === 0) {\n throw new Error(\"Anonymous template defined, but no template content was provided.\");\n }\n const container = moveCleanedNodesToContainerElement(templateNodes);\n new AnonymousTemplate(this.$element).nodes(container);\n }\n onValueChange() {\n const element = this.$element;\n const bindingContext = this.$context;\n const value = this.value;\n let options = unwrap(value);\n let shouldDisplay = true;\n let templateComputed = null;\n const elseChainSatisfied = domData.get(element, \"conditional\").elseChainSatisfied;\n let templateName;\n if (typeof options === \"string\") {\n templateName = value;\n options = {};\n } else {\n templateName = options.name;\n if (\"if\" in options) {\n shouldDisplay = unwrap(options.if);\n }\n if (shouldDisplay && \"ifnot\" in options) {\n shouldDisplay = !unwrap(options.ifnot);\n }\n }\n if (\"foreach\" in options) {\n const dataArray = shouldDisplay && options.foreach || [];\n templateComputed = renderTemplateForEach(\n templateName || element,\n dataArray,\n options,\n element,\n bindingContext,\n this.completeBinding\n );\n elseChainSatisfied((unwrap(dataArray) || []).length !== 0);\n } else if (shouldDisplay) {\n const innerBindingContext = \"data\" in options ? bindingContext.createStaticChildContext(options.data, options.as) : bindingContext;\n templateComputed = renderTemplate(\n templateName || element,\n innerBindingContext,\n options,\n element,\n void 0,\n this.completeBinding\n );\n elseChainSatisfied(true);\n } else {\n virtualElements.emptyNode(element);\n elseChainSatisfied(false);\n }\n this.disposeOldComputedAndStoreNewOne(element, templateComputed);\n }\n disposeOldComputedAndStoreNewOne(element, newComputed) {\n const oldComputed = domData.get(element, templateComputedDomDataKey);\n if (oldComputed && typeof oldComputed.dispose === \"function\") {\n oldComputed.dispose();\n }\n domData.set(\n element,\n templateComputedDomDataKey,\n newComputed && (!newComputed.isActive || newComputed.isActive()) ? newComputed : void 0\n );\n }\n get controlsDescendants() {\n return true;\n }\n static get allowVirtualElements() {\n return true;\n }\n}\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { makeArray, parseHtmlFragment } from \"@tko/utils\";\nimport { templateEngine } from \"./templateEngine\";\nimport { setTemplateEngine } from \"./templating\";\nexport function nativeTemplateEngine() {\n}\nnativeTemplateEngine.prototype = new templateEngine();\nnativeTemplateEngine.prototype.constructor = nativeTemplateEngine;\nnativeTemplateEngine.prototype.renderTemplateSource = function(templateSource, bindingContext, options, templateDocument) {\n const templateNodes = templateSource.nodes ? templateSource.nodes() : null;\n if (templateNodes) {\n return makeArray(templateNodes.cloneNode(true).childNodes);\n } else {\n const templateText = templateSource.text();\n return parseHtmlFragment(templateText, templateDocument);\n }\n};\nnativeTemplateEngine.instance = new nativeTemplateEngine();\nsetTemplateEngine(nativeTemplateEngine.instance);\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { unwrap, peek } from \"@tko/observable\";\nimport { nativeTemplateEngine } from \"./nativeTemplateEngine\";\nimport { TemplateBindingHandler } from \"./templating\";\nexport class TemplateForEachBindingHandler extends TemplateBindingHandler {\n get value() {\n const modelValue = this.valueAccessor();\n const unwrappedValue = peek(modelValue);\n if (!unwrappedValue || typeof unwrappedValue.length === \"number\") {\n return { foreach: modelValue, templateEngine: nativeTemplateEngine.instance };\n }\n unwrap(modelValue);\n return {\n foreach: unwrappedValue.data,\n as: unwrappedValue.as,\n includeDestroyed: unwrappedValue.includeDestroyed,\n afterAdd: unwrappedValue.afterAdd,\n beforeRemove: unwrappedValue.beforeRemove,\n afterRender: unwrappedValue.afterRender,\n beforeMove: unwrappedValue.beforeMove,\n afterMove: unwrappedValue.afterMove,\n templateEngine: nativeTemplateEngine.instance\n };\n }\n}\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { TemplateForEachBindingHandler } from \"./foreach\";\nimport { TemplateBindingHandler } from \"./templating\";\nexport const bindings = { foreach: TemplateForEachBindingHandler, template: TemplateBindingHandler };\nexport * from \"./nativeTemplateEngine\";\nexport * from \"./templateEngine\";\nexport * from \"./templating\";\nexport * from \"./templateSources\";\n", "// @tko/builder \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport {\n addDisposeCallback,\n addOrRemoveItem,\n arrayFilter,\n arrayFirst,\n arrayForEach,\n arrayGetDistinctValues,\n arrayIndexOf,\n arrayMap,\n arrayPushAll,\n arrayRemoveItem,\n addCleaner,\n cleanNode,\n cloneNodes,\n compareArrays,\n createSymbolOrString,\n domData,\n extend,\n memoization,\n objectForEach,\n objectMap,\n options,\n parseHtmlFragment,\n parseJson,\n range,\n registerEventHandler,\n removeCleaner,\n removeDisposeCallback,\n removeNode,\n selectExtensions,\n setHtml,\n setTextContent,\n tasks,\n toggleDomNodeCssClass,\n triggerEvent,\n virtualElements\n} from \"@tko/utils\";\nimport { parseObjectLiteral } from \"@tko/utils.parser\";\nimport { LifeCycle } from \"@tko/lifecycle\";\nimport {\n dependencyDetection,\n extenders as defaultExtenders,\n isObservable,\n isSubscribable,\n isWriteableObservable,\n observable,\n observableArray,\n isObservableArray,\n peek,\n subscribable,\n toJS,\n toJSON,\n unwrap\n} from \"@tko/observable\";\nimport { computed, isComputed, isPureComputed, proxy, pureComputed, when } from \"@tko/computed\";\nimport {\n applyBindingAccessorsToNode,\n applyBindings,\n applyBindingsToDescendants,\n applyBindingsToNode,\n contextFor,\n dataFor,\n bindingEvent,\n BindingHandler,\n AsyncBindingHandler,\n setDomNodeChildrenFromArrayMapping\n} from \"@tko/bind\";\nimport {\n anonymousTemplate,\n domElement,\n nativeTemplateEngine,\n renderTemplate,\n setTemplateEngine,\n templateEngine\n} from \"@tko/binding.template\";\nconst domNodeDisposal = {\n addDisposeCallback,\n removeDisposeCallback,\n removeNode,\n addCleaner,\n removeCleaner,\n get cleanExternalData() {\n return options.cleanExternalData;\n },\n set cleanExternalData(cleanerFn) {\n options.set(\"cleanExternalData\", cleanerFn);\n }\n};\nconst utils = {\n addOrRemoveItem,\n arrayFilter,\n arrayFirst,\n arrayForEach,\n arrayGetDistinctValues,\n arrayIndexOf,\n arrayMap,\n arrayPushAll,\n arrayRemoveItem,\n cloneNodes,\n compareArrays,\n createSymbolOrString,\n domData,\n domNodeDisposal,\n extend,\n filters: options.filters,\n objectForEach,\n objectMap,\n parseHtmlFragment,\n parseJson,\n parseObjectLiteral,\n peekObservable: peek,\n range,\n registerEventHandler,\n setDomNodeChildrenFromArrayMapping,\n setHtml,\n setTextContent,\n toggleDomNodeCssClass,\n triggerEvent,\n unwrapObservable: unwrap\n};\nconst knockout = {\n // --- Utilities ---\n cleanNode,\n dependencyDetection,\n computedContext: dependencyDetection,\n filters: options.filters,\n ignoreDependencies: dependencyDetection.ignore,\n memoization,\n options,\n removeNode,\n selectExtensions,\n tasks,\n utils,\n LifeCycle,\n // -- Observable ---\n isObservable,\n isSubscribable,\n isWriteableObservable,\n isWritableObservable: isWriteableObservable,\n observable,\n observableArray,\n isObservableArray,\n peek,\n subscribable,\n unwrap,\n toJS,\n toJSON,\n proxy,\n // ... Computed ...\n computed,\n dependentObservable: computed,\n isComputed,\n isPureComputed,\n pureComputed,\n when,\n // --- Templates ---\n nativeTemplateEngine,\n renderTemplate,\n setTemplateEngine,\n templateEngine,\n templateSources: { domElement, anonymousTemplate },\n // --- Binding ---\n applyBindingAccessorsToNode,\n applyBindings,\n applyBindingsToDescendants,\n applyBindingsToNode,\n contextFor,\n dataFor,\n BindingHandler,\n AsyncBindingHandler,\n virtualElements,\n domNodeDisposal,\n bindingEvent\n};\nexport class Builder {\n constructor({ provider, bindings, extenders, filters, options: options2 }) {\n Object.assign(knockout.options, options2, { filters, bindingProviderInstance: provider });\n provider.setGlobals(knockout.options.bindingGlobals);\n if (Array.isArray(bindings)) {\n for (const bindingsObject of bindings) {\n provider.bindingHandlers.set(bindingsObject);\n }\n } else {\n provider.bindingHandlers.set(bindings);\n }\n this.providedProperties = {\n extenders: Object.assign(defaultExtenders, extenders),\n bindingHandlers: provider.bindingHandlers,\n bindingProvider: provider\n };\n }\n /**\n * @return {KnockoutInstance} An instance of Knockout.\n */\n create(...additionalProperties) {\n const instance = Object.assign(\n {\n get getBindingHandler() {\n return options.getBindingHandler;\n },\n set getBindingHandler(fn) {\n options.set(\"getBindingHandler\", fn);\n }\n },\n knockout,\n //never change the order of these\n this.providedProperties,\n ...additionalProperties\n );\n instance.options.knockoutInstance = instance;\n return instance;\n }\n}\n", "// @tko/provider \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { options } from \"@tko/utils\";\nexport default class BindingHandlerObject {\n set(nameOrObject, value) {\n if (typeof nameOrObject === \"string\") {\n this[nameOrObject] = value;\n } else if (typeof nameOrObject === \"object\") {\n if (value !== void 0) {\n options.onError(\n new Error(\n \"Given extraneous `value` parameter (first param should be a string, but it was an object).\" + nameOrObject\n )\n );\n }\n Object.assign(this, nameOrObject);\n } else {\n options.onError(new Error(\"Given a bad binding handler type: \" + nameOrObject));\n }\n }\n /**\n * The handler may have a `.` in it, e.g. `attr.title`, in which case the\n * handler is `attr`. Otherwise it's the name given\n */\n get(nameOrDotted) {\n const [name] = nameOrDotted.split(\".\");\n return this[name];\n }\n}\n", "// @tko/provider \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { objectMap } from \"@tko/utils\";\nimport { dependencyDetection } from \"@tko/observable\";\nimport BindingHandlerObject from \"./BindingHandlerObject\";\nexport default class Provider {\n constructor(params) {\n if (this.constructor === Provider) {\n throw new Error(\"Provider is an abstract base class.\");\n }\n if (!(\"FOR_NODE_TYPES\" in this)) {\n throw new Error(\"Providers must have FOR_NODE_TYPES property\");\n }\n this.bindingHandlers = params?.bindingHandlers || new BindingHandlerObject();\n this.globals = params?.globals || {};\n }\n get FOR_NODE_TYPES() {\n throw new Error(\"Providers must override FOR_NODE_TYPES property\");\n }\n setGlobals(globals) {\n this.globals = globals;\n }\n get preemptive() {\n return false;\n }\n nodeHasBindings(node, context) {\n return false;\n }\n getBindingAccessors(node, context) {\n return /* @__PURE__ */ Object.create(null);\n }\n /**\n * Preprocess a given node.\n * @param {Node} node\n * @returns {[Node]|null}\n */\n preprocessNode(node) {\n return [node];\n }\n postProcess() {\n }\n /** For legacy binding provider assignments to\n * ko.bindingProvider.instance = ... */\n get instance() {\n return this._overloadInstance || this;\n }\n set instance(provider) {\n if (!provider || provider === this) {\n this._overloadInstance = void 0;\n } else {\n this._overloadInstance = new LegacyProvider(provider, this);\n }\n }\n // Given a function that returns bindings, create and return a new object that contains\n // binding value-accessors functions. Each accessor function calls the original function\n // so that it always gets the latest value and all dependencies are captured. This is used\n // by ko.applyBindingsToNode and getBindingsAndMakeAccessors.\n makeAccessorsFromFunction(callback) {\n return objectMap(dependencyDetection.ignore(callback), (value, key) => () => callback()[key]);\n }\n // Returns the valueAccessor function for a binding value\n makeValueAccessor(value) {\n return () => value;\n }\n // Given a bindings function or object, create and return a new object that contains\n // binding value-accessors functions. This is used by ko.applyBindingsToNode.\n makeBindingAccessors(bindings, context, node) {\n if (typeof bindings === \"function\") {\n return this.makeAccessorsFromFunction(bindings.bind(null, context, node));\n } else {\n return objectMap(bindings, this.makeValueAccessor);\n }\n }\n}\nclass LegacyProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE, Node.TEXT_NODE, Node.COMMENT_NODE];\n }\n constructor(providerObject, parentProvider) {\n super();\n Object.assign(this, { providerObject });\n this.bindingHandlers = providerObject.bindingHandlers || parentProvider.bindingHandlers;\n }\n // This function is used if the binding provider doesn't include a getBindingAccessors function.\n // It must be called with 'this' set to the provider instance.\n getBindingsAndMakeAccessors(node, context) {\n const bindingsFn = this.providerObject.getBindings.bind(this.providerObject, node, context);\n return this.makeAccessorsFromFunction(bindingsFn);\n }\n getBindingAccessors(node, context) {\n return this.providerObject.getBindingAccessors ? this.providerObject.getBindingAccessors(node, context) : this.getBindingsAndMakeAccessors(node, context);\n }\n nodeHasBindings(node) {\n return this.providerObject.nodeHasBindings(node);\n }\n preprocessNode(node) {\n if (this.providerObject.preprocessNode) {\n return this.providerObject.preprocessNode(node);\n }\n return null;\n }\n}\n", "// @tko/provider.bindingstring \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport { Parser, parseObjectLiteral } from \"@tko/utils.parser\";\nimport { Provider } from \"@tko/provider\";\nexport default class BindingStringProvider extends Provider {\n /** Call bindingHandler.preprocess on each respective binding string.\n *\n * The `preprocess` property of bindingHandler must be a static\n * function (i.e. on the object or constructor).\n */\n *processBinding(key, value) {\n const [handlerName, property] = key.split(\".\");\n const handler = this.bindingHandlers.get(handlerName);\n if (handler && handler.preprocess) {\n const bindingsAddedByHandler = new Array();\n const chainFn = (...args) => bindingsAddedByHandler.push(args);\n value = handler.preprocess(value, key, chainFn);\n for (const [key2, value2] of bindingsAddedByHandler) {\n yield* this.processBinding(key2, value2);\n }\n } else if (property) {\n value = `{${property}:${value}}`;\n }\n yield `'${handlerName}':${value}`;\n }\n *generateBindingString(bindingStringOrObjects) {\n const bindingObjectsArray = typeof bindingStringOrObjects === \"string\" ? parseObjectLiteral(bindingStringOrObjects) : bindingStringOrObjects;\n for (const { key, unknown, value } of bindingObjectsArray) {\n yield* this.processBinding(key || unknown, value);\n }\n }\n preProcessBindings(bindingStringOrObjects) {\n return Array.from(this.generateBindingString(bindingStringOrObjects)).join(\",\");\n }\n getBindingAccessors(node, context) {\n const bindingString = node && this.getBindingString(node);\n if (!bindingString) {\n return;\n }\n const processed = this.preProcessBindings(bindingString);\n return new Parser().parse(processed, context, this.globals, node);\n }\n getBindingString(node) {\n throw new Error(\"Overload getBindingString.\");\n }\n}\n", "// @tko/provider.virtual \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport { virtualElements } from \"@tko/utils\";\nimport { BindingStringProvider } from \"@tko/provider.bindingstring\";\nexport default class VirtualProvider extends BindingStringProvider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE, Node.COMMENT_NODE];\n }\n /**\n * Convert <ko binding='...'> into <!-- ko binding: ... -->\n * @param {Node} node\n */\n preprocessNode(node) {\n if (node instanceof Element && node.tagName === \"KO\") {\n const parent = node.parentNode;\n const childNodes = [...node.childNodes];\n const virtualBindingString = [...this.genElementBindingStrings(node)].join(\",\");\n const openNode = document.createComment(\"ko \" + virtualBindingString);\n const closeNode = document.createComment(\"/ko\");\n parent?.insertBefore(openNode, node);\n for (const child of childNodes) {\n parent?.insertBefore(child, node);\n }\n parent?.insertBefore(closeNode, node);\n node.remove();\n return [openNode, ...childNodes, closeNode];\n }\n return null;\n }\n *genElementBindingStrings(node) {\n for (const { name, value } of node.attributes) {\n yield `${name.replace(/^ko-/, \"\")}: ${value}`;\n }\n }\n getBindingString(node) {\n if (node.nodeType === Node.COMMENT_NODE) {\n return virtualElements.virtualNodeBindingValue(node);\n }\n return null;\n }\n nodeHasBindings(node, context) {\n if (node.nodeType === Node.COMMENT_NODE) {\n return virtualElements.isStartComment(node);\n }\n return false;\n }\n}\n", "// @tko/provider.databind \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport { BindingStringProvider } from \"@tko/provider.bindingstring\";\nexport default class DataBindProvider extends BindingStringProvider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE];\n }\n get BIND_ATTRIBUTE() {\n return \"data-bind\";\n }\n getBindingString(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return node.getAttribute(this.BIND_ATTRIBUTE);\n }\n return null;\n }\n nodeHasBindings(node, context) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return node.hasAttribute(this.BIND_ATTRIBUTE);\n }\n return false;\n }\n}\n", "// @tko/utils.component \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { subscribable, dependencyDetection } from \"@tko/observable\";\nimport { getObjectOwnProperty, tasks } from \"@tko/utils\";\nconst loadingSubscribablesCache = {}, loadedDefinitionsCache = {};\nfunction loadComponentAndNotify(componentName, callback) {\n let _subscribable = getObjectOwnProperty(loadingSubscribablesCache, componentName), completedAsync;\n if (!_subscribable) {\n _subscribable = loadingSubscribablesCache[componentName] = new subscribable();\n _subscribable.subscribe(callback);\n beginLoadingComponent(componentName, function(definition, config) {\n const isSynchronousComponent = !!(config && config.synchronous);\n loadedDefinitionsCache[componentName] = { definition, isSynchronousComponent };\n delete loadingSubscribablesCache[componentName];\n if (completedAsync || isSynchronousComponent) {\n _subscribable.notifySubscribers(definition);\n } else {\n tasks.schedule(function() {\n _subscribable.notifySubscribers(definition);\n });\n }\n });\n completedAsync = true;\n } else {\n _subscribable.subscribe(callback);\n }\n}\nfunction beginLoadingComponent(componentName, callback) {\n getFirstResultFromLoaders(\"getConfig\", [componentName], function(config) {\n if (config) {\n getFirstResultFromLoaders(\"loadComponent\", [componentName, config], function(definition) {\n callback(definition, config);\n });\n } else {\n callback(null, null);\n }\n });\n}\nfunction getFirstResultFromLoaders(methodName, argsExceptCallback, callback, candidateLoaders) {\n if (!candidateLoaders) {\n candidateLoaders = registry.loaders.slice(0);\n }\n const currentCandidateLoader = candidateLoaders.shift();\n if (currentCandidateLoader) {\n const methodInstance = currentCandidateLoader[methodName];\n if (methodInstance) {\n let wasAborted = false, synchronousReturnValue = methodInstance.apply(\n currentCandidateLoader,\n argsExceptCallback.concat(function(result) {\n if (wasAborted) {\n callback(null);\n } else if (result !== null) {\n callback(result);\n } else {\n getFirstResultFromLoaders(methodName, argsExceptCallback, callback, candidateLoaders);\n }\n })\n );\n if (synchronousReturnValue !== void 0) {\n wasAborted = true;\n if (!currentCandidateLoader.suppressLoaderExceptions) {\n throw new Error(\n \"Component loaders must supply values by invoking the callback, not by returning values synchronously.\"\n );\n }\n }\n } else {\n getFirstResultFromLoaders(methodName, argsExceptCallback, callback, candidateLoaders);\n }\n } else {\n callback(null);\n }\n}\nexport const registry = {\n get(componentName, callback) {\n const cachedDefinition = getObjectOwnProperty(loadedDefinitionsCache, componentName);\n if (cachedDefinition) {\n if (cachedDefinition.isSynchronousComponent) {\n dependencyDetection.ignore(function() {\n callback(cachedDefinition.definition);\n });\n } else {\n tasks.schedule(function() {\n callback(cachedDefinition.definition);\n });\n }\n } else {\n loadComponentAndNotify(componentName, callback);\n }\n },\n clearCachedDefinition(componentName) {\n delete loadedDefinitionsCache[componentName];\n },\n _getFirstResultFromLoaders: getFirstResultFromLoaders,\n loaders: new Array()\n};\n", "// @tko/utils.component \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport {\n isDomElement,\n isDocumentFragment,\n tagNameLower,\n parseHtmlFragment,\n makeArray,\n cloneNodes,\n hasOwnProperty\n} from \"@tko/utils\";\nimport { registry } from \"./registry\";\nexport const defaultConfigRegistry = {};\nexport const VIEW_MODEL_FACTORY = /* @__PURE__ */ Symbol(\"Knockout View Model ViewModel factory\");\nexport function register(componentName, config) {\n if (!config) {\n throw new Error(\"Invalid configuration for \" + componentName);\n }\n if (isRegistered(componentName)) {\n throw new Error(\"Component \" + componentName + \" is already registered\");\n }\n const ceok = componentName.includes(\"-\") && componentName.toLowerCase() === componentName;\n if (!config.ignoreCustomElementWarning && !ceok) {\n console.log(`\n\\u{1F94A} Knockout warning: components for custom elements must be lowercase and contain a dash. To ignore this warning, add to the 'config' of .register(componentName, config):\n\n ignoreCustomElementWarning: true\n `);\n }\n defaultConfigRegistry[componentName] = config;\n}\nexport function isRegistered(componentName) {\n return hasOwnProperty(defaultConfigRegistry, componentName);\n}\nexport function unregister(componentName) {\n delete defaultConfigRegistry[componentName];\n registry.clearCachedDefinition(componentName);\n}\nexport const defaultLoader = {\n getConfig(componentName, callback) {\n const result = hasOwnProperty(defaultConfigRegistry, componentName) ? defaultConfigRegistry[componentName] : null;\n callback(result);\n },\n loadComponent(componentName, config, callback) {\n const errorCallback = makeErrorCallback(componentName);\n possiblyGetConfigFromAmd(errorCallback, config, function(loadedConfig) {\n resolveConfig(componentName, errorCallback, loadedConfig, callback);\n });\n },\n loadTemplate(componentName, templateConfig, callback) {\n resolveTemplate(makeErrorCallback(componentName), templateConfig, callback);\n },\n loadViewModel(componentName, viewModelConfig, callback) {\n resolveViewModel(makeErrorCallback(componentName), viewModelConfig, callback);\n }\n};\nconst createViewModelKey = \"createViewModel\";\nfunction resolveConfig(componentName, errorCallback, config, callback) {\n const result = {}, tryIssueCallback = function() {\n if (--makeCallBackWhenZero === 0) {\n callback(result);\n }\n }, templateConfig = config[\"template\"], viewModelConfig = config[\"viewModel\"];\n let makeCallBackWhenZero = 2;\n if (templateConfig) {\n possiblyGetConfigFromAmd(errorCallback, templateConfig, function(loadedConfig) {\n registry._getFirstResultFromLoaders(\"loadTemplate\", [componentName, loadedConfig], function(resolvedTemplate) {\n result[\"template\"] = resolvedTemplate;\n tryIssueCallback();\n });\n });\n } else {\n tryIssueCallback();\n }\n if (viewModelConfig) {\n possiblyGetConfigFromAmd(errorCallback, viewModelConfig, function(loadedConfig) {\n registry._getFirstResultFromLoaders(\"loadViewModel\", [componentName, loadedConfig], function(resolvedViewModel) {\n result[createViewModelKey] = resolvedViewModel;\n tryIssueCallback();\n });\n });\n } else {\n tryIssueCallback();\n }\n}\nfunction resolveTemplate(errorCallback, templateConfig, callback) {\n if (typeof templateConfig === \"string\") {\n callback(parseHtmlFragment(templateConfig));\n } else if (templateConfig instanceof Array) {\n callback(templateConfig);\n } else if (isDocumentFragment(templateConfig)) {\n callback(makeArray(templateConfig.childNodes));\n } else if (templateConfig.element) {\n const element = templateConfig.element;\n if (isDomElement(element)) {\n callback(cloneNodesFromTemplateSourceElement(element));\n } else if (typeof element === \"string\") {\n const elemInstance = document.getElementById(element);\n if (elemInstance) {\n callback(cloneNodesFromTemplateSourceElement(elemInstance));\n } else {\n errorCallback(\"Cannot find element with ID \" + element);\n }\n } else {\n errorCallback(\"Unknown element type: \" + element);\n }\n } else if (templateConfig.elementName) {\n callback(templateConfig);\n } else {\n errorCallback(\"Unknown template value: \" + templateConfig);\n }\n}\nfunction resolveViewModel(errorCallback, viewModelConfig, callback) {\n if (viewModelConfig[VIEW_MODEL_FACTORY]) {\n callback((...args) => viewModelConfig[VIEW_MODEL_FACTORY](...args));\n } else if (typeof viewModelConfig === \"function\") {\n callback(function(params) {\n return new viewModelConfig(params);\n });\n } else if (typeof viewModelConfig[createViewModelKey] === \"function\") {\n callback(viewModelConfig[createViewModelKey]);\n } else if (\"instance\" in viewModelConfig) {\n const fixedInstance = viewModelConfig[\"instance\"];\n callback(function() {\n return fixedInstance;\n });\n } else if (\"viewModel\" in viewModelConfig) {\n resolveViewModel(errorCallback, viewModelConfig[\"viewModel\"], callback);\n } else {\n errorCallback(\"Unknown viewModel value: \" + viewModelConfig);\n }\n}\nfunction cloneNodesFromTemplateSourceElement(elemInstance) {\n switch (tagNameLower(elemInstance)) {\n case \"script\":\n return parseHtmlFragment(elemInstance.text);\n case \"textarea\":\n return parseHtmlFragment(elemInstance.value);\n case \"template\":\n if (isDocumentFragment(elemInstance.content)) {\n return cloneNodes(elemInstance.content.childNodes);\n }\n }\n return cloneNodes(elemInstance.childNodes);\n}\nfunction possiblyGetConfigFromAmd(errorCallback, config, callback) {\n if (typeof config.require === \"string\") {\n if (window.amdRequire || window.require) {\n ;\n (window.amdRequire || window.require)([config.require], callback);\n } else {\n errorCallback(\"Uses require, but no AMD loader is present\");\n }\n } else {\n callback(config);\n }\n}\nfunction makeErrorCallback(componentName) {\n return function(message) {\n throw new Error(\"Component '\" + componentName + \"': \" + message);\n };\n}\nregistry.loaders.push(defaultLoader);\n", "// @tko/utils.component \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { LifeCycle } from \"@tko/lifecycle\";\nimport { register, VIEW_MODEL_FACTORY } from \"./loaders\";\nexport class ComponentABC extends LifeCycle {\n /**\n * The tag name of the custom element. For example 'my-component'.\n * By default converts the class name from camel case to kebab case.\n * @return {string} The custom node name of this component.\n */\n static get customElementName() {\n return this.name.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n }\n /**\n * Overload this to return:\n * 1. A string of markup\n * 2. An array of DOM nodes\n * 3. A document fragment\n * 4. An AMD module (with `{require: 'some/template'}`)\n * @return {mixed} One of the accepted template types for the ComponentBinding.\n */\n static get template() {\n if (\"template\" in this.prototype) {\n return;\n }\n return { element: this.element };\n }\n /**\n * This is called by the default `template`. Overload this to return:\n * 1. The element ID\n * 2. A DOM node itself\n * @return {string|HTMLElement} either the element ID or actual element.\n */\n static get element() {\n throw new Error(\"[ComponentABC] `element` must be overloaded.\");\n }\n /**\n * @return {bool} True if the component shall load synchronously\n */\n static get sync() {\n return true;\n }\n /**\n * Construct a new instance of the model. When using ComponentABC as a\n * base class, we do pass in the $element and $componentTemplateNodes.\n * @param {Object} params\n * @param {{element: HTMLElement, templateNodes: [HTMLElement]}} componentInfo\n */\n static [VIEW_MODEL_FACTORY](params, componentInfo) {\n return new this(params, componentInfo);\n }\n static register(name = this.customElementName) {\n const viewModel = this;\n const { template } = this;\n const synchronous = this.sync;\n register(name, { viewModel, template, synchronous });\n }\n}\n", "// @tko/utils.component \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { registry } from \"./registry\";\nimport { ComponentABC } from \"./ComponentABC\";\nimport { register, isRegistered, unregister, defaultLoader, defaultConfigRegistry } from \"./loaders\";\nexport { ComponentABC };\nexport default {\n ComponentABC,\n // -- Registry --\n get: registry.get,\n clearCachedDefinition: registry.clearCachedDefinition,\n // -- Loader --\n register,\n isRegistered,\n unregister,\n defaultLoader,\n // \"Privately\" expose the underlying config registry for use in old-IE shim\n _allRegisteredComponents: defaultConfigRegistry,\n get loaders() {\n return registry.loaders;\n },\n set loaders(loaders) {\n registry.loaders = loaders;\n }\n};\n", "// @tko/provider.component \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport { tagNameLower, objectMap } from \"@tko/utils\";\nimport registry from \"@tko/utils.component\";\nimport { unwrap, isWriteableObservable } from \"@tko/observable\";\nimport { computed } from \"@tko/computed\";\nimport { Provider } from \"@tko/provider\";\nimport { Parser } from \"@tko/utils.parser\";\nexport default class ComponentProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE];\n }\n /**\n * Convert <slot name='X'> to <!-- ko slot: 'X' --><!-- /ko -->\n * @param {Node} node\n */\n preprocessNode(node) {\n if (node instanceof Element && node.tagName === \"SLOT\") {\n const parent = node.parentNode;\n const slotName = node.getAttribute(\"name\") || \"\";\n const openNode = document.createComment(`ko slot: \"${slotName}\"`);\n const closeNode = document.createComment(\"/ko\");\n if (!parent) {\n throw Error(\"Missing parent node\");\n }\n parent.insertBefore(openNode, node);\n parent.insertBefore(closeNode, node);\n parent.removeChild(node);\n return [openNode, closeNode];\n }\n return null;\n }\n nodeHasBindings(node) {\n return Boolean(this.getComponentNameForNode(node));\n }\n getBindingAccessors(node, context) {\n const componentName = this.getComponentNameForNode(node);\n if (!componentName) {\n return /* @__PURE__ */ Object.create(null);\n }\n const component = () => ({ name: componentName, params: this.getComponentParams(node, context) });\n return { component };\n }\n getComponentNameForNode(node) {\n if (!(node instanceof Element) || node.nodeType !== Node.ELEMENT_NODE) {\n return null;\n }\n const tagName = tagNameLower(node);\n if (registry.isRegistered(tagName)) {\n const hasDash = tagName.includes(\"-\");\n const isUnknownEntity = \"\" + node === \"[object HTMLUnknownElement]\";\n if (hasDash || isUnknownEntity) {\n return tagName;\n }\n }\n return null;\n }\n getComponentParams(node, context) {\n if (!(node instanceof Element)) {\n return { $raw: {} };\n }\n const parser = new Parser(node, context, this.globals);\n const paramsString = (node.getAttribute(\"params\") || \"\").trim();\n const accessors = parser.parse(paramsString, context, void 0, node);\n if (!accessors || Object.keys(accessors).length === 0) {\n return { $raw: {} };\n }\n const $raw = objectMap(accessors, (value) => computed(value, null, { disposeWhenNodeIsRemoved: node }));\n const params = objectMap($raw, (v) => this.makeParamValue(node, v));\n return Object.assign({ $raw }, params);\n }\n makeParamValue(node, paramValueComputed) {\n const paramValue = paramValueComputed.peek();\n if (!paramValueComputed.isActive()) {\n return paramValue;\n }\n const isWriteable = isWriteableObservable(paramValue);\n return computed({\n read: () => unwrap(paramValueComputed()),\n write: isWriteable ? (v) => paramValueComputed()(v) : void 0,\n disposeWhenNodeIsRemoved: node\n });\n }\n}\n", "// @tko/provider.attr \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { Provider } from \"@tko/provider\";\nexport default class AttrProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE];\n }\n get PREFIX() {\n return \"ko-\";\n }\n getBindingAttributesList(node) {\n if (!(node instanceof Element)) {\n return [];\n }\n if (!node.hasAttributes()) {\n return [];\n }\n return Array.from(node.attributes).filter((attr) => attr.name.startsWith(this.PREFIX));\n }\n nodeHasBindings(node) {\n return this.getBindingAttributesList(node).length > 0;\n }\n getBindingAccessors(node, context) {\n return Object.assign({}, ...this.handlersFromAttributes(node, context));\n }\n *handlersFromAttributes(node, context) {\n for (const attr of this.getBindingAttributesList(node)) {\n const name = attr.name.substring(this.PREFIX.length);\n yield { [name]: () => this.getValue(attr.value, context, node) };\n }\n }\n getValue(token, $context, node) {\n if (!token) {\n return;\n }\n const $data = $context.$data;\n switch (token) {\n case \"$element\":\n return node;\n case \"$context\":\n return $context;\n case \"this\":\n case \"$data\":\n return $context.$data;\n }\n if ($data instanceof Object && token in $data) {\n return $data[token];\n }\n if (token in $context) {\n return $context[token];\n }\n if (token in this.globals) {\n return this.globals[token];\n }\n throw new Error(`The variable '${token} not found.`);\n }\n}\n", "// @tko/provider.multi \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { Provider } from \"@tko/provider\";\nexport default class MultiProvider extends Provider {\n get FOR_NODE_TYPES() {\n return this.nodeTypes;\n }\n constructor(params) {\n super(params);\n const providers = params?.providers || [];\n this.nodeTypeMap = {};\n this.nodeTypes = [];\n this.providers = [];\n providers.forEach((p) => this.addProvider(p));\n }\n setGlobals(globals) {\n ;\n [this, ...this.providers].forEach((p) => p.globals = globals);\n }\n addProvider(provider) {\n this.providers.push(provider);\n provider.bindingHandlers = this.bindingHandlers;\n provider.globals = this.globals;\n const nodeTypeMap = this.nodeTypeMap;\n for (const nodeType of provider.FOR_NODE_TYPES) {\n if (!nodeTypeMap[nodeType]) {\n nodeTypeMap[nodeType] = new Array();\n }\n nodeTypeMap[nodeType].push(provider);\n }\n this.nodeTypes = Object.keys(this.nodeTypeMap).map((k) => parseInt(k, 10));\n }\n providersFor(node) {\n return this.nodeTypeMap[node.nodeType] || [];\n }\n nodeHasBindings(node, context) {\n return this.providersFor(node).some((p) => p.nodeHasBindings(node));\n }\n preprocessNode(node) {\n for (const provider of this.providersFor(node)) {\n const newNodes = provider.preprocessNode(node);\n if (newNodes) {\n return newNodes;\n }\n }\n return null;\n }\n *enumerateProviderBindings(node, context) {\n for (const provider of this.providersFor(node)) {\n const bindings = provider.getBindingAccessors(node, context);\n if (!bindings) {\n continue;\n }\n yield* Object.entries(bindings || {});\n if (provider.preemptive) {\n return;\n }\n }\n }\n getBindingAccessors(node, context) {\n const bindings = {};\n for (const [key, accessor] of this.enumerateProviderBindings(node, context)) {\n if (key in bindings) {\n throw new Error(`The binding \"${key}\" is duplicated by multiple providers`);\n }\n bindings[key] = accessor;\n }\n return bindings;\n }\n}\n", "// @tko/provider.mustache \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport { Parser } from \"@tko/utils.parser\";\nconst INNER_EXPRESSION = /^([\\s\\S]*)}}([\\s\\S]*?)\\{\\{([\\s\\S]*)$/;\nconst OUTER_EXPRESSION = /^([\\s\\S]*?)\\{\\{([\\s\\S]*)}}([\\s\\S]*)$/;\nconst BINDING_EXPRESSION = /^([^,\"'{}()/:[\\]\\s]+)\\s+([^\\s:].*)/;\nclass Interpolated {\n constructor(text) {\n this.text = text;\n }\n trim(string) {\n return string === null ? \"\" : string.trim();\n }\n}\nclass Expression extends Interpolated {\n asAttr(context, globals, node) {\n return new Parser().parseExpression(this.text, context, globals, node)();\n }\n *textNodeReplacement(textNode) {\n const text = this.trim(this.text);\n const ownerDocument = textNode ? textNode.ownerDocument : document;\n const firstChar = text[0];\n const lastChar = text[text.length - 1];\n let closeComment = true;\n let binding;\n if (firstChar === \"#\") {\n if (lastChar === \"/\") {\n binding = text.slice(1, -1);\n } else {\n binding = text.slice(1);\n closeComment = false;\n }\n const matches = binding.match(BINDING_EXPRESSION);\n if (matches) {\n binding = matches[1] + \":\" + matches[2];\n }\n } else if (firstChar === \"/\") {\n } else if (firstChar === \"{\" && lastChar === \"}\") {\n binding = \"html:\" + this.trim(text.slice(1, -1));\n } else {\n binding = \"text:\" + this.trim(text);\n }\n if (binding) {\n yield ownerDocument.createComment(\"ko \" + binding);\n }\n if (closeComment) {\n yield ownerDocument.createComment(\"/ko\");\n }\n }\n}\nclass Text extends Interpolated {\n asAttr() {\n return this.text;\n }\n *textNodeReplacement() {\n yield document.createTextNode(this.text.replace(/\"/g, '\\\\\"'));\n }\n}\nexport function* innerParse(text) {\n const innerMatch = text.match(INNER_EXPRESSION);\n if (innerMatch) {\n const [pre, inner, post] = innerMatch.slice(1);\n yield* innerParse(pre);\n yield new Text(inner);\n yield new Expression(post);\n } else {\n yield new Expression(text);\n }\n}\nexport function* parseOuterMatch(outerMatch) {\n if (!outerMatch) {\n return;\n }\n const [pre, inner, post] = outerMatch.slice(1);\n yield new Text(pre);\n yield* innerParse(inner);\n yield new Text(post);\n}\nexport function* parseInterpolation(text) {\n for (const textOrExpr of parseOuterMatch(text?.match(OUTER_EXPRESSION))) {\n if (textOrExpr.text) {\n yield textOrExpr;\n }\n }\n}\n", "// @tko/provider.mustache \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nimport { Provider } from \"@tko/provider\";\nimport { parseInterpolation } from \"./mustacheParser\";\nconst DEFAULT_ATTRIBUTE_BINDING_MAP = { value: \"value\", checked: \"checked\", class: \"css\" };\nexport default class AttributeMustacheProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE];\n }\n constructor(params = null) {\n super(params);\n this.ATTRIBUTES_TO_SKIP = new Set(params?.attributesToSkip || [\"data-bind\"]);\n this.ATTRIBUTES_BINDING_MAP = params?.attributesBindingMap || DEFAULT_ATTRIBUTE_BINDING_MAP;\n }\n *attributesToInterpolate(attributes) {\n for (const attr of Array.from(attributes)) {\n if (this.ATTRIBUTES_TO_SKIP.has(attr.name)) {\n continue;\n }\n if (attr.specified && attr.value.includes(\"{{\")) {\n yield attr;\n }\n }\n }\n nodeHasBindings(node) {\n if (!(node instanceof Element)) {\n return false;\n }\n return !this.attributesToInterpolate(node.attributes).next().done;\n }\n partsTogether(parts, context, node, ...valueToWrite) {\n if (parts.length > 1) {\n return parts.map(\n (p) => unwrap(p.asAttr(context, this.globals, node))\n ).join(\"\");\n }\n const part = parts[0].asAttr(context, this.globals);\n if (valueToWrite.length) {\n part(valueToWrite[0]);\n }\n return part;\n }\n attributeBinding(name, parts) {\n return [name, parts];\n }\n *bindingParts(node, context) {\n for (const attr of this.attributesToInterpolate(node.attributes)) {\n const parts = Array.from(parseInterpolation(attr.value));\n if (parts.length) {\n yield this.attributeBinding(attr.name, parts);\n }\n }\n }\n getPossibleDirectBinding(attrName) {\n const bindingName = this.ATTRIBUTES_BINDING_MAP[attrName];\n return bindingName && this.bindingHandlers.get(attrName);\n }\n *bindingObjects(node, context) {\n for (const [attrName, parts] of this.bindingParts(node, context)) {\n const bindingForAttribute = this.getPossibleDirectBinding(attrName);\n const handler = bindingForAttribute ? attrName : `attr.${attrName}`;\n const accessorFn = bindingForAttribute ? (...v) => this.partsTogether(parts, context, node, ...v) : (...v) => ({ [attrName]: this.partsTogether(parts, context, node, ...v) });\n node.removeAttribute(attrName);\n yield { [handler]: accessorFn };\n }\n }\n getBindingAccessors(node, context) {\n if (!(node instanceof Element)) {\n return false;\n }\n if (context === void 0) context = {};\n return Object.assign({}, ...this.bindingObjects(node, context));\n }\n}\n", "// @tko/provider.mustache \uD83E\uDD4A 4.0.0-beta1.6 ESM\n\"use strict\";\nimport { Provider } from \"@tko/provider\";\nimport { parseInterpolation } from \"./mustacheParser\";\nexport default class TextMustacheProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.TEXT_NODE];\n }\n *textToNodes(textNode) {\n const parent = textNode.parentNode;\n const isTextarea = parent && parent.nodeName === \"TEXTAREA\";\n const hasStash = textNode.nodeValue && textNode.nodeValue.includes(\"{{\");\n if (!hasStash || isTextarea) {\n return;\n }\n for (const part of parseInterpolation(textNode.nodeValue)) {\n yield* part.textNodeReplacement(textNode);\n }\n }\n textInterpolation(textNode) {\n const newNodes = Array.from(this.textToNodes(textNode));\n if (newNodes.length === 0) {\n return null;\n }\n if (textNode.parentNode) {\n const parent = textNode.parentNode;\n const n = newNodes.length;\n for (let i = 0; i < n; ++i) {\n parent.insertBefore(newNodes[i], textNode);\n }\n parent.removeChild(textNode);\n }\n return newNodes;\n }\n /**\n * We convert as follows:\n *\n * {{# ... }} into <!-- ko ... -->\n * {{/ ... }} into <!-- /ko -->\n * {{# ... /}} into <!-- ko ... --><!-- /ko -->\n * {{ ... }} into <!-- ko text: ... --><!-- /ko -->\n * {{{ ... }}} into <!-- ko html: ... --><!-- /ko -->\n *\n * VirtualProvider can then pick up and do the actual binding.\n */\n preprocessNode(node) {\n return this.textInterpolation(node);\n }\n}\n", "// @tko/provider.native \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { isObservable } from \"@tko/observable\";\nimport { Provider } from \"@tko/provider\";\nexport const NATIVE_BINDINGS = /* @__PURE__ */ Symbol(\"Knockout native bindings\");\nexport default class NativeProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE, Node.TEXT_NODE];\n }\n get preemptive() {\n return true;\n }\n nodeHasBindings(node, context) {\n if (!node[NATIVE_BINDINGS]) {\n return false;\n }\n return Object.keys(node[NATIVE_BINDINGS] || {}).some((key) => key.startsWith(\"ko-\"));\n }\n /**\n * There can be only one preprocessor; when there are native bindings,\n * prevent re-entrance (and likely XSS) from the `{{ }}` provider.\n */\n preprocessNode(node) {\n return node[NATIVE_BINDINGS] ? [node] : null;\n }\n onlyBindings([name]) {\n return name.startsWith(\"ko-\");\n }\n valueAsAccessor([name, value]) {\n const bindingName = name.replace(/^ko-/, \"\");\n const valueFn = isObservable(value) ? value : () => value;\n return { [bindingName]: valueFn };\n }\n /**\n * Return as valueAccessor function all the entries matching `ko-*`\n * @param {Node} node\n */\n getBindingAccessors(node, context) {\n const bindings = Object.entries(node[NATIVE_BINDINGS] || {}).filter(this.onlyBindings);\n if (!bindings.length) {\n return null;\n }\n return Object.assign({}, ...bindings.map(this.valueAsAccessor));\n }\n /**\n * Add a named-value to the given node.\n * @param {Node} node\n * @param {string} name\n * @param {any} value\n */\n static addValueToNode(node, name, value) {\n const obj = node[NATIVE_BINDINGS] || (node[NATIVE_BINDINGS] = {});\n obj[name] = value;\n }\n /**\n *\n * @param {Node} node\n * @return {object} the stored values\n */\n static getNodeValues(node) {\n return node[NATIVE_BINDINGS];\n }\n}\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { objectForEach } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nexport const attr = {\n update: function(element, valueAccessor, _allBindings) {\n const value = unwrap(valueAccessor()) || {};\n objectForEach(value, function(attrName, attrValue) {\n attrValue = unwrap(attrValue);\n const prefixLen = attrName.indexOf(\":\");\n const namespace = prefixLen > 0 && element.lookupNamespaceURI(attrName.substr(0, prefixLen));\n const toRemove = attrValue === false || attrValue === null || attrValue === void 0;\n if (toRemove) {\n if (namespace) {\n element.removeAttributeNS(namespace, attrName);\n } else {\n element.removeAttribute(attrName);\n }\n } else {\n attrValue = attrValue.toString();\n if (namespace) {\n element.setAttributeNS(namespace, attrName, attrValue);\n } else {\n element.setAttribute(attrName, attrValue);\n }\n }\n if (attrName === \"name\") {\n element.name = toRemove ? \"\" : attrValue;\n }\n });\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { registerEventHandler, arrayIndexOf, addOrRemoveItem } from \"@tko/utils\";\nimport { unwrap, dependencyDetection, isWriteableObservable } from \"@tko/observable\";\nimport { computed, pureComputed } from \"@tko/computed\";\nexport const checked = {\n after: [\"value\", \"attr\"],\n init: function(element, valueAccessor, allBindings) {\n const checkedValue2 = pureComputed(function() {\n if (allBindings.has(\"checkedValue\")) {\n return unwrap(allBindings.get(\"checkedValue\"));\n } else if (useElementValue) {\n if (allBindings.has(\"value\")) {\n return unwrap(allBindings.get(\"value\"));\n } else {\n return element.value;\n }\n }\n });\n function updateModel() {\n let isChecked = element.checked, elemValue = checkedValue2();\n if (dependencyDetection.isInitial()) {\n return;\n }\n if (!isChecked && (isRadio || dependencyDetection.getDependenciesCount())) {\n return;\n }\n const modelValue = dependencyDetection.ignore(valueAccessor);\n if (valueIsArray) {\n const writableValue = rawValueIsNonArrayObservable ? modelValue.peek() : modelValue, saveOldValue = oldElemValue;\n oldElemValue = elemValue;\n if (saveOldValue !== elemValue) {\n if (isChecked) {\n addOrRemoveItem(writableValue, elemValue, true);\n addOrRemoveItem(writableValue, saveOldValue, false);\n }\n oldElemValue = elemValue;\n } else {\n addOrRemoveItem(writableValue, elemValue, isChecked);\n }\n if (rawValueIsNonArrayObservable && isWriteableObservable(modelValue)) {\n modelValue(writableValue);\n }\n } else {\n if (isCheckbox) {\n if (elemValue === void 0) {\n elemValue = isChecked;\n } else if (!isChecked) {\n elemValue = void 0;\n }\n }\n const modelValue2 = valueAccessor(elemValue, { onlyIfChanged: true });\n if (isWriteableObservable(modelValue2) && modelValue2.peek() !== elemValue) {\n modelValue2(elemValue);\n }\n }\n }\n function updateView() {\n const modelValue = unwrap(valueAccessor());\n const elemValue = checkedValue2();\n if (valueIsArray) {\n element.checked = arrayIndexOf(modelValue, elemValue) >= 0;\n oldElemValue = elemValue;\n } else if (isCheckbox && elemValue === void 0) {\n element.checked = !!modelValue;\n } else {\n element.checked = checkedValue2() === modelValue;\n }\n }\n const isCheckbox = element.type == \"checkbox\", isRadio = element.type == \"radio\";\n if (!isCheckbox && !isRadio) {\n return;\n }\n let rawValue = valueAccessor(), valueIsArray = isCheckbox && unwrap(rawValue) instanceof Array, rawValueIsNonArrayObservable = !(valueIsArray && rawValue.push && rawValue.splice), useElementValue = isRadio || valueIsArray, oldElemValue = valueIsArray ? checkedValue2() : void 0;\n computed(updateModel, null, { disposeWhenNodeIsRemoved: element });\n registerEventHandler(element, \"click\", updateModel);\n computed(updateView, null, { disposeWhenNodeIsRemoved: element });\n rawValue = void 0;\n }\n};\nexport const checkedValue = {\n update: function(element, valueAccessor) {\n element.value = unwrap(valueAccessor());\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport {\n objectForEach,\n registerEventHandler,\n throttle as throttleFn,\n debounce as debounceFn\n} from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nexport function makeEventHandlerShortcut(eventName) {\n return {\n init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {\n const newValueAccessor = function() {\n const result = {};\n result[eventName] = valueAccessor();\n return result;\n };\n eventHandler.init.call(this, element, newValueAccessor, allBindings, viewModel, bindingContext);\n }\n };\n}\nfunction makeDescriptor(handlerOrObject) {\n return typeof handlerOrObject === \"function\" ? { handler: handlerOrObject } : handlerOrObject || {};\n}\nexport const eventHandler = {\n init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {\n const eventsToHandle = valueAccessor() || {};\n objectForEach(eventsToHandle, function(eventName, descriptor) {\n const { passive, capture, once, debounce, throttle } = makeDescriptor(descriptor);\n const eventOptions = (capture || passive || once) && { capture, passive, once };\n let eventHandlerFn = (event, ...more) => {\n let handlerReturnValue;\n const { handler, passive: passive2, bubble, preventDefault } = makeDescriptor(valueAccessor()[eventName]);\n try {\n if (handler) {\n const possiblyUpdatedViewModel = bindingContext.$data;\n const argsForHandler = [possiblyUpdatedViewModel, event, ...more];\n handlerReturnValue = handler.apply(possiblyUpdatedViewModel, argsForHandler);\n }\n } finally {\n if (preventDefault !== void 0) {\n if (unwrap(preventDefault)) {\n event.preventDefault();\n }\n } else if (handlerReturnValue !== true) {\n if (!passive2) {\n event.preventDefault();\n }\n }\n }\n const bubbleMark = allBindings.get(eventName + \"Bubble\") !== false;\n if (bubble === false || !bubbleMark) {\n event.cancelBubble = true;\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n }\n };\n if (debounce) {\n eventHandlerFn = debounceFn(eventHandlerFn, debounce);\n }\n if (throttle) {\n eventHandlerFn = throttleFn(eventHandlerFn, throttle);\n }\n registerEventHandler(element, eventName, eventHandlerFn, eventOptions || false);\n });\n }\n};\nexport const onHandler = {\n init: eventHandler.init,\n preprocess: function(value, key, addBinding) {\n addBinding(key.replace(\"on.\", \"\"), \"=>\" + value);\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { makeEventHandlerShortcut } from \"./event\";\nexport const click = makeEventHandlerShortcut(\"click\");\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { createSymbolOrString, toggleDomNodeCssClass, objectForEach, stringTrim } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nexport const css = {\n aliases: [\"class\"],\n update: function(element, valueAccessor) {\n let value = unwrap(valueAccessor());\n if (value !== null && typeof value === \"object\") {\n objectForEach(value, function(className, shouldHaveClass) {\n shouldHaveClass = unwrap(shouldHaveClass);\n toggleDomNodeCssClass(element, className, shouldHaveClass);\n });\n } else {\n value = stringTrim(String(value || \"\"));\n toggleDomNodeCssClass(element, element[css.classesWrittenByBindingKey], false);\n element[css.classesWrittenByBindingKey] = value;\n toggleDomNodeCssClass(element, value, true);\n }\n },\n classesWrittenByBindingKey: createSymbolOrString(\"__ko__cssValue\")\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { BindingHandler } from \"@tko/bind\";\nexport default class DescendantsCompleteHandler extends BindingHandler {\n onDescendantsComplete() {\n if (typeof this.value === \"function\") {\n this.value(this.$element);\n }\n }\n static get allowVirtualElements() {\n return true;\n }\n}\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nexport const enable = {\n update: function(element, valueAccessor) {\n const value = unwrap(valueAccessor());\n if (value && element.disabled) {\n element.removeAttribute(\"disabled\");\n } else if (!value && !element.disabled) {\n element.disabled = true;\n }\n }\n};\nexport const disable = {\n update: function(element, valueAccessor) {\n enable.update(element, function() {\n return !unwrap(valueAccessor());\n });\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { createSymbolOrString, triggerEvent, registerEventHandler } from \"@tko/utils\";\nimport { unwrap, dependencyDetection, isWriteableObservable } from \"@tko/observable\";\nconst hasfocusUpdatingProperty = createSymbolOrString(\"__ko_hasfocusUpdating\");\nconst hasfocusLastValue = createSymbolOrString(\"__ko_hasfocusLastValue\");\nexport const hasfocus = {\n init: function(element, valueAccessor, _allBindings) {\n const handleElementFocusChange = function(isFocused) {\n element[hasfocusUpdatingProperty] = true;\n const ownerDoc = element.ownerDocument;\n if (\"activeElement\" in ownerDoc) {\n let active;\n try {\n active = ownerDoc.activeElement;\n } catch (e) {\n active = ownerDoc.body;\n }\n isFocused = active === element;\n }\n const modelValue = valueAccessor(isFocused, { onlyIfChanged: true });\n if (isWriteableObservable(modelValue) && modelValue.peek() !== isFocused) {\n modelValue(isFocused);\n }\n element[hasfocusLastValue] = isFocused;\n element[hasfocusUpdatingProperty] = false;\n };\n const handleElementFocusIn = handleElementFocusChange.bind(null, true);\n const handleElementFocusOut = handleElementFocusChange.bind(null, false);\n registerEventHandler(element, \"focus\", handleElementFocusIn);\n registerEventHandler(element, \"focusin\", handleElementFocusIn);\n registerEventHandler(element, \"blur\", handleElementFocusOut);\n registerEventHandler(element, \"focusout\", handleElementFocusOut);\n },\n update: function(element, valueAccessor) {\n const value = !!unwrap(valueAccessor());\n if (!element[hasfocusUpdatingProperty] && element[hasfocusLastValue] !== value) {\n if (value) {\n element.focus();\n } else {\n element.blur();\n }\n if (!value && element[hasfocusLastValue]) {\n element.ownerDocument.body.focus();\n }\n dependencyDetection.ignore(triggerEvent, null, [element, value ? \"focusin\" : \"focusout\"]);\n }\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { setHtml } from \"@tko/utils\";\nexport const html = {\n init: function() {\n return { controlsDescendantBindings: true };\n },\n //\n // Modify internal, per ko.punches and :\n // http://stackoverflow.com/a/15348139\n update: function(element, valueAccessor) {\n setHtml(element, valueAccessor());\n },\n allowVirtualElements: true\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { applyBindingsToDescendants } from \"@tko/bind\";\nexport default {\n init: function(element, valueAccessor, _allBindings, _viewModel, bindingContext) {\n const innerContext = bindingContext[\"extend\"](valueAccessor);\n applyBindingsToDescendants(innerContext, element);\n return { controlsDescendantBindings: true };\n },\n allowVirtualElements: true\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport {\n tagNameLower,\n arrayFilter,\n arrayMap,\n setTextContent,\n arrayIndexOf,\n setOptionNodeSelectionState,\n triggerEvent,\n selectExtensions\n} from \"@tko/utils\";\nimport { unwrap, dependencyDetection } from \"@tko/observable\";\nimport { setDomNodeChildrenFromArrayMapping } from \"@tko/bind\";\nconst captionPlaceholder = {};\nexport const options = {\n init: function(element) {\n if (tagNameLower(element) !== \"select\") {\n throw new Error(\"options binding applies only to SELECT elements\");\n }\n while (element.length > 0) {\n element.remove(0);\n }\n return { controlsDescendantBindings: true };\n },\n update: function(element, valueAccessor, allBindings) {\n function selectedOptions() {\n return arrayFilter(element.options, function(node) {\n return node.selected;\n });\n }\n let selectWasPreviouslyEmpty = element.length == 0, multiple = element.multiple, previousScrollTop = !selectWasPreviouslyEmpty && multiple ? element.scrollTop : null, unwrappedArray = unwrap(valueAccessor()), valueAllowUnset = allBindings.get(\"valueAllowUnset\") && allBindings[\"has\"](\"value\"), includeDestroyed = allBindings.get(\"optionsIncludeDestroyed\"), arrayToDomNodeChildrenOptions = {}, captionValue, filteredArray, previousSelectedValues = new Array();\n if (!valueAllowUnset) {\n if (multiple) {\n previousSelectedValues = arrayMap(selectedOptions(), selectExtensions.readValue);\n } else if (element.selectedIndex >= 0) {\n previousSelectedValues.push(selectExtensions.readValue(element.options[element.selectedIndex]));\n }\n }\n if (unwrappedArray) {\n if (typeof unwrappedArray.length === \"undefined\") {\n unwrappedArray = [unwrappedArray];\n }\n filteredArray = arrayFilter(unwrappedArray, function(item) {\n return includeDestroyed || item === void 0 || item === null || !unwrap(item[\"_destroy\"]);\n });\n if (allBindings[\"has\"](\"optionsCaption\")) {\n captionValue = unwrap(allBindings.get(\"optionsCaption\"));\n if (captionValue !== null && captionValue !== void 0) {\n filteredArray.unshift(captionPlaceholder);\n }\n }\n } else {\n }\n function applyToObject(object, predicate, defaultValue) {\n const predicateType = typeof predicate;\n if (predicateType === \"function\") {\n return predicate(object);\n } else if (predicateType == \"string\") {\n return object[predicate];\n } else {\n return defaultValue;\n }\n }\n let itemUpdate = false;\n function optionForArrayItem(arrayEntry, index, oldOptions) {\n if (oldOptions.length) {\n previousSelectedValues = !valueAllowUnset && oldOptions[0].selected ? [selectExtensions.readValue(oldOptions[0])] : [];\n itemUpdate = true;\n }\n const option = element.ownerDocument.createElement(\"option\");\n if (arrayEntry === captionPlaceholder) {\n setTextContent(option, allBindings.get(\"optionsCaption\"));\n selectExtensions.writeValue(option, void 0);\n } else {\n const optionValue = applyToObject(arrayEntry, allBindings.get(\"optionsValue\"), arrayEntry);\n selectExtensions.writeValue(option, unwrap(optionValue));\n const optionText = applyToObject(arrayEntry, allBindings.get(\"optionsText\"), optionValue);\n setTextContent(option, optionText);\n }\n return [option];\n }\n arrayToDomNodeChildrenOptions[\"beforeRemove\"] = function(option) {\n element.removeChild(option);\n };\n function setSelectionCallback(arrayEntry, newOptions) {\n if (itemUpdate && valueAllowUnset) {\n selectExtensions.writeValue(\n element,\n unwrap(allBindings.get(\"value\")),\n true\n /* allowUnset */\n );\n } else if (previousSelectedValues.length) {\n const isSelected = arrayIndexOf(previousSelectedValues, selectExtensions.readValue(newOptions[0])) >= 0;\n setOptionNodeSelectionState(newOptions[0], isSelected);\n if (itemUpdate && !isSelected) {\n dependencyDetection.ignore(triggerEvent, null, [element, \"change\"]);\n }\n }\n }\n let callback = setSelectionCallback;\n if (allBindings[\"has\"](\"optionsAfterRender\") && typeof allBindings.get(\"optionsAfterRender\") === \"function\") {\n callback = function(arrayEntry, newOptions) {\n setSelectionCallback(arrayEntry, newOptions);\n dependencyDetection.ignore(allBindings.get(\"optionsAfterRender\"), null, [\n newOptions[0],\n arrayEntry !== captionPlaceholder ? arrayEntry : void 0\n ]);\n };\n }\n setDomNodeChildrenFromArrayMapping(\n element,\n filteredArray,\n optionForArrayItem,\n arrayToDomNodeChildrenOptions,\n callback\n );\n dependencyDetection.ignore(function() {\n if (valueAllowUnset) {\n selectExtensions.writeValue(\n element,\n unwrap(allBindings.get(\"value\")),\n true\n /* allowUnset */\n );\n } else {\n let selectionChanged;\n if (multiple) {\n selectionChanged = previousSelectedValues.length && selectedOptions().length < previousSelectedValues.length;\n } else {\n selectionChanged = previousSelectedValues.length && element.selectedIndex >= 0 ? selectExtensions.readValue(element.options[element.selectedIndex]) !== previousSelectedValues[0] : previousSelectedValues.length || element.selectedIndex >= 0;\n }\n if (selectionChanged) {\n triggerEvent(element, \"change\");\n }\n }\n });\n if (previousScrollTop && Math.abs(previousScrollTop - element.scrollTop) > 20) {\n element.scrollTop = previousScrollTop;\n }\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport {\n arrayForEach,\n setOptionNodeSelectionState,\n arrayIndexOf,\n registerEventHandler,\n tagNameLower,\n selectExtensions\n} from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nexport const selectedOptions = {\n after: [\"options\", \"foreach\"],\n init: function(element, valueAccessor, _allBindings) {\n registerEventHandler(element, \"change\", function() {\n const value = valueAccessor(), valueToWrite = new Array();\n arrayForEach(element.getElementsByTagName(\"option\"), function(node) {\n if (node.selected) {\n valueToWrite.push(selectExtensions.readValue(node));\n }\n });\n valueAccessor(valueToWrite);\n });\n },\n update: function(element, valueAccessor) {\n if (tagNameLower(element) != \"select\") {\n throw new Error(\"values binding applies only to SELECT elements\");\n }\n const newValue = unwrap(valueAccessor()), previousScrollTop = element.scrollTop;\n if (newValue && typeof newValue.length === \"number\") {\n arrayForEach(element.getElementsByTagName(\"option\"), function(node) {\n const isSelected = arrayIndexOf(newValue, selectExtensions.readValue(node)) >= 0;\n if (node.selected != isSelected) {\n setOptionNodeSelectionState(node, isSelected);\n }\n });\n }\n element.scrollTop = previousScrollTop;\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { objectForEach, options } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nexport const style = {\n update: function(element, valueAccessor) {\n const value = unwrap(valueAccessor() || {});\n objectForEach(value, function(styleName, styleValue) {\n styleValue = unwrap(styleValue);\n if (styleValue === null || styleValue === void 0 || styleValue === false) {\n styleValue = \"\";\n }\n if (options.jQuery) {\n jQuery(element).css(styleName, styleValue);\n } else {\n styleName = styleName.replace(/-(\\w)/g, (all, letter) => letter.toUpperCase());\n const previousStyle = element.style[styleName];\n element.style[styleName] = styleValue;\n if (styleValue !== previousStyle && element.style[styleName] === previousStyle && !isNaN(styleValue)) {\n element.style[styleName] = styleValue + \"px\";\n }\n }\n });\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { registerEventHandler } from \"@tko/utils\";\nexport const submit = {\n init: function(element, valueAccessor, _allBindings, _viewModel, bindingContext) {\n if (typeof valueAccessor() !== \"function\") {\n throw new Error(\"The value for a submit binding must be a function\");\n }\n registerEventHandler(element, \"submit\", function(event) {\n let handlerReturnValue;\n const value = valueAccessor();\n try {\n handlerReturnValue = value.call(bindingContext[\"$data\"], element);\n } finally {\n if (handlerReturnValue !== true) {\n if (event.preventDefault) {\n event.preventDefault();\n } else {\n event.returnValue = false;\n }\n }\n }\n });\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { setTextContent } from \"@tko/utils\";\nexport const text = {\n init: function() {\n return { controlsDescendantBindings: true };\n },\n update: function(element, valueAccessor) {\n setTextContent(element, valueAccessor());\n },\n allowVirtualElements: true\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { safeSetTimeout, options, arrayForEach } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nimport { BindingHandler } from \"@tko/bind\";\nexport const MSIE_REGEX = /MSIE ([^ ;]+)|rv:([^ )]+)/;\nlet operaVersion, safariVersion, firefoxVersion, ieVersion;\nclass TextInput extends BindingHandler {\n get aliases() {\n return \"textinput\";\n }\n constructor(...args) {\n super(...args);\n this.previousElementValue = this.$element.value;\n if (options.debug && this.constructor._forceUpdateOn) {\n arrayForEach(this.constructor._forceUpdateOn, (eventName) => {\n if (eventName.slice(0, 5) === \"after\") {\n this.addEventListener(eventName.slice(5), \"deferUpdateModel\");\n } else {\n this.addEventListener(eventName, \"updateModel\");\n }\n });\n }\n for (const eventName of this.eventsIndicatingSyncValueChange()) {\n this.addEventListener(eventName, \"updateModel\");\n }\n for (const eventName of this.eventsIndicatingDeferValueChange()) {\n this.addEventListener(eventName, \"deferUpdateModel\");\n }\n this.computed(\"updateView\");\n }\n eventsIndicatingSyncValueChange() {\n return [\"input\", \"change\", \"blur\"];\n }\n eventsIndicatingDeferValueChange() {\n return [];\n }\n updateModel(event) {\n const element = this.$element;\n clearTimeout(this.timeoutHandle);\n this.elementValueBeforeEvent = this.timeoutHandle = void 0;\n const elementValue = element.value;\n if (this.previousElementValue !== elementValue) {\n if (options.debug && event) {\n ;\n element._ko_textInputProcessedEvent = event.type;\n }\n this.previousElementValue = elementValue;\n this.value = elementValue;\n }\n }\n deferUpdateModel(event) {\n const element = this.$element;\n if (!this.timeoutHandle) {\n this.elementValueBeforeEvent = element.value;\n const handler = options.debug ? this.updateModel.bind(this, { type: event.type }) : this.updateModel;\n this.timeoutHandle = safeSetTimeout(handler, 4);\n }\n }\n updateView() {\n let modelValue = unwrap(this.value);\n if (modelValue === null || modelValue === void 0) {\n modelValue = \"\";\n }\n if (this.elementValueBeforeEvent !== void 0 && modelValue === this.elementValueBeforeEvent) {\n setTimeout(this.updateView.bind(this), 4);\n } else if (this.$element.value !== modelValue) {\n this.previousElementValue = modelValue;\n this.$element.value = modelValue;\n this.previousElementValue = this.$element.value;\n }\n }\n}\nclass TextInputIE extends TextInput {\n eventsIndicatingSyncValueChange() {\n return [...super.eventsIndicatingSyncValueChange(), \"keypress\"];\n }\n}\nclass TextInputLegacySafari extends TextInput {\n eventsIndicatingDeferValueChange() {\n return [\"keydown\", \"paste\", \"cut\"];\n }\n}\nclass TextInputLegacyOpera extends TextInput {\n eventsIndicatingDeferValueChange() {\n return [\"keydown\"];\n }\n}\nclass TextInputLegacyFirefox extends TextInput {\n eventsIndicatingValueChange() {\n return [\n ...super.eventsIndicatingSyncValueChange(),\n // Firefox <= 3.6 doesn't fire the 'input' event when text is filled in through autocomplete\n \"DOMAutoComplete\",\n // Firefox <=3.5 doesn't fire the 'input' event when text is dropped into the input.\n \"dragdrop\",\n // < 3.5\n \"drop\"\n // 3.5\n ];\n }\n}\nconst w = options.global;\nif (w.navigator) {\n const parseVersion = (matches) => matches && parseFloat(matches[1]);\n const userAgent = w.navigator.userAgent;\n const isChrome = userAgent.match(/Chrome\\/([^ ]+)/);\n if (!isChrome) {\n operaVersion = w.opera && w.opera.version && parseInt(w.opera.version());\n safariVersion = parseVersion(userAgent.match(/Version\\/([^ ]+) Safari/));\n firefoxVersion = parseVersion(userAgent.match(/Firefox\\/([^ ]*)/));\n const ieMatch = userAgent.match(MSIE_REGEX);\n ieVersion = ieMatch && (parseFloat(ieMatch[1]) || parseFloat(ieMatch[2]));\n }\n}\nexport const textInput = ieVersion && ieVersion <= 11 ? TextInputIE : safariVersion && safariVersion < 5 ? TextInputLegacySafari : operaVersion && operaVersion < 11 ? TextInputLegacyOpera : firefoxVersion && firefoxVersion < 4 ? TextInputLegacyFirefox : TextInput;\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nexport const uniqueName = {\n init: function(element, valueAccessor) {\n if (valueAccessor()) {\n const name = \"ko_unique_\" + ++uniqueName.currentIndex;\n element.name = name;\n }\n },\n currentIndex: 0\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { stringStartsWith, safeSetTimeout, tagNameLower, arrayForEach, selectExtensions } from \"@tko/utils\";\nimport { unwrap, dependencyDetection } from \"@tko/observable\";\nimport { applyBindingAccessorsToNode, BindingHandler } from \"@tko/bind\";\nimport { MSIE_REGEX } from \"./textInput\";\nexport class value extends BindingHandler {\n static get after() {\n return [\"options\", \"foreach\", \"template\"];\n }\n constructor(...args) {\n super(...args);\n if (this.isCheckboxOrRadio) {\n applyBindingAccessorsToNode(this.$element, { checkedValue: this.valueAccessor });\n return;\n }\n this.propertyChangedFired = false;\n this.elementValueBeforeEvent = null;\n if (this.ieAutoCompleteHackNeeded) {\n this.addEventListener(\"propertyChange\", () => this.propertyChangedFired = true);\n this.addEventListener(\"focus\", () => this.propertyChangedFired = false);\n this.addEventListener(\"blur\", () => this.propertyChangeFired && this.valueUpdateHandler());\n }\n arrayForEach(this.eventsToCatch, (eventName) => this.registerEvent(eventName));\n if (this.isInput && this.$element.type === \"file\") {\n this.updateFromModel = this.updateFromModelForFile;\n } else {\n this.updateFromModel = this.updateFromModelForValue;\n }\n this.computed(\"updateFromModel\");\n }\n get eventsToCatch() {\n const requestedEventsToCatch = this.allBindings.get(\"valueUpdate\");\n const requestedEventsArray = typeof requestedEventsToCatch === \"string\" ? [requestedEventsToCatch] : requestedEventsToCatch || [];\n return [.../* @__PURE__ */ new Set([\"change\", ...requestedEventsArray])];\n }\n get isInput() {\n return tagNameLower(this.$element) === \"input\";\n }\n get isCheckboxOrRadio() {\n const e = this.$element;\n return this.isInput && (e.type == \"checkbox\" || e.type == \"radio\");\n }\n // Workaround for https://github.com/SteveSanderson/knockout/issues/122\n // IE doesn't fire \"change\" events on textboxes if the user selects a value from its autocomplete list\n get ieAutoCompleteHackNeeded() {\n return this.isInput && this.$element.type == \"text\" && this.$element.autocomplete != \"off\" && (!this.$element.form || this.$element.form.autocomplete != \"off\") && MSIE_REGEX.test(window.navigator.userAgent);\n }\n valueUpdateHandler() {\n this.elementValueBeforeEvent = null;\n this.propertyChangedFired = false;\n this.value = selectExtensions.readValue(this.$element);\n }\n registerEvent(eventName) {\n let handler = this.valueUpdateHandler.bind(this);\n if (stringStartsWith(eventName, \"after\")) {\n handler = () => {\n this.elementValueBeforeEvent = selectExtensions.readValue(this.$element);\n safeSetTimeout(this.valueUpdateHandler.bind(this), 0);\n };\n eventName = eventName.substring(\n 5\n /* 'after'.length */\n );\n }\n this.addEventListener(eventName, handler);\n }\n updateFromModelForFile() {\n const newValue = unwrap(this.value);\n if (newValue === null || newValue === void 0 || newValue === \"\") {\n this.$element.value = \"\";\n } else {\n dependencyDetection.ignore(this.valueUpdateHandler, this);\n }\n }\n updateFromModelForValue() {\n const element = this.$element;\n const newValue = unwrap(this.value);\n const elementValue = selectExtensions.readValue(element);\n if (this.elementValueBeforeEvent !== null && newValue === this.elementValueBeforeEvent) {\n safeSetTimeout(this.updateFromModel.bind(this), 0);\n return;\n }\n if (newValue === elementValue && elementValue !== void 0) {\n return;\n }\n if (tagNameLower(element) === \"select\") {\n const allowUnset = this.allBindings.get(\"valueAllowUnset\");\n selectExtensions.writeValue(element, newValue, allowUnset);\n if (!allowUnset && newValue !== selectExtensions.readValue(element)) {\n dependencyDetection.ignore(this.valueUpdateHandler, this);\n }\n } else {\n selectExtensions.writeValue(element, newValue);\n }\n }\n}\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nexport const visible = {\n update: function(element, valueAccessor) {\n const value = unwrap(valueAccessor());\n const isCurrentlyVisible = !(element.style.display === \"none\");\n if (value && !isCurrentlyVisible) {\n element.style.display = \"\";\n } else if (!value && isCurrentlyVisible) {\n element.style.display = \"none\";\n }\n }\n};\nexport const hidden = {\n update: function(element, valueAccessor) {\n visible.update.call(this, element, () => !unwrap(valueAccessor()));\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { applyBindingsToDescendants } from \"@tko/bind\";\nexport const using = {\n init: function(element, valueAccessor, _allBindings, _viewModel, bindingContext) {\n const innerContext = bindingContext.createChildContext(valueAccessor);\n applyBindingsToDescendants(innerContext, element);\n return { controlsDescendantBindings: true };\n },\n allowVirtualElements: true\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { attr } from \"./attr\";\nimport { checked, checkedValue } from \"./checked\";\nimport { click } from \"./click\";\nimport { css } from \"./css\";\nimport descendantsComplete from \"./descendantsComplete\";\nimport { enable, disable } from \"./enableDisable\";\nimport { eventHandler, onHandler } from \"./event\";\nimport { hasfocus } from \"./hasfocus\";\nimport { html } from \"./html\";\nimport $let from \"./let\";\nimport { options } from \"./options\";\nimport { selectedOptions } from \"./selectedOptions\";\nimport { style } from \"./style\";\nimport { submit } from \"./submit\";\nimport { text } from \"./text\";\nimport { textInput } from \"./textInput\";\nimport { uniqueName } from \"./uniqueName\";\nimport { value } from \"./value\";\nimport { visible, hidden } from \"./visible\";\nimport { using } from \"./using\";\nexport const bindings = {\n attr,\n checked,\n checkedValue,\n click,\n css,\n class: css,\n descendantsComplete,\n enable,\n event: eventHandler,\n disable,\n hasfocus,\n hasFocus: hasfocus,\n hidden,\n html,\n let: $let,\n on: onHandler,\n options,\n selectedOptions,\n style,\n submit,\n text,\n textInput,\n textinput: textInput,\n uniqueName,\n using,\n value,\n visible\n};\n", "// @tko/binding.if \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { cloneNodes, virtualElements, cleanNode, domData } from \"@tko/utils\";\nimport { dependencyDetection, observable } from \"@tko/observable\";\nimport { applyBindingsToDescendants, AsyncBindingHandler } from \"@tko/bind\";\nexport default class ConditionalBindingHandler extends AsyncBindingHandler {\n get bindingContext() {\n throw new Error(\"bindingContext() must be implemented in the child class\");\n }\n constructor(params) {\n super(params);\n this.hasElse = this.detectElse(this.$element);\n const elseChainSatisfied = this.completesElseChain = observable();\n domData.set(this.$element, \"conditional\", { elseChainSatisfied });\n }\n getIfElseNodes() {\n if (this.ifElseNodes) {\n return this.ifElseNodes;\n }\n if (dependencyDetection.getDependenciesCount() || this.hasElse) {\n return this.cloneIfElseNodes(this.$element, this.hasElse);\n }\n }\n renderStatus() {\n throw new Error(\"renderStatus() must be implemented in the child class\");\n }\n render() {\n const isFirstRender = !this.ifElseNodes;\n const { shouldDisplay } = this.renderStatus();\n this.ifElseNodes = this.getIfElseNodes() || {};\n if (shouldDisplay) {\n const useOriginalNodes = isFirstRender && !this.hasElse;\n this.renderAndApplyBindings(this.ifElseNodes.ifNodes, useOriginalNodes);\n } else if (this.hasElse) {\n this.renderAndApplyBindings(this.ifElseNodes.elseNodes);\n } else {\n virtualElements.emptyNode(this.$element);\n }\n }\n async renderAndApplyBindings(nodes, useOriginalNodes) {\n if (!useOriginalNodes) {\n virtualElements.setDomNodeChildren(this.$element, cloneNodes(nodes));\n }\n const bound = await applyBindingsToDescendants(this.bindingContext, this.$element);\n this.completeBinding(bound);\n }\n /**\n * This may be truthy for the `else` binding.\n */\n get elseChainIsAlreadySatisfied() {\n return false;\n }\n /**\n * Test a node for whether it represents an 'else' condition.\n * @param {HTMLElement} node to be tested\n * @return {Boolean} true when\n *\n * Matches <!-- else -->\n */\n isElseNode(node) {\n return node.nodeType === Node.COMMENT_NODE && node.nodeValue.trim().toLowerCase() === \"else\";\n }\n detectElse(element) {\n const children = virtualElements.childNodes(element);\n for (let i = 0, j = children.length; i < j; ++i) {\n if (this.isElseNode(children[i])) {\n return true;\n }\n }\n return false;\n }\n /**\n * Clone the nodes, returning `ifNodes`, `elseNodes`\n * @param {HTMLElement} element The nodes to be cloned\n * @param {boolean} hasElse short-circuit to speed up the inner-loop.\n * @return {object} Containing the cloned nodes.\n */\n cloneIfElseNodes(element, hasElse) {\n const children = virtualElements.childNodes(element);\n const ifNodes = new Array();\n const elseNodes = new Array();\n let target = ifNodes;\n for (let i = 0, j = children.length; i < j; ++i) {\n if (hasElse && this.isElseNode(children[i])) {\n target = elseNodes;\n hasElse = false;\n } else {\n target.push(cleanNode(children[i].cloneNode(true)));\n }\n }\n return { ifNodes, elseNodes };\n }\n get controlsDescendants() {\n return true;\n }\n static get allowVirtualElements() {\n return true;\n }\n}\n", "// @tko/binding.if \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nimport ConditionalBindingHandler from \"./ConditionalBindingHandler\";\nexport class IfBindingHandler extends ConditionalBindingHandler {\n constructor(...args) {\n super(...args);\n this.ifCondition = this.computed(() => !!unwrap(this.value));\n this.computed(\"render\");\n }\n shouldDisplayIf() {\n return this.ifCondition();\n }\n get bindingContext() {\n return this.ifCondition.isActive() ? this.$context.extend(() => {\n this.ifCondition();\n return null;\n }) : this.$context;\n }\n renderStatus() {\n let shouldDisplay = this.shouldDisplayIf();\n if (this.elseChainIsAlreadySatisfied) {\n shouldDisplay = false;\n this.completesElseChain(true);\n } else {\n this.completesElseChain(shouldDisplay);\n }\n return { shouldDisplay };\n }\n}\nexport class UnlessBindingHandler extends IfBindingHandler {\n shouldDisplayIf() {\n return !super.shouldDisplayIf();\n }\n}\n", "// @tko/binding.if \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { options } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nimport ConditionalBindingHandler from \"./ConditionalBindingHandler\";\nexport class WithBindingHandler extends ConditionalBindingHandler {\n constructor(...args) {\n super(...args);\n this.asOption = this.allBindings.get(\"as\");\n const conditionalFn = this.asOption && !options.createChildContextWithAs ? () => Boolean(unwrap(this.value)) : () => unwrap(this.value);\n this.conditional = this.computed(conditionalFn);\n this.computed(\"render\");\n }\n get bindingContext() {\n if (!this.asOption) {\n return this.$context.createChildContext(this.valueAccessor);\n }\n return options.createChildContextWithAs ? this.$context.createChildContext(this.value, this.asOption) : this.$context.extend({ [this.asOption]: this.value });\n }\n renderStatus() {\n const shouldDisplay = Boolean(this.conditional());\n return { shouldDisplay };\n }\n}\n", "// @tko/binding.if \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { virtualElements, domData } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nimport { IfBindingHandler } from \"./ifUnless\";\nexport class ElseBindingHandler extends IfBindingHandler {\n shouldDisplayIf() {\n return super.shouldDisplayIf() || this.value === void 0;\n }\n /**\n * Return any conditional that precedes the given node.\n * @return {object} { elseChainSatisfied: observable }\n */\n get elseChainIsAlreadySatisfied() {\n if (!this._elseChain) {\n this._elseChain = this.readElseChain();\n }\n return unwrap(this._elseChain.elseChainSatisfied);\n }\n readElseChain() {\n let node = this.$element;\n do {\n node = node.previousSibling;\n } while (node && node.nodeType !== Node.ELEMENT_NODE && node.nodeType !== Node.COMMENT_NODE);\n if (!node) {\n return false;\n }\n if (node.nodeType === Node.COMMENT_NODE) {\n node = virtualElements.previousSibling(node);\n }\n return domData.get(node, \"conditional\") || {};\n }\n}\n", "// @tko/binding.if \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { IfBindingHandler, UnlessBindingHandler } from \"./ifUnless\";\nimport { WithBindingHandler } from \"./with\";\nimport { ElseBindingHandler } from \"./else\";\nexport const bindings = {\n if: IfBindingHandler,\n with: WithBindingHandler,\n ifnot: UnlessBindingHandler,\n unless: UnlessBindingHandler,\n else: ElseBindingHandler,\n elseif: ElseBindingHandler\n};\n", "// @tko/binding.foreach \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport {\n arrayForEach,\n cleanNode,\n options,\n virtualElements,\n createSymbolOrString,\n domData,\n domNodeIsContainedBy\n} from \"@tko/utils\";\nimport { isObservable, unwrap, observable } from \"@tko/observable\";\nimport { contextFor, applyBindingsToDescendants, AsyncBindingHandler } from \"@tko/bind\";\nconst MAX_LIST_SIZE = 9007199254740991;\nfunction isPlainObject(o) {\n return !!o && typeof o === \"object\" && o.constructor === Object;\n}\nconst supportsDocumentFragment = options.document && typeof options.document.createDocumentFragment === \"function\";\nfunction makeTemplateNode(sourceNode) {\n const container = document.createElement(\"div\");\n let parentNode;\n if (sourceNode.content) {\n parentNode = sourceNode.content;\n } else if (sourceNode.tagName === \"SCRIPT\") {\n parentNode = document.createElement(\"div\");\n parentNode.innerHTML = sourceNode.text;\n } else {\n parentNode = sourceNode;\n }\n arrayForEach(virtualElements.childNodes(parentNode), function(child) {\n if (child) {\n container.insertBefore(child.cloneNode(true), null);\n }\n });\n return container;\n}\nfunction valueToChangeAddItem(value, index) {\n return { status: \"added\", value, index };\n}\nconst PENDING_DELETE_INDEX_SYM = createSymbolOrString(\"_ko_ffe_pending_delete_index\");\nexport class ForEachBinding extends AsyncBindingHandler {\n constructor(params) {\n super(params);\n const settings = {};\n if (isPlainObject(this.value)) {\n Object.assign(settings, this.value);\n }\n this.as = settings.as || this.allBindings.get(\"as\");\n this.data = settings.data || (unwrap(this.$context.$rawData) === this.value ? this.$context.$rawData : this.value);\n this.container = virtualElements.isStartComment(this.$element) ? this.$element.parentNode : this.$element;\n this.generateContext = this.createContextGenerator(this.as);\n this.$indexHasBeenRequested = false;\n this.templateNode = makeTemplateNode(\n settings.templateNode || (settings.name ? document.getElementById(settings.name)?.cloneNode(true) : this.$element)\n );\n [\"afterAdd\", \"beforeRemove\", \"afterQueueFlush\", \"beforeQueueFlush\"].forEach((p) => {\n this[p] = settings[p] || this.allBindings.get(p);\n });\n this.changeQueue = new Array();\n this.firstLastNodesList = new Array();\n this.indexesToDelete = new Array();\n this.rendering_queued = false;\n this.pendingDeletes = new Array();\n this.isNotEmpty = observable(Boolean(unwrap(this.data).length));\n domData.set(this.$element, \"conditional\", { elseChainSatisfied: this.isNotEmpty });\n virtualElements.emptyNode(this.$element);\n const primeData = unwrap(this.data);\n if (primeData && primeData.map) {\n this.onArrayChange(primeData.map(valueToChangeAddItem), true);\n } else {\n this.completeBinding();\n }\n if (isObservable(this.data)) {\n if (!this.data.indexOf) {\n this.data = this.data.extend({ trackArrayChanges: true });\n }\n this.changeSubs = this.data.subscribe(this.onArrayChange, this, \"arrayChange\");\n }\n }\n dispose() {\n if (this.changeSubs) {\n this.changeSubs.dispose();\n }\n this.flushPendingDeletes();\n }\n // If the array changes we register the change.\n onArrayChange(changeSet, isInitial) {\n const changeMap = { added: [], deleted: [] };\n for (let i = 0, len = changeSet.length; i < len; i++) {\n if (changeMap.added.length && changeSet[i].status === \"added\") {\n let lastAdd = changeMap.added[changeMap.added.length - 1];\n const lastIndex = lastAdd.isBatch ? lastAdd.index + lastAdd.values.length - 1 : lastAdd.index;\n if (lastIndex + 1 === changeSet[i].index) {\n if (!lastAdd.isBatch) {\n lastAdd = { isBatch: true, status: \"added\", index: lastAdd.index, values: [lastAdd.value] };\n changeMap.added.splice(changeMap.added.length - 1, 1, lastAdd);\n }\n lastAdd.values.push(changeSet[i].value);\n continue;\n }\n }\n changeMap[changeSet[i].status].push(changeSet[i]);\n }\n if (changeMap.deleted.length > 0) {\n this.changeQueue.push.apply(this.changeQueue, changeMap.deleted);\n this.changeQueue.push({ status: \"clearDeletedIndexes\" });\n }\n this.changeQueue.push.apply(this.changeQueue, changeMap.added);\n if (this.changeQueue.length > 0 && !this.rendering_queued) {\n this.rendering_queued = true;\n if (isInitial) {\n this.processQueue();\n } else {\n ForEachBinding.animateFrame.call(window, () => this.processQueue());\n }\n }\n }\n startQueueFlush() {\n if (typeof this.beforeQueueFlush === \"function\") {\n this.beforeQueueFlush(this.changeQueue);\n }\n }\n endQueueFlush() {\n if (typeof this.afterQueueFlush === \"function\") {\n this.afterQueueFlush(this.changeQueue);\n }\n }\n // Reflect all the changes in the queue in the DOM, then wipe the queue.\n processQueue() {\n const isEmpty = !unwrap(this.data).length;\n let lowestIndexChanged = MAX_LIST_SIZE;\n this.startQueueFlush();\n arrayForEach(this.changeQueue, (changeItem) => {\n if (typeof changeItem.index === \"number\") {\n lowestIndexChanged = Math.min(lowestIndexChanged, changeItem.index);\n }\n this[changeItem.status](changeItem);\n });\n this.flushPendingDeletes();\n this.rendering_queued = false;\n if (this.$indexHasBeenRequested) {\n this.updateIndexes(lowestIndexChanged);\n }\n this.endQueueFlush();\n this.changeQueue = new Array();\n if (isEmpty !== !this.isNotEmpty()) {\n this.isNotEmpty(!isEmpty);\n }\n }\n /**\n * Once the $index has been asked for once, start calculating it.\n * Note that this significantly degrades performance, from O(1) to O(n)\n * for arbitrary changes to the list.\n */\n _first$indexRequest(ctx$indexRequestedFrom) {\n this.$indexHasBeenRequested = true;\n for (let i = 0, len = this.firstLastNodesList.length; i < len; ++i) {\n const ctx = this.getContextStartingFrom(this.firstLastNodesList[i].first);\n if (ctx) {\n ctx.$index = observable(i);\n }\n }\n return ctx$indexRequestedFrom.$index();\n }\n _contextExtensions($ctx) {\n Object.assign($ctx, { $list: this.data });\n if (this.$indexHasBeenRequested) {\n $ctx.$index = $ctx.$index || observable();\n } else {\n Object.defineProperty($ctx, \"$index\", {\n value: () => this._first$indexRequest($ctx),\n configurable: true,\n writable: true\n });\n }\n return $ctx;\n }\n /**\n * Return a function that generates the context for a given node.\n *\n * We generate a single function that reduces our inner-loop calculations,\n * which has a good chance of being optimized by the browser.\n *\n * @param {string} as The name given to each item in the list\n * @param {bool} index Whether to calculate indexes\n * @return {function} A function(dataValue) that returns the context\n */\n createContextGenerator(as) {\n const $ctx = this.$context;\n if (as) {\n return (v) => this._contextExtensions($ctx.extend({ [as]: v }));\n } else {\n return (v) => $ctx.createChildContext(v, void 0, (ctx) => this._contextExtensions(ctx));\n }\n }\n updateFirstLastNodesList(index, children) {\n const first = children[0];\n const last = children[children.length - 1];\n this.firstLastNodesList.splice(index, 0, { first, last });\n }\n // Process a changeItem with {status: 'added', ...}\n added(changeItem) {\n const index = changeItem.index;\n const valuesToAdd = changeItem.isBatch ? changeItem.values : [changeItem.value];\n const referenceElement = this.getLastNodeBeforeIndex(index);\n const allChildNodes = [];\n const asyncBindingResults = new Array();\n let children;\n for (let i = 0, len = valuesToAdd.length; i < len; ++i) {\n const pendingDelete = this.getPendingDeleteFor(valuesToAdd[i]);\n if (pendingDelete && pendingDelete.nodesets.length) {\n children = pendingDelete.nodesets.pop();\n this.updateFirstLastNodesList(index + i, children);\n } else {\n const templateClone = this.templateNode.cloneNode(true);\n children = virtualElements.childNodes(templateClone);\n this.updateFirstLastNodesList(index + i, children);\n const bindingResult = applyBindingsToDescendants(this.generateContext(valuesToAdd[i]), templateClone);\n asyncBindingResults.push(bindingResult);\n }\n allChildNodes.push(...children);\n }\n if (typeof this.afterAdd === \"function\") {\n this.afterAdd({\n nodeOrArrayInserted: this.insertAllAfter(allChildNodes, referenceElement),\n foreachInstance: this\n });\n } else {\n this.insertAllAfter(allChildNodes, referenceElement);\n }\n this.completeBinding(Promise.all(asyncBindingResults));\n }\n getNodesForIndex(index) {\n const result = new Array();\n let ptr = this.firstLastNodesList[index].first;\n const last = this.firstLastNodesList[index].last;\n result.push(ptr);\n while (ptr && ptr !== last) {\n ptr = ptr.nextSibling;\n result.push(ptr);\n }\n return result;\n }\n getLastNodeBeforeIndex(index) {\n if (index < 1 || index - 1 >= this.firstLastNodesList.length) {\n return null;\n }\n return this.firstLastNodesList[index - 1].last;\n }\n /**\n * Get the active (focused) node, if it's a child of the given node.\n */\n activeChildElement(node) {\n const active = document.activeElement;\n if (domNodeIsContainedBy(active, node)) {\n return active;\n }\n return null;\n }\n insertAllAfter(nodeOrNodeArrayToInsert, insertAfterNode) {\n let frag;\n let len;\n let i;\n let active = null;\n const containerNode = this.$element;\n if (nodeOrNodeArrayToInsert.nodeType === void 0 && nodeOrNodeArrayToInsert.length === void 0) {\n throw new Error(\"Expected a single node or a node array\");\n }\n if (nodeOrNodeArrayToInsert.nodeType !== void 0) {\n active = this.activeChildElement(nodeOrNodeArrayToInsert);\n virtualElements.insertAfter(containerNode, nodeOrNodeArrayToInsert, insertAfterNode);\n return [nodeOrNodeArrayToInsert];\n } else if (nodeOrNodeArrayToInsert.length === 1) {\n active = this.activeChildElement(nodeOrNodeArrayToInsert[0]);\n virtualElements.insertAfter(containerNode, nodeOrNodeArrayToInsert[0], insertAfterNode);\n } else if (supportsDocumentFragment) {\n frag = document.createDocumentFragment();\n for (i = 0, len = nodeOrNodeArrayToInsert.length; i !== len; ++i) {\n active = active || this.activeChildElement(nodeOrNodeArrayToInsert[i]);\n frag.appendChild(nodeOrNodeArrayToInsert[i]);\n }\n virtualElements.insertAfter(containerNode, frag, insertAfterNode);\n } else {\n for (i = nodeOrNodeArrayToInsert.length - 1; i >= 0; --i) {\n active = active || this.activeChildElement(nodeOrNodeArrayToInsert[i]);\n const child = nodeOrNodeArrayToInsert[i];\n if (!child) {\n break;\n }\n virtualElements.insertAfter(containerNode, child, insertAfterNode);\n }\n }\n if (active) {\n active.focus();\n }\n return nodeOrNodeArrayToInsert;\n }\n // checks if the deleted data item should be handled with delay for a possible reuse at additions\n shouldDelayDeletion(data) {\n return data && (typeof data === \"object\" || typeof data === \"function\");\n }\n // gets the pending deletion info for this data item\n getPendingDeleteFor(data) {\n const index = data && data[PENDING_DELETE_INDEX_SYM];\n if (index === void 0) return null;\n return this.pendingDeletes[index];\n }\n // tries to find the existing pending delete info for this data item, and if it can't, it registeres one\n getOrCreatePendingDeleteFor(data) {\n let pd = this.getPendingDeleteFor(data);\n if (pd) {\n return pd;\n }\n pd = { data, nodesets: [] };\n data[PENDING_DELETE_INDEX_SYM] = this.pendingDeletes.length;\n this.pendingDeletes.push(pd);\n return pd;\n }\n // Process a changeItem with {status: 'deleted', ...}\n deleted(changeItem) {\n if (this.shouldDelayDeletion(changeItem.value)) {\n const pd = this.getOrCreatePendingDeleteFor(changeItem.value);\n pd.nodesets.push(this.getNodesForIndex(changeItem.index));\n } else {\n this.removeNodes(this.getNodesForIndex(changeItem.index));\n }\n this.indexesToDelete.push(changeItem.index);\n }\n // removes a set of nodes from the DOM\n removeNodes(nodes) {\n if (!nodes.length) {\n return;\n }\n function removeFn() {\n const parent = nodes[0].parentNode;\n for (let i = nodes.length - 1; i >= 0; --i) {\n cleanNode(nodes[i]);\n parent.removeChild(nodes[i]);\n }\n }\n if (this.beforeRemove) {\n const beforeRemoveReturn = this.beforeRemove({ nodesToRemove: nodes, foreachInstance: this }) || {};\n if (typeof beforeRemoveReturn.then === \"function\") {\n beforeRemoveReturn.then(removeFn, options.onError);\n }\n } else {\n removeFn();\n }\n }\n // flushes the pending delete info store\n // this should be called after queue processing has finished, so that data items and remaining (not reused) nodesets get cleaned up\n // we also call it on dispose not to leave any mess\n flushPendingDeletes() {\n for (let i = 0, len = this.pendingDeletes.length; i !== len; ++i) {\n const pd = this.pendingDeletes[i];\n while (pd.nodesets.length) {\n this.removeNodes(pd.nodesets.pop());\n }\n if (pd.data && pd.data[PENDING_DELETE_INDEX_SYM] !== void 0) {\n delete pd.data[PENDING_DELETE_INDEX_SYM];\n }\n }\n this.pendingDeletes = new Array();\n }\n // We batch our deletion of item indexes in our parallel array.\n // See brianmhunt/knockout-fast-foreach#6/#8\n clearDeletedIndexes() {\n for (let i = this.indexesToDelete.length - 1; i >= 0; --i) {\n this.firstLastNodesList.splice(this.indexesToDelete[i], 1);\n }\n this.indexesToDelete = new Array();\n }\n updateIndexes(fromIndex) {\n let ctx;\n for (let i = fromIndex, len = this.firstLastNodesList.length; i < len; ++i) {\n ctx = this.getContextStartingFrom(this.firstLastNodesList[i].first);\n if (ctx) {\n ctx.$index(i);\n }\n }\n }\n getContextStartingFrom(node) {\n let ctx;\n while (node) {\n ctx = contextFor(node);\n if (ctx) {\n return ctx;\n }\n node = node.nextSibling;\n }\n }\n /**\n * Set whether the binding is always synchronous.\n * Useful during testing.\n */\n static setSync(toggle) {\n const w = options.global;\n if (toggle) {\n ForEachBinding.animateFrame = function(frame) {\n frame();\n };\n } else {\n ForEachBinding.animateFrame = w.requestAnimationFrame || w.webkitRequestAnimationFrame || w.mozRequestAnimationFrame || w.msRequestAnimationFrame || function(cb) {\n return w.setTimeout(cb, 1e3 / 60);\n };\n }\n }\n get controlsDescendants() {\n return true;\n }\n static get allowVirtualElements() {\n return true;\n }\n /* TODO: Remove; for legacy/testing */\n static get ForEach() {\n return this;\n }\n static get PENDING_DELETE_INDEX_SYM() {\n return PENDING_DELETE_INDEX_SYM;\n }\n}\n", "// @tko/binding.foreach \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { ForEachBinding } from \"./foreach\";\nexport const bindings = { foreach: ForEachBinding };\nForEachBinding.setSync(false);\n", "// @tko/utils.jsx \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { cleanNode } from \"@tko/utils\";\nconst DELAY_MS = 25;\nconst MAX_CLEAN_AT_ONCE = 1e3;\nconst cleanNodeQueue = new Array();\nlet cleanNodeTimeoutID = null;\nexport function queueCleanNode(node) {\n cleanNodeQueue.push(node);\n triggerCleanTimeout();\n}\nfunction triggerCleanTimeout() {\n if (!cleanNodeTimeoutID && cleanNodeQueue.length) {\n cleanNodeTimeoutID = setTimeout(flushCleanQueue, DELAY_MS);\n }\n}\nfunction flushCleanQueue() {\n cleanNodeTimeoutID = null;\n const nodes = cleanNodeQueue.splice(0, MAX_CLEAN_AT_ONCE);\n for (const node of nodes) {\n cleanNode(node);\n }\n triggerCleanTimeout();\n}\n", "// @tko/utils.jsx \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { LifeCycle } from \"@tko/lifecycle\";\nimport { safeStringify, isThenable } from \"@tko/utils\";\nimport { applyBindings, contextFor } from \"@tko/bind\";\nimport { isObservable, unwrap, observable } from \"@tko/observable\";\nimport { isComputed } from \"@tko/computed\";\nimport { NativeProvider, NATIVE_BINDINGS } from \"@tko/provider.native\";\nimport { queueCleanNode } from \"./jsxClean\";\nexport const ORIGINAL_JSX_SYM = /* @__PURE__ */ Symbol(\"Knockout - Original JSX\");\nconst NAMESPACES = {\n svg: \"http://www.w3.org/2000/svg\",\n html: \"http://www.w3.org/1999/xhtml\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xlink: \"http://www.w3.org/1999/xlink\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\nfunction isIterable(v) {\n return v && typeof v[Symbol.iterator] === \"function\";\n}\nexport class JsxObserver extends LifeCycle {\n /**\n * @param {any} jsxOrObservable take a long list of permutations\n */\n constructor(jsxOrObservable, parentNode, insertBefore = null, xmlns, noInitialBinding) {\n super();\n const parentNodeIsComment = parentNode.nodeType === Node.COMMENT_NODE;\n const parentNodeTarget = this.getParentTarget(parentNode);\n if (isObservable(jsxOrObservable)) {\n jsxOrObservable.extend({ trackArrayChanges: true });\n this.subscribe(jsxOrObservable, this.observableArrayChange, \"arrayChange\");\n if (!insertBefore) {\n const insertAt = parentNodeIsComment ? parentNode.nextSibling : null;\n insertBefore = this.createComment(\"O\");\n parentNodeTarget?.insertBefore(insertBefore, insertAt);\n } else {\n this.adoptedInsertBefore = true;\n }\n }\n if (parentNodeIsComment && !insertBefore) {\n insertBefore = parentNode.nextSibling;\n this.adoptedInsertBefore = true;\n }\n this.anchorTo(insertBefore || parentNode);\n Object.assign(this, {\n insertBefore,\n noInitialBinding,\n parentNode,\n parentNodeTarget,\n xmlns,\n nodeArrayOrObservableAtIndex: [],\n subscriptionsForNode: /* @__PURE__ */ new Map()\n });\n const jsx = unwrap(jsxOrObservable);\n const computed = isComputed(jsxOrObservable);\n if (computed || jsx !== null && jsx !== void 0) {\n this.observableArrayChange(this.createInitialAdditions(jsx));\n }\n this.noInitialBinding = false;\n }\n getParentTarget(parentNode) {\n if (\"content\" in parentNode) {\n return parentNode.content;\n }\n if (parentNode.nodeType === Node.COMMENT_NODE) {\n return parentNode.parentNode;\n }\n return parentNode;\n }\n remove() {\n this.dispose();\n }\n dispose() {\n super.dispose();\n const ib = this.insertBefore;\n const insertBeforeIsChild = ib && this.parentNodeTarget === ib.parentNode;\n if (insertBeforeIsChild && !this.adoptedInsertBefore) {\n this.parentNodeTarget?.removeChild(ib);\n }\n this.removeAllPriorNodes();\n Object.assign(this, {\n parentNode: null,\n parentNodeTarget: null,\n insertBefore: null,\n nodeArrayOrObservableAtIndex: []\n });\n for (const subscriptions of this.subscriptionsForNode.values()) {\n subscriptions.forEach((s) => s.dispose());\n }\n this.subscriptionsForNode.clear();\n }\n createInitialAdditions(possibleIterable) {\n const status = \"added\";\n if (typeof possibleIterable === \"object\" && possibleIterable !== null && Symbol.iterator in possibleIterable) {\n possibleIterable = [...possibleIterable];\n }\n return Array.isArray(possibleIterable) ? possibleIterable.map((value, index) => ({ index, status, value })) : [{ status, index: 0, value: possibleIterable }];\n }\n /**\n * Note: array change notification indexes are:\n * - to the original array indexes for deletes\n * - to the new array indexes for adds\n * - sorted by index in ascending order\n */\n observableArrayChange(changes) {\n const adds = [];\n const dels = [];\n for (const index in changes) {\n const change = changes[index];\n if (change.status === \"added\") {\n adds.push([change.index, change.value]);\n } else {\n dels.unshift([change.index, change.value]);\n }\n }\n dels.forEach((change) => this.delChange(...change));\n adds.forEach((change) => this.addChange(...change));\n }\n /**\n * Add a change at the given index.\n *\n * @param {int} index\n * @param {string|object|Array|Observable.string|Observable.Array|Observable.object} jsx\n */\n addChange(index, jsx) {\n this.nodeArrayOrObservableAtIndex.splice(index, 0, this.injectNode(jsx, this.lastNodeFor(index)));\n }\n injectNode(jsx, nextNode) {\n let nodeArrayOrObservable;\n if (isObservable(jsx)) {\n const { parentNode, xmlns } = this;\n const observer = new JsxObserver(jsx, parentNode, nextNode, xmlns, this.noInitialBinding);\n nodeArrayOrObservable = [observer];\n } else if (typeof jsx !== \"string\" && isIterable(jsx)) {\n nodeArrayOrObservable = new Array();\n for (const child of jsx) {\n nodeArrayOrObservable.unshift(this.injectNode(child, nextNode));\n }\n } else {\n const $context = contextFor(this.parentNode);\n const isInsideTemplate = \"content\" in this.parentNode;\n const shouldApplyBindings = $context && !isInsideTemplate && !this.noInitialBinding;\n if (Array.isArray(jsx)) {\n nodeArrayOrObservable = jsx.map((j) => this.anyToNode(j));\n } else {\n nodeArrayOrObservable = [this.anyToNode(jsx)];\n }\n for (const node of nodeArrayOrObservable) {\n this.parentNodeTarget?.insertBefore(node, nextNode);\n if (shouldApplyBindings && this.canApplyBindings(node)) {\n applyBindings($context, node);\n }\n }\n }\n return nodeArrayOrObservable;\n }\n /**\n * True when Node is a type suitable for applyBindings i.e. a HTMLElement\n * or a Comment.\n * @param {Node} node\n */\n canApplyBindings(node) {\n return node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.COMMENT_NODE;\n }\n delChange(index, _) {\n this.removeNodeArrayOrObservable(this.nodeArrayOrObservableAtIndex[index]);\n this.nodeArrayOrObservableAtIndex.splice(index, 1);\n }\n getSubscriptionsForNode(node) {\n if (!this.subscriptionsForNode.has(node)) {\n const subscriptions = new Array();\n this.subscriptionsForNode.set(node, subscriptions);\n return subscriptions;\n }\n return this.subscriptionsForNode.get(node);\n }\n isJsx(jsx) {\n return typeof jsx.elementName === \"string\" && \"children\" in jsx && \"attributes\" in jsx;\n }\n /**\n * @param {any} value acceptable to turn into a Node\n *\n * The one thing `any` cannot be here is an Array or Observable; both those\n * cases are handled with new JsxObservers.\n */\n anyToNode(any) {\n if (isThenable(any)) {\n return this.futureJsxNode(any);\n }\n switch (typeof any) {\n case \"object\":\n if (any instanceof Error) {\n return this.createComment(any.toString());\n }\n if (any === null) {\n return this.createComment(String(any));\n }\n if (any instanceof Node) {\n return this.cloneJSXorMoveNode(any);\n }\n if (Symbol.iterator in any) {\n return any;\n }\n break;\n case \"function\":\n return this.anyToNode(any());\n case \"undefined\":\n case \"symbol\":\n return this.createComment(String(any));\n case \"string\":\n return this.createTextNode(any);\n case \"boolean\":\n case \"number\":\n case \"bigint\":\n default:\n return this.createTextNode(String(any));\n }\n return this.isJsx(any) ? this.jsxToNode(any) : this.createComment(safeStringify(any));\n }\n createComment(string) {\n const node = document.createComment(string);\n node[NATIVE_BINDINGS] = true;\n return node;\n }\n createTextNode(string) {\n const node = document.createTextNode(string);\n node[NATIVE_BINDINGS] = true;\n return node;\n }\n /**\n * Clone a node; if that node was originally from JSX, we clone from there\n * so we preserve binding handlers.\n *\n * @param {HTMLElement} node\n */\n cloneJSXorMoveNode(node) {\n return ORIGINAL_JSX_SYM in node ? this.jsxToNode(node[ORIGINAL_JSX_SYM]) : node;\n }\n /**\n * @param {JSX} jsx to convert to a node.\n */\n jsxToNode(jsx) {\n const xmlns = jsx.attributes.xmlns || NAMESPACES[jsx.elementName] || this.xmlns;\n const node = document.createElementNS(xmlns || NAMESPACES.html, jsx.elementName);\n node[ORIGINAL_JSX_SYM] = jsx;\n if (isObservable(jsx.attributes)) {\n const subscriptions = this.getSubscriptionsForNode(node);\n subscriptions.push(\n jsx.attributes.subscribe((attrs) => {\n this.updateAttributes(node, unwrap(attrs));\n })\n );\n }\n this.updateAttributes(node, unwrap(jsx.attributes));\n this.addDisposable(new JsxObserver(jsx.children, node, null, xmlns, this.noInitialBinding));\n return node;\n }\n futureJsxNode(promise) {\n const obs = observable();\n promise.then(obs).catch((e) => obs(e instanceof Error ? e : Error(e)));\n const jo = new JsxObserver(obs, this.parentNode, null, this.xmlns, this.noInitialBinding);\n this.addDisposable(jo);\n return jo.insertBefore;\n }\n updateAttributes(node, attributes) {\n const subscriptions = this.getSubscriptionsForNode(node);\n const toRemove = new Set([...node.attributes].map((n) => n.name));\n for (const [name, value] of Object.entries(attributes || {})) {\n toRemove.delete(name);\n if (isObservable(value)) {\n subscriptions.push(value.subscribe((attr) => this.setNodeAttribute(node, name, value)));\n }\n this.setNodeAttribute(node, name, value);\n }\n for (const name of toRemove) {\n this.setNodeAttribute(node, name, void 0);\n }\n }\n /**\n * See https://stackoverflow.com/a/52572048\n * @param {string} attr element attribute\n * @return {string} namespace argument for setAtttributeNS\n */\n getNamespaceOfAttribute(attr) {\n const [prefix, ...unqualifiedName] = attr.split(\":\");\n if (prefix === \"xmlns\" || unqualifiedName.length && NAMESPACES[prefix]) {\n return NAMESPACES[prefix];\n }\n return null;\n }\n /**\n *\n * @param {HTMLElement} node\n * @param {string} name\n * @param {any} valueOrObservable\n */\n setNodeAttribute(node, name, valueOrObservable) {\n const value = unwrap(valueOrObservable);\n NativeProvider.addValueToNode(node, name, valueOrObservable);\n if (value === void 0) {\n node.removeAttributeNS(null, name);\n } else if (isThenable(valueOrObservable)) {\n Promise.resolve(valueOrObservable).then((v) => this.setNodeAttribute(node, name, v));\n } else {\n const ns = this.getNamespaceOfAttribute(name);\n node.setAttributeNS(ns, name, String(value));\n }\n }\n /**\n * @param {int} index\n * @return {Comment} that immediately precedes this.\n */\n lastNodeFor(index) {\n const nodesAtIndex = this.nodeArrayOrObservableAtIndex[index] || [];\n const [lastNodeOfPrior] = nodesAtIndex.slice(-1);\n const insertBefore = lastNodeOfPrior instanceof JsxObserver ? lastNodeOfPrior.insertBefore : lastNodeOfPrior || this.insertBefore;\n if (insertBefore) {\n return insertBefore.parentNode ? insertBefore : null;\n }\n return null;\n }\n removeAllPriorNodes() {\n const { nodeArrayOrObservableAtIndex } = this;\n while (nodeArrayOrObservableAtIndex.length) {\n this.removeNodeArrayOrObservable(nodeArrayOrObservableAtIndex.pop());\n }\n }\n removeNodeArrayOrObservable(nodeArrayOrObservable) {\n for (const nodeOrObservable of nodeArrayOrObservable) {\n if (nodeOrObservable instanceof JsxObserver) {\n nodeOrObservable.dispose();\n continue;\n }\n const node = nodeOrObservable;\n delete node[ORIGINAL_JSX_SYM];\n this.detachAndDispose(node);\n const subscriptions = this.subscriptionsForNode.get(node);\n if (subscriptions) {\n subscriptions.forEach((s) => s.dispose());\n this.subscriptionsForNode.delete(node);\n }\n }\n }\n /**\n * Detach the given node, and dispose of its children.\n *\n * The cleaning can trigger a lot of garbage collection, so we defer that.\n */\n detachAndDispose(node) {\n if (isIterable(node)) {\n for (const child of node) {\n this.detachAndDispose(child);\n }\n } else {\n node.remove();\n }\n queueCleanNode(node);\n }\n}\nexport default JsxObserver;\n", "// @tko/utils.jsx \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { isObservable, unwrap } from \"@tko/observable\";\nimport { ORIGINAL_JSX_SYM } from \"./JsxObserver\";\nexport function maybeJsx(possibleJsx) {\n if (isObservable(possibleJsx)) {\n return true;\n }\n const value = unwrap(possibleJsx);\n if (!value) {\n return false;\n }\n if (value.elementName) {\n return true;\n }\n if (!Array.isArray(value) || !value.length) {\n return false;\n }\n if (value[0] instanceof window.Node) {\n return false;\n }\n return true;\n}\nexport function getOriginalJsxForNode(node) {\n return node[ORIGINAL_JSX_SYM];\n}\nexport function createElement(elementName, attributes, ...children) {\n return elementName === Fragment ? children : { elementName, attributes: attributes || {}, children: [...children] };\n}\nexport const Fragment = /* @__PURE__ */ Symbol(\"JSX Fragment\");\n", "// @tko/binding.component \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { virtualElements, makeArray, cloneNodes } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nimport { DescendantBindingHandler } from \"@tko/bind\";\nimport { JsxObserver, maybeJsx } from \"@tko/utils.jsx\";\nimport { NativeProvider } from \"@tko/provider.native\";\nimport { LifeCycle } from \"@tko/lifecycle\";\nimport registry from \"@tko/utils.component\";\nlet componentLoadingOperationUniqueId = 0;\nexport default class ComponentBinding extends DescendantBindingHandler {\n constructor(params) {\n super(params);\n this.originalChildNodes = makeArray(virtualElements.childNodes(this.$element));\n this.computed(\"computeApplyComponent\");\n }\n cloneTemplateIntoElement(componentName, template, element) {\n if (!template) {\n throw new Error(\"Component '\" + componentName + \"' has no template\");\n }\n if (maybeJsx(template)) {\n virtualElements.emptyNode(element);\n this.addDisposable(new JsxObserver(template, element, null, void 0, true));\n } else {\n const clonedNodesArray = cloneNodes(template);\n virtualElements.setDomNodeChildren(element, clonedNodesArray);\n }\n }\n createViewModel(componentDefinition, element, originalChildNodes, componentParams) {\n const componentViewModelFactory = componentDefinition.createViewModel;\n return componentViewModelFactory ? componentViewModelFactory.call(componentDefinition, componentParams, {\n element,\n templateNodes: originalChildNodes\n }) : componentParams;\n }\n /**\n * Return the $componentTemplateSlotNodes for the given template\n * @param {HTMLElement|jsx} template\n */\n makeTemplateSlotNodes(originalChildNodes) {\n return Object.assign({}, ...this.genSlotsByName(originalChildNodes));\n }\n /**\n * Iterate over the templateNodes, yielding each '<element slot=name>'\n * as an object * of {name: element}.\n * @param {HTMLElement[]} templateNodes\n */\n *genSlotsByName(templateNodes) {\n for (const node of templateNodes) {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n const slotName = node.getAttribute(\"slot\");\n if (!slotName) {\n continue;\n }\n yield { [slotName]: node };\n }\n }\n computeApplyComponent() {\n const value = unwrap(this.value);\n let componentName;\n let componentParams;\n if (typeof value === \"string\") {\n componentName = value;\n } else {\n componentName = unwrap(value.name);\n componentParams = NativeProvider.getNodeValues(this.$element) || unwrap(value.params);\n }\n this.latestComponentName = componentName;\n if (!componentName) {\n throw new Error(\"No component name specified\");\n }\n this.loadingOperationId = this.currentLoadingOperationId = ++componentLoadingOperationUniqueId;\n registry.get(componentName, (defn) => this.applyComponentDefinition(componentName, componentParams, defn));\n }\n makeChildBindingContext($component) {\n const ctxExtender = (ctx) => Object.assign(ctx, {\n $component,\n $componentTemplateNodes: this.originalChildNodes,\n $componentTemplateSlotNodes: this.makeTemplateSlotNodes(this.originalChildNodes)\n });\n return this.$context.createChildContext($component, void 0, ctxExtender);\n }\n applyComponentDefinition(componentName, componentParams, componentDefinition) {\n if (this.currentLoadingOperationId !== this.loadingOperationId || this.latestComponentName !== componentName) {\n return;\n }\n this.cleanUpState();\n const element = this.$element;\n if (!componentDefinition) {\n throw new Error(\"Unknown component '\" + componentName + \"'\");\n }\n if (componentDefinition.template) {\n this.cloneTemplateIntoElement(componentName, componentDefinition.template, element);\n }\n const componentViewModel = this.createViewModel(\n componentDefinition,\n element,\n this.originalChildNodes,\n componentParams\n );\n this.childBindingContext = this.makeChildBindingContext(componentViewModel);\n const viewTemplate = componentViewModel && componentViewModel.template;\n if (!viewTemplate && !componentDefinition.template) {\n throw new Error(\"Component '\" + componentName + \"' has no template\");\n }\n if (!componentDefinition.template) {\n this.cloneTemplateIntoElement(componentName, viewTemplate, element);\n }\n if (componentViewModel instanceof LifeCycle) {\n componentViewModel.anchorTo(this.$element);\n }\n this.currentViewModel = componentViewModel;\n const onBinding = this.onBindingComplete.bind(this, componentViewModel);\n this.applyBindingsToDescendants(this.childBindingContext, onBinding);\n }\n onBindingComplete(componentViewModel, bindingResult) {\n if (componentViewModel && componentViewModel.koDescendantsComplete) {\n componentViewModel.koDescendantsComplete(this.$element);\n }\n this.completeBinding(bindingResult);\n }\n cleanUpState() {\n const currentView = this.currentViewModel;\n const currentViewDispose = currentView && currentView.dispose;\n if (typeof currentViewDispose === \"function\") {\n currentViewDispose.call(currentView);\n }\n this.currentViewModel = null;\n this.currentLoadingOperationId = null;\n }\n dispose() {\n this.cleanUpState();\n super.dispose();\n }\n get controlsDescendants() {\n return true;\n }\n static get allowVirtualElements() {\n return true;\n }\n}\n", "// @tko/binding.component \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { virtualElements } from \"@tko/utils\";\nimport { JsxObserver, getOriginalJsxForNode } from \"@tko/utils.jsx\";\nimport { DescendantBindingHandler, contextFor } from \"@tko/bind\";\nexport default class SlotBinding extends DescendantBindingHandler {\n constructor(params) {\n super(params);\n const slotNode = this.getSlot(this.value);\n const $slotContext = contextFor(slotNode);\n const childContext = this.$context.extend({ $slotContext, $slotData: $slotContext && $slotContext.$data });\n this.replaceSlotWithNode(this.$element, slotNode);\n this.applyBindingsToDescendants(childContext);\n }\n /**\n *\n * @param {HTMLElement} nodeToReplace\n * @param {HTMLElement} slotValue\n */\n replaceSlotWithNode(nodeInComponentTemplate, slotNode) {\n const nodes = this.cloneNodeFromOriginal(slotNode);\n virtualElements.emptyNode(nodeInComponentTemplate);\n this.addDisposable(new JsxObserver(nodes, nodeInComponentTemplate, void 0, void 0, true));\n }\n cloneNodeFromOriginal(node) {\n if (!node) {\n return [];\n }\n const jsx = getOriginalJsxForNode(node);\n if (jsx) {\n return jsx.children;\n }\n if (\"content\" in node) {\n const clone = document.importNode(node.content, true);\n return [...clone.childNodes];\n }\n const nodeArray = Array.isArray(node) ? node : [node];\n return nodeArray.map((n) => n.cloneNode(true));\n }\n getSlot(slotName) {\n const { $componentTemplateSlotNodes } = this.$context;\n if (!slotName) {\n return $componentTemplateSlotNodes[\"\"] || [...this.$context.$componentTemplateNodes].filter((n) => !n.getAttribute || !n.getAttribute(\"slot\"));\n }\n return $componentTemplateSlotNodes[slotName];\n }\n static get allowVirtualElements() {\n return true;\n }\n}\n", "// @tko/binding.component \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport component from \"./componentBinding\";\nimport slot from \"./slotBinding\";\nexport const bindings = { component, slot };\n", "// @tko/filter.punches \uD83E\uDD4A 4.0.0-beta1.3 ESM\n\"use strict\";\nimport { unwrap, toJS } from \"@tko/observable\";\nconst sproto = String.prototype;\nconst filters = {\n // Convert value to uppercase\n uppercase: function(value) {\n return sproto.toUpperCase.call(unwrap(value));\n },\n // Convert value to lowercase\n lowercase: function(value) {\n return sproto.toLowerCase.call(unwrap(value));\n },\n // Return default value if the input value is empty or null\n default: function(value, defaultValue) {\n value = unwrap(value);\n if (typeof value === \"function\") {\n return value;\n }\n if (typeof value === \"string\") {\n return sproto.trim.call(value) === \"\" ? defaultValue : value;\n }\n return value == null || value.length == 0 ? defaultValue : value;\n },\n // Return the value with the search string replaced with the replacement string\n replace: function(value, search, replace) {\n return sproto.replace.call(unwrap(value), search, replace);\n },\n fit: function(value, length, replacement, trimWhere) {\n value = unwrap(value);\n if (length && (\"\" + value).length > length) {\n replacement = \"\" + (replacement || \"...\");\n length = length - replacement.length;\n value = \"\" + value;\n switch (trimWhere) {\n case \"left\":\n return replacement + value.slice(-length);\n case \"middle\": {\n const leftLen = Math.ceil(length / 2);\n return value.substr(0, leftLen) + replacement + value.slice(leftLen - length);\n }\n default:\n return value.substr(0, length) + replacement;\n }\n } else {\n return value;\n }\n },\n // Convert a model object to JSON\n json: function(rootObject, space, replacer) {\n return JSON.stringify(toJS(rootObject), replacer, space);\n },\n // Format a number using the browser's toLocaleString\n number: function(value) {\n return (+unwrap(value)).toLocaleString();\n }\n};\nexport { filters };\n", "import { Builder } from '@tko/builder'\n\nimport { VirtualProvider } from '@tko/provider.virtual'\nimport { DataBindProvider } from '@tko/provider.databind'\nimport { ComponentProvider } from '@tko/provider.component'\nimport { AttributeProvider } from '@tko/provider.attr'\nimport { MultiProvider } from '@tko/provider.multi'\nimport {\n TextMustacheProvider, AttributeMustacheProvider\n} from '@tko/provider.mustache'\nimport {\n NativeProvider\n} from '@tko/provider.native'\n\nimport { bindings as coreBindings } from '@tko/binding.core'\nimport { bindings as templateBindings } from '@tko/binding.template'\nimport { bindings as ifBindings } from '@tko/binding.if'\nimport { bindings as foreachBindings } from '@tko/binding.foreach'\nimport { bindings as componentBindings } from '@tko/binding.component'\n\nimport { filters } from '@tko/filter.punches'\n\nimport components from '@tko/utils.component'\nimport { createElement, Fragment } from '@tko/utils.jsx'\nimport { JsxObserver } from '@tko/utils.jsx'\n\nimport { overloadOperator } from '@tko/utils.parser'\n\ndeclare const BUILD_VERSION: string\n\n/** Overload \"evil twins\" with strict equivalents */\noverloadOperator('==', (a, b) => a === b)\noverloadOperator('!=', (a, b) => a !== b)\n\nconst builder = new Builder({\n filters,\n extenders: {},\n options: {},\n provider: new MultiProvider({\n providers: [\n new ComponentProvider(),\n new NativeProvider(),\n new AttributeMustacheProvider(),\n new TextMustacheProvider(),\n new DataBindProvider(),\n new VirtualProvider(),\n new AttributeProvider(),\n ]\n }),\n bindings: [\n coreBindings,\n templateBindings,\n ifBindings,\n foreachBindings,\n componentBindings,\n { each: foreachBindings.foreach }\n ]\n})\n\nconst version = BUILD_VERSION\n\nexport default builder.create({\n jsx: {\n createElement,\n Fragment,\n /** Public render function that converts JSX to DOM nodes */\n render(jsx: any) {\n const fragment = document.createDocumentFragment()\n const observer = new JsxObserver(jsx, fragment)\n // Return the first child if single node, or the fragment if multiple\n const node = fragment.childNodes.length === 1 ? fragment.firstChild : fragment\n return {\n node,\n dispose: () => observer.dispose()\n }\n },\n },\n components,\n version,\n Component: components.ComponentABC,\n})\n"],
|
|
4
|
+
"sourcesContent": ["export {default} from './src'\nexport * from './src'\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nconst { isArray } = Array;\nexport function arrayForEach(array, action, actionOwner) {\n if (arguments.length > 2) {\n action = action.bind(actionOwner);\n }\n for (let i = 0, j = array.length; i < j; ++i) {\n action(array[i], i, array);\n }\n}\nexport function arrayIndexOf(array, item) {\n return (isArray(array) ? array : [...array]).indexOf(item);\n}\nexport function arrayFirst(array, predicate, predicateOwner) {\n return (isArray(array) ? array : [...array]).find(predicate, predicateOwner);\n}\nexport function arrayMap(array, mapping, thisArg) {\n if (arguments.length > 2) {\n mapping = mapping.bind(thisArg);\n }\n return array === null ? [] : Array.from(array, mapping);\n}\nexport function arrayRemoveItem(array, itemToRemove) {\n const index = arrayIndexOf(array, itemToRemove);\n if (index > 0) {\n array.splice(index, 1);\n } else if (index === 0) {\n array.shift();\n }\n}\nexport function arrayGetDistinctValues(array) {\n const seen = /* @__PURE__ */ new Set();\n if (array === null) {\n return [];\n }\n return (isArray(array) ? array : [...array]).filter((item) => seen.has(item) ? false : seen.add(item));\n}\nexport function arrayFilter(array, predicate, predicateOwner) {\n if (arguments.length > 2) {\n predicate = predicate.bind(predicateOwner);\n }\n return array === null ? [] : (isArray(array) ? array : [...array]).filter(predicate);\n}\nexport function arrayPushAll(array, valuesToPush) {\n if (isArray(valuesToPush)) {\n array.push.apply(array, valuesToPush);\n } else {\n for (let i = 0, j = valuesToPush.length; i < j; i++) {\n array.push(valuesToPush[i]);\n }\n }\n return array;\n}\nexport function addOrRemoveItem(array, value, included) {\n const existingEntryIndex = arrayIndexOf(typeof array.peek === \"function\" ? array.peek() : array, value);\n if (existingEntryIndex < 0) {\n if (included) {\n array.push(value);\n }\n } else {\n if (!included) {\n array.splice(existingEntryIndex, 1);\n }\n }\n}\nexport function makeArray(arrayLikeObject) {\n return Array.from(arrayLikeObject);\n}\nexport function range(min, max) {\n const minimum = typeof min === \"function\" ? min() : min;\n const maximum = typeof max === \"function\" ? max() : max;\n const result = [];\n for (let i = minimum; i <= maximum; i++) {\n result.push(i);\n }\n return result;\n}\nexport function findMovesInArrayComparison(left, right, limitFailedCompares) {\n if (left.length && right.length) {\n let failedCompares, l, r, leftItem, rightItem;\n for (failedCompares = l = 0; (!limitFailedCompares || failedCompares < limitFailedCompares) && (leftItem = left[l]); ++l) {\n for (r = 0; rightItem = right[r]; ++r) {\n if (leftItem.value === rightItem.value) {\n leftItem.moved = rightItem.index;\n rightItem.moved = leftItem.index;\n right.splice(r, 1);\n failedCompares = r = 0;\n break;\n }\n }\n failedCompares += r;\n }\n }\n}\nconst statusNotInOld = \"added\";\nconst statusNotInNew = \"deleted\";\nexport function compareArrays(oldArray, newArray, options) {\n options = typeof options === \"boolean\" ? { dontLimitMoves: options } : options || {};\n oldArray = oldArray || [];\n newArray = newArray || [];\n if (oldArray.length < newArray.length) {\n return compareSmallArrayToBigArray(oldArray, newArray, statusNotInOld, statusNotInNew, options);\n } else {\n return compareSmallArrayToBigArray(newArray, oldArray, statusNotInNew, statusNotInOld, options);\n }\n}\nfunction compareSmallArrayToBigArray(smlArray, bigArray, statusNotInSml, statusNotInBig, options) {\n let myMin = Math.min, myMax = Math.max, editDistanceMatrix = new Array(), smlIndex, smlIndexMax = smlArray.length, bigIndex, bigIndexMax = bigArray.length, compareRange = bigIndexMax - smlIndexMax || 1, maxDistance = smlIndexMax + bigIndexMax + 1, thisRow, lastRow, bigIndexMaxForRow, bigIndexMinForRow;\n for (smlIndex = 0; smlIndex <= smlIndexMax; smlIndex++) {\n lastRow = thisRow;\n editDistanceMatrix.push(thisRow = new Array());\n bigIndexMaxForRow = myMin(bigIndexMax, smlIndex + compareRange);\n bigIndexMinForRow = myMax(0, smlIndex - 1);\n for (bigIndex = bigIndexMinForRow; bigIndex <= bigIndexMaxForRow; bigIndex++) {\n if (!bigIndex) {\n thisRow[bigIndex] = smlIndex + 1;\n } else if (!smlIndex) {\n thisRow[bigIndex] = bigIndex + 1;\n } else if (smlArray[smlIndex - 1] === bigArray[bigIndex - 1]) {\n thisRow[bigIndex] = lastRow[bigIndex - 1];\n } else {\n const northDistance = lastRow[bigIndex] || maxDistance;\n const westDistance = thisRow[bigIndex - 1] || maxDistance;\n thisRow[bigIndex] = myMin(northDistance, westDistance) + 1;\n }\n }\n }\n let editScript = new Array(), meMinusOne, notInSml = new Array(), notInBig = new Array();\n for (smlIndex = smlIndexMax, bigIndex = bigIndexMax; smlIndex || bigIndex; ) {\n meMinusOne = editDistanceMatrix[smlIndex][bigIndex] - 1;\n if (bigIndex && meMinusOne === editDistanceMatrix[smlIndex][bigIndex - 1]) {\n notInSml.push(\n editScript[editScript.length] = {\n // added\n status: statusNotInSml,\n value: bigArray[--bigIndex],\n index: bigIndex\n }\n );\n } else if (smlIndex && meMinusOne === editDistanceMatrix[smlIndex - 1][bigIndex]) {\n notInBig.push(\n editScript[editScript.length] = {\n // deleted\n status: statusNotInBig,\n value: smlArray[--smlIndex],\n index: smlIndex\n }\n );\n } else {\n --bigIndex;\n --smlIndex;\n if (!options?.sparse) {\n editScript.push({ status: \"retained\", value: bigArray[bigIndex] });\n }\n }\n }\n findMovesInArrayComparison(notInBig, notInSml, !options.dontLimitMoves && smlIndexMax * 10);\n return editScript.reverse();\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nexport class Options {\n constructor() {\n // The following options can be set on ko.options to make a function rewriting or something similar.\n this.bindingStringPreparsers = [];\n // Reference to the own knockout instance\n this.knockoutInstance = null;\n this.deferUpdates = false;\n // Don't set this false, with jquery 3.7+\n this.useOnlyNativeEvents = true;\n // Use HTML5 <template> tags if is supported\n this.useTemplateTag = true;\n this.protoProperty = \"__ko_proto__\";\n // Modify the default attribute from `data-bind`.\n this.defaultBindingAttribute = \"data-bind\";\n // Enable/disable <!-- ko binding: ... -> style bindings\n this.allowVirtualElements = true;\n // Global variables that can be accessed from bindings.\n this.bindingGlobals = /* @__PURE__ */ Object.create(null);\n // Whether the `with` binding creates a child context when used with `as`.\n this.createChildContextWithAs = false;\n // jQuery will be automatically set to globalThis.jQuery in applyBindings\n // if it is (strictly equal to) undefined. Set it to true to\n // disable automatically setting jQuery.\n this.disableJQueryUsage = false;\n this.Promise = globalThis.Promise;\n this.taskScheduler = null;\n this.debug = false;\n /**\n * The maximum size of template to parse.\n * Set to 0 to disable the limit.\n */\n this.templateSizeLimit = 4096;\n /**\n * Whether or not to allow script tags in templates.\n * If false, an error will be thrown if a script tag is detected in the template.\n * It is not recommended to set this to true.\n */\n this.allowScriptTagsInTemplates = false;\n this._sanitizeWarningLogged = false;\n this.global = globalThis;\n this.document = globalThis.document;\n // Filters for bindings\n // data-bind=\"expression | filter_1 | filter_2\"\n this.filters = {};\n // Used by the template binding.\n this.includeDestroyed = false;\n this.foreachHidesDestroyed = false;\n }\n get jQuery() {\n if (this.disableJQueryUsage) return;\n return this._jQuery ?? globalThis.jQuery;\n }\n /**\n * Set jQuery manuall to be used by TKO.\n * @param jQuery If jQuery set to undefined, TKO will not use jQuery and this.disableJQueryUsage to true.\n */\n set jQuery(jQuery) {\n if (!jQuery) {\n this.disableJQueryUsage = true;\n this._jQuery = void 0;\n } else {\n this._jQuery = jQuery;\n this.disableJQueryUsage = false;\n }\n }\n /**\n * Sanitize HTML templates before parsing them. Default is a no-op.\n * Please configure something like DOMPurify or validator.js for your environment.\n * @param html HTML string to be sanitized\n * @returns Sanitized HTML string\n */\n sanitizeHtmlTemplate(html) {\n if (!this._sanitizeWarningLogged) {\n console.warn(\n \"WARNING -- You don't have a HTML sanitizer configured. Please configure options.sanitizeHtmlTemplate to avoid XSS vulnerabilities.\"\n );\n this._sanitizeWarningLogged = true;\n }\n return html;\n }\n onError(e, throws = true) {\n if (throws) throw e;\n return e;\n }\n set(name, value) {\n this[name] = value;\n }\n // Overload getBindingHandler to have a custom lookup function.\n getBindingHandler(key) {\n return null;\n }\n cleanExternalData(node, callback) {\n }\n}\nconst options = new Options();\nexport default options;\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport options from \"./options\";\nexport function catchFunctionErrors(delegate) {\n if (!options.onError) {\n return delegate;\n }\n return (...args) => {\n try {\n return delegate(...args);\n } catch (err) {\n options.onError(err);\n }\n };\n}\nexport function deferError(error) {\n safeSetTimeout(function() {\n throw error;\n }, 0);\n}\nexport function safeSetTimeout(handler, timeout) {\n return setTimeout(catchFunctionErrors(handler), timeout);\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { safeSetTimeout } from \"./error\";\nexport function throttle(callback, timeout) {\n let timeoutInstance;\n return function(...args) {\n if (!timeoutInstance) {\n timeoutInstance = safeSetTimeout(function() {\n timeoutInstance = void 0;\n callback(...args);\n }, timeout);\n }\n };\n}\nexport function debounce(callback, timeout) {\n let timeoutInstance;\n return function(...args) {\n clearTimeout(timeoutInstance);\n timeoutInstance = safeSetTimeout(() => callback(...args), timeout);\n };\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nexport function hasOwnProperty(obj, propName) {\n return Object.prototype.hasOwnProperty.call(obj, propName);\n}\nexport function isObjectLike(obj) {\n if (obj === null) {\n return false;\n }\n return typeof obj === \"object\" || typeof obj === \"function\";\n}\nexport function extend(target, source) {\n if (source) {\n for (const prop of Object.keys(source)) {\n if (hasOwnProperty(source, prop)) {\n ;\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nexport function objectForEach(obj, action) {\n for (const prop in obj) {\n if (hasOwnProperty(obj, prop)) {\n action(prop, obj[prop]);\n }\n }\n}\nexport function objectMap(source, mapping, thisArg) {\n if (!source) {\n return source;\n }\n if (arguments.length > 2) {\n mapping = mapping.bind(thisArg);\n }\n const target = {};\n for (const prop in source) {\n if (hasOwnProperty(source, prop)) {\n target[prop] = mapping(source[prop], prop, source);\n }\n }\n return target;\n}\nexport function getObjectOwnProperty(obj, propName) {\n return hasOwnProperty(obj, propName) ? obj[propName] : void 0;\n}\nexport function clonePlainObjectDeep(obj, seen) {\n if (!seen) {\n seen = new Array();\n }\n if (!obj || typeof obj !== \"object\" || obj.constructor !== Object || seen.indexOf(obj) !== -1) {\n return obj;\n }\n seen.push(obj);\n const result = {};\n for (const prop in obj) {\n if (hasOwnProperty(obj, prop)) {\n result[prop] = clonePlainObjectDeep(obj[prop], seen);\n }\n }\n return result;\n}\nexport function safeStringify(value) {\n const seen = /* @__PURE__ */ new Set();\n return JSON.stringify(value, (k, v) => {\n if (seen.has(v)) {\n return \"...\";\n }\n if (typeof v === \"object\") {\n seen.add(v);\n }\n return v;\n });\n}\nexport function isThenable(object) {\n return isObjectLike(object) && typeof object.then === \"function\";\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nfunction testOverwrite() {\n try {\n Object.defineProperty(function x() {\n }, \"length\", {});\n return true;\n } catch (e) {\n return false;\n }\n}\nexport const functionSupportsLengthOverwrite = testOverwrite();\nexport function overwriteLengthPropertyIfSupported(fn, descriptor) {\n if (functionSupportsLengthOverwrite) {\n Object.defineProperty(fn, \"length\", descriptor);\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nexport function stringTrim(string) {\n return string === null || string === void 0 ? \"\" : string.trim ? string.trim() : string.toString().replace(/^[\\s\\xa0]+|[\\s\\xa0]+$/g, \"\");\n}\nexport function stringStartsWith(string, startsWith) {\n string = string || \"\";\n if (startsWith.length > string.length) {\n return false;\n }\n return string.substring(0, startsWith.length) === startsWith;\n}\nexport function parseJson(jsonString) {\n if (typeof jsonString === \"string\") {\n jsonString = stringTrim(jsonString);\n if (jsonString) {\n return JSON.parse(jsonString);\n }\n }\n return null;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nexport const useSymbols = typeof Symbol === \"function\";\nexport function createSymbolOrString(identifier) {\n return useSymbols ? Symbol(identifier) : identifier;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { arrayForEach, addOrRemoveItem } from \"./array\";\nconst cssClassNameRegex = /\\S+/g;\nfunction toggleDomNodeCssClass(node, classNames, shouldHaveClass) {\n let addOrRemoveFn;\n if (!classNames) {\n return;\n }\n if (typeof node.classList === \"object\") {\n addOrRemoveFn = node.classList[shouldHaveClass ? \"add\" : \"remove\"];\n arrayForEach(classNames.match(cssClassNameRegex), function(className) {\n addOrRemoveFn.call(node.classList, className);\n });\n } else if (typeof node.className[\"baseVal\"] === \"string\") {\n toggleObjectClassPropertyString(node.className, \"baseVal\", classNames, shouldHaveClass);\n } else {\n toggleObjectClassPropertyString(node, \"className\", classNames, shouldHaveClass);\n }\n}\nfunction toggleObjectClassPropertyString(obj, prop, classNames, shouldHaveClass) {\n const currentClassNames = obj[prop].match(cssClassNameRegex) || [];\n arrayForEach(classNames.match(cssClassNameRegex), function(className) {\n addOrRemoveItem(currentClassNames, className, shouldHaveClass);\n });\n obj[prop] = currentClassNames.join(\" \");\n}\nexport { toggleDomNodeCssClass };\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { arrayFirst } from \"../array\";\nexport function domNodeIsContainedBy(node, containedByNode) {\n if (node === containedByNode) {\n return true;\n }\n if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n return false;\n }\n if (containedByNode.contains) {\n return containedByNode.contains(node.nodeType !== Node.ELEMENT_NODE ? node.parentNode : node);\n }\n if (containedByNode.compareDocumentPosition) {\n return (containedByNode.compareDocumentPosition(node) & 16) == 16;\n }\n let parentNode = node;\n while (parentNode && parentNode != containedByNode) {\n parentNode = parentNode.parentNode;\n }\n return !!parentNode;\n}\nexport function domNodeIsAttachedToDocument(node) {\n return domNodeIsContainedBy(node, node.ownerDocument.documentElement);\n}\nexport function anyDomNodeIsAttachedToDocument(nodes) {\n return !!arrayFirst(nodes, domNodeIsAttachedToDocument);\n}\nexport function tagNameLower(element) {\n return element && element.tagName && element.tagName.toLowerCase();\n}\nexport function isDomElement(obj) {\n if (window.HTMLElement) {\n return obj instanceof HTMLElement;\n } else {\n return obj && obj.tagName && obj.nodeType === Node.ELEMENT_NODE;\n }\n}\nexport function isDocumentFragment(obj) {\n if (window.DocumentFragment) {\n return obj instanceof DocumentFragment;\n } else {\n return obj && obj.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { objectForEach } from \"../object\";\nimport { catchFunctionErrors } from \"../error\";\nimport { tagNameLower } from \"./info\";\nimport options from \"../options\";\nconst knownEvents = {}, knownEventTypesByEventName = {};\nknownEvents[\"UIEvents\"] = [\"keyup\", \"keydown\", \"keypress\"];\nknownEvents[\"MouseEvents\"] = [\n \"click\",\n \"dblclick\",\n \"mousedown\",\n \"mouseup\",\n \"mousemove\",\n \"mouseover\",\n \"mouseout\",\n \"mouseenter\",\n \"mouseleave\"\n];\nobjectForEach(knownEvents, function(eventType, knownEventsForType) {\n if (knownEventsForType.length) {\n for (let i = 0, j = knownEventsForType.length; i < j; i++) {\n knownEventTypesByEventName[knownEventsForType[i]] = eventType;\n }\n }\n});\nfunction isClickOnCheckableElement(element, eventType) {\n if (tagNameLower(element) !== \"input\" || !element.type) return false;\n if (eventType.toLowerCase() != \"click\") return false;\n const inputType = element.type;\n return inputType == \"checkbox\" || inputType == \"radio\";\n}\nexport function registerEventHandler(element, eventType, handler, eventOptions = false) {\n const wrappedHandler = catchFunctionErrors(handler);\n const mustUseNative = Boolean(eventOptions);\n const jQuery = options.jQuery;\n if (!options.useOnlyNativeEvents && !mustUseNative && jQuery) {\n jQuery(element).on(eventType, wrappedHandler);\n } else if (typeof element.addEventListener === \"function\") {\n element.addEventListener(eventType, wrappedHandler, eventOptions);\n } else {\n throw new Error(\"Browser doesn't support addEventListener\");\n }\n}\nfunction hasClick(element) {\n return typeof element.click === \"function\";\n}\nexport function triggerEvent(element, eventType) {\n if (!(element && element.nodeType)) {\n throw new Error(\"element must be a DOM node when calling triggerEvent\");\n }\n const useClickWorkaround = isClickOnCheckableElement(element, eventType);\n if (!options.useOnlyNativeEvents && options.jQuery && !useClickWorkaround) {\n options.jQuery(element).trigger(eventType);\n } else if (typeof document.createEvent === \"function\") {\n if (typeof element.dispatchEvent === \"function\") {\n const eventCategory = knownEventTypesByEventName[eventType] || \"HTMLEvents\";\n const event = document.createEvent(eventCategory);\n event.initEvent(\n eventType,\n true,\n true,\n options.global,\n 0,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 0,\n element\n );\n element.dispatchEvent(event);\n } else {\n throw new Error(\"The supplied element doesn't support dispatchEvent\");\n }\n } else if (useClickWorkaround && hasClick(element)) {\n element.click();\n } else {\n throw new Error(\"Browser doesn't support triggering events\");\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nconst datastoreTime = (/* @__PURE__ */ new Date()).getTime();\nconst dataStoreKeyExpandoPropertyName = `__ko__${datastoreTime}`;\nconst dataStoreSymbol = /* @__PURE__ */ Symbol(\"Knockout data\");\nconst dataStore = {};\nlet uniqueId = 0;\nfunction isSafeKey(key) {\n return key !== \"__proto__\" && key !== \"constructor\" && key !== \"prototype\";\n}\nfunction getDataForNode(node, createIfNotFound) {\n let dataForNode = node[dataStoreSymbol];\n if (!dataForNode && createIfNotFound) {\n dataForNode = node[dataStoreSymbol] = {};\n }\n return dataForNode;\n}\nfunction clear(node) {\n if (node[dataStoreSymbol]) {\n delete node[dataStoreSymbol];\n return true;\n }\n return false;\n}\nexport function nextKey() {\n return uniqueId++ + dataStoreKeyExpandoPropertyName;\n}\nfunction get(node, key) {\n if (!isSafeKey(key)) throw new Error(\"Unsafe key for DOM data: \" + key);\n const dataForNode = getDataForNode(node, false);\n return dataForNode && dataForNode[key];\n}\nfunction set(node, key, value) {\n if (!isSafeKey(key)) throw new Error(\"Unsafe key for DOM data: \" + key);\n const dataForNode = getDataForNode(\n node,\n value !== void 0\n /* createIfNotFound */\n );\n if (dataForNode) {\n dataForNode[key] = value;\n }\n}\nfunction getOrSet(node, key, value) {\n if (!isSafeKey(key)) throw new Error(\"Unsafe key for DOM data: \" + key);\n const dataForNode = getDataForNode(\n node,\n true\n /* createIfNotFound */\n );\n return dataForNode[key] || (dataForNode[key] = value);\n}\nexport { get, set, getOrSet, clear };\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport * as domData from \"./data\";\nimport { default as options } from \"../options\";\nimport { arrayRemoveItem, arrayIndexOf } from \"../array\";\nconst domDataKey = domData.nextKey();\nconst cleanableNodeTypes = { 1: true, 8: true, 9: true };\nconst cleanableNodeTypesWithDescendants = { 1: true, 9: true };\nfunction getDisposeCallbacksCollection(node, createIfNotFound) {\n let allDisposeCallbacks = domData.get(node, domDataKey);\n if (allDisposeCallbacks === void 0 && createIfNotFound) {\n allDisposeCallbacks = new Array();\n domData.set(node, domDataKey, allDisposeCallbacks);\n }\n return allDisposeCallbacks;\n}\nfunction destroyCallbacksCollection(node) {\n domData.set(node, domDataKey, void 0);\n}\nfunction cleanSingleNode(node) {\n let callbacks = getDisposeCallbacksCollection(node, false);\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](node);\n }\n }\n domData.clear(node);\n for (let i = 0, j = otherNodeCleanerFunctions.length; i < j; ++i) {\n otherNodeCleanerFunctions[i](node);\n }\n if (options.cleanExternalData) {\n options.cleanExternalData(node);\n }\n if (cleanableNodeTypesWithDescendants[node.nodeType]) {\n cleanNodesInList(\n node.childNodes,\n true\n /* onlyComments */\n );\n }\n}\nfunction cleanNodesInList(nodeList, onlyComments) {\n const cleanedNodes = new Array();\n let lastCleanedNode;\n for (let i = 0; i < nodeList.length; i++) {\n if (!onlyComments || nodeList[i].nodeType === Node.COMMENT_NODE) {\n cleanSingleNode(cleanedNodes[cleanedNodes.length] = lastCleanedNode = nodeList[i]);\n if (nodeList[i] !== lastCleanedNode) {\n while (i-- && arrayIndexOf(cleanedNodes, nodeList[i]) === -1) {\n }\n }\n }\n }\n}\nexport function addDisposeCallback(node, callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Callback must be a function\");\n }\n getDisposeCallbacksCollection(node, true).push(callback);\n}\nexport function removeDisposeCallback(node, callback) {\n const callbacksCollection = getDisposeCallbacksCollection(node, false);\n if (callbacksCollection) {\n arrayRemoveItem(callbacksCollection, callback);\n if (callbacksCollection.length === 0) {\n destroyCallbacksCollection(node);\n }\n }\n}\nexport function cleanNode(node) {\n if (cleanableNodeTypes[node.nodeType]) {\n cleanSingleNode(node);\n if (cleanableNodeTypesWithDescendants[node.nodeType] && node instanceof Element) {\n cleanNodesInList(node.getElementsByTagName(\"*\"));\n }\n }\n return node;\n}\nexport function removeNode(node) {\n if (!node) {\n return;\n }\n cleanNode(node);\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nexport const otherNodeCleanerFunctions = new Array();\nexport function addCleaner(fn) {\n otherNodeCleanerFunctions.push(fn);\n}\nexport function removeCleaner(fn) {\n const fnIndex = otherNodeCleanerFunctions.indexOf(fn);\n if (fnIndex >= 0) {\n otherNodeCleanerFunctions.splice(fnIndex, 1);\n }\n}\nexport function cleanjQueryData(node) {\n const jQueryCleanNodeFn = options.jQuery ? options.jQuery.cleanData : null;\n if (jQueryCleanNodeFn) {\n jQueryCleanNodeFn([node]);\n }\n}\notherNodeCleanerFunctions.push(cleanjQueryData);\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { makeArray } from \"../array\";\nimport { cleanNode, removeNode } from \"./disposal\";\nexport function moveCleanedNodesToContainerElement(nodes) {\n const nodesArray = makeArray(nodes);\n const templateDocument = nodesArray[0] && nodesArray[0].ownerDocument || document;\n const container = templateDocument.createElement(\"div\");\n for (let i = 0, j = nodesArray.length; i < j; i++) {\n container.appendChild(cleanNode(nodesArray[i]));\n }\n return container;\n}\nexport function cloneNodes(nodesArray, shouldCleanNodes) {\n const newNodesArray = new Array();\n for (let i = 0; i < nodesArray.length; i++) {\n const clonedNode = nodesArray[i].cloneNode(true);\n newNodesArray.push(shouldCleanNodes ? cleanNode(clonedNode) : clonedNode);\n }\n return newNodesArray;\n}\nexport function setDomNodeChildren(domNode, childNodes) {\n emptyDomNode(domNode);\n if (childNodes) {\n for (let i = 0; i < childNodes.length; i++) {\n domNode.appendChild(childNodes[i]);\n }\n }\n}\nexport function replaceDomNodes(nodeToReplaceOrNodeArray, newNodesArray) {\n const nodesToReplaceArray = Array.isArray(nodeToReplaceOrNodeArray) ? nodeToReplaceOrNodeArray : [nodeToReplaceOrNodeArray];\n if (nodesToReplaceArray.length > 0) {\n const insertionPoint = nodesToReplaceArray[0];\n const parent = insertionPoint.parentNode;\n for (let i = 0; i < newNodesArray.length; i++) {\n parent?.insertBefore(newNodesArray[i], insertionPoint);\n }\n for (let i = 0; i < nodesToReplaceArray.length; i++) {\n removeNode(nodesToReplaceArray[i]);\n }\n }\n}\nexport function emptyDomNode(domNode) {\n while (domNode.firstChild) {\n removeNode(domNode.firstChild);\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nexport function fixUpContinuousNodeArray(continuousNodeArray, parentNode) {\n if (continuousNodeArray.length) {\n parentNode = parentNode.nodeType === Node.COMMENT_NODE && parentNode.parentNode || parentNode;\n while (continuousNodeArray.length && continuousNodeArray[0].parentNode !== parentNode) {\n continuousNodeArray.splice(0, 1);\n }\n while (continuousNodeArray.length > 1 && continuousNodeArray[continuousNodeArray.length - 1].parentNode !== parentNode) {\n continuousNodeArray.length--;\n }\n if (continuousNodeArray.length > 1) {\n let current = continuousNodeArray[0], last = continuousNodeArray[continuousNodeArray.length - 1];\n continuousNodeArray.length = 0;\n while (current !== last) {\n continuousNodeArray.push(current);\n current = current.nextSibling;\n }\n continuousNodeArray.push(last);\n }\n }\n return continuousNodeArray;\n}\nexport function setOptionNodeSelectionState(optionNode, isSelected) {\n optionNode.selected = isSelected;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { emptyDomNode, setDomNodeChildren as setRegularDomNodeChildren } from \"./manipulation\";\nimport { removeNode } from \"./disposal\";\nimport { tagNameLower } from \"./info\";\nimport * as domData from \"./data\";\nexport const startCommentRegex = /^\\s*ko(?:\\s+([\\s\\S]+))?\\s*$/;\nexport const endCommentRegex = /^\\s*\\/ko\\s*$/;\nconst htmlTagsWithOptionallyClosingChildren = { ul: true, ol: true };\nexport function isStartComment(node) {\n return node.nodeType === Node.COMMENT_NODE && startCommentRegex.test(node.nodeValue);\n}\nexport function isEndComment(node) {\n return node.nodeType === Node.COMMENT_NODE && endCommentRegex.test(node.nodeValue);\n}\nfunction isUnmatchedEndComment(node) {\n return isEndComment(node) && !domData.get(node, matchedEndCommentDataKey);\n}\nconst matchedEndCommentDataKey = \"__ko_matchedEndComment__\";\nexport function getVirtualChildren(startComment, allowUnbalanced) {\n let currentNode = startComment;\n let depth = 1;\n const children = new Array();\n while (currentNode = currentNode.nextSibling) {\n if (isEndComment(currentNode)) {\n domData.set(currentNode, matchedEndCommentDataKey, true);\n depth--;\n if (depth === 0) {\n return children;\n }\n }\n children.push(currentNode);\n if (isStartComment(currentNode)) {\n depth++;\n }\n }\n if (!allowUnbalanced) {\n throw new Error(\"Cannot find closing comment tag to match: \" + startComment.nodeValue);\n }\n return null;\n}\nfunction getMatchingEndComment(startComment, allowUnbalanced) {\n const allVirtualChildren = getVirtualChildren(startComment, allowUnbalanced);\n if (allVirtualChildren) {\n if (allVirtualChildren.length > 0) {\n return allVirtualChildren[allVirtualChildren.length - 1].nextSibling;\n }\n return startComment.nextSibling;\n } else {\n return null;\n }\n}\nfunction getUnbalancedChildTags(node) {\n let childNode = node.firstChild, captureRemaining = null;\n if (childNode) {\n do {\n if (captureRemaining) {\n captureRemaining.push(childNode);\n } else if (isStartComment(childNode)) {\n const matchingEndComment = getMatchingEndComment(\n childNode,\n /* allowUnbalanced: */\n true\n );\n if (matchingEndComment) {\n childNode = matchingEndComment;\n } else {\n captureRemaining = [childNode];\n }\n } else if (isEndComment(childNode)) {\n captureRemaining = [childNode];\n }\n } while (childNode = childNode.nextSibling);\n }\n return captureRemaining;\n}\nexport const allowedBindings = /* @__PURE__ */ Object.create(null);\nexport const hasBindingValue = isStartComment;\nexport function childNodes(node) {\n return isStartComment(node) ? getVirtualChildren(node) : node.childNodes;\n}\nexport function emptyNode(node) {\n if (!isStartComment(node)) {\n emptyDomNode(node);\n } else {\n const virtualChildren = childNodes(node);\n for (let i = 0, j = virtualChildren.length; i < j; i++) {\n removeNode(virtualChildren[i]);\n }\n }\n}\nexport function setDomNodeChildren(node, childNodes2) {\n if (!isStartComment(node)) {\n setRegularDomNodeChildren(node, childNodes2);\n } else {\n emptyNode(node);\n const endCommentNode = node.nextSibling;\n if (endCommentNode && endCommentNode.parentNode) {\n const parentNode = endCommentNode.parentNode;\n for (let i = 0, j = childNodes2.length; i < j; ++i) {\n parentNode.insertBefore(childNodes2[i], endCommentNode);\n }\n }\n }\n}\nexport function prepend(containerNode, nodeToPrepend) {\n if (!isStartComment(containerNode)) {\n if (containerNode.firstChild) {\n containerNode.insertBefore(nodeToPrepend, containerNode.firstChild);\n } else {\n containerNode.appendChild(nodeToPrepend);\n }\n } else {\n containerNode.parentNode?.insertBefore(nodeToPrepend, containerNode.nextSibling);\n }\n}\nexport function insertAfter(containerNode, nodeToInsert, insertAfterNode) {\n if (!insertAfterNode) {\n prepend(containerNode, nodeToInsert);\n } else if (!isStartComment(containerNode)) {\n if (insertAfterNode.nextSibling) {\n containerNode.insertBefore(nodeToInsert, insertAfterNode.nextSibling);\n } else {\n containerNode.appendChild(nodeToInsert);\n }\n } else {\n containerNode.parentNode?.insertBefore(nodeToInsert, insertAfterNode.nextSibling);\n }\n}\nexport function firstChild(node) {\n if (!isStartComment(node)) {\n if (node.firstChild && isEndComment(node.firstChild)) {\n throw new Error(\"Found invalid end comment, as the first child of \" + node.outerHTML);\n }\n return node.firstChild;\n }\n if (!node.nextSibling || isEndComment(node.nextSibling)) {\n return null;\n }\n return node.nextSibling;\n}\nexport function lastChild(node) {\n let nextChild = firstChild(node);\n if (!nextChild) return null;\n let lastChildNode;\n do {\n lastChildNode = nextChild;\n } while (nextChild = nextSibling(nextChild));\n return lastChildNode;\n}\nexport function nextSibling(node) {\n if (isStartComment(node)) {\n node = getMatchingEndComment(node);\n }\n if (node.nextSibling && isEndComment(node.nextSibling)) {\n if (isUnmatchedEndComment(node.nextSibling)) {\n throw Error(\n \"Found end comment without a matching opening comment, as next sibling of \" + node.outerHTML\n );\n }\n return null;\n } else {\n return node.nextSibling;\n }\n}\nexport function previousSibling(node) {\n let depth = 0;\n do {\n if (node.nodeType === Node.COMMENT_NODE) {\n if (isStartComment(node)) {\n if (--depth === 0) {\n return node;\n }\n } else if (isEndComment(node)) {\n depth++;\n }\n } else {\n if (depth === 0) {\n return node;\n }\n }\n } while (node = node.previousSibling);\n}\nexport function virtualNodeBindingValue(node) {\n const regexMatch = node.nodeValue.match(startCommentRegex);\n return regexMatch ? regexMatch[1] : null;\n}\nexport function normaliseVirtualElementDomStructure(elementVerified) {\n if (!htmlTagsWithOptionallyClosingChildren[tagNameLower(elementVerified)]) {\n return;\n }\n let childNode = elementVerified.firstChild;\n if (childNode) {\n do {\n if (childNode.nodeType === Node.ELEMENT_NODE) {\n const unbalancedTags = getUnbalancedChildTags(childNode);\n if (unbalancedTags) {\n const nodeToInsertBefore = childNode.nextSibling;\n for (let i = 0; i < unbalancedTags.length; i++) {\n if (nodeToInsertBefore) {\n elementVerified.insertBefore(unbalancedTags[i], nodeToInsertBefore);\n } else {\n elementVerified.appendChild(unbalancedTags[i]);\n }\n }\n }\n }\n } while (childNode = childNode.nextSibling);\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { makeArray } from \"../array\";\nimport { emptyDomNode, moveCleanedNodesToContainerElement } from \"./manipulation\";\nimport * as virtualElements from \"./virtualElements\";\nimport options from \"../options\";\nconst supportsTemplateTag = options.useTemplateTag && options.document && \"content\" in options.document.createElement(\"template\");\nfunction simpleHtmlParse(html, documentContext) {\n if (!documentContext) {\n documentContext = document;\n }\n const div = documentContext.createElement(\"div\");\n div.innerHTML = html;\n return makeArray(div.childNodes);\n}\nfunction templateHtmlParse(html, documentContext) {\n if (!documentContext) {\n documentContext = document;\n }\n const template = documentContext.createElement(\"template\");\n template.innerHTML = html;\n return makeArray(template.content.childNodes);\n}\nfunction jQueryHtmlParse(html, documentContext) {\n const jQuery = options.jQuery;\n if (jQuery) {\n return jQuery.parseHTML(html, documentContext) || [];\n }\n return [];\n}\nexport function parseHtmlFragment(html, documentContext) {\n const saferHtml = validateHTMLInput(html);\n if (supportsTemplateTag) return templateHtmlParse(saferHtml, documentContext);\n if (options.jQuery) {\n return jQueryHtmlParse(saferHtml, documentContext);\n }\n return simpleHtmlParse(saferHtml, documentContext);\n}\nconst scriptTagPattern = /<script\\b[^>]*>([\\s\\S]*?)<\\/script[^>]*>/i;\nfunction validateHTMLInput(html) {\n if (!html) return \"\";\n if (options.templateSizeLimit > 0 && html.length > options.templateSizeLimit) {\n throw new Error(\"Template is too long. Please configure the 'templateSizeLimit'\");\n }\n if (!options.allowScriptTagsInTemplates && scriptTagPattern.test(html)) {\n throw new Error(\"Script-tag in template detected.\");\n }\n return options.sanitizeHtmlTemplate(html);\n}\nexport function parseHtmlForTemplateNodes(html, documentContext) {\n const nodes = parseHtmlFragment(html, documentContext);\n return nodes.length && nodes[0].parentElement || moveCleanedNodesToContainerElement(nodes);\n}\nexport function setHtml(node, html) {\n emptyDomNode(node);\n if (typeof html === \"function\") {\n html = html();\n }\n if (html !== null && html !== void 0) {\n if (typeof html !== \"string\") {\n html = html.toString();\n }\n const jQuery = options.jQuery;\n if (jQuery && !supportsTemplateTag) {\n const saferHtml = validateHTMLInput(html);\n jQuery(node).html(saferHtml);\n } else {\n let parsedNodes;\n if (node.ownerDocument) {\n parsedNodes = parseHtmlFragment(html, node.ownerDocument);\n } else {\n parsedNodes = parseHtmlFragment(html);\n }\n if (node.nodeType === Node.COMMENT_NODE) {\n if (html === null) {\n virtualElements.emptyNode(node);\n } else {\n virtualElements.setDomNodeChildren(node, parsedNodes);\n }\n } else {\n for (let i = 0; i < parsedNodes.length; i++) {\n node.appendChild(parsedNodes[i]);\n }\n }\n }\n }\n}\nexport function setTextContent(element, textContent) {\n let value = typeof textContent === \"function\" ? textContent() : textContent;\n if (value === null || value === void 0) {\n value = \"\";\n }\n const innerTextNode = virtualElements.firstChild(element);\n if (!innerTextNode || innerTextNode.nodeType !== Node.TEXT_NODE || virtualElements.nextSibling(innerTextNode)) {\n virtualElements.setDomNodeChildren(element, [element.ownerDocument.createTextNode(value)]);\n } else {\n ;\n innerTextNode.data = value;\n }\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { tagNameLower } from \"./info\";\nimport * as domData from \"./data\";\nconst hasDomDataExpandoProperty = /* @__PURE__ */ Symbol(\"Knockout selectExtensions hasDomDataProperty\");\nexport const selectExtensions = {\n optionValueDomDataKey: domData.nextKey(),\n readValue: function(element) {\n switch (tagNameLower(element)) {\n case \"option\": {\n if (element[hasDomDataExpandoProperty] === true) {\n return domData.get(element, selectExtensions.optionValueDomDataKey);\n }\n return element.value;\n }\n case \"select\": {\n const selectElement = element;\n return selectElement.selectedIndex >= 0 ? selectExtensions.readValue(selectElement.options[selectElement.selectedIndex]) : void 0;\n }\n default:\n return element.value;\n }\n },\n writeValue: function(element, value, allowUnset) {\n switch (tagNameLower(element)) {\n case \"option\":\n if (typeof value === \"string\") {\n domData.set(element, selectExtensions.optionValueDomDataKey, void 0);\n if (hasDomDataExpandoProperty in element) {\n delete element[hasDomDataExpandoProperty];\n }\n ;\n element.value = value;\n } else {\n const el = element;\n domData.set(element, selectExtensions.optionValueDomDataKey, value);\n el[hasDomDataExpandoProperty] = true;\n el.value = typeof value === \"number\" ? value : \"\";\n }\n break;\n case \"select\":\n {\n if (value === \"\" || value === null) {\n value = void 0;\n }\n let selection = -1;\n const selectElement = element;\n for (let i = 0, n = selectElement.options.length, optionValue; i < n; ++i) {\n optionValue = selectExtensions.readValue(selectElement.options[i]);\n const strictEqual = optionValue === value;\n const blankEqual = optionValue === \"\" && value === void 0;\n const numericEqual = typeof value === \"number\" && Number(optionValue) === value;\n if (strictEqual || blankEqual || numericEqual) {\n selection = i;\n break;\n }\n }\n if (allowUnset || selection >= 0 || value === void 0 && selectElement.size > 1) {\n selectElement.selectedIndex = selection;\n }\n }\n break;\n default:\n if (value === null || value === void 0) {\n value = \"\";\n }\n ;\n element.value = value;\n break;\n }\n }\n};\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { arrayPushAll } from \"./array\";\nconst memos = {};\nfunction randomMax8HexChars() {\n return ((1 + Math.random()) * 4294967296 | 0).toString(16).substring(1);\n}\nfunction generateRandomId() {\n return randomMax8HexChars() + randomMax8HexChars();\n}\nfunction findMemoNodes(rootNode, appendToArray) {\n if (!rootNode) {\n return;\n }\n if (rootNode.nodeType === Node.COMMENT_NODE) {\n const comment = rootNode;\n const memoId = parseMemoText(comment.nodeValue);\n if (memoId != null) {\n appendToArray.push({ domNode: rootNode, memoId });\n }\n } else if (rootNode.nodeType === Node.ELEMENT_NODE) {\n for (let i = 0, childNodes = rootNode.childNodes, j = childNodes.length; i < j; i++) {\n findMemoNodes(childNodes[i], appendToArray);\n }\n }\n}\nexport function memoize(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"You can only pass a function to memoization.memoize()\");\n }\n const memoId = generateRandomId();\n memos[memoId] = callback;\n return \"<!--[ko_memo:\" + memoId + \"]-->\";\n}\nexport function unmemoize(memoId, callbackParams) {\n const callback = memos[memoId];\n if (callback === void 0) {\n throw new Error(\"Couldn't find any memo with ID \" + memoId + \". Perhaps it's already been unmemoized.\");\n }\n try {\n callback.apply(null, callbackParams || []);\n return true;\n } finally {\n delete memos[memoId];\n }\n}\nexport function unmemoizeDomNodeAndDescendants(domNode, extraCallbackParamsArray) {\n const memos2 = new Array();\n findMemoNodes(domNode, memos2);\n for (let i = 0, j = memos2.length; i < j; i++) {\n const node = memos2[i].domNode;\n const combinedParams = [node];\n if (extraCallbackParamsArray) {\n arrayPushAll(combinedParams, extraCallbackParamsArray);\n }\n unmemoize(memos2[i].memoId, combinedParams);\n node.nodeValue = \"\";\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n}\nexport function parseMemoText(memoText) {\n if (!memoText) {\n return null;\n }\n const match = memoText.match(/^\\[ko_memo\\:(.*?)\\]$/);\n return match ? match[1] : null;\n}\n", "// @tko/utils \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport options from \"./options\";\nimport { deferError } from \"./error\";\nlet taskQueue = new Array(), taskQueueLength = 0, nextHandle = 1, nextIndexToProcess = 0, w = options.global;\nif (w && w.MutationObserver && !(w.navigator && w.navigator.standalone)) {\n options.taskScheduler = (function(callback) {\n const div = w.document.createElement(\"div\");\n new w.MutationObserver(callback).observe(div, { attributes: true });\n return function() {\n div.classList.toggle(\"foo\");\n };\n })(scheduledProcess);\n} else {\n options.taskScheduler = function(callback) {\n setTimeout(callback, 0);\n };\n}\nfunction processTasks() {\n if (taskQueueLength) {\n let mark = taskQueueLength, countMarks = 0;\n for (let task; nextIndexToProcess < taskQueueLength; ) {\n if (task = taskQueue[nextIndexToProcess++]) {\n if (nextIndexToProcess > mark) {\n if (++countMarks >= 5e3) {\n nextIndexToProcess = taskQueueLength;\n deferError(Error(\"'Too much recursion' after processing \" + countMarks + \" task groups.\"));\n break;\n }\n mark = taskQueueLength;\n }\n try {\n task();\n } catch (ex) {\n deferError(ex);\n }\n }\n }\n }\n}\nfunction scheduledProcess() {\n processTasks();\n nextIndexToProcess = taskQueueLength = taskQueue.length = 0;\n}\nfunction scheduleTaskProcessing() {\n options.taskScheduler(scheduledProcess);\n}\nexport function schedule(func) {\n if (!taskQueueLength) {\n scheduleTaskProcessing();\n }\n taskQueue[taskQueueLength++] = func;\n return nextHandle++;\n}\nexport function cancel(handle) {\n const index = handle - (nextHandle - taskQueueLength);\n if (index >= nextIndexToProcess && index < taskQueueLength) {\n taskQueue[index] = null;\n }\n}\nexport function resetForTesting() {\n const length = taskQueueLength - nextIndexToProcess;\n nextIndexToProcess = taskQueueLength = taskQueue.length = 0;\n return length;\n}\nexport { processTasks as runEarly };\n", "// @tko/observable \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { isSubscribable } from \"./subscribableSymbol\";\nconst outerFrames = new Array();\nlet currentFrame;\nlet lastId = 0;\nfunction getId() {\n return ++lastId;\n}\nexport function begin(options) {\n outerFrames.push(currentFrame);\n currentFrame = options;\n}\nexport function end() {\n currentFrame = outerFrames.pop();\n}\nexport function registerDependency(subscribable) {\n if (currentFrame) {\n if (!isSubscribable(subscribable)) {\n throw new Error(\"Only subscribable things can act as dependencies\");\n }\n currentFrame.callback.call(\n currentFrame.callbackTarget,\n subscribable,\n subscribable._id || (subscribable._id = getId())\n );\n }\n}\nexport function ignore(callback, callbackTarget, callbackArgs) {\n try {\n begin();\n return callback.apply(callbackTarget, callbackArgs || []);\n } finally {\n end();\n }\n}\nexport function getDependenciesCount() {\n if (currentFrame) {\n return currentFrame.computed.getDependenciesCount();\n }\n return void 0;\n}\nexport function getDependencies() {\n if (currentFrame) {\n return currentFrame.computed.getDependencies();\n }\n return void 0;\n}\nexport function isInitial() {\n if (currentFrame) {\n return currentFrame.isInitial;\n }\n return void 0;\n}\nexport { ignore as ignoreDependencies };\n", "// @tko/observable \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nexport const SUBSCRIBABLE_SYM = /* @__PURE__ */ Symbol(\"Knockout Subscribable\");\nexport function isSubscribable(instance) {\n return instance && instance[SUBSCRIBABLE_SYM] || false;\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { tasks } from \"@tko/utils\";\nexport function deferUpdates(target) {\n if (target._deferUpdates) {\n return;\n }\n target._deferUpdates = true;\n target.limit(function(callback) {\n let handle;\n let ignoreUpdates = false;\n return function() {\n if (!ignoreUpdates) {\n tasks.cancel(handle);\n handle = tasks.schedule(callback);\n try {\n ignoreUpdates = true;\n target.notifySubscribers(void 0, \"dirty\");\n } finally {\n ignoreUpdates = false;\n }\n }\n };\n });\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { removeDisposeCallback, addDisposeCallback } from \"@tko/utils\";\nexport default class Subscription {\n constructor(target, observer, disposeCallback) {\n this._target = target;\n this._callback = observer.next;\n this._disposeCallback = disposeCallback;\n this._isDisposed = false;\n this._domNodeDisposalCallback = null;\n }\n dispose() {\n if (this._domNodeDisposalCallback) {\n removeDisposeCallback(this._node, this._domNodeDisposalCallback);\n }\n this._isDisposed = true;\n this._disposeCallback();\n }\n disposeWhenNodeIsRemoved(node) {\n this._node = node;\n addDisposeCallback(node, this._domNodeDisposalCallback = this.dispose.bind(this));\n }\n // TC39 Observable API\n unsubscribe() {\n this.dispose();\n }\n get closed() {\n return this._isDisposed;\n }\n}\n", "// @tko/observable \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { options, objectForEach, throttle as throttleFn, debounce as debounceFn } from \"@tko/utils\";\nimport { deferUpdates } from \"./defer\";\nconst primitiveTypes = { undefined: 1, boolean: 1, number: 1, string: 1 };\nexport function valuesArePrimitiveAndEqual(a, b) {\n const oldValueIsPrimitive = a === null || typeof a in primitiveTypes;\n return oldValueIsPrimitive ? a === b : false;\n}\nexport function applyExtenders(requestedExtenders) {\n let target = this;\n if (requestedExtenders) {\n objectForEach(requestedExtenders, function(key, value) {\n const extenderHandler = extenders[key];\n if (typeof extenderHandler === \"function\") {\n target = extenderHandler(target, value) || target;\n } else {\n options.onError(new Error(\"Extender not found: \" + key));\n }\n });\n }\n return target;\n}\nexport function notify(target, notifyWhen) {\n target.equalityComparer = notifyWhen == \"always\" ? null : valuesArePrimitiveAndEqual;\n}\nexport function deferred(target, option) {\n if (option !== true) {\n throw new Error(\n \"The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.\"\n );\n }\n deferUpdates(target);\n}\nexport function rateLimit(target, options2) {\n let timeout, method, limitFunction;\n if (typeof options2 === \"number\") {\n timeout = options2;\n } else {\n timeout = options2.timeout;\n method = options2.method;\n }\n target._deferUpdates = false;\n limitFunction = method === \"notifyWhenChangesStop\" ? debounceFn : throttleFn;\n target.limit(function(callback) {\n return limitFunction(callback, timeout);\n });\n}\nexport const extenders = { notify, deferred, rateLimit };\n", "// @tko/observable \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { arrayRemoveItem, objectForEach, options } from \"@tko/utils\";\nimport Subscription from \"./Subscription\";\nimport { SUBSCRIBABLE_SYM } from \"./subscribableSymbol\";\nimport { applyExtenders } from \"./extenders\";\nimport * as dependencyDetection from \"./dependencyDetection\";\nexport { isSubscribable } from \"./subscribableSymbol\";\nexport const LATEST_VALUE = /* @__PURE__ */ Symbol(\"Knockout latest value\");\nif (!Symbol.observable) {\n Symbol.observable = /* @__PURE__ */ Symbol.for(\"@tko/Symbol.observable\");\n}\nexport const subscribable = function subscribableFactory() {\n Object.setPrototypeOf(this, ko_subscribable_fn);\n ko_subscribable_fn.init(this);\n};\nexport const defaultEvent = \"change\";\nconst ko_subscribable_fn = {\n [SUBSCRIBABLE_SYM]: true,\n [Symbol.observable]() {\n return this;\n },\n init(instance) {\n instance._subscriptions = { change: [] };\n instance._versionNumber = 1;\n },\n subscribe(callback, callbackTarget, event) {\n const isTC39Callback = typeof callback === \"object\" && callback.next;\n event = event || defaultEvent;\n const observer = isTC39Callback ? callback : { next: callbackTarget ? callback.bind(callbackTarget) : callback };\n const subscriptionInstance = new Subscription(this, observer, () => {\n arrayRemoveItem(this._subscriptions[event], subscriptionInstance);\n if (this.afterSubscriptionRemove) {\n this.afterSubscriptionRemove(event);\n }\n });\n if (this.beforeSubscriptionAdd) {\n this.beforeSubscriptionAdd(event);\n }\n if (!this._subscriptions[event]) {\n this._subscriptions[event] = new Array();\n }\n this._subscriptions[event].push(subscriptionInstance);\n if (isTC39Callback && LATEST_VALUE in this) {\n observer.next(this[LATEST_VALUE]);\n }\n return subscriptionInstance;\n },\n notifySubscribers(valueToNotify, event) {\n event = event || defaultEvent;\n if (event === defaultEvent) {\n this.updateVersion();\n }\n if (this.hasSubscriptionsForEvent(event)) {\n const subs = event === defaultEvent && this._changeSubscriptions || [...this._subscriptions[event]];\n try {\n dependencyDetection.begin();\n for (let i = 0, subscriptionInstance; subscriptionInstance = subs[i]; ++i) {\n if (!subscriptionInstance._isDisposed) {\n subscriptionInstance._callback(valueToNotify);\n }\n }\n } finally {\n dependencyDetection.end();\n }\n }\n },\n getVersion() {\n return this._versionNumber;\n },\n hasChanged(versionToCheck) {\n return this.getVersion() !== versionToCheck;\n },\n updateVersion() {\n ++this._versionNumber;\n },\n hasSubscriptionsForEvent(event) {\n return this._subscriptions[event] && this._subscriptions[event].length;\n },\n getSubscriptionsCount(event) {\n if (event) {\n return this._subscriptions[event] && this._subscriptions[event].length || 0;\n } else {\n let total = 0;\n objectForEach(this._subscriptions, function(eventName, subscriptions) {\n if (eventName !== \"dirty\") {\n total += subscriptions.length;\n }\n });\n return total;\n }\n },\n isDifferent(oldValue, newValue) {\n return !this.equalityComparer || !this.equalityComparer(oldValue, newValue);\n },\n once(cb) {\n const subs = this.subscribe((nv) => {\n subs.dispose();\n cb(nv);\n });\n },\n when(test, returnValue) {\n const current = this.peek();\n const givenRv = arguments.length > 1;\n const testFn = typeof test === \"function\" ? test : (v) => v === test;\n if (testFn(current)) {\n return options.Promise.resolve(givenRv ? returnValue : current);\n }\n return new options.Promise((resolve, reject) => {\n const subs = this.subscribe((newValue) => {\n if (testFn(newValue)) {\n subs.dispose();\n resolve(givenRv ? returnValue : newValue);\n }\n });\n });\n },\n yet(test, ...args) {\n const testFn = typeof test === \"function\" ? test : (v) => v === test;\n const negated = (v) => !testFn(v);\n return this.when(negated, ...args);\n },\n next() {\n return new Promise((resolve) => this.once(resolve));\n },\n toString() {\n return \"[object Object]\";\n },\n extend: applyExtenders\n};\nObject.setPrototypeOf(ko_subscribable_fn, Function.prototype);\nsubscribable.fn = ko_subscribable_fn;\n", "// @tko/observable \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { options, overwriteLengthPropertyIfSupported } from \"@tko/utils\";\nimport * as dependencyDetection from \"./dependencyDetection\";\nimport { deferUpdates } from \"./defer\";\nimport { subscribable, defaultEvent, LATEST_VALUE } from \"./subscribable\";\nimport { valuesArePrimitiveAndEqual } from \"./extenders\";\nexport function observable(initialValue) {\n function Observable() {\n if (arguments.length > 0) {\n if (Observable.isDifferent(Observable[LATEST_VALUE], arguments[0])) {\n ;\n Observable.valueWillMutate();\n Observable[LATEST_VALUE] = arguments[0];\n Observable.valueHasMutated();\n }\n return this;\n } else {\n dependencyDetection.registerDependency(Observable);\n return Observable[LATEST_VALUE];\n }\n }\n overwriteLengthPropertyIfSupported(Observable, { value: void 0 });\n Observable[LATEST_VALUE] = initialValue;\n subscribable.fn.init(Observable);\n Object.setPrototypeOf(Observable, observable.fn);\n if (options.deferUpdates) {\n deferUpdates(Observable);\n }\n return Observable;\n}\nobservable.fn = {\n /**\n * Compares two values for equality.\n * @param a The first value.\n * @param b The second value.\n * @returns True if the values are equal, otherwise false.\n */\n equalityComparer: valuesArePrimitiveAndEqual,\n /**\n * Returns the current value of the observable without creating a dependency.\n * @returns The current value.\n */\n peek() {\n return this[LATEST_VALUE];\n },\n /**\n * Notifies subscribers that the value has changed.\n */\n valueHasMutated() {\n this.notifySubscribers(this[LATEST_VALUE], \"spectate\");\n this.notifySubscribers(this[LATEST_VALUE]);\n },\n /**\n * Notifies subscribers that the value is about to change.\n */\n valueWillMutate() {\n this.notifySubscribers(this[LATEST_VALUE], \"beforeChange\");\n },\n /**\n * Modifies the value of the observable using a function.\n * @param fn The function to modify the value.\n * @param peek Whether to use the current value without creating a dependency.\n * @returns The modified observable.\n */\n modify(fn, peek2 = true) {\n this(fn(peek2 ? this.peek() : this()));\n },\n // Some observables may not always be writeable, notably computeds.\n isWriteable: true\n};\nfunction limitNotifySubscribers(value, event) {\n if (!event || event === defaultEvent) {\n this._limitChange(value);\n } else if (event === \"beforeChange\") {\n this._limitBeforeChange(value);\n } else {\n this._origNotifySubscribers(value, event);\n }\n}\n;\nsubscribable.fn.limit = function limit(limitFunction) {\n const self = this;\n const selfIsObservable = isObservable(self);\n const beforeChange = \"beforeChange\";\n let ignoreBeforeChange, notifyNextChange, previousValue, pendingValue, didUpdate;\n if (!self._origNotifySubscribers) {\n self._origNotifySubscribers = self.notifySubscribers;\n self.notifySubscribers = limitNotifySubscribers;\n }\n const finish = limitFunction(function() {\n self._notificationIsPending = false;\n if (selfIsObservable && pendingValue === self) {\n pendingValue = self._evalIfChanged ? self._evalIfChanged() : self();\n }\n const shouldNotify = notifyNextChange || didUpdate && self.isDifferent(previousValue, pendingValue);\n self._notifyNextChange = didUpdate = ignoreBeforeChange = false;\n if (shouldNotify) {\n self._origNotifySubscribers(previousValue = pendingValue);\n }\n });\n Object.assign(self, {\n _limitChange(value, isDirty) {\n if (!isDirty || !self._notificationIsPending) {\n didUpdate = !isDirty;\n }\n self._changeSubscriptions = [...self._subscriptions[defaultEvent]];\n self._notificationIsPending = ignoreBeforeChange = true;\n pendingValue = value;\n finish();\n },\n _limitBeforeChange(value) {\n if (!ignoreBeforeChange) {\n previousValue = value;\n self._origNotifySubscribers(value, beforeChange);\n }\n },\n _notifyNextChangeIfValueIsDifferent() {\n if (self.isDifferent(previousValue, self.peek(\n true\n /* evaluate */\n ))) {\n notifyNextChange = true;\n }\n },\n _recordUpdate() {\n didUpdate = true;\n }\n });\n};\nObject.setPrototypeOf(observable.fn, subscribable.fn);\nconst protoProperty = observable.protoProperty = options.protoProperty;\nobservable.fn[protoProperty] = observable;\nobservable.observablePrototypes = /* @__PURE__ */ new Set([observable]);\nexport function isObservable(instance) {\n const proto = typeof instance === \"function\" && instance[protoProperty];\n if (proto && !observable.observablePrototypes.has(proto)) {\n throw Error(\"Invalid object that looks like an observable; possibly from another Knockout instance\");\n }\n return !!proto;\n}\nexport function unwrap(value) {\n return isObservable(value) ? value() : value;\n}\nexport function peek(value) {\n return isObservable(value) ? value.peek() : value;\n}\nexport function isWriteableObservable(instance) {\n return isObservable(instance) && instance.isWriteable;\n}\nexport { isWriteableObservable as isWritableObservable };\n", "// @tko/observable \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { extend, compareArrays, findMovesInArrayComparison } from \"@tko/utils\";\nimport { defaultEvent } from \"./subscribable\";\nimport { extenders } from \"./extenders\";\nexport const arrayChangeEventName = \"arrayChange\";\nexport function trackArrayChanges(target, options) {\n target.compareArrayOptions = {};\n if (options && typeof options === \"object\") {\n extend(target.compareArrayOptions, options);\n }\n target.compareArrayOptions.sparse = true;\n if (target.cacheDiffForKnownOperation) {\n return;\n }\n let trackingChanges = false;\n let cachedDiff = null;\n let arrayChangeSubscription;\n let pendingNotifications = 0;\n let underlyingNotifySubscribersFunction;\n const underlyingBeforeSubscriptionAddFunction = target.beforeSubscriptionAdd;\n const underlyingAfterSubscriptionRemoveFunction = target.afterSubscriptionRemove;\n target.beforeSubscriptionAdd = function(event) {\n if (underlyingBeforeSubscriptionAddFunction) {\n underlyingBeforeSubscriptionAddFunction.call(target, event);\n }\n if (event === arrayChangeEventName) {\n trackChanges();\n }\n };\n target.afterSubscriptionRemove = function(event) {\n if (underlyingAfterSubscriptionRemoveFunction) {\n underlyingAfterSubscriptionRemoveFunction.call(target, event);\n }\n if (event === arrayChangeEventName && !target.hasSubscriptionsForEvent(arrayChangeEventName)) {\n if (underlyingNotifySubscribersFunction) {\n target.notifySubscribers = underlyingNotifySubscribersFunction;\n underlyingNotifySubscribersFunction = void 0;\n }\n if (arrayChangeSubscription) {\n arrayChangeSubscription.dispose();\n }\n arrayChangeSubscription = null;\n trackingChanges = false;\n }\n };\n function trackChanges() {\n if (trackingChanges) {\n return;\n }\n trackingChanges = true;\n underlyingNotifySubscribersFunction = target[\"notifySubscribers\"];\n target.notifySubscribers = function(valueToNotify, event) {\n if (!event || event === defaultEvent) {\n ++pendingNotifications;\n }\n return underlyingNotifySubscribersFunction.apply(this, arguments);\n };\n let previousContents = new Array().concat(target.peek() === void 0 ? [] : target.peek());\n cachedDiff = null;\n arrayChangeSubscription = target.subscribe(function(currentContents) {\n let changes;\n currentContents = new Array().concat(currentContents || []);\n if (target.hasSubscriptionsForEvent(arrayChangeEventName)) {\n changes = getChanges(previousContents, currentContents);\n }\n previousContents = currentContents;\n cachedDiff = null;\n pendingNotifications = 0;\n if (changes && changes.length) {\n target.notifySubscribers(changes, arrayChangeEventName);\n }\n });\n }\n function getChanges(previousContents, currentContents) {\n if (!cachedDiff || pendingNotifications > 1) {\n cachedDiff = trackArrayChanges.compareArrays(previousContents, currentContents, target.compareArrayOptions);\n }\n return cachedDiff;\n }\n target.cacheDiffForKnownOperation = function(rawArray, operationName, args) {\n if (!trackingChanges || pendingNotifications) {\n return;\n }\n let diff = new Array(), arrayLength = rawArray.length, argsLength = args.length, offset = 0;\n function pushDiff(status, value, index) {\n return diff[diff.length] = { status, value, index };\n }\n switch (operationName) {\n case \"push\":\n offset = arrayLength;\n case \"unshift\":\n for (let index = 0; index < argsLength; index++) {\n pushDiff(\"added\", args[index], offset + index);\n }\n break;\n case \"pop\":\n offset = arrayLength - 1;\n case \"shift\":\n if (arrayLength) {\n pushDiff(\"deleted\", rawArray[offset], offset);\n }\n break;\n case \"splice\":\n {\n const startIndex = Math.min(Math.max(0, args[0] < 0 ? arrayLength + args[0] : args[0]), arrayLength), endDeleteIndex = argsLength === 1 ? arrayLength : Math.min(startIndex + (args[1] || 0), arrayLength), endAddIndex = startIndex + argsLength - 2, endIndex = Math.max(endDeleteIndex, endAddIndex), additions = new Array(), deletions = new Array();\n for (let index = startIndex, argsIndex = 2; index < endIndex; ++index, ++argsIndex) {\n if (index < endDeleteIndex) {\n deletions.push(pushDiff(\"deleted\", rawArray[index], index));\n }\n if (index < endAddIndex) {\n additions.push(pushDiff(\"added\", args[argsIndex], index));\n }\n }\n findMovesInArrayComparison(deletions, additions);\n }\n break;\n default:\n return;\n }\n cachedDiff = diff;\n };\n}\ntrackArrayChanges.compareArrays = compareArrays;\nextenders.trackArrayChanges = trackArrayChanges;\n", "// @tko/observable \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { arrayIndexOf, arrayForEach, overwriteLengthPropertyIfSupported } from \"@tko/utils\";\nimport { observable, isObservable } from \"./observable\";\nimport { trackArrayChanges } from \"./observableArray.changeTracking\";\nexport function observableArray(initialValues) {\n initialValues = initialValues || [];\n if (typeof initialValues !== \"object\" || !(\"length\" in initialValues)) {\n throw new Error(\n \"The argument passed when initializing an observable array must be an array, or null, or undefined.\"\n );\n }\n const result = Object.setPrototypeOf(observable(initialValues), observableArray.fn);\n trackArrayChanges(result);\n overwriteLengthPropertyIfSupported(result, { get: () => result()?.length });\n return result;\n}\nexport function isObservableArray(instance) {\n return isObservable(instance) && typeof instance.remove === \"function\" && typeof instance.push === \"function\";\n}\nobservableArray.fn = {\n remove(valueOrPredicate) {\n const underlyingArray = this.peek();\n const removedValues = new Array();\n const predicate = typeof valueOrPredicate === \"function\" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value) {\n return value === valueOrPredicate;\n };\n for (let i = 0; i < underlyingArray.length; i++) {\n const value = underlyingArray[i];\n if (predicate(value)) {\n if (removedValues.length === 0) {\n this.valueWillMutate();\n }\n if (underlyingArray[i] !== value) {\n throw Error(\"Array modified during remove; cannot remove item\");\n }\n removedValues.push(value);\n underlyingArray.splice(i, 1);\n i--;\n }\n }\n if (removedValues.length) {\n this.valueHasMutated();\n }\n return removedValues;\n },\n removeAll(arrayOfValues) {\n if (arrayOfValues === void 0) {\n const underlyingArray = this.peek();\n const allValues = underlyingArray.slice(0);\n this.valueWillMutate();\n underlyingArray.splice(0, underlyingArray.length);\n this.valueHasMutated();\n return allValues;\n }\n if (!arrayOfValues) {\n return [];\n }\n return this[\"remove\"](function(value) {\n return arrayIndexOf(arrayOfValues, value) >= 0;\n });\n },\n destroy(valueOrPredicate) {\n const underlyingArray = this.peek();\n const predicate = typeof valueOrPredicate === \"function\" && !isObservable(valueOrPredicate) ? valueOrPredicate : function(value) {\n return value === valueOrPredicate;\n };\n this.valueWillMutate();\n for (let i = underlyingArray.length - 1; i >= 0; i--) {\n const value = underlyingArray[i];\n if (predicate(value)) {\n value[\"_destroy\"] = true;\n }\n }\n this.valueHasMutated();\n },\n destroyAll(arrayOfValues) {\n if (arrayOfValues === void 0) {\n return this.destroy(function() {\n return true;\n });\n }\n if (!arrayOfValues) {\n return [];\n }\n return this.destroy(function(value) {\n return arrayIndexOf(arrayOfValues, value) >= 0;\n });\n },\n indexOf(item) {\n return arrayIndexOf(this(), item);\n },\n replace(oldItem, newItem) {\n const index = this.indexOf(oldItem);\n if (index >= 0) {\n this.valueWillMutate();\n this.peek()[index] = newItem;\n this.valueHasMutated();\n }\n },\n sorted(compareFn) {\n return [...this()].sort(compareFn);\n },\n reversed() {\n return [...this()].reverse();\n },\n [Symbol.iterator]: function* () {\n yield* this();\n }\n};\nObject.setPrototypeOf(observableArray.fn, observable.fn);\narrayForEach([\"pop\", \"push\", \"reverse\", \"shift\", \"sort\", \"splice\", \"unshift\"], function(methodName) {\n observableArray.fn[methodName] = function() {\n const underlyingArray = this.peek();\n this.valueWillMutate();\n this.cacheDiffForKnownOperation(underlyingArray, methodName, arguments);\n const methodCallResult = underlyingArray[methodName].apply(underlyingArray, arguments);\n this.valueHasMutated();\n return methodCallResult === underlyingArray ? this : methodCallResult;\n };\n});\narrayForEach([\"slice\"], function(methodName) {\n observableArray.fn[methodName] = function() {\n const underlyingArray = this();\n return underlyingArray[methodName].apply(underlyingArray, arguments);\n };\n});\nobservableArray.trackArrayChanges = trackArrayChanges;\n", "// @tko/observable \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { isObservable } from \"./observable\";\nconst maxNestedObservableDepth = 10;\nexport function toJS(rootObject) {\n if (arguments.length == 0) {\n throw new Error(\"When calling ko.toJS, pass the object you want to convert.\");\n }\n return mapJsObjectGraph(rootObject, function(valueToMap) {\n for (let i = 0; isObservable(valueToMap) && i < maxNestedObservableDepth; i++) {\n valueToMap = valueToMap();\n }\n return valueToMap;\n });\n}\nexport function toJSON(rootObject, replacer, space) {\n const plainJavaScriptObject = toJS(rootObject);\n return JSON.stringify(plainJavaScriptObject, replacer, space);\n}\nfunction mapJsObjectGraph(rootObject, mapInputCallback, visitedObjects = /* @__PURE__ */ new Map()) {\n rootObject = mapInputCallback(rootObject);\n const canHaveProperties = typeof rootObject === \"object\" && rootObject !== null && rootObject !== void 0 && !(rootObject instanceof RegExp) && !(rootObject instanceof Date) && !(rootObject instanceof String) && !(rootObject instanceof Number) && !(rootObject instanceof Boolean);\n if (!canHaveProperties) {\n return rootObject;\n }\n const outputProperties = rootObject instanceof Array ? [] : {};\n visitedObjects.set(rootObject, outputProperties);\n visitPropertiesOrArrayEntries(rootObject, function(indexer) {\n const propertyValue = mapInputCallback(rootObject[indexer]);\n switch (typeof propertyValue) {\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"function\":\n outputProperties[indexer] = propertyValue;\n break;\n case \"object\":\n case \"undefined\":\n {\n const previouslyMappedValue = visitedObjects.get(propertyValue);\n outputProperties[indexer] = previouslyMappedValue !== void 0 ? previouslyMappedValue : mapJsObjectGraph(propertyValue, mapInputCallback, visitedObjects);\n }\n break;\n }\n });\n return outputProperties;\n}\nfunction visitPropertiesOrArrayEntries(rootObject, visitorCallback) {\n if (rootObject instanceof Array) {\n for (let i = 0; i < rootObject.length; i++) {\n visitorCallback(i);\n }\n if (typeof rootObject[\"toJSON\"] === \"function\") {\n visitorCallback(\"toJSON\");\n }\n } else {\n for (const propertyName in rootObject) {\n visitorCallback(propertyName);\n }\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nexport function LAMBDA() {\n}\nfunction unwrapOrCall(a, b) {\n while (typeof b === \"function\") {\n b = b();\n }\n return b;\n}\nconst operators = {\n // unary\n \"@\": unwrapOrCall,\n \"#\": (a, b) => () => unwrap(b),\n // Convert to read-only.\n \"=>\": LAMBDA,\n \"!\": function not(a, b) {\n return !b;\n },\n \"!!\": function notnot(a, b) {\n return !!b;\n },\n \"++\": function preinc(a, b) {\n return ++b;\n },\n \"--\": function preinc2(a, b) {\n return --b;\n },\n // exponent\n \"**\": function exp(a, b) {\n return a ** b;\n },\n // mul/div\n \"*\": function mul(a, b) {\n return a * b;\n },\n \"/\": function div(a, b) {\n return a / b;\n },\n \"%\": function mod(a, b) {\n return a % b;\n },\n // sub/add\n \"+\": function add(a, b) {\n return a + b;\n },\n \"-\": function sub(a, b) {\n return (a || 0) - (b || 0);\n },\n \"&-\": function neg(a, b) {\n return -1 * b;\n },\n // unary -\n // relational\n \"<\": function lt(a, b) {\n return a < b;\n },\n \"<=\": function le(a, b) {\n return a <= b;\n },\n \">\": function gt(a, b) {\n return a > b;\n },\n \">=\": function ge(a, b) {\n return a >= b;\n },\n // TODO: 'in': function (a, b) { return a in b; },\n // TODO: 'instanceof': function (a, b) { return a instanceof b; },\n // TODO: 'typeof': function (a, b) { return typeof b; },\n // equality\n \"==\": function equal(a, b) {\n return a == b;\n },\n \"!=\": function ne(a, b) {\n return a != b;\n },\n \"===\": function sequal(a, b) {\n return a === b;\n },\n \"!==\": function sne(a, b) {\n return a !== b;\n },\n // bitwise\n \"&\": function bitAnd(a, b) {\n return a & b;\n },\n \"^\": function xor(a, b) {\n return a ^ b;\n },\n \"|\": function bitOr(a, b) {\n return a | b;\n },\n // logic\n \"&&\": function logicAnd(a, b) {\n return a && b;\n },\n \"||\": function logicOr(a, b) {\n return a || b;\n },\n \"??\": function nullishCoalesce(a, b) {\n return a ?? b;\n },\n // Access\n \".\": function member(a, b) {\n return a?.[b];\n },\n \"?.\": function omember(a, b) {\n return a?.[b];\n },\n \"[\": function bmember(a, b) {\n return a?.[b];\n },\n \",\": function comma(a, b) {\n return b;\n },\n // conditional/ternary\n // '?': ternary See Node.js\n // Function-Call\n call: function callOp(a, b) {\n return a.apply(null, b);\n }\n};\noperators[\"@\"].precedence = 21;\noperators[\"#\"].precedence = 21;\noperators[\".\"].precedence = 19;\noperators[\"[\"].precedence = 19;\noperators[\"?.\"].precedence = 19;\noperators[\"!\"].precedence = 16;\noperators[\"!!\"].precedence = 16;\noperators[\"++\"].precedence = 16;\noperators[\"--\"].precedence = 16;\noperators[\"&-\"].precedence = 16;\noperators[\"**\"].precedence = 15;\noperators[\"%\"].precedence = 14;\noperators[\"*\"].precedence = 14;\noperators[\"/\"].precedence = 14;\noperators[\"+\"].precedence = 13;\noperators[\"-\"].precedence = 13;\noperators[\"|\"].precedence = 12;\noperators[\"^\"].precedence = 11;\noperators[\"&\"].precedence = 10;\noperators[\"<\"].precedence = 11;\noperators[\"<=\"].precedence = 11;\noperators[\">\"].precedence = 11;\noperators[\">=\"].precedence = 11;\noperators[\"==\"].precedence = 10;\noperators[\"!=\"].precedence = 10;\noperators[\"===\"].precedence = 10;\noperators[\"!==\"].precedence = 10;\noperators[\"&&\"].precedence = 6;\noperators[\"||\"].precedence = 5;\noperators[\"??\"].precedence = 5;\noperators[\"&&\"].earlyOut = (a) => !a;\noperators[\"||\"].earlyOut = (a) => a;\noperators[\"??\"].earlyOut = (a) => a;\noperators[\",\"].precedence = 2;\noperators[\"call\"].precedence = 1;\noperators[\"=>\"].precedence = 1;\nexport { operators as default };\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nimport { default as operators, LAMBDA } from \"./operators\";\nconst IS_EXPR_OR_IDENT = /* @__PURE__ */ Symbol(\"Node - Is Expression Or Identifier\");\nexport default class Node {\n constructor(lhs, op, rhs) {\n this.lhs = lhs;\n this.op = op;\n this.rhs = rhs;\n }\n static get operators() {\n return operators;\n }\n get_leaf_value(leaf, context, globals, node) {\n if (typeof leaf === \"function\") {\n return unwrap(leaf());\n }\n if (typeof leaf !== \"object\" || leaf === null) {\n return leaf;\n }\n if (leaf[Node.isExpressionOrIdentifierSymbol]) {\n return unwrap(leaf.get_value(void 0, context, globals, node));\n }\n return leaf;\n }\n /**\n * Return a function that calculates and returns an expression's value\n * when called.\n * @param {array} ops The operations to perform\n * @return {function} The function that calculates the expression.\n *\n * Note that for a lambda, we do not evaluate the RHS expression until\n * the lambda is called.\n */\n get_value(notused, context, globals, node) {\n var node = this;\n if (node.op === LAMBDA) {\n return (...args) => {\n let lambdaContext = context;\n if (node.lhs) {\n lambdaContext = node.lhs.extendContext(context, args);\n }\n return node.get_leaf_value(node.rhs, lambdaContext, globals, node);\n };\n }\n const lhv = node.get_leaf_value(node.lhs, context, globals, node);\n const earlyOut = node.op.earlyOut;\n if (earlyOut && earlyOut(lhv)) {\n return lhv;\n }\n const rhv = node.get_leaf_value(node.rhs, context, globals, node);\n return node.op(lhv, rhv, context, globals);\n }\n //\n // Class variables.\n //\n static get isExpressionOrIdentifierSymbol() {\n return IS_EXPR_OR_IDENT;\n }\n get [IS_EXPR_OR_IDENT]() {\n return true;\n }\n static value_of(item, context, globals, node) {\n if (item && item[Node.isExpressionOrIdentifierSymbol]) {\n return item.get_value(item, context, globals, node);\n }\n return item;\n }\n /**\n * Convert an array of nodes to an executable tree.\n * @return {object} An object with a `lhs`, `rhs` and `op` key, corresponding\n * to the left hand side, right hand side, and\n * operation function.\n */\n static create_root(nodes, debug = false) {\n const out = new Array();\n const ops = new Array();\n for (let i = 0; i < nodes.length; i += 2) {\n out.push(nodes[i]);\n const op = nodes[i + 1];\n const prec = op?.precedence || 0;\n while (ops.length && prec <= ops[ops.length - 1].precedence) {\n const rhs = out.pop();\n const lhs = out.pop();\n out.push(new Node(lhs, ops.pop(), rhs));\n }\n ops.push(op);\n }\n if (out.length !== 1) {\n throw new Error(`unexpected nodes remain in shunting yard output stack: ${out}`);\n }\n return out[0];\n }\n}\noperators[\"?\"] = function ternary(a, b, context, globals, node) {\n return Node.value_of(a ? b.yes : b.no, context, globals, node);\n};\noperators[\"?\"].precedence = 4;\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport Node from \"./Node\";\nexport default class Expression {\n constructor(nodes) {\n this.nodes = nodes;\n this.root = Node.create_root(nodes);\n }\n /**\n * Return the value of `this` Expression instance.\n */\n get_value(parent, context, globals, node) {\n if (!this.root) {\n this.root = Node.create_root(this.nodes);\n }\n return this.root.get_value(parent, context, globals, node);\n }\n}\nExpression.prototype[Node.isExpressionOrIdentifierSymbol] = true;\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport Node from \"./Node\";\nexport default class Arguments {\n constructor(parser, args) {\n this.parser = parser;\n this.args = args;\n }\n get_value(parent, context, globals, node) {\n const deReffedArgs = new Array();\n for (let i = 0, j = this.args.length; i < j; ++i) {\n deReffedArgs.push(Node.value_of(this.args[i], context, globals, node));\n }\n return deReffedArgs;\n }\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true;\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nexport const IDStart = /[\\$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/;\nexport const IDContinue = /[\\$0-9A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/;\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport Node from \"./Node\";\nimport Arguments from \"./Arguments\";\nimport { hasOwnProperty, isObjectLike } from \"@tko/utils\";\nimport { isWriteableObservable, isObservable } from \"@tko/observable\";\nimport { IDStart, IDContinue } from \"./identifierExpressions\";\nexport default class Identifier {\n constructor(parser, token, dereferences) {\n this.token = token;\n this.dereferences = dereferences;\n this.parser = parser;\n }\n /**\n * Apply all () and [] functions on the identifier to the lhs value e.g.\n * a()[3] has deref functions that are essentially this:\n * [_deref_call, _deref_this where this=3]\n *\n * @param {mixed} value Should be an object.\n * @return {mixed} The dereferenced value.\n *\n * [1] We want to bind any function that is a method of an object, but not\n * corrupt any values (e.g. computed()s). e.g. Running x.bind(obj) where\n * we're given `data-bind='binding: obj.x'` and x is a computed will\n * break the computed's `this` and it will stop working as expected.\n *\n * The test `!last_value.hasOwnProperty(member)`\n * distinguishes between functions on the prototype chain (prototypal\n * members) and value-members added directly to the object. This may\n * not be the canonical test for this relationship, but it succeeds\n * in the known test cases.\n *\n * See: `this` tests of our dereference function.\n */\n dereference(value, $context, globals, node) {\n let member;\n const refs = this.dereferences || [];\n const $data = $context.$data || {};\n let lastValue;\n let i, n;\n for (i = 0, n = refs.length; i < n; ++i) {\n member = Node.value_of(refs[i], $context, globals, node);\n if (typeof value === \"function\" && refs[i] instanceof Arguments) {\n value = value.apply(lastValue || $data, member);\n lastValue = value;\n } else if (value === null || value === void 0) {\n return value;\n } else {\n lastValue = value;\n value = Node.value_of(value[member], $context, globals, node);\n }\n }\n if (typeof value === \"function\" && n > 0 && lastValue !== value && !hasOwnProperty(lastValue, member)) {\n return value.bind(lastValue);\n }\n return value;\n }\n /**\n * Return the value as one would get it from the top-level i.e.\n * $data.token/$context.token/globals.token; this does not return intermediate\n * values on a chain of members i.e. $data.hello.there -- requesting the\n * Identifier('there').value will return $data/$context/globals.there.\n *\n * This will dereference using () or [arg] member.\n * @param {object | Identifier | Expression} parent\n * @return {mixed} Return the primitive or an accessor.\n */\n get_value(parent, context, globals, node) {\n const intermediate = parent && !(parent instanceof Identifier) ? Node.value_of(parent, context, globals, node)[this.token] : context.lookup(this.token, globals, node);\n return this.dereference(intermediate, context, globals, node);\n }\n assign(object, property, value) {\n if (isWriteableObservable(object[property])) {\n object[property](value);\n } else if (!isObservable(object[property])) {\n object[property] = value;\n }\n }\n /**\n * Set the value of the Identifier.\n *\n * @param {Mixed} new_value The value that Identifier is to be set to.\n */\n set_value(new_value, $context, globals) {\n const $data = $context.$data || {};\n const refs = this.dereferences || [];\n let leaf = this.token;\n let i, n, root;\n if (isObjectLike($data) && leaf in $data) {\n root = $data;\n } else if (leaf in $context) {\n root = $context;\n } else if (leaf in globals) {\n root = globals;\n } else {\n throw new Error(\n \"Identifier::set_value -- The property '\" + leaf + \"' does not exist on the $data, $context, or globals.\"\n );\n }\n n = refs.length;\n if (n === 0) {\n this.assign(root, leaf, new_value);\n return;\n }\n root = root[leaf];\n for (i = 0; i < n - 1; ++i) {\n leaf = refs[i];\n if (leaf instanceof Arguments) {\n root = root();\n } else {\n root = root[Node.value_of(leaf)];\n }\n }\n if (refs[i] === true) {\n throw new Error(\"Cannot assign a value to a function.\");\n }\n if (refs[i]) {\n this.assign(root, Node.value_of(refs[i]), new_value);\n }\n }\n /**\n * Determine if a character is a valid item in an identifier.\n * Note that we do not check whether the first item is a number, nor do we\n * support unicode identifiers here.\n *\n * From: http://stackoverflow.com/a/9337047\n * @param {String} ch The character\n * @return {Boolean} True if this is a valid identifier\n */\n // function is_identifier_char(ch) {\n // return (ch >= 'A' && ch <= 'Z') ||\n // (ch >= 'a' && ch <= 'z') ||\n // (ch >= '0' && ch <= 9) ||\n // ch === '_' || ch === '$';\n // }\n static is_valid_start_char(ch) {\n return IDStart.test(ch);\n }\n static is_valid_continue_char(ch) {\n return IDContinue.test(ch);\n }\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true;\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport operators from \"./operators\";\nimport Node from \"./Node\";\nimport Expression from \"./Expression\";\nimport Identifier from \"./Identifier\";\nexport default class Parameters {\n #names;\n constructor(parser, node) {\n if (node instanceof Expression) {\n node = node.root;\n }\n try {\n this.#names = Parameters.nodeTreeToNames(node);\n } catch (e) {\n parser.error(e);\n }\n }\n extendContext(context, args) {\n if (!this.#names) {\n return context;\n } else {\n const newValues = {};\n this.#names.forEach((name, index) => {\n newValues[name] = args[index];\n });\n return context.extend(newValues);\n }\n }\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true;\n }\n static nodeTreeToNames(node) {\n const names = new Array();\n while (node) {\n if (node instanceof Identifier) {\n names.push(node.token);\n node = null;\n } else if (this.isCommaNode(node)) {\n names.push(node.rhs.token);\n node = node.lhs;\n } else {\n throw new Error(\n `only simple identifiers allowed in lambda parameter list but found ${JSON.stringify(node, null, 2)}`\n );\n }\n }\n names.reverse();\n return names;\n }\n static isCommaNode(node) {\n return node instanceof Node && node.op === operators[\",\"] && node.rhs instanceof Identifier;\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport Node from \"./Node\";\nexport default class Ternary {\n constructor(yes, no) {\n Object.assign(this, { yes, no });\n }\n get_value() {\n return this;\n }\n get [Node.isExpressionOrIdentifierSymbol]() {\n return true;\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { options, objectForEach, clonePlainObjectDeep, extend, hasOwnProperty } from \"@tko/utils\";\nimport { default as Expression } from \"./Expression\";\nimport { default as Identifier } from \"./Identifier\";\nimport { default as Arguments } from \"./Arguments\";\nimport { default as Parameters } from \"./Parameters\";\nimport { default as Ternary } from \"./Ternary\";\nimport { default as Node } from \"./Node\";\nimport { default as operators } from \"./operators\";\nconst escapee = {\n \"'\": \"'\",\n '\"': '\"',\n \"`\": \"`\",\n \"\\\\\": \"\\\\\",\n \"/\": \"/\",\n $: \"$\",\n b: \"\\b\",\n f: \"\\f\",\n n: \"\\n\",\n r: \"\\r\",\n t: \"\t\"\n};\nexport default class Parser {\n white() {\n let ch = this.ch;\n while (ch && ch <= \" \") {\n ch = this.next();\n }\n return this.comment(ch);\n }\n /**\n * Slurp any C or C++ style comments\n */\n comment(ch) {\n if (ch !== \"/\") {\n return ch;\n }\n const p = this.at;\n const second = this.lookahead();\n if (second === \"/\") {\n while (ch) {\n ch = this.next();\n if (ch === \"\\n\" || ch === \"\\r\") {\n break;\n }\n }\n ch = this.next();\n } else if (second === \"*\") {\n while (ch) {\n ch = this.next();\n if (ch === \"*\" && this.lookahead() === \"/\") {\n this.next();\n break;\n }\n }\n if (!ch) {\n this.error(\"Unclosed comment, starting at character \" + p);\n }\n this.next();\n return this.white();\n }\n return ch;\n }\n next(c) {\n if (c && c !== this.ch) {\n this.error(\"Expected '\" + c + \"' but got '\" + this.ch + \"'\");\n }\n this.ch = this.text.charAt(this.at);\n this.at += 1;\n return this.ch;\n }\n lookahead() {\n return this.text[this.at];\n }\n error(m) {\n if (m instanceof Error) {\n throw m;\n }\n throw this.createError(m);\n }\n createError(m) {\n const [name, msg] = m.name ? [m.name, m.message] : [m, \"\"];\n const message = `\n${name} ${msg} of ${this.text}\n` + Array(this.at).join(\" \") + \"_/ \\u{1F525} \\\\_\\n\";\n return new Error(message);\n }\n name() {\n let name = \"\";\n let enclosedBy;\n this.white();\n let ch = this.ch;\n if (ch === \"'\" || ch === '\"') {\n enclosedBy = ch;\n ch = this.next();\n }\n while (ch) {\n if (enclosedBy && ch === enclosedBy) {\n this.white();\n ch = this.next();\n if (ch !== \":\" && ch !== \",\") {\n this.error(\"Object name: \" + name + \" missing closing \" + enclosedBy);\n }\n return name;\n } else if (ch === \":\" || ch <= \" \" || ch === \",\" || ch === \"|\") {\n return name;\n }\n name += ch;\n ch = this.next();\n }\n return name;\n }\n number() {\n let number;\n let string = \"\";\n let ch = this.ch;\n if (ch === \"-\") {\n string = \"-\";\n ch = this.next(\"-\");\n }\n while (ch >= \"0\" && ch <= \"9\") {\n string += ch;\n ch = this.next();\n }\n if (ch === \".\") {\n string += \".\";\n ch = this.next();\n while (ch && ch >= \"0\" && ch <= \"9\") {\n string += ch;\n ch = this.next();\n }\n }\n if (ch === \"e\" || ch === \"E\") {\n string += ch;\n ch = this.next();\n if (ch === \"-\" || ch === \"+\") {\n string += ch;\n ch = this.next();\n }\n while (ch >= \"0\" && ch <= \"9\") {\n string += ch;\n ch = this.next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n options.onError(new Error(\"Bad number: \" + number + \" in \" + string));\n } else {\n return number;\n }\n }\n /**\n * Add a property to 'object' that equals the given value.\n * @param {Object} object The object to add the value to.\n * @param {String} key object[key] is set to the given value.\n * @param {mixed} value The value, may be a primitive or a function. If a\n * function it is unwrapped as a property.\n */\n objectAddValue(object, key, value) {\n if (value && value[Node.isExpressionOrIdentifierSymbol]) {\n Object.defineProperty(object, key, {\n get: () => Node.value_of(value, ...this.currentContextGlobals),\n enumerable: true\n });\n } else if (Array.isArray(value)) {\n Object.defineProperty(object, key, {\n get: () => value.map((v) => Node.value_of(v, ...this.currentContextGlobals)),\n enumerable: true\n });\n } else {\n object[key] = value;\n }\n }\n object() {\n let key;\n const object = {};\n let ch = this.ch;\n if (ch === \"{\") {\n this.next(\"{\");\n ch = this.white();\n if (ch === \"}\") {\n ch = this.next(\"}\");\n return object;\n }\n while (ch) {\n if (ch === '\"' || ch === \"'\" || ch === \"`\") {\n key = this.string();\n } else {\n key = this.name();\n }\n if (hasOwnProperty(object, key)) {\n this.error('Duplicate key \"' + key + '\"');\n }\n if (this.white() === \":\") {\n ch = this.next(\":\");\n this.objectAddValue(object, key, this.singleValueExpression());\n } else {\n const objectKeyIsValue = new Identifier(this, key, []);\n this.objectAddValue(object, key, objectKeyIsValue);\n }\n ch = this.white();\n if (ch === \"}\") {\n ch = this.next(\"}\");\n return object;\n }\n this.next(\",\");\n ch = this.white();\n if (ch === \"}\") {\n ch = this.next(\"}\");\n return object;\n }\n }\n }\n throw this.createError(\"Bad object\");\n }\n /**\n * Read up to delim and return the string\n * @param {string} delim The delimiter, either ' or \"\n * @return {string} The string read.\n */\n readString(delim) {\n let string = \"\";\n const nodes = [\"\"];\n const plusOp = operators[\"+\"];\n let hex;\n let i;\n let uffff;\n const interpolate = delim === \"`\";\n let ch = this.next();\n while (ch) {\n if (ch === delim) {\n ch = this.next();\n if (interpolate) {\n nodes.push(plusOp);\n }\n nodes.push(string);\n return nodes;\n }\n if (ch === \"\\\\\") {\n ch = this.next();\n if (ch === \"u\") {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(ch = this.next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === \"string\") {\n string += escapee[ch];\n } else {\n break;\n }\n } else if (interpolate && ch === \"$\") {\n ch = this.next();\n if (ch === \"{\") {\n this.next(\"{\");\n nodes.push(plusOp);\n nodes.push(string);\n nodes.push(plusOp);\n nodes.push(this.expression());\n string = \"\";\n } else {\n string += \"$\" + ch;\n }\n } else {\n string += ch;\n }\n ch = this.next();\n }\n throw this.createError(\"Bad string\");\n }\n string() {\n const ch = this.ch;\n if (ch === '\"') {\n return this.readString('\"')?.join(\"\");\n } else if (ch === \"'\") {\n return this.readString(\"'\")?.join(\"\");\n } else if (ch === \"`\") {\n return Node.create_root(this.readString(\"`\"));\n }\n this.error(\"Bad string\");\n }\n array() {\n const array = new Array();\n let ch = this.ch;\n if (ch === \"[\") {\n ch = this.next(\"[\");\n this.white();\n if (ch === \"]\") {\n ch = this.next(\"]\");\n return array;\n }\n while (ch) {\n array.push(this.singleValueExpression());\n ch = this.white();\n if (ch === \"]\") {\n ch = this.next(\"]\");\n return array;\n }\n this.next(\",\");\n ch = this.white();\n }\n }\n throw this.createError(\"Bad array\");\n }\n value() {\n this.white();\n const ch = this.ch;\n switch (ch) {\n case \"{\":\n return this.object();\n case \"[\":\n return this.array();\n case '\"':\n case \"'\":\n case \"`\":\n return this.string();\n case \"-\":\n return this.number();\n default:\n return ch >= \"0\" && ch <= \"9\" ? this.number() : this.identifier();\n }\n }\n /**\n * Get the function for the given operator.\n * A `.precedence` value is added to the function, with increasing\n * precedence having a higher number.\n * @return {function} The function that performs the infix operation\n */\n operator(opts) {\n let op = \"\";\n let opFn;\n let ch = this.white();\n let isIdentifierChar = Identifier.is_valid_start_char;\n while (ch) {\n if (isIdentifierChar(ch) || ch <= \" \" || ch === \"\" || ch === '\"' || ch === \"'\" || ch === \"{\" || ch === \"(\" || ch === \"`\" || ch === \")\" || ch <= \"9\" && ch >= \"0\") {\n break;\n }\n if (!opts.not_an_array && ch === \"[\") {\n break;\n }\n op += ch;\n ch = this.next();\n if (ch === \"@\") {\n break;\n }\n isIdentifierChar = Identifier.is_valid_continue_char;\n }\n if (op !== \"\") {\n if (opts.prefix && op === \"-\") {\n op = \"&-\";\n }\n opFn = operators[op];\n if (!opFn) {\n this.error(\"Bad operator: '\" + op + \"'.\");\n }\n }\n return opFn;\n }\n /**\n * Filters\n * Returns what the Node interprets as an \"operator\".\n * e.g.\n * <span data-bind=\"text: name | fit:20 | uppercase\"></span>\n */\n filter() {\n let ch = this.next();\n const args = new Array();\n let nextFilter = function(v) {\n return v;\n };\n const name = this.name();\n if (!options.filters[name]) {\n options.onError(new Error(\"Cannot find filter by the name of: \" + name));\n }\n ch = this.white();\n while (ch) {\n if (ch === \":\") {\n ch = this.next();\n args.push(this.singleValueExpression(\"|\"));\n }\n if (ch === \"|\") {\n nextFilter = this.filter();\n break;\n }\n if (ch === \",\") {\n break;\n }\n ch = this.white();\n }\n function filter(value, ignored, context, globals, node) {\n const argValues = [value];\n for (let i = 0, j = args.length; i < j; ++i) {\n argValues.push(Node.value_of(args[i], context, globals, node));\n }\n return nextFilter(options.filters[name].apply(context, argValues), ignored, context, globals, node);\n }\n filter.precedence = 1;\n return filter;\n }\n /**\n * Parse an expression \u2013 builds an operator tree, in something like\n * Shunting-Yard.\n * See: http://en.wikipedia.org/wiki/Shunting-yard_algorithm\n *\n * @param filterable - Whether the expression can include jinga-style filters.\n * An argument of '|' is used only by the filter() method to parse subsequent\n * filters.\n * @param allowMultipleValues - Whether multiple values separated by commas are\n * allowed in this expression. When true (default), this method consumes\n * subsequent comma-separated values.\n * @see {@link Parser.singleValueExpression}\n *\n * @returns a function that computes the value of the expression\n * when called or a primitive.\n */\n expression(filterable = false, allowMultipleValues = true) {\n let op;\n const nodes = new Array();\n let ch = this.white();\n while (ch) {\n op = this.operator({ prefix: true });\n if (op) {\n nodes.push(void 0);\n nodes.push(op);\n ch = this.white();\n }\n if (ch === \"(\") {\n this.next();\n nodes.push(this.expression());\n this.next(\")\");\n } else {\n nodes.push(this.value());\n }\n ch = this.white();\n if (ch === \":\" || ch === \"}\" || ch === \"]\" || ch === \")\" || ch === \"\" || ch === \"`\" || ch === \"|\" && filterable === \"|\" || ch === \",\" && !allowMultipleValues) {\n break;\n }\n if (ch === \"|\" && this.lookahead() !== \"|\" && filterable) {\n nodes.push(this.filter());\n nodes.push(void 0);\n break;\n }\n op = this.operator({ not_an_array: true });\n if (op === operators[\"?\"]) {\n this.ternary(nodes);\n break;\n } else if (op === operators[\".\"] || op === operators[\"?.\"]) {\n nodes.push(op);\n nodes.push(this.member());\n op = null;\n } else if (op === operators[\"[\"]) {\n nodes.push(op);\n nodes.push(this.expression());\n ch = this.next(\"]\");\n op = null;\n } else if (op === operators[\"=>\"]) {\n nodes[nodes.length - 1] = new Parameters(this, nodes[nodes.length - 1]);\n nodes.push(op);\n } else if (op) {\n nodes.push(op);\n }\n ch = this.white();\n if (ch === \"]\" || !op && ch === \"(\") {\n break;\n }\n }\n if (nodes.length === 0) {\n return void 0;\n }\n const dereferences = this.dereferences();\n if (nodes.length === 1 && !dereferences.length) {\n return nodes[0];\n }\n for (let i = 0, j = dereferences.length; i < j; ++i) {\n const deref = dereferences[i];\n if (deref.constructor === Arguments) {\n nodes.push(operators.call);\n } else {\n nodes.push(operators[\".\"]);\n }\n nodes.push(deref);\n }\n return new Expression(nodes);\n }\n /**\n * Use this method to parse expressions that can be followed by additional markup\n * seperated by a comma, such as in bindings strings.\n *\n * @returns an expression that cannot contain multiple values separated by commas.\n * @see {@link Parser.expression}\n */\n singleValueExpression(filterable = false) {\n return this.expression(filterable, false);\n }\n ternary(nodes) {\n const ternary = new Ternary();\n ternary.yes = this.singleValueExpression();\n this.next(\":\");\n ternary.no = this.singleValueExpression();\n nodes.push(operators[\"?\"]);\n nodes.push(ternary);\n }\n /**\n * Parse the arguments to a function, returning an Array.\n *\n */\n funcArguments() {\n const args = new Array();\n let ch = this.next(\"(\");\n while (ch) {\n ch = this.white();\n if (ch === \")\") {\n this.next(\")\");\n return new Arguments(this, args);\n } else {\n args.push(this.singleValueExpression());\n ch = this.white();\n }\n if (ch !== \")\") {\n this.next(\",\");\n }\n }\n throw this.createError(\"Bad arguments to function\");\n }\n /**\n * The literal string reference `abc` in an `x.abc` expression.\n */\n member() {\n let member = \"\";\n let ch = this.white();\n let isIdentifierChar = Identifier.is_valid_start_char;\n while (ch) {\n if (!isIdentifierChar(ch)) {\n break;\n }\n member += ch;\n ch = this.next();\n isIdentifierChar = Identifier.is_valid_continue_char;\n }\n return member;\n }\n /**\n * A dereference applies to an identifer, being either a function\n * call \"()\" or a membership lookup with square brackets \"[member]\".\n * @return {fn or undefined} Dereference function to be applied to the\n * Identifier\n */\n dereference() {\n let member;\n const ch = this.white();\n while (ch) {\n if (ch === \"(\") {\n return this.funcArguments();\n } else if (ch === \"[\") {\n this.next(\"[\");\n member = this.expression();\n this.white();\n this.next(\"]\");\n return member;\n } else if (ch === \".\") {\n this.next(\".\");\n return this.member();\n } else {\n break;\n }\n }\n }\n dereferences() {\n const ch = this.white();\n const dereferences = new Array();\n let deref;\n while (ch) {\n deref = this.dereference();\n if (deref !== void 0) {\n dereferences.push(deref);\n } else {\n break;\n }\n }\n return dereferences;\n }\n identifier() {\n let token = \"\";\n let isIdentifierChar = Identifier.is_valid_start_char;\n let ch = this.white();\n while (ch) {\n if (!isIdentifierChar(ch)) {\n break;\n }\n token += ch;\n ch = this.next();\n isIdentifierChar = Identifier.is_valid_continue_char;\n }\n switch (token) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n case \"null\":\n return null;\n case \"undefined\":\n return void 0;\n case \"function\":\n throw new Error(\"Knockout: Anonymous functions are no longer supported, but `=>` lambdas are. In: \" + this.text);\n }\n return new Identifier(this, token, this.dereferences());\n }\n readBindings() {\n let key;\n const bindings = {};\n let sep;\n let expr;\n let ch = this.ch;\n while (ch) {\n key = this.name();\n sep = this.white();\n if (!sep || sep === \",\") {\n if (sep) {\n ch = this.next(\",\");\n } else {\n ch = \"\";\n }\n bindings[key] = null;\n } else {\n if (key.indexOf(\".\") !== -1) {\n key = key.split(\".\");\n bindings[key[0]] = bindings[key[0]] || {};\n if (key.length !== 2) {\n options.onError(new Error(\"Binding \" + key + \" should have two parts (a.b).\"));\n } else if (bindings[key[0]].constructor !== Object) {\n options.onError(new Error(\"Binding \" + key[0] + \".\" + key[1] + \" paired with a non-object.\"));\n }\n ch = this.next(\":\");\n this.objectAddValue(bindings[key[0]], key[1], this.singleValueExpression(true));\n } else {\n ch = this.next(\":\");\n if (bindings[key] && typeof bindings[key] === \"object\" && bindings[key].constructor === Object) {\n expr = this.singleValueExpression(true);\n if (typeof expr !== \"object\" || expr.constructor !== Object) {\n options.onError(new Error(\"Expected plain object for \" + key + \" value.\"));\n } else {\n extend(bindings[key], expr);\n }\n } else {\n bindings[key] = this.singleValueExpression(true);\n }\n }\n this.white();\n if (this.ch) {\n ch = this.next(\",\");\n } else {\n ch = \"\";\n }\n }\n }\n return bindings;\n }\n valueAsAccessor(value, context, globals, node) {\n if (!value) {\n return () => value;\n }\n if (typeof value === \"function\") {\n return value;\n }\n if (value[Node.isExpressionOrIdentifierSymbol]) {\n return () => Node.value_of(value, context, globals, node);\n }\n if (Array.isArray(value)) {\n return () => value.map((v) => Node.value_of(v, context, globals, node));\n }\n if (typeof value !== \"function\") {\n return () => clonePlainObjectDeep(value);\n }\n throw new Error(\"Value has cannot be converted to accessor: \" + value);\n }\n /**\n * Convert result[name] from a value to a function (i.e. `valueAccessor()`)\n * @param {object} result [Map of top-level names to values]\n * @return {object} [Map of top-level names to functions]\n *\n * Accessors may be one of (below) constAccessor, identifierAccessor,\n * expressionAccessor, or nodeAccessor.\n */\n convertToAccessors(result, context, globals, node) {\n objectForEach(result, (name, value) => {\n if (value instanceof Identifier) {\n Object.defineProperty(result, name, {\n value: function(optionalValue, options2) {\n const currentValue = value.get_value(void 0, context, globals, node);\n if (arguments.length === 0) {\n return currentValue;\n }\n const unchanged = optionalValue === currentValue;\n if (options2 && options2.onlyIfChanged && unchanged) {\n return;\n }\n return value.set_value(optionalValue, context, globals);\n }\n });\n } else {\n result[name] = this.valueAsAccessor(value, context, globals, node);\n }\n });\n return result;\n }\n preparse(source = \"\") {\n const preparsers = options.bindingStringPreparsers || [];\n return preparsers.reduce((acc, fn) => fn(acc), source.trim());\n }\n runParse(source, fn) {\n this.text = this.preparse(source);\n this.at = 0;\n this.ch = \" \";\n try {\n const result = fn();\n this.white();\n if (this.ch) {\n this.error(\"Syntax Error\");\n }\n return result;\n } catch (e) {\n options.onError(e);\n }\n }\n /**\n * Get the bindings as name: accessor()\n * @param {string} source The binding string to parse.\n * @return {object} Map of name to accessor function.\n */\n parse(source, context = {}, globals = {}, node) {\n if (!source) {\n return () => null;\n }\n this.currentContextGlobals = [context, globals, node];\n const parseFn = () => this.readBindings();\n const bindingAccessors = this.runParse(source, parseFn);\n return this.convertToAccessors(bindingAccessors, context, globals, node);\n }\n /**\n * Return a function that evaluates and returns the result of the expression.\n */\n parseExpression(source, context = {}, globals = {}, node) {\n if (!source) {\n return () => \"\";\n }\n this.currentContextGlobals = [context, globals, node];\n const parseFn = () => this.singleValueExpression(true);\n const bindingAccessors = this.runParse(source, parseFn);\n return this.valueAsAccessor(bindingAccessors, context, globals, node);\n }\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { stringTrim } from \"@tko/utils\";\nconst specials = \",\\\"'`{}()/:[\\\\]\";\nconst bindingToken = RegExp(\n [\n // These match strings, either with double quotes, single quotes, or backticks\n '\"(?:\\\\\\\\.|[^\"])*\"',\n \"'(?:\\\\\\\\.|[^'])*'\",\n \"`(?:\\\\\\\\.|[^`])*`\",\n // Match C style comments\n \"/\\\\*(?:[^*]|\\\\*+[^*/])*\\\\*+/\",\n // Match C++ style comments\n \"//.*\\n\",\n // Match a regular expression (text enclosed by slashes), but will also match sets of divisions\n // as a regular expression (this is handled by the parsing loop below).\n \"/(?:\\\\\\\\.|[^/])+/\\\\w*\",\n // Match text (at least two characters) that does not contain any of the above special characters,\n // although some of the special characters are allowed to start it (all but the colon and comma).\n // The text can contain spaces, but leading or trailing spaces are skipped.\n \"[^\\\\s:,/][^\" + specials + \"]*[^\\\\s\" + specials + \"]\",\n // Match any non-space character not matched already. This will match colons and commas, since they're\n // not matched by \"everyThingElse\", but will also match any other single character that wasn't already\n // matched (for example: in \"a: 1, b: 2\", each of the non-space characters will be matched by oneNotSpace).\n \"[^\\\\s]\"\n ].join(\"|\"),\n \"g\"\n);\nconst divisionLookBehind = /[\\])\"'A-Za-z0-9_$]+$/;\nconst keywordRegexLookBehind = { in: 1, return: 1, typeof: 1 };\nexport default function parseObjectLiteral(objectLiteralString) {\n let str = stringTrim(objectLiteralString);\n if (str.charCodeAt(0) === 123) str = str.slice(1, -1);\n str += \"\\n,\";\n const result = new Array();\n let toks = str.match(bindingToken);\n let key;\n let values = new Array();\n let depth = 0;\n if (toks.length <= 1) {\n return [];\n }\n for (let i = 0, tok; tok = toks[i]; ++i) {\n const c = tok.charCodeAt(0);\n if (c === 44) {\n if (depth <= 0) {\n result.push(key && values.length ? { key, value: values.join(\"\") } : { unknown: key || values.join(\"\") });\n key = depth = 0;\n values = new Array();\n continue;\n }\n } else if (c === 58) {\n if (!depth && !key && values.length === 1) {\n key = values.pop();\n continue;\n }\n } else if (c === 47 && tok.length > 1 && (tok.charCodeAt(1) === 47 || tok.charCodeAt(1) === 42)) {\n continue;\n } else if (c === 47 && i && tok.length > 1) {\n const match = toks[i - 1].match(divisionLookBehind);\n if (match && !keywordRegexLookBehind[match[0]]) {\n str = str.substr(str.indexOf(tok) + 1);\n toks = str.match(bindingToken);\n i = -1;\n tok = \"/\";\n }\n } else if (c === 40 || c === 123 || c === 91) {\n ++depth;\n } else if (c === 41 || c === 125 || c === 93) {\n --depth;\n } else if (!key && !values.length && (c === 34 || c === 39)) {\n tok = tok.slice(1, -1);\n }\n values.push(tok);\n }\n return result;\n}\n", "// @tko/utils.parser \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport operators from \"./operators\";\nexport { default as Parser } from \"./Parser\";\nexport { default as Identifier } from \"./Identifier\";\nexport { default as Arguments } from \"./Arguments\";\nexport { default as Ternary } from \"./Ternary\";\nexport { default as Node } from \"./Node\";\nexport { default as parseObjectLiteral } from \"./preparse\";\nexport function overloadOperator(op, fn, precedence) {\n operators[op] = fn;\n if (Number.isInteger(precedence)) {\n operators[op].precedence = precedence;\n }\n}\n", "// @tko/computed \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport {\n addDisposeCallback,\n arrayForEach,\n createSymbolOrString,\n domNodeIsAttachedToDocument,\n extend,\n options,\n hasOwnProperty,\n objectForEach,\n options as koOptions,\n removeDisposeCallback,\n safeSetTimeout\n} from \"@tko/utils\";\nimport {\n dependencyDetection,\n extenders,\n valuesArePrimitiveAndEqual,\n observable,\n subscribable,\n LATEST_VALUE\n} from \"@tko/observable\";\nconst computedState = createSymbolOrString(\"_state\");\nconst DISPOSED_STATE = {\n dependencyTracking: null,\n dependenciesCount: 0,\n isDisposed: true,\n isStale: false,\n isDirty: false,\n isSleeping: false,\n disposeWhenNodeIsRemoved: null,\n readFunction: null,\n _options: null\n};\nexport function computed(evaluatorFunctionOrOptions, evaluatorFunctionTarget, options2) {\n if (typeof evaluatorFunctionOrOptions === \"object\") {\n options2 = evaluatorFunctionOrOptions;\n } else {\n options2 = options2 || {};\n if (evaluatorFunctionOrOptions) {\n options2.read = evaluatorFunctionOrOptions;\n }\n }\n if (typeof options2?.read !== \"function\") {\n throw Error(\"Pass a function that returns the value of the computed\");\n }\n const writeFunction = options2.write;\n const state = {\n latestValue: void 0,\n isStale: true,\n isDirty: true,\n isBeingEvaluated: false,\n suppressDisposalUntilDisposeWhenReturnsFalse: false,\n isDisposed: false,\n pure: false,\n isSleeping: false,\n readFunction: options2.read,\n evaluatorFunctionTarget: evaluatorFunctionTarget || options2.owner,\n disposeWhenNodeIsRemoved: options2.disposeWhenNodeIsRemoved || null,\n disposeWhen: options2.disposeWhen,\n domNodeDisposalCallback: null,\n dependencyTracking: {},\n dependenciesCount: 0,\n evaluationTimeoutInstance: null\n };\n function computedObservable() {\n if (arguments.length > 0) {\n if (typeof writeFunction === \"function\") {\n writeFunction.apply(state.evaluatorFunctionTarget, arguments);\n } else {\n throw new Error(\n \"Cannot write a value to a computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.\"\n );\n }\n return this;\n } else {\n if (!state.isDisposed) {\n dependencyDetection.registerDependency(computedObservable);\n }\n if (state.isDirty || state.isSleeping && computedObservable.haveDependenciesChanged()) {\n ;\n computedObservable.evaluateImmediate();\n }\n return state.latestValue;\n }\n }\n computedObservable[computedState] = state;\n computedObservable.isWriteable = typeof writeFunction === \"function\";\n subscribable.fn.init(computedObservable);\n Object.setPrototypeOf(computedObservable, computed.fn);\n if (options2.pure) {\n state.pure = true;\n state.isSleeping = true;\n extend(computedObservable, pureComputedOverrides);\n } else if (options2.deferEvaluation) {\n extend(computedObservable, deferEvaluationOverrides);\n }\n if (koOptions.deferUpdates) {\n extenders.deferred(computedObservable, true);\n }\n if (koOptions.debug) {\n computedObservable._options = options2;\n }\n if (state.disposeWhenNodeIsRemoved) {\n state.suppressDisposalUntilDisposeWhenReturnsFalse = true;\n if (!state.disposeWhenNodeIsRemoved.nodeType) {\n state.disposeWhenNodeIsRemoved = null;\n }\n }\n if (!state.isSleeping && !options2.deferEvaluation) {\n ;\n computedObservable.evaluateImmediate();\n }\n if (state.disposeWhenNodeIsRemoved && computedObservable.isActive()) {\n addDisposeCallback(\n state.disposeWhenNodeIsRemoved,\n state.domNodeDisposalCallback = function() {\n ;\n computedObservable.dispose();\n }\n );\n }\n return computedObservable;\n}\nfunction computedDisposeDependencyCallback(id, entryToDispose) {\n if (entryToDispose !== null && entryToDispose.dispose) {\n entryToDispose.dispose();\n }\n}\nfunction computedBeginDependencyDetectionCallback(subscribable2, id) {\n const computedObservable = this.computedObservable, state = computedObservable[computedState];\n if (!state.isDisposed) {\n if (this.disposalCount && this.disposalCandidates[id]) {\n computedObservable.addDependencyTracking(id, subscribable2, this.disposalCandidates[id]);\n this.disposalCandidates[id] = null;\n --this.disposalCount;\n } else if (!state.dependencyTracking[id]) {\n computedObservable.addDependencyTracking(\n id,\n subscribable2,\n state.isSleeping ? { _target: subscribable2 } : computedObservable.subscribeToDependency(subscribable2)\n );\n }\n if (subscribable2._notificationIsPending) {\n subscribable2._notifyNextChangeIfValueIsDifferent();\n }\n }\n}\ncomputed.fn = {\n equalityComparer: valuesArePrimitiveAndEqual,\n getDependenciesCount() {\n return this[computedState].dependenciesCount;\n },\n getDependencies() {\n const dependencyTracking = this[computedState].dependencyTracking;\n const dependentObservables = new Array();\n objectForEach(dependencyTracking, function(id, dependency) {\n dependentObservables[dependency._order] = dependency._target;\n });\n return dependentObservables;\n },\n addDependencyTracking(id, target, trackingObj) {\n if (this[computedState].pure && target === this) {\n throw Error(\"A 'pure' computed must not be called recursively\");\n }\n this[computedState].dependencyTracking[id] = trackingObj;\n trackingObj._order = this[computedState].dependenciesCount++;\n trackingObj._version = target.getVersion();\n },\n haveDependenciesChanged() {\n let id, dependency, dependencyTracking = this[computedState].dependencyTracking;\n for (id in dependencyTracking) {\n if (hasOwnProperty(dependencyTracking, id)) {\n dependency = dependencyTracking[id];\n if (this._evalDelayed && dependency._target._notificationIsPending || dependency._target.hasChanged(dependency._version)) {\n return true;\n }\n }\n }\n return false;\n },\n markDirty() {\n if (this._evalDelayed && !this[computedState].isBeingEvaluated) {\n this._evalDelayed(\n false\n /* notifyChange */\n );\n }\n },\n isActive() {\n const state = this[computedState];\n return state.isDirty || state.dependenciesCount > 0;\n },\n respondToChange() {\n if (!this._notificationIsPending) {\n this.evaluatePossiblyAsync();\n } else if (this[computedState].isDirty) {\n this[computedState].isStale = true;\n }\n },\n subscribeToDependency(target) {\n if (target._deferUpdates) {\n const dirtySub = target.subscribe(this.markDirty, this, \"dirty\"), changeSub = target.subscribe(this.respondToChange, this);\n return {\n _target: target,\n dispose() {\n dirtySub.dispose();\n changeSub.dispose();\n }\n };\n } else {\n return target.subscribe(this.evaluatePossiblyAsync, this);\n }\n },\n evaluatePossiblyAsync() {\n const computedObservable = this, throttleEvaluationTimeout = computedObservable.throttleEvaluation;\n if (throttleEvaluationTimeout && throttleEvaluationTimeout >= 0) {\n clearTimeout(this[computedState].evaluationTimeoutInstance);\n this[computedState].evaluationTimeoutInstance = safeSetTimeout(function() {\n computedObservable.evaluateImmediate(\n true\n /* notifyChange */\n );\n }, throttleEvaluationTimeout);\n } else if (computedObservable._evalDelayed) {\n computedObservable._evalDelayed(\n true\n /* notifyChange */\n );\n } else {\n computedObservable.evaluateImmediate(\n true\n /* notifyChange */\n );\n }\n },\n evaluateImmediate(notifyChange) {\n let computedObservable = this, state = computedObservable[computedState], disposeWhen = state.disposeWhen, changed = false;\n if (state.isBeingEvaluated) {\n return;\n }\n if (state.isDisposed) {\n return;\n }\n if (state.disposeWhenNodeIsRemoved && !domNodeIsAttachedToDocument(state.disposeWhenNodeIsRemoved) || disposeWhen && disposeWhen()) {\n if (!state.suppressDisposalUntilDisposeWhenReturnsFalse) {\n computedObservable.dispose();\n return;\n }\n } else {\n state.suppressDisposalUntilDisposeWhenReturnsFalse = false;\n }\n state.isBeingEvaluated = true;\n try {\n changed = this.evaluateImmediate_CallReadWithDependencyDetection(notifyChange);\n } finally {\n state.isBeingEvaluated = false;\n }\n return changed;\n },\n evaluateImmediate_CallReadWithDependencyDetection(notifyChange) {\n let computedObservable = this, state = computedObservable[computedState], changed = false;\n const isInitial = state.pure ? void 0 : !state.dependenciesCount, dependencyDetectionContext = {\n computedObservable,\n disposalCandidates: state.dependencyTracking,\n disposalCount: state.dependenciesCount\n };\n dependencyDetection.begin({\n callbackTarget: dependencyDetectionContext,\n callback: computedBeginDependencyDetectionCallback,\n computed: computedObservable,\n isInitial\n });\n state.dependencyTracking = {};\n state.dependenciesCount = 0;\n const newValue = this.evaluateImmediate_CallReadThenEndDependencyDetection(state, dependencyDetectionContext);\n if (!state.dependenciesCount) {\n computedObservable.dispose();\n changed = true;\n } else {\n changed = computedObservable.isDifferent(state.latestValue, newValue);\n }\n if (changed) {\n if (!state.isSleeping) {\n computedObservable.notifySubscribers(state.latestValue, \"beforeChange\");\n } else {\n computedObservable.updateVersion();\n }\n state.latestValue = newValue;\n if (options.debug) {\n computedObservable._latestValue = newValue;\n }\n computedObservable.notifySubscribers(state.latestValue, \"spectate\");\n if (!state.isSleeping && notifyChange) {\n computedObservable.notifySubscribers(state.latestValue);\n }\n if (computedObservable._recordUpdate) {\n computedObservable._recordUpdate();\n }\n }\n if (isInitial) {\n computedObservable.notifySubscribers(state.latestValue, \"awake\");\n }\n return changed;\n },\n evaluateImmediate_CallReadThenEndDependencyDetection(state, dependencyDetectionContext) {\n try {\n const readFunction = state.readFunction;\n return state.evaluatorFunctionTarget ? readFunction.call(state.evaluatorFunctionTarget) : readFunction();\n } finally {\n dependencyDetection.end();\n if (dependencyDetectionContext.disposalCount && !state.isSleeping) {\n objectForEach(dependencyDetectionContext.disposalCandidates, computedDisposeDependencyCallback);\n }\n state.isStale = state.isDirty = false;\n }\n },\n peek(forceEvaluate) {\n const state = this[computedState];\n if (state.isDirty && (forceEvaluate || !state.dependenciesCount) || state.isSleeping && this.haveDependenciesChanged()) {\n this.evaluateImmediate();\n }\n return state.latestValue;\n },\n get [LATEST_VALUE]() {\n return this.peek();\n },\n limit(limitFunction) {\n const state = this[computedState];\n subscribable.fn.limit.call(this, limitFunction);\n Object.assign(this, {\n _evalIfChanged() {\n if (!this[computedState].isSleeping) {\n if (this[computedState].isStale) {\n this.evaluateImmediate();\n } else {\n this[computedState].isDirty = false;\n }\n }\n return state.latestValue;\n },\n _evalDelayed(isChange) {\n this._limitBeforeChange(state.latestValue);\n state.isDirty = true;\n if (isChange) {\n state.isStale = true;\n }\n this._limitChange(\n this,\n !isChange\n /* isDirty */\n );\n }\n });\n },\n dispose() {\n const state = this[computedState];\n if (!state.isSleeping && state.dependencyTracking) {\n objectForEach(state.dependencyTracking, function(id, dependency) {\n if (dependency.dispose) {\n dependency.dispose();\n }\n });\n }\n if (state.disposeWhenNodeIsRemoved && state.domNodeDisposalCallback) {\n removeDisposeCallback(state.disposeWhenNodeIsRemoved, state.domNodeDisposalCallback);\n }\n Object.assign(state, DISPOSED_STATE);\n }\n};\nconst pureComputedOverrides = {\n beforeSubscriptionAdd(event) {\n const computedObservable = this, state = computedObservable[computedState];\n if (!state.isDisposed && state.isSleeping && event === \"change\") {\n state.isSleeping = false;\n if (state.isStale || computedObservable.haveDependenciesChanged()) {\n state.dependencyTracking = null;\n state.dependenciesCount = 0;\n if (computedObservable.evaluateImmediate()) {\n computedObservable.updateVersion();\n }\n } else {\n const dependenciesOrder = new Array();\n objectForEach(state.dependencyTracking, function(id, dependency) {\n dependenciesOrder[dependency._order] = id;\n });\n arrayForEach(dependenciesOrder, function(id, order) {\n const dependency = state.dependencyTracking[id], subscription = computedObservable.subscribeToDependency(dependency._target);\n subscription._order = order;\n subscription._version = dependency._version;\n state.dependencyTracking[id] = subscription;\n });\n if (computedObservable.haveDependenciesChanged()) {\n if (computedObservable.evaluateImmediate()) {\n computedObservable.updateVersion();\n }\n }\n }\n if (!state.isDisposed) {\n computedObservable.notifySubscribers(state.latestValue, \"awake\");\n }\n }\n },\n afterSubscriptionRemove(event) {\n const state = this[computedState];\n if (!state.isDisposed && event === \"change\" && !this.hasSubscriptionsForEvent(\"change\")) {\n objectForEach(state.dependencyTracking, function(id, dependency) {\n if (dependency.dispose) {\n state.dependencyTracking[id] = {\n _target: dependency._target,\n _order: dependency._order,\n _version: dependency._version\n };\n dependency.dispose();\n }\n });\n state.isSleeping = true;\n this.notifySubscribers(void 0, \"asleep\");\n }\n },\n getVersion() {\n const state = this[computedState];\n if (state.isSleeping && (state.isStale || this.haveDependenciesChanged())) {\n this.evaluateImmediate();\n }\n return subscribable.fn.getVersion.call(this);\n }\n};\nconst deferEvaluationOverrides = {\n beforeSubscriptionAdd(event) {\n if (event === \"change\" || event === \"beforeChange\") {\n this.peek();\n }\n }\n};\nObject.setPrototypeOf(computed.fn, subscribable.fn);\nconst protoProp = observable.protoProperty;\ncomputed.fn[protoProp] = computed;\nobservable.observablePrototypes.add(computed);\nexport function isComputed(instance) {\n return typeof instance === \"function\" && instance[protoProp] === computed;\n}\nexport function isPureComputed(instance) {\n return isComputed(instance) && instance[computedState] && instance[computedState].pure;\n}\nexport function pureComputed(evaluatorFunctionOrOptions, evaluatorFunctionTarget) {\n if (typeof evaluatorFunctionOrOptions === \"function\") {\n const evaluator = evaluatorFunctionOrOptions;\n return computed(evaluator, evaluatorFunctionTarget, { pure: true });\n } else {\n let options2 = evaluatorFunctionOrOptions;\n options2 = extend({}, options2);\n options2.pure = true;\n return computed(options2, evaluatorFunctionTarget);\n }\n}\n", "// @tko/computed \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { extenders as baseExtenders } from \"@tko/observable\";\nimport { computed } from \"./computed\";\nexport function throttleExtender(target, timeout) {\n target.throttleEvaluation = timeout;\n let writeTimeoutInstance = void 0;\n return computed({\n read: target,\n write: function(value) {\n clearTimeout(writeTimeoutInstance);\n writeTimeoutInstance = setTimeout(function() {\n target(value);\n }, timeout);\n }\n });\n}\nconst extenders = baseExtenders;\nextenders.throttle = throttleExtender;\n", "// @tko/computed \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { observable, observableArray, unwrap } from \"@tko/observable\";\nimport { computed } from \"./computed\";\nconst PROXY_SYM = /* @__PURE__ */ Symbol(\"Knockout Proxied Object\");\nconst MIRROR_SYM = /* @__PURE__ */ Symbol(\"Knockout Proxied Observables\");\nfunction makeComputed(proxy2, fn) {\n return computed({\n owner: proxy2,\n read: fn,\n write: fn,\n pure: \"pure\" in fn ? fn.pure : true,\n deferEvaluation: \"deferEvaluation\" in fn ? fn.deferEvaluation : true\n }).extend({ deferred: true });\n}\nfunction setOrCreate(mirror, prop, value, proxy2) {\n if (!mirror[prop]) {\n const ctr = Array.isArray(value) ? observableArray : typeof value === \"function\" ? makeComputed.bind(null, proxy2) : observable;\n mirror[prop] = ctr(value);\n } else {\n mirror[prop](value);\n }\n}\nfunction assignOrUpdate(mirror, object, proxy2) {\n for (const key of Object.keys(object)) {\n setOrCreate(mirror, key, object[key], proxy2);\n }\n return object;\n}\nexport function proxy(object) {\n const mirror = { [PROXY_SYM]: object };\n mirror[MIRROR_SYM] = mirror;\n const proxy2 = new Proxy(function() {\n }, {\n has(target, prop) {\n return prop in mirror;\n },\n get(target, prop) {\n return unwrap(mirror[prop]);\n },\n set(target, prop, value, receiver) {\n setOrCreate(mirror, prop, value, proxy2);\n object[prop] = value;\n return true;\n },\n deleteProperty(property) {\n delete mirror[property];\n return delete object[property];\n },\n apply(target, thisArg, [props]) {\n if (props) {\n assignOrUpdate(mirror, props, proxy2);\n return Object.assign(object, props);\n }\n return object;\n },\n getPrototypeOf() {\n return Object.getPrototypeOf(object);\n },\n setPrototypeOf(target, proto) {\n return Object.setPrototypeOf(object, proto);\n },\n defineProperty(target, prop, desc) {\n return Object.defineProperty(object, prop, desc);\n },\n preventExtensions() {\n return Object.preventExtensions(object);\n },\n isExtensible() {\n return Object.isExtensible(object);\n },\n ownKeys() {\n return [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n });\n assignOrUpdate(mirror, object, proxy2);\n return proxy2;\n}\nexport function getObservable(proxied, prop) {\n return proxied[MIRROR_SYM][prop];\n}\nexport function peek(proxied, prop) {\n return getObservable(proxied, prop).peek();\n}\nexport function isProxied(proxied) {\n return PROXY_SYM in proxied;\n}\nObject.assign(proxy, { getObservable, peek, isProxied });\n", "// @tko/computed \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { pureComputed } from \"./computed\";\nfunction kowhen(predicate, context, resolve) {\n const observable = pureComputed(predicate, context).extend({ notify: \"always\" });\n const subscription = observable.subscribe((value) => {\n if (value) {\n subscription.dispose();\n resolve(value);\n }\n });\n observable.notifySubscribers(observable.peek());\n return subscription;\n}\nexport function when(predicate, callback, context) {\n const whenFn = kowhen.bind(null, predicate, context);\n return callback ? whenFn(callback.bind(context)) : new Promise(whenFn);\n}\n", "// @tko/lifecycle \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { addDisposeCallback, createSymbolOrString } from \"@tko/utils\";\nimport { computed } from \"@tko/computed\";\nconst SUBSCRIPTIONS = createSymbolOrString(\"LifeCycle Subscriptions List\");\nconst ANCHOR_NODE = createSymbolOrString(\"LifeCycle Anchor Node\");\nexport default class LifeCycle {\n // NOTE: For more advanced integration as an ES6 mixin, see e.g.:\n // http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/\n /**\n * Copy the properties of the LifeCycle class to the target (or its prototype)\n *\n * NOTE: getOwnPropertyNames is needed to copy the non-enumerable properties.\n */\n static mixInto(Constructor) {\n const target = Constructor.prototype || Constructor;\n const mixin = LifeCycle.prototype;\n for (const prop of Object.getOwnPropertyNames(mixin)) {\n target[prop] = mixin[prop];\n }\n }\n subscribe(observable, action, subscriptionType) {\n if (typeof action === \"string\") {\n action = this[action];\n }\n this.addDisposable(observable.subscribe(action, this, subscriptionType));\n }\n computed(params) {\n if (typeof params === \"string\") {\n params = { read: this[params], write: this[params] };\n }\n if (typeof params === \"object\") {\n params = Object.assign({ owner: this }, params);\n } else if (typeof params === \"function\") {\n const proto = Object.getPrototypeOf(this);\n if (proto && proto[params.name] === params) {\n params = params.bind(this);\n }\n params = { read: params, write: params };\n } else {\n throw new Error(\"LifeCycle::computed not given a valid type.\");\n }\n params.disposeWhenNodeIsRemoved = this[ANCHOR_NODE];\n return this.addDisposable(computed(params));\n }\n /**\n * Add an event listener for the given or anchored node.\n * @param {node} [node] (optional) The target node (otherwise the anchored node)\n * @param {string} [type] Event type\n * @param {function|string} [action] Either call the given function or `this[action]`\n * @param {object} [options] (optional) Passed as `options` to `node.addEventListener`\n */\n addEventListener(...args) {\n const node = args[0].nodeType ? args.shift() : this[ANCHOR_NODE];\n const [type, act, options] = args;\n const handler = typeof act === \"string\" ? this[act].bind(this) : act;\n this.__addEventListener(node, type, handler, options);\n }\n __addEventListener(node, eventType, handler, options) {\n node.addEventListener(eventType, handler, options);\n function dispose() {\n node.removeEventListener(eventType, handler);\n }\n addDisposeCallback(node, dispose);\n this.addDisposable({ dispose });\n }\n anchorTo(nodeOrLifeCycle) {\n if (\"addDisposable\" in nodeOrLifeCycle) {\n nodeOrLifeCycle.addDisposable(this);\n this[ANCHOR_NODE] = null;\n } else {\n this[ANCHOR_NODE] = nodeOrLifeCycle;\n addDisposeCallback(nodeOrLifeCycle, () => this[ANCHOR_NODE] === nodeOrLifeCycle && this.dispose());\n }\n }\n dispose() {\n const subscriptions = this[SUBSCRIPTIONS] || [];\n subscriptions.forEach((s) => s.dispose());\n this[SUBSCRIPTIONS] = new Array();\n this[ANCHOR_NODE] = null;\n }\n addDisposable(subscription) {\n const subscriptions = this[SUBSCRIPTIONS] || [];\n if (!this[SUBSCRIPTIONS]) {\n this[SUBSCRIPTIONS] = subscriptions;\n }\n if (typeof subscription.dispose !== \"function\") {\n throw new Error(\"Lifecycle::addDisposable argument missing `dispose`.\");\n }\n subscriptions.push(subscription);\n return subscription;\n }\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { domData } from \"@tko/utils\";\nimport { subscribable } from \"@tko/observable\";\nexport const contextAncestorBindingInfo = /* @__PURE__ */ Symbol(\"_ancestorBindingInfo\");\nconst boundElementDomDataKey = domData.nextKey();\nexport const bindingEvent = {\n //TODO better: String-Enum \"BindingEventEnum\"\n childrenComplete: \"childrenComplete\",\n descendantsComplete: \"descendantsComplete\",\n subscribe(node, event, callback, callbackContext) {\n const bindingInfo = domData.getOrSet(node, boundElementDomDataKey, {});\n if (!bindingInfo.eventSubscribable) {\n bindingInfo.eventSubscribable = new subscribable();\n }\n return bindingInfo.eventSubscribable.subscribe(callback, callbackContext, event);\n },\n notify(node, event) {\n const bindingInfo = domData.get(node, boundElementDomDataKey);\n if (bindingInfo) {\n if (bindingInfo.eventSubscribable) {\n ;\n bindingInfo.eventSubscribable.notifySubscribers(node, event);\n }\n }\n }\n};\n", "// @tko/bind \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { extend, options, domData, isObjectLike } from \"@tko/utils\";\nimport { pureComputed } from \"@tko/computed\";\nimport { unwrap, isObservable } from \"@tko/observable\";\nimport { contextAncestorBindingInfo } from \"./bindingEvent\";\nexport const boundElementDomDataKey = domData.nextKey();\nexport const contextSubscribeSymbol = /* @__PURE__ */ Symbol(\"Knockout Context Subscription\");\nconst inheritParentIndicator = /* @__PURE__ */ Symbol(\"Knockout Parent Indicator\");\nexport const bindingContext = function bindingContextFactory(dataItemOrAccessor, parentContext, dataItemAlias, extendCallback, settings) {\n const self = this;\n const shouldInheritData = dataItemOrAccessor === inheritParentIndicator;\n const realDataItemOrAccessor = shouldInheritData ? void 0 : dataItemOrAccessor;\n const isFunc = typeof realDataItemOrAccessor === \"function\" && !isObservable(realDataItemOrAccessor);\n self.ko = options.knockoutInstance;\n let subscribable;\n function updateContext() {\n const dataItemOrObservable = isFunc ? realDataItemOrAccessor() : realDataItemOrAccessor;\n let dataItem = unwrap(dataItemOrObservable);\n if (parentContext) {\n if (parentContext[contextSubscribeSymbol]) {\n parentContext[contextSubscribeSymbol]();\n }\n extend(self, parentContext);\n if (contextAncestorBindingInfo in parentContext) {\n self[contextAncestorBindingInfo] = parentContext[contextAncestorBindingInfo];\n }\n } else {\n self.$parents = new Array();\n self.$root = dataItem;\n }\n self[contextSubscribeSymbol] = subscribable;\n if (shouldInheritData) {\n dataItem = self.$data;\n } else {\n self.$rawData = dataItemOrObservable;\n self.$data = dataItem;\n }\n if (dataItemAlias) {\n self[dataItemAlias] = dataItem;\n }\n if (extendCallback) {\n extendCallback(self, parentContext, dataItem);\n }\n return self.$data;\n }\n if (settings && settings.exportDependencies) {\n updateContext();\n } else {\n subscribable = pureComputed(updateContext);\n subscribable.peek();\n if (subscribable.isActive()) {\n self[contextSubscribeSymbol] = subscribable;\n subscribable[\"equalityComparer\"] = null;\n } else {\n self[contextSubscribeSymbol] = void 0;\n }\n }\n};\nObject.assign(bindingContext.prototype, {\n lookup(token, globals, node) {\n switch (token) {\n case \"$element\":\n return node;\n case \"$context\":\n return this;\n case \"this\":\n case \"$data\":\n return this.$data;\n }\n const $data = this.$data;\n if (isObjectLike($data) && token in $data) {\n return $data[token];\n }\n if (token in this) {\n return this[token];\n }\n if (token in globals) {\n return globals[token];\n }\n throw new Error(`The variable \"${token}\" was not found on $data, $context, or globals.`);\n },\n // Extend the binding context hierarchy with a new view model object. If the parent context is watching\n // any observables, the new child context will automatically get a dependency on the parent context.\n // But this does not mean that the $data value of the child context will also get updated. If the child\n // view model also depends on the parent view model, you must provide a function that returns the correct\n // view model on each update.\n createChildContext(dataItemOrAccessor, dataItemAlias, extendCallback, settings) {\n return new bindingContext(\n dataItemOrAccessor,\n this,\n dataItemAlias,\n function(self, parentContext) {\n self.$parentContext = parentContext;\n self.$parent = parentContext?.$data;\n self.$parents = (parentContext?.$parents ?? []).slice(0);\n self.$parents.unshift(self.$parent);\n if (extendCallback) {\n extendCallback(self);\n }\n },\n settings\n );\n },\n // Extend the binding context with new custom properties. This doesn't change the context hierarchy.\n // Similarly to \"child\" contexts, provide a function here to make sure that the correct values are set\n // when an observable view model is updated.\n extend(properties) {\n return new bindingContext(inheritParentIndicator, this, void 0, function(self, parentContext) {\n extend(self, typeof properties === \"function\" ? properties.call(self) : properties);\n });\n },\n createStaticChildContext(dataItemOrAccessor, dataItemAlias) {\n return this.createChildContext(dataItemOrAccessor, dataItemAlias, null, { exportDependencies: true });\n }\n});\nexport function storedBindingContextForNode(node) {\n const bindingInfo = domData.get(node, boundElementDomDataKey);\n return bindingInfo && bindingInfo.context;\n}\nexport function contextFor(node) {\n if (node && (node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.COMMENT_NODE)) {\n return storedBindingContextForNode(node);\n }\n}\nexport function dataFor(node) {\n const context = contextFor(node);\n return context ? context.$data : void 0;\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nexport class BindingResult {\n constructor({ asyncBindingsApplied, rootNode, bindingContext }) {\n this.rootNode = rootNode;\n this.bindingContext = bindingContext;\n this.isSync = asyncBindingsApplied.size === 0;\n this.isComplete = this.isSync;\n if (!this.isSync) {\n this.completionPromise = this.completeWhenBindingsFinish(asyncBindingsApplied);\n }\n }\n async completeWhenBindingsFinish(asyncBindingsApplied) {\n await Promise.all(asyncBindingsApplied);\n this.isComplete = true;\n return this;\n }\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { options } from \"@tko/utils\";\nimport { isWriteableObservable } from \"@tko/observable\";\nimport { LifeCycle } from \"@tko/lifecycle\";\nexport class BindingHandler extends LifeCycle {\n constructor(params) {\n super();\n const { $element, valueAccessor, allBindings, $context } = params;\n this.$element = $element;\n this.valueAccessor = valueAccessor;\n this.allBindings = allBindings;\n this.$context = $context;\n this.$data = $context.$data;\n this.anchorTo($element);\n }\n get value() {\n return this.valueAccessor();\n }\n set value(v) {\n const va = this.valueAccessor();\n if (isWriteableObservable(va)) {\n va(v);\n } else {\n this.valueAccessor(v);\n }\n }\n get controlsDescendants() {\n return false;\n }\n static get allowVirtualElements() {\n return false;\n }\n static get isBindingHandlerClass() {\n return true;\n }\n /* Overload this for asynchronous bindings or bindings that recursively\n apply bindings (e.g. components, foreach, template).\n \n A binding should be complete when it has run through once, notably\n in server-side bindings for pre-rendering.\n */\n get bindingCompleted() {\n return true;\n }\n static registerAs(name, provider = options.bindingProviderInstance) {\n provider.bindingHandlers.set(name, this);\n }\n static registerBindingHandler(handler, name, provider = options.bindingProviderInstance) {\n provider.bindingHandlers.set(name, handler);\n }\n}\nconst ResolveSymbol = /* @__PURE__ */ Symbol(\"Async Binding Resolved\");\nexport class AsyncBindingHandler extends BindingHandler {\n constructor(params) {\n super(params);\n this.bindingCompletion = new Promise((resolve) => {\n this[ResolveSymbol] = resolve;\n });\n this.completeBinding = (bindingResult) => this[ResolveSymbol](bindingResult);\n }\n get bindingCompleted() {\n return this.bindingCompletion;\n }\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { virtualElements, options } from \"@tko/utils\";\nimport { BindingHandler } from \"./BindingHandler\";\nconst PossibleWeakMap = options.global.WeakMap || Map;\nconst legacyBindingMap = new PossibleWeakMap();\nexport class LegacyBindingHandler extends BindingHandler {\n get handler() {\n return void 0;\n }\n constructor(params) {\n super(params);\n const handler = this.handler;\n this.onError = params.onError;\n if (typeof handler.dispose === \"function\") {\n this.addDisposable(handler);\n }\n try {\n this.initReturn = handler.init && handler.init(...this.legacyArgs);\n } catch (e) {\n params.onError(\"init\", e);\n }\n }\n onValueChange() {\n const handler = this.handler;\n if (typeof handler.update !== \"function\") {\n return;\n }\n try {\n handler.update(...this.legacyArgs);\n } catch (e) {\n this.onError(\"update\", e);\n }\n }\n get legacyArgs() {\n return [this.$element, this.valueAccessor, this.allBindings, this.$data, this.$context];\n }\n get controlsDescendants() {\n const objectToTest = this.initReturn || this.handler || {};\n return objectToTest.controlsDescendantBindings;\n }\n /**\n * Create a handler instance from the `origin`, which may be:\n *\n * 1. an object (becomes LegacyBindingHandler)\n * 2. a function (becomes LegacyBindingHandler with `init: function`)\n *\n * If given an object (the only kind supported in knockout 3.x and before), it\n * shall draw the `init`, `update`, and `allowVirtualElements` properties\n */\n static getOrCreateFor(key, handler) {\n if (legacyBindingMap.has(handler)) {\n return legacyBindingMap.get(handler);\n }\n const newLegacyHandler = this.createFor(key, handler);\n legacyBindingMap.set(handler, newLegacyHandler);\n return newLegacyHandler;\n }\n static createFor(key, handler) {\n if (typeof handler === \"function\") {\n const [initFn, disposeFn] = [handler, handler.dispose];\n return class extends LegacyBindingHandler {\n get handler() {\n const init = initFn.bind(this);\n const dispose = disposeFn ? disposeFn.bind(this) : null;\n return { init, dispose };\n }\n static get after() {\n return handler.after;\n }\n static get allowVirtualElements() {\n return handler.allowVirtualElements || virtualElements.allowedBindings[key];\n }\n };\n }\n if (typeof handler === \"object\") {\n return class extends LegacyBindingHandler {\n get handler() {\n return handler;\n }\n static get after() {\n return handler.after;\n }\n static get allowVirtualElements() {\n return handler.allowVirtualElements || virtualElements.allowedBindings[key];\n }\n };\n }\n throw new Error(\"The given handler is not an appropriate type.\");\n }\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport {\n extend,\n objectMap,\n virtualElements,\n tagNameLower,\n domData,\n objectForEach,\n arrayIndexOf,\n arrayForEach,\n options\n} from \"@tko/utils\";\nimport { dependencyDetection } from \"@tko/observable\";\nimport { computed } from \"@tko/computed\";\nimport { dataFor, bindingContext, boundElementDomDataKey, contextSubscribeSymbol } from \"./bindingContext\";\nimport { bindingEvent } from \"./bindingEvent\";\nimport { BindingResult } from \"./BindingResult\";\nimport { LegacyBindingHandler } from \"./LegacyBindingHandler\";\nconst bindingDoesNotRecurseIntoElementTypes = {\n // Don't want bindings that operate on text nodes to mutate <script> and <textarea> contents,\n // because it's unexpected and a potential XSS issue.\n // Also bindings should not operate on <template> elements since this breaks in Internet Explorer\n // and because such elements' contents are always intended to be bound in a different context\n // from where they appear in the document.\n script: true,\n textarea: true,\n template: true\n};\nfunction getBindingProvider() {\n return options.bindingProviderInstance.instance || options.bindingProviderInstance;\n}\nfunction isProviderForNode(provider, node) {\n const nodeTypes = provider.FOR_NODE_TYPES || [Node.ELEMENT_NODE, Node.TEXT_NODE, Node.COMMENT_NODE];\n return nodeTypes.includes(node.nodeType);\n}\nfunction asProperHandlerClass(handler, bindingKey) {\n if (!handler) {\n return;\n }\n return handler.isBindingHandlerClass ? handler : LegacyBindingHandler.getOrCreateFor(bindingKey, handler);\n}\nfunction getBindingHandlerFromComponent(bindingKey, $component) {\n if (!$component || typeof $component.getBindingHandler !== \"function\") {\n return;\n }\n return asProperHandlerClass($component.getBindingHandler(bindingKey));\n}\nexport function getBindingHandler(bindingKey) {\n const bindingDefinition = options.getBindingHandler(bindingKey) || getBindingProvider().bindingHandlers.get(bindingKey);\n return asProperHandlerClass(bindingDefinition, bindingKey);\n}\nfunction evaluateValueAccessor(valueAccessor) {\n return valueAccessor();\n}\nfunction applyBindingsToDescendantsInternal(bindingContext2, elementOrVirtualElement, asyncBindingsApplied) {\n let nextInQueue = virtualElements.firstChild(elementOrVirtualElement);\n if (!nextInQueue) {\n return;\n }\n let currentChild;\n const provider = getBindingProvider();\n const preprocessNode = provider.preprocessNode;\n if (preprocessNode) {\n while (currentChild = nextInQueue) {\n nextInQueue = virtualElements.nextSibling(currentChild);\n preprocessNode.call(provider, currentChild);\n }\n nextInQueue = virtualElements.firstChild(elementOrVirtualElement);\n }\n while (currentChild = nextInQueue) {\n nextInQueue = virtualElements.nextSibling(currentChild);\n applyBindingsToNodeAndDescendantsInternal(bindingContext2, currentChild, asyncBindingsApplied);\n }\n bindingEvent.notify(elementOrVirtualElement, bindingEvent.childrenComplete);\n}\nfunction hasBindings(node) {\n const provider = getBindingProvider();\n return isProviderForNode(provider, node) && provider.nodeHasBindings(node);\n}\nfunction nodeOrChildHasBindings(node) {\n return hasBindings(node) || [...node.childNodes].some((c) => nodeOrChildHasBindings(c));\n}\nfunction applyBindingsToNodeAndDescendantsInternal(bindingContext2, nodeVerified, asyncBindingsApplied) {\n const isElement = nodeVerified.nodeType === Node.ELEMENT_NODE;\n if (isElement) {\n virtualElements.normaliseVirtualElementDomStructure(nodeVerified);\n }\n const shouldApplyBindings = isElement || hasBindings(nodeVerified);\n const { shouldBindDescendants } = shouldApplyBindings ? applyBindingsToNodeInternal(nodeVerified, null, bindingContext2, asyncBindingsApplied) : { shouldBindDescendants: true };\n if (shouldBindDescendants && !bindingDoesNotRecurseIntoElementTypes[tagNameLower(nodeVerified)]) {\n applyBindingsToDescendantsInternal(bindingContext2, nodeVerified, asyncBindingsApplied);\n }\n}\nfunction* topologicalSortBindings(bindings, $component) {\n const results = [];\n const bindingsConsidered = {};\n const cyclicDependencyStack = new Array();\n objectForEach(bindings, function pushBinding(bindingKey) {\n if (!bindingsConsidered[bindingKey]) {\n const binding = getBindingHandlerFromComponent(bindingKey, $component) || getBindingHandler(bindingKey);\n if (!binding) {\n return;\n }\n if (binding.after) {\n cyclicDependencyStack.push(bindingKey);\n arrayForEach(binding.after, function(bindingDependencyKey) {\n if (!bindings[bindingDependencyKey]) {\n return;\n }\n if (arrayIndexOf(cyclicDependencyStack, bindingDependencyKey) !== -1) {\n throw Error(\n \"Cannot combine the following bindings, because they have a cyclic dependency: \" + cyclicDependencyStack.join(\", \")\n );\n } else {\n pushBinding(bindingDependencyKey);\n }\n });\n cyclicDependencyStack.length--;\n }\n results.push([bindingKey, binding]);\n }\n bindingsConsidered[bindingKey] = true;\n });\n for (const result of results) {\n yield result;\n }\n}\nfunction applyBindingsToNodeInternal(node, sourceBindings, bindingContext2, asyncBindingsApplied) {\n const bindingInfo = domData.getOrSet(node, boundElementDomDataKey, {});\n const alreadyBound = bindingInfo.alreadyBound;\n if (!sourceBindings) {\n if (alreadyBound) {\n if (!nodeOrChildHasBindings(node)) {\n return false;\n }\n onBindingError({\n during: \"apply\",\n errorCaptured: new Error(\"You cannot apply bindings multiple times to the same element.\"),\n element: node,\n bindingContext: bindingContext2\n });\n return false;\n }\n bindingInfo.alreadyBound = true;\n }\n if (!alreadyBound) {\n bindingInfo.context = bindingContext2;\n }\n let bindings = null;\n let bindingsUpdater = null;\n if (sourceBindings && typeof sourceBindings !== \"function\") {\n bindings = sourceBindings;\n } else {\n const provider = getBindingProvider();\n const getBindings = provider.getBindingAccessors;\n if (isProviderForNode(provider, node)) {\n bindingsUpdater = computed(\n function() {\n bindings = sourceBindings ? sourceBindings(bindingContext2, node) : getBindings.call(provider, node, bindingContext2);\n if (bindings && bindingContext2[contextSubscribeSymbol]) {\n bindingContext2[contextSubscribeSymbol]();\n }\n return bindings;\n },\n null,\n { disposeWhenNodeIsRemoved: node }\n );\n if (!bindings || !bindingsUpdater.isActive()) {\n bindingsUpdater = null;\n }\n }\n }\n let bindingHandlerThatControlsDescendantBindings;\n if (bindings) {\n const $component = bindingContext2.$component || {};\n const allBindingHandlers = {};\n domData.set(node, \"bindingHandlers\", allBindingHandlers);\n const getValueAccessor = bindingsUpdater ? (bindingKey) => function(optionalValue) {\n const valueAccessor = bindingsUpdater()[bindingKey];\n if (arguments.length === 0) {\n return evaluateValueAccessor(valueAccessor);\n } else {\n return valueAccessor(optionalValue);\n }\n } : (bindingKey) => bindings[bindingKey];\n const allBindings = function() {\n return objectMap(bindingsUpdater ? bindingsUpdater() : bindings, evaluateValueAccessor);\n };\n allBindings.has = (key) => key in bindings;\n allBindings.get = (key) => bindings[key] && evaluateValueAccessor(getValueAccessor(key));\n if (bindingEvent.childrenComplete in bindings) {\n bindingEvent.subscribe(\n node,\n bindingEvent.childrenComplete,\n () => {\n const callback = evaluateValueAccessor(bindings[bindingEvent.childrenComplete]);\n if (!callback) {\n return;\n }\n const nodes = virtualElements.childNodes(node);\n if (nodes.length) {\n callback(nodes, dataFor(nodes[0]));\n }\n },\n null\n );\n }\n const bindingsGenerated = topologicalSortBindings(bindings, $component);\n const nodeAsyncBindingPromises = /* @__PURE__ */ new Set();\n for (const [key, BindingHandlerClass] of bindingsGenerated) {\n const reportBindingError = function(during, errorCaptured) {\n onBindingError({\n during,\n errorCaptured,\n bindings,\n allBindings,\n bindingKey: key,\n bindingContext: bindingContext2,\n element: node,\n valueAccessor: getValueAccessor(key)\n });\n };\n if (node.nodeType === Node.COMMENT_NODE && !BindingHandlerClass.allowVirtualElements) {\n throw new Error(`The binding '${key}' cannot be used with virtual elements`);\n }\n try {\n const bindingHandler = dependencyDetection.ignore(\n () => new BindingHandlerClass({\n allBindings,\n $element: node,\n $context: bindingContext2,\n onError: reportBindingError,\n valueAccessor(...v) {\n return getValueAccessor(key)(...v);\n }\n })\n );\n if (bindingHandler.onValueChange) {\n dependencyDetection.ignore(() => bindingHandler.computed(\"onValueChange\"));\n }\n allBindingHandlers[key] = bindingHandler;\n if (bindingHandler.controlsDescendants) {\n if (bindingHandlerThatControlsDescendantBindings !== void 0) {\n throw new Error(\n \"Multiple bindings (\" + bindingHandlerThatControlsDescendantBindings + \" and \" + key + \") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.\"\n );\n }\n bindingHandlerThatControlsDescendantBindings = key;\n }\n if (bindingHandler.bindingCompleted instanceof Promise) {\n asyncBindingsApplied.add(bindingHandler.bindingCompleted);\n nodeAsyncBindingPromises.add(bindingHandler.bindingCompleted);\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n reportBindingError(\"creation\", error);\n }\n }\n triggerDescendantsComplete(node, bindings, nodeAsyncBindingPromises);\n }\n const shouldBindDescendants = bindingHandlerThatControlsDescendantBindings === void 0;\n return { shouldBindDescendants };\n}\nfunction triggerDescendantsComplete(node, bindings, nodeAsyncBindingPromises) {\n const hasBindingHandler = bindingEvent.descendantsComplete in bindings;\n const hasFirstChild = virtualElements.firstChild(node);\n const accessor = hasBindingHandler && evaluateValueAccessor(bindings[bindingEvent.descendantsComplete]);\n const callback = () => {\n bindingEvent.notify(node, bindingEvent.descendantsComplete);\n if (accessor && hasFirstChild) {\n accessor(node);\n }\n };\n if (nodeAsyncBindingPromises.size) {\n Promise.all(nodeAsyncBindingPromises).then(callback);\n } else {\n callback();\n }\n}\nfunction getBindingContext(viewModelOrBindingContext, extendContextCallback) {\n return viewModelOrBindingContext && viewModelOrBindingContext instanceof bindingContext ? viewModelOrBindingContext : new bindingContext(viewModelOrBindingContext, void 0, void 0, extendContextCallback);\n}\nexport function applyBindingAccessorsToNode(node, bindings, viewModelOrBindingContext, asyncBindingsApplied) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n virtualElements.normaliseVirtualElementDomStructure(node);\n }\n return applyBindingsToNodeInternal(\n node,\n bindings,\n getBindingContext(viewModelOrBindingContext),\n asyncBindingsApplied\n );\n}\nexport function applyBindingsToNode(node, bindings, viewModelOrBindingContext) {\n const asyncBindingsApplied = /* @__PURE__ */ new Set();\n const bindingContext2 = getBindingContext(viewModelOrBindingContext);\n const bindingAccessors = getBindingProvider().makeBindingAccessors(bindings, bindingContext2, node);\n applyBindingAccessorsToNode(node, bindingAccessors, bindingContext2, asyncBindingsApplied);\n return new BindingResult({ asyncBindingsApplied, rootNode: node, bindingContext: bindingContext2 });\n}\nexport function applyBindingsToDescendants(viewModelOrBindingContext, rootNode) {\n const asyncBindingsApplied = /* @__PURE__ */ new Set();\n const bindingContext2 = getBindingContext(viewModelOrBindingContext);\n if (rootNode.nodeType === Node.ELEMENT_NODE || rootNode.nodeType === Node.COMMENT_NODE) {\n applyBindingsToDescendantsInternal(bindingContext2, rootNode, asyncBindingsApplied);\n return new BindingResult({ asyncBindingsApplied, rootNode, bindingContext: bindingContext2 });\n }\n return new BindingResult({ asyncBindingsApplied, rootNode, bindingContext: bindingContext2 });\n}\nexport function applyBindings(viewModelOrBindingContext, rootNode, extendContextCallback) {\n const asyncBindingsApplied = /* @__PURE__ */ new Set();\n if (!rootNode) {\n rootNode = window.document.body;\n if (!rootNode) {\n throw Error(\"ko.applyBindings: could not find window.document.body; has the document been loaded?\");\n }\n } else if (rootNode.nodeType !== Node.ELEMENT_NODE && rootNode.nodeType !== Node.COMMENT_NODE) {\n throw Error(\"ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node\");\n }\n const rootContext = getBindingContext(viewModelOrBindingContext, extendContextCallback);\n applyBindingsToNodeAndDescendantsInternal(rootContext, rootNode, asyncBindingsApplied);\n return Promise.all(asyncBindingsApplied);\n}\nfunction onBindingError(spec) {\n let error;\n if (spec.bindingKey) {\n error = spec.errorCaptured;\n spec.message = 'Unable to process binding \"' + spec.bindingKey + '\" in binding \"' + spec.bindingKey + '\"\\nMessage: ' + (error.message ? error.message : error);\n } else {\n error = spec.errorCaptured;\n }\n try {\n extend(error, spec);\n } catch (e) {\n spec.stack = error.stack;\n const message = error.message || String(error);\n const originalName = error.name;\n error = new Error(message);\n if (originalName && originalName !== \"Error\") {\n error.name = originalName;\n }\n extend(error, spec);\n }\n options.onError(error);\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport {\n fixUpContinuousNodeArray,\n replaceDomNodes,\n arrayPushAll,\n anyDomNodeIsAttachedToDocument,\n domData,\n arrayMap,\n arrayForEach,\n virtualElements,\n extend,\n cleanNode,\n removeNode,\n compareArrays\n} from \"@tko/utils\";\nimport { dependencyDetection, observable } from \"@tko/observable\";\nimport { computed } from \"@tko/computed\";\nfunction mapNodeAndRefreshWhenChanged(containerNode, mapping, valueToMap, callbackAfterAddingNodes, index) {\n const mappedNodes = [];\n const dependentObservable = computed(\n function() {\n const newMappedNodes = mapping(valueToMap, index, fixUpContinuousNodeArray(mappedNodes, containerNode)) || [];\n if (mappedNodes.length > 0) {\n replaceDomNodes(mappedNodes, newMappedNodes);\n if (callbackAfterAddingNodes) {\n dependencyDetection.ignore(callbackAfterAddingNodes, null, [valueToMap, newMappedNodes, index]);\n }\n }\n mappedNodes.length = 0;\n arrayPushAll(mappedNodes, newMappedNodes);\n },\n null,\n {\n disposeWhenNodeIsRemoved: containerNode,\n disposeWhen: function() {\n return !anyDomNodeIsAttachedToDocument(mappedNodes);\n }\n }\n );\n return {\n mappedNodes,\n dependentObservable: dependentObservable.isActive() ? dependentObservable : void 0\n };\n}\nconst lastMappingResultDomDataKey = domData.nextKey();\nconst deletedItemDummyValue = domData.nextKey();\nexport function setDomNodeChildrenFromArrayMapping(domNode, array, mapping, options, callbackAfterAddingNodes, editScript) {\n array = array || [];\n if (typeof array.length === \"undefined\") {\n array = [array];\n }\n options = options || {};\n const lastMappingResult = domData.get(domNode, lastMappingResultDomDataKey);\n const isFirstExecution = !lastMappingResult;\n const newMappingResult = new Array();\n let lastMappingResultIndex = 0;\n let newMappingResultIndex = 0;\n const nodesToDelete = [];\n const itemsToProcess = [];\n const itemsForBeforeRemoveCallbacks = [];\n const itemsForMoveCallbacks = [];\n const itemsForAfterAddCallbacks = [];\n let mapData;\n let countWaitingForRemove = 0;\n function itemAdded(value) {\n mapData = { arrayEntry: value, indexObservable: observable(newMappingResultIndex++) };\n newMappingResult.push(mapData);\n itemsToProcess.push(mapData);\n if (!isFirstExecution) {\n itemsForAfterAddCallbacks.push(mapData);\n }\n }\n function itemMovedOrRetained(oldPosition) {\n mapData = lastMappingResult[oldPosition];\n if (newMappingResultIndex !== oldPosition) {\n itemsForMoveCallbacks.push(mapData);\n }\n mapData.indexObservable(newMappingResultIndex++);\n fixUpContinuousNodeArray(mapData.mappedNodes, domNode);\n newMappingResult.push(mapData);\n itemsToProcess.push(mapData);\n }\n function callCallback(callback, items) {\n if (callback) {\n for (let i = 0, n = items.length; i < n; i++) {\n arrayForEach(items[i].mappedNodes, function(node) {\n callback(node, i, items[i].arrayEntry);\n });\n }\n }\n }\n if (isFirstExecution) {\n arrayForEach(array, itemAdded);\n } else {\n if (!editScript || lastMappingResult && lastMappingResult[\"_countWaitingForRemove\"]) {\n const lastArray = arrayMap(lastMappingResult, function(x) {\n return x.arrayEntry;\n });\n const compareOptions = { dontLimitMoves: options.dontLimitMoves, sparse: true };\n editScript = compareArrays(lastArray, array, compareOptions);\n }\n for (let i = 0, editScriptItem, movedIndex, itemIndex; editScriptItem = editScript[i]; i++) {\n movedIndex = editScriptItem[\"moved\"];\n itemIndex = editScriptItem[\"index\"];\n switch (editScriptItem[\"status\"]) {\n case \"deleted\":\n while (lastMappingResultIndex < itemIndex) {\n itemMovedOrRetained(lastMappingResultIndex++);\n }\n if (movedIndex === void 0) {\n mapData = lastMappingResult[lastMappingResultIndex];\n if (mapData.dependentObservable) {\n mapData.dependentObservable.dispose();\n mapData.dependentObservable = void 0;\n }\n if (fixUpContinuousNodeArray(mapData.mappedNodes, domNode).length) {\n if (options.beforeRemove) {\n newMappingResult.push(mapData);\n itemsToProcess.push(mapData);\n countWaitingForRemove++;\n if (mapData.arrayEntry === deletedItemDummyValue) {\n mapData = null;\n } else {\n itemsForBeforeRemoveCallbacks.push(mapData);\n }\n }\n if (mapData?.mappedNodes) {\n nodesToDelete.push.apply(nodesToDelete, mapData.mappedNodes);\n }\n }\n }\n lastMappingResultIndex++;\n break;\n case \"added\":\n while (newMappingResultIndex < itemIndex) {\n itemMovedOrRetained(lastMappingResultIndex++);\n }\n if (movedIndex !== void 0) {\n itemMovedOrRetained(movedIndex);\n } else {\n itemAdded(editScriptItem[\"value\"]);\n }\n break;\n }\n }\n while (newMappingResultIndex < array.length) {\n itemMovedOrRetained(lastMappingResultIndex++);\n }\n newMappingResult[\"_countWaitingForRemove\"] = countWaitingForRemove;\n }\n domData.set(domNode, lastMappingResultDomDataKey, newMappingResult);\n callCallback(options.beforeMove, itemsForMoveCallbacks);\n arrayForEach(nodesToDelete, options.beforeRemove ? cleanNode : removeNode);\n for (let k = 0, nextNode = virtualElements.firstChild(domNode), lastNode, node; mapData = itemsToProcess[k]; k++) {\n if (!mapData.mappedNodes) {\n extend(\n mapData,\n mapNodeAndRefreshWhenChanged(\n domNode,\n mapping,\n mapData.arrayEntry,\n callbackAfterAddingNodes,\n mapData.indexObservable\n )\n );\n }\n for (let j = 0; node = mapData.mappedNodes[j]; nextNode = node.nextSibling, lastNode = node, j++) {\n if (node !== nextNode) {\n virtualElements.insertAfter(domNode, node, lastNode);\n }\n }\n if (!mapData.initialized && callbackAfterAddingNodes) {\n callbackAfterAddingNodes(mapData.arrayEntry, mapData.mappedNodes, mapData.indexObservable);\n mapData.initialized = true;\n }\n }\n callCallback(options.beforeRemove, itemsForBeforeRemoveCallbacks);\n for (let x = 0; x < itemsForBeforeRemoveCallbacks.length; ++x) {\n itemsForBeforeRemoveCallbacks[x].arrayEntry = deletedItemDummyValue;\n }\n callCallback(options.afterMove, itemsForMoveCallbacks);\n callCallback(options.afterAdd, itemsForAfterAddCallbacks);\n}\n", "// @tko/bind \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { applyBindingsToDescendants } from \"./applyBindings\";\nimport { AsyncBindingHandler } from \"./BindingHandler\";\nexport class DescendantBindingHandler extends AsyncBindingHandler {\n get controlsDescendants() {\n return true;\n }\n async applyBindingsToDescendants(childContext, callback) {\n const bindingResult = applyBindingsToDescendants(childContext, this.$element);\n if (bindingResult.isSync) {\n this.bindingCompletion = bindingResult;\n } else {\n await bindingResult.completionPromise;\n }\n if (callback) {\n callback(bindingResult);\n }\n this.completeBinding(bindingResult);\n }\n}\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { tagNameLower as tagNameLowerFn, setHtml, domData, parseHtmlForTemplateNodes } from \"@tko/utils\";\nconst templateScript = 1, templateTextArea = 2, templateTemplate = 3, templateElement = 4, templateAnonymous = 5;\nconst dataDomDataPrefix = domData.nextKey() + \"_\";\nconst templatesDomDataKey = domData.nextKey();\nfunction getTemplateDomData(element) {\n return domData.get(element, templatesDomDataKey) || {};\n}\nfunction setTemplateDomData(element, data) {\n domData.set(element, templatesDomDataKey, data);\n}\nexport class domElement {\n constructor(element) {\n this.domElement = element;\n if (element.nodeType === Node.COMMENT_NODE) {\n this.templateType = templateElement;\n } else {\n const tagNameLower = tagNameLowerFn(this.domElement);\n this.templateType = tagNameLower === \"script\" ? templateScript : tagNameLower === \"textarea\" ? templateTextArea : (\n // For browsers with proper <template> element support, where the .content property gives a document fragment\n tagNameLower == \"template\" && element.content && element.content.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? templateTemplate : templateElement\n );\n }\n }\n text(valueToWrite) {\n const elemContentsProperty = this.templateType === templateScript ? \"text\" : this.templateType === templateTextArea ? \"value\" : \"innerHTML\";\n if (arguments.length == 0) {\n return this.domElement[elemContentsProperty];\n } else {\n if (elemContentsProperty === \"innerHTML\") {\n setHtml(this.domElement, valueToWrite);\n } else {\n this.domElement[elemContentsProperty] = valueToWrite;\n }\n }\n }\n data(key, valueToWrite) {\n if (arguments.length === 1) {\n return domData.get(this.domElement, dataDomDataPrefix + key);\n } else {\n domData.set(this.domElement, dataDomDataPrefix + key, valueToWrite);\n }\n }\n nodes(valueToWrite) {\n const element = this.domElement;\n if (arguments.length == 0) {\n const templateData = getTemplateDomData(element);\n let nodes = templateData.containerData || (this.templateType === templateTemplate ? element.content : this.templateType === templateElement ? element : void 0);\n if (!nodes || templateData.alwaysCheckText) {\n const text = this.text();\n if (text) {\n nodes = parseHtmlForTemplateNodes(text, element.ownerDocument);\n this.text(\"\");\n setTemplateDomData(element, { containerData: nodes, alwaysCheckText: true });\n }\n }\n return nodes;\n } else {\n setTemplateDomData(element, { containerData: valueToWrite });\n }\n return void 0;\n }\n}\nexport class anonymousTemplate extends domElement {\n constructor(element) {\n super(element);\n this.templateType = templateAnonymous;\n }\n text(valueToWrite) {\n if (arguments.length == 0) {\n const templateData = getTemplateDomData(this.domElement);\n if (templateData.textData === void 0 && templateData.containerData) {\n templateData.textData = templateData.containerData.innerHTML;\n }\n return templateData.textData;\n } else {\n setTemplateDomData(this.domElement, { textData: valueToWrite });\n }\n }\n}\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { extend, options } from \"@tko/utils\";\nimport { domElement, anonymousTemplate } from \"./templateSources\";\nexport function templateEngine() {\n}\nextend(templateEngine.prototype, {\n renderTemplateSource(templateSource, bindingContext, options2, templateDocument) {\n options2.onError(\"Override renderTemplateSource\");\n },\n createJavaScriptEvaluatorBlock(script) {\n options.onError(new Error(\"Override createJavaScriptEvaluatorBlock\"));\n },\n makeTemplateSource(template, templateDocument) {\n if (typeof template === \"string\") {\n templateDocument = templateDocument || document;\n const elem = templateDocument.getElementById(template);\n if (!elem) {\n throw options.onError(new Error(\"Cannot find template with ID \" + template), false);\n }\n return new domElement(elem);\n } else if (template.nodeType === Node.ELEMENT_NODE) {\n return new anonymousTemplate(template);\n } else if (template.nodeType === Node.COMMENT_NODE) {\n return new anonymousTemplate(template);\n } else {\n throw options.onError(new Error(\"Unknown template type: \" + template), false);\n }\n },\n renderTemplate(template, bindingContext, options2, templateDocument) {\n const templateSource = this.makeTemplateSource(template, templateDocument);\n return this.renderTemplateSource(templateSource, bindingContext, options2, templateDocument);\n }\n});\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport {\n virtualElements,\n fixUpContinuousNodeArray,\n replaceDomNodes,\n memoization,\n domNodeIsAttachedToDocument,\n moveCleanedNodesToContainerElement,\n arrayFilter,\n domData,\n options as koOptions\n} from \"@tko/utils\";\nimport {\n applyBindings,\n setDomNodeChildrenFromArrayMapping,\n AsyncBindingHandler,\n bindingEvent,\n bindingContext as BindingContextConstructor\n} from \"@tko/bind\";\nimport { computed } from \"@tko/computed\";\nimport { isObservable, dependencyDetection, unwrap, observable, isObservableArray } from \"@tko/observable\";\nimport { templateEngine } from \"./templateEngine\";\nimport { anonymousTemplate as AnonymousTemplate } from \"./templateSources\";\nlet _templateEngine;\nconst cleanContainerDomDataKey = domData.nextKey();\nexport function setTemplateEngine(tEngine) {\n if (tEngine !== void 0 && !(tEngine instanceof templateEngine)) {\n throw new Error(\"templateEngine must inherit from ko.templateEngine\");\n }\n _templateEngine = tEngine;\n}\nfunction invokeForEachNodeInContinuousRange(firstNode, lastNode, action) {\n let node;\n let nextInQueue = firstNode;\n const firstOutOfRangeNode = virtualElements.nextSibling(lastNode);\n while (nextInQueue && (node = nextInQueue) !== firstOutOfRangeNode) {\n nextInQueue = virtualElements.nextSibling(node);\n action(node, nextInQueue);\n }\n}\nfunction activateBindingsOnContinuousNodeArray(continuousNodeArray, bindingContext, afterBindingCallback) {\n if (continuousNodeArray.length) {\n let firstNode = continuousNodeArray[0];\n let lastNode = continuousNodeArray[continuousNodeArray.length - 1];\n const parentNode = firstNode.parentNode;\n const provider = koOptions.bindingProviderInstance;\n const preprocessNode = provider.preprocessNode;\n if (preprocessNode) {\n invokeForEachNodeInContinuousRange(firstNode, lastNode, function(node, nextNodeInRange) {\n const nodePreviousSibling = node.previousSibling;\n const newNodes = preprocessNode.call(provider, node);\n if (newNodes) {\n if (node === firstNode) {\n firstNode = newNodes[0] || nextNodeInRange;\n }\n if (node === lastNode) {\n lastNode = newNodes[newNodes.length - 1] || nodePreviousSibling;\n }\n }\n });\n continuousNodeArray.length = 0;\n if (!firstNode) {\n return;\n }\n if (firstNode === lastNode) {\n continuousNodeArray.push(firstNode);\n } else {\n continuousNodeArray.push(firstNode, lastNode);\n fixUpContinuousNodeArray(continuousNodeArray, parentNode);\n }\n }\n invokeForEachNodeInContinuousRange(firstNode, lastNode, function(node) {\n if (node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.COMMENT_NODE) {\n applyBindings(bindingContext, node).then(afterBindingCallback);\n }\n });\n invokeForEachNodeInContinuousRange(firstNode, lastNode, function(node) {\n if (node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.COMMENT_NODE) {\n memoization.unmemoizeDomNodeAndDescendants(node, [bindingContext]);\n }\n });\n fixUpContinuousNodeArray(continuousNodeArray, parentNode);\n }\n}\nfunction getFirstNodeFromPossibleArray(nodeOrNodeArray) {\n return nodeOrNodeArray.nodeType ? nodeOrNodeArray : nodeOrNodeArray.length > 0 ? nodeOrNodeArray[0] : null;\n}\nfunction executeTemplate(targetNodeOrNodeArray, renderMode, template, bindingContext, options, afterBindingCallback) {\n options = options || {};\n const firstTargetNode = targetNodeOrNodeArray && getFirstNodeFromPossibleArray(targetNodeOrNodeArray);\n const templateDocument = (firstTargetNode || template || {}).ownerDocument;\n const templateEngineToUse = options.templateEngine || _templateEngine;\n const renderedNodesArray = templateEngineToUse.renderTemplate(template, bindingContext, options, templateDocument);\n if (typeof renderedNodesArray.length !== \"number\" || renderedNodesArray.length > 0 && typeof renderedNodesArray[0].nodeType !== \"number\") {\n throw new Error(\"Template engine must return an array of DOM nodes\");\n }\n let haveAddedNodesToParent = false;\n switch (renderMode) {\n case \"replaceChildren\":\n virtualElements.setDomNodeChildren(targetNodeOrNodeArray, renderedNodesArray);\n haveAddedNodesToParent = true;\n break;\n case \"replaceNode\":\n replaceDomNodes(targetNodeOrNodeArray, renderedNodesArray);\n haveAddedNodesToParent = true;\n break;\n case \"ignoreTargetNode\":\n break;\n default:\n throw new Error(\"Unknown renderMode: \" + renderMode);\n }\n if (haveAddedNodesToParent) {\n activateBindingsOnContinuousNodeArray(renderedNodesArray, bindingContext, afterBindingCallback);\n if (options.afterRender) {\n dependencyDetection.ignore(options.afterRender, null, [renderedNodesArray, bindingContext[\"$data\"]]);\n }\n if (renderMode === \"replaceChildren\") {\n bindingEvent.notify(targetNodeOrNodeArray, bindingEvent.childrenComplete);\n }\n }\n return renderedNodesArray;\n}\nfunction resolveTemplateName(template, data, context) {\n if (isObservable(template)) {\n return template();\n } else if (typeof template === \"function\") {\n return template(data, context);\n } else {\n return template;\n }\n}\nexport function renderTemplate(template, dataOrBindingContext, options, targetNodeOrNodeArray, renderMode, afterBindingCallback) {\n options = options || {};\n if ((options.templateEngine || _templateEngine) === void 0) {\n throw new Error(\"Set a template engine before calling renderTemplate\");\n }\n renderMode = renderMode || \"replaceChildren\";\n if (targetNodeOrNodeArray) {\n let firstTargetNode = getFirstNodeFromPossibleArray(targetNodeOrNodeArray);\n const whenToDispose = function() {\n return !firstTargetNode || !domNodeIsAttachedToDocument(firstTargetNode);\n };\n const activelyDisposeWhenNodeIsRemoved = firstTargetNode && renderMode === \"replaceNode\" ? firstTargetNode.parentNode : firstTargetNode;\n return computed(\n // So the DOM is automatically updated when any dependency changes\n function() {\n const bindingContext = dataOrBindingContext && dataOrBindingContext instanceof BindingContextConstructor ? dataOrBindingContext : new BindingContextConstructor(dataOrBindingContext, void 0, void 0, void 0, {\n exportDependencies: true\n });\n const templateName = resolveTemplateName(template, bindingContext.$data, bindingContext);\n const renderedNodesArray = executeTemplate(\n targetNodeOrNodeArray,\n renderMode,\n templateName,\n bindingContext,\n options,\n afterBindingCallback\n );\n if (renderMode === \"replaceNode\") {\n targetNodeOrNodeArray = renderedNodesArray;\n firstTargetNode = getFirstNodeFromPossibleArray(targetNodeOrNodeArray);\n }\n },\n null,\n { disposeWhen: whenToDispose, disposeWhenNodeIsRemoved: activelyDisposeWhenNodeIsRemoved }\n );\n } else {\n return memoization.memoize(function(domNode) {\n renderTemplate(template, dataOrBindingContext, options, domNode, \"replaceNode\");\n });\n }\n}\nexport default function renderTemplateForEach(template, arrayOrObservableArray, options, targetNode, parentBindingContext, afterBindingCallback) {\n let arrayItemContext;\n function executeTemplateForArrayItem(arrayValue, index) {\n if (options.as) {\n if (koOptions.createChildContextWithAs) {\n arrayItemContext = parentBindingContext.createChildContext(arrayValue, options.as, (context) => {\n context.$index = index;\n });\n } else {\n arrayItemContext = parentBindingContext.extend({ [options.as]: arrayValue, $index: index });\n }\n } else {\n arrayItemContext = parentBindingContext.createChildContext(arrayValue, options.as, (context) => {\n context.$index = index;\n });\n }\n const templateName = resolveTemplateName(template, arrayValue, arrayItemContext);\n return executeTemplate(\n targetNode,\n \"ignoreTargetNode\",\n templateName,\n arrayItemContext,\n options,\n afterBindingCallback\n );\n }\n const activateBindingsCallback = function(arrayValue, addedNodesArray) {\n activateBindingsOnContinuousNodeArray(addedNodesArray, arrayItemContext, afterBindingCallback);\n if (options.afterRender) {\n options.afterRender(addedNodesArray, arrayValue);\n }\n arrayItemContext = null;\n };\n function localSetDomNodeChildrenFromArrayMapping(newArray, changeList) {\n dependencyDetection.ignore(setDomNodeChildrenFromArrayMapping, null, [\n targetNode,\n newArray,\n executeTemplateForArrayItem,\n options,\n activateBindingsCallback,\n changeList\n ]);\n bindingEvent.notify(targetNode, bindingEvent.childrenComplete);\n }\n const shouldHideDestroyed = options.includeDestroyed === false || koOptions.foreachHidesDestroyed && !options.includeDestroyed;\n if (!shouldHideDestroyed && !options.beforeRemove && isObservableArray(arrayOrObservableArray)) {\n localSetDomNodeChildrenFromArrayMapping(arrayOrObservableArray.peek());\n const subscription = arrayOrObservableArray.subscribe(\n function(changeList) {\n localSetDomNodeChildrenFromArrayMapping(arrayOrObservableArray(), changeList);\n },\n null,\n \"arrayChange\"\n );\n subscription.disposeWhenNodeIsRemoved(targetNode);\n return subscription;\n } else {\n return computed(\n function() {\n let unwrappedArray = unwrap(arrayOrObservableArray) || [];\n const unwrappedIsIterable = Symbol.iterator in unwrappedArray;\n if (!unwrappedIsIterable) {\n unwrappedArray = [unwrappedArray];\n }\n if (shouldHideDestroyed) {\n unwrappedArray = arrayFilter(unwrappedArray, function(item) {\n return item === void 0 || item === null || !unwrap(item._destroy);\n });\n }\n localSetDomNodeChildrenFromArrayMapping(unwrappedArray);\n },\n null,\n { disposeWhenNodeIsRemoved: targetNode }\n );\n }\n}\nconst templateComputedDomDataKey = domData.nextKey();\nexport class TemplateBindingHandler extends AsyncBindingHandler {\n constructor(params) {\n super(params);\n const element = this.$element;\n const bindingValue = unwrap(this.value);\n domData.set(element, \"conditional\", { elseChainSatisfied: observable(true) });\n if (typeof bindingValue === \"string\" || bindingValue.name) {\n this.bindNamedTemplate();\n } else if (\"nodes\" in bindingValue) {\n this.bindNodeTemplate(bindingValue.nodes || []);\n } else {\n this.bindAnonymousTemplate();\n }\n }\n bindNamedTemplate() {\n virtualElements.emptyNode(this.$element);\n }\n // We've been given an array of DOM nodes. Save them as the template source.\n // There is no known use case for the node array being an observable array (if the output\n // varies, put that behavior *into* your template - that's what templates are for), and\n // the implementation would be a mess, so assert that it's not observable.\n bindNodeTemplate(nodes) {\n if (isObservable(nodes)) {\n throw new Error('The \"nodes\" option must be a plain, non-observable array.');\n }\n let container = nodes[0] && nodes[0].parentNode;\n if (!container || !domData.get(container, cleanContainerDomDataKey)) {\n container = moveCleanedNodesToContainerElement(nodes);\n domData.set(container, cleanContainerDomDataKey, true);\n }\n new AnonymousTemplate(this.$element).nodes(container);\n }\n bindAnonymousTemplate() {\n const templateNodes = virtualElements.childNodes(this.$element);\n if (templateNodes.length === 0) {\n throw new Error(\"Anonymous template defined, but no template content was provided.\");\n }\n const container = moveCleanedNodesToContainerElement(templateNodes);\n new AnonymousTemplate(this.$element).nodes(container);\n }\n onValueChange() {\n const element = this.$element;\n const bindingContext = this.$context;\n const value = this.value;\n let options = unwrap(value);\n let shouldDisplay = true;\n let templateComputed = null;\n const elseChainSatisfied = domData.get(element, \"conditional\").elseChainSatisfied;\n let templateName;\n if (typeof options === \"string\") {\n templateName = value;\n options = {};\n } else {\n templateName = options.name;\n if (\"if\" in options) {\n shouldDisplay = unwrap(options.if);\n }\n if (shouldDisplay && \"ifnot\" in options) {\n shouldDisplay = !unwrap(options.ifnot);\n }\n }\n if (\"foreach\" in options) {\n const dataArray = shouldDisplay && options.foreach || [];\n templateComputed = renderTemplateForEach(\n templateName || element,\n dataArray,\n options,\n element,\n bindingContext,\n this.completeBinding\n );\n elseChainSatisfied((unwrap(dataArray) || []).length !== 0);\n } else if (shouldDisplay) {\n const innerBindingContext = \"data\" in options ? bindingContext.createStaticChildContext(options.data, options.as) : bindingContext;\n templateComputed = renderTemplate(\n templateName || element,\n innerBindingContext,\n options,\n element,\n void 0,\n this.completeBinding\n );\n elseChainSatisfied(true);\n } else {\n virtualElements.emptyNode(element);\n elseChainSatisfied(false);\n }\n this.disposeOldComputedAndStoreNewOne(element, templateComputed);\n }\n disposeOldComputedAndStoreNewOne(element, newComputed) {\n const oldComputed = domData.get(element, templateComputedDomDataKey);\n if (oldComputed && typeof oldComputed.dispose === \"function\") {\n oldComputed.dispose();\n }\n domData.set(\n element,\n templateComputedDomDataKey,\n newComputed && (!newComputed.isActive || newComputed.isActive()) ? newComputed : void 0\n );\n }\n get controlsDescendants() {\n return true;\n }\n static get allowVirtualElements() {\n return true;\n }\n}\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { makeArray, parseHtmlFragment } from \"@tko/utils\";\nimport { templateEngine } from \"./templateEngine\";\nimport { setTemplateEngine } from \"./templating\";\nexport function nativeTemplateEngine() {\n}\nnativeTemplateEngine.prototype = new templateEngine();\nnativeTemplateEngine.prototype.constructor = nativeTemplateEngine;\nnativeTemplateEngine.prototype.renderTemplateSource = function(templateSource, bindingContext, options, templateDocument) {\n const templateNodes = templateSource.nodes ? templateSource.nodes() : null;\n if (templateNodes) {\n return makeArray(templateNodes.cloneNode(true).childNodes);\n } else {\n const templateText = templateSource.text();\n return parseHtmlFragment(templateText, templateDocument);\n }\n};\nnativeTemplateEngine.instance = new nativeTemplateEngine();\nsetTemplateEngine(nativeTemplateEngine.instance);\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { unwrap, peek } from \"@tko/observable\";\nimport { nativeTemplateEngine } from \"./nativeTemplateEngine\";\nimport { TemplateBindingHandler } from \"./templating\";\nexport class TemplateForEachBindingHandler extends TemplateBindingHandler {\n get value() {\n const modelValue = this.valueAccessor();\n const unwrappedValue = peek(modelValue);\n if (!unwrappedValue || typeof unwrappedValue.length === \"number\") {\n return { foreach: modelValue, templateEngine: nativeTemplateEngine.instance };\n }\n unwrap(modelValue);\n return {\n foreach: unwrappedValue.data,\n as: unwrappedValue.as,\n includeDestroyed: unwrappedValue.includeDestroyed,\n afterAdd: unwrappedValue.afterAdd,\n beforeRemove: unwrappedValue.beforeRemove,\n afterRender: unwrappedValue.afterRender,\n beforeMove: unwrappedValue.beforeMove,\n afterMove: unwrappedValue.afterMove,\n templateEngine: nativeTemplateEngine.instance\n };\n }\n}\n", "// @tko/binding.template \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { TemplateForEachBindingHandler } from \"./foreach\";\nimport { TemplateBindingHandler } from \"./templating\";\nexport const bindings = { foreach: TemplateForEachBindingHandler, template: TemplateBindingHandler };\nexport * from \"./nativeTemplateEngine\";\nexport * from \"./templateEngine\";\nexport * from \"./templating\";\nexport * from \"./templateSources\";\n", "// @tko/builder \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport {\n addDisposeCallback,\n addOrRemoveItem,\n arrayFilter,\n arrayFirst,\n arrayForEach,\n arrayGetDistinctValues,\n arrayIndexOf,\n arrayMap,\n arrayPushAll,\n arrayRemoveItem,\n addCleaner,\n cleanNode,\n cloneNodes,\n compareArrays,\n createSymbolOrString,\n domData,\n extend,\n memoization,\n objectForEach,\n objectMap,\n options,\n parseHtmlFragment,\n parseJson,\n range,\n registerEventHandler,\n removeCleaner,\n removeDisposeCallback,\n removeNode,\n selectExtensions,\n setHtml,\n setTextContent,\n tasks,\n toggleDomNodeCssClass,\n triggerEvent,\n virtualElements\n} from \"@tko/utils\";\nimport { parseObjectLiteral } from \"@tko/utils.parser\";\nimport { LifeCycle } from \"@tko/lifecycle\";\nimport {\n dependencyDetection,\n extenders as defaultExtenders,\n isObservable,\n isSubscribable,\n isWriteableObservable,\n observable,\n observableArray,\n isObservableArray,\n peek,\n subscribable,\n toJS,\n toJSON,\n unwrap\n} from \"@tko/observable\";\nimport { computed, isComputed, isPureComputed, proxy, pureComputed, when } from \"@tko/computed\";\nimport {\n applyBindingAccessorsToNode,\n applyBindings,\n applyBindingsToDescendants,\n applyBindingsToNode,\n contextFor,\n dataFor,\n bindingEvent,\n BindingHandler,\n AsyncBindingHandler,\n setDomNodeChildrenFromArrayMapping\n} from \"@tko/bind\";\nimport {\n anonymousTemplate,\n domElement,\n nativeTemplateEngine,\n renderTemplate,\n setTemplateEngine,\n templateEngine\n} from \"@tko/binding.template\";\nconst domNodeDisposal = {\n addDisposeCallback,\n removeDisposeCallback,\n removeNode,\n addCleaner,\n removeCleaner,\n get cleanExternalData() {\n return options.cleanExternalData;\n },\n set cleanExternalData(cleanerFn) {\n options.set(\"cleanExternalData\", cleanerFn);\n }\n};\nconst utils = {\n addOrRemoveItem,\n arrayFilter,\n arrayFirst,\n arrayForEach,\n arrayGetDistinctValues,\n arrayIndexOf,\n arrayMap,\n arrayPushAll,\n arrayRemoveItem,\n cloneNodes,\n compareArrays,\n createSymbolOrString,\n domData,\n domNodeDisposal,\n extend,\n filters: options.filters,\n objectForEach,\n objectMap,\n parseHtmlFragment,\n parseJson,\n parseObjectLiteral,\n peekObservable: peek,\n range,\n registerEventHandler,\n setDomNodeChildrenFromArrayMapping,\n setHtml,\n setTextContent,\n toggleDomNodeCssClass,\n triggerEvent,\n unwrapObservable: unwrap\n};\nconst knockout = {\n // --- Utilities ---\n cleanNode,\n dependencyDetection,\n computedContext: dependencyDetection,\n filters: options.filters,\n ignoreDependencies: dependencyDetection.ignore,\n memoization,\n options,\n removeNode,\n selectExtensions,\n tasks,\n utils,\n LifeCycle,\n // -- Observable ---\n isObservable,\n isSubscribable,\n isWriteableObservable,\n isWritableObservable: isWriteableObservable,\n observable,\n observableArray,\n isObservableArray,\n peek,\n subscribable,\n unwrap,\n toJS,\n toJSON,\n proxy,\n // ... Computed ...\n computed,\n dependentObservable: computed,\n isComputed,\n isPureComputed,\n pureComputed,\n when,\n // --- Templates ---\n nativeTemplateEngine,\n renderTemplate,\n setTemplateEngine,\n templateEngine,\n templateSources: { domElement, anonymousTemplate },\n // --- Binding ---\n applyBindingAccessorsToNode,\n applyBindings,\n applyBindingsToDescendants,\n applyBindingsToNode,\n contextFor,\n dataFor,\n BindingHandler,\n AsyncBindingHandler,\n virtualElements,\n domNodeDisposal,\n bindingEvent\n};\nexport class Builder {\n constructor({ provider, bindings, extenders, filters, options: options2 }) {\n Object.assign(knockout.options, options2, { filters, bindingProviderInstance: provider });\n provider.setGlobals(knockout.options.bindingGlobals);\n if (Array.isArray(bindings)) {\n for (const bindingsObject of bindings) {\n provider.bindingHandlers.set(bindingsObject);\n }\n } else {\n provider.bindingHandlers.set(bindings);\n }\n this.providedProperties = {\n extenders: Object.assign(defaultExtenders, extenders),\n bindingHandlers: provider.bindingHandlers,\n bindingProvider: provider\n };\n }\n /**\n * @return {KnockoutInstance} An instance of Knockout.\n */\n create(...additionalProperties) {\n const instance = Object.assign(\n {\n get getBindingHandler() {\n return options.getBindingHandler;\n },\n set getBindingHandler(fn) {\n options.set(\"getBindingHandler\", fn);\n }\n },\n knockout,\n //never change the order of these\n this.providedProperties,\n ...additionalProperties\n );\n instance.options.knockoutInstance = instance;\n return instance;\n }\n}\n", "// @tko/provider \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { options } from \"@tko/utils\";\nexport default class BindingHandlerObject {\n set(nameOrObject, value) {\n if (typeof nameOrObject === \"string\") {\n this[nameOrObject] = value;\n } else if (typeof nameOrObject === \"object\") {\n if (value !== void 0) {\n options.onError(\n new Error(\n \"Given extraneous `value` parameter (first param should be a string, but it was an object).\" + nameOrObject\n )\n );\n }\n Object.assign(this, nameOrObject);\n } else {\n options.onError(new Error(\"Given a bad binding handler type: \" + nameOrObject));\n }\n }\n /**\n * The handler may have a `.` in it, e.g. `attr.title`, in which case the\n * handler is `attr`. Otherwise it's the name given\n */\n get(nameOrDotted) {\n const [name] = nameOrDotted.split(\".\");\n return this[name];\n }\n}\n", "// @tko/provider \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { objectMap } from \"@tko/utils\";\nimport { dependencyDetection } from \"@tko/observable\";\nimport BindingHandlerObject from \"./BindingHandlerObject\";\nexport default class Provider {\n constructor(params) {\n if (this.constructor === Provider) {\n throw new Error(\"Provider is an abstract base class.\");\n }\n if (!(\"FOR_NODE_TYPES\" in this)) {\n throw new Error(\"Providers must have FOR_NODE_TYPES property\");\n }\n this.bindingHandlers = params?.bindingHandlers || new BindingHandlerObject();\n this.globals = params?.globals || {};\n }\n get FOR_NODE_TYPES() {\n throw new Error(\"Providers must override FOR_NODE_TYPES property\");\n }\n setGlobals(globals) {\n this.globals = globals;\n }\n get preemptive() {\n return false;\n }\n nodeHasBindings(node, context) {\n return false;\n }\n getBindingAccessors(node, context) {\n return /* @__PURE__ */ Object.create(null);\n }\n /**\n * Preprocess a given node.\n * @param {Node} node\n * @returns {[Node]|null}\n */\n preprocessNode(node) {\n return [node];\n }\n postProcess() {\n }\n /** For legacy binding provider assignments to\n * ko.bindingProvider.instance = ... */\n get instance() {\n return this._overloadInstance || this;\n }\n set instance(provider) {\n if (!provider || provider === this) {\n this._overloadInstance = void 0;\n } else {\n this._overloadInstance = new LegacyProvider(provider, this);\n }\n }\n // Given a function that returns bindings, create and return a new object that contains\n // binding value-accessors functions. Each accessor function calls the original function\n // so that it always gets the latest value and all dependencies are captured. This is used\n // by ko.applyBindingsToNode and getBindingsAndMakeAccessors.\n makeAccessorsFromFunction(callback) {\n return objectMap(dependencyDetection.ignore(callback), (value, key) => () => callback()[key]);\n }\n // Returns the valueAccessor function for a binding value\n makeValueAccessor(value) {\n return () => value;\n }\n // Given a bindings function or object, create and return a new object that contains\n // binding value-accessors functions. This is used by ko.applyBindingsToNode.\n makeBindingAccessors(bindings, context, node) {\n if (typeof bindings === \"function\") {\n return this.makeAccessorsFromFunction(bindings.bind(null, context, node));\n } else {\n return objectMap(bindings, this.makeValueAccessor);\n }\n }\n}\nclass LegacyProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE, Node.TEXT_NODE, Node.COMMENT_NODE];\n }\n constructor(providerObject, parentProvider) {\n super();\n Object.assign(this, { providerObject });\n this.bindingHandlers = providerObject.bindingHandlers || parentProvider.bindingHandlers;\n }\n // This function is used if the binding provider doesn't include a getBindingAccessors function.\n // It must be called with 'this' set to the provider instance.\n getBindingsAndMakeAccessors(node, context) {\n const bindingsFn = this.providerObject.getBindings.bind(this.providerObject, node, context);\n return this.makeAccessorsFromFunction(bindingsFn);\n }\n getBindingAccessors(node, context) {\n return this.providerObject.getBindingAccessors ? this.providerObject.getBindingAccessors(node, context) : this.getBindingsAndMakeAccessors(node, context);\n }\n nodeHasBindings(node) {\n return this.providerObject.nodeHasBindings(node);\n }\n preprocessNode(node) {\n if (this.providerObject.preprocessNode) {\n return this.providerObject.preprocessNode(node);\n }\n return null;\n }\n}\n", "// @tko/provider.bindingstring \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { Parser, parseObjectLiteral } from \"@tko/utils.parser\";\nimport { Provider } from \"@tko/provider\";\nexport default class BindingStringProvider extends Provider {\n /** Call bindingHandler.preprocess on each respective binding string.\n *\n * The `preprocess` property of bindingHandler must be a static\n * function (i.e. on the object or constructor).\n */\n *processBinding(key, value) {\n const [handlerName, property] = key.split(\".\");\n const handler = this.bindingHandlers.get(handlerName);\n if (handler && handler.preprocess) {\n const bindingsAddedByHandler = new Array();\n const chainFn = (...args) => bindingsAddedByHandler.push(args);\n value = handler.preprocess(value, key, chainFn);\n for (const [key2, value2] of bindingsAddedByHandler) {\n yield* this.processBinding(key2, value2);\n }\n } else if (property) {\n value = `{${property}:${value}}`;\n }\n yield `'${handlerName}':${value}`;\n }\n *generateBindingString(bindingStringOrObjects) {\n const bindingObjectsArray = typeof bindingStringOrObjects === \"string\" ? parseObjectLiteral(bindingStringOrObjects) : bindingStringOrObjects;\n for (const { key, unknown, value } of bindingObjectsArray) {\n yield* this.processBinding(key || unknown, value);\n }\n }\n preProcessBindings(bindingStringOrObjects) {\n return Array.from(this.generateBindingString(bindingStringOrObjects)).join(\",\");\n }\n getBindingAccessors(node, context) {\n const bindingString = node && this.getBindingString(node);\n if (!bindingString) {\n return;\n }\n const processed = this.preProcessBindings(bindingString);\n return new Parser().parse(processed, context, this.globals, node);\n }\n getBindingString(node) {\n throw new Error(\"Overload getBindingString.\");\n }\n}\n", "// @tko/provider.virtual \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { virtualElements } from \"@tko/utils\";\nimport { BindingStringProvider } from \"@tko/provider.bindingstring\";\nexport default class VirtualProvider extends BindingStringProvider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE, Node.COMMENT_NODE];\n }\n /**\n * Convert <ko binding='...'> into <!-- ko binding: ... -->\n * @param {Node} node\n */\n preprocessNode(node) {\n if (node instanceof Element && node.tagName === \"KO\") {\n const parent = node.parentNode;\n const childNodes = [...node.childNodes];\n const virtualBindingString = [...this.genElementBindingStrings(node)].join(\",\");\n const openNode = document.createComment(\"ko \" + virtualBindingString);\n const closeNode = document.createComment(\"/ko\");\n parent?.insertBefore(openNode, node);\n for (const child of childNodes) {\n parent?.insertBefore(child, node);\n }\n parent?.insertBefore(closeNode, node);\n node.remove();\n return [openNode, ...childNodes, closeNode];\n }\n return null;\n }\n *genElementBindingStrings(node) {\n for (const { name, value } of node.attributes) {\n yield `${name.replace(/^ko-/, \"\")}: ${value}`;\n }\n }\n getBindingString(node) {\n if (node.nodeType === Node.COMMENT_NODE) {\n return virtualElements.virtualNodeBindingValue(node);\n }\n return null;\n }\n nodeHasBindings(node, context) {\n if (node.nodeType === Node.COMMENT_NODE) {\n return virtualElements.isStartComment(node);\n }\n return false;\n }\n}\n", "// @tko/provider.databind \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { BindingStringProvider } from \"@tko/provider.bindingstring\";\nexport default class DataBindProvider extends BindingStringProvider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE];\n }\n get BIND_ATTRIBUTE() {\n return \"data-bind\";\n }\n getBindingString(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return node.getAttribute(this.BIND_ATTRIBUTE);\n }\n return null;\n }\n nodeHasBindings(node, context) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return node.hasAttribute(this.BIND_ATTRIBUTE);\n }\n return false;\n }\n}\n", "// @tko/utils.component \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { subscribable, dependencyDetection } from \"@tko/observable\";\nimport { getObjectOwnProperty, tasks } from \"@tko/utils\";\nconst loadingSubscribablesCache = {}, loadedDefinitionsCache = {};\nfunction loadComponentAndNotify(componentName, callback) {\n let _subscribable = getObjectOwnProperty(loadingSubscribablesCache, componentName), completedAsync;\n if (!_subscribable) {\n _subscribable = loadingSubscribablesCache[componentName] = new subscribable();\n _subscribable.subscribe(callback);\n beginLoadingComponent(componentName, function(definition, config) {\n const isSynchronousComponent = !!(config && config.synchronous);\n loadedDefinitionsCache[componentName] = { definition, isSynchronousComponent };\n delete loadingSubscribablesCache[componentName];\n if (completedAsync || isSynchronousComponent) {\n _subscribable.notifySubscribers(definition);\n } else {\n tasks.schedule(function() {\n _subscribable.notifySubscribers(definition);\n });\n }\n });\n completedAsync = true;\n } else {\n _subscribable.subscribe(callback);\n }\n}\nfunction beginLoadingComponent(componentName, callback) {\n getFirstResultFromLoaders(\"getConfig\", [componentName], function(config) {\n if (config) {\n getFirstResultFromLoaders(\"loadComponent\", [componentName, config], function(definition) {\n callback(definition, config);\n });\n } else {\n callback(null, null);\n }\n });\n}\nfunction getFirstResultFromLoaders(methodName, argsExceptCallback, callback, candidateLoaders) {\n if (!candidateLoaders) {\n candidateLoaders = registry.loaders.slice(0);\n }\n const currentCandidateLoader = candidateLoaders.shift();\n if (currentCandidateLoader) {\n const methodInstance = currentCandidateLoader[methodName];\n if (methodInstance) {\n let wasAborted = false, synchronousReturnValue = methodInstance.apply(\n currentCandidateLoader,\n argsExceptCallback.concat(function(result) {\n if (wasAborted) {\n callback(null);\n } else if (result !== null) {\n callback(result);\n } else {\n getFirstResultFromLoaders(methodName, argsExceptCallback, callback, candidateLoaders);\n }\n })\n );\n if (synchronousReturnValue !== void 0) {\n wasAborted = true;\n if (!currentCandidateLoader.suppressLoaderExceptions) {\n throw new Error(\n \"Component loaders must supply values by invoking the callback, not by returning values synchronously.\"\n );\n }\n }\n } else {\n getFirstResultFromLoaders(methodName, argsExceptCallback, callback, candidateLoaders);\n }\n } else {\n callback(null);\n }\n}\nexport const registry = {\n get(componentName, callback) {\n const cachedDefinition = getObjectOwnProperty(loadedDefinitionsCache, componentName);\n if (cachedDefinition) {\n if (cachedDefinition.isSynchronousComponent) {\n dependencyDetection.ignore(function() {\n callback(cachedDefinition.definition);\n });\n } else {\n tasks.schedule(function() {\n callback(cachedDefinition.definition);\n });\n }\n } else {\n loadComponentAndNotify(componentName, callback);\n }\n },\n clearCachedDefinition(componentName) {\n delete loadedDefinitionsCache[componentName];\n },\n _getFirstResultFromLoaders: getFirstResultFromLoaders,\n loaders: new Array()\n};\n", "// @tko/utils.component \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport {\n isDomElement,\n isDocumentFragment,\n tagNameLower,\n parseHtmlFragment,\n makeArray,\n cloneNodes,\n hasOwnProperty\n} from \"@tko/utils\";\nimport { registry } from \"./registry\";\nexport const defaultConfigRegistry = {};\nexport const VIEW_MODEL_FACTORY = /* @__PURE__ */ Symbol(\"Knockout View Model ViewModel factory\");\nexport function register(componentName, config) {\n if (!config) {\n throw new Error(\"Invalid configuration for \" + componentName);\n }\n if (isRegistered(componentName)) {\n throw new Error(\"Component \" + componentName + \" is already registered\");\n }\n const ceok = componentName.includes(\"-\") && componentName.toLowerCase() === componentName;\n if (!config.ignoreCustomElementWarning && !ceok) {\n console.log(`\n\\u{1F94A} Knockout warning: components for custom elements must be lowercase and contain a dash. To ignore this warning, add to the 'config' of .register(componentName, config):\n\n ignoreCustomElementWarning: true\n `);\n }\n defaultConfigRegistry[componentName] = config;\n}\nexport function isRegistered(componentName) {\n return hasOwnProperty(defaultConfigRegistry, componentName);\n}\nexport function unregister(componentName) {\n delete defaultConfigRegistry[componentName];\n registry.clearCachedDefinition(componentName);\n}\nexport const defaultLoader = {\n getConfig(componentName, callback) {\n const result = hasOwnProperty(defaultConfigRegistry, componentName) ? defaultConfigRegistry[componentName] : null;\n callback(result);\n },\n loadComponent(componentName, config, callback) {\n const errorCallback = makeErrorCallback(componentName);\n possiblyGetConfigFromAmd(errorCallback, config, function(loadedConfig) {\n resolveConfig(componentName, errorCallback, loadedConfig, callback);\n });\n },\n loadTemplate(componentName, templateConfig, callback) {\n resolveTemplate(makeErrorCallback(componentName), templateConfig, callback);\n },\n loadViewModel(componentName, viewModelConfig, callback) {\n resolveViewModel(makeErrorCallback(componentName), viewModelConfig, callback);\n }\n};\nconst createViewModelKey = \"createViewModel\";\nfunction resolveConfig(componentName, errorCallback, config, callback) {\n const result = {}, tryIssueCallback = function() {\n if (--makeCallBackWhenZero === 0) {\n callback(result);\n }\n }, templateConfig = config[\"template\"], viewModelConfig = config[\"viewModel\"];\n let makeCallBackWhenZero = 2;\n if (templateConfig) {\n possiblyGetConfigFromAmd(errorCallback, templateConfig, function(loadedConfig) {\n registry._getFirstResultFromLoaders(\"loadTemplate\", [componentName, loadedConfig], function(resolvedTemplate) {\n result[\"template\"] = resolvedTemplate;\n tryIssueCallback();\n });\n });\n } else {\n tryIssueCallback();\n }\n if (viewModelConfig) {\n possiblyGetConfigFromAmd(errorCallback, viewModelConfig, function(loadedConfig) {\n registry._getFirstResultFromLoaders(\"loadViewModel\", [componentName, loadedConfig], function(resolvedViewModel) {\n result[createViewModelKey] = resolvedViewModel;\n tryIssueCallback();\n });\n });\n } else {\n tryIssueCallback();\n }\n}\nfunction resolveTemplate(errorCallback, templateConfig, callback) {\n if (typeof templateConfig === \"string\") {\n callback(parseHtmlFragment(templateConfig));\n } else if (templateConfig instanceof Array) {\n callback(templateConfig);\n } else if (isDocumentFragment(templateConfig)) {\n callback(makeArray(templateConfig.childNodes));\n } else if (templateConfig.element) {\n const element = templateConfig.element;\n if (isDomElement(element)) {\n callback(cloneNodesFromTemplateSourceElement(element));\n } else if (typeof element === \"string\") {\n const elemInstance = document.getElementById(element);\n if (elemInstance) {\n callback(cloneNodesFromTemplateSourceElement(elemInstance));\n } else {\n errorCallback(\"Cannot find element with ID \" + element);\n }\n } else {\n errorCallback(\"Unknown element type: \" + element);\n }\n } else if (templateConfig.elementName) {\n callback(templateConfig);\n } else {\n errorCallback(\"Unknown template value: \" + templateConfig);\n }\n}\nfunction resolveViewModel(errorCallback, viewModelConfig, callback) {\n if (viewModelConfig[VIEW_MODEL_FACTORY]) {\n callback((...args) => viewModelConfig[VIEW_MODEL_FACTORY](...args));\n } else if (typeof viewModelConfig === \"function\") {\n callback(function(params) {\n return new viewModelConfig(params);\n });\n } else if (typeof viewModelConfig[createViewModelKey] === \"function\") {\n callback(viewModelConfig[createViewModelKey]);\n } else if (\"instance\" in viewModelConfig) {\n const fixedInstance = viewModelConfig[\"instance\"];\n callback(function() {\n return fixedInstance;\n });\n } else if (\"viewModel\" in viewModelConfig) {\n resolveViewModel(errorCallback, viewModelConfig[\"viewModel\"], callback);\n } else {\n errorCallback(\"Unknown viewModel value: \" + viewModelConfig);\n }\n}\nfunction cloneNodesFromTemplateSourceElement(elemInstance) {\n switch (tagNameLower(elemInstance)) {\n case \"script\":\n return parseHtmlFragment(elemInstance.text);\n case \"textarea\":\n return parseHtmlFragment(elemInstance.value);\n case \"template\":\n if (isDocumentFragment(elemInstance.content)) {\n return cloneNodes(elemInstance.content.childNodes);\n }\n }\n return cloneNodes(elemInstance.childNodes);\n}\nfunction possiblyGetConfigFromAmd(errorCallback, config, callback) {\n if (typeof config.require === \"string\") {\n if (window.amdRequire || window.require) {\n ;\n (window.amdRequire || window.require)([config.require], callback);\n } else {\n errorCallback(\"Uses require, but no AMD loader is present\");\n }\n } else {\n callback(config);\n }\n}\nfunction makeErrorCallback(componentName) {\n return function(message) {\n throw new Error(\"Component '\" + componentName + \"': \" + message);\n };\n}\nregistry.loaders.push(defaultLoader);\n", "// @tko/utils.component \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { LifeCycle } from \"@tko/lifecycle\";\nimport { register, VIEW_MODEL_FACTORY } from \"./loaders\";\nexport class ComponentABC extends LifeCycle {\n /**\n * The tag name of the custom element. For example 'my-component'.\n * By default converts the class name from camel case to kebab case.\n * @return {string} The custom node name of this component.\n */\n static get customElementName() {\n return this.name.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n }\n /**\n * Overload this to return:\n * 1. A string of markup\n * 2. An array of DOM nodes\n * 3. A document fragment\n * 4. An AMD module (with `{require: 'some/template'}`)\n * @return {mixed} One of the accepted template types for the ComponentBinding.\n */\n static get template() {\n if (\"template\" in this.prototype) {\n return;\n }\n return { element: this.element };\n }\n /**\n * This is called by the default `template`. Overload this to return:\n * 1. The element ID\n * 2. A DOM node itself\n * @return {string|HTMLElement} either the element ID or actual element.\n */\n static get element() {\n throw new Error(\"[ComponentABC] `element` must be overloaded.\");\n }\n /**\n * @return {bool} True if the component shall load synchronously\n */\n static get sync() {\n return true;\n }\n /**\n * Construct a new instance of the model. When using ComponentABC as a\n * base class, we do pass in the $element and $componentTemplateNodes.\n * @param {Object} params\n * @param {{element: HTMLElement, templateNodes: [HTMLElement]}} componentInfo\n */\n static [VIEW_MODEL_FACTORY](params, componentInfo) {\n return new this(params, componentInfo);\n }\n static register(name = this.customElementName) {\n const viewModel = this;\n const { template } = this;\n const synchronous = this.sync;\n register(name, { viewModel, template, synchronous });\n }\n}\n", "// @tko/utils.component \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { registry } from \"./registry\";\nimport { ComponentABC } from \"./ComponentABC\";\nimport { register, isRegistered, unregister, defaultLoader, defaultConfigRegistry } from \"./loaders\";\nexport { ComponentABC };\nexport default {\n ComponentABC,\n // -- Registry --\n get: registry.get,\n clearCachedDefinition: registry.clearCachedDefinition,\n // -- Loader --\n register,\n isRegistered,\n unregister,\n defaultLoader,\n // \"Privately\" expose the underlying config registry for use in old-IE shim\n _allRegisteredComponents: defaultConfigRegistry,\n get loaders() {\n return registry.loaders;\n },\n set loaders(loaders) {\n registry.loaders = loaders;\n }\n};\n", "// @tko/provider.component \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { tagNameLower, objectMap } from \"@tko/utils\";\nimport registry from \"@tko/utils.component\";\nimport { unwrap, isWriteableObservable } from \"@tko/observable\";\nimport { computed } from \"@tko/computed\";\nimport { Provider } from \"@tko/provider\";\nimport { Parser } from \"@tko/utils.parser\";\nexport default class ComponentProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE];\n }\n /**\n * Convert <slot name='X'> to <!-- ko slot: 'X' --><!-- /ko -->\n * @param {Node} node\n */\n preprocessNode(node) {\n if (node instanceof Element && node.tagName === \"SLOT\") {\n const parent = node.parentNode;\n const slotName = node.getAttribute(\"name\") || \"\";\n const openNode = document.createComment(`ko slot: \"${slotName}\"`);\n const closeNode = document.createComment(\"/ko\");\n if (!parent) {\n throw Error(\"Missing parent node\");\n }\n parent.insertBefore(openNode, node);\n parent.insertBefore(closeNode, node);\n parent.removeChild(node);\n return [openNode, closeNode];\n }\n return null;\n }\n nodeHasBindings(node) {\n return Boolean(this.getComponentNameForNode(node));\n }\n getBindingAccessors(node, context) {\n const componentName = this.getComponentNameForNode(node);\n if (!componentName) {\n return /* @__PURE__ */ Object.create(null);\n }\n const component = () => ({ name: componentName, params: this.getComponentParams(node, context) });\n return { component };\n }\n getComponentNameForNode(node) {\n if (!(node instanceof Element) || node.nodeType !== Node.ELEMENT_NODE) {\n return null;\n }\n const tagName = tagNameLower(node);\n if (registry.isRegistered(tagName)) {\n const hasDash = tagName.includes(\"-\");\n const isUnknownEntity = \"\" + node === \"[object HTMLUnknownElement]\";\n if (hasDash || isUnknownEntity) {\n return tagName;\n }\n }\n return null;\n }\n getComponentParams(node, context) {\n if (!(node instanceof Element)) {\n return { $raw: {} };\n }\n const parser = new Parser(node, context, this.globals);\n const paramsString = (node.getAttribute(\"params\") || \"\").trim();\n const accessors = parser.parse(paramsString, context, void 0, node);\n if (!accessors || Object.keys(accessors).length === 0) {\n return { $raw: {} };\n }\n const $raw = objectMap(accessors, (value) => computed(value, null, { disposeWhenNodeIsRemoved: node }));\n const params = objectMap($raw, (v) => this.makeParamValue(node, v));\n return Object.assign({ $raw }, params);\n }\n makeParamValue(node, paramValueComputed) {\n const paramValue = paramValueComputed.peek();\n if (!paramValueComputed.isActive()) {\n return paramValue;\n }\n const isWriteable = isWriteableObservable(paramValue);\n return computed({\n read: () => unwrap(paramValueComputed()),\n write: isWriteable ? (v) => paramValueComputed()(v) : void 0,\n disposeWhenNodeIsRemoved: node\n });\n }\n}\n", "// @tko/provider.attr \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { Provider } from \"@tko/provider\";\nexport default class AttrProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE];\n }\n get PREFIX() {\n return \"ko-\";\n }\n getBindingAttributesList(node) {\n if (!(node instanceof Element)) {\n return [];\n }\n if (!node.hasAttributes()) {\n return [];\n }\n return Array.from(node.attributes).filter((attr) => attr.name.startsWith(this.PREFIX));\n }\n nodeHasBindings(node) {\n return this.getBindingAttributesList(node).length > 0;\n }\n getBindingAccessors(node, context) {\n return Object.assign({}, ...this.handlersFromAttributes(node, context));\n }\n *handlersFromAttributes(node, context) {\n for (const attr of this.getBindingAttributesList(node)) {\n const name = attr.name.substring(this.PREFIX.length);\n yield { [name]: () => this.getValue(attr.value, context, node) };\n }\n }\n getValue(token, $context, node) {\n if (!token) {\n return;\n }\n const $data = $context.$data;\n switch (token) {\n case \"$element\":\n return node;\n case \"$context\":\n return $context;\n case \"this\":\n case \"$data\":\n return $context.$data;\n }\n if ($data instanceof Object && token in $data) {\n return $data[token];\n }\n if (token in $context) {\n return $context[token];\n }\n if (token in this.globals) {\n return this.globals[token];\n }\n throw new Error(`The variable '${token} not found.`);\n }\n}\n", "// @tko/provider.multi \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { Provider } from \"@tko/provider\";\nexport default class MultiProvider extends Provider {\n get FOR_NODE_TYPES() {\n return this.nodeTypes;\n }\n constructor(params) {\n super(params);\n const providers = params?.providers || [];\n this.nodeTypeMap = {};\n this.nodeTypes = [];\n this.providers = [];\n providers.forEach((p) => this.addProvider(p));\n }\n setGlobals(globals) {\n ;\n [this, ...this.providers].forEach((p) => p.globals = globals);\n }\n addProvider(provider) {\n this.providers.push(provider);\n provider.bindingHandlers = this.bindingHandlers;\n provider.globals = this.globals;\n const nodeTypeMap = this.nodeTypeMap;\n for (const nodeType of provider.FOR_NODE_TYPES) {\n if (!nodeTypeMap[nodeType]) {\n nodeTypeMap[nodeType] = new Array();\n }\n nodeTypeMap[nodeType].push(provider);\n }\n this.nodeTypes = Object.keys(this.nodeTypeMap).map((k) => parseInt(k, 10));\n }\n providersFor(node) {\n return this.nodeTypeMap[node.nodeType] || [];\n }\n nodeHasBindings(node, context) {\n return this.providersFor(node).some((p) => p.nodeHasBindings(node));\n }\n preprocessNode(node) {\n for (const provider of this.providersFor(node)) {\n const newNodes = provider.preprocessNode(node);\n if (newNodes) {\n return newNodes;\n }\n }\n return null;\n }\n *enumerateProviderBindings(node, context) {\n for (const provider of this.providersFor(node)) {\n const bindings = provider.getBindingAccessors(node, context);\n if (!bindings) {\n continue;\n }\n yield* Object.entries(bindings || {});\n if (provider.preemptive) {\n return;\n }\n }\n }\n getBindingAccessors(node, context) {\n const bindings = {};\n for (const [key, accessor] of this.enumerateProviderBindings(node, context)) {\n if (key in bindings) {\n throw new Error(`The binding \"${key}\" is duplicated by multiple providers`);\n }\n bindings[key] = accessor;\n }\n return bindings;\n }\n}\n", "// @tko/provider.mustache \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { Parser } from \"@tko/utils.parser\";\nconst INNER_EXPRESSION = /^([\\s\\S]*)}}([\\s\\S]*?)\\{\\{([\\s\\S]*)$/;\nconst OUTER_EXPRESSION = /^([\\s\\S]*?)\\{\\{([\\s\\S]*)}}([\\s\\S]*)$/;\nconst BINDING_EXPRESSION = /^([^,\"'{}()/:[\\]\\s]+)\\s+([^\\s:].*)/;\nclass Interpolated {\n constructor(text) {\n this.text = text;\n }\n trim(string) {\n return string === null ? \"\" : string.trim();\n }\n}\nclass Expression extends Interpolated {\n asAttr(context, globals, node) {\n return new Parser().parseExpression(this.text, context, globals, node)();\n }\n *textNodeReplacement(textNode) {\n const text = this.trim(this.text);\n const ownerDocument = textNode ? textNode.ownerDocument : document;\n const firstChar = text[0];\n const lastChar = text[text.length - 1];\n let closeComment = true;\n let binding;\n if (firstChar === \"#\") {\n if (lastChar === \"/\") {\n binding = text.slice(1, -1);\n } else {\n binding = text.slice(1);\n closeComment = false;\n }\n const matches = binding.match(BINDING_EXPRESSION);\n if (matches) {\n binding = matches[1] + \":\" + matches[2];\n }\n } else if (firstChar === \"/\") {\n } else if (firstChar === \"{\" && lastChar === \"}\") {\n binding = \"html:\" + this.trim(text.slice(1, -1));\n } else {\n binding = \"text:\" + this.trim(text);\n }\n if (binding) {\n yield ownerDocument.createComment(\"ko \" + binding);\n }\n if (closeComment) {\n yield ownerDocument.createComment(\"/ko\");\n }\n }\n}\nclass Text extends Interpolated {\n asAttr() {\n return this.text;\n }\n *textNodeReplacement() {\n yield document.createTextNode(this.text.replace(/\"/g, '\\\\\"'));\n }\n}\nexport function* innerParse(text) {\n const innerMatch = text.match(INNER_EXPRESSION);\n if (innerMatch) {\n const [pre, inner, post] = innerMatch.slice(1);\n yield* innerParse(pre);\n yield new Text(inner);\n yield new Expression(post);\n } else {\n yield new Expression(text);\n }\n}\nexport function* parseOuterMatch(outerMatch) {\n if (!outerMatch) {\n return;\n }\n const [pre, inner, post] = outerMatch.slice(1);\n yield new Text(pre);\n yield* innerParse(inner);\n yield new Text(post);\n}\nexport function* parseInterpolation(text) {\n for (const textOrExpr of parseOuterMatch(text?.match(OUTER_EXPRESSION))) {\n if (textOrExpr.text) {\n yield textOrExpr;\n }\n }\n}\n", "// @tko/provider.mustache \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nimport { Provider } from \"@tko/provider\";\nimport { parseInterpolation } from \"./mustacheParser\";\nconst DEFAULT_ATTRIBUTE_BINDING_MAP = { value: \"value\", checked: \"checked\", class: \"css\" };\nexport default class AttributeMustacheProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE];\n }\n constructor(params = null) {\n super(params);\n this.ATTRIBUTES_TO_SKIP = new Set(params?.attributesToSkip || [\"data-bind\"]);\n this.ATTRIBUTES_BINDING_MAP = params?.attributesBindingMap || DEFAULT_ATTRIBUTE_BINDING_MAP;\n }\n *attributesToInterpolate(attributes) {\n for (const attr of Array.from(attributes)) {\n if (this.ATTRIBUTES_TO_SKIP.has(attr.name)) {\n continue;\n }\n if (attr.specified && attr.value.includes(\"{{\")) {\n yield attr;\n }\n }\n }\n nodeHasBindings(node) {\n if (!(node instanceof Element)) {\n return false;\n }\n return !this.attributesToInterpolate(node.attributes).next().done;\n }\n partsTogether(parts, context, node, ...valueToWrite) {\n if (parts.length > 1) {\n return parts.map(\n (p) => unwrap(p.asAttr(context, this.globals, node))\n ).join(\"\");\n }\n const part = parts[0].asAttr(context, this.globals);\n if (valueToWrite.length) {\n part(valueToWrite[0]);\n }\n return part;\n }\n attributeBinding(name, parts) {\n return [name, parts];\n }\n *bindingParts(node, context) {\n for (const attr of this.attributesToInterpolate(node.attributes)) {\n const parts = Array.from(parseInterpolation(attr.value));\n if (parts.length) {\n yield this.attributeBinding(attr.name, parts);\n }\n }\n }\n getPossibleDirectBinding(attrName) {\n const bindingName = this.ATTRIBUTES_BINDING_MAP[attrName];\n return bindingName && this.bindingHandlers.get(attrName);\n }\n *bindingObjects(node, context) {\n for (const [attrName, parts] of this.bindingParts(node, context)) {\n const bindingForAttribute = this.getPossibleDirectBinding(attrName);\n const handler = bindingForAttribute ? attrName : `attr.${attrName}`;\n const accessorFn = bindingForAttribute ? (...v) => this.partsTogether(parts, context, node, ...v) : (...v) => ({ [attrName]: this.partsTogether(parts, context, node, ...v) });\n node.removeAttribute(attrName);\n yield { [handler]: accessorFn };\n }\n }\n getBindingAccessors(node, context) {\n if (!(node instanceof Element)) {\n return false;\n }\n if (context === void 0) context = {};\n return Object.assign({}, ...this.bindingObjects(node, context));\n }\n}\n", "// @tko/provider.mustache \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { Provider } from \"@tko/provider\";\nimport { parseInterpolation } from \"./mustacheParser\";\nexport default class TextMustacheProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.TEXT_NODE];\n }\n *textToNodes(textNode) {\n const parent = textNode.parentNode;\n const isTextarea = parent && parent.nodeName === \"TEXTAREA\";\n const hasStash = textNode.nodeValue && textNode.nodeValue.includes(\"{{\");\n if (!hasStash || isTextarea) {\n return;\n }\n for (const part of parseInterpolation(textNode.nodeValue)) {\n yield* part.textNodeReplacement(textNode);\n }\n }\n textInterpolation(textNode) {\n const newNodes = Array.from(this.textToNodes(textNode));\n if (newNodes.length === 0) {\n return null;\n }\n if (textNode.parentNode) {\n const parent = textNode.parentNode;\n const n = newNodes.length;\n for (let i = 0; i < n; ++i) {\n parent.insertBefore(newNodes[i], textNode);\n }\n parent.removeChild(textNode);\n }\n return newNodes;\n }\n /**\n * We convert as follows:\n *\n * {{# ... }} into <!-- ko ... -->\n * {{/ ... }} into <!-- /ko -->\n * {{# ... /}} into <!-- ko ... --><!-- /ko -->\n * {{ ... }} into <!-- ko text: ... --><!-- /ko -->\n * {{{ ... }}} into <!-- ko html: ... --><!-- /ko -->\n *\n * VirtualProvider can then pick up and do the actual binding.\n */\n preprocessNode(node) {\n return this.textInterpolation(node);\n }\n}\n", "// @tko/provider.native \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { isObservable } from \"@tko/observable\";\nimport { Provider } from \"@tko/provider\";\nexport const NATIVE_BINDINGS = /* @__PURE__ */ Symbol(\"Knockout native bindings\");\nexport default class NativeProvider extends Provider {\n get FOR_NODE_TYPES() {\n return [Node.ELEMENT_NODE, Node.TEXT_NODE];\n }\n get preemptive() {\n return true;\n }\n nodeHasBindings(node, context) {\n if (!node[NATIVE_BINDINGS]) {\n return false;\n }\n return Object.keys(node[NATIVE_BINDINGS] || {}).some((key) => key.startsWith(\"ko-\"));\n }\n /**\n * There can be only one preprocessor; when there are native bindings,\n * prevent re-entrance (and likely XSS) from the `{{ }}` provider.\n */\n preprocessNode(node) {\n return node[NATIVE_BINDINGS] ? [node] : null;\n }\n onlyBindings([name]) {\n return name.startsWith(\"ko-\");\n }\n valueAsAccessor([name, value]) {\n const bindingName = name.replace(/^ko-/, \"\");\n const valueFn = isObservable(value) ? value : () => value;\n return { [bindingName]: valueFn };\n }\n /**\n * Return as valueAccessor function all the entries matching `ko-*`\n * @param {Node} node\n */\n getBindingAccessors(node, context) {\n const bindings = Object.entries(node[NATIVE_BINDINGS] || {}).filter(this.onlyBindings);\n if (!bindings.length) {\n return null;\n }\n return Object.assign({}, ...bindings.map(this.valueAsAccessor));\n }\n /**\n * Add a named-value to the given node.\n * @param {Node} node\n * @param {string} name\n * @param {any} value\n */\n static addValueToNode(node, name, value) {\n const obj = node[NATIVE_BINDINGS] || (node[NATIVE_BINDINGS] = {});\n obj[name] = value;\n }\n /**\n *\n * @param {Node} node\n * @return {object} the stored values\n */\n static getNodeValues(node) {\n return node[NATIVE_BINDINGS];\n }\n}\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { objectForEach } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nexport const attr = {\n update: function(element, valueAccessor, _allBindings) {\n const value = unwrap(valueAccessor()) || {};\n objectForEach(value, function(attrName, attrValue) {\n attrValue = unwrap(attrValue);\n const prefixLen = attrName.indexOf(\":\");\n const namespace = prefixLen > 0 && element.lookupNamespaceURI(attrName.substr(0, prefixLen));\n const toRemove = attrValue === false || attrValue === null || attrValue === void 0;\n if (toRemove) {\n if (namespace) {\n element.removeAttributeNS(namespace, attrName);\n } else {\n element.removeAttribute(attrName);\n }\n } else {\n attrValue = attrValue.toString();\n if (namespace) {\n element.setAttributeNS(namespace, attrName, attrValue);\n } else {\n element.setAttribute(attrName, attrValue);\n }\n }\n if (attrName === \"name\") {\n element.name = toRemove ? \"\" : attrValue;\n }\n });\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { registerEventHandler, arrayIndexOf, addOrRemoveItem } from \"@tko/utils\";\nimport { unwrap, dependencyDetection, isWriteableObservable } from \"@tko/observable\";\nimport { computed, pureComputed } from \"@tko/computed\";\nexport const checked = {\n after: [\"value\", \"attr\"],\n init: function(element, valueAccessor, allBindings) {\n const checkedValue2 = pureComputed(function() {\n if (allBindings.has(\"checkedValue\")) {\n return unwrap(allBindings.get(\"checkedValue\"));\n } else if (useElementValue) {\n if (allBindings.has(\"value\")) {\n return unwrap(allBindings.get(\"value\"));\n } else {\n return element.value;\n }\n }\n });\n function updateModel() {\n let isChecked = element.checked, elemValue = checkedValue2();\n if (dependencyDetection.isInitial()) {\n return;\n }\n if (!isChecked && (isRadio || dependencyDetection.getDependenciesCount())) {\n return;\n }\n const modelValue = dependencyDetection.ignore(valueAccessor);\n if (valueIsArray) {\n const writableValue = rawValueIsNonArrayObservable ? modelValue.peek() : modelValue, saveOldValue = oldElemValue;\n oldElemValue = elemValue;\n if (saveOldValue !== elemValue) {\n if (isChecked) {\n addOrRemoveItem(writableValue, elemValue, true);\n addOrRemoveItem(writableValue, saveOldValue, false);\n }\n oldElemValue = elemValue;\n } else {\n addOrRemoveItem(writableValue, elemValue, isChecked);\n }\n if (rawValueIsNonArrayObservable && isWriteableObservable(modelValue)) {\n modelValue(writableValue);\n }\n } else {\n if (isCheckbox) {\n if (elemValue === void 0) {\n elemValue = isChecked;\n } else if (!isChecked) {\n elemValue = void 0;\n }\n }\n const modelValue2 = valueAccessor(elemValue, { onlyIfChanged: true });\n if (isWriteableObservable(modelValue2) && modelValue2.peek() !== elemValue) {\n modelValue2(elemValue);\n }\n }\n }\n function updateView() {\n const modelValue = unwrap(valueAccessor());\n const elemValue = checkedValue2();\n if (valueIsArray) {\n element.checked = arrayIndexOf(modelValue, elemValue) >= 0;\n oldElemValue = elemValue;\n } else if (isCheckbox && elemValue === void 0) {\n element.checked = !!modelValue;\n } else {\n element.checked = checkedValue2() === modelValue;\n }\n }\n const isCheckbox = element.type == \"checkbox\", isRadio = element.type == \"radio\";\n if (!isCheckbox && !isRadio) {\n return;\n }\n let rawValue = valueAccessor(), valueIsArray = isCheckbox && unwrap(rawValue) instanceof Array, rawValueIsNonArrayObservable = !(valueIsArray && rawValue.push && rawValue.splice), useElementValue = isRadio || valueIsArray, oldElemValue = valueIsArray ? checkedValue2() : void 0;\n computed(updateModel, null, { disposeWhenNodeIsRemoved: element });\n registerEventHandler(element, \"click\", updateModel);\n computed(updateView, null, { disposeWhenNodeIsRemoved: element });\n rawValue = void 0;\n }\n};\nexport const checkedValue = {\n update: function(element, valueAccessor) {\n element.value = unwrap(valueAccessor());\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport {\n objectForEach,\n registerEventHandler,\n throttle as throttleFn,\n debounce as debounceFn\n} from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nexport function makeEventHandlerShortcut(eventName) {\n return {\n init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {\n const newValueAccessor = function() {\n const result = {};\n result[eventName] = valueAccessor();\n return result;\n };\n eventHandler.init.call(this, element, newValueAccessor, allBindings, viewModel, bindingContext);\n }\n };\n}\nfunction makeDescriptor(handlerOrObject) {\n return typeof handlerOrObject === \"function\" ? { handler: handlerOrObject } : handlerOrObject || {};\n}\nexport const eventHandler = {\n init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {\n const eventsToHandle = valueAccessor() || {};\n objectForEach(eventsToHandle, function(eventName, descriptor) {\n const { passive, capture, once, debounce, throttle } = makeDescriptor(descriptor);\n const eventOptions = (capture || passive || once) && { capture, passive, once };\n let eventHandlerFn = (event, ...more) => {\n let handlerReturnValue;\n const { handler, passive: passive2, bubble, preventDefault } = makeDescriptor(valueAccessor()[eventName]);\n try {\n if (handler) {\n const possiblyUpdatedViewModel = bindingContext.$data;\n const argsForHandler = [possiblyUpdatedViewModel, event, ...more];\n handlerReturnValue = handler.apply(possiblyUpdatedViewModel, argsForHandler);\n }\n } finally {\n if (preventDefault !== void 0) {\n if (unwrap(preventDefault)) {\n event.preventDefault();\n }\n } else if (handlerReturnValue !== true) {\n if (!passive2) {\n event.preventDefault();\n }\n }\n }\n const bubbleMark = allBindings.get(eventName + \"Bubble\") !== false;\n if (bubble === false || !bubbleMark) {\n event.cancelBubble = true;\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n }\n };\n if (debounce) {\n eventHandlerFn = debounceFn(eventHandlerFn, debounce);\n }\n if (throttle) {\n eventHandlerFn = throttleFn(eventHandlerFn, throttle);\n }\n registerEventHandler(element, eventName, eventHandlerFn, eventOptions || false);\n });\n }\n};\nexport const onHandler = {\n init: eventHandler.init,\n preprocess: function(value, key, addBinding) {\n addBinding(key.replace(\"on.\", \"\"), \"=>\" + value);\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { makeEventHandlerShortcut } from \"./event\";\nexport const click = makeEventHandlerShortcut(\"click\");\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { createSymbolOrString, toggleDomNodeCssClass, objectForEach, stringTrim } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nexport const css = {\n aliases: [\"class\"],\n update: function(element, valueAccessor) {\n let value = unwrap(valueAccessor());\n if (value !== null && typeof value === \"object\") {\n objectForEach(value, function(className, shouldHaveClass) {\n shouldHaveClass = unwrap(shouldHaveClass);\n toggleDomNodeCssClass(element, className, shouldHaveClass);\n });\n } else {\n value = stringTrim(String(value || \"\"));\n toggleDomNodeCssClass(element, element[css.classesWrittenByBindingKey], false);\n element[css.classesWrittenByBindingKey] = value;\n toggleDomNodeCssClass(element, value, true);\n }\n },\n classesWrittenByBindingKey: createSymbolOrString(\"__ko__cssValue\")\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { BindingHandler } from \"@tko/bind\";\nexport default class DescendantsCompleteHandler extends BindingHandler {\n onDescendantsComplete() {\n if (typeof this.value === \"function\") {\n this.value(this.$element);\n }\n }\n static get allowVirtualElements() {\n return true;\n }\n}\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nexport const enable = {\n update: function(element, valueAccessor) {\n const value = unwrap(valueAccessor());\n if (value && element.disabled) {\n element.removeAttribute(\"disabled\");\n } else if (!value && !element.disabled) {\n element.disabled = true;\n }\n }\n};\nexport const disable = {\n update: function(element, valueAccessor) {\n enable.update(element, function() {\n return !unwrap(valueAccessor());\n });\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { createSymbolOrString, triggerEvent, registerEventHandler } from \"@tko/utils\";\nimport { unwrap, dependencyDetection, isWriteableObservable } from \"@tko/observable\";\nconst hasfocusUpdatingProperty = createSymbolOrString(\"__ko_hasfocusUpdating\");\nconst hasfocusLastValue = createSymbolOrString(\"__ko_hasfocusLastValue\");\nexport const hasfocus = {\n init: function(element, valueAccessor, _allBindings) {\n const handleElementFocusChange = function(isFocused) {\n element[hasfocusUpdatingProperty] = true;\n const ownerDoc = element.ownerDocument;\n if (\"activeElement\" in ownerDoc) {\n let active;\n try {\n active = ownerDoc.activeElement;\n } catch (e) {\n active = ownerDoc.body;\n }\n isFocused = active === element;\n }\n const modelValue = valueAccessor(isFocused, { onlyIfChanged: true });\n if (isWriteableObservable(modelValue) && modelValue.peek() !== isFocused) {\n modelValue(isFocused);\n }\n element[hasfocusLastValue] = isFocused;\n element[hasfocusUpdatingProperty] = false;\n };\n const handleElementFocusIn = handleElementFocusChange.bind(null, true);\n const handleElementFocusOut = handleElementFocusChange.bind(null, false);\n registerEventHandler(element, \"focus\", handleElementFocusIn);\n registerEventHandler(element, \"focusin\", handleElementFocusIn);\n registerEventHandler(element, \"blur\", handleElementFocusOut);\n registerEventHandler(element, \"focusout\", handleElementFocusOut);\n },\n update: function(element, valueAccessor) {\n const value = !!unwrap(valueAccessor());\n if (!element[hasfocusUpdatingProperty] && element[hasfocusLastValue] !== value) {\n if (value) {\n element.focus();\n } else {\n element.blur();\n }\n if (!value && element[hasfocusLastValue]) {\n element.ownerDocument.body.focus();\n }\n dependencyDetection.ignore(triggerEvent, null, [element, value ? \"focusin\" : \"focusout\"]);\n }\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { setHtml } from \"@tko/utils\";\nexport const html = {\n init: function() {\n return { controlsDescendantBindings: true };\n },\n //\n // Modify internal, per ko.punches and :\n // http://stackoverflow.com/a/15348139\n update: function(element, valueAccessor) {\n setHtml(element, valueAccessor());\n },\n allowVirtualElements: true\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { applyBindingsToDescendants } from \"@tko/bind\";\nexport default {\n init: function(element, valueAccessor, _allBindings, _viewModel, bindingContext) {\n const innerContext = bindingContext[\"extend\"](valueAccessor);\n applyBindingsToDescendants(innerContext, element);\n return { controlsDescendantBindings: true };\n },\n allowVirtualElements: true\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport {\n tagNameLower,\n arrayFilter,\n arrayMap,\n setTextContent,\n arrayIndexOf,\n setOptionNodeSelectionState,\n triggerEvent,\n selectExtensions\n} from \"@tko/utils\";\nimport { unwrap, dependencyDetection } from \"@tko/observable\";\nimport { setDomNodeChildrenFromArrayMapping } from \"@tko/bind\";\nconst captionPlaceholder = {};\nexport const options = {\n init: function(element) {\n if (tagNameLower(element) !== \"select\") {\n throw new Error(\"options binding applies only to SELECT elements\");\n }\n while (element.length > 0) {\n element.remove(0);\n }\n return { controlsDescendantBindings: true };\n },\n update: function(element, valueAccessor, allBindings) {\n function selectedOptions() {\n return arrayFilter(element.options, function(node) {\n return node.selected;\n });\n }\n let selectWasPreviouslyEmpty = element.length == 0, multiple = element.multiple, previousScrollTop = !selectWasPreviouslyEmpty && multiple ? element.scrollTop : null, unwrappedArray = unwrap(valueAccessor()), valueAllowUnset = allBindings.get(\"valueAllowUnset\") && allBindings[\"has\"](\"value\"), includeDestroyed = allBindings.get(\"optionsIncludeDestroyed\"), arrayToDomNodeChildrenOptions = {}, captionValue, filteredArray, previousSelectedValues = new Array();\n if (!valueAllowUnset) {\n if (multiple) {\n previousSelectedValues = arrayMap(selectedOptions(), selectExtensions.readValue);\n } else if (element.selectedIndex >= 0) {\n previousSelectedValues.push(selectExtensions.readValue(element.options[element.selectedIndex]));\n }\n }\n if (unwrappedArray) {\n if (typeof unwrappedArray.length === \"undefined\") {\n unwrappedArray = [unwrappedArray];\n }\n filteredArray = arrayFilter(unwrappedArray, function(item) {\n return includeDestroyed || item === void 0 || item === null || !unwrap(item[\"_destroy\"]);\n });\n if (allBindings[\"has\"](\"optionsCaption\")) {\n captionValue = unwrap(allBindings.get(\"optionsCaption\"));\n if (captionValue !== null && captionValue !== void 0) {\n filteredArray.unshift(captionPlaceholder);\n }\n }\n } else {\n }\n function applyToObject(object, predicate, defaultValue) {\n const predicateType = typeof predicate;\n if (predicateType === \"function\") {\n return predicate(object);\n } else if (predicateType == \"string\") {\n return object[predicate];\n } else {\n return defaultValue;\n }\n }\n let itemUpdate = false;\n function optionForArrayItem(arrayEntry, index, oldOptions) {\n if (oldOptions.length) {\n previousSelectedValues = !valueAllowUnset && oldOptions[0].selected ? [selectExtensions.readValue(oldOptions[0])] : [];\n itemUpdate = true;\n }\n const option = element.ownerDocument.createElement(\"option\");\n if (arrayEntry === captionPlaceholder) {\n setTextContent(option, allBindings.get(\"optionsCaption\"));\n selectExtensions.writeValue(option, void 0);\n } else {\n const optionValue = applyToObject(arrayEntry, allBindings.get(\"optionsValue\"), arrayEntry);\n selectExtensions.writeValue(option, unwrap(optionValue));\n const optionText = applyToObject(arrayEntry, allBindings.get(\"optionsText\"), optionValue);\n setTextContent(option, optionText);\n }\n return [option];\n }\n arrayToDomNodeChildrenOptions[\"beforeRemove\"] = function(option) {\n element.removeChild(option);\n };\n function setSelectionCallback(arrayEntry, newOptions) {\n if (itemUpdate && valueAllowUnset) {\n selectExtensions.writeValue(\n element,\n unwrap(allBindings.get(\"value\")),\n true\n /* allowUnset */\n );\n } else if (previousSelectedValues.length) {\n const isSelected = arrayIndexOf(previousSelectedValues, selectExtensions.readValue(newOptions[0])) >= 0;\n setOptionNodeSelectionState(newOptions[0], isSelected);\n if (itemUpdate && !isSelected) {\n dependencyDetection.ignore(triggerEvent, null, [element, \"change\"]);\n }\n }\n }\n let callback = setSelectionCallback;\n if (allBindings[\"has\"](\"optionsAfterRender\") && typeof allBindings.get(\"optionsAfterRender\") === \"function\") {\n callback = function(arrayEntry, newOptions) {\n setSelectionCallback(arrayEntry, newOptions);\n dependencyDetection.ignore(allBindings.get(\"optionsAfterRender\"), null, [\n newOptions[0],\n arrayEntry !== captionPlaceholder ? arrayEntry : void 0\n ]);\n };\n }\n setDomNodeChildrenFromArrayMapping(\n element,\n filteredArray,\n optionForArrayItem,\n arrayToDomNodeChildrenOptions,\n callback\n );\n dependencyDetection.ignore(function() {\n if (valueAllowUnset) {\n selectExtensions.writeValue(\n element,\n unwrap(allBindings.get(\"value\")),\n true\n /* allowUnset */\n );\n } else {\n let selectionChanged;\n if (multiple) {\n selectionChanged = previousSelectedValues.length && selectedOptions().length < previousSelectedValues.length;\n } else {\n selectionChanged = previousSelectedValues.length && element.selectedIndex >= 0 ? selectExtensions.readValue(element.options[element.selectedIndex]) !== previousSelectedValues[0] : previousSelectedValues.length || element.selectedIndex >= 0;\n }\n if (selectionChanged) {\n triggerEvent(element, \"change\");\n }\n }\n });\n if (previousScrollTop && Math.abs(previousScrollTop - element.scrollTop) > 20) {\n element.scrollTop = previousScrollTop;\n }\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport {\n arrayForEach,\n setOptionNodeSelectionState,\n arrayIndexOf,\n registerEventHandler,\n tagNameLower,\n selectExtensions\n} from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nexport const selectedOptions = {\n after: [\"options\", \"foreach\"],\n init: function(element, valueAccessor, _allBindings) {\n registerEventHandler(element, \"change\", function() {\n const value = valueAccessor(), valueToWrite = new Array();\n arrayForEach(element.getElementsByTagName(\"option\"), function(node) {\n if (node.selected) {\n valueToWrite.push(selectExtensions.readValue(node));\n }\n });\n valueAccessor(valueToWrite);\n });\n },\n update: function(element, valueAccessor) {\n if (tagNameLower(element) != \"select\") {\n throw new Error(\"values binding applies only to SELECT elements\");\n }\n const newValue = unwrap(valueAccessor()), previousScrollTop = element.scrollTop;\n if (newValue && typeof newValue.length === \"number\") {\n arrayForEach(element.getElementsByTagName(\"option\"), function(node) {\n const isSelected = arrayIndexOf(newValue, selectExtensions.readValue(node)) >= 0;\n if (node.selected != isSelected) {\n setOptionNodeSelectionState(node, isSelected);\n }\n });\n }\n element.scrollTop = previousScrollTop;\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { objectForEach, options } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nexport const style = {\n update: function(element, valueAccessor) {\n const value = unwrap(valueAccessor() || {});\n objectForEach(value, function(styleName, styleValue) {\n styleValue = unwrap(styleValue);\n if (styleValue === null || styleValue === void 0 || styleValue === false) {\n styleValue = \"\";\n }\n if (options.jQuery) {\n jQuery(element).css(styleName, styleValue);\n } else {\n styleName = styleName.replace(/-(\\w)/g, (all, letter) => letter.toUpperCase());\n const previousStyle = element.style[styleName];\n element.style[styleName] = styleValue;\n if (styleValue !== previousStyle && element.style[styleName] === previousStyle && !isNaN(styleValue)) {\n element.style[styleName] = styleValue + \"px\";\n }\n }\n });\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { registerEventHandler } from \"@tko/utils\";\nexport const submit = {\n init: function(element, valueAccessor, _allBindings, _viewModel, bindingContext) {\n if (typeof valueAccessor() !== \"function\") {\n throw new Error(\"The value for a submit binding must be a function\");\n }\n registerEventHandler(element, \"submit\", function(event) {\n let handlerReturnValue;\n const value = valueAccessor();\n try {\n handlerReturnValue = value.call(bindingContext[\"$data\"], element);\n } finally {\n if (handlerReturnValue !== true) {\n if (event.preventDefault) {\n event.preventDefault();\n } else {\n event.returnValue = false;\n }\n }\n }\n });\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { setTextContent } from \"@tko/utils\";\nexport const text = {\n init: function() {\n return { controlsDescendantBindings: true };\n },\n update: function(element, valueAccessor) {\n setTextContent(element, valueAccessor());\n },\n allowVirtualElements: true\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { safeSetTimeout, options, arrayForEach } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nimport { BindingHandler } from \"@tko/bind\";\nexport const MSIE_REGEX = /MSIE ([^ ;]+)|rv:([^ )]+)/;\nlet operaVersion, safariVersion, firefoxVersion, ieVersion;\nclass TextInput extends BindingHandler {\n get aliases() {\n return \"textinput\";\n }\n constructor(...args) {\n super(...args);\n this.previousElementValue = this.$element.value;\n if (options.debug && this.constructor._forceUpdateOn) {\n arrayForEach(this.constructor._forceUpdateOn, (eventName) => {\n if (eventName.slice(0, 5) === \"after\") {\n this.addEventListener(eventName.slice(5), \"deferUpdateModel\");\n } else {\n this.addEventListener(eventName, \"updateModel\");\n }\n });\n }\n for (const eventName of this.eventsIndicatingSyncValueChange()) {\n this.addEventListener(eventName, \"updateModel\");\n }\n for (const eventName of this.eventsIndicatingDeferValueChange()) {\n this.addEventListener(eventName, \"deferUpdateModel\");\n }\n this.computed(\"updateView\");\n }\n eventsIndicatingSyncValueChange() {\n return [\"input\", \"change\", \"blur\"];\n }\n eventsIndicatingDeferValueChange() {\n return [];\n }\n updateModel(event) {\n const element = this.$element;\n clearTimeout(this.timeoutHandle);\n this.elementValueBeforeEvent = this.timeoutHandle = void 0;\n const elementValue = element.value;\n if (this.previousElementValue !== elementValue) {\n if (options.debug && event) {\n ;\n element._ko_textInputProcessedEvent = event.type;\n }\n this.previousElementValue = elementValue;\n this.value = elementValue;\n }\n }\n deferUpdateModel(event) {\n const element = this.$element;\n if (!this.timeoutHandle) {\n this.elementValueBeforeEvent = element.value;\n const handler = options.debug ? this.updateModel.bind(this, { type: event.type }) : this.updateModel;\n this.timeoutHandle = safeSetTimeout(handler, 4);\n }\n }\n updateView() {\n let modelValue = unwrap(this.value);\n if (modelValue === null || modelValue === void 0) {\n modelValue = \"\";\n }\n if (this.elementValueBeforeEvent !== void 0 && modelValue === this.elementValueBeforeEvent) {\n setTimeout(this.updateView.bind(this), 4);\n } else if (this.$element.value !== modelValue) {\n this.previousElementValue = modelValue;\n this.$element.value = modelValue;\n this.previousElementValue = this.$element.value;\n }\n }\n}\nclass TextInputIE extends TextInput {\n eventsIndicatingSyncValueChange() {\n return [...super.eventsIndicatingSyncValueChange(), \"keypress\"];\n }\n}\nclass TextInputLegacySafari extends TextInput {\n eventsIndicatingDeferValueChange() {\n return [\"keydown\", \"paste\", \"cut\"];\n }\n}\nclass TextInputLegacyOpera extends TextInput {\n eventsIndicatingDeferValueChange() {\n return [\"keydown\"];\n }\n}\nclass TextInputLegacyFirefox extends TextInput {\n eventsIndicatingValueChange() {\n return [\n ...super.eventsIndicatingSyncValueChange(),\n // Firefox <= 3.6 doesn't fire the 'input' event when text is filled in through autocomplete\n \"DOMAutoComplete\",\n // Firefox <=3.5 doesn't fire the 'input' event when text is dropped into the input.\n \"dragdrop\",\n // < 3.5\n \"drop\"\n // 3.5\n ];\n }\n}\nconst w = options.global;\nif (w.navigator) {\n const parseVersion = (matches) => matches && parseFloat(matches[1]);\n const userAgent = w.navigator.userAgent;\n const isChrome = userAgent.match(/Chrome\\/([^ ]+)/);\n if (!isChrome) {\n operaVersion = w.opera && w.opera.version && parseInt(w.opera.version());\n safariVersion = parseVersion(userAgent.match(/Version\\/([^ ]+) Safari/));\n firefoxVersion = parseVersion(userAgent.match(/Firefox\\/([^ ]*)/));\n const ieMatch = userAgent.match(MSIE_REGEX);\n ieVersion = ieMatch && (parseFloat(ieMatch[1]) || parseFloat(ieMatch[2]));\n }\n}\nexport const textInput = ieVersion && ieVersion <= 11 ? TextInputIE : safariVersion && safariVersion < 5 ? TextInputLegacySafari : operaVersion && operaVersion < 11 ? TextInputLegacyOpera : firefoxVersion && firefoxVersion < 4 ? TextInputLegacyFirefox : TextInput;\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nexport const uniqueName = {\n init: function(element, valueAccessor) {\n if (valueAccessor()) {\n const name = \"ko_unique_\" + ++uniqueName.currentIndex;\n element.name = name;\n }\n },\n currentIndex: 0\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { stringStartsWith, safeSetTimeout, tagNameLower, arrayForEach, selectExtensions } from \"@tko/utils\";\nimport { unwrap, dependencyDetection } from \"@tko/observable\";\nimport { applyBindingAccessorsToNode, BindingHandler } from \"@tko/bind\";\nimport { MSIE_REGEX } from \"./textInput\";\nexport class value extends BindingHandler {\n static get after() {\n return [\"options\", \"foreach\", \"template\"];\n }\n constructor(...args) {\n super(...args);\n if (this.isCheckboxOrRadio) {\n applyBindingAccessorsToNode(this.$element, { checkedValue: this.valueAccessor });\n return;\n }\n this.propertyChangedFired = false;\n this.elementValueBeforeEvent = null;\n if (this.ieAutoCompleteHackNeeded) {\n this.addEventListener(\"propertyChange\", () => this.propertyChangedFired = true);\n this.addEventListener(\"focus\", () => this.propertyChangedFired = false);\n this.addEventListener(\"blur\", () => this.propertyChangeFired && this.valueUpdateHandler());\n }\n arrayForEach(this.eventsToCatch, (eventName) => this.registerEvent(eventName));\n if (this.isInput && this.$element.type === \"file\") {\n this.updateFromModel = this.updateFromModelForFile;\n } else {\n this.updateFromModel = this.updateFromModelForValue;\n }\n this.computed(\"updateFromModel\");\n }\n get eventsToCatch() {\n const requestedEventsToCatch = this.allBindings.get(\"valueUpdate\");\n const requestedEventsArray = typeof requestedEventsToCatch === \"string\" ? [requestedEventsToCatch] : requestedEventsToCatch || [];\n return [.../* @__PURE__ */ new Set([\"change\", ...requestedEventsArray])];\n }\n get isInput() {\n return tagNameLower(this.$element) === \"input\";\n }\n get isCheckboxOrRadio() {\n const e = this.$element;\n return this.isInput && (e.type == \"checkbox\" || e.type == \"radio\");\n }\n // Workaround for https://github.com/SteveSanderson/knockout/issues/122\n // IE doesn't fire \"change\" events on textboxes if the user selects a value from its autocomplete list\n get ieAutoCompleteHackNeeded() {\n return this.isInput && this.$element.type == \"text\" && this.$element.autocomplete != \"off\" && (!this.$element.form || this.$element.form.autocomplete != \"off\") && MSIE_REGEX.test(window.navigator.userAgent);\n }\n valueUpdateHandler() {\n this.elementValueBeforeEvent = null;\n this.propertyChangedFired = false;\n this.value = selectExtensions.readValue(this.$element);\n }\n registerEvent(eventName) {\n let handler = this.valueUpdateHandler.bind(this);\n if (stringStartsWith(eventName, \"after\")) {\n handler = () => {\n this.elementValueBeforeEvent = selectExtensions.readValue(this.$element);\n safeSetTimeout(this.valueUpdateHandler.bind(this), 0);\n };\n eventName = eventName.substring(\n 5\n /* 'after'.length */\n );\n }\n this.addEventListener(eventName, handler);\n }\n updateFromModelForFile() {\n const newValue = unwrap(this.value);\n if (newValue === null || newValue === void 0 || newValue === \"\") {\n this.$element.value = \"\";\n } else {\n dependencyDetection.ignore(this.valueUpdateHandler, this);\n }\n }\n updateFromModelForValue() {\n const element = this.$element;\n const newValue = unwrap(this.value);\n const elementValue = selectExtensions.readValue(element);\n if (this.elementValueBeforeEvent !== null && newValue === this.elementValueBeforeEvent) {\n safeSetTimeout(this.updateFromModel.bind(this), 0);\n return;\n }\n if (newValue === elementValue && elementValue !== void 0) {\n return;\n }\n if (tagNameLower(element) === \"select\") {\n const allowUnset = this.allBindings.get(\"valueAllowUnset\");\n selectExtensions.writeValue(element, newValue, allowUnset);\n if (!allowUnset && newValue !== selectExtensions.readValue(element)) {\n dependencyDetection.ignore(this.valueUpdateHandler, this);\n }\n } else {\n selectExtensions.writeValue(element, newValue);\n }\n }\n}\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nexport const visible = {\n update: function(element, valueAccessor) {\n const value = unwrap(valueAccessor());\n const isCurrentlyVisible = !(element.style.display === \"none\");\n if (value && !isCurrentlyVisible) {\n element.style.display = \"\";\n } else if (!value && isCurrentlyVisible) {\n element.style.display = \"none\";\n }\n }\n};\nexport const hidden = {\n update: function(element, valueAccessor) {\n visible.update.call(this, element, () => !unwrap(valueAccessor()));\n }\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { applyBindingsToDescendants } from \"@tko/bind\";\nexport const using = {\n init: function(element, valueAccessor, _allBindings, _viewModel, bindingContext) {\n const innerContext = bindingContext.createChildContext(valueAccessor);\n applyBindingsToDescendants(innerContext, element);\n return { controlsDescendantBindings: true };\n },\n allowVirtualElements: true\n};\n", "// @tko/binding.core \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { attr } from \"./attr\";\nimport { checked, checkedValue } from \"./checked\";\nimport { click } from \"./click\";\nimport { css } from \"./css\";\nimport descendantsComplete from \"./descendantsComplete\";\nimport { enable, disable } from \"./enableDisable\";\nimport { eventHandler, onHandler } from \"./event\";\nimport { hasfocus } from \"./hasfocus\";\nimport { html } from \"./html\";\nimport $let from \"./let\";\nimport { options } from \"./options\";\nimport { selectedOptions } from \"./selectedOptions\";\nimport { style } from \"./style\";\nimport { submit } from \"./submit\";\nimport { text } from \"./text\";\nimport { textInput } from \"./textInput\";\nimport { uniqueName } from \"./uniqueName\";\nimport { value } from \"./value\";\nimport { visible, hidden } from \"./visible\";\nimport { using } from \"./using\";\nexport const bindings = {\n attr,\n checked,\n checkedValue,\n click,\n css,\n class: css,\n descendantsComplete,\n enable,\n event: eventHandler,\n disable,\n hasfocus,\n hasFocus: hasfocus,\n hidden,\n html,\n let: $let,\n on: onHandler,\n options,\n selectedOptions,\n style,\n submit,\n text,\n textInput,\n textinput: textInput,\n uniqueName,\n using,\n value,\n visible\n};\n", "// @tko/binding.if \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { cloneNodes, virtualElements, cleanNode, domData } from \"@tko/utils\";\nimport { dependencyDetection, observable } from \"@tko/observable\";\nimport { applyBindingsToDescendants, AsyncBindingHandler } from \"@tko/bind\";\nexport default class ConditionalBindingHandler extends AsyncBindingHandler {\n get bindingContext() {\n throw new Error(\"bindingContext() must be implemented in the child class\");\n }\n constructor(params) {\n super(params);\n this.hasElse = this.detectElse(this.$element);\n const elseChainSatisfied = this.completesElseChain = observable();\n domData.set(this.$element, \"conditional\", { elseChainSatisfied });\n }\n getIfElseNodes() {\n if (this.ifElseNodes) {\n return this.ifElseNodes;\n }\n if (dependencyDetection.getDependenciesCount() || this.hasElse) {\n return this.cloneIfElseNodes(this.$element, this.hasElse);\n }\n }\n renderStatus() {\n throw new Error(\"renderStatus() must be implemented in the child class\");\n }\n render() {\n const isFirstRender = !this.ifElseNodes;\n const { shouldDisplay } = this.renderStatus();\n this.ifElseNodes = this.getIfElseNodes() || {};\n if (shouldDisplay) {\n const useOriginalNodes = isFirstRender && !this.hasElse;\n this.renderAndApplyBindings(this.ifElseNodes.ifNodes, useOriginalNodes);\n } else if (this.hasElse) {\n this.renderAndApplyBindings(this.ifElseNodes.elseNodes);\n } else {\n virtualElements.emptyNode(this.$element);\n }\n }\n async renderAndApplyBindings(nodes, useOriginalNodes) {\n if (!useOriginalNodes) {\n virtualElements.setDomNodeChildren(this.$element, cloneNodes(nodes));\n }\n const bound = await applyBindingsToDescendants(this.bindingContext, this.$element);\n this.completeBinding(bound);\n }\n /**\n * This may be truthy for the `else` binding.\n */\n get elseChainIsAlreadySatisfied() {\n return false;\n }\n /**\n * Test a node for whether it represents an 'else' condition.\n * @param {HTMLElement} node to be tested\n * @return {Boolean} true when\n *\n * Matches <!-- else -->\n */\n isElseNode(node) {\n return node.nodeType === Node.COMMENT_NODE && node.nodeValue.trim().toLowerCase() === \"else\";\n }\n detectElse(element) {\n const children = virtualElements.childNodes(element);\n for (let i = 0, j = children.length; i < j; ++i) {\n if (this.isElseNode(children[i])) {\n return true;\n }\n }\n return false;\n }\n /**\n * Clone the nodes, returning `ifNodes`, `elseNodes`\n * @param {HTMLElement} element The nodes to be cloned\n * @param {boolean} hasElse short-circuit to speed up the inner-loop.\n * @return {object} Containing the cloned nodes.\n */\n cloneIfElseNodes(element, hasElse) {\n const children = virtualElements.childNodes(element);\n const ifNodes = new Array();\n const elseNodes = new Array();\n let target = ifNodes;\n for (let i = 0, j = children.length; i < j; ++i) {\n if (hasElse && this.isElseNode(children[i])) {\n target = elseNodes;\n hasElse = false;\n } else {\n target.push(cleanNode(children[i].cloneNode(true)));\n }\n }\n return { ifNodes, elseNodes };\n }\n get controlsDescendants() {\n return true;\n }\n static get allowVirtualElements() {\n return true;\n }\n}\n", "// @tko/binding.if \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { unwrap } from \"@tko/observable\";\nimport ConditionalBindingHandler from \"./ConditionalBindingHandler\";\nexport class IfBindingHandler extends ConditionalBindingHandler {\n constructor(...args) {\n super(...args);\n this.ifCondition = this.computed(() => !!unwrap(this.value));\n this.computed(\"render\");\n }\n shouldDisplayIf() {\n return this.ifCondition();\n }\n get bindingContext() {\n return this.ifCondition.isActive() ? this.$context.extend(() => {\n this.ifCondition();\n return null;\n }) : this.$context;\n }\n renderStatus() {\n let shouldDisplay = this.shouldDisplayIf();\n if (this.elseChainIsAlreadySatisfied) {\n shouldDisplay = false;\n this.completesElseChain(true);\n } else {\n this.completesElseChain(shouldDisplay);\n }\n return { shouldDisplay };\n }\n}\nexport class UnlessBindingHandler extends IfBindingHandler {\n shouldDisplayIf() {\n return !super.shouldDisplayIf();\n }\n}\n", "// @tko/binding.if \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { options } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nimport ConditionalBindingHandler from \"./ConditionalBindingHandler\";\nexport class WithBindingHandler extends ConditionalBindingHandler {\n constructor(...args) {\n super(...args);\n this.asOption = this.allBindings.get(\"as\");\n const conditionalFn = this.asOption && !options.createChildContextWithAs ? () => Boolean(unwrap(this.value)) : () => unwrap(this.value);\n this.conditional = this.computed(conditionalFn);\n this.computed(\"render\");\n }\n get bindingContext() {\n if (!this.asOption) {\n return this.$context.createChildContext(this.valueAccessor);\n }\n return options.createChildContextWithAs ? this.$context.createChildContext(this.value, this.asOption) : this.$context.extend({ [this.asOption]: this.value });\n }\n renderStatus() {\n const shouldDisplay = Boolean(this.conditional());\n return { shouldDisplay };\n }\n}\n", "// @tko/binding.if \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { virtualElements, domData } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nimport { IfBindingHandler } from \"./ifUnless\";\nexport class ElseBindingHandler extends IfBindingHandler {\n shouldDisplayIf() {\n return super.shouldDisplayIf() || this.value === void 0;\n }\n /**\n * Return any conditional that precedes the given node.\n * @return {object} { elseChainSatisfied: observable }\n */\n get elseChainIsAlreadySatisfied() {\n if (!this._elseChain) {\n this._elseChain = this.readElseChain();\n }\n return unwrap(this._elseChain.elseChainSatisfied);\n }\n readElseChain() {\n let node = this.$element;\n do {\n node = node.previousSibling;\n } while (node && node.nodeType !== Node.ELEMENT_NODE && node.nodeType !== Node.COMMENT_NODE);\n if (!node) {\n return false;\n }\n if (node.nodeType === Node.COMMENT_NODE) {\n node = virtualElements.previousSibling(node);\n }\n return domData.get(node, \"conditional\") || {};\n }\n}\n", "// @tko/binding.if \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { IfBindingHandler, UnlessBindingHandler } from \"./ifUnless\";\nimport { WithBindingHandler } from \"./with\";\nimport { ElseBindingHandler } from \"./else\";\nexport const bindings = {\n if: IfBindingHandler,\n with: WithBindingHandler,\n ifnot: UnlessBindingHandler,\n unless: UnlessBindingHandler,\n else: ElseBindingHandler,\n elseif: ElseBindingHandler\n};\n", "// @tko/binding.foreach \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport {\n arrayForEach,\n cleanNode,\n options,\n virtualElements,\n createSymbolOrString,\n domData,\n domNodeIsContainedBy\n} from \"@tko/utils\";\nimport { isObservable, unwrap, observable } from \"@tko/observable\";\nimport { contextFor, applyBindingsToDescendants, AsyncBindingHandler } from \"@tko/bind\";\nconst MAX_LIST_SIZE = 9007199254740991;\nfunction isPlainObject(o) {\n return !!o && typeof o === \"object\" && o.constructor === Object;\n}\nconst supportsDocumentFragment = options.document && typeof options.document.createDocumentFragment === \"function\";\nfunction makeTemplateNode(sourceNode) {\n const container = document.createElement(\"div\");\n let parentNode;\n if (sourceNode.content) {\n parentNode = sourceNode.content;\n } else if (sourceNode.tagName === \"SCRIPT\") {\n parentNode = document.createElement(\"div\");\n parentNode.innerHTML = sourceNode.text;\n } else {\n parentNode = sourceNode;\n }\n arrayForEach(virtualElements.childNodes(parentNode), function(child) {\n if (child) {\n container.insertBefore(child.cloneNode(true), null);\n }\n });\n return container;\n}\nfunction valueToChangeAddItem(value, index) {\n return { status: \"added\", value, index };\n}\nconst PENDING_DELETE_INDEX_SYM = createSymbolOrString(\"_ko_ffe_pending_delete_index\");\nexport class ForEachBinding extends AsyncBindingHandler {\n constructor(params) {\n super(params);\n const settings = {};\n if (isPlainObject(this.value)) {\n Object.assign(settings, this.value);\n }\n this.as = settings.as || this.allBindings.get(\"as\");\n this.data = settings.data || (unwrap(this.$context.$rawData) === this.value ? this.$context.$rawData : this.value);\n this.container = virtualElements.isStartComment(this.$element) ? this.$element.parentNode : this.$element;\n this.generateContext = this.createContextGenerator(this.as);\n this.$indexHasBeenRequested = false;\n this.templateNode = makeTemplateNode(\n settings.templateNode || (settings.name ? document.getElementById(settings.name)?.cloneNode(true) : this.$element)\n );\n [\"afterAdd\", \"beforeRemove\", \"afterQueueFlush\", \"beforeQueueFlush\"].forEach((p) => {\n this[p] = settings[p] || this.allBindings.get(p);\n });\n this.changeQueue = new Array();\n this.firstLastNodesList = new Array();\n this.indexesToDelete = new Array();\n this.rendering_queued = false;\n this.pendingDeletes = new Array();\n this.isNotEmpty = observable(Boolean(unwrap(this.data).length));\n domData.set(this.$element, \"conditional\", { elseChainSatisfied: this.isNotEmpty });\n virtualElements.emptyNode(this.$element);\n const primeData = unwrap(this.data);\n if (primeData && primeData.map) {\n this.onArrayChange(primeData.map(valueToChangeAddItem), true);\n } else {\n this.completeBinding();\n }\n if (isObservable(this.data)) {\n if (!this.data.indexOf) {\n this.data = this.data.extend({ trackArrayChanges: true });\n }\n this.changeSubs = this.data.subscribe(this.onArrayChange, this, \"arrayChange\");\n }\n }\n dispose() {\n if (this.changeSubs) {\n this.changeSubs.dispose();\n }\n this.flushPendingDeletes();\n }\n // If the array changes we register the change.\n onArrayChange(changeSet, isInitial) {\n const changeMap = { added: [], deleted: [] };\n for (let i = 0, len = changeSet.length; i < len; i++) {\n if (changeMap.added.length && changeSet[i].status === \"added\") {\n let lastAdd = changeMap.added[changeMap.added.length - 1];\n const lastIndex = lastAdd.isBatch ? lastAdd.index + lastAdd.values.length - 1 : lastAdd.index;\n if (lastIndex + 1 === changeSet[i].index) {\n if (!lastAdd.isBatch) {\n lastAdd = { isBatch: true, status: \"added\", index: lastAdd.index, values: [lastAdd.value] };\n changeMap.added.splice(changeMap.added.length - 1, 1, lastAdd);\n }\n lastAdd.values.push(changeSet[i].value);\n continue;\n }\n }\n changeMap[changeSet[i].status].push(changeSet[i]);\n }\n if (changeMap.deleted.length > 0) {\n this.changeQueue.push.apply(this.changeQueue, changeMap.deleted);\n this.changeQueue.push({ status: \"clearDeletedIndexes\" });\n }\n this.changeQueue.push.apply(this.changeQueue, changeMap.added);\n if (this.changeQueue.length > 0 && !this.rendering_queued) {\n this.rendering_queued = true;\n if (isInitial) {\n this.processQueue();\n } else {\n ForEachBinding.animateFrame.call(window, () => this.processQueue());\n }\n }\n }\n startQueueFlush() {\n if (typeof this.beforeQueueFlush === \"function\") {\n this.beforeQueueFlush(this.changeQueue);\n }\n }\n endQueueFlush() {\n if (typeof this.afterQueueFlush === \"function\") {\n this.afterQueueFlush(this.changeQueue);\n }\n }\n // Reflect all the changes in the queue in the DOM, then wipe the queue.\n processQueue() {\n const isEmpty = !unwrap(this.data).length;\n let lowestIndexChanged = MAX_LIST_SIZE;\n this.startQueueFlush();\n arrayForEach(this.changeQueue, (changeItem) => {\n if (typeof changeItem.index === \"number\") {\n lowestIndexChanged = Math.min(lowestIndexChanged, changeItem.index);\n }\n this[changeItem.status](changeItem);\n });\n this.flushPendingDeletes();\n this.rendering_queued = false;\n if (this.$indexHasBeenRequested) {\n this.updateIndexes(lowestIndexChanged);\n }\n this.endQueueFlush();\n this.changeQueue = new Array();\n if (isEmpty !== !this.isNotEmpty()) {\n this.isNotEmpty(!isEmpty);\n }\n }\n /**\n * Once the $index has been asked for once, start calculating it.\n * Note that this significantly degrades performance, from O(1) to O(n)\n * for arbitrary changes to the list.\n */\n _first$indexRequest(ctx$indexRequestedFrom) {\n this.$indexHasBeenRequested = true;\n for (let i = 0, len = this.firstLastNodesList.length; i < len; ++i) {\n const ctx = this.getContextStartingFrom(this.firstLastNodesList[i].first);\n if (ctx) {\n ctx.$index = observable(i);\n }\n }\n return ctx$indexRequestedFrom.$index();\n }\n _contextExtensions($ctx) {\n Object.assign($ctx, { $list: this.data });\n if (this.$indexHasBeenRequested) {\n $ctx.$index = $ctx.$index || observable();\n } else {\n Object.defineProperty($ctx, \"$index\", {\n value: () => this._first$indexRequest($ctx),\n configurable: true,\n writable: true\n });\n }\n return $ctx;\n }\n /**\n * Return a function that generates the context for a given node.\n *\n * We generate a single function that reduces our inner-loop calculations,\n * which has a good chance of being optimized by the browser.\n *\n * @param {string} as The name given to each item in the list\n * @param {bool} index Whether to calculate indexes\n * @return {function} A function(dataValue) that returns the context\n */\n createContextGenerator(as) {\n const $ctx = this.$context;\n if (as) {\n return (v) => this._contextExtensions($ctx.extend({ [as]: v }));\n } else {\n return (v) => $ctx.createChildContext(v, void 0, (ctx) => this._contextExtensions(ctx));\n }\n }\n updateFirstLastNodesList(index, children) {\n const first = children[0];\n const last = children[children.length - 1];\n this.firstLastNodesList.splice(index, 0, { first, last });\n }\n // Process a changeItem with {status: 'added', ...}\n added(changeItem) {\n const index = changeItem.index;\n const valuesToAdd = changeItem.isBatch ? changeItem.values : [changeItem.value];\n const referenceElement = this.getLastNodeBeforeIndex(index);\n const allChildNodes = [];\n const asyncBindingResults = new Array();\n let children;\n for (let i = 0, len = valuesToAdd.length; i < len; ++i) {\n const pendingDelete = this.getPendingDeleteFor(valuesToAdd[i]);\n if (pendingDelete && pendingDelete.nodesets.length) {\n children = pendingDelete.nodesets.pop();\n this.updateFirstLastNodesList(index + i, children);\n } else {\n const templateClone = this.templateNode.cloneNode(true);\n children = virtualElements.childNodes(templateClone);\n this.updateFirstLastNodesList(index + i, children);\n const bindingResult = applyBindingsToDescendants(this.generateContext(valuesToAdd[i]), templateClone);\n asyncBindingResults.push(bindingResult);\n }\n allChildNodes.push(...children);\n }\n if (typeof this.afterAdd === \"function\") {\n this.afterAdd({\n nodeOrArrayInserted: this.insertAllAfter(allChildNodes, referenceElement),\n foreachInstance: this\n });\n } else {\n this.insertAllAfter(allChildNodes, referenceElement);\n }\n this.completeBinding(Promise.all(asyncBindingResults));\n }\n getNodesForIndex(index) {\n const result = new Array();\n let ptr = this.firstLastNodesList[index].first;\n const last = this.firstLastNodesList[index].last;\n result.push(ptr);\n while (ptr && ptr !== last) {\n ptr = ptr.nextSibling;\n result.push(ptr);\n }\n return result;\n }\n getLastNodeBeforeIndex(index) {\n if (index < 1 || index - 1 >= this.firstLastNodesList.length) {\n return null;\n }\n return this.firstLastNodesList[index - 1].last;\n }\n /**\n * Get the active (focused) node, if it's a child of the given node.\n */\n activeChildElement(node) {\n const active = document.activeElement;\n if (domNodeIsContainedBy(active, node)) {\n return active;\n }\n return null;\n }\n insertAllAfter(nodeOrNodeArrayToInsert, insertAfterNode) {\n let frag;\n let len;\n let i;\n let active = null;\n const containerNode = this.$element;\n if (nodeOrNodeArrayToInsert.nodeType === void 0 && nodeOrNodeArrayToInsert.length === void 0) {\n throw new Error(\"Expected a single node or a node array\");\n }\n if (nodeOrNodeArrayToInsert.nodeType !== void 0) {\n active = this.activeChildElement(nodeOrNodeArrayToInsert);\n virtualElements.insertAfter(containerNode, nodeOrNodeArrayToInsert, insertAfterNode);\n return [nodeOrNodeArrayToInsert];\n } else if (nodeOrNodeArrayToInsert.length === 1) {\n active = this.activeChildElement(nodeOrNodeArrayToInsert[0]);\n virtualElements.insertAfter(containerNode, nodeOrNodeArrayToInsert[0], insertAfterNode);\n } else if (supportsDocumentFragment) {\n frag = document.createDocumentFragment();\n for (i = 0, len = nodeOrNodeArrayToInsert.length; i !== len; ++i) {\n active = active || this.activeChildElement(nodeOrNodeArrayToInsert[i]);\n frag.appendChild(nodeOrNodeArrayToInsert[i]);\n }\n virtualElements.insertAfter(containerNode, frag, insertAfterNode);\n } else {\n for (i = nodeOrNodeArrayToInsert.length - 1; i >= 0; --i) {\n active = active || this.activeChildElement(nodeOrNodeArrayToInsert[i]);\n const child = nodeOrNodeArrayToInsert[i];\n if (!child) {\n break;\n }\n virtualElements.insertAfter(containerNode, child, insertAfterNode);\n }\n }\n if (active) {\n active.focus();\n }\n return nodeOrNodeArrayToInsert;\n }\n // checks if the deleted data item should be handled with delay for a possible reuse at additions\n shouldDelayDeletion(data) {\n return data && (typeof data === \"object\" || typeof data === \"function\");\n }\n // gets the pending deletion info for this data item\n getPendingDeleteFor(data) {\n const index = data && data[PENDING_DELETE_INDEX_SYM];\n if (index === void 0) return null;\n return this.pendingDeletes[index];\n }\n // tries to find the existing pending delete info for this data item, and if it can't, it registeres one\n getOrCreatePendingDeleteFor(data) {\n let pd = this.getPendingDeleteFor(data);\n if (pd) {\n return pd;\n }\n pd = { data, nodesets: [] };\n data[PENDING_DELETE_INDEX_SYM] = this.pendingDeletes.length;\n this.pendingDeletes.push(pd);\n return pd;\n }\n // Process a changeItem with {status: 'deleted', ...}\n deleted(changeItem) {\n if (this.shouldDelayDeletion(changeItem.value)) {\n const pd = this.getOrCreatePendingDeleteFor(changeItem.value);\n pd.nodesets.push(this.getNodesForIndex(changeItem.index));\n } else {\n this.removeNodes(this.getNodesForIndex(changeItem.index));\n }\n this.indexesToDelete.push(changeItem.index);\n }\n // removes a set of nodes from the DOM\n removeNodes(nodes) {\n if (!nodes.length) {\n return;\n }\n function removeFn() {\n const parent = nodes[0].parentNode;\n for (let i = nodes.length - 1; i >= 0; --i) {\n cleanNode(nodes[i]);\n parent.removeChild(nodes[i]);\n }\n }\n if (this.beforeRemove) {\n const beforeRemoveReturn = this.beforeRemove({ nodesToRemove: nodes, foreachInstance: this }) || {};\n if (typeof beforeRemoveReturn.then === \"function\") {\n beforeRemoveReturn.then(removeFn, options.onError);\n }\n } else {\n removeFn();\n }\n }\n // flushes the pending delete info store\n // this should be called after queue processing has finished, so that data items and remaining (not reused) nodesets get cleaned up\n // we also call it on dispose not to leave any mess\n flushPendingDeletes() {\n for (let i = 0, len = this.pendingDeletes.length; i !== len; ++i) {\n const pd = this.pendingDeletes[i];\n while (pd.nodesets.length) {\n this.removeNodes(pd.nodesets.pop());\n }\n if (pd.data && pd.data[PENDING_DELETE_INDEX_SYM] !== void 0) {\n delete pd.data[PENDING_DELETE_INDEX_SYM];\n }\n }\n this.pendingDeletes = new Array();\n }\n // We batch our deletion of item indexes in our parallel array.\n // See brianmhunt/knockout-fast-foreach#6/#8\n clearDeletedIndexes() {\n for (let i = this.indexesToDelete.length - 1; i >= 0; --i) {\n this.firstLastNodesList.splice(this.indexesToDelete[i], 1);\n }\n this.indexesToDelete = new Array();\n }\n updateIndexes(fromIndex) {\n let ctx;\n for (let i = fromIndex, len = this.firstLastNodesList.length; i < len; ++i) {\n ctx = this.getContextStartingFrom(this.firstLastNodesList[i].first);\n if (ctx) {\n ctx.$index(i);\n }\n }\n }\n getContextStartingFrom(node) {\n let ctx;\n while (node) {\n ctx = contextFor(node);\n if (ctx) {\n return ctx;\n }\n node = node.nextSibling;\n }\n }\n /**\n * Set whether the binding is always synchronous.\n * Useful during testing.\n */\n static setSync(toggle) {\n const w = options.global;\n if (toggle) {\n ForEachBinding.animateFrame = function(frame) {\n frame();\n };\n } else {\n ForEachBinding.animateFrame = w.requestAnimationFrame || w.webkitRequestAnimationFrame || w.mozRequestAnimationFrame || w.msRequestAnimationFrame || function(cb) {\n return w.setTimeout(cb, 1e3 / 60);\n };\n }\n }\n get controlsDescendants() {\n return true;\n }\n static get allowVirtualElements() {\n return true;\n }\n /* TODO: Remove; for legacy/testing */\n static get ForEach() {\n return this;\n }\n static get PENDING_DELETE_INDEX_SYM() {\n return PENDING_DELETE_INDEX_SYM;\n }\n}\n", "// @tko/binding.foreach \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { ForEachBinding } from \"./foreach\";\nexport const bindings = { foreach: ForEachBinding };\nForEachBinding.setSync(false);\n", "// @tko/utils.jsx \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { cleanNode } from \"@tko/utils\";\nconst DELAY_MS = 25;\nconst MAX_CLEAN_AT_ONCE = 1e3;\nconst cleanNodeQueue = new Array();\nlet cleanNodeTimeoutID = null;\nexport function queueCleanNode(node) {\n cleanNodeQueue.push(node);\n triggerCleanTimeout();\n}\nfunction triggerCleanTimeout() {\n if (!cleanNodeTimeoutID && cleanNodeQueue.length) {\n cleanNodeTimeoutID = setTimeout(flushCleanQueue, DELAY_MS);\n }\n}\nfunction flushCleanQueue() {\n cleanNodeTimeoutID = null;\n const nodes = cleanNodeQueue.splice(0, MAX_CLEAN_AT_ONCE);\n for (const node of nodes) {\n cleanNode(node);\n }\n triggerCleanTimeout();\n}\n", "// @tko/utils.jsx \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { LifeCycle } from \"@tko/lifecycle\";\nimport { safeStringify, isThenable } from \"@tko/utils\";\nimport { applyBindings, contextFor } from \"@tko/bind\";\nimport { isObservable, unwrap, observable } from \"@tko/observable\";\nimport { isComputed } from \"@tko/computed\";\nimport { NativeProvider, NATIVE_BINDINGS } from \"@tko/provider.native\";\nimport { queueCleanNode } from \"./jsxClean\";\nexport const ORIGINAL_JSX_SYM = /* @__PURE__ */ Symbol(\"Knockout - Original JSX\");\nconst NAMESPACES = {\n svg: \"http://www.w3.org/2000/svg\",\n html: \"http://www.w3.org/1999/xhtml\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xlink: \"http://www.w3.org/1999/xlink\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\nfunction isIterable(v) {\n return v && typeof v[Symbol.iterator] === \"function\";\n}\nexport class JsxObserver extends LifeCycle {\n /**\n * @param {any} jsxOrObservable take a long list of permutations\n */\n constructor(jsxOrObservable, parentNode, insertBefore = null, xmlns, noInitialBinding) {\n super();\n const parentNodeIsComment = parentNode.nodeType === Node.COMMENT_NODE;\n const parentNodeTarget = this.getParentTarget(parentNode);\n if (isObservable(jsxOrObservable)) {\n jsxOrObservable.extend({ trackArrayChanges: true });\n this.subscribe(jsxOrObservable, this.observableArrayChange, \"arrayChange\");\n if (!insertBefore) {\n const insertAt = parentNodeIsComment ? parentNode.nextSibling : null;\n insertBefore = this.createComment(\"O\");\n parentNodeTarget?.insertBefore(insertBefore, insertAt);\n } else {\n this.adoptedInsertBefore = true;\n }\n }\n if (parentNodeIsComment && !insertBefore) {\n insertBefore = parentNode.nextSibling;\n this.adoptedInsertBefore = true;\n }\n this.anchorTo(insertBefore || parentNode);\n Object.assign(this, {\n insertBefore,\n noInitialBinding,\n parentNode,\n parentNodeTarget,\n xmlns,\n nodeArrayOrObservableAtIndex: [],\n subscriptionsForNode: /* @__PURE__ */ new Map()\n });\n const jsx = unwrap(jsxOrObservable);\n const computed = isComputed(jsxOrObservable);\n if (computed || jsx !== null && jsx !== void 0) {\n this.observableArrayChange(this.createInitialAdditions(jsx));\n }\n this.noInitialBinding = false;\n }\n getParentTarget(parentNode) {\n if (\"content\" in parentNode) {\n return parentNode.content;\n }\n if (parentNode.nodeType === Node.COMMENT_NODE) {\n return parentNode.parentNode;\n }\n return parentNode;\n }\n remove() {\n this.dispose();\n }\n dispose() {\n super.dispose();\n const ib = this.insertBefore;\n const insertBeforeIsChild = ib && this.parentNodeTarget === ib.parentNode;\n if (insertBeforeIsChild && !this.adoptedInsertBefore) {\n this.parentNodeTarget?.removeChild(ib);\n }\n this.removeAllPriorNodes();\n Object.assign(this, {\n parentNode: null,\n parentNodeTarget: null,\n insertBefore: null,\n nodeArrayOrObservableAtIndex: []\n });\n for (const subscriptions of this.subscriptionsForNode.values()) {\n subscriptions.forEach((s) => s.dispose());\n }\n this.subscriptionsForNode.clear();\n }\n createInitialAdditions(possibleIterable) {\n const status = \"added\";\n if (typeof possibleIterable === \"object\" && possibleIterable !== null && Symbol.iterator in possibleIterable) {\n possibleIterable = [...possibleIterable];\n }\n return Array.isArray(possibleIterable) ? possibleIterable.map((value, index) => ({ index, status, value })) : [{ status, index: 0, value: possibleIterable }];\n }\n /**\n * Note: array change notification indexes are:\n * - to the original array indexes for deletes\n * - to the new array indexes for adds\n * - sorted by index in ascending order\n */\n observableArrayChange(changes) {\n const adds = [];\n const dels = [];\n for (const index in changes) {\n const change = changes[index];\n if (change.status === \"added\") {\n adds.push([change.index, change.value]);\n } else {\n dels.unshift([change.index, change.value]);\n }\n }\n dels.forEach((change) => this.delChange(...change));\n adds.forEach((change) => this.addChange(...change));\n }\n /**\n * Add a change at the given index.\n *\n * @param {int} index\n * @param {string|object|Array|Observable.string|Observable.Array|Observable.object} jsx\n */\n addChange(index, jsx) {\n this.nodeArrayOrObservableAtIndex.splice(index, 0, this.injectNode(jsx, this.lastNodeFor(index)));\n }\n injectNode(jsx, nextNode) {\n let nodeArrayOrObservable;\n if (isObservable(jsx)) {\n const { parentNode, xmlns } = this;\n const observer = new JsxObserver(jsx, parentNode, nextNode, xmlns, this.noInitialBinding);\n nodeArrayOrObservable = [observer];\n } else if (typeof jsx !== \"string\" && isIterable(jsx)) {\n nodeArrayOrObservable = new Array();\n for (const child of jsx) {\n nodeArrayOrObservable.unshift(this.injectNode(child, nextNode));\n }\n } else {\n const $context = contextFor(this.parentNode);\n const isInsideTemplate = \"content\" in this.parentNode;\n const shouldApplyBindings = $context && !isInsideTemplate && !this.noInitialBinding;\n if (Array.isArray(jsx)) {\n nodeArrayOrObservable = jsx.map((j) => this.anyToNode(j));\n } else {\n nodeArrayOrObservable = [this.anyToNode(jsx)];\n }\n for (const node of nodeArrayOrObservable) {\n this.parentNodeTarget?.insertBefore(node, nextNode);\n if (shouldApplyBindings && this.canApplyBindings(node)) {\n applyBindings($context, node);\n }\n }\n }\n return nodeArrayOrObservable;\n }\n /**\n * True when Node is a type suitable for applyBindings i.e. a HTMLElement\n * or a Comment.\n * @param {Node} node\n */\n canApplyBindings(node) {\n return node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.COMMENT_NODE;\n }\n delChange(index, _) {\n this.removeNodeArrayOrObservable(this.nodeArrayOrObservableAtIndex[index]);\n this.nodeArrayOrObservableAtIndex.splice(index, 1);\n }\n getSubscriptionsForNode(node) {\n if (!this.subscriptionsForNode.has(node)) {\n const subscriptions = new Array();\n this.subscriptionsForNode.set(node, subscriptions);\n return subscriptions;\n }\n return this.subscriptionsForNode.get(node);\n }\n isJsx(jsx) {\n return typeof jsx.elementName === \"string\" && \"children\" in jsx && \"attributes\" in jsx;\n }\n /**\n * @param {any} value acceptable to turn into a Node\n *\n * The one thing `any` cannot be here is an Array or Observable; both those\n * cases are handled with new JsxObservers.\n */\n anyToNode(any) {\n if (isThenable(any)) {\n return this.futureJsxNode(any);\n }\n switch (typeof any) {\n case \"object\":\n if (any instanceof Error) {\n return this.createComment(any.toString());\n }\n if (any === null) {\n return this.createComment(String(any));\n }\n if (any instanceof Node) {\n return this.cloneJSXorMoveNode(any);\n }\n if (Symbol.iterator in any) {\n return any;\n }\n break;\n case \"function\":\n return this.anyToNode(any());\n case \"undefined\":\n case \"symbol\":\n return this.createComment(String(any));\n case \"string\":\n return this.createTextNode(any);\n case \"boolean\":\n case \"number\":\n case \"bigint\":\n default:\n return this.createTextNode(String(any));\n }\n return this.isJsx(any) ? this.jsxToNode(any) : this.createComment(safeStringify(any));\n }\n createComment(string) {\n const node = document.createComment(string);\n node[NATIVE_BINDINGS] = true;\n return node;\n }\n createTextNode(string) {\n const node = document.createTextNode(string);\n node[NATIVE_BINDINGS] = true;\n return node;\n }\n /**\n * Clone a node; if that node was originally from JSX, we clone from there\n * so we preserve binding handlers.\n *\n * @param {HTMLElement} node\n */\n cloneJSXorMoveNode(node) {\n return ORIGINAL_JSX_SYM in node ? this.jsxToNode(node[ORIGINAL_JSX_SYM]) : node;\n }\n /**\n * @param {JSX} jsx to convert to a node.\n */\n jsxToNode(jsx) {\n const xmlns = jsx.attributes.xmlns || NAMESPACES[jsx.elementName] || this.xmlns;\n const node = document.createElementNS(xmlns || NAMESPACES.html, jsx.elementName);\n node[ORIGINAL_JSX_SYM] = jsx;\n if (isObservable(jsx.attributes)) {\n const subscriptions = this.getSubscriptionsForNode(node);\n subscriptions.push(\n jsx.attributes.subscribe((attrs) => {\n this.updateAttributes(node, unwrap(attrs));\n })\n );\n }\n this.updateAttributes(node, unwrap(jsx.attributes));\n this.addDisposable(new JsxObserver(jsx.children, node, null, xmlns, this.noInitialBinding));\n return node;\n }\n futureJsxNode(promise) {\n const obs = observable();\n promise.then(obs).catch((e) => obs(e instanceof Error ? e : Error(e)));\n const jo = new JsxObserver(obs, this.parentNode, null, this.xmlns, this.noInitialBinding);\n this.addDisposable(jo);\n return jo.insertBefore;\n }\n updateAttributes(node, attributes) {\n const subscriptions = this.getSubscriptionsForNode(node);\n const toRemove = new Set([...node.attributes].map((n) => n.name));\n for (const [name, value] of Object.entries(attributes || {})) {\n toRemove.delete(name);\n if (isObservable(value)) {\n subscriptions.push(value.subscribe((attr) => this.setNodeAttribute(node, name, value)));\n }\n this.setNodeAttribute(node, name, value);\n }\n for (const name of toRemove) {\n this.setNodeAttribute(node, name, void 0);\n }\n }\n /**\n * See https://stackoverflow.com/a/52572048\n * @param {string} attr element attribute\n * @return {string} namespace argument for setAtttributeNS\n */\n getNamespaceOfAttribute(attr) {\n const [prefix, ...unqualifiedName] = attr.split(\":\");\n if (prefix === \"xmlns\" || unqualifiedName.length && NAMESPACES[prefix]) {\n return NAMESPACES[prefix];\n }\n return null;\n }\n /**\n *\n * @param {HTMLElement} node\n * @param {string} name\n * @param {any} valueOrObservable\n */\n setNodeAttribute(node, name, valueOrObservable) {\n const value = unwrap(valueOrObservable);\n NativeProvider.addValueToNode(node, name, valueOrObservable);\n if (value === void 0) {\n node.removeAttributeNS(null, name);\n } else if (isThenable(valueOrObservable)) {\n Promise.resolve(valueOrObservable).then((v) => this.setNodeAttribute(node, name, v));\n } else {\n const ns = this.getNamespaceOfAttribute(name);\n node.setAttributeNS(ns, name, String(value));\n }\n }\n /**\n * @param {int} index\n * @return {Comment} that immediately precedes this.\n */\n lastNodeFor(index) {\n const nodesAtIndex = this.nodeArrayOrObservableAtIndex[index] || [];\n const [lastNodeOfPrior] = nodesAtIndex.slice(-1);\n const insertBefore = lastNodeOfPrior instanceof JsxObserver ? lastNodeOfPrior.insertBefore : lastNodeOfPrior || this.insertBefore;\n if (insertBefore) {\n return insertBefore.parentNode ? insertBefore : null;\n }\n return null;\n }\n removeAllPriorNodes() {\n const { nodeArrayOrObservableAtIndex } = this;\n while (nodeArrayOrObservableAtIndex.length) {\n this.removeNodeArrayOrObservable(nodeArrayOrObservableAtIndex.pop());\n }\n }\n removeNodeArrayOrObservable(nodeArrayOrObservable) {\n for (const nodeOrObservable of nodeArrayOrObservable) {\n if (nodeOrObservable instanceof JsxObserver) {\n nodeOrObservable.dispose();\n continue;\n }\n const node = nodeOrObservable;\n delete node[ORIGINAL_JSX_SYM];\n this.detachAndDispose(node);\n const subscriptions = this.subscriptionsForNode.get(node);\n if (subscriptions) {\n subscriptions.forEach((s) => s.dispose());\n this.subscriptionsForNode.delete(node);\n }\n }\n }\n /**\n * Detach the given node, and dispose of its children.\n *\n * The cleaning can trigger a lot of garbage collection, so we defer that.\n */\n detachAndDispose(node) {\n if (isIterable(node)) {\n for (const child of node) {\n this.detachAndDispose(child);\n }\n } else {\n node.remove();\n }\n queueCleanNode(node);\n }\n}\nexport default JsxObserver;\n", "// @tko/utils.jsx \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { isObservable, unwrap } from \"@tko/observable\";\nimport { ORIGINAL_JSX_SYM } from \"./JsxObserver\";\nexport function maybeJsx(possibleJsx) {\n if (isObservable(possibleJsx)) {\n return true;\n }\n const value = unwrap(possibleJsx);\n if (!value) {\n return false;\n }\n if (value.elementName) {\n return true;\n }\n if (!Array.isArray(value) || !value.length) {\n return false;\n }\n if (value[0] instanceof window.Node) {\n return false;\n }\n return true;\n}\nexport function getOriginalJsxForNode(node) {\n return node[ORIGINAL_JSX_SYM];\n}\nexport function createElement(elementName, attributes, ...children) {\n return elementName === Fragment ? children : { elementName, attributes: attributes || {}, children: [...children] };\n}\nexport const Fragment = /* @__PURE__ */ Symbol(\"JSX Fragment\");\n", "// @tko/binding.component \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { virtualElements, makeArray, cloneNodes } from \"@tko/utils\";\nimport { unwrap } from \"@tko/observable\";\nimport { DescendantBindingHandler } from \"@tko/bind\";\nimport { JsxObserver, maybeJsx } from \"@tko/utils.jsx\";\nimport { NativeProvider } from \"@tko/provider.native\";\nimport { LifeCycle } from \"@tko/lifecycle\";\nimport registry from \"@tko/utils.component\";\nlet componentLoadingOperationUniqueId = 0;\nexport default class ComponentBinding extends DescendantBindingHandler {\n constructor(params) {\n super(params);\n this.originalChildNodes = makeArray(virtualElements.childNodes(this.$element));\n this.computed(\"computeApplyComponent\");\n }\n cloneTemplateIntoElement(componentName, template, element) {\n if (!template) {\n throw new Error(\"Component '\" + componentName + \"' has no template\");\n }\n if (maybeJsx(template)) {\n virtualElements.emptyNode(element);\n this.addDisposable(new JsxObserver(template, element, null, void 0, true));\n } else {\n const clonedNodesArray = cloneNodes(template);\n virtualElements.setDomNodeChildren(element, clonedNodesArray);\n }\n }\n createViewModel(componentDefinition, element, originalChildNodes, componentParams) {\n const componentViewModelFactory = componentDefinition.createViewModel;\n return componentViewModelFactory ? componentViewModelFactory.call(componentDefinition, componentParams, {\n element,\n templateNodes: originalChildNodes\n }) : componentParams;\n }\n /**\n * Return the $componentTemplateSlotNodes for the given template\n * @param {HTMLElement|jsx} template\n */\n makeTemplateSlotNodes(originalChildNodes) {\n return Object.assign({}, ...this.genSlotsByName(originalChildNodes));\n }\n /**\n * Iterate over the templateNodes, yielding each '<element slot=name>'\n * as an object * of {name: element}.\n * @param {HTMLElement[]} templateNodes\n */\n *genSlotsByName(templateNodes) {\n for (const node of templateNodes) {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n const slotName = node.getAttribute(\"slot\");\n if (!slotName) {\n continue;\n }\n yield { [slotName]: node };\n }\n }\n computeApplyComponent() {\n const value = unwrap(this.value);\n let componentName;\n let componentParams;\n if (typeof value === \"string\") {\n componentName = value;\n } else {\n componentName = unwrap(value.name);\n componentParams = NativeProvider.getNodeValues(this.$element) || unwrap(value.params);\n }\n this.latestComponentName = componentName;\n if (!componentName) {\n throw new Error(\"No component name specified\");\n }\n this.loadingOperationId = this.currentLoadingOperationId = ++componentLoadingOperationUniqueId;\n registry.get(componentName, (defn) => this.applyComponentDefinition(componentName, componentParams, defn));\n }\n makeChildBindingContext($component) {\n const ctxExtender = (ctx) => Object.assign(ctx, {\n $component,\n $componentTemplateNodes: this.originalChildNodes,\n $componentTemplateSlotNodes: this.makeTemplateSlotNodes(this.originalChildNodes)\n });\n return this.$context.createChildContext($component, void 0, ctxExtender);\n }\n applyComponentDefinition(componentName, componentParams, componentDefinition) {\n if (this.currentLoadingOperationId !== this.loadingOperationId || this.latestComponentName !== componentName) {\n return;\n }\n this.cleanUpState();\n const element = this.$element;\n if (!componentDefinition) {\n throw new Error(\"Unknown component '\" + componentName + \"'\");\n }\n if (componentDefinition.template) {\n this.cloneTemplateIntoElement(componentName, componentDefinition.template, element);\n }\n const componentViewModel = this.createViewModel(\n componentDefinition,\n element,\n this.originalChildNodes,\n componentParams\n );\n this.childBindingContext = this.makeChildBindingContext(componentViewModel);\n const viewTemplate = componentViewModel && componentViewModel.template;\n if (!viewTemplate && !componentDefinition.template) {\n throw new Error(\"Component '\" + componentName + \"' has no template\");\n }\n if (!componentDefinition.template) {\n this.cloneTemplateIntoElement(componentName, viewTemplate, element);\n }\n if (componentViewModel instanceof LifeCycle) {\n componentViewModel.anchorTo(this.$element);\n }\n this.currentViewModel = componentViewModel;\n const onBinding = this.onBindingComplete.bind(this, componentViewModel);\n this.applyBindingsToDescendants(this.childBindingContext, onBinding);\n }\n onBindingComplete(componentViewModel, bindingResult) {\n if (componentViewModel && componentViewModel.koDescendantsComplete) {\n componentViewModel.koDescendantsComplete(this.$element);\n }\n this.completeBinding(bindingResult);\n }\n cleanUpState() {\n const currentView = this.currentViewModel;\n const currentViewDispose = currentView && currentView.dispose;\n if (typeof currentViewDispose === \"function\") {\n currentViewDispose.call(currentView);\n }\n this.currentViewModel = null;\n this.currentLoadingOperationId = null;\n }\n dispose() {\n this.cleanUpState();\n super.dispose();\n }\n get controlsDescendants() {\n return true;\n }\n static get allowVirtualElements() {\n return true;\n }\n}\n", "// @tko/binding.component \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { virtualElements } from \"@tko/utils\";\nimport { JsxObserver, getOriginalJsxForNode } from \"@tko/utils.jsx\";\nimport { DescendantBindingHandler, contextFor } from \"@tko/bind\";\nexport default class SlotBinding extends DescendantBindingHandler {\n constructor(params) {\n super(params);\n const slotNode = this.getSlot(this.value);\n const $slotContext = contextFor(slotNode);\n const childContext = this.$context.extend({ $slotContext, $slotData: $slotContext && $slotContext.$data });\n this.replaceSlotWithNode(this.$element, slotNode);\n this.applyBindingsToDescendants(childContext);\n }\n /**\n *\n * @param {HTMLElement} nodeToReplace\n * @param {HTMLElement} slotValue\n */\n replaceSlotWithNode(nodeInComponentTemplate, slotNode) {\n const nodes = this.cloneNodeFromOriginal(slotNode);\n virtualElements.emptyNode(nodeInComponentTemplate);\n this.addDisposable(new JsxObserver(nodes, nodeInComponentTemplate, void 0, void 0, true));\n }\n cloneNodeFromOriginal(node) {\n if (!node) {\n return [];\n }\n const jsx = getOriginalJsxForNode(node);\n if (jsx) {\n return jsx.children;\n }\n if (\"content\" in node) {\n const clone = document.importNode(node.content, true);\n return [...clone.childNodes];\n }\n const nodeArray = Array.isArray(node) ? node : [node];\n return nodeArray.map((n) => n.cloneNode(true));\n }\n getSlot(slotName) {\n const { $componentTemplateSlotNodes } = this.$context;\n if (!slotName) {\n return $componentTemplateSlotNodes[\"\"] || [...this.$context.$componentTemplateNodes].filter((n) => !n.getAttribute || !n.getAttribute(\"slot\"));\n }\n return $componentTemplateSlotNodes[slotName];\n }\n static get allowVirtualElements() {\n return true;\n }\n}\n", "// @tko/binding.component \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport component from \"./componentBinding\";\nimport slot from \"./slotBinding\";\nexport const bindings = { component, slot };\n", "// @tko/filter.punches \uD83E\uDD4A 4.0.0 ESM\n\"use strict\";\nimport { unwrap, toJS } from \"@tko/observable\";\nconst sproto = String.prototype;\nconst filters = {\n // Convert value to uppercase\n uppercase: function(value) {\n return sproto.toUpperCase.call(unwrap(value));\n },\n // Convert value to lowercase\n lowercase: function(value) {\n return sproto.toLowerCase.call(unwrap(value));\n },\n // Return default value if the input value is empty or null\n default: function(value, defaultValue) {\n value = unwrap(value);\n if (typeof value === \"function\") {\n return value;\n }\n if (typeof value === \"string\") {\n return sproto.trim.call(value) === \"\" ? defaultValue : value;\n }\n return value == null || value.length == 0 ? defaultValue : value;\n },\n // Return the value with the search string replaced with the replacement string\n replace: function(value, search, replace) {\n return sproto.replace.call(unwrap(value), search, replace);\n },\n fit: function(value, length, replacement, trimWhere) {\n value = unwrap(value);\n if (length && (\"\" + value).length > length) {\n replacement = \"\" + (replacement || \"...\");\n length = length - replacement.length;\n value = \"\" + value;\n switch (trimWhere) {\n case \"left\":\n return replacement + value.slice(-length);\n case \"middle\": {\n const leftLen = Math.ceil(length / 2);\n return value.substr(0, leftLen) + replacement + value.slice(leftLen - length);\n }\n default:\n return value.substr(0, length) + replacement;\n }\n } else {\n return value;\n }\n },\n // Convert a model object to JSON\n json: function(rootObject, space, replacer) {\n return JSON.stringify(toJS(rootObject), replacer, space);\n },\n // Format a number using the browser's toLocaleString\n number: function(value) {\n return (+unwrap(value)).toLocaleString();\n }\n};\nexport { filters };\n", "import { Builder } from '@tko/builder'\n\nimport { VirtualProvider } from '@tko/provider.virtual'\nimport { DataBindProvider } from '@tko/provider.databind'\nimport { ComponentProvider } from '@tko/provider.component'\nimport { AttributeProvider } from '@tko/provider.attr'\nimport { MultiProvider } from '@tko/provider.multi'\nimport {\n TextMustacheProvider, AttributeMustacheProvider\n} from '@tko/provider.mustache'\nimport {\n NativeProvider\n} from '@tko/provider.native'\n\nimport { bindings as coreBindings } from '@tko/binding.core'\nimport { bindings as templateBindings } from '@tko/binding.template'\nimport { bindings as ifBindings } from '@tko/binding.if'\nimport { bindings as foreachBindings } from '@tko/binding.foreach'\nimport { bindings as componentBindings } from '@tko/binding.component'\n\nimport { filters } from '@tko/filter.punches'\n\nimport components from '@tko/utils.component'\nimport { createElement, Fragment } from '@tko/utils.jsx'\nimport { JsxObserver } from '@tko/utils.jsx'\n\nimport { overloadOperator } from '@tko/utils.parser'\n\ndeclare const BUILD_VERSION: string\n\n/** Overload \"evil twins\" with strict equivalents */\noverloadOperator('==', (a, b) => a === b)\noverloadOperator('!=', (a, b) => a !== b)\n\nconst builder = new Builder({\n filters,\n extenders: {},\n options: {},\n provider: new MultiProvider({\n providers: [\n new ComponentProvider(),\n new NativeProvider(),\n new AttributeMustacheProvider(),\n new TextMustacheProvider(),\n new DataBindProvider(),\n new VirtualProvider(),\n new AttributeProvider(),\n ]\n }),\n bindings: [\n coreBindings,\n templateBindings,\n ifBindings,\n foreachBindings,\n componentBindings,\n { each: foreachBindings.foreach }\n ]\n})\n\nconst version = BUILD_VERSION\n\nexport default builder.create({\n jsx: {\n createElement,\n Fragment,\n /** Public render function that converts JSX to DOM nodes */\n render(jsx: any) {\n const fragment = document.createDocumentFragment()\n const observer = new JsxObserver(jsx, fragment)\n // Return the first child if single node, or the fragment if multiple\n const node = fragment.childNodes.length === 1 ? fragment.firstChild : fragment\n return {\n node,\n dispose: () => observer.dispose()\n }\n },\n },\n components,\n version,\n Component: components.ComponentABC,\n})\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["value", "options", "jQuery", "html", "value", "value", "jQuery", "value", "childNodes", "setDomNodeChildren", "setDomNodeChildren", "html", "div", "jQuery", "setDomNodeChildren", "value", "value", "childNodes", "div", "options", "subscribable", "value", "options2", "peek2", "value", "value", "options", "value", "value", "Node", "Node", "Node", "value", "member", "Node", "Node", "Node", "value", "Node", "ternary", "member", "bindings", "options2", "options2", "isInitial", "value", "extenders", "value", "peek", "observable", "value", "observable", "options", "boundElementDomDataKey", "subscribable", "bindingContext", "bindings", "boundElementDomDataKey", "options", "value", "tagNameLower", "text", "bindingContext", "options2", "bindingContext", "options", "value", "bindingContext", "options", "bindings", "extenders", "filters", "options2", "value", "value", "bindings", "value", "value2", "childNodes", "value", "value", "attr", "bindings", "text", "Expression", "attr", "value", "bindings", "value", "bindingContext", "debounce", "throttle", "value", "value", "value", "value", "bindingContext", "options", "selectedOptions", "value", "value", "bindingContext", "value", "w", "value", "bindingContext", "bindings", "options", "bindings", "value", "isInitial", "w", "bindings", "computed", "value", "attr", "value", "value", "bindings", "value", "bindings"]
|
|
7
7
|
}
|