constructor(opts) {
    super(opts);
    // load in arguments from config object
    this.data = opts.data;
    this.links = opts.links;
    this.margin = opts.margin || { top: 50, right: 20, bottom: 10, left: 20 };
    this.colors = opts.colors || colors;
    this.highlight = opts.highlight;
    this.roughness = roughCeiling({
      roughness: opts.roughness,
      ceiling: 30,
      defaultValue: 0,
    });
    this.strokeWidth = opts.strokeWidth || 0.75;
    this.innerStrokeWidth = opts.innerStrokeWidth || 0.75;
    this.fillWeight = opts.fillWeight || 0.85;
    this.color = opts.color || "skyblue";
    this.collision = opts.collision || 1.4;
    this.radiusExtent = opts.radiusExtent || [5, 20];
    this.radius = opts.radius || "radius";
    const defaultTextCallback = (d) => "";
    this.textCallback = opts.textCallback || defaultTextCallback;
    const defaultColorCallback = (d) => this.color;
    this.colorCallback = opts.colorCallback || defaultColorCallback;
    this.roughnessExtent = opts.roughnessExtent || [0, 10];
    this.responsive = true;
    this.boundRedraw = this.redraw.bind(this, opts);
    this.legend = opts.legend || false;
    this.legendPosition = opts.legendPosition || "right";
    // new width
    this.initChartValues(opts);
    // resolve font
    this.resolveFont();
    // create the chart
    this.drawChart = this.resolveData(opts.data, opts.links);
    this.drawChart();
    if (opts.title !== "undefined") this.setTitle(opts.title);
  }
Constructs a new Network instance.
@param {Object} opts - Configuration object for the network chart.