Source: libraries/d3.js

/**
 * @namespace libraries.d3
 */

import isArray from 'lodash/isArray';

/**
 * Initiator for D3 library to connect with voxlens
 * @memberOf libraries.d3
 * @param {Object} element - Object that contains the container for the viz.
 * @returns {Object} - Object containing the viewport element, data, and options
 */
export default (element) => {
  let data = element.data();
  let svgFound = false;

  if (isArray(data[0])) data = data[0];

  let viewportElement = element.node();

  while (!svgFound && viewportElement) {
    const tag = viewportElement.tagName?.toLowerCase();

    if (tag !== 'body' && tag !== 'svg')
      viewportElement = viewportElement.parentElement;
    else {
      if (tag === 'body') viewportElement = element.node();
      svgFound = true;
    }
  }

  return {
    data,
    viewportElement,
  };
};