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

48 行
1.2 KiB

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