Преглед изворни кода

refactor: fix some circular imports (merge PR #845) (#855)

* refactor: avoid circular import

#855:
* fix Dictionary import and test fail

Co-authored-by: sschmid <s.schmid@phonicscore.com>
Co-authored-by: Heo Sangmin <heo@mapiacompany.com>
Simon пре 4 година
родитељ
комит
d103857eda

+ 1 - 1
src/MusicalScore/Graphical/AbstractGraphicalExpression.ts

@@ -4,7 +4,7 @@ import { StaffLine } from "./StaffLine";
 import { BoundingBox } from "./BoundingBox";
 import { AbstractExpression, PlacementEnum } from "../VoiceData/Expressions/AbstractExpression";
 import { EngravingRules } from "./EngravingRules";
-import { SourceMeasure } from "../VoiceData";
+import { SourceMeasure } from "../VoiceData/SourceMeasure";
 
 export abstract class AbstractGraphicalExpression extends GraphicalObject {
     protected label: GraphicalLabel;

+ 2 - 1
src/MusicalScore/Graphical/AccidentalCalculator.ts

@@ -3,7 +3,8 @@ import {KeyInstruction} from "../VoiceData/Instructions/KeyInstruction";
 import {GraphicalNote} from "./GraphicalNote";
 import {Pitch} from "../../Common/DataObjects/Pitch";
 import {NoteEnum} from "../../Common/DataObjects/Pitch";
-import Dictionary from "typescript-collections/dist/lib/Dictionary";
+import { Dictionary } from "typescript-collections";
+// import { Dictionary } from "typescript-collections/dist/lib";
 import { MusicSheetCalculator } from "./MusicSheetCalculator";
 
 /**

+ 4 - 3
src/MusicalScore/Graphical/DrawingEnums.ts

@@ -1,5 +1,6 @@
 // import * as Collections from "typescript-collections";
-import Collections = require("typescript-collections");
+// import Collections = require("typescript-collections");
+import { Dictionary } from "typescript-collections";
 
 /**
  * The supported styles to draw a rectangle on the music sheet
@@ -41,8 +42,8 @@ export enum OutlineAndFillStyleEnum {
 }
 
 // tslint:disable-next-line:max-line-length A linebreak would be more confusing here
-export const OUTLINE_AND_FILL_STYLE_DICT: Collections.Dictionary<OutlineAndFillStyleEnum, string> =
-    new Collections.Dictionary<OutlineAndFillStyleEnum, string>();
+export const OUTLINE_AND_FILL_STYLE_DICT: Dictionary<OutlineAndFillStyleEnum, string> =
+    new Dictionary<OutlineAndFillStyleEnum, string>();
 OUTLINE_AND_FILL_STYLE_DICT.setValue(OutlineAndFillStyleEnum.BaseWritingColor, "Thistle");
 OUTLINE_AND_FILL_STYLE_DICT.setValue(OutlineAndFillStyleEnum.FollowingCursor, "Aqua");
 OUTLINE_AND_FILL_STYLE_DICT.setValue(OutlineAndFillStyleEnum.AlternativeFollowingCursor, "Azure");

+ 1 - 1
src/MusicalScore/Graphical/GraphicalContinuousDynamicExpression.ts

@@ -8,7 +8,7 @@ import { PlacementEnum } from "../VoiceData/Expressions/AbstractExpression";
 import { SkyBottomLineCalculator } from "./SkyBottomLineCalculator";
 import { ISqueezable } from "./ISqueezable";
 import log from "loglevel";
-import { SourceMeasure } from "../VoiceData";
+import { SourceMeasure } from "../VoiceData/SourceMeasure";
 
 /**
  * This class prepares the graphical elements for a continuous expression. It calculates the wedges and

+ 1 - 1
src/MusicalScore/Graphical/GraphicalMusicSheet.ts

@@ -18,7 +18,7 @@ import {Instrument} from "../Instrument";
 import {BoundingBox} from "./BoundingBox";
 import {MusicSheetCalculator} from "./MusicSheetCalculator";
 import log from "loglevel";
-//import Dictionary from "typescript-collections/dist/lib/Dictionary"; // unused for now
+//import { Dictionary } from "typescript-collections"; // unused for now
 import {CollectionUtil} from "../../Util/CollectionUtil";
 import {SelectionStartSymbol} from "./SelectionStartSymbol";
 import {SelectionEndSymbol} from "./SelectionEndSymbol";

+ 1 - 1
src/MusicalScore/Graphical/MusicSheetCalculator.ts

@@ -48,7 +48,7 @@ import { MidiInstrument } from "../VoiceData/Instructions/ClefInstruction";
 import { Staff } from "../VoiceData/Staff";
 import { OctaveShift } from "../VoiceData/Expressions/ContinuousExpressions/OctaveShift";
 import log from "loglevel";
-import Dictionary from "typescript-collections/dist/lib/Dictionary";
+import { Dictionary } from "typescript-collections";
 import { GraphicalLyricEntry } from "./GraphicalLyricEntry";
 import { GraphicalLyricWord } from "./GraphicalLyricWord";
 import { GraphicalLine } from "./GraphicalLine";

+ 1 - 1
src/MusicalScore/Graphical/MusicSystem.ts

@@ -13,7 +13,7 @@ import {EngravingRules} from "./EngravingRules";
 import {PointF2D} from "../../Common/DataObjects/PointF2D";
 import {GraphicalStaffEntry} from "./GraphicalStaffEntry";
 import {SystemLinesEnum} from "./SystemLinesEnum";
-import Dictionary from "typescript-collections/dist/lib/Dictionary";
+import { Dictionary } from "typescript-collections";
 import {GraphicalComment} from "./GraphicalComment";
 import {GraphicalMarkedArea} from "./GraphicalMarkedArea";
 import {SystemLine} from "./SystemLine";

+ 1 - 1
src/MusicalScore/Graphical/VexFlow/SvgVexFlowBackend.ts

@@ -6,8 +6,8 @@ import {FontStyles} from "../../../Common/Enums/FontStyles";
 import {Fonts} from "../../../Common/Enums/Fonts";
 import {RectangleF2D} from "../../../Common/DataObjects/RectangleF2D";
 import {PointF2D} from "../../../Common/DataObjects/PointF2D";
-import {EngravingRules} from "..";
 import {BackendType} from "../../../OpenSheetMusicDisplay";
+import {EngravingRules} from "../EngravingRules";
 
 export class SvgVexFlowBackend extends VexFlowBackend {
 

+ 2 - 1
src/MusicalScore/Graphical/VexFlow/VexFlowBackend.ts

@@ -3,8 +3,9 @@ import {FontStyles} from "../../../Common/Enums/FontStyles";
 import {Fonts} from "../../../Common/Enums/Fonts";
 import {RectangleF2D} from "../../../Common/DataObjects/RectangleF2D";
 import {PointF2D} from "../../../Common/DataObjects/PointF2D";
-import {GraphicalMusicPage, EngravingRules} from "..";
 import {BackendType} from "../../../OpenSheetMusicDisplay";
+import {GraphicalMusicPage} from "../GraphicalMusicPage";
+import {EngravingRules} from "../EngravingRules";
 
 export class VexFlowBackends {
   public static CANVAS: 0;

+ 1 - 1
src/MusicalScore/Graphical/VexFlow/VexFlowConverter.ts

@@ -25,7 +25,7 @@ import { unitInPixels } from "./VexFlowMusicSheetDrawer";
 import { EngravingRules } from "../EngravingRules";
 import { Note } from "../..";
 import StaveNote = Vex.Flow.StaveNote;
-import { ArpeggioType } from "../../VoiceData";
+import { ArpeggioType } from "../../VoiceData/Arpeggio";
 import { TabNote } from "../../VoiceData/TabNote";
 
 /**

+ 2 - 1
src/MusicalScore/Graphical/VexFlow/VexFlowMeasure.ts

@@ -33,8 +33,9 @@ import {TechnicalInstruction, TechnicalInstructionType} from "../../VoiceData/In
 import {PlacementEnum} from "../../VoiceData/Expressions/AbstractExpression";
 import {VexFlowGraphicalNote} from "./VexFlowGraphicalNote";
 import {AutoBeamOptions} from "../../../OpenSheetMusicDisplay/OSMDOptions";
-import {NoteType, Arpeggio} from "../../VoiceData";
 import {SkyBottomLineCalculator} from "../SkyBottomLineCalculator";
+import { NoteType } from "../../VoiceData/NoteType";
+import { Arpeggio } from "../../VoiceData/Arpeggio";
 
 // type StemmableNote = Vex.Flow.StemmableNote;
 

+ 1 - 1
src/MusicalScore/Graphical/VexFlow/VexFlowMusicSheetDrawer.ts

@@ -21,7 +21,7 @@ import { GraphicalSlur } from "../GraphicalSlur";
 import { PlacementEnum } from "../../VoiceData/Expressions/AbstractExpression";
 import { GraphicalInstantaneousTempoExpression } from "../GraphicalInstantaneousTempoExpression";
 import { GraphicalInstantaneousDynamicExpression } from "../GraphicalInstantaneousDynamicExpression";
-import log = require("loglevel");
+import log from "loglevel";
 import { GraphicalContinuousDynamicExpression } from "../GraphicalContinuousDynamicExpression";
 import { VexFlowContinuousDynamicExpression } from "./VexFlowContinuousDynamicExpression";
 import { DrawingParameters } from "../DrawingParameters";

+ 1 - 1
src/MusicalScore/Graphical/VexFlow/VexFlowVoiceEntry.ts

@@ -3,10 +3,10 @@ import { VoiceEntry } from "../../VoiceData/VoiceEntry";
 import { GraphicalVoiceEntry } from "../GraphicalVoiceEntry";
 import { GraphicalStaffEntry } from "../GraphicalStaffEntry";
 import { unitInPixels } from "./VexFlowMusicSheetDrawer";
-import { GraphicalNote } from "..";
 import { NoteEnum } from "../../../Common/DataObjects/Pitch";
 import { Note } from "../../VoiceData/Note";
 import { ColoringModes } from "./../DrawingParameters";
+import { GraphicalNote } from "../GraphicalNote";
 
 export class VexFlowVoiceEntry extends GraphicalVoiceEntry {
     private mVexFlowStaveNote: Vex.Flow.StemmableNote;

+ 2 - 1
src/MusicalScore/Graphical/VexFlow/VexflowStafflineNoteCalculator.ts

@@ -1,10 +1,11 @@
 import { IStafflineNoteCalculator } from "../../Interfaces/IStafflineNoteCalculator";
 import { GraphicalNote } from "../GraphicalNote";
-import { ClefEnum, StemDirectionType, VoiceEntry } from "../../VoiceData";
 import { Pitch, NoteEnum } from "../../../Common";
 import { VexFlowGraphicalNote } from "./VexFlowGraphicalNote";
 import { Dictionary } from "typescript-collections";
 import { EngravingRules } from "../EngravingRules";
+import { ClefEnum } from "../../VoiceData/Instructions/ClefInstruction";
+import { StemDirectionType, VoiceEntry } from "../../VoiceData/VoiceEntry";
 
 export class VexflowStafflineNoteCalculator implements IStafflineNoteCalculator {
     private rules: EngravingRules;

+ 1 - 1
src/MusicalScore/Interfaces/IGraphicalSymbolFactory.ts

@@ -15,7 +15,7 @@ import { TechnicalInstruction } from "../VoiceData/Instructions/TechnicalInstruc
 import { GraphicalVoiceEntry } from "../Graphical/GraphicalVoiceEntry";
 import { VoiceEntry } from "../VoiceData/VoiceEntry";
 import { EngravingRules } from "../Graphical/EngravingRules";
-import { KeyInstruction } from "../VoiceData";
+import { KeyInstruction } from "../VoiceData/Instructions/KeyInstruction";
 
 export interface IGraphicalSymbolFactory {
 

+ 2 - 2
src/MusicalScore/ScoreIO/InstrumentReader.ts

@@ -24,8 +24,8 @@ import {ExpressionReader} from "./MusicSymbolModules/ExpressionReader";
 import {RepetitionInstructionReader} from "./MusicSymbolModules/RepetitionInstructionReader";
 import {SlurReader} from "./MusicSymbolModules/SlurReader";
 import {StemDirectionType} from "../VoiceData/VoiceEntry";
-import {NoteType, NoteTypeHandler} from "../VoiceData";
-import {SystemLinesEnumHelper} from "../Graphical";
+import {NoteType, NoteTypeHandler} from "../VoiceData/NoteType";
+import { SystemLinesEnumHelper } from "../Graphical/SystemLinesEnum";
 // import {Dictionary} from "typescript-collections";
 
 // FIXME: The following classes are missing

+ 1 - 1
src/MusicalScore/ScoreIO/MusicSheetReader.ts

@@ -21,7 +21,7 @@ import {MusicSymbolModuleFactory} from "./MusicSymbolModuleFactory";
 import {IAfterSheetReadingModule} from "../Interfaces/IAfterSheetReadingModule";
 import {RepetitionInstructionReader} from "./MusicSymbolModules/RepetitionInstructionReader";
 import {RepetitionCalculator} from "./MusicSymbolModules/RepetitionCalculator";
-import {EngravingRules} from "../Graphical";
+import {EngravingRules} from "../Graphical/EngravingRules";
 
 export class MusicSheetReader /*implements IMusicSheetReader*/ {
 

+ 1 - 1
src/MusicalScore/VoiceData/ChordSymbolContainer.ts

@@ -2,7 +2,7 @@ import {Pitch} from "../../Common/DataObjects/Pitch";
 import {KeyInstruction} from "./Instructions/KeyInstruction";
 import {MusicSheetCalculator} from "../Graphical/MusicSheetCalculator";
 import {AccidentalEnum} from "../../Common/DataObjects/Pitch";
-import { EngravingRules } from "../Graphical";
+import { EngravingRules } from "../Graphical/EngravingRules";
 
 export class ChordSymbolContainer {
     private rootPitch: Pitch;

+ 4 - 1
src/MusicalScore/VoiceData/SourceMeasure.ts

@@ -11,7 +11,9 @@ import {MultiTempoExpression} from "./Expressions/MultiTempoExpression";
 import {KeyInstruction} from "./Instructions/KeyInstruction";
 import {AbstractNotationInstruction} from "./Instructions/AbstractNotationInstruction";
 import {Repetition} from "../MusicSource/Repetition";
-import {GraphicalMeasure, SystemLinesEnum, EngravingRules} from "../Graphical";
+import {SystemLinesEnum} from "../Graphical/SystemLinesEnum";
+import {EngravingRules} from "../Graphical/EngravingRules";
+import {GraphicalMeasure} from "../Graphical/GraphicalMeasure";
 //import {BaseIdClass} from "../../Util/BaseIdClass"; // SourceMeasure originally extended BaseIdClass, but ids weren't used.
 
 /**
@@ -23,6 +25,7 @@ export class SourceMeasure {
      * The data entries and data lists will be filled with null values according to the total number of staves,
      * so that existing objects can be referred to by staff index.
      * @param completeNumberOfStaves
+     * @param rules
      */
     constructor(completeNumberOfStaves: number, rules: EngravingRules) {
         this.completeNumberOfStaves = completeNumberOfStaves;

+ 1 - 1
src/MusicalScore/VoiceData/VoiceEntry.ts

@@ -9,7 +9,7 @@ import {OrnamentContainer} from "./OrnamentContainer";
 import {KeyInstruction} from "./Instructions/KeyInstruction";
 import {OrnamentEnum} from "./OrnamentContainer";
 import {AccidentalEnum} from "../../Common/DataObjects/Pitch";
-import Dictionary from "typescript-collections/dist/lib/Dictionary";
+import { Dictionary } from "typescript-collections";
 import {Arpeggio} from "./Arpeggio";
 
 /**

+ 2 - 2
src/OpenSheetMusicDisplay/Cursor.ts

@@ -7,8 +7,8 @@ import {OpenSheetMusicDisplay} from "./OpenSheetMusicDisplay";
 import {GraphicalMusicSheet} from "../MusicalScore/Graphical/GraphicalMusicSheet";
 import {Instrument} from "../MusicalScore/Instrument";
 import {Note} from "../MusicalScore/VoiceData/Note";
-import {EngravingRules, Fraction} from "..";
-import {SourceMeasure, StaffLine} from "../MusicalScore";
+import {EngravingRules, SourceMeasure, StaffLine} from "../MusicalScore";
+import {Fraction} from "../Common/DataObjects/Fraction";
 
 /**
  * A cursor which can iterate through the music sheet.

+ 1 - 1
src/OpenSheetMusicDisplay/OpenSheetMusicDisplay.ts

@@ -17,10 +17,10 @@ import { IOSMDOptions, OSMDOptions, AutoBeamOptions, BackendType } from "./OSMDO
 import { EngravingRules, PageFormat } from "../MusicalScore/Graphical/EngravingRules";
 import { AbstractExpression } from "../MusicalScore/VoiceData/Expressions/AbstractExpression";
 import { Dictionary } from "typescript-collections";
-import { NoteEnum } from "..";
 import { AutoColorSet, GraphicalMusicPage } from "../MusicalScore";
 import { MusicPartManagerIterator } from "../MusicalScore/MusicParts";
 import { ITransposeCalculator } from "../MusicalScore/Interfaces";
+import { NoteEnum } from "../Common/DataObjects/Pitch";
 /**
  * The main class and control point of OpenSheetMusicDisplay.<br>
  * It can display MusicXML sheet music files in an HTML element container.<br>

+ 1 - 1
src/Util/CollectionUtil.ts

@@ -1,4 +1,4 @@
-import Dictionary from "typescript-collections/dist/lib/Dictionary";
+import { Dictionary } from "typescript-collections";
 
 declare global {
     interface Array<T> {