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.
Files changed (189) hide show
  1. package/build/smoosic.js +1 -1
  2. package/package.json +1 -1
  3. package/release/smoosic.js +1 -1
  4. package/release/styles/ribbon.css +5 -10
  5. package/src/application/exports.ts +1 -0
  6. package/src/styles/ribbon.css +5 -10
  7. package/types/src/application/application.d.ts +102 -102
  8. package/types/src/application/common.d.ts +74 -74
  9. package/types/src/application/configuration.d.ts +74 -74
  10. package/types/src/application/dom.d.ts +8 -8
  11. package/types/src/application/dynamicInit.d.ts +1 -1
  12. package/types/src/application/eventHandler.d.ts +78 -78
  13. package/types/src/application/exports.d.ts +494 -493
  14. package/types/src/application/generateVexTests.d.ts +10 -10
  15. package/types/src/application/keyCommands.d.ts +90 -90
  16. package/types/src/common/bootstrap.bundle.d.ts +1138 -1138
  17. package/types/src/common/htmlHelpers.d.ts +105 -105
  18. package/types/src/common/jszip.d.ts +2 -2
  19. package/types/src/common/midi-parser.d.ts +38 -38
  20. package/types/src/common/promiseHelpers.d.ts +30 -30
  21. package/types/src/common/serializationHelpers.d.ts +29 -29
  22. package/types/src/common/textformatter.d.ts +140 -140
  23. package/types/src/common/vex.d.ts +222 -222
  24. package/types/src/render/audio/musicCursor.d.ts +25 -25
  25. package/types/src/render/audio/oscillator.d.ts +98 -98
  26. package/types/src/render/audio/player.d.ts +141 -141
  27. package/types/src/render/audio/samples.d.ts +56 -56
  28. package/types/src/render/sui/configuration.d.ts +12 -12
  29. package/types/src/render/sui/formatter.d.ts +151 -151
  30. package/types/src/render/sui/layoutDebug.d.ts +43 -43
  31. package/types/src/render/sui/mapper.d.ts +116 -116
  32. package/types/src/render/sui/piano.d.ts +46 -46
  33. package/types/src/render/sui/renderState.d.ts +88 -88
  34. package/types/src/render/sui/scoreRender.d.ts +93 -93
  35. package/types/src/render/sui/scoreView.d.ts +267 -267
  36. package/types/src/render/sui/scoreViewOperations.d.ts +594 -594
  37. package/types/src/render/sui/scroller.d.ts +34 -34
  38. package/types/src/render/sui/svgHelpers.d.ts +85 -85
  39. package/types/src/render/sui/svgPageMap.d.ts +318 -318
  40. package/types/src/render/sui/textEdit.d.ts +310 -310
  41. package/types/src/render/sui/textRender.d.ts +189 -189
  42. package/types/src/render/sui/tracker.d.ts +90 -90
  43. package/types/src/render/vex/glyphDimensions.d.ts +23 -23
  44. package/types/src/render/vex/smoAdapter.d.ts +46 -46
  45. package/types/src/render/vex/toVex.d.ts +13 -13
  46. package/types/src/render/vex/vxMeasure.d.ts +95 -95
  47. package/types/src/render/vex/vxNote.d.ts +55 -55
  48. package/types/src/render/vex/vxSystem.d.ts +64 -64
  49. package/types/src/smo/data/common.d.ts +220 -220
  50. package/types/src/smo/data/measure.d.ts +510 -510
  51. package/types/src/smo/data/measureModifiers.d.ts +506 -506
  52. package/types/src/smo/data/music.d.ts +438 -438
  53. package/types/src/smo/data/note.d.ts +485 -485
  54. package/types/src/smo/data/noteModifiers.d.ts +590 -590
  55. package/types/src/smo/data/partInfo.d.ts +162 -162
  56. package/types/src/smo/data/score.d.ts +395 -395
  57. package/types/src/smo/data/scoreModifiers.d.ts +433 -433
  58. package/types/src/smo/data/scoreText.d.ts +277 -277
  59. package/types/src/smo/data/staffModifiers.d.ts +767 -767
  60. package/types/src/smo/data/systemStaff.d.ts +238 -238
  61. package/types/src/smo/data/tuplet.d.ts +146 -146
  62. package/types/src/smo/midi/midiToSmo.d.ts +198 -198
  63. package/types/src/smo/midi/smoToMidi.d.ts +23 -23
  64. package/types/src/smo/mxml/smoToXml.d.ts +165 -165
  65. package/types/src/smo/mxml/xmlHelpers.d.ts +140 -140
  66. package/types/src/smo/mxml/xmlState.d.ts +257 -257
  67. package/types/src/smo/mxml/xmlToSmo.d.ts +92 -92
  68. package/types/src/smo/xform/beamers.d.ts +46 -46
  69. package/types/src/smo/xform/copypaste.d.ts +99 -99
  70. package/types/src/smo/xform/operations.d.ts +127 -127
  71. package/types/src/smo/xform/roadmap.d.ts +70 -70
  72. package/types/src/smo/xform/selections.d.ts +153 -153
  73. package/types/src/smo/xform/tickDuration.d.ts +155 -155
  74. package/types/src/smo/xform/tickMap.d.ts +34 -34
  75. package/types/src/smo/xform/undo.d.ts +142 -142
  76. package/types/src/smo/xform/updateAudio.d.ts +9 -9
  77. package/types/src/styles/font_metrics/Commissioner-Medium-Metrics.d.ts +871 -871
  78. package/types/src/styles/font_metrics/ConcertOne-Regular.d.ts +871 -871
  79. package/types/src/styles/font_metrics/Merriweather-Regular.d.ts +871 -871
  80. package/types/src/styles/font_metrics/arial_metrics.d.ts +870 -870
  81. package/types/src/styles/font_metrics/ssp-sans-metrics.d.ts +871 -871
  82. package/types/src/styles/font_metrics/ssp-serif-metrics.d.ts +871 -871
  83. package/types/src/styles/font_metrics/times_metrics.d.ts +870 -870
  84. package/types/src/ui/buttons/button.d.ts +95 -95
  85. package/types/src/ui/buttons/collapsable.d.ts +42 -42
  86. package/types/src/ui/buttons/display.d.ts +23 -23
  87. package/types/src/ui/buttons/ribbon.d.ts +76 -76
  88. package/types/src/ui/common.d.ts +45 -45
  89. package/types/src/ui/composable/draggable.d.ts +12 -12
  90. package/types/src/ui/configuration.d.ts +31 -31
  91. package/types/src/ui/dialogs/adapter.d.ts +107 -107
  92. package/types/src/ui/dialogs/addMeasure.d.ts +20 -20
  93. package/types/src/ui/dialogs/arpeggio.d.ts +2 -2
  94. package/types/src/ui/dialogs/articulation.d.ts +2 -2
  95. package/types/src/ui/dialogs/audioSettings.d.ts +32 -32
  96. package/types/src/ui/dialogs/chordChange.d.ts +35 -35
  97. package/types/src/ui/dialogs/clefChange.d.ts +2 -2
  98. package/types/src/ui/dialogs/components/baseComponent.d.ts +158 -158
  99. package/types/src/ui/dialogs/components/button.d.ts +54 -54
  100. package/types/src/ui/dialogs/components/buttonArray.d.ts +101 -101
  101. package/types/src/ui/dialogs/components/checkdrop.d.ts +27 -27
  102. package/types/src/ui/dialogs/components/dragText.d.ts +27 -27
  103. package/types/src/ui/dialogs/components/dropdown.d.ts +78 -78
  104. package/types/src/ui/dialogs/components/fileDownload.d.ts +28 -28
  105. package/types/src/ui/dialogs/components/fontComponent.d.ts +32 -32
  106. package/types/src/ui/dialogs/components/noteText.d.ts +98 -98
  107. package/types/src/ui/dialogs/components/pitch.d.ts +95 -95
  108. package/types/src/ui/dialogs/components/rocker.d.ts +66 -66
  109. package/types/src/ui/dialogs/components/staffComponents.d.ts +77 -77
  110. package/types/src/ui/dialogs/components/textCheck.d.ts +38 -38
  111. package/types/src/ui/dialogs/components/textInPlace.d.ts +90 -90
  112. package/types/src/ui/dialogs/components/textInput.d.ts +58 -58
  113. package/types/src/ui/dialogs/components/tie.d.ts +41 -41
  114. package/types/src/ui/dialogs/components/toggle.d.ts +53 -53
  115. package/types/src/ui/dialogs/components/tree.d.ts +46 -46
  116. package/types/src/ui/dialogs/customTuplets.d.ts +25 -25
  117. package/types/src/ui/dialogs/dialog.d.ts +201 -201
  118. package/types/src/ui/dialogs/durations.d.ts +2 -2
  119. package/types/src/ui/dialogs/dynamics.d.ts +37 -37
  120. package/types/src/ui/dialogs/endings.d.ts +61 -61
  121. package/types/src/ui/dialogs/factory.d.ts +15 -15
  122. package/types/src/ui/dialogs/fileDialogs.d.ts +4 -4
  123. package/types/src/ui/dialogs/fonts.d.ts +2 -2
  124. package/types/src/ui/dialogs/globalLayout.d.ts +2 -2
  125. package/types/src/ui/dialogs/gracenote.d.ts +2 -2
  126. package/types/src/ui/dialogs/hairpin.d.ts +35 -35
  127. package/types/src/ui/dialogs/instrument.d.ts +3 -3
  128. package/types/src/ui/dialogs/keySignature.d.ts +33 -33
  129. package/types/src/ui/dialogs/library.d.ts +70 -70
  130. package/types/src/ui/dialogs/lyric.d.ts +39 -39
  131. package/types/src/ui/dialogs/measureFormat.d.ts +52 -52
  132. package/types/src/ui/dialogs/microtones.d.ts +2 -2
  133. package/types/src/ui/dialogs/noteHead.d.ts +2 -2
  134. package/types/src/ui/dialogs/ornament.d.ts +2 -2
  135. package/types/src/ui/dialogs/pageLayout.d.ts +2 -2
  136. package/types/src/ui/dialogs/partInfo.d.ts +2 -2
  137. package/types/src/ui/dialogs/pedalMarking.d.ts +35 -35
  138. package/types/src/ui/dialogs/pitch.d.ts +2 -2
  139. package/types/src/ui/dialogs/preferences.d.ts +2 -2
  140. package/types/src/ui/dialogs/scoreId.d.ts +2 -2
  141. package/types/src/ui/dialogs/scoreView.d.ts +2 -2
  142. package/types/src/ui/dialogs/slur.d.ts +57 -57
  143. package/types/src/ui/dialogs/staffGroup.d.ts +2 -2
  144. package/types/src/ui/dialogs/tabNote.d.ts +32 -32
  145. package/types/src/ui/dialogs/tabStave.d.ts +43 -43
  146. package/types/src/ui/dialogs/tempo.d.ts +50 -50
  147. package/types/src/ui/dialogs/textBlock.d.ts +61 -61
  148. package/types/src/ui/dialogs/textBracket.d.ts +35 -35
  149. package/types/src/ui/dialogs/tie.d.ts +41 -41
  150. package/types/src/ui/dialogs/timeSignature.d.ts +34 -34
  151. package/types/src/ui/dialogs/transposeScore.d.ts +2 -2
  152. package/types/src/ui/dialogs/volta.d.ts +40 -40
  153. package/types/src/ui/eventSource.d.ts +63 -63
  154. package/types/src/ui/exceptions.d.ts +12 -12
  155. package/types/src/ui/fileio/fileInput.d.ts +12 -12
  156. package/types/src/ui/fileio/library.d.ts +40 -40
  157. package/types/src/ui/fileio/xhrLoader.d.ts +18 -18
  158. package/types/src/ui/help.d.ts +22 -22
  159. package/types/src/ui/i18n/language.d.ts +37 -37
  160. package/types/src/ui/i18n/language_ar.d.ts +5 -5
  161. package/types/src/ui/i18n/language_de.d.ts +1 -1
  162. package/types/src/ui/i18n/language_en.d.ts +18 -18
  163. package/types/src/ui/i18n/translationEditor.d.ts +14 -14
  164. package/types/src/ui/keyBindings/default/editorKeys.d.ts +7 -7
  165. package/types/src/ui/keyBindings/default/trackerKeys.d.ts +7 -7
  166. package/types/src/ui/menus/beams.d.ts +13 -13
  167. package/types/src/ui/menus/edit.d.ts +8 -8
  168. package/types/src/ui/menus/file.d.ts +26 -26
  169. package/types/src/ui/menus/help.d.ts +8 -8
  170. package/types/src/ui/menus/keySignature.d.ts +13 -13
  171. package/types/src/ui/menus/language.d.ts +12 -12
  172. package/types/src/ui/menus/manager.d.ts +57 -57
  173. package/types/src/ui/menus/measure.d.ts +8 -8
  174. package/types/src/ui/menus/menu.d.ts +136 -136
  175. package/types/src/ui/menus/note.d.ts +8 -8
  176. package/types/src/ui/menus/partSelection.d.ts +19 -19
  177. package/types/src/ui/menus/parts.d.ts +50 -50
  178. package/types/src/ui/menus/score.d.ts +20 -20
  179. package/types/src/ui/menus/staffModifier.d.ts +21 -21
  180. package/types/src/ui/menus/text.d.ts +8 -8
  181. package/types/src/ui/menus/timeSignature.d.ts +12 -12
  182. package/types/src/ui/menus/tuplets.d.ts +13 -13
  183. package/types/src/ui/menus/voices.d.ts +8 -8
  184. package/types/src/ui/modalDialogs.d.ts +1 -1
  185. package/types/src/ui/navigation.d.ts +15 -15
  186. package/types/src/ui/qwerty.d.ts +41 -41
  187. package/types/src/ui/ribbonLayout/default/defaultRibbon.d.ts +15 -15
  188. package/types/src/ui/ribbonLayout/default/tabletRibbon.d.ts +22 -22
  189. 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
+ }