char-slop/chordpad.vibed.software
git clone https://git.t4t.associates/char-slop/chordpad.vibed.software
3c7bc6e
main
1import type { JSX } from "@char/aftercare/jsx-runtime" ; 2import { importMidi } from "./actions.ts" ; 3import { Hints } from "./hints.tsx" ; 4import { ChordPanel } from "./chord-panel.tsx" ; 5import { installClipboard , installKeys } from "./keys.ts" ; 6import { Palette } from "./palette.tsx" ; 7import { Timeline } from "./timeline.tsx" ; 8import { Toolbar } from "./toolbar.tsx" ; 9 10export function App () :JSX . Element { 11installKeys (); 12installClipboard (); 13addEventListener ( "dragover" , e => { 14if ( e . dataTransfer ?. types . includes ( "Files" )) e . preventDefault (); 15}); 16addEventListener ( "drop" , e => { 17if ( ! e . dataTransfer ?. types . includes ( "Files" )) return ; 18// any dropped file would otherwise replace the page 19e . preventDefault (); 20for ( const file of e . dataTransfer . files ) { 21if ( / \.midi?$ / i . test ( file . name )) void importMidi ( file ); 22} 23}); 24return ( 25< div class = "app" > 26< Toolbar /> 27< Timeline / > 28< ChordPanel /> 29< Palette / > 30< Hints /> 31< / div> 32); 33}