@tko/bind 4.0.0-alpha8.0 → 4.0.0-beta1.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/BindingHandler.js +57 -0
- package/dist/BindingHandler.js.map +7 -0
- package/dist/BindingResult.js +41 -0
- package/dist/BindingResult.js.map +7 -0
- package/dist/DescendantBindingHandler.js +42 -0
- package/dist/DescendantBindingHandler.js.map +7 -0
- package/dist/LegacyBindingHandler.js +84 -0
- package/dist/LegacyBindingHandler.js.map +7 -0
- package/dist/applyBindings.js +331 -0
- package/dist/applyBindings.js.map +7 -0
- package/dist/arrayToDomNodeChildren.js +171 -0
- package/dist/arrayToDomNodeChildren.js.map +7 -0
- package/dist/bindingContext.js +122 -0
- package/dist/bindingContext.js.map +7 -0
- package/dist/bindingEvent.js +24 -0
- package/dist/bindingEvent.js.map +7 -0
- package/dist/index.cjs +2972 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +7 -0
- package/dist/index.mjs +12 -0
- package/dist/index.mjs.map +7 -0
- package/package.json +20 -30
- package/dist/bind.es6.js +0 -996
- package/dist/bind.es6.js.map +0 -1
- package/dist/bind.js +0 -1185
- package/dist/bind.js.map +0 -1
package/dist/bind.es6.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bind.es6.js","sources":["../src/bindingEvent.js","../src/bindingContext.js","../src/BindingResult.js","../src/BindingHandler.js","../src/LegacyBindingHandler.js","../src/applyBindings.js","../src/arrayToDomNodeChildren.js","../src/DescendantBindingHandler.js"],"sourcesContent":["\nimport {\n domData, removeDisposeCallback, arrayRemoveItem, addDisposeCallback\n} from '@tko/utils'\n\nimport {\n subscribable\n} from '@tko/observable'\n\nexport const contextAncestorBindingInfo = Symbol('_ancestorBindingInfo')\nconst boundElementDomDataKey = domData.nextKey()\n\nexport const bindingEvent = {\n childrenComplete: 'childrenComplete',\n descendantsComplete: 'descendantsComplete',\n\n subscribe (node, event, callback, context) {\n const bindingInfo = domData.getOrSet(node, boundElementDomDataKey, {})\n if (!bindingInfo.eventSubscribable) {\n bindingInfo.eventSubscribable = new subscribable()\n }\n return bindingInfo.eventSubscribable.subscribe(callback, context, event)\n },\n\n notify (node, event) {\n const bindingInfo = domData.get(node, boundElementDomDataKey)\n if (bindingInfo) {\n if (bindingInfo.eventSubscribable) {\n bindingInfo.eventSubscribable.notifySubscribers(node, event)\n }\n }\n }\n}\n\n","import {\n extend, options, anyDomNodeIsAttachedToDocument, addDisposeCallback,\n arrayRemoveItem, domData\n} from '@tko/utils'\n\nimport {\n computed, pureComputed\n} from '@tko/computed'\n\nimport {\n unwrap, isObservable\n} from '@tko/observable'\n\nimport {\n contextAncestorBindingInfo\n} from './bindingEvent'\n\nexport const boundElementDomDataKey = domData.nextKey()\n\nexport const contextSubscribeSymbol = Symbol('Knockout Context Subscription')\n\n// Unique stub to indicate inheritance.\nconst inheritParentIndicator = Symbol('Knockout Parent Indicator')\n\n// The bindingContext constructor is only called directly to create the root context. For child\n// contexts, use bindingContext.createChildContext or bindingContext.extend.\nexport function bindingContext (dataItemOrAccessor, parentContext, dataItemAlias, extendCallback, settings) {\n const self = this\n const shouldInheritData = dataItemOrAccessor === inheritParentIndicator\n const realDataItemOrAccessor = shouldInheritData ? undefined : dataItemOrAccessor\n const isFunc = typeof realDataItemOrAccessor === 'function' && !isObservable(realDataItemOrAccessor)\n\n // Export 'ko' in the binding context so it will be available in bindings and templates\n // even if 'ko' isn't exported as a global, such as when using an AMD loader.\n // See https://github.com/SteveSanderson/knockout/issues/490\n self.ko = options.knockoutInstance\n\n let nodes\n let subscribable\n\n // The binding context object includes static properties for the current, parent, and root view models.\n // If a view model is actually stored in an observable, the corresponding binding context object, and\n // any child contexts, must be updated when the view model is changed.\n function updateContext () {\n // Most of the time, the context will directly get a view model object, but if a function is given,\n // we call the function to retrieve the view model. If the function accesses any observables or returns\n // an observable, the dependency is tracked, and those observables can later cause the binding\n // context to be updated.\n const dataItemOrObservable = isFunc ? realDataItemOrAccessor() : realDataItemOrAccessor\n let dataItem = unwrap(dataItemOrObservable)\n\n if (parentContext) {\n // When a \"parent\" context is given, register a dependency on the parent context. Thus whenever the\n // parent context is updated, this context will also be updated.\n if (parentContext[contextSubscribeSymbol]) {\n parentContext[contextSubscribeSymbol]()\n }\n\n // Copy $root and any custom properties from the parent context\n extend(self, parentContext)\n\n // Copy Symbol properties\n if (contextAncestorBindingInfo in parentContext) {\n self[contextAncestorBindingInfo] = parentContext[contextAncestorBindingInfo]\n }\n } else {\n self.$parents = []\n self.$root = dataItem\n }\n\n self[contextSubscribeSymbol] = subscribable\n\n if (shouldInheritData) {\n dataItem = self.$data\n } else {\n self.$rawData = dataItemOrObservable\n self.$data = dataItem\n }\n\n if (dataItemAlias) { self[dataItemAlias] = dataItem }\n\n // The extendCallback function is provided when creating a child context or extending a context.\n // It handles the specific actions needed to finish setting up the binding context. Actions in this\n // function could also add dependencies to this binding context.\n if (extendCallback) { extendCallback(self, parentContext, dataItem) }\n\n return self.$data\n }\n\n if (settings && settings.exportDependencies) {\n // The \"exportDependencies\" option means that the calling code will track any dependencies and re-create\n // the binding context when they change.\n updateContext()\n } else {\n subscribable = pureComputed(updateContext)\n subscribable.peek()\n\n // At this point, the binding context has been initialized, and the \"subscribable\" computed observable is\n // subscribed to any observables that were accessed in the process. If there is nothing to track, the\n // computed will be inactive, and we can safely throw it away. If it's active, the computed is stored in\n // the context object.\n if (subscribable.isActive()) {\n self[contextSubscribeSymbol] = subscribable\n\n // Always notify because even if the model ($data) hasn't changed, other context properties might have changed\n subscribable['equalityComparer'] = null\n } else {\n self[contextSubscribeSymbol] = undefined\n }\n }\n}\n\nObject.assign(bindingContext.prototype, {\n\n lookup (token, globals, node) {\n // short circuits\n switch (token) {\n case '$element': return node\n case '$context': return this\n case 'this': case '$data': return this.$data\n }\n const $data = this.$data\n // instanceof Object covers 1. {}, 2. [], 3. function() {}, 4. new *; it excludes undefined, null, primitives.\n if ($data instanceof Object && token in $data) { return $data[token] }\n if (token in this) { return this[token] }\n if (token in globals) { return globals[token] }\n\n throw new Error(`The variable \"${token}\" was not found on $data, $context, or globals.`)\n },\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(dataItemOrAccessor, this, dataItemAlias, function (self, parentContext) {\n // Extend the context hierarchy by setting the appropriate pointers\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) { extendCallback(self) }\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 // If the parent context references an observable view model, \"_subscribable\" will always be the\n // latest view model object. If not, \"_subscribable\" isn't set, and we can use the static \"$data\" value.\n return new bindingContext(inheritParentIndicator, this, null, function (self, parentContext) {\n extend(self, typeof properties === 'function' ? properties.call(self) : properties)\n })\n },\n\n createStaticChildContext (dataItemOrAccessor, dataItemAlias) {\n return this.createChildContext(dataItemOrAccessor, dataItemAlias, null, { 'exportDependencies': true })\n }\n})\n\nexport function storedBindingContextForNode (node) {\n const bindingInfo = domData.get(node, boundElementDomDataKey)\n return bindingInfo && bindingInfo.context\n}\n\n// Retrieving binding context from arbitrary nodes\nexport function contextFor (node) {\n // We can only do something meaningful for elements and comment nodes (in particular, not text nodes, as IE can't store domdata for them)\n if (node && (node.nodeType === 1 || node.nodeType === 8)) {\n return storedBindingContextForNode(node)\n }\n}\n\nexport function dataFor (node) {\n var context = contextFor(node)\n return context ? context.$data : undefined\n}\n","\n\nexport class BindingResult {\n constructor ({asyncBindingsApplied, rootNode, bindingContext}) {\n Object.assign(this, {\n rootNode,\n bindingContext,\n isSync: asyncBindingsApplied.size === 0,\n isComplete: this.isSync\n })\n\n if (!this.isSync) {\n this.completionPromise = this.completeWhenBindingsFinish(asyncBindingsApplied)\n }\n }\n\n async completeWhenBindingsFinish (asyncBindingsApplied) {\n await Promise.all(asyncBindingsApplied)\n this.isComplete = true\n return this\n }\n}\n","\nimport {\n options\n} from '@tko/utils'\n\nimport {\n isWriteableObservable\n} from '@tko/observable'\n\nimport {\n LifeCycle\n} from '@tko/lifecycle'\n\nexport class BindingHandler extends LifeCycle {\n constructor (params) {\n super()\n const {$element, valueAccessor, allBindings, $context} = params\n Object.assign(this, {\n valueAccessor,\n allBindings,\n $element,\n $context,\n $data: $context.$data\n })\n\n this.anchorTo($element)\n }\n\n get value () { return this.valueAccessor() }\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\n get controlsDescendants () { return false }\n\n static get allowVirtualElements () { return false }\n static get isBindingHandlerClass () { 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 () { return true }\n\n static registerAs (name, provider = options.bindingProviderInstance) {\n provider.bindingHandlers.set(name, this)\n }\n}\n\n/**\n * An AsyncBindingHandler shall call `completeBinding` when the binding\n * is to be considered complete.\n */\nconst ResolveSymbol = Symbol('Async Binding Resolved')\n\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\n get bindingCompleted () { return this.bindingCompletion }\n}\n","\nimport {\n virtualElements, options\n} from '@tko/utils'\n\nimport {\n dependencyDetection\n} from '@tko/observable'\n\nimport {\n BindingHandler\n} from './BindingHandler'\n\n/**\n * We have no guarantees, for users employing legacy bindings,\n * that it has not been changed with a modification like\n *\n * ko.bindingHandlers[name] = { init: ...}\n *\n * ... so we have to keep track by way of a map.\n */\nconst PossibleWeakMap = options.global.WeakMap || Map\nconst legacyBindingMap = new PossibleWeakMap()\n\nexport class LegacyBindingHandler extends BindingHandler {\n constructor (params) {\n super(params)\n const handler = this.handler\n this.onError = params.onError\n\n if (typeof handler.dispose === 'function') {\n this.addDisposable(handler)\n }\n\n try {\n this.initReturn = handler.init && handler.init(...this.legacyArgs)\n } catch (e) {\n params.onError('init', e)\n }\n }\n\n onValueChange () {\n const handler = this.handler\n if (typeof handler.update !== 'function') { return }\n try {\n handler.update(...this.legacyArgs)\n } catch (e) {\n this.onError('update', e)\n }\n }\n\n get legacyArgs () {\n return [\n this.$element, this.valueAccessor, this.allBindings,\n this.$data, this.$context\n ]\n }\n\n get controlsDescendants () {\n const objectToTest = this.initReturn || this.handler || {}\n return objectToTest.controlsDescendantBindings\n }\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\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 () { return handler.after }\n static get allowVirtualElements () {\n return handler.allowVirtualElements || virtualElements.allowedBindings[key]\n }\n }\n }\n\n if (typeof handler === 'object') {\n return class extends LegacyBindingHandler {\n get handler () { return handler }\n static get after () { return handler.after }\n static get allowVirtualElements () {\n return handler.allowVirtualElements || virtualElements.allowedBindings[key]\n }\n }\n }\n\n throw new Error('The given handler is not an appropriate type.')\n }\n}\n","\n/* eslint no-cond-assign: 0 */\n\nimport {\n extend, objectMap, virtualElements, tagNameLower, domData, objectForEach,\n arrayIndexOf, arrayForEach, options\n} from '@tko/utils'\n\nimport {\n dependencyDetection\n} from '@tko/observable'\n\nimport {\n computed\n} from '@tko/computed'\n\nimport {\n dataFor, bindingContext, boundElementDomDataKey, contextSubscribeSymbol\n} from './bindingContext'\n\nimport {\n bindingEvent\n} from './bindingEvent'\n\nimport {\n BindingResult\n} from './BindingResult'\n\nimport {\n LegacyBindingHandler\n} from './LegacyBindingHandler'\n\n// The following element types will not be recursed into during binding.\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}\n\nfunction getBindingProvider () {\n return options.bindingProviderInstance.instance || options.bindingProviderInstance\n}\n\nfunction isProviderForNode (provider, node) {\n const nodeTypes = provider.FOR_NODE_TYPES || [1, 3, 8]\n return nodeTypes.includes(node.nodeType)\n}\n\nfunction asProperHandlerClass (handler, bindingKey) {\n if (!handler) { return }\n return handler.isBindingHandlerClass ? handler\n : LegacyBindingHandler.getOrCreateFor(bindingKey, handler)\n}\n\nfunction getBindingHandlerFromComponent (bindingKey, $component) {\n if (!$component || typeof $component.getBindingHandler !== 'function') { return }\n return asProperHandlerClass($component.getBindingHandler(bindingKey))\n}\n\nexport function getBindingHandler (bindingKey) {\n const bindingDefinition = options.getBindingHandler(bindingKey) || getBindingProvider().bindingHandlers.get(bindingKey)\n return asProperHandlerClass(bindingDefinition, bindingKey)\n}\n\n// Returns the value of a valueAccessor function\nfunction evaluateValueAccessor (valueAccessor) {\n return valueAccessor()\n}\n\nfunction applyBindingsToDescendantsInternal (bindingContext, elementOrVirtualElement, asyncBindingsApplied) {\n let nextInQueue = virtualElements.firstChild(elementOrVirtualElement)\n\n if (!nextInQueue) { return }\n\n let currentChild\n const provider = getBindingProvider()\n const preprocessNode = provider.preprocessNode\n\n // Preprocessing allows a binding provider to mutate a node before bindings are applied to it. For example it's\n // possible to insert new siblings after it, and/or replace the node with a different one. This can be used to\n // implement custom binding syntaxes, such as {{ value }} for string interpolation, or custom element types that\n // trigger insertion of <template> contents at that point in the document.\n if (preprocessNode) {\n while (currentChild = nextInQueue) {\n nextInQueue = virtualElements.nextSibling(currentChild)\n preprocessNode.call(provider, currentChild)\n }\n\n // Reset nextInQueue for the next loop\n nextInQueue = virtualElements.firstChild(elementOrVirtualElement)\n }\n\n while (currentChild = nextInQueue) {\n // Keep a record of the next child *before* applying bindings, in case the binding removes the current child from its position\n nextInQueue = virtualElements.nextSibling(currentChild)\n applyBindingsToNodeAndDescendantsInternal(bindingContext, currentChild, asyncBindingsApplied)\n }\n\n bindingEvent.notify(elementOrVirtualElement, bindingEvent.childrenComplete)\n}\n\nfunction hasBindings (node) {\n const provider = getBindingProvider()\n return isProviderForNode(provider, node) && provider.nodeHasBindings(node)\n}\n\nfunction nodeOrChildHasBindings (node) {\n return hasBindings(node) || [...node.childNodes].some(c => nodeOrChildHasBindings(c))\n}\n\nfunction applyBindingsToNodeAndDescendantsInternal (bindingContext, nodeVerified, asyncBindingsApplied) {\n var isElement = nodeVerified.nodeType === 1\n if (isElement) { // Workaround IE <= 8 HTML parsing weirdness\n virtualElements.normaliseVirtualElementDomStructure(nodeVerified)\n }\n\n // Perf optimisation: Apply bindings only if...\n // (1) We need to store the binding info for the node (all element nodes)\n // (2) It might have bindings (e.g., it has a data-bind attribute, or it's a marker for a containerless template)\n\n let shouldApplyBindings = isElement || // Case (1)\n hasBindings(nodeVerified) // Case (2)\n\n const { shouldBindDescendants } = shouldApplyBindings\n ? applyBindingsToNodeInternal(nodeVerified, null, bindingContext, asyncBindingsApplied)\n : { shouldBindDescendants: true }\n\n if (shouldBindDescendants && !bindingDoesNotRecurseIntoElementTypes[tagNameLower(nodeVerified)]) {\n // We're recursing automatically into (real or virtual) child nodes without changing binding contexts. So,\n // * For children of a *real* element, the binding context is certainly the same as on their DOM .parentNode,\n // hence bindingContextsMayDifferFromDomParentElement is false\n // * For children of a *virtual* element, we can't be sure. Evaluating .parentNode on those children may\n // skip over any number of intermediate virtual elements, any of which might define a custom binding context,\n // hence bindingContextsMayDifferFromDomParentElement is true\n applyBindingsToDescendantsInternal(bindingContext, nodeVerified, asyncBindingsApplied)\n }\n}\n\n\nfunction * topologicalSortBindings (bindings, $component) {\n const results = []\n // Depth-first sort\n const bindingsConsidered = {} // A temporary record of which bindings are already in 'result'\n const cyclicDependencyStack = [] // Keeps track of a depth-search so that, if there's a cycle, we know which bindings caused it\n\n objectForEach(bindings, function pushBinding (bindingKey) {\n if (!bindingsConsidered[bindingKey]) {\n const binding = getBindingHandlerFromComponent(bindingKey, $component) || getBindingHandler(bindingKey)\n if (!binding) { return }\n // First add dependencies (if any) of the current binding\n if (binding.after) {\n cyclicDependencyStack.push(bindingKey)\n arrayForEach(binding.after, function (bindingDependencyKey) {\n if (!bindings[bindingDependencyKey]) { return }\n if (arrayIndexOf(cyclicDependencyStack, bindingDependencyKey) !== -1) {\n throw Error('Cannot combine the following bindings, because they have a cyclic dependency: ' + cyclicDependencyStack.join(', '))\n } else {\n pushBinding(bindingDependencyKey)\n }\n })\n cyclicDependencyStack.length--\n }\n // Next add the current binding\n results.push([ bindingKey, binding ])\n }\n bindingsConsidered[bindingKey] = true\n })\n\n for (const result of results) { yield result }\n}\n\nfunction applyBindingsToNodeInternal (node, sourceBindings, bindingContext, asyncBindingsApplied) {\n const bindingInfo = domData.getOrSet(node, boundElementDomDataKey, {})\n // Prevent multiple applyBindings calls for the same node, except when a binding value is specified\n const alreadyBound = bindingInfo.alreadyBound\n if (!sourceBindings) {\n if (alreadyBound) {\n if (!nodeOrChildHasBindings(node)) { return false }\n onBindingError({\n during: 'apply',\n errorCaptured: new Error('You cannot apply bindings multiple times to the same element.'),\n element: node,\n bindingContext\n })\n return false\n }\n bindingInfo.alreadyBound = true\n }\n\n if (!alreadyBound) {\n bindingInfo.context = bindingContext\n }\n\n // Use bindings if given, otherwise fall back on asking the bindings provider to give us some bindings\n var bindings\n if (sourceBindings && typeof sourceBindings !== 'function') {\n bindings = sourceBindings\n } else {\n const provider = getBindingProvider()\n const getBindings = provider.getBindingAccessors\n\n if (isProviderForNode(provider, node)) {\n // Get the binding from the provider within a computed observable so that we can update the bindings whenever\n // the binding context is updated or if the binding provider accesses observables.\n var bindingsUpdater = computed(\n function () {\n bindings = sourceBindings ? sourceBindings(bindingContext, node) : getBindings.call(provider, node, bindingContext)\n // Register a dependency on the binding context to support observable view models.\n if (bindings && bindingContext[contextSubscribeSymbol]) { bindingContext[contextSubscribeSymbol]() }\n return bindings\n },\n null, { disposeWhenNodeIsRemoved: node }\n )\n\n if (!bindings || !bindingsUpdater.isActive()) { bindingsUpdater = null }\n }\n }\n\n var bindingHandlerThatControlsDescendantBindings\n if (bindings) {\n const $component = bindingContext.$component || {}\n\n const allBindingHandlers = {}\n domData.set(node, 'bindingHandlers', allBindingHandlers)\n\n // Return the value accessor for a given binding. When bindings are static (won't be updated because of a binding\n // context update), just return the value accessor from the binding. Otherwise, return a function that always gets\n // the latest binding value and registers a dependency on the binding updater.\n const getValueAccessor = bindingsUpdater\n ? (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\n // Use of allBindings as a function is maintained for backwards compatibility, but its use is deprecated\n function allBindings () {\n return objectMap(bindingsUpdater ? bindingsUpdater() : bindings, evaluateValueAccessor)\n }\n\n // The following is the 3.x allBindings API\n allBindings.has = (key) => key in bindings\n allBindings.get = (key) => bindings[key] && evaluateValueAccessor(getValueAccessor(key))\n\n if (bindingEvent.childrenComplete in bindings) {\n bindingEvent.subscribe(node, bindingEvent.childrenComplete, () => {\n const callback = evaluateValueAccessor(bindings[bindingEvent.childrenComplete])\n if (!callback) { return }\n const nodes = virtualElements.childNodes(node)\n if (nodes.length) { callback(nodes, dataFor(nodes[0])) }\n })\n }\n\n const bindingsGenerated = topologicalSortBindings(bindings, $component)\n const nodeAsyncBindingPromises = new Set()\n for (const [key, BindingHandlerClass] of bindingsGenerated) {\n // Go through the sorted bindings, calling init and update for each\n function reportBindingError (during, errorCaptured) {\n onBindingError({\n during,\n errorCaptured,\n bindings,\n allBindings,\n bindingKey: key,\n bindingContext,\n element: node,\n valueAccessor: getValueAccessor(key)\n })\n }\n\n if (node.nodeType === 8 && !BindingHandlerClass.allowVirtualElements) {\n throw new Error(`The binding '${key}' cannot be used with virtual elements`)\n }\n\n try {\n const bindingHandler = dependencyDetection.ignore(() =>\n new BindingHandlerClass({\n allBindings,\n $element: node,\n $context: bindingContext,\n onError: reportBindingError,\n valueAccessor (...v) { return getValueAccessor(key)(...v) }\n })\n )\n\n if (bindingHandler.onValueChange) {\n dependencyDetection.ignore(() =>\n bindingHandler.computed('onValueChange')\n )\n }\n\n // Expose the bindings via domData.\n allBindingHandlers[key] = bindingHandler\n\n if (bindingHandler.controlsDescendants) {\n if (bindingHandlerThatControlsDescendantBindings !== undefined) { throw new Error('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 bindingHandlerThatControlsDescendantBindings = key\n }\n\n if (bindingHandler.bindingCompleted instanceof Promise) {\n asyncBindingsApplied.add(bindingHandler.bindingCompleted)\n nodeAsyncBindingPromises.add(bindingHandler.bindingCompleted)\n }\n } catch (err) {\n reportBindingError('creation', err)\n }\n }\n\n triggerDescendantsComplete(node, bindings, nodeAsyncBindingPromises)\n }\n\n const shouldBindDescendants = bindingHandlerThatControlsDescendantBindings === undefined\n return { shouldBindDescendants }\n}\n\n/**\n *\n * @param {HTMLElement} node\n * @param {Object} bindings\n * @param {[Promise]} nodeAsyncBindingPromises\n */\nfunction triggerDescendantsComplete (node, bindings, nodeAsyncBindingPromises) {\n /** descendantsComplete ought to be an instance of the descendantsComplete\n * binding handler. */\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) { accessor(node) }\n }\n if (nodeAsyncBindingPromises.size) {\n Promise.all(nodeAsyncBindingPromises).then(callback)\n } else {\n callback()\n }\n}\n\n\nfunction getBindingContext (viewModelOrBindingContext, extendContextCallback) {\n return viewModelOrBindingContext && (viewModelOrBindingContext instanceof bindingContext)\n ? viewModelOrBindingContext\n : new bindingContext(viewModelOrBindingContext, undefined, undefined, extendContextCallback)\n}\n\nexport function applyBindingAccessorsToNode (node, bindings, viewModelOrBindingContext, asyncBindingsApplied) {\n if (node.nodeType === 1) { // If it's an element, workaround IE <= 8 HTML parsing weirdness\n virtualElements.normaliseVirtualElementDomStructure(node)\n }\n return applyBindingsToNodeInternal(node, bindings, getBindingContext(viewModelOrBindingContext), asyncBindingsApplied)\n}\n\nexport function applyBindingsToNode (node, bindings, viewModelOrBindingContext) {\n const asyncBindingsApplied = new Set()\n const bindingContext = getBindingContext(viewModelOrBindingContext)\n const bindingAccessors = getBindingProvider().makeBindingAccessors(bindings, bindingContext, node)\n applyBindingAccessorsToNode(node, bindingAccessors, bindingContext, asyncBindingsApplied)\n return new BindingResult({asyncBindingsApplied, rootNode: node, bindingContext})\n}\n\nexport function applyBindingsToDescendants (viewModelOrBindingContext, rootNode) {\n const asyncBindingsApplied = new Set()\n if (rootNode.nodeType === 1 || rootNode.nodeType === 8) {\n const bindingContext = getBindingContext(viewModelOrBindingContext)\n applyBindingsToDescendantsInternal(bindingContext, rootNode, asyncBindingsApplied)\n return new BindingResult({asyncBindingsApplied, rootNode, bindingContext})\n }\n return new BindingResult({asyncBindingsApplied, rootNode})\n}\n\nexport function applyBindings (viewModelOrBindingContext, rootNode, extendContextCallback) {\n const asyncBindingsApplied = new Set()\n // If jQuery is loaded after Knockout, we won't initially have access to it. So save it here.\n if (!options.jQuery === undefined && options.jQuery) {\n options.jQuery = options.jQuery\n }\n\n // rootNode is optional\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 !== 1 && rootNode.nodeType !== 8) {\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}\n\nfunction onBindingError (spec) {\n var error, bindingText\n if (spec.bindingKey) {\n // During: 'init' or initial 'update'\n error = spec.errorCaptured\n spec.message = 'Unable to process binding \"' + spec.bindingKey +\n '\" in binding \"' + spec.bindingKey +\n '\"\\nMessage: ' + (error.message ? error.message : error)\n } else {\n // During: 'apply'\n error = spec.errorCaptured\n }\n try {\n extend(error, spec)\n } catch (e) {\n // Read-only error e.g. a DOMEXception.\n spec.stack = error.stack\n error = new Error(error.message ? error.message : error)\n extend(error, spec)\n }\n options.onError(error)\n}\n","/* eslint no-cond-assign: 0 */\nimport {\n fixUpContinuousNodeArray, replaceDomNodes, arrayPushAll,\n anyDomNodeIsAttachedToDocument, domData, arrayMap, arrayForEach,\n virtualElements, extend, cleanNode, removeNode, compareArrays\n} from '@tko/utils'\n\nimport {\n dependencyDetection, observable\n} from '@tko/observable'\n\nimport { computed } from '@tko/computed'\n\n// Objective:\n// * Given an input array, a container DOM node, and a function from array elements to arrays of DOM nodes,\n// map the array elements to arrays of DOM nodes, concatenate together all these arrays, and use them to populate the container DOM node\n// * Next time we're given the same combination of things (with the array possibly having mutated), update the container DOM node\n// so that its children is again the concatenation of the mappings of the array elements, but don't re-map any array elements that we\n// previously mapped - retain those nodes, and just insert/delete other ones\n\n// \"callbackAfterAddingNodes\" will be invoked after any \"mapping\"-generated nodes are inserted into the container node\n// You can use this, for example, to activate bindings on those nodes.\n\nfunction mapNodeAndRefreshWhenChanged (containerNode, mapping, valueToMap, callbackAfterAddingNodes, index) {\n // Map this array value inside a dependentObservable so we re-map when any dependency changes\n var mappedNodes = []\n var dependentObservable = computed(function () {\n var newMappedNodes = mapping(valueToMap, index, fixUpContinuousNodeArray(mappedNodes, containerNode)) || []\n\n // On subsequent evaluations, just replace the previously-inserted DOM nodes\n if (mappedNodes.length > 0) {\n replaceDomNodes(mappedNodes, newMappedNodes)\n if (callbackAfterAddingNodes) { dependencyDetection.ignore(callbackAfterAddingNodes, null, [valueToMap, newMappedNodes, index]) }\n }\n\n // Replace the contents of the mappedNodes array, thereby updating the record\n // of which nodes would be deleted if valueToMap was itself later removed\n mappedNodes.length = 0\n arrayPushAll(mappedNodes, newMappedNodes)\n }, null, { disposeWhenNodeIsRemoved: containerNode, disposeWhen: function () { return !anyDomNodeIsAttachedToDocument(mappedNodes) } })\n return { mappedNodes: mappedNodes, dependentObservable: (dependentObservable.isActive() ? dependentObservable : undefined) }\n}\n\nvar lastMappingResultDomDataKey = domData.nextKey()\nlet deletedItemDummyValue = domData.nextKey()\n\nexport function setDomNodeChildrenFromArrayMapping (domNode, array, mapping, options, callbackAfterAddingNodes, editScript) {\n // Compare the provided array against the previous one\n array = array || []\n if (typeof array.length === 'undefined') {\n array = [array]\n }\n options = options || {}\n let lastMappingResult = domData.get(domNode, lastMappingResultDomDataKey)\n let isFirstExecution = !lastMappingResult\n\n // Build the new mapping result\n var newMappingResult = []\n var lastMappingResultIndex = 0\n var newMappingResultIndex = 0\n\n var nodesToDelete = []\n var itemsToProcess = []\n var itemsForBeforeRemoveCallbacks = []\n var itemsForMoveCallbacks = []\n var itemsForAfterAddCallbacks = []\n var mapData\n let countWaitingForRemove = 0\n\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\n function itemMovedOrRetained (oldPosition) {\n mapData = lastMappingResult[oldPosition]\n if (newMappingResultIndex !== oldPosition) {\n itemsForMoveCallbacks.push(mapData)\n }\n // Since updating the index might change the nodes, do so before calling fixUpContinuousNodeArray\n mapData.indexObservable(newMappingResultIndex++)\n fixUpContinuousNodeArray(mapData.mappedNodes, domNode)\n newMappingResult.push(mapData)\n itemsToProcess.push(mapData)\n }\n\n function callCallback (callback, items) {\n if (callback) {\n for (var 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\n if (isFirstExecution) {\n arrayForEach(array, itemAdded)\n } else {\n if (!editScript || (lastMappingResult && lastMappingResult['_countWaitingForRemove'])) {\n // Compare the provided array against the previous one\n var lastArray = isFirstExecution ? [] : arrayMap(lastMappingResult, function (x) { return x.arrayEntry })\n var compareOptions = {\n 'dontLimitMoves': options['dontLimitMoves'],\n 'sparse': true\n }\n editScript = compareArrays(lastArray, array, compareOptions)\n }\n\n for (var 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 === undefined) {\n mapData = lastMappingResult[lastMappingResultIndex]\n\n // Stop tracking changes to the mapping for these nodes\n if (mapData.dependentObservable) {\n mapData.dependentObservable.dispose()\n mapData.dependentObservable = undefined\n }\n\n // Queue these nodes for later removal\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) {\n nodesToDelete.push.apply(nodesToDelete, mapData.mappedNodes)\n }\n }\n }\n lastMappingResultIndex++\n break\n\n case 'added':\n while (newMappingResultIndex < itemIndex) {\n itemMovedOrRetained(lastMappingResultIndex++)\n }\n if (movedIndex !== undefined) {\n itemMovedOrRetained(movedIndex)\n } else {\n itemAdded(editScriptItem['value'])\n }\n break\n }\n }\n\n while (newMappingResultIndex < array.length) {\n itemMovedOrRetained(lastMappingResultIndex++)\n }\n\n // Record that the current view may still contain deleted items\n // because it means we won't be able to use a provided editScript.\n newMappingResult['_countWaitingForRemove'] = countWaitingForRemove\n }\n\n // Store a copy of the array items we just considered so we can difference it next time\n domData.set(domNode, lastMappingResultDomDataKey, newMappingResult)\n\n // Call beforeMove first before any changes have been made to the DOM\n callCallback(options['beforeMove'], itemsForMoveCallbacks)\n\n // Next remove nodes for deleted items (or just clean if there's a beforeRemove callback)\n arrayForEach(nodesToDelete, options['beforeRemove'] ? cleanNode : removeNode)\n\n // Next add/reorder the remaining items (will include deleted items if there's a beforeRemove callback)\n i = 0\n for (var nextNode = virtualElements.firstChild(domNode), lastNode, node; mapData = itemsToProcess[i]; i++) {\n // Get nodes for newly added items\n if (!mapData.mappedNodes) { extend(mapData, mapNodeAndRefreshWhenChanged(domNode, mapping, mapData.arrayEntry, callbackAfterAddingNodes, mapData.indexObservable)) }\n\n // Put nodes in the right place if they aren't there already\n for (var j = 0; node = mapData.mappedNodes[j]; nextNode = node.nextSibling, lastNode = node, j++) {\n if (node !== nextNode) { virtualElements.insertAfter(domNode, node, lastNode) }\n }\n\n // Run the callbacks for newly added nodes (for example, to apply bindings, etc.)\n if (!mapData.initialized && callbackAfterAddingNodes) {\n callbackAfterAddingNodes(mapData.arrayEntry, mapData.mappedNodes, mapData.indexObservable)\n mapData.initialized = true\n }\n }\n\n // If there's a beforeRemove callback, call it after reordering.\n // Note that we assume that the beforeRemove callback will usually be used to remove the nodes using\n // some sort of animation, which is why we first reorder the nodes that will be removed. If the\n // callback instead removes the nodes right away, it would be more efficient to skip reordering them.\n // Perhaps we'll make that change in the future if this scenario becomes more common.\n callCallback(options['beforeRemove'], itemsForBeforeRemoveCallbacks)\n\n // Replace the stored values of deleted items with a dummy value. This provides two benefits: it marks this item\n // as already \"removed\" so we won't call beforeRemove for it again, and it ensures that the item won't match up\n // with an actual item in the array and appear as \"retained\" or \"moved\".\n for (i = 0; i < itemsForBeforeRemoveCallbacks.length; ++i) {\n itemsForBeforeRemoveCallbacks[i].arrayEntry = deletedItemDummyValue\n }\n\n // Finally call afterMove and afterAdd callbacks\n callCallback(options['afterMove'], itemsForMoveCallbacks)\n callCallback(options['afterAdd'], itemsForAfterAddCallbacks)\n}\n","\n\nimport {\n applyBindingsToDescendants\n} from './applyBindings'\n\nimport {\n AsyncBindingHandler\n} from './BindingHandler'\n\n/**\n * This DescendantBindingHandler is a base class for bindings that control\n * descendants, such as the `if`, `with`, `component`, `foreach` and `template`\n * bindings.\n */\nexport class DescendantBindingHandler extends AsyncBindingHandler {\n get controlsDescendants () { 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) { callback(bindingResult) }\n this.completeBinding(bindingResult)\n }\n}\n"],"names":["boundElementDomDataKey","subscribable","bindingContext","options"],"mappings":"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"}
|