import { Diagram } from './Diagram'

export class Chord {
  name: string
  defaultDiagramKey: symbol
  diagrams = {}

  constructor (name: string, diagram?: Diagram, chordVariant?: string) {
    this.name = name
    this.defaultDiagramKey = Symbol('defaultDiagramKey')
    if (diagram !== undefined) {
      this.setDiagram(diagram, chordVariant)
    }
  }

  getDiagram (variant?: string): Diagram {
    const chordVariantKey = variant ?? this.defaultDiagramKey
    // @ts-expect-error
    return this.diagrams[chordVariantKey]
  }

  setDiagram (diagram: Diagram, variant?: string): void {
    const chordVariantKey = variant ?? this.defaultDiagramKey
    // @ts-expect-error
    this.diagrams[chordVariantKey] = diagram
  }
}
