This is an extension and not part of the main GoJS library. Note that the API for this class may change at any time. If you intend to use an extension in production, you should copy the code to your own source directory. Extensions can be found in the GoJS kit under the `extensions` (for loading via script tags),`extensionsTS` (UMD modules), or `extensionsJSM` (ES6 modules) folders. See the Extensions intro page for more information.

### Hierarchy

- GraphObject
  - Panel
    - Part
      - Link
        - FishboneLink

Custom Link class for FishboneLayout.

## Index

### Constructors

- constructor

### Methods

- computeAdjusting
- computePoints

## Inherited Members

### Properties

- GraphObject.actionCancel
- GraphObject.actionDown
- GraphObject.actionMove
- GraphObject.actionUp
- GraphObject.actualBounds
- GraphObject.alignment
- GraphObject.alignmentFocus
- GraphObject.angle
- GraphObject.background
- GraphObject.click
- GraphObject.column
- GraphObject.columnSpan
- GraphObject.contextClick
- GraphObject.contextMenu
- GraphObject.cursor
- GraphObject.desiredSize
- GraphObject.doubleClick
- GraphObject.enabledChanged
- GraphObject.fromLinkable
- GraphObject.fromLinkableDuplicates
- GraphObject.fromLinkableSelfNode
- GraphObject.fromMaxLinks
- GraphObject.height
- GraphObject.isActionable
- GraphObject.isPanelMain
- GraphObject.margin
- GraphObject.maxSize
- GraphObject.measuredBounds
- GraphObject.minSize
- GraphObject.mouseDragEnter
- GraphObject.mouseDragLeave
- GraphObject.mouseDrop
- GraphObject.mouseEnter
- GraphObject.mouseHold
- GraphObject.mouseHover
- GraphObject.mouseLeave
- GraphObject.mouseOver
- GraphObject.name
- GraphObject.naturalBounds
- GraphObject.opacity
- GraphObject.panel
- GraphObject.part
- GraphObject.pickable
- GraphObject.portId
- GraphObject.position
- GraphObject.row
- GraphObject.rowSpan
- GraphObject.scale
- GraphObject.segmentFraction
- GraphObject.segmentIndex
- GraphObject.segmentOffset
- GraphObject.segmentOrientation
- GraphObject.shadowVisible
- GraphObject.stretch
- GraphObject.toLinkable
- GraphObject.toLinkableDuplicates
- GraphObject.toLinkableSelfNode
- GraphObject.toMaxLinks
- GraphObject.toolTip
- GraphObject.visible
- GraphObject.width
- Link.adjusting
- Link.corner
- Link.curve
- Link.curviness
- Link.fromEndSegmentLength
- Link.fromNode
- Link.fromPort
- Link.fromPortChanged
- Link.fromPortId
- Link.fromShortLength
- Link.fromSpot
- Link.geometry
- Link.isLabeledLink
- Link.isOrthogonal
- Link.isTreeLink
- Link.key
- Link.labelNodes
- Link.midAngle
- Link.midPoint
- Link.path
- Link.points
- Link.pointsCount
- Link.relinkableFrom
- Link.relinkableTo
- Link.resegmentable
- Link.routeBounds
- Link.routing
- Link.smoothness
- Link.toEndSegmentLength
- Link.toNode
- Link.toPort
- Link.toPortChanged
- Link.toPortId
- Link.toShortLength
- Link.toSpot
- Panel.alignmentFocusName
- Panel.columnCount
- Panel.columnSizing
- Panel.data
- Panel.defaultAlignment
- Panel.defaultColumnSeparatorDashArray
- Panel.defaultColumnSeparatorStroke
- Panel.defaultColumnSeparatorStrokeWidth
- Panel.defaultRowSeparatorDashArray
- Panel.defaultRowSeparatorStroke
- Panel.defaultRowSeparatorStrokeWidth
- Panel.defaultSeparatorPadding
- Panel.defaultStretch
- Panel.elements
- Panel.graduatedMax
- Panel.graduatedMin
- Panel.graduatedRange
- Panel.graduatedTickBase
- Panel.graduatedTickUnit
- Panel.gridCellSize
- Panel.gridOrigin
- Panel.isClipping
- Panel.isEnabled
- Panel.isOpposite
- Panel.itemArray
- Panel.itemCategoryProperty
- Panel.itemIndex
- Panel.itemTemplate
- Panel.itemTemplateMap
- Panel.leftIndex
- Panel.padding
- Panel.rowCount
- Panel.rowSizing
- Panel.topIndex
- Panel.type
- Panel.viewboxStretch
- Part.adornments
- Part.category
- Part.containingGroup
- Part.containingGroupChanged
- Part.copyable
- Part.deletable
- Part.diagram
- Part.dragComputation
- Part.groupable
- Part.highlightedChanged
- Part.isAnimated
- Part.isHighlighted
- Part.isInDocumentBounds
- Part.isLayoutPositioned
- Part.isSelected
- Part.isShadowed
- Part.isTopLevel
- Part.layer
- Part.layerChanged
- Part.layerName
- Part.layoutConditions
- Part.location
- Part.locationObject
- Part.locationObjectName
- Part.locationSpot
- Part.maxLocation
- Part.minLocation
- Part.movable
- Part.reshapable
- Part.resizable
- Part.resizeAdornmentTemplate
- Part.resizeCellSize
- Part.resizeObject
- Part.resizeObjectName
- Part.rotatable
- Part.rotateAdornmentTemplate
- Part.rotateObject
- Part.rotateObjectName
- Part.rotationSpot
- Part.selectable
- Part.selectionAdorned
- Part.selectionAdornmentTemplate
- Part.selectionChanged
- Part.selectionObject
- Part.selectionObjectName
- Part.shadowBlur
- Part.shadowColor
- Part.shadowOffset
- Part.text
- Part.textEditable
- Part.zOrder

### Methods

- GraphObject.apply
- GraphObject.attach
- GraphObject.bind
- GraphObject.cloneProtected
- GraphObject.findBindingPanel
- GraphObject.getDocumentAngle
- GraphObject.getDocumentPoint
- GraphObject.getDocumentScale
- GraphObject.getLocalPoint
- GraphObject.isContainedBy
- GraphObject.isEnabledObject
- GraphObject.isVisibleObject
- GraphObject.set
- GraphObject.setProperties
- GraphObject.trigger
- Link.addPoint
- Link.canRelinkFrom
- Link.canRelinkTo
- Link.clearPoints
- Link.computeCurve
- Link.computeCurviness
- Link.computeEndSegmentLength
- Link.computeOtherPoint
- Link.computeSpacing
- Link.computeSpot
- Link.computeThickness
- Link.findClosestSegment
- Link.getLinkDirection
- Link.getLinkPoint
- Link.getLinkPointFromPoint
- Link.getOtherNode
- Link.getOtherPort
- Link.getPoint
- Link.hasCurviness
- Link.insertPoint
- Link.invalidateRoute
- Link.makeGeometry
- Link.move
- Link.removePoint
- Link.setPoint
- Link.updateRoute
- Panel.add
- Panel.copy
- Panel.copyTemplate
- Panel.elt
- Panel.findColumnForLocalX
- Panel.findItemPanelForData
- Panel.findMainElement
- Panel.findObject
- Panel.findRowForLocalY
- Panel.getColumnDefinition
- Panel.getRowDefinition
- Panel.graduatedPointForValue
- Panel.graduatedValueForPoint
- Panel.insertAt
- Panel.rebuildItemElements
- Panel.remove
- Panel.removeAt
- Panel.removeColumnDefinition
- Panel.removeRowDefinition
- Part.addAdornment
- Part.canCopy
- Part.canDelete
- Part.canEdit
- Part.canGroup
- Part.canLayout
- Part.canMove
- Part.canReshape
- Part.canResize
- Part.canRotate
- Part.canSelect
- Part.clearAdornments
- Part.ensureBounds
- Part.findAdornment
- Part.findCommonContainingGroup
- Part.findSubGraphLevel
- Part.findTopLevelPart
- Part.getDocumentBounds
- Part.invalidateLayout
- Part.isMemberOf
- Part.isVisible
- Part.moveTo
- Part.removeAdornment
- Part.updateAdornments
- Part.updateRelationshipsFromData
- Part.updateTargetBindings

## Constructors

### constructor

- new FishboneLink(init?: Partial<Link>): FishboneLink

- Constructs an empty link that does not connect any nodes. If you want the link to be seen, you must provide a Shape as an element to be used as the visual path for the link.

  Usage example:

      // Constructs a Link, sets properties on it,
      // adds a data binding to it,
      // and adds two Shapes to the Link:
      const l = new go.Link({
        routing: go.Link.Orthogonal
      })
      .add(new go.Shape({ strokeWidth: 2 }))
      .add(new go.Shape({ toArrow: "Standard" }))

  #### Parameters

  - ##### Optional init: Partial<Link>

    Optional initialization properties.

  #### Returns FishboneLink

## Methods

### Override computeAdjusting

- computeAdjusting(): EnumValue

- Returns the adjusting value, unless this Link's Diagram is animating and the routing is AvoidsNodes -- then it will return End

  This method may be overridden. Please read the Introduction page on Extensions for how to override methods and how to call this base method.

  #### Returns EnumValue

### Override computePoints

- computePoints(): boolean

- Determines the points for this link based on spots and maintains horizontal lines.

  #### Returns boolean

Copyright © 1998-2022 by Northwoods Software Corporation.