{"version":3,"file":"graph-DN_8C-BI.cjs","sources":["../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/_baseValues.js","../node_modules/lodash-es/values.js","../node_modules/lodash-es/isUndefined.js","../node_modules/lodash-es/union.js","../node_modules/dagre-d3-es/src/graphlib/graph.js"],"sourcesContent":["import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nexport default initCloneArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nexport default initCloneByTag;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nexport default baseClone;\n","import arrayMap from './_arrayMap.js';\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n  return arrayMap(props, function(key) {\n    return object[key];\n  });\n}\n\nexport default baseValues;\n","import baseValues from './_baseValues.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n  return object == null ? [] : baseValues(object, keys(object));\n}\n\nexport default values;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nexport default isUndefined;\n","import baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport baseUniq from './_baseUniq.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nexport default union;\n","import * as _ from 'lodash-es';\n\nvar DEFAULT_EDGE_NAME = '\\x00';\nvar GRAPH_NODE = '\\x00';\nvar EDGE_KEY_DELIM = '\\x01';\n\n// Implementation notes:\n//\n//  * Node id query functions should return string ids for the nodes\n//  * Edge id query functions should return an \"edgeObj\", edge object, that is\n//    composed of enough information to uniquely identify an edge: {v, w, name}.\n//  * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n//    reference edges. This is because we need a performant way to look these\n//    edges up and, object properties, which have string keys, are the closest\n//    we're going to get to a performant hashtable in JavaScript.\n\n// Implementation notes:\n//\n//  * Node id query functions should return string ids for the nodes\n//  * Edge id query functions should return an \"edgeObj\", edge object, that is\n//    composed of enough information to uniquely identify an edge: {v, w, name}.\n//  * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n//    reference edges. This is because we need a performant way to look these\n//    edges up and, object properties, which have string keys, are the closest\n//    we're going to get to a performant hashtable in JavaScript.\nexport class Graph {\n  constructor(opts = {}) {\n    this._isDirected = Object.prototype.hasOwnProperty.call(opts, 'directed')\n      ? opts.directed\n      : true;\n    this._isMultigraph = Object.prototype.hasOwnProperty.call(opts, 'multigraph')\n      ? opts.multigraph\n      : false;\n    this._isCompound = Object.prototype.hasOwnProperty.call(opts, 'compound')\n      ? opts.compound\n      : false;\n\n    // Label for the graph itself\n    this._label = undefined;\n\n    // Defaults to be set when creating a new node\n    this._defaultNodeLabelFn = _.constant(undefined);\n\n    // Defaults to be set when creating a new edge\n    this._defaultEdgeLabelFn = _.constant(undefined);\n\n    // v -> label\n    this._nodes = {};\n\n    if (this._isCompound) {\n      // v -> parent\n      this._parent = {};\n\n      // v -> children\n      this._children = {};\n      this._children[GRAPH_NODE] = {};\n    }\n\n    // v -> edgeObj\n    this._in = {};\n\n    // u -> v -> Number\n    this._preds = {};\n\n    // v -> edgeObj\n    this._out = {};\n\n    // v -> w -> Number\n    this._sucs = {};\n\n    // e -> edgeObj\n    this._edgeObjs = {};\n\n    // e -> label\n    this._edgeLabels = {};\n  }\n  /* === Graph functions ========= */\n  isDirected() {\n    return this._isDirected;\n  }\n  isMultigraph() {\n    return this._isMultigraph;\n  }\n  isCompound() {\n    return this._isCompound;\n  }\n  setGraph(label) {\n    this._label = label;\n    return this;\n  }\n  graph() {\n    return this._label;\n  }\n  /* === Node functions ========== */\n  setDefaultNodeLabel(newDefault) {\n    if (!_.isFunction(newDefault)) {\n      newDefault = _.constant(newDefault);\n    }\n    this._defaultNodeLabelFn = newDefault;\n    return this;\n  }\n  nodeCount() {\n    return this._nodeCount;\n  }\n  nodes() {\n    return _.keys(this._nodes);\n  }\n  sources() {\n    var self = this;\n    return _.filter(this.nodes(), function (v) {\n      return _.isEmpty(self._in[v]);\n    });\n  }\n  sinks() {\n    var self = this;\n    return _.filter(this.nodes(), function (v) {\n      return _.isEmpty(self._out[v]);\n    });\n  }\n  setNodes(vs, value) {\n    var args = arguments;\n    var self = this;\n    _.each(vs, function (v) {\n      if (args.length > 1) {\n        self.setNode(v, value);\n      } else {\n        self.setNode(v);\n      }\n    });\n    return this;\n  }\n  setNode(v, value) {\n    if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n      if (arguments.length > 1) {\n        this._nodes[v] = value;\n      }\n      return this;\n    }\n\n    // @ts-expect-error\n    this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n    if (this._isCompound) {\n      this._parent[v] = GRAPH_NODE;\n      this._children[v] = {};\n      this._children[GRAPH_NODE][v] = true;\n    }\n    this._in[v] = {};\n    this._preds[v] = {};\n    this._out[v] = {};\n    this._sucs[v] = {};\n    ++this._nodeCount;\n    return this;\n  }\n  node(v) {\n    return this._nodes[v];\n  }\n  hasNode(v) {\n    return Object.prototype.hasOwnProperty.call(this._nodes, v);\n  }\n  removeNode(v) {\n    if (Object.prototype.hasOwnProperty.call(this._nodes, v)) {\n      var removeEdge = (e) => this.removeEdge(this._edgeObjs[e]);\n      delete this._nodes[v];\n      if (this._isCompound) {\n        this._removeFromParentsChildList(v);\n        delete this._parent[v];\n        _.each(this.children(v), (child) => {\n          this.setParent(child);\n        });\n        delete this._children[v];\n      }\n      _.each(_.keys(this._in[v]), removeEdge);\n      delete this._in[v];\n      delete this._preds[v];\n      _.each(_.keys(this._out[v]), removeEdge);\n      delete this._out[v];\n      delete this._sucs[v];\n      --this._nodeCount;\n    }\n    return this;\n  }\n  setParent(v, parent) {\n    if (!this._isCompound) {\n      throw new Error('Cannot set parent in a non-compound graph');\n    }\n\n    if (_.isUndefined(parent)) {\n      parent = GRAPH_NODE;\n    } else {\n      // Coerce parent to string\n      parent += '';\n      for (var ancestor = parent; !_.isUndefined(ancestor); ancestor = this.parent(ancestor)) {\n        if (ancestor === v) {\n          throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle');\n        }\n      }\n\n      this.setNode(parent);\n    }\n\n    this.setNode(v);\n    this._removeFromParentsChildList(v);\n    this._parent[v] = parent;\n    this._children[parent][v] = true;\n    return this;\n  }\n  _removeFromParentsChildList(v) {\n    delete this._children[this._parent[v]][v];\n  }\n  parent(v) {\n    if (this._isCompound) {\n      var parent = this._parent[v];\n      if (parent !== GRAPH_NODE) {\n        return parent;\n      }\n    }\n  }\n  children(v) {\n    if (_.isUndefined(v)) {\n      v = GRAPH_NODE;\n    }\n\n    if (this._isCompound) {\n      var children = this._children[v];\n      if (children) {\n        return _.keys(children);\n      }\n    } else if (v === GRAPH_NODE) {\n      return this.nodes();\n    } else if (this.hasNode(v)) {\n      return [];\n    }\n  }\n  predecessors(v) {\n    var predsV = this._preds[v];\n    if (predsV) {\n      return _.keys(predsV);\n    }\n  }\n  successors(v) {\n    var sucsV = this._sucs[v];\n    if (sucsV) {\n      return _.keys(sucsV);\n    }\n  }\n  neighbors(v) {\n    var preds = this.predecessors(v);\n    if (preds) {\n      return _.union(preds, this.successors(v));\n    }\n  }\n  isLeaf(v) {\n    var neighbors;\n    if (this.isDirected()) {\n      neighbors = this.successors(v);\n    } else {\n      neighbors = this.neighbors(v);\n    }\n    return neighbors.length === 0;\n  }\n  filterNodes(filter) {\n    // @ts-expect-error\n    var copy = new this.constructor({\n      directed: this._isDirected,\n      multigraph: this._isMultigraph,\n      compound: this._isCompound,\n    });\n\n    copy.setGraph(this.graph());\n\n    var self = this;\n    _.each(this._nodes, function (value, v) {\n      if (filter(v)) {\n        copy.setNode(v, value);\n      }\n    });\n\n    _.each(this._edgeObjs, function (e) {\n      // @ts-expect-error\n      if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n        copy.setEdge(e, self.edge(e));\n      }\n    });\n\n    var parents = {};\n    function findParent(v) {\n      var parent = self.parent(v);\n      if (parent === undefined || copy.hasNode(parent)) {\n        parents[v] = parent;\n        return parent;\n      } else if (parent in parents) {\n        return parents[parent];\n      } else {\n        return findParent(parent);\n      }\n    }\n\n    if (this._isCompound) {\n      _.each(copy.nodes(), function (v) {\n        copy.setParent(v, findParent(v));\n      });\n    }\n\n    return copy;\n  }\n  /* === Edge functions ========== */\n  setDefaultEdgeLabel(newDefault) {\n    if (!_.isFunction(newDefault)) {\n      newDefault = _.constant(newDefault);\n    }\n    this._defaultEdgeLabelFn = newDefault;\n    return this;\n  }\n  edgeCount() {\n    return this._edgeCount;\n  }\n  edges() {\n    return _.values(this._edgeObjs);\n  }\n  setPath(vs, value) {\n    var self = this;\n    var args = arguments;\n    _.reduce(vs, function (v, w) {\n      if (args.length > 1) {\n        self.setEdge(v, w, value);\n      } else {\n        self.setEdge(v, w);\n      }\n      return w;\n    });\n    return this;\n  }\n  /*\n   * setEdge(v, w, [value, [name]])\n   * setEdge({ v, w, [name] }, [value])\n   */\n  setEdge() {\n    var v, w, name, value;\n    var valueSpecified = false;\n    var arg0 = arguments[0];\n\n    if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) {\n      v = arg0.v;\n      w = arg0.w;\n      name = arg0.name;\n      if (arguments.length === 2) {\n        value = arguments[1];\n        valueSpecified = true;\n      }\n    } else {\n      v = arg0;\n      w = arguments[1];\n      name = arguments[3];\n      if (arguments.length > 2) {\n        value = arguments[2];\n        valueSpecified = true;\n      }\n    }\n\n    v = '' + v;\n    w = '' + w;\n    if (!_.isUndefined(name)) {\n      name = '' + name;\n    }\n\n    var e = edgeArgsToId(this._isDirected, v, w, name);\n    if (Object.prototype.hasOwnProperty.call(this._edgeLabels, e)) {\n      if (valueSpecified) {\n        this._edgeLabels[e] = value;\n      }\n      return this;\n    }\n\n    if (!_.isUndefined(name) && !this._isMultigraph) {\n      throw new Error('Cannot set a named edge when isMultigraph = false');\n    }\n\n    // It didn't exist, so we need to create it.\n    // First ensure the nodes exist.\n    this.setNode(v);\n    this.setNode(w);\n\n    // @ts-expect-error\n    this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n    var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n    // Ensure we add undirected edges in a consistent way.\n    v = edgeObj.v;\n    w = edgeObj.w;\n\n    Object.freeze(edgeObj);\n    this._edgeObjs[e] = edgeObj;\n    incrementOrInitEntry(this._preds[w], v);\n    incrementOrInitEntry(this._sucs[v], w);\n    this._in[w][e] = edgeObj;\n    this._out[v][e] = edgeObj;\n    this._edgeCount++;\n    return this;\n  }\n  edge(v, w, name) {\n    var e =\n      arguments.length === 1\n        ? edgeObjToId(this._isDirected, arguments[0])\n        : edgeArgsToId(this._isDirected, v, w, name);\n    return this._edgeLabels[e];\n  }\n  hasEdge(v, w, name) {\n    var e =\n      arguments.length === 1\n        ? edgeObjToId(this._isDirected, arguments[0])\n        : edgeArgsToId(this._isDirected, v, w, name);\n    return Object.prototype.hasOwnProperty.call(this._edgeLabels, e);\n  }\n  removeEdge(v, w, name) {\n    var e =\n      arguments.length === 1\n        ? edgeObjToId(this._isDirected, arguments[0])\n        : edgeArgsToId(this._isDirected, v, w, name);\n    var edge = this._edgeObjs[e];\n    if (edge) {\n      v = edge.v;\n      w = edge.w;\n      delete this._edgeLabels[e];\n      delete this._edgeObjs[e];\n      decrementOrRemoveEntry(this._preds[w], v);\n      decrementOrRemoveEntry(this._sucs[v], w);\n      delete this._in[w][e];\n      delete this._out[v][e];\n      this._edgeCount--;\n    }\n    return this;\n  }\n  inEdges(v, u) {\n    var inV = this._in[v];\n    if (inV) {\n      var edges = _.values(inV);\n      if (!u) {\n        return edges;\n      }\n      return _.filter(edges, function (edge) {\n        return edge.v === u;\n      });\n    }\n  }\n  outEdges(v, w) {\n    var outV = this._out[v];\n    if (outV) {\n      var edges = _.values(outV);\n      if (!w) {\n        return edges;\n      }\n      return _.filter(edges, function (edge) {\n        return edge.w === w;\n      });\n    }\n  }\n  nodeEdges(v, w) {\n    var inEdges = this.inEdges(v, w);\n    if (inEdges) {\n      return inEdges.concat(this.outEdges(v, w));\n    }\n  }\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\nfunction incrementOrInitEntry(map, k) {\n  if (map[k]) {\n    map[k]++;\n  } else {\n    map[k] = 1;\n  }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n  if (!--map[k]) {\n    delete map[k];\n  }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n  var v = '' + v_;\n  var w = '' + w_;\n  if (!isDirected && v > w) {\n    var tmp = v;\n    v = w;\n    w = tmp;\n  }\n  return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n  var v = '' + v_;\n  var w = '' + w_;\n  if (!isDirected && v > w) {\n    var tmp = v;\n    v = w;\n    w = tmp;\n  }\n  var edgeObj = { v: v, w: w };\n  if (name) {\n    edgeObj.name = name;\n  }\n  return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n  return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n"],"names":["baseAssign","object","source","copyObject","keys","baseAssignIn","keysIn","copySymbols","getSymbols","nativeGetSymbols","getSymbolsIn","result","arrayPush","getPrototype","stubArray","copySymbolsIn","getAllKeysIn","baseGetAllKeys","objectProto","hasOwnProperty","initCloneArray","array","length","cloneDataView","dataView","isDeep","buffer","cloneArrayBuffer","reFlags","cloneRegExp","regexp","symbolProto","Symbol","symbolValueOf","cloneSymbol","symbol","boolTag","dateTag","mapTag","numberTag","regexpTag","setTag","stringTag","symbolTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","initCloneByTag","tag","Ctor","cloneTypedArray","baseIsMap","value","isObjectLike","getTag","nodeIsMap","nodeUtil","isMap","baseUnary","baseIsSet","nodeIsSet","isSet","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","argsTag","arrayTag","errorTag","funcTag","genTag","objectTag","weakMapTag","cloneableTags","baseClone","bitmask","customizer","key","stack","isFlat","isFull","isObject","isArr","isArray","copyArray","isFunc","isBuffer","cloneBuffer","initCloneObject","Stack","stacked","subValue","keysFunc","getAllKeys","props","arrayEach","assignValue","baseValues","arrayMap","values","isUndefined","union","baseRest","arrays","baseUniq","baseFlatten","isArrayLikeObject","DEFAULT_EDGE_NAME","GRAPH_NODE","EDGE_KEY_DELIM","Graph","opts","_.constant","label","newDefault","_.isFunction","_.keys","self","_.filter","v","_.isEmpty","vs","args","_.each","removeEdge","e","child","parent","_.isUndefined","ancestor","children","predsV","sucsV","preds","_.union","neighbors","filter","copy","parents","findParent","_.values","_.reduce","w","name","valueSpecified","arg0","edgeArgsToId","edgeObj","edgeArgsToObj","incrementOrInitEntry","edgeObjToId","edge","decrementOrRemoveEntry","u","inV","edges","outV","inEdges","map","k","isDirected","v_","w_","tmp"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]}