UNPKG

d3-force-attract

Version:
1 lines 3.23 kB
{"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;;;"}