Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@zealot128
Created December 11, 2020 18:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zealot128/5ffd7696e42248e70c9d06db5886c6cb to your computer and use it in GitHub Desktop.
Save zealot128/5ffd7696e42248e70c9d06db5886c6cb to your computer and use it in GitHub Desktop.
d3-sankey-circular typescript types
type SankeyInputNode = {
name: string
column?: number,
}
type SankeyInputLink = {
source: string,
target: string,
value: number,
optimal: string
}
type SankeyInputData = {
nodes: SankeyInputNode[],
links: SankeyInputLink[],
}
type SankeyEnhancedLink = SankeyInputNode & {
path: string,
circular: boolean,
source: SankeyEnhancedNode,
target: SankeyEnhancedNode,
y0: number,
y1: number,
width: number,
index: number,
circularLinkType?: "top" | "bottom",
}
type SankeyEnhancedNode = SankeyInputNode & {
depth: number,
x0: number,
x1: number,
y0: number,
y1: number,
x: number,
y: number,
index: number,
partOfCycle: boolean,
column: number,
sourceLinks: SankeyEnhancedLink[],
targetLinks: SankeyEnhancedLink[],
circularLinkID?: number,
circularLinkType?: "top" | "bottom",
circularLinkPathData: any
}
type SankeyEnhancedData = {
nodes: SankeyEnhancedNode[],
links: SankeyEnhancedLink[],
}
interface nodeFn { (element: SankeyEnhancedNode): void }
interface nodeIdFn { (element: SankeyInputNode): (string | number) }
interface sankeyAlignFn { (element: SankeyEnhancedNode): number }
type size = [number, number]
declare module 'd3-sankey-circular' {
type SankeyObject = {
nodeId(arg: nodeIdFn): SankeyObject
nodeAlign(arg: sankeyAlignFn): SankeyObject
nodeWidth(arg: number): SankeyObject
nodePadding(arg: number): SankeyObject
nodePaddingRatio(arg: number): SankeyObject
nodes(arg: any): SankeyObject
links(arg: any): SankeyObject
size(arg: size): SankeyObject
extend(arg: [size, size]): SankeyObject
iterations(arg: number): SankeyObject
circularLinkGap(arg: number): SankeyObject
sortNodes(arg: string): SankeyObject
update(arg: SankeyInputData): SankeyEnhancedData
(arg: SankeyInputData): SankeyEnhancedData
}
export function sankeyCircular(): SankeyObject
export function sankeyCenter(node: SankeyEnhancedNode): number
export function sankeyLeft(node: SankeyEnhancedNode): number
export function sankeyRight(node: SankeyEnhancedNode): number
export function sankeyJustify(node: SankeyEnhancedNode): number
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment