smoosic 1.0.24 → 1.0.26
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.
- package/build/smoosic.js +1 -1
- package/package.json +1 -1
- package/release/smoosic.js +1 -1
- package/release/styles/ribbon.css +5 -10
- package/src/application/exports.ts +1 -0
- package/src/styles/ribbon.css +5 -10
- package/types/src/application/application.d.ts +102 -102
- package/types/src/application/common.d.ts +74 -74
- package/types/src/application/configuration.d.ts +74 -74
- package/types/src/application/dom.d.ts +8 -8
- package/types/src/application/dynamicInit.d.ts +1 -1
- package/types/src/application/eventHandler.d.ts +78 -78
- package/types/src/application/exports.d.ts +494 -493
- package/types/src/application/generateVexTests.d.ts +10 -10
- package/types/src/application/keyCommands.d.ts +90 -90
- package/types/src/common/bootstrap.bundle.d.ts +1138 -1138
- package/types/src/common/htmlHelpers.d.ts +105 -105
- package/types/src/common/jszip.d.ts +2 -2
- package/types/src/common/midi-parser.d.ts +38 -38
- package/types/src/common/promiseHelpers.d.ts +30 -30
- package/types/src/common/serializationHelpers.d.ts +29 -29
- package/types/src/common/textformatter.d.ts +140 -140
- package/types/src/common/vex.d.ts +222 -222
- package/types/src/render/audio/musicCursor.d.ts +25 -25
- package/types/src/render/audio/oscillator.d.ts +98 -98
- package/types/src/render/audio/player.d.ts +141 -141
- package/types/src/render/audio/samples.d.ts +56 -56
- package/types/src/render/sui/configuration.d.ts +12 -12
- package/types/src/render/sui/formatter.d.ts +151 -151
- package/types/src/render/sui/layoutDebug.d.ts +43 -43
- package/types/src/render/sui/mapper.d.ts +116 -116
- package/types/src/render/sui/piano.d.ts +46 -46
- package/types/src/render/sui/renderState.d.ts +88 -88
- package/types/src/render/sui/scoreRender.d.ts +93 -93
- package/types/src/render/sui/scoreView.d.ts +267 -267
- package/types/src/render/sui/scoreViewOperations.d.ts +594 -594
- package/types/src/render/sui/scroller.d.ts +34 -34
- package/types/src/render/sui/svgHelpers.d.ts +85 -85
- package/types/src/render/sui/svgPageMap.d.ts +318 -318
- package/types/src/render/sui/textEdit.d.ts +310 -310
- package/types/src/render/sui/textRender.d.ts +189 -189
- package/types/src/render/sui/tracker.d.ts +90 -90
- package/types/src/render/vex/glyphDimensions.d.ts +23 -23
- package/types/src/render/vex/smoAdapter.d.ts +46 -46
- package/types/src/render/vex/toVex.d.ts +13 -13
- package/types/src/render/vex/vxMeasure.d.ts +95 -95
- package/types/src/render/vex/vxNote.d.ts +55 -55
- package/types/src/render/vex/vxSystem.d.ts +64 -64
- package/types/src/smo/data/common.d.ts +220 -220
- package/types/src/smo/data/measure.d.ts +510 -510
- package/types/src/smo/data/measureModifiers.d.ts +506 -506
- package/types/src/smo/data/music.d.ts +438 -438
- package/types/src/smo/data/note.d.ts +485 -485
- package/types/src/smo/data/noteModifiers.d.ts +590 -590
- package/types/src/smo/data/partInfo.d.ts +162 -162
- package/types/src/smo/data/score.d.ts +395 -395
- package/types/src/smo/data/scoreModifiers.d.ts +433 -433
- package/types/src/smo/data/scoreText.d.ts +277 -277
- package/types/src/smo/data/staffModifiers.d.ts +767 -767
- package/types/src/smo/data/systemStaff.d.ts +238 -238
- package/types/src/smo/data/tuplet.d.ts +146 -146
- package/types/src/smo/midi/midiToSmo.d.ts +198 -198
- package/types/src/smo/midi/smoToMidi.d.ts +23 -23
- package/types/src/smo/mxml/smoToXml.d.ts +165 -165
- package/types/src/smo/mxml/xmlHelpers.d.ts +140 -140
- package/types/src/smo/mxml/xmlState.d.ts +257 -257
- package/types/src/smo/mxml/xmlToSmo.d.ts +92 -92
- package/types/src/smo/xform/beamers.d.ts +46 -46
- package/types/src/smo/xform/copypaste.d.ts +99 -99
- package/types/src/smo/xform/operations.d.ts +127 -127
- package/types/src/smo/xform/roadmap.d.ts +70 -70
- package/types/src/smo/xform/selections.d.ts +153 -153
- package/types/src/smo/xform/tickDuration.d.ts +155 -155
- package/types/src/smo/xform/tickMap.d.ts +34 -34
- package/types/src/smo/xform/undo.d.ts +142 -142
- package/types/src/smo/xform/updateAudio.d.ts +9 -9
- package/types/src/styles/font_metrics/Commissioner-Medium-Metrics.d.ts +871 -871
- package/types/src/styles/font_metrics/ConcertOne-Regular.d.ts +871 -871
- package/types/src/styles/font_metrics/Merriweather-Regular.d.ts +871 -871
- package/types/src/styles/font_metrics/arial_metrics.d.ts +870 -870
- package/types/src/styles/font_metrics/ssp-sans-metrics.d.ts +871 -871
- package/types/src/styles/font_metrics/ssp-serif-metrics.d.ts +871 -871
- package/types/src/styles/font_metrics/times_metrics.d.ts +870 -870
- package/types/src/ui/buttons/button.d.ts +95 -95
- package/types/src/ui/buttons/collapsable.d.ts +42 -42
- package/types/src/ui/buttons/display.d.ts +23 -23
- package/types/src/ui/buttons/ribbon.d.ts +76 -76
- package/types/src/ui/common.d.ts +45 -45
- package/types/src/ui/composable/draggable.d.ts +12 -12
- package/types/src/ui/configuration.d.ts +31 -31
- package/types/src/ui/dialogs/adapter.d.ts +107 -107
- package/types/src/ui/dialogs/addMeasure.d.ts +20 -20
- package/types/src/ui/dialogs/arpeggio.d.ts +2 -2
- package/types/src/ui/dialogs/articulation.d.ts +2 -2
- package/types/src/ui/dialogs/audioSettings.d.ts +32 -32
- package/types/src/ui/dialogs/chordChange.d.ts +35 -35
- package/types/src/ui/dialogs/clefChange.d.ts +2 -2
- package/types/src/ui/dialogs/components/baseComponent.d.ts +158 -158
- package/types/src/ui/dialogs/components/button.d.ts +54 -54
- package/types/src/ui/dialogs/components/buttonArray.d.ts +101 -101
- package/types/src/ui/dialogs/components/checkdrop.d.ts +27 -27
- package/types/src/ui/dialogs/components/dragText.d.ts +27 -27
- package/types/src/ui/dialogs/components/dropdown.d.ts +78 -78
- package/types/src/ui/dialogs/components/fileDownload.d.ts +28 -28
- package/types/src/ui/dialogs/components/fontComponent.d.ts +32 -32
- package/types/src/ui/dialogs/components/noteText.d.ts +98 -98
- package/types/src/ui/dialogs/components/pitch.d.ts +95 -95
- package/types/src/ui/dialogs/components/rocker.d.ts +66 -66
- package/types/src/ui/dialogs/components/staffComponents.d.ts +77 -77
- package/types/src/ui/dialogs/components/textCheck.d.ts +38 -38
- package/types/src/ui/dialogs/components/textInPlace.d.ts +90 -90
- package/types/src/ui/dialogs/components/textInput.d.ts +58 -58
- package/types/src/ui/dialogs/components/tie.d.ts +41 -41
- package/types/src/ui/dialogs/components/toggle.d.ts +53 -53
- package/types/src/ui/dialogs/components/tree.d.ts +46 -46
- package/types/src/ui/dialogs/customTuplets.d.ts +25 -25
- package/types/src/ui/dialogs/dialog.d.ts +201 -201
- package/types/src/ui/dialogs/durations.d.ts +2 -2
- package/types/src/ui/dialogs/dynamics.d.ts +37 -37
- package/types/src/ui/dialogs/endings.d.ts +61 -61
- package/types/src/ui/dialogs/factory.d.ts +15 -15
- package/types/src/ui/dialogs/fileDialogs.d.ts +4 -4
- package/types/src/ui/dialogs/fonts.d.ts +2 -2
- package/types/src/ui/dialogs/globalLayout.d.ts +2 -2
- package/types/src/ui/dialogs/gracenote.d.ts +2 -2
- package/types/src/ui/dialogs/hairpin.d.ts +35 -35
- package/types/src/ui/dialogs/instrument.d.ts +3 -3
- package/types/src/ui/dialogs/keySignature.d.ts +33 -33
- package/types/src/ui/dialogs/library.d.ts +70 -70
- package/types/src/ui/dialogs/lyric.d.ts +39 -39
- package/types/src/ui/dialogs/measureFormat.d.ts +52 -52
- package/types/src/ui/dialogs/microtones.d.ts +2 -2
- package/types/src/ui/dialogs/noteHead.d.ts +2 -2
- package/types/src/ui/dialogs/ornament.d.ts +2 -2
- package/types/src/ui/dialogs/pageLayout.d.ts +2 -2
- package/types/src/ui/dialogs/partInfo.d.ts +2 -2
- package/types/src/ui/dialogs/pedalMarking.d.ts +35 -35
- package/types/src/ui/dialogs/pitch.d.ts +2 -2
- package/types/src/ui/dialogs/preferences.d.ts +2 -2
- package/types/src/ui/dialogs/scoreId.d.ts +2 -2
- package/types/src/ui/dialogs/scoreView.d.ts +2 -2
- package/types/src/ui/dialogs/slur.d.ts +57 -57
- package/types/src/ui/dialogs/staffGroup.d.ts +2 -2
- package/types/src/ui/dialogs/tabNote.d.ts +32 -32
- package/types/src/ui/dialogs/tabStave.d.ts +43 -43
- package/types/src/ui/dialogs/tempo.d.ts +50 -50
- package/types/src/ui/dialogs/textBlock.d.ts +61 -61
- package/types/src/ui/dialogs/textBracket.d.ts +35 -35
- package/types/src/ui/dialogs/tie.d.ts +41 -41
- package/types/src/ui/dialogs/timeSignature.d.ts +34 -34
- package/types/src/ui/dialogs/transposeScore.d.ts +2 -2
- package/types/src/ui/dialogs/volta.d.ts +40 -40
- package/types/src/ui/eventSource.d.ts +63 -63
- package/types/src/ui/exceptions.d.ts +12 -12
- package/types/src/ui/fileio/fileInput.d.ts +12 -12
- package/types/src/ui/fileio/library.d.ts +40 -40
- package/types/src/ui/fileio/xhrLoader.d.ts +18 -18
- package/types/src/ui/help.d.ts +22 -22
- package/types/src/ui/i18n/language.d.ts +37 -37
- package/types/src/ui/i18n/language_ar.d.ts +5 -5
- package/types/src/ui/i18n/language_de.d.ts +1 -1
- package/types/src/ui/i18n/language_en.d.ts +18 -18
- package/types/src/ui/i18n/translationEditor.d.ts +14 -14
- package/types/src/ui/keyBindings/default/editorKeys.d.ts +7 -7
- package/types/src/ui/keyBindings/default/trackerKeys.d.ts +7 -7
- package/types/src/ui/menus/beams.d.ts +13 -13
- package/types/src/ui/menus/edit.d.ts +8 -8
- package/types/src/ui/menus/file.d.ts +26 -26
- package/types/src/ui/menus/help.d.ts +8 -8
- package/types/src/ui/menus/keySignature.d.ts +13 -13
- package/types/src/ui/menus/language.d.ts +12 -12
- package/types/src/ui/menus/manager.d.ts +57 -57
- package/types/src/ui/menus/measure.d.ts +8 -8
- package/types/src/ui/menus/menu.d.ts +136 -136
- package/types/src/ui/menus/note.d.ts +8 -8
- package/types/src/ui/menus/partSelection.d.ts +19 -19
- package/types/src/ui/menus/parts.d.ts +50 -50
- package/types/src/ui/menus/score.d.ts +20 -20
- package/types/src/ui/menus/staffModifier.d.ts +21 -21
- package/types/src/ui/menus/text.d.ts +8 -8
- package/types/src/ui/menus/timeSignature.d.ts +12 -12
- package/types/src/ui/menus/tuplets.d.ts +13 -13
- package/types/src/ui/menus/voices.d.ts +8 -8
- package/types/src/ui/modalDialogs.d.ts +1 -1
- package/types/src/ui/navigation.d.ts +15 -15
- package/types/src/ui/qwerty.d.ts +41 -41
- package/types/src/ui/ribbonLayout/default/defaultRibbon.d.ts +15 -15
- package/types/src/ui/ribbonLayout/default/tabletRibbon.d.ts +22 -22
- package/types/typedoc.d.ts +158 -158
|
@@ -1,220 +1,220 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* definitions shared by all SMO types
|
|
3
|
-
* @module /smo/data/common
|
|
4
|
-
*/
|
|
5
|
-
export declare const SmoNamespace: {
|
|
6
|
-
value: string;
|
|
7
|
-
};
|
|
8
|
-
export type dynamicCtor = (params: any) => any;
|
|
9
|
-
export declare const SmoDynamicCtor: Record<string, dynamicCtor>;
|
|
10
|
-
/**
|
|
11
|
-
* Same as attrs object in Vex objects.
|
|
12
|
-
* @category SmoObject
|
|
13
|
-
* @param id - unique identifier, can be used in DOM elements
|
|
14
|
-
* @param type - a little bit redundate with `ctor` in `SmoObjectParams`
|
|
15
|
-
*/
|
|
16
|
-
export interface SmoAttrs {
|
|
17
|
-
id: string;
|
|
18
|
-
type: string;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* @internal
|
|
22
|
-
*/
|
|
23
|
-
export interface SmoXmlSerializable {
|
|
24
|
-
serializeXml: (namespace: string, parentElement: Element, tag: string) => Element;
|
|
25
|
-
ctor: string;
|
|
26
|
-
}
|
|
27
|
-
export declare function createXmlAttributes(element: Element, obj: any): void;
|
|
28
|
-
export declare function createXmlAttribute(element: Element, name: string, value: any): void;
|
|
29
|
-
export declare const getId: () => string;
|
|
30
|
-
/**
|
|
31
|
-
* All note, measure, staff, and score objects have
|
|
32
|
-
* a serialize method and are deserializable with constructor `ctor`
|
|
33
|
-
* @category SmoObject
|
|
34
|
-
*/
|
|
35
|
-
export interface SmoObjectParams {
|
|
36
|
-
ctor: string;
|
|
37
|
-
attrs?: SmoAttrs;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Note duration. The same abstraction used by vex, except here denominator is
|
|
41
|
-
* always 1. remainder is used to reconstruct non-tuplets from tuplets.
|
|
42
|
-
* @category SmoObject
|
|
43
|
-
* @param numerator - duration, 4096 is 1/4 note
|
|
44
|
-
* @param denominator - always 1 for SMO objects
|
|
45
|
-
* @param remainder - used for tuplets whose duration doesn't divide evenly
|
|
46
|
-
*/
|
|
47
|
-
export interface Ticks {
|
|
48
|
-
numerator: number;
|
|
49
|
-
denominator: number;
|
|
50
|
-
remainder: number;
|
|
51
|
-
}
|
|
52
|
-
export type ElementLike = SVGSVGElement | SVGGElement | SVGGraphicsElement | null;
|
|
53
|
-
export declare const RemoveElementLike: (e: ElementLike) => void;
|
|
54
|
-
/**
|
|
55
|
-
* constraint for SmoPitch.letter value, in lower case
|
|
56
|
-
*/
|
|
57
|
-
export type PitchLetter = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g';
|
|
58
|
-
export declare function IsPitchLetter(letter: PitchLetter | string): letter is PitchLetter;
|
|
59
|
-
/**
|
|
60
|
-
* PitchKey is a SmoPitch, without the octave
|
|
61
|
-
* @category SmoObject
|
|
62
|
-
* @param letter - letter note
|
|
63
|
-
* @param accidental - an accidental or microtone
|
|
64
|
-
*/
|
|
65
|
-
export interface PitchKey {
|
|
66
|
-
letter: PitchLetter;
|
|
67
|
-
accidental: string;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Represents a single pitch in Smo object model.
|
|
71
|
-
* @category SmoObject
|
|
72
|
-
* @param letter - letter note
|
|
73
|
-
* @param accidental - an accidental or microtone
|
|
74
|
-
* @param octave - standard octave
|
|
75
|
-
* @param cautionary? - can be used for courtesy accidental
|
|
76
|
-
*/
|
|
77
|
-
export interface Pitch {
|
|
78
|
-
letter: PitchLetter;
|
|
79
|
-
accidental: string;
|
|
80
|
-
octave: number;
|
|
81
|
-
cautionary?: boolean;
|
|
82
|
-
forced?: boolean;
|
|
83
|
-
role?: string;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* A tuple indicating measure location in the score:
|
|
87
|
-
* @category SmoObject
|
|
88
|
-
* @param measureIndex - the actual offset from the first measure
|
|
89
|
-
* @param localIndex - the index as shown to the user, considers renumbering
|
|
90
|
-
* @param sytemIndex - which bar (column) of a system this measure is
|
|
91
|
-
* @param staffId - which staff (row) of a system this measure is
|
|
92
|
-
*/
|
|
93
|
-
export interface MeasureNumber {
|
|
94
|
-
measureIndex: number;
|
|
95
|
-
localIndex: number;
|
|
96
|
-
systemIndex: number;
|
|
97
|
-
staffId: number;
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* musical artifacts can contain temporary svg information for
|
|
101
|
-
* mapping the UI.
|
|
102
|
-
* @internal
|
|
103
|
-
*/
|
|
104
|
-
export declare class SvgPoint {
|
|
105
|
-
x: number;
|
|
106
|
-
y: number;
|
|
107
|
-
static get default(): {
|
|
108
|
-
x: number;
|
|
109
|
-
y: number;
|
|
110
|
-
};
|
|
111
|
-
constructor();
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* musical artifacts can contain temporary svg information for
|
|
115
|
-
* mapping the UI.
|
|
116
|
-
* @internal
|
|
117
|
-
*/
|
|
118
|
-
export declare class SvgBox {
|
|
119
|
-
x: number;
|
|
120
|
-
y: number;
|
|
121
|
-
width: number;
|
|
122
|
-
height: number;
|
|
123
|
-
static get default(): SvgBox;
|
|
124
|
-
constructor();
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* kind of a pointless class...
|
|
128
|
-
* @internal
|
|
129
|
-
*/
|
|
130
|
-
export interface SvgDimensions {
|
|
131
|
-
width: number;
|
|
132
|
-
height: number;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* A `Transposable` is an abstraction of a note.
|
|
136
|
-
* Can be passed into methods that transform pitches for both
|
|
137
|
-
* grace notes and normal notes.
|
|
138
|
-
* @category SmoObject
|
|
139
|
-
* @param pitches - SMO pitch type
|
|
140
|
-
* @param noteType - same convention as VexFlow, 'n' for note, 'r' for rest
|
|
141
|
-
* @param renderId - ID for the containing SVG group, used to map UI elements
|
|
142
|
-
* @param renderedBox - bounding box in client coordinates
|
|
143
|
-
* @param logicalBox - bounding box in SVG coordinates
|
|
144
|
-
*/
|
|
145
|
-
export interface Transposable {
|
|
146
|
-
pitches: Pitch[];
|
|
147
|
-
noteType: string;
|
|
148
|
-
renderId: string | null;
|
|
149
|
-
logicalBox: SvgBox | null;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* All note, measure etc. modifiers have these attributes. The SVG info
|
|
153
|
-
* is for the tracker to track the artifacts in the UI (mouse events, etc)
|
|
154
|
-
* @category SmoObject
|
|
155
|
-
* @param ctor - constructor name for deserialize
|
|
156
|
-
* @param logicalBox - bounding box in SVG coordinates
|
|
157
|
-
* @param attr - unique ID, simlar to vex object attrs field
|
|
158
|
-
*/
|
|
159
|
-
export interface SmoModifierBase {
|
|
160
|
-
ctor: string;
|
|
161
|
-
logicalBox: SvgBox | null;
|
|
162
|
-
attrs: SmoAttrs;
|
|
163
|
-
serialize: () => any;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Renderable is just a thing that has a bounding box
|
|
167
|
-
* @internal
|
|
168
|
-
*/
|
|
169
|
-
export interface Renderable {
|
|
170
|
-
logicalBox: SvgBox | null | undefined;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Restriction from string to supported clefs
|
|
174
|
-
*/
|
|
175
|
-
export type Clef = 'treble' | 'bass' | 'tenor' | 'alto' | 'soprano' | 'percussion' | 'mezzo-soprano' | 'baritone-c' | 'baritone-f' | 'subbass' | 'french';
|
|
176
|
-
export declare var Clefs: Clef[];
|
|
177
|
-
export declare function IsClef(clef: Clef | string): clef is Clef;
|
|
178
|
-
/**
|
|
179
|
-
* Most event handling in SMO is an 'any' from jquery, but
|
|
180
|
-
* key events are sometimes narrowed to the common browser key event
|
|
181
|
-
* @internal
|
|
182
|
-
*/
|
|
183
|
-
export interface KeyEvent {
|
|
184
|
-
type: string;
|
|
185
|
-
shiftKey: boolean;
|
|
186
|
-
ctrlKey: boolean;
|
|
187
|
-
altKey: boolean;
|
|
188
|
-
key: string;
|
|
189
|
-
keyCode: number | string;
|
|
190
|
-
code: string;
|
|
191
|
-
event: string | null;
|
|
192
|
-
}
|
|
193
|
-
export declare function defaultKeyEvent(): KeyEvent;
|
|
194
|
-
export declare function keyEventMatch(ev1: KeyEvent, ev2: KeyEvent): boolean;
|
|
195
|
-
export type keyHandler = (key?: KeyEvent) => void;
|
|
196
|
-
/**
|
|
197
|
-
* @internal
|
|
198
|
-
*/
|
|
199
|
-
export interface TickAccidental {
|
|
200
|
-
duration: number;
|
|
201
|
-
pitch: Pitch;
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* @internal
|
|
205
|
-
* Used to create {@link MeasureTickmaps}
|
|
206
|
-
*/
|
|
207
|
-
export interface AccidentalArray {
|
|
208
|
-
duration: string | number;
|
|
209
|
-
pitches: Record<string, TickAccidental>;
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* @internal
|
|
213
|
-
*/
|
|
214
|
-
export interface AccidentalDisplay {
|
|
215
|
-
symbol: string;
|
|
216
|
-
courtesy: boolean;
|
|
217
|
-
forced: boolean;
|
|
218
|
-
}
|
|
219
|
-
export declare const reverseStaticMaps: Record<string, Record<string, string>>;
|
|
220
|
-
export declare function reverseStaticMap(name: string, o: Record<string, string>): Record<string, string>;
|
|
1
|
+
/**
|
|
2
|
+
* definitions shared by all SMO types
|
|
3
|
+
* @module /smo/data/common
|
|
4
|
+
*/
|
|
5
|
+
export declare const SmoNamespace: {
|
|
6
|
+
value: string;
|
|
7
|
+
};
|
|
8
|
+
export type dynamicCtor = (params: any) => any;
|
|
9
|
+
export declare const SmoDynamicCtor: Record<string, dynamicCtor>;
|
|
10
|
+
/**
|
|
11
|
+
* Same as attrs object in Vex objects.
|
|
12
|
+
* @category SmoObject
|
|
13
|
+
* @param id - unique identifier, can be used in DOM elements
|
|
14
|
+
* @param type - a little bit redundate with `ctor` in `SmoObjectParams`
|
|
15
|
+
*/
|
|
16
|
+
export interface SmoAttrs {
|
|
17
|
+
id: string;
|
|
18
|
+
type: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export interface SmoXmlSerializable {
|
|
24
|
+
serializeXml: (namespace: string, parentElement: Element, tag: string) => Element;
|
|
25
|
+
ctor: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function createXmlAttributes(element: Element, obj: any): void;
|
|
28
|
+
export declare function createXmlAttribute(element: Element, name: string, value: any): void;
|
|
29
|
+
export declare const getId: () => string;
|
|
30
|
+
/**
|
|
31
|
+
* All note, measure, staff, and score objects have
|
|
32
|
+
* a serialize method and are deserializable with constructor `ctor`
|
|
33
|
+
* @category SmoObject
|
|
34
|
+
*/
|
|
35
|
+
export interface SmoObjectParams {
|
|
36
|
+
ctor: string;
|
|
37
|
+
attrs?: SmoAttrs;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Note duration. The same abstraction used by vex, except here denominator is
|
|
41
|
+
* always 1. remainder is used to reconstruct non-tuplets from tuplets.
|
|
42
|
+
* @category SmoObject
|
|
43
|
+
* @param numerator - duration, 4096 is 1/4 note
|
|
44
|
+
* @param denominator - always 1 for SMO objects
|
|
45
|
+
* @param remainder - used for tuplets whose duration doesn't divide evenly
|
|
46
|
+
*/
|
|
47
|
+
export interface Ticks {
|
|
48
|
+
numerator: number;
|
|
49
|
+
denominator: number;
|
|
50
|
+
remainder: number;
|
|
51
|
+
}
|
|
52
|
+
export type ElementLike = SVGSVGElement | SVGGElement | SVGGraphicsElement | null;
|
|
53
|
+
export declare const RemoveElementLike: (e: ElementLike) => void;
|
|
54
|
+
/**
|
|
55
|
+
* constraint for SmoPitch.letter value, in lower case
|
|
56
|
+
*/
|
|
57
|
+
export type PitchLetter = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g';
|
|
58
|
+
export declare function IsPitchLetter(letter: PitchLetter | string): letter is PitchLetter;
|
|
59
|
+
/**
|
|
60
|
+
* PitchKey is a SmoPitch, without the octave
|
|
61
|
+
* @category SmoObject
|
|
62
|
+
* @param letter - letter note
|
|
63
|
+
* @param accidental - an accidental or microtone
|
|
64
|
+
*/
|
|
65
|
+
export interface PitchKey {
|
|
66
|
+
letter: PitchLetter;
|
|
67
|
+
accidental: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Represents a single pitch in Smo object model.
|
|
71
|
+
* @category SmoObject
|
|
72
|
+
* @param letter - letter note
|
|
73
|
+
* @param accidental - an accidental or microtone
|
|
74
|
+
* @param octave - standard octave
|
|
75
|
+
* @param cautionary? - can be used for courtesy accidental
|
|
76
|
+
*/
|
|
77
|
+
export interface Pitch {
|
|
78
|
+
letter: PitchLetter;
|
|
79
|
+
accidental: string;
|
|
80
|
+
octave: number;
|
|
81
|
+
cautionary?: boolean;
|
|
82
|
+
forced?: boolean;
|
|
83
|
+
role?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* A tuple indicating measure location in the score:
|
|
87
|
+
* @category SmoObject
|
|
88
|
+
* @param measureIndex - the actual offset from the first measure
|
|
89
|
+
* @param localIndex - the index as shown to the user, considers renumbering
|
|
90
|
+
* @param sytemIndex - which bar (column) of a system this measure is
|
|
91
|
+
* @param staffId - which staff (row) of a system this measure is
|
|
92
|
+
*/
|
|
93
|
+
export interface MeasureNumber {
|
|
94
|
+
measureIndex: number;
|
|
95
|
+
localIndex: number;
|
|
96
|
+
systemIndex: number;
|
|
97
|
+
staffId: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* musical artifacts can contain temporary svg information for
|
|
101
|
+
* mapping the UI.
|
|
102
|
+
* @internal
|
|
103
|
+
*/
|
|
104
|
+
export declare class SvgPoint {
|
|
105
|
+
x: number;
|
|
106
|
+
y: number;
|
|
107
|
+
static get default(): {
|
|
108
|
+
x: number;
|
|
109
|
+
y: number;
|
|
110
|
+
};
|
|
111
|
+
constructor();
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* musical artifacts can contain temporary svg information for
|
|
115
|
+
* mapping the UI.
|
|
116
|
+
* @internal
|
|
117
|
+
*/
|
|
118
|
+
export declare class SvgBox {
|
|
119
|
+
x: number;
|
|
120
|
+
y: number;
|
|
121
|
+
width: number;
|
|
122
|
+
height: number;
|
|
123
|
+
static get default(): SvgBox;
|
|
124
|
+
constructor();
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* kind of a pointless class...
|
|
128
|
+
* @internal
|
|
129
|
+
*/
|
|
130
|
+
export interface SvgDimensions {
|
|
131
|
+
width: number;
|
|
132
|
+
height: number;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* A `Transposable` is an abstraction of a note.
|
|
136
|
+
* Can be passed into methods that transform pitches for both
|
|
137
|
+
* grace notes and normal notes.
|
|
138
|
+
* @category SmoObject
|
|
139
|
+
* @param pitches - SMO pitch type
|
|
140
|
+
* @param noteType - same convention as VexFlow, 'n' for note, 'r' for rest
|
|
141
|
+
* @param renderId - ID for the containing SVG group, used to map UI elements
|
|
142
|
+
* @param renderedBox - bounding box in client coordinates
|
|
143
|
+
* @param logicalBox - bounding box in SVG coordinates
|
|
144
|
+
*/
|
|
145
|
+
export interface Transposable {
|
|
146
|
+
pitches: Pitch[];
|
|
147
|
+
noteType: string;
|
|
148
|
+
renderId: string | null;
|
|
149
|
+
logicalBox: SvgBox | null;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* All note, measure etc. modifiers have these attributes. The SVG info
|
|
153
|
+
* is for the tracker to track the artifacts in the UI (mouse events, etc)
|
|
154
|
+
* @category SmoObject
|
|
155
|
+
* @param ctor - constructor name for deserialize
|
|
156
|
+
* @param logicalBox - bounding box in SVG coordinates
|
|
157
|
+
* @param attr - unique ID, simlar to vex object attrs field
|
|
158
|
+
*/
|
|
159
|
+
export interface SmoModifierBase {
|
|
160
|
+
ctor: string;
|
|
161
|
+
logicalBox: SvgBox | null;
|
|
162
|
+
attrs: SmoAttrs;
|
|
163
|
+
serialize: () => any;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Renderable is just a thing that has a bounding box
|
|
167
|
+
* @internal
|
|
168
|
+
*/
|
|
169
|
+
export interface Renderable {
|
|
170
|
+
logicalBox: SvgBox | null | undefined;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Restriction from string to supported clefs
|
|
174
|
+
*/
|
|
175
|
+
export type Clef = 'treble' | 'bass' | 'tenor' | 'alto' | 'soprano' | 'percussion' | 'mezzo-soprano' | 'baritone-c' | 'baritone-f' | 'subbass' | 'french';
|
|
176
|
+
export declare var Clefs: Clef[];
|
|
177
|
+
export declare function IsClef(clef: Clef | string): clef is Clef;
|
|
178
|
+
/**
|
|
179
|
+
* Most event handling in SMO is an 'any' from jquery, but
|
|
180
|
+
* key events are sometimes narrowed to the common browser key event
|
|
181
|
+
* @internal
|
|
182
|
+
*/
|
|
183
|
+
export interface KeyEvent {
|
|
184
|
+
type: string;
|
|
185
|
+
shiftKey: boolean;
|
|
186
|
+
ctrlKey: boolean;
|
|
187
|
+
altKey: boolean;
|
|
188
|
+
key: string;
|
|
189
|
+
keyCode: number | string;
|
|
190
|
+
code: string;
|
|
191
|
+
event: string | null;
|
|
192
|
+
}
|
|
193
|
+
export declare function defaultKeyEvent(): KeyEvent;
|
|
194
|
+
export declare function keyEventMatch(ev1: KeyEvent, ev2: KeyEvent): boolean;
|
|
195
|
+
export type keyHandler = (key?: KeyEvent) => void;
|
|
196
|
+
/**
|
|
197
|
+
* @internal
|
|
198
|
+
*/
|
|
199
|
+
export interface TickAccidental {
|
|
200
|
+
duration: number;
|
|
201
|
+
pitch: Pitch;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* @internal
|
|
205
|
+
* Used to create {@link MeasureTickmaps}
|
|
206
|
+
*/
|
|
207
|
+
export interface AccidentalArray {
|
|
208
|
+
duration: string | number;
|
|
209
|
+
pitches: Record<string, TickAccidental>;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* @internal
|
|
213
|
+
*/
|
|
214
|
+
export interface AccidentalDisplay {
|
|
215
|
+
symbol: string;
|
|
216
|
+
courtesy: boolean;
|
|
217
|
+
forced: boolean;
|
|
218
|
+
}
|
|
219
|
+
export declare const reverseStaticMaps: Record<string, Record<string, string>>;
|
|
220
|
+
export declare function reverseStaticMap(name: string, o: Record<string, string>): Record<string, string>;
|