solid-pianoroll 0.0.20 → 0.0.22
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 +211 -262
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +213 -264
- package/dist/esm/index.js.map +1 -1
- package/dist/source/PianoRoll.jsx +1 -1
- package/dist/source/PianoRollContext.jsx +2 -35
- package/dist/source/PianoRollKeys.jsx +6 -19
- package/dist/source/PianoRollNotes.jsx +87 -110
- package/dist/source/PianoRollTrackList.jsx +2 -3
- package/dist/source/index.jsx +1 -1
- package/dist/source/usePianoRollState.js +56 -44
- package/dist/source/{PlayHead.jsx → viewport/PlayHead.jsx} +13 -17
- package/dist/types/PianoRollContext.d.ts +67 -31
- package/dist/types/index.d.ts +1 -1
- package/dist/types/usePianoRollState.d.ts +21 -17
- package/dist/types/{PlayHead.d.ts → viewport/PlayHead.d.ts} +3 -3
- 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/viewport/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: Record<number, Record<number, boolean>>;\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 \"isKeyDown\",\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 updateKeyPressedState = (trackIndex: number, keyNumber: number, value: boolean) => {\n handlers.onPressedKeysChange?.({\n ...state.pressedKeys,\n [trackIndex]: {\n ...state.pressedKeys[trackIndex],\n [keyNumber]: value,\n },\n });\n };\n\n const onNoteDown = (trackIndex: number, keyNumber: number) => {\n updateKeyPressedState(trackIndex, keyNumber, true);\n };\n\n const onNoteUp = (trackIndex: number, keyNumber: number) => {\n updateKeyPressedState(trackIndex, keyNumber, false);\n };\n\n const isKeyDown = (trackIndex: number, keyNumber: number) =>\n !!state.pressedKeys[trackIndex]?.[keyNumber];\n\n return mergeProps(state, {\n ...handlers,\n onNoteChange,\n onInsertNote,\n onRemoveNote,\n onNoteDown,\n onNoteUp,\n isKeyDown,\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\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(() =>\n context.isKeyDown(context.selectedTrackIndex, key().number),\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 context.onNoteDown(context.selectedTrackIndex, key().number);\n }}\n onMouseUp={() => {\n context.onNoteUp(context.selectedTrackIndex, key().number);\n }}\n onMouseEnter={() => {\n if (isMouseDown()) {\n context.onNoteDown(context.selectedTrackIndex, key().number);\n }\n }}\n onMouseLeave={() => {\n if (isMouseDown()) {\n context.onNoteUp(context.selectedTrackIndex, key().number);\n }\n }}\n title={key().name}\n data-index={key().number % 12}\n style={{\n top: `${\n virtualDimensions().offset -\n virtualDimensions().size * (!key().isBlack ? (nextIsBlack ? 1 / 2 : 0) : 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 ></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 { 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\";\nimport { Note } from \"./types\";\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 [isDragging, setIsDragging] = createSignal(false);\n const [noteDragMode, setNoteDragMode] = createSignal<NoteDragMode>();\n const [currentNoteIndex, setCurrentNoteIndex] = createSignal(-1);\n const [currentNoteTrackIndex, setCurrentNoteTrackIndex] = createSignal(-1);\n\n const [diffPosition, setDiffPosition] = createSignal(0);\n const [getInitialNote, setInitialNote] = createSignal<Note>();\n\n const snapValueToGridIfEnabled = (value: number, altKey: boolean) =>\n context.snapToGrid && !altKey\n ? Math.round(value / gridDivisionTicks()) * gridDivisionTicks()\n : value;\n\n const calculateNoteDragValues = (event: MouseEvent) => {\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 : currentNoteTrackIndex() > -1\n ? currentNoteTrackIndex()\n : context.selectedTrackIndex;\n\n const midi =\n context.mode === \"keys\"\n ? Math.floor(128 - verticalViewPort().calculatePosition(event.clientY))\n : getInitialNote()?.midi ?? 60;\n\n const horiontalPosition = horizontalViewPort().calculatePosition(event.clientX);\n\n return {\n targetTrackIndex,\n midi,\n horiontalPosition,\n };\n };\n\n const handleMouseMove = (mouseMoveEvent: MouseEvent) => {\n const note = getInitialNote();\n if (!note) return;\n\n const { targetTrackIndex, midi, horiontalPosition } = calculateNoteDragValues(mouseMoveEvent);\n\n const ticks = snapValueToGridIfEnabled(\n horiontalPosition - diffPosition(),\n mouseMoveEvent.altKey,\n );\n\n const updatedNote = {\n ...note,\n midi,\n ...(noteDragMode() === \"move\" && { ticks }),\n ...(noteDragMode() === \"trimStart\" && {\n ticks: ticks < note.ticks + note.durationTicks ? ticks : note.ticks + note.durationTicks,\n durationTicks:\n ticks < note.ticks + note.durationTicks\n ? note.ticks + note.durationTicks - ticks\n : snapValueToGridIfEnabled(horiontalPosition - note.ticks, mouseMoveEvent.altKey),\n }),\n ...(noteDragMode() === \"trimEnd\" && {\n ticks: ticks < note.ticks ? ticks : note.ticks,\n durationTicks:\n ticks < note.ticks\n ? note.ticks - ticks\n : snapValueToGridIfEnabled(horiontalPosition - note.ticks, mouseMoveEvent.altKey),\n }),\n };\n\n const previousTrackIndex = currentNoteTrackIndex();\n const previousNoteIndex = currentNoteIndex();\n\n if (targetTrackIndex === previousTrackIndex) {\n context.onNoteChange?.(previousTrackIndex, previousNoteIndex, updatedNote);\n } else {\n if (context.onInsertNote) {\n context.onRemoveNote?.(previousTrackIndex, previousNoteIndex);\n const newNoteIndex = context.onInsertNote(targetTrackIndex, updatedNote);\n\n setCurrentNoteTrackIndex(targetTrackIndex);\n setCurrentNoteIndex(newNoteIndex);\n }\n }\n };\n\n const stopDragging = () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", stopDragging);\n setIsDragging(false);\n };\n\n const startDragging = () => {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", stopDragging);\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={(mouseDownEvent) => {\n const { targetTrackIndex, midi, horiontalPosition } =\n calculateNoteDragValues(mouseDownEvent);\n\n const ticks = snapValueToGridIfEnabled(horiontalPosition, mouseDownEvent.altKey);\n const durationTicks = gridDivisionTicks();\n\n const newNote: Note = {\n midi,\n ticks,\n durationTicks,\n velocity: 100,\n };\n\n const newNoteIndex = context.onInsertNote(targetTrackIndex, newNote);\n\n setIsDragging(true);\n setCurrentNoteTrackIndex(targetTrackIndex);\n setCurrentNoteIndex(newNoteIndex);\n setInitialNote(newNote);\n setDiffPosition(0);\n setNoteDragMode(\"trimEnd\");\n\n startDragging();\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 const initialPosition = horizontalViewPort().calculatePosition(\n event.clientX,\n );\n\n setDiffPosition(\n noteDragMode() === \"trimEnd\"\n ? -(note.ticks + note.durationTicks - initialPosition)\n : initialPosition - note.ticks,\n );\n setIsDragging(true);\n setCurrentNoteIndex(noteIndex());\n setCurrentNoteTrackIndex(trackIndex());\n setInitialNote(note);\n\n startDragging();\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.scss\";\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 [styles[\"selected\"]]: index === context.selectedTrackIndex,\n }}\n title={track().name}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\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 class={styles.PianoRollLeftColumn}>\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, splitProps } from \"solid-js\";\nimport { clamp } from \"./createViewPortDimension\";\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nconst PlayHead = (\n allProps: {\n position: number;\n onPositionChange?: (playHeadPosition: number) => void;\n sync?: boolean;\n dimensionName?: string;\n } & JSX.IntrinsicElements[\"div\"],\n) => {\n const [props, divProps] = splitProps(allProps, [\n \"position\",\n \"sync\",\n \"onPositionChange\",\n \"dimensionName\",\n ]);\n\n const viewPort = useViewPortDimension(props.dimensionName ?? \"horizontal\");\n\n createEffect(() => {\n if (!props.sync) return;\n\n const maxPosition = viewPort.range;\n const newPosition = clamp(props.position - viewPort.range / viewPort.zoom / 2, 0, maxPosition);\n\n viewPort.onPositionChange?.(newPosition);\n });\n\n const leftPosition = createMemo(() => viewPort.calculatePixelOffset(props.position));\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.onPositionChange?.(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","updateKeyPressedState","keyNumber","onPressedKeysChange","onNoteDown","onNoteUp","isKeyDown","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","number","virtualDimensions","previousIsBlack","blackKeys","includes","nextIsBlack","Show","isBlack","filter","item","join","_$classList","_$setAttribute","_$className","keyNames","Array","from","_","index","floor","_$delegateEvents","PianoRollNotes","gridDivisionTicks","isDragging","setIsDragging","noteDragMode","setNoteDragMode","currentNoteIndex","setCurrentNoteIndex","currentNoteTrackIndex","setCurrentNoteTrackIndex","diffPosition","setDiffPosition","getInitialNote","setInitialNote","snapValueToGridIfEnabled","round","calculateNoteDragValues","targetTrackIndex","clientY","midi","horiontalPosition","clientX","handleMouseMove","mouseMoveEvent","updatedNote","durationTicks","previousTrackIndex","previousNoteIndex","stopDragging","startDragging","getClasses","Note","mouseDownEvent","newNote","velocity","For","showAllTracks","verticalVirtualDimensions","horizontalDimensions","_$memo","stopPropagation","initialPosition","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","PianoRollLeftColumn","PlayHead","sync","newPosition","leftPosition","cursor","useNotes","onNotesChange","splice"],"mappings":"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"}
|