Skip to content

Commit

Permalink
Added the .js extension to import paths as required by modern TypeScr…
Browse files Browse the repository at this point in the history
…ipt.
  • Loading branch information
johnnesky committed Jul 12, 2024
1 parent 5123be4 commit e4ac66e
Show file tree
Hide file tree
Showing 43 changed files with 251 additions and 250 deletions.
6 changes: 3 additions & 3 deletions editor/BarScrollBar.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {SongDocument} from "./SongDocument";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict";
import {ColorConfig} from "./ColorConfig";
import {SongDocument} from "./SongDocument.js";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict.js";
import {ColorConfig} from "./ColorConfig.js";

export class BarScrollBar {
private readonly _editorWidth: number = 512;
Expand Down
12 changes: 6 additions & 6 deletions editor/BeatsPerBarPrompt.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Config} from "../synth/SynthConfig";
import {HTML} from "imperative-html/dist/esm/elements-strict";
import {SongDocument} from "./SongDocument";
import {Prompt} from "./Prompt";
import {ChangeBeatsPerBar} from "./changes";
import {ColorConfig} from "./ColorConfig";
import {Config} from "../synth/SynthConfig.js";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";
import {SongDocument} from "./SongDocument.js";
import {Prompt} from "./Prompt.js";
import {ChangeBeatsPerBar} from "./changes.js";
import {ColorConfig} from "./ColorConfig.js";

const {button, div, span, h2, input, br, select, option} = HTML;

Expand Down
8 changes: 4 additions & 4 deletions editor/ChannelRow.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Pattern} from "../synth/synth";
import {ColorConfig, ChannelColors} from "./ColorConfig";
import {SongDocument} from "./SongDocument";
import {HTML} from "imperative-html/dist/esm/elements-strict";
import {Pattern} from "../synth/synth.js";
import {ColorConfig, ChannelColors} from "./ColorConfig.js";
import {SongDocument} from "./SongDocument.js";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";

export class Box {
private readonly _text: Text = document.createTextNode("");
Expand Down
12 changes: 6 additions & 6 deletions editor/ChannelSettingsPrompt.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Config} from "../synth/SynthConfig";
import {HTML} from "imperative-html/dist/esm/elements-strict";
import {SongDocument} from "./SongDocument";
import {Prompt} from "./Prompt";
import {ChangeGroup} from "./Change";
import {ChangePatternsPerChannel, ChangeInstrumentsFlags, ChangeChannelCount} from "./changes";
import {Config} from "../synth/SynthConfig.js";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";
import {SongDocument} from "./SongDocument.js";
import {Prompt} from "./Prompt.js";
import {ChangeGroup} from "./Change.js";
import {ChangePatternsPerChannel, ChangeInstrumentsFlags, ChangeChannelCount} from "./changes.js";

const {button, div, label, br, h2, input} = HTML;

Expand Down
6 changes: 3 additions & 3 deletions editor/ColorConfig.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {BeepBoxOption, DictionaryArray, toNameMap} from "../synth/SynthConfig";
import {Song} from "../synth/synth";
import {HTML} from "imperative-html/dist/esm/elements-strict";
import {BeepBoxOption, DictionaryArray, toNameMap} from "../synth/SynthConfig.js";
import {Song} from "../synth/synth.js";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";

export interface ChannelColors extends BeepBoxOption {
readonly secondaryChannel: string;
Expand Down
2 changes: 1 addition & 1 deletion editor/EditorConfig.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {DictionaryArray, BeepBoxOption, InstrumentType, toNameMap} from "../synth/SynthConfig";
import {DictionaryArray, BeepBoxOption, InstrumentType, toNameMap} from "../synth/SynthConfig.js";

export interface PresetCategory extends BeepBoxOption {
readonly presets: DictionaryArray<Preset>;
Expand Down
10 changes: 5 additions & 5 deletions editor/EnvelopeEditor.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {InstrumentType, Config} from "../synth/SynthConfig";
import {Instrument} from "../synth/synth";
import {SongDocument} from "./SongDocument";
import {ChangeSetEnvelopeTarget, ChangeSetEnvelopeType, ChangeRemoveEnvelope} from "./changes";
import {HTML} from "imperative-html/dist/esm/elements-strict";
import {InstrumentType, Config} from "../synth/SynthConfig.js";
import {Instrument} from "../synth/synth.js";
import {SongDocument} from "./SongDocument.js";
import {ChangeSetEnvelopeTarget, ChangeSetEnvelopeType, ChangeRemoveEnvelope} from "./changes.js";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";

export class EnvelopeEditor {
public readonly container: HTMLElement = HTML.div({class: "envelopeEditor"});
Expand Down
18 changes: 9 additions & 9 deletions editor/ExportPrompt.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {InstrumentType, /*EnvelopeType,*/ Config, getArpeggioPitchIndex} from "../synth/SynthConfig";
import {Instrument, Pattern, Note, Song, Synth} from "../synth/synth";
import {ColorConfig} from "./ColorConfig";
import {Preset, EditorConfig} from "./EditorConfig";
import {SongDocument} from "./SongDocument";
import {Prompt} from "./Prompt";
import {HTML} from "imperative-html/dist/esm/elements-strict";
import {ArrayBufferWriter} from "./ArrayBufferWriter";
import {MidiChunkType, MidiFileFormat, MidiControlEventMessage, MidiEventType, MidiMetaEventMessage, MidiRegisteredParameterNumberMSB, MidiRegisteredParameterNumberLSB, volumeMultToMidiVolume, volumeMultToMidiExpression, defaultMidiPitchBend, defaultMidiExpression} from "./Midi";
import {InstrumentType, /*EnvelopeType,*/ Config, getArpeggioPitchIndex} from "../synth/SynthConfig.js";
import {Instrument, Pattern, Note, Song, Synth} from "../synth/synth.js";
import {ColorConfig} from "./ColorConfig.js";
import {Preset, EditorConfig} from "./EditorConfig.js";
import {SongDocument} from "./SongDocument.js";
import {Prompt} from "./Prompt.js";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";
import {ArrayBufferWriter} from "./ArrayBufferWriter.js";
import {MidiChunkType, MidiFileFormat, MidiControlEventMessage, MidiEventType, MidiMetaEventMessage, MidiRegisteredParameterNumberMSB, MidiRegisteredParameterNumberLSB, volumeMultToMidiVolume, volumeMultToMidiExpression, defaultMidiPitchBend, defaultMidiExpression} from "./Midi.js";

const {button, div, h2, input, select, option} = HTML;

Expand Down
14 changes: 7 additions & 7 deletions editor/FadeInOutEditor.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Config} from "../synth/SynthConfig";
import {clamp, Instrument, Synth} from "../synth/synth";
import {SongDocument} from "./SongDocument";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict";
import {ColorConfig} from "./ColorConfig";
import {ChangeSequence, UndoableChange} from "./Change";
import {ChangeFadeInOut} from "./changes";
import {Config} from "../synth/SynthConfig.js";
import {clamp, Instrument, Synth} from "../synth/synth.js";
import {SongDocument} from "./SongDocument.js";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict.js";
import {ColorConfig} from "./ColorConfig.js";
import {ChangeSequence, UndoableChange} from "./Change.js";
import {ChangeFadeInOut} from "./changes.js";

export class FadeInOutEditor {
private readonly _editorWidth: number = 120;
Expand Down
18 changes: 9 additions & 9 deletions editor/FilterEditor.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {FilterCoefficients, FrequencyResponse} from "../synth/filtering";
import {FilterType, Config} from "../synth/SynthConfig";
import {FilterSettings, FilterControlPoint, Instrument} from "../synth/synth";
import {SongDocument} from "./SongDocument";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict";
import {ColorConfig} from "./ColorConfig";
import {ChangeSequence, UndoableChange} from "./Change";
import {ChangeFilterAddPoint, ChangeFilterMovePoint} from "./changes";
import {prettyNumber} from "./EditorConfig";
import {FilterCoefficients, FrequencyResponse} from "../synth/filtering.js";
import {FilterType, Config} from "../synth/SynthConfig.js";
import {FilterSettings, FilterControlPoint, Instrument} from "../synth/synth.js";
import {SongDocument} from "./SongDocument.js";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict.js";
import {ColorConfig} from "./ColorConfig.js";
import {ChangeSequence, UndoableChange} from "./Change.js";
import {ChangeFilterAddPoint, ChangeFilterMovePoint} from "./changes.js";
import {prettyNumber} from "./EditorConfig.js";

export class FilterEditor {
private readonly _editorWidth: number = 120;
Expand Down
14 changes: 7 additions & 7 deletions editor/HarmonicsEditor.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Config} from "../synth/SynthConfig";
import {HarmonicsWave, Instrument} from "../synth/synth";
import {SongDocument} from "./SongDocument";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict";
import {ColorConfig} from "./ColorConfig";
import {ChangeHarmonics} from "./changes";
import {prettyNumber} from "./EditorConfig";
import {Config} from "../synth/SynthConfig.js";
import {HarmonicsWave, Instrument} from "../synth/synth.js";
import {SongDocument} from "./SongDocument.js";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict.js";
import {ColorConfig} from "./ColorConfig.js";
import {ChangeHarmonics} from "./changes.js";
import {prettyNumber} from "./EditorConfig.js";

export class HarmonicsEditor {
private readonly _editorWidth: number = 120;
Expand Down
20 changes: 10 additions & 10 deletions editor/ImportPrompt.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {InstrumentType, Config} from "../synth/SynthConfig";
import {NotePin, Note, makeNotePin, Pattern, Instrument, Channel, Song, Synth} from "../synth/synth";
import {Preset, EditorConfig} from "./EditorConfig";
import {SongDocument} from "./SongDocument";
import {Prompt} from "./Prompt";
import {HTML} from "imperative-html/dist/esm/elements-strict";
import {ChangeGroup} from "./Change";
import {removeDuplicatePatterns, ChangeSong, ChangeReplacePatterns} from "./changes";
import {AnalogousDrum, analogousDrumMap, MidiChunkType, MidiFileFormat, MidiEventType, MidiControlEventMessage, MidiMetaEventMessage, MidiRegisteredParameterNumberMSB, MidiRegisteredParameterNumberLSB, midiVolumeToVolumeMult, midiExpressionToVolumeMult} from "./Midi";
import {ArrayBufferReader} from "./ArrayBufferReader";
import {InstrumentType, Config} from "../synth/SynthConfig.js";
import {NotePin, Note, makeNotePin, Pattern, Instrument, Channel, Song, Synth} from "../synth/synth.js";
import {Preset, EditorConfig} from "./EditorConfig.js";
import {SongDocument} from "./SongDocument.js";
import {Prompt} from "./Prompt.js";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";
import {ChangeGroup} from "./Change.js";
import {removeDuplicatePatterns, ChangeSong, ChangeReplacePatterns} from "./changes.js";
import {AnalogousDrum, analogousDrumMap, MidiChunkType, MidiFileFormat, MidiEventType, MidiControlEventMessage, MidiMetaEventMessage, MidiRegisteredParameterNumberMSB, MidiRegisteredParameterNumberLSB, midiVolumeToVolumeMult, midiExpressionToVolumeMult} from "./Midi.js";
import {ArrayBufferReader} from "./ArrayBufferReader.js";

const {button, p, div, h2, input} = HTML;

Expand Down
4 changes: 2 additions & 2 deletions editor/KeyboardLayout.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Config} from "../synth/SynthConfig";
import {SongDocument} from "./SongDocument";
import {Config} from "../synth/SynthConfig.js";
import {SongDocument} from "./SongDocument.js";

export class KeyboardLayout {
private static _pianoAtC: ReadonlyArray<ReadonlyArray<number | null>> = [
Expand Down
4 changes: 2 additions & 2 deletions editor/Layout.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {HTML} from "imperative-html/dist/esm/elements-strict";
import {ColorConfig} from "./ColorConfig";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";
import {ColorConfig} from "./ColorConfig.js";

export class Layout {
private static readonly _layoutMap: {[K: string]: string} = {
Expand Down
8 changes: 4 additions & 4 deletions editor/LayoutPrompt.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {SongDocument} from "./SongDocument";
import {Layout} from "./Layout";
import {Prompt} from "./Prompt";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict";
import {SongDocument} from "./SongDocument.js";
import {Layout} from "./Layout.js";
import {Prompt} from "./Prompt.js";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict.js";

const {button, label, div, form, h2, input} = HTML;

Expand Down
8 changes: 4 additions & 4 deletions editor/LoopEditor.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {SongDocument} from "./SongDocument";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict";
import {ChangeLoop, ChangeChannelBar} from "./changes";
import {ColorConfig} from "./ColorConfig";
import {SongDocument} from "./SongDocument.js";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict.js";
import {ChangeLoop, ChangeChannelBar} from "./changes.js";
import {ColorConfig} from "./ColorConfig.js";

interface Cursor {
startBar: number;
Expand Down
6 changes: 3 additions & 3 deletions editor/MidiInput.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Config} from "../synth/SynthConfig";
import {SongDocument} from "./SongDocument";
import {AnalogousDrum, analogousDrumMap, MidiEventType} from "./Midi";
import {Config} from "../synth/SynthConfig.js";
import {SongDocument} from "./SongDocument.js";
import {AnalogousDrum, analogousDrumMap, MidiEventType} from "./Midi.js";

declare global {
interface Navigator {
Expand Down
12 changes: 6 additions & 6 deletions editor/MoveNotesSidewaysPrompt.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Config} from "../synth/SynthConfig";
import {HTML} from "imperative-html/dist/esm/elements-strict";
import {SongDocument} from "./SongDocument";
import {Prompt} from "./Prompt";
import {ChangeMoveNotesSideways} from "./changes";
import {ColorConfig} from "./ColorConfig";
import {Config} from "../synth/SynthConfig.js";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";
import {SongDocument} from "./SongDocument.js";
import {Prompt} from "./Prompt.js";
import {ChangeMoveNotesSideways} from "./changes.js";
import {ColorConfig} from "./ColorConfig.js";

const {button, div, span, h2, input, br, select, option} = HTML;

Expand Down
8 changes: 4 additions & 4 deletions editor/MuteEditor.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {SongDocument} from "./SongDocument";
import {HTML} from "imperative-html/dist/esm/elements-strict";
import {ColorConfig} from "./ColorConfig";
import {ChannelRow} from "./ChannelRow";
import {SongDocument} from "./SongDocument.js";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";
import {ColorConfig} from "./ColorConfig.js";
import {ChannelRow} from "./ChannelRow.js";

export class MuteEditor {
private _cornerFiller: HTMLDivElement = HTML.div({style: `background: ${ColorConfig.editorBackground}; position: sticky; bottom: 0; left: 0; width: 32px; height: 30px;`});
Expand Down
10 changes: 5 additions & 5 deletions editor/OctaveScrollBar.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Config} from "../synth/SynthConfig";
import {SongDocument} from "./SongDocument";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict";
import {ChangeOctave} from "./changes";
import {ColorConfig} from "./ColorConfig";
import {Config} from "../synth/SynthConfig.js";
import {SongDocument} from "./SongDocument.js";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict.js";
import {ChangeOctave} from "./changes.js";
import {ColorConfig} from "./ColorConfig.js";

export class OctaveScrollBar {
private readonly _editorWidth: number = 20;
Expand Down
16 changes: 8 additions & 8 deletions editor/PatternEditor.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Chord, Transition, Config} from "../synth/SynthConfig";
import {NotePin, Note, makeNotePin, Pattern, Instrument} from "../synth/synth";
import {ColorConfig} from "./ColorConfig";
import {SongDocument} from "./SongDocument";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict";
import {ChangeSequence, UndoableChange} from "./Change";
import {ChangeChannelBar, ChangeDragSelectedNotes, ChangeEnsurePatternExists, ChangeNoteTruncate, ChangeNoteAdded, ChangePatternSelection, ChangePinTime, ChangeSizeBend, ChangePitchBend, ChangePitchAdded} from "./changes";
import {prettyNumber} from "./EditorConfig";
import {Chord, Transition, Config} from "../synth/SynthConfig.js";
import {NotePin, Note, makeNotePin, Pattern, Instrument} from "../synth/synth.js";
import {ColorConfig} from "./ColorConfig.js";
import {SongDocument} from "./SongDocument.js";
import {HTML, SVG} from "imperative-html/dist/esm/elements-strict.js";
import {ChangeSequence, UndoableChange} from "./Change.js";
import {ChangeChannelBar, ChangeDragSelectedNotes, ChangeEnsurePatternExists, ChangeNoteTruncate, ChangeNoteAdded, ChangePatternSelection, ChangePinTime, ChangeSizeBend, ChangePitchBend, ChangePitchAdded} from "./changes.js";
import {prettyNumber} from "./EditorConfig.js";

function makeEmptyReplacementElement<T extends Node>(node: T): T {
const clone: T = <T> node.cloneNode(false);
Expand Down
8 changes: 4 additions & 4 deletions editor/Piano.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Config} from "../synth/SynthConfig";
import {SongDocument} from "./SongDocument";
import {HTML} from "imperative-html/dist/esm/elements-strict";
import {ColorConfig} from "./ColorConfig";
import {Config} from "../synth/SynthConfig.js";
import {SongDocument} from "./SongDocument.js";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";
import {ColorConfig} from "./ColorConfig.js";

export class Piano {
private readonly _pianoContainer: HTMLDivElement = HTML.div({style: "width: 100%; height: 100%; display: flex; flex-direction: column-reverse; align-items: stretch;"});
Expand Down
2 changes: 1 addition & 1 deletion editor/Preferences.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Scale, Config} from "../synth/SynthConfig";
import {Scale, Config} from "../synth/SynthConfig.js";

export class Preferences {
public static readonly defaultVisibleOctaves: number = 3;
Expand Down
16 changes: 8 additions & 8 deletions editor/RecordingSetupPrompt.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
// Copyright (c) John Nesky and contributing authors, distributed under the MIT license, see accompanying the LICENSE.md file.

import {Config} from "../synth/SynthConfig";
import {EditorConfig} from "./EditorConfig";
import {SongDocument} from "./SongDocument";
import {Prompt} from "./Prompt";
import {HTML} from "imperative-html/dist/esm/elements-strict";
import {ColorConfig} from "./ColorConfig";
import {KeyboardLayout} from "./KeyboardLayout";
import {Piano} from "./Piano";
import {Config} from "../synth/SynthConfig.js";
import {EditorConfig} from "./EditorConfig.js";
import {SongDocument} from "./SongDocument.js";
import {Prompt} from "./Prompt.js";
import {HTML} from "imperative-html/dist/esm/elements-strict.js";
import {ColorConfig} from "./ColorConfig.js";
import {KeyboardLayout} from "./KeyboardLayout.js";
import {Piano} from "./Piano.js";

const {button, label, div, p, a, h2, input, select, option} = HTML;

Expand Down
Loading

0 comments on commit e4ac66e

Please sign in to comment.