diff --git a/packages/network/old_index.d.ts b/packages/network/old_index.d.ts deleted file mode 100644 index f1f26025a8..0000000000 --- a/packages/network/old_index.d.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* - * This file is part of the nivo project. - * - * Copyright 2016-present, Raphaƫl Benitte. - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -import * as React from 'react' -import { Dimensions, Box, Theme, MotionProps } from '@nivo/core' -import { InheritedColorConfig } from '@nivo/colors' - -type Omit = Pick> - -declare module '@nivo/network' { - export interface InputNode { - id: string - [key: string]: any - } - - export interface ComputedNode { - id: string - x: string - y: string - radius: string - color: string - [key: string]: any - } - - export interface InputLink { - source: string - target: string - [key: string]: any - } - - export interface ComputedLink { - id: string - source: ComputedNode - target: ComputedNode - [key: string]: any - } - - export type LayerType = 'links' | 'nodes' - export interface CustomLayerProps extends Omit { - nodes: ComputedNode[] - links: ComputedLink[] - } - export type CustomLayer = (props: CustomLayerProps) => React.ReactNode - export type Layer = LayerType | CustomLayer - - type NodeAccessor = (node: N) => T - type LinkAccessor = (link: L) => T - - export interface NetworkProps { - nodes: InputNode[] - links: InputLink[] - - margin?: Box - - linkDistance?: number | LinkAccessor - repulsivity?: number - distanceMin?: number - distanceMax?: number - iterations?: number - - layers?: Layer[] - - nodeColor: string | NodeAccessor - nodeBorderWidth?: number - nodeBorderColor?: InheritedColorConfig - - linkThickness?: number | LinkAccessor - linkColor?: InheritedColorConfig - - theme?: Theme - - isInteractive?: boolean - onClick?: (node: ComputedNode, event: React.MouseEvent) => void - } - - export interface NetworkSvgProps extends NetworkProps, MotionProps { - role?: string - } - - export class Network extends React.Component {} - export class ResponsiveNetwork extends React.Component {} - - export interface NetworkCanvasProps extends NetworkProps { - pixelRatio?: number - } - - export class NetworkCanvas extends React.Component {} - export class ResponsiveNetworkCanvas extends React.Component {} -} diff --git a/packages/network/src/types.ts b/packages/network/src/types.ts new file mode 100644 index 0000000000..ecd96e355c --- /dev/null +++ b/packages/network/src/types.ts @@ -0,0 +1,86 @@ +import { AriaAttributes, MouseEvent, FunctionComponent } from 'react' +import { Box, Theme, Dimensions, ModernMotionProps, PropertyAccessor } from '@nivo/core' +import { InheritedColorConfig } from '@nivo/colors' + +export interface InputNode { + id: string + [key: string]: any +} + +export interface ComputedNode { + id: string + x: string + y: string + radius: string + color: string + [key: string]: any +} + +export interface InputLink { + source: string + target: string + [key: string]: any +} + +export interface ComputedLink { + id: string + source: ComputedNode + target: ComputedNode + [key: string]: any +} + +export interface NetworkDataProps { + data: { + nodes: InputNode[] + links: InputLink[] + } +} + +export type NetworkLayerId = 'links' | 'nodes' +export interface NetworkCustomLayerProps { + nodes: ComputedNode[] + links: ComputedLink[] +} +export type NetworkCustomLayer = FunctionComponent + +export interface NetworkCommonProps { + margin: Box + + layers: (NetworkLayerId | NetworkCustomLayer)[] + + linkDistance: number | PropertyAccessor + repulsivity: number + distanceMin: number + distanceMax: number + iterations: number + + theme: Theme + + nodeColor: string | PropertyAccessor + nodeBorderWidth: number + nodeBorderColor: InheritedColorConfig + + linkThickness: number | PropertyAccessor + linkColor: InheritedColorConfig + + isInteractive: boolean + onClick: (node: ComputedNode, event: MouseEvent) => void + + renderWrapper: boolean + + role: string + ariaLabel: AriaAttributes['aria-label'] + ariaLabelledBy: AriaAttributes['aria-labelledby'] + ariaDescribedBy: AriaAttributes['aria-describedby'] +} + +export type NetworkSvgProps = Partial & + NetworkDataProps & + Dimensions & + ModernMotionProps + +export type NetworkCanvasProps = Partial & + NetworkDataProps & + Dimensions & { + pixelRatio?: number + }