{
  "version": 3,
  "sources": ["../index.ts", "../src/computed.ts", "../src/throttleExtender.ts", "../src/proxy.ts", "../src/when.ts"],
  "sourcesContent": ["export * from './src'\n", "//\n// Computed Observable Values\n//\n// (before tko, `computed` was also known as `dependentObservable`)\n//\nimport {\n  addDisposeCallback,\n  arrayForEach,\n  domNodeIsAttachedToDocument,\n  extend,\n  hasOwnProperty,\n  objectForEach,\n  options as koOptions,\n  removeDisposeCallback,\n  safeSetTimeout\n} from '@tko/utils'\n\nimport {\n  dependencyDetection,\n  extenders,\n  valuesArePrimitiveAndEqual,\n  observable,\n  subscribable,\n  LATEST_VALUE\n} from '@tko/observable'\n\nimport type { Observable, Subscribable } from '@tko/observable'\n\nconst computedState: symbol = Symbol('_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}\n\nexport interface Computed<T = any> extends ComputedFunctions<T> {\n  (): T\n  (value: T): this\n}\n\nexport interface ComputedFunctions<T = any> extends Subscribable<T> {\n  // It's possible for a to be undefined, since the equalityComparer is run on the initial\n  // computation with undefined as the first argument. This is user-relevant for deferred computeds.\n  equalityComparer(a: T | undefined, b: T): boolean\n  peek(): T\n  dispose(): void\n  isActive(): boolean\n  getDependenciesCount(): number\n  getDependencies(): Subscribable[]\n}\n\n// used in computed, but empty interface is pointless. Check if it's needed\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface PureComputed<T = any> extends Computed<T> {}\n\nexport type ComputedReadFunction<T = any, TTarget = void> =\n  | Subscribable<T>\n  | Observable<T>\n  | Computed<T>\n  | ((this: TTarget) => T)\nexport type ComputedWriteFunction<T = any, TTarget = void> = (this: TTarget, val: T) => void\nexport type MaybeComputed<T = any> = T | Computed<T>\n\nexport interface ComputedOptions<T = any, TTarget = void> {\n  read?: ComputedReadFunction<T, TTarget>\n  write?: ComputedWriteFunction<T, TTarget>\n  owner?: TTarget\n  pure?: boolean\n  deferEvaluation?: boolean\n  disposeWhenNodeIsRemoved?: Node\n  disposeWhen?: () => boolean\n}\n\ninterface State {\n  latestValue?: any\n  isStale: boolean\n  isDirty: boolean\n  isBeingEvaluated: boolean\n  suppressDisposalUntilDisposeWhenReturnsFalse: boolean\n  isDisposed: boolean\n  pure: boolean\n  isSleeping: boolean\n  readFunction: ComputedReadFunction\n  evaluatorFunctionTarget: any\n  disposeWhenNodeIsRemoved: Node | null\n  disposeWhen?: () => boolean\n  domNodeDisposalCallback: (() => void) | null\n  dependencyTracking: any\n  dependenciesCount: number\n  evaluationTimeoutInstance: any\n}\n\nexport function computed(\n  evaluatorFunctionOrOptions?: ComputedOptions<any, void> | ComputedReadFunction<any, any>,\n  evaluatorFunctionTarget?: any,\n  options?: ComputedOptions\n): Computed {\n  if (typeof evaluatorFunctionOrOptions === 'object') {\n    // Single-parameter syntax - everything is on this \"options\" param\n    options = evaluatorFunctionOrOptions as ComputedOptions\n  } else {\n    // Multi-parameter syntax - construct the options according to the params passed\n    options = options || {}\n    if (evaluatorFunctionOrOptions) {\n      options!.read = evaluatorFunctionOrOptions\n    }\n  }\n  if (typeof options?.read !== 'function') {\n    throw Error('Pass a function that returns the value of the computed')\n  }\n\n  const writeFunction = options.write\n  const state: State = {\n    latestValue: undefined,\n    isStale: true,\n    isDirty: true,\n    isBeingEvaluated: false,\n    suppressDisposalUntilDisposeWhenReturnsFalse: false,\n    isDisposed: false,\n    pure: false,\n    isSleeping: false,\n    readFunction: options.read,\n    evaluatorFunctionTarget: evaluatorFunctionTarget || options.owner,\n    disposeWhenNodeIsRemoved: options.disposeWhenNodeIsRemoved || null,\n    disposeWhen: options.disposeWhen,\n    domNodeDisposalCallback: null,\n    dependencyTracking: {},\n    dependenciesCount: 0,\n    evaluationTimeoutInstance: null\n  }\n\n  function computedObservable() {\n    if (arguments.length > 0) {\n      if (typeof writeFunction === 'function') {\n        // Writing a value\n        writeFunction.apply(state.evaluatorFunctionTarget, arguments as any)\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 // Permits chained assignments\n    } else {\n      // Reading the value\n      if (!state.isDisposed) {\n        dependencyDetection.registerDependency(computedObservable)\n      }\n      if (state.isDirty || (state.isSleeping && (computedObservable as any).haveDependenciesChanged())) {\n        ;(computedObservable as any).evaluateImmediate()\n      }\n      return state.latestValue\n    }\n  }\n\n  computedObservable[computedState] = state\n  computedObservable.isWriteable = typeof writeFunction === 'function'\n\n  subscribable.fn.init(computedObservable)\n\n  // Inherit from 'computed'\n  Object.setPrototypeOf(computedObservable, computed.fn)\n\n  if (options.pure) {\n    state.pure = true\n    state.isSleeping = true // Starts off sleeping; will awake on the first subscription\n    extend(computedObservable, pureComputedOverrides)\n  } else if (options.deferEvaluation) {\n    extend(computedObservable, deferEvaluationOverrides)\n  }\n\n  if (koOptions.deferUpdates) {\n    extenders.deferred(computedObservable, true)\n  }\n\n  if (koOptions.debug) {\n    // #1731 - Aid debugging by exposing the computed's options\n    computedObservable._options = options\n  }\n\n  if (state.disposeWhenNodeIsRemoved) {\n    // Since this computed is associated with a DOM node, and we don't want to dispose the computed\n    // until the DOM node is *removed* from the document (as opposed to never having been in the document),\n    // we'll prevent disposal until \"disposeWhen\" first returns false.\n    state.suppressDisposalUntilDisposeWhenReturnsFalse = true\n\n    // disposeWhenNodeIsRemoved: true can be used to opt into the \"only dispose after first false result\"\n    // behavior even if there's no specific node to watch. In that case, clear the option so we don't try\n    // to watch for a non-node's disposal. This technique is intended for KO's internal use only and shouldn't\n    // be documented or used by application code, as it's likely to change in a future version of KO.\n    if (!state.disposeWhenNodeIsRemoved.nodeType) {\n      state.disposeWhenNodeIsRemoved = null\n    }\n  }\n\n  // Evaluate, unless sleeping or deferEvaluation is true\n  if (!state.isSleeping && !options.deferEvaluation) {\n    ;(computedObservable as any).evaluateImmediate()\n  }\n\n  // Attach a DOM node disposal callback so that the computed will be proactively disposed as soon as the node is\n  // removed using ko.removeNode. But skip if isActive is false (there will never be any dependencies to dispose).\n  if (state.disposeWhenNodeIsRemoved && (computedObservable as any).isActive()) {\n    addDisposeCallback(\n      state.disposeWhenNodeIsRemoved,\n      (state.domNodeDisposalCallback = function () {\n        ;(computedObservable as any).dispose()\n      })\n    )\n  }\n\n  return computedObservable as unknown as Computed\n}\n\n// Utility function that disposes a given dependencyTracking entry\nfunction computedDisposeDependencyCallback(id, entryToDispose) {\n  if (entryToDispose !== null && entryToDispose.dispose) {\n    entryToDispose.dispose()\n  }\n}\n\n// This function gets called each time a dependency is detected while evaluating a computed.\n// It's factored out as a shared function to avoid creating unnecessary function instances during evaluation.\nfunction computedBeginDependencyDetectionCallback(subscribable, id) {\n  const computedObservable = this.computedObservable,\n    state = computedObservable[computedState]\n  if (!state.isDisposed) {\n    if (this.disposalCount && this.disposalCandidates[id]) {\n      // Don't want to dispose this subscription, as it's still being used\n      computedObservable.addDependencyTracking(id, subscribable, this.disposalCandidates[id])\n      this.disposalCandidates[id] = null // No need to actually delete the property - disposalCandidates is a transient object anyway\n      --this.disposalCount\n    } else if (!state.dependencyTracking[id]) {\n      // Brand new subscription - add it\n      computedObservable.addDependencyTracking(\n        id,\n        subscribable,\n        state.isSleeping ? { _target: subscribable } : computedObservable.subscribeToDependency(subscribable)\n      )\n    }\n    // If the observable we've accessed has a pending notification, ensure\n    // we get notified of the actual final value (bypass equality checks)\n    if (subscribable._notificationIsPending) {\n      subscribable._notifyNextChangeIfValueIsDifferent()\n    }\n  }\n}\n\ncomputed.fn = {\n  equalityComparer: valuesArePrimitiveAndEqual,\n  getDependenciesCount(): number {\n    return this[computedState].dependenciesCount\n  },\n\n  getDependencies() {\n    const dependencyTracking = this[computedState].dependencyTracking\n    const dependentObservables = new Array()\n\n    objectForEach(dependencyTracking, function (id, dependency) {\n      dependentObservables[dependency._order] = dependency._target\n    })\n\n    return dependentObservables\n  },\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\n    this[computedState].dependencyTracking[id] = trackingObj\n    trackingObj._order = this[computedState].dependenciesCount++\n    trackingObj._version = target.getVersion()\n  },\n  haveDependenciesChanged() {\n    let id,\n      dependency,\n      dependencyTracking = this[computedState].dependencyTracking\n    for (id in dependencyTracking) {\n      if (hasOwnProperty(dependencyTracking, id)) {\n        dependency = dependencyTracking[id]\n        if (\n          (this._evalDelayed && dependency._target._notificationIsPending) ||\n          dependency._target.hasChanged(dependency._version)\n        ) {\n          return true\n        }\n      }\n    }\n    return false\n  },\n  markDirty() {\n    // Process \"dirty\" events if we can handle delayed notifications\n    if (this._evalDelayed && !this[computedState].isBeingEvaluated) {\n      this._evalDelayed(false /* notifyChange */)\n    }\n  },\n  isActive() {\n    const state = this[computedState]\n    return state.isDirty || state.dependenciesCount > 0\n  },\n  respondToChange() {\n    // Ignore \"change\" events if we've already scheduled a delayed notification\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'),\n        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,\n      throttleEvaluationTimeout = computedObservable.throttleEvaluation\n    if (throttleEvaluationTimeout && throttleEvaluationTimeout >= 0) {\n      clearTimeout(this[computedState].evaluationTimeoutInstance)\n      this[computedState].evaluationTimeoutInstance = safeSetTimeout(function () {\n        computedObservable.evaluateImmediate(true /* notifyChange */)\n      }, throttleEvaluationTimeout)\n    } else if (computedObservable._evalDelayed) {\n      computedObservable._evalDelayed(true /* notifyChange */)\n    } else {\n      computedObservable.evaluateImmediate(true /* notifyChange */)\n    }\n  },\n  evaluateImmediate(notifyChange) {\n    let state = this[computedState],\n      disposeWhen = state.disposeWhen,\n      changed = false\n\n    if (state.isBeingEvaluated) {\n      // If the evaluation of a ko.computed causes side effects, it's possible that it will trigger its own re-evaluation.\n      // This is not desirable (it's hard for a developer to realise a chain of dependencies might cause this, and they almost\n      // certainly didn't intend infinite re-evaluations). So, for predictability, we simply prevent ko.computeds from causing\n      // their own re-evaluation. Further discussion at https://github.com/SteveSanderson/knockout/pull/387\n      return\n    }\n\n    // Do not evaluate (and possibly capture new dependencies) if disposed\n    if (state.isDisposed) {\n      return\n    }\n\n    if (\n      (state.disposeWhenNodeIsRemoved && !domNodeIsAttachedToDocument(state.disposeWhenNodeIsRemoved)) ||\n      (disposeWhen && disposeWhen())\n    ) {\n      // See comment above about suppressDisposalUntilDisposeWhenReturnsFalse\n      if (!state.suppressDisposalUntilDisposeWhenReturnsFalse) {\n        this.dispose()\n        return\n      }\n    } else {\n      // It just did return false, so we can stop suppressing now\n      state.suppressDisposalUntilDisposeWhenReturnsFalse = false\n    }\n\n    state.isBeingEvaluated = true\n    try {\n      changed = this.evaluateImmediate_CallReadWithDependencyDetection(notifyChange)\n    } finally {\n      state.isBeingEvaluated = false\n    }\n\n    return changed\n  },\n  evaluateImmediate_CallReadWithDependencyDetection(notifyChange) {\n    // This function is really just part of the evaluateImmediate logic. You would never call it from anywhere else.\n    // Factoring it out into a separate function means it can be independent of the try/catch block in evaluateImmediate,\n    // which contributes to saving about 40% off the CPU overhead of computed evaluation (on V8 at least).\n\n    let state = this[computedState],\n      changed = false\n\n    // Initially, we assume that none of the subscriptions are still being used (i.e., all are candidates for disposal).\n    // Then, during evaluation, we cross off any that are in fact still being used.\n    const isInitial = state.pure ? undefined : !state.dependenciesCount, // If we're evaluating when there are no previous dependencies, it must be the first time\n      dependencyDetectionContext = {\n        computedObservable: this,\n        disposalCandidates: state.dependencyTracking,\n        disposalCount: state.dependenciesCount\n      }\n\n    dependencyDetection.begin({\n      callbackTarget: dependencyDetectionContext,\n      callback: computedBeginDependencyDetectionCallback,\n      computed: this,\n      isInitial: isInitial\n    })\n\n    state.dependencyTracking = {}\n    state.dependenciesCount = 0\n\n    const newValue = this.evaluateImmediate_CallReadThenEndDependencyDetection(state, dependencyDetectionContext)\n\n    if (!state.dependenciesCount) {\n      this.dispose()\n      changed = true // When evaluation causes a disposal, make sure all dependent computeds get notified so they'll see the new state\n    } else {\n      changed = this.isDifferent(state.latestValue, newValue)\n    }\n\n    if (changed) {\n      if (!state.isSleeping) {\n        this.notifySubscribers(state.latestValue, 'beforeChange')\n      } else {\n        this.updateVersion()\n      }\n\n      state.latestValue = newValue\n      if (koOptions.debug) {\n        this._latestValue = newValue\n      }\n\n      this.notifySubscribers(state.latestValue, 'spectate')\n\n      if (!state.isSleeping && notifyChange) {\n        this.notifySubscribers(state.latestValue)\n      }\n\n      if (this._recordUpdate) {\n        this._recordUpdate()\n      }\n    }\n\n    if (isInitial) {\n      this.notifySubscribers(state.latestValue, 'awake')\n    }\n\n    return changed\n  },\n  evaluateImmediate_CallReadThenEndDependencyDetection(state, dependencyDetectionContext) {\n    // This function is really part of the evaluateImmediate_CallReadWithDependencyDetection logic.\n    // You'd never call it from anywhere else. Factoring it out means that evaluateImmediate_CallReadWithDependencyDetection\n    // can be independent of try/finally blocks, which contributes to saving about 40% off the CPU\n    // overhead of computed evaluation (on V8 at least).\n\n    try {\n      const readFunction = state.readFunction\n      return state.evaluatorFunctionTarget ? readFunction.call(state.evaluatorFunctionTarget) : readFunction()\n    } finally {\n      dependencyDetection.end()\n\n      // For each subscription no longer being used, remove it from the active subscriptions list and dispose it\n      if (dependencyDetectionContext.disposalCount && !state.isSleeping) {\n        objectForEach(dependencyDetectionContext.disposalCandidates, computedDisposeDependencyCallback)\n      }\n\n      state.isStale = state.isDirty = false\n    }\n  },\n  peek(forceEvaluate) {\n    // Peek won't ordinarily re-evaluate, except while the computed is sleeping\n    //  or to get the initial value when \"deferEvaluation\" is set.\n    const state = this[computedState]\n    if (\n      (state.isDirty && (forceEvaluate || !state.dependenciesCount)) ||\n      (state.isSleeping && this.haveDependenciesChanged())\n    ) {\n      this.evaluateImmediate()\n    }\n    return state.latestValue\n  },\n\n  get [LATEST_VALUE]() {\n    return this.peek()\n  },\n\n  limit(limitFunction) {\n    const state = this[computedState]\n    // Override the limit function with one that delays evaluation as well\n    ;(subscribable.fn as any).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\n        // Mark as dirty\n        state.isDirty = true\n        if (isChange) {\n          state.isStale = true\n        }\n\n        // Pass the observable to the \"limit\" code, which will evaluate it when\n        // it's time to do the notification.\n        this._limitChange(this, !isChange /* isDirty */)\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}\n\nconst pureComputedOverrides = {\n  beforeSubscriptionAdd(event: string) {\n    // If asleep, wake up the computed by subscribing to any dependencies.\n    const computedObservable = this,\n      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        // First put the dependencies in order\n        const dependenciesOrder = new Array()\n        objectForEach(state.dependencyTracking, function (id, dependency) {\n          dependenciesOrder[dependency._order] = id\n        })\n        // Next, subscribe to each one\n        arrayForEach(dependenciesOrder, function (id, order) {\n          const dependency = state.dependencyTracking[id],\n            subscription = computedObservable.subscribeToDependency(dependency._target)\n          subscription._order = order\n          subscription._version = dependency._version\n          state.dependencyTracking[id] = subscription\n        })\n\n        // Waking dependencies may have triggered effects\n        if (computedObservable.haveDependenciesChanged()) {\n          if (computedObservable.evaluateImmediate()) {\n            computedObservable.updateVersion()\n          }\n        }\n      }\n\n      if (!state.isDisposed) {\n        // test since evaluating could trigger disposal\n        computedObservable.notifySubscribers(state.latestValue, 'awake')\n      }\n    }\n  },\n  afterSubscriptionRemove(event: string) {\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(undefined, 'asleep')\n    }\n  },\n  getVersion() {\n    // Because a pure computed is not automatically updated while it is sleeping, we can't\n    // simply return the version number. Instead, we check if any of the dependencies have\n    // changed and conditionally re-evaluate the computed observable.\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}\n\nconst deferEvaluationOverrides = {\n  beforeSubscriptionAdd(event) {\n    // This will force a computed with deferEvaluation to evaluate when the first subscription is registered.\n    if (event === 'change' || event === 'beforeChange') {\n      this.peek()\n    }\n  }\n}\n\nObject.setPrototypeOf(computed.fn, subscribable.fn)\n\n// Set the proto values for ko.computed\nconst protoProp = observable.protoProperty // == \"__ko_proto__\"\ncomputed.fn[protoProp] = computed\n\n/* This is used by ko.isObservable */\nobservable.observablePrototypes.add(computed as any)\n\nexport function isComputed<T = any>(instance: any): instance is Computed<T> {\n  return typeof instance === 'function' && instance[protoProp] === computed\n}\n\nexport function isPureComputed<T = any>(instance: any): instance is PureComputed<T> {\n  return isComputed(instance) && instance[computedState] && (instance[computedState] as unknown as State).pure\n}\n\nexport function pureComputed<T = any>(\n  evaluatorFunctionOrOptions: ComputedOptions | ComputedReadFunction,\n  evaluatorFunctionTarget?\n): Computed<T> {\n  if (typeof evaluatorFunctionOrOptions === 'function') {\n    const evaluator = evaluatorFunctionOrOptions as ComputedReadFunction\n    return computed(evaluator, evaluatorFunctionTarget, { pure: true })\n  } else {\n    let options = evaluatorFunctionOrOptions as ComputedOptions\n    options = extend({}, options) // make a copy of the parameter object\n    options.pure = true\n    return computed(options, evaluatorFunctionTarget)\n  }\n}\n", "import { extenders as baseExtenders } from '@tko/observable'\nimport { computed } from './computed'\n\nexport function throttleExtender(target: any, timeout: number) {\n  // Throttling means two things:\n\n  // (1) For dependent observables, we throttle *evaluations* so that, no matter how fast its dependencies\n  //     notify updates, the target doesn't re-evaluate (and hence doesn't notify) faster than a certain rate\n  target.throttleEvaluation = timeout\n\n  // (2) For writable targets (observables, or writable dependent observables), we throttle *writes*\n  //     so the target cannot change value synchronously or faster than a certain rate\n  let writeTimeoutInstance: ReturnType<typeof setTimeout> | undefined\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}\n\nconst extenders = baseExtenders\n\nextenders.throttle = throttleExtender\n", "/**\n * Create an ES\n */\n\nimport { observable, observableArray, unwrap } from '@tko/observable'\n\nimport { computed } from './computed'\n\nconst PROXY_SYM = Symbol('Knockout Proxied Object')\nconst MIRROR_SYM = Symbol('Knockout Proxied Observables')\n\nfunction makeComputed(proxy, fn) {\n  return computed({\n    owner: proxy,\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}\n\nfunction setOrCreate(mirror, prop, value, proxy) {\n  if (!mirror[prop]) {\n    const ctr = Array.isArray(value)\n      ? observableArray\n      : typeof value === 'function'\n        ? makeComputed.bind(null, proxy)\n        : observable\n    mirror[prop] = ctr(value)\n  } else {\n    mirror[prop](value)\n  }\n}\n\nfunction assignOrUpdate(mirror, object, proxy) {\n  for (const key of Object.keys(object)) {\n    setOrCreate(mirror, key, object[key], proxy)\n  }\n  return object\n}\n\nexport function proxy(object) {\n  const mirror = { [PROXY_SYM]: object }\n  mirror[MIRROR_SYM] = mirror\n  const proxy = new Proxy(function () {}, {\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, proxy)\n      object[prop] = value\n      return true\n    },\n    deleteProperty(_target, property) {\n      delete mirror[property as any]\n      return delete object[property as any]\n    },\n    apply(target, thisArg, [props]) {\n      if (props) {\n        assignOrUpdate(mirror, props, proxy)\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, proxy)\n  return proxy\n}\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}\n\nObject.assign(proxy, { getObservable, peek, isProxied })\n", "import { pureComputed } from './computed'\n\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  // In case the initial value is true, process it right away\n  observable.notifySubscribers(observable.peek())\n  return subscription\n}\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"],
  "mappings": "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",
  "names": ["koOptions", "subscribable", "import_observable", "extenders", "baseExtenders", "import_observable", "proxy", "observable"]
}
