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

181 lines (176 loc) 13.4 kB
import { SmoModifier } from '../../smo/data/score'; import { SuiDialogBase, SuiDialogParams, createAndDisplayDialog, DialogTranslations, suiDialogTranslate } from './dialog'; import { SuiHairpinAttributesDialog } from './hairpin'; import { SuiSlurAttributesDialog } from './slur'; import { SuiPedalMarkingDialog } from './pedalMarking'; import { SuiVoltaAttributeDialog } from './volta'; import { SuiLyricDialog } from './lyric'; import { SuiTieAttributesDialog } from './tie'; import { SuiDynamicModifierDialog } from './dynamics'; import { SuiTextBlockDialog } from './textBlock'; import { SuiTextBracketDialog } from './textBracket'; import { SuiInsertMeasures } from './addMeasure'; import { SuiArpeggioDialog } from './arpeggio'; import { SuiDialogNotifier, SmoDynamicComponentCtor, SuiBaseComponentParams } from './components/baseComponent'; import { SuiButtonComponent, SuiButtonComposite, SuiButtonCompositeParams, SuiButtonComponentParams } from './components/button'; import { SuiEndBarButtonComponent, SuiStartBarButtonComponent, SuiRepeatSymbolButtonComponent } from './endings'; import { CheckboxDropdownComponent, CheckboxDropdownComponentParams } from './components/checkdrop'; import { SuiDragText } from './components/dragText'; import { SuiDropdownComponent, SuiDropdownComponentParams, SuiDropdownCompositeParams, SuiDropdownComposite } from './components/dropdown'; import { SuiFileDownloadComponentParams, SuiFileDownloadComponent } from './components/fileDownload'; import { SuiFontComponent, SuiFontComponentParams } from './components/fontComponent'; import { SuiNoteTextParams, SuiLyricComponent, SuiChordComponent } from './components/noteText'; import { SuiPitchComponentParams, SuiPitchComponent, SuiPitchComposite, SuiPitchCompositeParams, SuiPitchArrayComponentTab } from './components/pitch'; import { SuiRockerComponentParams,SuiRockerComponent, SuiRockerComposite, SuiRockerCompositeParams } from './components/rocker'; import { StaffAddRemoveComponentParams, StaffAddRemoveComponent, StaffCheckComponentParams, StaffCheckComponent } from './components/staffComponents'; import { TextCheckComponentParams, TextCheckComponent } from './components/textCheck'; import { SuiTextInPlace, SuiTextInPlaceParams, SuiTextBlockComponent, SuiTextBlockComponentParams } from './components/textInPlace'; import { SuiTextInputComponentParams, SuiTextInputComponent, SuiTextInputCompositeParams, SuiTextInputComposite, SuiReadOnlyTextComponent } from './components/textInput'; import { TieMappingComponentParams, TieMappingComponent } from './components/tie'; import { SuiToggleComponentParams, SuiToggleComponent, SuiToggleCompositeParams, SuiToggleComposite } from './components/toggle'; import { SuiTreeComponent, SuiTreeComponentParams } from './components/tree'; import { SuiArticulationButtonComponent } from './articulation'; import { SuiDurationButtonComponent } from './durations'; import { SuiGraceNoteButtonsComponent } from './gracenote'; import { SuiMicrotoneButtonComponent } from './microtones'; import { SuiNoteHeadButtonComponent, SuiStemButtonComponent } from './noteHead'; import { SuiOrnamentButtonComponent } from './ornament'; import { SuiIntervalButtonComponent, SuiTransposeButtonComponent, SuiLetterButtonComponent } from './pitch'; export type ModifiersWithDialogs = 'SmoStaffHairpin' | 'SmoTie' | 'SmoSlur' | 'SmoDynamicText' | 'SmoVolta' | 'SmoScoreText' | 'SmoLoadScore' | 'SmoLyric' | 'SmoPedalMarking'; export var ModifiersWithDialogNames = ['SmoStaffHairpin', 'SmoTie', 'SmoSlur', 'SmoDynamicText', 'SmoVolta', 'SmoScoreText', 'SmoLoadScore', 'SmoLyric', 'SmoTextGroup', 'SmoStaffTextBracket', 'SmoPedalMarking']; export function isModifierWithDialog(modifier: SmoModifier) { return ModifiersWithDialogNames.indexOf(modifier.attrs.type) >= 0; } /** * Dialogs bound to hot keys are created here * directly from a button/menu option * @category SuiDialog */ export class SuiModifierDialogFactory { static createModifierDialog(modifier: SmoModifier, parameters: SuiDialogParams): SuiDialogBase | null { if (!isModifierWithDialog(modifier)) { return null; } const ctor = modifier.attrs.type; parameters.modifier = modifier; if (ctor === 'SmoStaffHairpin') { return createAndDisplayDialog(SuiHairpinAttributesDialog, parameters); } else if (ctor === 'SmoPedalMarking') { return createAndDisplayDialog(SuiPedalMarkingDialog, parameters); } else if (ctor === 'SmoTie') { return createAndDisplayDialog(SuiTieAttributesDialog, parameters); } else if (ctor === 'SmoSlur') { return createAndDisplayDialog(SuiSlurAttributesDialog, parameters); } else if (ctor === 'SmoDynamicText') { return createAndDisplayDialog(SuiDynamicModifierDialog, parameters); } else if (ctor === 'SmoVolta') { return createAndDisplayDialog(SuiVoltaAttributeDialog, parameters); } else if (ctor === 'SmoTextGroup') { return createAndDisplayDialog(SuiTextBlockDialog, parameters); } else if (ctor === 'SmoStaffTextBracket') { return createAndDisplayDialog(SuiTextBracketDialog, parameters); } else { return createAndDisplayDialog(SuiLyricDialog, parameters); } } } export const initDialogTranslationElements = () => { DialogTranslations.push(suiDialogTranslate(SuiHairpinAttributesDialog.dialogElements, 'SuiHairpinAttributesDialog')); DialogTranslations.push(suiDialogTranslate(SuiPedalMarkingDialog.dialogElements, 'SuiPedalMarkingDialog')); DialogTranslations.push(suiDialogTranslate(SuiTieAttributesDialog.dialogElements, 'SuiTieAttributesDialog')); DialogTranslations.push(suiDialogTranslate(SuiSlurAttributesDialog.dialogElements, 'SuiSlurAttributesDialog')); DialogTranslations.push(suiDialogTranslate(SuiDynamicModifierDialog.dialogElements, 'SuiDynamicModifierDialog')); DialogTranslations.push(suiDialogTranslate(SuiVoltaAttributeDialog.dialogElements, 'SuiVoltaAttributeDialog')); DialogTranslations.push(suiDialogTranslate(SuiTextBlockDialog.dialogElements, 'SuiTextBlockDialog')); DialogTranslations.push(suiDialogTranslate(SuiTextBlockDialog.dialogElements, 'SuiTextBracketDialog')); DialogTranslations.push(suiDialogTranslate(SuiLyricDialog.dialogElements, 'SuiLyricDialog')); DialogTranslations.push(suiDialogTranslate(SuiInsertMeasures.dialogElements, 'SuiInsertMeasures')); DialogTranslations.push(suiDialogTranslate(SuiArpeggioDialog.dialogElements, 'SuiArpeggioDialog')); } export const initDialogConstructors = () => { SmoDynamicComponentCtor['SuiButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiButtonComponentParams) => new SuiButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiButtonComposite'] = (dialog: SuiDialogNotifier, params: SuiButtonCompositeParams) => new SuiButtonComposite(dialog, params); SmoDynamicComponentCtor['CheckboxDropdownComponent'] = (dialog: SuiDialogNotifier, params: CheckboxDropdownComponentParams) => new CheckboxDropdownComponent(dialog, params); SmoDynamicComponentCtor['SuiDragText'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiDragText(dialog, params); //SuiDropdownComponent, SuiDropdownComponentParams, SuiDropdownCompositeParams, SuiDropdownComposite SmoDynamicComponentCtor['SuiDropdownComponent'] = (dialog: SuiDialogNotifier, params: SuiDropdownComponentParams) => new SuiDropdownComponent(dialog, params); SmoDynamicComponentCtor['SuiDropdownComposite'] = (dialog: SuiDialogNotifier, params: SuiDropdownCompositeParams) => new SuiDropdownComposite(dialog, params); SmoDynamicComponentCtor['SuiFileDownloadComponent'] = (dialog: SuiDialogNotifier, params: SuiFileDownloadComponentParams) => new SuiFileDownloadComponent(dialog, params); SmoDynamicComponentCtor['SuiFontComponent'] = (dialog: SuiDialogNotifier, params: SuiFontComponentParams) => new SuiFontComponent(dialog, params); SmoDynamicComponentCtor['SuiLyricComponent'] = (dialog: SuiDialogNotifier, params: SuiNoteTextParams) => new SuiLyricComponent(dialog, params); SmoDynamicComponentCtor['SuiChordComponent'] = (dialog: SuiDialogNotifier, params: SuiNoteTextParams) => new SuiChordComponent(dialog, params); SmoDynamicComponentCtor['SuiPitchComponent'] = (dialog: SuiDialogNotifier, params: SuiPitchComponentParams) => new SuiPitchComponent(dialog, params); SmoDynamicComponentCtor['SuiPitchComposite'] = (dialog: SuiDialogNotifier, params: SuiPitchCompositeParams) => new SuiPitchComposite(dialog, params); SmoDynamicComponentCtor['SuiPitchArrayComponentTab'] = (dialog: SuiDialogNotifier, params: SuiPitchCompositeParams) => new SuiPitchArrayComponentTab(dialog, params); SmoDynamicComponentCtor['SuiRockerComponent'] = (dialog: SuiDialogNotifier, params: SuiRockerComponentParams) => new SuiRockerComponent(dialog, params); SmoDynamicComponentCtor['SuiRockerComposite'] = (dialog: SuiDialogNotifier, params: SuiRockerCompositeParams) => new SuiRockerComposite(dialog, params); SmoDynamicComponentCtor['StaffAddRemoveComponent'] = (dialog: SuiDialogNotifier, params: StaffAddRemoveComponentParams) => new StaffAddRemoveComponent(dialog, params); SmoDynamicComponentCtor['StaffCheckComponent'] = (dialog: SuiDialogNotifier, params: StaffCheckComponentParams) => new StaffCheckComponent(dialog, params); SmoDynamicComponentCtor['TextCheckComponent'] = (dialog: SuiDialogNotifier, params: TextCheckComponentParams) => new TextCheckComponent(dialog, params); SmoDynamicComponentCtor['SuiTextInPlace'] = (dialog: SuiDialogNotifier, params: SuiTextInPlaceParams) => new SuiTextInPlace(dialog, params); SmoDynamicComponentCtor['SuiTextBlockComponent'] = (dialog: SuiDialogNotifier, params: SuiTextBlockComponentParams) => new SuiTextBlockComponent(dialog, params); SmoDynamicComponentCtor['SuiTextInputComponent'] = (dialog: SuiDialogNotifier, params: SuiTextInputComponentParams) => new SuiTextInputComponent(dialog, params); SmoDynamicComponentCtor['SuiTextInputComposite'] = (dialog: SuiDialogNotifier, params: SuiTextInputCompositeParams) => new SuiTextInputComposite(dialog, params); SmoDynamicComponentCtor['SuiReadOnlyTextComponent'] = (dialog: SuiDialogNotifier, params: SuiTextInputComponentParams) => new SuiReadOnlyTextComponent(dialog, params); SmoDynamicComponentCtor['TieMappingComponent'] = (dialog: SuiDialogNotifier, params: TieMappingComponentParams) => new TieMappingComponent(dialog, params); SmoDynamicComponentCtor['SuiToggleComponent'] = (dialog: SuiDialogNotifier, params: SuiToggleComponentParams) => new SuiToggleComponent(dialog, params); SmoDynamicComponentCtor['SuiToggleComposite'] = (dialog: SuiDialogNotifier, params: SuiToggleCompositeParams) => new SuiToggleComposite(dialog, params); SmoDynamicComponentCtor['SuiTreeComponent'] = (dialog: SuiDialogNotifier, params: SuiTreeComponentParams) => new SuiTreeComponent(dialog, params); SmoDynamicComponentCtor['SuiArticulationButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiArticulationButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiDurationButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiDurationButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiEndBarButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiEndBarButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiStartBarButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiStartBarButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiRepeatSymbolButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiRepeatSymbolButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiGraceNoteButtonsComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiGraceNoteButtonsComponent(dialog, params); SmoDynamicComponentCtor['SuiMicrotoneButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiMicrotoneButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiNoteHeadButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiNoteHeadButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiStemButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiStemButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiOrnamentButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiOrnamentButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiTransposeButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiTransposeButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiIntervalButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiIntervalButtonComponent(dialog, params); SmoDynamicComponentCtor['SuiLetterButtonComponent'] = (dialog: SuiDialogNotifier, params: SuiBaseComponentParams) => new SuiLetterButtonComponent(dialog, params); }