/* -------------------------- */ /* linksPlugin */ /* -------------------------- */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global.linksPlugin = global.linksPlugin || {}))); }(this, function (exports) { 'use strict'; var linksPlugin = function linksPlugin(__mapper = {}) { let link = {} link.quad = quadPlugin.quadPlugin() // quadtree for multifind .x(function(d) {return d.x}) .y(function(d) {return d.y}) link.diagonalv = (d, v) => link.quad.diagonal(d, v = 1.001) // cords vibration link.items = [] link.width = 1 link.fill = "transparent" link.stroke = "yellow" link.srcs = ["solars"] // solars src of links // ----------------------------------- linksPlugin var linksPlugin = function linksPlugin() {} linksPlugin.items = function items(_) { if (arguments.length > 1) link.items =_ return link.items } linksPlugin.linkIdFn = (s, t) => s.idx + ':' + t.idx linksPlugin.fill = function items(_) { if (arguments.length > 1) link.fill =_ return link.fill } // -------------- links render linksPlugin.render = function render(_) { var srcs = link.srcs.reduce((p,c) => p.concat(__mapper(c).items()),[]) // get srcs var linkItems = srcs.reduce((p, c, i, a) => p.concat(c.links), []) // get links in srcs var linksIds = (d, i) => __mapper("links").linkIdFn(d.source, d.target) var linksLayer = __mapper("svg")({cls: 'links', item: 'path.linkPath', data: linkItems, idfn: linksIds}) var diagonalv = (d, v) => link.diagonalv(d, v = 0.001) // cords vibration linksLayer.m .attr("d", diagonalv) .style("fill", link.fill) .style("stroke", link.stroke) .style("stroke-width", "1px") linksLayer.x .remove() } return linksPlugin } exports.linksPlugin = linksPlugin }));