zds-pickers 4.1.1 → 4.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/index.cjs.js.map +1 -1
  2. package/dist/index.es.js.map +1 -1
  3. package/dist/other/SoundFontProvider.js +4 -4
  4. package/dist/types/other/SoundFontProvider.d.ts +1 -1
  5. package/lib/soundfonts/acoustic_grand_piano-mp3.js +107 -0
  6. package/package.json +5 -1
  7. package/.editorconfig +0 -19
  8. package/.github/workflows/codeql-analysis.yml +0 -67
  9. package/.nvmrc +0 -1
  10. package/.prettierignore +0 -0
  11. package/.prettierrc +0 -13
  12. package/.storybook/main.ts +0 -42
  13. package/.storybook/manager.ts +0 -12
  14. package/.storybook/preview.tsx +0 -26
  15. package/.vscode/extensions.json +0 -32
  16. package/.vscode/javascript.code-snippets +0 -229
  17. package/.vscode/settings.json +0 -358
  18. package/biome.jsonc +0 -158
  19. package/lib/@types/nebiru-react-rotary-knob.d.ts +0 -20
  20. package/lib/@types/react-svgmt.d.ts +0 -74
  21. package/lib/@types/zds-mappings.d.ts +0 -55
  22. package/lib/@types/zds-react-piano.d.ts +0 -17
  23. package/lib/hooks/useComponentSize.ts +0 -52
  24. package/lib/hooks/useStateWithDynamicDefault.ts +0 -13
  25. package/lib/index.ts +0 -52
  26. package/lib/midi/ccValues.ts +0 -139
  27. package/lib/midi/export.ts +0 -88
  28. package/lib/other/DefaultTooltip.ts +0 -14
  29. package/lib/other/OctavePlayer.tsx +0 -139
  30. package/lib/other/SoundFontProvider.tsx +0 -214
  31. package/lib/other/SvgText.tsx +0 -221
  32. package/lib/pickers/CCPicker.tsx +0 -28
  33. package/lib/pickers/ChannelMappingPicker.tsx +0 -150
  34. package/lib/pickers/ChannelPicker.tsx +0 -84
  35. package/lib/pickers/KeyPicker.tsx +0 -55
  36. package/lib/pickers/Knob.tsx +0 -93
  37. package/lib/pickers/KnobPicker.tsx +0 -93
  38. package/lib/pickers/LatchPicker.tsx +0 -33
  39. package/lib/pickers/MappingPicker.tsx +0 -68
  40. package/lib/pickers/NotePicker.tsx +0 -95
  41. package/lib/pickers/PianoPicker.tsx +0 -81
  42. package/lib/pickers/PolarityPicker.tsx +0 -39
  43. package/lib/pickers/ResponseCurve.tsx +0 -251
  44. package/lib/pickers/ResponseCurvePicker.tsx +0 -75
  45. package/lib/pickers/Select.tsx +0 -268
  46. package/lib/pickers/StatusPicker.tsx +0 -30
  47. package/lib/pickers/ValuePicker.tsx +0 -67
  48. package/lib/pickers/knobSkin10.tsx +0 -112
  49. package/lib/rotaryKnob/InternalInput.tsx +0 -43
  50. package/lib/rotaryKnob/Types.ts +0 -6
  51. package/lib/rotaryKnob/helpers/DrawCircle.tsx +0 -41
  52. package/lib/rotaryKnob/helpers/DrawLine.tsx +0 -32
  53. package/lib/rotaryKnob/helpers/HelpersOverlay.tsx +0 -43
  54. package/lib/rotaryKnob/helpers/KnobVisualHelpers.tsx +0 -138
  55. package/lib/rotaryKnob/index.tsx +0 -417
  56. package/lib/rotaryKnob/knobdefaultskin.ts +0 -69
  57. package/lib/rotaryKnob/utils.ts +0 -112
  58. package/lib/utils.ts +0 -41
  59. package/stories/assets/sampleStyles.css +0 -365
  60. package/stories/assets/utils.js +0 -7
  61. package/stories/picker.stories.tsx +0 -432
  62. package/tsconfig.json +0 -35
  63. package/vite.config.ts +0 -41
  64. /package/{lib/temp → dist/soundfonts}/acoustic_grand_piano-mp3.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../lib/utils.ts","../lib/midi/ccValues.ts","../lib/midi/export.ts","../lib/other/DefaultTooltip.ts","../node_modules/@tonaljs/pitch/dist/index.mjs","../node_modules/@tonaljs/pitch-interval/dist/index.mjs","../node_modules/@tonaljs/pitch-note/dist/index.mjs","../node_modules/@tonaljs/pitch-distance/dist/index.mjs","../node_modules/@tonaljs/collection/dist/index.mjs","../node_modules/@tonaljs/pcset/dist/index.mjs","../node_modules/@tonaljs/chord-type/dist/index.mjs","../node_modules/@tonaljs/scale-type/dist/index.mjs","../node_modules/@tonaljs/duration-value/dist/index.mjs","../node_modules/@tonaljs/midi/dist/index.mjs","../node_modules/@tonaljs/note/dist/index.mjs","../node_modules/@tonaljs/mode/dist/index.mjs","../node_modules/just-range/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/lodash.difference/index.js","../node_modules/zds-react-piano/dist/react-piano.esm.js","../node_modules/audio-loader/lib/base64.js","../node_modules/audio-loader/lib/fetch.js","../node_modules/audio-loader/lib/index.js","../node_modules/adsr/index.js","../node_modules/sample-player/lib/player.js","../node_modules/sample-player/lib/events.js","../node_modules/sample-player/node_modules/note-parser/index.js","../node_modules/sample-player/lib/notes.js","../node_modules/sample-player/lib/scheduler.js","../node_modules/midimessage/dist/index.min.js","../node_modules/sample-player/lib/midi.js","../node_modules/sample-player/lib/index.js","../node_modules/note-parser/index.js","../node_modules/soundfont-player/lib/legacy.js","../node_modules/soundfont-player/lib/index.js","../lib/other/SoundFontProvider.tsx","../lib/other/OctavePlayer.tsx","../lib/other/SvgText.tsx","../lib/pickers/Select.tsx","../lib/pickers/CCPicker.tsx","../lib/pickers/ChannelMappingPicker.tsx","../lib/pickers/ChannelPicker.tsx","../lib/pickers/KeyPicker.tsx","../lib/hooks/useStateWithDynamicDefault.ts","../node_modules/react-svgmt/dist/index.js","../node_modules/react-svgmt/index.js","../lib/rotaryKnob/InternalInput.tsx","../lib/rotaryKnob/utils.ts","../lib/rotaryKnob/helpers/DrawCircle.tsx","../lib/rotaryKnob/helpers/DrawLine.tsx","../lib/rotaryKnob/helpers/HelpersOverlay.tsx","../lib/rotaryKnob/helpers/KnobVisualHelpers.tsx","../lib/rotaryKnob/knobdefaultskin.ts","../lib/rotaryKnob/index.tsx","../lib/pickers/knobSkin10.tsx","../lib/pickers/Knob.tsx","../lib/pickers/KnobPicker.tsx","../lib/pickers/LatchPicker.tsx","../lib/pickers/MappingPicker.tsx","../lib/pickers/NotePicker.tsx","../lib/pickers/PianoPicker.tsx","../lib/pickers/PolarityPicker.tsx","../lib/hooks/useComponentSize.ts","../lib/pickers/ResponseCurve.tsx","../lib/pickers/ResponseCurvePicker.tsx","../lib/pickers/StatusPicker.tsx","../lib/pickers/ValuePicker.tsx"],"sourcesContent":["// this just creates and fills a zero-indexed array array; 0, 1, 2, 3, etc\nconst arraySequence = (numberOfElements: number) =>\n Array.from(new Array(numberOfElements).keys())\n\nconst assertRange = (value: number | string, max = 127, min = 0) => {\n let result: number =\n typeof value === 'string' ? Number.parseInt(value, 10) : value\n\n if (Number.isNaN(result) || result === null) {\n result = min\n }\n return result >= min ? (result <= max ? result : max) : min\n}\n\nconst findObj =\n <T>(key: keyof T, value: T[keyof T]) =>\n (arr: T[]) =>\n arr?.find(item => item?.[key] === value)\n\nconst omit =\n <T extends Record<string, unknown>>(...keys: string[]) =>\n (obj: T) =>\n Object.entries(obj)\n .filter(([key]) => !keys.flat().map(String).includes(key))\n .reduce((_obj, [key, val]) => Object.assign(_obj, { [key]: val }), {})\n\nconst pick =\n <T extends object>(...keys: (keyof T)[]) =>\n (obj: T) =>\n Object.entries(obj)\n .filter(([key]) => keys.flat().map(String).includes(key))\n .reduce((_obj, [key, val]) => Object.assign(_obj, { [key]: val }), {})\n\nconst set =\n <T>(key: keyof T, value: T[keyof T]) =>\n (obj: T) => ({\n ...obj,\n [key]: value,\n })\n\nexport { arraySequence, assertRange, findObj, omit, pick, set }\n","import type { Option } from '../pickers/Select'\n\nconst changeControllerOptions = [\n 'Bank Select',\n 'Modulation Wheel',\n 'Breath Controller',\n '',\n 'Foot Control',\n 'Portamento Time',\n 'Data Entry Slider',\n 'Volume',\n 'Balance',\n '',\n 'Pan',\n 'Expression',\n 'Effect Control 1',\n 'Effect Control 2',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'Controller 0',\n 'Controller 1',\n 'Controller 2',\n 'Controller 3',\n 'Controller 4',\n 'Controller 5',\n 'Controller 6',\n 'Controller 7',\n 'Controller 8',\n 'Controller 9',\n 'Controller 10',\n 'Controller 11',\n 'Controller 12',\n 'Controller 13',\n 'Controller 14',\n 'Controller 15',\n 'Controller 16',\n 'Controller 17',\n 'Controller 18',\n 'Controller 19',\n 'Controller 20',\n 'Controller 21',\n 'Controller 22',\n 'Controller 23',\n 'Controller 24',\n 'Controller 25',\n 'Controller 26',\n 'Controller 27',\n 'Controller 28',\n 'Controller 29',\n 'Controller 30',\n 'Controller 31',\n 'Sustain',\n 'Portamento',\n 'Sostenuto',\n 'Soft Pedal',\n 'Legato Pedal',\n 'Sustain 2',\n 'Sound Variation',\n 'Resonance/Timbre',\n 'Sound Release Time',\n 'Sound Attack Time',\n 'Frequency Cutoff',\n 'Sound Control 6',\n 'Sound Control 7',\n 'Sound Control 8',\n 'Sound Control 9',\n 'Sound Control 10',\n 'Decay or General 1',\n 'Hi-Pass or General 2',\n 'General 3',\n 'General 4',\n 'Portamento Amount',\n '',\n '',\n '',\n '',\n '',\n '',\n 'Reverb Level',\n 'Tremolo Depth',\n 'Chorus Level',\n 'Detune',\n 'Phaser Depth',\n 'Data Entry +1',\n 'Data Entry -1',\n 'Non-registered LSB',\n 'Non-registered MSB',\n 'Registered msb',\n 'Registered lsb',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'Shift 1',\n 'Shift 2',\n 'Shift 3',\n 'Shift 4',\n 'Shift 5',\n 'Shift 6',\n '',\n '',\n '',\n '',\n 'All Sound Off',\n 'All Controllers Off',\n 'Local Mode',\n 'All Notes Off',\n 'Omni Mode Off',\n 'Omni Mode On',\n 'Mono Mode On',\n 'Poly Mode',\n].map(\n (label, value): Option<number> => ({\n label: String(label).length ? `${value} - ${label}` : String(value),\n value,\n }),\n)\n\nexport { changeControllerOptions }\n","import type { Option, noSelection } from 'lib/pickers/Select'\n\nconst Statuses = {\n noteOff: 8, // 1000\n noteOn: 9, // 1001\n aftertouch: 10, // 1010\n controlChange: 11, // 1011\n programChange: 12, // 1100\n channelPressure: 13, // 1101\n pitchWheel: 14, // 1110\n} as const\n\n// Define type as union of literal values\ntype Status = 8 | 9 | 10 | 11 | 12 | 13 | 14\n\nconst MASK_CHANNEL = 15 // 00001111\nconst MASK_STATUS = 240 // 01110000\n\nconst statusOptions: Option<Status>[] = [\n { value: Statuses.noteOn, label: 'Note On' },\n { value: Statuses.noteOff, label: 'Note Stack' },\n { value: Statuses.controlChange, label: 'Control Change' },\n { value: Statuses.programChange, label: 'Program Change' },\n { value: Statuses.aftertouch, label: 'Aftertouch' },\n { value: Statuses.channelPressure, label: 'Channel Pressure' },\n { value: Statuses.pitchWheel, label: 'Pitch Wheel' },\n]\n\nconst getStatusLabel = (val: Status) =>\n statusOptions.filter(({ value }) => value === val)[0]?.label || '???'\n\nconst combineStatusWithChannel = (channel: number, status: Status) =>\n channel | (status << 4)\n\nconst extractStatusAndChannel = (\n status: number,\n): {\n status: Status\n channel: number\n} => ({\n status: (((status & MASK_STATUS) >> 4) | 8) as Status,\n channel: status & MASK_CHANNEL,\n})\n\nconst RESPONSE_CURVE_0 = 0\nconst RESPONSE_CURVE_1 = 1\nconst RESPONSE_CURVE_2 = 2\nconst RESPONSE_CURVE_3 = 3\nconst RESPONSE_CURVE_4 = 4\nconst RESPONSE_CURVE_5 = 5\nconst RESPONSE_CURVE_6 = 6\nconst RESPONSE_CURVE_7 = 7\n\nconst ResponseCurveLabels = {\n [RESPONSE_CURVE_0]: 'Linear, no change',\n [RESPONSE_CURVE_1]: 'A little less sensitive',\n [RESPONSE_CURVE_2]: 'Even less sensitive',\n [RESPONSE_CURVE_3]: 'Least sensitive',\n [RESPONSE_CURVE_4]: 'A little sensitive',\n [RESPONSE_CURVE_5]: 'Moderately sensitive',\n [RESPONSE_CURVE_6]: 'Most sensitive',\n [RESPONSE_CURVE_7]: 'Always maxed out',\n} as const\n\n// type Curve = (typeof Items)[keyof typeof Items]\n\ntype Curve = keyof typeof ResponseCurveLabels | typeof noSelection\n\nconst responseCurves: Option<Curve>[] = Object.keys(ResponseCurveLabels)\n .map(Number)\n .map(key => ({\n value: key as Curve,\n label: ResponseCurveLabels[key as keyof typeof ResponseCurveLabels],\n }))\n\nexport {\n combineStatusWithChannel,\n extractStatusAndChannel,\n getStatusLabel,\n MASK_CHANNEL,\n MASK_STATUS,\n responseCurves,\n ResponseCurveLabels,\n Statuses,\n statusOptions,\n}\n\nexport type { Curve, Status }\n","import { Fragment, createElement } from 'react'\n\ntype TooltipProps = {\n children?: React.ReactNode\n placement?: 'left' | 'right' | 'top' | 'bottom'\n title: React.ReactNode\n}\n\nconst DefaultTooltip = ({ children }: React.PropsWithoutRef<TooltipProps>) =>\n createElement(Fragment, null, children)\n\nexport { DefaultTooltip }\n\nexport type { TooltipProps }\n","// index.ts\nfunction isNamedPitch(src) {\n return src !== null && typeof src === \"object\" && \"name\" in src && typeof src.name === \"string\" ? true : false;\n}\nvar SIZES = [0, 2, 4, 5, 7, 9, 11];\nvar chroma = ({ step, alt }) => (SIZES[step] + alt + 120) % 12;\nvar height = ({ step, alt, oct, dir = 1 }) => dir * (SIZES[step] + alt + 12 * (oct === void 0 ? -100 : oct));\nvar midi = (pitch2) => {\n const h = height(pitch2);\n return pitch2.oct !== void 0 && h >= -12 && h <= 115 ? h + 12 : null;\n};\nfunction isPitch(pitch2) {\n return pitch2 !== null && typeof pitch2 === \"object\" && \"step\" in pitch2 && typeof pitch2.step === \"number\" && \"alt\" in pitch2 && typeof pitch2.alt === \"number\" && !isNaN(pitch2.step) && !isNaN(pitch2.alt) ? true : false;\n}\nvar FIFTHS = [0, 2, 4, -1, 1, 3, 5];\nvar STEPS_TO_OCTS = FIFTHS.map(\n (fifths) => Math.floor(fifths * 7 / 12)\n);\nfunction coordinates(pitch2) {\n const { step, alt, oct, dir = 1 } = pitch2;\n const f = FIFTHS[step] + 7 * alt;\n if (oct === void 0) {\n return [dir * f];\n }\n const o = oct - STEPS_TO_OCTS[step] - 4 * alt;\n return [dir * f, dir * o];\n}\nvar FIFTHS_TO_STEPS = [3, 0, 4, 1, 5, 2, 6];\nfunction pitch(coord) {\n const [f, o, dir] = coord;\n const step = FIFTHS_TO_STEPS[unaltered(f)];\n const alt = Math.floor((f + 1) / 7);\n if (o === void 0) {\n return { step, alt, dir };\n }\n const oct = o + 4 * alt + STEPS_TO_OCTS[step];\n return { step, alt, oct, dir };\n}\nfunction unaltered(f) {\n const i = (f + 1) % 7;\n return i < 0 ? 7 + i : i;\n}\nexport {\n chroma,\n coordinates,\n height,\n isNamedPitch,\n isPitch,\n midi,\n pitch\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport {\n coordinates,\n isNamedPitch,\n isPitch,\n pitch\n} from \"@tonaljs/pitch\";\nvar fillStr = (s, n) => Array(Math.abs(n) + 1).join(s);\nvar NoInterval = Object.freeze({\n empty: true,\n name: \"\",\n num: NaN,\n q: \"\",\n type: \"\",\n step: NaN,\n alt: NaN,\n dir: NaN,\n simple: NaN,\n semitones: NaN,\n chroma: NaN,\n coord: [],\n oct: NaN\n});\nvar INTERVAL_TONAL_REGEX = \"([-+]?\\\\d+)(d{1,4}|m|M|P|A{1,4})\";\nvar INTERVAL_SHORTHAND_REGEX = \"(AA|A|P|M|m|d|dd)([-+]?\\\\d+)\";\nvar REGEX = new RegExp(\n \"^\" + INTERVAL_TONAL_REGEX + \"|\" + INTERVAL_SHORTHAND_REGEX + \"$\"\n);\nfunction tokenizeInterval(str) {\n const m = REGEX.exec(`${str}`);\n if (m === null) {\n return [\"\", \"\"];\n }\n return m[1] ? [m[1], m[2]] : [m[4], m[3]];\n}\nvar cache = {};\nfunction interval(src) {\n return typeof src === \"string\" ? cache[src] || (cache[src] = parse(src)) : isPitch(src) ? interval(pitchName(src)) : isNamedPitch(src) ? interval(src.name) : NoInterval;\n}\nvar SIZES = [0, 2, 4, 5, 7, 9, 11];\nvar TYPES = \"PMMPPMM\";\nfunction parse(str) {\n const tokens = tokenizeInterval(str);\n if (tokens[0] === \"\") {\n return NoInterval;\n }\n const num = +tokens[0];\n const q = tokens[1];\n const step = (Math.abs(num) - 1) % 7;\n const t = TYPES[step];\n if (t === \"M\" && q === \"P\") {\n return NoInterval;\n }\n const type = t === \"M\" ? \"majorable\" : \"perfectable\";\n const name = \"\" + num + q;\n const dir = num < 0 ? -1 : 1;\n const simple = num === 8 || num === -8 ? num : dir * (step + 1);\n const alt = qToAlt(type, q);\n const oct = Math.floor((Math.abs(num) - 1) / 7);\n const semitones = dir * (SIZES[step] + alt + 12 * oct);\n const chroma = (dir * (SIZES[step] + alt) % 12 + 12) % 12;\n const coord = coordinates({ step, alt, oct, dir });\n return {\n empty: false,\n name,\n num,\n q,\n step,\n alt,\n dir,\n type,\n simple,\n semitones,\n chroma,\n coord,\n oct\n };\n}\nfunction coordToInterval(coord, forceDescending) {\n const [f, o = 0] = coord;\n const isDescending = f * 7 + o * 12 < 0;\n const ivl = forceDescending || isDescending ? [-f, -o, -1] : [f, o, 1];\n return interval(pitch(ivl));\n}\nfunction qToAlt(type, q) {\n return q === \"M\" && type === \"majorable\" || q === \"P\" && type === \"perfectable\" ? 0 : q === \"m\" && type === \"majorable\" ? -1 : /^A+$/.test(q) ? q.length : /^d+$/.test(q) ? -1 * (type === \"perfectable\" ? q.length : q.length + 1) : 0;\n}\nfunction pitchName(props) {\n const { step, alt, oct = 0, dir } = props;\n if (!dir) {\n return \"\";\n }\n const calcNum = step + 1 + 7 * oct;\n const num = calcNum === 0 ? step + 1 : calcNum;\n const d = dir < 0 ? \"-\" : \"\";\n const type = TYPES[step] === \"M\" ? \"majorable\" : \"perfectable\";\n const name = d + num + altToQ(type, alt);\n return name;\n}\nfunction altToQ(type, alt) {\n if (alt === 0) {\n return type === \"majorable\" ? \"M\" : \"P\";\n } else if (alt === -1 && type === \"majorable\") {\n return \"m\";\n } else if (alt > 0) {\n return fillStr(\"A\", alt);\n } else {\n return fillStr(\"d\", type === \"perfectable\" ? alt : alt + 1);\n }\n}\nexport {\n coordToInterval,\n interval,\n tokenizeInterval\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport {\n coordinates,\n isNamedPitch,\n isPitch,\n pitch\n} from \"@tonaljs/pitch\";\nvar fillStr = (s, n) => Array(Math.abs(n) + 1).join(s);\nvar NoNote = Object.freeze({\n empty: true,\n name: \"\",\n letter: \"\",\n acc: \"\",\n pc: \"\",\n step: NaN,\n alt: NaN,\n chroma: NaN,\n height: NaN,\n coord: [],\n midi: null,\n freq: null\n});\nvar cache = /* @__PURE__ */ new Map();\nvar stepToLetter = (step) => \"CDEFGAB\".charAt(step);\nvar altToAcc = (alt) => alt < 0 ? fillStr(\"b\", -alt) : fillStr(\"#\", alt);\nvar accToAlt = (acc) => acc[0] === \"b\" ? -acc.length : acc.length;\nfunction note(src) {\n const stringSrc = JSON.stringify(src);\n const cached = cache.get(stringSrc);\n if (cached) {\n return cached;\n }\n const value = typeof src === \"string\" ? parse(src) : isPitch(src) ? note(pitchName(src)) : isNamedPitch(src) ? note(src.name) : NoNote;\n cache.set(stringSrc, value);\n return value;\n}\nvar REGEX = /^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\\d*)\\s*(.*)$/;\nfunction tokenizeNote(str) {\n const m = REGEX.exec(str);\n return m ? [m[1].toUpperCase(), m[2].replace(/x/g, \"##\"), m[3], m[4]] : [\"\", \"\", \"\", \"\"];\n}\nfunction coordToNote(noteCoord) {\n return note(pitch(noteCoord));\n}\nvar mod = (n, m) => (n % m + m) % m;\nvar SEMI = [0, 2, 4, 5, 7, 9, 11];\nfunction parse(noteName) {\n const tokens = tokenizeNote(noteName);\n if (tokens[0] === \"\" || tokens[3] !== \"\") {\n return NoNote;\n }\n const letter = tokens[0];\n const acc = tokens[1];\n const octStr = tokens[2];\n const step = (letter.charCodeAt(0) + 3) % 7;\n const alt = accToAlt(acc);\n const oct = octStr.length ? +octStr : void 0;\n const coord = coordinates({ step, alt, oct });\n const name = letter + acc + octStr;\n const pc = letter + acc;\n const chroma = (SEMI[step] + alt + 120) % 12;\n const height = oct === void 0 ? mod(SEMI[step] + alt, 12) - 12 * 99 : SEMI[step] + alt + 12 * (oct + 1);\n const midi = height >= 0 && height <= 127 ? height : null;\n const freq = oct === void 0 ? null : Math.pow(2, (height - 69) / 12) * 440;\n return {\n empty: false,\n acc,\n alt,\n chroma,\n coord,\n freq,\n height,\n letter,\n midi,\n name,\n oct,\n pc,\n step\n };\n}\nfunction pitchName(props) {\n const { step, alt, oct } = props;\n const letter = stepToLetter(step);\n if (!letter) {\n return \"\";\n }\n const pc = letter + altToAcc(alt);\n return oct || oct === 0 ? pc + oct : pc;\n}\nexport {\n accToAlt,\n altToAcc,\n coordToNote,\n note,\n stepToLetter,\n tokenizeNote\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport {\n interval as asInterval,\n coordToInterval\n} from \"@tonaljs/pitch-interval\";\nimport {\n note as asNote,\n coordToNote\n} from \"@tonaljs/pitch-note\";\nfunction transpose(noteName, intervalName) {\n const note = asNote(noteName);\n const intervalCoord = Array.isArray(intervalName) ? intervalName : asInterval(intervalName).coord;\n if (note.empty || !intervalCoord || intervalCoord.length < 2) {\n return \"\";\n }\n const noteCoord = note.coord;\n const tr = noteCoord.length === 1 ? [noteCoord[0] + intervalCoord[0]] : [noteCoord[0] + intervalCoord[0], noteCoord[1] + intervalCoord[1]];\n return coordToNote(tr).name;\n}\nfunction tonicIntervalsTransposer(intervals, tonic) {\n const len = intervals.length;\n return (normalized) => {\n if (!tonic) return \"\";\n const index = normalized < 0 ? (len - -normalized % len) % len : normalized % len;\n const octaves = Math.floor(normalized / len);\n const root = transpose(tonic, [0, octaves]);\n return transpose(root, intervals[index]);\n };\n}\nfunction distance(fromNote, toNote) {\n const from = asNote(fromNote);\n const to = asNote(toNote);\n if (from.empty || to.empty) {\n return \"\";\n }\n const fcoord = from.coord;\n const tcoord = to.coord;\n const fifths = tcoord[0] - fcoord[0];\n const octs = fcoord.length === 2 && tcoord.length === 2 ? tcoord[1] - fcoord[1] : -Math.floor(fifths * 7 / 12);\n const forceDescending = to.height === from.height && to.midi !== null && from.oct === to.oct && from.step > to.step;\n return coordToInterval([fifths, octs], forceDescending).name;\n}\nexport {\n distance,\n tonicIntervalsTransposer,\n transpose\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nfunction ascR(b, n) {\n const a = [];\n for (; n--; a[n] = n + b) ;\n return a;\n}\nfunction descR(b, n) {\n const a = [];\n for (; n--; a[n] = b - n) ;\n return a;\n}\nfunction range(from, to) {\n return from < to ? ascR(from, to - from + 1) : descR(from, from - to + 1);\n}\nfunction rotate(times, arr) {\n const len = arr.length;\n const n = (times % len + len) % len;\n return arr.slice(n, len).concat(arr.slice(0, n));\n}\nfunction compact(arr) {\n return arr.filter((n) => n === 0 || n);\n}\nfunction shuffle(arr, rnd = Math.random) {\n let i;\n let t;\n let m = arr.length;\n while (m) {\n i = Math.floor(rnd() * m--);\n t = arr[m];\n arr[m] = arr[i];\n arr[i] = t;\n }\n return arr;\n}\nfunction permutations(arr) {\n if (arr.length === 0) {\n return [[]];\n }\n return permutations(arr.slice(1)).reduce((acc, perm) => {\n return acc.concat(\n arr.map((e, pos) => {\n const newPerm = perm.slice();\n newPerm.splice(pos, 0, arr[0]);\n return newPerm;\n })\n );\n }, []);\n}\nvar collection_default = {\n compact,\n permutations,\n range,\n rotate,\n shuffle\n};\nexport {\n compact,\n collection_default as default,\n permutations,\n range,\n rotate,\n shuffle\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport { compact, range, rotate } from \"@tonaljs/collection\";\nimport { transpose } from \"@tonaljs/pitch-distance\";\nimport { interval } from \"@tonaljs/pitch-interval\";\nimport { note } from \"@tonaljs/pitch-note\";\nvar EmptyPcset = {\n empty: true,\n name: \"\",\n setNum: 0,\n chroma: \"000000000000\",\n normalized: \"000000000000\",\n intervals: []\n};\nvar setNumToChroma = (num2) => Number(num2).toString(2).padStart(12, \"0\");\nvar chromaToNumber = (chroma2) => parseInt(chroma2, 2);\nvar REGEX = /^[01]{12}$/;\nfunction isChroma(set) {\n return REGEX.test(set);\n}\nvar isPcsetNum = (set) => typeof set === \"number\" && set >= 0 && set <= 4095;\nvar isPcset = (set) => set && isChroma(set.chroma);\nvar cache = { [EmptyPcset.chroma]: EmptyPcset };\nfunction get(src) {\n const chroma2 = isChroma(src) ? src : isPcsetNum(src) ? setNumToChroma(src) : Array.isArray(src) ? listToChroma(src) : isPcset(src) ? src.chroma : EmptyPcset.chroma;\n return cache[chroma2] = cache[chroma2] || chromaToPcset(chroma2);\n}\nvar pcset = get;\nvar chroma = (set) => get(set).chroma;\nvar intervals = (set) => get(set).intervals;\nvar num = (set) => get(set).setNum;\nvar IVLS = [\n \"1P\",\n \"2m\",\n \"2M\",\n \"3m\",\n \"3M\",\n \"4P\",\n \"5d\",\n \"5P\",\n \"6m\",\n \"6M\",\n \"7m\",\n \"7M\"\n];\nfunction chromaToIntervals(chroma2) {\n const intervals2 = [];\n for (let i = 0; i < 12; i++) {\n if (chroma2.charAt(i) === \"1\") intervals2.push(IVLS[i]);\n }\n return intervals2;\n}\nfunction notes(set) {\n return get(set).intervals.map((ivl) => transpose(\"C\", ivl));\n}\nfunction chromas() {\n return range(2048, 4095).map(setNumToChroma);\n}\nfunction modes(set, normalize = true) {\n const pcs = get(set);\n const binary = pcs.chroma.split(\"\");\n return compact(\n binary.map((_, i) => {\n const r = rotate(i, binary);\n return normalize && r[0] === \"0\" ? null : r.join(\"\");\n })\n );\n}\nfunction isEqual(s1, s2) {\n return get(s1).setNum === get(s2).setNum;\n}\nfunction isSubsetOf(set) {\n const s = get(set).setNum;\n return (notes2) => {\n const o = get(notes2).setNum;\n return s && s !== o && (o & s) === o;\n };\n}\nfunction isSupersetOf(set) {\n const s = get(set).setNum;\n return (notes2) => {\n const o = get(notes2).setNum;\n return s && s !== o && (o | s) === o;\n };\n}\nfunction isNoteIncludedIn(set) {\n const s = get(set);\n return (noteName) => {\n const n = note(noteName);\n return s && !n.empty && s.chroma.charAt(n.chroma) === \"1\";\n };\n}\nvar includes = isNoteIncludedIn;\nfunction filter(set) {\n const isIncluded = isNoteIncludedIn(set);\n return (notes2) => {\n return notes2.filter(isIncluded);\n };\n}\nvar pcset_default = {\n get,\n chroma,\n num,\n intervals,\n chromas,\n isSupersetOf,\n isSubsetOf,\n isNoteIncludedIn,\n isEqual,\n filter,\n modes,\n notes,\n // deprecated\n pcset\n};\nfunction chromaRotations(chroma2) {\n const binary = chroma2.split(\"\");\n return binary.map((_, i) => rotate(i, binary).join(\"\"));\n}\nfunction chromaToPcset(chroma2) {\n const setNum = chromaToNumber(chroma2);\n const normalizedNum = chromaRotations(chroma2).map(chromaToNumber).filter((n) => n >= 2048).sort()[0];\n const normalized = setNumToChroma(normalizedNum);\n const intervals2 = chromaToIntervals(chroma2);\n return {\n empty: false,\n name: \"\",\n setNum,\n chroma: chroma2,\n normalized,\n intervals: intervals2\n };\n}\nfunction listToChroma(set) {\n if (set.length === 0) {\n return EmptyPcset.chroma;\n }\n let pitch;\n const binary = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (let i = 0; i < set.length; i++) {\n pitch = note(set[i]);\n if (pitch.empty) pitch = interval(set[i]);\n if (!pitch.empty) binary[pitch.chroma] = 1;\n }\n return binary.join(\"\");\n}\nexport {\n EmptyPcset,\n chroma,\n chromas,\n pcset_default as default,\n filter,\n get,\n includes,\n intervals,\n isChroma,\n isEqual,\n isNoteIncludedIn,\n isSubsetOf,\n isSupersetOf,\n modes,\n notes,\n num,\n pcset\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport {\n EmptyPcset,\n get as pcset\n} from \"@tonaljs/pcset\";\n\n// data.ts\nvar CHORDS = [\n // ==Major==\n [\"1P 3M 5P\", \"major\", \"M ^ maj\"],\n [\"1P 3M 5P 7M\", \"major seventh\", \"maj7 \\u0394 ma7 M7 Maj7 ^7\"],\n [\"1P 3M 5P 7M 9M\", \"major ninth\", \"maj9 \\u03949 ^9\"],\n [\"1P 3M 5P 7M 9M 13M\", \"major thirteenth\", \"maj13 Maj13 ^13\"],\n [\"1P 3M 5P 6M\", \"sixth\", \"6 add6 add13 M6\"],\n [\"1P 3M 5P 6M 9M\", \"sixth added ninth\", \"6add9 6/9 69 M69\"],\n [\"1P 3M 6m 7M\", \"major seventh flat sixth\", \"M7b6 ^7b6\"],\n [\n \"1P 3M 5P 7M 11A\",\n \"major seventh sharp eleventh\",\n \"maj#4 \\u0394#4 \\u0394#11 M7#11 ^7#11 maj7#11\"\n ],\n // ==Minor==\n // '''Normal'''\n [\"1P 3m 5P\", \"minor\", \"m min -\"],\n [\"1P 3m 5P 7m\", \"minor seventh\", \"m7 min7 mi7 -7\"],\n [\n \"1P 3m 5P 7M\",\n \"minor/major seventh\",\n \"m/ma7 m/maj7 mM7 mMaj7 m/M7 -\\u03947 m\\u0394 -^7 -maj7\"\n ],\n [\"1P 3m 5P 6M\", \"minor sixth\", \"m6 -6\"],\n [\"1P 3m 5P 7m 9M\", \"minor ninth\", \"m9 -9\"],\n [\"1P 3m 5P 7M 9M\", \"minor/major ninth\", \"mM9 mMaj9 -^9\"],\n [\"1P 3m 5P 7m 9M 11P\", \"minor eleventh\", \"m11 -11\"],\n [\"1P 3m 5P 7m 9M 13M\", \"minor thirteenth\", \"m13 -13\"],\n // '''Diminished'''\n [\"1P 3m 5d\", \"diminished\", \"dim \\xB0 o\"],\n [\"1P 3m 5d 7d\", \"diminished seventh\", \"dim7 \\xB07 o7\"],\n [\"1P 3m 5d 7m\", \"half-diminished\", \"m7b5 \\xF8 -7b5 h7 h\"],\n // ==Dominant/Seventh==\n // '''Normal'''\n [\"1P 3M 5P 7m\", \"dominant seventh\", \"7 dom\"],\n [\"1P 3M 5P 7m 9M\", \"dominant ninth\", \"9\"],\n [\"1P 3M 5P 7m 9M 13M\", \"dominant thirteenth\", \"13\"],\n [\"1P 3M 5P 7m 11A\", \"lydian dominant seventh\", \"7#11 7#4\"],\n // '''Altered'''\n [\"1P 3M 5P 7m 9m\", \"dominant flat ninth\", \"7b9\"],\n [\"1P 3M 5P 7m 9A\", \"dominant sharp ninth\", \"7#9\"],\n [\"1P 3M 7m 9m\", \"altered\", \"alt7\"],\n // '''Suspended'''\n [\"1P 4P 5P\", \"suspended fourth\", \"sus4 sus\"],\n [\"1P 2M 5P\", \"suspended second\", \"sus2\"],\n [\"1P 4P 5P 7m\", \"suspended fourth seventh\", \"7sus4 7sus\"],\n [\"1P 5P 7m 9M 11P\", \"eleventh\", \"11\"],\n [\n \"1P 4P 5P 7m 9m\",\n \"suspended fourth flat ninth\",\n \"b9sus phryg 7b9sus 7b9sus4\"\n ],\n // ==Other==\n [\"1P 5P\", \"fifth\", \"5\"],\n [\"1P 3M 5A\", \"augmented\", \"aug + +5 ^#5\"],\n [\"1P 3m 5A\", \"minor augmented\", \"m#5 -#5 m+\"],\n [\"1P 3M 5A 7M\", \"augmented seventh\", \"maj7#5 maj7+5 +maj7 ^7#5\"],\n [\n \"1P 3M 5P 7M 9M 11A\",\n \"major sharp eleventh (lydian)\",\n \"maj9#11 \\u03949#11 ^9#11\"\n ],\n // ==Legacy==\n [\"1P 2M 4P 5P\", \"\", \"sus24 sus4add9\"],\n [\"1P 3M 5A 7M 9M\", \"\", \"maj9#5 Maj9#5\"],\n [\"1P 3M 5A 7m\", \"\", \"7#5 +7 7+ 7aug aug7\"],\n [\"1P 3M 5A 7m 9A\", \"\", \"7#5#9 7#9#5 7alt\"],\n [\"1P 3M 5A 7m 9M\", \"\", \"9#5 9+\"],\n [\"1P 3M 5A 7m 9M 11A\", \"\", \"9#5#11\"],\n [\"1P 3M 5A 7m 9m\", \"\", \"7#5b9 7b9#5\"],\n [\"1P 3M 5A 7m 9m 11A\", \"\", \"7#5b9#11\"],\n [\"1P 3M 5A 9A\", \"\", \"+add#9\"],\n [\"1P 3M 5A 9M\", \"\", \"M#5add9 +add9\"],\n [\"1P 3M 5P 6M 11A\", \"\", \"M6#11 M6b5 6#11 6b5\"],\n [\"1P 3M 5P 6M 7M 9M\", \"\", \"M7add13\"],\n [\"1P 3M 5P 6M 9M 11A\", \"\", \"69#11\"],\n [\"1P 3m 5P 6M 9M\", \"\", \"m69 -69\"],\n [\"1P 3M 5P 6m 7m\", \"\", \"7b6\"],\n [\"1P 3M 5P 7M 9A 11A\", \"\", \"maj7#9#11\"],\n [\"1P 3M 5P 7M 9M 11A 13M\", \"\", \"M13#11 maj13#11 M13+4 M13#4\"],\n [\"1P 3M 5P 7M 9m\", \"\", \"M7b9\"],\n [\"1P 3M 5P 7m 11A 13m\", \"\", \"7#11b13 7b5b13\"],\n [\"1P 3M 5P 7m 13M\", \"\", \"7add6 67 7add13\"],\n [\"1P 3M 5P 7m 9A 11A\", \"\", \"7#9#11 7b5#9 7#9b5\"],\n [\"1P 3M 5P 7m 9A 11A 13M\", \"\", \"13#9#11\"],\n [\"1P 3M 5P 7m 9A 11A 13m\", \"\", \"7#9#11b13\"],\n [\"1P 3M 5P 7m 9A 13M\", \"\", \"13#9\"],\n [\"1P 3M 5P 7m 9A 13m\", \"\", \"7#9b13\"],\n [\"1P 3M 5P 7m 9M 11A\", \"\", \"9#11 9+4 9#4\"],\n [\"1P 3M 5P 7m 9M 11A 13M\", \"\", \"13#11 13+4 13#4\"],\n [\"1P 3M 5P 7m 9M 11A 13m\", \"\", \"9#11b13 9b5b13\"],\n [\"1P 3M 5P 7m 9m 11A\", \"\", \"7b9#11 7b5b9 7b9b5\"],\n [\"1P 3M 5P 7m 9m 11A 13M\", \"\", \"13b9#11\"],\n [\"1P 3M 5P 7m 9m 11A 13m\", \"\", \"7b9b13#11 7b9#11b13 7b5b9b13\"],\n [\"1P 3M 5P 7m 9m 13M\", \"\", \"13b9\"],\n [\"1P 3M 5P 7m 9m 13m\", \"\", \"7b9b13\"],\n [\"1P 3M 5P 7m 9m 9A\", \"\", \"7b9#9\"],\n [\"1P 3M 5P 9M\", \"\", \"Madd9 2 add9 add2\"],\n [\"1P 3M 5P 9m\", \"\", \"Maddb9\"],\n [\"1P 3M 5d\", \"\", \"Mb5\"],\n [\"1P 3M 5d 6M 7m 9M\", \"\", \"13b5\"],\n [\"1P 3M 5d 7M\", \"\", \"M7b5\"],\n [\"1P 3M 5d 7M 9M\", \"\", \"M9b5\"],\n [\"1P 3M 5d 7m\", \"\", \"7b5\"],\n [\"1P 3M 5d 7m 9M\", \"\", \"9b5\"],\n [\"1P 3M 7m\", \"\", \"7no5\"],\n [\"1P 3M 7m 13m\", \"\", \"7b13\"],\n [\"1P 3M 7m 9M\", \"\", \"9no5\"],\n [\"1P 3M 7m 9M 13M\", \"\", \"13no5\"],\n [\"1P 3M 7m 9M 13m\", \"\", \"9b13\"],\n [\"1P 3m 4P 5P\", \"\", \"madd4\"],\n [\"1P 3m 5P 6m 7M\", \"\", \"mMaj7b6\"],\n [\"1P 3m 5P 6m 7M 9M\", \"\", \"mMaj9b6\"],\n [\"1P 3m 5P 7m 11P\", \"\", \"m7add11 m7add4\"],\n [\"1P 3m 5P 9M\", \"\", \"madd9\"],\n [\"1P 3m 5d 6M 7M\", \"\", \"o7M7\"],\n [\"1P 3m 5d 7M\", \"\", \"oM7\"],\n [\"1P 3m 6m 7M\", \"\", \"mb6M7\"],\n [\"1P 3m 6m 7m\", \"\", \"m7#5\"],\n [\"1P 3m 6m 7m 9M\", \"\", \"m9#5\"],\n [\"1P 3m 5A 7m 9M 11P\", \"\", \"m11A\"],\n [\"1P 3m 6m 9m\", \"\", \"mb6b9\"],\n [\"1P 2M 3m 5d 7m\", \"\", \"m9b5\"],\n [\"1P 4P 5A 7M\", \"\", \"M7#5sus4\"],\n [\"1P 4P 5A 7M 9M\", \"\", \"M9#5sus4\"],\n [\"1P 4P 5A 7m\", \"\", \"7#5sus4\"],\n [\"1P 4P 5P 7M\", \"\", \"M7sus4\"],\n [\"1P 4P 5P 7M 9M\", \"\", \"M9sus4\"],\n [\"1P 4P 5P 7m 9M\", \"\", \"9sus4 9sus\"],\n [\"1P 4P 5P 7m 9M 13M\", \"\", \"13sus4 13sus\"],\n [\"1P 4P 5P 7m 9m 13m\", \"\", \"7sus4b9b13 7b9b13sus4\"],\n [\"1P 4P 7m 10m\", \"\", \"4 quartal\"],\n [\"1P 5P 7m 9m 11P\", \"\", \"11b9\"]\n];\nvar data_default = CHORDS;\n\n// index.ts\nvar NoChordType = {\n ...EmptyPcset,\n name: \"\",\n quality: \"Unknown\",\n intervals: [],\n aliases: []\n};\nvar dictionary = [];\nvar index = {};\nfunction get(type) {\n return index[type] || NoChordType;\n}\nvar chordType = get;\nfunction names() {\n return dictionary.map((chord) => chord.name).filter((x) => x);\n}\nfunction symbols() {\n return dictionary.map((chord) => chord.aliases[0]).filter((x) => x);\n}\nfunction keys() {\n return Object.keys(index);\n}\nfunction all() {\n return dictionary.slice();\n}\nvar entries = all;\nfunction removeAll() {\n dictionary = [];\n index = {};\n}\nfunction add(intervals, aliases, fullName) {\n const quality = getQuality(intervals);\n const chord = {\n ...pcset(intervals),\n name: fullName || \"\",\n quality,\n intervals,\n aliases\n };\n dictionary.push(chord);\n if (chord.name) {\n index[chord.name] = chord;\n }\n index[chord.setNum] = chord;\n index[chord.chroma] = chord;\n chord.aliases.forEach((alias) => addAlias(chord, alias));\n}\nfunction addAlias(chord, alias) {\n index[alias] = chord;\n}\nfunction getQuality(intervals) {\n const has = (interval) => intervals.indexOf(interval) !== -1;\n return has(\"5A\") ? \"Augmented\" : has(\"3M\") ? \"Major\" : has(\"5d\") ? \"Diminished\" : has(\"3m\") ? \"Minor\" : \"Unknown\";\n}\ndata_default.forEach(\n ([ivls, fullName, names2]) => add(ivls.split(\" \"), names2.split(\" \"), fullName)\n);\ndictionary.sort((a, b) => a.setNum - b.setNum);\nvar chord_type_default = {\n names,\n symbols,\n get,\n all,\n add,\n removeAll,\n keys,\n // deprecated\n entries,\n chordType\n};\nexport {\n add,\n addAlias,\n all,\n chordType,\n chord_type_default as default,\n entries,\n get,\n keys,\n names,\n removeAll,\n symbols\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport {\n EmptyPcset,\n get as pcset\n} from \"@tonaljs/pcset\";\n\n// data.ts\nvar SCALES = [\n // Basic scales\n [\"1P 2M 3M 5P 6M\", \"major pentatonic\", \"pentatonic\"],\n [\"1P 2M 3M 4P 5P 6M 7M\", \"major\", \"ionian\"],\n [\"1P 2M 3m 4P 5P 6m 7m\", \"minor\", \"aeolian\"],\n // Jazz common scales\n [\"1P 2M 3m 3M 5P 6M\", \"major blues\"],\n [\"1P 3m 4P 5d 5P 7m\", \"minor blues\", \"blues\"],\n [\"1P 2M 3m 4P 5P 6M 7M\", \"melodic minor\"],\n [\"1P 2M 3m 4P 5P 6m 7M\", \"harmonic minor\"],\n [\"1P 2M 3M 4P 5P 6M 7m 7M\", \"bebop\"],\n [\"1P 2M 3m 4P 5d 6m 6M 7M\", \"diminished\", \"whole-half diminished\"],\n // Modes\n [\"1P 2M 3m 4P 5P 6M 7m\", \"dorian\"],\n [\"1P 2M 3M 4A 5P 6M 7M\", \"lydian\"],\n [\"1P 2M 3M 4P 5P 6M 7m\", \"mixolydian\", \"dominant\"],\n [\"1P 2m 3m 4P 5P 6m 7m\", \"phrygian\"],\n [\"1P 2m 3m 4P 5d 6m 7m\", \"locrian\"],\n // 5-note scales\n [\"1P 3M 4P 5P 7M\", \"ionian pentatonic\"],\n [\"1P 3M 4P 5P 7m\", \"mixolydian pentatonic\", \"indian\"],\n [\"1P 2M 4P 5P 6M\", \"ritusen\"],\n [\"1P 2M 4P 5P 7m\", \"egyptian\"],\n [\"1P 3M 4P 5d 7m\", \"neopolitan major pentatonic\"],\n [\"1P 3m 4P 5P 6m\", \"vietnamese 1\"],\n [\"1P 2m 3m 5P 6m\", \"pelog\"],\n [\"1P 2m 4P 5P 6m\", \"kumoijoshi\"],\n [\"1P 2M 3m 5P 6m\", \"hirajoshi\"],\n [\"1P 2m 4P 5d 7m\", \"iwato\"],\n [\"1P 2m 4P 5P 7m\", \"in-sen\"],\n [\"1P 3M 4A 5P 7M\", \"lydian pentatonic\", \"chinese\"],\n [\"1P 3m 4P 6m 7m\", \"malkos raga\"],\n [\"1P 3m 4P 5d 7m\", \"locrian pentatonic\", \"minor seven flat five pentatonic\"],\n [\"1P 3m 4P 5P 7m\", \"minor pentatonic\", \"vietnamese 2\"],\n [\"1P 3m 4P 5P 6M\", \"minor six pentatonic\"],\n [\"1P 2M 3m 5P 6M\", \"flat three pentatonic\", \"kumoi\"],\n [\"1P 2M 3M 5P 6m\", \"flat six pentatonic\"],\n [\"1P 2m 3M 5P 6M\", \"scriabin\"],\n [\"1P 3M 5d 6m 7m\", \"whole tone pentatonic\"],\n [\"1P 3M 4A 5A 7M\", \"lydian #5P pentatonic\"],\n [\"1P 3M 4A 5P 7m\", \"lydian dominant pentatonic\"],\n [\"1P 3m 4P 5P 7M\", \"minor #7M pentatonic\"],\n [\"1P 3m 4d 5d 7m\", \"super locrian pentatonic\"],\n // 6-note scales\n [\"1P 2M 3m 4P 5P 7M\", \"minor hexatonic\"],\n [\"1P 2A 3M 5P 5A 7M\", \"augmented\"],\n [\"1P 2M 4P 5P 6M 7m\", \"piongio\"],\n [\"1P 2m 3M 4A 6M 7m\", \"prometheus neopolitan\"],\n [\"1P 2M 3M 4A 6M 7m\", \"prometheus\"],\n [\"1P 2m 3M 5d 6m 7m\", \"mystery #1\"],\n [\"1P 2m 3M 4P 5A 6M\", \"six tone symmetric\"],\n [\"1P 2M 3M 4A 5A 6A\", \"whole tone\", \"messiaen's mode #1\"],\n [\"1P 2m 4P 4A 5P 7M\", \"messiaen's mode #5\"],\n // 7-note scales\n [\"1P 2M 3M 4P 5d 6m 7m\", \"locrian major\", \"arabian\"],\n [\"1P 2m 3M 4A 5P 6m 7M\", \"double harmonic lydian\"],\n [\n \"1P 2m 2A 3M 4A 6m 7m\",\n \"altered\",\n \"super locrian\",\n \"diminished whole tone\",\n \"pomeroy\"\n ],\n [\"1P 2M 3m 4P 5d 6m 7m\", \"locrian #2\", \"half-diminished\", \"aeolian b5\"],\n [\n \"1P 2M 3M 4P 5P 6m 7m\",\n \"mixolydian b6\",\n \"melodic minor fifth mode\",\n \"hindu\"\n ],\n [\"1P 2M 3M 4A 5P 6M 7m\", \"lydian dominant\", \"lydian b7\", \"overtone\"],\n [\"1P 2M 3M 4A 5A 6M 7M\", \"lydian augmented\"],\n [\n \"1P 2m 3m 4P 5P 6M 7m\",\n \"dorian b2\",\n \"phrygian #6\",\n \"melodic minor second mode\"\n ],\n [\n \"1P 2m 3m 4d 5d 6m 7d\",\n \"ultralocrian\",\n \"superlocrian bb7\",\n \"superlocrian diminished\"\n ],\n [\"1P 2m 3m 4P 5d 6M 7m\", \"locrian 6\", \"locrian natural 6\", \"locrian sharp 6\"],\n [\"1P 2A 3M 4P 5P 5A 7M\", \"augmented heptatonic\"],\n // Source https://en.wikipedia.org/wiki/Ukrainian_Dorian_scale\n [\n \"1P 2M 3m 4A 5P 6M 7m\",\n \"dorian #4\",\n \"ukrainian dorian\",\n \"romanian minor\",\n \"altered dorian\"\n ],\n [\"1P 2M 3m 4A 5P 6M 7M\", \"lydian diminished\"],\n [\"1P 2M 3M 4A 5A 7m 7M\", \"leading whole tone\"],\n [\"1P 2M 3M 4A 5P 6m 7m\", \"lydian minor\"],\n [\"1P 2m 3M 4P 5P 6m 7m\", \"phrygian dominant\", \"spanish\", \"phrygian major\"],\n [\"1P 2m 3m 4P 5P 6m 7M\", \"balinese\"],\n [\"1P 2m 3m 4P 5P 6M 7M\", \"neopolitan major\"],\n [\"1P 2M 3M 4P 5P 6m 7M\", \"harmonic major\"],\n [\"1P 2m 3M 4P 5P 6m 7M\", \"double harmonic major\", \"gypsy\"],\n [\"1P 2M 3m 4A 5P 6m 7M\", \"hungarian minor\"],\n [\"1P 2A 3M 4A 5P 6M 7m\", \"hungarian major\"],\n [\"1P 2m 3M 4P 5d 6M 7m\", \"oriental\"],\n [\"1P 2m 3m 3M 4A 5P 7m\", \"flamenco\"],\n [\"1P 2m 3m 4A 5P 6m 7M\", \"todi raga\"],\n [\"1P 2m 3M 4P 5d 6m 7M\", \"persian\"],\n [\"1P 2m 3M 5d 6m 7m 7M\", \"enigmatic\"],\n [\n \"1P 2M 3M 4P 5A 6M 7M\",\n \"major augmented\",\n \"major #5\",\n \"ionian augmented\",\n \"ionian #5\"\n ],\n [\"1P 2A 3M 4A 5P 6M 7M\", \"lydian #9\"],\n // 8-note scales\n [\"1P 2m 2M 4P 4A 5P 6m 7M\", \"messiaen's mode #4\"],\n [\"1P 2m 3M 4P 4A 5P 6m 7M\", \"purvi raga\"],\n [\"1P 2m 3m 3M 4P 5P 6m 7m\", \"spanish heptatonic\"],\n [\"1P 2M 3m 3M 4P 5P 6M 7m\", \"bebop minor\"],\n [\"1P 2M 3M 4P 5P 5A 6M 7M\", \"bebop major\"],\n [\"1P 2m 3m 4P 5d 5P 6m 7m\", \"bebop locrian\"],\n [\"1P 2M 3m 4P 5P 6m 7m 7M\", \"minor bebop\"],\n [\"1P 2M 3M 4P 5d 5P 6M 7M\", \"ichikosucho\"],\n [\"1P 2M 3m 4P 5P 6m 6M 7M\", \"minor six diminished\"],\n [\n \"1P 2m 3m 3M 4A 5P 6M 7m\",\n \"half-whole diminished\",\n \"dominant diminished\",\n \"messiaen's mode #2\"\n ],\n [\"1P 3m 3M 4P 5P 6M 7m 7M\", \"kafi raga\"],\n [\"1P 2M 3M 4P 4A 5A 6A 7M\", \"messiaen's mode #6\"],\n // 9-note scales\n [\"1P 2M 3m 3M 4P 5d 5P 6M 7m\", \"composite blues\"],\n [\"1P 2M 3m 3M 4A 5P 6m 7m 7M\", \"messiaen's mode #3\"],\n // 10-note scales\n [\"1P 2m 2M 3m 4P 4A 5P 6m 6M 7M\", \"messiaen's mode #7\"],\n // 12-note scales\n [\"1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M\", \"chromatic\"]\n];\nvar data_default = SCALES;\n\n// index.ts\nvar NoScaleType = {\n ...EmptyPcset,\n intervals: [],\n aliases: []\n};\nvar dictionary = [];\nvar index = {};\nfunction names() {\n return dictionary.map((scale) => scale.name);\n}\nfunction get(type) {\n return index[type] || NoScaleType;\n}\nvar scaleType = get;\nfunction all() {\n return dictionary.slice();\n}\nvar entries = all;\nfunction keys() {\n return Object.keys(index);\n}\nfunction removeAll() {\n dictionary = [];\n index = {};\n}\nfunction add(intervals, name, aliases = []) {\n const scale = { ...pcset(intervals), name, intervals, aliases };\n dictionary.push(scale);\n index[scale.name] = scale;\n index[scale.setNum] = scale;\n index[scale.chroma] = scale;\n scale.aliases.forEach((alias) => addAlias(scale, alias));\n return scale;\n}\nfunction addAlias(scale, alias) {\n index[alias] = scale;\n}\ndata_default.forEach(\n ([ivls, name, ...aliases]) => add(ivls.split(\" \"), name, aliases)\n);\nvar scale_type_default = {\n names,\n get,\n all,\n add,\n removeAll,\n keys,\n // deprecated\n entries,\n scaleType\n};\nexport {\n NoScaleType,\n add,\n addAlias,\n all,\n scale_type_default as default,\n entries,\n get,\n keys,\n names,\n removeAll,\n scaleType\n};\n//# sourceMappingURL=index.mjs.map","// data.ts\nvar DATA = [\n [\n 0.125,\n \"dl\",\n [\"large\", \"duplex longa\", \"maxima\", \"octuple\", \"octuple whole\"]\n ],\n [0.25, \"l\", [\"long\", \"longa\"]],\n [0.5, \"d\", [\"double whole\", \"double\", \"breve\"]],\n [1, \"w\", [\"whole\", \"semibreve\"]],\n [2, \"h\", [\"half\", \"minim\"]],\n [4, \"q\", [\"quarter\", \"crotchet\"]],\n [8, \"e\", [\"eighth\", \"quaver\"]],\n [16, \"s\", [\"sixteenth\", \"semiquaver\"]],\n [32, \"t\", [\"thirty-second\", \"demisemiquaver\"]],\n [64, \"sf\", [\"sixty-fourth\", \"hemidemisemiquaver\"]],\n [128, \"h\", [\"hundred twenty-eighth\"]],\n [256, \"th\", [\"two hundred fifty-sixth\"]]\n];\nvar data_default = DATA;\n\n// index.ts\nvar VALUES = [];\ndata_default.forEach(\n ([denominator, shorthand, names2]) => add(denominator, shorthand, names2)\n);\nvar NoDuration = {\n empty: true,\n name: \"\",\n value: 0,\n fraction: [0, 0],\n shorthand: \"\",\n dots: \"\",\n names: []\n};\nfunction names() {\n return VALUES.reduce((names2, duration) => {\n duration.names.forEach((name) => names2.push(name));\n return names2;\n }, []);\n}\nfunction shorthands() {\n return VALUES.map((dur) => dur.shorthand);\n}\nvar REGEX = /^([^.]+)(\\.*)$/;\nfunction get(name) {\n const [_, simple, dots] = REGEX.exec(name) || [];\n const base = VALUES.find(\n (dur) => dur.shorthand === simple || dur.names.includes(simple)\n );\n if (!base) {\n return NoDuration;\n }\n const fraction2 = calcDots(base.fraction, dots.length);\n const value2 = fraction2[0] / fraction2[1];\n return { ...base, name, dots, value: value2, fraction: fraction2 };\n}\nvar value = (name) => get(name).value;\nvar fraction = (name) => get(name).fraction;\nvar duration_value_default = { names, shorthands, get, value, fraction };\nfunction add(denominator, shorthand, names2) {\n VALUES.push({\n empty: false,\n dots: \"\",\n name: \"\",\n value: 1 / denominator,\n fraction: denominator < 1 ? [1 / denominator, 1] : [1, denominator],\n shorthand,\n names: names2\n });\n}\nfunction calcDots(fraction2, dots) {\n const pow = Math.pow(2, dots);\n let numerator = fraction2[0] * pow;\n let denominator = fraction2[1] * pow;\n const base = numerator;\n for (let i = 0; i < dots; i++) {\n numerator += base / Math.pow(2, i + 1);\n }\n while (numerator % 2 === 0 && denominator % 2 === 0) {\n numerator /= 2;\n denominator /= 2;\n }\n return [numerator, denominator];\n}\nexport {\n duration_value_default as default,\n fraction,\n get,\n names,\n shorthands,\n value\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport { note as props } from \"@tonaljs/pitch-note\";\nfunction isMidi(arg) {\n return +arg >= 0 && +arg <= 127;\n}\nfunction toMidi(note) {\n if (isMidi(note)) {\n return +note;\n }\n const n = props(note);\n return n.empty ? null : n.midi;\n}\nfunction midiToFreq(midi, tuning = 440) {\n return Math.pow(2, (midi - 69) / 12) * tuning;\n}\nvar L2 = Math.log(2);\nvar L440 = Math.log(440);\nfunction freqToMidi(freq) {\n const v = 12 * (Math.log(freq) - L440) / L2 + 69;\n return Math.round(v * 100) / 100;\n}\nvar SHARPS = \"C C# D D# E F F# G G# A A# B\".split(\" \");\nvar FLATS = \"C Db D Eb E F Gb G Ab A Bb B\".split(\" \");\nfunction midiToNoteName(midi, options = {}) {\n if (isNaN(midi) || midi === -Infinity || midi === Infinity) return \"\";\n midi = Math.round(midi);\n const pcs = options.sharps === true ? SHARPS : FLATS;\n const pc = pcs[midi % 12];\n if (options.pitchClass) {\n return pc;\n }\n const o = Math.floor(midi / 12) - 1;\n return pc + o;\n}\nfunction chroma(midi) {\n return midi % 12;\n}\nfunction pcsetFromChroma(chroma2) {\n return chroma2.split(\"\").reduce((pcset2, val, index) => {\n if (index < 12 && val === \"1\") pcset2.push(index);\n return pcset2;\n }, []);\n}\nfunction pcsetFromMidi(midi) {\n return midi.map(chroma).sort((a, b) => a - b).filter((n, i, a) => i === 0 || n !== a[i - 1]);\n}\nfunction pcset(notes) {\n return Array.isArray(notes) ? pcsetFromMidi(notes) : pcsetFromChroma(notes);\n}\nfunction pcsetNearest(notes) {\n const set = pcset(notes);\n return (midi) => {\n const ch = chroma(midi);\n for (let i = 0; i < 12; i++) {\n if (set.includes(ch + i)) return midi + i;\n if (set.includes(ch - i)) return midi - i;\n }\n return void 0;\n };\n}\nfunction pcsetSteps(notes, tonic) {\n const set = pcset(notes);\n const len = set.length;\n return (step) => {\n const index = step < 0 ? (len - -step % len) % len : step % len;\n const octaves = Math.floor(step / len);\n return set[index] + octaves * 12 + tonic;\n };\n}\nfunction pcsetDegrees(notes, tonic) {\n const steps = pcsetSteps(notes, tonic);\n return (degree) => {\n if (degree === 0) return void 0;\n return steps(degree > 0 ? degree - 1 : degree);\n };\n}\nvar index_default = {\n chroma,\n freqToMidi,\n isMidi,\n midiToFreq,\n midiToNoteName,\n pcsetNearest,\n pcset,\n pcsetDegrees,\n pcsetSteps,\n toMidi\n};\nexport {\n chroma,\n index_default as default,\n freqToMidi,\n isMidi,\n midiToFreq,\n midiToNoteName,\n pcset,\n pcsetDegrees,\n pcsetNearest,\n pcsetSteps,\n toMidi\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport { freqToMidi, midiToNoteName } from \"@tonaljs/midi\";\nimport { distance as _dist, transpose as _tr } from \"@tonaljs/pitch-distance\";\nimport {\n note as props\n} from \"@tonaljs/pitch-note\";\nvar NAMES = [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"];\nvar toName = (n) => n.name;\nvar onlyNotes = (array) => array.map(props).filter((n) => !n.empty);\nfunction names(array) {\n if (array === void 0) {\n return NAMES.slice();\n } else if (!Array.isArray(array)) {\n return [];\n } else {\n return onlyNotes(array).map(toName);\n }\n}\nvar get = props;\nvar name = (note) => get(note).name;\nvar pitchClass = (note) => get(note).pc;\nvar accidentals = (note) => get(note).acc;\nvar octave = (note) => get(note).oct;\nvar midi = (note) => get(note).midi;\nvar freq = (note) => get(note).freq;\nvar chroma = (note) => get(note).chroma;\nfunction fromMidi(midi2) {\n return midiToNoteName(midi2);\n}\nfunction fromFreq(freq2) {\n return midiToNoteName(freqToMidi(freq2));\n}\nfunction fromFreqSharps(freq2) {\n return midiToNoteName(freqToMidi(freq2), { sharps: true });\n}\nfunction fromMidiSharps(midi2) {\n return midiToNoteName(midi2, { sharps: true });\n}\nvar distance = _dist;\nvar transpose = _tr;\nvar tr = _tr;\nvar transposeBy = (interval) => (note) => transpose(note, interval);\nvar trBy = transposeBy;\nvar transposeFrom = (note) => (interval) => transpose(note, interval);\nvar trFrom = transposeFrom;\nfunction transposeFifths(noteName, fifths) {\n return transpose(noteName, [fifths, 0]);\n}\nvar trFifths = transposeFifths;\nfunction transposeOctaves(noteName, octaves) {\n return transpose(noteName, [0, octaves]);\n}\nvar ascending = (a, b) => a.height - b.height;\nvar descending = (a, b) => b.height - a.height;\nfunction sortedNames(notes, comparator) {\n comparator = comparator || ascending;\n return onlyNotes(notes).sort(comparator).map(toName);\n}\nfunction sortedUniqNames(notes) {\n return sortedNames(notes, ascending).filter(\n (n, i, a) => i === 0 || n !== a[i - 1]\n );\n}\nvar simplify = (noteName) => {\n const note = get(noteName);\n if (note.empty) {\n return \"\";\n }\n return midiToNoteName(note.midi || note.chroma, {\n sharps: note.alt > 0,\n pitchClass: note.midi === null\n });\n};\nfunction enharmonic(noteName, destName) {\n const src = get(noteName);\n if (src.empty) {\n return \"\";\n }\n const dest = get(\n destName || midiToNoteName(src.midi || src.chroma, {\n sharps: src.alt < 0,\n pitchClass: true\n })\n );\n if (dest.empty || dest.chroma !== src.chroma) {\n return \"\";\n }\n if (src.oct === void 0) {\n return dest.pc;\n }\n const srcChroma = src.chroma - src.alt;\n const destChroma = dest.chroma - dest.alt;\n const destOctOffset = srcChroma > 11 || destChroma < 0 ? -1 : srcChroma < 0 || destChroma > 11 ? 1 : 0;\n const destOct = src.oct + destOctOffset;\n return dest.pc + destOct;\n}\nvar index_default = {\n names,\n get,\n name,\n pitchClass,\n accidentals,\n octave,\n midi,\n ascending,\n descending,\n distance,\n sortedNames,\n sortedUniqNames,\n fromMidi,\n fromMidiSharps,\n freq,\n fromFreq,\n fromFreqSharps,\n chroma,\n transpose,\n tr,\n transposeBy,\n trBy,\n transposeFrom,\n trFrom,\n transposeFifths,\n transposeOctaves,\n trFifths,\n simplify,\n enharmonic\n};\nexport {\n accidentals,\n ascending,\n chroma,\n index_default as default,\n descending,\n distance,\n enharmonic,\n freq,\n fromFreq,\n fromFreqSharps,\n fromMidi,\n fromMidiSharps,\n get,\n midi,\n name,\n names,\n octave,\n pitchClass,\n simplify,\n sortedNames,\n sortedUniqNames,\n tr,\n trBy,\n trFifths,\n trFrom,\n transpose,\n transposeBy,\n transposeFifths,\n transposeFrom,\n transposeOctaves\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport { rotate } from \"@tonaljs/collection\";\nimport { simplify, transposeFifths } from \"@tonaljs/interval\";\nimport { EmptyPcset } from \"@tonaljs/pcset\";\nimport { transpose } from \"@tonaljs/pitch-distance\";\nimport { get as getType } from \"@tonaljs/scale-type\";\nvar MODES = [\n [0, 2773, 0, \"ionian\", \"\", \"Maj7\", \"major\"],\n [1, 2902, 2, \"dorian\", \"m\", \"m7\"],\n [2, 3418, 4, \"phrygian\", \"m\", \"m7\"],\n [3, 2741, -1, \"lydian\", \"\", \"Maj7\"],\n [4, 2774, 1, \"mixolydian\", \"\", \"7\"],\n [5, 2906, 3, \"aeolian\", \"m\", \"m7\", \"minor\"],\n [6, 3434, 5, \"locrian\", \"dim\", \"m7b5\"]\n];\nvar NoMode = {\n ...EmptyPcset,\n name: \"\",\n alt: 0,\n modeNum: NaN,\n triad: \"\",\n seventh: \"\",\n aliases: []\n};\nvar modes = MODES.map(toMode);\nvar index = {};\nmodes.forEach((mode2) => {\n index[mode2.name] = mode2;\n mode2.aliases.forEach((alias) => {\n index[alias] = mode2;\n });\n});\nfunction get(name) {\n return typeof name === \"string\" ? index[name.toLowerCase()] || NoMode : name && name.name ? get(name.name) : NoMode;\n}\nvar mode = get;\nfunction all() {\n return modes.slice();\n}\nvar entries = all;\nfunction names() {\n return modes.map((mode2) => mode2.name);\n}\nfunction toMode(mode2) {\n const [modeNum, setNum, alt, name, triad, seventh, alias] = mode2;\n const aliases = alias ? [alias] : [];\n const chroma = Number(setNum).toString(2);\n const intervals = getType(name).intervals;\n return {\n empty: false,\n intervals,\n modeNum,\n chroma,\n normalized: chroma,\n name,\n setNum,\n alt,\n triad,\n seventh,\n aliases\n };\n}\nfunction notes(modeName, tonic) {\n return get(modeName).intervals.map((ivl) => transpose(tonic, ivl));\n}\nfunction chords(chords2) {\n return (modeName, tonic) => {\n const mode2 = get(modeName);\n if (mode2.empty) return [];\n const triads2 = rotate(mode2.modeNum, chords2);\n const tonics = mode2.intervals.map((i) => transpose(tonic, i));\n return triads2.map((triad, i) => tonics[i] + triad);\n };\n}\nvar triads = chords(MODES.map((x) => x[4]));\nvar seventhChords = chords(MODES.map((x) => x[5]));\nfunction distance(destination, source) {\n const from = get(source);\n const to = get(destination);\n if (from.empty || to.empty) return \"\";\n return simplify(transposeFifths(\"1P\", to.alt - from.alt));\n}\nfunction relativeTonic(destination, source, tonic) {\n return transpose(tonic, distance(destination, source));\n}\nvar mode_default = {\n get,\n names,\n all,\n distance,\n relativeTonic,\n notes,\n triads,\n seventhChords,\n // deprecated\n entries,\n mode\n};\nexport {\n all,\n mode_default as default,\n distance,\n entries,\n get,\n mode,\n names,\n notes,\n relativeTonic,\n seventhChords,\n triads\n};\n//# sourceMappingURL=index.mjs.map","module.exports = range;\n\n/*\n range(0, 5); // [0, 1, 2, 3, 4]\n range(5); // [0, 1, 2, 3, 4]\n range(-5); // [0, -1, -2, -3, -4]\n range(0, 20, 5) // [0, 5, 10, 15]\n range(0, -20, -5) // [0, -5, -10, -15]\n*/\n\nfunction range(start, stop, step) {\n if (start != null && typeof start != 'number') {\n throw new Error('start must be a number or null');\n }\n if (stop != null && typeof stop != 'number') {\n throw new Error('stop must be a number or null');\n }\n if (step != null && typeof step != 'number') {\n throw new Error('step must be a number or null');\n }\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (step == null) {\n step = stop > start ? 1 : -1;\n }\n var toReturn = [];\n var increasing = start < stop; //← here’s the change\n for (; increasing ? start < stop : start > stop; start += step) {\n toReturn.push(start);\n }\n return toReturn;\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = difference;\n","import range from 'just-range';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport difference from 'lodash.difference';\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar SORTED_PITCHES = ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B'];\nvar ACCIDENTAL_PITCHES = ['Db', 'Eb', 'Gb', 'Ab', 'Bb'];\nvar PITCH_INDEXES = {\n C: 0,\n 'C#': 1,\n Db: 1,\n D: 2,\n 'D#': 3,\n Eb: 3,\n E: 4,\n F: 5,\n 'F#': 6,\n Gb: 6,\n G: 7,\n 'G#': 8,\n Ab: 8,\n A: 9,\n 'A#': 10,\n Bb: 10,\n B: 11\n};\nvar MIDI_NUMBER_C0 = 12;\nvar MIN_MIDI_NUMBER = MIDI_NUMBER_C0;\nvar MAX_MIDI_NUMBER = 127;\nvar NOTE_REGEX = /([a-g])([#b]?)(\\d+)/;\nvar NOTES_IN_OCTAVE = 12;\n\n// Converts string notes in scientific pitch notation to a MIDI number, or null.\n//\n// Example: \"c#0\" => 13, \"eb5\" => 75, \"abc\" => null\n//\n// References:\n// - http://www.flutopedia.com/octave_notation.htm\n// - https://github.com/danigb/tonal/blob/master/packages/note/index.js\nfunction fromNote(note) {\n if (!note) {\n throw Error('Invalid note argument');\n }\n var match = NOTE_REGEX.exec(note.toLowerCase());\n if (!match) {\n throw Error('Invalid note argument');\n }\n var _match = _slicedToArray(match, 4),\n letter = _match[1],\n accidental = _match[2],\n octave = _match[3];\n var pitchName = \"\".concat(letter.toUpperCase()).concat(accidental);\n var pitchIndex = PITCH_INDEXES[pitchName];\n if (pitchIndex == null) {\n throw Error('Invalid note argument');\n }\n return MIDI_NUMBER_C0 + pitchIndex + NOTES_IN_OCTAVE * parseInt(octave, 10);\n}\n\n//\n// Build cache for getAttributes\n//\nfunction buildMidiNumberAttributes(midiNumber) {\n var pitchIndex = (midiNumber - MIDI_NUMBER_C0) % NOTES_IN_OCTAVE;\n var octave = Math.floor((midiNumber - MIDI_NUMBER_C0) / NOTES_IN_OCTAVE);\n var pitchName = SORTED_PITCHES[pitchIndex];\n return {\n note: \"\".concat(pitchName).concat(octave),\n pitchName: pitchName,\n octave: octave,\n midiNumber: midiNumber,\n isAccidental: ACCIDENTAL_PITCHES.includes(pitchName)\n };\n}\nfunction buildMidiNumberAttributesCache() {\n return range(MIN_MIDI_NUMBER, MAX_MIDI_NUMBER + 1).reduce(function (cache, midiNumber) {\n cache[midiNumber] = buildMidiNumberAttributes(midiNumber);\n return cache;\n }, {});\n}\nvar midiNumberAttributesCache = buildMidiNumberAttributesCache();\n\n// Returns an object containing various attributes for a given MIDI number.\n// Throws error for invalid midiNumbers.\nfunction getAttributes(midiNumber) {\n var attrs = midiNumberAttributesCache[midiNumber];\n if (!attrs) {\n throw Error('Invalid MIDI number');\n }\n return attrs;\n}\n\n// Returns all MIDI numbers corresponding to natural notes, e.g. C and not C# or Bb.\nvar NATURAL_MIDI_NUMBERS = range(MIN_MIDI_NUMBER, MAX_MIDI_NUMBER + 1).filter(function (midiNumber) {\n return !getAttributes(midiNumber).isAccidental;\n});\nvar MidiNumbers = {\n fromNote: fromNote,\n getAttributes: getAttributes,\n MIN_MIDI_NUMBER: MIN_MIDI_NUMBER,\n MAX_MIDI_NUMBER: MAX_MIDI_NUMBER,\n NATURAL_MIDI_NUMBERS: NATURAL_MIDI_NUMBERS\n};\n\nvar middleC = 60;\nvar Key = /*#__PURE__*/function (_React$Component) {\n _inherits(Key, _React$Component);\n var _super = _createSuper(Key);\n function Key() {\n var _this;\n _classCallCheck(this, Key);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"onPlayNoteInput\", function () {\n _this.props.onPlayNoteInput(_this.props.midiNumber);\n });\n _defineProperty(_assertThisInitialized(_this), \"onStopNoteInput\", function () {\n _this.props.onStopNoteInput(_this.props.midiNumber);\n if (_this.props.onKeyMouseLeave) {\n _this.props.onKeyMouseLeave(_this.props.midiNumber);\n }\n });\n return _this;\n }\n _createClass(Key, [{\n key: \"getAbsoluteKeyPosition\",\n value:\n // Key position is represented by the number of natural key widths from the left\n function getAbsoluteKeyPosition(midiNumber) {\n var OCTAVE_WIDTH = 7;\n var _MidiNumbers$getAttri = MidiNumbers.getAttributes(midiNumber),\n octave = _MidiNumbers$getAttri.octave,\n pitchName = _MidiNumbers$getAttri.pitchName;\n var pitchPosition = this.props.pitchPositions[pitchName];\n var octavePosition = OCTAVE_WIDTH * octave;\n return pitchPosition + octavePosition;\n }\n }, {\n key: \"getRelativeKeyPosition\",\n value: function getRelativeKeyPosition(midiNumber) {\n return this.getAbsoluteKeyPosition(midiNumber) - this.getAbsoluteKeyPosition(this.props.noteRange.first);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props,\n naturalKeyWidth = _this$props.naturalKeyWidth,\n accidentalWidthRatio = _this$props.accidentalWidthRatio,\n midiNumber = _this$props.midiNumber,\n gliss = _this$props.gliss,\n useTouchEvents = _this$props.useTouchEvents,\n accidental = _this$props.accidental,\n active = _this$props.active,\n selected = _this$props.selected,\n disabled = _this$props.disabled,\n children = _this$props.children;\n var left = accidental ? ratioToPercentage(this.getRelativeKeyPosition(midiNumber) * naturalKeyWidth) : ratioToPercentage(this.getRelativeKeyPosition(midiNumber) * naturalKeyWidth);\n var width = ratioToPercentage(accidental ? accidentalWidthRatio * naturalKeyWidth : naturalKeyWidth);\n\n // Need to conditionally include/exclude handlers based on useTouchEvents,\n // because otherwise mobile taps double fire events.\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-midinumber\": midiNumber,\n className: classNames('ReactPiano__Key', {\n 'ReactPiano__Key--accidental': accidental,\n 'ReactPiano__Key--natural': !accidental,\n 'ReactPiano__Key--disabled': disabled,\n 'ReactPiano__Key--active': active,\n 'ReactPiano__Key--selected': selected,\n 'ReactPiano__Key--middleC': midiNumber === middleC\n }),\n style: {\n left: left,\n width: width\n },\n onDoubleClick: function onDoubleClick() {\n if (_this2.props.onDoubleClick) {\n _this2.props.onDoubleClick(midiNumber);\n }\n },\n onMouseDown: useTouchEvents ? null : this.onPlayNoteInput,\n onMouseUp: function onMouseUp() {\n if (_this2.props.onClick) {\n _this2.props.onClick(midiNumber);\n }\n if (!useTouchEvents) {\n _this2.onStopNoteInput();\n }\n },\n onMouseEnter: function onMouseEnter() {\n if (_this2.props.onKeyMouseEnter) {\n _this2.props.onKeyMouseEnter({\n accidental: accidental,\n left: left,\n midiNumber: midiNumber,\n width: width\n });\n }\n if (gliss) _this2.onPlayNoteInput();\n },\n onMouseLeave: this.onStopNoteInput,\n onTouchStart: useTouchEvents ? this.onPlayNoteInput : null,\n onTouchCancel: useTouchEvents ? this.onStopNoteInput : null,\n onTouchEnd: useTouchEvents ? this.onStopNoteInput : null\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"ReactPiano__NoteLabelContainer\"\n }, children));\n }\n }]);\n return Key;\n}(React.Component);\n_defineProperty(Key, \"propTypes\", {\n midiNumber: PropTypes.number.isRequired,\n naturalKeyWidth: PropTypes.number.isRequired,\n // Width as a ratio between 0 and 1\n gliss: PropTypes.bool.isRequired,\n useTouchEvents: PropTypes.bool.isRequired,\n accidental: PropTypes.bool.isRequired,\n active: PropTypes.bool.isRequired,\n selected: PropTypes.bool,\n disabled: PropTypes.bool.isRequired,\n onKeyMouseEnter: PropTypes.func,\n onKeyMouseLeave: PropTypes.func,\n onPlayNoteInput: PropTypes.func.isRequired,\n onStopNoteInput: PropTypes.func.isRequired,\n accidentalWidthRatio: PropTypes.number.isRequired,\n pitchPositions: PropTypes.object.isRequired,\n children: PropTypes.node\n});\n_defineProperty(Key, \"defaultProps\", {\n accidentalWidthRatio: 0.65,\n selected: false,\n onKeyMouseEnter: undefined,\n onKeyMouseLeave: undefined,\n pitchPositions: {\n C: 0,\n Db: 0.672,\n D: 1,\n Eb: 1.672,\n E: 2,\n F: 3,\n Gb: 3.672,\n G: 4,\n Ab: 4.672,\n A: 5,\n Bb: 5.672,\n B: 6\n }\n});\nfunction ratioToPercentage(ratio) {\n return \"\".concat(ratio * 100, \"%\");\n}\n\nvar Keyboard = /*#__PURE__*/function (_React$Component) {\n _inherits(Keyboard, _React$Component);\n var _super = _createSuper(Keyboard);\n function Keyboard() {\n _classCallCheck(this, Keyboard);\n return _super.apply(this, arguments);\n }\n _createClass(Keyboard, [{\n key: \"getMidiNumbers\",\n value:\n // Range of midi numbers on keyboard\n function getMidiNumbers() {\n return range(this.props.noteRange.first, this.props.noteRange.last + 1);\n }\n }, {\n key: \"getNaturalKeyCount\",\n value: function getNaturalKeyCount() {\n return this.getMidiNumbers().filter(function (number) {\n var _MidiNumbers$getAttri = MidiNumbers.getAttributes(number),\n isAccidental = _MidiNumbers$getAttri.isAccidental;\n return !isAccidental;\n }).length;\n }\n\n // Returns a ratio between 0 and 1\n }, {\n key: \"getNaturalKeyWidth\",\n value: function getNaturalKeyWidth() {\n return 1 / this.getNaturalKeyCount();\n }\n }, {\n key: \"getWidth\",\n value: function getWidth() {\n return this.props.width ? this.props.width : '100%';\n }\n }, {\n key: \"getHeight\",\n value: function getHeight() {\n if (!this.props.width) {\n return '100%';\n }\n var keyWidth = this.props.width * this.getNaturalKeyWidth();\n return \"\".concat(keyWidth / this.props.keyWidthToHeight, \"px\");\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this = this;\n var naturalKeyWidth = this.getNaturalKeyWidth();\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('ReactPiano__Keyboard', this.props.className),\n style: {\n width: this.getWidth(),\n height: this.getHeight()\n }\n }, this.getMidiNumbers().map(function (midiNumber) {\n var _MidiNumbers$getAttri2 = MidiNumbers.getAttributes(midiNumber),\n note = _MidiNumbers$getAttri2.note,\n isAccidental = _MidiNumbers$getAttri2.isAccidental;\n var isActive = !_this.props.disabled && _this.props.activeNotes.includes(midiNumber);\n var isSelected = _this.props.selectedNotes && _this.props.selectedNotes.includes(midiNumber);\n return /*#__PURE__*/React.createElement(Key, {\n accidental: isAccidental,\n active: isActive,\n selected: isSelected,\n disabled: _this.props.disabled,\n gliss: _this.props.gliss,\n key: midiNumber,\n midiNumber: midiNumber,\n naturalKeyWidth: naturalKeyWidth,\n noteRange: _this.props.noteRange,\n onClick: _this.props.onClick,\n onDoubleClick: _this.props.onDoubleClick,\n onKeyMouseEnter: _this.props.onKeyMouseEnter,\n onKeyMouseLeave: _this.props.onKeyMouseLeave,\n onPlayNoteInput: _this.props.onPlayNoteInput,\n onStopNoteInput: _this.props.onStopNoteInput,\n useTouchEvents: _this.props.useTouchEvents\n }, _this.props.disabled ? null : _this.props.renderNoteLabel({\n isActive: isActive,\n isAccidental: isAccidental,\n midiNumber: midiNumber\n }));\n }));\n }\n }]);\n return Keyboard;\n}(React.Component);\n_defineProperty(Keyboard, \"propTypes\", {\n noteRange: noteRangePropType,\n activeNotes: PropTypes.arrayOf(PropTypes.number),\n selectedNotes: PropTypes.arrayOf(PropTypes.number),\n onKeyMouseEnter: PropTypes.func,\n onKeyMouseLeave: PropTypes.func,\n onPlayNoteInput: PropTypes.func.isRequired,\n onStopNoteInput: PropTypes.func.isRequired,\n renderNoteLabel: PropTypes.func.isRequired,\n keyWidthToHeight: PropTypes.number.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n gliss: PropTypes.bool,\n useTouchEvents: PropTypes.bool,\n // If width is not provided, must have fixed width and height in parent container\n width: PropTypes.number\n});\n_defineProperty(Keyboard, \"defaultProps\", {\n disabled: false,\n gliss: false,\n keyWidthToHeight: 0.33,\n onKeyMouseEnter: undefined,\n onKeyMouseLeave: undefined,\n renderNoteLabel: function renderNoteLabel() {},\n useTouchEvents: false\n});\nfunction isNaturalMidiNumber(value) {\n if (typeof value !== 'number') {\n return false;\n }\n return MidiNumbers.NATURAL_MIDI_NUMBERS.includes(value);\n}\nfunction noteRangePropType(props, propName, componentName) {\n var _props$propName = props[propName],\n first = _props$propName.first,\n last = _props$propName.last;\n if (!first || !last) {\n return new Error(\"Invalid prop \".concat(propName, \" supplied to \").concat(componentName, \". \").concat(propName, \" must be an object with .first and .last values.\"));\n }\n if (!isNaturalMidiNumber(first) || !isNaturalMidiNumber(last)) {\n return new Error(\"Invalid prop \".concat(propName, \" supplied to \").concat(componentName, \". \").concat(propName, \" values must be valid MIDI numbers, and should not be accidentals (sharp or flat notes).\"));\n }\n if (first >= last) {\n return new Error(\"Invalid prop \".concat(propName, \" supplied to \").concat(componentName, \". \").concat(propName, \".first must be smaller than \").concat(propName, \".last.\"));\n }\n}\n\nvar ControlledPiano = /*#__PURE__*/function (_React$Component) {\n _inherits(ControlledPiano, _React$Component);\n var _super = _createSuper(ControlledPiano);\n function ControlledPiano() {\n var _this;\n _classCallCheck(this, ControlledPiano);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isMouseDown: false,\n useTouchEvents: false\n });\n _defineProperty(_assertThisInitialized(_this), \"handleNoteChanges\", function (_ref) {\n var prevActiveNotes = _ref.prevActiveNotes,\n nextActiveNotes = _ref.nextActiveNotes;\n if (_this.props.disabled) {\n return;\n }\n var notesStopped = difference(prevActiveNotes, nextActiveNotes);\n var notesStarted = difference(nextActiveNotes, prevActiveNotes);\n notesStarted.forEach(function (midiNumber) {\n _this.props.playNote(midiNumber);\n });\n notesStopped.forEach(function (midiNumber) {\n _this.props.stopNote(midiNumber);\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"getMidiNumberForKey\", function (key) {\n if (!_this.props.keyboardShortcuts) {\n return null;\n }\n var shortcut = _this.props.keyboardShortcuts.find(function (sh) {\n return sh.key === key;\n });\n return shortcut && shortcut.midiNumber;\n });\n _defineProperty(_assertThisInitialized(_this), \"getKeyForMidiNumber\", function (midiNumber) {\n if (!_this.props.keyboardShortcuts) {\n return null;\n }\n var shortcut = _this.props.keyboardShortcuts.find(function (sh) {\n return sh.midiNumber === midiNumber;\n });\n return shortcut && shortcut.key;\n });\n _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n // Don't conflict with existing combinations like ctrl + t\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n var midiNumber = _this.getMidiNumberForKey(event.key);\n if (midiNumber) {\n _this.onPlayNoteInput(midiNumber);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onKeyUp\", function (event) {\n // This *should* also check for event.ctrlKey || event.metaKey || event.ShiftKey like onKeyDown does,\n // but at least on Mac Chrome, when mashing down many alphanumeric keystrokes at once,\n // ctrlKey is fired unexpectedly, which would cause onStopNote to NOT be fired, which causes problematic\n // lingering notes. Since it's fairly safe to call onStopNote even when not necessary,\n // the ctrl/meta/shift check is removed to fix that issue.\n var midiNumber = _this.getMidiNumberForKey(event.key);\n if (midiNumber) {\n _this.onStopNoteInput(midiNumber);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onPlayNoteInput\", function (midiNumber) {\n if (_this.props.disabled) {\n return;\n }\n // Pass in previous activeNotes for recording functionality\n _this.props.onPlayNoteInput(midiNumber, _this.props.activeNotes);\n });\n _defineProperty(_assertThisInitialized(_this), \"onStopNoteInput\", function (midiNumber) {\n if (_this.props.disabled) {\n return;\n }\n // Pass in previous activeNotes for recording functionality\n _this.props.onStopNoteInput(midiNumber, _this.props.activeNotes);\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function () {\n _this.setState({\n isMouseDown: true\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function () {\n _this.setState({\n isMouseDown: false\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function () {\n _this.setState({\n useTouchEvents: true\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderNoteLabel\", function (_ref2) {\n var midiNumber = _ref2.midiNumber,\n isActive = _ref2.isActive,\n isAccidental = _ref2.isAccidental;\n var keyboardShortcut = _this.getKeyForMidiNumber(midiNumber);\n return _this.props.renderNoteLabel({\n keyboardShortcut: keyboardShortcut,\n midiNumber: midiNumber,\n isActive: isActive,\n isAccidental: isAccidental\n });\n });\n return _this;\n }\n _createClass(ControlledPiano, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n window.addEventListener('keydown', this.onKeyDown);\n window.addEventListener('keyup', this.onKeyUp);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('keydown', this.onKeyDown);\n window.removeEventListener('keyup', this.onKeyUp);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (this.props.activeNotes !== prevProps.activeNotes) {\n this.handleNoteChanges({\n prevActiveNotes: prevProps.activeNotes || [],\n nextActiveNotes: this.props.activeNotes || []\n });\n }\n }\n\n // This function is responsible for diff'ing activeNotes\n // and playing or stopping notes accordingly.\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n width: '100%',\n height: '100%'\n },\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n onTouchStart: this.onTouchStart,\n \"data-testid\": \"container\"\n }, /*#__PURE__*/React.createElement(Keyboard, {\n activeNotes: this.props.activeNotes,\n selectedNotes: this.props.selectedNotes,\n className: this.props.className,\n disabled: this.props.disabled,\n gliss: this.state.isMouseDown,\n keyWidthToHeight: this.props.keyWidthToHeight,\n noteRange: this.props.noteRange,\n onClick: this.props.onClick,\n onDoubleClick: this.props.onDoubleClick,\n onKeyMouseEnter: this.props.onKeyMouseEnter,\n onKeyMouseLeave: this.props.onKeyMouseLeave,\n onPlayNoteInput: this.onPlayNoteInput,\n onStopNoteInput: this.onStopNoteInput,\n renderNoteLabel: this.renderNoteLabel,\n useTouchEvents: this.state.useTouchEvents,\n width: this.props.width\n }));\n }\n }]);\n return ControlledPiano;\n}(React.Component);\n_defineProperty(ControlledPiano, \"propTypes\", {\n noteRange: PropTypes.object.isRequired,\n activeNotes: PropTypes.arrayOf(PropTypes.number.isRequired).isRequired,\n selectedNotes: PropTypes.arrayOf(PropTypes.number),\n playNote: PropTypes.func.isRequired,\n stopNote: PropTypes.func.isRequired,\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onKeyMouseEnter: PropTypes.func,\n onKeyMouseLeave: PropTypes.func,\n onPlayNoteInput: PropTypes.func.isRequired,\n onStopNoteInput: PropTypes.func.isRequired,\n renderNoteLabel: PropTypes.func.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n width: PropTypes.number,\n keyWidthToHeight: PropTypes.number,\n keyboardShortcuts: PropTypes.arrayOf(PropTypes.shape({\n key: PropTypes.string.isRequired,\n midiNumber: PropTypes.number.isRequired\n }))\n});\n_defineProperty(ControlledPiano, \"defaultProps\", {\n onKeyMouseEnter: undefined,\n onKeyMouseLeave: undefined,\n renderNoteLabel: function renderNoteLabel(_ref3) {\n var keyboardShortcut = _ref3.keyboardShortcut,\n midiNumber = _ref3.midiNumber,\n isActive = _ref3.isActive,\n isAccidental = _ref3.isAccidental;\n return keyboardShortcut ? /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('ReactPiano__NoteLabel', {\n 'ReactPiano__NoteLabel--active': isActive,\n 'ReactPiano__NoteLabel--accidental': isAccidental,\n 'ReactPiano__NoteLabel--natural': !isAccidental\n })\n }, keyboardShortcut) : null;\n }\n});\n\nvar _excluded = [\"activeNotes\", \"selectedNotes\", \"onPlayNoteInput\", \"onStopNoteInput\"];\nvar Piano = /*#__PURE__*/function (_React$Component) {\n _inherits(Piano, _React$Component);\n var _super = _createSuper(Piano);\n function Piano() {\n var _this;\n _classCallCheck(this, Piano);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n activeNotes: _this.props.activeNotes || []\n });\n _defineProperty(_assertThisInitialized(_this), \"handlePlayNoteInput\", function (midiNumber) {\n _this.setState(function (prevState) {\n // Need to be handled inside setState in order to set prevActiveNotes without\n // race conditions.\n if (_this.props.onPlayNoteInput) {\n _this.props.onPlayNoteInput(midiNumber, {\n prevActiveNotes: prevState.activeNotes\n });\n }\n\n // Don't append note to activeNotes if it's already present\n if (prevState.activeNotes.includes(midiNumber)) {\n return null;\n }\n return {\n activeNotes: prevState.activeNotes.concat(midiNumber)\n };\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"handleStopNoteInput\", function (midiNumber) {\n _this.setState(function (prevState) {\n // Need to be handled inside setState in order to set prevActiveNotes without\n // race conditions.\n if (_this.props.onStopNoteInput) {\n _this.props.onStopNoteInput(midiNumber, {\n prevActiveNotes: _this.state.activeNotes\n });\n }\n return {\n activeNotes: prevState.activeNotes.filter(function (note) {\n return midiNumber !== note;\n })\n };\n });\n });\n return _this;\n }\n _createClass(Piano, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // Make activeNotes \"controllable\" by using internal\n // state by default, but allowing prop overrides.\n if (prevProps.activeNotes !== this.props.activeNotes && this.state.activeNotes !== this.props.activeNotes) {\n this.setState({\n activeNotes: this.props.activeNotes || []\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n activeNotes = _this$props.activeNotes,\n selectedNotes = _this$props.selectedNotes,\n onPlayNoteInput = _this$props.onPlayNoteInput,\n onStopNoteInput = _this$props.onStopNoteInput,\n otherProps = _objectWithoutProperties(_this$props, _excluded);\n return /*#__PURE__*/React.createElement(ControlledPiano, _extends({\n activeNotes: this.state.activeNotes,\n selectedNotes: selectedNotes,\n onPlayNoteInput: this.handlePlayNoteInput,\n onStopNoteInput: this.handleStopNoteInput\n }, otherProps));\n }\n }]);\n return Piano;\n}(React.Component);\n_defineProperty(Piano, \"propTypes\", {\n noteRange: PropTypes.object.isRequired,\n activeNotes: PropTypes.arrayOf(PropTypes.number.isRequired),\n selectedNotes: PropTypes.arrayOf(PropTypes.number),\n playNote: PropTypes.func.isRequired,\n stopNote: PropTypes.func.isRequired,\n onPlayNoteInput: PropTypes.func,\n onStopNoteInput: PropTypes.func,\n renderNoteLabel: PropTypes.func,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n width: PropTypes.number,\n keyWidthToHeight: PropTypes.number,\n keyboardShortcuts: PropTypes.arrayOf(PropTypes.shape({\n key: PropTypes.string.isRequired,\n midiNumber: PropTypes.number.isRequired\n }))\n});\n\nfunction createKeyboardShortcuts(_ref) {\n var firstNote = _ref.firstNote,\n lastNote = _ref.lastNote,\n keyboardConfig = _ref.keyboardConfig;\n var currentMidiNumber = firstNote;\n var naturalKeyIndex = 0;\n var keyboardShortcuts = [];\n while (\n // There are still keys to be assigned\n naturalKeyIndex < keyboardConfig.length &&\n // Note to be assigned does not surpass range\n currentMidiNumber <= lastNote) {\n var key = keyboardConfig[naturalKeyIndex];\n var _MidiNumbers$getAttri = MidiNumbers.getAttributes(currentMidiNumber),\n isAccidental = _MidiNumbers$getAttri.isAccidental;\n if (isAccidental) {\n keyboardShortcuts.push({\n key: key.flat,\n midiNumber: currentMidiNumber\n });\n } else {\n keyboardShortcuts.push({\n key: key.natural,\n midiNumber: currentMidiNumber\n });\n naturalKeyIndex += 1;\n }\n currentMidiNumber += 1;\n }\n return keyboardShortcuts;\n}\nvar KeyboardShortcuts = {\n create: createKeyboardShortcuts,\n // Preset configurations\n BOTTOM_ROW: [{\n natural: 'z',\n flat: 'a',\n sharp: 's'\n }, {\n natural: 'x',\n flat: 's',\n sharp: 'd'\n }, {\n natural: 'c',\n flat: 'd',\n sharp: 'f'\n }, {\n natural: 'v',\n flat: 'f',\n sharp: 'g'\n }, {\n natural: 'b',\n flat: 'g',\n sharp: 'h'\n }, {\n natural: 'n',\n flat: 'h',\n sharp: 'j'\n }, {\n natural: 'm',\n flat: 'j',\n sharp: 'k'\n }, {\n natural: ',',\n flat: 'k',\n sharp: 'l'\n }, {\n natural: '.',\n flat: 'l',\n sharp: ';'\n }, {\n natural: '/',\n flat: ';',\n sharp: \"'\"\n }],\n HOME_ROW: [{\n natural: 'a',\n flat: 'q',\n sharp: 'w'\n }, {\n natural: 's',\n flat: 'w',\n sharp: 'e'\n }, {\n natural: 'd',\n flat: 'e',\n sharp: 'r'\n }, {\n natural: 'f',\n flat: 'r',\n sharp: 't'\n }, {\n natural: 'g',\n flat: 't',\n sharp: 'y'\n }, {\n natural: 'h',\n flat: 'y',\n sharp: 'u'\n }, {\n natural: 'j',\n flat: 'u',\n sharp: 'i'\n }, {\n natural: 'k',\n flat: 'i',\n sharp: 'o'\n }, {\n natural: 'l',\n flat: 'o',\n sharp: 'p'\n }, {\n natural: ';',\n flat: 'p',\n sharp: '['\n }, {\n natural: \"'\",\n flat: '[',\n sharp: ']'\n }],\n QWERTY_ROW: [{\n natural: 'q',\n flat: '1',\n sharp: '2'\n }, {\n natural: 'w',\n flat: '2',\n sharp: '3'\n }, {\n natural: 'e',\n flat: '3',\n sharp: '4'\n }, {\n natural: 'r',\n flat: '4',\n sharp: '5'\n }, {\n natural: 't',\n flat: '5',\n sharp: '6'\n }, {\n natural: 'y',\n flat: '6',\n sharp: '7'\n }, {\n natural: 'u',\n flat: '7',\n sharp: '8'\n }, {\n natural: 'i',\n flat: '8',\n sharp: '9'\n }, {\n natural: 'o',\n flat: '9',\n sharp: '0'\n }, {\n natural: 'p',\n flat: '0',\n sharp: '-'\n }, {\n natural: '[',\n flat: '-',\n sharp: '='\n }]\n};\n\nexport { ControlledPiano, Piano, Keyboard, KeyboardShortcuts, MidiNumbers };\n//# sourceMappingURL=react-piano.esm.js.map\n","'use strict'\n\n// DECODE UTILITIES\nfunction b64ToUint6 (nChr) {\n return nChr > 64 && nChr < 91 ? nChr - 65\n : nChr > 96 && nChr < 123 ? nChr - 71\n : nChr > 47 && nChr < 58 ? nChr + 4\n : nChr === 43 ? 62\n : nChr === 47 ? 63\n : 0\n}\n\n// Decode Base64 to Uint8Array\n// ---------------------------\nfunction decode (sBase64, nBlocksSize) {\n var sB64Enc = sBase64.replace(/[^A-Za-z0-9\\+\\/]/g, '')\n var nInLen = sB64Enc.length\n var nOutLen = nBlocksSize\n ? Math.ceil((nInLen * 3 + 1 >> 2) / nBlocksSize) * nBlocksSize\n : nInLen * 3 + 1 >> 2\n var taBytes = new Uint8Array(nOutLen)\n\n for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n nMod4 = nInIdx & 3\n nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\n taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255\n }\n nUint24 = 0\n }\n }\n return taBytes\n}\n\nmodule.exports = { decode: decode }\n","/* global XMLHttpRequest */\n'use strict'\n\n/**\n * Given a url and a return type, returns a promise to the content of the url\n * Basically it wraps a XMLHttpRequest into a Promise\n *\n * @param {String} url\n * @param {String} type - can be 'text' or 'arraybuffer'\n * @return {Promise}\n */\nmodule.exports = function (url, type) {\n return new Promise(function (done, reject) {\n var req = new XMLHttpRequest()\n if (type) req.responseType = type\n\n req.open('GET', url)\n req.onload = function () {\n req.status === 200 ? done(req.response) : reject(Error(req.statusText))\n }\n req.onerror = function () { reject(Error('Network Error')) }\n req.send()\n })\n}\n","'use strict'\n\nvar base64 = require('./base64')\nvar fetch = require('./fetch')\n\n// Given a regex, return a function that test if against a string\nfunction fromRegex (r) {\n return function (o) { return typeof o === 'string' && r.test(o) }\n}\n// Try to apply a prefix to a name\nfunction prefix (pre, name) {\n return typeof pre === 'string' ? pre + name\n : typeof pre === 'function' ? pre(name)\n : name\n}\n\n/**\n * Load one or more audio files\n *\n *\n * Possible option keys:\n *\n * - __from__ {Function|String}: a function or string to convert from file names to urls.\n * If is a string it will be prefixed to the name:\n * `load(ac, 'snare.mp3', { from: 'http://audio.net/samples/' })`\n * If it's a function it receives the file name and should return the url as string.\n * - __only__ {Array} - when loading objects, if provided, only the given keys\n * will be included in the decoded object:\n * `load(ac, 'piano.json', { only: ['C2', 'D2'] })`\n *\n * @param {AudioContext} ac - the audio context\n * @param {Object} source - the object to be loaded\n * @param {Object} options - (Optional) the load options for that object\n * @param {Object} defaultValue - (Optional) the default value to return as\n * in a promise if not valid loader found\n */\nfunction load (ac, source, options, defVal) {\n var loader =\n // Basic audio loading\n isArrayBuffer(source) ? loadArrayBuffer\n : isAudioFileName(source) ? loadAudioFile\n : isPromise(source) ? loadPromise\n // Compound objects\n : isArray(source) ? loadArrayData\n : isObject(source) ? loadObjectData\n : isJsonFileName(source) ? loadJsonFile\n // Base64 encoded audio\n : isBase64Audio(source) ? loadBase64Audio\n : isJsFileName(source) ? loadMidiJSFile\n : null\n\n var opts = options || {}\n return loader ? loader(ac, source, opts)\n : defVal ? Promise.resolve(defVal)\n : Promise.reject('Source not valid (' + source + ')')\n}\nload.fetch = fetch\n\n// BASIC AUDIO LOADING\n// ===================\n\n// Load (decode) an array buffer\nfunction isArrayBuffer (o) { return o instanceof ArrayBuffer }\nfunction loadArrayBuffer (ac, array, options) {\n return new Promise(function (done, reject) {\n ac.decodeAudioData(array,\n function (buffer) { done(buffer) },\n function () { reject(\"Can't decode audio data (\" + array.slice(0, 30) + '...)') }\n )\n })\n}\n\n// Load an audio filename\nvar isAudioFileName = fromRegex(/\\.(mp3|wav|ogg)(\\?.*)?$/i)\nfunction loadAudioFile (ac, name, options) {\n var url = prefix(options.from, name)\n return load(ac, load.fetch(url, 'arraybuffer'), options)\n}\n\n// Load the result of a promise\nfunction isPromise (o) { return o && typeof o.then === 'function' }\nfunction loadPromise (ac, promise, options) {\n return promise.then(function (value) {\n return load(ac, value, options)\n })\n}\n\n// COMPOUND OBJECTS\n// ================\n\n// Try to load all the items of an array\nvar isArray = Array.isArray\nfunction loadArrayData (ac, array, options) {\n return Promise.all(array.map(function (data) {\n return load(ac, data, options, data)\n }))\n}\n\n// Try to load all the values of a key/value object\nfunction isObject (o) { return o && typeof o === 'object' }\nfunction loadObjectData (ac, obj, options) {\n var dest = {}\n var promises = Object.keys(obj).map(function (key) {\n if (options.only && options.only.indexOf(key) === -1) return null\n var value = obj[key]\n return load(ac, value, options, value).then(function (audio) {\n dest[key] = audio\n })\n })\n return Promise.all(promises).then(function () { return dest })\n}\n\n// Load the content of a JSON file\nvar isJsonFileName = fromRegex(/\\.json(\\?.*)?$/i)\nfunction loadJsonFile (ac, name, options) {\n var url = prefix(options.from, name)\n return load(ac, load.fetch(url, 'text').then(JSON.parse), options)\n}\n\n// BASE64 ENCODED FORMATS\n// ======================\n\n// Load strings with Base64 encoded audio\nvar isBase64Audio = fromRegex(/^data:audio/)\nfunction loadBase64Audio (ac, source, options) {\n var i = source.indexOf(',')\n return load(ac, base64.decode(source.slice(i + 1)).buffer, options)\n}\n\n// Load .js files with MidiJS soundfont prerendered audio\nvar isJsFileName = fromRegex(/\\.js(\\?.*)?$/i)\nfunction loadMidiJSFile (ac, name, options) {\n var url = prefix(options.from, name)\n return load(ac, load.fetch(url, 'text').then(midiJsToJson), options)\n}\n\n// convert a MIDI.js javascript soundfont file to json\nfunction midiJsToJson (data) {\n var begin = data.indexOf('MIDI.Soundfont.')\n if (begin < 0) throw Error('Invalid MIDI.js Soundfont format')\n begin = data.indexOf('=', begin) + 2\n var end = data.lastIndexOf(',')\n return JSON.parse(data.slice(begin, end) + '}')\n}\n\nif (typeof module === 'object' && module.exports) module.exports = load\nif (typeof window !== 'undefined') window.loadAudio = load\n","module.exports = ADSR\n\nfunction ADSR(audioContext){\n var node = audioContext.createGain()\n\n var voltage = node._voltage = getVoltage(audioContext)\n var value = scale(voltage)\n var startValue = scale(voltage)\n var endValue = scale(voltage)\n\n node._startAmount = scale(startValue)\n node._endAmount = scale(endValue)\n\n node._multiplier = scale(value)\n node._multiplier.connect(node)\n node._startAmount.connect(node)\n node._endAmount.connect(node)\n\n node.value = value.gain\n node.startValue = startValue.gain\n node.endValue = endValue.gain\n\n node.startValue.value = 0\n node.endValue.value = 0\n\n Object.defineProperties(node, props)\n return node\n}\n\nvar props = {\n\n attack: { value: 0, writable: true },\n decay: { value: 0, writable: true },\n sustain: { value: 1, writable: true },\n release: {value: 0, writable: true },\n\n getReleaseDuration: {\n value: function(){\n return this.release\n }\n },\n\n start: {\n value: function(at){\n var target = this._multiplier.gain\n var startAmount = this._startAmount.gain\n var endAmount = this._endAmount.gain\n\n this._voltage.start(at)\n this._decayFrom = this._decayFrom = at+this.attack\n this._startedAt = at\n\n var sustain = this.sustain\n\n target.cancelScheduledValues(at)\n startAmount.cancelScheduledValues(at)\n endAmount.cancelScheduledValues(at)\n\n endAmount.setValueAtTime(0, at)\n\n if (this.attack){\n target.setValueAtTime(0, at)\n target.linearRampToValueAtTime(1, at + this.attack)\n\n startAmount.setValueAtTime(1, at)\n startAmount.linearRampToValueAtTime(0, at + this.attack)\n } else {\n target.setValueAtTime(1, at)\n startAmount.setValueAtTime(0, at)\n }\n\n if (this.decay){\n target.setTargetAtTime(sustain, this._decayFrom, getTimeConstant(this.decay))\n }\n }\n },\n\n stop: {\n value: function(at, isTarget){\n if (isTarget){\n at = at - this.release\n }\n\n var endTime = at + this.release\n if (this.release){\n\n var target = this._multiplier.gain\n var startAmount = this._startAmount.gain\n var endAmount = this._endAmount.gain\n\n target.cancelScheduledValues(at)\n startAmount.cancelScheduledValues(at)\n endAmount.cancelScheduledValues(at)\n\n var expFalloff = getTimeConstant(this.release)\n\n // truncate attack (required as linearRamp is removed by cancelScheduledValues)\n if (this.attack && at < this._decayFrom){\n var valueAtTime = getValue(0, 1, this._startedAt, this._decayFrom, at)\n target.linearRampToValueAtTime(valueAtTime, at)\n startAmount.linearRampToValueAtTime(1-valueAtTime, at)\n startAmount.setTargetAtTime(0, at, expFalloff)\n }\n\n endAmount.setTargetAtTime(1, at, expFalloff)\n target.setTargetAtTime(0, at, expFalloff)\n }\n\n this._voltage.stop(endTime)\n return endTime\n }\n },\n\n onended: {\n get: function(){\n return this._voltage.onended\n },\n set: function(value){\n this._voltage.onended = value\n }\n }\n\n}\n\nvar flat = new Float32Array([1,1])\nfunction getVoltage(context){\n var voltage = context.createBufferSource()\n var buffer = context.createBuffer(1, 2, context.sampleRate)\n buffer.getChannelData(0).set(flat)\n voltage.buffer = buffer\n voltage.loop = true\n return voltage\n}\n\nfunction scale(node){\n var gain = node.context.createGain()\n node.connect(gain)\n return gain\n}\n\nfunction getTimeConstant(time){\n return Math.log(time+1)/Math.log(100)\n}\n\nfunction getValue(start, end, fromTime, toTime, at){\n var difference = end - start\n var time = toTime - fromTime\n var truncateTime = at - fromTime\n var phase = truncateTime / time\n var value = start + phase * difference\n\n if (value <= start) {\n value = start\n }\n if (value >= end) {\n value = end\n }\n\n return value\n}\n","/* global AudioBuffer */\n'use strict'\n\nvar ADSR = require('adsr')\n\nvar EMPTY = {}\nvar DEFAULTS = {\n gain: 1,\n attack: 0.01,\n decay: 0.1,\n sustain: 0.9,\n release: 0.3,\n loop: false,\n cents: 0,\n loopStart: 0,\n loopEnd: 0\n}\n\n/**\n * Create a sample player.\n *\n * @param {AudioContext} ac - the audio context\n * @param {ArrayBuffer|Object<String,ArrayBuffer>} source\n * @param {Onject} options - (Optional) an options object\n * @return {player} the player\n * @example\n * var SamplePlayer = require('sample-player')\n * var ac = new AudioContext()\n * var snare = SamplePlayer(ac, <AudioBuffer>)\n * snare.play()\n */\nfunction SamplePlayer (ac, source, options) {\n var connected = false\n var nextId = 0\n var tracked = {}\n var out = ac.createGain()\n out.gain.value = 1\n\n var opts = Object.assign({}, DEFAULTS, options)\n\n /**\n * @namespace\n */\n var player = { context: ac, out: out, opts: opts }\n if (source instanceof AudioBuffer) player.buffer = source\n else player.buffers = source\n\n /**\n * Start a sample buffer.\n *\n * The returned object has a function `stop(when)` to stop the sound.\n *\n * @param {String} name - the name of the buffer. If the source of the\n * SamplePlayer is one sample buffer, this parameter is not required\n * @param {Float} when - (Optional) when to start (current time if by default)\n * @param {Object} options - additional sample playing options\n * @return {AudioNode} an audio node with a `stop` function\n * @example\n * var sample = player(ac, <AudioBuffer>).connect(ac.destination)\n * sample.start()\n * sample.start(5, { gain: 0.7 }) // name not required since is only one AudioBuffer\n * @example\n * var drums = player(ac, { snare: <AudioBuffer>, kick: <AudioBuffer>, ... }).connect(ac.destination)\n * drums.start('snare')\n * drums.start('snare', 0, { gain: 0.3 })\n */\n player.start = function (name, when, options) {\n // if only one buffer, reorder arguments\n if (player.buffer && name !== null) return player.start(null, name, when)\n\n var buffer = name ? player.buffers[name] : player.buffer\n if (!buffer) {\n console.warn('Buffer ' + name + ' not found.')\n return\n } else if (!connected) {\n console.warn('SamplePlayer not connected to any node.')\n return\n }\n\n var opts = options || EMPTY\n when = Math.max(ac.currentTime, when || 0)\n player.emit('start', when, name, opts)\n var node = createNode(name, buffer, opts)\n node.id = track(name, node)\n node.env.start(when)\n node.source.start(when)\n player.emit('started', when, node.id, node)\n if (opts.duration) node.stop(when + opts.duration)\n return node\n }\n\n // NOTE: start will be override so we can't copy the function reference\n // this is obviously not a good design, so this code will be gone soon.\n /**\n * An alias for `player.start`\n * @see player.start\n * @since 0.3.0\n */\n player.play = function (name, when, options) {\n return player.start(name, when, options)\n }\n\n /**\n * Stop some or all samples\n *\n * @param {Float} when - (Optional) an absolute time in seconds (or currentTime\n * if not specified)\n * @param {Array} nodes - (Optional) an array of nodes or nodes ids to stop\n * @return {Array} an array of ids of the stoped samples\n *\n * @example\n * var longSound = player(ac, <AudioBuffer>).connect(ac.destination)\n * longSound.start(ac.currentTime)\n * longSound.start(ac.currentTime + 1)\n * longSound.start(ac.currentTime + 2)\n * longSound.stop(ac.currentTime + 3) // stop the three sounds\n */\n player.stop = function (when, ids) {\n var node\n ids = ids || Object.keys(tracked)\n return ids.map(function (id) {\n node = tracked[id]\n if (!node) return null\n node.stop(when)\n return node.id\n })\n }\n /**\n * Connect the player to a destination node\n *\n * @param {AudioNode} destination - the destination node\n * @return {AudioPlayer} the player\n * @chainable\n * @example\n * var sample = player(ac, <AudioBuffer>).connect(ac.destination)\n */\n player.connect = function (dest) {\n connected = true\n out.connect(dest)\n return player\n }\n\n player.emit = function (event, when, obj, opts) {\n if (player.onevent) player.onevent(event, when, obj, opts)\n var fn = player['on' + event]\n if (fn) fn(when, obj, opts)\n }\n\n return player\n\n // =============== PRIVATE FUNCTIONS ============== //\n\n function track (name, node) {\n node.id = nextId++\n tracked[node.id] = node\n node.source.onended = function () {\n var now = ac.currentTime\n node.source.disconnect()\n node.env.disconnect()\n node.disconnect()\n player.emit('ended', now, node.id, node)\n }\n return node.id\n }\n\n function createNode (name, buffer, options) {\n var node = ac.createGain()\n node.gain.value = 0 // the envelope will control the gain\n node.connect(out)\n\n node.env = envelope(ac, options, opts)\n node.env.connect(node.gain)\n\n node.source = ac.createBufferSource()\n node.source.buffer = buffer\n node.source.connect(node)\n node.source.loop = options.loop || opts.loop\n node.source.playbackRate.value = centsToRate(options.cents || opts.cents)\n node.source.loopStart = options.loopStart || opts.loopStart\n node.source.loopEnd = options.loopEnd || opts.loopEnd\n node.stop = function (when) {\n var time = when || ac.currentTime\n player.emit('stop', time, name)\n var stopAt = node.env.stop(time)\n node.source.stop(stopAt)\n }\n return node\n }\n}\n\nfunction isNum (x) { return typeof x === 'number' }\nvar PARAMS = ['attack', 'decay', 'sustain', 'release']\nfunction envelope (ac, options, opts) {\n var env = ADSR(ac)\n var adsr = options.adsr || opts.adsr\n PARAMS.forEach(function (name, i) {\n if (adsr) env[name] = adsr[i]\n else env[name] = options[name] || opts[name]\n })\n env.value.value = isNum(options.gain) ? options.gain\n : isNum(opts.gain) ? opts.gain : 1\n return env\n}\n\n/*\n * Get playback rate for a given pitch change (in cents)\n * Basic [math](http://www.birdsoft.demon.co.uk/music/samplert.htm):\n * f2 = f1 * 2^( C / 1200 )\n */\nfunction centsToRate (cents) { return cents ? Math.pow(2, cents / 1200) : 1 }\n\nmodule.exports = SamplePlayer\n","\nmodule.exports = function (player) {\n /**\n * Adds a listener of an event\n * @chainable\n * @param {String} event - the event name\n * @param {Function} callback - the event handler\n * @return {SamplePlayer} the player\n * @example\n * player.on('start', function(time, note) {\n * console.log(time, note)\n * })\n */\n player.on = function (event, cb) {\n if (arguments.length === 1 && typeof event === 'function') return player.on('event', event)\n var prop = 'on' + event\n var old = player[prop]\n player[prop] = old ? chain(old, cb) : cb\n return player\n }\n return player\n}\n\nfunction chain (fn1, fn2) {\n return function (a, b, c, d) { fn1(a, b, c, d); fn2(a, b, c, d) }\n}\n","'use strict'\n\nvar REGEX = /^([a-gA-G])(#{1,}|b{1,}|x{1,}|)(-?\\d*)\\s*(.*)\\s*$/\n/**\n * A regex for matching note strings in scientific notation.\n *\n * @name regex\n * @function\n * @return {RegExp} the regexp used to parse the note name\n *\n * The note string should have the form `letter[accidentals][octave][element]`\n * where:\n *\n * - letter: (Required) is a letter from A to G either upper or lower case\n * - accidentals: (Optional) can be one or more `b` (flats), `#` (sharps) or `x` (double sharps).\n * They can NOT be mixed.\n * - octave: (Optional) a positive or negative integer\n * - element: (Optional) additionally anything after the duration is considered to\n * be the element name (for example: 'C2 dorian')\n *\n * The executed regex contains (by array index):\n *\n * - 0: the complete string\n * - 1: the note letter\n * - 2: the optional accidentals\n * - 3: the optional octave\n * - 4: the rest of the string (trimmed)\n *\n * @example\n * var parser = require('note-parser')\n * parser.regex.exec('c#4')\n * // => ['c#4', 'c', '#', '4', '']\n * parser.regex.exec('c#4 major')\n * // => ['c#4major', 'c', '#', '4', 'major']\n * parser.regex().exec('CMaj7')\n * // => ['CMaj7', 'C', '', '', 'Maj7']\n */\nfunction regex () { return REGEX }\n\nvar SEMITONES = [0, 2, 4, 5, 7, 9, 11]\n/**\n * Parse a note name in scientific notation an return it's components,\n * and some numeric properties including midi number and frequency.\n *\n * @name parse\n * @function\n * @param {String} note - the note string to be parsed\n * @param {Boolean} isTonic - true if the note is the tonic of something.\n * If true, en extra tonicOf property is returned. It's false by default.\n * @param {Float} tunning - The frequency of A4 note to calculate frequencies.\n * By default it 440.\n * @return {Object} the parsed note name or null if not a valid note\n *\n * The parsed note name object will ALWAYS contains:\n * - letter: the uppercase letter of the note\n * - acc: the accidentals of the note (only sharps or flats)\n * - pc: the pitch class (letter + acc)\n * - step: s a numeric representation of the letter. It's an integer from 0 to 6\n * where 0 = C, 1 = D ... 6 = B\n * - alt: a numeric representation of the accidentals. 0 means no alteration,\n * positive numbers are for sharps and negative for flats\n * - chroma: a numeric representation of the pitch class. It's like midi for\n * pitch classes. 0 = C, 1 = C#, 2 = D ... It can have negative values: -1 = Cb.\n * Can detect pitch class enhramonics.\n *\n * If the note has octave, the parser object will contain:\n * - oct: the octave number (as integer)\n * - midi: the midi number\n * - freq: the frequency (using tuning parameter as base)\n *\n * If the parameter `isTonic` is set to true, the parsed object will contain:\n * - tonicOf: the rest of the string that follows note name (left and right trimmed)\n *\n * @example\n * var parse = require('note-parser').parse\n * parse('Cb4')\n * // => { letter: 'C', acc: 'b', pc: 'Cb', step: 0, alt: -1, chroma: -1,\n * oct: 4, midi: 59, freq: 246.94165062806206 }\n * // if no octave, no midi, no freq\n * parse('fx')\n * // => { letter: 'F', acc: '##', pc: 'F##', step: 3, alt: 2, chroma: 7 })\n */\nfunction parse (str, isTonic, tuning) {\n if (typeof str !== 'string') return null\n var m = REGEX.exec(str)\n if (!m || !isTonic && m[4]) return null\n\n var p = { letter: m[1].toUpperCase(), acc: m[2].replace(/x/g, '##') }\n p.pc = p.letter + p.acc\n p.step = (p.letter.charCodeAt(0) + 3) % 7\n p.alt = p.acc[0] === 'b' ? -p.acc.length : p.acc.length\n p.chroma = SEMITONES[p.step] + p.alt\n if (m[3]) {\n p.oct = +m[3]\n p.midi = p.chroma + 12 * (p.oct + 1)\n p.freq = midiToFreq(p.midi, tuning)\n }\n if (isTonic) p.tonicOf = m[4]\n return p\n}\n\n/**\n * Given a midi number, return its frequency\n * @param {Integer} midi - midi note number\n * @param {Float} tuning - (Optional) the A4 tuning (440Hz by default)\n * @return {Float} frequency in hertzs\n */\nfunction midiToFreq (midi, tuning) {\n return Math.pow(2, (midi - 69) / 12) * (tuning || 440)\n}\n\nvar parser = { parse: parse, regex: regex, midiToFreq: midiToFreq }\nvar FNS = ['letter', 'acc', 'pc', 'step', 'alt', 'chroma', 'oct', 'midi', 'freq']\nFNS.forEach(function (name) {\n parser[name] = function (src) {\n var p = parse(src)\n return p && (typeof p[name] !== 'undefined') ? p[name] : null\n }\n})\n\nmodule.exports = parser\n\n// extra API docs\n/**\n * Get midi of a note\n *\n * @name midi\n * @function\n * @param {String} note - the note name\n * @return {Integer} the midi number of the note or null if not a valid note\n * or the note does NOT contains octave\n * @example\n * var parser = require('note-parser')\n * parser.midi('A4') // => 69\n * parser.midi('A') // => null\n */\n/**\n * Get freq of a note in hertzs (in a well tempered 440Hz A4)\n *\n * @name freq\n * @function\n * @param {String} note - the note name\n * @return {Float} the freq of the number if hertzs or null if not valid note\n * or the note does NOT contains octave\n * @example\n * var parser = require('note-parser')\n * parser.freq('A4') // => 440\n * parser.freq('A') // => null\n */\n","'use strict'\n\nvar note = require('note-parser')\nvar isMidi = function (n) { return n !== null && n !== [] && n >= 0 && n < 129 }\nvar toMidi = function (n) { return isMidi(n) ? +n : note.midi(n) }\n\n// Adds note name to midi conversion\nmodule.exports = function (player) {\n if (player.buffers) {\n var map = player.opts.map\n var toKey = typeof map === 'function' ? map : toMidi\n var mapper = function (name) {\n return name ? toKey(name) || name : null\n }\n\n player.buffers = mapBuffers(player.buffers, mapper)\n var start = player.start\n player.start = function (name, when, options) {\n var key = mapper(name)\n var dec = key % 1\n if (dec) {\n key = Math.floor(key)\n options = Object.assign(options || {}, { cents: Math.floor(dec * 100) })\n }\n return start(key, when, options)\n }\n }\n return player\n}\n\nfunction mapBuffers (buffers, toKey) {\n return Object.keys(buffers).reduce(function (mapped, name) {\n mapped[toKey(name)] = buffers[name]\n return mapped\n }, {})\n}\n","'use strict'\n\nvar isArr = Array.isArray\nvar isObj = function (o) { return o && typeof o === 'object' }\nvar OPTS = {}\n\nmodule.exports = function (player) {\n /**\n * Schedule a list of events to be played at specific time.\n *\n * It supports three formats of events for the events list:\n *\n * - An array with [time, note]\n * - An array with [time, object]\n * - An object with { time: ?, [name|note|midi|key]: ? }\n *\n * @param {Float} time - an absolute time to start (or AudioContext's\n * currentTime if provided number is 0)\n * @param {Array} events - the events list.\n * @return {Array} an array of ids\n *\n * @example\n * // Event format: [time, note]\n * var piano = player(ac, ...).connect(ac.destination)\n * piano.schedule(0, [ [0, 'C2'], [0.5, 'C3'], [1, 'C4'] ])\n *\n * @example\n * // Event format: an object { time: ?, name: ? }\n * var drums = player(ac, ...).connect(ac.destination)\n * drums.schedule(0, [\n * { name: 'kick', time: 0 },\n * { name: 'snare', time: 0.5 },\n * { name: 'kick', time: 1 },\n * { name: 'snare', time: 1.5 }\n * ])\n */\n player.schedule = function (time, events) {\n var now = player.context.currentTime\n var when = time < now ? now : time\n player.emit('schedule', when, events)\n var t, o, note, opts\n return events.map(function (event) {\n if (!event) return null\n else if (isArr(event)) {\n t = event[0]; o = event[1]\n } else {\n t = event.time; o = event\n }\n\n if (isObj(o)) {\n note = o.name || o.key || o.note || o.midi || null\n opts = o\n } else {\n note = o\n opts = OPTS\n }\n\n return player.start(note, when + (t || 0), opts)\n })\n }\n return player\n}\n","(function(e){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=e()}else if(typeof define===\"function\"&&define.amd){define([],e)}else{var t;if(typeof window!==\"undefined\"){t=window}else if(typeof global!==\"undefined\"){t=global}else if(typeof self!==\"undefined\"){t=self}else{t=this}t.midimessage=e()}})(function(){var e,t,s;return function o(e,t,s){function a(n,i){if(!t[n]){if(!e[n]){var l=typeof require==\"function\"&&require;if(!i&&l)return l(n,!0);if(r)return r(n,!0);var h=new Error(\"Cannot find module '\"+n+\"'\");throw h.code=\"MODULE_NOT_FOUND\",h}var c=t[n]={exports:{}};e[n][0].call(c.exports,function(t){var s=e[n][1][t];return a(s?s:t)},c,c.exports,o,e,t,s)}return t[n].exports}var r=typeof require==\"function\"&&require;for(var n=0;n<s.length;n++)a(s[n]);return a}({1:[function(e,t,s){\"use strict\";Object.defineProperty(s,\"__esModule\",{value:true});s[\"default\"]=function(e){function t(e){this._event=e;this._data=e.data;this.receivedTime=e.receivedTime;if(this._data&&this._data.length<2){console.warn(\"Illegal MIDI message of length\",this._data.length);return}this._messageCode=e.data[0]&240;this.channel=e.data[0]&15;switch(this._messageCode){case 128:this.messageType=\"noteoff\";this.key=e.data[1]&127;this.velocity=e.data[2]&127;break;case 144:this.messageType=\"noteon\";this.key=e.data[1]&127;this.velocity=e.data[2]&127;break;case 160:this.messageType=\"keypressure\";this.key=e.data[1]&127;this.pressure=e.data[2]&127;break;case 176:this.messageType=\"controlchange\";this.controllerNumber=e.data[1]&127;this.controllerValue=e.data[2]&127;if(this.controllerNumber===120&&this.controllerValue===0){this.channelModeMessage=\"allsoundoff\"}else if(this.controllerNumber===121){this.channelModeMessage=\"resetallcontrollers\"}else if(this.controllerNumber===122){if(this.controllerValue===0){this.channelModeMessage=\"localcontroloff\"}else{this.channelModeMessage=\"localcontrolon\"}}else if(this.controllerNumber===123&&this.controllerValue===0){this.channelModeMessage=\"allnotesoff\"}else if(this.controllerNumber===124&&this.controllerValue===0){this.channelModeMessage=\"omnimodeoff\"}else if(this.controllerNumber===125&&this.controllerValue===0){this.channelModeMessage=\"omnimodeon\"}else if(this.controllerNumber===126){this.channelModeMessage=\"monomodeon\"}else if(this.controllerNumber===127){this.channelModeMessage=\"polymodeon\"}break;case 192:this.messageType=\"programchange\";this.program=e.data[1];break;case 208:this.messageType=\"channelpressure\";this.pressure=e.data[1]&127;break;case 224:this.messageType=\"pitchbendchange\";var t=e.data[2]&127;var s=e.data[1]&127;this.pitchBend=(t<<8)+s;break}}return new t(e)};t.exports=s[\"default\"]},{}]},{},[1])(1)});\n//# sourceMappingURL=dist/index.js.map","var midimessage = require('midimessage')\n\nmodule.exports = function (player) {\n /**\n * Connect a player to a midi input\n *\n * The options accepts:\n *\n * - channel: the channel to listen to. Listen to all channels by default.\n *\n * @param {MIDIInput} input\n * @param {Object} options - (Optional)\n * @return {SamplePlayer} the player\n * @example\n * var piano = player(...)\n * window.navigator.requestMIDIAccess().then(function (midiAccess) {\n * midiAccess.inputs.forEach(function (midiInput) {\n * piano.listenToMidi(midiInput)\n * })\n * })\n */\n player.listenToMidi = function (input, options) {\n var started = {}\n var opts = options || {}\n var gain = opts.gain || function (vel) { return vel / 127 }\n\n input.onmidimessage = function (msg) {\n var mm = msg.messageType ? msg : midimessage(msg)\n if (mm.messageType === 'noteon' && mm.velocity === 0) {\n mm.messageType = 'noteoff'\n }\n if (opts.channel && mm.channel !== opts.channel) return\n\n switch (mm.messageType) {\n case 'noteon':\n started[mm.key] = player.play(mm.key, 0, { gain: gain(mm.velocity) })\n break\n case 'noteoff':\n if (started[mm.key]) {\n started[mm.key].stop()\n delete started[mm.key]\n }\n break\n }\n }\n return player\n }\n return player\n}\n","'use strict'\n\nvar player = require('./player')\nvar events = require('./events')\nvar notes = require('./notes')\nvar scheduler = require('./scheduler')\nvar midi = require('./midi')\n\nfunction SamplePlayer (ac, source, options) {\n return midi(scheduler(notes(events(player(ac, source, options)))))\n}\n\nif (typeof module === 'object' && module.exports) module.exports = SamplePlayer\nif (typeof window !== 'undefined') window.SamplePlayer = SamplePlayer\n","'use strict'\n\n// util\nfunction fillStr (s, num) { return Array(num + 1).join(s) }\nfunction isNum (x) { return typeof x === 'number' }\nfunction isStr (x) { return typeof x === 'string' }\nfunction isDef (x) { return typeof x !== 'undefined' }\nfunction midiToFreq (midi, tuning) {\n return Math.pow(2, (midi - 69) / 12) * (tuning || 440)\n}\n\nvar REGEX = /^([a-gA-G])(#{1,}|b{1,}|x{1,}|)(-?\\d*)\\s*(.*)\\s*$/\n/**\n * A regex for matching note strings in scientific notation.\n *\n * @name regex\n * @function\n * @return {RegExp} the regexp used to parse the note name\n *\n * The note string should have the form `letter[accidentals][octave][element]`\n * where:\n *\n * - letter: (Required) is a letter from A to G either upper or lower case\n * - accidentals: (Optional) can be one or more `b` (flats), `#` (sharps) or `x` (double sharps).\n * They can NOT be mixed.\n * - octave: (Optional) a positive or negative integer\n * - element: (Optional) additionally anything after the duration is considered to\n * be the element name (for example: 'C2 dorian')\n *\n * The executed regex contains (by array index):\n *\n * - 0: the complete string\n * - 1: the note letter\n * - 2: the optional accidentals\n * - 3: the optional octave\n * - 4: the rest of the string (trimmed)\n *\n * @example\n * var parser = require('note-parser')\n * parser.regex.exec('c#4')\n * // => ['c#4', 'c', '#', '4', '']\n * parser.regex.exec('c#4 major')\n * // => ['c#4major', 'c', '#', '4', 'major']\n * parser.regex().exec('CMaj7')\n * // => ['CMaj7', 'C', '', '', 'Maj7']\n */\nexport function regex () { return REGEX }\n\nvar SEMITONES = [0, 2, 4, 5, 7, 9, 11]\n/**\n * Parse a note name in scientific notation an return it's components,\n * and some numeric properties including midi number and frequency.\n *\n * @name parse\n * @function\n * @param {String} note - the note string to be parsed\n * @param {Boolean} isTonic - true the strings it's supposed to contain a note number\n * and some category (for example an scale: 'C# major'). It's false by default,\n * but when true, en extra tonicOf property is returned with the category ('major')\n * @param {Float} tunning - The frequency of A4 note to calculate frequencies.\n * By default it 440.\n * @return {Object} the parsed note name or null if not a valid note\n *\n * The parsed note name object will ALWAYS contains:\n * - letter: the uppercase letter of the note\n * - acc: the accidentals of the note (only sharps or flats)\n * - pc: the pitch class (letter + acc)\n * - step: s a numeric representation of the letter. It's an integer from 0 to 6\n * where 0 = C, 1 = D ... 6 = B\n * - alt: a numeric representation of the accidentals. 0 means no alteration,\n * positive numbers are for sharps and negative for flats\n * - chroma: a numeric representation of the pitch class. It's like midi for\n * pitch classes. 0 = C, 1 = C#, 2 = D ... 11 = B. Can be used to find enharmonics\n * since, for example, chroma of 'Cb' and 'B' are both 11\n *\n * If the note has octave, the parser object will contain:\n * - oct: the octave number (as integer)\n * - midi: the midi number\n * - freq: the frequency (using tuning parameter as base)\n *\n * If the parameter `isTonic` is set to true, the parsed object will contain:\n * - tonicOf: the rest of the string that follows note name (left and right trimmed)\n *\n * @example\n * var parse = require('note-parser').parse\n * parse('Cb4')\n * // => { letter: 'C', acc: 'b', pc: 'Cb', step: 0, alt: -1, chroma: -1,\n * oct: 4, midi: 59, freq: 246.94165062806206 }\n * // if no octave, no midi, no freq\n * parse('fx')\n * // => { letter: 'F', acc: '##', pc: 'F##', step: 3, alt: 2, chroma: 7 })\n */\nexport function parse (str, isTonic, tuning) {\n if (typeof str !== 'string') return null\n var m = REGEX.exec(str)\n if (!m || (!isTonic && m[4])) return null\n\n var p = { letter: m[1].toUpperCase(), acc: m[2].replace(/x/g, '##') }\n p.pc = p.letter + p.acc\n p.step = (p.letter.charCodeAt(0) + 3) % 7\n p.alt = p.acc[0] === 'b' ? -p.acc.length : p.acc.length\n var pos = SEMITONES[p.step] + p.alt\n p.chroma = pos < 0 ? 12 + pos : pos % 12\n if (m[3]) { // has octave\n p.oct = +m[3]\n p.midi = pos + 12 * (p.oct + 1)\n p.freq = midiToFreq(p.midi, tuning)\n }\n if (isTonic) p.tonicOf = m[4]\n return p\n}\n\nvar LETTERS = 'CDEFGAB'\nfunction accStr (n) { return !isNum(n) ? '' : n < 0 ? fillStr('b', -n) : fillStr('#', n) }\nfunction octStr (n) { return !isNum(n) ? '' : '' + n }\n\n/**\n * Create a string from a parsed object or `step, alteration, octave` parameters\n * @param {Object} obj - the parsed data object\n * @return {String} a note string or null if not valid parameters\n * @since 1.2\n * @example\n * parser.build(parser.parse('cb2')) // => 'Cb2'\n *\n * @example\n * // it accepts (step, alteration, octave) parameters:\n * parser.build(3) // => 'F'\n * parser.build(3, -1) // => 'Fb'\n * parser.build(3, -1, 4) // => 'Fb4'\n */\nexport function build (s, a, o) {\n if (s === null || typeof s === 'undefined') return null\n if (s.step) return build(s.step, s.alt, s.oct)\n if (s < 0 || s > 6) return null\n return LETTERS.charAt(s) + accStr(a) + octStr(o)\n}\n\n/**\n * Get midi of a note\n *\n * @name midi\n * @function\n * @param {String|Integer} note - the note name or midi number\n * @return {Integer} the midi number of the note or null if not a valid note\n * or the note does NOT contains octave\n * @example\n * var parser = require('note-parser')\n * parser.midi('A4') // => 69\n * parser.midi('A') // => null\n * @example\n * // midi numbers are bypassed (even as strings)\n * parser.midi(60) // => 60\n * parser.midi('60') // => 60\n */\nexport function midi (note) {\n if ((isNum(note) || isStr(note)) && note >= 0 && note < 128) return +note\n var p = parse(note)\n return p && isDef(p.midi) ? p.midi : null\n}\n\n/**\n * Get freq of a note in hertzs (in a well tempered 440Hz A4)\n *\n * @name freq\n * @function\n * @param {String} note - the note name or note midi number\n * @param {String} tuning - (Optional) the A4 frequency (440 by default)\n * @return {Float} the freq of the number if hertzs or null if not valid note\n * @example\n * var parser = require('note-parser')\n * parser.freq('A4') // => 440\n * parser.freq('A') // => null\n * @example\n * // can change tuning (440 by default)\n * parser.freq('A4', 444) // => 444\n * parser.freq('A3', 444) // => 222\n * @example\n * // it accepts midi numbers (as numbers and as strings)\n * parser.freq(69) // => 440\n * parser.freq('69', 442) // => 442\n */\nexport function freq (note, tuning) {\n var m = midi(note)\n return m === null ? null : midiToFreq(m, tuning)\n}\n\nexport function letter (src) { return (parse(src) || {}).letter }\nexport function acc (src) { return (parse(src) || {}).acc }\nexport function pc (src) { return (parse(src) || {}).pc }\nexport function step (src) { return (parse(src) || {}).step }\nexport function alt (src) { return (parse(src) || {}).alt }\nexport function chroma (src) { return (parse(src) || {}).chroma }\nexport function oct (src) { return (parse(src) || {}).oct }\n","'use strict'\n\nvar parser = require('note-parser')\n\n/**\n * Create a Soundfont object\n *\n * @param {AudioContext} context - the [audio context](https://developer.mozilla.org/en/docs/Web/API/AudioContext)\n * @param {Function} nameToUrl - (Optional) a function that maps the sound font name to the url\n * @return {Soundfont} a soundfont object\n */\nfunction Soundfont (ctx, nameToUrl) {\n console.warn('new Soundfont() is deprected')\n console.log('Please use Soundfont.instrument() instead of new Soundfont().instrument()')\n if (!(this instanceof Soundfont)) return new Soundfont(ctx)\n\n this.nameToUrl = nameToUrl || Soundfont.nameToUrl\n this.ctx = ctx\n this.instruments = {}\n this.promises = []\n}\n\nSoundfont.prototype.onready = function (callback) {\n console.warn('deprecated API')\n console.log('Please use Promise.all(Soundfont.instrument(), Soundfont.instrument()).then() instead of new Soundfont().onready()')\n Promise.all(this.promises).then(callback)\n}\n\nSoundfont.prototype.instrument = function (name, options) {\n console.warn('new Soundfont().instrument() is deprecated.')\n console.log('Please use Soundfont.instrument() instead.')\n var ctx = this.ctx\n name = name || 'default'\n if (name in this.instruments) return this.instruments[name]\n var inst = {name: name, play: oscillatorPlayer(ctx, options)}\n this.instruments[name] = inst\n if (name !== 'default') {\n var promise = Soundfont.instrument(ctx, name, options).then(function (instrument) {\n inst.play = instrument.play\n return inst\n })\n this.promises.push(promise)\n inst.onready = function (cb) {\n console.warn('onready is deprecated. Use Soundfont.instrument().then()')\n promise.then(cb)\n }\n } else {\n inst.onready = function (cb) {\n console.warn('onready is deprecated. Use Soundfont.instrument().then()')\n cb()\n }\n }\n return inst\n}\n\n/*\n * Load the buffers of a given instrument name. It returns a promise that resolves\n * to a hash with midi note numbers as keys, and audio buffers as values.\n *\n * @param {AudioContext} ac - the audio context\n * @param {String} name - the instrument name (it accepts an url if starts with \"http\")\n * @param {Object} options - (Optional) options object\n * @return {Promise} a promise that resolves to a Hash of { midiNoteNum: <AudioBuffer> }\n *\n * The options object accepts the following keys:\n *\n * - nameToUrl {Function}: a function to convert from instrument names to urls.\n * By default it uses Benjamin Gleitzman's package of\n * [pre-rendered sound fonts](https://github.com/gleitz/midi-js-soundfonts)\n * - notes {Array}: the list of note names to be decoded (all by default)\n *\n * @example\n * var Soundfont = require('soundfont-player')\n * Soundfont.loadBuffers(ctx, 'acoustic_grand_piano').then(function(buffers) {\n * buffers[60] // => An <AudioBuffer> corresponding to note C4\n * })\n */\nfunction loadBuffers (ac, name, options) {\n console.warn('Soundfont.loadBuffers is deprecate.')\n console.log('Use Soundfont.instrument(..) and get buffers properties from the result.')\n return Soundfont.instrument(ac, name, options).then(function (inst) {\n return inst.buffers\n })\n}\nSoundfont.loadBuffers = loadBuffers\n\n/**\n * Returns a function that plays an oscillator\n *\n * @param {AudioContext} ac - the audio context\n * @param {Hash} defaultOptions - (Optional) a hash of options:\n * - vcoType: the oscillator type (default: 'sine')\n * - gain: the output gain value (default: 0.4)\n * - destination: the player destination (default: ac.destination)\n */\nfunction oscillatorPlayer (ctx, defaultOptions) {\n defaultOptions = defaultOptions || {}\n return function (note, time, duration, options) {\n console.warn('The oscillator player is deprecated.')\n console.log('Starting with version 0.9.0 you will have to wait until the soundfont is loaded to play sounds.')\n var midi = note > 0 && note < 129 ? +note : parser.midi(note)\n var freq = midi ? parser.midiToFreq(midi, 440) : null\n if (!freq) return\n\n duration = duration || 0.2\n\n options = options || {}\n var destination = options.destination || defaultOptions.destination || ctx.destination\n var vcoType = options.vcoType || defaultOptions.vcoType || 'sine'\n var gain = options.gain || defaultOptions.gain || 0.4\n\n var vco = ctx.createOscillator()\n vco.type = vcoType\n vco.frequency.value = freq\n\n /* VCA */\n var vca = ctx.createGain()\n vca.gain.value = gain\n\n /* Connections */\n vco.connect(vca)\n vca.connect(destination)\n\n vco.start(time)\n if (duration > 0) vco.stop(time + duration)\n return vco\n }\n}\n\n/**\n * Given a note name, return the note midi number\n *\n * @name noteToMidi\n * @function\n * @param {String} noteName\n * @return {Integer} the note midi number or null if not a valid note name\n */\nSoundfont.noteToMidi = parser.midi\n\nmodule.exports = Soundfont\n","'use strict'\n\nvar load = require('audio-loader')\nvar player = require('sample-player')\n\n/**\n * Load a soundfont instrument. It returns a promise that resolves to a\n * instrument object.\n *\n * The instrument object returned by the promise has the following properties:\n *\n * - name: the instrument name\n * - play: A function to play notes from the buffer with the signature\n * `play(note, time, duration, options)`\n *\n *\n * The valid options are:\n *\n * - `format`: the soundfont format. 'mp3' by default. Can be 'ogg'\n * - `soundfont`: the soundfont name. 'MusyngKite' by default. Can be 'FluidR3_GM'\n * - `nameToUrl` <Function>: a function to convert from instrument names to URL\n * - `destination`: by default Soundfont uses the `audioContext.destination` but you can override it.\n * - `gain`: the gain of the player (1 by default)\n * - `notes`: an array of the notes to decode. It can be an array of strings\n * with note names or an array of numbers with midi note numbers. This is a\n * performance option: since decoding mp3 is a cpu intensive process, you can limit\n * limit the number of notes you want and reduce the time to load the instrument.\n *\n * @param {AudioContext} ac - the audio context\n * @param {String} name - the instrument name. For example: 'acoustic_grand_piano'\n * @param {Object} options - (Optional) the same options as Soundfont.loadBuffers\n * @return {Promise}\n *\n * @example\n * var Soundfont = require('sounfont-player')\n * Soundfont.instrument('marimba').then(function (marimba) {\n * marimba.play('C4')\n * })\n */\nfunction instrument (ac, name, options) {\n if (arguments.length === 1) return function (n, o) { return instrument(ac, n, o) }\n var opts = options || {}\n var isUrl = opts.isSoundfontURL || isSoundfontURL\n var toUrl = opts.nameToUrl || nameToUrl\n var url = isUrl(name) ? name : toUrl(name, opts.soundfont, opts.format)\n\n return load(ac, url, { only: opts.only || opts.notes }).then(function (buffers) {\n var p = player(ac, buffers, opts).connect(opts.destination ? opts.destination : ac.destination)\n p.url = url\n p.name = name\n return p\n })\n}\n\nfunction isSoundfontURL (name) {\n return /\\.js(\\?.*)?$/i.test(name)\n}\n\n/**\n * Given an instrument name returns a URL to to the Benjamin Gleitzman's\n * package of [pre-rendered sound fonts](https://github.com/gleitz/midi-js-soundfonts)\n *\n * @param {String} name - instrument name\n * @param {String} soundfont - (Optional) the soundfont name. One of 'FluidR3_GM'\n * or 'MusyngKite' ('MusyngKite' by default)\n * @param {String} format - (Optional) Can be 'mp3' or 'ogg' (mp3 by default)\n * @returns {String} the Soundfont file url\n * @example\n * var Soundfont = require('soundfont-player')\n * Soundfont.nameToUrl('marimba', 'mp3')\n */\nfunction nameToUrl (name, sf, format) {\n format = format === 'ogg' ? format : 'mp3'\n sf = sf === 'FluidR3_GM' ? sf : 'MusyngKite'\n return 'https://gleitz.github.io/midi-js-soundfonts/' + sf + '/' + name + '-' + format + '.js'\n}\n\n// In the 1.0.0 release it will be:\n// var Soundfont = {}\nvar Soundfont = require('./legacy')\nSoundfont.instrument = instrument\nSoundfont.nameToUrl = nameToUrl\n\nif (typeof module === 'object' && module.exports) module.exports = Soundfont\nif (typeof window !== 'undefined') window.Soundfont = Soundfont\n","// See https://github.com/danigb/soundfont-player\n// for more documentation on prop options.\nimport { useCallback, useEffect, useState } from 'react'\nimport Soundfont from 'soundfont-player'\nimport { Note } from 'tonal'\n\n// Type for the MIDI global object\ninterface MIDIGlobal {\n Soundfont: Record<string, Record<string, string>>\n}\n\n// Extend global interfaces to include MIDI\ndeclare global {\n interface Window {\n MIDI?: MIDIGlobal\n }\n var MIDI: MIDIGlobal | undefined\n namespace globalThis {\n var MIDI: MIDIGlobal | undefined\n }\n}\n// Ensure MIDI global exists before importing soundfont\nif (typeof window !== 'undefined') {\n if (!window.MIDI) {\n window.MIDI = { Soundfont: {} }\n }\n}\n\n// Also ensure it's available globally (not just on window)\nif (typeof globalThis !== 'undefined') {\n if (!globalThis.MIDI) {\n globalThis.MIDI = window.MIDI || { Soundfont: {} }\n }\n}\n\n// Also set it on the global object for Node.js compatibility\nif (typeof global !== 'undefined') {\n if (!global.MIDI) {\n global.MIDI = window.MIDI || { Soundfont: {} }\n }\n}\n\n// Import bundled soundfont to avoid CSP issues in Electron apps\n// NOTE: This adds ~2.2MB to the bundle size. Currently all consumers need piano,\n// but if future web apps don't need audio, consider making this import conditional\n// or implementing lazy loading to reduce bundle size for audio-free use cases.\nimport '../temp/acoustic_grand_piano-mp3'\n\nconst isDefined = <T,>(item: T) =>\n item !== undefined && item !== null && !Number.isNaN(item)\n\ntype SoundfontProviderProps = {\n audioContext: AudioContext\n format?: 'mp3' | 'ogg'\n hostname?: string\n instrumentName?: Soundfont.InstrumentName\n onChange?: (midiNumber: number) => void\n render: (props: {\n isLoading: boolean\n playNote: (midiNumber: number) => void\n stopNote: (midiNumber: number) => void\n stopAllNotes: () => void\n }) => React.ReactNode\n soundfont?: 'MusyngKite' | 'FluidR3_GM'\n}\n\nconst SoundfontProvider = (props: SoundfontProviderProps) => {\n const {\n audioContext,\n format,\n hostname,\n instrumentName,\n onChange,\n render,\n soundfont,\n } = props\n\n const [isLoading, setIsLoading] = useState(true)\n const [activeAudioNodes, setActiveAudioNodes] = useState<\n Record<number, Soundfont.Player>\n >({})\n const [instrument, setInstrument] = useState<Soundfont.Player | null>(null)\n\n const loadInstrument = useCallback(\n (nm: Soundfont.InstrumentName) => {\n // Re-trigger loading state\n setInstrument(null)\n\n if (isDefined(hostname)) {\n // pull from an url\n Soundfont.instrument(audioContext, nm, {\n format,\n soundfont,\n nameToUrl: (name: string, sf: string, fmt: string) =>\n `${hostname}/${sf}/${name}-${fmt}.js`,\n }).then(newInstrument => {\n setInstrument(newInstrument)\n })\n } else if (instrumentName) {\n // the host app has already injected the soundfont into global space\n // Try to create a player directly from our bundled soundfont data\n const soundfontData = window.MIDI?.Soundfont?.[instrumentName]\n if (soundfontData) {\n // MIDI note number to note name conversion using Tonal\n const midiToNoteName = (midiNumber: number | string): string => {\n const num =\n typeof midiNumber === 'string'\n ? Number.parseInt(midiNumber, 10)\n : midiNumber\n return Note.fromMidi(num)\n }\n\n // Create a simple player that can play notes from our bundled data\n const player = {\n play: (note: string | number, velocity?: number) => {\n // Convert MIDI note number to note name if needed\n const noteName = midiToNoteName(note)\n const noteData = soundfontData[noteName]\n if (noteData) {\n // Create audio from the data URL\n const audio = new Audio(noteData)\n audio.volume = (velocity || 127) / 127\n audio.play()\n\n // Return a compatible object with stop method\n return {\n stop: () => {\n audio.pause()\n audio.currentTime = 0\n },\n }\n }\n return null\n },\n stop: () => {\n // Simple stop implementation\n },\n }\n setInstrument(player as Soundfont.Player)\n setIsLoading(false)\n } else {\n setIsLoading(false)\n }\n } else {\n // sound must be disabled\n setIsLoading(false)\n }\n },\n [audioContext, format, hostname, instrumentName, soundfont],\n )\n\n useEffect(() => {\n if (instrumentName) {\n loadInstrument(instrumentName)\n }\n }, [instrumentName, loadInstrument])\n\n useEffect(() => {\n if (isDefined(instrumentName)) {\n setIsLoading(!instrument)\n }\n }, [instrument, instrumentName])\n\n const playNote = (midiNumber: number) => {\n if (instrument) {\n audioContext.resume().then(() => {\n const audioNode = instrument.play(String(midiNumber))\n setActiveAudioNodes(prev => ({ ...prev, [midiNumber]: audioNode }))\n })\n }\n }\n\n const stopNote = (midiNumber: number) => {\n audioContext.resume().then(() => {\n if (!activeAudioNodes[midiNumber]) {\n return\n }\n const audioNode = activeAudioNodes[midiNumber]\n audioNode.stop()\n setActiveAudioNodes(prev => {\n const { [midiNumber]: _, ...rest } = prev\n return rest\n })\n })\n onChange?.(midiNumber)\n }\n\n // Clear any residual notes that don't get called with stopNote\n const stopAllNotes = () => {\n audioContext.resume().then(() => {\n const nodes = Object.values(activeAudioNodes)\n for (const node of nodes) {\n if (node) {\n node.stop()\n }\n }\n setActiveAudioNodes(nodes)\n })\n }\n\n return render({\n isLoading,\n playNote,\n stopNote,\n stopAllNotes,\n })\n}\n\n// https://gleitz.github.io/midi-js-soundfonts/MusyngKite/acoustic_grand_piano-mp3.js\n// https://gleitz.github.io/midi-js-soundfonts/FluidR3_GM/.js\n\nexport { SoundfontProvider }\n\nexport type { SoundfontProviderProps }\n","import type { PianoProps } from 'lib/pickers/PianoPicker'\nimport type Soundfont from 'soundfont-player'\nimport { /* Midi, */ Note } from 'tonal'\nimport { Piano as ReactPiano } from 'zds-react-piano'\nimport type { TooltipProps } from './DefaultTooltip'\nimport { SoundfontProvider } from './SoundFontProvider'\n\ntype PianoMidiNote = {\n accidental: boolean\n left: number\n midiNumber: number\n width: number\n}\n\nconst baseNotes = [\n 'C',\n 'C#',\n 'D',\n 'D#',\n 'E',\n 'F',\n 'F#',\n 'G',\n 'G#',\n 'A',\n 'A#',\n 'B',\n]\n\n// const { midiToFreq, midiToNoteName } = Midi\n\n// console.log(Note.names(), Note.midi('C4'))\n\n// const firstNote = 21\n// const lastNote = 108\nconst numNotes = 12\n\nconst whiteNotes = numNotes * 0.7 // approx\n\nconst audioContext = new window.AudioContext()\n\ntype OctavePlayerProps = PianoProps & {\n disabled?: boolean\n height: number\n octave: number\n width: number\n}\n\nconst BaseOctavePlayer = ({\n octave,\n height,\n width,\n ...rest\n}: OctavePlayerProps) => {\n const keyWidth = width / whiteNotes + 2\n const keyWidthToHeight = keyWidth / height\n\n const firstNote = Note.midi(baseNotes[0] + String(octave)) || 0\n const lastNote =\n Note.midi(baseNotes[baseNotes.length - 1] + String(octave)) || 0\n\n return (\n <div>\n <ReactPiano\n keyWidthToHeight={keyWidthToHeight}\n noteRange={{ first: firstNote, last: lastNote }}\n width={width}\n {...rest}\n />\n </div>\n )\n}\n\ntype WithProviderProps = PianoProps & {\n format?: 'mp3' | 'ogg'\n height: number\n hostname?: string\n instrumentName?: Soundfont.InstrumentName\n octave?: number\n onChange?: (note: number) => void\n onClick?: (note: number) => void\n onDoubleClick?: (note: number) => void\n onKeyMouseEnter?: (note: PianoMidiNote) => void\n onKeyMouseLeave?: (note: number) => void\n selectedNotes?: number[]\n soundfont?: 'MusyngKite' | 'FluidR3_GM'\n Tooltip?: TooltipProps\n width: number\n}\n\nconst WithProvider = ({\n format,\n height,\n hostname,\n instrumentName,\n octave = 4,\n onChange,\n onClick,\n onDoubleClick,\n onKeyMouseEnter,\n onKeyMouseLeave,\n selectedNotes,\n soundfont,\n Tooltip,\n width,\n}: WithProviderProps) => (\n <SoundfontProvider\n {...{\n audioContext,\n format,\n hostname,\n instrumentName,\n onChange,\n soundfont,\n }}\n render={({ isLoading, playNote, stopNote }) => (\n <BaseOctavePlayer\n disabled={isLoading}\n {...{\n height,\n octave,\n onClick,\n onDoubleClick,\n onKeyMouseEnter,\n onKeyMouseLeave,\n playNote,\n selectedNotes,\n stopNote,\n Tooltip,\n width,\n }}\n />\n )}\n />\n)\n\nexport { WithProvider as OctavePlayer }\n\nexport type { OctavePlayerProps, PianoMidiNote, WithProviderProps }\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nconst MEASUREMENT_ELEMENT_ID = '__react_svg_text_measurement_id'\n\ntype WordsByLine = {\n words: string[]\n width: number\n showLine: boolean\n}\n\nconst calculateWordsByLines = (\n text: string,\n wordWidths: WordWidths,\n maxWidth: number,\n maxHeight: number,\n) => {\n const { lineHeight, spaceWidth, wordsWithComputedWidth } = wordWidths\n\n return text.split(/\\s+/).reduce((result: WordsByLine[], word) => {\n const wordWidth = wordsWithComputedWidth[word]\n const currentLine = result[result.length - 1]\n if (currentLine && currentLine.width + wordWidth + spaceWidth < maxWidth) {\n // Word can be added to an existing line\n currentLine.words.push(word)\n currentLine.width += wordWidth + spaceWidth\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n const newLine: WordsByLine = {\n words: [word],\n width: wordWidth,\n showLine: maxHeight\n ? lineHeight * (result.length + 1) < maxHeight\n : true,\n }\n result.push(newLine)\n }\n return result\n }, [])\n}\n\ntype WordWidths = {\n wordsWithComputedWidth: Record<string, number>\n spaceWidth: number\n lineHeight: number\n}\n\nconst calculateWordWidths = (\n style?: CSSStyleDeclaration,\n textNode?: SVGGraphicsElement | null,\n text?: string,\n): WordWidths | undefined => {\n if (style && textNode) {\n // biome-ignore lint/complexity/noForEach: <explanation>\n Array.from(style).forEach(key =>\n textNode.style.setProperty(\n key,\n style.getPropertyValue(key),\n style.getPropertyPriority(key),\n ),\n )\n const wordArray = [...new Set(String(text).split(/\\s+/))]\n const wordsWithComputedWidth = wordArray.reduce((wordMap, word) => {\n textNode.textContent = word\n // biome-ignore lint/performance/noAccumulatingSpread: <explanation>\n return { ...wordMap, [word]: textNode.getBBox().width }\n }, {})\n\n textNode.textContent = '\\u00A0'\n\n const spaceWidth =\n (textNode as SVGTextContentElement)?.getComputedTextLength?.() || 8\n const lineHeight = textNode.getBBox().height\n\n textNode.setAttribute('style', '')\n return { wordsWithComputedWidth, spaceWidth, lineHeight }\n }\n return undefined\n}\n\ntype TextProps = Partial<HTMLOrSVGElement> & {\n className?: string\n dx?: number\n dy?: number\n maxHeight?: number\n maxWidth?: number\n transform?: string\n text: string\n textAnchor?: React.CSSProperties['textAnchor']\n verticalAnchor?: 'start' | 'middle' | 'end'\n x?: number\n y?: number\n}\n\nconst SvgText = (props: TextProps) => {\n const {\n className = '',\n dx = 0,\n dy = 0,\n maxHeight = 1000,\n maxWidth = 1000,\n // textAnchor = 'start',\n text = '',\n verticalAnchor = 'start',\n x = 0,\n y = 0,\n transform = '',\n ...rest\n } = props\n const [wordWidths, setWordWidths] = useState<WordWidths>()\n const [textLines, setTextLines] = useState<WordsByLine[]>([])\n const [style, setComputedStyle] = useState<CSSStyleDeclaration>()\n const measureRef = useRef<SVGSVGElement | HTMLElement>({} as HTMLElement)\n\n const displayedLines: WordsByLine[] = useMemo(() => {\n const result = textLines.filter(({ showLine }) => showLine)\n return result.length\n ? result\n : text\n .split(/\\n/)\n .map(line => ({ words: [line], width: 0, showLine: true }))\n }, [textLines, text])\n\n const ref: React.LegacyRef<SVGTextElement> = useCallback(\n (node: SVGTextElement | null) => {\n setComputedStyle(\n node !== null ? window.getComputedStyle(node) : undefined,\n )\n },\n [],\n )\n\n useEffect(() => {\n const el = document.getElementById(MEASUREMENT_ELEMENT_ID)\n if (el === null) {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')\n svg.setAttribute('id', MEASUREMENT_ELEMENT_ID)\n document.body.appendChild(svg)\n svg.appendChild(\n document.createElementNS('http://www.w3.org/2000/svg', 'text'),\n )\n measureRef.current = svg\n return () => {\n document.body.removeChild(svg)\n }\n }\n measureRef.current = el\n }, [])\n\n useEffect(() => {\n const wordWithWidths = calculateWordWidths(\n style,\n measureRef.current as SVGGraphicsElement | null,\n text,\n )\n\n setWordWidths(wordWithWidths)\n }, [text, style])\n\n useEffect(() => {\n if (maxWidth && wordWidths) {\n const lines = text\n .split(/\\n/)\n .flatMap(line =>\n calculateWordsByLines(line, wordWidths, maxWidth, maxHeight),\n )\n\n setTextLines(lines)\n }\n }, [maxHeight, maxWidth, wordWidths, text])\n\n const startDy = useMemo(() => {\n if (wordWidths?.lineHeight) {\n switch (verticalAnchor) {\n case 'start':\n return wordWidths.lineHeight\n\n case 'middle':\n return -(((displayedLines.length - 1) * wordWidths.lineHeight) / 2)\n\n default:\n return -(displayedLines.length - 1) * wordWidths.lineHeight\n }\n }\n return 0\n }, [displayedLines.length, verticalAnchor, wordWidths?.lineHeight])\n\n return (\n <text\n className={className}\n ref={ref}\n dx={dx}\n dy={dy}\n x={x}\n y={y}\n // textAnchor={textAnchor}\n transform={transform}\n {...rest}>\n <>\n {displayedLines.map((line, idx) => (\n <tspan\n dx={x + dx}\n dy={idx === 0 ? startDy + dy : wordWidths?.lineHeight || 0}\n key={idx}\n x={0}>\n {line.words.join(' ')}\n </tspan>\n ))}\n {textLines.length && displayedLines.length !== textLines.length && (\n <>\n <tspan>...</tspan>\n <title>{text}</title>\n </>\n )}\n </>\n </text>\n )\n}\n\nexport { SvgText, MEASUREMENT_ELEMENT_ID }\n\nexport type { TextProps, WordWidths, WordsByLine }\n","import {\n Children,\n type JSX,\n forwardRef,\n isValidElement,\n useCallback,\n useMemo,\n} from 'react'\nimport ReactSelect, {\n type GroupBase,\n type IndicatorsContainerProps,\n components as originalComponents,\n type PlaceholderProps,\n type SelectComponentsConfig,\n type SelectInstance,\n type SingleValue,\n type StylesConfig,\n type ValueContainerProps,\n} from 'react-select'\nimport { omit } from '../utils'\n\nconst noSelection = 255\n\nconst { IndicatorsContainer, Placeholder, ValueContainer } = originalComponents\n\ntype PassedSelectProps = {\n actionButton?: React.ReactNode\n inputValue?: string\n placeholder?: React.ReactNode\n}\n\ntype Option<T> = {\n label: React.ReactNode\n value: T\n}\n\nconst noSelectionOption: Option<number> = {\n label: '--',\n value: noSelection,\n}\n\ninterface CustomIndicatorsContainerProps<T>\n extends Omit<IndicatorsContainerProps<Option<T>, false>, 'selectProps'> {\n children: React.ReactNode\n selectProps: IndicatorsContainerProps<Option<T>, false>['selectProps'] &\n PassedSelectProps\n}\n\nconst CustomIndicatorsContainer = <T,>(\n props: CustomIndicatorsContainerProps<T>,\n) => {\n const { children, ...rest } = props\n const actionButton = rest.selectProps?.actionButton\n\n return (\n <IndicatorsContainer {...rest}>\n <div\n onMouseDown={e => {\n e.stopPropagation()\n e.preventDefault()\n }}\n style={{ display: 'flex' }}>\n {actionButton}\n {children}\n </div>\n </IndicatorsContainer>\n )\n}\n\ntype CustomValueContainerProps<T> = (\n | ValueContainerProps<Option<T>, false>\n | PlaceholderProps<Option<T>, false>\n) & {\n children: React.ReactNode\n hasValue?: boolean\n isFocused?: boolean\n}\n\nconst CustomValueContainer = <T,>({\n children,\n ...props\n}: CustomValueContainerProps<T>) => (\n <ValueContainer {...props}>\n <Placeholder\n {...props}\n innerProps={props.innerProps || {}}\n className={props.hasValue || props.selectProps.inputValue ? 'shrunk' : ''}\n isFocused={props.isFocused ?? false}>\n {props.selectProps.placeholder}\n </Placeholder>\n {Children.map(children, child =>\n isValidElement(child) && child.type !== Placeholder ? child : null,\n )}\n </ValueContainer>\n)\n\ntype SelectProps<T> = SelectComponentsConfig<\n Option<T>,\n false,\n GroupBase<Option<T>>\n> & {\n actionButton?: React.ReactNode\n className?: string\n components?: object\n disabled?: boolean\n filterOptions?: (candidate: Option<T>, inputValue: string) => boolean\n formatOptionLabel?: (\n option: Option<unknown>,\n { context }: { context: 'menu' | 'value' },\n ) => React.ReactNode\n isSearchable?: boolean\n label?: string\n menuPortalTarget?: HTMLElement | null\n menuPosition?: 'fixed' | 'absolute'\n menuShouldScrollIntoView?: boolean\n onChange: (value: Option<T>['value']) => void\n options: Option<T>[] | { options: Option<T>[] }[]\n preserveMenuWidth?: boolean\n selectProps?: PassedSelectProps\n shrinkLabel?: boolean\n value?: Option<T>['value']\n}\n\nconst Select = forwardRef(\n <T,>(\n props: SelectProps<T>,\n ref: React.ForwardedRef<\n SelectInstance<Option<T>, false, GroupBase<Option<T>>>\n >,\n ) => {\n const {\n components,\n disabled,\n label,\n onChange,\n options = [],\n preserveMenuWidth,\n shrinkLabel,\n value,\n ...rest\n } = props\n\n const handleChange = useCallback(\n (option: SingleValue<Option<unknown>>) => {\n if (option) {\n onChange((option as Option<T>).value)\n }\n },\n [onChange],\n )\n\n const flatOptionsList = options.reduce<Option<T>[]>((acc, entry) => {\n if ('options' in entry) {\n return acc.concat(entry.options)\n }\n return acc.concat(entry)\n }, [])\n\n const selectedOption =\n flatOptionsList.find(option => value === option.value) || undefined\n\n const styles: unknown = useMemo(() => {\n const base = preserveMenuWidth\n ? {\n menu: (base: Record<string, unknown>) => omit('width')(base),\n menuList: (base: object) => ({\n ...base,\n overflowX: 'hidden',\n }),\n option: (base: object) => ({\n ...base,\n whiteSpace: 'nowrap',\n paddingRight: 10,\n }),\n }\n : {}\n\n return shrinkLabel\n ? {\n ...base,\n container: (provided: object /* , state */) => ({\n ...provided,\n marginTop: 10,\n }),\n placeholder: (\n _provided: object,\n state: PlaceholderProps<Option<T>, false>,\n ) => ({\n position: 'absolute',\n left: state.hasValue || state.selectProps.inputValue ? -2 : '4%',\n top: state.hasValue || state.selectProps.inputValue ? -12 : '50%',\n transition: 'top 0.1s, font-size 0.1s, color 0.1s',\n fontSize: (state.hasValue || state.selectProps.inputValue) && 13,\n }),\n valueContainer: (provided: object /* , state */) => ({\n ...provided,\n overflow: 'visible',\n }),\n }\n : {\n ...base,\n }\n }, [preserveMenuWidth, shrinkLabel])\n\n return shrinkLabel ? (\n <div className=\"zds-pickers__container\">\n <ReactSelect\n {...rest}\n classNamePrefix=\"zds-pickers\"\n components={{\n IndicatorsContainer: CustomIndicatorsContainer,\n ValueContainer: CustomValueContainer,\n ...components,\n }}\n isDisabled={disabled}\n onChange={handleChange}\n options={flatOptionsList}\n placeholder={label}\n // biome-ignore lint/suspicious/noExplicitAny: <explanation>\n ref={ref as React.Ref<any>}\n styles={\n styles as StylesConfig<\n Option<unknown>,\n false,\n GroupBase<Option<unknown>>\n >\n }\n value={selectedOption}\n />\n </div>\n ) : (\n <div className=\"zds-pickers__container\">\n {Boolean(label) && <span className=\"zds-pickers__label\">{label}</span>}\n <ReactSelect\n {...rest}\n classNamePrefix=\"zds-pickers\"\n components={{\n IndicatorsContainer: CustomIndicatorsContainer,\n ...components,\n }}\n isDisabled={disabled}\n onChange={handleChange}\n options={flatOptionsList}\n // biome-ignore lint/suspicious/noExplicitAny: <explanation>\n ref={ref as React.Ref<any>}\n styles={\n styles as StylesConfig<\n Option<unknown>,\n false,\n GroupBase<Option<unknown>>\n >\n }\n value={selectedOption}\n />\n </div>\n )\n },\n) as <T>(\n props: SelectProps<T> & {\n ref?: React.ForwardedRef<\n SelectInstance<Option<T>, false, GroupBase<Option<T>>>\n >\n },\n) => JSX.Element\n\nexport { noSelection, noSelectionOption, Select }\n\nexport type { Option, SelectProps }\n","import { forwardRef } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { changeControllerOptions } from '../midi/ccValues'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype CCPickerProps = Omit<SelectProps<number>, 'options'>\n\ntype CCPickerRef = SelectInstance<\n Option<number>,\n false,\n GroupBase<Option<number>>\n>\n\nconst CCPicker = forwardRef<\n SelectInstance<Option<number>, false, GroupBase<Option<number>>>,\n CCPickerProps\n>((props, ref) => (\n <Select\n {...props}\n options={changeControllerOptions}\n ref={ref}\n />\n))\n\nexport { CCPicker }\n\nexport type { CCPickerProps, CCPickerRef }\n","import cl from 'classnames'\nimport { forwardRef, useCallback, useEffect, useState } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { arraySequence } from '../utils'\nimport { Select, noSelection } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype InternalValue = number | 'separator'\n// type ExternalValue = number\n\ntype ChannelMappingOption = Option<InternalValue>\n\nconst defaultOptions: ChannelMappingOption[] = arraySequence(16).map(value => ({\n value,\n label: value,\n}))\n\ninterface ChannelMappingPickerProps\n extends Omit<SelectProps<InternalValue>, 'options'> {\n channels: Option<number>[]\n className?: string\n filterOptions?: (\n candidate: Option<InternalValue>,\n inputValue: string,\n ) => boolean\n value: number\n onChange: (value: InternalValue) => void\n}\n\ntype ChannelMappingPickerRef = SelectInstance<\n Option<number>,\n false,\n GroupBase<Option<number>>\n>\n\ntype FormatOptionLabelFunction = NonNullable<\n SelectProps<InternalValue>['formatOptionLabel']\n>\n\nconst ChannelMappingPicker = forwardRef<\n SelectInstance<\n Option<InternalValue>,\n false,\n GroupBase<Option<InternalValue>>\n >,\n ChannelMappingPickerProps\n>(({ channels, className, ...rest }, ref) => {\n const [options, setOptions] = useState<Option<InternalValue>[]>([])\n\n const formatOptionLabel: FormatOptionLabelFunction = useCallback(\n ({ value, label }, { context }) => {\n if (value === 'separator') {\n return <span className=\"zds-mappings-user-mapping\">{label}</span>\n }\n\n if (typeof value !== 'number') return null\n\n const mapping = channels[value]\n\n return mapping ? (\n <span className=\"mapping-entry\">\n <b>\n {value !== noSelection && (\n <>\n {value + 1}\n {context === 'value' && ' -'}\n </>\n )}\n </b>\n <span className=\"mapping-entry-label\">{mapping.label}</span>\n </span>\n ) : (\n <span className=\"mapping-entry empty-mapping-entry\">\n <b>\n {value !== noSelection && (\n <>\n {value + 1}\n {context === 'value' && ' -'}\n </>\n )}\n </b>\n <span className=\"mapping-entry-label\">no mapping</span>\n </span>\n )\n },\n [channels],\n )\n\n useEffect(() => {\n const result = defaultOptions.sort(\n (a: ChannelMappingOption, b: ChannelMappingOption) => {\n if (\n typeof a.value === 'number' &&\n typeof b.value === 'number' &&\n channels[a.value] &&\n !channels[b.value]\n ) {\n return -1\n }\n\n if (\n typeof a.value === 'number' &&\n typeof b.value === 'number' &&\n !channels[a.value] &&\n channels[b.value]\n ) {\n return 1\n }\n\n if (typeof a.value === 'number' && typeof b.value === 'number') {\n return a.value - b.value\n }\n return 0\n },\n )\n\n const numFilled = result.filter(\n ({ value }) =>\n (typeof value === 'number' && !!channels[value]) ||\n value === noSelection,\n ).length\n\n const separatorExists = result.some(({ value }) => value === 'separator')\n\n if (numFilled && numFilled < 16 && !separatorExists) {\n // insert a separator after the count of filled items\n result.splice(numFilled, 0, { label: <hr />, value: 'separator' })\n }\n\n setOptions(result)\n }, [channels])\n\n return (\n <Select<InternalValue>\n {...rest}\n className={cl(className, 'channel-mapping-picker')}\n formatOptionLabel={formatOptionLabel}\n options={options}\n ref={ref}\n />\n )\n})\n\nexport { ChannelMappingPicker }\n\nexport type {\n ChannelMappingOption,\n ChannelMappingPickerProps,\n ChannelMappingPickerRef,\n}\n","import cl from 'classnames'\nimport { forwardRef, useCallback } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { arraySequence } from '../utils'\nimport { Select } from './Select'\nimport { type Option, type SelectProps, noSelection } from './Select'\n\ntype Channel =\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12\n | 13\n | 14\n | 15\n | typeof noSelection\n\ninterface FormatOptionLabelContext {\n context: 'menu' | 'value'\n}\n\ntype ChannelPickerProps = Omit<SelectProps<Channel>, 'options'>\n\ntype ChannelPickerRef = SelectInstance<\n Option<Channel>,\n false,\n GroupBase<Option<Channel>>\n>\n\nconst options: Option<Channel>[] = arraySequence(16).map(value => ({\n value: value as Channel,\n label: `Channel ${value + 1}`,\n}))\n\nconst filterOptions = (option: Option<Channel>, input: string) => {\n // console.log(option, input)\n\n if (input) {\n return String(option.label).toLowerCase().includes(input.toLowerCase())\n }\n return true\n}\n\nconst ChannelPicker = forwardRef<\n SelectInstance<Option<Channel>, false, GroupBase<Option<Channel>>>,\n ChannelPickerProps\n>(({ className, value = noSelection, ...rest }, ref) => {\n const formatOptionLabel = useCallback(\n (option: Option<unknown>, { context }: FormatOptionLabelContext) => {\n if (value === undefined) {\n return '--'\n }\n return context === 'value'\n ? option.label\n : Number.parseInt(String(option.value)) + 1 // menu, e.g. the list of options\n },\n [value],\n )\n\n return (\n <Select\n {...rest}\n className={cl(className, 'channel-picker')}\n filterOptions={filterOptions}\n formatOptionLabel={formatOptionLabel}\n options={options}\n value={value}\n ref={ref}\n />\n )\n})\n\nexport { ChannelPicker }\n\nexport type { Channel, ChannelPickerProps, ChannelPickerRef }\n","import { useCallback } from 'react'\nimport { OctavePlayer, type OctavePlayerProps } from '../other/OctavePlayer'\nimport { noSelection } from './Select'\n\ntype KeyPickerProps = Omit<OctavePlayerProps, 'selectedNotes' | 'onClick'> & {\n value: number\n onChange: (value: number) => void\n disabled?: boolean\n height?: number\n width?: number\n octave?: number\n}\n\nconst KeyPicker = (props: KeyPickerProps) => {\n const {\n value,\n onChange,\n disabled = false,\n height = 100,\n width = 300,\n octave = 4,\n ...rest\n } = props\n\n const handleKeyClick = useCallback(\n (note: number) => {\n if (disabled) return\n onChange(note)\n },\n [disabled, onChange],\n )\n\n // Only highlight the note if it's a valid selection and within the octave range\n // Octave 4 = C4 (60) to B4 (71)\n const octaveStart = 60 + (octave - 4) * 12\n const octaveEnd = octaveStart + 11\n const shouldHighlight =\n value !== noSelection && value >= octaveStart && value <= octaveEnd\n\n return (\n <OctavePlayer\n {...rest}\n selectedNotes={shouldHighlight ? [value] : []}\n disabled={disabled}\n height={height}\n width={width}\n octave={octave}\n onClick={handleKeyClick}\n instrumentName=\"acoustic_grand_piano\"\n />\n )\n}\n\nexport { KeyPicker }\nexport type { KeyPickerProps }\n","import { useEffect, useState } from 'react'\n\nconst useStateWithDynamicDefault = <T>(defaultVal: T) => {\n const [state, setState] = useState<T>(defaultVal)\n\n useEffect(() => {\n setState(defaultVal)\n }, [defaultVal])\n\n return [state, setState] as const\n}\n\nexport default useStateWithDynamicDefault\n","module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=3)}([function(e,t){e.exports=require(\"react\")},function(e,t){e.exports=require(\"prop-types\")},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r,o=n(0);var i=((r=o)&&r.__esModule?r:{default:r}).default.createContext(null);t.default=i},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.SvgLoader=t.SvgProxy=void 0;var r=i(n(4)),o=i(n(8));function i(e){return e&&e.__esModule?e:{default:e}}t.SvgProxy=o.default,t.SvgLoader=r.default},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=s(n(0)),a=s(n(1)),l=s(n(5)),u=s(n(2));function s(e){return e&&e.__esModule?e:{default:e}}var c=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));if(n.mounted=!1,n.state={svg:null,svgCount:0},null==i.default.Fragment)throw new Error(\"This version of React doesn't support Fragments, please update it\");return n.onSVGReady=n.onSVGReady.bind(n),n}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,[{key:\"componentDidMount\",value:function(){this.mounted=!0}},{key:\"componentWillUnmount\",value:function(){this.mounted=!1}},{key:\"onSVGReady\",value:function(e){var t=this;setTimeout((function(){t.mounted&&(t.setState(r({},t.state,{svg:e,svgCount:t.state.svgCount+1})),t.props.onSVGReady(e))}),0)}},{key:\"render\",value:function(){var e=this.props,t=e.path,n=(e.onSVGReady,e.children,e.svgXML),o=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,[\"path\",\"onSVGReady\",\"children\",\"svgXML\"]),a=null!=this.state.svg?this.props.children:null;return i.default.createElement(i.default.Fragment,null,i.default.createElement(l.default,r({path:t,callback:this.onSVGReady,svgXML:n},o)),i.default.createElement(u.default.Provider,{value:{path:t,svgCount:this.state.svgCount,svg:this.state.svg}},a))}}]),t}(i.default.Component);t.default=c,c.propTypes={path:a.default.string,svgXML:a.default.string,onSVGReady:a.default.func,style:a.default.object,children:a.default.any},c.defaultProps={path:null,svgXML:null,onSVGReady:function(){},style:null}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=l(n(1)),a=l(n(0));function l(e){return e&&e.__esModule?e:{default:e}}function u(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}var s=\"undefined\"!=typeof window?n(6):void 0,c=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var e=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.refCallback=e.refCallback.bind(e),e}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,[{key:\"componentDidUpdate\",value:function(e){this.props.path===e.path&&this.props.svgXML===e.svgXML||(this.container&&(this.container.innerHTML=\"\"),this.renderSVG(this.props))}},{key:\"refCallback\",value:function(e){e&&(this.container=e,this.renderSVG())}},{key:\"renderSVG\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,n=this.container,r=t.callback,o=(t.path,t.svgXML),i=(t.className,u(t,[\"callback\",\"path\",\"svgXML\",\"className\"]));s(n,{each:function(t){if(t)throw new Error(t);r(e.container)},svgXML:o},(function(){n&&i&&Object.keys(i).reduce((function(e,t){return\"style\"!==t&&e.setAttribute(t,i[t]),n}),n)}))}},{key:\"render\",value:function(){var e=this.props,t=(e.callback,e.path,e.svgXML,u(e,[\"callback\",\"path\",\"svgXML\"]));return a.default.createElement(\"svg\",r({ref:this.refCallback,\"data-src\":this.props.path},t))}}]),t}(a.default.Component);t.default=c,c.defaultProps={callback:function(){},path:null,svgXML:null},c.propTypes={callback:i.default.func,path:i.default.string,svgXML:i.default.string}},function(e,t,n){\"use strict\";(function(e){var r,o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};\n/**\n * Changes:\n * - Don't replace the node. Justs its innerHTML\n * Adapted from:\n * Original Copyright notice ---------------------------\n * SVGInjector v1.1.3 - Fast, caching, dynamic inline SVG DOM injection library\n * https://github.com/iconic/SVGInjector\n *\n * Copyright (c) 2014-2015 Waybury <hello@waybury.com>\n * @license MIT\n *\n */\n!function(i,a){var l=\"file:\"===i.location.protocol;a.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\",\"1.1\");var u=Array.prototype.forEach||function(e,t){if(null==this||\"function\"!=typeof e)throw new TypeError;var n,r=this.length>>>0;for(n=0;n<r;++n)n in this&&e.call(t,this[n],n,this)},s={},c=0,f=[],p=[],d=function(e){return e.cloneNode(!0)},v=function(e,t){p[e]=p[e]||[],p[e].push(t)},h=function(e,t){if(void 0!==s[e])s[e]instanceof SVGSVGElement?t(d(s[e])):v(e,t);else{if(!i.XMLHttpRequest)return t(\"Browser does not support XMLHttpRequest\"),!1;s[e]={},v(e,t);var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===n.readyState){if(404===n.status||null===n.responseXML)return t(\"Unable to load SVG file: \"+e),l&&t(\"Note: SVG injection ajax calls do not work locally without adjusting security setting in your browser. Or consider using a local webserver.\"),t(),!1;if(!(200===n.status||l&&0===n.status))return t(\"There was a problem injecting the SVG: \"+n.status+\" \"+n.statusText),!1;if(n.responseXML instanceof Document)s[e]=n.responseXML.documentElement;else if(DOMParser&&DOMParser instanceof Function){var r;try{r=(new DOMParser).parseFromString(n.responseText,\"text/xml\")}catch(e){r=void 0}if(!r||r.getElementsByTagName(\"parsererror\").length)return t(\"Unable to parse SVG file: \"+e),!1;s[e]=r.documentElement}!function(e){for(var t=0,n=p[e].length;t<n;t++)!function(t){setTimeout((function(){p[e][t](d(s[e]))}),0)}(t)}(e)}},n.open(\"GET\",e),n.overrideMimeType&&n.overrideMimeType(\"text/xml\"),n.send()}},y=function(e,t){if(void 0===t||\"string\"==typeof t)return!1;var n=e.getAttribute(\"id\");n&&t.setAttribute(\"id\",n);var r=e.getAttribute(\"title\");r&&t.setAttribute(\"title\",r);var o=[].concat(t.getAttribute(\"class\")||[],\"injected-svg\",e.getAttribute(\"class\")||[]).join(\" \");t.setAttribute(\"class\",function(e){for(var t={},n=(e=e.split(\" \")).length,r=[];n--;)t.hasOwnProperty(e[n])||(t[e[n]]=1,r.unshift(e[n]));return r.join(\" \")}(o));var i=e.getAttribute(\"style\");i&&t.setAttribute(\"style\",i);var a=[].filter.call(e.attributes,(function(e){return/^data-\\w[\\w\\-]*$/.test(e.name)}));u.call(a,(function(e){e.name&&e.value&&t.setAttribute(e.name,e.value)}));var l,s,p,d,v,h={clipPath:[\"clip-path\"],\"color-profile\":[\"color-profile\"],cursor:[\"cursor\"],filter:[\"filter\"],linearGradient:[\"fill\",\"stroke\"],marker:[\"marker\",\"marker-start\",\"marker-mid\",\"marker-end\"],mask:[\"mask\"],pattern:[\"fill\",\"stroke\"],radialGradient:[\"fill\",\"stroke\"]};Object.keys(h).forEach((function(e){l=e,p=h[e];for(var n=0,r=(s=t.querySelectorAll(\"defs \"+l+\"[id]\")).length;n<r;n++){var o;d=s[n].id,v=d+\"-\"+c,u.call(p,(function(e){for(var n=0,r=(o=t.querySelectorAll(\"[\"+e+'*=\"'+d+'\"]')).length;n<r;n++)o[n].setAttribute(e,\"url(#\"+v+\")\")})),s[n].id=v}})),t.removeAttribute(\"xmlns:a\");var y=t.querySelectorAll(\"style\");if(u.call(y,(function(e){e.textContent+=\"\"})),b(e,t),t.hasAttributes())for(var g=t.attributes,m=g.length-1;m>=0;m--)g[m].name+\"->\"+g[m].value,e.setAttribute(g[m].name,g[m].value);delete f[f.indexOf(e)],e=null,c++},b=function(e,t){if(e.innerHTML=t.innerHTML||\"\",!e.innerHTML){var n=a.createElement(\"div\"),r=\"<svg>\"+function(e){var t=new XMLSerializer;return Array.prototype.slice.call(e.childNodes).map((function(e){return t.serializeToString(e)})).join(\"\")}(t)+\"</svg>\";n.innerHTML=\"\"+r,e.textContent=\"\",Array.prototype.slice.call(n.childNodes[0].childNodes).forEach((function(t){e.appendChild(t)}))}},g=function(e,t,n,r){if(n){var o;try{o=(new DOMParser).parseFromString(n,\"text/xml\")}catch(e){o=void 0}if(!o||o.getElementsByTagName(\"parsererror\").length)return r(\"Unable to parse SVG file: \"+o.getElementsByTagName(\"parsererror\")[0].innerHTML),!1;y(e,o.documentElement),r()}else{var i=e.getAttribute(\"data-src\")||e.getAttribute(\"src\");if(e.setAttribute(\"src\",\"\"),-1!==f.indexOf(e))return;f.push(e),h(i,(function(t){y(e,t),r()}))}},m=function(e,t,n){(t=t||{}).pngFallback;var r=t.each,o=t.svgXML;if(void 0!==e.length){var i=0;u.call(e,(function(t){g(t,0,o,(function(){r&&\"function\"==typeof r&&r(),n&&e.length===++i&&n(i)}))}))}else e?g(e,0,o,(function(){r&&\"function\"==typeof r&&r(),n&&n(1),e=null})):n&&n(0)};\"object\"===o(e)&&\"object\"===o(e.exports)?e.exports=t=m:void 0===(r=function(){return m}.call(t,n,t,e))||(e.exports=r)}(window,document)}).call(this,n(7)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=l(n(0)),i=l(n(1)),a=l(n(2));function l(e){return e&&e.__esModule?e:{default:e}}var u=/(\\w+)_(\\S+)/,s={xlink:\"http://www.w3.org/1999/xlink\"},c=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.elemRefs=[],n.svgRef=null,n.path=null,n.originalValues={},n.onSvgUpdated=n.onSvgUpdated.bind(n),n.updateSvgElements=n.updateSvgElements.bind(n),n}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:\"componentDidMount\",value:function(){this.updateSvgElements(this.props)}},{key:\"componentDidUpdate\",value:function(e){this.props.selector!==e.selector&&(this.elemRefs=[]),this.updateSvgElements(this.props)}},{key:\"onSvgUpdated\",value:function(){this.updateSvgElements(this.props,!0)}},{key:\"updateSvgElements\",value:function(e,t){var n=this.svgRef;if(n&&(0===this.elemRefs.length||t)){var r=[].slice.apply(n.querySelectorAll(e.selector));0===r.length&&-1!==[\"svg\",\"root\"].indexOf(e.selector)&&r.push(n),e.onElementSelected&&r.length&&e.onElementSelected(1===r.length?r[0]:r),this.elemRefs=r}if(this.elemRefs)for(var o=Object.keys(e),i=0;i<o.length;i+=1){var a=o[i];if(!(-1!==[\"selector\",\"onElementSelected\"].indexOf(a))){var l=null,c=null,f=null,p=u.exec(a);p&&p[1]?(l=p[1],c=s[l],f=l+\":\"+p[2]):f=a;for(var d=0;d<this.elemRefs.length;d+=1){var v=this.elemRefs[d];if(\"function\"==typeof e[a])v[a.toLowerCase()]=e[a];else{if(\"string\"!=typeof e[a])return;null==this.originalValues[a]&&(this.originalValues[a]=v.getAttributeNS(c,f)||\"\");var h=e[a].replace(\"$ORIGINAL\",this.originalValues[a]);v.setAttributeNS(c,f,h),\"string\"==typeof e.children&&e.children.trim().length&&(v.textContent=e.children)}}}}}},{key:\"render\",value:function(){var e=this;return o.default.createElement(a.default.Consumer,null,(function(t){var n=t.path,r=t.svg,o=t.svgCount;e.svgCount&&e.svgCount!==o?e.onSvgUpdated():(e.svgRef=r,e.path=n,e.svgCount=o)}))}}]),t}(o.default.Component);t.default=c,c.propTypes={selector:i.default.string.isRequired,onElementSelected:i.default.func},c.defaultProps={onElementSelected:function(){}}}]);","module.exports = require('./dist/index');","import React from 'react'\n\ntype InternalInputProps = {\n disabled?: boolean\n min: number\n max: number\n value: number\n step?: number\n inputRef: React.RefObject<HTMLInputElement>\n onChange: (val: number) => void\n style?: React.CSSProperties\n}\n\nclass InternalInput extends React.Component<InternalInputProps> {\n static defaultProps = {\n step: 1,\n }\n render() {\n const props = this.props\n const hideStyle = {}\n\n function onValChange(event: React.ChangeEvent<HTMLInputElement>) {\n props.onChange(Number(event.target.value))\n }\n\n const { value, min, max, step, onChange, inputRef, ...rest } = props\n return (\n <input\n ref={inputRef}\n value={value}\n step={step}\n onChange={onValChange}\n style={hideStyle}\n type=\"range\"\n min={min}\n max={max}\n {...rest}\n />\n )\n }\n}\n\nexport { InternalInput }\n","/** Note on viewbox/width\n * This methods only work when the pixels match the svg units.\n * when the viewbox is changed, or width is set they won't return\n * the correct results\n */\n/**\n * Returns the global coordinates of a position given\n * for a specific coordinate system\n * @param {*} svgdoc\n * @param {*} elem\n * @param {*} x\n * @param {*} y\n */\n// function toGlobalCoordinates(svgdoc: any, elem: any, x: number, y: number) {\n// var offset = svgdoc.getBoundingClientRect()\n// var matrix = elem.getScreenCTM()\n// return {\n// x: matrix.a * x + matrix.c * y + matrix.e - offset.left,\n// y: matrix.b * x + matrix.d * y + matrix.f - offset.top,\n// }\n// }\n\n/**\n * Converts a global position to a local one\n * @param {*} svgdoc\n * @param {*} elem\n * @param {*} x\n * @param {*} y\n */\n// function toLocalCoordinates(svgdoc: any, elem: any, x: number, y: number) {\n// const offset = svgdoc.getBoundingClientRect()\n// const matrix = elem.getScreenCTM().inverse()\n// return {\n// x: matrix.a * x + matrix.c * y + matrix.e - offset.left,\n// y: matrix.b * x + matrix.d * y + matrix.f - offset.top,\n// }\n// }\n\nfunction toRadians(angle: number) {\n return (angle * Math.PI) / 180\n}\n\nfunction getQuadrant(x: number, y: number) {\n if (x >= 0 && y >= 0) return 1\n if (x <= 0 && y >= 0) return 2\n if (x <= 0 && y <= 0) return 3\n if (x >= 0 && y <= 0) return 4\n return 1\n}\n\n/**\n * Returns the angle (degrees) given a point.\n * Assumes 0,0 as the center of the circle\n * @param {number} x\n * @param {number} y\n */\nfunction getAngleForPoint(x: number, y: number) {\n if (x === 0 && y === 0) return 0\n\n const angle = Math.atan(x / y)\n let angleDeg = (angle * 180) / Math.PI\n //The final value depends on the quadrant\n const quadrant = getQuadrant(x, y)\n\n if (quadrant === 1) {\n angleDeg = 90 - angleDeg\n }\n if (quadrant === 2) {\n angleDeg = 90 - angleDeg\n }\n if (quadrant === 3) {\n angleDeg = 270 - angleDeg\n }\n if (quadrant === 4) {\n angleDeg = 270 - angleDeg\n }\n return angleDeg\n}\n\n/**\n * Transforms the top/left variables of the rectangle\n * returned by getBoundingClientRect to document based coordinates\n * without the scroll.\n * UPDATE\n * @param {Rect} box\n */\nfunction transformBoundingClientRectToDocument(box: DOMRect) {\n let t: HTMLElement\n t = document.documentElement || document.body.parentNode\n const scrollX = (typeof t.scrollLeft === 'number' ? t : document.body)\n .scrollLeft\n\n t = document.documentElement || document.body.parentNode\n const scrollY = (typeof t.scrollTop === 'number' ? t : document.body)\n .scrollTop\n\n //This assumes width == height\n const ttop = box.top - scrollY\n const tleft = box.left - scrollX\n //info needed to draw line from center to mousepos\n\n return { top: ttop, left: tleft, width: box.width, height: box.height }\n}\n\nexport {\n // toGlobalCoordinates,\n // toLocalCoordinates,\n toRadians,\n getQuadrant,\n getAngleForPoint,\n transformBoundingClientRectToDocument,\n}\n","import React from 'react'\n\n/**\n * Draws a circle with radius = r\n * position must be handled by parent\n */\n\ntype DrawCircleProps = React.SVGProps<SVGCircleElement> & {\n r: number\n borderColor?: string\n fillColor?: string\n borderWidth?: number\n fillOpacity: number\n cx: number\n cy: number\n}\n\nclass DrawCircle extends React.Component<DrawCircleProps> {\n render() {\n const {\n r,\n borderColor = 'black',\n fillColor = 'transparent',\n borderWidth = 2,\n fillOpacity = 1,\n ...rest\n } = this.props\n\n return (\n <circle\n stroke={borderColor}\n fill={fillColor}\n fillOpacity={fillOpacity}\n r={r}\n {...rest}\n />\n )\n }\n}\n\nexport { DrawCircle }\n","import React from 'react'\nimport type { Point } from '../Types'\n\n/**\n * Draws a line from p1 to p2\n */\n\ntype DrawLineProps = React.SVGProps<SVGLineElement> & {\n width?: number\n color?: string\n p1: Point\n p2: Point\n}\n\nclass DrawLine extends React.Component<DrawLineProps> {\n render() {\n const { width = 2, color = 'black', p1, p2, ...rest } = this.props\n return (\n <line\n {...rest}\n stroke={color}\n strokeWidth={width}\n x1={p1.x}\n y1={p1.y}\n x2={p2.x}\n y2={p2.y}\n />\n )\n }\n}\n\nexport { DrawLine }\n","import React from 'react'\nimport ReactDOM from 'react-dom'\n\ntype HelpersOverlayProps = React.PropsWithChildren & {\n overlayStyle?: React.CSSProperties\n}\n\n/**\n * Draws the overlay and the children\n */\nclass HelpersOverlay extends React.Component<HelpersOverlayProps> {\n render() {\n const { children, ...rest } = this.props\n\n const styles = {\n overlay: Object.assign(\n {\n width: '100%',\n height: '100vh',\n top: 0,\n left: 0,\n zIndex: 2147483647,\n margin: '0',\n padding: '0',\n boxSizing: 'border-box',\n position: 'fixed',\n },\n this.props.overlayStyle,\n ),\n }\n\n return ReactDOM.createPortal(\n <div\n style={styles.overlay}\n {...rest}>\n {children}\n </div>,\n document.body,\n )\n }\n}\n\nexport { HelpersOverlay }\n","import React from 'react'\nimport type { Point } from '../Types'\nimport { toRadians } from '../utils'\nimport { DrawCircle } from './DrawCircle'\nimport { DrawLine } from './DrawLine'\nimport { HelpersOverlay } from './HelpersOverlay'\n\n/** Precision visual helpers */\n\n/**\n * Precision mode visual helpers\n */\ntype KnobVisualHelpersProps = {\n svgRef?: SVGSVGElement\n radius: number\n minimumDragDistance: number\n valueAngle: number\n mousePos: Point\n}\n\ntype KnobVisualHelpersState = {\n centerX: number\n centerY: number\n valueMarkerX: number\n valueMarkerY: number\n}\n\nclass KnobVisualHelpers extends React.Component<\n KnobVisualHelpersProps,\n KnobVisualHelpersState\n> {\n state = {\n centerX: 0,\n centerY: 0,\n valueMarkerX: 0,\n valueMarkerY: 0,\n }\n\n static getDerivedStateFromProps(\n props: KnobVisualHelpersProps,\n state: KnobVisualHelpersState,\n ) {\n //Calculate position\n if (!props.svgRef) return state\n\n const vbox = props.svgRef.getBoundingClientRect()\n const halfWidth = vbox.width / 2\n\n //Calculate current angle segment end point\n //Note: Not sure why we need to subtract 90 here\n const valueMarkerX =\n props.radius * Math.cos(toRadians(props.valueAngle - 90))\n const valueMarkerY =\n props.radius * Math.sin(toRadians(props.valueAngle - 90))\n\n return {\n ...state,\n centerX: vbox.left + halfWidth,\n centerY: vbox.top + halfWidth,\n valueMarkerX,\n valueMarkerY,\n }\n }\n\n render() {\n const markCircleColor =\n this.props.minimumDragDistance <= this.props.radius ? 'green' : 'grey'\n const fillColor =\n this.props.minimumDragDistance <= this.props.radius\n ? '#88E22D'\n : '#D8D8D8'\n const minDistanceCueVisible =\n this.props.minimumDragDistance >= this.props.radius\n\n return (\n <HelpersOverlay>\n <svg\n style={{ position: 'absolute', top: '0', left: '0' }}\n width=\"100%\"\n height=\"100%\">\n <defs>\n <marker\n id=\"Triangle\"\n viewBox=\"0 0 10 10\"\n refX=\"1\"\n refY=\"5\"\n markerWidth=\"6\"\n markerHeight=\"6\"\n orient=\"auto\">\n <path d=\"M 0 0 L 10 5 L 0 10 z\" />\n </marker>\n </defs>\n\n {/* Current drag distance */}\n <DrawCircle\n borderColor={markCircleColor}\n fillColor={fillColor}\n fillOpacity={0.02}\n r={this.props.radius}\n cx={this.state.centerX}\n cy={this.state.centerY}\n />\n {/* Minimum drag distance marker */}\n {minDistanceCueVisible && (\n <DrawCircle\n borderColor={markCircleColor}\n fillColor={fillColor}\n fillOpacity={0}\n r={this.props.minimumDragDistance}\n cx={this.state.centerX}\n cy={this.state.centerY}\n //strokeDasharray=\"5, 5\"\n />\n )}\n\n {/* Line to mouse position */}\n {/* <DrawLine\n p1={{ x: this.state.centerX, y: this.state.centerY }}\n p2={{ x: this.props.mousePos.x, y: this.props.mousePos.y }}\n opacity={0.4}\n strokeDasharray=\"5, 5\"\n /> */}\n {/* Line to current value */}\n <DrawLine\n p1={{ x: this.state.centerX, y: this.state.centerY }}\n p2={{\n x: this.state.valueMarkerX + this.state.centerX,\n y: this.state.valueMarkerY + this.state.centerY,\n }}\n markerEnd=\"url(#Triangle)\"\n />\n </svg>\n </HelpersOverlay>\n )\n }\n}\n\nexport { KnobVisualHelpers }\n","export default {\n knobX: 71,\n knobY: 71,\n svg: `\n\n<svg width=\"204px\" height=\"204px\" viewBox=\"0 0 204 204\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <!-- Generator: Sketch 47.1 (45422) - http://www.bohemiancoding.com/sketch -->\n <desc>Created with Sketch.</desc>\n <defs>\n <linearGradient x1=\"50%\" y1=\"50%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\">\n <stop stop-color=\"#444040\" stop-opacity=\"0.51098279\" offset=\"0%\"></stop>\n <stop stop-color=\"#131111\" stop-opacity=\"0.893200861\" offset=\"100%\"></stop>\n </linearGradient>\n <circle id=\"path-2\" cx=\"98.0400009\" cy=\"98.0400009\" r=\"98.0400009\"></circle>\n <filter x=\"-3.3%\" y=\"-3.3%\" width=\"106.6%\" height=\"106.6%\" filterUnits=\"objectBoundingBox\" id=\"filter-3\">\n <feMorphology radius=\"0.5\" operator=\"dilate\" in=\"SourceAlpha\" result=\"shadowSpreadOuter1\"></feMorphology>\n <feOffset dx=\"0\" dy=\"0\" in=\"shadowSpreadOuter1\" result=\"shadowOffsetOuter1\"></feOffset>\n <feGaussianBlur stdDeviation=\"2\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"></feGaussianBlur>\n <feComposite in=\"shadowBlurOuter1\" in2=\"SourceAlpha\" operator=\"out\" result=\"shadowBlurOuter1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowBlurOuter1\"></feColorMatrix>\n </filter>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-4\">\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0.5\" offset=\"0%\"></stop>\n <stop stop-color=\"#000000\" stop-opacity=\"0.5\" offset=\"100%\"></stop>\n </linearGradient>\n <circle id=\"path-5\" cx=\"98\" cy=\"98\" r=\"86\"></circle>\n <filter x=\"-4.1%\" y=\"-3.5%\" width=\"108.1%\" height=\"108.1%\" filterUnits=\"objectBoundingBox\" id=\"filter-6\">\n <feMorphology radius=\"0.5\" operator=\"dilate\" in=\"SourceAlpha\" result=\"shadowSpreadOuter1\"></feMorphology>\n <feOffset dx=\"0\" dy=\"1\" in=\"shadowSpreadOuter1\" result=\"shadowOffsetOuter1\"></feOffset>\n <feGaussianBlur stdDeviation=\"2\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"></feGaussianBlur>\n <feComposite in=\"shadowBlurOuter1\" in2=\"SourceAlpha\" operator=\"out\" result=\"shadowBlurOuter1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowBlurOuter1\"></feColorMatrix>\n </filter>\n </defs>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"s13\" transform=\"translate(4.000000, 4.000000)\">\n <g id=\"container\">\n <g id=\"Oval-2\">\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-3)\" xlink:href=\"#path-2\"></use>\n <use stroke=\"#979797\" stroke-width=\"1\" fill=\"url(#linearGradient-1)\" fill-rule=\"evenodd\" xlink:href=\"#path-2\"></use>\n </g>\n <g id=\"Oval-2\">\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-6)\" xlink:href=\"#path-5\"></use>\n <use fill=\"\" fill-rule=\"evenodd\" xlink:href=\"#path-5\"></use>\n <use stroke=\"#4A4A4A\" stroke-width=\"1\" fill=\"url(#linearGradient-4)\" fill-rule=\"evenodd\" xlink:href=\"#path-5\"></use>\n </g>\n <g id=\"knob\" transform=\"translate(27.431373, 27.431373)\">\n <circle id=\"Oval-5\" fill=\"#322E2E\" cx=\"71\" cy=\"71\" r=\"71\"></circle>\n\n <!-- Fixed position marks -->\n <!-- 12:00 position mark (less prominent) -->\n <line x1=\"71\" y1=\"15\" x2=\"71\" y2=\"25\" stroke=\"#666666\" stroke-width=\"1\" opacity=\"0.6\"/>\n\n <!-- End position marks (0 and 127) -->\n <!-- 0 position mark (40 degrees from top, clockwise) -->\n <line x1=\"95.5\" y1=\"45.5\" x2=\"88.5\" y2=\"52.5\" stroke=\"#CCCCCC\" stroke-width=\"2\"/>\n\n <!-- 127 position mark (320 degrees from top, clockwise) -->\n <line x1=\"46.5\" y1=\"45.5\" x2=\"53.5\" y2=\"52.5\" stroke=\"#CCCCCC\" stroke-width=\"2\"/>\n\n <!-- Rotating indicator (existing) -->\n <path d=\"M70.0686275,4.17063061 L86.5686275,65.2689929 C81.3642501,66.811221 75.8642501,67.5735686 70.0686275,67.5560356 C64.2730048,67.5385027 58.7730048,66.7761551 53.5686275,65.2689929 L70.0686275,4.17063061 Z\" id=\"Rectangle-Copy\" fill=\"#E6D7D7\" transform=\"translate(70.068627, 35.863481) scale(1, -1) translate(-70.068627, -35.863481) \"></path>\n </g>\n </g>\n </g>\n </g>\n</svg>\n`,\n}\n","/**\n * Show the rotation circle and marker\n * dispatches drag events\n */\n\nimport { type D3DragEvent, drag } from 'd3-drag'\nimport { type ScaleLinear, scaleLinear } from 'd3-scale'\nimport { select } from 'd3-selection'\nimport type { BaseType, Selection } from 'd3-selection'\nimport { useEffect, useRef, useState } from 'react'\nimport { SvgLoader, SvgProxy } from 'react-svgmt'\nimport { InternalInput } from './InternalInput'\nimport type { Point } from './Types'\nimport { KnobVisualHelpers } from './helpers/KnobVisualHelpers'\nimport defaultSkin from './knobdefaultskin'\nimport { getAngleForPoint } from './utils'\n\n/**\n * type definition for the skin system attribute modification element\n */\ntype AttributeSetValue = {\n name: string\n value: (props: unknown, value: unknown) => string\n}\n\n/**\n * Type definition for the skin element manipulation block\n */\n\ninterface UpdateElement {\n element: string\n content: (_props: React.CSSProperties, value: number) => string\n attrs: AttributeSetValue[]\n}\n\ninterface Skin {\n svg: string\n knobX: number\n knobY: number\n updateAttributes: UpdateElement[]\n}\n\ntype KnobProps = Omit<React.ComponentProps<'div'>, 'onChange'> & {\n clampMax?: number\n clampMin?: number\n defaultValue?: number\n disabled?: boolean\n format?: (val: number) => string\n max?: number\n min?: number\n onChange?: (val: number) => void\n onEnd?: () => void\n onStart?: () => void\n preciseMode?: boolean\n rotateDegrees?: number\n skin?: Skin\n step?: number\n style: React.CSSProperties\n unlockDistance?: number\n value?: number\n}\n\ntype KnobState = {\n svgRef?: SVGSVGElement\n dragging: boolean\n dragDistance: number\n mousePos: Point\n valueAngle: number\n uncontrolledValue?: number\n}\n\n// function printDebugValues(obj) {\n// console.log('------------')\n// Object.keys(obj).forEach(key => {\n// const value =\n// typeof obj[key] === 'object' ? JSON.stringify(obj[key]) : obj[key]\n// console.log(`${key}: ${value}`)\n// })\n// console.log('------------')\n// }\n\n/**\n * Generic knob component\n */\nconst RotaryKnob = (props: KnobProps) => {\n const {\n clampMax = 360,\n clampMin = 0,\n defaultValue = 0,\n disabled = false,\n format = (val: number) => val.toFixed(0),\n max = 100,\n min = 0,\n onChange = () => {},\n onEnd = () => {},\n onStart = () => {},\n preciseMode = true,\n rotateDegrees = 0,\n skin = defaultSkin as Skin,\n step = 1,\n style,\n unlockDistance = 100,\n value,\n ...rest\n } = props\n\n const [isControlled, setIsControlled] = useState(value !== undefined)\n\n const container = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n let scale: ScaleLinear<number, number>\n let scaleProps: {\n min: number\n max: number\n clampMin: number\n clampMax: number\n }\n\n const [state, setState] = useState<KnobState>({\n svgRef: undefined,\n dragging: false,\n dragDistance: 0,\n mousePos: { x: 0, y: 0 },\n valueAngle: 0,\n uncontrolledValue: 0,\n })\n\n // returns angles between 0 and 360 for values lower 0 or greater 360\n const normalizeAngle = (angle: number): number => {\n if (angle < 0) {\n //E.g -1 turns 359\n return angle + 360\n }\n if (angle > 360) {\n return angle - 360\n }\n return angle\n }\n\n // converts a value to an angle for the knob respecting the additional rotateDegrees prop\n const convertValueToAngle = (value: number): number => {\n const angle = (getScale()(value) + rotateDegrees) % 360\n return normalizeAngle(angle)\n }\n\n // converts an angle to a value for the knob respecting the additional rotateDegrees prop\n const convertAngleToValue = (angle: number): number => {\n const angle2 = angle - rotateDegrees\n return getScale().invert(normalizeAngle(angle2))\n }\n\n const getScale = () => {\n // Memoize scale so it's not recalculated every time\n if (\n !scaleProps ||\n scaleProps.min !== min ||\n scaleProps.max !== max ||\n scaleProps.clampMin !== clampMin ||\n scaleProps.clampMax !== clampMax\n ) {\n if (rotateDegrees < 270 && rotateDegrees > 90) {\n scale = scaleLinear().domain([min, max]).range([clampMin, clampMax])\n } else {\n scale = scaleLinear().domain([max, min]).range([clampMax, clampMin])\n }\n scale.clamp(true)\n scaleProps = {\n min: min,\n max: max,\n clampMin: clampMin,\n clampMax: clampMax,\n }\n }\n return scale\n }\n\n useEffect(() => {\n setIsControlled(value !== undefined)\n\n setState(prevState => ({\n ...prevState,\n uncontrolledValue: value ?? defaultValue ?? 0,\n }))\n\n if (container.current) {\n // Remove existing drag behavior\n select(container.current).on('.drag', null)\n // Only setup new drag if not disabled\n if (!disabled) {\n setupDragging(select(container.current))\n }\n }\n }, [value, defaultValue, disabled])\n\n const saveRef = (elem: SVGElement) => {\n if (!state.svgRef) {\n setState({ ...state, svgRef: elem as SVGSVGElement })\n }\n }\n\n const onAngleChanged = (angle: number) => {\n //Calculate domain value\n const domainValue = convertAngleToValue(angle)\n if (!isControlled) {\n /**\n * If the mode is 'uncontrolled' we need to update our local state\n */\n setState(st => {\n return { ...st, uncontrolledValue: domainValue }\n })\n }\n if (!disabled) onChange(domainValue)\n }\n\n /**\n * Returns the current value (depending on controlled/uncontrolled mode)\n */\n const getValue = (): number =>\n isControlled ? (value ?? 0) : (state.uncontrolledValue ?? 0)\n\n const setupDragging = (\n elem: Selection<HTMLDivElement, unknown, BaseType, unknown>,\n ) => {\n if (!elem?.node()) return\n const node = elem.node()\n if (!node) return\n\n let vbox = node.getBoundingClientRect()\n const cx = vbox.width / 2\n const cy = vbox.height / 2\n\n // Shared state via closure\n let startPos: Point\n let startAngle: number\n let initialAngle: number\n let monitoring = false\n\n function started(event: D3DragEvent<HTMLDivElement, unknown, unknown>) {\n if (!event?.sourceEvent) return\n if (!node) return\n\n const currentValue = getValue()\n\n vbox = node.getBoundingClientRect()\n elem.classed('dragging', true)\n onStart()\n\n startPos = { x: event.x - cx, y: event.y - cy }\n startAngle = getAngleForPoint(startPos.x, startPos.y)\n initialAngle = convertValueToAngle(currentValue)\n monitoring = false\n\n // ...existing setState code...\n }\n\n function dragged(event: D3DragEvent<HTMLDivElement, unknown, unknown>) {\n const currentPos = { x: event.x - cx, y: event.y - cy }\n const distanceFromCenter = Math.sqrt(\n currentPos.x ** 2 + currentPos.y ** 2,\n )\n\n if (preciseMode) {\n if (!monitoring && distanceFromCenter >= unlockDistance) {\n startPos = currentPos\n startAngle = getAngleForPoint(currentPos.x, currentPos.y)\n monitoring = true\n }\n } else {\n monitoring = true\n }\n\n const currentAngle = getAngleForPoint(currentPos.x, currentPos.y)\n const deltaAngle = currentAngle - startAngle\n let finalAngle = initialAngle + deltaAngle\n finalAngle = normalizeAngle(finalAngle)\n\n if (monitoring) {\n onAngleChanged(finalAngle)\n }\n\n setState(prevState => ({\n ...prevState,\n dragDistance: distanceFromCenter,\n mousePos: {\n x: event.sourceEvent.clientX,\n y: event.sourceEvent.clientY,\n },\n valueAngle: monitoring ? finalAngle : initialAngle,\n }))\n }\n\n function ended() {\n elem.classed('dragging', false)\n setState(prevState => ({ ...prevState, dragging: false }))\n onEnd()\n inputRef.current?.focus()\n }\n\n const dragInstance = drag<HTMLDivElement, unknown>()\n .container(() => node)\n .on('start', started)\n .on('drag', dragged)\n .on('end', ended)\n\n elem.call(dragInstance)\n }\n\n const onFormControlChange = (newVal: number) => {\n if (!isControlled) {\n /**\n * If the mode is 'uncontrolled' we need to update our local state\n */\n setState(prevState => ({ ...prevState, uncontrolledValue: newVal }))\n }\n\n if (!disabled) onChange(newVal)\n }\n\n const currentValue: number = getValue()\n const angle = convertValueToAngle(currentValue)\n\n const styles: {\n container: React.CSSProperties\n input: React.CSSProperties\n } = {\n container: Object.assign(\n {},\n {\n width: '50px',\n height: '50px',\n overflow: 'hidden',\n position: 'relative',\n userSelect: 'none',\n cursor: 'crosshair',\n },\n style,\n ),\n input: {\n width: '50%',\n position: 'absolute',\n top: '0',\n left: '-100%',\n },\n }\n\n //Get custom updates defined by the skin\n //Transform the updateAttributes array into a SvgProxy array\n const updateAttrs = skin.updateAttributes\n const skinElemUpdates = updateAttrs\n ? updateAttrs.map((elemUpdate, ix: number) => {\n let elemContent: string | null = null\n if (elemUpdate.content) {\n elemContent = elemUpdate.content(props, currentValue)\n }\n const attributes: Record<string, string> = {}\n //Call value function\n //TODO: support string values\n for (const attr of elemUpdate.attrs || []) {\n attributes[attr.name] = attr.value(props, currentValue)\n }\n\n return (\n <SvgProxy\n key={ix}\n selector={elemUpdate.element}\n {...attributes}>\n {elemContent}\n </SvgProxy>\n )\n })\n : null\n\n return (\n <>\n <div\n ref={container}\n style={styles.container}\n {...rest}>\n <InternalInput\n disabled={disabled}\n inputRef={inputRef}\n style={styles.input}\n value={currentValue}\n min={min}\n max={max}\n step={step}\n onChange={onFormControlChange}\n />\n\n <SvgLoader\n height=\"100%\"\n svgXML={skin.svg}\n width=\"100%\"\n onSVGReady={saveRef}>\n <SvgProxy\n selector=\"#knob\"\n transform={`$ORIGINAL rotate(${angle}, ${skin.knobX}, ${skin.knobY})`}\n />\n {skinElemUpdates}\n </SvgLoader>\n </div>\n\n {state.dragging && preciseMode && (\n <KnobVisualHelpers\n svgRef={state.svgRef}\n radius={state.dragDistance}\n mousePos={state.mousePos}\n minimumDragDistance={unlockDistance}\n valueAngle={state.valueAngle}\n />\n )}\n </>\n )\n}\n\nexport { RotaryKnob }\n","const knobSkin10 = {\n knobX: 71.44,\n knobY: 71.44,\n svg: `\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"207px\" height=\"207px\" viewBox=\"0 0 207 207\" version=\"1.1\">\n <!-- Generator: Sketch 47.1 (45422) - http://www.bohemiancoding.com/sketch -->\n <desc>Created with Sketch.</desc>\n <defs>\n <linearGradient x1=\"50%\" y1=\"50%\" x2=\"50%\" y2=\"100%\" id=\"27c61b0f-392f-962d-de12-cb9da898274b\">\n <stop stop-color=\"#444040\" stop-opacity=\"0.51098279\" offset=\"0%\"/>\n <stop stop-color=\"#131111\" stop-opacity=\"0.893200861\" offset=\"100%\"/>\n </linearGradient>\n <circle id=\"e966567b-3869-4bcd-76b6-2cf084e45390\" cx=\"100.497487\" cy=\"100.497487\" r=\"99.4974874\"/>\n <filter x=\"-3.3%\" y=\"-3.3%\" width=\"106.5%\" height=\"106.5%\" filterUnits=\"objectBoundingBox\" id=\"e2e6829f-0086-96b2-e92a-6f3809b8ac61\">\n <feMorphology radius=\"0.5\" operator=\"dilate\" in=\"SourceAlpha\" result=\"shadowSpreadOuter1\"/>\n <feOffset dx=\"0\" dy=\"0\" in=\"shadowSpreadOuter1\" result=\"shadowOffsetOuter1\"/>\n <feGaussianBlur stdDeviation=\"2\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"/>\n <feComposite in=\"shadowBlurOuter1\" in2=\"SourceAlpha\" operator=\"out\" result=\"shadowBlurOuter1\"/>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowBlurOuter1\"/>\n </filter>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"0facd5c9-8e04-e83f-4842-8ba16f949942\">\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0.5\" offset=\"0%\"/>\n <stop stop-color=\"#000000\" stop-opacity=\"0.5\" offset=\"100%\"/>\n </linearGradient>\n <circle id=\"c54189ed-7ea3-956c-f040-f0207548b268\" cx=\"100.432161\" cy=\"100.432161\" r=\"86.4321608\"/>\n <filter x=\"-4.0%\" y=\"-3.5%\" width=\"108.1%\" height=\"108.1%\" filterUnits=\"objectBoundingBox\" id=\"dedf2e7e-f008-c315-f682-e424d670f210\">\n <feMorphology radius=\"0.5\" operator=\"dilate\" in=\"SourceAlpha\" result=\"shadowSpreadOuter1\"/>\n <feOffset dx=\"0\" dy=\"1\" in=\"shadowSpreadOuter1\" result=\"shadowOffsetOuter1\"/>\n <feGaussianBlur stdDeviation=\"2\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"/>\n <feComposite in=\"shadowBlurOuter1\" in2=\"SourceAlpha\" operator=\"out\" result=\"shadowBlurOuter1\"/>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowBlurOuter1\"/>\n </filter>\n\n <filter x=\"-5.3%\" y=\"-11.3%\" width=\"110.7%\" height=\"122.6%\" filterUnits=\"objectBoundingBox\" id=\"12f618f7-e258-b597-3ed6-242484ddad8f\">\n <feOffset dx=\"0\" dy=\"0\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\"/>\n <feGaussianBlur stdDeviation=\"2\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"/>\n <feColorMatrix values=\"0 0 0 0 0.915577168 0 0 0 0 0.797591325 0 0 0 0 0.601479722 0 0 0 1 0\" type=\"matrix\" in=\"shadowBlurOuter1\"/>\n </filter>\n <pattern id=\"3cc0e5b8-1f0a-886b-f635-8fcb19212870\" width=\"8.04411765\" height=\"8.04411765\" x=\"21.9558824\" y=\"21.9558824\" patternUnits=\"userSpaceOnUse\">\n <use xlink:href=\"#2b8719c1-286b-ebf8-a488-ac66a6598fc5\" transform=\"scale(0.167585784,0.167585784)\"/>\n </pattern>\n <image id=\"2b8719c1-286b-ebf8-a488-ac66a6598fc5\" width=\"48\" height=\"48\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAEGWlDQ1BrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQgAAOI2NVV1oHFUUPrtzZyMkzlNsNIV0qD8NJQ2TVjShtLp/3d02bpZJNtoi6GT27s6Yyc44M7v9oU9FUHwx6psUxL+3gCAo9Q/bPrQvlQol2tQgKD60+INQ6Ium65k7M5lpurHeZe58853vnnvuuWfvBei5qliWkRQBFpquLRcy4nOHj4g9K5CEh6AXBqFXUR0rXalMAjZPC3e1W99Dwntf2dXd/p+tt0YdFSBxH2Kz5qgLiI8B8KdVy3YBevqRHz/qWh72Yui3MUDEL3q44WPXw3M+fo1pZuQs4tOIBVVTaoiXEI/MxfhGDPsxsNZfoE1q66ro5aJim3XdoLFw72H+n23BaIXzbcOnz5mfPoTvYVz7KzUl5+FRxEuqkp9G/Ajia219thzg25abkRE/BpDc3pqvphHvRFys2weqvp+krbWKIX7nhDbzLOItiM8358pTwdirqpPFnMF2xLc1WvLyOwTAibpbmvHHcvttU57y5+XqNZrLe3lE/Pq8eUj2fXKfOe3pfOjzhJYtB/yll5SDFcSDiH+hRkH25+L+sdxKEAMZahrlSX8ukqMOWy/jXW2m6M9LDBc31B9LFuv6gVKg/0Szi3KAr1kGq1GMjU/aLbnq6/lRxc4XfJ98hTargX++DbMJBSiYMIe9Ck1YAxFkKEAG3xbYaKmDDgYyFK0UGYpfoWYXG+fAPPI6tJnNwb7ClP7IyF+D+bjOtCpkhz6CFrIa/I6sFtNl8auFXGMTP34sNwI/JhkgEtmDz14ySfaRcTIBInmKPE32kxyyE2Tv+thKbEVePDfW/byMM1Kmm0XdObS7oGD/MypMXFPXrCwOtoYjyyn7BV29/MZfsVzpLDdRtuIZnbpXzvlf+ev8MvYr/Gqk4H/kV/G3csdazLuyTMPsbFhzd1UabQbjFvDRmcWJxR3zcfHkVw9GfpbJmeev9F08WW8uDkaslwX6avlWGU6NRKz0g/SHtCy9J30o/ca9zX3Kfc19zn3BXQKRO8ud477hLnAfc1/G9mrzGlrfexZ5GLdn6ZZrrEohI2wVHhZywjbhUWEy8icMCGNCUdiBlq3r+xafL549HQ5jH+an+1y+LlYBifuxAvRN/lVVVOlwlCkdVm9NOL5BE4wkQ2SMlDZU97hX86EilU/lUmkQUztTE6mx1EEPh7OmdqBtAvv8HdWpbrJS6tJj3n0CWdM6busNzRV3S9KTYhqvNiqWmuroiKgYhshMjmhTh9ptWhsF7970j/SbMrsPE1suR5z7DMC+P/Hs+y7ijrQAlhyAgccjbhjPygfeBTjzhNqy28EdkUh8C+DU9+z2v/oyeH791OncxHOs5y2AtTc7nb/f73TWPkD/qwBnjX8BoJ98VQNcC+8AAAFFSURBVGgF7djbDYMwDAXQBjEMYqyqY1WMxTppLiJIQIA8ariWkp8IPuweO60am67r7MstY8wwjuPH7dMz3uUua63p+/7r9rePIRW/9QmQzCV9ub0YgSIgzhxvQkjFb1EZBAdEKolkfJTqtnb7bv/zOJm58moRE0AzYgFoRawAGhE7gDZEEKAJcQjQgjgFaEBcAtgRUQBmRDSAFZEEYEQkA9gQWQAmRDaABVEEYEAUAx5H4EaGOyw+SMl66mbXzNOD4k6gCPNUY/CFwF1YOn5zRxJJRINqaUbUuZA/79sd3wm3xIdbdS60rXzo2XVCbO60/HxKJgFKKv4CkEziuyKBWAE0InYAbYggQBPiEKAFcQrQgLgEsCOiAMyIaAArIgnAiEgGsCGyAEyIbAALogjAgCgGPI7AX9w6F3JtqHMhnMWLFSrSD9jOnakVHpZYAAAAAElFTkSuQmCC\"/>\n </defs>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"s10\" transform=\"translate(3.000000, 3.000000)\">\n <g id=\"container\">\n <g id=\"Oval-2\">\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#e2e6829f-0086-96b2-e92a-6f3809b8ac61)\" xlink:href=\"#e966567b-3869-4bcd-76b6-2cf084e45390\"/>\n <use stroke=\"#979797\" stroke-width=\"1\" fill=\"url(#27c61b0f-392f-962d-de12-cb9da898274b)\" fill-rule=\"evenodd\" xlink:href=\"#e966567b-3869-4bcd-76b6-2cf084e45390\"/>\n </g>\n <g id=\"Oval-2\">\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#dedf2e7e-f008-c315-f682-e424d670f210)\" xlink:href=\"#c54189ed-7ea3-956c-f040-f0207548b268\"/>\n <use fill=\"\" fill-rule=\"evenodd\" xlink:href=\"#c54189ed-7ea3-956c-f040-f0207548b268\"/>\n <use stroke=\"#4A4A4A\" stroke-width=\"1\" fill=\"url(#0facd5c9-8e04-e83f-4842-8ba16f949942)\" fill-rule=\"evenodd\" xlink:href=\"#c54189ed-7ea3-956c-f040-f0207548b268\"/>\n </g>\n <g id=\"knob\" transform=\"translate(28.574244, 28.574244)\">\n <circle id=\"Oval-5\" fill=\"#322E2E\" cx=\"71.4356094\" cy=\"71.4356094\" r=\"71.4356094\"/>\n\n <!-- Rotating indicator (existing) -->\n <path d=\"M72.4209282,3.63066376 L88.6786876,16.869789 C81.585496,18.1548295 76.1662428,18.7973498 72.4209282,18.7973498 C68.6756135,18.7973498 63.2563604,18.1548295 56.1631688,16.869789 L72.4209282,3.63066376 Z\" id=\"Rectangle\" fill=\"#E6D7D7\" transform=\"translate(72.420928, 11.214007) scale(1, -1) translate(-72.420928, -11.214007) \"/>\n </g>\n\n <!-- Fixed position marks (outside the rotating knob group) -->\n <!-- 12:00 position mark (more prominent) -->\n <line x1=\"100.0098534\" y1=\"15\" x2=\"100.0098534\" y2=\"35\" stroke=\"#CCCCCC\" stroke-width=\"4\" opacity=\"0.9\"/>\n\n <!-- Arc fill between end position marks -->\n <!-- <path d=\"M 35 165 A 65 65 0 0 1 165 165\" stroke=\"#666666\" stroke-width=\"8\" fill=\"none\" opacity=\"0.3\"/> -->\n\n <!-- End position marks (0 and 127) -->\n <!-- 0 position mark (40 degrees from top, clockwise) - at outer radius beyond knob edge -->\n <!-- This should be at the bottom-left where the value indicator points when at 0 -->\n <line x1=\"36\" y1=\"164\" x2=\"44\" y2=\"156\" stroke=\"#DDDDDD\" stroke-width=\"4\"/>\n\n <!-- 127 position mark (320 degrees from top, clockwise) - at outer radius beyond knob edge -->\n <!-- This should be at the bottom-right where the value indicator points when at 127 -->\n <line x1=\"164\" y1=\"164\" x2=\"156\" y2=\"156\" stroke=\"#DDDDDD\" stroke-width=\"4\"/>\n <g id=\"label\">\n <g id=\"labeltext\" fill-opacity=\"1\" fill=\"#E6D7D7\">\n <text id=\"534f4e02-5541-3607-0966-af0b025d80e0\" font-family=\"Helvetica\" font-size=\"44\" font-weight=\"normal\" fill=\"#E6D7D7\" class=\"text-7\" filter=\"url(#12f618f7-e258-b597-3ed6-242484ddad8f)\">\n <tspan x=\"45.3246625\" y=\"117.884225\">10.10</tspan>\n </text>\n <text id=\"92ebe866-c281-70c7-7b0e-a373cee013a9\" font-family=\"Helvetica\" font-size=\"44\" font-weight=\"normal\" fill=\"#E6D7D7\" class=\"text-7\">\n <tspan x=\"45.3246625\" y=\"117.884225\">10.10</tspan>\n </text>\n </g>\n <circle id=\"Oval-6\" stroke=\"#979797\" fill-opacity=\"0.730000019\" fill=\"url(#3cc0e5b8-1f0a-886b-f635-8fcb19212870)\" transform=\"translate(100.351759, 100.351759) rotate(-45.000000) translate(-100.351759, -100.351759) \" cx=\"100.351759\" cy=\"100.351759\" r=\"70.3517588\"/>\n </g>\n </g>\n </g>\n </g>\n</svg>\n`,\n updateAttributes: [\n {\n element: '#labeltext text tspan',\n content: (_props: React.CSSProperties, value: number) => value.toFixed(0),\n attrs: [\n {\n name: 'text-anchor',\n value: (/* props, value */) => 'middle',\n },\n {\n name: 'x',\n value: (/* props, value */) => '100',\n },\n ],\n },\n ],\n}\n\nexport { knobSkin10 }\n","import { useCallback } from 'react'\nimport useStateWithDynamicDefault from '../hooks/useStateWithDynamicDefault'\nimport { RotaryKnob } from '../rotaryKnob'\nimport { assertRange } from '../utils'\nimport { knobSkin10 } from './knobSkin10'\n\ntype KnobProps = {\n disabled?: boolean\n max?: number\n min?: number\n onChange?: (value: number) => void\n value?: number\n wheelEnabled?: boolean\n wheelSensitivity?: number\n}\n\nconst Knob = (props: KnobProps) => {\n const {\n disabled = false,\n max = 127,\n min = 0,\n onChange,\n value: initialValue = 0,\n wheelEnabled = false,\n wheelSensitivity = 0.1,\n ...rest\n } = props\n\n const [value, setValue] = useStateWithDynamicDefault(initialValue)\n\n const handleChange = (val: number) => {\n if (disabled) return\n\n const newValue = assertRange(Number.parseInt(String(val), 10), max, min)\n setValue(newValue)\n if (onChange) {\n onChange(newValue)\n }\n }\n\n const handleWheel = useCallback(\n (event: React.WheelEvent<HTMLDivElement>) => {\n if (!wheelEnabled || disabled) return\n\n event.preventDefault()\n const delta = -event.deltaY * wheelSensitivity\n const newValue = assertRange(value + delta, max, min)\n\n setValue(newValue)\n if (onChange) {\n onChange(newValue)\n }\n },\n [\n wheelEnabled,\n disabled,\n wheelSensitivity,\n value,\n max,\n min,\n onChange,\n setValue,\n ],\n )\n\n return (\n <RotaryKnob\n clampMax={320}\n clampMin={40}\n className=\"zds-pickers__knob-container\"\n disabled={disabled}\n onChange={handleChange}\n onWheel={wheelEnabled ? handleWheel : undefined}\n preciseMode={false}\n rotateDegrees={180}\n /**\n * To see all skins:\n * http://react-rotary-knob-skins-preview.surge.sh/\n *\n * NOTE: we've copied the one we use into this package because the skins\n * pack package does not work in Electron.\n */\n skin={knobSkin10}\n style={{ opacity: disabled ? 0.4 : 1 }}\n unlockDistance={0}\n {...{ defaultValue: value, max, min, value, ...rest }}\n />\n )\n}\n\nexport { Knob }\n\nexport type { KnobProps }\n","import { forwardRef, useMemo } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { arraySequence } from '../utils'\nimport { Knob } from './Knob'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype KnobPickerProps = SelectProps<number> & {\n highToLow?: boolean\n includeLabel?: boolean\n includePicker?: boolean\n knobProps?: Partial<KnobPickerProps>\n max?: number\n min?: number\n wheelEnabled?: boolean\n wheelSensitivity?: number\n value: number\n}\n\ntype KnobPickerRef = SelectInstance<\n Option<number>,\n false,\n GroupBase<Option<number>>\n>\n\nconst KnobPicker = forwardRef<\n SelectInstance<Option<number>, false, GroupBase<Option<number>>>,\n KnobPickerProps\n>((props, ref) => {\n const {\n disabled,\n highToLow,\n includeLabel,\n includePicker,\n knobProps,\n label,\n max = 127,\n min = 0,\n onChange,\n shrinkLabel,\n value = 0,\n wheelEnabled,\n wheelSensitivity = 0.1,\n ...rest\n } = props\n\n const options = useMemo(() => {\n const result = arraySequence(max - min + 1)\n .map(i => min + i)\n .map((i): Option<number> => ({ value: i, label: String(i) }))\n return highToLow ? result.reverse() : result\n }, [highToLow, max, min])\n\n return (\n <div className=\"zds-pickers__container\">\n {Boolean(!shrinkLabel && Boolean(label)) && (\n <span className=\"zds-pickers__label\">{label}</span>\n )}\n <div style={{ display: 'inline-flex', gap: 10, alignItems: 'center' }}>\n {Boolean(includePicker) && (\n <Select\n {...{\n ...rest,\n disabled,\n isDisabled: disabled,\n onChange,\n options,\n ref,\n value,\n }}\n />\n )}\n\n <Knob\n {...{\n disabled,\n max,\n min,\n onChange,\n value,\n wheelEnabled,\n wheelSensitivity,\n ...knobProps,\n }}\n />\n </div>\n </div>\n )\n})\n\nexport { KnobPicker }\n\nexport type { KnobPickerProps, KnobPickerRef }\n","import { forwardRef } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport type { Polarity } from './PolarityPicker'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\nconst options: Option<Polarity>[] = [\n { value: 0, label: 'Momentary' },\n { value: 1, label: 'Latching' },\n]\n\ntype LatchPickerProps = Omit<SelectProps<Polarity>, 'options'>\n\ntype LatchPickerRef = SelectInstance<\n Option<Polarity>,\n false,\n GroupBase<Option<Polarity>>\n>\n\nconst LatchPicker = forwardRef<\n SelectInstance<Option<Polarity>, false, GroupBase<Option<Polarity>>>,\n LatchPickerProps\n>((props, ref) => (\n <Select\n {...props}\n options={options}\n ref={ref}\n />\n))\n\nexport { LatchPicker }\n\nexport type { LatchPickerProps, LatchPickerRef }\n","import { forwardRef, useMemo } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { getStockNames, getUserMappingNames } from 'zds-mappings'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype MappingPickerProps = Omit<SelectProps<string>, 'options'> & {\n allowClearing: boolean\n}\n\ntype MappingPickerRef = SelectInstance<\n Option<string>,\n false,\n GroupBase<Option<string>>\n>\n\nconst MappingPicker = forwardRef<\n SelectInstance<Option<string>, false, GroupBase<Option<string>>>,\n MappingPickerProps\n>(({ allowClearing, ...rest }, ref) => {\n const stockMappings = getStockNames()\n const userMappings = getUserMappingNames()\n\n const options = useMemo(() => {\n const result = allowClearing\n ? [\n {\n value: 'No Mapping',\n label: (\n <span className=\"zds-mappings-clear-mapping\">No Mapping</span>\n ),\n },\n ]\n : []\n\n return [\n ...result,\n\n {\n label: allowClearing ? <hr /> : '',\n options: userMappings.map(label => ({\n value: label,\n label: <span className=\"zds-mappings-user-mapping\">{label}</span>,\n })),\n },\n\n {\n label: userMappings.length ? <hr /> : allowClearing ? <hr /> : '',\n options: stockMappings.map(label => ({\n label,\n value: label,\n })),\n },\n ] as Option<string>[]\n }, [allowClearing, stockMappings, userMappings])\n\n return (\n <Select\n {...rest}\n options={options}\n ref={ref}\n />\n )\n})\n\nexport { MappingPicker }\n\nexport type { MappingPickerProps, MappingPickerRef }\n","import { forwardRef, useCallback, useMemo } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { Midi } from 'tonal'\nimport { type MapItem, type Mapping, emptyMapping } from 'zds-mappings'\nimport useStateWithDynamicDefault from '../hooks/useStateWithDynamicDefault'\nimport { assertRange } from '../utils'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\nconst { midiToNoteName } = Midi\n\nconst formattedMapEntry = ({ note, name }: MapItem) =>\n `${note} ${name.length ? '-' : ''} ${name}`\nconst formattedListEntry = (label: string, idx: number) => ({\n label,\n value: idx + 1,\n})\n\ntype NotePickerProps = Omit<SelectProps<number>, 'options'> & {\n channel: number\n disabled?: boolean\n isMelodicMode?: boolean\n mapping?: Mapping\n onChange: (value: number) => void\n}\n\ntype NotePickerRef = SelectInstance<\n Option<number>,\n false,\n GroupBase<Option<number>>\n>\n\nconst NotePicker = forwardRef<\n SelectInstance<Option<number>, false, GroupBase<Option<number>>>,\n NotePickerProps\n>((props, ref) => {\n const {\n channel,\n disabled = false,\n isMelodicMode = false,\n mapping,\n onChange,\n value: initialValue,\n ...rest\n } = props\n\n const options = useMemo(() => {\n if (isMelodicMode) {\n return emptyMapping()\n .map(({ note }) => {\n const midiNoteName = midiToNoteName(note, { sharps: false })\n .replace('b', '♭')\n .replace('#', '♯')\n return `${midiNoteName} (#${note})`\n })\n .map(formattedListEntry)\n }\n\n return (mapping || emptyMapping())\n .map(formattedMapEntry)\n .map(formattedListEntry)\n }, [isMelodicMode, mapping])\n\n const [value, setValue] = useStateWithDynamicDefault(initialValue)\n\n const handleChange = useCallback(\n (v: number | string) => {\n if (typeof v === 'string') return\n\n const possibleNoteNumber = assertRange(v, 128, 0)\n\n if (possibleNoteNumber > 0) {\n onChange(possibleNoteNumber)\n }\n setValue(v)\n },\n [onChange, setValue],\n )\n\n return (\n <Select\n {...rest}\n disabled={disabled}\n // isDisabled={disabled}\n onChange={handleChange}\n options={options}\n ref={ref}\n value={value}\n />\n )\n})\n\nexport { NotePicker }\n\nexport type { NotePickerProps, NotePickerRef }\n","import { Piano as ReactPiano } from 'zds-react-piano'\nimport type { WithProviderProps } from '../other/OctavePlayer'\nimport { SoundfontProvider } from '../other/SoundFontProvider'\n\nconst firstNote = 21\nconst lastNote = 108\nconst numNotes = lastNote - firstNote - 1\n\nconst whiteNotes = numNotes * 0.7 // approx\n\nconst audioContext = new window.AudioContext()\n\ntype PianoProps = {\n activeNotes?: number[]\n selectedNotes?: number[]\n disabled: boolean\n height: number\n width: number\n}\n\nconst BasePianoPicker = ({ height, width, ...rest }: PianoProps) => {\n const keyWidth = width / whiteNotes + 2\n const keyWidthToHeight = keyWidth / height\n\n return (\n <div>\n <ReactPiano\n keyWidthToHeight={keyWidthToHeight}\n noteRange={{ first: firstNote, last: lastNote }}\n width={width}\n {...rest}\n />\n </div>\n )\n}\n\nconst WithProvider = ({\n format,\n height,\n hostname,\n instrumentName,\n onChange,\n onClick,\n onDoubleClick,\n onKeyMouseEnter,\n onKeyMouseLeave,\n selectedNotes,\n soundfont,\n width,\n}: WithProviderProps) => (\n <SoundfontProvider\n {...{\n audioContext,\n format,\n hostname,\n instrumentName,\n onChange,\n soundfont,\n }}\n render={({ isLoading, playNote, stopNote }) => (\n <BasePianoPicker\n disabled={isLoading}\n {...{\n height,\n onClick,\n onDoubleClick,\n onKeyMouseEnter,\n onKeyMouseLeave,\n playNote,\n selectedNotes,\n stopNote,\n width,\n }}\n />\n )}\n />\n)\n\nexport { WithProvider as PianoPicker }\n\nexport type { PianoProps }\n","import { forwardRef } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { Select } from './Select'\nimport type { Option, SelectProps, noSelection } from './Select'\n\ntype Polarity = 0 | 1 | typeof noSelection\n\ntype PolarityPickerProps = Omit<SelectProps<Polarity>, 'options'> & {\n labelOff?: string\n labelOn?: string\n}\n\ntype PolarityPickerRef = SelectInstance<\n Option<Polarity>,\n false,\n GroupBase<Option<Polarity>>\n>\n\nconst PolarityPicker = forwardRef<\n SelectInstance<Option<Polarity>, false, GroupBase<Option<Polarity>>>,\n PolarityPickerProps\n>(({ labelOff = 'Normally Off', labelOn = 'Normally On', ...rest }, ref) => {\n const options = [\n { value: 0, label: labelOff },\n { value: 1, label: labelOn },\n ] as Option<Polarity>[]\n\n return (\n <Select\n {...rest}\n options={options}\n ref={ref}\n />\n )\n})\n\nexport { PolarityPicker }\n\nexport type { Polarity, PolarityPickerProps, PolarityPickerRef }\n","import { useCallback, useLayoutEffect, useState } from 'react'\n\nconst getSize = (el: HTMLDivElement | null) =>\n el\n ? {\n width: el.offsetWidth,\n height: el.offsetHeight,\n }\n : {\n width: 0,\n height: 0,\n }\n\nconst useComponentSize = (ref: React.RefObject<HTMLDivElement>) => {\n const [componentSize, setComponentSize] = useState(\n getSize(ref ? ref.current : null),\n )\n\n const handleResize = useCallback(() => {\n if (ref.current) {\n setComponentSize(getSize(ref.current))\n }\n }, [ref])\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useLayoutEffect(() => {\n if (!ref.current) return\n\n handleResize()\n\n if (typeof ResizeObserver === 'function') {\n const resizeObserver = new ResizeObserver(() => {\n handleResize()\n })\n resizeObserver.observe(ref.current)\n\n return () => {\n resizeObserver.disconnect()\n // resizeObserver = null\n }\n }\n window.addEventListener('resize', handleResize)\n\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [ref.current])\n\n return componentSize\n}\n\nexport default useComponentSize\n","import { useRef } from 'react'\nimport useComponentSize from '../hooks/useComponentSize'\nimport {\n type Curve,\n responseCurves as origResponseCurves,\n} from '../midi/export'\nimport { DefaultTooltip, type TooltipProps } from '../other/DefaultTooltip'\nimport { SvgText } from '../other/SvgText'\n\ntype ResponseCurveType = {\n value: Curve\n label: React.ReactNode\n c1: number\n c2: number\n x1: number\n y1: number\n x2: number\n y2: number\n labelX: number\n labelY: number\n}\n\n// const width = 218\n// const height = 150\nconst axisOffset = 20\nconst buttonSize = 15\n\nconst axisX1 = axisOffset\nconst axisY1 = axisOffset\n\ntype ResponseCurveProps = {\n autosize: boolean\n disabled?: boolean\n inverted: boolean\n onChange: (event: { target: { value: Curve } }) => void\n Tooltip: React.FC<TooltipProps>\n value: Curve\n}\n\nconst ResponseCurve = (props: ResponseCurveProps) => {\n const {\n Tooltip = DefaultTooltip,\n autosize,\n disabled,\n inverted,\n onChange,\n value: responseCurve,\n } = props\n\n const ref = useRef(null)\n const svgRef = useRef(null)\n const { height: ourHeight, width: ourWidth } = useComponentSize(ref)\n\n const width = autosize ? ourWidth || 218 : 218\n const height = autosize ? ourHeight || 150 : 150\n\n const axisX2 = width - axisOffset\n const axisY2 = height - axisOffset\n\n const xMid = width / 2\n const yMid = height / 2\n\n const svgProps = { ref: svgRef }\n\n const responseCurves = origResponseCurves.map(\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>\n ({ value, label }): ResponseCurveType => {\n let c1 = 0\n let c2 = 0\n let x1 = axisX1\n let y1 = inverted ? axisY1 : axisY2\n let x2 = axisX2\n let y2 = inverted ? axisY2 : axisY1\n let labelX = xMid\n let labelY = yMid\n switch (value) {\n case 0:\n c1 = xMid\n c2 = yMid\n labelY += 3\n\n break\n case 1:\n c1 = inverted ? xMid + width * 0.13 : xMid - width * 0.13\n c2 = yMid - height * 0.13\n labelX = inverted ? xMid + width * 0.1 : xMid - width * 0.1\n labelY = yMid - height * 0.09\n break\n\n case 2:\n c1 = inverted ? xMid + width * 0.25 : xMid - width * 0.25\n c2 = yMid - height * 0.25\n labelX = inverted ? xMid + width * 0.2 : xMid - width * 0.2\n labelY = yMid - height * 0.17\n break\n\n case 3:\n c1 = inverted ? xMid + width * 0.35 : xMid - width * 0.35\n c2 = yMid - height * 0.35\n labelX = inverted ? xMid + width * 0.28 : xMid - width * 0.28\n labelY = yMid - height * 0.25\n break\n\n case 4:\n c1 = inverted ? xMid - width * 0.13 : xMid + width * 0.13\n c2 = yMid + height * 0.13\n labelX = inverted ? xMid - width * 0.1 : xMid + width * 0.1\n labelY = yMid + height * 0.1\n break\n\n case 5:\n c1 = inverted ? xMid - width * 0.25 : xMid + width * 0.25\n c2 = yMid + height * 0.25\n labelX = inverted ? xMid - width * 0.2 : xMid + width * 0.2\n labelY = yMid + height * 0.18\n break\n\n case 6:\n c1 = inverted ? xMid - width * 0.35 : xMid + width * 0.35\n c2 = yMid + height * 0.35\n labelX = inverted ? xMid - width * 0.28 : xMid + width * 0.28\n labelY = yMid + height * 0.25\n break\n\n case 7:\n x1 = inverted ? axisX1 : axisX2\n y1 = axisY1\n x2 = x1\n y2 = axisY2\n c1 = x1\n c2 = yMid\n labelX = x1 - 5\n labelY = height - 30\n break\n\n default:\n break\n }\n return {\n value,\n label,\n c1,\n c2,\n x1,\n y1,\n x2,\n y2,\n labelX,\n labelY,\n }\n },\n )\n\n return (\n <div\n className=\"response-curve-picker\"\n ref={ref}>\n <svg {...svgProps}>\n <rect\n className=\"container\"\n height={height}\n rx={3}\n ry={3}\n width={width}\n x={0}\n y={0}\n />\n\n <SvgText\n className=\"axis\"\n textAnchor=\"middle\"\n transform={`translate(${axisX1 - 14} ${height / 2}) rotate(90)`}\n x={0}\n y={0}\n text=\"Applied force\"\n />\n\n <SvgText\n className=\"axis\"\n textAnchor=\"middle\"\n transform={`translate(${width / 2} ${axisY2 + 13})`}\n x={0}\n y={0}\n text=\"Output (velocity)\"\n />\n\n <line\n className=\"axis\"\n x1={axisX1}\n x2={axisX1}\n y1={axisY1}\n y2={axisY2}\n />\n <line\n className=\"axis\"\n x1={axisX1}\n x2={axisX2}\n y1={axisY2}\n y2={axisY2}\n />\n\n {responseCurves.map(\n ({ value, label, x1, y1, x2, y2, c1, c2, labelX, labelY }) => (\n <g key={value}>\n <path\n className={value === responseCurve ? 'curve-selected' : 'curve'}\n d={`M${x1} ${y1} C ${c1} ${c2}, ${c1} ${c2}, ${x2} ${y2}`}\n />\n\n <Tooltip\n placement=\"left\"\n title={label}>\n <rect\n className={\n value === responseCurve ? 'button-selected' : 'button'\n }\n height={buttonSize}\n onClick={\n disabled\n ? f => f\n : () =>\n onChange({\n target: {\n value: Number.parseInt(String(value)) as Curve,\n },\n })\n }\n transform={`translate(${labelX + 3} ${labelY - buttonSize / 1.05}) rotate(45)`}\n width={buttonSize}\n />\n </Tooltip>\n\n <text\n className={\n value === responseCurve ? 'button-selected' : 'button'\n }\n transform={`translate(${labelX} ${labelY})`}>\n {value}\n <title>{label}</title>\n </text>\n </g>\n ),\n )}\n </svg>\n </div>\n )\n}\n\nexport { ResponseCurve }\n\nexport type { ResponseCurveType, ResponseCurveProps }\n","import { forwardRef, useCallback } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { type Curve, responseCurves } from '../midi/export'\nimport { DefaultTooltip, type TooltipProps } from '../other/DefaultTooltip'\nimport { findObj } from '../utils'\nimport { ResponseCurve } from './ResponseCurve'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype ResponseCurvePickerProps = SelectProps<Curve> & {\n inverted?: boolean\n Tooltip?: React.FC<TooltipProps>\n}\n\ntype ResponseCurvePickerRef = SelectInstance<\n Option<Curve>,\n false,\n GroupBase<Option<Curve>>\n>\n\nconst ResponseCurvePicker = forwardRef<\n SelectInstance<Option<Curve>, false, GroupBase<Option<Curve>>>,\n ResponseCurvePickerProps\n>((props, ref) => {\n const {\n Tooltip = DefaultTooltip,\n inverted = false,\n onChange,\n value,\n ...rest\n } = props\n\n const Placeholder = useCallback(() => {\n const option = findObj('value', value)(responseCurves) as Option<Curve>\n return option ? (\n <div className=\"singleValue\">{option.label}</div>\n ) : (\n <div className=\"zds-pickers__placeholder\">Select...</div>\n )\n }, [value])\n\n const MenuList = useCallback(\n ({ setValue }: { setValue: (v: Curve) => void }) => (\n <ResponseCurve\n autosize\n inverted={inverted}\n onChange={({ target: { value: v } }) => {\n setValue(v)\n onChange(v)\n }}\n Tooltip={Tooltip}\n value={Number.parseInt(String(value)) as Curve}\n />\n ),\n [Tooltip, inverted, onChange, value],\n )\n\n return (\n <Select\n {...rest}\n components={{\n Placeholder,\n MenuList,\n }}\n isSearchable={false}\n onChange={f => f}\n ref={ref}\n value={value}\n />\n )\n})\n\nexport { ResponseCurvePicker }\n\nexport type { ResponseCurvePickerProps, ResponseCurvePickerRef }\n","import type { Status } from 'lib/midi/export'\nimport { forwardRef } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype StatusPickerProps = Omit<SelectProps<Status>, 'options'> & {\n statuses: Option<Status>[]\n}\n\ntype StatusPickerRef = SelectInstance<\n Option<Status>,\n false,\n GroupBase<Option<Status>>\n>\n\nconst StatusPicker = forwardRef<\n SelectInstance<Option<Status>, false, GroupBase<Option<Status>>>,\n StatusPickerProps\n>(({ statuses, ...rest }, ref) => (\n <Select<Status>\n {...rest}\n options={statuses}\n ref={ref}\n />\n))\n\nexport { StatusPicker }\n\nexport type { StatusPickerProps, StatusPickerRef }\n","import { forwardRef, useCallback, useMemo } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport useStateWithDynamicDefault from '../hooks/useStateWithDynamicDefault'\nimport { arraySequence, assertRange } from '../utils'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype ValuePickerProps = Omit<SelectProps<number>, 'options'> & {\n highToLow?: boolean\n max?: number\n min?: number\n}\n\ntype ValuePickerRef = SelectInstance<\n Option<number>,\n false,\n GroupBase<Option<number>>\n>\n\nconst ValuePicker = forwardRef<\n SelectInstance<Option<number>, false, GroupBase<Option<number>>>,\n ValuePickerProps\n>((props, ref) => {\n const {\n disabled,\n highToLow,\n max = 127,\n min = 0,\n onChange,\n value: initialValue = 0,\n ...rest\n } = props\n const options = useMemo(() => {\n const result = arraySequence(max - min + 1)\n .map(i => min + i)\n .map(value => ({ value, label: value }))\n return (highToLow\n ? result.reverse()\n : result) as unknown as Option<number>[]\n }, [highToLow, max, min])\n\n const [value, setValue] = useStateWithDynamicDefault(initialValue)\n\n const handleChange = useCallback(\n (v: number | string) => {\n onChange(assertRange(v, max, min))\n\n setValue(Number.parseInt(String(v), 10))\n },\n [max, min, onChange, setValue],\n )\n\n return (\n <Select\n {...rest}\n disabled={disabled}\n onChange={handleChange}\n options={options}\n ref={ref}\n value={value}\n />\n )\n})\n\nexport { ValuePicker }\n\nexport type { ValuePickerProps, ValuePickerRef }\n"],"names":["arraySequence","numberOfElements","assertRange","value","max","min","result","findObj","key","arr","item","omit","keys","obj","_obj","val","pick","set","changeControllerOptions","label","Statuses","MASK_CHANNEL","MASK_STATUS","statusOptions","getStatusLabel","_a","combineStatusWithChannel","channel","status","extractStatusAndChannel","RESPONSE_CURVE_0","RESPONSE_CURVE_1","RESPONSE_CURVE_2","RESPONSE_CURVE_3","RESPONSE_CURVE_4","RESPONSE_CURVE_5","RESPONSE_CURVE_6","RESPONSE_CURVE_7","ResponseCurveLabels","responseCurves","DefaultTooltip","children","createElement","Fragment","isNamedPitch","src","isPitch","pitch2","FIFTHS","STEPS_TO_OCTS","fifths","coordinates","step","alt","oct","dir","f","o","FIFTHS_TO_STEPS","pitch","coord","unaltered","i","fillStr","s","n","NoInterval","INTERVAL_TONAL_REGEX","INTERVAL_SHORTHAND_REGEX","REGEX","tokenizeInterval","str","m","cache","interval","parse","pitchName","SIZES","TYPES","tokens","num","q","t","type","name","simple","qToAlt","semitones","chroma","props","calcNum","d","altToQ","NoNote","stepToLetter","altToAcc","accToAlt","acc","note","stringSrc","cached","tokenizeNote","coordToNote","noteCoord","mod","SEMI","noteName","letter","octStr","pc","height","midi","freq","transpose","intervalName","asNote","intervalCoord","asInterval","tr","rotate","times","len","EmptyPcset","setNumToChroma","num2","chromaToNumber","chroma2","isChroma","isPcsetNum","isPcset","get","listToChroma","chromaToPcset","IVLS","chromaToIntervals","intervals2","chromaRotations","binary","_","setNum","normalizedNum","normalized","CHORDS","data_default","dictionary","index","add","intervals","aliases","fullName","quality","getQuality","chord","pcset","alias","addAlias","has","ivls","names2","a","b","SCALES","NoScaleType","scale","DATA","denominator","shorthand","isMidi","arg","toMidi","midiToFreq","tuning","L2","L440","freqToMidi","v","SHARPS","FLATS","midiToNoteName","options","pcsetFromChroma","pcset2","pcsetFromMidi","notes","pcsetNearest","ch","pcsetSteps","tonic","octaves","pcsetDegrees","steps","degree","index_default","fromMidi","midi2","MODES","NoMode","modes","toMode","mode2","modeNum","triad","seventh","getType","chords","chords2","modeName","triads2","tonics","x","justRange","range","start","stop","toReturn","increasing","c","e","g","h","k","l","p","r","w","y","z","u","A","reactIs_production_min","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","typeOf","object","$$typeof","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","reactIs_development","reactIsModule","require$$0","require$$1","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","toObject","shouldUseNative","test1","test2","order2","test3","objectAssign","target","source","from","to","symbols","ReactPropTypesSecret","ReactPropTypesSecret_1","printWarning","loggedTypeFailures","text","message","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","error","err","ex","stack","checkPropTypes_1","ReactIs","assign","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","iteratorFn","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","createAnyTypeChecker","createArrayOfTypeChecker","createElementTypeChecker","createElementTypeTypeChecker","createInstanceTypeChecker","createNodeChecker","createObjectOfTypeChecker","createEnumTypeChecker","createUnionTypeChecker","createShapeTypeChecker","createStrictShapeTypeChecker","is","PropTypeError","data","createChainableTypeChecker","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","propName","propFullName","secret","cacheKey","chainedCheckType","expectedType","propValue","propType","getPropType","preciseType","getPreciseType","typeChecker","expectedClass","expectedClassName","actualClassName","getClassName","expectedValues","valuesString","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedTypesMessage","isNode","invalidValidatorError","shapeTypes","allKeys","iterator","entry","isSymbol","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","LARGE_ARRAY_SIZE","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","funcTag","genTag","reRegExpChar","reIsHostCtor","freeGlobal","global","freeSelf","root","apply","func","thisArg","args","arrayIncludes","array","length","baseIndexOf","arrayPush","offset","baseFindIndex","predicate","fromIndex","fromRight","baseIsNaN","cacheHas","getValue","isHostObject","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","uid","funcToString","objectToString","reIsNative","Symbol","propertyIsEnumerable","splice","spreadableSymbol","nativeMax","Map","getNative","nativeCreate","Hash","entries","hashClear","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","lastIndex","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","setCacheAdd","setCacheHas","eq","baseDifference","iteratee","comparator","includes","isCommon","valuesLength","outer","computed","valuesIndex","baseFlatten","depth","isStrict","isFlattenable","baseIsNative","isObject","isMasked","pattern","isFunction","toSource","baseRest","otherArgs","map","isKeyable","isArray","isArguments","difference","isArrayLikeObject","other","isArrayLike","isLength","isObjectLike","tag","lodash_difference","_iterableToArrayLimit","_i","_s","_e","_x","_r","_arr","_n","_d","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_defineProperty","_extends","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","_isNativeReflectConstruct","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_assertThisInitialized","self","_possibleConstructorReturn","call","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","_slicedToArray","_arrayWithHoles","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_toPrimitive","input","hint","prim","res","SORTED_PITCHES","ACCIDENTAL_PITCHES","PITCH_INDEXES","MIDI_NUMBER_C0","MIN_MIDI_NUMBER","MAX_MIDI_NUMBER","NOTE_REGEX","NOTES_IN_OCTAVE","fromNote","match","_match","accidental","octave","pitchIndex","buildMidiNumberAttributes","midiNumber","buildMidiNumberAttributesCache","midiNumberAttributesCache","getAttributes","attrs","NATURAL_MIDI_NUMBERS","MidiNumbers","middleC","Key","_React$Component","_super","_this","_len","_key","OCTAVE_WIDTH","_MidiNumbers$getAttri","pitchPosition","octavePosition","_this2","_this$props","naturalKeyWidth","accidentalWidthRatio","gliss","useTouchEvents","active","selected","disabled","left","ratioToPercentage","width","React","classNames","PropTypes","ratio","Keyboard","number","isAccidental","keyWidth","_MidiNumbers$getAttri2","isActive","isSelected","noteRangePropType","isNaturalMidiNumber","_props$propName","first","last","ControlledPiano","_ref","prevActiveNotes","nextActiveNotes","notesStopped","notesStarted","shortcut","sh","event","_ref2","keyboardShortcut","prevProps","prevState","_ref3","_excluded","Piano","selectedNotes","otherProps","b64ToUint6","nChr","decode","sBase64","nBlocksSize","sB64Enc","nInLen","nOutLen","taBytes","nMod3","nMod4","nUint24","nOutIdx","nInIdx","base64","fetch","url","done","reject","req","fromRegex","prefix","pre","load","ac","defVal","loader","isArrayBuffer","loadArrayBuffer","isAudioFileName","loadAudioFile","isPromise","loadPromise","loadArrayData","loadObjectData","isJsonFileName","loadJsonFile","isBase64Audio","loadBase64Audio","isJsFileName","loadMidiJSFile","opts","buffer","promise","dest","promises","audio","midiJsToJson","begin","end","module","adsr","ADSR","audioContext","node","voltage","getVoltage","startValue","endValue","at","startAmount","endAmount","sustain","getTimeConstant","isTarget","endTime","expFalloff","valueAtTime","flat","context","gain","time","fromTime","toTime","truncateTime","phase","EMPTY","DEFAULTS","SamplePlayer","connected","nextId","tracked","out","player","when","createNode","track","ids","id","fn","now","envelope","centsToRate","stopAt","isNum","PARAMS","env","cents","events","cb","prop","old","chain","fn1","fn2","regex","SEMITONES","isTonic","parser","FNS","noteParser","toKey","mapper","mapBuffers","dec","buffers","mapped","isArr","isObj","OPTS","scheduler","require","midimessage","started","vel","msg","mm","isStr","isDef","pos","LETTERS","accStr","build","Soundfont","ctx","nameToUrl","callback","inst","oscillatorPlayer","instrument","loadBuffers","defaultOptions","duration","destination","vcoType","vco","vca","legacy","isUrl","isSoundfontURL","toUrl","sf","format","isDefined","SoundfontProvider","hostname","instrumentName","onChange","render","soundfont","isLoading","setIsLoading","useState","activeAudioNodes","setActiveAudioNodes","setInstrument","loadInstrument","useCallback","nm","fmt","newInstrument","soundfontData","_b","Note.fromMidi","velocity","noteData","useEffect","audioNode","prev","rest","nodes","baseNotes","numNotes","whiteNotes","BaseOctavePlayer","keyWidthToHeight","firstNote","Note.midi","lastNote","jsx","ReactPiano","WithProvider","onClick","onDoubleClick","onKeyMouseEnter","onKeyMouseLeave","Tooltip","playNote","stopNote","MEASUREMENT_ELEMENT_ID","calculateWordsByLines","wordWidths","maxWidth","maxHeight","lineHeight","spaceWidth","wordsWithComputedWidth","word","wordWidth","currentLine","newLine","calculateWordWidths","style","textNode","wordMap","SvgText","className","dx","dy","verticalAnchor","transform","setWordWidths","textLines","setTextLines","setComputedStyle","measureRef","useRef","displayedLines","useMemo","showLine","line","ref","el","svg","wordWithWidths","lines","startDy","jsxs","idx","noSelection","IndicatorsContainer","Placeholder","ValueContainer","originalComponents","noSelectionOption","CustomIndicatorsContainer","actionButton","CustomValueContainer","Children","child","Select","forwardRef","components","preserveMenuWidth","shrinkLabel","handleChange","option","flatOptionsList","selectedOption","styles","base","provided","_provided","state","ReactSelect","CCPicker","ChannelMappingPicker","channels","setOptions","formatOptionLabel","mapping","numFilled","separatorExists","cl","filterOptions","ChannelPicker","KeyPicker","handleKeyClick","octaveStart","octaveEnd","shouldHighlight","OctavePlayer","useStateWithDynamicDefault","defaultVal","setState","dist","reactSvgmt","InternalInput","hideStyle","onValChange","inputRef","__publicField","toRadians","angle","getQuadrant","getAngleForPoint","angleDeg","quadrant","DrawCircle","borderColor","fillColor","borderWidth","fillOpacity","DrawLine","color","p1","p2","HelpersOverlay","ReactDOM","KnobVisualHelpers","vbox","halfWidth","valueMarkerX","valueMarkerY","markCircleColor","minDistanceCueVisible","defaultSkin","RotaryKnob","clampMax","clampMin","defaultValue","onEnd","onStart","preciseMode","rotateDegrees","skin","unlockDistance","isControlled","setIsControlled","container","scaleProps","normalizeAngle","convertValueToAngle","getScale","convertAngleToValue","angle2","scaleLinear","select","setupDragging","saveRef","elem","onAngleChanged","domainValue","st","cx","cy","startPos","startAngle","initialAngle","monitoring","currentValue","dragged","currentPos","distanceFromCenter","deltaAngle","finalAngle","ended","dragInstance","drag","onFormControlChange","newVal","updateAttrs","skinElemUpdates","elemUpdate","ix","elemContent","attributes","attr","SvgProxy","SvgLoader","knobSkin10","_props","Knob","initialValue","wheelEnabled","wheelSensitivity","setValue","newValue","handleWheel","delta","KnobPicker","highToLow","includeLabel","includePicker","knobProps","LatchPicker","MappingPicker","allowClearing","stockMappings","getStockNames","userMappings","getUserMappingNames","Midi","formattedMapEntry","formattedListEntry","NotePicker","isMelodicMode","emptyMapping","possibleNoteNumber","BasePianoPicker","PolarityPicker","labelOff","labelOn","getSize","useComponentSize","componentSize","setComponentSize","handleResize","useLayoutEffect","resizeObserver","axisOffset","buttonSize","axisX1","axisY1","ResponseCurve","autosize","inverted","responseCurve","svgRef","ourHeight","ourWidth","axisX2","axisY2","xMid","yMid","svgProps","origResponseCurves","c1","c2","x1","y1","x2","y2","labelX","labelY","ResponseCurvePicker","MenuList","StatusPicker","statuses","ValuePicker"],"mappings":"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","x_google_ignoreList":[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,53,54]}
1
+ {"version":3,"file":"index.cjs.js","sources":["../lib/utils.ts","../lib/midi/ccValues.ts","../lib/midi/export.ts","../lib/other/DefaultTooltip.ts","../node_modules/@tonaljs/pitch/dist/index.mjs","../node_modules/@tonaljs/pitch-interval/dist/index.mjs","../node_modules/@tonaljs/pitch-note/dist/index.mjs","../node_modules/@tonaljs/pitch-distance/dist/index.mjs","../node_modules/@tonaljs/collection/dist/index.mjs","../node_modules/@tonaljs/pcset/dist/index.mjs","../node_modules/@tonaljs/chord-type/dist/index.mjs","../node_modules/@tonaljs/scale-type/dist/index.mjs","../node_modules/@tonaljs/duration-value/dist/index.mjs","../node_modules/@tonaljs/midi/dist/index.mjs","../node_modules/@tonaljs/note/dist/index.mjs","../node_modules/@tonaljs/mode/dist/index.mjs","../node_modules/just-range/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/lodash.difference/index.js","../node_modules/zds-react-piano/dist/react-piano.esm.js","../node_modules/audio-loader/lib/base64.js","../node_modules/audio-loader/lib/fetch.js","../node_modules/audio-loader/lib/index.js","../node_modules/adsr/index.js","../node_modules/sample-player/lib/player.js","../node_modules/sample-player/lib/events.js","../node_modules/sample-player/node_modules/note-parser/index.js","../node_modules/sample-player/lib/notes.js","../node_modules/sample-player/lib/scheduler.js","../node_modules/midimessage/dist/index.min.js","../node_modules/sample-player/lib/midi.js","../node_modules/sample-player/lib/index.js","../node_modules/note-parser/index.js","../node_modules/soundfont-player/lib/legacy.js","../node_modules/soundfont-player/lib/index.js","../lib/other/SoundFontProvider.tsx","../lib/other/OctavePlayer.tsx","../lib/other/SvgText.tsx","../lib/pickers/Select.tsx","../lib/pickers/CCPicker.tsx","../lib/pickers/ChannelMappingPicker.tsx","../lib/pickers/ChannelPicker.tsx","../lib/pickers/KeyPicker.tsx","../lib/hooks/useStateWithDynamicDefault.ts","../node_modules/react-svgmt/dist/index.js","../node_modules/react-svgmt/index.js","../lib/rotaryKnob/InternalInput.tsx","../lib/rotaryKnob/utils.ts","../lib/rotaryKnob/helpers/DrawCircle.tsx","../lib/rotaryKnob/helpers/DrawLine.tsx","../lib/rotaryKnob/helpers/HelpersOverlay.tsx","../lib/rotaryKnob/helpers/KnobVisualHelpers.tsx","../lib/rotaryKnob/knobdefaultskin.ts","../lib/rotaryKnob/index.tsx","../lib/pickers/knobSkin10.tsx","../lib/pickers/Knob.tsx","../lib/pickers/KnobPicker.tsx","../lib/pickers/LatchPicker.tsx","../lib/pickers/MappingPicker.tsx","../lib/pickers/NotePicker.tsx","../lib/pickers/PianoPicker.tsx","../lib/pickers/PolarityPicker.tsx","../lib/hooks/useComponentSize.ts","../lib/pickers/ResponseCurve.tsx","../lib/pickers/ResponseCurvePicker.tsx","../lib/pickers/StatusPicker.tsx","../lib/pickers/ValuePicker.tsx"],"sourcesContent":["// this just creates and fills a zero-indexed array array; 0, 1, 2, 3, etc\nconst arraySequence = (numberOfElements: number) =>\n Array.from(new Array(numberOfElements).keys())\n\nconst assertRange = (value: number | string, max = 127, min = 0) => {\n let result: number =\n typeof value === 'string' ? Number.parseInt(value, 10) : value\n\n if (Number.isNaN(result) || result === null) {\n result = min\n }\n return result >= min ? (result <= max ? result : max) : min\n}\n\nconst findObj =\n <T>(key: keyof T, value: T[keyof T]) =>\n (arr: T[]) =>\n arr?.find(item => item?.[key] === value)\n\nconst omit =\n <T extends Record<string, unknown>>(...keys: string[]) =>\n (obj: T) =>\n Object.entries(obj)\n .filter(([key]) => !keys.flat().map(String).includes(key))\n .reduce((_obj, [key, val]) => Object.assign(_obj, { [key]: val }), {})\n\nconst pick =\n <T extends object>(...keys: (keyof T)[]) =>\n (obj: T) =>\n Object.entries(obj)\n .filter(([key]) => keys.flat().map(String).includes(key))\n .reduce((_obj, [key, val]) => Object.assign(_obj, { [key]: val }), {})\n\nconst set =\n <T>(key: keyof T, value: T[keyof T]) =>\n (obj: T) => ({\n ...obj,\n [key]: value,\n })\n\nexport { arraySequence, assertRange, findObj, omit, pick, set }\n","import type { Option } from '../pickers/Select'\n\nconst changeControllerOptions = [\n 'Bank Select',\n 'Modulation Wheel',\n 'Breath Controller',\n '',\n 'Foot Control',\n 'Portamento Time',\n 'Data Entry Slider',\n 'Volume',\n 'Balance',\n '',\n 'Pan',\n 'Expression',\n 'Effect Control 1',\n 'Effect Control 2',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'Controller 0',\n 'Controller 1',\n 'Controller 2',\n 'Controller 3',\n 'Controller 4',\n 'Controller 5',\n 'Controller 6',\n 'Controller 7',\n 'Controller 8',\n 'Controller 9',\n 'Controller 10',\n 'Controller 11',\n 'Controller 12',\n 'Controller 13',\n 'Controller 14',\n 'Controller 15',\n 'Controller 16',\n 'Controller 17',\n 'Controller 18',\n 'Controller 19',\n 'Controller 20',\n 'Controller 21',\n 'Controller 22',\n 'Controller 23',\n 'Controller 24',\n 'Controller 25',\n 'Controller 26',\n 'Controller 27',\n 'Controller 28',\n 'Controller 29',\n 'Controller 30',\n 'Controller 31',\n 'Sustain',\n 'Portamento',\n 'Sostenuto',\n 'Soft Pedal',\n 'Legato Pedal',\n 'Sustain 2',\n 'Sound Variation',\n 'Resonance/Timbre',\n 'Sound Release Time',\n 'Sound Attack Time',\n 'Frequency Cutoff',\n 'Sound Control 6',\n 'Sound Control 7',\n 'Sound Control 8',\n 'Sound Control 9',\n 'Sound Control 10',\n 'Decay or General 1',\n 'Hi-Pass or General 2',\n 'General 3',\n 'General 4',\n 'Portamento Amount',\n '',\n '',\n '',\n '',\n '',\n '',\n 'Reverb Level',\n 'Tremolo Depth',\n 'Chorus Level',\n 'Detune',\n 'Phaser Depth',\n 'Data Entry +1',\n 'Data Entry -1',\n 'Non-registered LSB',\n 'Non-registered MSB',\n 'Registered msb',\n 'Registered lsb',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'Shift 1',\n 'Shift 2',\n 'Shift 3',\n 'Shift 4',\n 'Shift 5',\n 'Shift 6',\n '',\n '',\n '',\n '',\n 'All Sound Off',\n 'All Controllers Off',\n 'Local Mode',\n 'All Notes Off',\n 'Omni Mode Off',\n 'Omni Mode On',\n 'Mono Mode On',\n 'Poly Mode',\n].map(\n (label, value): Option<number> => ({\n label: String(label).length ? `${value} - ${label}` : String(value),\n value,\n }),\n)\n\nexport { changeControllerOptions }\n","import type { Option, noSelection } from 'lib/pickers/Select'\n\nconst Statuses = {\n noteOff: 8, // 1000\n noteOn: 9, // 1001\n aftertouch: 10, // 1010\n controlChange: 11, // 1011\n programChange: 12, // 1100\n channelPressure: 13, // 1101\n pitchWheel: 14, // 1110\n} as const\n\n// Define type as union of literal values\ntype Status = 8 | 9 | 10 | 11 | 12 | 13 | 14\n\nconst MASK_CHANNEL = 15 // 00001111\nconst MASK_STATUS = 240 // 01110000\n\nconst statusOptions: Option<Status>[] = [\n { value: Statuses.noteOn, label: 'Note On' },\n { value: Statuses.noteOff, label: 'Note Stack' },\n { value: Statuses.controlChange, label: 'Control Change' },\n { value: Statuses.programChange, label: 'Program Change' },\n { value: Statuses.aftertouch, label: 'Aftertouch' },\n { value: Statuses.channelPressure, label: 'Channel Pressure' },\n { value: Statuses.pitchWheel, label: 'Pitch Wheel' },\n]\n\nconst getStatusLabel = (val: Status) =>\n statusOptions.filter(({ value }) => value === val)[0]?.label || '???'\n\nconst combineStatusWithChannel = (channel: number, status: Status) =>\n channel | (status << 4)\n\nconst extractStatusAndChannel = (\n status: number,\n): {\n status: Status\n channel: number\n} => ({\n status: (((status & MASK_STATUS) >> 4) | 8) as Status,\n channel: status & MASK_CHANNEL,\n})\n\nconst RESPONSE_CURVE_0 = 0\nconst RESPONSE_CURVE_1 = 1\nconst RESPONSE_CURVE_2 = 2\nconst RESPONSE_CURVE_3 = 3\nconst RESPONSE_CURVE_4 = 4\nconst RESPONSE_CURVE_5 = 5\nconst RESPONSE_CURVE_6 = 6\nconst RESPONSE_CURVE_7 = 7\n\nconst ResponseCurveLabels = {\n [RESPONSE_CURVE_0]: 'Linear, no change',\n [RESPONSE_CURVE_1]: 'A little less sensitive',\n [RESPONSE_CURVE_2]: 'Even less sensitive',\n [RESPONSE_CURVE_3]: 'Least sensitive',\n [RESPONSE_CURVE_4]: 'A little sensitive',\n [RESPONSE_CURVE_5]: 'Moderately sensitive',\n [RESPONSE_CURVE_6]: 'Most sensitive',\n [RESPONSE_CURVE_7]: 'Always maxed out',\n} as const\n\n// type Curve = (typeof Items)[keyof typeof Items]\n\ntype Curve = keyof typeof ResponseCurveLabels | typeof noSelection\n\nconst responseCurves: Option<Curve>[] = Object.keys(ResponseCurveLabels)\n .map(Number)\n .map(key => ({\n value: key as Curve,\n label: ResponseCurveLabels[key as keyof typeof ResponseCurveLabels],\n }))\n\nexport {\n combineStatusWithChannel,\n extractStatusAndChannel,\n getStatusLabel,\n MASK_CHANNEL,\n MASK_STATUS,\n responseCurves,\n ResponseCurveLabels,\n Statuses,\n statusOptions,\n}\n\nexport type { Curve, Status }\n","import { Fragment, createElement } from 'react'\n\ntype TooltipProps = {\n children?: React.ReactNode\n placement?: 'left' | 'right' | 'top' | 'bottom'\n title: React.ReactNode\n}\n\nconst DefaultTooltip = ({ children }: React.PropsWithoutRef<TooltipProps>) =>\n createElement(Fragment, null, children)\n\nexport { DefaultTooltip }\n\nexport type { TooltipProps }\n","// index.ts\nfunction isNamedPitch(src) {\n return src !== null && typeof src === \"object\" && \"name\" in src && typeof src.name === \"string\" ? true : false;\n}\nvar SIZES = [0, 2, 4, 5, 7, 9, 11];\nvar chroma = ({ step, alt }) => (SIZES[step] + alt + 120) % 12;\nvar height = ({ step, alt, oct, dir = 1 }) => dir * (SIZES[step] + alt + 12 * (oct === void 0 ? -100 : oct));\nvar midi = (pitch2) => {\n const h = height(pitch2);\n return pitch2.oct !== void 0 && h >= -12 && h <= 115 ? h + 12 : null;\n};\nfunction isPitch(pitch2) {\n return pitch2 !== null && typeof pitch2 === \"object\" && \"step\" in pitch2 && typeof pitch2.step === \"number\" && \"alt\" in pitch2 && typeof pitch2.alt === \"number\" && !isNaN(pitch2.step) && !isNaN(pitch2.alt) ? true : false;\n}\nvar FIFTHS = [0, 2, 4, -1, 1, 3, 5];\nvar STEPS_TO_OCTS = FIFTHS.map(\n (fifths) => Math.floor(fifths * 7 / 12)\n);\nfunction coordinates(pitch2) {\n const { step, alt, oct, dir = 1 } = pitch2;\n const f = FIFTHS[step] + 7 * alt;\n if (oct === void 0) {\n return [dir * f];\n }\n const o = oct - STEPS_TO_OCTS[step] - 4 * alt;\n return [dir * f, dir * o];\n}\nvar FIFTHS_TO_STEPS = [3, 0, 4, 1, 5, 2, 6];\nfunction pitch(coord) {\n const [f, o, dir] = coord;\n const step = FIFTHS_TO_STEPS[unaltered(f)];\n const alt = Math.floor((f + 1) / 7);\n if (o === void 0) {\n return { step, alt, dir };\n }\n const oct = o + 4 * alt + STEPS_TO_OCTS[step];\n return { step, alt, oct, dir };\n}\nfunction unaltered(f) {\n const i = (f + 1) % 7;\n return i < 0 ? 7 + i : i;\n}\nexport {\n chroma,\n coordinates,\n height,\n isNamedPitch,\n isPitch,\n midi,\n pitch\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport {\n coordinates,\n isNamedPitch,\n isPitch,\n pitch\n} from \"@tonaljs/pitch\";\nvar fillStr = (s, n) => Array(Math.abs(n) + 1).join(s);\nvar NoInterval = Object.freeze({\n empty: true,\n name: \"\",\n num: NaN,\n q: \"\",\n type: \"\",\n step: NaN,\n alt: NaN,\n dir: NaN,\n simple: NaN,\n semitones: NaN,\n chroma: NaN,\n coord: [],\n oct: NaN\n});\nvar INTERVAL_TONAL_REGEX = \"([-+]?\\\\d+)(d{1,4}|m|M|P|A{1,4})\";\nvar INTERVAL_SHORTHAND_REGEX = \"(AA|A|P|M|m|d|dd)([-+]?\\\\d+)\";\nvar REGEX = new RegExp(\n \"^\" + INTERVAL_TONAL_REGEX + \"|\" + INTERVAL_SHORTHAND_REGEX + \"$\"\n);\nfunction tokenizeInterval(str) {\n const m = REGEX.exec(`${str}`);\n if (m === null) {\n return [\"\", \"\"];\n }\n return m[1] ? [m[1], m[2]] : [m[4], m[3]];\n}\nvar cache = {};\nfunction interval(src) {\n return typeof src === \"string\" ? cache[src] || (cache[src] = parse(src)) : isPitch(src) ? interval(pitchName(src)) : isNamedPitch(src) ? interval(src.name) : NoInterval;\n}\nvar SIZES = [0, 2, 4, 5, 7, 9, 11];\nvar TYPES = \"PMMPPMM\";\nfunction parse(str) {\n const tokens = tokenizeInterval(str);\n if (tokens[0] === \"\") {\n return NoInterval;\n }\n const num = +tokens[0];\n const q = tokens[1];\n const step = (Math.abs(num) - 1) % 7;\n const t = TYPES[step];\n if (t === \"M\" && q === \"P\") {\n return NoInterval;\n }\n const type = t === \"M\" ? \"majorable\" : \"perfectable\";\n const name = \"\" + num + q;\n const dir = num < 0 ? -1 : 1;\n const simple = num === 8 || num === -8 ? num : dir * (step + 1);\n const alt = qToAlt(type, q);\n const oct = Math.floor((Math.abs(num) - 1) / 7);\n const semitones = dir * (SIZES[step] + alt + 12 * oct);\n const chroma = (dir * (SIZES[step] + alt) % 12 + 12) % 12;\n const coord = coordinates({ step, alt, oct, dir });\n return {\n empty: false,\n name,\n num,\n q,\n step,\n alt,\n dir,\n type,\n simple,\n semitones,\n chroma,\n coord,\n oct\n };\n}\nfunction coordToInterval(coord, forceDescending) {\n const [f, o = 0] = coord;\n const isDescending = f * 7 + o * 12 < 0;\n const ivl = forceDescending || isDescending ? [-f, -o, -1] : [f, o, 1];\n return interval(pitch(ivl));\n}\nfunction qToAlt(type, q) {\n return q === \"M\" && type === \"majorable\" || q === \"P\" && type === \"perfectable\" ? 0 : q === \"m\" && type === \"majorable\" ? -1 : /^A+$/.test(q) ? q.length : /^d+$/.test(q) ? -1 * (type === \"perfectable\" ? q.length : q.length + 1) : 0;\n}\nfunction pitchName(props) {\n const { step, alt, oct = 0, dir } = props;\n if (!dir) {\n return \"\";\n }\n const calcNum = step + 1 + 7 * oct;\n const num = calcNum === 0 ? step + 1 : calcNum;\n const d = dir < 0 ? \"-\" : \"\";\n const type = TYPES[step] === \"M\" ? \"majorable\" : \"perfectable\";\n const name = d + num + altToQ(type, alt);\n return name;\n}\nfunction altToQ(type, alt) {\n if (alt === 0) {\n return type === \"majorable\" ? \"M\" : \"P\";\n } else if (alt === -1 && type === \"majorable\") {\n return \"m\";\n } else if (alt > 0) {\n return fillStr(\"A\", alt);\n } else {\n return fillStr(\"d\", type === \"perfectable\" ? alt : alt + 1);\n }\n}\nexport {\n coordToInterval,\n interval,\n tokenizeInterval\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport {\n coordinates,\n isNamedPitch,\n isPitch,\n pitch\n} from \"@tonaljs/pitch\";\nvar fillStr = (s, n) => Array(Math.abs(n) + 1).join(s);\nvar NoNote = Object.freeze({\n empty: true,\n name: \"\",\n letter: \"\",\n acc: \"\",\n pc: \"\",\n step: NaN,\n alt: NaN,\n chroma: NaN,\n height: NaN,\n coord: [],\n midi: null,\n freq: null\n});\nvar cache = /* @__PURE__ */ new Map();\nvar stepToLetter = (step) => \"CDEFGAB\".charAt(step);\nvar altToAcc = (alt) => alt < 0 ? fillStr(\"b\", -alt) : fillStr(\"#\", alt);\nvar accToAlt = (acc) => acc[0] === \"b\" ? -acc.length : acc.length;\nfunction note(src) {\n const stringSrc = JSON.stringify(src);\n const cached = cache.get(stringSrc);\n if (cached) {\n return cached;\n }\n const value = typeof src === \"string\" ? parse(src) : isPitch(src) ? note(pitchName(src)) : isNamedPitch(src) ? note(src.name) : NoNote;\n cache.set(stringSrc, value);\n return value;\n}\nvar REGEX = /^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\\d*)\\s*(.*)$/;\nfunction tokenizeNote(str) {\n const m = REGEX.exec(str);\n return m ? [m[1].toUpperCase(), m[2].replace(/x/g, \"##\"), m[3], m[4]] : [\"\", \"\", \"\", \"\"];\n}\nfunction coordToNote(noteCoord) {\n return note(pitch(noteCoord));\n}\nvar mod = (n, m) => (n % m + m) % m;\nvar SEMI = [0, 2, 4, 5, 7, 9, 11];\nfunction parse(noteName) {\n const tokens = tokenizeNote(noteName);\n if (tokens[0] === \"\" || tokens[3] !== \"\") {\n return NoNote;\n }\n const letter = tokens[0];\n const acc = tokens[1];\n const octStr = tokens[2];\n const step = (letter.charCodeAt(0) + 3) % 7;\n const alt = accToAlt(acc);\n const oct = octStr.length ? +octStr : void 0;\n const coord = coordinates({ step, alt, oct });\n const name = letter + acc + octStr;\n const pc = letter + acc;\n const chroma = (SEMI[step] + alt + 120) % 12;\n const height = oct === void 0 ? mod(SEMI[step] + alt, 12) - 12 * 99 : SEMI[step] + alt + 12 * (oct + 1);\n const midi = height >= 0 && height <= 127 ? height : null;\n const freq = oct === void 0 ? null : Math.pow(2, (height - 69) / 12) * 440;\n return {\n empty: false,\n acc,\n alt,\n chroma,\n coord,\n freq,\n height,\n letter,\n midi,\n name,\n oct,\n pc,\n step\n };\n}\nfunction pitchName(props) {\n const { step, alt, oct } = props;\n const letter = stepToLetter(step);\n if (!letter) {\n return \"\";\n }\n const pc = letter + altToAcc(alt);\n return oct || oct === 0 ? pc + oct : pc;\n}\nexport {\n accToAlt,\n altToAcc,\n coordToNote,\n note,\n stepToLetter,\n tokenizeNote\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport {\n interval as asInterval,\n coordToInterval\n} from \"@tonaljs/pitch-interval\";\nimport {\n note as asNote,\n coordToNote\n} from \"@tonaljs/pitch-note\";\nfunction transpose(noteName, intervalName) {\n const note = asNote(noteName);\n const intervalCoord = Array.isArray(intervalName) ? intervalName : asInterval(intervalName).coord;\n if (note.empty || !intervalCoord || intervalCoord.length < 2) {\n return \"\";\n }\n const noteCoord = note.coord;\n const tr = noteCoord.length === 1 ? [noteCoord[0] + intervalCoord[0]] : [noteCoord[0] + intervalCoord[0], noteCoord[1] + intervalCoord[1]];\n return coordToNote(tr).name;\n}\nfunction tonicIntervalsTransposer(intervals, tonic) {\n const len = intervals.length;\n return (normalized) => {\n if (!tonic) return \"\";\n const index = normalized < 0 ? (len - -normalized % len) % len : normalized % len;\n const octaves = Math.floor(normalized / len);\n const root = transpose(tonic, [0, octaves]);\n return transpose(root, intervals[index]);\n };\n}\nfunction distance(fromNote, toNote) {\n const from = asNote(fromNote);\n const to = asNote(toNote);\n if (from.empty || to.empty) {\n return \"\";\n }\n const fcoord = from.coord;\n const tcoord = to.coord;\n const fifths = tcoord[0] - fcoord[0];\n const octs = fcoord.length === 2 && tcoord.length === 2 ? tcoord[1] - fcoord[1] : -Math.floor(fifths * 7 / 12);\n const forceDescending = to.height === from.height && to.midi !== null && from.oct === to.oct && from.step > to.step;\n return coordToInterval([fifths, octs], forceDescending).name;\n}\nexport {\n distance,\n tonicIntervalsTransposer,\n transpose\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nfunction ascR(b, n) {\n const a = [];\n for (; n--; a[n] = n + b) ;\n return a;\n}\nfunction descR(b, n) {\n const a = [];\n for (; n--; a[n] = b - n) ;\n return a;\n}\nfunction range(from, to) {\n return from < to ? ascR(from, to - from + 1) : descR(from, from - to + 1);\n}\nfunction rotate(times, arr) {\n const len = arr.length;\n const n = (times % len + len) % len;\n return arr.slice(n, len).concat(arr.slice(0, n));\n}\nfunction compact(arr) {\n return arr.filter((n) => n === 0 || n);\n}\nfunction shuffle(arr, rnd = Math.random) {\n let i;\n let t;\n let m = arr.length;\n while (m) {\n i = Math.floor(rnd() * m--);\n t = arr[m];\n arr[m] = arr[i];\n arr[i] = t;\n }\n return arr;\n}\nfunction permutations(arr) {\n if (arr.length === 0) {\n return [[]];\n }\n return permutations(arr.slice(1)).reduce((acc, perm) => {\n return acc.concat(\n arr.map((e, pos) => {\n const newPerm = perm.slice();\n newPerm.splice(pos, 0, arr[0]);\n return newPerm;\n })\n );\n }, []);\n}\nvar collection_default = {\n compact,\n permutations,\n range,\n rotate,\n shuffle\n};\nexport {\n compact,\n collection_default as default,\n permutations,\n range,\n rotate,\n shuffle\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport { compact, range, rotate } from \"@tonaljs/collection\";\nimport { transpose } from \"@tonaljs/pitch-distance\";\nimport { interval } from \"@tonaljs/pitch-interval\";\nimport { note } from \"@tonaljs/pitch-note\";\nvar EmptyPcset = {\n empty: true,\n name: \"\",\n setNum: 0,\n chroma: \"000000000000\",\n normalized: \"000000000000\",\n intervals: []\n};\nvar setNumToChroma = (num2) => Number(num2).toString(2).padStart(12, \"0\");\nvar chromaToNumber = (chroma2) => parseInt(chroma2, 2);\nvar REGEX = /^[01]{12}$/;\nfunction isChroma(set) {\n return REGEX.test(set);\n}\nvar isPcsetNum = (set) => typeof set === \"number\" && set >= 0 && set <= 4095;\nvar isPcset = (set) => set && isChroma(set.chroma);\nvar cache = { [EmptyPcset.chroma]: EmptyPcset };\nfunction get(src) {\n const chroma2 = isChroma(src) ? src : isPcsetNum(src) ? setNumToChroma(src) : Array.isArray(src) ? listToChroma(src) : isPcset(src) ? src.chroma : EmptyPcset.chroma;\n return cache[chroma2] = cache[chroma2] || chromaToPcset(chroma2);\n}\nvar pcset = get;\nvar chroma = (set) => get(set).chroma;\nvar intervals = (set) => get(set).intervals;\nvar num = (set) => get(set).setNum;\nvar IVLS = [\n \"1P\",\n \"2m\",\n \"2M\",\n \"3m\",\n \"3M\",\n \"4P\",\n \"5d\",\n \"5P\",\n \"6m\",\n \"6M\",\n \"7m\",\n \"7M\"\n];\nfunction chromaToIntervals(chroma2) {\n const intervals2 = [];\n for (let i = 0; i < 12; i++) {\n if (chroma2.charAt(i) === \"1\") intervals2.push(IVLS[i]);\n }\n return intervals2;\n}\nfunction notes(set) {\n return get(set).intervals.map((ivl) => transpose(\"C\", ivl));\n}\nfunction chromas() {\n return range(2048, 4095).map(setNumToChroma);\n}\nfunction modes(set, normalize = true) {\n const pcs = get(set);\n const binary = pcs.chroma.split(\"\");\n return compact(\n binary.map((_, i) => {\n const r = rotate(i, binary);\n return normalize && r[0] === \"0\" ? null : r.join(\"\");\n })\n );\n}\nfunction isEqual(s1, s2) {\n return get(s1).setNum === get(s2).setNum;\n}\nfunction isSubsetOf(set) {\n const s = get(set).setNum;\n return (notes2) => {\n const o = get(notes2).setNum;\n return s && s !== o && (o & s) === o;\n };\n}\nfunction isSupersetOf(set) {\n const s = get(set).setNum;\n return (notes2) => {\n const o = get(notes2).setNum;\n return s && s !== o && (o | s) === o;\n };\n}\nfunction isNoteIncludedIn(set) {\n const s = get(set);\n return (noteName) => {\n const n = note(noteName);\n return s && !n.empty && s.chroma.charAt(n.chroma) === \"1\";\n };\n}\nvar includes = isNoteIncludedIn;\nfunction filter(set) {\n const isIncluded = isNoteIncludedIn(set);\n return (notes2) => {\n return notes2.filter(isIncluded);\n };\n}\nvar pcset_default = {\n get,\n chroma,\n num,\n intervals,\n chromas,\n isSupersetOf,\n isSubsetOf,\n isNoteIncludedIn,\n isEqual,\n filter,\n modes,\n notes,\n // deprecated\n pcset\n};\nfunction chromaRotations(chroma2) {\n const binary = chroma2.split(\"\");\n return binary.map((_, i) => rotate(i, binary).join(\"\"));\n}\nfunction chromaToPcset(chroma2) {\n const setNum = chromaToNumber(chroma2);\n const normalizedNum = chromaRotations(chroma2).map(chromaToNumber).filter((n) => n >= 2048).sort()[0];\n const normalized = setNumToChroma(normalizedNum);\n const intervals2 = chromaToIntervals(chroma2);\n return {\n empty: false,\n name: \"\",\n setNum,\n chroma: chroma2,\n normalized,\n intervals: intervals2\n };\n}\nfunction listToChroma(set) {\n if (set.length === 0) {\n return EmptyPcset.chroma;\n }\n let pitch;\n const binary = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (let i = 0; i < set.length; i++) {\n pitch = note(set[i]);\n if (pitch.empty) pitch = interval(set[i]);\n if (!pitch.empty) binary[pitch.chroma] = 1;\n }\n return binary.join(\"\");\n}\nexport {\n EmptyPcset,\n chroma,\n chromas,\n pcset_default as default,\n filter,\n get,\n includes,\n intervals,\n isChroma,\n isEqual,\n isNoteIncludedIn,\n isSubsetOf,\n isSupersetOf,\n modes,\n notes,\n num,\n pcset\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport {\n EmptyPcset,\n get as pcset\n} from \"@tonaljs/pcset\";\n\n// data.ts\nvar CHORDS = [\n // ==Major==\n [\"1P 3M 5P\", \"major\", \"M ^ maj\"],\n [\"1P 3M 5P 7M\", \"major seventh\", \"maj7 \\u0394 ma7 M7 Maj7 ^7\"],\n [\"1P 3M 5P 7M 9M\", \"major ninth\", \"maj9 \\u03949 ^9\"],\n [\"1P 3M 5P 7M 9M 13M\", \"major thirteenth\", \"maj13 Maj13 ^13\"],\n [\"1P 3M 5P 6M\", \"sixth\", \"6 add6 add13 M6\"],\n [\"1P 3M 5P 6M 9M\", \"sixth added ninth\", \"6add9 6/9 69 M69\"],\n [\"1P 3M 6m 7M\", \"major seventh flat sixth\", \"M7b6 ^7b6\"],\n [\n \"1P 3M 5P 7M 11A\",\n \"major seventh sharp eleventh\",\n \"maj#4 \\u0394#4 \\u0394#11 M7#11 ^7#11 maj7#11\"\n ],\n // ==Minor==\n // '''Normal'''\n [\"1P 3m 5P\", \"minor\", \"m min -\"],\n [\"1P 3m 5P 7m\", \"minor seventh\", \"m7 min7 mi7 -7\"],\n [\n \"1P 3m 5P 7M\",\n \"minor/major seventh\",\n \"m/ma7 m/maj7 mM7 mMaj7 m/M7 -\\u03947 m\\u0394 -^7 -maj7\"\n ],\n [\"1P 3m 5P 6M\", \"minor sixth\", \"m6 -6\"],\n [\"1P 3m 5P 7m 9M\", \"minor ninth\", \"m9 -9\"],\n [\"1P 3m 5P 7M 9M\", \"minor/major ninth\", \"mM9 mMaj9 -^9\"],\n [\"1P 3m 5P 7m 9M 11P\", \"minor eleventh\", \"m11 -11\"],\n [\"1P 3m 5P 7m 9M 13M\", \"minor thirteenth\", \"m13 -13\"],\n // '''Diminished'''\n [\"1P 3m 5d\", \"diminished\", \"dim \\xB0 o\"],\n [\"1P 3m 5d 7d\", \"diminished seventh\", \"dim7 \\xB07 o7\"],\n [\"1P 3m 5d 7m\", \"half-diminished\", \"m7b5 \\xF8 -7b5 h7 h\"],\n // ==Dominant/Seventh==\n // '''Normal'''\n [\"1P 3M 5P 7m\", \"dominant seventh\", \"7 dom\"],\n [\"1P 3M 5P 7m 9M\", \"dominant ninth\", \"9\"],\n [\"1P 3M 5P 7m 9M 13M\", \"dominant thirteenth\", \"13\"],\n [\"1P 3M 5P 7m 11A\", \"lydian dominant seventh\", \"7#11 7#4\"],\n // '''Altered'''\n [\"1P 3M 5P 7m 9m\", \"dominant flat ninth\", \"7b9\"],\n [\"1P 3M 5P 7m 9A\", \"dominant sharp ninth\", \"7#9\"],\n [\"1P 3M 7m 9m\", \"altered\", \"alt7\"],\n // '''Suspended'''\n [\"1P 4P 5P\", \"suspended fourth\", \"sus4 sus\"],\n [\"1P 2M 5P\", \"suspended second\", \"sus2\"],\n [\"1P 4P 5P 7m\", \"suspended fourth seventh\", \"7sus4 7sus\"],\n [\"1P 5P 7m 9M 11P\", \"eleventh\", \"11\"],\n [\n \"1P 4P 5P 7m 9m\",\n \"suspended fourth flat ninth\",\n \"b9sus phryg 7b9sus 7b9sus4\"\n ],\n // ==Other==\n [\"1P 5P\", \"fifth\", \"5\"],\n [\"1P 3M 5A\", \"augmented\", \"aug + +5 ^#5\"],\n [\"1P 3m 5A\", \"minor augmented\", \"m#5 -#5 m+\"],\n [\"1P 3M 5A 7M\", \"augmented seventh\", \"maj7#5 maj7+5 +maj7 ^7#5\"],\n [\n \"1P 3M 5P 7M 9M 11A\",\n \"major sharp eleventh (lydian)\",\n \"maj9#11 \\u03949#11 ^9#11\"\n ],\n // ==Legacy==\n [\"1P 2M 4P 5P\", \"\", \"sus24 sus4add9\"],\n [\"1P 3M 5A 7M 9M\", \"\", \"maj9#5 Maj9#5\"],\n [\"1P 3M 5A 7m\", \"\", \"7#5 +7 7+ 7aug aug7\"],\n [\"1P 3M 5A 7m 9A\", \"\", \"7#5#9 7#9#5 7alt\"],\n [\"1P 3M 5A 7m 9M\", \"\", \"9#5 9+\"],\n [\"1P 3M 5A 7m 9M 11A\", \"\", \"9#5#11\"],\n [\"1P 3M 5A 7m 9m\", \"\", \"7#5b9 7b9#5\"],\n [\"1P 3M 5A 7m 9m 11A\", \"\", \"7#5b9#11\"],\n [\"1P 3M 5A 9A\", \"\", \"+add#9\"],\n [\"1P 3M 5A 9M\", \"\", \"M#5add9 +add9\"],\n [\"1P 3M 5P 6M 11A\", \"\", \"M6#11 M6b5 6#11 6b5\"],\n [\"1P 3M 5P 6M 7M 9M\", \"\", \"M7add13\"],\n [\"1P 3M 5P 6M 9M 11A\", \"\", \"69#11\"],\n [\"1P 3m 5P 6M 9M\", \"\", \"m69 -69\"],\n [\"1P 3M 5P 6m 7m\", \"\", \"7b6\"],\n [\"1P 3M 5P 7M 9A 11A\", \"\", \"maj7#9#11\"],\n [\"1P 3M 5P 7M 9M 11A 13M\", \"\", \"M13#11 maj13#11 M13+4 M13#4\"],\n [\"1P 3M 5P 7M 9m\", \"\", \"M7b9\"],\n [\"1P 3M 5P 7m 11A 13m\", \"\", \"7#11b13 7b5b13\"],\n [\"1P 3M 5P 7m 13M\", \"\", \"7add6 67 7add13\"],\n [\"1P 3M 5P 7m 9A 11A\", \"\", \"7#9#11 7b5#9 7#9b5\"],\n [\"1P 3M 5P 7m 9A 11A 13M\", \"\", \"13#9#11\"],\n [\"1P 3M 5P 7m 9A 11A 13m\", \"\", \"7#9#11b13\"],\n [\"1P 3M 5P 7m 9A 13M\", \"\", \"13#9\"],\n [\"1P 3M 5P 7m 9A 13m\", \"\", \"7#9b13\"],\n [\"1P 3M 5P 7m 9M 11A\", \"\", \"9#11 9+4 9#4\"],\n [\"1P 3M 5P 7m 9M 11A 13M\", \"\", \"13#11 13+4 13#4\"],\n [\"1P 3M 5P 7m 9M 11A 13m\", \"\", \"9#11b13 9b5b13\"],\n [\"1P 3M 5P 7m 9m 11A\", \"\", \"7b9#11 7b5b9 7b9b5\"],\n [\"1P 3M 5P 7m 9m 11A 13M\", \"\", \"13b9#11\"],\n [\"1P 3M 5P 7m 9m 11A 13m\", \"\", \"7b9b13#11 7b9#11b13 7b5b9b13\"],\n [\"1P 3M 5P 7m 9m 13M\", \"\", \"13b9\"],\n [\"1P 3M 5P 7m 9m 13m\", \"\", \"7b9b13\"],\n [\"1P 3M 5P 7m 9m 9A\", \"\", \"7b9#9\"],\n [\"1P 3M 5P 9M\", \"\", \"Madd9 2 add9 add2\"],\n [\"1P 3M 5P 9m\", \"\", \"Maddb9\"],\n [\"1P 3M 5d\", \"\", \"Mb5\"],\n [\"1P 3M 5d 6M 7m 9M\", \"\", \"13b5\"],\n [\"1P 3M 5d 7M\", \"\", \"M7b5\"],\n [\"1P 3M 5d 7M 9M\", \"\", \"M9b5\"],\n [\"1P 3M 5d 7m\", \"\", \"7b5\"],\n [\"1P 3M 5d 7m 9M\", \"\", \"9b5\"],\n [\"1P 3M 7m\", \"\", \"7no5\"],\n [\"1P 3M 7m 13m\", \"\", \"7b13\"],\n [\"1P 3M 7m 9M\", \"\", \"9no5\"],\n [\"1P 3M 7m 9M 13M\", \"\", \"13no5\"],\n [\"1P 3M 7m 9M 13m\", \"\", \"9b13\"],\n [\"1P 3m 4P 5P\", \"\", \"madd4\"],\n [\"1P 3m 5P 6m 7M\", \"\", \"mMaj7b6\"],\n [\"1P 3m 5P 6m 7M 9M\", \"\", \"mMaj9b6\"],\n [\"1P 3m 5P 7m 11P\", \"\", \"m7add11 m7add4\"],\n [\"1P 3m 5P 9M\", \"\", \"madd9\"],\n [\"1P 3m 5d 6M 7M\", \"\", \"o7M7\"],\n [\"1P 3m 5d 7M\", \"\", \"oM7\"],\n [\"1P 3m 6m 7M\", \"\", \"mb6M7\"],\n [\"1P 3m 6m 7m\", \"\", \"m7#5\"],\n [\"1P 3m 6m 7m 9M\", \"\", \"m9#5\"],\n [\"1P 3m 5A 7m 9M 11P\", \"\", \"m11A\"],\n [\"1P 3m 6m 9m\", \"\", \"mb6b9\"],\n [\"1P 2M 3m 5d 7m\", \"\", \"m9b5\"],\n [\"1P 4P 5A 7M\", \"\", \"M7#5sus4\"],\n [\"1P 4P 5A 7M 9M\", \"\", \"M9#5sus4\"],\n [\"1P 4P 5A 7m\", \"\", \"7#5sus4\"],\n [\"1P 4P 5P 7M\", \"\", \"M7sus4\"],\n [\"1P 4P 5P 7M 9M\", \"\", \"M9sus4\"],\n [\"1P 4P 5P 7m 9M\", \"\", \"9sus4 9sus\"],\n [\"1P 4P 5P 7m 9M 13M\", \"\", \"13sus4 13sus\"],\n [\"1P 4P 5P 7m 9m 13m\", \"\", \"7sus4b9b13 7b9b13sus4\"],\n [\"1P 4P 7m 10m\", \"\", \"4 quartal\"],\n [\"1P 5P 7m 9m 11P\", \"\", \"11b9\"]\n];\nvar data_default = CHORDS;\n\n// index.ts\nvar NoChordType = {\n ...EmptyPcset,\n name: \"\",\n quality: \"Unknown\",\n intervals: [],\n aliases: []\n};\nvar dictionary = [];\nvar index = {};\nfunction get(type) {\n return index[type] || NoChordType;\n}\nvar chordType = get;\nfunction names() {\n return dictionary.map((chord) => chord.name).filter((x) => x);\n}\nfunction symbols() {\n return dictionary.map((chord) => chord.aliases[0]).filter((x) => x);\n}\nfunction keys() {\n return Object.keys(index);\n}\nfunction all() {\n return dictionary.slice();\n}\nvar entries = all;\nfunction removeAll() {\n dictionary = [];\n index = {};\n}\nfunction add(intervals, aliases, fullName) {\n const quality = getQuality(intervals);\n const chord = {\n ...pcset(intervals),\n name: fullName || \"\",\n quality,\n intervals,\n aliases\n };\n dictionary.push(chord);\n if (chord.name) {\n index[chord.name] = chord;\n }\n index[chord.setNum] = chord;\n index[chord.chroma] = chord;\n chord.aliases.forEach((alias) => addAlias(chord, alias));\n}\nfunction addAlias(chord, alias) {\n index[alias] = chord;\n}\nfunction getQuality(intervals) {\n const has = (interval) => intervals.indexOf(interval) !== -1;\n return has(\"5A\") ? \"Augmented\" : has(\"3M\") ? \"Major\" : has(\"5d\") ? \"Diminished\" : has(\"3m\") ? \"Minor\" : \"Unknown\";\n}\ndata_default.forEach(\n ([ivls, fullName, names2]) => add(ivls.split(\" \"), names2.split(\" \"), fullName)\n);\ndictionary.sort((a, b) => a.setNum - b.setNum);\nvar chord_type_default = {\n names,\n symbols,\n get,\n all,\n add,\n removeAll,\n keys,\n // deprecated\n entries,\n chordType\n};\nexport {\n add,\n addAlias,\n all,\n chordType,\n chord_type_default as default,\n entries,\n get,\n keys,\n names,\n removeAll,\n symbols\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport {\n EmptyPcset,\n get as pcset\n} from \"@tonaljs/pcset\";\n\n// data.ts\nvar SCALES = [\n // Basic scales\n [\"1P 2M 3M 5P 6M\", \"major pentatonic\", \"pentatonic\"],\n [\"1P 2M 3M 4P 5P 6M 7M\", \"major\", \"ionian\"],\n [\"1P 2M 3m 4P 5P 6m 7m\", \"minor\", \"aeolian\"],\n // Jazz common scales\n [\"1P 2M 3m 3M 5P 6M\", \"major blues\"],\n [\"1P 3m 4P 5d 5P 7m\", \"minor blues\", \"blues\"],\n [\"1P 2M 3m 4P 5P 6M 7M\", \"melodic minor\"],\n [\"1P 2M 3m 4P 5P 6m 7M\", \"harmonic minor\"],\n [\"1P 2M 3M 4P 5P 6M 7m 7M\", \"bebop\"],\n [\"1P 2M 3m 4P 5d 6m 6M 7M\", \"diminished\", \"whole-half diminished\"],\n // Modes\n [\"1P 2M 3m 4P 5P 6M 7m\", \"dorian\"],\n [\"1P 2M 3M 4A 5P 6M 7M\", \"lydian\"],\n [\"1P 2M 3M 4P 5P 6M 7m\", \"mixolydian\", \"dominant\"],\n [\"1P 2m 3m 4P 5P 6m 7m\", \"phrygian\"],\n [\"1P 2m 3m 4P 5d 6m 7m\", \"locrian\"],\n // 5-note scales\n [\"1P 3M 4P 5P 7M\", \"ionian pentatonic\"],\n [\"1P 3M 4P 5P 7m\", \"mixolydian pentatonic\", \"indian\"],\n [\"1P 2M 4P 5P 6M\", \"ritusen\"],\n [\"1P 2M 4P 5P 7m\", \"egyptian\"],\n [\"1P 3M 4P 5d 7m\", \"neopolitan major pentatonic\"],\n [\"1P 3m 4P 5P 6m\", \"vietnamese 1\"],\n [\"1P 2m 3m 5P 6m\", \"pelog\"],\n [\"1P 2m 4P 5P 6m\", \"kumoijoshi\"],\n [\"1P 2M 3m 5P 6m\", \"hirajoshi\"],\n [\"1P 2m 4P 5d 7m\", \"iwato\"],\n [\"1P 2m 4P 5P 7m\", \"in-sen\"],\n [\"1P 3M 4A 5P 7M\", \"lydian pentatonic\", \"chinese\"],\n [\"1P 3m 4P 6m 7m\", \"malkos raga\"],\n [\"1P 3m 4P 5d 7m\", \"locrian pentatonic\", \"minor seven flat five pentatonic\"],\n [\"1P 3m 4P 5P 7m\", \"minor pentatonic\", \"vietnamese 2\"],\n [\"1P 3m 4P 5P 6M\", \"minor six pentatonic\"],\n [\"1P 2M 3m 5P 6M\", \"flat three pentatonic\", \"kumoi\"],\n [\"1P 2M 3M 5P 6m\", \"flat six pentatonic\"],\n [\"1P 2m 3M 5P 6M\", \"scriabin\"],\n [\"1P 3M 5d 6m 7m\", \"whole tone pentatonic\"],\n [\"1P 3M 4A 5A 7M\", \"lydian #5P pentatonic\"],\n [\"1P 3M 4A 5P 7m\", \"lydian dominant pentatonic\"],\n [\"1P 3m 4P 5P 7M\", \"minor #7M pentatonic\"],\n [\"1P 3m 4d 5d 7m\", \"super locrian pentatonic\"],\n // 6-note scales\n [\"1P 2M 3m 4P 5P 7M\", \"minor hexatonic\"],\n [\"1P 2A 3M 5P 5A 7M\", \"augmented\"],\n [\"1P 2M 4P 5P 6M 7m\", \"piongio\"],\n [\"1P 2m 3M 4A 6M 7m\", \"prometheus neopolitan\"],\n [\"1P 2M 3M 4A 6M 7m\", \"prometheus\"],\n [\"1P 2m 3M 5d 6m 7m\", \"mystery #1\"],\n [\"1P 2m 3M 4P 5A 6M\", \"six tone symmetric\"],\n [\"1P 2M 3M 4A 5A 6A\", \"whole tone\", \"messiaen's mode #1\"],\n [\"1P 2m 4P 4A 5P 7M\", \"messiaen's mode #5\"],\n // 7-note scales\n [\"1P 2M 3M 4P 5d 6m 7m\", \"locrian major\", \"arabian\"],\n [\"1P 2m 3M 4A 5P 6m 7M\", \"double harmonic lydian\"],\n [\n \"1P 2m 2A 3M 4A 6m 7m\",\n \"altered\",\n \"super locrian\",\n \"diminished whole tone\",\n \"pomeroy\"\n ],\n [\"1P 2M 3m 4P 5d 6m 7m\", \"locrian #2\", \"half-diminished\", \"aeolian b5\"],\n [\n \"1P 2M 3M 4P 5P 6m 7m\",\n \"mixolydian b6\",\n \"melodic minor fifth mode\",\n \"hindu\"\n ],\n [\"1P 2M 3M 4A 5P 6M 7m\", \"lydian dominant\", \"lydian b7\", \"overtone\"],\n [\"1P 2M 3M 4A 5A 6M 7M\", \"lydian augmented\"],\n [\n \"1P 2m 3m 4P 5P 6M 7m\",\n \"dorian b2\",\n \"phrygian #6\",\n \"melodic minor second mode\"\n ],\n [\n \"1P 2m 3m 4d 5d 6m 7d\",\n \"ultralocrian\",\n \"superlocrian bb7\",\n \"superlocrian diminished\"\n ],\n [\"1P 2m 3m 4P 5d 6M 7m\", \"locrian 6\", \"locrian natural 6\", \"locrian sharp 6\"],\n [\"1P 2A 3M 4P 5P 5A 7M\", \"augmented heptatonic\"],\n // Source https://en.wikipedia.org/wiki/Ukrainian_Dorian_scale\n [\n \"1P 2M 3m 4A 5P 6M 7m\",\n \"dorian #4\",\n \"ukrainian dorian\",\n \"romanian minor\",\n \"altered dorian\"\n ],\n [\"1P 2M 3m 4A 5P 6M 7M\", \"lydian diminished\"],\n [\"1P 2M 3M 4A 5A 7m 7M\", \"leading whole tone\"],\n [\"1P 2M 3M 4A 5P 6m 7m\", \"lydian minor\"],\n [\"1P 2m 3M 4P 5P 6m 7m\", \"phrygian dominant\", \"spanish\", \"phrygian major\"],\n [\"1P 2m 3m 4P 5P 6m 7M\", \"balinese\"],\n [\"1P 2m 3m 4P 5P 6M 7M\", \"neopolitan major\"],\n [\"1P 2M 3M 4P 5P 6m 7M\", \"harmonic major\"],\n [\"1P 2m 3M 4P 5P 6m 7M\", \"double harmonic major\", \"gypsy\"],\n [\"1P 2M 3m 4A 5P 6m 7M\", \"hungarian minor\"],\n [\"1P 2A 3M 4A 5P 6M 7m\", \"hungarian major\"],\n [\"1P 2m 3M 4P 5d 6M 7m\", \"oriental\"],\n [\"1P 2m 3m 3M 4A 5P 7m\", \"flamenco\"],\n [\"1P 2m 3m 4A 5P 6m 7M\", \"todi raga\"],\n [\"1P 2m 3M 4P 5d 6m 7M\", \"persian\"],\n [\"1P 2m 3M 5d 6m 7m 7M\", \"enigmatic\"],\n [\n \"1P 2M 3M 4P 5A 6M 7M\",\n \"major augmented\",\n \"major #5\",\n \"ionian augmented\",\n \"ionian #5\"\n ],\n [\"1P 2A 3M 4A 5P 6M 7M\", \"lydian #9\"],\n // 8-note scales\n [\"1P 2m 2M 4P 4A 5P 6m 7M\", \"messiaen's mode #4\"],\n [\"1P 2m 3M 4P 4A 5P 6m 7M\", \"purvi raga\"],\n [\"1P 2m 3m 3M 4P 5P 6m 7m\", \"spanish heptatonic\"],\n [\"1P 2M 3m 3M 4P 5P 6M 7m\", \"bebop minor\"],\n [\"1P 2M 3M 4P 5P 5A 6M 7M\", \"bebop major\"],\n [\"1P 2m 3m 4P 5d 5P 6m 7m\", \"bebop locrian\"],\n [\"1P 2M 3m 4P 5P 6m 7m 7M\", \"minor bebop\"],\n [\"1P 2M 3M 4P 5d 5P 6M 7M\", \"ichikosucho\"],\n [\"1P 2M 3m 4P 5P 6m 6M 7M\", \"minor six diminished\"],\n [\n \"1P 2m 3m 3M 4A 5P 6M 7m\",\n \"half-whole diminished\",\n \"dominant diminished\",\n \"messiaen's mode #2\"\n ],\n [\"1P 3m 3M 4P 5P 6M 7m 7M\", \"kafi raga\"],\n [\"1P 2M 3M 4P 4A 5A 6A 7M\", \"messiaen's mode #6\"],\n // 9-note scales\n [\"1P 2M 3m 3M 4P 5d 5P 6M 7m\", \"composite blues\"],\n [\"1P 2M 3m 3M 4A 5P 6m 7m 7M\", \"messiaen's mode #3\"],\n // 10-note scales\n [\"1P 2m 2M 3m 4P 4A 5P 6m 6M 7M\", \"messiaen's mode #7\"],\n // 12-note scales\n [\"1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M\", \"chromatic\"]\n];\nvar data_default = SCALES;\n\n// index.ts\nvar NoScaleType = {\n ...EmptyPcset,\n intervals: [],\n aliases: []\n};\nvar dictionary = [];\nvar index = {};\nfunction names() {\n return dictionary.map((scale) => scale.name);\n}\nfunction get(type) {\n return index[type] || NoScaleType;\n}\nvar scaleType = get;\nfunction all() {\n return dictionary.slice();\n}\nvar entries = all;\nfunction keys() {\n return Object.keys(index);\n}\nfunction removeAll() {\n dictionary = [];\n index = {};\n}\nfunction add(intervals, name, aliases = []) {\n const scale = { ...pcset(intervals), name, intervals, aliases };\n dictionary.push(scale);\n index[scale.name] = scale;\n index[scale.setNum] = scale;\n index[scale.chroma] = scale;\n scale.aliases.forEach((alias) => addAlias(scale, alias));\n return scale;\n}\nfunction addAlias(scale, alias) {\n index[alias] = scale;\n}\ndata_default.forEach(\n ([ivls, name, ...aliases]) => add(ivls.split(\" \"), name, aliases)\n);\nvar scale_type_default = {\n names,\n get,\n all,\n add,\n removeAll,\n keys,\n // deprecated\n entries,\n scaleType\n};\nexport {\n NoScaleType,\n add,\n addAlias,\n all,\n scale_type_default as default,\n entries,\n get,\n keys,\n names,\n removeAll,\n scaleType\n};\n//# sourceMappingURL=index.mjs.map","// data.ts\nvar DATA = [\n [\n 0.125,\n \"dl\",\n [\"large\", \"duplex longa\", \"maxima\", \"octuple\", \"octuple whole\"]\n ],\n [0.25, \"l\", [\"long\", \"longa\"]],\n [0.5, \"d\", [\"double whole\", \"double\", \"breve\"]],\n [1, \"w\", [\"whole\", \"semibreve\"]],\n [2, \"h\", [\"half\", \"minim\"]],\n [4, \"q\", [\"quarter\", \"crotchet\"]],\n [8, \"e\", [\"eighth\", \"quaver\"]],\n [16, \"s\", [\"sixteenth\", \"semiquaver\"]],\n [32, \"t\", [\"thirty-second\", \"demisemiquaver\"]],\n [64, \"sf\", [\"sixty-fourth\", \"hemidemisemiquaver\"]],\n [128, \"h\", [\"hundred twenty-eighth\"]],\n [256, \"th\", [\"two hundred fifty-sixth\"]]\n];\nvar data_default = DATA;\n\n// index.ts\nvar VALUES = [];\ndata_default.forEach(\n ([denominator, shorthand, names2]) => add(denominator, shorthand, names2)\n);\nvar NoDuration = {\n empty: true,\n name: \"\",\n value: 0,\n fraction: [0, 0],\n shorthand: \"\",\n dots: \"\",\n names: []\n};\nfunction names() {\n return VALUES.reduce((names2, duration) => {\n duration.names.forEach((name) => names2.push(name));\n return names2;\n }, []);\n}\nfunction shorthands() {\n return VALUES.map((dur) => dur.shorthand);\n}\nvar REGEX = /^([^.]+)(\\.*)$/;\nfunction get(name) {\n const [_, simple, dots] = REGEX.exec(name) || [];\n const base = VALUES.find(\n (dur) => dur.shorthand === simple || dur.names.includes(simple)\n );\n if (!base) {\n return NoDuration;\n }\n const fraction2 = calcDots(base.fraction, dots.length);\n const value2 = fraction2[0] / fraction2[1];\n return { ...base, name, dots, value: value2, fraction: fraction2 };\n}\nvar value = (name) => get(name).value;\nvar fraction = (name) => get(name).fraction;\nvar duration_value_default = { names, shorthands, get, value, fraction };\nfunction add(denominator, shorthand, names2) {\n VALUES.push({\n empty: false,\n dots: \"\",\n name: \"\",\n value: 1 / denominator,\n fraction: denominator < 1 ? [1 / denominator, 1] : [1, denominator],\n shorthand,\n names: names2\n });\n}\nfunction calcDots(fraction2, dots) {\n const pow = Math.pow(2, dots);\n let numerator = fraction2[0] * pow;\n let denominator = fraction2[1] * pow;\n const base = numerator;\n for (let i = 0; i < dots; i++) {\n numerator += base / Math.pow(2, i + 1);\n }\n while (numerator % 2 === 0 && denominator % 2 === 0) {\n numerator /= 2;\n denominator /= 2;\n }\n return [numerator, denominator];\n}\nexport {\n duration_value_default as default,\n fraction,\n get,\n names,\n shorthands,\n value\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport { note as props } from \"@tonaljs/pitch-note\";\nfunction isMidi(arg) {\n return +arg >= 0 && +arg <= 127;\n}\nfunction toMidi(note) {\n if (isMidi(note)) {\n return +note;\n }\n const n = props(note);\n return n.empty ? null : n.midi;\n}\nfunction midiToFreq(midi, tuning = 440) {\n return Math.pow(2, (midi - 69) / 12) * tuning;\n}\nvar L2 = Math.log(2);\nvar L440 = Math.log(440);\nfunction freqToMidi(freq) {\n const v = 12 * (Math.log(freq) - L440) / L2 + 69;\n return Math.round(v * 100) / 100;\n}\nvar SHARPS = \"C C# D D# E F F# G G# A A# B\".split(\" \");\nvar FLATS = \"C Db D Eb E F Gb G Ab A Bb B\".split(\" \");\nfunction midiToNoteName(midi, options = {}) {\n if (isNaN(midi) || midi === -Infinity || midi === Infinity) return \"\";\n midi = Math.round(midi);\n const pcs = options.sharps === true ? SHARPS : FLATS;\n const pc = pcs[midi % 12];\n if (options.pitchClass) {\n return pc;\n }\n const o = Math.floor(midi / 12) - 1;\n return pc + o;\n}\nfunction chroma(midi) {\n return midi % 12;\n}\nfunction pcsetFromChroma(chroma2) {\n return chroma2.split(\"\").reduce((pcset2, val, index) => {\n if (index < 12 && val === \"1\") pcset2.push(index);\n return pcset2;\n }, []);\n}\nfunction pcsetFromMidi(midi) {\n return midi.map(chroma).sort((a, b) => a - b).filter((n, i, a) => i === 0 || n !== a[i - 1]);\n}\nfunction pcset(notes) {\n return Array.isArray(notes) ? pcsetFromMidi(notes) : pcsetFromChroma(notes);\n}\nfunction pcsetNearest(notes) {\n const set = pcset(notes);\n return (midi) => {\n const ch = chroma(midi);\n for (let i = 0; i < 12; i++) {\n if (set.includes(ch + i)) return midi + i;\n if (set.includes(ch - i)) return midi - i;\n }\n return void 0;\n };\n}\nfunction pcsetSteps(notes, tonic) {\n const set = pcset(notes);\n const len = set.length;\n return (step) => {\n const index = step < 0 ? (len - -step % len) % len : step % len;\n const octaves = Math.floor(step / len);\n return set[index] + octaves * 12 + tonic;\n };\n}\nfunction pcsetDegrees(notes, tonic) {\n const steps = pcsetSteps(notes, tonic);\n return (degree) => {\n if (degree === 0) return void 0;\n return steps(degree > 0 ? degree - 1 : degree);\n };\n}\nvar index_default = {\n chroma,\n freqToMidi,\n isMidi,\n midiToFreq,\n midiToNoteName,\n pcsetNearest,\n pcset,\n pcsetDegrees,\n pcsetSteps,\n toMidi\n};\nexport {\n chroma,\n index_default as default,\n freqToMidi,\n isMidi,\n midiToFreq,\n midiToNoteName,\n pcset,\n pcsetDegrees,\n pcsetNearest,\n pcsetSteps,\n toMidi\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport { freqToMidi, midiToNoteName } from \"@tonaljs/midi\";\nimport { distance as _dist, transpose as _tr } from \"@tonaljs/pitch-distance\";\nimport {\n note as props\n} from \"@tonaljs/pitch-note\";\nvar NAMES = [\"C\", \"D\", \"E\", \"F\", \"G\", \"A\", \"B\"];\nvar toName = (n) => n.name;\nvar onlyNotes = (array) => array.map(props).filter((n) => !n.empty);\nfunction names(array) {\n if (array === void 0) {\n return NAMES.slice();\n } else if (!Array.isArray(array)) {\n return [];\n } else {\n return onlyNotes(array).map(toName);\n }\n}\nvar get = props;\nvar name = (note) => get(note).name;\nvar pitchClass = (note) => get(note).pc;\nvar accidentals = (note) => get(note).acc;\nvar octave = (note) => get(note).oct;\nvar midi = (note) => get(note).midi;\nvar freq = (note) => get(note).freq;\nvar chroma = (note) => get(note).chroma;\nfunction fromMidi(midi2) {\n return midiToNoteName(midi2);\n}\nfunction fromFreq(freq2) {\n return midiToNoteName(freqToMidi(freq2));\n}\nfunction fromFreqSharps(freq2) {\n return midiToNoteName(freqToMidi(freq2), { sharps: true });\n}\nfunction fromMidiSharps(midi2) {\n return midiToNoteName(midi2, { sharps: true });\n}\nvar distance = _dist;\nvar transpose = _tr;\nvar tr = _tr;\nvar transposeBy = (interval) => (note) => transpose(note, interval);\nvar trBy = transposeBy;\nvar transposeFrom = (note) => (interval) => transpose(note, interval);\nvar trFrom = transposeFrom;\nfunction transposeFifths(noteName, fifths) {\n return transpose(noteName, [fifths, 0]);\n}\nvar trFifths = transposeFifths;\nfunction transposeOctaves(noteName, octaves) {\n return transpose(noteName, [0, octaves]);\n}\nvar ascending = (a, b) => a.height - b.height;\nvar descending = (a, b) => b.height - a.height;\nfunction sortedNames(notes, comparator) {\n comparator = comparator || ascending;\n return onlyNotes(notes).sort(comparator).map(toName);\n}\nfunction sortedUniqNames(notes) {\n return sortedNames(notes, ascending).filter(\n (n, i, a) => i === 0 || n !== a[i - 1]\n );\n}\nvar simplify = (noteName) => {\n const note = get(noteName);\n if (note.empty) {\n return \"\";\n }\n return midiToNoteName(note.midi || note.chroma, {\n sharps: note.alt > 0,\n pitchClass: note.midi === null\n });\n};\nfunction enharmonic(noteName, destName) {\n const src = get(noteName);\n if (src.empty) {\n return \"\";\n }\n const dest = get(\n destName || midiToNoteName(src.midi || src.chroma, {\n sharps: src.alt < 0,\n pitchClass: true\n })\n );\n if (dest.empty || dest.chroma !== src.chroma) {\n return \"\";\n }\n if (src.oct === void 0) {\n return dest.pc;\n }\n const srcChroma = src.chroma - src.alt;\n const destChroma = dest.chroma - dest.alt;\n const destOctOffset = srcChroma > 11 || destChroma < 0 ? -1 : srcChroma < 0 || destChroma > 11 ? 1 : 0;\n const destOct = src.oct + destOctOffset;\n return dest.pc + destOct;\n}\nvar index_default = {\n names,\n get,\n name,\n pitchClass,\n accidentals,\n octave,\n midi,\n ascending,\n descending,\n distance,\n sortedNames,\n sortedUniqNames,\n fromMidi,\n fromMidiSharps,\n freq,\n fromFreq,\n fromFreqSharps,\n chroma,\n transpose,\n tr,\n transposeBy,\n trBy,\n transposeFrom,\n trFrom,\n transposeFifths,\n transposeOctaves,\n trFifths,\n simplify,\n enharmonic\n};\nexport {\n accidentals,\n ascending,\n chroma,\n index_default as default,\n descending,\n distance,\n enharmonic,\n freq,\n fromFreq,\n fromFreqSharps,\n fromMidi,\n fromMidiSharps,\n get,\n midi,\n name,\n names,\n octave,\n pitchClass,\n simplify,\n sortedNames,\n sortedUniqNames,\n tr,\n trBy,\n trFifths,\n trFrom,\n transpose,\n transposeBy,\n transposeFifths,\n transposeFrom,\n transposeOctaves\n};\n//# sourceMappingURL=index.mjs.map","// index.ts\nimport { rotate } from \"@tonaljs/collection\";\nimport { simplify, transposeFifths } from \"@tonaljs/interval\";\nimport { EmptyPcset } from \"@tonaljs/pcset\";\nimport { transpose } from \"@tonaljs/pitch-distance\";\nimport { get as getType } from \"@tonaljs/scale-type\";\nvar MODES = [\n [0, 2773, 0, \"ionian\", \"\", \"Maj7\", \"major\"],\n [1, 2902, 2, \"dorian\", \"m\", \"m7\"],\n [2, 3418, 4, \"phrygian\", \"m\", \"m7\"],\n [3, 2741, -1, \"lydian\", \"\", \"Maj7\"],\n [4, 2774, 1, \"mixolydian\", \"\", \"7\"],\n [5, 2906, 3, \"aeolian\", \"m\", \"m7\", \"minor\"],\n [6, 3434, 5, \"locrian\", \"dim\", \"m7b5\"]\n];\nvar NoMode = {\n ...EmptyPcset,\n name: \"\",\n alt: 0,\n modeNum: NaN,\n triad: \"\",\n seventh: \"\",\n aliases: []\n};\nvar modes = MODES.map(toMode);\nvar index = {};\nmodes.forEach((mode2) => {\n index[mode2.name] = mode2;\n mode2.aliases.forEach((alias) => {\n index[alias] = mode2;\n });\n});\nfunction get(name) {\n return typeof name === \"string\" ? index[name.toLowerCase()] || NoMode : name && name.name ? get(name.name) : NoMode;\n}\nvar mode = get;\nfunction all() {\n return modes.slice();\n}\nvar entries = all;\nfunction names() {\n return modes.map((mode2) => mode2.name);\n}\nfunction toMode(mode2) {\n const [modeNum, setNum, alt, name, triad, seventh, alias] = mode2;\n const aliases = alias ? [alias] : [];\n const chroma = Number(setNum).toString(2);\n const intervals = getType(name).intervals;\n return {\n empty: false,\n intervals,\n modeNum,\n chroma,\n normalized: chroma,\n name,\n setNum,\n alt,\n triad,\n seventh,\n aliases\n };\n}\nfunction notes(modeName, tonic) {\n return get(modeName).intervals.map((ivl) => transpose(tonic, ivl));\n}\nfunction chords(chords2) {\n return (modeName, tonic) => {\n const mode2 = get(modeName);\n if (mode2.empty) return [];\n const triads2 = rotate(mode2.modeNum, chords2);\n const tonics = mode2.intervals.map((i) => transpose(tonic, i));\n return triads2.map((triad, i) => tonics[i] + triad);\n };\n}\nvar triads = chords(MODES.map((x) => x[4]));\nvar seventhChords = chords(MODES.map((x) => x[5]));\nfunction distance(destination, source) {\n const from = get(source);\n const to = get(destination);\n if (from.empty || to.empty) return \"\";\n return simplify(transposeFifths(\"1P\", to.alt - from.alt));\n}\nfunction relativeTonic(destination, source, tonic) {\n return transpose(tonic, distance(destination, source));\n}\nvar mode_default = {\n get,\n names,\n all,\n distance,\n relativeTonic,\n notes,\n triads,\n seventhChords,\n // deprecated\n entries,\n mode\n};\nexport {\n all,\n mode_default as default,\n distance,\n entries,\n get,\n mode,\n names,\n notes,\n relativeTonic,\n seventhChords,\n triads\n};\n//# sourceMappingURL=index.mjs.map","module.exports = range;\n\n/*\n range(0, 5); // [0, 1, 2, 3, 4]\n range(5); // [0, 1, 2, 3, 4]\n range(-5); // [0, -1, -2, -3, -4]\n range(0, 20, 5) // [0, 5, 10, 15]\n range(0, -20, -5) // [0, -5, -10, -15]\n*/\n\nfunction range(start, stop, step) {\n if (start != null && typeof start != 'number') {\n throw new Error('start must be a number or null');\n }\n if (stop != null && typeof stop != 'number') {\n throw new Error('stop must be a number or null');\n }\n if (step != null && typeof step != 'number') {\n throw new Error('step must be a number or null');\n }\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (step == null) {\n step = stop > start ? 1 : -1;\n }\n var toReturn = [];\n var increasing = start < stop; //← here’s the change\n for (; increasing ? start < stop : start > stop; start += step) {\n toReturn.push(start);\n }\n return toReturn;\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order of result values is determined by the\n * order they occur in the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = difference;\n","import range from 'just-range';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport difference from 'lodash.difference';\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nvar SORTED_PITCHES = ['C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B'];\nvar ACCIDENTAL_PITCHES = ['Db', 'Eb', 'Gb', 'Ab', 'Bb'];\nvar PITCH_INDEXES = {\n C: 0,\n 'C#': 1,\n Db: 1,\n D: 2,\n 'D#': 3,\n Eb: 3,\n E: 4,\n F: 5,\n 'F#': 6,\n Gb: 6,\n G: 7,\n 'G#': 8,\n Ab: 8,\n A: 9,\n 'A#': 10,\n Bb: 10,\n B: 11\n};\nvar MIDI_NUMBER_C0 = 12;\nvar MIN_MIDI_NUMBER = MIDI_NUMBER_C0;\nvar MAX_MIDI_NUMBER = 127;\nvar NOTE_REGEX = /([a-g])([#b]?)(\\d+)/;\nvar NOTES_IN_OCTAVE = 12;\n\n// Converts string notes in scientific pitch notation to a MIDI number, or null.\n//\n// Example: \"c#0\" => 13, \"eb5\" => 75, \"abc\" => null\n//\n// References:\n// - http://www.flutopedia.com/octave_notation.htm\n// - https://github.com/danigb/tonal/blob/master/packages/note/index.js\nfunction fromNote(note) {\n if (!note) {\n throw Error('Invalid note argument');\n }\n var match = NOTE_REGEX.exec(note.toLowerCase());\n if (!match) {\n throw Error('Invalid note argument');\n }\n var _match = _slicedToArray(match, 4),\n letter = _match[1],\n accidental = _match[2],\n octave = _match[3];\n var pitchName = \"\".concat(letter.toUpperCase()).concat(accidental);\n var pitchIndex = PITCH_INDEXES[pitchName];\n if (pitchIndex == null) {\n throw Error('Invalid note argument');\n }\n return MIDI_NUMBER_C0 + pitchIndex + NOTES_IN_OCTAVE * parseInt(octave, 10);\n}\n\n//\n// Build cache for getAttributes\n//\nfunction buildMidiNumberAttributes(midiNumber) {\n var pitchIndex = (midiNumber - MIDI_NUMBER_C0) % NOTES_IN_OCTAVE;\n var octave = Math.floor((midiNumber - MIDI_NUMBER_C0) / NOTES_IN_OCTAVE);\n var pitchName = SORTED_PITCHES[pitchIndex];\n return {\n note: \"\".concat(pitchName).concat(octave),\n pitchName: pitchName,\n octave: octave,\n midiNumber: midiNumber,\n isAccidental: ACCIDENTAL_PITCHES.includes(pitchName)\n };\n}\nfunction buildMidiNumberAttributesCache() {\n return range(MIN_MIDI_NUMBER, MAX_MIDI_NUMBER + 1).reduce(function (cache, midiNumber) {\n cache[midiNumber] = buildMidiNumberAttributes(midiNumber);\n return cache;\n }, {});\n}\nvar midiNumberAttributesCache = buildMidiNumberAttributesCache();\n\n// Returns an object containing various attributes for a given MIDI number.\n// Throws error for invalid midiNumbers.\nfunction getAttributes(midiNumber) {\n var attrs = midiNumberAttributesCache[midiNumber];\n if (!attrs) {\n throw Error('Invalid MIDI number');\n }\n return attrs;\n}\n\n// Returns all MIDI numbers corresponding to natural notes, e.g. C and not C# or Bb.\nvar NATURAL_MIDI_NUMBERS = range(MIN_MIDI_NUMBER, MAX_MIDI_NUMBER + 1).filter(function (midiNumber) {\n return !getAttributes(midiNumber).isAccidental;\n});\nvar MidiNumbers = {\n fromNote: fromNote,\n getAttributes: getAttributes,\n MIN_MIDI_NUMBER: MIN_MIDI_NUMBER,\n MAX_MIDI_NUMBER: MAX_MIDI_NUMBER,\n NATURAL_MIDI_NUMBERS: NATURAL_MIDI_NUMBERS\n};\n\nvar middleC = 60;\nvar Key = /*#__PURE__*/function (_React$Component) {\n _inherits(Key, _React$Component);\n var _super = _createSuper(Key);\n function Key() {\n var _this;\n _classCallCheck(this, Key);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"onPlayNoteInput\", function () {\n _this.props.onPlayNoteInput(_this.props.midiNumber);\n });\n _defineProperty(_assertThisInitialized(_this), \"onStopNoteInput\", function () {\n _this.props.onStopNoteInput(_this.props.midiNumber);\n if (_this.props.onKeyMouseLeave) {\n _this.props.onKeyMouseLeave(_this.props.midiNumber);\n }\n });\n return _this;\n }\n _createClass(Key, [{\n key: \"getAbsoluteKeyPosition\",\n value:\n // Key position is represented by the number of natural key widths from the left\n function getAbsoluteKeyPosition(midiNumber) {\n var OCTAVE_WIDTH = 7;\n var _MidiNumbers$getAttri = MidiNumbers.getAttributes(midiNumber),\n octave = _MidiNumbers$getAttri.octave,\n pitchName = _MidiNumbers$getAttri.pitchName;\n var pitchPosition = this.props.pitchPositions[pitchName];\n var octavePosition = OCTAVE_WIDTH * octave;\n return pitchPosition + octavePosition;\n }\n }, {\n key: \"getRelativeKeyPosition\",\n value: function getRelativeKeyPosition(midiNumber) {\n return this.getAbsoluteKeyPosition(midiNumber) - this.getAbsoluteKeyPosition(this.props.noteRange.first);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props,\n naturalKeyWidth = _this$props.naturalKeyWidth,\n accidentalWidthRatio = _this$props.accidentalWidthRatio,\n midiNumber = _this$props.midiNumber,\n gliss = _this$props.gliss,\n useTouchEvents = _this$props.useTouchEvents,\n accidental = _this$props.accidental,\n active = _this$props.active,\n selected = _this$props.selected,\n disabled = _this$props.disabled,\n children = _this$props.children;\n var left = accidental ? ratioToPercentage(this.getRelativeKeyPosition(midiNumber) * naturalKeyWidth) : ratioToPercentage(this.getRelativeKeyPosition(midiNumber) * naturalKeyWidth);\n var width = ratioToPercentage(accidental ? accidentalWidthRatio * naturalKeyWidth : naturalKeyWidth);\n\n // Need to conditionally include/exclude handlers based on useTouchEvents,\n // because otherwise mobile taps double fire events.\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-midinumber\": midiNumber,\n className: classNames('ReactPiano__Key', {\n 'ReactPiano__Key--accidental': accidental,\n 'ReactPiano__Key--natural': !accidental,\n 'ReactPiano__Key--disabled': disabled,\n 'ReactPiano__Key--active': active,\n 'ReactPiano__Key--selected': selected,\n 'ReactPiano__Key--middleC': midiNumber === middleC\n }),\n style: {\n left: left,\n width: width\n },\n onDoubleClick: function onDoubleClick() {\n if (_this2.props.onDoubleClick) {\n _this2.props.onDoubleClick(midiNumber);\n }\n },\n onMouseDown: useTouchEvents ? null : this.onPlayNoteInput,\n onMouseUp: function onMouseUp() {\n if (_this2.props.onClick) {\n _this2.props.onClick(midiNumber);\n }\n if (!useTouchEvents) {\n _this2.onStopNoteInput();\n }\n },\n onMouseEnter: function onMouseEnter() {\n if (_this2.props.onKeyMouseEnter) {\n _this2.props.onKeyMouseEnter({\n accidental: accidental,\n left: left,\n midiNumber: midiNumber,\n width: width\n });\n }\n if (gliss) _this2.onPlayNoteInput();\n },\n onMouseLeave: this.onStopNoteInput,\n onTouchStart: useTouchEvents ? this.onPlayNoteInput : null,\n onTouchCancel: useTouchEvents ? this.onStopNoteInput : null,\n onTouchEnd: useTouchEvents ? this.onStopNoteInput : null\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"ReactPiano__NoteLabelContainer\"\n }, children));\n }\n }]);\n return Key;\n}(React.Component);\n_defineProperty(Key, \"propTypes\", {\n midiNumber: PropTypes.number.isRequired,\n naturalKeyWidth: PropTypes.number.isRequired,\n // Width as a ratio between 0 and 1\n gliss: PropTypes.bool.isRequired,\n useTouchEvents: PropTypes.bool.isRequired,\n accidental: PropTypes.bool.isRequired,\n active: PropTypes.bool.isRequired,\n selected: PropTypes.bool,\n disabled: PropTypes.bool.isRequired,\n onKeyMouseEnter: PropTypes.func,\n onKeyMouseLeave: PropTypes.func,\n onPlayNoteInput: PropTypes.func.isRequired,\n onStopNoteInput: PropTypes.func.isRequired,\n accidentalWidthRatio: PropTypes.number.isRequired,\n pitchPositions: PropTypes.object.isRequired,\n children: PropTypes.node\n});\n_defineProperty(Key, \"defaultProps\", {\n accidentalWidthRatio: 0.65,\n selected: false,\n onKeyMouseEnter: undefined,\n onKeyMouseLeave: undefined,\n pitchPositions: {\n C: 0,\n Db: 0.672,\n D: 1,\n Eb: 1.672,\n E: 2,\n F: 3,\n Gb: 3.672,\n G: 4,\n Ab: 4.672,\n A: 5,\n Bb: 5.672,\n B: 6\n }\n});\nfunction ratioToPercentage(ratio) {\n return \"\".concat(ratio * 100, \"%\");\n}\n\nvar Keyboard = /*#__PURE__*/function (_React$Component) {\n _inherits(Keyboard, _React$Component);\n var _super = _createSuper(Keyboard);\n function Keyboard() {\n _classCallCheck(this, Keyboard);\n return _super.apply(this, arguments);\n }\n _createClass(Keyboard, [{\n key: \"getMidiNumbers\",\n value:\n // Range of midi numbers on keyboard\n function getMidiNumbers() {\n return range(this.props.noteRange.first, this.props.noteRange.last + 1);\n }\n }, {\n key: \"getNaturalKeyCount\",\n value: function getNaturalKeyCount() {\n return this.getMidiNumbers().filter(function (number) {\n var _MidiNumbers$getAttri = MidiNumbers.getAttributes(number),\n isAccidental = _MidiNumbers$getAttri.isAccidental;\n return !isAccidental;\n }).length;\n }\n\n // Returns a ratio between 0 and 1\n }, {\n key: \"getNaturalKeyWidth\",\n value: function getNaturalKeyWidth() {\n return 1 / this.getNaturalKeyCount();\n }\n }, {\n key: \"getWidth\",\n value: function getWidth() {\n return this.props.width ? this.props.width : '100%';\n }\n }, {\n key: \"getHeight\",\n value: function getHeight() {\n if (!this.props.width) {\n return '100%';\n }\n var keyWidth = this.props.width * this.getNaturalKeyWidth();\n return \"\".concat(keyWidth / this.props.keyWidthToHeight, \"px\");\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this = this;\n var naturalKeyWidth = this.getNaturalKeyWidth();\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('ReactPiano__Keyboard', this.props.className),\n style: {\n width: this.getWidth(),\n height: this.getHeight()\n }\n }, this.getMidiNumbers().map(function (midiNumber) {\n var _MidiNumbers$getAttri2 = MidiNumbers.getAttributes(midiNumber),\n note = _MidiNumbers$getAttri2.note,\n isAccidental = _MidiNumbers$getAttri2.isAccidental;\n var isActive = !_this.props.disabled && _this.props.activeNotes.includes(midiNumber);\n var isSelected = _this.props.selectedNotes && _this.props.selectedNotes.includes(midiNumber);\n return /*#__PURE__*/React.createElement(Key, {\n accidental: isAccidental,\n active: isActive,\n selected: isSelected,\n disabled: _this.props.disabled,\n gliss: _this.props.gliss,\n key: midiNumber,\n midiNumber: midiNumber,\n naturalKeyWidth: naturalKeyWidth,\n noteRange: _this.props.noteRange,\n onClick: _this.props.onClick,\n onDoubleClick: _this.props.onDoubleClick,\n onKeyMouseEnter: _this.props.onKeyMouseEnter,\n onKeyMouseLeave: _this.props.onKeyMouseLeave,\n onPlayNoteInput: _this.props.onPlayNoteInput,\n onStopNoteInput: _this.props.onStopNoteInput,\n useTouchEvents: _this.props.useTouchEvents\n }, _this.props.disabled ? null : _this.props.renderNoteLabel({\n isActive: isActive,\n isAccidental: isAccidental,\n midiNumber: midiNumber\n }));\n }));\n }\n }]);\n return Keyboard;\n}(React.Component);\n_defineProperty(Keyboard, \"propTypes\", {\n noteRange: noteRangePropType,\n activeNotes: PropTypes.arrayOf(PropTypes.number),\n selectedNotes: PropTypes.arrayOf(PropTypes.number),\n onKeyMouseEnter: PropTypes.func,\n onKeyMouseLeave: PropTypes.func,\n onPlayNoteInput: PropTypes.func.isRequired,\n onStopNoteInput: PropTypes.func.isRequired,\n renderNoteLabel: PropTypes.func.isRequired,\n keyWidthToHeight: PropTypes.number.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n gliss: PropTypes.bool,\n useTouchEvents: PropTypes.bool,\n // If width is not provided, must have fixed width and height in parent container\n width: PropTypes.number\n});\n_defineProperty(Keyboard, \"defaultProps\", {\n disabled: false,\n gliss: false,\n keyWidthToHeight: 0.33,\n onKeyMouseEnter: undefined,\n onKeyMouseLeave: undefined,\n renderNoteLabel: function renderNoteLabel() {},\n useTouchEvents: false\n});\nfunction isNaturalMidiNumber(value) {\n if (typeof value !== 'number') {\n return false;\n }\n return MidiNumbers.NATURAL_MIDI_NUMBERS.includes(value);\n}\nfunction noteRangePropType(props, propName, componentName) {\n var _props$propName = props[propName],\n first = _props$propName.first,\n last = _props$propName.last;\n if (!first || !last) {\n return new Error(\"Invalid prop \".concat(propName, \" supplied to \").concat(componentName, \". \").concat(propName, \" must be an object with .first and .last values.\"));\n }\n if (!isNaturalMidiNumber(first) || !isNaturalMidiNumber(last)) {\n return new Error(\"Invalid prop \".concat(propName, \" supplied to \").concat(componentName, \". \").concat(propName, \" values must be valid MIDI numbers, and should not be accidentals (sharp or flat notes).\"));\n }\n if (first >= last) {\n return new Error(\"Invalid prop \".concat(propName, \" supplied to \").concat(componentName, \". \").concat(propName, \".first must be smaller than \").concat(propName, \".last.\"));\n }\n}\n\nvar ControlledPiano = /*#__PURE__*/function (_React$Component) {\n _inherits(ControlledPiano, _React$Component);\n var _super = _createSuper(ControlledPiano);\n function ControlledPiano() {\n var _this;\n _classCallCheck(this, ControlledPiano);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isMouseDown: false,\n useTouchEvents: false\n });\n _defineProperty(_assertThisInitialized(_this), \"handleNoteChanges\", function (_ref) {\n var prevActiveNotes = _ref.prevActiveNotes,\n nextActiveNotes = _ref.nextActiveNotes;\n if (_this.props.disabled) {\n return;\n }\n var notesStopped = difference(prevActiveNotes, nextActiveNotes);\n var notesStarted = difference(nextActiveNotes, prevActiveNotes);\n notesStarted.forEach(function (midiNumber) {\n _this.props.playNote(midiNumber);\n });\n notesStopped.forEach(function (midiNumber) {\n _this.props.stopNote(midiNumber);\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"getMidiNumberForKey\", function (key) {\n if (!_this.props.keyboardShortcuts) {\n return null;\n }\n var shortcut = _this.props.keyboardShortcuts.find(function (sh) {\n return sh.key === key;\n });\n return shortcut && shortcut.midiNumber;\n });\n _defineProperty(_assertThisInitialized(_this), \"getKeyForMidiNumber\", function (midiNumber) {\n if (!_this.props.keyboardShortcuts) {\n return null;\n }\n var shortcut = _this.props.keyboardShortcuts.find(function (sh) {\n return sh.midiNumber === midiNumber;\n });\n return shortcut && shortcut.key;\n });\n _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n // Don't conflict with existing combinations like ctrl + t\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n var midiNumber = _this.getMidiNumberForKey(event.key);\n if (midiNumber) {\n _this.onPlayNoteInput(midiNumber);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onKeyUp\", function (event) {\n // This *should* also check for event.ctrlKey || event.metaKey || event.ShiftKey like onKeyDown does,\n // but at least on Mac Chrome, when mashing down many alphanumeric keystrokes at once,\n // ctrlKey is fired unexpectedly, which would cause onStopNote to NOT be fired, which causes problematic\n // lingering notes. Since it's fairly safe to call onStopNote even when not necessary,\n // the ctrl/meta/shift check is removed to fix that issue.\n var midiNumber = _this.getMidiNumberForKey(event.key);\n if (midiNumber) {\n _this.onStopNoteInput(midiNumber);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onPlayNoteInput\", function (midiNumber) {\n if (_this.props.disabled) {\n return;\n }\n // Pass in previous activeNotes for recording functionality\n _this.props.onPlayNoteInput(midiNumber, _this.props.activeNotes);\n });\n _defineProperty(_assertThisInitialized(_this), \"onStopNoteInput\", function (midiNumber) {\n if (_this.props.disabled) {\n return;\n }\n // Pass in previous activeNotes for recording functionality\n _this.props.onStopNoteInput(midiNumber, _this.props.activeNotes);\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function () {\n _this.setState({\n isMouseDown: true\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseUp\", function () {\n _this.setState({\n isMouseDown: false\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function () {\n _this.setState({\n useTouchEvents: true\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderNoteLabel\", function (_ref2) {\n var midiNumber = _ref2.midiNumber,\n isActive = _ref2.isActive,\n isAccidental = _ref2.isAccidental;\n var keyboardShortcut = _this.getKeyForMidiNumber(midiNumber);\n return _this.props.renderNoteLabel({\n keyboardShortcut: keyboardShortcut,\n midiNumber: midiNumber,\n isActive: isActive,\n isAccidental: isAccidental\n });\n });\n return _this;\n }\n _createClass(ControlledPiano, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n window.addEventListener('keydown', this.onKeyDown);\n window.addEventListener('keyup', this.onKeyUp);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('keydown', this.onKeyDown);\n window.removeEventListener('keyup', this.onKeyUp);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (this.props.activeNotes !== prevProps.activeNotes) {\n this.handleNoteChanges({\n prevActiveNotes: prevProps.activeNotes || [],\n nextActiveNotes: this.props.activeNotes || []\n });\n }\n }\n\n // This function is responsible for diff'ing activeNotes\n // and playing or stopping notes accordingly.\n }, {\n key: \"render\",\n value: function render() {\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n width: '100%',\n height: '100%'\n },\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n onTouchStart: this.onTouchStart,\n \"data-testid\": \"container\"\n }, /*#__PURE__*/React.createElement(Keyboard, {\n activeNotes: this.props.activeNotes,\n selectedNotes: this.props.selectedNotes,\n className: this.props.className,\n disabled: this.props.disabled,\n gliss: this.state.isMouseDown,\n keyWidthToHeight: this.props.keyWidthToHeight,\n noteRange: this.props.noteRange,\n onClick: this.props.onClick,\n onDoubleClick: this.props.onDoubleClick,\n onKeyMouseEnter: this.props.onKeyMouseEnter,\n onKeyMouseLeave: this.props.onKeyMouseLeave,\n onPlayNoteInput: this.onPlayNoteInput,\n onStopNoteInput: this.onStopNoteInput,\n renderNoteLabel: this.renderNoteLabel,\n useTouchEvents: this.state.useTouchEvents,\n width: this.props.width\n }));\n }\n }]);\n return ControlledPiano;\n}(React.Component);\n_defineProperty(ControlledPiano, \"propTypes\", {\n noteRange: PropTypes.object.isRequired,\n activeNotes: PropTypes.arrayOf(PropTypes.number.isRequired).isRequired,\n selectedNotes: PropTypes.arrayOf(PropTypes.number),\n playNote: PropTypes.func.isRequired,\n stopNote: PropTypes.func.isRequired,\n onClick: PropTypes.func,\n onDoubleClick: PropTypes.func,\n onKeyMouseEnter: PropTypes.func,\n onKeyMouseLeave: PropTypes.func,\n onPlayNoteInput: PropTypes.func.isRequired,\n onStopNoteInput: PropTypes.func.isRequired,\n renderNoteLabel: PropTypes.func.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n width: PropTypes.number,\n keyWidthToHeight: PropTypes.number,\n keyboardShortcuts: PropTypes.arrayOf(PropTypes.shape({\n key: PropTypes.string.isRequired,\n midiNumber: PropTypes.number.isRequired\n }))\n});\n_defineProperty(ControlledPiano, \"defaultProps\", {\n onKeyMouseEnter: undefined,\n onKeyMouseLeave: undefined,\n renderNoteLabel: function renderNoteLabel(_ref3) {\n var keyboardShortcut = _ref3.keyboardShortcut,\n midiNumber = _ref3.midiNumber,\n isActive = _ref3.isActive,\n isAccidental = _ref3.isAccidental;\n return keyboardShortcut ? /*#__PURE__*/React.createElement(\"div\", {\n className: classNames('ReactPiano__NoteLabel', {\n 'ReactPiano__NoteLabel--active': isActive,\n 'ReactPiano__NoteLabel--accidental': isAccidental,\n 'ReactPiano__NoteLabel--natural': !isAccidental\n })\n }, keyboardShortcut) : null;\n }\n});\n\nvar _excluded = [\"activeNotes\", \"selectedNotes\", \"onPlayNoteInput\", \"onStopNoteInput\"];\nvar Piano = /*#__PURE__*/function (_React$Component) {\n _inherits(Piano, _React$Component);\n var _super = _createSuper(Piano);\n function Piano() {\n var _this;\n _classCallCheck(this, Piano);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n activeNotes: _this.props.activeNotes || []\n });\n _defineProperty(_assertThisInitialized(_this), \"handlePlayNoteInput\", function (midiNumber) {\n _this.setState(function (prevState) {\n // Need to be handled inside setState in order to set prevActiveNotes without\n // race conditions.\n if (_this.props.onPlayNoteInput) {\n _this.props.onPlayNoteInput(midiNumber, {\n prevActiveNotes: prevState.activeNotes\n });\n }\n\n // Don't append note to activeNotes if it's already present\n if (prevState.activeNotes.includes(midiNumber)) {\n return null;\n }\n return {\n activeNotes: prevState.activeNotes.concat(midiNumber)\n };\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"handleStopNoteInput\", function (midiNumber) {\n _this.setState(function (prevState) {\n // Need to be handled inside setState in order to set prevActiveNotes without\n // race conditions.\n if (_this.props.onStopNoteInput) {\n _this.props.onStopNoteInput(midiNumber, {\n prevActiveNotes: _this.state.activeNotes\n });\n }\n return {\n activeNotes: prevState.activeNotes.filter(function (note) {\n return midiNumber !== note;\n })\n };\n });\n });\n return _this;\n }\n _createClass(Piano, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // Make activeNotes \"controllable\" by using internal\n // state by default, but allowing prop overrides.\n if (prevProps.activeNotes !== this.props.activeNotes && this.state.activeNotes !== this.props.activeNotes) {\n this.setState({\n activeNotes: this.props.activeNotes || []\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n activeNotes = _this$props.activeNotes,\n selectedNotes = _this$props.selectedNotes,\n onPlayNoteInput = _this$props.onPlayNoteInput,\n onStopNoteInput = _this$props.onStopNoteInput,\n otherProps = _objectWithoutProperties(_this$props, _excluded);\n return /*#__PURE__*/React.createElement(ControlledPiano, _extends({\n activeNotes: this.state.activeNotes,\n selectedNotes: selectedNotes,\n onPlayNoteInput: this.handlePlayNoteInput,\n onStopNoteInput: this.handleStopNoteInput\n }, otherProps));\n }\n }]);\n return Piano;\n}(React.Component);\n_defineProperty(Piano, \"propTypes\", {\n noteRange: PropTypes.object.isRequired,\n activeNotes: PropTypes.arrayOf(PropTypes.number.isRequired),\n selectedNotes: PropTypes.arrayOf(PropTypes.number),\n playNote: PropTypes.func.isRequired,\n stopNote: PropTypes.func.isRequired,\n onPlayNoteInput: PropTypes.func,\n onStopNoteInput: PropTypes.func,\n renderNoteLabel: PropTypes.func,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n width: PropTypes.number,\n keyWidthToHeight: PropTypes.number,\n keyboardShortcuts: PropTypes.arrayOf(PropTypes.shape({\n key: PropTypes.string.isRequired,\n midiNumber: PropTypes.number.isRequired\n }))\n});\n\nfunction createKeyboardShortcuts(_ref) {\n var firstNote = _ref.firstNote,\n lastNote = _ref.lastNote,\n keyboardConfig = _ref.keyboardConfig;\n var currentMidiNumber = firstNote;\n var naturalKeyIndex = 0;\n var keyboardShortcuts = [];\n while (\n // There are still keys to be assigned\n naturalKeyIndex < keyboardConfig.length &&\n // Note to be assigned does not surpass range\n currentMidiNumber <= lastNote) {\n var key = keyboardConfig[naturalKeyIndex];\n var _MidiNumbers$getAttri = MidiNumbers.getAttributes(currentMidiNumber),\n isAccidental = _MidiNumbers$getAttri.isAccidental;\n if (isAccidental) {\n keyboardShortcuts.push({\n key: key.flat,\n midiNumber: currentMidiNumber\n });\n } else {\n keyboardShortcuts.push({\n key: key.natural,\n midiNumber: currentMidiNumber\n });\n naturalKeyIndex += 1;\n }\n currentMidiNumber += 1;\n }\n return keyboardShortcuts;\n}\nvar KeyboardShortcuts = {\n create: createKeyboardShortcuts,\n // Preset configurations\n BOTTOM_ROW: [{\n natural: 'z',\n flat: 'a',\n sharp: 's'\n }, {\n natural: 'x',\n flat: 's',\n sharp: 'd'\n }, {\n natural: 'c',\n flat: 'd',\n sharp: 'f'\n }, {\n natural: 'v',\n flat: 'f',\n sharp: 'g'\n }, {\n natural: 'b',\n flat: 'g',\n sharp: 'h'\n }, {\n natural: 'n',\n flat: 'h',\n sharp: 'j'\n }, {\n natural: 'm',\n flat: 'j',\n sharp: 'k'\n }, {\n natural: ',',\n flat: 'k',\n sharp: 'l'\n }, {\n natural: '.',\n flat: 'l',\n sharp: ';'\n }, {\n natural: '/',\n flat: ';',\n sharp: \"'\"\n }],\n HOME_ROW: [{\n natural: 'a',\n flat: 'q',\n sharp: 'w'\n }, {\n natural: 's',\n flat: 'w',\n sharp: 'e'\n }, {\n natural: 'd',\n flat: 'e',\n sharp: 'r'\n }, {\n natural: 'f',\n flat: 'r',\n sharp: 't'\n }, {\n natural: 'g',\n flat: 't',\n sharp: 'y'\n }, {\n natural: 'h',\n flat: 'y',\n sharp: 'u'\n }, {\n natural: 'j',\n flat: 'u',\n sharp: 'i'\n }, {\n natural: 'k',\n flat: 'i',\n sharp: 'o'\n }, {\n natural: 'l',\n flat: 'o',\n sharp: 'p'\n }, {\n natural: ';',\n flat: 'p',\n sharp: '['\n }, {\n natural: \"'\",\n flat: '[',\n sharp: ']'\n }],\n QWERTY_ROW: [{\n natural: 'q',\n flat: '1',\n sharp: '2'\n }, {\n natural: 'w',\n flat: '2',\n sharp: '3'\n }, {\n natural: 'e',\n flat: '3',\n sharp: '4'\n }, {\n natural: 'r',\n flat: '4',\n sharp: '5'\n }, {\n natural: 't',\n flat: '5',\n sharp: '6'\n }, {\n natural: 'y',\n flat: '6',\n sharp: '7'\n }, {\n natural: 'u',\n flat: '7',\n sharp: '8'\n }, {\n natural: 'i',\n flat: '8',\n sharp: '9'\n }, {\n natural: 'o',\n flat: '9',\n sharp: '0'\n }, {\n natural: 'p',\n flat: '0',\n sharp: '-'\n }, {\n natural: '[',\n flat: '-',\n sharp: '='\n }]\n};\n\nexport { ControlledPiano, Piano, Keyboard, KeyboardShortcuts, MidiNumbers };\n//# sourceMappingURL=react-piano.esm.js.map\n","'use strict'\n\n// DECODE UTILITIES\nfunction b64ToUint6 (nChr) {\n return nChr > 64 && nChr < 91 ? nChr - 65\n : nChr > 96 && nChr < 123 ? nChr - 71\n : nChr > 47 && nChr < 58 ? nChr + 4\n : nChr === 43 ? 62\n : nChr === 47 ? 63\n : 0\n}\n\n// Decode Base64 to Uint8Array\n// ---------------------------\nfunction decode (sBase64, nBlocksSize) {\n var sB64Enc = sBase64.replace(/[^A-Za-z0-9\\+\\/]/g, '')\n var nInLen = sB64Enc.length\n var nOutLen = nBlocksSize\n ? Math.ceil((nInLen * 3 + 1 >> 2) / nBlocksSize) * nBlocksSize\n : nInLen * 3 + 1 >> 2\n var taBytes = new Uint8Array(nOutLen)\n\n for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n nMod4 = nInIdx & 3\n nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\n taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255\n }\n nUint24 = 0\n }\n }\n return taBytes\n}\n\nmodule.exports = { decode: decode }\n","/* global XMLHttpRequest */\n'use strict'\n\n/**\n * Given a url and a return type, returns a promise to the content of the url\n * Basically it wraps a XMLHttpRequest into a Promise\n *\n * @param {String} url\n * @param {String} type - can be 'text' or 'arraybuffer'\n * @return {Promise}\n */\nmodule.exports = function (url, type) {\n return new Promise(function (done, reject) {\n var req = new XMLHttpRequest()\n if (type) req.responseType = type\n\n req.open('GET', url)\n req.onload = function () {\n req.status === 200 ? done(req.response) : reject(Error(req.statusText))\n }\n req.onerror = function () { reject(Error('Network Error')) }\n req.send()\n })\n}\n","'use strict'\n\nvar base64 = require('./base64')\nvar fetch = require('./fetch')\n\n// Given a regex, return a function that test if against a string\nfunction fromRegex (r) {\n return function (o) { return typeof o === 'string' && r.test(o) }\n}\n// Try to apply a prefix to a name\nfunction prefix (pre, name) {\n return typeof pre === 'string' ? pre + name\n : typeof pre === 'function' ? pre(name)\n : name\n}\n\n/**\n * Load one or more audio files\n *\n *\n * Possible option keys:\n *\n * - __from__ {Function|String}: a function or string to convert from file names to urls.\n * If is a string it will be prefixed to the name:\n * `load(ac, 'snare.mp3', { from: 'http://audio.net/samples/' })`\n * If it's a function it receives the file name and should return the url as string.\n * - __only__ {Array} - when loading objects, if provided, only the given keys\n * will be included in the decoded object:\n * `load(ac, 'piano.json', { only: ['C2', 'D2'] })`\n *\n * @param {AudioContext} ac - the audio context\n * @param {Object} source - the object to be loaded\n * @param {Object} options - (Optional) the load options for that object\n * @param {Object} defaultValue - (Optional) the default value to return as\n * in a promise if not valid loader found\n */\nfunction load (ac, source, options, defVal) {\n var loader =\n // Basic audio loading\n isArrayBuffer(source) ? loadArrayBuffer\n : isAudioFileName(source) ? loadAudioFile\n : isPromise(source) ? loadPromise\n // Compound objects\n : isArray(source) ? loadArrayData\n : isObject(source) ? loadObjectData\n : isJsonFileName(source) ? loadJsonFile\n // Base64 encoded audio\n : isBase64Audio(source) ? loadBase64Audio\n : isJsFileName(source) ? loadMidiJSFile\n : null\n\n var opts = options || {}\n return loader ? loader(ac, source, opts)\n : defVal ? Promise.resolve(defVal)\n : Promise.reject('Source not valid (' + source + ')')\n}\nload.fetch = fetch\n\n// BASIC AUDIO LOADING\n// ===================\n\n// Load (decode) an array buffer\nfunction isArrayBuffer (o) { return o instanceof ArrayBuffer }\nfunction loadArrayBuffer (ac, array, options) {\n return new Promise(function (done, reject) {\n ac.decodeAudioData(array,\n function (buffer) { done(buffer) },\n function () { reject(\"Can't decode audio data (\" + array.slice(0, 30) + '...)') }\n )\n })\n}\n\n// Load an audio filename\nvar isAudioFileName = fromRegex(/\\.(mp3|wav|ogg)(\\?.*)?$/i)\nfunction loadAudioFile (ac, name, options) {\n var url = prefix(options.from, name)\n return load(ac, load.fetch(url, 'arraybuffer'), options)\n}\n\n// Load the result of a promise\nfunction isPromise (o) { return o && typeof o.then === 'function' }\nfunction loadPromise (ac, promise, options) {\n return promise.then(function (value) {\n return load(ac, value, options)\n })\n}\n\n// COMPOUND OBJECTS\n// ================\n\n// Try to load all the items of an array\nvar isArray = Array.isArray\nfunction loadArrayData (ac, array, options) {\n return Promise.all(array.map(function (data) {\n return load(ac, data, options, data)\n }))\n}\n\n// Try to load all the values of a key/value object\nfunction isObject (o) { return o && typeof o === 'object' }\nfunction loadObjectData (ac, obj, options) {\n var dest = {}\n var promises = Object.keys(obj).map(function (key) {\n if (options.only && options.only.indexOf(key) === -1) return null\n var value = obj[key]\n return load(ac, value, options, value).then(function (audio) {\n dest[key] = audio\n })\n })\n return Promise.all(promises).then(function () { return dest })\n}\n\n// Load the content of a JSON file\nvar isJsonFileName = fromRegex(/\\.json(\\?.*)?$/i)\nfunction loadJsonFile (ac, name, options) {\n var url = prefix(options.from, name)\n return load(ac, load.fetch(url, 'text').then(JSON.parse), options)\n}\n\n// BASE64 ENCODED FORMATS\n// ======================\n\n// Load strings with Base64 encoded audio\nvar isBase64Audio = fromRegex(/^data:audio/)\nfunction loadBase64Audio (ac, source, options) {\n var i = source.indexOf(',')\n return load(ac, base64.decode(source.slice(i + 1)).buffer, options)\n}\n\n// Load .js files with MidiJS soundfont prerendered audio\nvar isJsFileName = fromRegex(/\\.js(\\?.*)?$/i)\nfunction loadMidiJSFile (ac, name, options) {\n var url = prefix(options.from, name)\n return load(ac, load.fetch(url, 'text').then(midiJsToJson), options)\n}\n\n// convert a MIDI.js javascript soundfont file to json\nfunction midiJsToJson (data) {\n var begin = data.indexOf('MIDI.Soundfont.')\n if (begin < 0) throw Error('Invalid MIDI.js Soundfont format')\n begin = data.indexOf('=', begin) + 2\n var end = data.lastIndexOf(',')\n return JSON.parse(data.slice(begin, end) + '}')\n}\n\nif (typeof module === 'object' && module.exports) module.exports = load\nif (typeof window !== 'undefined') window.loadAudio = load\n","module.exports = ADSR\n\nfunction ADSR(audioContext){\n var node = audioContext.createGain()\n\n var voltage = node._voltage = getVoltage(audioContext)\n var value = scale(voltage)\n var startValue = scale(voltage)\n var endValue = scale(voltage)\n\n node._startAmount = scale(startValue)\n node._endAmount = scale(endValue)\n\n node._multiplier = scale(value)\n node._multiplier.connect(node)\n node._startAmount.connect(node)\n node._endAmount.connect(node)\n\n node.value = value.gain\n node.startValue = startValue.gain\n node.endValue = endValue.gain\n\n node.startValue.value = 0\n node.endValue.value = 0\n\n Object.defineProperties(node, props)\n return node\n}\n\nvar props = {\n\n attack: { value: 0, writable: true },\n decay: { value: 0, writable: true },\n sustain: { value: 1, writable: true },\n release: {value: 0, writable: true },\n\n getReleaseDuration: {\n value: function(){\n return this.release\n }\n },\n\n start: {\n value: function(at){\n var target = this._multiplier.gain\n var startAmount = this._startAmount.gain\n var endAmount = this._endAmount.gain\n\n this._voltage.start(at)\n this._decayFrom = this._decayFrom = at+this.attack\n this._startedAt = at\n\n var sustain = this.sustain\n\n target.cancelScheduledValues(at)\n startAmount.cancelScheduledValues(at)\n endAmount.cancelScheduledValues(at)\n\n endAmount.setValueAtTime(0, at)\n\n if (this.attack){\n target.setValueAtTime(0, at)\n target.linearRampToValueAtTime(1, at + this.attack)\n\n startAmount.setValueAtTime(1, at)\n startAmount.linearRampToValueAtTime(0, at + this.attack)\n } else {\n target.setValueAtTime(1, at)\n startAmount.setValueAtTime(0, at)\n }\n\n if (this.decay){\n target.setTargetAtTime(sustain, this._decayFrom, getTimeConstant(this.decay))\n }\n }\n },\n\n stop: {\n value: function(at, isTarget){\n if (isTarget){\n at = at - this.release\n }\n\n var endTime = at + this.release\n if (this.release){\n\n var target = this._multiplier.gain\n var startAmount = this._startAmount.gain\n var endAmount = this._endAmount.gain\n\n target.cancelScheduledValues(at)\n startAmount.cancelScheduledValues(at)\n endAmount.cancelScheduledValues(at)\n\n var expFalloff = getTimeConstant(this.release)\n\n // truncate attack (required as linearRamp is removed by cancelScheduledValues)\n if (this.attack && at < this._decayFrom){\n var valueAtTime = getValue(0, 1, this._startedAt, this._decayFrom, at)\n target.linearRampToValueAtTime(valueAtTime, at)\n startAmount.linearRampToValueAtTime(1-valueAtTime, at)\n startAmount.setTargetAtTime(0, at, expFalloff)\n }\n\n endAmount.setTargetAtTime(1, at, expFalloff)\n target.setTargetAtTime(0, at, expFalloff)\n }\n\n this._voltage.stop(endTime)\n return endTime\n }\n },\n\n onended: {\n get: function(){\n return this._voltage.onended\n },\n set: function(value){\n this._voltage.onended = value\n }\n }\n\n}\n\nvar flat = new Float32Array([1,1])\nfunction getVoltage(context){\n var voltage = context.createBufferSource()\n var buffer = context.createBuffer(1, 2, context.sampleRate)\n buffer.getChannelData(0).set(flat)\n voltage.buffer = buffer\n voltage.loop = true\n return voltage\n}\n\nfunction scale(node){\n var gain = node.context.createGain()\n node.connect(gain)\n return gain\n}\n\nfunction getTimeConstant(time){\n return Math.log(time+1)/Math.log(100)\n}\n\nfunction getValue(start, end, fromTime, toTime, at){\n var difference = end - start\n var time = toTime - fromTime\n var truncateTime = at - fromTime\n var phase = truncateTime / time\n var value = start + phase * difference\n\n if (value <= start) {\n value = start\n }\n if (value >= end) {\n value = end\n }\n\n return value\n}\n","/* global AudioBuffer */\n'use strict'\n\nvar ADSR = require('adsr')\n\nvar EMPTY = {}\nvar DEFAULTS = {\n gain: 1,\n attack: 0.01,\n decay: 0.1,\n sustain: 0.9,\n release: 0.3,\n loop: false,\n cents: 0,\n loopStart: 0,\n loopEnd: 0\n}\n\n/**\n * Create a sample player.\n *\n * @param {AudioContext} ac - the audio context\n * @param {ArrayBuffer|Object<String,ArrayBuffer>} source\n * @param {Onject} options - (Optional) an options object\n * @return {player} the player\n * @example\n * var SamplePlayer = require('sample-player')\n * var ac = new AudioContext()\n * var snare = SamplePlayer(ac, <AudioBuffer>)\n * snare.play()\n */\nfunction SamplePlayer (ac, source, options) {\n var connected = false\n var nextId = 0\n var tracked = {}\n var out = ac.createGain()\n out.gain.value = 1\n\n var opts = Object.assign({}, DEFAULTS, options)\n\n /**\n * @namespace\n */\n var player = { context: ac, out: out, opts: opts }\n if (source instanceof AudioBuffer) player.buffer = source\n else player.buffers = source\n\n /**\n * Start a sample buffer.\n *\n * The returned object has a function `stop(when)` to stop the sound.\n *\n * @param {String} name - the name of the buffer. If the source of the\n * SamplePlayer is one sample buffer, this parameter is not required\n * @param {Float} when - (Optional) when to start (current time if by default)\n * @param {Object} options - additional sample playing options\n * @return {AudioNode} an audio node with a `stop` function\n * @example\n * var sample = player(ac, <AudioBuffer>).connect(ac.destination)\n * sample.start()\n * sample.start(5, { gain: 0.7 }) // name not required since is only one AudioBuffer\n * @example\n * var drums = player(ac, { snare: <AudioBuffer>, kick: <AudioBuffer>, ... }).connect(ac.destination)\n * drums.start('snare')\n * drums.start('snare', 0, { gain: 0.3 })\n */\n player.start = function (name, when, options) {\n // if only one buffer, reorder arguments\n if (player.buffer && name !== null) return player.start(null, name, when)\n\n var buffer = name ? player.buffers[name] : player.buffer\n if (!buffer) {\n console.warn('Buffer ' + name + ' not found.')\n return\n } else if (!connected) {\n console.warn('SamplePlayer not connected to any node.')\n return\n }\n\n var opts = options || EMPTY\n when = Math.max(ac.currentTime, when || 0)\n player.emit('start', when, name, opts)\n var node = createNode(name, buffer, opts)\n node.id = track(name, node)\n node.env.start(when)\n node.source.start(when)\n player.emit('started', when, node.id, node)\n if (opts.duration) node.stop(when + opts.duration)\n return node\n }\n\n // NOTE: start will be override so we can't copy the function reference\n // this is obviously not a good design, so this code will be gone soon.\n /**\n * An alias for `player.start`\n * @see player.start\n * @since 0.3.0\n */\n player.play = function (name, when, options) {\n return player.start(name, when, options)\n }\n\n /**\n * Stop some or all samples\n *\n * @param {Float} when - (Optional) an absolute time in seconds (or currentTime\n * if not specified)\n * @param {Array} nodes - (Optional) an array of nodes or nodes ids to stop\n * @return {Array} an array of ids of the stoped samples\n *\n * @example\n * var longSound = player(ac, <AudioBuffer>).connect(ac.destination)\n * longSound.start(ac.currentTime)\n * longSound.start(ac.currentTime + 1)\n * longSound.start(ac.currentTime + 2)\n * longSound.stop(ac.currentTime + 3) // stop the three sounds\n */\n player.stop = function (when, ids) {\n var node\n ids = ids || Object.keys(tracked)\n return ids.map(function (id) {\n node = tracked[id]\n if (!node) return null\n node.stop(when)\n return node.id\n })\n }\n /**\n * Connect the player to a destination node\n *\n * @param {AudioNode} destination - the destination node\n * @return {AudioPlayer} the player\n * @chainable\n * @example\n * var sample = player(ac, <AudioBuffer>).connect(ac.destination)\n */\n player.connect = function (dest) {\n connected = true\n out.connect(dest)\n return player\n }\n\n player.emit = function (event, when, obj, opts) {\n if (player.onevent) player.onevent(event, when, obj, opts)\n var fn = player['on' + event]\n if (fn) fn(when, obj, opts)\n }\n\n return player\n\n // =============== PRIVATE FUNCTIONS ============== //\n\n function track (name, node) {\n node.id = nextId++\n tracked[node.id] = node\n node.source.onended = function () {\n var now = ac.currentTime\n node.source.disconnect()\n node.env.disconnect()\n node.disconnect()\n player.emit('ended', now, node.id, node)\n }\n return node.id\n }\n\n function createNode (name, buffer, options) {\n var node = ac.createGain()\n node.gain.value = 0 // the envelope will control the gain\n node.connect(out)\n\n node.env = envelope(ac, options, opts)\n node.env.connect(node.gain)\n\n node.source = ac.createBufferSource()\n node.source.buffer = buffer\n node.source.connect(node)\n node.source.loop = options.loop || opts.loop\n node.source.playbackRate.value = centsToRate(options.cents || opts.cents)\n node.source.loopStart = options.loopStart || opts.loopStart\n node.source.loopEnd = options.loopEnd || opts.loopEnd\n node.stop = function (when) {\n var time = when || ac.currentTime\n player.emit('stop', time, name)\n var stopAt = node.env.stop(time)\n node.source.stop(stopAt)\n }\n return node\n }\n}\n\nfunction isNum (x) { return typeof x === 'number' }\nvar PARAMS = ['attack', 'decay', 'sustain', 'release']\nfunction envelope (ac, options, opts) {\n var env = ADSR(ac)\n var adsr = options.adsr || opts.adsr\n PARAMS.forEach(function (name, i) {\n if (adsr) env[name] = adsr[i]\n else env[name] = options[name] || opts[name]\n })\n env.value.value = isNum(options.gain) ? options.gain\n : isNum(opts.gain) ? opts.gain : 1\n return env\n}\n\n/*\n * Get playback rate for a given pitch change (in cents)\n * Basic [math](http://www.birdsoft.demon.co.uk/music/samplert.htm):\n * f2 = f1 * 2^( C / 1200 )\n */\nfunction centsToRate (cents) { return cents ? Math.pow(2, cents / 1200) : 1 }\n\nmodule.exports = SamplePlayer\n","\nmodule.exports = function (player) {\n /**\n * Adds a listener of an event\n * @chainable\n * @param {String} event - the event name\n * @param {Function} callback - the event handler\n * @return {SamplePlayer} the player\n * @example\n * player.on('start', function(time, note) {\n * console.log(time, note)\n * })\n */\n player.on = function (event, cb) {\n if (arguments.length === 1 && typeof event === 'function') return player.on('event', event)\n var prop = 'on' + event\n var old = player[prop]\n player[prop] = old ? chain(old, cb) : cb\n return player\n }\n return player\n}\n\nfunction chain (fn1, fn2) {\n return function (a, b, c, d) { fn1(a, b, c, d); fn2(a, b, c, d) }\n}\n","'use strict'\n\nvar REGEX = /^([a-gA-G])(#{1,}|b{1,}|x{1,}|)(-?\\d*)\\s*(.*)\\s*$/\n/**\n * A regex for matching note strings in scientific notation.\n *\n * @name regex\n * @function\n * @return {RegExp} the regexp used to parse the note name\n *\n * The note string should have the form `letter[accidentals][octave][element]`\n * where:\n *\n * - letter: (Required) is a letter from A to G either upper or lower case\n * - accidentals: (Optional) can be one or more `b` (flats), `#` (sharps) or `x` (double sharps).\n * They can NOT be mixed.\n * - octave: (Optional) a positive or negative integer\n * - element: (Optional) additionally anything after the duration is considered to\n * be the element name (for example: 'C2 dorian')\n *\n * The executed regex contains (by array index):\n *\n * - 0: the complete string\n * - 1: the note letter\n * - 2: the optional accidentals\n * - 3: the optional octave\n * - 4: the rest of the string (trimmed)\n *\n * @example\n * var parser = require('note-parser')\n * parser.regex.exec('c#4')\n * // => ['c#4', 'c', '#', '4', '']\n * parser.regex.exec('c#4 major')\n * // => ['c#4major', 'c', '#', '4', 'major']\n * parser.regex().exec('CMaj7')\n * // => ['CMaj7', 'C', '', '', 'Maj7']\n */\nfunction regex () { return REGEX }\n\nvar SEMITONES = [0, 2, 4, 5, 7, 9, 11]\n/**\n * Parse a note name in scientific notation an return it's components,\n * and some numeric properties including midi number and frequency.\n *\n * @name parse\n * @function\n * @param {String} note - the note string to be parsed\n * @param {Boolean} isTonic - true if the note is the tonic of something.\n * If true, en extra tonicOf property is returned. It's false by default.\n * @param {Float} tunning - The frequency of A4 note to calculate frequencies.\n * By default it 440.\n * @return {Object} the parsed note name or null if not a valid note\n *\n * The parsed note name object will ALWAYS contains:\n * - letter: the uppercase letter of the note\n * - acc: the accidentals of the note (only sharps or flats)\n * - pc: the pitch class (letter + acc)\n * - step: s a numeric representation of the letter. It's an integer from 0 to 6\n * where 0 = C, 1 = D ... 6 = B\n * - alt: a numeric representation of the accidentals. 0 means no alteration,\n * positive numbers are for sharps and negative for flats\n * - chroma: a numeric representation of the pitch class. It's like midi for\n * pitch classes. 0 = C, 1 = C#, 2 = D ... It can have negative values: -1 = Cb.\n * Can detect pitch class enhramonics.\n *\n * If the note has octave, the parser object will contain:\n * - oct: the octave number (as integer)\n * - midi: the midi number\n * - freq: the frequency (using tuning parameter as base)\n *\n * If the parameter `isTonic` is set to true, the parsed object will contain:\n * - tonicOf: the rest of the string that follows note name (left and right trimmed)\n *\n * @example\n * var parse = require('note-parser').parse\n * parse('Cb4')\n * // => { letter: 'C', acc: 'b', pc: 'Cb', step: 0, alt: -1, chroma: -1,\n * oct: 4, midi: 59, freq: 246.94165062806206 }\n * // if no octave, no midi, no freq\n * parse('fx')\n * // => { letter: 'F', acc: '##', pc: 'F##', step: 3, alt: 2, chroma: 7 })\n */\nfunction parse (str, isTonic, tuning) {\n if (typeof str !== 'string') return null\n var m = REGEX.exec(str)\n if (!m || !isTonic && m[4]) return null\n\n var p = { letter: m[1].toUpperCase(), acc: m[2].replace(/x/g, '##') }\n p.pc = p.letter + p.acc\n p.step = (p.letter.charCodeAt(0) + 3) % 7\n p.alt = p.acc[0] === 'b' ? -p.acc.length : p.acc.length\n p.chroma = SEMITONES[p.step] + p.alt\n if (m[3]) {\n p.oct = +m[3]\n p.midi = p.chroma + 12 * (p.oct + 1)\n p.freq = midiToFreq(p.midi, tuning)\n }\n if (isTonic) p.tonicOf = m[4]\n return p\n}\n\n/**\n * Given a midi number, return its frequency\n * @param {Integer} midi - midi note number\n * @param {Float} tuning - (Optional) the A4 tuning (440Hz by default)\n * @return {Float} frequency in hertzs\n */\nfunction midiToFreq (midi, tuning) {\n return Math.pow(2, (midi - 69) / 12) * (tuning || 440)\n}\n\nvar parser = { parse: parse, regex: regex, midiToFreq: midiToFreq }\nvar FNS = ['letter', 'acc', 'pc', 'step', 'alt', 'chroma', 'oct', 'midi', 'freq']\nFNS.forEach(function (name) {\n parser[name] = function (src) {\n var p = parse(src)\n return p && (typeof p[name] !== 'undefined') ? p[name] : null\n }\n})\n\nmodule.exports = parser\n\n// extra API docs\n/**\n * Get midi of a note\n *\n * @name midi\n * @function\n * @param {String} note - the note name\n * @return {Integer} the midi number of the note or null if not a valid note\n * or the note does NOT contains octave\n * @example\n * var parser = require('note-parser')\n * parser.midi('A4') // => 69\n * parser.midi('A') // => null\n */\n/**\n * Get freq of a note in hertzs (in a well tempered 440Hz A4)\n *\n * @name freq\n * @function\n * @param {String} note - the note name\n * @return {Float} the freq of the number if hertzs or null if not valid note\n * or the note does NOT contains octave\n * @example\n * var parser = require('note-parser')\n * parser.freq('A4') // => 440\n * parser.freq('A') // => null\n */\n","'use strict'\n\nvar note = require('note-parser')\nvar isMidi = function (n) { return n !== null && n !== [] && n >= 0 && n < 129 }\nvar toMidi = function (n) { return isMidi(n) ? +n : note.midi(n) }\n\n// Adds note name to midi conversion\nmodule.exports = function (player) {\n if (player.buffers) {\n var map = player.opts.map\n var toKey = typeof map === 'function' ? map : toMidi\n var mapper = function (name) {\n return name ? toKey(name) || name : null\n }\n\n player.buffers = mapBuffers(player.buffers, mapper)\n var start = player.start\n player.start = function (name, when, options) {\n var key = mapper(name)\n var dec = key % 1\n if (dec) {\n key = Math.floor(key)\n options = Object.assign(options || {}, { cents: Math.floor(dec * 100) })\n }\n return start(key, when, options)\n }\n }\n return player\n}\n\nfunction mapBuffers (buffers, toKey) {\n return Object.keys(buffers).reduce(function (mapped, name) {\n mapped[toKey(name)] = buffers[name]\n return mapped\n }, {})\n}\n","'use strict'\n\nvar isArr = Array.isArray\nvar isObj = function (o) { return o && typeof o === 'object' }\nvar OPTS = {}\n\nmodule.exports = function (player) {\n /**\n * Schedule a list of events to be played at specific time.\n *\n * It supports three formats of events for the events list:\n *\n * - An array with [time, note]\n * - An array with [time, object]\n * - An object with { time: ?, [name|note|midi|key]: ? }\n *\n * @param {Float} time - an absolute time to start (or AudioContext's\n * currentTime if provided number is 0)\n * @param {Array} events - the events list.\n * @return {Array} an array of ids\n *\n * @example\n * // Event format: [time, note]\n * var piano = player(ac, ...).connect(ac.destination)\n * piano.schedule(0, [ [0, 'C2'], [0.5, 'C3'], [1, 'C4'] ])\n *\n * @example\n * // Event format: an object { time: ?, name: ? }\n * var drums = player(ac, ...).connect(ac.destination)\n * drums.schedule(0, [\n * { name: 'kick', time: 0 },\n * { name: 'snare', time: 0.5 },\n * { name: 'kick', time: 1 },\n * { name: 'snare', time: 1.5 }\n * ])\n */\n player.schedule = function (time, events) {\n var now = player.context.currentTime\n var when = time < now ? now : time\n player.emit('schedule', when, events)\n var t, o, note, opts\n return events.map(function (event) {\n if (!event) return null\n else if (isArr(event)) {\n t = event[0]; o = event[1]\n } else {\n t = event.time; o = event\n }\n\n if (isObj(o)) {\n note = o.name || o.key || o.note || o.midi || null\n opts = o\n } else {\n note = o\n opts = OPTS\n }\n\n return player.start(note, when + (t || 0), opts)\n })\n }\n return player\n}\n","(function(e){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=e()}else if(typeof define===\"function\"&&define.amd){define([],e)}else{var t;if(typeof window!==\"undefined\"){t=window}else if(typeof global!==\"undefined\"){t=global}else if(typeof self!==\"undefined\"){t=self}else{t=this}t.midimessage=e()}})(function(){var e,t,s;return function o(e,t,s){function a(n,i){if(!t[n]){if(!e[n]){var l=typeof require==\"function\"&&require;if(!i&&l)return l(n,!0);if(r)return r(n,!0);var h=new Error(\"Cannot find module '\"+n+\"'\");throw h.code=\"MODULE_NOT_FOUND\",h}var c=t[n]={exports:{}};e[n][0].call(c.exports,function(t){var s=e[n][1][t];return a(s?s:t)},c,c.exports,o,e,t,s)}return t[n].exports}var r=typeof require==\"function\"&&require;for(var n=0;n<s.length;n++)a(s[n]);return a}({1:[function(e,t,s){\"use strict\";Object.defineProperty(s,\"__esModule\",{value:true});s[\"default\"]=function(e){function t(e){this._event=e;this._data=e.data;this.receivedTime=e.receivedTime;if(this._data&&this._data.length<2){console.warn(\"Illegal MIDI message of length\",this._data.length);return}this._messageCode=e.data[0]&240;this.channel=e.data[0]&15;switch(this._messageCode){case 128:this.messageType=\"noteoff\";this.key=e.data[1]&127;this.velocity=e.data[2]&127;break;case 144:this.messageType=\"noteon\";this.key=e.data[1]&127;this.velocity=e.data[2]&127;break;case 160:this.messageType=\"keypressure\";this.key=e.data[1]&127;this.pressure=e.data[2]&127;break;case 176:this.messageType=\"controlchange\";this.controllerNumber=e.data[1]&127;this.controllerValue=e.data[2]&127;if(this.controllerNumber===120&&this.controllerValue===0){this.channelModeMessage=\"allsoundoff\"}else if(this.controllerNumber===121){this.channelModeMessage=\"resetallcontrollers\"}else if(this.controllerNumber===122){if(this.controllerValue===0){this.channelModeMessage=\"localcontroloff\"}else{this.channelModeMessage=\"localcontrolon\"}}else if(this.controllerNumber===123&&this.controllerValue===0){this.channelModeMessage=\"allnotesoff\"}else if(this.controllerNumber===124&&this.controllerValue===0){this.channelModeMessage=\"omnimodeoff\"}else if(this.controllerNumber===125&&this.controllerValue===0){this.channelModeMessage=\"omnimodeon\"}else if(this.controllerNumber===126){this.channelModeMessage=\"monomodeon\"}else if(this.controllerNumber===127){this.channelModeMessage=\"polymodeon\"}break;case 192:this.messageType=\"programchange\";this.program=e.data[1];break;case 208:this.messageType=\"channelpressure\";this.pressure=e.data[1]&127;break;case 224:this.messageType=\"pitchbendchange\";var t=e.data[2]&127;var s=e.data[1]&127;this.pitchBend=(t<<8)+s;break}}return new t(e)};t.exports=s[\"default\"]},{}]},{},[1])(1)});\n//# sourceMappingURL=dist/index.js.map","var midimessage = require('midimessage')\n\nmodule.exports = function (player) {\n /**\n * Connect a player to a midi input\n *\n * The options accepts:\n *\n * - channel: the channel to listen to. Listen to all channels by default.\n *\n * @param {MIDIInput} input\n * @param {Object} options - (Optional)\n * @return {SamplePlayer} the player\n * @example\n * var piano = player(...)\n * window.navigator.requestMIDIAccess().then(function (midiAccess) {\n * midiAccess.inputs.forEach(function (midiInput) {\n * piano.listenToMidi(midiInput)\n * })\n * })\n */\n player.listenToMidi = function (input, options) {\n var started = {}\n var opts = options || {}\n var gain = opts.gain || function (vel) { return vel / 127 }\n\n input.onmidimessage = function (msg) {\n var mm = msg.messageType ? msg : midimessage(msg)\n if (mm.messageType === 'noteon' && mm.velocity === 0) {\n mm.messageType = 'noteoff'\n }\n if (opts.channel && mm.channel !== opts.channel) return\n\n switch (mm.messageType) {\n case 'noteon':\n started[mm.key] = player.play(mm.key, 0, { gain: gain(mm.velocity) })\n break\n case 'noteoff':\n if (started[mm.key]) {\n started[mm.key].stop()\n delete started[mm.key]\n }\n break\n }\n }\n return player\n }\n return player\n}\n","'use strict'\n\nvar player = require('./player')\nvar events = require('./events')\nvar notes = require('./notes')\nvar scheduler = require('./scheduler')\nvar midi = require('./midi')\n\nfunction SamplePlayer (ac, source, options) {\n return midi(scheduler(notes(events(player(ac, source, options)))))\n}\n\nif (typeof module === 'object' && module.exports) module.exports = SamplePlayer\nif (typeof window !== 'undefined') window.SamplePlayer = SamplePlayer\n","'use strict'\n\n// util\nfunction fillStr (s, num) { return Array(num + 1).join(s) }\nfunction isNum (x) { return typeof x === 'number' }\nfunction isStr (x) { return typeof x === 'string' }\nfunction isDef (x) { return typeof x !== 'undefined' }\nfunction midiToFreq (midi, tuning) {\n return Math.pow(2, (midi - 69) / 12) * (tuning || 440)\n}\n\nvar REGEX = /^([a-gA-G])(#{1,}|b{1,}|x{1,}|)(-?\\d*)\\s*(.*)\\s*$/\n/**\n * A regex for matching note strings in scientific notation.\n *\n * @name regex\n * @function\n * @return {RegExp} the regexp used to parse the note name\n *\n * The note string should have the form `letter[accidentals][octave][element]`\n * where:\n *\n * - letter: (Required) is a letter from A to G either upper or lower case\n * - accidentals: (Optional) can be one or more `b` (flats), `#` (sharps) or `x` (double sharps).\n * They can NOT be mixed.\n * - octave: (Optional) a positive or negative integer\n * - element: (Optional) additionally anything after the duration is considered to\n * be the element name (for example: 'C2 dorian')\n *\n * The executed regex contains (by array index):\n *\n * - 0: the complete string\n * - 1: the note letter\n * - 2: the optional accidentals\n * - 3: the optional octave\n * - 4: the rest of the string (trimmed)\n *\n * @example\n * var parser = require('note-parser')\n * parser.regex.exec('c#4')\n * // => ['c#4', 'c', '#', '4', '']\n * parser.regex.exec('c#4 major')\n * // => ['c#4major', 'c', '#', '4', 'major']\n * parser.regex().exec('CMaj7')\n * // => ['CMaj7', 'C', '', '', 'Maj7']\n */\nexport function regex () { return REGEX }\n\nvar SEMITONES = [0, 2, 4, 5, 7, 9, 11]\n/**\n * Parse a note name in scientific notation an return it's components,\n * and some numeric properties including midi number and frequency.\n *\n * @name parse\n * @function\n * @param {String} note - the note string to be parsed\n * @param {Boolean} isTonic - true the strings it's supposed to contain a note number\n * and some category (for example an scale: 'C# major'). It's false by default,\n * but when true, en extra tonicOf property is returned with the category ('major')\n * @param {Float} tunning - The frequency of A4 note to calculate frequencies.\n * By default it 440.\n * @return {Object} the parsed note name or null if not a valid note\n *\n * The parsed note name object will ALWAYS contains:\n * - letter: the uppercase letter of the note\n * - acc: the accidentals of the note (only sharps or flats)\n * - pc: the pitch class (letter + acc)\n * - step: s a numeric representation of the letter. It's an integer from 0 to 6\n * where 0 = C, 1 = D ... 6 = B\n * - alt: a numeric representation of the accidentals. 0 means no alteration,\n * positive numbers are for sharps and negative for flats\n * - chroma: a numeric representation of the pitch class. It's like midi for\n * pitch classes. 0 = C, 1 = C#, 2 = D ... 11 = B. Can be used to find enharmonics\n * since, for example, chroma of 'Cb' and 'B' are both 11\n *\n * If the note has octave, the parser object will contain:\n * - oct: the octave number (as integer)\n * - midi: the midi number\n * - freq: the frequency (using tuning parameter as base)\n *\n * If the parameter `isTonic` is set to true, the parsed object will contain:\n * - tonicOf: the rest of the string that follows note name (left and right trimmed)\n *\n * @example\n * var parse = require('note-parser').parse\n * parse('Cb4')\n * // => { letter: 'C', acc: 'b', pc: 'Cb', step: 0, alt: -1, chroma: -1,\n * oct: 4, midi: 59, freq: 246.94165062806206 }\n * // if no octave, no midi, no freq\n * parse('fx')\n * // => { letter: 'F', acc: '##', pc: 'F##', step: 3, alt: 2, chroma: 7 })\n */\nexport function parse (str, isTonic, tuning) {\n if (typeof str !== 'string') return null\n var m = REGEX.exec(str)\n if (!m || (!isTonic && m[4])) return null\n\n var p = { letter: m[1].toUpperCase(), acc: m[2].replace(/x/g, '##') }\n p.pc = p.letter + p.acc\n p.step = (p.letter.charCodeAt(0) + 3) % 7\n p.alt = p.acc[0] === 'b' ? -p.acc.length : p.acc.length\n var pos = SEMITONES[p.step] + p.alt\n p.chroma = pos < 0 ? 12 + pos : pos % 12\n if (m[3]) { // has octave\n p.oct = +m[3]\n p.midi = pos + 12 * (p.oct + 1)\n p.freq = midiToFreq(p.midi, tuning)\n }\n if (isTonic) p.tonicOf = m[4]\n return p\n}\n\nvar LETTERS = 'CDEFGAB'\nfunction accStr (n) { return !isNum(n) ? '' : n < 0 ? fillStr('b', -n) : fillStr('#', n) }\nfunction octStr (n) { return !isNum(n) ? '' : '' + n }\n\n/**\n * Create a string from a parsed object or `step, alteration, octave` parameters\n * @param {Object} obj - the parsed data object\n * @return {String} a note string or null if not valid parameters\n * @since 1.2\n * @example\n * parser.build(parser.parse('cb2')) // => 'Cb2'\n *\n * @example\n * // it accepts (step, alteration, octave) parameters:\n * parser.build(3) // => 'F'\n * parser.build(3, -1) // => 'Fb'\n * parser.build(3, -1, 4) // => 'Fb4'\n */\nexport function build (s, a, o) {\n if (s === null || typeof s === 'undefined') return null\n if (s.step) return build(s.step, s.alt, s.oct)\n if (s < 0 || s > 6) return null\n return LETTERS.charAt(s) + accStr(a) + octStr(o)\n}\n\n/**\n * Get midi of a note\n *\n * @name midi\n * @function\n * @param {String|Integer} note - the note name or midi number\n * @return {Integer} the midi number of the note or null if not a valid note\n * or the note does NOT contains octave\n * @example\n * var parser = require('note-parser')\n * parser.midi('A4') // => 69\n * parser.midi('A') // => null\n * @example\n * // midi numbers are bypassed (even as strings)\n * parser.midi(60) // => 60\n * parser.midi('60') // => 60\n */\nexport function midi (note) {\n if ((isNum(note) || isStr(note)) && note >= 0 && note < 128) return +note\n var p = parse(note)\n return p && isDef(p.midi) ? p.midi : null\n}\n\n/**\n * Get freq of a note in hertzs (in a well tempered 440Hz A4)\n *\n * @name freq\n * @function\n * @param {String} note - the note name or note midi number\n * @param {String} tuning - (Optional) the A4 frequency (440 by default)\n * @return {Float} the freq of the number if hertzs or null if not valid note\n * @example\n * var parser = require('note-parser')\n * parser.freq('A4') // => 440\n * parser.freq('A') // => null\n * @example\n * // can change tuning (440 by default)\n * parser.freq('A4', 444) // => 444\n * parser.freq('A3', 444) // => 222\n * @example\n * // it accepts midi numbers (as numbers and as strings)\n * parser.freq(69) // => 440\n * parser.freq('69', 442) // => 442\n */\nexport function freq (note, tuning) {\n var m = midi(note)\n return m === null ? null : midiToFreq(m, tuning)\n}\n\nexport function letter (src) { return (parse(src) || {}).letter }\nexport function acc (src) { return (parse(src) || {}).acc }\nexport function pc (src) { return (parse(src) || {}).pc }\nexport function step (src) { return (parse(src) || {}).step }\nexport function alt (src) { return (parse(src) || {}).alt }\nexport function chroma (src) { return (parse(src) || {}).chroma }\nexport function oct (src) { return (parse(src) || {}).oct }\n","'use strict'\n\nvar parser = require('note-parser')\n\n/**\n * Create a Soundfont object\n *\n * @param {AudioContext} context - the [audio context](https://developer.mozilla.org/en/docs/Web/API/AudioContext)\n * @param {Function} nameToUrl - (Optional) a function that maps the sound font name to the url\n * @return {Soundfont} a soundfont object\n */\nfunction Soundfont (ctx, nameToUrl) {\n console.warn('new Soundfont() is deprected')\n console.log('Please use Soundfont.instrument() instead of new Soundfont().instrument()')\n if (!(this instanceof Soundfont)) return new Soundfont(ctx)\n\n this.nameToUrl = nameToUrl || Soundfont.nameToUrl\n this.ctx = ctx\n this.instruments = {}\n this.promises = []\n}\n\nSoundfont.prototype.onready = function (callback) {\n console.warn('deprecated API')\n console.log('Please use Promise.all(Soundfont.instrument(), Soundfont.instrument()).then() instead of new Soundfont().onready()')\n Promise.all(this.promises).then(callback)\n}\n\nSoundfont.prototype.instrument = function (name, options) {\n console.warn('new Soundfont().instrument() is deprecated.')\n console.log('Please use Soundfont.instrument() instead.')\n var ctx = this.ctx\n name = name || 'default'\n if (name in this.instruments) return this.instruments[name]\n var inst = {name: name, play: oscillatorPlayer(ctx, options)}\n this.instruments[name] = inst\n if (name !== 'default') {\n var promise = Soundfont.instrument(ctx, name, options).then(function (instrument) {\n inst.play = instrument.play\n return inst\n })\n this.promises.push(promise)\n inst.onready = function (cb) {\n console.warn('onready is deprecated. Use Soundfont.instrument().then()')\n promise.then(cb)\n }\n } else {\n inst.onready = function (cb) {\n console.warn('onready is deprecated. Use Soundfont.instrument().then()')\n cb()\n }\n }\n return inst\n}\n\n/*\n * Load the buffers of a given instrument name. It returns a promise that resolves\n * to a hash with midi note numbers as keys, and audio buffers as values.\n *\n * @param {AudioContext} ac - the audio context\n * @param {String} name - the instrument name (it accepts an url if starts with \"http\")\n * @param {Object} options - (Optional) options object\n * @return {Promise} a promise that resolves to a Hash of { midiNoteNum: <AudioBuffer> }\n *\n * The options object accepts the following keys:\n *\n * - nameToUrl {Function}: a function to convert from instrument names to urls.\n * By default it uses Benjamin Gleitzman's package of\n * [pre-rendered sound fonts](https://github.com/gleitz/midi-js-soundfonts)\n * - notes {Array}: the list of note names to be decoded (all by default)\n *\n * @example\n * var Soundfont = require('soundfont-player')\n * Soundfont.loadBuffers(ctx, 'acoustic_grand_piano').then(function(buffers) {\n * buffers[60] // => An <AudioBuffer> corresponding to note C4\n * })\n */\nfunction loadBuffers (ac, name, options) {\n console.warn('Soundfont.loadBuffers is deprecate.')\n console.log('Use Soundfont.instrument(..) and get buffers properties from the result.')\n return Soundfont.instrument(ac, name, options).then(function (inst) {\n return inst.buffers\n })\n}\nSoundfont.loadBuffers = loadBuffers\n\n/**\n * Returns a function that plays an oscillator\n *\n * @param {AudioContext} ac - the audio context\n * @param {Hash} defaultOptions - (Optional) a hash of options:\n * - vcoType: the oscillator type (default: 'sine')\n * - gain: the output gain value (default: 0.4)\n * - destination: the player destination (default: ac.destination)\n */\nfunction oscillatorPlayer (ctx, defaultOptions) {\n defaultOptions = defaultOptions || {}\n return function (note, time, duration, options) {\n console.warn('The oscillator player is deprecated.')\n console.log('Starting with version 0.9.0 you will have to wait until the soundfont is loaded to play sounds.')\n var midi = note > 0 && note < 129 ? +note : parser.midi(note)\n var freq = midi ? parser.midiToFreq(midi, 440) : null\n if (!freq) return\n\n duration = duration || 0.2\n\n options = options || {}\n var destination = options.destination || defaultOptions.destination || ctx.destination\n var vcoType = options.vcoType || defaultOptions.vcoType || 'sine'\n var gain = options.gain || defaultOptions.gain || 0.4\n\n var vco = ctx.createOscillator()\n vco.type = vcoType\n vco.frequency.value = freq\n\n /* VCA */\n var vca = ctx.createGain()\n vca.gain.value = gain\n\n /* Connections */\n vco.connect(vca)\n vca.connect(destination)\n\n vco.start(time)\n if (duration > 0) vco.stop(time + duration)\n return vco\n }\n}\n\n/**\n * Given a note name, return the note midi number\n *\n * @name noteToMidi\n * @function\n * @param {String} noteName\n * @return {Integer} the note midi number or null if not a valid note name\n */\nSoundfont.noteToMidi = parser.midi\n\nmodule.exports = Soundfont\n","'use strict'\n\nvar load = require('audio-loader')\nvar player = require('sample-player')\n\n/**\n * Load a soundfont instrument. It returns a promise that resolves to a\n * instrument object.\n *\n * The instrument object returned by the promise has the following properties:\n *\n * - name: the instrument name\n * - play: A function to play notes from the buffer with the signature\n * `play(note, time, duration, options)`\n *\n *\n * The valid options are:\n *\n * - `format`: the soundfont format. 'mp3' by default. Can be 'ogg'\n * - `soundfont`: the soundfont name. 'MusyngKite' by default. Can be 'FluidR3_GM'\n * - `nameToUrl` <Function>: a function to convert from instrument names to URL\n * - `destination`: by default Soundfont uses the `audioContext.destination` but you can override it.\n * - `gain`: the gain of the player (1 by default)\n * - `notes`: an array of the notes to decode. It can be an array of strings\n * with note names or an array of numbers with midi note numbers. This is a\n * performance option: since decoding mp3 is a cpu intensive process, you can limit\n * limit the number of notes you want and reduce the time to load the instrument.\n *\n * @param {AudioContext} ac - the audio context\n * @param {String} name - the instrument name. For example: 'acoustic_grand_piano'\n * @param {Object} options - (Optional) the same options as Soundfont.loadBuffers\n * @return {Promise}\n *\n * @example\n * var Soundfont = require('sounfont-player')\n * Soundfont.instrument('marimba').then(function (marimba) {\n * marimba.play('C4')\n * })\n */\nfunction instrument (ac, name, options) {\n if (arguments.length === 1) return function (n, o) { return instrument(ac, n, o) }\n var opts = options || {}\n var isUrl = opts.isSoundfontURL || isSoundfontURL\n var toUrl = opts.nameToUrl || nameToUrl\n var url = isUrl(name) ? name : toUrl(name, opts.soundfont, opts.format)\n\n return load(ac, url, { only: opts.only || opts.notes }).then(function (buffers) {\n var p = player(ac, buffers, opts).connect(opts.destination ? opts.destination : ac.destination)\n p.url = url\n p.name = name\n return p\n })\n}\n\nfunction isSoundfontURL (name) {\n return /\\.js(\\?.*)?$/i.test(name)\n}\n\n/**\n * Given an instrument name returns a URL to to the Benjamin Gleitzman's\n * package of [pre-rendered sound fonts](https://github.com/gleitz/midi-js-soundfonts)\n *\n * @param {String} name - instrument name\n * @param {String} soundfont - (Optional) the soundfont name. One of 'FluidR3_GM'\n * or 'MusyngKite' ('MusyngKite' by default)\n * @param {String} format - (Optional) Can be 'mp3' or 'ogg' (mp3 by default)\n * @returns {String} the Soundfont file url\n * @example\n * var Soundfont = require('soundfont-player')\n * Soundfont.nameToUrl('marimba', 'mp3')\n */\nfunction nameToUrl (name, sf, format) {\n format = format === 'ogg' ? format : 'mp3'\n sf = sf === 'FluidR3_GM' ? sf : 'MusyngKite'\n return 'https://gleitz.github.io/midi-js-soundfonts/' + sf + '/' + name + '-' + format + '.js'\n}\n\n// In the 1.0.0 release it will be:\n// var Soundfont = {}\nvar Soundfont = require('./legacy')\nSoundfont.instrument = instrument\nSoundfont.nameToUrl = nameToUrl\n\nif (typeof module === 'object' && module.exports) module.exports = Soundfont\nif (typeof window !== 'undefined') window.Soundfont = Soundfont\n","// See https://github.com/danigb/soundfont-player\n// for more documentation on prop options.\nimport { useCallback, useEffect, useState } from 'react'\nimport Soundfont from 'soundfont-player'\nimport { Note } from 'tonal'\n\n// Type for the MIDI global object\ninterface MIDIGlobal {\n Soundfont: Record<string, Record<string, string>>\n}\n\n// Extend global interfaces to include MIDI\ndeclare global {\n interface Window {\n MIDI?: MIDIGlobal\n }\n var MIDI: MIDIGlobal | undefined\n namespace globalThis {\n var MIDI: MIDIGlobal | undefined\n }\n}\n// Ensure MIDI global exists before importing soundfont\nif (typeof window !== 'undefined') {\n if (!window.MIDI) {\n window.MIDI = { Soundfont: {} }\n }\n}\n\n// Also ensure it's available globally (not just on window)\nif (typeof globalThis !== 'undefined') {\n if (!globalThis.MIDI) {\n globalThis.MIDI = window.MIDI || { Soundfont: {} }\n }\n}\n\n// Also set it on the global object for Node.js compatibility\nif (typeof global !== 'undefined') {\n if (!global.MIDI) {\n global.MIDI = window.MIDI || { Soundfont: {} }\n }\n}\n\n// Import bundled soundfont to avoid CSP issues in Electron apps\n// NOTE: This adds ~2.2MB to the bundle size. Currently all consumers need piano,\n// but if future web apps don't need audio, consider making this import conditional\n// or implementing lazy loading to reduce bundle size for audio-free use cases.\nimport '../soundfonts/acoustic_grand_piano-mp3'\n\nconst isDefined = <T,>(item: T) =>\n item !== undefined && item !== null && !Number.isNaN(item)\n\ntype SoundfontProviderProps = {\n audioContext: AudioContext\n format?: 'mp3' | 'ogg'\n hostname?: string\n instrumentName?: Soundfont.InstrumentName\n onChange?: (midiNumber: number) => void\n render: (props: {\n isLoading: boolean\n playNote: (midiNumber: number) => void\n stopNote: (midiNumber: number) => void\n stopAllNotes: () => void\n }) => React.ReactNode\n soundfont?: 'MusyngKite' | 'FluidR3_GM'\n}\n\nconst SoundfontProvider = (props: SoundfontProviderProps) => {\n const {\n audioContext,\n format,\n hostname,\n instrumentName,\n onChange,\n render,\n soundfont,\n } = props\n\n const [isLoading, setIsLoading] = useState(true)\n const [activeAudioNodes, setActiveAudioNodes] = useState<\n Record<number, Soundfont.Player>\n >({})\n const [instrument, setInstrument] = useState<Soundfont.Player | null>(null)\n\n const loadInstrument = useCallback(\n (nm: Soundfont.InstrumentName) => {\n // Re-trigger loading state\n setInstrument(null)\n\n if (isDefined(hostname)) {\n // pull from an url\n Soundfont.instrument(audioContext, nm, {\n format,\n soundfont,\n nameToUrl: (name: string, sf: string, fmt: string) =>\n `${hostname}/${sf}/${name}-${fmt}.js`,\n }).then((newInstrument) => {\n setInstrument(newInstrument)\n })\n } else if (instrumentName) {\n // the host app has already injected the soundfont into global space\n // Try to create a player directly from our bundled soundfont data\n const soundfontData = window.MIDI?.Soundfont?.[instrumentName]\n if (soundfontData) {\n // MIDI note number to note name conversion using Tonal\n const midiToNoteName = (midiNumber: number | string): string => {\n const num =\n typeof midiNumber === 'string'\n ? Number.parseInt(midiNumber, 10)\n : midiNumber\n return Note.fromMidi(num)\n }\n\n // Create a simple player that can play notes from our bundled data\n const player = {\n play: (note: string | number, velocity?: number) => {\n // Convert MIDI note number to note name if needed\n const noteName = midiToNoteName(note)\n const noteData = soundfontData[noteName]\n if (noteData) {\n // Create audio from the data URL\n const audio = new Audio(noteData)\n audio.volume = (velocity || 127) / 127\n audio.play()\n\n // Return a compatible object with stop method\n return {\n stop: () => {\n audio.pause()\n audio.currentTime = 0\n },\n }\n }\n return null\n },\n stop: () => {\n // Simple stop implementation\n },\n }\n setInstrument(player as Soundfont.Player)\n setIsLoading(false)\n } else {\n setIsLoading(false)\n }\n } else {\n // sound must be disabled\n setIsLoading(false)\n }\n },\n [audioContext, format, hostname, instrumentName, soundfont],\n )\n\n useEffect(() => {\n if (instrumentName) {\n loadInstrument(instrumentName)\n }\n }, [instrumentName, loadInstrument])\n\n useEffect(() => {\n if (isDefined(instrumentName)) {\n setIsLoading(!instrument)\n }\n }, [instrument, instrumentName])\n\n const playNote = (midiNumber: number) => {\n if (instrument) {\n audioContext.resume().then(() => {\n const audioNode = instrument.play(String(midiNumber))\n setActiveAudioNodes((prev) => ({ ...prev, [midiNumber]: audioNode }))\n })\n }\n }\n\n const stopNote = (midiNumber: number) => {\n audioContext.resume().then(() => {\n if (!activeAudioNodes[midiNumber]) {\n return\n }\n const audioNode = activeAudioNodes[midiNumber]\n audioNode.stop()\n setActiveAudioNodes((prev) => {\n const { [midiNumber]: _, ...rest } = prev\n return rest\n })\n })\n onChange?.(midiNumber)\n }\n\n // Clear any residual notes that don't get called with stopNote\n const stopAllNotes = () => {\n audioContext.resume().then(() => {\n const nodes = Object.values(activeAudioNodes)\n for (const node of nodes) {\n if (node) {\n node.stop()\n }\n }\n setActiveAudioNodes(nodes)\n })\n }\n\n return render({\n isLoading,\n playNote,\n stopNote,\n stopAllNotes,\n })\n}\n\n// https://gleitz.github.io/midi-js-soundfonts/MusyngKite/acoustic_grand_piano-mp3.js\n// https://gleitz.github.io/midi-js-soundfonts/FluidR3_GM/.js\n\nexport { SoundfontProvider }\n\nexport type { SoundfontProviderProps }\n","import type { PianoProps } from 'lib/pickers/PianoPicker'\nimport type Soundfont from 'soundfont-player'\nimport { /* Midi, */ Note } from 'tonal'\nimport { Piano as ReactPiano } from 'zds-react-piano'\nimport type { TooltipProps } from './DefaultTooltip'\nimport { SoundfontProvider } from './SoundFontProvider'\n\ntype PianoMidiNote = {\n accidental: boolean\n left: number\n midiNumber: number\n width: number\n}\n\nconst baseNotes = [\n 'C',\n 'C#',\n 'D',\n 'D#',\n 'E',\n 'F',\n 'F#',\n 'G',\n 'G#',\n 'A',\n 'A#',\n 'B',\n]\n\n// const { midiToFreq, midiToNoteName } = Midi\n\n// console.log(Note.names(), Note.midi('C4'))\n\n// const firstNote = 21\n// const lastNote = 108\nconst numNotes = 12\n\nconst whiteNotes = numNotes * 0.7 // approx\n\nconst audioContext = new window.AudioContext()\n\ntype OctavePlayerProps = PianoProps & {\n disabled?: boolean\n height: number\n octave: number\n width: number\n}\n\nconst BaseOctavePlayer = ({\n octave,\n height,\n width,\n ...rest\n}: OctavePlayerProps) => {\n const keyWidth = width / whiteNotes + 2\n const keyWidthToHeight = keyWidth / height\n\n const firstNote = Note.midi(baseNotes[0] + String(octave)) || 0\n const lastNote =\n Note.midi(baseNotes[baseNotes.length - 1] + String(octave)) || 0\n\n return (\n <div>\n <ReactPiano\n keyWidthToHeight={keyWidthToHeight}\n noteRange={{ first: firstNote, last: lastNote }}\n width={width}\n {...rest}\n />\n </div>\n )\n}\n\ntype WithProviderProps = PianoProps & {\n format?: 'mp3' | 'ogg'\n height: number\n hostname?: string\n instrumentName?: Soundfont.InstrumentName\n octave?: number\n onChange?: (note: number) => void\n onClick?: (note: number) => void\n onDoubleClick?: (note: number) => void\n onKeyMouseEnter?: (note: PianoMidiNote) => void\n onKeyMouseLeave?: (note: number) => void\n selectedNotes?: number[]\n soundfont?: 'MusyngKite' | 'FluidR3_GM'\n Tooltip?: TooltipProps\n width: number\n}\n\nconst WithProvider = ({\n format,\n height,\n hostname,\n instrumentName,\n octave = 4,\n onChange,\n onClick,\n onDoubleClick,\n onKeyMouseEnter,\n onKeyMouseLeave,\n selectedNotes,\n soundfont,\n Tooltip,\n width,\n}: WithProviderProps) => (\n <SoundfontProvider\n {...{\n audioContext,\n format,\n hostname,\n instrumentName,\n onChange,\n soundfont,\n }}\n render={({ isLoading, playNote, stopNote }) => (\n <BaseOctavePlayer\n disabled={isLoading}\n {...{\n height,\n octave,\n onClick,\n onDoubleClick,\n onKeyMouseEnter,\n onKeyMouseLeave,\n playNote,\n selectedNotes,\n stopNote,\n Tooltip,\n width,\n }}\n />\n )}\n />\n)\n\nexport { WithProvider as OctavePlayer }\n\nexport type { OctavePlayerProps, PianoMidiNote, WithProviderProps }\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nconst MEASUREMENT_ELEMENT_ID = '__react_svg_text_measurement_id'\n\ntype WordsByLine = {\n words: string[]\n width: number\n showLine: boolean\n}\n\nconst calculateWordsByLines = (\n text: string,\n wordWidths: WordWidths,\n maxWidth: number,\n maxHeight: number,\n) => {\n const { lineHeight, spaceWidth, wordsWithComputedWidth } = wordWidths\n\n return text.split(/\\s+/).reduce((result: WordsByLine[], word) => {\n const wordWidth = wordsWithComputedWidth[word]\n const currentLine = result[result.length - 1]\n if (currentLine && currentLine.width + wordWidth + spaceWidth < maxWidth) {\n // Word can be added to an existing line\n currentLine.words.push(word)\n currentLine.width += wordWidth + spaceWidth\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n const newLine: WordsByLine = {\n words: [word],\n width: wordWidth,\n showLine: maxHeight\n ? lineHeight * (result.length + 1) < maxHeight\n : true,\n }\n result.push(newLine)\n }\n return result\n }, [])\n}\n\ntype WordWidths = {\n wordsWithComputedWidth: Record<string, number>\n spaceWidth: number\n lineHeight: number\n}\n\nconst calculateWordWidths = (\n style?: CSSStyleDeclaration,\n textNode?: SVGGraphicsElement | null,\n text?: string,\n): WordWidths | undefined => {\n if (style && textNode) {\n // biome-ignore lint/complexity/noForEach: <explanation>\n Array.from(style).forEach(key =>\n textNode.style.setProperty(\n key,\n style.getPropertyValue(key),\n style.getPropertyPriority(key),\n ),\n )\n const wordArray = [...new Set(String(text).split(/\\s+/))]\n const wordsWithComputedWidth = wordArray.reduce((wordMap, word) => {\n textNode.textContent = word\n // biome-ignore lint/performance/noAccumulatingSpread: <explanation>\n return { ...wordMap, [word]: textNode.getBBox().width }\n }, {})\n\n textNode.textContent = '\\u00A0'\n\n const spaceWidth =\n (textNode as SVGTextContentElement)?.getComputedTextLength?.() || 8\n const lineHeight = textNode.getBBox().height\n\n textNode.setAttribute('style', '')\n return { wordsWithComputedWidth, spaceWidth, lineHeight }\n }\n return undefined\n}\n\ntype TextProps = Partial<HTMLOrSVGElement> & {\n className?: string\n dx?: number\n dy?: number\n maxHeight?: number\n maxWidth?: number\n transform?: string\n text: string\n textAnchor?: React.CSSProperties['textAnchor']\n verticalAnchor?: 'start' | 'middle' | 'end'\n x?: number\n y?: number\n}\n\nconst SvgText = (props: TextProps) => {\n const {\n className = '',\n dx = 0,\n dy = 0,\n maxHeight = 1000,\n maxWidth = 1000,\n // textAnchor = 'start',\n text = '',\n verticalAnchor = 'start',\n x = 0,\n y = 0,\n transform = '',\n ...rest\n } = props\n const [wordWidths, setWordWidths] = useState<WordWidths>()\n const [textLines, setTextLines] = useState<WordsByLine[]>([])\n const [style, setComputedStyle] = useState<CSSStyleDeclaration>()\n const measureRef = useRef<SVGSVGElement | HTMLElement>({} as HTMLElement)\n\n const displayedLines: WordsByLine[] = useMemo(() => {\n const result = textLines.filter(({ showLine }) => showLine)\n return result.length\n ? result\n : text\n .split(/\\n/)\n .map(line => ({ words: [line], width: 0, showLine: true }))\n }, [textLines, text])\n\n const ref: React.LegacyRef<SVGTextElement> = useCallback(\n (node: SVGTextElement | null) => {\n setComputedStyle(\n node !== null ? window.getComputedStyle(node) : undefined,\n )\n },\n [],\n )\n\n useEffect(() => {\n const el = document.getElementById(MEASUREMENT_ELEMENT_ID)\n if (el === null) {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')\n svg.setAttribute('id', MEASUREMENT_ELEMENT_ID)\n document.body.appendChild(svg)\n svg.appendChild(\n document.createElementNS('http://www.w3.org/2000/svg', 'text'),\n )\n measureRef.current = svg\n return () => {\n document.body.removeChild(svg)\n }\n }\n measureRef.current = el\n }, [])\n\n useEffect(() => {\n const wordWithWidths = calculateWordWidths(\n style,\n measureRef.current as SVGGraphicsElement | null,\n text,\n )\n\n setWordWidths(wordWithWidths)\n }, [text, style])\n\n useEffect(() => {\n if (maxWidth && wordWidths) {\n const lines = text\n .split(/\\n/)\n .flatMap(line =>\n calculateWordsByLines(line, wordWidths, maxWidth, maxHeight),\n )\n\n setTextLines(lines)\n }\n }, [maxHeight, maxWidth, wordWidths, text])\n\n const startDy = useMemo(() => {\n if (wordWidths?.lineHeight) {\n switch (verticalAnchor) {\n case 'start':\n return wordWidths.lineHeight\n\n case 'middle':\n return -(((displayedLines.length - 1) * wordWidths.lineHeight) / 2)\n\n default:\n return -(displayedLines.length - 1) * wordWidths.lineHeight\n }\n }\n return 0\n }, [displayedLines.length, verticalAnchor, wordWidths?.lineHeight])\n\n return (\n <text\n className={className}\n ref={ref}\n dx={dx}\n dy={dy}\n x={x}\n y={y}\n // textAnchor={textAnchor}\n transform={transform}\n {...rest}>\n <>\n {displayedLines.map((line, idx) => (\n <tspan\n dx={x + dx}\n dy={idx === 0 ? startDy + dy : wordWidths?.lineHeight || 0}\n key={idx}\n x={0}>\n {line.words.join(' ')}\n </tspan>\n ))}\n {textLines.length && displayedLines.length !== textLines.length && (\n <>\n <tspan>...</tspan>\n <title>{text}</title>\n </>\n )}\n </>\n </text>\n )\n}\n\nexport { SvgText, MEASUREMENT_ELEMENT_ID }\n\nexport type { TextProps, WordWidths, WordsByLine }\n","import {\n Children,\n type JSX,\n forwardRef,\n isValidElement,\n useCallback,\n useMemo,\n} from 'react'\nimport ReactSelect, {\n type GroupBase,\n type IndicatorsContainerProps,\n components as originalComponents,\n type PlaceholderProps,\n type SelectComponentsConfig,\n type SelectInstance,\n type SingleValue,\n type StylesConfig,\n type ValueContainerProps,\n} from 'react-select'\nimport { omit } from '../utils'\n\nconst noSelection = 255\n\nconst { IndicatorsContainer, Placeholder, ValueContainer } = originalComponents\n\ntype PassedSelectProps = {\n actionButton?: React.ReactNode\n inputValue?: string\n placeholder?: React.ReactNode\n}\n\ntype Option<T> = {\n label: React.ReactNode\n value: T\n}\n\nconst noSelectionOption: Option<number> = {\n label: '--',\n value: noSelection,\n}\n\ninterface CustomIndicatorsContainerProps<T>\n extends Omit<IndicatorsContainerProps<Option<T>, false>, 'selectProps'> {\n children: React.ReactNode\n selectProps: IndicatorsContainerProps<Option<T>, false>['selectProps'] &\n PassedSelectProps\n}\n\nconst CustomIndicatorsContainer = <T,>(\n props: CustomIndicatorsContainerProps<T>,\n) => {\n const { children, ...rest } = props\n const actionButton = rest.selectProps?.actionButton\n\n return (\n <IndicatorsContainer {...rest}>\n <div\n onMouseDown={e => {\n e.stopPropagation()\n e.preventDefault()\n }}\n style={{ display: 'flex' }}>\n {actionButton}\n {children}\n </div>\n </IndicatorsContainer>\n )\n}\n\ntype CustomValueContainerProps<T> = (\n | ValueContainerProps<Option<T>, false>\n | PlaceholderProps<Option<T>, false>\n) & {\n children: React.ReactNode\n hasValue?: boolean\n isFocused?: boolean\n}\n\nconst CustomValueContainer = <T,>({\n children,\n ...props\n}: CustomValueContainerProps<T>) => (\n <ValueContainer {...props}>\n <Placeholder\n {...props}\n innerProps={props.innerProps || {}}\n className={props.hasValue || props.selectProps.inputValue ? 'shrunk' : ''}\n isFocused={props.isFocused ?? false}>\n {props.selectProps.placeholder}\n </Placeholder>\n {Children.map(children, child =>\n isValidElement(child) && child.type !== Placeholder ? child : null,\n )}\n </ValueContainer>\n)\n\ntype SelectProps<T> = SelectComponentsConfig<\n Option<T>,\n false,\n GroupBase<Option<T>>\n> & {\n actionButton?: React.ReactNode\n className?: string\n components?: object\n disabled?: boolean\n filterOptions?: (candidate: Option<T>, inputValue: string) => boolean\n formatOptionLabel?: (\n option: Option<unknown>,\n { context }: { context: 'menu' | 'value' },\n ) => React.ReactNode\n isSearchable?: boolean\n label?: string\n menuPortalTarget?: HTMLElement | null\n menuPosition?: 'fixed' | 'absolute'\n menuShouldScrollIntoView?: boolean\n onChange: (value: Option<T>['value']) => void\n options: Option<T>[] | { options: Option<T>[] }[]\n preserveMenuWidth?: boolean\n selectProps?: PassedSelectProps\n shrinkLabel?: boolean\n value?: Option<T>['value']\n}\n\nconst Select = forwardRef(\n <T,>(\n props: SelectProps<T>,\n ref: React.ForwardedRef<\n SelectInstance<Option<T>, false, GroupBase<Option<T>>>\n >,\n ) => {\n const {\n components,\n disabled,\n label,\n onChange,\n options = [],\n preserveMenuWidth,\n shrinkLabel,\n value,\n ...rest\n } = props\n\n const handleChange = useCallback(\n (option: SingleValue<Option<unknown>>) => {\n if (option) {\n onChange((option as Option<T>).value)\n }\n },\n [onChange],\n )\n\n const flatOptionsList = options.reduce<Option<T>[]>((acc, entry) => {\n if ('options' in entry) {\n return acc.concat(entry.options)\n }\n return acc.concat(entry)\n }, [])\n\n const selectedOption =\n flatOptionsList.find(option => value === option.value) || undefined\n\n const styles: unknown = useMemo(() => {\n const base = preserveMenuWidth\n ? {\n menu: (base: Record<string, unknown>) => omit('width')(base),\n menuList: (base: object) => ({\n ...base,\n overflowX: 'hidden',\n }),\n option: (base: object) => ({\n ...base,\n whiteSpace: 'nowrap',\n paddingRight: 10,\n }),\n }\n : {}\n\n return shrinkLabel\n ? {\n ...base,\n container: (provided: object /* , state */) => ({\n ...provided,\n marginTop: 10,\n }),\n placeholder: (\n _provided: object,\n state: PlaceholderProps<Option<T>, false>,\n ) => ({\n position: 'absolute',\n left: state.hasValue || state.selectProps.inputValue ? -2 : '4%',\n top: state.hasValue || state.selectProps.inputValue ? -12 : '50%',\n transition: 'top 0.1s, font-size 0.1s, color 0.1s',\n fontSize: (state.hasValue || state.selectProps.inputValue) && 13,\n }),\n valueContainer: (provided: object /* , state */) => ({\n ...provided,\n overflow: 'visible',\n }),\n }\n : {\n ...base,\n }\n }, [preserveMenuWidth, shrinkLabel])\n\n return shrinkLabel ? (\n <div className=\"zds-pickers__container\">\n <ReactSelect\n {...rest}\n classNamePrefix=\"zds-pickers\"\n components={{\n IndicatorsContainer: CustomIndicatorsContainer,\n ValueContainer: CustomValueContainer,\n ...components,\n }}\n isDisabled={disabled}\n onChange={handleChange}\n options={flatOptionsList}\n placeholder={label}\n // biome-ignore lint/suspicious/noExplicitAny: <explanation>\n ref={ref as React.Ref<any>}\n styles={\n styles as StylesConfig<\n Option<unknown>,\n false,\n GroupBase<Option<unknown>>\n >\n }\n value={selectedOption}\n />\n </div>\n ) : (\n <div className=\"zds-pickers__container\">\n {Boolean(label) && <span className=\"zds-pickers__label\">{label}</span>}\n <ReactSelect\n {...rest}\n classNamePrefix=\"zds-pickers\"\n components={{\n IndicatorsContainer: CustomIndicatorsContainer,\n ...components,\n }}\n isDisabled={disabled}\n onChange={handleChange}\n options={flatOptionsList}\n // biome-ignore lint/suspicious/noExplicitAny: <explanation>\n ref={ref as React.Ref<any>}\n styles={\n styles as StylesConfig<\n Option<unknown>,\n false,\n GroupBase<Option<unknown>>\n >\n }\n value={selectedOption}\n />\n </div>\n )\n },\n) as <T>(\n props: SelectProps<T> & {\n ref?: React.ForwardedRef<\n SelectInstance<Option<T>, false, GroupBase<Option<T>>>\n >\n },\n) => JSX.Element\n\nexport { noSelection, noSelectionOption, Select }\n\nexport type { Option, SelectProps }\n","import { forwardRef } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { changeControllerOptions } from '../midi/ccValues'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype CCPickerProps = Omit<SelectProps<number>, 'options'>\n\ntype CCPickerRef = SelectInstance<\n Option<number>,\n false,\n GroupBase<Option<number>>\n>\n\nconst CCPicker = forwardRef<\n SelectInstance<Option<number>, false, GroupBase<Option<number>>>,\n CCPickerProps\n>((props, ref) => (\n <Select\n {...props}\n options={changeControllerOptions}\n ref={ref}\n />\n))\n\nexport { CCPicker }\n\nexport type { CCPickerProps, CCPickerRef }\n","import cl from 'classnames'\nimport { forwardRef, useCallback, useEffect, useState } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { arraySequence } from '../utils'\nimport { Select, noSelection } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype InternalValue = number | 'separator'\n// type ExternalValue = number\n\ntype ChannelMappingOption = Option<InternalValue>\n\nconst defaultOptions: ChannelMappingOption[] = arraySequence(16).map(value => ({\n value,\n label: value,\n}))\n\ninterface ChannelMappingPickerProps\n extends Omit<SelectProps<InternalValue>, 'options'> {\n channels: Option<number>[]\n className?: string\n filterOptions?: (\n candidate: Option<InternalValue>,\n inputValue: string,\n ) => boolean\n value: number\n onChange: (value: InternalValue) => void\n}\n\ntype ChannelMappingPickerRef = SelectInstance<\n Option<number>,\n false,\n GroupBase<Option<number>>\n>\n\ntype FormatOptionLabelFunction = NonNullable<\n SelectProps<InternalValue>['formatOptionLabel']\n>\n\nconst ChannelMappingPicker = forwardRef<\n SelectInstance<\n Option<InternalValue>,\n false,\n GroupBase<Option<InternalValue>>\n >,\n ChannelMappingPickerProps\n>(({ channels, className, ...rest }, ref) => {\n const [options, setOptions] = useState<Option<InternalValue>[]>([])\n\n const formatOptionLabel: FormatOptionLabelFunction = useCallback(\n ({ value, label }, { context }) => {\n if (value === 'separator') {\n return <span className=\"zds-mappings-user-mapping\">{label}</span>\n }\n\n if (typeof value !== 'number') return null\n\n const mapping = channels[value]\n\n return mapping ? (\n <span className=\"mapping-entry\">\n <b>\n {value !== noSelection && (\n <>\n {value + 1}\n {context === 'value' && ' -'}\n </>\n )}\n </b>\n <span className=\"mapping-entry-label\">{mapping.label}</span>\n </span>\n ) : (\n <span className=\"mapping-entry empty-mapping-entry\">\n <b>\n {value !== noSelection && (\n <>\n {value + 1}\n {context === 'value' && ' -'}\n </>\n )}\n </b>\n <span className=\"mapping-entry-label\">no mapping</span>\n </span>\n )\n },\n [channels],\n )\n\n useEffect(() => {\n const result = defaultOptions.sort(\n (a: ChannelMappingOption, b: ChannelMappingOption) => {\n if (\n typeof a.value === 'number' &&\n typeof b.value === 'number' &&\n channels[a.value] &&\n !channels[b.value]\n ) {\n return -1\n }\n\n if (\n typeof a.value === 'number' &&\n typeof b.value === 'number' &&\n !channels[a.value] &&\n channels[b.value]\n ) {\n return 1\n }\n\n if (typeof a.value === 'number' && typeof b.value === 'number') {\n return a.value - b.value\n }\n return 0\n },\n )\n\n const numFilled = result.filter(\n ({ value }) =>\n (typeof value === 'number' && !!channels[value]) ||\n value === noSelection,\n ).length\n\n const separatorExists = result.some(({ value }) => value === 'separator')\n\n if (numFilled && numFilled < 16 && !separatorExists) {\n // insert a separator after the count of filled items\n result.splice(numFilled, 0, { label: <hr />, value: 'separator' })\n }\n\n setOptions(result)\n }, [channels])\n\n return (\n <Select<InternalValue>\n {...rest}\n className={cl(className, 'channel-mapping-picker')}\n formatOptionLabel={formatOptionLabel}\n options={options}\n ref={ref}\n />\n )\n})\n\nexport { ChannelMappingPicker }\n\nexport type {\n ChannelMappingOption,\n ChannelMappingPickerProps,\n ChannelMappingPickerRef,\n}\n","import cl from 'classnames'\nimport { forwardRef, useCallback } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { arraySequence } from '../utils'\nimport { Select } from './Select'\nimport { type Option, type SelectProps, noSelection } from './Select'\n\ntype Channel =\n | 0\n | 1\n | 2\n | 3\n | 4\n | 5\n | 6\n | 7\n | 8\n | 9\n | 10\n | 11\n | 12\n | 13\n | 14\n | 15\n | typeof noSelection\n\ninterface FormatOptionLabelContext {\n context: 'menu' | 'value'\n}\n\ntype ChannelPickerProps = Omit<SelectProps<Channel>, 'options'>\n\ntype ChannelPickerRef = SelectInstance<\n Option<Channel>,\n false,\n GroupBase<Option<Channel>>\n>\n\nconst options: Option<Channel>[] = arraySequence(16).map(value => ({\n value: value as Channel,\n label: `Channel ${value + 1}`,\n}))\n\nconst filterOptions = (option: Option<Channel>, input: string) => {\n // console.log(option, input)\n\n if (input) {\n return String(option.label).toLowerCase().includes(input.toLowerCase())\n }\n return true\n}\n\nconst ChannelPicker = forwardRef<\n SelectInstance<Option<Channel>, false, GroupBase<Option<Channel>>>,\n ChannelPickerProps\n>(({ className, value = noSelection, ...rest }, ref) => {\n const formatOptionLabel = useCallback(\n (option: Option<unknown>, { context }: FormatOptionLabelContext) => {\n if (value === undefined) {\n return '--'\n }\n return context === 'value'\n ? option.label\n : Number.parseInt(String(option.value)) + 1 // menu, e.g. the list of options\n },\n [value],\n )\n\n return (\n <Select\n {...rest}\n className={cl(className, 'channel-picker')}\n filterOptions={filterOptions}\n formatOptionLabel={formatOptionLabel}\n options={options}\n value={value}\n ref={ref}\n />\n )\n})\n\nexport { ChannelPicker }\n\nexport type { Channel, ChannelPickerProps, ChannelPickerRef }\n","import { useCallback } from 'react'\nimport { OctavePlayer, type OctavePlayerProps } from '../other/OctavePlayer'\nimport { noSelection } from './Select'\n\ntype KeyPickerProps = Omit<OctavePlayerProps, 'selectedNotes' | 'onClick'> & {\n value: number\n onChange: (value: number) => void\n disabled?: boolean\n height?: number\n width?: number\n octave?: number\n}\n\nconst KeyPicker = (props: KeyPickerProps) => {\n const {\n value,\n onChange,\n disabled = false,\n height = 100,\n width = 300,\n octave = 4,\n ...rest\n } = props\n\n const handleKeyClick = useCallback(\n (note: number) => {\n if (disabled) return\n onChange(note)\n },\n [disabled, onChange],\n )\n\n // Only highlight the note if it's a valid selection and within the octave range\n // Octave 4 = C4 (60) to B4 (71)\n const octaveStart = 60 + (octave - 4) * 12\n const octaveEnd = octaveStart + 11\n const shouldHighlight =\n value !== noSelection && value >= octaveStart && value <= octaveEnd\n\n return (\n <OctavePlayer\n {...rest}\n selectedNotes={shouldHighlight ? [value] : []}\n disabled={disabled}\n height={height}\n width={width}\n octave={octave}\n onClick={handleKeyClick}\n instrumentName=\"acoustic_grand_piano\"\n />\n )\n}\n\nexport { KeyPicker }\nexport type { KeyPickerProps }\n","import { useEffect, useState } from 'react'\n\nconst useStateWithDynamicDefault = <T>(defaultVal: T) => {\n const [state, setState] = useState<T>(defaultVal)\n\n useEffect(() => {\n setState(defaultVal)\n }, [defaultVal])\n\n return [state, setState] as const\n}\n\nexport default useStateWithDynamicDefault\n","module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=3)}([function(e,t){e.exports=require(\"react\")},function(e,t){e.exports=require(\"prop-types\")},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r,o=n(0);var i=((r=o)&&r.__esModule?r:{default:r}).default.createContext(null);t.default=i},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.SvgLoader=t.SvgProxy=void 0;var r=i(n(4)),o=i(n(8));function i(e){return e&&e.__esModule?e:{default:e}}t.SvgProxy=o.default,t.SvgLoader=r.default},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=s(n(0)),a=s(n(1)),l=s(n(5)),u=s(n(2));function s(e){return e&&e.__esModule?e:{default:e}}var c=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));if(n.mounted=!1,n.state={svg:null,svgCount:0},null==i.default.Fragment)throw new Error(\"This version of React doesn't support Fragments, please update it\");return n.onSVGReady=n.onSVGReady.bind(n),n}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,[{key:\"componentDidMount\",value:function(){this.mounted=!0}},{key:\"componentWillUnmount\",value:function(){this.mounted=!1}},{key:\"onSVGReady\",value:function(e){var t=this;setTimeout((function(){t.mounted&&(t.setState(r({},t.state,{svg:e,svgCount:t.state.svgCount+1})),t.props.onSVGReady(e))}),0)}},{key:\"render\",value:function(){var e=this.props,t=e.path,n=(e.onSVGReady,e.children,e.svgXML),o=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,[\"path\",\"onSVGReady\",\"children\",\"svgXML\"]),a=null!=this.state.svg?this.props.children:null;return i.default.createElement(i.default.Fragment,null,i.default.createElement(l.default,r({path:t,callback:this.onSVGReady,svgXML:n},o)),i.default.createElement(u.default.Provider,{value:{path:t,svgCount:this.state.svgCount,svg:this.state.svg}},a))}}]),t}(i.default.Component);t.default=c,c.propTypes={path:a.default.string,svgXML:a.default.string,onSVGReady:a.default.func,style:a.default.object,children:a.default.any},c.defaultProps={path:null,svgXML:null,onSVGReady:function(){},style:null}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=l(n(1)),a=l(n(0));function l(e){return e&&e.__esModule?e:{default:e}}function u(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}var s=\"undefined\"!=typeof window?n(6):void 0,c=function(e){function t(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var e=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.refCallback=e.refCallback.bind(e),e}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,[{key:\"componentDidUpdate\",value:function(e){this.props.path===e.path&&this.props.svgXML===e.svgXML||(this.container&&(this.container.innerHTML=\"\"),this.renderSVG(this.props))}},{key:\"refCallback\",value:function(e){e&&(this.container=e,this.renderSVG())}},{key:\"renderSVG\",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props,n=this.container,r=t.callback,o=(t.path,t.svgXML),i=(t.className,u(t,[\"callback\",\"path\",\"svgXML\",\"className\"]));s(n,{each:function(t){if(t)throw new Error(t);r(e.container)},svgXML:o},(function(){n&&i&&Object.keys(i).reduce((function(e,t){return\"style\"!==t&&e.setAttribute(t,i[t]),n}),n)}))}},{key:\"render\",value:function(){var e=this.props,t=(e.callback,e.path,e.svgXML,u(e,[\"callback\",\"path\",\"svgXML\"]));return a.default.createElement(\"svg\",r({ref:this.refCallback,\"data-src\":this.props.path},t))}}]),t}(a.default.Component);t.default=c,c.defaultProps={callback:function(){},path:null,svgXML:null},c.propTypes={callback:i.default.func,path:i.default.string,svgXML:i.default.string}},function(e,t,n){\"use strict\";(function(e){var r,o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e};\n/**\n * Changes:\n * - Don't replace the node. Justs its innerHTML\n * Adapted from:\n * Original Copyright notice ---------------------------\n * SVGInjector v1.1.3 - Fast, caching, dynamic inline SVG DOM injection library\n * https://github.com/iconic/SVGInjector\n *\n * Copyright (c) 2014-2015 Waybury <hello@waybury.com>\n * @license MIT\n *\n */\n!function(i,a){var l=\"file:\"===i.location.protocol;a.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\",\"1.1\");var u=Array.prototype.forEach||function(e,t){if(null==this||\"function\"!=typeof e)throw new TypeError;var n,r=this.length>>>0;for(n=0;n<r;++n)n in this&&e.call(t,this[n],n,this)},s={},c=0,f=[],p=[],d=function(e){return e.cloneNode(!0)},v=function(e,t){p[e]=p[e]||[],p[e].push(t)},h=function(e,t){if(void 0!==s[e])s[e]instanceof SVGSVGElement?t(d(s[e])):v(e,t);else{if(!i.XMLHttpRequest)return t(\"Browser does not support XMLHttpRequest\"),!1;s[e]={},v(e,t);var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===n.readyState){if(404===n.status||null===n.responseXML)return t(\"Unable to load SVG file: \"+e),l&&t(\"Note: SVG injection ajax calls do not work locally without adjusting security setting in your browser. Or consider using a local webserver.\"),t(),!1;if(!(200===n.status||l&&0===n.status))return t(\"There was a problem injecting the SVG: \"+n.status+\" \"+n.statusText),!1;if(n.responseXML instanceof Document)s[e]=n.responseXML.documentElement;else if(DOMParser&&DOMParser instanceof Function){var r;try{r=(new DOMParser).parseFromString(n.responseText,\"text/xml\")}catch(e){r=void 0}if(!r||r.getElementsByTagName(\"parsererror\").length)return t(\"Unable to parse SVG file: \"+e),!1;s[e]=r.documentElement}!function(e){for(var t=0,n=p[e].length;t<n;t++)!function(t){setTimeout((function(){p[e][t](d(s[e]))}),0)}(t)}(e)}},n.open(\"GET\",e),n.overrideMimeType&&n.overrideMimeType(\"text/xml\"),n.send()}},y=function(e,t){if(void 0===t||\"string\"==typeof t)return!1;var n=e.getAttribute(\"id\");n&&t.setAttribute(\"id\",n);var r=e.getAttribute(\"title\");r&&t.setAttribute(\"title\",r);var o=[].concat(t.getAttribute(\"class\")||[],\"injected-svg\",e.getAttribute(\"class\")||[]).join(\" \");t.setAttribute(\"class\",function(e){for(var t={},n=(e=e.split(\" \")).length,r=[];n--;)t.hasOwnProperty(e[n])||(t[e[n]]=1,r.unshift(e[n]));return r.join(\" \")}(o));var i=e.getAttribute(\"style\");i&&t.setAttribute(\"style\",i);var a=[].filter.call(e.attributes,(function(e){return/^data-\\w[\\w\\-]*$/.test(e.name)}));u.call(a,(function(e){e.name&&e.value&&t.setAttribute(e.name,e.value)}));var l,s,p,d,v,h={clipPath:[\"clip-path\"],\"color-profile\":[\"color-profile\"],cursor:[\"cursor\"],filter:[\"filter\"],linearGradient:[\"fill\",\"stroke\"],marker:[\"marker\",\"marker-start\",\"marker-mid\",\"marker-end\"],mask:[\"mask\"],pattern:[\"fill\",\"stroke\"],radialGradient:[\"fill\",\"stroke\"]};Object.keys(h).forEach((function(e){l=e,p=h[e];for(var n=0,r=(s=t.querySelectorAll(\"defs \"+l+\"[id]\")).length;n<r;n++){var o;d=s[n].id,v=d+\"-\"+c,u.call(p,(function(e){for(var n=0,r=(o=t.querySelectorAll(\"[\"+e+'*=\"'+d+'\"]')).length;n<r;n++)o[n].setAttribute(e,\"url(#\"+v+\")\")})),s[n].id=v}})),t.removeAttribute(\"xmlns:a\");var y=t.querySelectorAll(\"style\");if(u.call(y,(function(e){e.textContent+=\"\"})),b(e,t),t.hasAttributes())for(var g=t.attributes,m=g.length-1;m>=0;m--)g[m].name+\"->\"+g[m].value,e.setAttribute(g[m].name,g[m].value);delete f[f.indexOf(e)],e=null,c++},b=function(e,t){if(e.innerHTML=t.innerHTML||\"\",!e.innerHTML){var n=a.createElement(\"div\"),r=\"<svg>\"+function(e){var t=new XMLSerializer;return Array.prototype.slice.call(e.childNodes).map((function(e){return t.serializeToString(e)})).join(\"\")}(t)+\"</svg>\";n.innerHTML=\"\"+r,e.textContent=\"\",Array.prototype.slice.call(n.childNodes[0].childNodes).forEach((function(t){e.appendChild(t)}))}},g=function(e,t,n,r){if(n){var o;try{o=(new DOMParser).parseFromString(n,\"text/xml\")}catch(e){o=void 0}if(!o||o.getElementsByTagName(\"parsererror\").length)return r(\"Unable to parse SVG file: \"+o.getElementsByTagName(\"parsererror\")[0].innerHTML),!1;y(e,o.documentElement),r()}else{var i=e.getAttribute(\"data-src\")||e.getAttribute(\"src\");if(e.setAttribute(\"src\",\"\"),-1!==f.indexOf(e))return;f.push(e),h(i,(function(t){y(e,t),r()}))}},m=function(e,t,n){(t=t||{}).pngFallback;var r=t.each,o=t.svgXML;if(void 0!==e.length){var i=0;u.call(e,(function(t){g(t,0,o,(function(){r&&\"function\"==typeof r&&r(),n&&e.length===++i&&n(i)}))}))}else e?g(e,0,o,(function(){r&&\"function\"==typeof r&&r(),n&&n(1),e=null})):n&&n(0)};\"object\"===o(e)&&\"object\"===o(e.exports)?e.exports=t=m:void 0===(r=function(){return m}.call(t,n,t,e))||(e.exports=r)}(window,document)}).call(this,n(7)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=l(n(0)),i=l(n(1)),a=l(n(2));function l(e){return e&&e.__esModule?e:{default:e}}var u=/(\\w+)_(\\S+)/,s={xlink:\"http://www.w3.org/1999/xlink\"},c=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.elemRefs=[],n.svgRef=null,n.path=null,n.originalValues={},n.onSvgUpdated=n.onSvgUpdated.bind(n),n.updateSvgElements=n.updateSvgElements.bind(n),n}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:\"componentDidMount\",value:function(){this.updateSvgElements(this.props)}},{key:\"componentDidUpdate\",value:function(e){this.props.selector!==e.selector&&(this.elemRefs=[]),this.updateSvgElements(this.props)}},{key:\"onSvgUpdated\",value:function(){this.updateSvgElements(this.props,!0)}},{key:\"updateSvgElements\",value:function(e,t){var n=this.svgRef;if(n&&(0===this.elemRefs.length||t)){var r=[].slice.apply(n.querySelectorAll(e.selector));0===r.length&&-1!==[\"svg\",\"root\"].indexOf(e.selector)&&r.push(n),e.onElementSelected&&r.length&&e.onElementSelected(1===r.length?r[0]:r),this.elemRefs=r}if(this.elemRefs)for(var o=Object.keys(e),i=0;i<o.length;i+=1){var a=o[i];if(!(-1!==[\"selector\",\"onElementSelected\"].indexOf(a))){var l=null,c=null,f=null,p=u.exec(a);p&&p[1]?(l=p[1],c=s[l],f=l+\":\"+p[2]):f=a;for(var d=0;d<this.elemRefs.length;d+=1){var v=this.elemRefs[d];if(\"function\"==typeof e[a])v[a.toLowerCase()]=e[a];else{if(\"string\"!=typeof e[a])return;null==this.originalValues[a]&&(this.originalValues[a]=v.getAttributeNS(c,f)||\"\");var h=e[a].replace(\"$ORIGINAL\",this.originalValues[a]);v.setAttributeNS(c,f,h),\"string\"==typeof e.children&&e.children.trim().length&&(v.textContent=e.children)}}}}}},{key:\"render\",value:function(){var e=this;return o.default.createElement(a.default.Consumer,null,(function(t){var n=t.path,r=t.svg,o=t.svgCount;e.svgCount&&e.svgCount!==o?e.onSvgUpdated():(e.svgRef=r,e.path=n,e.svgCount=o)}))}}]),t}(o.default.Component);t.default=c,c.propTypes={selector:i.default.string.isRequired,onElementSelected:i.default.func},c.defaultProps={onElementSelected:function(){}}}]);","module.exports = require('./dist/index');","import React from 'react'\n\ntype InternalInputProps = {\n disabled?: boolean\n min: number\n max: number\n value: number\n step?: number\n inputRef: React.RefObject<HTMLInputElement>\n onChange: (val: number) => void\n style?: React.CSSProperties\n}\n\nclass InternalInput extends React.Component<InternalInputProps> {\n static defaultProps = {\n step: 1,\n }\n render() {\n const props = this.props\n const hideStyle = {}\n\n function onValChange(event: React.ChangeEvent<HTMLInputElement>) {\n props.onChange(Number(event.target.value))\n }\n\n const { value, min, max, step, onChange, inputRef, ...rest } = props\n return (\n <input\n ref={inputRef}\n value={value}\n step={step}\n onChange={onValChange}\n style={hideStyle}\n type=\"range\"\n min={min}\n max={max}\n {...rest}\n />\n )\n }\n}\n\nexport { InternalInput }\n","/** Note on viewbox/width\n * This methods only work when the pixels match the svg units.\n * when the viewbox is changed, or width is set they won't return\n * the correct results\n */\n/**\n * Returns the global coordinates of a position given\n * for a specific coordinate system\n * @param {*} svgdoc\n * @param {*} elem\n * @param {*} x\n * @param {*} y\n */\n// function toGlobalCoordinates(svgdoc: any, elem: any, x: number, y: number) {\n// var offset = svgdoc.getBoundingClientRect()\n// var matrix = elem.getScreenCTM()\n// return {\n// x: matrix.a * x + matrix.c * y + matrix.e - offset.left,\n// y: matrix.b * x + matrix.d * y + matrix.f - offset.top,\n// }\n// }\n\n/**\n * Converts a global position to a local one\n * @param {*} svgdoc\n * @param {*} elem\n * @param {*} x\n * @param {*} y\n */\n// function toLocalCoordinates(svgdoc: any, elem: any, x: number, y: number) {\n// const offset = svgdoc.getBoundingClientRect()\n// const matrix = elem.getScreenCTM().inverse()\n// return {\n// x: matrix.a * x + matrix.c * y + matrix.e - offset.left,\n// y: matrix.b * x + matrix.d * y + matrix.f - offset.top,\n// }\n// }\n\nfunction toRadians(angle: number) {\n return (angle * Math.PI) / 180\n}\n\nfunction getQuadrant(x: number, y: number) {\n if (x >= 0 && y >= 0) return 1\n if (x <= 0 && y >= 0) return 2\n if (x <= 0 && y <= 0) return 3\n if (x >= 0 && y <= 0) return 4\n return 1\n}\n\n/**\n * Returns the angle (degrees) given a point.\n * Assumes 0,0 as the center of the circle\n * @param {number} x\n * @param {number} y\n */\nfunction getAngleForPoint(x: number, y: number) {\n if (x === 0 && y === 0) return 0\n\n const angle = Math.atan(x / y)\n let angleDeg = (angle * 180) / Math.PI\n //The final value depends on the quadrant\n const quadrant = getQuadrant(x, y)\n\n if (quadrant === 1) {\n angleDeg = 90 - angleDeg\n }\n if (quadrant === 2) {\n angleDeg = 90 - angleDeg\n }\n if (quadrant === 3) {\n angleDeg = 270 - angleDeg\n }\n if (quadrant === 4) {\n angleDeg = 270 - angleDeg\n }\n return angleDeg\n}\n\n/**\n * Transforms the top/left variables of the rectangle\n * returned by getBoundingClientRect to document based coordinates\n * without the scroll.\n * UPDATE\n * @param {Rect} box\n */\nfunction transformBoundingClientRectToDocument(box: DOMRect) {\n let t: HTMLElement\n t = document.documentElement || document.body.parentNode\n const scrollX = (typeof t.scrollLeft === 'number' ? t : document.body)\n .scrollLeft\n\n t = document.documentElement || document.body.parentNode\n const scrollY = (typeof t.scrollTop === 'number' ? t : document.body)\n .scrollTop\n\n //This assumes width == height\n const ttop = box.top - scrollY\n const tleft = box.left - scrollX\n //info needed to draw line from center to mousepos\n\n return { top: ttop, left: tleft, width: box.width, height: box.height }\n}\n\nexport {\n // toGlobalCoordinates,\n // toLocalCoordinates,\n toRadians,\n getQuadrant,\n getAngleForPoint,\n transformBoundingClientRectToDocument,\n}\n","import React from 'react'\n\n/**\n * Draws a circle with radius = r\n * position must be handled by parent\n */\n\ntype DrawCircleProps = React.SVGProps<SVGCircleElement> & {\n r: number\n borderColor?: string\n fillColor?: string\n borderWidth?: number\n fillOpacity: number\n cx: number\n cy: number\n}\n\nclass DrawCircle extends React.Component<DrawCircleProps> {\n render() {\n const {\n r,\n borderColor = 'black',\n fillColor = 'transparent',\n borderWidth = 2,\n fillOpacity = 1,\n ...rest\n } = this.props\n\n return (\n <circle\n stroke={borderColor}\n fill={fillColor}\n fillOpacity={fillOpacity}\n r={r}\n {...rest}\n />\n )\n }\n}\n\nexport { DrawCircle }\n","import React from 'react'\nimport type { Point } from '../Types'\n\n/**\n * Draws a line from p1 to p2\n */\n\ntype DrawLineProps = React.SVGProps<SVGLineElement> & {\n width?: number\n color?: string\n p1: Point\n p2: Point\n}\n\nclass DrawLine extends React.Component<DrawLineProps> {\n render() {\n const { width = 2, color = 'black', p1, p2, ...rest } = this.props\n return (\n <line\n {...rest}\n stroke={color}\n strokeWidth={width}\n x1={p1.x}\n y1={p1.y}\n x2={p2.x}\n y2={p2.y}\n />\n )\n }\n}\n\nexport { DrawLine }\n","import React from 'react'\nimport ReactDOM from 'react-dom'\n\ntype HelpersOverlayProps = React.PropsWithChildren & {\n overlayStyle?: React.CSSProperties\n}\n\n/**\n * Draws the overlay and the children\n */\nclass HelpersOverlay extends React.Component<HelpersOverlayProps> {\n render() {\n const { children, ...rest } = this.props\n\n const styles = {\n overlay: Object.assign(\n {\n width: '100%',\n height: '100vh',\n top: 0,\n left: 0,\n zIndex: 2147483647,\n margin: '0',\n padding: '0',\n boxSizing: 'border-box',\n position: 'fixed',\n },\n this.props.overlayStyle,\n ),\n }\n\n return ReactDOM.createPortal(\n <div\n style={styles.overlay}\n {...rest}>\n {children}\n </div>,\n document.body,\n )\n }\n}\n\nexport { HelpersOverlay }\n","import React from 'react'\nimport type { Point } from '../Types'\nimport { toRadians } from '../utils'\nimport { DrawCircle } from './DrawCircle'\nimport { DrawLine } from './DrawLine'\nimport { HelpersOverlay } from './HelpersOverlay'\n\n/** Precision visual helpers */\n\n/**\n * Precision mode visual helpers\n */\ntype KnobVisualHelpersProps = {\n svgRef?: SVGSVGElement\n radius: number\n minimumDragDistance: number\n valueAngle: number\n mousePos: Point\n}\n\ntype KnobVisualHelpersState = {\n centerX: number\n centerY: number\n valueMarkerX: number\n valueMarkerY: number\n}\n\nclass KnobVisualHelpers extends React.Component<\n KnobVisualHelpersProps,\n KnobVisualHelpersState\n> {\n state = {\n centerX: 0,\n centerY: 0,\n valueMarkerX: 0,\n valueMarkerY: 0,\n }\n\n static getDerivedStateFromProps(\n props: KnobVisualHelpersProps,\n state: KnobVisualHelpersState,\n ) {\n //Calculate position\n if (!props.svgRef) return state\n\n const vbox = props.svgRef.getBoundingClientRect()\n const halfWidth = vbox.width / 2\n\n //Calculate current angle segment end point\n //Note: Not sure why we need to subtract 90 here\n const valueMarkerX =\n props.radius * Math.cos(toRadians(props.valueAngle - 90))\n const valueMarkerY =\n props.radius * Math.sin(toRadians(props.valueAngle - 90))\n\n return {\n ...state,\n centerX: vbox.left + halfWidth,\n centerY: vbox.top + halfWidth,\n valueMarkerX,\n valueMarkerY,\n }\n }\n\n render() {\n const markCircleColor =\n this.props.minimumDragDistance <= this.props.radius ? 'green' : 'grey'\n const fillColor =\n this.props.minimumDragDistance <= this.props.radius\n ? '#88E22D'\n : '#D8D8D8'\n const minDistanceCueVisible =\n this.props.minimumDragDistance >= this.props.radius\n\n return (\n <HelpersOverlay>\n <svg\n style={{ position: 'absolute', top: '0', left: '0' }}\n width=\"100%\"\n height=\"100%\">\n <defs>\n <marker\n id=\"Triangle\"\n viewBox=\"0 0 10 10\"\n refX=\"1\"\n refY=\"5\"\n markerWidth=\"6\"\n markerHeight=\"6\"\n orient=\"auto\">\n <path d=\"M 0 0 L 10 5 L 0 10 z\" />\n </marker>\n </defs>\n\n {/* Current drag distance */}\n <DrawCircle\n borderColor={markCircleColor}\n fillColor={fillColor}\n fillOpacity={0.02}\n r={this.props.radius}\n cx={this.state.centerX}\n cy={this.state.centerY}\n />\n {/* Minimum drag distance marker */}\n {minDistanceCueVisible && (\n <DrawCircle\n borderColor={markCircleColor}\n fillColor={fillColor}\n fillOpacity={0}\n r={this.props.minimumDragDistance}\n cx={this.state.centerX}\n cy={this.state.centerY}\n //strokeDasharray=\"5, 5\"\n />\n )}\n\n {/* Line to mouse position */}\n {/* <DrawLine\n p1={{ x: this.state.centerX, y: this.state.centerY }}\n p2={{ x: this.props.mousePos.x, y: this.props.mousePos.y }}\n opacity={0.4}\n strokeDasharray=\"5, 5\"\n /> */}\n {/* Line to current value */}\n <DrawLine\n p1={{ x: this.state.centerX, y: this.state.centerY }}\n p2={{\n x: this.state.valueMarkerX + this.state.centerX,\n y: this.state.valueMarkerY + this.state.centerY,\n }}\n markerEnd=\"url(#Triangle)\"\n />\n </svg>\n </HelpersOverlay>\n )\n }\n}\n\nexport { KnobVisualHelpers }\n","export default {\n knobX: 71,\n knobY: 71,\n svg: `\n\n<svg width=\"204px\" height=\"204px\" viewBox=\"0 0 204 204\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <!-- Generator: Sketch 47.1 (45422) - http://www.bohemiancoding.com/sketch -->\n <desc>Created with Sketch.</desc>\n <defs>\n <linearGradient x1=\"50%\" y1=\"50%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-1\">\n <stop stop-color=\"#444040\" stop-opacity=\"0.51098279\" offset=\"0%\"></stop>\n <stop stop-color=\"#131111\" stop-opacity=\"0.893200861\" offset=\"100%\"></stop>\n </linearGradient>\n <circle id=\"path-2\" cx=\"98.0400009\" cy=\"98.0400009\" r=\"98.0400009\"></circle>\n <filter x=\"-3.3%\" y=\"-3.3%\" width=\"106.6%\" height=\"106.6%\" filterUnits=\"objectBoundingBox\" id=\"filter-3\">\n <feMorphology radius=\"0.5\" operator=\"dilate\" in=\"SourceAlpha\" result=\"shadowSpreadOuter1\"></feMorphology>\n <feOffset dx=\"0\" dy=\"0\" in=\"shadowSpreadOuter1\" result=\"shadowOffsetOuter1\"></feOffset>\n <feGaussianBlur stdDeviation=\"2\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"></feGaussianBlur>\n <feComposite in=\"shadowBlurOuter1\" in2=\"SourceAlpha\" operator=\"out\" result=\"shadowBlurOuter1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowBlurOuter1\"></feColorMatrix>\n </filter>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"linearGradient-4\">\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0.5\" offset=\"0%\"></stop>\n <stop stop-color=\"#000000\" stop-opacity=\"0.5\" offset=\"100%\"></stop>\n </linearGradient>\n <circle id=\"path-5\" cx=\"98\" cy=\"98\" r=\"86\"></circle>\n <filter x=\"-4.1%\" y=\"-3.5%\" width=\"108.1%\" height=\"108.1%\" filterUnits=\"objectBoundingBox\" id=\"filter-6\">\n <feMorphology radius=\"0.5\" operator=\"dilate\" in=\"SourceAlpha\" result=\"shadowSpreadOuter1\"></feMorphology>\n <feOffset dx=\"0\" dy=\"1\" in=\"shadowSpreadOuter1\" result=\"shadowOffsetOuter1\"></feOffset>\n <feGaussianBlur stdDeviation=\"2\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"></feGaussianBlur>\n <feComposite in=\"shadowBlurOuter1\" in2=\"SourceAlpha\" operator=\"out\" result=\"shadowBlurOuter1\"></feComposite>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowBlurOuter1\"></feColorMatrix>\n </filter>\n </defs>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"s13\" transform=\"translate(4.000000, 4.000000)\">\n <g id=\"container\">\n <g id=\"Oval-2\">\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-3)\" xlink:href=\"#path-2\"></use>\n <use stroke=\"#979797\" stroke-width=\"1\" fill=\"url(#linearGradient-1)\" fill-rule=\"evenodd\" xlink:href=\"#path-2\"></use>\n </g>\n <g id=\"Oval-2\">\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#filter-6)\" xlink:href=\"#path-5\"></use>\n <use fill=\"\" fill-rule=\"evenodd\" xlink:href=\"#path-5\"></use>\n <use stroke=\"#4A4A4A\" stroke-width=\"1\" fill=\"url(#linearGradient-4)\" fill-rule=\"evenodd\" xlink:href=\"#path-5\"></use>\n </g>\n <g id=\"knob\" transform=\"translate(27.431373, 27.431373)\">\n <circle id=\"Oval-5\" fill=\"#322E2E\" cx=\"71\" cy=\"71\" r=\"71\"></circle>\n\n <!-- Fixed position marks -->\n <!-- 12:00 position mark (less prominent) -->\n <line x1=\"71\" y1=\"15\" x2=\"71\" y2=\"25\" stroke=\"#666666\" stroke-width=\"1\" opacity=\"0.6\"/>\n\n <!-- End position marks (0 and 127) -->\n <!-- 0 position mark (40 degrees from top, clockwise) -->\n <line x1=\"95.5\" y1=\"45.5\" x2=\"88.5\" y2=\"52.5\" stroke=\"#CCCCCC\" stroke-width=\"2\"/>\n\n <!-- 127 position mark (320 degrees from top, clockwise) -->\n <line x1=\"46.5\" y1=\"45.5\" x2=\"53.5\" y2=\"52.5\" stroke=\"#CCCCCC\" stroke-width=\"2\"/>\n\n <!-- Rotating indicator (existing) -->\n <path d=\"M70.0686275,4.17063061 L86.5686275,65.2689929 C81.3642501,66.811221 75.8642501,67.5735686 70.0686275,67.5560356 C64.2730048,67.5385027 58.7730048,66.7761551 53.5686275,65.2689929 L70.0686275,4.17063061 Z\" id=\"Rectangle-Copy\" fill=\"#E6D7D7\" transform=\"translate(70.068627, 35.863481) scale(1, -1) translate(-70.068627, -35.863481) \"></path>\n </g>\n </g>\n </g>\n </g>\n</svg>\n`,\n}\n","/**\n * Show the rotation circle and marker\n * dispatches drag events\n */\n\nimport { type D3DragEvent, drag } from 'd3-drag'\nimport { type ScaleLinear, scaleLinear } from 'd3-scale'\nimport { select } from 'd3-selection'\nimport type { BaseType, Selection } from 'd3-selection'\nimport { useEffect, useRef, useState } from 'react'\nimport { SvgLoader, SvgProxy } from 'react-svgmt'\nimport { InternalInput } from './InternalInput'\nimport type { Point } from './Types'\nimport { KnobVisualHelpers } from './helpers/KnobVisualHelpers'\nimport defaultSkin from './knobdefaultskin'\nimport { getAngleForPoint } from './utils'\n\n/**\n * type definition for the skin system attribute modification element\n */\ntype AttributeSetValue = {\n name: string\n value: (props: unknown, value: unknown) => string\n}\n\n/**\n * Type definition for the skin element manipulation block\n */\n\ninterface UpdateElement {\n element: string\n content: (_props: React.CSSProperties, value: number) => string\n attrs: AttributeSetValue[]\n}\n\ninterface Skin {\n svg: string\n knobX: number\n knobY: number\n updateAttributes: UpdateElement[]\n}\n\ntype KnobProps = Omit<React.ComponentProps<'div'>, 'onChange'> & {\n clampMax?: number\n clampMin?: number\n defaultValue?: number\n disabled?: boolean\n format?: (val: number) => string\n max?: number\n min?: number\n onChange?: (val: number) => void\n onEnd?: () => void\n onStart?: () => void\n preciseMode?: boolean\n rotateDegrees?: number\n skin?: Skin\n step?: number\n style: React.CSSProperties\n unlockDistance?: number\n value?: number\n}\n\ntype KnobState = {\n svgRef?: SVGSVGElement\n dragging: boolean\n dragDistance: number\n mousePos: Point\n valueAngle: number\n uncontrolledValue?: number\n}\n\n// function printDebugValues(obj) {\n// console.log('------------')\n// Object.keys(obj).forEach(key => {\n// const value =\n// typeof obj[key] === 'object' ? JSON.stringify(obj[key]) : obj[key]\n// console.log(`${key}: ${value}`)\n// })\n// console.log('------------')\n// }\n\n/**\n * Generic knob component\n */\nconst RotaryKnob = (props: KnobProps) => {\n const {\n clampMax = 360,\n clampMin = 0,\n defaultValue = 0,\n disabled = false,\n format = (val: number) => val.toFixed(0),\n max = 100,\n min = 0,\n onChange = () => {},\n onEnd = () => {},\n onStart = () => {},\n preciseMode = true,\n rotateDegrees = 0,\n skin = defaultSkin as Skin,\n step = 1,\n style,\n unlockDistance = 100,\n value,\n ...rest\n } = props\n\n const [isControlled, setIsControlled] = useState(value !== undefined)\n\n const container = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n let scale: ScaleLinear<number, number>\n let scaleProps: {\n min: number\n max: number\n clampMin: number\n clampMax: number\n }\n\n const [state, setState] = useState<KnobState>({\n svgRef: undefined,\n dragging: false,\n dragDistance: 0,\n mousePos: { x: 0, y: 0 },\n valueAngle: 0,\n uncontrolledValue: 0,\n })\n\n // returns angles between 0 and 360 for values lower 0 or greater 360\n const normalizeAngle = (angle: number): number => {\n if (angle < 0) {\n //E.g -1 turns 359\n return angle + 360\n }\n if (angle > 360) {\n return angle - 360\n }\n return angle\n }\n\n // converts a value to an angle for the knob respecting the additional rotateDegrees prop\n const convertValueToAngle = (value: number): number => {\n const angle = (getScale()(value) + rotateDegrees) % 360\n return normalizeAngle(angle)\n }\n\n // converts an angle to a value for the knob respecting the additional rotateDegrees prop\n const convertAngleToValue = (angle: number): number => {\n const angle2 = angle - rotateDegrees\n return getScale().invert(normalizeAngle(angle2))\n }\n\n const getScale = () => {\n // Memoize scale so it's not recalculated every time\n if (\n !scaleProps ||\n scaleProps.min !== min ||\n scaleProps.max !== max ||\n scaleProps.clampMin !== clampMin ||\n scaleProps.clampMax !== clampMax\n ) {\n if (rotateDegrees < 270 && rotateDegrees > 90) {\n scale = scaleLinear().domain([min, max]).range([clampMin, clampMax])\n } else {\n scale = scaleLinear().domain([max, min]).range([clampMax, clampMin])\n }\n scale.clamp(true)\n scaleProps = {\n min: min,\n max: max,\n clampMin: clampMin,\n clampMax: clampMax,\n }\n }\n return scale\n }\n\n useEffect(() => {\n setIsControlled(value !== undefined)\n\n setState(prevState => ({\n ...prevState,\n uncontrolledValue: value ?? defaultValue ?? 0,\n }))\n\n if (container.current) {\n // Remove existing drag behavior\n select(container.current).on('.drag', null)\n // Only setup new drag if not disabled\n if (!disabled) {\n setupDragging(select(container.current))\n }\n }\n }, [value, defaultValue, disabled])\n\n const saveRef = (elem: SVGElement) => {\n if (!state.svgRef) {\n setState({ ...state, svgRef: elem as SVGSVGElement })\n }\n }\n\n const onAngleChanged = (angle: number) => {\n //Calculate domain value\n const domainValue = convertAngleToValue(angle)\n if (!isControlled) {\n /**\n * If the mode is 'uncontrolled' we need to update our local state\n */\n setState(st => {\n return { ...st, uncontrolledValue: domainValue }\n })\n }\n if (!disabled) onChange(domainValue)\n }\n\n /**\n * Returns the current value (depending on controlled/uncontrolled mode)\n */\n const getValue = (): number =>\n isControlled ? (value ?? 0) : (state.uncontrolledValue ?? 0)\n\n const setupDragging = (\n elem: Selection<HTMLDivElement, unknown, BaseType, unknown>,\n ) => {\n if (!elem?.node()) return\n const node = elem.node()\n if (!node) return\n\n let vbox = node.getBoundingClientRect()\n const cx = vbox.width / 2\n const cy = vbox.height / 2\n\n // Shared state via closure\n let startPos: Point\n let startAngle: number\n let initialAngle: number\n let monitoring = false\n\n function started(event: D3DragEvent<HTMLDivElement, unknown, unknown>) {\n if (!event?.sourceEvent) return\n if (!node) return\n\n const currentValue = getValue()\n\n vbox = node.getBoundingClientRect()\n elem.classed('dragging', true)\n onStart()\n\n startPos = { x: event.x - cx, y: event.y - cy }\n startAngle = getAngleForPoint(startPos.x, startPos.y)\n initialAngle = convertValueToAngle(currentValue)\n monitoring = false\n\n // ...existing setState code...\n }\n\n function dragged(event: D3DragEvent<HTMLDivElement, unknown, unknown>) {\n const currentPos = { x: event.x - cx, y: event.y - cy }\n const distanceFromCenter = Math.sqrt(\n currentPos.x ** 2 + currentPos.y ** 2,\n )\n\n if (preciseMode) {\n if (!monitoring && distanceFromCenter >= unlockDistance) {\n startPos = currentPos\n startAngle = getAngleForPoint(currentPos.x, currentPos.y)\n monitoring = true\n }\n } else {\n monitoring = true\n }\n\n const currentAngle = getAngleForPoint(currentPos.x, currentPos.y)\n const deltaAngle = currentAngle - startAngle\n let finalAngle = initialAngle + deltaAngle\n finalAngle = normalizeAngle(finalAngle)\n\n if (monitoring) {\n onAngleChanged(finalAngle)\n }\n\n setState(prevState => ({\n ...prevState,\n dragDistance: distanceFromCenter,\n mousePos: {\n x: event.sourceEvent.clientX,\n y: event.sourceEvent.clientY,\n },\n valueAngle: monitoring ? finalAngle : initialAngle,\n }))\n }\n\n function ended() {\n elem.classed('dragging', false)\n setState(prevState => ({ ...prevState, dragging: false }))\n onEnd()\n inputRef.current?.focus()\n }\n\n const dragInstance = drag<HTMLDivElement, unknown>()\n .container(() => node)\n .on('start', started)\n .on('drag', dragged)\n .on('end', ended)\n\n elem.call(dragInstance)\n }\n\n const onFormControlChange = (newVal: number) => {\n if (!isControlled) {\n /**\n * If the mode is 'uncontrolled' we need to update our local state\n */\n setState(prevState => ({ ...prevState, uncontrolledValue: newVal }))\n }\n\n if (!disabled) onChange(newVal)\n }\n\n const currentValue: number = getValue()\n const angle = convertValueToAngle(currentValue)\n\n const styles: {\n container: React.CSSProperties\n input: React.CSSProperties\n } = {\n container: Object.assign(\n {},\n {\n width: '50px',\n height: '50px',\n overflow: 'hidden',\n position: 'relative',\n userSelect: 'none',\n cursor: 'crosshair',\n },\n style,\n ),\n input: {\n width: '50%',\n position: 'absolute',\n top: '0',\n left: '-100%',\n },\n }\n\n //Get custom updates defined by the skin\n //Transform the updateAttributes array into a SvgProxy array\n const updateAttrs = skin.updateAttributes\n const skinElemUpdates = updateAttrs\n ? updateAttrs.map((elemUpdate, ix: number) => {\n let elemContent: string | null = null\n if (elemUpdate.content) {\n elemContent = elemUpdate.content(props, currentValue)\n }\n const attributes: Record<string, string> = {}\n //Call value function\n //TODO: support string values\n for (const attr of elemUpdate.attrs || []) {\n attributes[attr.name] = attr.value(props, currentValue)\n }\n\n return (\n <SvgProxy\n key={ix}\n selector={elemUpdate.element}\n {...attributes}>\n {elemContent}\n </SvgProxy>\n )\n })\n : null\n\n return (\n <>\n <div\n ref={container}\n style={styles.container}\n {...rest}>\n <InternalInput\n disabled={disabled}\n inputRef={inputRef}\n style={styles.input}\n value={currentValue}\n min={min}\n max={max}\n step={step}\n onChange={onFormControlChange}\n />\n\n <SvgLoader\n height=\"100%\"\n svgXML={skin.svg}\n width=\"100%\"\n onSVGReady={saveRef}>\n <SvgProxy\n selector=\"#knob\"\n transform={`$ORIGINAL rotate(${angle}, ${skin.knobX}, ${skin.knobY})`}\n />\n {skinElemUpdates}\n </SvgLoader>\n </div>\n\n {state.dragging && preciseMode && (\n <KnobVisualHelpers\n svgRef={state.svgRef}\n radius={state.dragDistance}\n mousePos={state.mousePos}\n minimumDragDistance={unlockDistance}\n valueAngle={state.valueAngle}\n />\n )}\n </>\n )\n}\n\nexport { RotaryKnob }\n","const knobSkin10 = {\n knobX: 71.44,\n knobY: 71.44,\n svg: `\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"207px\" height=\"207px\" viewBox=\"0 0 207 207\" version=\"1.1\">\n <!-- Generator: Sketch 47.1 (45422) - http://www.bohemiancoding.com/sketch -->\n <desc>Created with Sketch.</desc>\n <defs>\n <linearGradient x1=\"50%\" y1=\"50%\" x2=\"50%\" y2=\"100%\" id=\"27c61b0f-392f-962d-de12-cb9da898274b\">\n <stop stop-color=\"#444040\" stop-opacity=\"0.51098279\" offset=\"0%\"/>\n <stop stop-color=\"#131111\" stop-opacity=\"0.893200861\" offset=\"100%\"/>\n </linearGradient>\n <circle id=\"e966567b-3869-4bcd-76b6-2cf084e45390\" cx=\"100.497487\" cy=\"100.497487\" r=\"99.4974874\"/>\n <filter x=\"-3.3%\" y=\"-3.3%\" width=\"106.5%\" height=\"106.5%\" filterUnits=\"objectBoundingBox\" id=\"e2e6829f-0086-96b2-e92a-6f3809b8ac61\">\n <feMorphology radius=\"0.5\" operator=\"dilate\" in=\"SourceAlpha\" result=\"shadowSpreadOuter1\"/>\n <feOffset dx=\"0\" dy=\"0\" in=\"shadowSpreadOuter1\" result=\"shadowOffsetOuter1\"/>\n <feGaussianBlur stdDeviation=\"2\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"/>\n <feComposite in=\"shadowBlurOuter1\" in2=\"SourceAlpha\" operator=\"out\" result=\"shadowBlurOuter1\"/>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowBlurOuter1\"/>\n </filter>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"0facd5c9-8e04-e83f-4842-8ba16f949942\">\n <stop stop-color=\"#FFFFFF\" stop-opacity=\"0.5\" offset=\"0%\"/>\n <stop stop-color=\"#000000\" stop-opacity=\"0.5\" offset=\"100%\"/>\n </linearGradient>\n <circle id=\"c54189ed-7ea3-956c-f040-f0207548b268\" cx=\"100.432161\" cy=\"100.432161\" r=\"86.4321608\"/>\n <filter x=\"-4.0%\" y=\"-3.5%\" width=\"108.1%\" height=\"108.1%\" filterUnits=\"objectBoundingBox\" id=\"dedf2e7e-f008-c315-f682-e424d670f210\">\n <feMorphology radius=\"0.5\" operator=\"dilate\" in=\"SourceAlpha\" result=\"shadowSpreadOuter1\"/>\n <feOffset dx=\"0\" dy=\"1\" in=\"shadowSpreadOuter1\" result=\"shadowOffsetOuter1\"/>\n <feGaussianBlur stdDeviation=\"2\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"/>\n <feComposite in=\"shadowBlurOuter1\" in2=\"SourceAlpha\" operator=\"out\" result=\"shadowBlurOuter1\"/>\n <feColorMatrix values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0\" type=\"matrix\" in=\"shadowBlurOuter1\"/>\n </filter>\n\n <filter x=\"-5.3%\" y=\"-11.3%\" width=\"110.7%\" height=\"122.6%\" filterUnits=\"objectBoundingBox\" id=\"12f618f7-e258-b597-3ed6-242484ddad8f\">\n <feOffset dx=\"0\" dy=\"0\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\"/>\n <feGaussianBlur stdDeviation=\"2\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"/>\n <feColorMatrix values=\"0 0 0 0 0.915577168 0 0 0 0 0.797591325 0 0 0 0 0.601479722 0 0 0 1 0\" type=\"matrix\" in=\"shadowBlurOuter1\"/>\n </filter>\n <pattern id=\"3cc0e5b8-1f0a-886b-f635-8fcb19212870\" width=\"8.04411765\" height=\"8.04411765\" x=\"21.9558824\" y=\"21.9558824\" patternUnits=\"userSpaceOnUse\">\n <use xlink:href=\"#2b8719c1-286b-ebf8-a488-ac66a6598fc5\" transform=\"scale(0.167585784,0.167585784)\"/>\n </pattern>\n <image id=\"2b8719c1-286b-ebf8-a488-ac66a6598fc5\" width=\"48\" height=\"48\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAEGWlDQ1BrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQgAAOI2NVV1oHFUUPrtzZyMkzlNsNIV0qD8NJQ2TVjShtLp/3d02bpZJNtoi6GT27s6Yyc44M7v9oU9FUHwx6psUxL+3gCAo9Q/bPrQvlQol2tQgKD60+INQ6Ium65k7M5lpurHeZe58853vnnvuuWfvBei5qliWkRQBFpquLRcy4nOHj4g9K5CEh6AXBqFXUR0rXalMAjZPC3e1W99Dwntf2dXd/p+tt0YdFSBxH2Kz5qgLiI8B8KdVy3YBevqRHz/qWh72Yui3MUDEL3q44WPXw3M+fo1pZuQs4tOIBVVTaoiXEI/MxfhGDPsxsNZfoE1q66ro5aJim3XdoLFw72H+n23BaIXzbcOnz5mfPoTvYVz7KzUl5+FRxEuqkp9G/Ajia219thzg25abkRE/BpDc3pqvphHvRFys2weqvp+krbWKIX7nhDbzLOItiM8358pTwdirqpPFnMF2xLc1WvLyOwTAibpbmvHHcvttU57y5+XqNZrLe3lE/Pq8eUj2fXKfOe3pfOjzhJYtB/yll5SDFcSDiH+hRkH25+L+sdxKEAMZahrlSX8ukqMOWy/jXW2m6M9LDBc31B9LFuv6gVKg/0Szi3KAr1kGq1GMjU/aLbnq6/lRxc4XfJ98hTargX++DbMJBSiYMIe9Ck1YAxFkKEAG3xbYaKmDDgYyFK0UGYpfoWYXG+fAPPI6tJnNwb7ClP7IyF+D+bjOtCpkhz6CFrIa/I6sFtNl8auFXGMTP34sNwI/JhkgEtmDz14ySfaRcTIBInmKPE32kxyyE2Tv+thKbEVePDfW/byMM1Kmm0XdObS7oGD/MypMXFPXrCwOtoYjyyn7BV29/MZfsVzpLDdRtuIZnbpXzvlf+ev8MvYr/Gqk4H/kV/G3csdazLuyTMPsbFhzd1UabQbjFvDRmcWJxR3zcfHkVw9GfpbJmeev9F08WW8uDkaslwX6avlWGU6NRKz0g/SHtCy9J30o/ca9zX3Kfc19zn3BXQKRO8ud477hLnAfc1/G9mrzGlrfexZ5GLdn6ZZrrEohI2wVHhZywjbhUWEy8icMCGNCUdiBlq3r+xafL549HQ5jH+an+1y+LlYBifuxAvRN/lVVVOlwlCkdVm9NOL5BE4wkQ2SMlDZU97hX86EilU/lUmkQUztTE6mx1EEPh7OmdqBtAvv8HdWpbrJS6tJj3n0CWdM6busNzRV3S9KTYhqvNiqWmuroiKgYhshMjmhTh9ptWhsF7970j/SbMrsPE1suR5z7DMC+P/Hs+y7ijrQAlhyAgccjbhjPygfeBTjzhNqy28EdkUh8C+DU9+z2v/oyeH791OncxHOs5y2AtTc7nb/f73TWPkD/qwBnjX8BoJ98VQNcC+8AAAFFSURBVGgF7djbDYMwDAXQBjEMYqyqY1WMxTppLiJIQIA8ariWkp8IPuweO60am67r7MstY8wwjuPH7dMz3uUua63p+/7r9rePIRW/9QmQzCV9ub0YgSIgzhxvQkjFb1EZBAdEKolkfJTqtnb7bv/zOJm58moRE0AzYgFoRawAGhE7gDZEEKAJcQjQgjgFaEBcAtgRUQBmRDSAFZEEYEQkA9gQWQAmRDaABVEEYEAUAx5H4EaGOyw+SMl66mbXzNOD4k6gCPNUY/CFwF1YOn5zRxJJRINqaUbUuZA/79sd3wm3xIdbdS60rXzo2XVCbO60/HxKJgFKKv4CkEziuyKBWAE0InYAbYggQBPiEKAFcQrQgLgEsCOiAMyIaAArIgnAiEgGsCGyAEyIbAALogjAgCgGPI7AX9w6F3JtqHMhnMWLFSrSD9jOnakVHpZYAAAAAElFTkSuQmCC\"/>\n </defs>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"s10\" transform=\"translate(3.000000, 3.000000)\">\n <g id=\"container\">\n <g id=\"Oval-2\">\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#e2e6829f-0086-96b2-e92a-6f3809b8ac61)\" xlink:href=\"#e966567b-3869-4bcd-76b6-2cf084e45390\"/>\n <use stroke=\"#979797\" stroke-width=\"1\" fill=\"url(#27c61b0f-392f-962d-de12-cb9da898274b)\" fill-rule=\"evenodd\" xlink:href=\"#e966567b-3869-4bcd-76b6-2cf084e45390\"/>\n </g>\n <g id=\"Oval-2\">\n <use fill=\"black\" fill-opacity=\"1\" filter=\"url(#dedf2e7e-f008-c315-f682-e424d670f210)\" xlink:href=\"#c54189ed-7ea3-956c-f040-f0207548b268\"/>\n <use fill=\"\" fill-rule=\"evenodd\" xlink:href=\"#c54189ed-7ea3-956c-f040-f0207548b268\"/>\n <use stroke=\"#4A4A4A\" stroke-width=\"1\" fill=\"url(#0facd5c9-8e04-e83f-4842-8ba16f949942)\" fill-rule=\"evenodd\" xlink:href=\"#c54189ed-7ea3-956c-f040-f0207548b268\"/>\n </g>\n <g id=\"knob\" transform=\"translate(28.574244, 28.574244)\">\n <circle id=\"Oval-5\" fill=\"#322E2E\" cx=\"71.4356094\" cy=\"71.4356094\" r=\"71.4356094\"/>\n\n <!-- Rotating indicator (existing) -->\n <path d=\"M72.4209282,3.63066376 L88.6786876,16.869789 C81.585496,18.1548295 76.1662428,18.7973498 72.4209282,18.7973498 C68.6756135,18.7973498 63.2563604,18.1548295 56.1631688,16.869789 L72.4209282,3.63066376 Z\" id=\"Rectangle\" fill=\"#E6D7D7\" transform=\"translate(72.420928, 11.214007) scale(1, -1) translate(-72.420928, -11.214007) \"/>\n </g>\n\n <!-- Fixed position marks (outside the rotating knob group) -->\n <!-- 12:00 position mark (more prominent) -->\n <line x1=\"100.0098534\" y1=\"15\" x2=\"100.0098534\" y2=\"35\" stroke=\"#CCCCCC\" stroke-width=\"4\" opacity=\"0.9\"/>\n\n <!-- Arc fill between end position marks -->\n <!-- <path d=\"M 35 165 A 65 65 0 0 1 165 165\" stroke=\"#666666\" stroke-width=\"8\" fill=\"none\" opacity=\"0.3\"/> -->\n\n <!-- End position marks (0 and 127) -->\n <!-- 0 position mark (40 degrees from top, clockwise) - at outer radius beyond knob edge -->\n <!-- This should be at the bottom-left where the value indicator points when at 0 -->\n <line x1=\"36\" y1=\"164\" x2=\"44\" y2=\"156\" stroke=\"#DDDDDD\" stroke-width=\"4\"/>\n\n <!-- 127 position mark (320 degrees from top, clockwise) - at outer radius beyond knob edge -->\n <!-- This should be at the bottom-right where the value indicator points when at 127 -->\n <line x1=\"164\" y1=\"164\" x2=\"156\" y2=\"156\" stroke=\"#DDDDDD\" stroke-width=\"4\"/>\n <g id=\"label\">\n <g id=\"labeltext\" fill-opacity=\"1\" fill=\"#E6D7D7\">\n <text id=\"534f4e02-5541-3607-0966-af0b025d80e0\" font-family=\"Helvetica\" font-size=\"44\" font-weight=\"normal\" fill=\"#E6D7D7\" class=\"text-7\" filter=\"url(#12f618f7-e258-b597-3ed6-242484ddad8f)\">\n <tspan x=\"45.3246625\" y=\"117.884225\">10.10</tspan>\n </text>\n <text id=\"92ebe866-c281-70c7-7b0e-a373cee013a9\" font-family=\"Helvetica\" font-size=\"44\" font-weight=\"normal\" fill=\"#E6D7D7\" class=\"text-7\">\n <tspan x=\"45.3246625\" y=\"117.884225\">10.10</tspan>\n </text>\n </g>\n <circle id=\"Oval-6\" stroke=\"#979797\" fill-opacity=\"0.730000019\" fill=\"url(#3cc0e5b8-1f0a-886b-f635-8fcb19212870)\" transform=\"translate(100.351759, 100.351759) rotate(-45.000000) translate(-100.351759, -100.351759) \" cx=\"100.351759\" cy=\"100.351759\" r=\"70.3517588\"/>\n </g>\n </g>\n </g>\n </g>\n</svg>\n`,\n updateAttributes: [\n {\n element: '#labeltext text tspan',\n content: (_props: React.CSSProperties, value: number) => value.toFixed(0),\n attrs: [\n {\n name: 'text-anchor',\n value: (/* props, value */) => 'middle',\n },\n {\n name: 'x',\n value: (/* props, value */) => '100',\n },\n ],\n },\n ],\n}\n\nexport { knobSkin10 }\n","import { useCallback } from 'react'\nimport useStateWithDynamicDefault from '../hooks/useStateWithDynamicDefault'\nimport { RotaryKnob } from '../rotaryKnob'\nimport { assertRange } from '../utils'\nimport { knobSkin10 } from './knobSkin10'\n\ntype KnobProps = {\n disabled?: boolean\n max?: number\n min?: number\n onChange?: (value: number) => void\n value?: number\n wheelEnabled?: boolean\n wheelSensitivity?: number\n}\n\nconst Knob = (props: KnobProps) => {\n const {\n disabled = false,\n max = 127,\n min = 0,\n onChange,\n value: initialValue = 0,\n wheelEnabled = false,\n wheelSensitivity = 0.1,\n ...rest\n } = props\n\n const [value, setValue] = useStateWithDynamicDefault(initialValue)\n\n const handleChange = (val: number) => {\n if (disabled) return\n\n const newValue = assertRange(Number.parseInt(String(val), 10), max, min)\n setValue(newValue)\n if (onChange) {\n onChange(newValue)\n }\n }\n\n const handleWheel = useCallback(\n (event: React.WheelEvent<HTMLDivElement>) => {\n if (!wheelEnabled || disabled) return\n\n event.preventDefault()\n const delta = -event.deltaY * wheelSensitivity\n const newValue = assertRange(value + delta, max, min)\n\n setValue(newValue)\n if (onChange) {\n onChange(newValue)\n }\n },\n [\n wheelEnabled,\n disabled,\n wheelSensitivity,\n value,\n max,\n min,\n onChange,\n setValue,\n ],\n )\n\n return (\n <RotaryKnob\n clampMax={320}\n clampMin={40}\n className=\"zds-pickers__knob-container\"\n disabled={disabled}\n onChange={handleChange}\n onWheel={wheelEnabled ? handleWheel : undefined}\n preciseMode={false}\n rotateDegrees={180}\n /**\n * To see all skins:\n * http://react-rotary-knob-skins-preview.surge.sh/\n *\n * NOTE: we've copied the one we use into this package because the skins\n * pack package does not work in Electron.\n */\n skin={knobSkin10}\n style={{ opacity: disabled ? 0.4 : 1 }}\n unlockDistance={0}\n {...{ defaultValue: value, max, min, value, ...rest }}\n />\n )\n}\n\nexport { Knob }\n\nexport type { KnobProps }\n","import { forwardRef, useMemo } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { arraySequence } from '../utils'\nimport { Knob } from './Knob'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype KnobPickerProps = SelectProps<number> & {\n highToLow?: boolean\n includeLabel?: boolean\n includePicker?: boolean\n knobProps?: Partial<KnobPickerProps>\n max?: number\n min?: number\n wheelEnabled?: boolean\n wheelSensitivity?: number\n value: number\n}\n\ntype KnobPickerRef = SelectInstance<\n Option<number>,\n false,\n GroupBase<Option<number>>\n>\n\nconst KnobPicker = forwardRef<\n SelectInstance<Option<number>, false, GroupBase<Option<number>>>,\n KnobPickerProps\n>((props, ref) => {\n const {\n disabled,\n highToLow,\n includeLabel,\n includePicker,\n knobProps,\n label,\n max = 127,\n min = 0,\n onChange,\n shrinkLabel,\n value = 0,\n wheelEnabled,\n wheelSensitivity = 0.1,\n ...rest\n } = props\n\n const options = useMemo(() => {\n const result = arraySequence(max - min + 1)\n .map(i => min + i)\n .map((i): Option<number> => ({ value: i, label: String(i) }))\n return highToLow ? result.reverse() : result\n }, [highToLow, max, min])\n\n return (\n <div className=\"zds-pickers__container\">\n {Boolean(!shrinkLabel && Boolean(label)) && (\n <span className=\"zds-pickers__label\">{label}</span>\n )}\n <div style={{ display: 'inline-flex', gap: 10, alignItems: 'center' }}>\n {Boolean(includePicker) && (\n <Select\n {...{\n ...rest,\n disabled,\n isDisabled: disabled,\n onChange,\n options,\n ref,\n value,\n }}\n />\n )}\n\n <Knob\n {...{\n disabled,\n max,\n min,\n onChange,\n value,\n wheelEnabled,\n wheelSensitivity,\n ...knobProps,\n }}\n />\n </div>\n </div>\n )\n})\n\nexport { KnobPicker }\n\nexport type { KnobPickerProps, KnobPickerRef }\n","import { forwardRef } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport type { Polarity } from './PolarityPicker'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\nconst options: Option<Polarity>[] = [\n { value: 0, label: 'Momentary' },\n { value: 1, label: 'Latching' },\n]\n\ntype LatchPickerProps = Omit<SelectProps<Polarity>, 'options'>\n\ntype LatchPickerRef = SelectInstance<\n Option<Polarity>,\n false,\n GroupBase<Option<Polarity>>\n>\n\nconst LatchPicker = forwardRef<\n SelectInstance<Option<Polarity>, false, GroupBase<Option<Polarity>>>,\n LatchPickerProps\n>((props, ref) => (\n <Select\n {...props}\n options={options}\n ref={ref}\n />\n))\n\nexport { LatchPicker }\n\nexport type { LatchPickerProps, LatchPickerRef }\n","import { forwardRef, useMemo } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { getStockNames, getUserMappingNames } from 'zds-mappings'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype MappingPickerProps = Omit<SelectProps<string>, 'options'> & {\n allowClearing: boolean\n}\n\ntype MappingPickerRef = SelectInstance<\n Option<string>,\n false,\n GroupBase<Option<string>>\n>\n\nconst MappingPicker = forwardRef<\n SelectInstance<Option<string>, false, GroupBase<Option<string>>>,\n MappingPickerProps\n>(({ allowClearing, ...rest }, ref) => {\n const stockMappings = getStockNames()\n const userMappings = getUserMappingNames()\n\n const options = useMemo(() => {\n const result = allowClearing\n ? [\n {\n value: 'No Mapping',\n label: (\n <span className=\"zds-mappings-clear-mapping\">No Mapping</span>\n ),\n },\n ]\n : []\n\n return [\n ...result,\n\n {\n label: allowClearing ? <hr /> : '',\n options: userMappings.map(label => ({\n value: label,\n label: <span className=\"zds-mappings-user-mapping\">{label}</span>,\n })),\n },\n\n {\n label: userMappings.length ? <hr /> : allowClearing ? <hr /> : '',\n options: stockMappings.map(label => ({\n label,\n value: label,\n })),\n },\n ] as Option<string>[]\n }, [allowClearing, stockMappings, userMappings])\n\n return (\n <Select\n {...rest}\n options={options}\n ref={ref}\n />\n )\n})\n\nexport { MappingPicker }\n\nexport type { MappingPickerProps, MappingPickerRef }\n","import { forwardRef, useCallback, useMemo } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { Midi } from 'tonal'\nimport { type MapItem, type Mapping, emptyMapping } from 'zds-mappings'\nimport useStateWithDynamicDefault from '../hooks/useStateWithDynamicDefault'\nimport { assertRange } from '../utils'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\nconst { midiToNoteName } = Midi\n\nconst formattedMapEntry = ({ note, name }: MapItem) =>\n `${note} ${name.length ? '-' : ''} ${name}`\nconst formattedListEntry = (label: string, idx: number) => ({\n label,\n value: idx + 1,\n})\n\ntype NotePickerProps = Omit<SelectProps<number>, 'options'> & {\n channel: number\n disabled?: boolean\n isMelodicMode?: boolean\n mapping?: Mapping\n onChange: (value: number) => void\n}\n\ntype NotePickerRef = SelectInstance<\n Option<number>,\n false,\n GroupBase<Option<number>>\n>\n\nconst NotePicker = forwardRef<\n SelectInstance<Option<number>, false, GroupBase<Option<number>>>,\n NotePickerProps\n>((props, ref) => {\n const {\n channel,\n disabled = false,\n isMelodicMode = false,\n mapping,\n onChange,\n value: initialValue,\n ...rest\n } = props\n\n const options = useMemo(() => {\n if (isMelodicMode) {\n return emptyMapping()\n .map(({ note }) => {\n const midiNoteName = midiToNoteName(note, { sharps: false })\n .replace('b', '♭')\n .replace('#', '♯')\n return `${midiNoteName} (#${note})`\n })\n .map(formattedListEntry)\n }\n\n return (mapping || emptyMapping())\n .map(formattedMapEntry)\n .map(formattedListEntry)\n }, [isMelodicMode, mapping])\n\n const [value, setValue] = useStateWithDynamicDefault(initialValue)\n\n const handleChange = useCallback(\n (v: number | string) => {\n if (typeof v === 'string') return\n\n const possibleNoteNumber = assertRange(v, 128, 0)\n\n if (possibleNoteNumber > 0) {\n onChange(possibleNoteNumber)\n }\n setValue(v)\n },\n [onChange, setValue],\n )\n\n return (\n <Select\n {...rest}\n disabled={disabled}\n // isDisabled={disabled}\n onChange={handleChange}\n options={options}\n ref={ref}\n value={value}\n />\n )\n})\n\nexport { NotePicker }\n\nexport type { NotePickerProps, NotePickerRef }\n","import { Piano as ReactPiano } from 'zds-react-piano'\nimport type { WithProviderProps } from '../other/OctavePlayer'\nimport { SoundfontProvider } from '../other/SoundFontProvider'\n\nconst firstNote = 21\nconst lastNote = 108\nconst numNotes = lastNote - firstNote - 1\n\nconst whiteNotes = numNotes * 0.7 // approx\n\nconst audioContext = new window.AudioContext()\n\ntype PianoProps = {\n activeNotes?: number[]\n selectedNotes?: number[]\n disabled: boolean\n height: number\n width: number\n}\n\nconst BasePianoPicker = ({ height, width, ...rest }: PianoProps) => {\n const keyWidth = width / whiteNotes + 2\n const keyWidthToHeight = keyWidth / height\n\n return (\n <div>\n <ReactPiano\n keyWidthToHeight={keyWidthToHeight}\n noteRange={{ first: firstNote, last: lastNote }}\n width={width}\n {...rest}\n />\n </div>\n )\n}\n\nconst WithProvider = ({\n format,\n height,\n hostname,\n instrumentName,\n onChange,\n onClick,\n onDoubleClick,\n onKeyMouseEnter,\n onKeyMouseLeave,\n selectedNotes,\n soundfont,\n width,\n}: WithProviderProps) => (\n <SoundfontProvider\n {...{\n audioContext,\n format,\n hostname,\n instrumentName,\n onChange,\n soundfont,\n }}\n render={({ isLoading, playNote, stopNote }) => (\n <BasePianoPicker\n disabled={isLoading}\n {...{\n height,\n onClick,\n onDoubleClick,\n onKeyMouseEnter,\n onKeyMouseLeave,\n playNote,\n selectedNotes,\n stopNote,\n width,\n }}\n />\n )}\n />\n)\n\nexport { WithProvider as PianoPicker }\n\nexport type { PianoProps }\n","import { forwardRef } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { Select } from './Select'\nimport type { Option, SelectProps, noSelection } from './Select'\n\ntype Polarity = 0 | 1 | typeof noSelection\n\ntype PolarityPickerProps = Omit<SelectProps<Polarity>, 'options'> & {\n labelOff?: string\n labelOn?: string\n}\n\ntype PolarityPickerRef = SelectInstance<\n Option<Polarity>,\n false,\n GroupBase<Option<Polarity>>\n>\n\nconst PolarityPicker = forwardRef<\n SelectInstance<Option<Polarity>, false, GroupBase<Option<Polarity>>>,\n PolarityPickerProps\n>(({ labelOff = 'Normally Off', labelOn = 'Normally On', ...rest }, ref) => {\n const options = [\n { value: 0, label: labelOff },\n { value: 1, label: labelOn },\n ] as Option<Polarity>[]\n\n return (\n <Select\n {...rest}\n options={options}\n ref={ref}\n />\n )\n})\n\nexport { PolarityPicker }\n\nexport type { Polarity, PolarityPickerProps, PolarityPickerRef }\n","import { useCallback, useLayoutEffect, useState } from 'react'\n\nconst getSize = (el: HTMLDivElement | null) =>\n el\n ? {\n width: el.offsetWidth,\n height: el.offsetHeight,\n }\n : {\n width: 0,\n height: 0,\n }\n\nconst useComponentSize = (ref: React.RefObject<HTMLDivElement>) => {\n const [componentSize, setComponentSize] = useState(\n getSize(ref ? ref.current : null),\n )\n\n const handleResize = useCallback(() => {\n if (ref.current) {\n setComponentSize(getSize(ref.current))\n }\n }, [ref])\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>\n useLayoutEffect(() => {\n if (!ref.current) return\n\n handleResize()\n\n if (typeof ResizeObserver === 'function') {\n const resizeObserver = new ResizeObserver(() => {\n handleResize()\n })\n resizeObserver.observe(ref.current)\n\n return () => {\n resizeObserver.disconnect()\n // resizeObserver = null\n }\n }\n window.addEventListener('resize', handleResize)\n\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [ref.current])\n\n return componentSize\n}\n\nexport default useComponentSize\n","import { useRef } from 'react'\nimport useComponentSize from '../hooks/useComponentSize'\nimport {\n type Curve,\n responseCurves as origResponseCurves,\n} from '../midi/export'\nimport { DefaultTooltip, type TooltipProps } from '../other/DefaultTooltip'\nimport { SvgText } from '../other/SvgText'\n\ntype ResponseCurveType = {\n value: Curve\n label: React.ReactNode\n c1: number\n c2: number\n x1: number\n y1: number\n x2: number\n y2: number\n labelX: number\n labelY: number\n}\n\n// const width = 218\n// const height = 150\nconst axisOffset = 20\nconst buttonSize = 15\n\nconst axisX1 = axisOffset\nconst axisY1 = axisOffset\n\ntype ResponseCurveProps = {\n autosize: boolean\n disabled?: boolean\n inverted: boolean\n onChange: (event: { target: { value: Curve } }) => void\n Tooltip: React.FC<TooltipProps>\n value: Curve\n}\n\nconst ResponseCurve = (props: ResponseCurveProps) => {\n const {\n Tooltip = DefaultTooltip,\n autosize,\n disabled,\n inverted,\n onChange,\n value: responseCurve,\n } = props\n\n const ref = useRef(null)\n const svgRef = useRef(null)\n const { height: ourHeight, width: ourWidth } = useComponentSize(ref)\n\n const width = autosize ? ourWidth || 218 : 218\n const height = autosize ? ourHeight || 150 : 150\n\n const axisX2 = width - axisOffset\n const axisY2 = height - axisOffset\n\n const xMid = width / 2\n const yMid = height / 2\n\n const svgProps = { ref: svgRef }\n\n const responseCurves = origResponseCurves.map(\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>\n ({ value, label }): ResponseCurveType => {\n let c1 = 0\n let c2 = 0\n let x1 = axisX1\n let y1 = inverted ? axisY1 : axisY2\n let x2 = axisX2\n let y2 = inverted ? axisY2 : axisY1\n let labelX = xMid\n let labelY = yMid\n switch (value) {\n case 0:\n c1 = xMid\n c2 = yMid\n labelY += 3\n\n break\n case 1:\n c1 = inverted ? xMid + width * 0.13 : xMid - width * 0.13\n c2 = yMid - height * 0.13\n labelX = inverted ? xMid + width * 0.1 : xMid - width * 0.1\n labelY = yMid - height * 0.09\n break\n\n case 2:\n c1 = inverted ? xMid + width * 0.25 : xMid - width * 0.25\n c2 = yMid - height * 0.25\n labelX = inverted ? xMid + width * 0.2 : xMid - width * 0.2\n labelY = yMid - height * 0.17\n break\n\n case 3:\n c1 = inverted ? xMid + width * 0.35 : xMid - width * 0.35\n c2 = yMid - height * 0.35\n labelX = inverted ? xMid + width * 0.28 : xMid - width * 0.28\n labelY = yMid - height * 0.25\n break\n\n case 4:\n c1 = inverted ? xMid - width * 0.13 : xMid + width * 0.13\n c2 = yMid + height * 0.13\n labelX = inverted ? xMid - width * 0.1 : xMid + width * 0.1\n labelY = yMid + height * 0.1\n break\n\n case 5:\n c1 = inverted ? xMid - width * 0.25 : xMid + width * 0.25\n c2 = yMid + height * 0.25\n labelX = inverted ? xMid - width * 0.2 : xMid + width * 0.2\n labelY = yMid + height * 0.18\n break\n\n case 6:\n c1 = inverted ? xMid - width * 0.35 : xMid + width * 0.35\n c2 = yMid + height * 0.35\n labelX = inverted ? xMid - width * 0.28 : xMid + width * 0.28\n labelY = yMid + height * 0.25\n break\n\n case 7:\n x1 = inverted ? axisX1 : axisX2\n y1 = axisY1\n x2 = x1\n y2 = axisY2\n c1 = x1\n c2 = yMid\n labelX = x1 - 5\n labelY = height - 30\n break\n\n default:\n break\n }\n return {\n value,\n label,\n c1,\n c2,\n x1,\n y1,\n x2,\n y2,\n labelX,\n labelY,\n }\n },\n )\n\n return (\n <div\n className=\"response-curve-picker\"\n ref={ref}>\n <svg {...svgProps}>\n <rect\n className=\"container\"\n height={height}\n rx={3}\n ry={3}\n width={width}\n x={0}\n y={0}\n />\n\n <SvgText\n className=\"axis\"\n textAnchor=\"middle\"\n transform={`translate(${axisX1 - 14} ${height / 2}) rotate(90)`}\n x={0}\n y={0}\n text=\"Applied force\"\n />\n\n <SvgText\n className=\"axis\"\n textAnchor=\"middle\"\n transform={`translate(${width / 2} ${axisY2 + 13})`}\n x={0}\n y={0}\n text=\"Output (velocity)\"\n />\n\n <line\n className=\"axis\"\n x1={axisX1}\n x2={axisX1}\n y1={axisY1}\n y2={axisY2}\n />\n <line\n className=\"axis\"\n x1={axisX1}\n x2={axisX2}\n y1={axisY2}\n y2={axisY2}\n />\n\n {responseCurves.map(\n ({ value, label, x1, y1, x2, y2, c1, c2, labelX, labelY }) => (\n <g key={value}>\n <path\n className={value === responseCurve ? 'curve-selected' : 'curve'}\n d={`M${x1} ${y1} C ${c1} ${c2}, ${c1} ${c2}, ${x2} ${y2}`}\n />\n\n <Tooltip\n placement=\"left\"\n title={label}>\n <rect\n className={\n value === responseCurve ? 'button-selected' : 'button'\n }\n height={buttonSize}\n onClick={\n disabled\n ? f => f\n : () =>\n onChange({\n target: {\n value: Number.parseInt(String(value)) as Curve,\n },\n })\n }\n transform={`translate(${labelX + 3} ${labelY - buttonSize / 1.05}) rotate(45)`}\n width={buttonSize}\n />\n </Tooltip>\n\n <text\n className={\n value === responseCurve ? 'button-selected' : 'button'\n }\n transform={`translate(${labelX} ${labelY})`}>\n {value}\n <title>{label}</title>\n </text>\n </g>\n ),\n )}\n </svg>\n </div>\n )\n}\n\nexport { ResponseCurve }\n\nexport type { ResponseCurveType, ResponseCurveProps }\n","import { forwardRef, useCallback } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { type Curve, responseCurves } from '../midi/export'\nimport { DefaultTooltip, type TooltipProps } from '../other/DefaultTooltip'\nimport { findObj } from '../utils'\nimport { ResponseCurve } from './ResponseCurve'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype ResponseCurvePickerProps = SelectProps<Curve> & {\n inverted?: boolean\n Tooltip?: React.FC<TooltipProps>\n}\n\ntype ResponseCurvePickerRef = SelectInstance<\n Option<Curve>,\n false,\n GroupBase<Option<Curve>>\n>\n\nconst ResponseCurvePicker = forwardRef<\n SelectInstance<Option<Curve>, false, GroupBase<Option<Curve>>>,\n ResponseCurvePickerProps\n>((props, ref) => {\n const {\n Tooltip = DefaultTooltip,\n inverted = false,\n onChange,\n value,\n ...rest\n } = props\n\n const Placeholder = useCallback(() => {\n const option = findObj('value', value)(responseCurves) as Option<Curve>\n return option ? (\n <div className=\"singleValue\">{option.label}</div>\n ) : (\n <div className=\"zds-pickers__placeholder\">Select...</div>\n )\n }, [value])\n\n const MenuList = useCallback(\n ({ setValue }: { setValue: (v: Curve) => void }) => (\n <ResponseCurve\n autosize\n inverted={inverted}\n onChange={({ target: { value: v } }) => {\n setValue(v)\n onChange(v)\n }}\n Tooltip={Tooltip}\n value={Number.parseInt(String(value)) as Curve}\n />\n ),\n [Tooltip, inverted, onChange, value],\n )\n\n return (\n <Select\n {...rest}\n components={{\n Placeholder,\n MenuList,\n }}\n isSearchable={false}\n onChange={f => f}\n ref={ref}\n value={value}\n />\n )\n})\n\nexport { ResponseCurvePicker }\n\nexport type { ResponseCurvePickerProps, ResponseCurvePickerRef }\n","import type { Status } from 'lib/midi/export'\nimport { forwardRef } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype StatusPickerProps = Omit<SelectProps<Status>, 'options'> & {\n statuses: Option<Status>[]\n}\n\ntype StatusPickerRef = SelectInstance<\n Option<Status>,\n false,\n GroupBase<Option<Status>>\n>\n\nconst StatusPicker = forwardRef<\n SelectInstance<Option<Status>, false, GroupBase<Option<Status>>>,\n StatusPickerProps\n>(({ statuses, ...rest }, ref) => (\n <Select<Status>\n {...rest}\n options={statuses}\n ref={ref}\n />\n))\n\nexport { StatusPicker }\n\nexport type { StatusPickerProps, StatusPickerRef }\n","import { forwardRef, useCallback, useMemo } from 'react'\nimport type { GroupBase, SelectInstance } from 'react-select'\nimport useStateWithDynamicDefault from '../hooks/useStateWithDynamicDefault'\nimport { arraySequence, assertRange } from '../utils'\nimport { Select } from './Select'\nimport type { Option, SelectProps } from './Select'\n\ntype ValuePickerProps = Omit<SelectProps<number>, 'options'> & {\n highToLow?: boolean\n max?: number\n min?: number\n}\n\ntype ValuePickerRef = SelectInstance<\n Option<number>,\n false,\n GroupBase<Option<number>>\n>\n\nconst ValuePicker = forwardRef<\n SelectInstance<Option<number>, false, GroupBase<Option<number>>>,\n ValuePickerProps\n>((props, ref) => {\n const {\n disabled,\n highToLow,\n max = 127,\n min = 0,\n onChange,\n value: initialValue = 0,\n ...rest\n } = props\n const options = useMemo(() => {\n const result = arraySequence(max - min + 1)\n .map(i => min + i)\n .map(value => ({ value, label: value }))\n return (highToLow\n ? result.reverse()\n : result) as unknown as Option<number>[]\n }, [highToLow, max, min])\n\n const [value, setValue] = useStateWithDynamicDefault(initialValue)\n\n const handleChange = useCallback(\n (v: number | string) => {\n onChange(assertRange(v, max, min))\n\n setValue(Number.parseInt(String(v), 10))\n },\n [max, min, onChange, setValue],\n )\n\n return (\n <Select\n {...rest}\n disabled={disabled}\n onChange={handleChange}\n options={options}\n ref={ref}\n value={value}\n />\n )\n})\n\nexport { ValuePicker }\n\nexport type { ValuePickerProps, ValuePickerRef }\n"],"names":["arraySequence","numberOfElements","assertRange","value","max","min","result","findObj","key","arr","item","omit","keys","obj","_obj","val","pick","set","changeControllerOptions","label","Statuses","MASK_CHANNEL","MASK_STATUS","statusOptions","getStatusLabel","_a","combineStatusWithChannel","channel","status","extractStatusAndChannel","RESPONSE_CURVE_0","RESPONSE_CURVE_1","RESPONSE_CURVE_2","RESPONSE_CURVE_3","RESPONSE_CURVE_4","RESPONSE_CURVE_5","RESPONSE_CURVE_6","RESPONSE_CURVE_7","ResponseCurveLabels","responseCurves","DefaultTooltip","children","createElement","Fragment","isNamedPitch","src","isPitch","pitch2","FIFTHS","STEPS_TO_OCTS","fifths","coordinates","step","alt","oct","dir","f","o","FIFTHS_TO_STEPS","pitch","coord","unaltered","i","fillStr","s","n","NoInterval","INTERVAL_TONAL_REGEX","INTERVAL_SHORTHAND_REGEX","REGEX","tokenizeInterval","str","m","cache","interval","parse","pitchName","SIZES","TYPES","tokens","num","q","t","type","name","simple","qToAlt","semitones","chroma","props","calcNum","d","altToQ","NoNote","stepToLetter","altToAcc","accToAlt","acc","note","stringSrc","cached","tokenizeNote","coordToNote","noteCoord","mod","SEMI","noteName","letter","octStr","pc","height","midi","freq","transpose","intervalName","asNote","intervalCoord","asInterval","tr","rotate","times","len","EmptyPcset","setNumToChroma","num2","chromaToNumber","chroma2","isChroma","isPcsetNum","isPcset","get","listToChroma","chromaToPcset","IVLS","chromaToIntervals","intervals2","chromaRotations","binary","_","setNum","normalizedNum","normalized","CHORDS","data_default","dictionary","index","add","intervals","aliases","fullName","quality","getQuality","chord","pcset","alias","addAlias","has","ivls","names2","a","b","SCALES","NoScaleType","scale","DATA","denominator","shorthand","isMidi","arg","toMidi","midiToFreq","tuning","L2","L440","freqToMidi","v","SHARPS","FLATS","midiToNoteName","options","pcsetFromChroma","pcset2","pcsetFromMidi","notes","pcsetNearest","ch","pcsetSteps","tonic","octaves","pcsetDegrees","steps","degree","index_default","fromMidi","midi2","MODES","NoMode","modes","toMode","mode2","modeNum","triad","seventh","getType","chords","chords2","modeName","triads2","tonics","x","justRange","range","start","stop","toReturn","increasing","c","e","g","h","k","l","p","r","w","y","z","u","A","reactIs_production_min","hasSymbol","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_BLOCK_TYPE","REACT_FUNDAMENTAL_TYPE","REACT_RESPONDER_TYPE","REACT_SCOPE_TYPE","isValidElementType","typeOf","object","$$typeof","$$typeofType","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","hasWarnedAboutDeprecatedIsAsyncMode","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","reactIs_development","reactIsModule","require$$0","require$$1","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","toObject","shouldUseNative","test1","test2","order2","test3","objectAssign","target","source","from","to","symbols","ReactPropTypesSecret","ReactPropTypesSecret_1","printWarning","loggedTypeFailures","text","message","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","error","err","ex","stack","checkPropTypes_1","ReactIs","assign","require$$2","require$$3","require$$4","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","iteratorFn","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","createAnyTypeChecker","createArrayOfTypeChecker","createElementTypeChecker","createElementTypeTypeChecker","createInstanceTypeChecker","createNodeChecker","createObjectOfTypeChecker","createEnumTypeChecker","createUnionTypeChecker","createShapeTypeChecker","createStrictShapeTypeChecker","is","PropTypeError","data","createChainableTypeChecker","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","isRequired","propName","propFullName","secret","cacheKey","chainedCheckType","expectedType","propValue","propType","getPropType","preciseType","getPreciseType","typeChecker","expectedClass","expectedClassName","actualClassName","getClassName","expectedValues","valuesString","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","expectedTypes","checkerResult","expectedTypesMessage","isNode","invalidValidatorError","shapeTypes","allKeys","iterator","entry","isSymbol","emptyFunction","emptyFunctionWithReset","factoryWithThrowingShims","shim","getShim","propTypesModule","LARGE_ARRAY_SIZE","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","funcTag","genTag","reRegExpChar","reIsHostCtor","freeGlobal","global","freeSelf","root","apply","func","thisArg","args","arrayIncludes","array","length","baseIndexOf","arrayPush","offset","baseFindIndex","predicate","fromIndex","fromRight","baseIsNaN","cacheHas","getValue","isHostObject","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","uid","funcToString","objectToString","reIsNative","Symbol","propertyIsEnumerable","splice","spreadableSymbol","nativeMax","Map","getNative","nativeCreate","Hash","entries","hashClear","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","lastIndex","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","setCacheAdd","setCacheHas","eq","baseDifference","iteratee","comparator","includes","isCommon","valuesLength","outer","computed","valuesIndex","baseFlatten","depth","isStrict","isFlattenable","baseIsNative","isObject","isMasked","pattern","isFunction","toSource","baseRest","otherArgs","map","isKeyable","isArray","isArguments","difference","isArrayLikeObject","other","isArrayLike","isLength","isObjectLike","tag","lodash_difference","_iterableToArrayLimit","_i","_s","_e","_x","_r","_arr","_n","_d","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_defineProperty","_extends","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","_isNativeReflectConstruct","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_assertThisInitialized","self","_possibleConstructorReturn","call","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","_slicedToArray","_arrayWithHoles","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_toPrimitive","input","hint","prim","res","SORTED_PITCHES","ACCIDENTAL_PITCHES","PITCH_INDEXES","MIDI_NUMBER_C0","MIN_MIDI_NUMBER","MAX_MIDI_NUMBER","NOTE_REGEX","NOTES_IN_OCTAVE","fromNote","match","_match","accidental","octave","pitchIndex","buildMidiNumberAttributes","midiNumber","buildMidiNumberAttributesCache","midiNumberAttributesCache","getAttributes","attrs","NATURAL_MIDI_NUMBERS","MidiNumbers","middleC","Key","_React$Component","_super","_this","_len","_key","OCTAVE_WIDTH","_MidiNumbers$getAttri","pitchPosition","octavePosition","_this2","_this$props","naturalKeyWidth","accidentalWidthRatio","gliss","useTouchEvents","active","selected","disabled","left","ratioToPercentage","width","React","classNames","PropTypes","ratio","Keyboard","number","isAccidental","keyWidth","_MidiNumbers$getAttri2","isActive","isSelected","noteRangePropType","isNaturalMidiNumber","_props$propName","first","last","ControlledPiano","_ref","prevActiveNotes","nextActiveNotes","notesStopped","notesStarted","shortcut","sh","event","_ref2","keyboardShortcut","prevProps","prevState","_ref3","_excluded","Piano","selectedNotes","otherProps","b64ToUint6","nChr","decode","sBase64","nBlocksSize","sB64Enc","nInLen","nOutLen","taBytes","nMod3","nMod4","nUint24","nOutIdx","nInIdx","base64","fetch","url","done","reject","req","fromRegex","prefix","pre","load","ac","defVal","loader","isArrayBuffer","loadArrayBuffer","isAudioFileName","loadAudioFile","isPromise","loadPromise","loadArrayData","loadObjectData","isJsonFileName","loadJsonFile","isBase64Audio","loadBase64Audio","isJsFileName","loadMidiJSFile","opts","buffer","promise","dest","promises","audio","midiJsToJson","begin","end","module","adsr","ADSR","audioContext","node","voltage","getVoltage","startValue","endValue","at","startAmount","endAmount","sustain","getTimeConstant","isTarget","endTime","expFalloff","valueAtTime","flat","context","gain","time","fromTime","toTime","truncateTime","phase","EMPTY","DEFAULTS","SamplePlayer","connected","nextId","tracked","out","player","when","createNode","track","ids","id","fn","now","envelope","centsToRate","stopAt","isNum","PARAMS","env","cents","events","cb","prop","old","chain","fn1","fn2","regex","SEMITONES","isTonic","parser","FNS","noteParser","toKey","mapper","mapBuffers","dec","buffers","mapped","isArr","isObj","OPTS","scheduler","require","midimessage","started","vel","msg","mm","isStr","isDef","pos","LETTERS","accStr","build","Soundfont","ctx","nameToUrl","callback","inst","oscillatorPlayer","instrument","loadBuffers","defaultOptions","duration","destination","vcoType","vco","vca","legacy","isUrl","isSoundfontURL","toUrl","sf","format","isDefined","SoundfontProvider","hostname","instrumentName","onChange","render","soundfont","isLoading","setIsLoading","useState","activeAudioNodes","setActiveAudioNodes","setInstrument","loadInstrument","useCallback","nm","fmt","newInstrument","soundfontData","_b","Note.fromMidi","velocity","noteData","useEffect","audioNode","prev","rest","nodes","baseNotes","numNotes","whiteNotes","BaseOctavePlayer","keyWidthToHeight","firstNote","Note.midi","lastNote","jsx","ReactPiano","WithProvider","onClick","onDoubleClick","onKeyMouseEnter","onKeyMouseLeave","Tooltip","playNote","stopNote","MEASUREMENT_ELEMENT_ID","calculateWordsByLines","wordWidths","maxWidth","maxHeight","lineHeight","spaceWidth","wordsWithComputedWidth","word","wordWidth","currentLine","newLine","calculateWordWidths","style","textNode","wordMap","SvgText","className","dx","dy","verticalAnchor","transform","setWordWidths","textLines","setTextLines","setComputedStyle","measureRef","useRef","displayedLines","useMemo","showLine","line","ref","el","svg","wordWithWidths","lines","startDy","jsxs","idx","noSelection","IndicatorsContainer","Placeholder","ValueContainer","originalComponents","noSelectionOption","CustomIndicatorsContainer","actionButton","CustomValueContainer","Children","child","Select","forwardRef","components","preserveMenuWidth","shrinkLabel","handleChange","option","flatOptionsList","selectedOption","styles","base","provided","_provided","state","ReactSelect","CCPicker","ChannelMappingPicker","channels","setOptions","formatOptionLabel","mapping","numFilled","separatorExists","cl","filterOptions","ChannelPicker","KeyPicker","handleKeyClick","octaveStart","octaveEnd","shouldHighlight","OctavePlayer","useStateWithDynamicDefault","defaultVal","setState","dist","reactSvgmt","InternalInput","hideStyle","onValChange","inputRef","__publicField","toRadians","angle","getQuadrant","getAngleForPoint","angleDeg","quadrant","DrawCircle","borderColor","fillColor","borderWidth","fillOpacity","DrawLine","color","p1","p2","HelpersOverlay","ReactDOM","KnobVisualHelpers","vbox","halfWidth","valueMarkerX","valueMarkerY","markCircleColor","minDistanceCueVisible","defaultSkin","RotaryKnob","clampMax","clampMin","defaultValue","onEnd","onStart","preciseMode","rotateDegrees","skin","unlockDistance","isControlled","setIsControlled","container","scaleProps","normalizeAngle","convertValueToAngle","getScale","convertAngleToValue","angle2","scaleLinear","select","setupDragging","saveRef","elem","onAngleChanged","domainValue","st","cx","cy","startPos","startAngle","initialAngle","monitoring","currentValue","dragged","currentPos","distanceFromCenter","deltaAngle","finalAngle","ended","dragInstance","drag","onFormControlChange","newVal","updateAttrs","skinElemUpdates","elemUpdate","ix","elemContent","attributes","attr","SvgProxy","SvgLoader","knobSkin10","_props","Knob","initialValue","wheelEnabled","wheelSensitivity","setValue","newValue","handleWheel","delta","KnobPicker","highToLow","includeLabel","includePicker","knobProps","LatchPicker","MappingPicker","allowClearing","stockMappings","getStockNames","userMappings","getUserMappingNames","Midi","formattedMapEntry","formattedListEntry","NotePicker","isMelodicMode","emptyMapping","possibleNoteNumber","BasePianoPicker","PolarityPicker","labelOff","labelOn","getSize","useComponentSize","componentSize","setComponentSize","handleResize","useLayoutEffect","resizeObserver","axisOffset","buttonSize","axisX1","axisY1","ResponseCurve","autosize","inverted","responseCurve","svgRef","ourHeight","ourWidth","axisX2","axisY2","xMid","yMid","svgProps","origResponseCurves","c1","c2","x1","y1","x2","y2","labelX","labelY","ResponseCurvePicker","MenuList","StatusPicker","statuses","ValuePicker"],"mappings":"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","x_google_ignoreList":[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,53,54]}