smoosic 1.0.25 → 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.
Files changed (187) hide show
  1. package/build/smoosic.js +1 -1
  2. package/package.json +1 -1
  3. package/release/smoosic.js +1 -1
  4. package/src/application/exports.ts +1 -0
  5. package/types/src/application/application.d.ts +102 -102
  6. package/types/src/application/common.d.ts +74 -74
  7. package/types/src/application/configuration.d.ts +74 -74
  8. package/types/src/application/dom.d.ts +8 -8
  9. package/types/src/application/dynamicInit.d.ts +1 -1
  10. package/types/src/application/eventHandler.d.ts +78 -78
  11. package/types/src/application/exports.d.ts +494 -493
  12. package/types/src/application/generateVexTests.d.ts +10 -10
  13. package/types/src/application/keyCommands.d.ts +90 -90
  14. package/types/src/common/bootstrap.bundle.d.ts +1138 -1138
  15. package/types/src/common/htmlHelpers.d.ts +105 -105
  16. package/types/src/common/jszip.d.ts +2 -2
  17. package/types/src/common/midi-parser.d.ts +38 -38
  18. package/types/src/common/promiseHelpers.d.ts +30 -30
  19. package/types/src/common/serializationHelpers.d.ts +29 -29
  20. package/types/src/common/textformatter.d.ts +140 -140
  21. package/types/src/common/vex.d.ts +222 -222
  22. package/types/src/render/audio/musicCursor.d.ts +25 -25
  23. package/types/src/render/audio/oscillator.d.ts +98 -98
  24. package/types/src/render/audio/player.d.ts +141 -141
  25. package/types/src/render/audio/samples.d.ts +56 -56
  26. package/types/src/render/sui/configuration.d.ts +12 -12
  27. package/types/src/render/sui/formatter.d.ts +151 -151
  28. package/types/src/render/sui/layoutDebug.d.ts +43 -43
  29. package/types/src/render/sui/mapper.d.ts +116 -116
  30. package/types/src/render/sui/piano.d.ts +46 -46
  31. package/types/src/render/sui/renderState.d.ts +88 -88
  32. package/types/src/render/sui/scoreRender.d.ts +93 -93
  33. package/types/src/render/sui/scoreView.d.ts +267 -267
  34. package/types/src/render/sui/scoreViewOperations.d.ts +594 -594
  35. package/types/src/render/sui/scroller.d.ts +34 -34
  36. package/types/src/render/sui/svgHelpers.d.ts +85 -85
  37. package/types/src/render/sui/svgPageMap.d.ts +318 -318
  38. package/types/src/render/sui/textEdit.d.ts +310 -310
  39. package/types/src/render/sui/textRender.d.ts +189 -189
  40. package/types/src/render/sui/tracker.d.ts +90 -90
  41. package/types/src/render/vex/glyphDimensions.d.ts +23 -23
  42. package/types/src/render/vex/smoAdapter.d.ts +46 -46
  43. package/types/src/render/vex/toVex.d.ts +13 -13
  44. package/types/src/render/vex/vxMeasure.d.ts +95 -95
  45. package/types/src/render/vex/vxNote.d.ts +55 -55
  46. package/types/src/render/vex/vxSystem.d.ts +64 -64
  47. package/types/src/smo/data/common.d.ts +220 -220
  48. package/types/src/smo/data/measure.d.ts +510 -510
  49. package/types/src/smo/data/measureModifiers.d.ts +506 -506
  50. package/types/src/smo/data/music.d.ts +438 -438
  51. package/types/src/smo/data/note.d.ts +485 -485
  52. package/types/src/smo/data/noteModifiers.d.ts +590 -590
  53. package/types/src/smo/data/partInfo.d.ts +162 -162
  54. package/types/src/smo/data/score.d.ts +395 -395
  55. package/types/src/smo/data/scoreModifiers.d.ts +433 -433
  56. package/types/src/smo/data/scoreText.d.ts +277 -277
  57. package/types/src/smo/data/staffModifiers.d.ts +767 -767
  58. package/types/src/smo/data/systemStaff.d.ts +238 -238
  59. package/types/src/smo/data/tuplet.d.ts +146 -146
  60. package/types/src/smo/midi/midiToSmo.d.ts +198 -198
  61. package/types/src/smo/midi/smoToMidi.d.ts +23 -23
  62. package/types/src/smo/mxml/smoToXml.d.ts +165 -165
  63. package/types/src/smo/mxml/xmlHelpers.d.ts +140 -140
  64. package/types/src/smo/mxml/xmlState.d.ts +257 -257
  65. package/types/src/smo/mxml/xmlToSmo.d.ts +92 -92
  66. package/types/src/smo/xform/beamers.d.ts +46 -46
  67. package/types/src/smo/xform/copypaste.d.ts +99 -99
  68. package/types/src/smo/xform/operations.d.ts +127 -127
  69. package/types/src/smo/xform/roadmap.d.ts +70 -70
  70. package/types/src/smo/xform/selections.d.ts +153 -153
  71. package/types/src/smo/xform/tickDuration.d.ts +155 -155
  72. package/types/src/smo/xform/tickMap.d.ts +34 -34
  73. package/types/src/smo/xform/undo.d.ts +142 -142
  74. package/types/src/smo/xform/updateAudio.d.ts +9 -9
  75. package/types/src/styles/font_metrics/Commissioner-Medium-Metrics.d.ts +871 -871
  76. package/types/src/styles/font_metrics/ConcertOne-Regular.d.ts +871 -871
  77. package/types/src/styles/font_metrics/Merriweather-Regular.d.ts +871 -871
  78. package/types/src/styles/font_metrics/arial_metrics.d.ts +870 -870
  79. package/types/src/styles/font_metrics/ssp-sans-metrics.d.ts +871 -871
  80. package/types/src/styles/font_metrics/ssp-serif-metrics.d.ts +871 -871
  81. package/types/src/styles/font_metrics/times_metrics.d.ts +870 -870
  82. package/types/src/ui/buttons/button.d.ts +95 -95
  83. package/types/src/ui/buttons/collapsable.d.ts +42 -42
  84. package/types/src/ui/buttons/display.d.ts +23 -23
  85. package/types/src/ui/buttons/ribbon.d.ts +76 -76
  86. package/types/src/ui/common.d.ts +45 -45
  87. package/types/src/ui/composable/draggable.d.ts +12 -12
  88. package/types/src/ui/configuration.d.ts +31 -31
  89. package/types/src/ui/dialogs/adapter.d.ts +107 -107
  90. package/types/src/ui/dialogs/addMeasure.d.ts +20 -20
  91. package/types/src/ui/dialogs/arpeggio.d.ts +2 -2
  92. package/types/src/ui/dialogs/articulation.d.ts +2 -2
  93. package/types/src/ui/dialogs/audioSettings.d.ts +32 -32
  94. package/types/src/ui/dialogs/chordChange.d.ts +35 -35
  95. package/types/src/ui/dialogs/clefChange.d.ts +2 -2
  96. package/types/src/ui/dialogs/components/baseComponent.d.ts +158 -158
  97. package/types/src/ui/dialogs/components/button.d.ts +54 -54
  98. package/types/src/ui/dialogs/components/buttonArray.d.ts +101 -101
  99. package/types/src/ui/dialogs/components/checkdrop.d.ts +27 -27
  100. package/types/src/ui/dialogs/components/dragText.d.ts +27 -27
  101. package/types/src/ui/dialogs/components/dropdown.d.ts +78 -78
  102. package/types/src/ui/dialogs/components/fileDownload.d.ts +28 -28
  103. package/types/src/ui/dialogs/components/fontComponent.d.ts +32 -32
  104. package/types/src/ui/dialogs/components/noteText.d.ts +98 -98
  105. package/types/src/ui/dialogs/components/pitch.d.ts +95 -95
  106. package/types/src/ui/dialogs/components/rocker.d.ts +66 -66
  107. package/types/src/ui/dialogs/components/staffComponents.d.ts +77 -77
  108. package/types/src/ui/dialogs/components/textCheck.d.ts +38 -38
  109. package/types/src/ui/dialogs/components/textInPlace.d.ts +90 -90
  110. package/types/src/ui/dialogs/components/textInput.d.ts +58 -58
  111. package/types/src/ui/dialogs/components/tie.d.ts +41 -41
  112. package/types/src/ui/dialogs/components/toggle.d.ts +53 -53
  113. package/types/src/ui/dialogs/components/tree.d.ts +46 -46
  114. package/types/src/ui/dialogs/customTuplets.d.ts +25 -25
  115. package/types/src/ui/dialogs/dialog.d.ts +201 -201
  116. package/types/src/ui/dialogs/durations.d.ts +2 -2
  117. package/types/src/ui/dialogs/dynamics.d.ts +37 -37
  118. package/types/src/ui/dialogs/endings.d.ts +61 -61
  119. package/types/src/ui/dialogs/factory.d.ts +15 -15
  120. package/types/src/ui/dialogs/fileDialogs.d.ts +4 -4
  121. package/types/src/ui/dialogs/fonts.d.ts +2 -2
  122. package/types/src/ui/dialogs/globalLayout.d.ts +2 -2
  123. package/types/src/ui/dialogs/gracenote.d.ts +2 -2
  124. package/types/src/ui/dialogs/hairpin.d.ts +35 -35
  125. package/types/src/ui/dialogs/instrument.d.ts +3 -3
  126. package/types/src/ui/dialogs/keySignature.d.ts +33 -33
  127. package/types/src/ui/dialogs/library.d.ts +70 -70
  128. package/types/src/ui/dialogs/lyric.d.ts +39 -39
  129. package/types/src/ui/dialogs/measureFormat.d.ts +52 -52
  130. package/types/src/ui/dialogs/microtones.d.ts +2 -2
  131. package/types/src/ui/dialogs/noteHead.d.ts +2 -2
  132. package/types/src/ui/dialogs/ornament.d.ts +2 -2
  133. package/types/src/ui/dialogs/pageLayout.d.ts +2 -2
  134. package/types/src/ui/dialogs/partInfo.d.ts +2 -2
  135. package/types/src/ui/dialogs/pedalMarking.d.ts +35 -35
  136. package/types/src/ui/dialogs/pitch.d.ts +2 -2
  137. package/types/src/ui/dialogs/preferences.d.ts +2 -2
  138. package/types/src/ui/dialogs/scoreId.d.ts +2 -2
  139. package/types/src/ui/dialogs/scoreView.d.ts +2 -2
  140. package/types/src/ui/dialogs/slur.d.ts +57 -57
  141. package/types/src/ui/dialogs/staffGroup.d.ts +2 -2
  142. package/types/src/ui/dialogs/tabNote.d.ts +32 -32
  143. package/types/src/ui/dialogs/tabStave.d.ts +43 -43
  144. package/types/src/ui/dialogs/tempo.d.ts +50 -50
  145. package/types/src/ui/dialogs/textBlock.d.ts +61 -61
  146. package/types/src/ui/dialogs/textBracket.d.ts +35 -35
  147. package/types/src/ui/dialogs/tie.d.ts +41 -41
  148. package/types/src/ui/dialogs/timeSignature.d.ts +34 -34
  149. package/types/src/ui/dialogs/transposeScore.d.ts +2 -2
  150. package/types/src/ui/dialogs/volta.d.ts +40 -40
  151. package/types/src/ui/eventSource.d.ts +63 -63
  152. package/types/src/ui/exceptions.d.ts +12 -12
  153. package/types/src/ui/fileio/fileInput.d.ts +12 -12
  154. package/types/src/ui/fileio/library.d.ts +40 -40
  155. package/types/src/ui/fileio/xhrLoader.d.ts +18 -18
  156. package/types/src/ui/help.d.ts +22 -22
  157. package/types/src/ui/i18n/language.d.ts +37 -37
  158. package/types/src/ui/i18n/language_ar.d.ts +5 -5
  159. package/types/src/ui/i18n/language_de.d.ts +1 -1
  160. package/types/src/ui/i18n/language_en.d.ts +18 -18
  161. package/types/src/ui/i18n/translationEditor.d.ts +14 -14
  162. package/types/src/ui/keyBindings/default/editorKeys.d.ts +7 -7
  163. package/types/src/ui/keyBindings/default/trackerKeys.d.ts +7 -7
  164. package/types/src/ui/menus/beams.d.ts +13 -13
  165. package/types/src/ui/menus/edit.d.ts +8 -8
  166. package/types/src/ui/menus/file.d.ts +26 -26
  167. package/types/src/ui/menus/help.d.ts +8 -8
  168. package/types/src/ui/menus/keySignature.d.ts +13 -13
  169. package/types/src/ui/menus/language.d.ts +12 -12
  170. package/types/src/ui/menus/manager.d.ts +57 -57
  171. package/types/src/ui/menus/measure.d.ts +8 -8
  172. package/types/src/ui/menus/menu.d.ts +136 -136
  173. package/types/src/ui/menus/note.d.ts +8 -8
  174. package/types/src/ui/menus/partSelection.d.ts +19 -19
  175. package/types/src/ui/menus/parts.d.ts +50 -50
  176. package/types/src/ui/menus/score.d.ts +20 -20
  177. package/types/src/ui/menus/staffModifier.d.ts +21 -21
  178. package/types/src/ui/menus/text.d.ts +8 -8
  179. package/types/src/ui/menus/timeSignature.d.ts +12 -12
  180. package/types/src/ui/menus/tuplets.d.ts +13 -13
  181. package/types/src/ui/menus/voices.d.ts +8 -8
  182. package/types/src/ui/modalDialogs.d.ts +1 -1
  183. package/types/src/ui/navigation.d.ts +15 -15
  184. package/types/src/ui/qwerty.d.ts +41 -41
  185. package/types/src/ui/ribbonLayout/default/defaultRibbon.d.ts +15 -15
  186. package/types/src/ui/ribbonLayout/default/tabletRibbon.d.ts +22 -22
  187. package/types/typedoc.d.ts +158 -158
@@ -1,310 +1,310 @@
1
- import { SuiInlineText, SuiTextBlock } from './textRender';
2
- import { SuiRenderState } from './renderState';
3
- import { SuiScroller } from './scroller';
4
- import { OutlineInfo, StrokeInfo } from './svgHelpers';
5
- import { SmoScoreText, SmoTextGroup } from '../../smo/data/scoreText';
6
- import { SmoLyric } from '../../smo/data/noteModifiers';
7
- import { SmoSelector } from '../../smo/xform/selections';
8
- import { SvgBox, KeyEvent } from '../../smo/data/common';
9
- import { SmoNote } from '../../smo/data/note';
10
- import { SmoScore } from '../../smo/data/score';
11
- import { SmoSelection } from '../../smo/xform/selections';
12
- import { SvgPage } from './svgPageMap';
13
- import { SuiScoreViewOperations } from './scoreViewOperations';
14
- import { SvgPageMap } from './svgPageMap';
15
- /**
16
- * Basic parameters to create a text editor
17
- * @category SuiRender
18
- * @param context Vex renderer context
19
- * @param scroller
20
- * @param x initial x position
21
- * @param y initial y position
22
- * @param text initial text
23
- */
24
- export interface SuiTextEditorParams {
25
- pageMap: SvgPageMap;
26
- context: SvgPage;
27
- scroller: SuiScroller;
28
- x: number;
29
- y: number;
30
- text: string;
31
- }
32
- /**
33
- * @category SuiRender
34
- */
35
- export interface SuiLyricEditorParams extends SuiTextEditorParams {
36
- lyric: SmoLyric;
37
- }
38
- /**
39
- * @category SuiRender
40
- */
41
- export interface SuiTextSessionParams {
42
- scroller: SuiScroller;
43
- renderer: SuiRenderState;
44
- scoreText: SmoScoreText;
45
- text: string;
46
- x: number;
47
- y: number;
48
- textGroup: SmoTextGroup;
49
- }
50
- /**
51
- * @category SuiRender
52
- */
53
- export interface SuiLyricSessionParams {
54
- score: SmoScore;
55
- renderer: SuiRenderState;
56
- scroller: SuiScroller;
57
- view: SuiScoreViewOperations;
58
- verse: number;
59
- selector: SmoSelector;
60
- }
61
- export type SuiTextStrokeName = 'text-suggestion' | 'text-selection' | 'text-highlight' | 'text-drag' | 'inactive-text';
62
- /**
63
- * The heirarchy of text editing objects goes:
64
- *
65
- * `dialog -> component -> session -> editor`
66
- *
67
- * Editors and Sessions are defined in this module.
68
- * ### editor
69
- * handles low-level events and renders the preview using one
70
- * of the text layout objects.
71
- * ### session
72
- * creates and destroys editors, e.g. for lyrics that have a Different
73
- * editor instance for each note.
74
- *
75
- * ## SuiTextEditor
76
- * The base text editor handles the positioning and inserting
77
- * of text blocks into the text area. The derived class shoud interpret key events.
78
- * A container class will manage the session for starting/stopping the editor
79
- * and retrieving the results into the target object.
80
- * @category SuiRender
81
- * */
82
- export declare class SuiTextEditor {
83
- static get States(): Record<string, number>;
84
- static textTypeToChar(textType: number): string;
85
- static textTypeFromChar(char: string): number;
86
- svgText: SuiInlineText | null;
87
- context: SvgPage;
88
- outlineInfo: OutlineInfo | null;
89
- pageMap: SvgPageMap;
90
- x: number;
91
- y: number;
92
- text: string;
93
- textPos: number;
94
- selectionStart: number;
95
- selectionLength: number;
96
- empty: boolean;
97
- scroller: SuiScroller;
98
- suggestionIndex: number;
99
- cursorState: boolean;
100
- cursorRunning: boolean;
101
- textType: number;
102
- fontWeight: string;
103
- fontFamily: string;
104
- fontSize: number;
105
- state: number;
106
- suggestionRect: OutlineInfo | null;
107
- constructor(params: SuiTextEditorParams);
108
- static get strokes(): Record<SuiTextStrokeName, StrokeInfo>;
109
- _suggestionParameters(box: SvgBox, strokeName: SuiTextStrokeName): OutlineInfo;
110
- _expandSelectionToSuggestion(): void;
111
- _setSelectionToSugggestion(): void;
112
- rerender(): void;
113
- handleMouseEvent(ev: any): boolean;
114
- _serviceCursor(): void;
115
- _refreshCursor(): void;
116
- get _endCursorCondition(): boolean;
117
- _cursorPreResolve(): void;
118
- _cursorPoll(): void;
119
- startCursorPromise(): Promise<void>;
120
- stopCursor(): void;
121
- setTextPos(val: number): void;
122
- moveCursorRight(): void;
123
- moveCursorLeft(): void;
124
- _updateSelections(): void;
125
- _checkGrowSelectionLeft(): void;
126
- _checkGrowSelectionRight(): void;
127
- growSelectionLeft(): void;
128
- growSelectionRight(): void;
129
- _clearSelections(): void;
130
- deleteSelections(): void;
131
- parseBlocks(): void;
132
- evKey(evdata: KeyEvent): Promise<boolean>;
133
- }
134
- /**
135
- * @category SuiRender
136
- */
137
- export declare class SuiTextBlockEditor extends SuiTextEditor {
138
- constructor(params: SuiTextEditorParams);
139
- _highlightEditor(): void;
140
- getText(): string;
141
- evKey(evdata: any): Promise<boolean>;
142
- stopEditor(): void;
143
- }
144
- export declare class SuiLyricEditor extends SuiTextEditor {
145
- static get States(): {
146
- RUNNING: number;
147
- STOPPING: number;
148
- STOPPED: number;
149
- };
150
- parseBlocks(): void;
151
- getText(): string;
152
- lyric: SmoLyric;
153
- state: number;
154
- constructor(params: SuiLyricEditorParams);
155
- stopEditor(): void;
156
- }
157
- /**
158
- * @category SuiRender
159
- */
160
- export declare class SuiChordEditor extends SuiTextEditor {
161
- static get States(): {
162
- RUNNING: number;
163
- STOPPING: number;
164
- STOPPED: number;
165
- };
166
- static get SymbolModifiers(): {
167
- NONE: number;
168
- SUBSCRIPT: number;
169
- SUPERSCRIPT: number;
170
- };
171
- static toTextTypeChar(oldTextType: number, newTextType: number): string;
172
- static toTextTypeTransition(oldTextType: number, result: number): string;
173
- setTextType(textType: number): void;
174
- _updateSymbolModifiers(): void;
175
- _setSymbolModifier(char: string): boolean;
176
- parseBlocks(): void;
177
- getText(): string;
178
- _addGlyphAt(ix: number, code: string): void;
179
- unrender(): void;
180
- evKey(evdata: any): Promise<boolean>;
181
- lyric: SmoLyric;
182
- constructor(params: SuiLyricEditorParams);
183
- stopEditor(): void;
184
- _markStopped(): void;
185
- }
186
- export interface SuiDragSessionParams {
187
- context: SvgPageMap;
188
- scroller: SuiScroller;
189
- textGroup: SmoTextGroup;
190
- }
191
- /**
192
- * @category SuiRender
193
- */
194
- export declare class SuiDragSession {
195
- pageMap: SvgPageMap;
196
- page: SvgPage;
197
- scroller: SuiScroller;
198
- outlineBox: SvgBox;
199
- textObject: SuiTextBlock;
200
- dragging: boolean;
201
- outlineRect: OutlineInfo | null;
202
- textGroup: SmoTextGroup;
203
- constructor(params: SuiDragSessionParams);
204
- _outlineBox(): void;
205
- unrender(): void;
206
- scrolledClientBox(x: number, y: number): {
207
- x: number;
208
- y: number;
209
- width: number;
210
- height: number;
211
- };
212
- checkBounds(): void;
213
- startDrag(e: any): void;
214
- mouseMove(e: any): void;
215
- endDrag(): void;
216
- }
217
- /**
218
- * session for editing plain text
219
- * @category SuiRender
220
- */
221
- export declare class SuiTextSession {
222
- static get States(): {
223
- RUNNING: number;
224
- STOPPING: number;
225
- STOPPED: number;
226
- PENDING_EDITOR: number;
227
- };
228
- scroller: SuiScroller;
229
- scoreText: SmoScoreText;
230
- text: string;
231
- x: number;
232
- y: number;
233
- textGroup: SmoTextGroup;
234
- fontFamily: string;
235
- fontWeight: string;
236
- fontSize: number;
237
- state: number;
238
- editor: SuiTextBlockEditor | null;
239
- renderer: SuiRenderState;
240
- cursorPromise: Promise<any> | null;
241
- constructor(params: SuiTextSessionParams);
242
- get _isRefreshed(): boolean;
243
- get isStopped(): boolean;
244
- get isRunning(): boolean;
245
- _markStopped(): void;
246
- get _isRendered(): boolean;
247
- _removeScoreText(): void;
248
- startSession(): void;
249
- stopSession(): Promise<void>;
250
- evKey(evdata: KeyEvent): Promise<boolean>;
251
- handleMouseEvent(ev: any): void;
252
- }
253
- /**
254
- * Manage editor for lyrics, jupmping from note to note if asked
255
- * @category SuiRender
256
- */
257
- export declare class SuiLyricSession {
258
- static get States(): {
259
- RUNNING: number;
260
- STOPPING: number;
261
- STOPPED: number;
262
- PENDING_EDITOR: number;
263
- };
264
- score: SmoScore;
265
- renderer: SuiRenderState;
266
- scroller: SuiScroller;
267
- view: SuiScoreViewOperations;
268
- parser: number;
269
- verse: number;
270
- selector: SmoSelector;
271
- selection: SmoSelection | null;
272
- note: SmoNote | null;
273
- originalText: string;
274
- lyric: SmoLyric | null;
275
- text: string;
276
- editor: SuiLyricEditor | null;
277
- state: number;
278
- cursorPromise: Promise<any> | null;
279
- constructor(params: SuiLyricSessionParams);
280
- _setLyricForNote(): void;
281
- get _endLyricCondition(): boolean;
282
- get _isRefreshed(): boolean;
283
- get _isRendered(): boolean;
284
- get _pendingEditor(): boolean;
285
- _hideLyric(): void;
286
- get isStopped(): boolean;
287
- get isRunning(): boolean;
288
- _markStopped(): void;
289
- _startSessionForNote(): void;
290
- startSession(): void;
291
- stopSession(): Promise<void>;
292
- _advanceSelection(isShift: boolean): Promise<void>;
293
- advanceSelection(isShift: boolean): Promise<void>;
294
- removeLyric(): Promise<void>;
295
- _updateLyricFromEditor(): Promise<void>;
296
- evKey(evdata: any): Promise<boolean>;
297
- get textType(): number;
298
- set textType(type: number);
299
- handleMouseEvent(ev: any): void;
300
- }
301
- /**
302
- * @category SuiRender
303
- */
304
- export declare class SuiChordSession extends SuiLyricSession {
305
- editor: SuiLyricEditor | null;
306
- constructor(params: SuiLyricSessionParams);
307
- evKey(evdata: KeyEvent): Promise<boolean>;
308
- _setLyricForNote(): void;
309
- _startSessionForNote(): void;
310
- }
1
+ import { SuiInlineText, SuiTextBlock } from './textRender';
2
+ import { SuiRenderState } from './renderState';
3
+ import { SuiScroller } from './scroller';
4
+ import { OutlineInfo, StrokeInfo } from './svgHelpers';
5
+ import { SmoScoreText, SmoTextGroup } from '../../smo/data/scoreText';
6
+ import { SmoLyric } from '../../smo/data/noteModifiers';
7
+ import { SmoSelector } from '../../smo/xform/selections';
8
+ import { SvgBox, KeyEvent } from '../../smo/data/common';
9
+ import { SmoNote } from '../../smo/data/note';
10
+ import { SmoScore } from '../../smo/data/score';
11
+ import { SmoSelection } from '../../smo/xform/selections';
12
+ import { SvgPage } from './svgPageMap';
13
+ import { SuiScoreViewOperations } from './scoreViewOperations';
14
+ import { SvgPageMap } from './svgPageMap';
15
+ /**
16
+ * Basic parameters to create a text editor
17
+ * @category SuiRender
18
+ * @param context Vex renderer context
19
+ * @param scroller
20
+ * @param x initial x position
21
+ * @param y initial y position
22
+ * @param text initial text
23
+ */
24
+ export interface SuiTextEditorParams {
25
+ pageMap: SvgPageMap;
26
+ context: SvgPage;
27
+ scroller: SuiScroller;
28
+ x: number;
29
+ y: number;
30
+ text: string;
31
+ }
32
+ /**
33
+ * @category SuiRender
34
+ */
35
+ export interface SuiLyricEditorParams extends SuiTextEditorParams {
36
+ lyric: SmoLyric;
37
+ }
38
+ /**
39
+ * @category SuiRender
40
+ */
41
+ export interface SuiTextSessionParams {
42
+ scroller: SuiScroller;
43
+ renderer: SuiRenderState;
44
+ scoreText: SmoScoreText;
45
+ text: string;
46
+ x: number;
47
+ y: number;
48
+ textGroup: SmoTextGroup;
49
+ }
50
+ /**
51
+ * @category SuiRender
52
+ */
53
+ export interface SuiLyricSessionParams {
54
+ score: SmoScore;
55
+ renderer: SuiRenderState;
56
+ scroller: SuiScroller;
57
+ view: SuiScoreViewOperations;
58
+ verse: number;
59
+ selector: SmoSelector;
60
+ }
61
+ export type SuiTextStrokeName = 'text-suggestion' | 'text-selection' | 'text-highlight' | 'text-drag' | 'inactive-text';
62
+ /**
63
+ * The heirarchy of text editing objects goes:
64
+ *
65
+ * `dialog -> component -> session -> editor`
66
+ *
67
+ * Editors and Sessions are defined in this module.
68
+ * ### editor
69
+ * handles low-level events and renders the preview using one
70
+ * of the text layout objects.
71
+ * ### session
72
+ * creates and destroys editors, e.g. for lyrics that have a Different
73
+ * editor instance for each note.
74
+ *
75
+ * ## SuiTextEditor
76
+ * The base text editor handles the positioning and inserting
77
+ * of text blocks into the text area. The derived class shoud interpret key events.
78
+ * A container class will manage the session for starting/stopping the editor
79
+ * and retrieving the results into the target object.
80
+ * @category SuiRender
81
+ * */
82
+ export declare class SuiTextEditor {
83
+ static get States(): Record<string, number>;
84
+ static textTypeToChar(textType: number): string;
85
+ static textTypeFromChar(char: string): number;
86
+ svgText: SuiInlineText | null;
87
+ context: SvgPage;
88
+ outlineInfo: OutlineInfo | null;
89
+ pageMap: SvgPageMap;
90
+ x: number;
91
+ y: number;
92
+ text: string;
93
+ textPos: number;
94
+ selectionStart: number;
95
+ selectionLength: number;
96
+ empty: boolean;
97
+ scroller: SuiScroller;
98
+ suggestionIndex: number;
99
+ cursorState: boolean;
100
+ cursorRunning: boolean;
101
+ textType: number;
102
+ fontWeight: string;
103
+ fontFamily: string;
104
+ fontSize: number;
105
+ state: number;
106
+ suggestionRect: OutlineInfo | null;
107
+ constructor(params: SuiTextEditorParams);
108
+ static get strokes(): Record<SuiTextStrokeName, StrokeInfo>;
109
+ _suggestionParameters(box: SvgBox, strokeName: SuiTextStrokeName): OutlineInfo;
110
+ _expandSelectionToSuggestion(): void;
111
+ _setSelectionToSugggestion(): void;
112
+ rerender(): void;
113
+ handleMouseEvent(ev: any): boolean;
114
+ _serviceCursor(): void;
115
+ _refreshCursor(): void;
116
+ get _endCursorCondition(): boolean;
117
+ _cursorPreResolve(): void;
118
+ _cursorPoll(): void;
119
+ startCursorPromise(): Promise<void>;
120
+ stopCursor(): void;
121
+ setTextPos(val: number): void;
122
+ moveCursorRight(): void;
123
+ moveCursorLeft(): void;
124
+ _updateSelections(): void;
125
+ _checkGrowSelectionLeft(): void;
126
+ _checkGrowSelectionRight(): void;
127
+ growSelectionLeft(): void;
128
+ growSelectionRight(): void;
129
+ _clearSelections(): void;
130
+ deleteSelections(): void;
131
+ parseBlocks(): void;
132
+ evKey(evdata: KeyEvent): Promise<boolean>;
133
+ }
134
+ /**
135
+ * @category SuiRender
136
+ */
137
+ export declare class SuiTextBlockEditor extends SuiTextEditor {
138
+ constructor(params: SuiTextEditorParams);
139
+ _highlightEditor(): void;
140
+ getText(): string;
141
+ evKey(evdata: any): Promise<boolean>;
142
+ stopEditor(): void;
143
+ }
144
+ export declare class SuiLyricEditor extends SuiTextEditor {
145
+ static get States(): {
146
+ RUNNING: number;
147
+ STOPPING: number;
148
+ STOPPED: number;
149
+ };
150
+ parseBlocks(): void;
151
+ getText(): string;
152
+ lyric: SmoLyric;
153
+ state: number;
154
+ constructor(params: SuiLyricEditorParams);
155
+ stopEditor(): void;
156
+ }
157
+ /**
158
+ * @category SuiRender
159
+ */
160
+ export declare class SuiChordEditor extends SuiTextEditor {
161
+ static get States(): {
162
+ RUNNING: number;
163
+ STOPPING: number;
164
+ STOPPED: number;
165
+ };
166
+ static get SymbolModifiers(): {
167
+ NONE: number;
168
+ SUBSCRIPT: number;
169
+ SUPERSCRIPT: number;
170
+ };
171
+ static toTextTypeChar(oldTextType: number, newTextType: number): string;
172
+ static toTextTypeTransition(oldTextType: number, result: number): string;
173
+ setTextType(textType: number): void;
174
+ _updateSymbolModifiers(): void;
175
+ _setSymbolModifier(char: string): boolean;
176
+ parseBlocks(): void;
177
+ getText(): string;
178
+ _addGlyphAt(ix: number, code: string): void;
179
+ unrender(): void;
180
+ evKey(evdata: any): Promise<boolean>;
181
+ lyric: SmoLyric;
182
+ constructor(params: SuiLyricEditorParams);
183
+ stopEditor(): void;
184
+ _markStopped(): void;
185
+ }
186
+ export interface SuiDragSessionParams {
187
+ context: SvgPageMap;
188
+ scroller: SuiScroller;
189
+ textGroup: SmoTextGroup;
190
+ }
191
+ /**
192
+ * @category SuiRender
193
+ */
194
+ export declare class SuiDragSession {
195
+ pageMap: SvgPageMap;
196
+ page: SvgPage;
197
+ scroller: SuiScroller;
198
+ outlineBox: SvgBox;
199
+ textObject: SuiTextBlock;
200
+ dragging: boolean;
201
+ outlineRect: OutlineInfo | null;
202
+ textGroup: SmoTextGroup;
203
+ constructor(params: SuiDragSessionParams);
204
+ _outlineBox(): void;
205
+ unrender(): void;
206
+ scrolledClientBox(x: number, y: number): {
207
+ x: number;
208
+ y: number;
209
+ width: number;
210
+ height: number;
211
+ };
212
+ checkBounds(): void;
213
+ startDrag(e: any): void;
214
+ mouseMove(e: any): void;
215
+ endDrag(): void;
216
+ }
217
+ /**
218
+ * session for editing plain text
219
+ * @category SuiRender
220
+ */
221
+ export declare class SuiTextSession {
222
+ static get States(): {
223
+ RUNNING: number;
224
+ STOPPING: number;
225
+ STOPPED: number;
226
+ PENDING_EDITOR: number;
227
+ };
228
+ scroller: SuiScroller;
229
+ scoreText: SmoScoreText;
230
+ text: string;
231
+ x: number;
232
+ y: number;
233
+ textGroup: SmoTextGroup;
234
+ fontFamily: string;
235
+ fontWeight: string;
236
+ fontSize: number;
237
+ state: number;
238
+ editor: SuiTextBlockEditor | null;
239
+ renderer: SuiRenderState;
240
+ cursorPromise: Promise<any> | null;
241
+ constructor(params: SuiTextSessionParams);
242
+ get _isRefreshed(): boolean;
243
+ get isStopped(): boolean;
244
+ get isRunning(): boolean;
245
+ _markStopped(): void;
246
+ get _isRendered(): boolean;
247
+ _removeScoreText(): void;
248
+ startSession(): void;
249
+ stopSession(): Promise<void>;
250
+ evKey(evdata: KeyEvent): Promise<boolean>;
251
+ handleMouseEvent(ev: any): void;
252
+ }
253
+ /**
254
+ * Manage editor for lyrics, jupmping from note to note if asked
255
+ * @category SuiRender
256
+ */
257
+ export declare class SuiLyricSession {
258
+ static get States(): {
259
+ RUNNING: number;
260
+ STOPPING: number;
261
+ STOPPED: number;
262
+ PENDING_EDITOR: number;
263
+ };
264
+ score: SmoScore;
265
+ renderer: SuiRenderState;
266
+ scroller: SuiScroller;
267
+ view: SuiScoreViewOperations;
268
+ parser: number;
269
+ verse: number;
270
+ selector: SmoSelector;
271
+ selection: SmoSelection | null;
272
+ note: SmoNote | null;
273
+ originalText: string;
274
+ lyric: SmoLyric | null;
275
+ text: string;
276
+ editor: SuiLyricEditor | null;
277
+ state: number;
278
+ cursorPromise: Promise<any> | null;
279
+ constructor(params: SuiLyricSessionParams);
280
+ _setLyricForNote(): void;
281
+ get _endLyricCondition(): boolean;
282
+ get _isRefreshed(): boolean;
283
+ get _isRendered(): boolean;
284
+ get _pendingEditor(): boolean;
285
+ _hideLyric(): void;
286
+ get isStopped(): boolean;
287
+ get isRunning(): boolean;
288
+ _markStopped(): void;
289
+ _startSessionForNote(): void;
290
+ startSession(): void;
291
+ stopSession(): Promise<void>;
292
+ _advanceSelection(isShift: boolean): Promise<void>;
293
+ advanceSelection(isShift: boolean): Promise<void>;
294
+ removeLyric(): Promise<void>;
295
+ _updateLyricFromEditor(): Promise<void>;
296
+ evKey(evdata: any): Promise<boolean>;
297
+ get textType(): number;
298
+ set textType(type: number);
299
+ handleMouseEvent(ev: any): void;
300
+ }
301
+ /**
302
+ * @category SuiRender
303
+ */
304
+ export declare class SuiChordSession extends SuiLyricSession {
305
+ editor: SuiLyricEditor | null;
306
+ constructor(params: SuiLyricSessionParams);
307
+ evKey(evdata: KeyEvent): Promise<boolean>;
308
+ _setLyricForNote(): void;
309
+ _startSessionForNote(): void;
310
+ }