{"version":3,"sources":["jsdelivr-header.js","/npm/graphology-layout-forceatlas2@0.10.1/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACAA,IAAI,QAAU,QAAQ,6BAClB,uBACF,QAAQ,4BAA4B,uBAClC,QAAU,QAAQ,gBAClB,QAAU,QAAQ,gBAElB,iBAAmB,QAAQ,iBAc/B,SAAS,0BAA0B,EAAQ,EAAO,GAChD,IAAK,QAAQ,GACX,MAAM,IAAI,MACR,sFAGkB,iBAAX,IAAqB,EAAS,CAAC,WAAY,IAEtD,IAAI,EAAa,EAAO,WAExB,GAA0B,iBAAf,EACT,MAAM,IAAI,MACR,gEAGJ,GAAI,GAAc,EAChB,MAAM,IAAI,MACR,sFAGJ,IAAI,EAAgB,uBAClB,kBAAmB,EAAS,EAAO,cAAgB,UACnD,UAEE,EAC8B,mBAAzB,EAAO,cAA+B,EAAO,cAAgB,KAGlE,EAAW,QAAQ,OAAO,CAAC,EAAG,iBAAkB,EAAO,UACvD,EAAkB,QAAQ,iBAAiB,GAE/C,GAAI,EACF,MAAM,IAAI,MACR,kCAAoC,EAAgB,SAIxD,IAEI,EAFA,EAAW,QAAQ,kBAAkB,EAAO,GAKhD,IAAK,EAAI,EAAG,EAAI,EAAY,IAC1B,QAAQ,EAAU,EAAS,MAAO,EAAS,OAG7C,IAAI,EAKJ,OAAO,QAAQ,qBAAqB,EAAO,EAAS,OAJlD,QAAQ,oBAAoB,EAAO,EAAS,MAAO,EAKvD,CAQA,SAAS,cAAc,GACrB,IAAI,EAAyB,iBAAV,EAAqB,EAAQ,EAAM,MAEtD,MAAO,CACL,kBAAmB,EAAQ,IAC3B,mBAAmB,EACnB,QAAS,IACT,aAAc,GACd,SAAU,EAAI,KAAK,IAAI,GAE3B,CAKA,IAAI,kBAAoB,0BAA0B,KAAK,MAAM,GAC7D,kBAAkB,OAAS,0BAA0B,KAAK,MAAM,GAChE,kBAAkB,cAAgB,cAElC,OAAO,QAAU","file":"/npm/graphology-layout-forceatlas2@0.10.1/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/graphology-layout-forceatlas2@0.10.1/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * Graphology ForceAtlas2 Layout\n * ==============================\n *\n * Library endpoint.\n */\nvar isGraph = require('graphology-utils/is-graph');\nvar createEdgeWeightGetter =\n  require('graphology-utils/getters').createEdgeWeightGetter;\nvar iterate = require('./iterate.js');\nvar helpers = require('./helpers.js');\n\nvar DEFAULT_SETTINGS = require('./defaults.js');\n\n/**\n * Asbtract function used to run a certain number of iterations.\n *\n * @param  {boolean}       assign          - Whether to assign positions.\n * @param  {Graph}         graph           - Target graph.\n * @param  {object|number} params          - If number, params.iterations, else:\n * @param  {function}        getWeight     - Edge weight getter function.\n * @param  {number}          iterations    - Number of iterations.\n * @param  {function|null}   outputReducer - A node reducer\n * @param  {object}          [settings]    - Settings.\n * @return {object|undefined}\n */\nfunction abstractSynchronousLayout(assign, graph, params) {\n  if (!isGraph(graph))\n    throw new Error(\n      'graphology-layout-forceatlas2: the given graph is not a valid graphology instance.'\n    );\n\n  if (typeof params === 'number') params = {iterations: params};\n\n  var iterations = params.iterations;\n\n  if (typeof iterations !== 'number')\n    throw new Error(\n      'graphology-layout-forceatlas2: invalid number of iterations.'\n    );\n\n  if (iterations <= 0)\n    throw new Error(\n      'graphology-layout-forceatlas2: you should provide a positive number of iterations.'\n    );\n\n  var getEdgeWeight = createEdgeWeightGetter(\n    'getEdgeWeight' in params ? params.getEdgeWeight : 'weight'\n  ).fromEntry;\n\n  var outputReducer =\n    typeof params.outputReducer === 'function' ? params.outputReducer : null;\n\n  // Validating settings\n  var settings = helpers.assign({}, DEFAULT_SETTINGS, params.settings);\n  var validationError = helpers.validateSettings(settings);\n\n  if (validationError)\n    throw new Error(\n      'graphology-layout-forceatlas2: ' + validationError.message\n    );\n\n  // Building matrices\n  var matrices = helpers.graphToByteArrays(graph, getEdgeWeight);\n\n  var i;\n\n  // Iterating\n  for (i = 0; i < iterations; i++)\n    iterate(settings, matrices.nodes, matrices.edges);\n\n  // Applying\n  if (assign) {\n    helpers.assignLayoutChanges(graph, matrices.nodes, outputReducer);\n    return;\n  }\n\n  return helpers.collectLayoutChanges(graph, matrices.nodes);\n}\n\n/**\n * Function returning sane layout settings for the given graph.\n *\n * @param  {Graph|number} graph - Target graph or graph order.\n * @return {object}\n */\nfunction inferSettings(graph) {\n  var order = typeof graph === 'number' ? graph : graph.order;\n\n  return {\n    barnesHutOptimize: order > 2000,\n    strongGravityMode: true,\n    gravity: 0.05,\n    scalingRatio: 10,\n    slowDown: 1 + Math.log(order)\n  };\n}\n\n/**\n * Exporting.\n */\nvar synchronousLayout = abstractSynchronousLayout.bind(null, false);\nsynchronousLayout.assign = abstractSynchronousLayout.bind(null, true);\nsynchronousLayout.inferSettings = inferSettings;\n\nmodule.exports = synchronousLayout;\n"]}