Simple monitor for displaying MIDI status for digital pianos.
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

44 行
1.2 KiB

  1. import * as React from 'react'
  2. import { SettingsForm } from '../components/SettingsForm'
  3. import {Config, defaultConfig, NATURAL_KEY_WIDTHS, RANGES, SCALE_FACTORS} from '../../../common/config'
  4. import { useMidi } from '../hooks/midi'
  5. import { useForm } from '../hooks/form'
  6. interface SettingsPageProps {
  7. params: URLSearchParams
  8. }
  9. const SettingsPage: React.FC<SettingsPageProps> = ({ params }) => {
  10. const { handleAction } = useForm()
  11. const { midiAccess, lastStateChangeTimestamp } = useMidi()
  12. const defaultValues = Object.entries(defaultConfig).reduce(
  13. (theConfig, [key, value]) => ({
  14. ...theConfig,
  15. [key]: params.get(key) || value
  16. }),
  17. {} as Config
  18. )
  19. return (
  20. <main className="py-16 select-none">
  21. <div className="px-4 mx-auto max-w-screen-sm">
  22. <h1 className="text-5xl mb-8">
  23. Settings
  24. </h1>
  25. <SettingsForm
  26. lastStateChangeTimestamp={lastStateChangeTimestamp}
  27. midiAccess={midiAccess}
  28. defaultValues={defaultValues}
  29. ranges={RANGES}
  30. scaleFactors={SCALE_FACTORS}
  31. naturalKeyWidths={NATURAL_KEY_WIDTHS}
  32. onSubmit={handleAction}
  33. />
  34. </div>
  35. </main>
  36. )
  37. }
  38. export default SettingsPage