{
  "version": 3,
  "sources": ["../../../src/evaluator/range-evaluation-node.ts"],
  "sourcesContent": [
    "import type { DependencyManager } from \"../core/managers/dependency-manager.mjs\";\nimport { FrontierDependencyManager } from \"../core/managers/frontier-dependency-manager.mjs\";\nimport type { WorkbookManager } from \"../core/managers/workbook-manager.mjs\";\nimport type { EvaluateAllCellsResult, RangeAddress } from \"../core/types.mjs\";\nimport { getRangeKey, keyToRangeAddress } from \"../core/utils.mjs\";\n\nexport class RangeEvaluationNode extends FrontierDependencyManager {\n  public key: string;\n  public address: RangeAddress;\n\n  private _result: EvaluateAllCellsResult;\n\n  constructor(\n    public rangeKey: string,\n    dependencyManager: DependencyManager,\n    workbookManager: WorkbookManager,\n    options?: { skipInitialBuild?: boolean }\n  ) {\n    const rangeAddress = keyToRangeAddress(rangeKey);\n    super(rangeAddress, workbookManager, dependencyManager, options);\n\n    this.address = rangeAddress;\n    this.key = rangeKey;\n    this._result = {\n      type: \"awaiting-evaluation\",\n      waitingFor: this,\n      errAddress: this,\n    };\n  }\n\n  setResult(result: EvaluateAllCellsResult): void {\n    this._result = result;\n  }\n\n  public get result(): EvaluateAllCellsResult {\n    return this._result;\n  }\n\n  public override canResolve(): boolean {\n    return super.canResolve() && this._result.type !== \"awaiting-evaluation\";\n  }\n\n  public override restoreResolvedSnapshot(options: {\n    dependencies: Set<import(\"../core/managers/dependency-node.mjs\").DependencyNode>;\n    result: EvaluateAllCellsResult;\n  }) {\n    super.restoreResolvedSnapshot({\n      dependencies: options.dependencies,\n    });\n    this._result = options.result;\n  }\n\n  public override invalidate() {\n    super.invalidate();\n    this._result = {\n      type: \"awaiting-evaluation\",\n      waitingFor: this,\n      errAddress: this,\n    };\n  }\n\n  toJSON(visitor: Set<string> = new Set()): any {\n    const hasVisited = visitor?.has(this.key);\n    visitor?.add(this.key);\n    if (hasVisited) {\n      return {\n        key: this.key,\n        resolved: this.resolved,\n        cycle: true,\n        dependencies: [],\n        frontierDependencies: [],\n      };\n    }\n    return {\n      key: this.key,\n      resolved: this.resolved,\n      dependencies: Array.from(this.getDependencies()).map((node) =>\n        node.toJSON(visitor)\n      ),\n      frontierDependencies: Array.from(this.getFrontierDependencies()).map(\n        (node) => node.toJSON(visitor)\n      ),\n    };\n  }\n\n  public override toString(): string {\n    return getRangeKey(this.address.range);\n  }\n}\n"
  ],
  "mappings": ";AACA;AAGA;AAAA;AAEO,MAAM,4BAA4B,0BAA0B;AAAA,EAOxD;AAAA,EANF;AAAA,EACA;AAAA,EAEC;AAAA,EAER,WAAW,CACF,UACP,mBACA,iBACA,SACA;AAAA,IACA,MAAM,eAAe,kBAAkB,QAAQ;AAAA,IAC/C,MAAM,cAAc,iBAAiB,mBAAmB,OAAO;AAAA,IANxD;AAAA,IAQP,KAAK,UAAU;AAAA,IACf,KAAK,MAAM;AAAA,IACX,KAAK,UAAU;AAAA,MACb,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,YAAY;AAAA,IACd;AAAA;AAAA,EAGF,SAAS,CAAC,QAAsC;AAAA,IAC9C,KAAK,UAAU;AAAA;AAAA,MAGN,MAAM,GAA2B;AAAA,IAC1C,OAAO,KAAK;AAAA;AAAA,EAGE,UAAU,GAAY;AAAA,IACpC,OAAO,MAAM,WAAW,KAAK,KAAK,QAAQ,SAAS;AAAA;AAAA,EAGrC,uBAAuB,CAAC,SAGrC;AAAA,IACD,MAAM,wBAAwB;AAAA,MAC5B,cAAc,QAAQ;AAAA,IACxB,CAAC;AAAA,IACD,KAAK,UAAU,QAAQ;AAAA;AAAA,EAGT,UAAU,GAAG;AAAA,IAC3B,MAAM,WAAW;AAAA,IACjB,KAAK,UAAU;AAAA,MACb,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,YAAY;AAAA,IACd;AAAA;AAAA,EAGF,MAAM,CAAC,UAAuB,IAAI,KAAY;AAAA,IAC5C,MAAM,aAAa,SAAS,IAAI,KAAK,GAAG;AAAA,IACxC,SAAS,IAAI,KAAK,GAAG;AAAA,IACrB,IAAI,YAAY;AAAA,MACd,OAAO;AAAA,QACL,KAAK,KAAK;AAAA,QACV,UAAU,KAAK;AAAA,QACf,OAAO;AAAA,QACP,cAAc,CAAC;AAAA,QACf,sBAAsB,CAAC;AAAA,MACzB;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,KAAK,KAAK;AAAA,MACV,UAAU,KAAK;AAAA,MACf,cAAc,MAAM,KAAK,KAAK,gBAAgB,CAAC,EAAE,IAAI,CAAC,SACpD,KAAK,OAAO,OAAO,CACrB;AAAA,MACA,sBAAsB,MAAM,KAAK,KAAK,wBAAwB,CAAC,EAAE,IAC/D,CAAC,SAAS,KAAK,OAAO,OAAO,CAC/B;AAAA,IACF;AAAA;AAAA,EAGc,QAAQ,GAAW;AAAA,IACjC,OAAO,YAAY,KAAK,QAAQ,KAAK;AAAA;AAEzC;",
  "debugId": "CB41D7681035F56A64756E2164756E21",
  "names": []
}