{
  "version": 3,
  "sources": ["../index.ts", "../src/Provider.ts", "../src/BindingHandlerObject.ts"],
  "sourcesContent": ["export * from './src'\n", "import { objectMap } from '@tko/utils'\n\nimport { dependencyDetection } from '@tko/observable'\n\nimport BindingHandlerObject from './BindingHandlerObject'\n\nimport type { BindingContext } from '@tko/bind'\n\nexport interface ProviderParamsInput {\n  bindingHandlers?: BindingHandlerObject\n  globals?: any\n  attributesToSkip?: any\n  attributesBindingMap?: any\n  providers?: any[]\n}\n\nexport type BindingAccessors = { [name: string]: Function }\n\nexport default class Provider {\n  constructor(params?: ProviderParamsInput | null) {\n    if (this.constructor === Provider) {\n      throw new Error('Provider is an abstract base class.')\n    }\n    if (!('FOR_NODE_TYPES' in this)) {\n      // FOR_NODE_TYPES must return a list of integers corresponding to the\n      // node.nodeType's that the provider handles.\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\n  get FOR_NODE_TYPES(): number[] {\n    throw new Error('Providers must override FOR_NODE_TYPES property')\n  }\n\n  setGlobals(globals) {\n    this.globals = globals\n  }\n  get preemptive() {\n    return false\n  }\n  nodeHasBindings(node: Node, context?: BindingContext): boolean {\n    return false\n  }\n  getBindingAccessors(node: Node, context?: BindingContext): BindingAccessors {\n    return Object.create(null)\n  }\n\n  /**\n   * Preprocess a given node.\n   * @param {Node} node\n   * @returns {[Node]|null}\n   */\n  preprocessNode(node: Node): Node[] | null {\n    return [node]\n  }\n  postProcess(/* node */) {}\n\n  bindingHandlers: BindingHandlerObject\n  globals: any | undefined\n  _overloadInstance: any | undefined\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 = undefined\n    } else {\n      this._overloadInstance = new LegacyProvider(provider, this)\n    }\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\n  // Returns the valueAccessor function for a binding value\n  makeValueAccessor(value): Function {\n    return () => value\n  }\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}\n\n/**\n * LegacyProvider class is created when ko.bindingProvider.instance assigned to\n * an object that were once used for binding pre-4.0 binding providers e.g.\n * {  getBindings: function () { ... },\n *    nodeHasBindings: function () { ... }\n *    preprocessNode: function () { ... }\n * }\n */\nclass LegacyProvider extends Provider {\n  override get FOR_NODE_TYPES() {\n    return [Node.ELEMENT_NODE, Node.TEXT_NODE, Node.COMMENT_NODE]\n  }\n\n  providerObject: any\n\n  constructor(providerObject, parentProvider) {\n    super()\n    Object.assign(this, { providerObject })\n    this.bindingHandlers = providerObject.bindingHandlers || parentProvider.bindingHandlers\n  }\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\n  override getBindingAccessors(node, context) {\n    return this.providerObject.getBindingAccessors\n      ? this.providerObject.getBindingAccessors(node, context)\n      : this.getBindingsAndMakeAccessors(node, context)\n  }\n\n  override nodeHasBindings(node: Node): boolean {\n    return this.providerObject.nodeHasBindings(node)\n  }\n\n  override preprocessNode(node: Node): Node[] | null {\n    if (this.providerObject.preprocessNode) {\n      return this.providerObject.preprocessNode(node)\n    }\n    return null\n  }\n}\n", "import { options } from '@tko/utils'\n\nexport default class BindingHandlerObject {\n  set(nameOrObject: string | object, value?: string | object) {\n    if (typeof nameOrObject === 'string') {\n      this[nameOrObject] = value\n    } else if (typeof nameOrObject === 'object') {\n      if (value !== undefined) {\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  /**\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"],
  "mappings": "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",
  "names": ["import_utils"]
}
