'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

var fromKapsule = require('react-kapsule');
var ForceGraphVRKapsule = require('3d-force-graph-vr');
var PropTypes = require('prop-types');
var ForceGraphARKapsule = require('3d-force-graph-ar');
var ForceGraph3DKapsule = require('3d-force-graph');
var ForceGraph2DKapsule = require('force-graph');

function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }

var fromKapsule__default = /*#__PURE__*/_interopDefaultLegacy(fromKapsule);
var ForceGraphVRKapsule__default = /*#__PURE__*/_interopDefaultLegacy(ForceGraphVRKapsule);
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
var ForceGraphARKapsule__default = /*#__PURE__*/_interopDefaultLegacy(ForceGraphARKapsule);
var ForceGraph3DKapsule__default = /*#__PURE__*/_interopDefaultLegacy(ForceGraph3DKapsule);
var ForceGraph2DKapsule__default = /*#__PURE__*/_interopDefaultLegacy(ForceGraph2DKapsule);

var commonPropTypes = {
  width: PropTypes__default['default'].number,
  height: PropTypes__default['default'].number,
  graphData: PropTypes__default['default'].shape({
    nodes: PropTypes__default['default'].arrayOf(PropTypes__default['default'].object).isRequired,
    links: PropTypes__default['default'].arrayOf(PropTypes__default['default'].object).isRequired
  }),
  backgroundColor: PropTypes__default['default'].string,
  nodeRelSize: PropTypes__default['default'].number,
  nodeId: PropTypes__default['default'].string,
  nodeLabel: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  nodeVal: PropTypes__default['default'].oneOfType([PropTypes__default['default'].number, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  nodeVisibility: PropTypes__default['default'].oneOfType([PropTypes__default['default'].bool, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  nodeColor: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  nodeAutoColorBy: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkSource: PropTypes__default['default'].string,
  linkTarget: PropTypes__default['default'].string,
  linkLabel: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkVisibility: PropTypes__default['default'].oneOfType([PropTypes__default['default'].bool, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkHoverPrecision: PropTypes__default['default'].number,
  linkColor: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkAutoColorBy: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkWidth: PropTypes__default['default'].oneOfType([PropTypes__default['default'].number, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkCurvature: PropTypes__default['default'].oneOfType([PropTypes__default['default'].number, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkDirectionalArrowLength: PropTypes__default['default'].oneOfType([PropTypes__default['default'].number, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkDirectionalArrowColor: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkDirectionalArrowRelPos: PropTypes__default['default'].oneOfType([PropTypes__default['default'].number, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkDirectionalParticles: PropTypes__default['default'].oneOfType([PropTypes__default['default'].number, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkDirectionalParticleSpeed: PropTypes__default['default'].oneOfType([PropTypes__default['default'].number, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkDirectionalParticleWidth: PropTypes__default['default'].oneOfType([PropTypes__default['default'].number, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkDirectionalParticleColor: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  dagMode: PropTypes__default['default'].oneOf(['td', 'bu', 'lr', 'rl', 'zin', 'zout', 'radialin', 'radialout']),
  dagLevelDistance: PropTypes__default['default'].number,
  dagNodeFilter: PropTypes__default['default'].func,
  onDagError: PropTypes__default['default'].func,
  d3AlphaMin: PropTypes__default['default'].number,
  d3AlphaDecay: PropTypes__default['default'].number,
  d3VelocityDecay: PropTypes__default['default'].number,
  warmupTicks: PropTypes__default['default'].number,
  cooldownTicks: PropTypes__default['default'].number,
  cooldownTime: PropTypes__default['default'].number,
  onEngineTick: PropTypes__default['default'].func,
  onEngineStop: PropTypes__default['default'].func,
  getGraphBbox: PropTypes__default['default'].func
};
var pointerBasedPropTypes = {
  zoomToFit: PropTypes__default['default'].func,
  onNodeClick: PropTypes__default['default'].func,
  onNodeRightClick: PropTypes__default['default'].func,
  onNodeHover: PropTypes__default['default'].func,
  onNodeDrag: PropTypes__default['default'].func,
  onNodeDragEnd: PropTypes__default['default'].func,
  onLinkClick: PropTypes__default['default'].func,
  onLinkRightClick: PropTypes__default['default'].func,
  onLinkHover: PropTypes__default['default'].func,
  onBackgroundClick: PropTypes__default['default'].func,
  onBackgroundRightClick: PropTypes__default['default'].func,
  enablePointerInteraction: PropTypes__default['default'].bool,
  enableNodeDrag: PropTypes__default['default'].bool
};
var threeBasedPropTypes = {
  showNavInfo: PropTypes__default['default'].bool,
  nodeOpacity: PropTypes__default['default'].number,
  nodeResolution: PropTypes__default['default'].number,
  nodeThreeObject: PropTypes__default['default'].oneOfType([PropTypes__default['default'].object, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  nodeThreeObjectExtend: PropTypes__default['default'].oneOfType([PropTypes__default['default'].bool, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkOpacity: PropTypes__default['default'].number,
  linkResolution: PropTypes__default['default'].number,
  linkCurveRotation: PropTypes__default['default'].oneOfType([PropTypes__default['default'].number, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkMaterial: PropTypes__default['default'].oneOfType([PropTypes__default['default'].object, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkThreeObject: PropTypes__default['default'].oneOfType([PropTypes__default['default'].object, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkThreeObjectExtend: PropTypes__default['default'].oneOfType([PropTypes__default['default'].bool, PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkPositionUpdate: PropTypes__default['default'].func,
  linkDirectionalArrowResolution: PropTypes__default['default'].number,
  linkDirectionalParticleResolution: PropTypes__default['default'].number,
  forceEngine: PropTypes__default['default'].oneOf(['d3', 'ngraph']),
  ngraphPhysics: PropTypes__default['default'].object,
  numDimensions: PropTypes__default['default'].oneOf([1, 2, 3])
};
var ForceGraph2DPropTypes = Object.assign({}, commonPropTypes, pointerBasedPropTypes, {
  linkLineDash: PropTypes__default['default'].oneOfType([PropTypes__default['default'].arrayOf(PropTypes__default['default'].number), PropTypes__default['default'].string, PropTypes__default['default'].func]),
  nodeCanvasObject: PropTypes__default['default'].func,
  nodeCanvasObjectMode: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkCanvasObject: PropTypes__default['default'].func,
  linkCanvasObjectMode: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  enableZoomPanInteraction: PropTypes__default['default'].bool,
  onZoom: PropTypes__default['default'].func,
  onZoomEnd: PropTypes__default['default'].func
});
var ForceGraph3DPropTypes = Object.assign({}, commonPropTypes, pointerBasedPropTypes, threeBasedPropTypes, {
  enableNavigationControls: PropTypes__default['default'].bool,
  controlType: PropTypes__default['default'].oneOf(['trackball', 'orbit', 'fly']),
  rendererConfig: PropTypes__default['default'].object
});
var ForceGraphVRPropTypes = Object.assign({}, commonPropTypes, threeBasedPropTypes, {
  nodeDesc: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  linkDesc: PropTypes__default['default'].oneOfType([PropTypes__default['default'].string, PropTypes__default['default'].func]),
  onNodeCenterHover: PropTypes__default['default'].func,
  onLinkCenterHover: PropTypes__default['default'].func
});
var ForceGraphARPropTypes = Object.assign({}, commonPropTypes, threeBasedPropTypes, {
  markerAttrs: PropTypes__default['default'].object,
  yOffset: PropTypes__default['default'].number,
  glScale: PropTypes__default['default'].number,
  onNodeCenterHover: PropTypes__default['default'].func,
  onLinkCenterHover: PropTypes__default['default'].func
});

const ForceGraphVR = fromKapsule__default['default'](ForceGraphVRKapsule__default['default'], {
  methodNames: [// bind methods
  'getGraphBbox', 'emitParticle', 'd3Force', 'd3ReheatSimulation', 'refresh']
});
ForceGraphVR.displayName = 'ForceGraphVR';
ForceGraphVR.propTypes = ForceGraphVRPropTypes;

const ForceGraphAR = fromKapsule__default['default'](ForceGraphARKapsule__default['default'], {
  methodNames: [// bind methods
  'getGraphBbox', 'emitParticle', 'd3Force', 'd3ReheatSimulation', 'refresh'],
  initPropNames: ['markerAttrs']
});
ForceGraphAR.displayName = 'ForceGraphAR';
ForceGraphAR.propTypes = ForceGraphARPropTypes;

const ForceGraph3D = fromKapsule__default['default'](ForceGraph3DKapsule__default['default'], {
  methodNames: [// bind methods
  'emitParticle', 'd3Force', 'd3ReheatSimulation', 'stopAnimation', 'pauseAnimation', 'resumeAnimation', 'cameraPosition', 'zoomToFit', 'getGraphBbox', 'graph2ScreenCoords', 'postProcessingComposer', 'scene', 'camera', 'renderer', 'controls', 'refresh'],
  initPropNames: ['controlType', 'rendererConfig']
});
ForceGraph3D.displayName = 'ForceGraph3D';
ForceGraph3D.propTypes = ForceGraph3DPropTypes;

const ForceGraph2D = fromKapsule__default['default'](ForceGraph2DKapsule__default['default'], {
  methodNames: [// bind methods
  'emitParticle', 'd3Force', 'd3ReheatSimulation', 'stopAnimation', 'pauseAnimation', 'resumeAnimation', 'centerAt', 'zoom', 'zoomToFit', 'getGraphBbox', 'screen2GraphCoords', 'graph2ScreenCoords']
});
ForceGraph2D.displayName = 'ForceGraph2D';
ForceGraph2D.propTypes = ForceGraph2DPropTypes;

exports.ForceGraph2D = ForceGraph2D;
exports.ForceGraph3D = ForceGraph3D;
exports.ForceGraphAR = ForceGraphAR;
exports.ForceGraphVR = ForceGraphVR;
