{"version":3,"file":null,"sources":["../lib/forceAttract.js"],"sourcesContent":["/**\n * Pulls nodes toward a specified `(x, y)` target point.\n */\nexport default function (target) {\n\n  let nodes,\n    targets,\n    strength,\n    strengths;\n\n  function force (alpha) {\n    let node, target, strength;\n    for (let i=0; i<nodes.length; i++) {\n      node = nodes[i];\n      target = targets[i];\n      strength = strengths[i];\n      node.vx += (target[0] - node.x) * strength * alpha;\n      node.vy += (target[1] - node.y) * strength * alpha;\n    }\n  }\n\n  function initialize () {\n    if (!nodes) return;\n\n    // populate local `strengths` using `strength` accessor\n    strengths = new Array(nodes.length);\n    for (let i=0; i<nodes.length; i++) strengths[i] = strength(nodes[i], i, nodes);\n\n    // populate local `targets` using `target` accessor\n    targets = new Array(nodes.length);\n    for (let i=0; i<nodes.length; i++) targets[i] = target(nodes[i], i, nodes);\n  }\n\n  force.initialize = _ => {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = _ => {\n    // return existing value if no value passed\n    if (_ == null) return strength;\n\n    // coerce `strength` accessor into a function\n    strength = typeof _ === 'function' ? _ : () => +_;\n\n    // reinitialize\n    initialize();\n\n    // allow chaining\n    return force;\n  };\n\n  force.target = _ => {\n    // return existing value if no value passed\n    if (_ == null) return target;\n\n    // coerce `target` accessor into a function\n    target = typeof _ === 'function' ? _ : () => _;\n\n    // reinitialize\n    initialize();\n\n    // allow chaining\n    return force;\n  };\n\n  if (!strength) force.strength(0.1);\n  if (!target) force.target([ 0, 0 ]);\n\n  return force;\n\n}\n"],"names":["target","nodes","targets","strength","strengths","force","alpha","node","i","length","vx","x","vy","y","initialize","Array","_"],"mappings":"AAAA;;;AAGA,mBAAe,UAAUA,MAAV,EAAkB;;MAE3BC,cAAJ;MACEC,gBADF;MAEEC,iBAFF;MAGEC,kBAHF;;WAKSC,KAAT,CAAgBC,KAAhB,EAAuB;QACjBC,aAAJ;QAAUP,eAAV;QAAkBG,iBAAlB;SACK,IAAIK,IAAE,CAAX,EAAcA,IAAEP,MAAMQ,MAAtB,EAA8BD,GAA9B,EAAmC;aAC1BP,MAAMO,CAAN,CAAP;eACSN,QAAQM,CAAR,CAAT;iBACWJ,UAAUI,CAAV,CAAX;WACKE,EAAL,IAAW,CAACV,OAAO,CAAP,IAAYO,KAAKI,CAAlB,IAAuBR,QAAvB,GAAkCG,KAA7C;WACKM,EAAL,IAAW,CAACZ,OAAO,CAAP,IAAYO,KAAKM,CAAlB,IAAuBV,QAAvB,GAAkCG,KAA7C;;;;WAIKQ,UAAT,GAAuB;QACjB,CAACb,KAAL,EAAY;;;gBAGA,IAAIc,KAAJ,CAAUd,MAAMQ,MAAhB,CAAZ;SACK,IAAID,IAAE,CAAX,EAAcA,IAAEP,MAAMQ,MAAtB,EAA8BD,GAA9B;gBAA6CA,CAAV,IAAeL,SAASF,MAAMO,CAAN,CAAT,EAAmBA,CAAnB,EAAsBP,KAAtB,CAAf;KALd;cAQX,IAAIc,KAAJ,CAAUd,MAAMQ,MAAhB,CAAV;SACK,IAAID,KAAE,CAAX,EAAcA,KAAEP,MAAMQ,MAAtB,EAA8BD,IAA9B;cAA2CA,EAAR,IAAaR,OAAOC,MAAMO,EAAN,CAAP,EAAiBA,EAAjB,EAAoBP,KAApB,CAAb;;;;QAG/Ba,UAAN,GAAmB,aAAK;YACdE,CAAR;;GADF;;QAKMb,QAAN,GAAiB,aAAK;;QAEhBa,KAAK,IAAT,EAAe,OAAOb,QAAP;;;eAGJ,OAAOa,CAAP,KAAa,UAAb,GAA0BA,CAA1B,GAA8B;aAAM,CAACA,CAAP;KAAzC;;;;;;WAMOX,KAAP;GAXF;;QAcML,MAAN,GAAe,aAAK;;QAEdgB,KAAK,IAAT,EAAe,OAAOhB,MAAP;;;aAGN,OAAOgB,CAAP,KAAa,UAAb,GAA0BA,CAA1B,GAA8B;aAAMA,CAAN;KAAvC;;;;;;WAMOX,KAAP;GAXF;;MAcI,CAACF,QAAL,EAAeE,MAAMF,QAAN,CAAe,GAAf;MACX,CAACH,MAAL,EAAaK,MAAML,MAAN,CAAa,CAAE,CAAF,EAAK,CAAL,CAAb;;SAENK,KAAP;;;"}