UNPKG

smoosic

Version:

<sub>[Github site](https://github.com/Smoosic/smoosic) | [source documentation](https://smoosic.github.io/Smoosic/release/docs/modules.html) | [change notes](https://aarondavidnewman.github.io/Smoosic/changes.html) | [application](https://smoosic.github.i

159 lines (155 loc) 4.67 kB
import { SuiMenuBase, SuiMenuParams, MenuDefinition, SuiMenuHandler, SuiMenuShowOption, SuiConfiguredMenuOption, SuiConfiguredMenu } from './menu'; import { createAndDisplayDialog } from '../dialogs/dialog'; import { SuiTextBlockDialog } from '../dialogs/textBlock'; import { SmoDynamicText } from '../../smo/data/noteModifiers'; import { SuiChordChangeDialog } from '../dialogs/chordChange'; import { SuiLyricDialog } from '../dialogs/lyric'; import { SuiDynamicModifierDialog } from '../dialogs/dynamics'; declare var $: any; /** * Stuff you can do with text. * @category SuiMenu */ export class SuiTextMenu extends SuiConfiguredMenu { constructor(params: SuiMenuParams) { super(params, 'Notes', SuiTextMenuOptions); } } /** * @category SuiMenu */ const rehearsalLetterDialogMenuOption: SuiConfiguredMenuOption = { handler: async (menu: SuiMenuBase) => { menu.view.toggleRehearsalMark(); }, display: (menu: SuiMenuBase) => true, menuChoice: { icon: '', text: 'Rehearsal Letter', value: 'rehearsalLetter' } } /** * @category SuiMenu */ const textBlockDialogMenuOption: SuiConfiguredMenuOption = { handler: async (menu: SuiMenuBase) => { createAndDisplayDialog(SuiTextBlockDialog, { completeNotifier: menu.completeNotifier!, view: menu.view, eventSource: menu.eventSource, id: 'textDialog', ctor: 'SuiTextBlockDialog', tracker: menu.view.tracker, startPromise: menu.closePromise, modifier: null }); }, display: (menu: SuiMenuBase) => true, menuChoice: { icon: '', text: 'Score Text', value: 'textBlock' } } /** * @category SuiMenu */ const chordChangeDialogMenuOption: SuiConfiguredMenuOption = { handler: async (menu: SuiMenuBase) => { const sel = menu.view.tracker.selections[0]; const note = sel.note; if (!note) { return; } const lyrics = note.getChords(); const lyric = lyrics.length > 0 ? null : lyrics[0]; createAndDisplayDialog(SuiChordChangeDialog, { completeNotifier: menu.completeNotifier!, view: menu.view, eventSource: menu.eventSource, id: 'chordDialog', ctor: 'SuiChordChangeDialog', tracker: menu.view.tracker, startPromise: menu.closePromise, modifier: lyric } ); }, display: (menu: SuiMenuBase) => true, menuChoice: { icon: '', text: 'Chord Changes', value: 'chordChanges' } } /** * @category SuiMenu */ const lyricsDialogMenuOption: SuiConfiguredMenuOption = { handler: async (menu: SuiMenuBase) => { const sel = menu.view.tracker.selections[0]; const note = sel.note; if (!note) { return; } const lyrics = note.getTrueLyrics(); const lyric = lyrics.length > 0 ? lyrics[0] : null; createAndDisplayDialog(SuiLyricDialog, { completeNotifier: menu.completeNotifier!, view: menu.view, eventSource: menu.eventSource, id: 'lyricDialog', ctor: 'SuiLyricDialog', tracker: menu.view.tracker, startPromise: menu.closePromise, modifier: lyric }); }, display: (menu: SuiMenuBase) => true, menuChoice: { icon: '', text: 'Lyrics', value: 'lyricMenu' } } /** * @category SuiMenu */ const dynamicsDialogMenuOption: SuiConfiguredMenuOption = { handler: async (menu: SuiMenuBase) => { const sel = menu.view.tracker.selections[0]; let modifier = null; if (sel.note) { const dynamics = sel.note.getModifiers('SmoDynamicText'); if (dynamics.length) { modifier = dynamics[0]; } else { const params = SmoDynamicText.defaults; modifier = new SmoDynamicText(params); menu.view.addDynamic(sel, modifier); } } createAndDisplayDialog(SuiDynamicModifierDialog, { completeNotifier: menu.completeNotifier!, view: menu.view, eventSource: menu.eventSource, id: 'dynamicsDialog', ctor: 'SuiDynamicModifierDialog', tracker: menu.view.tracker, startPromise: menu.closePromise, modifier }); }, display: (menu: SuiMenuBase) => true, menuChoice: { icon: '', text: 'Dynamics', value: 'dynamicsMenu' } } /** * stuff you can do with text, or loosely related to text. * @category SuiMenu */ const SuiTextMenuOptions: SuiConfiguredMenuOption[] = [dynamicsDialogMenuOption, textBlockDialogMenuOption, chordChangeDialogMenuOption, lyricsDialogMenuOption, rehearsalLetterDialogMenuOption];