vega-force
Advanced tools
Comparing version 2.0.0 to 3.0.0
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vega-dataflow'), require('vega-util'), require('d3-force')) : | ||
typeof define === 'function' && define.amd ? define(['exports', 'vega-dataflow', 'vega-util', 'd3-force'], factory) : | ||
(factory((global.vega = global.vega || {}, global.vega.transforms = global.vega.transforms || {}),global.vega,global.vega,global.d3)); | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vega-dataflow'), require('vega-util'), require('d3-force')) : | ||
typeof define === 'function' && define.amd ? define(['exports', 'vega-dataflow', 'vega-util', 'd3-force'], factory) : | ||
(factory((global.vega = global.vega || {}, global.vega.transforms = {}),global.vega,global.vega,global.d3)); | ||
}(this, (function (exports,vegaDataflow,vegaUtil,d3Force) { 'use strict'; | ||
var ForceMap = { | ||
center: d3Force.forceCenter, | ||
collide: d3Force.forceCollide, | ||
nbody: d3Force.forceManyBody, | ||
link: d3Force.forceLink, | ||
x: d3Force.forceX, | ||
y: d3Force.forceY | ||
}; | ||
var ForceMap = { | ||
center: d3Force.forceCenter, | ||
collide: d3Force.forceCollide, | ||
nbody: d3Force.forceManyBody, | ||
link: d3Force.forceLink, | ||
x: d3Force.forceX, | ||
y: d3Force.forceY | ||
}; | ||
var Forces = 'forces'; | ||
var ForceParams = [ | ||
'alpha', 'alphaMin', 'alphaTarget', | ||
'velocityDecay', 'forces' | ||
]; | ||
var ForceConfig = ['static', 'iterations']; | ||
var ForceOutput = ['x', 'y', 'vx', 'vy']; | ||
var Forces = 'forces', | ||
ForceParams = [ | ||
'alpha', 'alphaMin', 'alphaTarget', | ||
'velocityDecay', 'forces' | ||
], | ||
ForceConfig = ['static', 'iterations'], | ||
ForceOutput = ['x', 'y', 'vx', 'vy']; | ||
/** | ||
* Force simulation layout. | ||
* @constructor | ||
* @param {object} params - The parameters for this operator. | ||
* @param {Array<object>} params.forces - The forces to apply. | ||
*/ | ||
function Force(params) { | ||
vegaDataflow.Transform.call(this, null, params); | ||
} | ||
/** | ||
* Force simulation layout. | ||
* @constructor | ||
* @param {object} params - The parameters for this operator. | ||
* @param {Array<object>} params.forces - The forces to apply. | ||
*/ | ||
function Force(params) { | ||
vegaDataflow.Transform.call(this, null, params); | ||
} | ||
Force.Definition = { | ||
"type": "Force", | ||
"metadata": {"modifies": true}, | ||
"params": [ | ||
{ "name": "static", "type": "boolean", "default": false }, | ||
{ "name": "restart", "type": "boolean", "default": false }, | ||
{ "name": "iterations", "type": "number", "default": 300 }, | ||
{ "name": "alpha", "type": "number", "default": 1 }, | ||
{ "name": "alphaMin", "type": "number", "default": 0.001 }, | ||
{ "name": "alphaTarget", "type": "number", "default": 0 }, | ||
{ "name": "velocityDecay", "type": "number", "default": 0.4 }, | ||
{ "name": "forces", "type": "param", "array": true, | ||
"params": [ | ||
{ | ||
"key": {"force": "center"}, | ||
"params": [ | ||
{ "name": "x", "type": "number", "default": 0 }, | ||
{ "name": "y", "type": "number", "default": 0 } | ||
] | ||
}, | ||
{ | ||
"key": {"force": "collide"}, | ||
"params": [ | ||
{ "name": "radius", "type": "number", "expr": true }, | ||
{ "name": "strength", "type": "number", "default": 0.7 }, | ||
{ "name": "iterations", "type": "number", "default": 1 } | ||
] | ||
}, | ||
{ | ||
"key": {"force": "nbody"}, | ||
"params": [ | ||
{ "name": "strength", "type": "number", "default": -30 }, | ||
{ "name": "theta", "type": "number", "default": 0.9 }, | ||
{ "name": "distanceMin", "type": "number", "default": 1 }, | ||
{ "name": "distanceMax", "type": "number" } | ||
] | ||
}, | ||
{ | ||
"key": {"force": "link"}, | ||
"params": [ | ||
{ "name": "links", "type": "data" }, | ||
{ "name": "id", "type": "field" }, | ||
{ "name": "distance", "type": "number", "default": 30, "expr": true }, | ||
{ "name": "strength", "type": "number", "expr": true }, | ||
{ "name": "iterations", "type": "number", "default": 1 } | ||
] | ||
}, | ||
{ | ||
"key": {"force": "x"}, | ||
"params": [ | ||
{ "name": "strength", "type": "number", "default": 0.1 }, | ||
{ "name": "x", "type": "field" } | ||
] | ||
}, | ||
{ | ||
"key": {"force": "y"}, | ||
"params": [ | ||
{ "name": "strength", "type": "number", "default": 0.1 }, | ||
{ "name": "y", "type": "field" } | ||
] | ||
} | ||
] }, | ||
{ | ||
"name": "as", "type": "string", "array": true, "modify": false, | ||
"default": ForceOutput | ||
} | ||
] | ||
}; | ||
Force.Definition = { | ||
"type": "Force", | ||
"metadata": {"modifies": true}, | ||
"params": [ | ||
{ "name": "static", "type": "boolean", "default": false }, | ||
{ "name": "restart", "type": "boolean", "default": false }, | ||
{ "name": "iterations", "type": "number", "default": 300 }, | ||
{ "name": "alpha", "type": "number", "default": 1 }, | ||
{ "name": "alphaMin", "type": "number", "default": 0.001 }, | ||
{ "name": "alphaTarget", "type": "number", "default": 0 }, | ||
{ "name": "velocityDecay", "type": "number", "default": 0.4 }, | ||
{ "name": "forces", "type": "param", "array": true, | ||
"params": [ | ||
{ | ||
"key": {"force": "center"}, | ||
"params": [ | ||
{ "name": "x", "type": "number", "default": 0 }, | ||
{ "name": "y", "type": "number", "default": 0 } | ||
] | ||
}, | ||
{ | ||
"key": {"force": "collide"}, | ||
"params": [ | ||
{ "name": "radius", "type": "number", "expr": true }, | ||
{ "name": "strength", "type": "number", "default": 0.7 }, | ||
{ "name": "iterations", "type": "number", "default": 1 } | ||
] | ||
}, | ||
{ | ||
"key": {"force": "nbody"}, | ||
"params": [ | ||
{ "name": "strength", "type": "number", "default": -30 }, | ||
{ "name": "theta", "type": "number", "default": 0.9 }, | ||
{ "name": "distanceMin", "type": "number", "default": 1 }, | ||
{ "name": "distanceMax", "type": "number" } | ||
] | ||
}, | ||
{ | ||
"key": {"force": "link"}, | ||
"params": [ | ||
{ "name": "links", "type": "data" }, | ||
{ "name": "id", "type": "field" }, | ||
{ "name": "distance", "type": "number", "default": 30, "expr": true }, | ||
{ "name": "strength", "type": "number", "expr": true }, | ||
{ "name": "iterations", "type": "number", "default": 1 } | ||
] | ||
}, | ||
{ | ||
"key": {"force": "x"}, | ||
"params": [ | ||
{ "name": "strength", "type": "number", "default": 0.1 }, | ||
{ "name": "x", "type": "field" } | ||
] | ||
}, | ||
{ | ||
"key": {"force": "y"}, | ||
"params": [ | ||
{ "name": "strength", "type": "number", "default": 0.1 }, | ||
{ "name": "y", "type": "field" } | ||
] | ||
} | ||
] }, | ||
{ | ||
"name": "as", "type": "string", "array": true, "modify": false, | ||
"default": ForceOutput | ||
} | ||
] | ||
}; | ||
var prototype = vegaUtil.inherits(Force, vegaDataflow.Transform); | ||
var prototype = vegaUtil.inherits(Force, vegaDataflow.Transform); | ||
prototype.transform = function(_, pulse) { | ||
var sim = this.value, | ||
change = pulse.changed(pulse.ADD_REM), | ||
params = _.modified(ForceParams), | ||
iters = _.iterations || 300; | ||
prototype.transform = function(_, pulse) { | ||
var sim = this.value, | ||
change = pulse.changed(pulse.ADD_REM), | ||
params = _.modified(ForceParams), | ||
iters = _.iterations || 300; | ||
// configure simulation | ||
if (!sim) { | ||
this.value = sim = simulation(pulse.source, _); | ||
sim.on('tick', rerun(pulse.dataflow, this)); | ||
if (!_.static) { | ||
change = true; | ||
sim.tick(); // ensure we run on init | ||
} | ||
pulse.modifies('index'); | ||
} else { | ||
if (change) { | ||
// configure simulation | ||
if (!sim) { | ||
this.value = sim = simulation(pulse.source, _); | ||
sim.on('tick', rerun(pulse.dataflow, this)); | ||
if (!_.static) { | ||
change = true; | ||
sim.tick(); // ensure we run on init | ||
} | ||
pulse.modifies('index'); | ||
sim.nodes(pulse.source); | ||
} else { | ||
if (change) { | ||
pulse.modifies('index'); | ||
sim.nodes(pulse.source); | ||
} | ||
if (params || pulse.changed(pulse.MOD)) { | ||
setup(sim, _, 0, pulse); | ||
} | ||
} | ||
if (params || pulse.changed(pulse.MOD)) { | ||
setup(sim, _, 0, pulse); | ||
} | ||
} | ||
// run simulation | ||
if (params || change || _.modified(ForceConfig) | ||
|| (pulse.changed() && _.restart)) | ||
{ | ||
sim.alpha(Math.max(sim.alpha(), _.alpha || 1)) | ||
.alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters)); | ||
// run simulation | ||
if (params || change || _.modified(ForceConfig) | ||
|| (pulse.changed() && _.restart)) | ||
{ | ||
sim.alpha(Math.max(sim.alpha(), _.alpha || 1)) | ||
.alphaDecay(1 - Math.pow(sim.alphaMin(), 1 / iters)); | ||
if (_.static) { | ||
for (sim.stop(); --iters >= 0;) sim.tick(); | ||
} else { | ||
if (sim.stopped()) sim.restart(); | ||
if (!change) return pulse.StopPropagation; // defer to sim ticks | ||
if (_.static) { | ||
for (sim.stop(); --iters >= 0;) sim.tick(); | ||
} else { | ||
if (sim.stopped()) sim.restart(); | ||
if (!change) return pulse.StopPropagation; // defer to sim ticks | ||
} | ||
} | ||
} | ||
return this.finish(_, pulse); | ||
}; | ||
return this.finish(_, pulse); | ||
}; | ||
prototype.finish = function(_, pulse) { | ||
var dataflow = pulse.dataflow; | ||
prototype.finish = function(_, pulse) { | ||
var dataflow = pulse.dataflow; | ||
// inspect dependencies, touch link source data | ||
for (var args=this._argops, j=0, m=args.length, arg; j<m; ++j) { | ||
arg = args[j]; | ||
if (arg.name !== Forces || arg.op._argval.force !== 'link') { | ||
continue; | ||
} | ||
for (var ops=arg.op._argops, i=0, n=ops.length, op; i<n; ++i) { | ||
if (ops[i].name === 'links' && (op = ops[i].op.source)) { | ||
dataflow.pulse(op, dataflow.changeset().reflow()); | ||
break; | ||
// inspect dependencies, touch link source data | ||
for (var args=this._argops, j=0, m=args.length, arg; j<m; ++j) { | ||
arg = args[j]; | ||
if (arg.name !== Forces || arg.op._argval.force !== 'link') { | ||
continue; | ||
} | ||
for (var ops=arg.op._argops, i=0, n=ops.length, op; i<n; ++i) { | ||
if (ops[i].name === 'links' && (op = ops[i].op.source)) { | ||
dataflow.pulse(op, dataflow.changeset().reflow()); | ||
break; | ||
} | ||
} | ||
} | ||
// reflow all nodes | ||
return pulse.reflow(_.modified()).modifies(ForceOutput); | ||
}; | ||
function rerun(df, op) { | ||
return function() { df.touch(op).run(); } | ||
} | ||
// reflow all nodes | ||
return pulse.reflow(_.modified()).modifies(ForceOutput); | ||
}; | ||
function simulation(nodes, _) { | ||
var sim = d3Force.forceSimulation(nodes), | ||
stopped = false, | ||
stop = sim.stop, | ||
restart = sim.restart; | ||
function rerun(df, op) { | ||
return function() { df.touch(op).run(); } | ||
} | ||
sim.stopped = function() { | ||
return stopped; | ||
}; | ||
sim.restart = function() { | ||
stopped = false; | ||
return restart(); | ||
}; | ||
sim.stop = function() { | ||
stopped = true; | ||
return stop(); | ||
}; | ||
function simulation(nodes, _) { | ||
var sim = d3Force.forceSimulation(nodes), | ||
stopped = false, | ||
stop = sim.stop, | ||
restart = sim.restart; | ||
return setup(sim, _, true).on('end', function() { stopped = true; }); | ||
} | ||
sim.stopped = function() { | ||
return stopped; | ||
}; | ||
sim.restart = function() { | ||
stopped = false; | ||
return restart(); | ||
}; | ||
sim.stop = function() { | ||
stopped = true; | ||
return stop(); | ||
}; | ||
function setup(sim, _, init, pulse) { | ||
var f = vegaUtil.array(_.forces), i, n, p, name; | ||
return setup(sim, _, true).on('end', function() { stopped = true; }); | ||
} | ||
for (i=0, n=ForceParams.length; i<n; ++i) { | ||
p = ForceParams[i]; | ||
if (p !== Forces && _.modified(p)) sim[p](_[p]); | ||
} | ||
function setup(sim, _, init, pulse) { | ||
var f = vegaUtil.array(_.forces), i, n, p, name; | ||
for (i=0, n=f.length; i<n; ++i) { | ||
name = Forces + i; | ||
p = init || _.modified(Forces, i) ? getForce(f[i]) | ||
: pulse && modified(f[i], pulse) ? sim.force(name) | ||
: null; | ||
if (p) sim.force(name, p); | ||
} | ||
for (i=0, n=ForceParams.length; i<n; ++i) { | ||
p = ForceParams[i]; | ||
if (p !== Forces && _.modified(p)) sim[p](_[p]); | ||
} | ||
for (n=(sim.numForces || 0); i<n; ++i) { | ||
sim.force(Forces + i, null); // remove | ||
} | ||
for (i=0, n=f.length; i<n; ++i) { | ||
name = Forces + i; | ||
p = init || _.modified(Forces, i) ? getForce(f[i]) | ||
: pulse && modified(f[i], pulse) ? sim.force(name) | ||
: null; | ||
if (p) sim.force(name, p); | ||
sim.numForces = f.length; | ||
return sim; | ||
} | ||
for (n=(sim.numForces || 0); i<n; ++i) { | ||
sim.force(Forces + i, null); // remove | ||
function modified(f, pulse) { | ||
var k, v; | ||
for (k in f) { | ||
if (vegaUtil.isFunction(v = f[k]) && pulse.modified(vegaUtil.accessorFields(v))) | ||
return 1; | ||
} | ||
return 0; | ||
} | ||
sim.numForces = f.length; | ||
return sim; | ||
} | ||
function getForce(_) { | ||
var f, p; | ||
function modified(f, pulse) { | ||
var k, v; | ||
for (k in f) { | ||
if (vegaUtil.isFunction(v = f[k]) && pulse.modified(vegaUtil.accessorFields(v))) | ||
return 1; | ||
} | ||
return 0; | ||
} | ||
if (!ForceMap.hasOwnProperty(_.force)) { | ||
vegaUtil.error('Unrecognized force: ' + _.force); | ||
} | ||
f = ForceMap[_.force](); | ||
function getForce(_) { | ||
var f, p; | ||
for (p in _) { | ||
if (vegaUtil.isFunction(f[p])) setForceParam(f[p], _[p], _); | ||
} | ||
if (!ForceMap.hasOwnProperty(_.force)) { | ||
vegaUtil.error('Unrecognized force: ' + _.force); | ||
return f; | ||
} | ||
f = ForceMap[_.force](); | ||
for (p in _) { | ||
if (vegaUtil.isFunction(f[p])) setForceParam(f[p], _[p], _); | ||
function setForceParam(f, v, _) { | ||
f(vegaUtil.isFunction(v) ? function(d) { return v(d, _); } : v); | ||
} | ||
return f; | ||
} | ||
exports.force = Force; | ||
function setForceParam(f, v, _) { | ||
f(vegaUtil.isFunction(v) ? function(d) { return v(d, _); } : v); | ||
} | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
exports.force = Force; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
}))); |
@@ -1,1 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vega-dataflow"),require("vega-util"),require("d3-force")):"function"==typeof define&&define.amd?define(["exports","vega-dataflow","vega-util","d3-force"],t):t((e.vega=e.vega||{},e.vega.transforms=e.vega.transforms||{}),e.vega,e.vega,e.d3)}(this,function(e,t,a,n){"use strict";function r(e){t.Transform.call(this,null,e)}function o(e,t){return function(){e.touch(t).run()}}function i(e,t){var a=n.forceSimulation(e),r=!1,o=a.stop,i=a.restart;return a.stopped=function(){return r},a.restart=function(){return r=!1,i()},a.stop=function(){return r=!0,o()},f(a,t,!0).on("end",function(){r=!0})}function f(e,t,n,r){var o,i,f,c,m=a.array(t.forces);for(o=0,i=l.length;o<i;++o)(f=l[o])!==d&&t.modified(f)&&e[f](t[f]);for(o=0,i=m.length;o<i;++o)c=d+o,(f=n||t.modified(d,o)?s(m[o]):r&&u(m[o],r)?e.force(c):null)&&e.force(c,f);for(i=e.numForces||0;o<i;++o)e.force(d+o,null);return e.numForces=m.length,e}function u(e,t){var n,r;for(n in e)if(a.isFunction(r=e[n])&&t.modified(a.accessorFields(r)))return 1;return 0}function s(e){var t,n;m.hasOwnProperty(e.force)||a.error("Unrecognized force: "+e.force),t=m[e.force]();for(n in e)a.isFunction(t[n])&&c(t[n],e[n],e);return t}function c(e,t,n){e(a.isFunction(t)?function(e){return t(e,n)}:t)}var m={center:n.forceCenter,collide:n.forceCollide,nbody:n.forceManyBody,link:n.forceLink,x:n.forceX,y:n.forceY},d="forces",l=["alpha","alphaMin","alphaTarget","velocityDecay","forces"],p=["static","iterations"],y=["x","y","vx","vy"];r.Definition={type:"Force",metadata:{modifies:!0},params:[{name:"static",type:"boolean",default:!1},{name:"restart",type:"boolean",default:!1},{name:"iterations",type:"number",default:300},{name:"alpha",type:"number",default:1},{name:"alphaMin",type:"number",default:.001},{name:"alphaTarget",type:"number",default:0},{name:"velocityDecay",type:"number",default:.4},{name:"forces",type:"param",array:!0,params:[{key:{force:"center"},params:[{name:"x",type:"number",default:0},{name:"y",type:"number",default:0}]},{key:{force:"collide"},params:[{name:"radius",type:"number",expr:!0},{name:"strength",type:"number",default:.7},{name:"iterations",type:"number",default:1}]},{key:{force:"nbody"},params:[{name:"strength",type:"number",default:-30},{name:"theta",type:"number",default:.9},{name:"distanceMin",type:"number",default:1},{name:"distanceMax",type:"number"}]},{key:{force:"link"},params:[{name:"links",type:"data"},{name:"id",type:"field"},{name:"distance",type:"number",default:30,expr:!0},{name:"strength",type:"number",expr:!0},{name:"iterations",type:"number",default:1}]},{key:{force:"x"},params:[{name:"strength",type:"number",default:.1},{name:"x",type:"field"}]},{key:{force:"y"},params:[{name:"strength",type:"number",default:.1},{name:"y",type:"field"}]}]},{name:"as",type:"string",array:!0,modify:!1,default:y}]};var h=a.inherits(r,t.Transform);h.transform=function(e,t){var a=this.value,n=t.changed(t.ADD_REM),r=e.modified(l),u=e.iterations||300;if(a?(n&&(t.modifies("index"),a.nodes(t.source)),(r||t.changed(t.MOD))&&f(a,e,0,t)):(this.value=a=i(t.source,e),a.on("tick",o(t.dataflow,this)),e.static||(n=!0,a.tick()),t.modifies("index")),r||n||e.modified(p)||t.changed()&&e.restart)if(a.alpha(Math.max(a.alpha(),e.alpha||1)).alphaDecay(1-Math.pow(a.alphaMin(),1/u)),e.static)for(a.stop();--u>=0;)a.tick();else if(a.stopped()&&a.restart(),!n)return t.StopPropagation;return this.finish(e,t)},h.finish=function(e,t){for(var a,n=t.dataflow,r=this._argops,o=0,i=r.length;o<i;++o)if((a=r[o]).name===d&&"link"===a.op._argval.force)for(var f,u=a.op._argops,s=0,c=u.length;s<c;++s)if("links"===u[s].name&&(f=u[s].op.source)){n.pulse(f,n.changeset().reflow());break}return t.reflow(e.modified()).modifies(y)},e.force=r,Object.defineProperty(e,"__esModule",{value:!0})}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vega-dataflow"),require("vega-util"),require("d3-force")):"function"==typeof define&&define.amd?define(["exports","vega-dataflow","vega-util","d3-force"],t):t((e.vega=e.vega||{},e.vega.transforms={}),e.vega,e.vega,e.d3)}(this,function(e,t,s,p){"use strict";var n={center:p.forceCenter,collide:p.forceCollide,nbody:p.forceManyBody,link:p.forceLink,x:p.forceX,y:p.forceY},d="forces",y=["alpha","alphaMin","alphaTarget","velocityDecay","forces"],h=["static","iterations"],l=["x","y","vx","vy"];function a(e){t.Transform.call(this,null,e)}a.Definition={type:"Force",metadata:{modifies:!0},params:[{name:"static",type:"boolean",default:!1},{name:"restart",type:"boolean",default:!1},{name:"iterations",type:"number",default:300},{name:"alpha",type:"number",default:1},{name:"alphaMin",type:"number",default:.001},{name:"alphaTarget",type:"number",default:0},{name:"velocityDecay",type:"number",default:.4},{name:"forces",type:"param",array:!0,params:[{key:{force:"center"},params:[{name:"x",type:"number",default:0},{name:"y",type:"number",default:0}]},{key:{force:"collide"},params:[{name:"radius",type:"number",expr:!0},{name:"strength",type:"number",default:.7},{name:"iterations",type:"number",default:1}]},{key:{force:"nbody"},params:[{name:"strength",type:"number",default:-30},{name:"theta",type:"number",default:.9},{name:"distanceMin",type:"number",default:1},{name:"distanceMax",type:"number"}]},{key:{force:"link"},params:[{name:"links",type:"data"},{name:"id",type:"field"},{name:"distance",type:"number",default:30,expr:!0},{name:"strength",type:"number",expr:!0},{name:"iterations",type:"number",default:1}]},{key:{force:"x"},params:[{name:"strength",type:"number",default:.1},{name:"x",type:"field"}]},{key:{force:"y"},params:[{name:"strength",type:"number",default:.1},{name:"y",type:"field"}]}]},{name:"as",type:"string",array:!0,modify:!1,default:l}]};var r=s.inherits(a,t.Transform);function g(e,t,a,n){var r,o,i,f,u=s.array(t.forces);for(r=0,o=y.length;r<o;++r)(i=y[r])!==d&&t.modified(i)&&e[i](t[i]);for(r=0,o=u.length;r<o;++r)f=d+r,(i=a||t.modified(d,r)?m(u[r]):n&&c(u[r],n)?e.force(f):null)&&e.force(f,i);for(o=e.numForces||0;r<o;++r)e.force(d+r,null);return e.numForces=u.length,e}function c(e,t){var a,n;for(a in e)if(s.isFunction(n=e[a])&&t.modified(s.accessorFields(n)))return 1;return 0}function m(e){var t,a;for(a in n.hasOwnProperty(e.force)||s.error("Unrecognized force: "+e.force),t=n[e.force](),e)s.isFunction(t[a])&&o(t[a],e[a],e);return t}function o(e,t,a){e(s.isFunction(t)?function(e){return t(e,a)}:t)}r.transform=function(e,t){var a,n,r,o,i,f,u,s,c=this.value,d=t.changed(t.ADD_REM),l=e.modified(y),m=e.iterations||300;if(c?(d&&(t.modifies("index"),c.nodes(t.source)),(l||t.changed(t.MOD))&&g(c,e,0,t)):(this.value=(r=t.source,o=e,i=p.forceSimulation(r),f=!1,u=i.stop,s=i.restart,i.stopped=function(){return f},i.restart=function(){return f=!1,s()},i.stop=function(){return f=!0,u()},c=g(i,o,!0).on("end",function(){f=!0})),c.on("tick",(a=t.dataflow,n=this,function(){a.touch(n).run()})),e.static||(d=!0,c.tick()),t.modifies("index")),l||d||e.modified(h)||t.changed()&&e.restart)if(c.alpha(Math.max(c.alpha(),e.alpha||1)).alphaDecay(1-Math.pow(c.alphaMin(),1/m)),e.static)for(c.stop();0<=--m;)c.tick();else if(c.stopped()&&c.restart(),!d)return t.StopPropagation;return this.finish(e,t)},r.finish=function(e,t){for(var a,n=t.dataflow,r=this._argops,o=0,i=r.length;o<i;++o)if((a=r[o]).name===d&&"link"===a.op._argval.force)for(var f,u=a.op._argops,s=0,c=u.length;s<c;++s)if("links"===u[s].name&&(f=u[s].op.source)){n.pulse(f,n.changeset().reflow());break}return t.reflow(e.modified()).modifies(l)},e.force=a,Object.defineProperty(e,"__esModule",{value:!0})}); |
{ | ||
"name": "vega-force", | ||
"version": "2.0.0", | ||
"version": "3.0.0", | ||
"description": "Force simulation transform for Vega dataflows.", | ||
@@ -29,9 +29,9 @@ "keywords": [ | ||
"dependencies": { | ||
"d3-force": "1", | ||
"vega-dataflow": "3", | ||
"vega-util": "1" | ||
"d3-force": "^1.1.0", | ||
"vega-dataflow": "^4.0.0", | ||
"vega-util": "^1.7.0" | ||
}, | ||
"devDependencies": { | ||
"eslint": "4", | ||
"rollup": "0.43", | ||
"rollup": "0.58.2", | ||
"tape": "4", | ||
@@ -38,0 +38,0 @@ "uglify-js": "3" |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
21031
8
+ Addednode-fetch@2.7.0(transitive)
+ Addedtr46@0.0.3(transitive)
+ Addedvega-dataflow@4.1.0(transitive)
+ Addedvega-loader@3.1.0(transitive)
+ Addedwebidl-conversions@3.0.1(transitive)
+ Addedwhatwg-url@5.0.0(transitive)
- Removedd3-request@1.0.6(transitive)
- Removedvega-dataflow@3.1.0(transitive)
- Removedvega-loader@2.1.0(transitive)
- Removedxmlhttprequest@1.8.0(transitive)
Updatedd3-force@^1.1.0
Updatedvega-dataflow@^4.0.0
Updatedvega-util@^1.7.0