solid-pianoroll 0.0.20 → 0.0.21
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.
- package/dist/cjs/index.js +74 -95
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +75 -96
- package/dist/esm/index.js.map +1 -1
- package/dist/source/PianoRollContext.jsx +2 -35
- package/dist/source/PianoRollKeys.jsx +4 -10
- package/dist/source/PlayHead.jsx +2 -5
- package/dist/source/usePianoRollState.js +44 -44
- package/dist/types/PianoRollContext.d.ts +63 -29
- package/dist/types/usePianoRollState.d.ts +18 -15
- package/package.json +1 -1
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../node_modules/style-inject/dist/style-inject.es.js","../../src/PianoRollContext.tsx","../../src/viewport/createViewPortDimension.ts","../../src/viewport/ScrollZoomViewPort.tsx","../../src/viewport/ScrollZoomContainer.tsx","../../src/PianoRollKeys.tsx","../../src/PianoRollNotes.tsx","../../src/PianoRollGrid.tsx","../../src/useBoundingClientRect.ts","../../src/viewport/ZoomSliderControl.tsx","../../src/PianoRollTrackList.tsx","../../src/PianoRoll.tsx","../../src/PlayHead.tsx","../../src/useNotes.ts","../../src/usePianoRollState.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { createContext, splitProps, useContext } from \"solid-js\";\n\nimport { PianoRollProps } from \"./PianoRoll\";\nimport createPianoRollstate from \"./usePianoRollState\";\n\nconst PianoRollContext = createContext<\n {\n showAllTracks?: boolean;\n showTrackList?: boolean;\n } & ReturnType<typeof createPianoRollstate>\n>();\n\nexport const PianoRollContextProvider = PianoRollContext.Provider;\n\nexport const usePianoRollContext = () => {\n const context = useContext(PianoRollContext);\n\n if (!context) throw new Error(\"No PianoRollContext found\");\n\n return context;\n};\n\nexport const splitContextProps = (allProps: PianoRollProps) =>\n splitProps(allProps, [\n \"ppq\",\n \"mode\",\n \"position\",\n \"zoom\",\n \"verticalZoom\",\n \"verticalPosition\",\n \"verticalTrackZoom\",\n \"verticalTrackPosition\",\n \"gridDivision\",\n \"snapToGrid\",\n \"duration\",\n \"tracks\",\n \"selectedTrackIndex\",\n \"pressedKeys\",\n \"onPpqChange\",\n \"onModeChange\",\n \"onPositionChange\",\n \"onZoomChange\",\n \"onVerticalZoomChange\",\n \"onVerticalPositionChange\",\n \"onVerticalTrackZoomChange\",\n \"onVerticalTrackPositionChange\",\n \"onGridDivisionChange\",\n \"onSnapToGridChange\",\n \"onDurationChange\",\n \"onTracksChange\",\n \"onNoteChange\",\n \"onInsertNote\",\n \"onRemoveNote\",\n \"onSelectedTrackIndexChange\",\n \"onPressedKeysChange\",\n \"showAllTracks\",\n \"showTrackList\",\n ]);\n","import { createEffect } from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\n\nexport type ViewPortDimension = ReturnType<typeof createViewPortDimension>;\nexport type ViewPortDimensionName = string;\nexport type ViewPortDimensionState = {\n position: number;\n range: number;\n\n pixelOffset: number;\n pixelSize: number;\n\n name: ViewPortDimensionName;\n\n onZoomChange?: (zoom: number) => void;\n onPositionChange?: (zoom: number) => void;\n\n zoom: number;\n\n minZoom: number;\n maxZoom: number;\n};\n\nexport default function createViewPortDimension(getState: () => ViewPortDimensionState) {\n const getStateWithFunctions = () => {\n const state = getState();\n\n const onZoomChange = (zoom: number) =>\n state.onZoomChange?.(clamp(zoom, state.minZoom, state.maxZoom));\n\n const onPositionChange = (position: number) => state.onPositionChange?.(position);\n\n return {\n ...state,\n onZoomChange,\n onPositionChange,\n calculatePixelOffset,\n calculatePixelValue,\n calculatePosition,\n calculatePixelDimensions,\n calculateVisibleRange,\n calculateMaxPosition,\n isVisible,\n };\n };\n\n const [state, setState] = createStore(getStateWithFunctions());\n createEffect(() => setState(getStateWithFunctions()));\n\n function calculatePixelValue(position: number = state.position) {\n const virtualSize = state.pixelSize * state.zoom;\n return (position / state.range) * virtualSize;\n }\n\n function calculatePixelOffset(position: number) {\n return calculatePixelValue(position) - calculatePixelValue(state.position);\n }\n\n function calculatePosition(offset: number) {\n const percentX = (offset - state.pixelOffset) / state.pixelSize;\n const position = state.position + percentX * calculateVisibleRange();\n\n return position;\n }\n\n function calculateVisibleRange() {\n return state.range / state.zoom;\n }\n\n function calculateMaxPosition() {\n return state.range - state.range / state.zoom;\n }\n\n function calculatePixelDimensions(position: number, length: number) {\n const offset = calculatePixelOffset(position);\n const size = calculatePixelValue(length);\n\n return { offset, size };\n }\n\n function isVisible({ offset, size }: { offset: number; size: number }) {\n return offset + size > 0 && offset < state.pixelSize;\n }\n\n return state;\n}\n\nexport const clamp = (value: number, min: number, max: number) =>\n Math.max(min, Math.min(max, value));\n","import { createContext, ParentProps, useContext } from \"solid-js\";\nimport createViewPortDimension, {\n ViewPortDimension,\n ViewPortDimensionName,\n ViewPortDimensionState,\n} from \"./createViewPortDimension\";\n\nconst defaultViewPortProps = {\n pixelOffset: 0,\n position: 0,\n range: 1,\n zoom: 1,\n minZoom: 1,\n maxZoom: Infinity,\n};\n\nexport const ScrollZoomViewPort = (\n props: ParentProps<{\n dimensions: Record<\n ViewPortDimensionName,\n () => Omit<ViewPortDimensionState, \"name\" | keyof typeof defaultViewPortProps> &\n Partial<Pick<ViewPortDimensionState, keyof typeof defaultViewPortProps>>\n >;\n }>,\n) => {\n const viewPorts = Object.entries(props.dimensions).map(([name, viewPortProps]) =>\n createViewPortDimension(() => ({\n name: name as ViewPortDimensionName,\n ...defaultViewPortProps,\n ...viewPortProps(),\n })),\n );\n\n const parentViewPorts = useContext(ScrollZoomViewPortContext);\n\n return (\n <ScrollZoomViewPortContext.Provider value={[...parentViewPorts, ...viewPorts]}>\n {props.children}\n </ScrollZoomViewPortContext.Provider>\n );\n};\n\nconst ScrollZoomViewPortContext = createContext<ViewPortDimension[]>([]);\n\nexport const useViewPortDimension = (name: ViewPortDimensionName) => {\n const viewPorts = useContext(ScrollZoomViewPortContext);\n\n const viewPort = name\n ? viewPorts.find((viewPort) => viewPort.name === name)\n : viewPorts[viewPorts.length - 1];\n\n if (!viewPort) throw new Error(`ViewPort dimension \"${name}\" not found.`);\n\n return viewPort;\n};\n","import { createEffect, createMemo, JSX, mergeProps, ParentProps, Ref, splitProps } from \"solid-js\";\n\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nimport styles from \"./ScrollZoomContainer.module.css\";\n\nconst ScrollZoomContainer = (\n props: ParentProps<\n {\n ref?: Ref<HTMLDivElement>;\n verticalDimensionName?: string;\n horizontalDimensionName?: string;\n showScrollbar?: boolean;\n } & JSX.IntrinsicElements[\"div\"]\n >,\n) => {\n let scrollContentRef: HTMLDivElement | undefined;\n\n const [ownProps, divProps] = splitProps(props, [\n \"ref\",\n \"verticalDimensionName\",\n \"horizontalDimensionName\",\n \"showScrollbar\",\n ]);\n\n const propsWithDefaults = mergeProps(\n {\n verticalDimensionName: \"vertical\",\n horizontalDimensionName: \"horizontal\",\n showScrollbar: true,\n },\n ownProps,\n );\n\n const verticalViewPort = createMemo(() =>\n useViewPortDimension(propsWithDefaults.verticalDimensionName),\n );\n const horizontalViewPort = createMemo(() =>\n useViewPortDimension(propsWithDefaults.horizontalDimensionName),\n );\n\n const handleScroll = (event: UIEvent & { currentTarget: Element }) => {\n event.preventDefault();\n\n if (didUpdateScroll) {\n didUpdateScroll = false;\n return;\n }\n\n const maxVerticalPosition = verticalViewPort().calculateMaxPosition();\n const maxPosition = horizontalViewPort().calculateMaxPosition();\n\n const height = verticalViewPort().pixelSize;\n const width = horizontalViewPort().pixelSize;\n const { scrollTop, scrollLeft, scrollWidth, scrollHeight } = event.currentTarget;\n\n const scrollTopAmount = scrollTop / (scrollHeight - height);\n const scrollLeftAmount = scrollLeft / (scrollWidth - width);\n\n verticalViewPort().onPositionChange?.(maxVerticalPosition * scrollTopAmount);\n horizontalViewPort().onPositionChange?.(maxPosition * scrollLeftAmount);\n };\n\n const handleWheel = (event: WheelEvent & { currentTarget: Element }) => {\n if (event.altKey) {\n event.preventDefault();\n\n if (Math.abs(event.deltaX) > Math.abs(event.deltaY)) {\n horizontalViewPort()?.onZoomChange?.(\n horizontalViewPort().zoom * (1 + event.deltaX / horizontalViewPort().pixelSize),\n );\n const maxPosition = horizontalViewPort().calculateMaxPosition();\n\n horizontalViewPort()?.onPositionChange?.(\n Math.min(maxPosition, horizontalViewPort()?.position),\n );\n } else {\n verticalViewPort()?.onZoomChange?.(\n verticalViewPort().zoom * (1 + event.deltaY / verticalViewPort().pixelSize),\n );\n const maxVerticalPosition = verticalViewPort().calculateMaxPosition();\n\n verticalViewPort()?.onPositionChange?.(\n Math.min(maxVerticalPosition, verticalViewPort()?.position),\n );\n }\n } else if (!props.showScrollbar) {\n event.preventDefault();\n event.currentTarget.scrollLeft += event.deltaX;\n event.currentTarget.scrollTop += event.deltaY;\n }\n };\n\n let didUpdateScroll = false;\n\n createEffect(() => {\n const maxVerticalPosition = verticalViewPort().calculateMaxPosition();\n const maxPosition = horizontalViewPort().calculateMaxPosition();\n\n const scrollTopAmount =\n maxVerticalPosition > 0 ? verticalViewPort().position / maxVerticalPosition : 0;\n const scrollLeftAmount = maxPosition > 0 ? horizontalViewPort().position / maxPosition : 0;\n\n const height = verticalViewPort().pixelSize;\n const width = horizontalViewPort().pixelSize;\n\n if (!scrollContentRef?.parentElement) return;\n\n const scrollDivHeight = verticalViewPort().zoom * verticalViewPort().pixelSize;\n const scrollTop = scrollTopAmount * (scrollDivHeight - height);\n\n const scrollDivWidth = horizontalViewPort().zoom * horizontalViewPort().pixelSize;\n const scrollLeft = scrollLeftAmount * (scrollDivWidth - width);\n\n didUpdateScroll = true;\n\n scrollContentRef.style.height = `${scrollDivHeight}px`;\n scrollContentRef.style.width = `${scrollDivWidth}px`;\n\n scrollContentRef.parentElement.scrollTo({\n left: scrollLeft,\n top: scrollTop,\n });\n });\n\n return (\n <div\n ref={props.ref}\n onScroll={handleScroll}\n onWheel={handleWheel}\n {...divProps}\n style={{\n overflow: propsWithDefaults.showScrollbar ? \"scroll\" : \"hidden\",\n ...(typeof divProps.style === \"object\" && divProps.style),\n }}\n classList={{\n [styles.ScrollZoomContainer]: true,\n ...divProps.classList,\n }}\n >\n <div ref={scrollContentRef}>\n <div\n style={{\n top: 0,\n left: 0,\n height: `${verticalViewPort().pixelSize}px`,\n width: `${horizontalViewPort().pixelSize}px`,\n position: \"sticky\",\n display: \"flex\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n height: `${verticalViewPort().pixelSize}px`,\n width: `${horizontalViewPort().pixelSize}px`,\n }}\n >\n {props.children}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ScrollZoomContainer;\n","import styles from \"./PianoRollKeys.module.css\";\nimport { createEffect, createMemo, createSignal, Index, Show } from \"solid-js\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport ScrollZoomContainer from \"./viewport/ScrollZoomContainer\";\n\nconst PianoRollKeys = () => {\n const verticalViewPort = createMemo(() => useViewPortDimension(\"vertical\"));\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontalKeys\"));\n const [isMouseDown, setIsMouseDown] = createSignal(false);\n const context = usePianoRollContext();\n\n const handleMouseUp = () => {\n setIsMouseDown(false);\n };\n createEffect(() => {\n if (isMouseDown()) {\n window.addEventListener(\"mouseup\", handleMouseUp);\n } else {\n window.removeEventListener(\"mouseup\", handleMouseUp);\n }\n });\n\n return (\n <div class={styles.PianoRollKeys} style={{ width: `${horizontalViewPort().pixelSize}px` }}>\n <ScrollZoomContainer horizontalDimensionName=\"horizontalKeys\" showScrollbar={false}>\n <Index each={keys}>\n {(key) => {\n const isDown = createMemo(() => context.pressedKeys.includes(key().number));\n\n const handleKeyDown = () => {\n context.onPressedKeysChange?.([...context.pressedKeys, key().number]);\n };\n\n const handleKeyUp = () => {\n context.onPressedKeysChange?.(\n [...context.pressedKeys].filter((number) => number !== key().number),\n );\n };\n\n const virtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(127 - key().number, 1),\n );\n\n const previousIsBlack = blackKeys.includes((key().number - 1) % 12);\n const nextIsBlack = blackKeys.includes((key().number + 1) % 12);\n\n return (\n <Show when={virtualDimensions().size > 0}>\n <div\n classList={{\n [styles[\"Key\"]]: true,\n [styles[\"black\"]]: key().isBlack,\n [styles[\"white\"]]: !key().isBlack,\n [styles[\"down\"]]: isDown(),\n }}\n onMouseDown={() => {\n setIsMouseDown(true);\n handleKeyDown();\n }}\n onMouseUp={() => {\n handleKeyUp();\n }}\n onMouseEnter={() => {\n if (isMouseDown()) {\n handleKeyDown();\n }\n }}\n onMouseLeave={() => {\n if (isMouseDown()) {\n handleKeyUp();\n }\n }}\n title={key().name}\n data-index={key().number % 12}\n style={{\n top: `${\n virtualDimensions().offset -\n (!key().isBlack && nextIsBlack ? virtualDimensions().size / 2 : 0)\n }px`,\n height: `${\n virtualDimensions().size +\n (!key().isBlack && nextIsBlack ? virtualDimensions().size / 2 : 0) +\n (!key().isBlack && previousIsBlack ? virtualDimensions().size / 2 : 0)\n }px`,\n \"box-shadow\": [\n `0px 0px ${Math.min(virtualDimensions().size / 20, 1)}px ${Math.min(\n virtualDimensions().size / 50,\n 1,\n )}px rgba(0, 0, 0, 0.5) ${key().isBlack ? \"\" : \"inset\"}`,\n isDown() &&\n `0px 0px ${Math.min(virtualDimensions().size / 8, 2)}px ${Math.min(\n virtualDimensions().size / 20,\n 2,\n )}px rgba(0, 0, 0, 0.5) inset`,\n ]\n .filter((item) => !!item)\n .join(\", \"),\n }}\n >\n <Show when={key().isBlack && false}>\n <div\n class={styles[\"black-separator\"]}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size / 2 - 0.25}px`,\n }}\n ></div>\n </Show>\n </div>\n </Show>\n );\n }}\n </Index>\n </ScrollZoomContainer>\n </div>\n );\n};\n\nexport const blackKeys = [1, 3, 6, 8, 10];\nexport const keyNames = [\"C\", \"C#\", \"D\", \"D#\", \"E\", \"F\", \"F#\", \"G\", \"G#\", \"A\", \"A#\", \"B\"];\nexport const keys = Array.from({ length: 128 }).map((_, index) => ({\n number: index,\n name: `${keyNames[index % 12]} ${Math.floor(index / 12) - 2}`,\n isBlack: blackKeys.includes(index % 12),\n}));\n\nexport default PianoRollKeys;\n","import { batch, createMemo, createSignal, For, Ref, Show } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport styles from \"./PianoRollNotes.module.scss\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\n\ntype NoteDragMode = \"trimStart\" | \"move\" | \"trimEnd\" | undefined;\n\nconst PianoRollNotes = (props: { ref?: Ref<HTMLDivElement | undefined> }) => {\n const context = usePianoRollContext();\n\n const verticalViewPort = createMemo(() =>\n useViewPortDimension(context.mode === \"keys\" ? \"vertical\" : \"verticalTracks\"),\n );\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\n\n const gridDivisionTicks = createMemo(() => (context.ppq * 4) / context.gridDivision);\n\n const snapValueToGridIfEnabled = (value: number, altKey: boolean) =>\n context.snapToGrid && !altKey\n ? Math.round(value / gridDivisionTicks()) * gridDivisionTicks()\n : value;\n\n const insertOrUpdateNote = (event: MouseEvent) => {\n const position = horizontalViewPort().calculatePosition(event.clientX);\n\n const existingNote = currentNote();\n\n const midi =\n context.mode === \"keys\"\n ? 127 - Math.floor(verticalViewPort().calculatePosition(event.clientY))\n : existingNote?.midi ?? 60;\n\n const targetTrackIndex =\n context.mode === \"tracks\"\n ? clamp(\n Math.floor(verticalViewPort().calculatePosition(event.clientY)),\n 0,\n context.tracks.length - 1,\n )\n : context.selectedTrackIndex ?? 0;\n\n const eventPositionTicks = Math.floor(position / gridDivisionTicks()) * gridDivisionTicks();\n const velocity = 127;\n\n const ticks = existingNote?.ticks ?? eventPositionTicks;\n const durationTicks = existingNote?.ticks\n ? eventPositionTicks - existingNote?.ticks\n : gridDivisionTicks();\n\n const note = { midi, ticks, durationTicks, velocity };\n\n if (existingNote) {\n context.onNoteChange?.(currentNoteTrackIndex(), currentNoteIndex(), note);\n return currentNoteIndex();\n } else {\n return context.onInsertNote?.(targetTrackIndex, note) ?? -1;\n }\n };\n\n const [isDragging, setIsDragging] = createSignal(false);\n const [noteDragMode, setNoteDragMode] = createSignal<NoteDragMode>();\n const [currentNoteIndex, setCurrentNoteIndex] = createSignal(-1);\n const [currentNoteTrackIndex, setCurrentNoteTrackIndex] = createSignal(-1);\n const [isMouseDown, setIsMouseDown] = createSignal(false);\n\n const currentNote = createMemo(\n () => context.tracks[currentNoteTrackIndex()]?.notes[currentNoteIndex()],\n );\n\n const getClasses = (noteDragMode: NoteDragMode) => {\n return noteDragMode ? [styles.Note, styles[noteDragMode]] : [styles.Note];\n };\n\n return (\n <div\n classList={{ [styles.PianoRollNotes]: true }}\n ref={props.ref}\n onMouseDown={(event) => {\n batch(() => {\n setIsMouseDown(true);\n const index = insertOrUpdateNote(event);\n\n setCurrentNoteTrackIndex(context.selectedTrackIndex ?? 0);\n setCurrentNoteIndex(index);\n });\n }}\n onMouseMove={(event) => {\n if (isDragging()) return;\n\n if (!isMouseDown()) {\n setNoteDragMode(undefined);\n return;\n }\n\n const index = insertOrUpdateNote(event);\n\n setCurrentNoteIndex(index);\n }}\n onMouseUp={(event) => {\n setIsMouseDown(false);\n if (!event.altKey) return;\n insertOrUpdateNote(event);\n }}\n onDblClick={(event) => {\n insertOrUpdateNote(event);\n }}\n onClick={(event) => {\n if (currentNote()) {\n setCurrentNoteIndex(-1);\n return;\n }\n if (!event.altKey) return;\n insertOrUpdateNote(event);\n }}\n >\n <For each={context.tracks}>\n {(track, trackIndex) => {\n return (\n <Show\n when={\n trackIndex() === context.selectedTrackIndex ||\n context.showAllTracks ||\n context.mode === \"tracks\"\n }\n >\n <For each={track.notes}>\n {(note, noteIndex) => {\n const verticalVirtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(\n context.mode === \"keys\" ? 127 - note.midi : trackIndex(),\n 1,\n ),\n );\n\n const horizontalDimensions = createMemo(() =>\n horizontalViewPort().calculatePixelDimensions(note.ticks, note.durationTicks),\n );\n\n return (\n <Show\n when={\n verticalViewPort().isVisible(verticalVirtualDimensions()) &&\n horizontalViewPort().isVisible(horizontalDimensions())\n }\n >\n <div\n class={getClasses(noteDragMode()).join(\" \")}\n draggable={false}\n onMouseMove={(event) => {\n if (isDragging()) return;\n event.stopPropagation();\n\n const relativeX = horizontalViewPort().calculatePixelValue(\n horizontalViewPort().calculatePosition(event.clientX),\n );\n const noteStartX = horizontalViewPort().calculatePixelValue(note.ticks);\n const noteEndX = horizontalViewPort().calculatePixelValue(\n note.ticks + note.durationTicks,\n );\n\n setNoteDragMode(\n relativeX - noteStartX < 3\n ? \"trimStart\"\n : noteEndX - relativeX < 3\n ? \"trimEnd\"\n : \"move\",\n );\n }}\n onDblClick={(event) => {\n event.stopPropagation();\n context.onRemoveNote?.(trackIndex(), noteIndex());\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n\n setIsDragging(true);\n\n setCurrentNoteIndex(noteIndex());\n setCurrentNoteTrackIndex(trackIndex());\n\n const initialPosition = horizontalViewPort().calculatePosition(\n event.clientX,\n );\n const diffPosition = initialPosition - note.ticks;\n\n const handleMouseMove = (mouseMoveEvent: MouseEvent) => {\n const note = currentNote();\n if (!note) return;\n\n const ticks = snapValueToGridIfEnabled(\n Math.max(\n horizontalViewPort().calculatePosition(mouseMoveEvent.clientX) -\n diffPosition,\n 0,\n ),\n mouseMoveEvent.altKey,\n );\n\n const updatedNote = {\n ...note,\n ...(noteDragMode() === \"move\" &&\n context.mode === \"keys\" && {\n midi: Math.round(\n 127 -\n verticalViewPort().calculatePosition(mouseMoveEvent.clientY),\n ),\n }),\n ...((noteDragMode() === \"move\" || noteDragMode() === \"trimStart\") && {\n ticks,\n }),\n ...(noteDragMode() === \"trimStart\" && {\n durationTicks: note.durationTicks + note.ticks - ticks,\n }),\n ...(noteDragMode() === \"trimEnd\" && {\n durationTicks: snapValueToGridIfEnabled(\n horizontalViewPort().calculatePosition(mouseMoveEvent.clientX) -\n note.ticks,\n mouseMoveEvent.altKey,\n ),\n }),\n };\n\n const previousTrackIndex = currentNoteTrackIndex();\n const previousNoteIndex = currentNoteIndex();\n\n const targetTrackIndex =\n context.mode === \"tracks\"\n ? clamp(\n Math.floor(\n verticalViewPort().calculatePosition(mouseMoveEvent.clientY),\n ),\n 0,\n context.tracks.length - 1,\n )\n : previousTrackIndex;\n\n if (targetTrackIndex === previousTrackIndex) {\n context.onNoteChange?.(\n previousTrackIndex,\n previousNoteIndex,\n updatedNote,\n );\n } else {\n batch(() => {\n if (context.onInsertNote) {\n context.onRemoveNote?.(previousTrackIndex, previousNoteIndex);\n const newNoteIndex = context.onInsertNote(\n targetTrackIndex,\n updatedNote,\n );\n\n setCurrentNoteTrackIndex(targetTrackIndex);\n setCurrentNoteIndex(newNoteIndex);\n }\n });\n }\n };\n const handleMouseUp = () => {\n setIsDragging(false);\n setCurrentNoteIndex(-1);\n setCurrentNoteTrackIndex(-1);\n\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n style={{\n \"background-color\": `rgba(255,0,0, ${(128 + note.velocity) / 256})`,\n\n top: `${verticalVirtualDimensions().offset}px`,\n height: `${verticalVirtualDimensions().size}px`,\n\n left: `${horizontalDimensions().offset}px`,\n width: `${horizontalDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </For>\n </Show>\n );\n }}\n </For>\n </div>\n );\n};\n\nexport default PianoRollNotes;\n","import { createMemo, For, Index, Show } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { blackKeys, keys } from \"./PianoRollKeys\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport styles from \"./PianoRollGrid.module.css\";\n\nconst PianoRollGrid = () => {\n const context = usePianoRollContext();\n\n const verticalViewPort = createMemo(() =>\n useViewPortDimension(context.mode === \"keys\" ? \"vertical\" : \"verticalTracks\"),\n );\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\n\n const measureTicks = createMemo(() => context.ppq * 4);\n const selectedGridDivisorTicks = createMemo(() => measureTicks() / context.gridDivision);\n\n function calculateVisibleGridDivisorTicks(value: number): number {\n const visibleRange = horizontalViewPort().calculateVisibleRange();\n\n if (visibleRange <= 0) return 0;\n\n if (visibleRange / value > 100) {\n return calculateVisibleGridDivisorTicks(value * 2);\n }\n\n if (visibleRange / value < 30) {\n return calculateVisibleGridDivisorTicks(value / 2);\n }\n\n return value;\n }\n\n const gridDivisorTicks = createMemo(() =>\n calculateVisibleGridDivisorTicks(selectedGridDivisorTicks()),\n );\n\n const gridArray = createMemo(() => {\n const numberOfLines = Math.ceil(\n horizontalViewPort().calculateVisibleRange() / gridDivisorTicks() + 1,\n );\n const startIndex = Math.floor(context.position / gridDivisorTicks());\n\n return Array.from({ length: numberOfLines }).map((_, index) => ({\n index: index + startIndex,\n ticks: (index + startIndex) * gridDivisorTicks(),\n }));\n });\n\n return (\n <div class={styles.PianoRollGrid}>\n <Index each={gridArray()}>\n {(entry) => {\n const virtualDimensions = createMemo(() =>\n horizontalViewPort().calculatePixelDimensions(entry().ticks, gridDivisorTicks()),\n );\n\n return (\n <Show when={virtualDimensions().size > 0}>\n <div\n class={styles[\"PianoRollGrid-Time\"]}\n style={{\n background:\n Math.ceil((entry().index + 1 * selectedGridDivisorTicks()) / measureTicks()) %\n 2 ===\n 0\n ? \"#ddd\"\n : \"#ccc\",\n left: `${virtualDimensions().offset}px`,\n width: `${virtualDimensions().size}px`,\n \"border-left-color\":\n (entry().index * gridDivisorTicks()) % selectedGridDivisorTicks() === 0\n ? \"gray\"\n : \"#bbb\",\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\n <Show when={context.mode === \"keys\"}>\n <Index each={keys}>\n {(key) => {\n const virtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(127 - key().number, 1),\n );\n\n return (\n <Show when={virtualDimensions().size > 0}>\n <div\n class={styles[\"PianoRollGrid-Row\"]}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n width: \"100%\",\n \"background-color\": key().isBlack ? \"rgba(0,0,0,0.2)\" : \"none\",\n \"border-width\": `${\n !key().isBlack && !blackKeys.includes((key().number + 1) % 12) ? \"0.1px\" : 0\n } 1px ${\n !key().isBlack && !blackKeys.includes((key().number - 1) % 12) ? \"0.1px\" : 0\n } 0`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\n </Show>\n\n <Show when={context.mode === \"tracks\"}>\n <For each={context.tracks}>\n {(track, index) => {\n const virtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(index(), 1),\n );\n\n return (\n <Show when={virtualDimensions().size > 0}>\n <div\n class={styles[\"PianoRollGrid-Row\"]}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n width: \"100%\",\n \"background-color\": index() % 2 === 0 ? \"rgba(0,0,0,0.2)\" : \"none\",\n \"border-width\": 0,\n }}\n ></div>\n </Show>\n );\n }}\n </For>\n </Show>\n </div>\n );\n};\n\nexport default PianoRollGrid;\n","import { Accessor, createEffect, createSignal } from \"solid-js\";\n\nexport type ClientRect = Omit<DOMRect, \"toJSON\">;\n\nconst defaultRect: ClientRect = {\n left: 0,\n width: 0,\n top: 0,\n height: 0,\n bottom: 0,\n right: 0,\n x: 0,\n y: 0,\n};\n\nexport default function useBoundingClientRect(containerRef: Accessor<HTMLElement | undefined>) {\n const [boundingClientRect, setBoundingClientRect] = createSignal<ClientRect>(defaultRect);\n\n createEffect(() => {\n const container = containerRef();\n if (!container) return;\n\n const updateBoundingClientRect = () => {\n setBoundingClientRect(container.getBoundingClientRect() ?? defaultRect);\n };\n\n const resizeObserver = new ResizeObserver(updateBoundingClientRect);\n resizeObserver.observe(container);\n\n updateBoundingClientRect();\n\n return () => {\n resizeObserver.disconnect();\n };\n });\n\n return boundingClientRect;\n}\n","import { createMemo, mergeProps } from \"solid-js\";\nimport { JSX } from \"solid-js/jsx-runtime\";\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nconst ZoomSliderControl = (\n props: {\n dimensionName?: string;\n orientation?: \"horizontal\" | \"vertical\";\n } & JSX.IntrinsicElements[\"input\"],\n) => {\n const propsWithDefaults = mergeProps({ orientation: \"horizontal\" }, props);\n const dimension = createMemo(() =>\n useViewPortDimension(props.dimensionName ?? propsWithDefaults.orientation),\n );\n\n return (\n <input\n min={dimension().minZoom}\n max={dimension().maxZoom}\n step={0.01}\n {...props}\n value={dimension().zoom}\n onInput={(event) => dimension().onZoomChange?.(event.currentTarget.valueAsNumber)}\n type=\"range\"\n {...{ orient: propsWithDefaults.orientation }}\n style={\n propsWithDefaults.orientation === \"vertical\"\n ? {\n margin: 0,\n \"margin-left\": \"4px\",\n \"margin-right\": \"4px\",\n width: \"16px\",\n transform: \"rotate(180deg)\",\n ...({\n \"writing-mode\": \"bt-lr\" /* IE */,\n \"-webkit-appearance\": \"slider-vertical\" /* WebKit */,\n } as unknown as JSX.CSSProperties),\n ...(typeof props.style === \"object\" && props.style),\n }\n : {\n margin: 0,\n \"margin-top\": \"4px\",\n \"margin-bottom\": \"4px\",\n ...(typeof props.style === \"object\" && props.style),\n }\n }\n />\n );\n};\n\nexport default ZoomSliderControl;\n","import styles from \"./PianoRollTrackList.module.css\";\nimport { createMemo, Index, Show } from \"solid-js\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\n\nconst PianoRollTrackList = () => {\n const viewPort = createMemo(() => useViewPortDimension(\"verticalTracks\"));\n const context = usePianoRollContext();\n\n return (\n <div class={styles.PianoRollTrackList}>\n <Index each={context.tracks}>\n {(track, index) => {\n const virtualDimensions = createMemo(() => viewPort().calculatePixelDimensions(index, 1));\n\n return (\n <Show when={virtualDimensions().size > 0}>\n <div\n classList={{\n [styles[\"Track\"]]: true,\n }}\n title={track().name}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n background: index === context.selectedTrackIndex ? \"gray\" : \"lightgrey\",\n cursor: \"pointer\",\n }}\n onClick={() => context.onSelectedTrackIndexChange?.(index)}\n >\n {index} {track().name || \"[unnamed track]\"}\n </div>\n </Show>\n );\n }}\n </Index>\n </div>\n );\n};\n\nexport default PianoRollTrackList;\n","import styles from \"./PianoRoll.module.css\";\n\nimport { JSX, createSignal, ParentProps, Show, mergeProps } from \"solid-js\";\n\nimport { PianoRollContextProvider, splitContextProps } from \"./PianoRollContext\";\nimport PianoRollKeys from \"./PianoRollKeys\";\nimport PianoRollNotes from \"./PianoRollNotes\";\nimport ScrollZoomContainer from \"./viewport/ScrollZoomContainer\";\nimport PianoRollGrid from \"./PianoRollGrid\";\nimport { ScrollZoomViewPort as ScrollZoomViewPort } from \"./viewport/ScrollZoomViewPort\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport ZoomSliderControl from \"./viewport/ZoomSliderControl\";\nimport PianoRollTrackList from \"./PianoRollTrackList\";\nimport createPianoRollstate from \"./usePianoRollState\";\n\nexport type GridDivision = 1 | 2 | 4 | 8 | 16 | 32 | 64;\n\nexport type PianoRollProps = {\n showAllTracks?: boolean;\n showTrackList?: boolean;\n} & ReturnType<typeof createPianoRollstate> &\n Omit<JSX.IntrinsicElements[\"div\"], \"onDurationChange\">;\n\nconst PianoRoll = (allProps: ParentProps<PianoRollProps>) => {\n const propsWithDefaults = mergeProps({ showAllTracks: false }, allProps);\n const [context, divProps] = splitContextProps(propsWithDefaults);\n\n const [notesScrollerRef, setNotesScrollerRef] = createSignal<HTMLDivElement>();\n const [tracksScrollerRef, setTracksScrollerRef] = createSignal<HTMLDivElement>();\n\n const notesScrollerClientRect = useBoundingClientRect(notesScrollerRef);\n const tracksScrollerClientRect = useBoundingClientRect(tracksScrollerRef);\n\n const zoomFactor = 500;\n\n return (\n <PianoRollContextProvider value={context}>\n <div {...divProps} class={styles.PianoRoll}>\n <ScrollZoomViewPort\n dimensions={{\n horizontal: () => ({\n pixelOffset: notesScrollerClientRect().left,\n pixelSize: notesScrollerClientRect().width,\n position: context.position,\n range: context.duration,\n zoom: context.zoom * (zoomFactor / notesScrollerClientRect().width),\n onPositionChange: context.onPositionChange,\n onZoomChange: (zoom) =>\n context.onZoomChange?.(zoom / (zoomFactor / notesScrollerClientRect().width)),\n minZoom: 1,\n maxZoom: 500,\n }),\n vertical: () => ({\n pixelOffset: notesScrollerClientRect().top,\n pixelSize: notesScrollerClientRect().height,\n position: context.verticalPosition,\n range: 128,\n zoom: context.verticalZoom * (zoomFactor / notesScrollerClientRect().height),\n onPositionChange: context.onVerticalPositionChange,\n onZoomChange: (verticalZoom) =>\n context.onVerticalZoomChange?.(\n verticalZoom / (zoomFactor / notesScrollerClientRect().height),\n ),\n minZoom: 1,\n maxZoom: 10,\n }),\n horizontalTracks: () => ({\n pixelOffset: 0,\n pixelSize: tracksScrollerClientRect().width,\n }),\n verticalTracks: () => ({\n pixelOffset: tracksScrollerClientRect().top,\n pixelSize: tracksScrollerClientRect().height,\n position: context.verticalTrackPosition,\n range: context.tracks.length,\n zoom: context.verticalTrackZoom * (zoomFactor / tracksScrollerClientRect().height),\n onPositionChange: context.onVerticalTrackPositionChange,\n onZoomChange: (verticalTrackZoom) =>\n context.onVerticalTrackZoomChange?.(\n verticalTrackZoom / (zoomFactor / tracksScrollerClientRect().height),\n ),\n minZoom: 0.8,\n maxZoom: 3,\n }),\n horizontalKeys: () => ({ pixelSize: 60 }),\n }}\n >\n <div class={styles.PianoRollContainer}>\n <ZoomSliderControl orientation=\"vertical\" dimensionName=\"verticalTracks\" />\n <div style={{ display: \"flex\", width: \"30%\", \"max-width\": \"250px\" }}>\n <Show when={context.showTrackList}>\n <ScrollZoomContainer\n ref={setTracksScrollerRef}\n horizontalDimensionName=\"horizontalTracks\"\n verticalDimensionName=\"verticalTracks\"\n showScrollbar={context.mode === \"keys\"}\n >\n <PianoRollTrackList />\n </ScrollZoomContainer>\n </Show>\n <Show when={context.mode === \"keys\"}>\n <PianoRollKeys />\n </Show>\n </div>\n\n <ScrollZoomContainer\n ref={setNotesScrollerRef}\n verticalDimensionName={context.mode === \"keys\" ? \"vertical\" : \"verticalTracks\"}\n >\n {allProps.children}\n <PianoRollGrid />\n <PianoRollNotes />\n </ScrollZoomContainer>\n\n <ZoomSliderControl orientation=\"vertical\" disabled={context.mode !== \"keys\"} />\n </div>\n <ZoomSliderControl\n orientation=\"horizontal\"\n style={{\n \"margin-left\": `${tracksScrollerClientRect().width + 24}px`,\n \"margin-right\": \"24px\",\n }}\n />\n </ScrollZoomViewPort>\n </div>\n </PianoRollContextProvider>\n );\n};\n\nexport default PianoRoll;\n","import { createEffect, createMemo, JSX, mergeProps, splitProps } from \"solid-js\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\n\nconst PlayHead = (\n allProps: {\n playHeadPosition?: number;\n sync?: boolean;\n onPlayHeadPositionChange?: (playHeadPosition: number) => void;\n onPositionChange?: (position: number) => void;\n } & JSX.IntrinsicElements[\"div\"],\n) => {\n const propsWithDefauls = mergeProps({ playHeadPosition: 0, sync: false }, allProps);\n const [props, divProps] = splitProps(propsWithDefauls, [\n \"playHeadPosition\",\n \"sync\",\n \"onPlayHeadPositionChange\",\n \"onPositionChange\",\n ]);\n\n const viewPort = useViewPortDimension(\"horizontal\");\n createEffect(() => {\n if (!props.sync) return;\n\n const maxPosition = viewPort.range;\n const newPosition = clamp(\n props.playHeadPosition - viewPort.range / viewPort.zoom / 2,\n 0,\n maxPosition,\n );\n\n props.onPositionChange?.(newPosition);\n });\n\n const leftPosition = createMemo(() => viewPort.calculatePixelOffset(props.playHeadPosition));\n\n return (\n <div\n class=\"PlayHead\"\n {...divProps}\n style={{\n position: \"absolute\",\n height: \"100%\",\n width: \"2px\",\n left: `${leftPosition()}px`,\n \"background-color\": \"green\",\n cursor: \"pointer\",\n ...(typeof divProps.style === \"object\" && divProps.style),\n }}\n onMouseDown={(event) => {\n event.preventDefault();\n event.stopPropagation();\n const handleMouseMove = ({ movementX }: MouseEvent) => {\n const { parentElement } = event.currentTarget;\n if (!parentElement) return;\n\n const newPosition = viewPort.calculatePosition(leftPosition() + movementX);\n props.onPlayHeadPositionChange?.(newPosition);\n };\n const handleMouseUp = () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n />\n );\n};\n\nexport default PlayHead;\n","import { createSignal } from \"solid-js\";\nimport { Note } from \"./types\";\n\nconst useNotes = () => {\n const [notes, onNotesChange] = createSignal<Note[]>([]);\n const onNoteChange = (index: number, note: Note) => {\n onNotesChange([...notes().slice(0, index), note, ...notes().splice(index + 1)]);\n };\n\n const onInsertNote = (note: Note) => {\n const index = Math.max(\n notes().findIndex(({ ticks }) => ticks > note.ticks),\n 0,\n );\n onNotesChange([...notes().slice(0, index), note, ...notes().splice(index)]);\n return index;\n };\n\n const onRemoveNote = (index: number) => {\n onNotesChange([...notes().slice(0, index), ...notes().splice(index + 1)]);\n };\n\n return {\n notes,\n onNotesChange,\n onNoteChange,\n onInsertNote,\n onRemoveNote,\n };\n};\n\nexport default useNotes;\n","import { mergeProps } from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\nimport { GridDivision } from \"./PianoRoll\";\nimport { Note, Track } from \"./types\";\n\ntype PianoRollState = {\n ppq: number;\n mode: \"keys\" | \"tracks\";\n position: number;\n zoom: number;\n verticalZoom: number;\n verticalPosition: number;\n verticalTrackZoom: number;\n verticalTrackPosition: number;\n gridDivision: GridDivision;\n snapToGrid: boolean;\n duration: number;\n tracks: Track[];\n selectedTrackIndex: number;\n pressedKeys: number[];\n};\n\nconst createPianoRollstate = (defaultState?: Partial<PianoRollState>) => {\n const [state, setState] = createStore<PianoRollState>({\n ppq: 0,\n mode: \"keys\",\n position: 0,\n zoom: 10,\n verticalZoom: 5,\n verticalPosition: 44,\n verticalTrackZoom: 0.5,\n verticalTrackPosition: 0,\n gridDivision: 4,\n snapToGrid: true,\n duration: 0,\n tracks: [],\n selectedTrackIndex: 0,\n pressedKeys: [],\n ...defaultState,\n });\n\n const updateNotes = async (trackIndex: number, getNotes: (notes: Note[]) => Note[]) => {\n const track = state.tracks[trackIndex];\n if (!track) return;\n\n const notes = track.notes;\n\n onTracksChange([\n ...state.tracks.slice(0, trackIndex),\n { ...track, notes: getNotes(notes) },\n ...state.tracks.slice(trackIndex + 1),\n ]);\n };\n\n const onNoteChange = (trackIndex: number, noteIndex: number, note: Note) => {\n updateNotes(trackIndex, (notes) => [\n ...notes.slice(0, noteIndex),\n note,\n ...notes.slice(noteIndex + 1),\n ]);\n };\n\n const onInsertNote = (trackIndex: number, note: Note) => {\n const track = state.tracks[trackIndex];\n if (!track) return -1;\n\n const notes = track.notes;\n\n const newNoteIndex = Math.max(\n notes.findIndex(({ ticks }) => ticks > note.ticks),\n 0,\n );\n\n updateNotes(trackIndex, (notes) => [\n ...notes.slice(0, newNoteIndex),\n note,\n ...notes.slice(newNoteIndex),\n ]);\n\n return newNoteIndex;\n };\n\n const onRemoveNote = (trackIndex: number, noteIndex: number) => {\n updateNotes(trackIndex, (notes) => [\n ...notes.slice(0, noteIndex),\n ...notes.slice(noteIndex + 1),\n ]);\n };\n\n const onPpqChange = (ppq: PianoRollState[\"ppq\"]) => setState(\"ppq\", ppq);\n const onModeChange = (mode: PianoRollState[\"mode\"]) => setState(\"mode\", mode);\n const onPositionChange = (position: PianoRollState[\"position\"]) => setState(\"position\", position);\n const onZoomChange = (zoom: PianoRollState[\"zoom\"]) => setState(\"zoom\", zoom);\n const onVerticalZoomChange = (verticalZoom: PianoRollState[\"verticalZoom\"]) =>\n setState(\"verticalZoom\", verticalZoom);\n const onVerticalPositionChange = (verticalPosition: PianoRollState[\"verticalPosition\"]) =>\n setState(\"verticalPosition\", verticalPosition);\n\n const onVerticalTrackZoomChange = (verticalTrackZoom: PianoRollState[\"verticalTrackZoom\"]) =>\n setState(\"verticalTrackZoom\", verticalTrackZoom);\n const onVerticalTrackPositionChange = (\n verticalTrackPosition: PianoRollState[\"verticalTrackPosition\"],\n ) => setState(\"verticalTrackPosition\", verticalTrackPosition);\n\n const onGridDivisionChange = (gridDivision: PianoRollState[\"gridDivision\"]) =>\n setState(\"gridDivision\", gridDivision);\n const onSnapToGridChange = (snapToGrid: PianoRollState[\"snapToGrid\"]) =>\n setState(\"snapToGrid\", snapToGrid);\n const onDurationChange = (duration: PianoRollState[\"duration\"]) => setState(\"duration\", duration);\n const onTracksChange = (tracks: PianoRollState[\"tracks\"]) => setState(\"tracks\", tracks);\n const onSelectedTrackIndexChange = (selectedTrackIndex: PianoRollState[\"selectedTrackIndex\"]) =>\n setState(\"selectedTrackIndex\", selectedTrackIndex);\n\n const onPressedKeysChange = (pressedKeys: PianoRollState[\"pressedKeys\"]) =>\n setState(\"pressedKeys\", pressedKeys);\n\n return mergeProps(state, {\n onPpqChange,\n onModeChange,\n onPositionChange,\n onZoomChange,\n onVerticalZoomChange,\n onVerticalPositionChange,\n onVerticalTrackZoomChange,\n onVerticalTrackPositionChange,\n onGridDivisionChange,\n onSnapToGridChange,\n onDurationChange,\n onTracksChange,\n onNoteChange,\n onInsertNote,\n onRemoveNote,\n onSelectedTrackIndexChange,\n onPressedKeysChange,\n });\n};\n\nexport default createPianoRollstate;\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","PianoRollContext","createContext","PianoRollContextProvider","Provider","usePianoRollContext","context","useContext","Error","splitContextProps","allProps","splitProps","createViewPortDimension","getState","getStateWithFunctions","state","onZoomChange","zoom","clamp","minZoom","maxZoom","onPositionChange","position","calculatePixelOffset","calculatePixelValue","calculatePosition","calculatePixelDimensions","calculateVisibleRange","calculateMaxPosition","isVisible","setState","createStore","createEffect","virtualSize","pixelSize","range","offset","percentX","pixelOffset","length","size","value","min","max","Math","defaultViewPortProps","Infinity","ScrollZoomViewPort","props","viewPorts","Object","entries","dimensions","map","name","viewPortProps","parentViewPorts","ScrollZoomViewPortContext","_$createComponent","children","useViewPortDimension","viewPort","find","ScrollZoomContainer","scrollContentRef","ownProps","divProps","propsWithDefaults","mergeProps","verticalDimensionName","horizontalDimensionName","showScrollbar","verticalViewPort","createMemo","horizontalViewPort","handleScroll","event","preventDefault","didUpdateScroll","maxVerticalPosition","maxPosition","height","width","scrollTop","scrollLeft","scrollWidth","scrollHeight","currentTarget","scrollTopAmount","scrollLeftAmount","handleWheel","altKey","abs","deltaX","deltaY","parentElement","scrollDivHeight","scrollDivWidth","scrollTo","left","top","_tmpl$","_$spread","_$mergeProps","overflow","styles","classList","_$use","_$insert","_$effect","PianoRollKeys","isMouseDown","setIsMouseDown","createSignal","handleMouseUp","window","addEventListener","removeEventListener","Index","keys","key","isDown","pressedKeys","includes","number","handleKeyDown","onPressedKeysChange","handleKeyUp","filter","virtualDimensions","previousIsBlack","blackKeys","nextIsBlack","Show","isBlack","_$className","item","join","_$classList","_$setAttribute","keyNames","Array","from","_","index","floor","_$delegateEvents","PianoRollNotes","mode","gridDivisionTicks","ppq","gridDivision","snapValueToGridIfEnabled","snapToGrid","round","insertOrUpdateNote","clientX","existingNote","currentNote","midi","clientY","targetTrackIndex","tracks","selectedTrackIndex","eventPositionTicks","velocity","ticks","durationTicks","note","onNoteChange","currentNoteTrackIndex","currentNoteIndex","onInsertNote","isDragging","setIsDragging","noteDragMode","setNoteDragMode","setCurrentNoteIndex","setCurrentNoteTrackIndex","notes","getClasses","Note","undefined","batch","For","track","trackIndex","showAllTracks","noteIndex","verticalVirtualDimensions","horizontalDimensions","_$memo","stopPropagation","initialPosition","diffPosition","handleMouseMove","mouseMoveEvent","updatedNote","previousTrackIndex","previousNoteIndex","onRemoveNote","newNoteIndex","relativeX","noteStartX","noteEndX","PianoRollGrid","measureTicks","selectedGridDivisorTicks","calculateVisibleGridDivisorTicks","visibleRange","gridDivisorTicks","gridArray","numberOfLines","ceil","startIndex","entry","defaultRect","bottom","right","x","y","useBoundingClientRect","containerRef","boundingClientRect","setBoundingClientRect","container","updateBoundingClientRect","getBoundingClientRect","resizeObserver","ResizeObserver","observe","disconnect","ZoomSliderControl","orientation","dimension","dimensionName","valueAsNumber","orient","margin","transform","PianoRollTrackList","_tmpl$2","onSelectedTrackIndexChange","PianoRoll","notesScrollerRef","setNotesScrollerRef","tracksScrollerRef","setTracksScrollerRef","notesScrollerClientRect","tracksScrollerClientRect","zoomFactor","horizontal","duration","vertical","verticalPosition","verticalZoom","onVerticalPositionChange","onVerticalZoomChange","horizontalTracks","verticalTracks","verticalTrackPosition","verticalTrackZoom","onVerticalTrackPositionChange","onVerticalTrackZoomChange","horizontalKeys","showTrackList","PianoRollContainer","PlayHead","propsWithDefauls","playHeadPosition","sync","newPosition","leftPosition","cursor","movementX","onPlayHeadPositionChange","useNotes","onNotesChange","slice","splice","findIndex","createPianoRollstate","defaultState","updateNotes","getNotes","onTracksChange","onPpqChange","onModeChange","onGridDivisionChange","onSnapToGridChange","onDurationChange"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../node_modules/style-inject/dist/style-inject.es.js","../../src/usePianoRollState.ts","../../src/PianoRollContext.tsx","../../src/viewport/createViewPortDimension.ts","../../src/viewport/ScrollZoomViewPort.tsx","../../src/viewport/ScrollZoomContainer.tsx","../../src/PianoRollKeys.tsx","../../src/PianoRollNotes.tsx","../../src/PianoRollGrid.tsx","../../src/useBoundingClientRect.ts","../../src/viewport/ZoomSliderControl.tsx","../../src/PianoRollTrackList.tsx","../../src/PianoRoll.tsx","../../src/PlayHead.tsx","../../src/useNotes.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { mergeProps } from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\nimport { GridDivision } from \"./PianoRoll\";\nimport { Note, Track } from \"./types\";\n\ntype PianoRollState = {\n ppq: number;\n mode: \"keys\" | \"tracks\";\n position: number;\n zoom: number;\n verticalZoom: number;\n verticalPosition: number;\n verticalTrackZoom: number;\n verticalTrackPosition: number;\n gridDivision: GridDivision;\n snapToGrid: boolean;\n duration: number;\n tracks: Track[];\n selectedTrackIndex: number;\n pressedKeys: number[];\n};\n\nconst defaultState: PianoRollState = {\n ppq: 0,\n mode: \"keys\",\n position: 0,\n zoom: 10,\n verticalZoom: 5,\n verticalPosition: 44,\n verticalTrackZoom: 0.5,\n verticalTrackPosition: 0,\n gridDivision: 4,\n snapToGrid: true,\n duration: 0,\n tracks: [],\n selectedTrackIndex: 0,\n pressedKeys: [],\n};\n\nconst propNameToHandlerName = (name: string) => `on${name[0]?.toUpperCase()}${name.slice(1)}Change`;\n\nexport const pianoRollStatePropNames = [\n ...Object.keys(defaultState),\n ...Object.keys(defaultState).map(propNameToHandlerName),\n \"onNoteChange\",\n \"onInsertNote\",\n \"onRemoveNote\",\n \"onNoteDown\",\n \"onNoteUp\",\n] as (keyof ReturnType<typeof createPianoRollstate>)[];\n\nconst createPianoRollstate = (initialState?: Partial<PianoRollState>) => {\n const [state, setState] = createStore<PianoRollState>({\n ...defaultState,\n ...initialState,\n });\n\n const handlers = Object.fromEntries(\n (Object.entries(state) as Entries<typeof state>).map((entry) => {\n return [\n propNameToHandlerName(entry[0]),\n (value: typeof entry[1]) => setState(entry[0], value),\n ];\n }),\n ) as {\n [key in keyof typeof state as `on${Capitalize<key>}Change`]: (value: typeof state[key]) => void;\n };\n\n const updateNotes = async (trackIndex: number, getNotes: (notes: Note[]) => Note[]) => {\n const track = state.tracks[trackIndex];\n if (!track) return;\n\n const notes = track.notes;\n\n handlers.onTracksChange([\n ...state.tracks.slice(0, trackIndex),\n { ...track, notes: getNotes(notes) },\n ...state.tracks.slice(trackIndex + 1),\n ]);\n };\n\n const onNoteChange = (trackIndex: number, noteIndex: number, note: Note) => {\n updateNotes(trackIndex, (notes) => [\n ...notes.slice(0, noteIndex),\n note,\n ...notes.slice(noteIndex + 1),\n ]);\n };\n\n const onInsertNote = (trackIndex: number, note: Note) => {\n const track = state.tracks[trackIndex];\n if (!track) return -1;\n\n const notes = track.notes;\n\n const newNoteIndex = Math.max(\n notes.findIndex(({ ticks }) => ticks > note.ticks),\n 0,\n );\n\n updateNotes(trackIndex, (notes) => [\n ...notes.slice(0, newNoteIndex),\n note,\n ...notes.slice(newNoteIndex),\n ]);\n\n return newNoteIndex;\n };\n\n const onRemoveNote = (trackIndex: number, noteIndex: number) => {\n updateNotes(trackIndex, (notes) => [\n ...notes.slice(0, noteIndex),\n ...notes.slice(noteIndex + 1),\n ]);\n };\n\n const onNoteDown = (keyNumber: number) => {\n handlers.onPressedKeysChange?.([...state.pressedKeys, keyNumber]);\n };\n\n const onNoteUp = (keyNumber: number) => {\n handlers.onPressedKeysChange?.([...state.pressedKeys].filter((number) => number !== keyNumber));\n };\n\n return mergeProps(state, {\n ...handlers,\n onNoteChange,\n onInsertNote,\n onRemoveNote,\n onNoteDown,\n onNoteUp,\n });\n};\n\ntype Entries<T> = {\n [K in keyof T]: [K, T[K]];\n}[keyof T][];\n\nexport default createPianoRollstate;\n","import { createContext, splitProps, useContext } from \"solid-js\";\n\nimport { PianoRollProps } from \"./PianoRoll\";\nimport createPianoRollstate, { pianoRollStatePropNames } from \"./usePianoRollState\";\n\nconst PianoRollContext = createContext<\n {\n showAllTracks?: boolean;\n showTrackList?: boolean;\n } & ReturnType<typeof createPianoRollstate>\n>();\n\nexport const PianoRollContextProvider = PianoRollContext.Provider;\n\nexport const usePianoRollContext = () => {\n const context = useContext(PianoRollContext);\n\n if (!context) throw new Error(\"No PianoRollContext found\");\n\n return context;\n};\n\nexport const splitContextProps = (allProps: PianoRollProps) =>\n splitProps(allProps, [...pianoRollStatePropNames, \"showAllTracks\", \"showTrackList\"]);\n","import { createEffect } from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\n\nexport type ViewPortDimension = ReturnType<typeof createViewPortDimension>;\nexport type ViewPortDimensionName = string;\nexport type ViewPortDimensionState = {\n position: number;\n range: number;\n\n pixelOffset: number;\n pixelSize: number;\n\n name: ViewPortDimensionName;\n\n onZoomChange?: (zoom: number) => void;\n onPositionChange?: (zoom: number) => void;\n\n zoom: number;\n\n minZoom: number;\n maxZoom: number;\n};\n\nexport default function createViewPortDimension(getState: () => ViewPortDimensionState) {\n const getStateWithFunctions = () => {\n const state = getState();\n\n const onZoomChange = (zoom: number) =>\n state.onZoomChange?.(clamp(zoom, state.minZoom, state.maxZoom));\n\n const onPositionChange = (position: number) => state.onPositionChange?.(position);\n\n return {\n ...state,\n onZoomChange,\n onPositionChange,\n calculatePixelOffset,\n calculatePixelValue,\n calculatePosition,\n calculatePixelDimensions,\n calculateVisibleRange,\n calculateMaxPosition,\n isVisible,\n };\n };\n\n const [state, setState] = createStore(getStateWithFunctions());\n createEffect(() => setState(getStateWithFunctions()));\n\n function calculatePixelValue(position: number = state.position) {\n const virtualSize = state.pixelSize * state.zoom;\n return (position / state.range) * virtualSize;\n }\n\n function calculatePixelOffset(position: number) {\n return calculatePixelValue(position) - calculatePixelValue(state.position);\n }\n\n function calculatePosition(offset: number) {\n const percentX = (offset - state.pixelOffset) / state.pixelSize;\n const position = state.position + percentX * calculateVisibleRange();\n\n return position;\n }\n\n function calculateVisibleRange() {\n return state.range / state.zoom;\n }\n\n function calculateMaxPosition() {\n return state.range - state.range / state.zoom;\n }\n\n function calculatePixelDimensions(position: number, length: number) {\n const offset = calculatePixelOffset(position);\n const size = calculatePixelValue(length);\n\n return { offset, size };\n }\n\n function isVisible({ offset, size }: { offset: number; size: number }) {\n return offset + size > 0 && offset < state.pixelSize;\n }\n\n return state;\n}\n\nexport const clamp = (value: number, min: number, max: number) =>\n Math.max(min, Math.min(max, value));\n","import { createContext, ParentProps, useContext } from \"solid-js\";\nimport createViewPortDimension, {\n ViewPortDimension,\n ViewPortDimensionName,\n ViewPortDimensionState,\n} from \"./createViewPortDimension\";\n\nconst defaultViewPortProps = {\n pixelOffset: 0,\n position: 0,\n range: 1,\n zoom: 1,\n minZoom: 1,\n maxZoom: Infinity,\n};\n\nexport const ScrollZoomViewPort = (\n props: ParentProps<{\n dimensions: Record<\n ViewPortDimensionName,\n () => Omit<ViewPortDimensionState, \"name\" | keyof typeof defaultViewPortProps> &\n Partial<Pick<ViewPortDimensionState, keyof typeof defaultViewPortProps>>\n >;\n }>,\n) => {\n const viewPorts = Object.entries(props.dimensions).map(([name, viewPortProps]) =>\n createViewPortDimension(() => ({\n name: name as ViewPortDimensionName,\n ...defaultViewPortProps,\n ...viewPortProps(),\n })),\n );\n\n const parentViewPorts = useContext(ScrollZoomViewPortContext);\n\n return (\n <ScrollZoomViewPortContext.Provider value={[...parentViewPorts, ...viewPorts]}>\n {props.children}\n </ScrollZoomViewPortContext.Provider>\n );\n};\n\nconst ScrollZoomViewPortContext = createContext<ViewPortDimension[]>([]);\n\nexport const useViewPortDimension = (name: ViewPortDimensionName) => {\n const viewPorts = useContext(ScrollZoomViewPortContext);\n\n const viewPort = name\n ? viewPorts.find((viewPort) => viewPort.name === name)\n : viewPorts[viewPorts.length - 1];\n\n if (!viewPort) throw new Error(`ViewPort dimension \"${name}\" not found.`);\n\n return viewPort;\n};\n","import { createEffect, createMemo, JSX, mergeProps, ParentProps, Ref, splitProps } from \"solid-js\";\n\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nimport styles from \"./ScrollZoomContainer.module.css\";\n\nconst ScrollZoomContainer = (\n props: ParentProps<\n {\n ref?: Ref<HTMLDivElement>;\n verticalDimensionName?: string;\n horizontalDimensionName?: string;\n showScrollbar?: boolean;\n } & JSX.IntrinsicElements[\"div\"]\n >,\n) => {\n let scrollContentRef: HTMLDivElement | undefined;\n\n const [ownProps, divProps] = splitProps(props, [\n \"ref\",\n \"verticalDimensionName\",\n \"horizontalDimensionName\",\n \"showScrollbar\",\n ]);\n\n const propsWithDefaults = mergeProps(\n {\n verticalDimensionName: \"vertical\",\n horizontalDimensionName: \"horizontal\",\n showScrollbar: true,\n },\n ownProps,\n );\n\n const verticalViewPort = createMemo(() =>\n useViewPortDimension(propsWithDefaults.verticalDimensionName),\n );\n const horizontalViewPort = createMemo(() =>\n useViewPortDimension(propsWithDefaults.horizontalDimensionName),\n );\n\n const handleScroll = (event: UIEvent & { currentTarget: Element }) => {\n event.preventDefault();\n\n if (didUpdateScroll) {\n didUpdateScroll = false;\n return;\n }\n\n const maxVerticalPosition = verticalViewPort().calculateMaxPosition();\n const maxPosition = horizontalViewPort().calculateMaxPosition();\n\n const height = verticalViewPort().pixelSize;\n const width = horizontalViewPort().pixelSize;\n const { scrollTop, scrollLeft, scrollWidth, scrollHeight } = event.currentTarget;\n\n const scrollTopAmount = scrollTop / (scrollHeight - height);\n const scrollLeftAmount = scrollLeft / (scrollWidth - width);\n\n verticalViewPort().onPositionChange?.(maxVerticalPosition * scrollTopAmount);\n horizontalViewPort().onPositionChange?.(maxPosition * scrollLeftAmount);\n };\n\n const handleWheel = (event: WheelEvent & { currentTarget: Element }) => {\n if (event.altKey) {\n event.preventDefault();\n\n if (Math.abs(event.deltaX) > Math.abs(event.deltaY)) {\n horizontalViewPort()?.onZoomChange?.(\n horizontalViewPort().zoom * (1 + event.deltaX / horizontalViewPort().pixelSize),\n );\n const maxPosition = horizontalViewPort().calculateMaxPosition();\n\n horizontalViewPort()?.onPositionChange?.(\n Math.min(maxPosition, horizontalViewPort()?.position),\n );\n } else {\n verticalViewPort()?.onZoomChange?.(\n verticalViewPort().zoom * (1 + event.deltaY / verticalViewPort().pixelSize),\n );\n const maxVerticalPosition = verticalViewPort().calculateMaxPosition();\n\n verticalViewPort()?.onPositionChange?.(\n Math.min(maxVerticalPosition, verticalViewPort()?.position),\n );\n }\n } else if (!props.showScrollbar) {\n event.preventDefault();\n event.currentTarget.scrollLeft += event.deltaX;\n event.currentTarget.scrollTop += event.deltaY;\n }\n };\n\n let didUpdateScroll = false;\n\n createEffect(() => {\n const maxVerticalPosition = verticalViewPort().calculateMaxPosition();\n const maxPosition = horizontalViewPort().calculateMaxPosition();\n\n const scrollTopAmount =\n maxVerticalPosition > 0 ? verticalViewPort().position / maxVerticalPosition : 0;\n const scrollLeftAmount = maxPosition > 0 ? horizontalViewPort().position / maxPosition : 0;\n\n const height = verticalViewPort().pixelSize;\n const width = horizontalViewPort().pixelSize;\n\n if (!scrollContentRef?.parentElement) return;\n\n const scrollDivHeight = verticalViewPort().zoom * verticalViewPort().pixelSize;\n const scrollTop = scrollTopAmount * (scrollDivHeight - height);\n\n const scrollDivWidth = horizontalViewPort().zoom * horizontalViewPort().pixelSize;\n const scrollLeft = scrollLeftAmount * (scrollDivWidth - width);\n\n didUpdateScroll = true;\n\n scrollContentRef.style.height = `${scrollDivHeight}px`;\n scrollContentRef.style.width = `${scrollDivWidth}px`;\n\n scrollContentRef.parentElement.scrollTo({\n left: scrollLeft,\n top: scrollTop,\n });\n });\n\n return (\n <div\n ref={props.ref}\n onScroll={handleScroll}\n onWheel={handleWheel}\n {...divProps}\n style={{\n overflow: propsWithDefaults.showScrollbar ? \"scroll\" : \"hidden\",\n ...(typeof divProps.style === \"object\" && divProps.style),\n }}\n classList={{\n [styles.ScrollZoomContainer]: true,\n ...divProps.classList,\n }}\n >\n <div ref={scrollContentRef}>\n <div\n style={{\n top: 0,\n left: 0,\n height: `${verticalViewPort().pixelSize}px`,\n width: `${horizontalViewPort().pixelSize}px`,\n position: \"sticky\",\n display: \"flex\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n height: `${verticalViewPort().pixelSize}px`,\n width: `${horizontalViewPort().pixelSize}px`,\n }}\n >\n {props.children}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ScrollZoomContainer;\n","import styles from \"./PianoRollKeys.module.css\";\nimport { createEffect, createMemo, createSignal, Index, Show } from \"solid-js\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport ScrollZoomContainer from \"./viewport/ScrollZoomContainer\";\n\nconst PianoRollKeys = () => {\n const verticalViewPort = createMemo(() => useViewPortDimension(\"vertical\"));\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontalKeys\"));\n const [isMouseDown, setIsMouseDown] = createSignal(false);\n const context = usePianoRollContext();\n\n const handleMouseUp = () => {\n setIsMouseDown(false);\n };\n createEffect(() => {\n if (isMouseDown()) {\n window.addEventListener(\"mouseup\", handleMouseUp);\n } else {\n window.removeEventListener(\"mouseup\", handleMouseUp);\n }\n });\n\n return (\n <div class={styles.PianoRollKeys} style={{ width: `${horizontalViewPort().pixelSize}px` }}>\n <ScrollZoomContainer horizontalDimensionName=\"horizontalKeys\" showScrollbar={false}>\n <Index each={keys}>\n {(key) => {\n const isDown = createMemo(() => context.pressedKeys.includes(key().number));\n const virtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(127 - key().number, 1),\n );\n\n const previousIsBlack = blackKeys.includes((key().number - 1) % 12);\n const nextIsBlack = blackKeys.includes((key().number + 1) % 12);\n\n return (\n <Show when={virtualDimensions().size > 0}>\n <div\n classList={{\n [styles[\"Key\"]]: true,\n [styles[\"black\"]]: key().isBlack,\n [styles[\"white\"]]: !key().isBlack,\n [styles[\"down\"]]: isDown(),\n }}\n onMouseDown={() => {\n setIsMouseDown(true);\n context.onNoteDown(key().number);\n }}\n onMouseUp={() => {\n context.onNoteUp(key().number);\n }}\n onMouseEnter={() => {\n if (isMouseDown()) {\n context.onNoteDown(key().number);\n }\n }}\n onMouseLeave={() => {\n if (isMouseDown()) {\n context.onNoteUp(key().number);\n }\n }}\n title={key().name}\n data-index={key().number % 12}\n style={{\n top: `${\n virtualDimensions().offset -\n (!key().isBlack && nextIsBlack ? virtualDimensions().size / 2 : 0)\n }px`,\n height: `${\n virtualDimensions().size +\n (!key().isBlack && nextIsBlack ? virtualDimensions().size / 2 : 0) +\n (!key().isBlack && previousIsBlack ? virtualDimensions().size / 2 : 0)\n }px`,\n \"box-shadow\": [\n `0px 0px ${Math.min(virtualDimensions().size / 20, 1)}px ${Math.min(\n virtualDimensions().size / 50,\n 1,\n )}px rgba(0, 0, 0, 0.5) ${key().isBlack ? \"\" : \"inset\"}`,\n isDown() &&\n `0px 0px ${Math.min(virtualDimensions().size / 8, 2)}px ${Math.min(\n virtualDimensions().size / 20,\n 2,\n )}px rgba(0, 0, 0, 0.5) inset`,\n ]\n .filter((item) => !!item)\n .join(\", \"),\n }}\n >\n <Show when={key().isBlack && false}>\n <div\n class={styles[\"black-separator\"]}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size / 2 - 0.25}px`,\n }}\n ></div>\n </Show>\n </div>\n </Show>\n );\n }}\n </Index>\n </ScrollZoomContainer>\n </div>\n );\n};\n\nexport const blackKeys = [1, 3, 6, 8, 10];\nexport const keyNames = [\"C\", \"C#\", \"D\", \"D#\", \"E\", \"F\", \"F#\", \"G\", \"G#\", \"A\", \"A#\", \"B\"];\nexport const keys = Array.from({ length: 128 }).map((_, index) => ({\n number: index,\n name: `${keyNames[index % 12]} ${Math.floor(index / 12) - 2}`,\n isBlack: blackKeys.includes(index % 12),\n}));\n\nexport default PianoRollKeys;\n","import { batch, createMemo, createSignal, For, Ref, Show } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport styles from \"./PianoRollNotes.module.scss\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\n\ntype NoteDragMode = \"trimStart\" | \"move\" | \"trimEnd\" | undefined;\n\nconst PianoRollNotes = (props: { ref?: Ref<HTMLDivElement | undefined> }) => {\n const context = usePianoRollContext();\n\n const verticalViewPort = createMemo(() =>\n useViewPortDimension(context.mode === \"keys\" ? \"vertical\" : \"verticalTracks\"),\n );\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\n\n const gridDivisionTicks = createMemo(() => (context.ppq * 4) / context.gridDivision);\n\n const snapValueToGridIfEnabled = (value: number, altKey: boolean) =>\n context.snapToGrid && !altKey\n ? Math.round(value / gridDivisionTicks()) * gridDivisionTicks()\n : value;\n\n const insertOrUpdateNote = (event: MouseEvent) => {\n const position = horizontalViewPort().calculatePosition(event.clientX);\n\n const existingNote = currentNote();\n\n const midi =\n context.mode === \"keys\"\n ? 127 - Math.floor(verticalViewPort().calculatePosition(event.clientY))\n : existingNote?.midi ?? 60;\n\n const targetTrackIndex =\n context.mode === \"tracks\"\n ? clamp(\n Math.floor(verticalViewPort().calculatePosition(event.clientY)),\n 0,\n context.tracks.length - 1,\n )\n : context.selectedTrackIndex ?? 0;\n\n const eventPositionTicks = Math.floor(position / gridDivisionTicks()) * gridDivisionTicks();\n const velocity = 127;\n\n const ticks = existingNote?.ticks ?? eventPositionTicks;\n const durationTicks = existingNote?.ticks\n ? eventPositionTicks - existingNote?.ticks\n : gridDivisionTicks();\n\n const note = { midi, ticks, durationTicks, velocity };\n\n if (existingNote) {\n context.onNoteChange?.(currentNoteTrackIndex(), currentNoteIndex(), note);\n return currentNoteIndex();\n } else {\n return context.onInsertNote?.(targetTrackIndex, note) ?? -1;\n }\n };\n\n const [isDragging, setIsDragging] = createSignal(false);\n const [noteDragMode, setNoteDragMode] = createSignal<NoteDragMode>();\n const [currentNoteIndex, setCurrentNoteIndex] = createSignal(-1);\n const [currentNoteTrackIndex, setCurrentNoteTrackIndex] = createSignal(-1);\n const [isMouseDown, setIsMouseDown] = createSignal(false);\n\n const currentNote = createMemo(\n () => context.tracks[currentNoteTrackIndex()]?.notes[currentNoteIndex()],\n );\n\n const getClasses = (noteDragMode: NoteDragMode) => {\n return noteDragMode ? [styles.Note, styles[noteDragMode]] : [styles.Note];\n };\n\n return (\n <div\n classList={{ [styles.PianoRollNotes]: true }}\n ref={props.ref}\n onMouseDown={(event) => {\n batch(() => {\n setIsMouseDown(true);\n const index = insertOrUpdateNote(event);\n\n setCurrentNoteTrackIndex(context.selectedTrackIndex ?? 0);\n setCurrentNoteIndex(index);\n });\n }}\n onMouseMove={(event) => {\n if (isDragging()) return;\n\n if (!isMouseDown()) {\n setNoteDragMode(undefined);\n return;\n }\n\n const index = insertOrUpdateNote(event);\n\n setCurrentNoteIndex(index);\n }}\n onMouseUp={(event) => {\n setIsMouseDown(false);\n if (!event.altKey) return;\n insertOrUpdateNote(event);\n }}\n onDblClick={(event) => {\n insertOrUpdateNote(event);\n }}\n onClick={(event) => {\n if (currentNote()) {\n setCurrentNoteIndex(-1);\n return;\n }\n if (!event.altKey) return;\n insertOrUpdateNote(event);\n }}\n >\n <For each={context.tracks}>\n {(track, trackIndex) => {\n return (\n <Show\n when={\n trackIndex() === context.selectedTrackIndex ||\n context.showAllTracks ||\n context.mode === \"tracks\"\n }\n >\n <For each={track.notes}>\n {(note, noteIndex) => {\n const verticalVirtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(\n context.mode === \"keys\" ? 127 - note.midi : trackIndex(),\n 1,\n ),\n );\n\n const horizontalDimensions = createMemo(() =>\n horizontalViewPort().calculatePixelDimensions(note.ticks, note.durationTicks),\n );\n\n return (\n <Show\n when={\n verticalViewPort().isVisible(verticalVirtualDimensions()) &&\n horizontalViewPort().isVisible(horizontalDimensions())\n }\n >\n <div\n class={getClasses(noteDragMode()).join(\" \")}\n draggable={false}\n onMouseMove={(event) => {\n if (isDragging()) return;\n event.stopPropagation();\n\n const relativeX = horizontalViewPort().calculatePixelValue(\n horizontalViewPort().calculatePosition(event.clientX),\n );\n const noteStartX = horizontalViewPort().calculatePixelValue(note.ticks);\n const noteEndX = horizontalViewPort().calculatePixelValue(\n note.ticks + note.durationTicks,\n );\n\n setNoteDragMode(\n relativeX - noteStartX < 3\n ? \"trimStart\"\n : noteEndX - relativeX < 3\n ? \"trimEnd\"\n : \"move\",\n );\n }}\n onDblClick={(event) => {\n event.stopPropagation();\n context.onRemoveNote?.(trackIndex(), noteIndex());\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n\n setIsDragging(true);\n\n setCurrentNoteIndex(noteIndex());\n setCurrentNoteTrackIndex(trackIndex());\n\n const initialPosition = horizontalViewPort().calculatePosition(\n event.clientX,\n );\n const diffPosition = initialPosition - note.ticks;\n\n const handleMouseMove = (mouseMoveEvent: MouseEvent) => {\n const note = currentNote();\n if (!note) return;\n\n const ticks = snapValueToGridIfEnabled(\n Math.max(\n horizontalViewPort().calculatePosition(mouseMoveEvent.clientX) -\n diffPosition,\n 0,\n ),\n mouseMoveEvent.altKey,\n );\n\n const updatedNote = {\n ...note,\n ...(noteDragMode() === \"move\" &&\n context.mode === \"keys\" && {\n midi: Math.round(\n 127 -\n verticalViewPort().calculatePosition(mouseMoveEvent.clientY),\n ),\n }),\n ...((noteDragMode() === \"move\" || noteDragMode() === \"trimStart\") && {\n ticks,\n }),\n ...(noteDragMode() === \"trimStart\" && {\n durationTicks: note.durationTicks + note.ticks - ticks,\n }),\n ...(noteDragMode() === \"trimEnd\" && {\n durationTicks: snapValueToGridIfEnabled(\n horizontalViewPort().calculatePosition(mouseMoveEvent.clientX) -\n note.ticks,\n mouseMoveEvent.altKey,\n ),\n }),\n };\n\n const previousTrackIndex = currentNoteTrackIndex();\n const previousNoteIndex = currentNoteIndex();\n\n const targetTrackIndex =\n context.mode === \"tracks\"\n ? clamp(\n Math.floor(\n verticalViewPort().calculatePosition(mouseMoveEvent.clientY),\n ),\n 0,\n context.tracks.length - 1,\n )\n : previousTrackIndex;\n\n if (targetTrackIndex === previousTrackIndex) {\n context.onNoteChange?.(\n previousTrackIndex,\n previousNoteIndex,\n updatedNote,\n );\n } else {\n batch(() => {\n if (context.onInsertNote) {\n context.onRemoveNote?.(previousTrackIndex, previousNoteIndex);\n const newNoteIndex = context.onInsertNote(\n targetTrackIndex,\n updatedNote,\n );\n\n setCurrentNoteTrackIndex(targetTrackIndex);\n setCurrentNoteIndex(newNoteIndex);\n }\n });\n }\n };\n const handleMouseUp = () => {\n setIsDragging(false);\n setCurrentNoteIndex(-1);\n setCurrentNoteTrackIndex(-1);\n\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n style={{\n \"background-color\": `rgba(255,0,0, ${(128 + note.velocity) / 256})`,\n\n top: `${verticalVirtualDimensions().offset}px`,\n height: `${verticalVirtualDimensions().size}px`,\n\n left: `${horizontalDimensions().offset}px`,\n width: `${horizontalDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </For>\n </Show>\n );\n }}\n </For>\n </div>\n );\n};\n\nexport default PianoRollNotes;\n","import { createMemo, For, Index, Show } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { blackKeys, keys } from \"./PianoRollKeys\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport styles from \"./PianoRollGrid.module.css\";\n\nconst PianoRollGrid = () => {\n const context = usePianoRollContext();\n\n const verticalViewPort = createMemo(() =>\n useViewPortDimension(context.mode === \"keys\" ? \"vertical\" : \"verticalTracks\"),\n );\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\n\n const measureTicks = createMemo(() => context.ppq * 4);\n const selectedGridDivisorTicks = createMemo(() => measureTicks() / context.gridDivision);\n\n function calculateVisibleGridDivisorTicks(value: number): number {\n const visibleRange = horizontalViewPort().calculateVisibleRange();\n\n if (visibleRange <= 0) return 0;\n\n if (visibleRange / value > 100) {\n return calculateVisibleGridDivisorTicks(value * 2);\n }\n\n if (visibleRange / value < 30) {\n return calculateVisibleGridDivisorTicks(value / 2);\n }\n\n return value;\n }\n\n const gridDivisorTicks = createMemo(() =>\n calculateVisibleGridDivisorTicks(selectedGridDivisorTicks()),\n );\n\n const gridArray = createMemo(() => {\n const numberOfLines = Math.ceil(\n horizontalViewPort().calculateVisibleRange() / gridDivisorTicks() + 1,\n );\n const startIndex = Math.floor(context.position / gridDivisorTicks());\n\n return Array.from({ length: numberOfLines }).map((_, index) => ({\n index: index + startIndex,\n ticks: (index + startIndex) * gridDivisorTicks(),\n }));\n });\n\n return (\n <div class={styles.PianoRollGrid}>\n <Index each={gridArray()}>\n {(entry) => {\n const virtualDimensions = createMemo(() =>\n horizontalViewPort().calculatePixelDimensions(entry().ticks, gridDivisorTicks()),\n );\n\n return (\n <Show when={virtualDimensions().size > 0}>\n <div\n class={styles[\"PianoRollGrid-Time\"]}\n style={{\n background:\n Math.ceil((entry().index + 1 * selectedGridDivisorTicks()) / measureTicks()) %\n 2 ===\n 0\n ? \"#ddd\"\n : \"#ccc\",\n left: `${virtualDimensions().offset}px`,\n width: `${virtualDimensions().size}px`,\n \"border-left-color\":\n (entry().index * gridDivisorTicks()) % selectedGridDivisorTicks() === 0\n ? \"gray\"\n : \"#bbb\",\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\n <Show when={context.mode === \"keys\"}>\n <Index each={keys}>\n {(key) => {\n const virtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(127 - key().number, 1),\n );\n\n return (\n <Show when={virtualDimensions().size > 0}>\n <div\n class={styles[\"PianoRollGrid-Row\"]}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n width: \"100%\",\n \"background-color\": key().isBlack ? \"rgba(0,0,0,0.2)\" : \"none\",\n \"border-width\": `${\n !key().isBlack && !blackKeys.includes((key().number + 1) % 12) ? \"0.1px\" : 0\n } 1px ${\n !key().isBlack && !blackKeys.includes((key().number - 1) % 12) ? \"0.1px\" : 0\n } 0`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\n </Show>\n\n <Show when={context.mode === \"tracks\"}>\n <For each={context.tracks}>\n {(track, index) => {\n const virtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(index(), 1),\n );\n\n return (\n <Show when={virtualDimensions().size > 0}>\n <div\n class={styles[\"PianoRollGrid-Row\"]}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n width: \"100%\",\n \"background-color\": index() % 2 === 0 ? \"rgba(0,0,0,0.2)\" : \"none\",\n \"border-width\": 0,\n }}\n ></div>\n </Show>\n );\n }}\n </For>\n </Show>\n </div>\n );\n};\n\nexport default PianoRollGrid;\n","import { Accessor, createEffect, createSignal } from \"solid-js\";\n\nexport type ClientRect = Omit<DOMRect, \"toJSON\">;\n\nconst defaultRect: ClientRect = {\n left: 0,\n width: 0,\n top: 0,\n height: 0,\n bottom: 0,\n right: 0,\n x: 0,\n y: 0,\n};\n\nexport default function useBoundingClientRect(containerRef: Accessor<HTMLElement | undefined>) {\n const [boundingClientRect, setBoundingClientRect] = createSignal<ClientRect>(defaultRect);\n\n createEffect(() => {\n const container = containerRef();\n if (!container) return;\n\n const updateBoundingClientRect = () => {\n setBoundingClientRect(container.getBoundingClientRect() ?? defaultRect);\n };\n\n const resizeObserver = new ResizeObserver(updateBoundingClientRect);\n resizeObserver.observe(container);\n\n updateBoundingClientRect();\n\n return () => {\n resizeObserver.disconnect();\n };\n });\n\n return boundingClientRect;\n}\n","import { createMemo, mergeProps } from \"solid-js\";\nimport { JSX } from \"solid-js/jsx-runtime\";\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nconst ZoomSliderControl = (\n props: {\n dimensionName?: string;\n orientation?: \"horizontal\" | \"vertical\";\n } & JSX.IntrinsicElements[\"input\"],\n) => {\n const propsWithDefaults = mergeProps({ orientation: \"horizontal\" }, props);\n const dimension = createMemo(() =>\n useViewPortDimension(props.dimensionName ?? propsWithDefaults.orientation),\n );\n\n return (\n <input\n min={dimension().minZoom}\n max={dimension().maxZoom}\n step={0.01}\n {...props}\n value={dimension().zoom}\n onInput={(event) => dimension().onZoomChange?.(event.currentTarget.valueAsNumber)}\n type=\"range\"\n {...{ orient: propsWithDefaults.orientation }}\n style={\n propsWithDefaults.orientation === \"vertical\"\n ? {\n margin: 0,\n \"margin-left\": \"4px\",\n \"margin-right\": \"4px\",\n width: \"16px\",\n transform: \"rotate(180deg)\",\n ...({\n \"writing-mode\": \"bt-lr\" /* IE */,\n \"-webkit-appearance\": \"slider-vertical\" /* WebKit */,\n } as unknown as JSX.CSSProperties),\n ...(typeof props.style === \"object\" && props.style),\n }\n : {\n margin: 0,\n \"margin-top\": \"4px\",\n \"margin-bottom\": \"4px\",\n ...(typeof props.style === \"object\" && props.style),\n }\n }\n />\n );\n};\n\nexport default ZoomSliderControl;\n","import styles from \"./PianoRollTrackList.module.css\";\nimport { createMemo, Index, Show } from \"solid-js\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\n\nconst PianoRollTrackList = () => {\n const viewPort = createMemo(() => useViewPortDimension(\"verticalTracks\"));\n const context = usePianoRollContext();\n\n return (\n <div class={styles.PianoRollTrackList}>\n <Index each={context.tracks}>\n {(track, index) => {\n const virtualDimensions = createMemo(() => viewPort().calculatePixelDimensions(index, 1));\n\n return (\n <Show when={virtualDimensions().size > 0}>\n <div\n classList={{\n [styles[\"Track\"]]: true,\n }}\n title={track().name}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n background: index === context.selectedTrackIndex ? \"gray\" : \"lightgrey\",\n cursor: \"pointer\",\n }}\n onClick={() => context.onSelectedTrackIndexChange?.(index)}\n >\n {index} {track().name || \"[unnamed track]\"}\n </div>\n </Show>\n );\n }}\n </Index>\n </div>\n );\n};\n\nexport default PianoRollTrackList;\n","import styles from \"./PianoRoll.module.css\";\n\nimport { JSX, createSignal, ParentProps, Show, mergeProps } from \"solid-js\";\n\nimport { PianoRollContextProvider, splitContextProps } from \"./PianoRollContext\";\nimport PianoRollKeys from \"./PianoRollKeys\";\nimport PianoRollNotes from \"./PianoRollNotes\";\nimport ScrollZoomContainer from \"./viewport/ScrollZoomContainer\";\nimport PianoRollGrid from \"./PianoRollGrid\";\nimport { ScrollZoomViewPort as ScrollZoomViewPort } from \"./viewport/ScrollZoomViewPort\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport ZoomSliderControl from \"./viewport/ZoomSliderControl\";\nimport PianoRollTrackList from \"./PianoRollTrackList\";\nimport createPianoRollstate from \"./usePianoRollState\";\n\nexport type GridDivision = 1 | 2 | 4 | 8 | 16 | 32 | 64;\n\nexport type PianoRollProps = {\n showAllTracks?: boolean;\n showTrackList?: boolean;\n} & ReturnType<typeof createPianoRollstate> &\n Omit<JSX.IntrinsicElements[\"div\"], \"onDurationChange\">;\n\nconst PianoRoll = (allProps: ParentProps<PianoRollProps>) => {\n const propsWithDefaults = mergeProps({ showAllTracks: false }, allProps);\n const [context, divProps] = splitContextProps(propsWithDefaults);\n\n const [notesScrollerRef, setNotesScrollerRef] = createSignal<HTMLDivElement>();\n const [tracksScrollerRef, setTracksScrollerRef] = createSignal<HTMLDivElement>();\n\n const notesScrollerClientRect = useBoundingClientRect(notesScrollerRef);\n const tracksScrollerClientRect = useBoundingClientRect(tracksScrollerRef);\n\n const zoomFactor = 500;\n\n return (\n <PianoRollContextProvider value={context}>\n <div {...divProps} class={styles.PianoRoll}>\n <ScrollZoomViewPort\n dimensions={{\n horizontal: () => ({\n pixelOffset: notesScrollerClientRect().left,\n pixelSize: notesScrollerClientRect().width,\n position: context.position,\n range: context.duration,\n zoom: context.zoom * (zoomFactor / notesScrollerClientRect().width),\n onPositionChange: context.onPositionChange,\n onZoomChange: (zoom) =>\n context.onZoomChange?.(zoom / (zoomFactor / notesScrollerClientRect().width)),\n minZoom: 1,\n maxZoom: 500,\n }),\n vertical: () => ({\n pixelOffset: notesScrollerClientRect().top,\n pixelSize: notesScrollerClientRect().height,\n position: context.verticalPosition,\n range: 128,\n zoom: context.verticalZoom * (zoomFactor / notesScrollerClientRect().height),\n onPositionChange: context.onVerticalPositionChange,\n onZoomChange: (verticalZoom) =>\n context.onVerticalZoomChange?.(\n verticalZoom / (zoomFactor / notesScrollerClientRect().height),\n ),\n minZoom: 1,\n maxZoom: 10,\n }),\n horizontalTracks: () => ({\n pixelOffset: 0,\n pixelSize: tracksScrollerClientRect().width,\n }),\n verticalTracks: () => ({\n pixelOffset: tracksScrollerClientRect().top,\n pixelSize: tracksScrollerClientRect().height,\n position: context.verticalTrackPosition,\n range: context.tracks.length,\n zoom: context.verticalTrackZoom * (zoomFactor / tracksScrollerClientRect().height),\n onPositionChange: context.onVerticalTrackPositionChange,\n onZoomChange: (verticalTrackZoom) =>\n context.onVerticalTrackZoomChange?.(\n verticalTrackZoom / (zoomFactor / tracksScrollerClientRect().height),\n ),\n minZoom: 0.8,\n maxZoom: 3,\n }),\n horizontalKeys: () => ({ pixelSize: 60 }),\n }}\n >\n <div class={styles.PianoRollContainer}>\n <ZoomSliderControl orientation=\"vertical\" dimensionName=\"verticalTracks\" />\n <div style={{ display: \"flex\", width: \"30%\", \"max-width\": \"250px\" }}>\n <Show when={context.showTrackList}>\n <ScrollZoomContainer\n ref={setTracksScrollerRef}\n horizontalDimensionName=\"horizontalTracks\"\n verticalDimensionName=\"verticalTracks\"\n showScrollbar={context.mode === \"keys\"}\n >\n <PianoRollTrackList />\n </ScrollZoomContainer>\n </Show>\n <Show when={context.mode === \"keys\"}>\n <PianoRollKeys />\n </Show>\n </div>\n\n <ScrollZoomContainer\n ref={setNotesScrollerRef}\n verticalDimensionName={context.mode === \"keys\" ? \"vertical\" : \"verticalTracks\"}\n >\n {allProps.children}\n <PianoRollGrid />\n <PianoRollNotes />\n </ScrollZoomContainer>\n\n <ZoomSliderControl orientation=\"vertical\" disabled={context.mode !== \"keys\"} />\n </div>\n <ZoomSliderControl\n orientation=\"horizontal\"\n style={{\n \"margin-left\": `${tracksScrollerClientRect().width + 24}px`,\n \"margin-right\": \"24px\",\n }}\n />\n </ScrollZoomViewPort>\n </div>\n </PianoRollContextProvider>\n );\n};\n\nexport default PianoRoll;\n","import { createEffect, createMemo, JSX, mergeProps, splitProps } from \"solid-js\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\n\nconst PlayHead = (\n allProps: {\n playHeadPosition?: number;\n sync?: boolean;\n onPlayHeadPositionChange?: (playHeadPosition: number) => void;\n onPositionChange?: (position: number) => void;\n } & JSX.IntrinsicElements[\"div\"],\n) => {\n const propsWithDefauls = mergeProps({ playHeadPosition: 0, sync: false }, allProps);\n const [props, divProps] = splitProps(propsWithDefauls, [\n \"playHeadPosition\",\n \"sync\",\n \"onPlayHeadPositionChange\",\n \"onPositionChange\",\n ]);\n\n const viewPort = useViewPortDimension(\"horizontal\");\n createEffect(() => {\n if (!props.sync) return;\n\n const maxPosition = viewPort.range;\n const newPosition = clamp(\n props.playHeadPosition - viewPort.range / viewPort.zoom / 2,\n 0,\n maxPosition,\n );\n\n props.onPositionChange?.(newPosition);\n });\n\n const leftPosition = createMemo(() => viewPort.calculatePixelOffset(props.playHeadPosition));\n\n return (\n <div\n class=\"PlayHead\"\n {...divProps}\n style={{\n position: \"absolute\",\n height: \"100%\",\n width: \"2px\",\n left: `${leftPosition()}px`,\n \"background-color\": \"green\",\n cursor: \"pointer\",\n ...(typeof divProps.style === \"object\" && divProps.style),\n }}\n onMouseDown={(event) => {\n event.preventDefault();\n event.stopPropagation();\n const handleMouseMove = ({ clientX }: MouseEvent) => {\n const newPosition = viewPort.calculatePosition(clientX);\n props.onPlayHeadPositionChange?.(newPosition);\n };\n const handleMouseUp = () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n />\n );\n};\n\nexport default PlayHead;\n","import { createSignal } from \"solid-js\";\nimport { Note } from \"./types\";\n\nconst useNotes = () => {\n const [notes, onNotesChange] = createSignal<Note[]>([]);\n const onNoteChange = (index: number, note: Note) => {\n onNotesChange([...notes().slice(0, index), note, ...notes().splice(index + 1)]);\n };\n\n const onInsertNote = (note: Note) => {\n const index = Math.max(\n notes().findIndex(({ ticks }) => ticks > note.ticks),\n 0,\n );\n onNotesChange([...notes().slice(0, index), note, ...notes().splice(index)]);\n return index;\n };\n\n const onRemoveNote = (index: number) => {\n onNotesChange([...notes().slice(0, index), ...notes().splice(index + 1)]);\n };\n\n return {\n notes,\n onNotesChange,\n onNoteChange,\n onInsertNote,\n onRemoveNote,\n };\n};\n\nexport default useNotes;\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","defaultState","ppq","mode","position","zoom","verticalZoom","verticalPosition","verticalTrackZoom","verticalTrackPosition","gridDivision","snapToGrid","duration","tracks","selectedTrackIndex","pressedKeys","propNameToHandlerName","name","toUpperCase","slice","pianoRollStatePropNames","Object","keys","map","createPianoRollstate","initialState","state","setState","createStore","handlers","fromEntries","entries","entry","value","updateNotes","trackIndex","getNotes","track","notes","onTracksChange","onNoteChange","noteIndex","note","onInsertNote","newNoteIndex","Math","max","findIndex","ticks","onRemoveNote","onNoteDown","keyNumber","onPressedKeysChange","onNoteUp","filter","number","mergeProps","PianoRollContext","createContext","PianoRollContextProvider","Provider","usePianoRollContext","context","useContext","Error","splitContextProps","allProps","splitProps","createViewPortDimension","getState","getStateWithFunctions","onZoomChange","clamp","minZoom","maxZoom","onPositionChange","calculatePixelOffset","calculatePixelValue","calculatePosition","calculatePixelDimensions","calculateVisibleRange","calculateMaxPosition","isVisible","createEffect","virtualSize","pixelSize","range","offset","percentX","pixelOffset","length","size","min","defaultViewPortProps","Infinity","ScrollZoomViewPort","props","viewPorts","dimensions","viewPortProps","parentViewPorts","ScrollZoomViewPortContext","_$createComponent","children","useViewPortDimension","viewPort","find","ScrollZoomContainer","scrollContentRef","ownProps","divProps","propsWithDefaults","verticalDimensionName","horizontalDimensionName","showScrollbar","verticalViewPort","createMemo","horizontalViewPort","handleScroll","event","preventDefault","didUpdateScroll","maxVerticalPosition","maxPosition","height","width","scrollTop","scrollLeft","scrollWidth","scrollHeight","currentTarget","scrollTopAmount","scrollLeftAmount","handleWheel","altKey","abs","deltaX","deltaY","parentElement","scrollDivHeight","scrollDivWidth","scrollTo","left","top","_tmpl$","_$spread","_$mergeProps","overflow","styles","classList","_$use","_$insert","_$effect","PianoRollKeys","isMouseDown","setIsMouseDown","createSignal","handleMouseUp","window","addEventListener","removeEventListener","Index","key","isDown","includes","virtualDimensions","previousIsBlack","blackKeys","nextIsBlack","Show","isBlack","_$className","item","join","_$classList","_$setAttribute","keyNames","Array","from","_","index","floor","_$delegateEvents","PianoRollNotes","gridDivisionTicks","snapValueToGridIfEnabled","round","insertOrUpdateNote","clientX","existingNote","currentNote","midi","clientY","targetTrackIndex","eventPositionTicks","velocity","durationTicks","currentNoteTrackIndex","currentNoteIndex","isDragging","setIsDragging","noteDragMode","setNoteDragMode","setCurrentNoteIndex","setCurrentNoteTrackIndex","getClasses","Note","undefined","batch","For","showAllTracks","verticalVirtualDimensions","horizontalDimensions","_$memo","stopPropagation","initialPosition","diffPosition","handleMouseMove","mouseMoveEvent","updatedNote","previousTrackIndex","previousNoteIndex","relativeX","noteStartX","noteEndX","PianoRollGrid","measureTicks","selectedGridDivisorTicks","calculateVisibleGridDivisorTicks","visibleRange","gridDivisorTicks","gridArray","numberOfLines","ceil","startIndex","defaultRect","bottom","right","x","y","useBoundingClientRect","containerRef","boundingClientRect","setBoundingClientRect","container","updateBoundingClientRect","getBoundingClientRect","resizeObserver","ResizeObserver","observe","disconnect","ZoomSliderControl","orientation","dimension","dimensionName","valueAsNumber","orient","margin","transform","PianoRollTrackList","_tmpl$2","onSelectedTrackIndexChange","PianoRoll","notesScrollerRef","setNotesScrollerRef","tracksScrollerRef","setTracksScrollerRef","notesScrollerClientRect","tracksScrollerClientRect","zoomFactor","horizontal","vertical","onVerticalPositionChange","onVerticalZoomChange","horizontalTracks","verticalTracks","onVerticalTrackPositionChange","onVerticalTrackZoomChange","horizontalKeys","showTrackList","PianoRollContainer","PlayHead","propsWithDefauls","playHeadPosition","sync","newPosition","leftPosition","cursor","onPlayHeadPositionChange","useNotes","onNotesChange","splice"],"mappings":"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"}
|