smoosic 1.0.34 → 1.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/build/html/smoosic.html +1 -0
  2. package/build/smoosic.js +36 -14
  3. package/package.json +1 -1
  4. package/release/html/smoosic.html +4 -3
  5. package/release/smoosic.js +36 -14
  6. package/release/styles/general.css +15 -0
  7. package/src/application/common.ts +20 -0
  8. package/src/application/eventHandler.ts +44 -8
  9. package/src/render/sui/NoteEntryCaret.ts +739 -0
  10. package/src/render/sui/NoteEntryMediator.ts +58 -0
  11. package/src/render/sui/mapper.ts +22 -4
  12. package/src/render/sui/scoreRender.ts +7 -7
  13. package/src/render/sui/scoreViewOperations.ts +46 -0
  14. package/src/render/sui/tracker.ts +93 -47
  15. package/src/render/vex/vxMeasure.ts +2 -1
  16. package/src/render/vex/vxNote.ts +1 -0
  17. package/src/smo/data/music.ts +17 -0
  18. package/src/smo/data/note.ts +3 -1
  19. package/src/smo/data/noteModifiers.ts +2 -0
  20. package/src/smo/data/scoreModifiers.ts +0 -3
  21. package/src/styles/general.css +22 -0
  22. package/src/ui/components/dialogs/scorePreferences.vue +1 -11
  23. package/types/src/application/application.d.ts +102 -102
  24. package/types/src/application/configuration.d.ts +74 -74
  25. package/types/src/application/dynamicInit.d.ts +1 -1
  26. package/types/src/application/eventHandler.d.ts +78 -78
  27. package/types/src/application/exports.d.ts +494 -494
  28. package/types/src/render/audio/oscillator.d.ts +98 -98
  29. package/types/src/render/audio/player.d.ts +141 -141
  30. package/types/src/render/audio/samples.d.ts +56 -56
  31. package/types/src/render/sui/configuration.d.ts +12 -12
  32. package/types/src/render/sui/formatter.d.ts +151 -151
  33. package/types/src/render/sui/layoutDebug.d.ts +43 -43
  34. package/types/src/render/sui/mapper.d.ts +116 -116
  35. package/types/src/render/sui/renderState.d.ts +88 -88
  36. package/types/src/render/sui/scoreRender.d.ts +93 -93
  37. package/types/src/render/sui/scoreView.d.ts +267 -267
  38. package/types/src/render/sui/scoreViewOperations.d.ts +594 -594
  39. package/types/src/render/sui/scroller.d.ts +34 -34
  40. package/types/src/render/sui/svgPageMap.d.ts +318 -318
  41. package/types/src/render/sui/textEdit.d.ts +310 -310
  42. package/types/src/render/vex/vxMeasure.d.ts +95 -95
  43. package/types/src/smo/data/common.d.ts +220 -220
  44. package/types/src/smo/data/measure.d.ts +510 -510
  45. package/types/src/smo/data/measureModifiers.d.ts +506 -506
  46. package/types/src/smo/data/scoreModifiers.d.ts +433 -433
  47. package/types/src/smo/xform/selections.d.ts +153 -153
  48. package/types/src/ui/common.d.ts +45 -45
  49. package/types/src/ui/configuration.d.ts +31 -31
  50. package/types/src/ui/dialogs/chordChange.d.ts +35 -35
  51. package/types/src/ui/dialogs/components/baseComponent.d.ts +158 -158
  52. package/types/src/ui/dialogs/components/button.d.ts +54 -54
  53. package/types/src/ui/dialogs/components/dropdown.d.ts +78 -78
  54. package/types/src/ui/dialogs/components/pitch.d.ts +95 -95
  55. package/types/src/ui/dialogs/components/rocker.d.ts +66 -66
  56. package/types/src/ui/dialogs/components/textInPlace.d.ts +90 -90
  57. package/types/src/ui/dialogs/components/textInput.d.ts +58 -58
  58. package/types/src/ui/dialogs/components/toggle.d.ts +53 -53
  59. package/types/src/ui/dialogs/dialog.d.ts +201 -201
  60. package/types/src/ui/dialogs/endings.d.ts +61 -61
  61. package/types/src/ui/dialogs/lyric.d.ts +39 -39
  62. package/types/src/ui/dialogs/measureFormat.d.ts +52 -52
  63. package/types/src/ui/dialogs/textBlock.d.ts +61 -61
  64. package/types/src/ui/exceptions.d.ts +12 -12
  65. package/types/src/ui/menus/manager.d.ts +57 -57
  66. package/types/src/ui/navigation.d.ts +15 -15
  67. package/types/typedoc.d.ts +158 -158
  68. package/release/styles/styles.css +0 -0
  69. package/src/styles/fonts/Roboto-Italic-VariableFont_wdth,wght.ttf +0 -0
  70. package/src/styles/fonts/Roboto-VariableFont_wdth,wght.ttf +0 -0
  71. package/src/styles/styles.css +0 -0
@@ -1,88 +1,88 @@
1
- /**
2
- * Classes to support the state machine associated with background music rendering.
3
- * @module renderState
4
- */
5
- import { SmoMeasure } from '../../smo/data/measure';
6
- import { UndoBuffer } from '../../smo/xform/undo';
7
- import { SmoRenderConfiguration } from './configuration';
8
- import { SmoSelection } from '../../smo/xform/selections';
9
- import { SmoScore } from '../../smo/data/score';
10
- import { SmoTextGroup } from '../../smo/data/scoreText';
11
- import { SuiMapper } from './mapper';
12
- import { SuiScoreRender, ScoreRenderParams } from './scoreRender';
13
- export declare var scoreChangeEvent: string;
14
- /**
15
- * Manage the state of the score rendering. The score can be rendered either completely,
16
- * or partially for editing. This class works with the RenderDemon to decide when to
17
- * render the score after it has been modified, and keeps track of what the current
18
- * render state is (dirty, etc.)
19
- * @category SuiRender
20
- * */
21
- export declare class SuiRenderState {
22
- static debugMask: number;
23
- dirty: boolean;
24
- replaceQ: SmoSelection[];
25
- stateRepCount: 0;
26
- viewportChanged: boolean;
27
- _resetViewport: boolean;
28
- measureMapper: SuiMapper | null;
29
- passState: number;
30
- _score: SmoScore | null;
31
- _backupZoomScale: number;
32
- renderer: SuiScoreRender;
33
- idleRedrawTime: number;
34
- idleLayoutTimer: number;
35
- demonPollTime: number;
36
- handlingRedraw: boolean;
37
- suspendRendering: boolean;
38
- undoBuffer: UndoBuffer;
39
- undoStatus: number;
40
- constructor(config: ScoreRenderParams);
41
- get elementId(): any;
42
- get pageMap(): import("./svgPageMap").SvgPageMap;
43
- setMeasureMapper(mapper: SuiMapper): void;
44
- set stepMode(value: boolean);
45
- static createScoreRenderer(config: SmoRenderConfiguration, renderElement: Element, score: SmoScore, undoBuffer: UndoBuffer): SuiRenderState;
46
- static get passStates(): Record<string, number>;
47
- get renderElement(): Element;
48
- notifyFontChange(): void;
49
- addToReplaceQueue(selection: SmoSelection | SmoSelection[]): void;
50
- addColumnToReplaceQueue(mm: number): void;
51
- setDirty(): void;
52
- setRefresh(): void;
53
- rerenderAll(): void;
54
- clearLine(measure: SmoMeasure): void;
55
- get renderStateClean(): boolean;
56
- get renderStateRendered(): boolean;
57
- /**
58
- * Do a quick re-render of a measure that has changed, defer the whole score.
59
- * @returns
60
- */
61
- replaceMeasures(): Promise<void>;
62
- preserveScroll(): Promise<void>;
63
- _renderStatePromise(condition: () => boolean): Promise<void>;
64
- renderPromise(): Promise<void>;
65
- updatePromise(): Promise<void>;
66
- handleRedrawTimer(): Promise<void>;
67
- pollRedraw(): void;
68
- startDemon(): void;
69
- renderTextGroup(gg: SmoTextGroup): void;
70
- /**
71
- * Set the SVG viewport
72
- * @param reset whether to re-render the entire SVG DOM
73
- * @returns
74
- */
75
- setViewport(): void;
76
- renderForPrintPromise(): Promise<any>;
77
- restoreLayoutAfterPrint(): void;
78
- setPassState(st: number, location: string): void;
79
- get score(): SmoScore | null;
80
- dbgDrawDot(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean): void;
81
- set score(score: SmoScore | null);
82
- unrenderColumn(measure: SmoMeasure): void;
83
- forceRender(): void;
84
- unrenderMeasure(measure: SmoMeasure): void;
85
- rerenderTextGroups(): Promise<void>;
86
- unrenderTextGroups(): Promise<void>;
87
- render(): Promise<any>;
88
- }
1
+ /**
2
+ * Classes to support the state machine associated with background music rendering.
3
+ * @module renderState
4
+ */
5
+ import { SmoMeasure } from '../../smo/data/measure';
6
+ import { UndoBuffer } from '../../smo/xform/undo';
7
+ import { SmoRenderConfiguration } from './configuration';
8
+ import { SmoSelection } from '../../smo/xform/selections';
9
+ import { SmoScore } from '../../smo/data/score';
10
+ import { SmoTextGroup } from '../../smo/data/scoreText';
11
+ import { SuiMapper } from './mapper';
12
+ import { SuiScoreRender, ScoreRenderParams } from './scoreRender';
13
+ export declare var scoreChangeEvent: string;
14
+ /**
15
+ * Manage the state of the score rendering. The score can be rendered either completely,
16
+ * or partially for editing. This class works with the RenderDemon to decide when to
17
+ * render the score after it has been modified, and keeps track of what the current
18
+ * render state is (dirty, etc.)
19
+ * @category SuiRender
20
+ * */
21
+ export declare class SuiRenderState {
22
+ static debugMask: number;
23
+ dirty: boolean;
24
+ replaceQ: SmoSelection[];
25
+ stateRepCount: 0;
26
+ viewportChanged: boolean;
27
+ _resetViewport: boolean;
28
+ measureMapper: SuiMapper | null;
29
+ passState: number;
30
+ _score: SmoScore | null;
31
+ _backupZoomScale: number;
32
+ renderer: SuiScoreRender;
33
+ idleRedrawTime: number;
34
+ idleLayoutTimer: number;
35
+ demonPollTime: number;
36
+ handlingRedraw: boolean;
37
+ suspendRendering: boolean;
38
+ undoBuffer: UndoBuffer;
39
+ undoStatus: number;
40
+ constructor(config: ScoreRenderParams);
41
+ get elementId(): any;
42
+ get pageMap(): import("./svgPageMap").SvgPageMap;
43
+ setMeasureMapper(mapper: SuiMapper): void;
44
+ set stepMode(value: boolean);
45
+ static createScoreRenderer(config: SmoRenderConfiguration, renderElement: Element, score: SmoScore, undoBuffer: UndoBuffer): SuiRenderState;
46
+ static get passStates(): Record<string, number>;
47
+ get renderElement(): Element;
48
+ notifyFontChange(): void;
49
+ addToReplaceQueue(selection: SmoSelection | SmoSelection[]): void;
50
+ addColumnToReplaceQueue(mm: number): void;
51
+ setDirty(): void;
52
+ setRefresh(): void;
53
+ rerenderAll(): void;
54
+ clearLine(measure: SmoMeasure): void;
55
+ get renderStateClean(): boolean;
56
+ get renderStateRendered(): boolean;
57
+ /**
58
+ * Do a quick re-render of a measure that has changed, defer the whole score.
59
+ * @returns
60
+ */
61
+ replaceMeasures(): Promise<void>;
62
+ preserveScroll(): Promise<void>;
63
+ _renderStatePromise(condition: () => boolean): Promise<void>;
64
+ renderPromise(): Promise<void>;
65
+ updatePromise(): Promise<void>;
66
+ handleRedrawTimer(): Promise<void>;
67
+ pollRedraw(): void;
68
+ startDemon(): void;
69
+ renderTextGroup(gg: SmoTextGroup): void;
70
+ /**
71
+ * Set the SVG viewport
72
+ * @param reset whether to re-render the entire SVG DOM
73
+ * @returns
74
+ */
75
+ setViewport(): void;
76
+ renderForPrintPromise(): Promise<any>;
77
+ restoreLayoutAfterPrint(): void;
78
+ setPassState(st: number, location: string): void;
79
+ get score(): SmoScore | null;
80
+ dbgDrawDot(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean): void;
81
+ set score(score: SmoScore | null);
82
+ unrenderColumn(measure: SmoMeasure): void;
83
+ forceRender(): void;
84
+ unrenderMeasure(measure: SmoMeasure): void;
85
+ rerenderTextGroups(): Promise<void>;
86
+ unrenderTextGroups(): Promise<void>;
87
+ render(): Promise<any>;
88
+ }
@@ -1,93 +1,93 @@
1
- import { SvgBox, SvgPoint } from '../../smo/data/common';
2
- import { SmoMeasure } from '../../smo/data/measure';
3
- import { SmoScore } from '../../smo/data/score';
4
- import { SmoTextGroup } from '../../smo/data/scoreText';
5
- import { SmoSelection } from '../../smo/xform/selections';
6
- import { SmoSystemStaff } from '../../smo/data/systemStaff';
7
- import { StaffModifierBase } from '../../smo/data/staffModifiers';
8
- import { SuiMapper } from './mapper';
9
- import { VxSystem } from '../vex/vxSystem';
10
- import { SuiLayoutFormatter, RenderedPage } from './formatter';
11
- import { SmoRenderConfiguration } from './configuration';
12
- import { UndoBuffer } from '../../smo/xform/undo';
13
- import { SvgPageMap, SvgPage } from './svgPageMap';
14
- /**
15
- * a renderer creates the SVG render context for vexflow from the given element. Then it
16
- * renders the initial score.
17
- * @category SuiRender
18
- */
19
- export interface ScoreRenderParams {
20
- elementId: any;
21
- score: SmoScore;
22
- config: SmoRenderConfiguration;
23
- undoBuffer: UndoBuffer;
24
- }
25
- /**
26
- * @category SuiRender
27
- */
28
- export interface MapParameters {
29
- vxSystem: VxSystem;
30
- measuresToBox: SmoMeasure[];
31
- modifiersToBox: StaffModifierBase[];
32
- printing: boolean;
33
- }
34
- /**
35
- * This module renders the entire score. It calculates the layout first based on the
36
- * computed dimensions.
37
- * @category SuiRender
38
- **/
39
- export declare class SuiScoreRender {
40
- constructor(params: ScoreRenderParams);
41
- elementId: any;
42
- startRenderTime: number;
43
- formatter: SuiLayoutFormatter | null;
44
- vexContainers: SvgPageMap;
45
- score: SmoScore | null;
46
- measureMapper: SuiMapper | null;
47
- measuresToMap: MapParameters[];
48
- viewportChanged: boolean;
49
- renderTime: number;
50
- backgroundRender: boolean;
51
- static debugMask: number;
52
- renderedPages: Record<number, RenderedPage | null>;
53
- _autoAdjustRenderTime: boolean;
54
- lyricsToOffset: Map<number, VxSystem>;
55
- renderingPage: number;
56
- get autoAdjustRenderTime(): boolean;
57
- set autoAdjustRenderTime(value: boolean);
58
- getRenderer(box: SvgBox | SvgPoint): SvgPage | null;
59
- renderTextGroup(gg: SmoTextGroup): void;
60
- unrenderAll(): void;
61
- unrenderStaff(staff: SmoSystemStaff): void;
62
- clearRenderedPage(pg: number): void;
63
- setViewport(): void;
64
- unrenderTextGroups(): Promise<void>;
65
- renderTextGroups(): Promise<void>;
66
- rerenderTextGroups(): Promise<void>;
67
- /**
68
- * for music we've just rendered, get the bounding boxes. We defer this step so we don't force
69
- * a reflow, which can slow rendering.
70
- * @param vxSystem
71
- * @param measures
72
- * @param modifiers
73
- * @param printing
74
- */
75
- measureRenderedElements(vxSystem: VxSystem, measures: SmoMeasure[], modifiers: StaffModifierBase[], printing: boolean): void;
76
- _renderSystem(lineIx: number, printing: boolean): void;
77
- _renderNextSystemPromise(systemIx: number, keys: number[], printing: boolean): Promise<unknown>;
78
- _renderNextSystem(lineIx: number, keys: number[], printing: boolean): Promise<void>;
79
- unrenderMeasure(measure: SmoMeasure): void;
80
- renderModifiers(staff: SmoSystemStaff, system: VxSystem): StaffModifierBase[];
81
- drawPageLines(): void;
82
- replaceSelection(staffMap: Record<number | string, {
83
- system: VxSystem;
84
- staff: SmoSystemStaff;
85
- }>, change: SmoSelection): void;
86
- renderAllMeasures(lines: number[]): Promise<void>;
87
- numberMeasures(): void;
88
- /**
89
- * This calculates the position of all the elements in the score, then renders the score
90
- * @returns
91
- */
92
- layout(): Promise<void>;
93
- }
1
+ import { SvgBox, SvgPoint } from '../../smo/data/common';
2
+ import { SmoMeasure } from '../../smo/data/measure';
3
+ import { SmoScore } from '../../smo/data/score';
4
+ import { SmoTextGroup } from '../../smo/data/scoreText';
5
+ import { SmoSelection } from '../../smo/xform/selections';
6
+ import { SmoSystemStaff } from '../../smo/data/systemStaff';
7
+ import { StaffModifierBase } from '../../smo/data/staffModifiers';
8
+ import { SuiMapper } from './mapper';
9
+ import { VxSystem } from '../vex/vxSystem';
10
+ import { SuiLayoutFormatter, RenderedPage } from './formatter';
11
+ import { SmoRenderConfiguration } from './configuration';
12
+ import { UndoBuffer } from '../../smo/xform/undo';
13
+ import { SvgPageMap, SvgPage } from './svgPageMap';
14
+ /**
15
+ * a renderer creates the SVG render context for vexflow from the given element. Then it
16
+ * renders the initial score.
17
+ * @category SuiRender
18
+ */
19
+ export interface ScoreRenderParams {
20
+ elementId: any;
21
+ score: SmoScore;
22
+ config: SmoRenderConfiguration;
23
+ undoBuffer: UndoBuffer;
24
+ }
25
+ /**
26
+ * @category SuiRender
27
+ */
28
+ export interface MapParameters {
29
+ vxSystem: VxSystem;
30
+ measuresToBox: SmoMeasure[];
31
+ modifiersToBox: StaffModifierBase[];
32
+ printing: boolean;
33
+ }
34
+ /**
35
+ * This module renders the entire score. It calculates the layout first based on the
36
+ * computed dimensions.
37
+ * @category SuiRender
38
+ **/
39
+ export declare class SuiScoreRender {
40
+ constructor(params: ScoreRenderParams);
41
+ elementId: any;
42
+ startRenderTime: number;
43
+ formatter: SuiLayoutFormatter | null;
44
+ vexContainers: SvgPageMap;
45
+ score: SmoScore | null;
46
+ measureMapper: SuiMapper | null;
47
+ measuresToMap: MapParameters[];
48
+ viewportChanged: boolean;
49
+ renderTime: number;
50
+ backgroundRender: boolean;
51
+ static debugMask: number;
52
+ renderedPages: Record<number, RenderedPage | null>;
53
+ _autoAdjustRenderTime: boolean;
54
+ lyricsToOffset: Map<number, VxSystem>;
55
+ renderingPage: number;
56
+ get autoAdjustRenderTime(): boolean;
57
+ set autoAdjustRenderTime(value: boolean);
58
+ getRenderer(box: SvgBox | SvgPoint): SvgPage | null;
59
+ renderTextGroup(gg: SmoTextGroup): void;
60
+ unrenderAll(): void;
61
+ unrenderStaff(staff: SmoSystemStaff): void;
62
+ clearRenderedPage(pg: number): void;
63
+ setViewport(): void;
64
+ unrenderTextGroups(): Promise<void>;
65
+ renderTextGroups(): Promise<void>;
66
+ rerenderTextGroups(): Promise<void>;
67
+ /**
68
+ * for music we've just rendered, get the bounding boxes. We defer this step so we don't force
69
+ * a reflow, which can slow rendering.
70
+ * @param vxSystem
71
+ * @param measures
72
+ * @param modifiers
73
+ * @param printing
74
+ */
75
+ measureRenderedElements(vxSystem: VxSystem, measures: SmoMeasure[], modifiers: StaffModifierBase[], printing: boolean): void;
76
+ _renderSystem(lineIx: number, printing: boolean): void;
77
+ _renderNextSystemPromise(systemIx: number, keys: number[], printing: boolean): Promise<unknown>;
78
+ _renderNextSystem(lineIx: number, keys: number[], printing: boolean): Promise<void>;
79
+ unrenderMeasure(measure: SmoMeasure): void;
80
+ renderModifiers(staff: SmoSystemStaff, system: VxSystem): StaffModifierBase[];
81
+ drawPageLines(): void;
82
+ replaceSelection(staffMap: Record<number | string, {
83
+ system: VxSystem;
84
+ staff: SmoSystemStaff;
85
+ }>, change: SmoSelection): void;
86
+ renderAllMeasures(lines: number[]): Promise<void>;
87
+ numberMeasures(): void;
88
+ /**
89
+ * This calculates the position of all the elements in the score, then renders the score
90
+ * @returns
91
+ */
92
+ layout(): Promise<void>;
93
+ }