solid-pianoroll 0.0.12 → 0.0.13
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
CHANGED
|
@@ -203,9 +203,11 @@ const PianoRollNotes = props => {
|
|
|
203
203
|
const index = insertOrUpdateNote(event);
|
|
204
204
|
setNewNoteIndex(index);
|
|
205
205
|
};
|
|
206
|
-
_el$.$$mousedown =
|
|
206
|
+
_el$.$$mousedown = event => {
|
|
207
207
|
console.log("down");
|
|
208
208
|
setIsMouseDown(true);
|
|
209
|
+
const index = insertOrUpdateNote(event);
|
|
210
|
+
setNewNoteIndex(index);
|
|
209
211
|
};
|
|
210
212
|
const _ref$ = props.ref;
|
|
211
213
|
typeof _ref$ === "function" ? web.use(_ref$, _el$) : props.ref = _el$;
|
|
@@ -926,7 +928,7 @@ const usePianoRoll = () => {
|
|
|
926
928
|
const [zoom, onZoomChange] = solidJs.createSignal(10);
|
|
927
929
|
const [verticalZoom, onVerticalZoomChange] = solidJs.createSignal(5);
|
|
928
930
|
const [verticalPosition, onVerticalPositionChange] = solidJs.createSignal(64);
|
|
929
|
-
const [gridDivision, onGridDivisionChange] = solidJs.createSignal(
|
|
931
|
+
const [gridDivision, onGridDivisionChange] = solidJs.createSignal(4);
|
|
930
932
|
const [snapToGrid, onSnapToGridChange] = solidJs.createSignal(true);
|
|
931
933
|
const [duration, onDurationChange] = solidJs.createSignal(0);
|
|
932
934
|
return {
|
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/HorizontalZoomControl.tsx","../../src/viewport/createViewPortDimension.ts","../../src/viewport/ScrollZoomViewPort.tsx","../../src/PianoRollNotes.tsx","../../src/viewport/ScrollContainer.tsx","../../src/PianoRollKeys.tsx","../../src/PianoRollGrid.tsx","../../src/useNotes.ts","../../src/useBoundingClientRect.ts","../../src/viewport/VerticalZoomControl.tsx","../../src/MultiTrackPianoRoll.tsx","../../src/PianoRoll.tsx","../../src/usePianoRoll.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\";\n\nconst PianoRollContext = createContext<PianoRollProps>();\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 \"condensed\",\n \"duration\",\n \"gridDivision\",\n \"notes\",\n \"position\",\n \"ppq\",\n \"snapToGrid\",\n \"verticalPosition\",\n \"verticalZoom\",\n \"zoom\",\n \"onInsertNote\",\n \"onNoteChange\",\n \"onPositionChange\",\n \"onRemoveNote\",\n \"onVerticalPositionChange\",\n \"onVerticalZoomChange\",\n \"onZoomChange\",\n ]);\n","import { JSX } from \"solid-js/jsx-runtime\";\n\nimport { usePianoRollContext } from \"../PianoRollContext\";\n\nconst HorizontalZoomControl = (props: JSX.IntrinsicElements[\"input\"]) => {\n const context = usePianoRollContext();\n\n return (\n <input\n max=\"500\"\n min=\"1\"\n step={0.01}\n {...props}\n value={context.zoom}\n onInput={(event) => context.onZoomChange?.(event.currentTarget.valueAsNumber)}\n type=\"range\"\n style={{\n \"margin-left\": \"50px\",\n \"margin-right\": \"16px\",\n ...(typeof props.style === \"object\" && props.style),\n }}\n />\n );\n};\n\nexport default HorizontalZoomControl;\n","import { createEffect } from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\n\nexport type ViewPortDimension = ReturnType<typeof createViewPortDimension>;\nexport type ViewPortDimensionName = \"horizontal\" | \"vertical\";\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\nexport default function createViewPortDimension(getState: () => ViewPortDimensionState) {\n const getStateWithFunctions = () => ({\n ...getState(),\n calculatePixelValue,\n calculatePosition,\n calculatePixelDimensions,\n calculateVisibleRange,\n calculateMaxPosition,\n isVisible,\n });\n\n const [state, setState] = createStore(getStateWithFunctions());\n\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\nexport const ScrollZoomViewPort = (\n props: ParentProps<{\n dimensions: Record<ViewPortDimensionName, () => Omit<ViewPortDimensionState, \"name\">>;\n }>,\n) => {\n const viewPorts = Object.entries(props.dimensions).map(([name, viewPortProps]) =>\n createViewPortDimension(() => ({ name: name as ViewPortDimensionName, ...viewPortProps() })),\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 { createMemo, createSignal, Index, Ref, Show } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport styles from \"./PianoRollNotes.module.scss\";\n\ntype NoteDragMode = \"trimStart\" | \"move\" | \"trimEnd\" | undefined;\n\nconst PianoRollNotes = (props: { ref?: Ref<HTMLDivElement | undefined> }) => {\n const context = usePianoRollContext();\n\n const verticalViewPort = createMemo(() => useViewPortDimension(\"vertical\"));\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 const midi = context.condensed\n ? 60\n : 127 - Math.floor(verticalViewPort().calculatePosition(event.clientY));\n const eventPositionTicks = Math.floor(position / gridDivisionTicks()) * gridDivisionTicks();\n const velocity = 127;\n\n const existingNote = newNote();\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?.(newNoteIndex(), note);\n return newNoteIndex();\n } else {\n return context.onInsertNote?.(note) ?? -1;\n }\n };\n\n const [isDragging, setIsDragging] = createSignal(false);\n const [noteDragMode, setNoteDragMode] = createSignal<NoteDragMode>();\n const [newNoteIndex, setNewNoteIndex] = createSignal(-1);\n const [isMouseDown, setIsMouseDown] = createSignal(false);\n\n const newNote = createMemo(() => context.notes[newNoteIndex()]);\n\n const getClasses = (noteDragMode: NoteDragMode) => {\n return noteDragMode ? [styles.Note, styles[noteDragMode]] : [styles.Note];\n };\n\n return (\n <div\n class={styles.PianoRollNotes}\n ref={props.ref}\n onMouseDown={() => {\n console.log(\"down\");\n setIsMouseDown(true);\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 setNewNoteIndex(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 (newNote()) {\n setNewNoteIndex(-1);\n return;\n }\n if (!event.altKey) return;\n insertOrUpdateNote(event);\n }}\n >\n <Index each={context.notes}>\n {(note, index) => {\n const verticalVirtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(127 - note().midi, 1),\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()) || context.condensed) &&\n horizontalViewPort().isVisible(horizontalDimensions())\n }\n >\n <div\n class={getClasses(noteDragMode()).join(\" \")}\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?.(index);\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n\n setIsDragging(true);\n const initialPosition = horizontalViewPort().calculatePosition(event.clientX);\n const diffPosition = initialPosition - note().ticks;\n\n const handleMouseMove = (mouseMoveEvent: MouseEvent) => {\n const ticks = snapValueToGridIfEnabled(\n Math.max(\n horizontalViewPort().calculatePosition(mouseMoveEvent.clientX) -\n diffPosition,\n 0,\n ),\n mouseMoveEvent.altKey,\n );\n\n context.onNoteChange?.(index, {\n ...note(),\n ...(noteDragMode() === \"move\" &&\n !context.condensed && {\n midi: Math.round(\n 127 - 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 handleMouseUp = () => {\n setIsDragging(false);\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 ...(context.condensed\n ? { top: 0, height: \"100%\" }\n : {\n top: `${verticalVirtualDimensions().offset}px`,\n height: `${verticalVirtualDimensions().size}px`,\n }),\n\n left: `${horizontalDimensions().offset}px`,\n width: `${horizontalDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\n </div>\n );\n};\n\nexport default PianoRollNotes;\n","import { createEffect, createMemo, ParentProps, Ref } from \"solid-js\";\n\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nconst ScrollContainer = (props: ParentProps<{ ref?: Ref<HTMLDivElement> }>) => {\n let scrollContentRef: HTMLDivElement | undefined;\n\n const verticalViewPort = createMemo(() => useViewPortDimension(\"vertical\"));\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\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) => {\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 }\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 class=\"PianoRoll-Scroller\"\n style={{\n height: \"100%\",\n width: \"100%\",\n \"z-index\": 4,\n overflow: \"scroll\",\n \"pointer-events\": \"auto\",\n }}\n onScroll={handleScroll}\n onWheel={handleWheel}\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 ScrollContainer;\n","import styles from \"./PianoRollKeys.module.css\";\nimport { createMemo, Index, Show } from \"solid-js\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\n\nconst PianoRollKeys = () => {\n const viewPort = createMemo(() => useViewPortDimension(\"vertical\"));\n\n return (\n <div class={styles.PianoRollKeys}>\n <Index each={keys}>\n {(key) => {\n const virtualDimensions = createMemo(() =>\n viewPort().calculatePixelDimensions(127 - key().number, 1),\n );\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[\"whiteAndNextIsWhite\"]]:\n !key().isBlack && !blackKeys.includes((key().number + 1) % 12),\n [styles[\"whiteAndPreviousIsWhite\"]]:\n !key().isBlack && !blackKeys.includes((key().number - 1) % 12),\n }}\n title={key().name}\n data-index={key().number % 12}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\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, 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(() => useViewPortDimension(\"vertical\"));\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 if (horizontalViewPort().calculateVisibleRange() / value > 100) {\n return calculateVisibleGridDivisorTicks(value * 2);\n }\n if (horizontalViewPort().calculateVisibleRange() / value < 30) {\n return calculateVisibleGridDivisorTicks(value / 2);\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.condensed}>\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-Key\"]}\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 </div>\n );\n};\n\nexport default PianoRollGrid;\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 { 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 { JSX } from \"solid-js/jsx-runtime\";\nimport { usePianoRollContext } from \"../PianoRollContext\";\n\nconst VerticalZoomControl = (props: JSX.IntrinsicElements[\"input\"]) => {\n const context = usePianoRollContext();\n\n return (\n <input\n min=\"1\"\n max=\"11\"\n step={0.01}\n {...props}\n value={context.verticalZoom}\n onInput={(event) => context.onVerticalZoomChange?.(event.currentTarget.valueAsNumber)}\n type=\"range\"\n {...{ orient: \"vertical\" }}\n style={{\n width: \"16px\",\n ...({\n \"writing-mode\": \"bt-lr\" /* IE */,\n \"-webkit-appearance\": \"slider-vertical\" /* WebKit */,\n } as unknown as JSX.CSSProperties),\n }}\n />\n );\n};\n\nexport default VerticalZoomControl;\n","import {\n JSX,\n createSignal,\n mergeProps,\n createMemo,\n Index,\n createEffect,\n splitProps,\n Show,\n} from \"solid-js\";\nimport styles from \"./PianoRoll.module.css\";\nimport HorizontalZoomControl from \"./viewport/HorizontalZoomControl\";\n\nimport { PianoRollContextProvider, splitContextProps } from \"./PianoRollContext\";\n\nimport PianoRollNotes from \"./PianoRollNotes\";\nimport ScrollContainer from \"./viewport/ScrollContainer\";\nimport PianoRollGrid from \"./PianoRollGrid\";\n\nimport { TrackJSON } from \"@tonejs/midi\";\nimport useNotes from \"./useNotes\";\nimport { PianoRollProps } from \"./PianoRoll\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport { ScrollZoomViewPort, useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\nimport { createStore } from \"solid-js/store\";\nimport PianoRollKeys from \"./PianoRollKeys\";\nimport VerticalZoomControl from \"./viewport/VerticalZoomControl\";\n\nexport type MultiTrackPianoRollProps = Omit<\n PianoRollProps,\n \"notes\" | \"onNoteChange\" | \"onInsertNote\" | \"onRemoveNote\" | \"condensed\"\n> & {\n tracks: TrackJSON[];\n selectedTrack?: TrackJSON;\n onSelectedTrackChange: (track?: TrackJSON) => void;\n} & JSX.IntrinsicElements[\"div\"];\n\nconst MultiTrackPianoRoll = (allProps: MultiTrackPianoRollProps) => {\n const condensed = createMemo(() => !allProps.selectedTrack);\n\n const [ownProps, restProps] = splitProps(allProps, [\"tracks\", \"selectedTrack\"]);\n\n const [contextProps, divProps] = splitContextProps(\n mergeProps(restProps, { notes: [], condensed: false }),\n );\n\n const [scrollerRef, setScrollerRef] = createSignal<HTMLDivElement>();\n const clientRect = useBoundingClientRect(scrollerRef);\n\n const zoomFactor = 500;\n\n const minZoom = createMemo(() => 1 / (zoomFactor / clientRect().width));\n const maxZoom = createMemo(() => 500 * (zoomFactor / clientRect().width));\n\n const minVerticalZoom = createMemo(() => 1 / (zoomFactor / clientRect().height));\n const maxVerticalZoom = createMemo(() => 10 * (zoomFactor / clientRect().height));\n\n return (\n <PianoRollContextProvider value={{ ...contextProps }}>\n <ScrollZoomViewPort\n dimensions={{\n horizontal: () => ({\n pixelOffset: clientRect().left,\n pixelSize: clientRect().width,\n position: contextProps.position,\n range: contextProps.duration,\n zoom: contextProps.zoom * (zoomFactor / clientRect().width),\n onPositionChange: contextProps.onPositionChange,\n onZoomChange: (zoom) =>\n contextProps.onZoomChange?.(\n clamp(zoom / (zoomFactor / clientRect().width), minZoom(), maxZoom()),\n ),\n }),\n vertical: () => ({\n pixelOffset: clientRect().top,\n pixelSize: clientRect().height,\n position: contextProps.verticalPosition,\n range: 128,\n zoom: contextProps.verticalZoom * (zoomFactor / clientRect().height),\n onPositionChange: contextProps.onVerticalPositionChange,\n onZoomChange: (verticalZoom) =>\n contextProps.onVerticalZoomChange?.(\n clamp(\n verticalZoom / (zoomFactor / clientRect().height),\n minVerticalZoom(),\n maxVerticalZoom(),\n ),\n ),\n }),\n }}\n >\n <div\n style={{\n display: \"flex\",\n flex: 1,\n height: \"100%\",\n \"flex-direction\": \"row\",\n }}\n >\n <ul style={{ \"margin-block-start\": 0, \"padding-inline-start\": 0, width: \"150px\" }}>\n <Index each={allProps.tracks}>\n {(track) => (\n <li\n style={{\n width: \"150px\",\n height: \"30px\",\n \"list-style\": \"none\",\n display: \"flex\",\n \"align-items\": \"center\",\n \"border-top\": \"1px black solid\",\n background: track() === allProps.selectedTrack ? \"lightgray\" : \"none\",\n cursor: \"pointer\",\n }}\n onClick={() => {\n if (track() === allProps.selectedTrack) {\n allProps.onSelectedTrackChange(undefined);\n } else {\n allProps.onSelectedTrackChange(track());\n }\n }}\n >\n {track().name}\n </li>\n )}\n </Index>\n </ul>\n\n <div class={styles.PianoRoll} style={{ flex: 1 }}>\n <div class={styles.PianoRollContainer}>\n <Show when={!condensed()}>\n <PianoRollKeys />\n </Show>\n\n <ScrollContainer ref={setScrollerRef}>\n <ul\n style={{\n margin: 0,\n \"margin-block-start\": 0,\n \"padding-inline-start\": 0,\n }}\n >\n <Index each={allProps.tracks}>\n {(track) => {\n const notes = useNotes();\n\n createEffect(() => {\n notes.onNotesChange(track().notes);\n });\n\n const [context, setContext] = createStore({ ...contextProps });\n\n createEffect(() => {\n setContext({\n ...contextProps,\n condensed: condensed(),\n notes: notes.notes(),\n onNoteChange: notes.onNoteChange,\n onInsertNote: notes.onInsertNote,\n onRemoveNote: notes.onRemoveNote,\n });\n });\n\n const verticalViewPort = useViewPortDimension(\"vertical\");\n\n return (\n <Show when={condensed() || allProps.selectedTrack === track()}>\n <PianoRollContextProvider value={context}>\n <li\n style={{\n display: \"flex\",\n position: \"relative\",\n \"list-style\": \"none\",\n \"flex-direction\": \"row\",\n height: condensed() ? \"30px\" : `${verticalViewPort.pixelSize}px`,\n \"border-top\": \"1px black solid\",\n }}\n >\n <PianoRollNotes />\n <PianoRollGrid />\n </li>\n </PianoRollContextProvider>\n </Show>\n );\n }}\n </Index>\n </ul>\n </ScrollContainer>\n <Show when={!condensed()}>\n <VerticalZoomControl\n value={contextProps.verticalZoom}\n onInput={(event) =>\n contextProps.onVerticalZoomChange?.(event.currentTarget.valueAsNumber)\n }\n />\n </Show>\n </div>\n <HorizontalZoomControl\n style={{ width: \"100%\", \"margin-left\": 0 }}\n value={contextProps.zoom}\n onInput={(event) => contextProps.onZoomChange?.(event.currentTarget.valueAsNumber)}\n />\n </div>\n </div>\n </ScrollZoomViewPort>\n </PianoRollContextProvider>\n );\n};\n\nexport default MultiTrackPianoRoll;\n","import styles from \"./PianoRoll.module.css\";\n\nimport { JSX, createSignal, createMemo } from \"solid-js\";\n\nimport { PianoRollContextProvider, splitContextProps } from \"./PianoRollContext\";\nimport PianoRollKeys from \"./PianoRollKeys\";\nimport PianoRollNotes from \"./PianoRollNotes\";\nimport ScrollContainer from \"./viewport/ScrollContainer\";\nimport PianoRollGrid from \"./PianoRollGrid\";\nimport { Note } from \"./types\";\nimport { ScrollZoomViewPort as ScrollZoomViewPort } from \"./viewport/ScrollZoomViewPort\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\nimport VerticalZoomControl from \"./viewport/VerticalZoomControl\";\nimport HorizontalZoomControl from \"./viewport/HorizontalZoomControl\";\n\nexport type GridDivision = 1 | 2 | 4 | 8 | 16 | 32 | 64;\n\nexport type PianoRollProps = {\n ppq: number;\n notes: Note[];\n\n gridDivision: GridDivision;\n snapToGrid: boolean;\n\n condensed?: boolean;\n\n verticalPosition: number;\n verticalZoom: number;\n\n position: number;\n duration: number;\n zoom: number;\n\n onVerticalZoomChange?: (zoom: number) => void;\n onVerticalPositionChange?: (zoom: number) => void;\n onZoomChange?: (zoom: number) => void;\n onPositionChange?: (zoom: number) => void;\n\n onNoteChange?: (index: number, note: Note) => void;\n onInsertNote?: (note: Note) => number;\n onRemoveNote?: (index: number) => void;\n};\n\nconst PianoRoll = (allProps: PianoRollProps & JSX.IntrinsicElements[\"div\"]) => {\n const [contextProps, divProps] = splitContextProps(allProps);\n\n const [scrollerRef, setScrollerRef] = createSignal<HTMLDivElement>();\n const clientRect = useBoundingClientRect(scrollerRef);\n\n const zoomFactor = 500;\n\n const minZoom = createMemo(() => 1 / (zoomFactor / clientRect().width));\n const maxZoom = createMemo(() => 500 * (zoomFactor / clientRect().width));\n\n const minVerticalZoom = createMemo(() => 1 / (zoomFactor / clientRect().height));\n const maxVerticalZoom = createMemo(() => 10 * (zoomFactor / clientRect().height));\n\n return (\n <PianoRollContextProvider value={contextProps}>\n <div {...divProps} class={styles.PianoRoll}>\n <div class={styles.PianoRollContainer}>\n <ScrollZoomViewPort\n dimensions={{\n horizontal: () => ({\n pixelOffset: clientRect().left,\n pixelSize: clientRect().width,\n position: contextProps.position,\n range: contextProps.duration,\n zoom: contextProps.zoom * (zoomFactor / clientRect().width),\n onPositionChange: contextProps.onPositionChange,\n onZoomChange: (zoom) =>\n contextProps.onZoomChange?.(\n clamp(zoom / (zoomFactor / clientRect().width), minZoom(), maxZoom()),\n ),\n }),\n vertical: () => ({\n pixelOffset: clientRect().top,\n pixelSize: clientRect().height,\n position: contextProps.verticalPosition,\n range: 128,\n zoom: contextProps.verticalZoom * (zoomFactor / clientRect().height),\n onPositionChange: contextProps.onVerticalPositionChange,\n onZoomChange: (verticalZoom) =>\n contextProps.onVerticalZoomChange?.(\n clamp(\n verticalZoom / (zoomFactor / clientRect().height),\n minVerticalZoom(),\n maxVerticalZoom(),\n ),\n ),\n }),\n }}\n >\n <PianoRollKeys />\n\n <ScrollContainer ref={setScrollerRef}>\n <PianoRollGrid />\n <PianoRollNotes />\n </ScrollContainer>\n\n <VerticalZoomControl min={minVerticalZoom()} max={maxVerticalZoom()} />\n </ScrollZoomViewPort>\n </div>\n <HorizontalZoomControl min={minZoom()} max={maxZoom()} />\n </div>\n </PianoRollContextProvider>\n );\n};\n\nexport default PianoRoll;\n","import { createSignal } from \"solid-js\";\nimport { GridDivision } from \"./PianoRoll\";\n\nconst usePianoRoll = () => {\n const [ppq, onPpqChange] = createSignal(120);\n\n const [condensed, onCondensedChange] = createSignal(false);\n\n const [position, onPositionChange] = createSignal(0);\n\n const [zoom, onZoomChange] = createSignal(10);\n const [verticalZoom, onVerticalZoomChange] = createSignal(5);\n const [verticalPosition, onVerticalPositionChange] = createSignal(64);\n\n const [gridDivision, onGridDivisionChange] = createSignal<GridDivision>(16);\n const [snapToGrid, onSnapToGridChange] = createSignal(true);\n\n const [duration, onDurationChange] = createSignal(0);\n\n return {\n ppq,\n onPpqChange,\n\n position,\n onPositionChange,\n\n zoom,\n onZoomChange,\n\n verticalPosition,\n onVerticalPositionChange,\n\n verticalZoom,\n onVerticalZoomChange,\n\n gridDivision,\n onGridDivisionChange,\n\n snapToGrid,\n onSnapToGridChange,\n\n condensed,\n onCondensedChange,\n\n duration,\n onDurationChange,\n };\n};\n\nexport default usePianoRoll;\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","HorizontalZoomControl","props","_tmpl$","_$spread","_$mergeProps","zoom","event","onZoomChange","currentTarget","valueAsNumber","createViewPortDimension","getState","getStateWithFunctions","calculatePixelValue","calculatePosition","calculatePixelDimensions","calculateVisibleRange","calculateMaxPosition","isVisible","state","setState","createStore","createEffect","position","virtualSize","pixelSize","range","calculatePixelOffset","offset","percentX","pixelOffset","length","size","clamp","value","min","max","Math","ScrollZoomViewPort","viewPorts","Object","entries","dimensions","map","name","viewPortProps","parentViewPorts","ScrollZoomViewPortContext","_$createComponent","children","useViewPortDimension","viewPort","find","PianoRollNotes","verticalViewPort","createMemo","horizontalViewPort","gridDivisionTicks","ppq","gridDivision","snapValueToGridIfEnabled","altKey","snapToGrid","round","insertOrUpdateNote","clientX","midi","condensed","floor","clientY","eventPositionTicks","velocity","existingNote","newNote","ticks","durationTicks","note","onNoteChange","newNoteIndex","onInsertNote","isDragging","setIsDragging","createSignal","noteDragMode","setNoteDragMode","setNewNoteIndex","isMouseDown","setIsMouseDown","notes","getClasses","styles","Note","undefined","index","console","log","_$insert","Index","verticalVirtualDimensions","horizontalDimensions","Show","_$memo","stopPropagation","initialPosition","diffPosition","handleMouseMove","mouseMoveEvent","handleMouseUp","window","removeEventListener","addEventListener","onRemoveNote","relativeX","noteStartX","noteEndX","_$effect","join","top","height","left","width","_$className","_$style","_$delegateEvents","ScrollContainer","scrollContentRef","handleScroll","preventDefault","didUpdateScroll","maxVerticalPosition","maxPosition","scrollTop","scrollLeft","scrollWidth","scrollHeight","scrollTopAmount","scrollLeftAmount","onPositionChange","handleWheel","abs","deltaX","deltaY","parentElement","scrollDivHeight","scrollDivWidth","scrollTo","_$use","PianoRollKeys","keys","key","virtualDimensions","number","isBlack","blackKeys","includes","_$classList","_$setAttribute","keyNames","Array","from","_","PianoRollGrid","measureTicks","selectedGridDivisorTicks","calculateVisibleGridDivisorTicks","gridDivisorTicks","gridArray","numberOfLines","ceil","startIndex","entry","useNotes","onNotesChange","slice","splice","findIndex","defaultRect","bottom","right","x","y","useBoundingClientRect","containerRef","boundingClientRect","setBoundingClientRect","container","updateBoundingClientRect","getBoundingClientRect","resizeObserver","ResizeObserver","observe","disconnect","VerticalZoomControl","verticalZoom","onVerticalZoomChange","orient","MultiTrackPianoRoll","selectedTrack","ownProps","restProps","contextProps","divProps","mergeProps","scrollerRef","setScrollerRef","clientRect","zoomFactor","minZoom","maxZoom","minVerticalZoom","maxVerticalZoom","horizontal","duration","vertical","verticalPosition","onVerticalPositionChange","tracks","track","onSelectedTrackChange","setContext","PianoRoll","PianoRollContainer","usePianoRoll","onPpqChange","onCondensedChange","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/PianoRollContext.tsx","../../src/viewport/HorizontalZoomControl.tsx","../../src/viewport/createViewPortDimension.ts","../../src/viewport/ScrollZoomViewPort.tsx","../../src/PianoRollNotes.tsx","../../src/viewport/ScrollContainer.tsx","../../src/PianoRollKeys.tsx","../../src/PianoRollGrid.tsx","../../src/useNotes.ts","../../src/useBoundingClientRect.ts","../../src/viewport/VerticalZoomControl.tsx","../../src/MultiTrackPianoRoll.tsx","../../src/PianoRoll.tsx","../../src/usePianoRoll.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\";\n\nconst PianoRollContext = createContext<PianoRollProps>();\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 \"condensed\",\n \"duration\",\n \"gridDivision\",\n \"notes\",\n \"position\",\n \"ppq\",\n \"snapToGrid\",\n \"verticalPosition\",\n \"verticalZoom\",\n \"zoom\",\n \"onInsertNote\",\n \"onNoteChange\",\n \"onPositionChange\",\n \"onRemoveNote\",\n \"onVerticalPositionChange\",\n \"onVerticalZoomChange\",\n \"onZoomChange\",\n ]);\n","import { JSX } from \"solid-js/jsx-runtime\";\n\nimport { usePianoRollContext } from \"../PianoRollContext\";\n\nconst HorizontalZoomControl = (props: JSX.IntrinsicElements[\"input\"]) => {\n const context = usePianoRollContext();\n\n return (\n <input\n max=\"500\"\n min=\"1\"\n step={0.01}\n {...props}\n value={context.zoom}\n onInput={(event) => context.onZoomChange?.(event.currentTarget.valueAsNumber)}\n type=\"range\"\n style={{\n \"margin-left\": \"50px\",\n \"margin-right\": \"16px\",\n ...(typeof props.style === \"object\" && props.style),\n }}\n />\n );\n};\n\nexport default HorizontalZoomControl;\n","import { createEffect } from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\n\nexport type ViewPortDimension = ReturnType<typeof createViewPortDimension>;\nexport type ViewPortDimensionName = \"horizontal\" | \"vertical\";\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\nexport default function createViewPortDimension(getState: () => ViewPortDimensionState) {\n const getStateWithFunctions = () => ({\n ...getState(),\n calculatePixelValue,\n calculatePosition,\n calculatePixelDimensions,\n calculateVisibleRange,\n calculateMaxPosition,\n isVisible,\n });\n\n const [state, setState] = createStore(getStateWithFunctions());\n\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\nexport const ScrollZoomViewPort = (\n props: ParentProps<{\n dimensions: Record<ViewPortDimensionName, () => Omit<ViewPortDimensionState, \"name\">>;\n }>,\n) => {\n const viewPorts = Object.entries(props.dimensions).map(([name, viewPortProps]) =>\n createViewPortDimension(() => ({ name: name as ViewPortDimensionName, ...viewPortProps() })),\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 { createMemo, createSignal, Index, Ref, Show } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport styles from \"./PianoRollNotes.module.scss\";\n\ntype NoteDragMode = \"trimStart\" | \"move\" | \"trimEnd\" | undefined;\n\nconst PianoRollNotes = (props: { ref?: Ref<HTMLDivElement | undefined> }) => {\n const context = usePianoRollContext();\n\n const verticalViewPort = createMemo(() => useViewPortDimension(\"vertical\"));\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 const midi = context.condensed\n ? 60\n : 127 - Math.floor(verticalViewPort().calculatePosition(event.clientY));\n const eventPositionTicks = Math.floor(position / gridDivisionTicks()) * gridDivisionTicks();\n const velocity = 127;\n\n const existingNote = newNote();\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?.(newNoteIndex(), note);\n return newNoteIndex();\n } else {\n return context.onInsertNote?.(note) ?? -1;\n }\n };\n\n const [isDragging, setIsDragging] = createSignal(false);\n const [noteDragMode, setNoteDragMode] = createSignal<NoteDragMode>();\n const [newNoteIndex, setNewNoteIndex] = createSignal(-1);\n const [isMouseDown, setIsMouseDown] = createSignal(false);\n\n const newNote = createMemo(() => context.notes[newNoteIndex()]);\n\n const getClasses = (noteDragMode: NoteDragMode) => {\n return noteDragMode ? [styles.Note, styles[noteDragMode]] : [styles.Note];\n };\n\n return (\n <div\n class={styles.PianoRollNotes}\n ref={props.ref}\n onMouseDown={(event) => {\n console.log(\"down\");\n setIsMouseDown(true);\n const index = insertOrUpdateNote(event);\n\n setNewNoteIndex(index);\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 setNewNoteIndex(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 (newNote()) {\n setNewNoteIndex(-1);\n return;\n }\n if (!event.altKey) return;\n insertOrUpdateNote(event);\n }}\n >\n <Index each={context.notes}>\n {(note, index) => {\n const verticalVirtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(127 - note().midi, 1),\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()) || context.condensed) &&\n horizontalViewPort().isVisible(horizontalDimensions())\n }\n >\n <div\n class={getClasses(noteDragMode()).join(\" \")}\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?.(index);\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n\n setIsDragging(true);\n const initialPosition = horizontalViewPort().calculatePosition(event.clientX);\n const diffPosition = initialPosition - note().ticks;\n\n const handleMouseMove = (mouseMoveEvent: MouseEvent) => {\n const ticks = snapValueToGridIfEnabled(\n Math.max(\n horizontalViewPort().calculatePosition(mouseMoveEvent.clientX) -\n diffPosition,\n 0,\n ),\n mouseMoveEvent.altKey,\n );\n\n context.onNoteChange?.(index, {\n ...note(),\n ...(noteDragMode() === \"move\" &&\n !context.condensed && {\n midi: Math.round(\n 127 - 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 handleMouseUp = () => {\n setIsDragging(false);\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 ...(context.condensed\n ? { top: 0, height: \"100%\" }\n : {\n top: `${verticalVirtualDimensions().offset}px`,\n height: `${verticalVirtualDimensions().size}px`,\n }),\n\n left: `${horizontalDimensions().offset}px`,\n width: `${horizontalDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\n </div>\n );\n};\n\nexport default PianoRollNotes;\n","import { createEffect, createMemo, ParentProps, Ref } from \"solid-js\";\n\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nconst ScrollContainer = (props: ParentProps<{ ref?: Ref<HTMLDivElement> }>) => {\n let scrollContentRef: HTMLDivElement | undefined;\n\n const verticalViewPort = createMemo(() => useViewPortDimension(\"vertical\"));\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\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) => {\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 }\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 class=\"PianoRoll-Scroller\"\n style={{\n height: \"100%\",\n width: \"100%\",\n \"z-index\": 4,\n overflow: \"scroll\",\n \"pointer-events\": \"auto\",\n }}\n onScroll={handleScroll}\n onWheel={handleWheel}\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 ScrollContainer;\n","import styles from \"./PianoRollKeys.module.css\";\nimport { createMemo, Index, Show } from \"solid-js\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\n\nconst PianoRollKeys = () => {\n const viewPort = createMemo(() => useViewPortDimension(\"vertical\"));\n\n return (\n <div class={styles.PianoRollKeys}>\n <Index each={keys}>\n {(key) => {\n const virtualDimensions = createMemo(() =>\n viewPort().calculatePixelDimensions(127 - key().number, 1),\n );\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[\"whiteAndNextIsWhite\"]]:\n !key().isBlack && !blackKeys.includes((key().number + 1) % 12),\n [styles[\"whiteAndPreviousIsWhite\"]]:\n !key().isBlack && !blackKeys.includes((key().number - 1) % 12),\n }}\n title={key().name}\n data-index={key().number % 12}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\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, 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(() => useViewPortDimension(\"vertical\"));\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 if (horizontalViewPort().calculateVisibleRange() / value > 100) {\n return calculateVisibleGridDivisorTicks(value * 2);\n }\n if (horizontalViewPort().calculateVisibleRange() / value < 30) {\n return calculateVisibleGridDivisorTicks(value / 2);\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.condensed}>\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-Key\"]}\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 </div>\n );\n};\n\nexport default PianoRollGrid;\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 { 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 { JSX } from \"solid-js/jsx-runtime\";\nimport { usePianoRollContext } from \"../PianoRollContext\";\n\nconst VerticalZoomControl = (props: JSX.IntrinsicElements[\"input\"]) => {\n const context = usePianoRollContext();\n\n return (\n <input\n min=\"1\"\n max=\"11\"\n step={0.01}\n {...props}\n value={context.verticalZoom}\n onInput={(event) => context.onVerticalZoomChange?.(event.currentTarget.valueAsNumber)}\n type=\"range\"\n {...{ orient: \"vertical\" }}\n style={{\n width: \"16px\",\n ...({\n \"writing-mode\": \"bt-lr\" /* IE */,\n \"-webkit-appearance\": \"slider-vertical\" /* WebKit */,\n } as unknown as JSX.CSSProperties),\n }}\n />\n );\n};\n\nexport default VerticalZoomControl;\n","import {\n JSX,\n createSignal,\n mergeProps,\n createMemo,\n Index,\n createEffect,\n splitProps,\n Show,\n} from \"solid-js\";\nimport styles from \"./PianoRoll.module.css\";\nimport HorizontalZoomControl from \"./viewport/HorizontalZoomControl\";\n\nimport { PianoRollContextProvider, splitContextProps } from \"./PianoRollContext\";\n\nimport PianoRollNotes from \"./PianoRollNotes\";\nimport ScrollContainer from \"./viewport/ScrollContainer\";\nimport PianoRollGrid from \"./PianoRollGrid\";\n\nimport { TrackJSON } from \"@tonejs/midi\";\nimport useNotes from \"./useNotes\";\nimport { PianoRollProps } from \"./PianoRoll\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport { ScrollZoomViewPort, useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\nimport { createStore } from \"solid-js/store\";\nimport PianoRollKeys from \"./PianoRollKeys\";\nimport VerticalZoomControl from \"./viewport/VerticalZoomControl\";\n\nexport type MultiTrackPianoRollProps = Omit<\n PianoRollProps,\n \"notes\" | \"onNoteChange\" | \"onInsertNote\" | \"onRemoveNote\" | \"condensed\"\n> & {\n tracks: TrackJSON[];\n selectedTrack?: TrackJSON;\n onSelectedTrackChange: (track?: TrackJSON) => void;\n} & JSX.IntrinsicElements[\"div\"];\n\nconst MultiTrackPianoRoll = (allProps: MultiTrackPianoRollProps) => {\n const condensed = createMemo(() => !allProps.selectedTrack);\n\n const [ownProps, restProps] = splitProps(allProps, [\"tracks\", \"selectedTrack\"]);\n\n const [contextProps, divProps] = splitContextProps(\n mergeProps(restProps, { notes: [], condensed: false }),\n );\n\n const [scrollerRef, setScrollerRef] = createSignal<HTMLDivElement>();\n const clientRect = useBoundingClientRect(scrollerRef);\n\n const zoomFactor = 500;\n\n const minZoom = createMemo(() => 1 / (zoomFactor / clientRect().width));\n const maxZoom = createMemo(() => 500 * (zoomFactor / clientRect().width));\n\n const minVerticalZoom = createMemo(() => 1 / (zoomFactor / clientRect().height));\n const maxVerticalZoom = createMemo(() => 10 * (zoomFactor / clientRect().height));\n\n return (\n <PianoRollContextProvider value={{ ...contextProps }}>\n <ScrollZoomViewPort\n dimensions={{\n horizontal: () => ({\n pixelOffset: clientRect().left,\n pixelSize: clientRect().width,\n position: contextProps.position,\n range: contextProps.duration,\n zoom: contextProps.zoom * (zoomFactor / clientRect().width),\n onPositionChange: contextProps.onPositionChange,\n onZoomChange: (zoom) =>\n contextProps.onZoomChange?.(\n clamp(zoom / (zoomFactor / clientRect().width), minZoom(), maxZoom()),\n ),\n }),\n vertical: () => ({\n pixelOffset: clientRect().top,\n pixelSize: clientRect().height,\n position: contextProps.verticalPosition,\n range: 128,\n zoom: contextProps.verticalZoom * (zoomFactor / clientRect().height),\n onPositionChange: contextProps.onVerticalPositionChange,\n onZoomChange: (verticalZoom) =>\n contextProps.onVerticalZoomChange?.(\n clamp(\n verticalZoom / (zoomFactor / clientRect().height),\n minVerticalZoom(),\n maxVerticalZoom(),\n ),\n ),\n }),\n }}\n >\n <div\n style={{\n display: \"flex\",\n flex: 1,\n height: \"100%\",\n \"flex-direction\": \"row\",\n }}\n >\n <ul style={{ \"margin-block-start\": 0, \"padding-inline-start\": 0, width: \"150px\" }}>\n <Index each={allProps.tracks}>\n {(track) => (\n <li\n style={{\n width: \"150px\",\n height: \"30px\",\n \"list-style\": \"none\",\n display: \"flex\",\n \"align-items\": \"center\",\n \"border-top\": \"1px black solid\",\n background: track() === allProps.selectedTrack ? \"lightgray\" : \"none\",\n cursor: \"pointer\",\n }}\n onClick={() => {\n if (track() === allProps.selectedTrack) {\n allProps.onSelectedTrackChange(undefined);\n } else {\n allProps.onSelectedTrackChange(track());\n }\n }}\n >\n {track().name}\n </li>\n )}\n </Index>\n </ul>\n\n <div class={styles.PianoRoll} style={{ flex: 1 }}>\n <div class={styles.PianoRollContainer}>\n <Show when={!condensed()}>\n <PianoRollKeys />\n </Show>\n\n <ScrollContainer ref={setScrollerRef}>\n <ul\n style={{\n margin: 0,\n \"margin-block-start\": 0,\n \"padding-inline-start\": 0,\n }}\n >\n <Index each={allProps.tracks}>\n {(track) => {\n const notes = useNotes();\n\n createEffect(() => {\n notes.onNotesChange(track().notes);\n });\n\n const [context, setContext] = createStore({ ...contextProps });\n\n createEffect(() => {\n setContext({\n ...contextProps,\n condensed: condensed(),\n notes: notes.notes(),\n onNoteChange: notes.onNoteChange,\n onInsertNote: notes.onInsertNote,\n onRemoveNote: notes.onRemoveNote,\n });\n });\n\n const verticalViewPort = useViewPortDimension(\"vertical\");\n\n return (\n <Show when={condensed() || allProps.selectedTrack === track()}>\n <PianoRollContextProvider value={context}>\n <li\n style={{\n display: \"flex\",\n position: \"relative\",\n \"list-style\": \"none\",\n \"flex-direction\": \"row\",\n height: condensed() ? \"30px\" : `${verticalViewPort.pixelSize}px`,\n \"border-top\": \"1px black solid\",\n }}\n >\n <PianoRollNotes />\n <PianoRollGrid />\n </li>\n </PianoRollContextProvider>\n </Show>\n );\n }}\n </Index>\n </ul>\n </ScrollContainer>\n <Show when={!condensed()}>\n <VerticalZoomControl\n value={contextProps.verticalZoom}\n onInput={(event) =>\n contextProps.onVerticalZoomChange?.(event.currentTarget.valueAsNumber)\n }\n />\n </Show>\n </div>\n <HorizontalZoomControl\n style={{ width: \"100%\", \"margin-left\": 0 }}\n value={contextProps.zoom}\n onInput={(event) => contextProps.onZoomChange?.(event.currentTarget.valueAsNumber)}\n />\n </div>\n </div>\n </ScrollZoomViewPort>\n </PianoRollContextProvider>\n );\n};\n\nexport default MultiTrackPianoRoll;\n","import styles from \"./PianoRoll.module.css\";\n\nimport { JSX, createSignal, createMemo } from \"solid-js\";\n\nimport { PianoRollContextProvider, splitContextProps } from \"./PianoRollContext\";\nimport PianoRollKeys from \"./PianoRollKeys\";\nimport PianoRollNotes from \"./PianoRollNotes\";\nimport ScrollContainer from \"./viewport/ScrollContainer\";\nimport PianoRollGrid from \"./PianoRollGrid\";\nimport { Note } from \"./types\";\nimport { ScrollZoomViewPort as ScrollZoomViewPort } from \"./viewport/ScrollZoomViewPort\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\nimport VerticalZoomControl from \"./viewport/VerticalZoomControl\";\nimport HorizontalZoomControl from \"./viewport/HorizontalZoomControl\";\n\nexport type GridDivision = 1 | 2 | 4 | 8 | 16 | 32 | 64;\n\nexport type PianoRollProps = {\n ppq: number;\n notes: Note[];\n\n gridDivision: GridDivision;\n snapToGrid: boolean;\n\n condensed?: boolean;\n\n verticalPosition: number;\n verticalZoom: number;\n\n position: number;\n duration: number;\n zoom: number;\n\n onVerticalZoomChange?: (zoom: number) => void;\n onVerticalPositionChange?: (zoom: number) => void;\n onZoomChange?: (zoom: number) => void;\n onPositionChange?: (zoom: number) => void;\n\n onNoteChange?: (index: number, note: Note) => void;\n onInsertNote?: (note: Note) => number;\n onRemoveNote?: (index: number) => void;\n};\n\nconst PianoRoll = (allProps: PianoRollProps & JSX.IntrinsicElements[\"div\"]) => {\n const [contextProps, divProps] = splitContextProps(allProps);\n\n const [scrollerRef, setScrollerRef] = createSignal<HTMLDivElement>();\n const clientRect = useBoundingClientRect(scrollerRef);\n\n const zoomFactor = 500;\n\n const minZoom = createMemo(() => 1 / (zoomFactor / clientRect().width));\n const maxZoom = createMemo(() => 500 * (zoomFactor / clientRect().width));\n\n const minVerticalZoom = createMemo(() => 1 / (zoomFactor / clientRect().height));\n const maxVerticalZoom = createMemo(() => 10 * (zoomFactor / clientRect().height));\n\n return (\n <PianoRollContextProvider value={contextProps}>\n <div {...divProps} class={styles.PianoRoll}>\n <div class={styles.PianoRollContainer}>\n <ScrollZoomViewPort\n dimensions={{\n horizontal: () => ({\n pixelOffset: clientRect().left,\n pixelSize: clientRect().width,\n position: contextProps.position,\n range: contextProps.duration,\n zoom: contextProps.zoom * (zoomFactor / clientRect().width),\n onPositionChange: contextProps.onPositionChange,\n onZoomChange: (zoom) =>\n contextProps.onZoomChange?.(\n clamp(zoom / (zoomFactor / clientRect().width), minZoom(), maxZoom()),\n ),\n }),\n vertical: () => ({\n pixelOffset: clientRect().top,\n pixelSize: clientRect().height,\n position: contextProps.verticalPosition,\n range: 128,\n zoom: contextProps.verticalZoom * (zoomFactor / clientRect().height),\n onPositionChange: contextProps.onVerticalPositionChange,\n onZoomChange: (verticalZoom) =>\n contextProps.onVerticalZoomChange?.(\n clamp(\n verticalZoom / (zoomFactor / clientRect().height),\n minVerticalZoom(),\n maxVerticalZoom(),\n ),\n ),\n }),\n }}\n >\n <PianoRollKeys />\n\n <ScrollContainer ref={setScrollerRef}>\n <PianoRollGrid />\n <PianoRollNotes />\n </ScrollContainer>\n\n <VerticalZoomControl min={minVerticalZoom()} max={maxVerticalZoom()} />\n </ScrollZoomViewPort>\n </div>\n <HorizontalZoomControl min={minZoom()} max={maxZoom()} />\n </div>\n </PianoRollContextProvider>\n );\n};\n\nexport default PianoRoll;\n","import { createSignal } from \"solid-js\";\nimport { GridDivision } from \"./PianoRoll\";\n\nconst usePianoRoll = () => {\n const [ppq, onPpqChange] = createSignal(120);\n\n const [condensed, onCondensedChange] = createSignal(false);\n\n const [position, onPositionChange] = createSignal(0);\n\n const [zoom, onZoomChange] = createSignal(10);\n const [verticalZoom, onVerticalZoomChange] = createSignal(5);\n const [verticalPosition, onVerticalPositionChange] = createSignal(64);\n\n const [gridDivision, onGridDivisionChange] = createSignal<GridDivision>(4);\n const [snapToGrid, onSnapToGridChange] = createSignal(true);\n\n const [duration, onDurationChange] = createSignal(0);\n\n return {\n ppq,\n onPpqChange,\n\n position,\n onPositionChange,\n\n zoom,\n onZoomChange,\n\n verticalPosition,\n onVerticalPositionChange,\n\n verticalZoom,\n onVerticalZoomChange,\n\n gridDivision,\n onGridDivisionChange,\n\n snapToGrid,\n onSnapToGridChange,\n\n condensed,\n onCondensedChange,\n\n duration,\n onDurationChange,\n };\n};\n\nexport default usePianoRoll;\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","HorizontalZoomControl","props","_tmpl$","_$spread","_$mergeProps","zoom","event","onZoomChange","currentTarget","valueAsNumber","createViewPortDimension","getState","getStateWithFunctions","calculatePixelValue","calculatePosition","calculatePixelDimensions","calculateVisibleRange","calculateMaxPosition","isVisible","state","setState","createStore","createEffect","position","virtualSize","pixelSize","range","calculatePixelOffset","offset","percentX","pixelOffset","length","size","clamp","value","min","max","Math","ScrollZoomViewPort","viewPorts","Object","entries","dimensions","map","name","viewPortProps","parentViewPorts","ScrollZoomViewPortContext","_$createComponent","children","useViewPortDimension","viewPort","find","PianoRollNotes","verticalViewPort","createMemo","horizontalViewPort","gridDivisionTicks","ppq","gridDivision","snapValueToGridIfEnabled","altKey","snapToGrid","round","insertOrUpdateNote","clientX","midi","condensed","floor","clientY","eventPositionTicks","velocity","existingNote","newNote","ticks","durationTicks","note","onNoteChange","newNoteIndex","onInsertNote","isDragging","setIsDragging","createSignal","noteDragMode","setNoteDragMode","setNewNoteIndex","isMouseDown","setIsMouseDown","notes","getClasses","styles","Note","undefined","index","console","log","_$insert","Index","verticalVirtualDimensions","horizontalDimensions","Show","_$memo","stopPropagation","initialPosition","diffPosition","handleMouseMove","mouseMoveEvent","handleMouseUp","window","removeEventListener","addEventListener","onRemoveNote","relativeX","noteStartX","noteEndX","_$effect","join","top","height","left","width","_$className","_$style","_$delegateEvents","ScrollContainer","scrollContentRef","handleScroll","preventDefault","didUpdateScroll","maxVerticalPosition","maxPosition","scrollTop","scrollLeft","scrollWidth","scrollHeight","scrollTopAmount","scrollLeftAmount","onPositionChange","handleWheel","abs","deltaX","deltaY","parentElement","scrollDivHeight","scrollDivWidth","scrollTo","_$use","PianoRollKeys","keys","key","virtualDimensions","number","isBlack","blackKeys","includes","_$classList","_$setAttribute","keyNames","Array","from","_","PianoRollGrid","measureTicks","selectedGridDivisorTicks","calculateVisibleGridDivisorTicks","gridDivisorTicks","gridArray","numberOfLines","ceil","startIndex","entry","useNotes","onNotesChange","slice","splice","findIndex","defaultRect","bottom","right","x","y","useBoundingClientRect","containerRef","boundingClientRect","setBoundingClientRect","container","updateBoundingClientRect","getBoundingClientRect","resizeObserver","ResizeObserver","observe","disconnect","VerticalZoomControl","verticalZoom","onVerticalZoomChange","orient","MultiTrackPianoRoll","selectedTrack","ownProps","restProps","contextProps","divProps","mergeProps","scrollerRef","setScrollerRef","clientRect","zoomFactor","minZoom","maxZoom","minVerticalZoom","maxVerticalZoom","horizontal","duration","vertical","verticalPosition","onVerticalPositionChange","tracks","track","onSelectedTrackChange","setContext","PianoRoll","PianoRollContainer","usePianoRoll","onPpqChange","onCondensedChange","onGridDivisionChange","onSnapToGridChange","onDurationChange"],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -201,9 +201,11 @@ const PianoRollNotes = props => {
|
|
|
201
201
|
const index = insertOrUpdateNote(event);
|
|
202
202
|
setNewNoteIndex(index);
|
|
203
203
|
};
|
|
204
|
-
_el$.$$mousedown =
|
|
204
|
+
_el$.$$mousedown = event => {
|
|
205
205
|
console.log("down");
|
|
206
206
|
setIsMouseDown(true);
|
|
207
|
+
const index = insertOrUpdateNote(event);
|
|
208
|
+
setNewNoteIndex(index);
|
|
207
209
|
};
|
|
208
210
|
const _ref$ = props.ref;
|
|
209
211
|
typeof _ref$ === "function" ? use(_ref$, _el$) : props.ref = _el$;
|
|
@@ -924,7 +926,7 @@ const usePianoRoll = () => {
|
|
|
924
926
|
const [zoom, onZoomChange] = createSignal(10);
|
|
925
927
|
const [verticalZoom, onVerticalZoomChange] = createSignal(5);
|
|
926
928
|
const [verticalPosition, onVerticalPositionChange] = createSignal(64);
|
|
927
|
-
const [gridDivision, onGridDivisionChange] = createSignal(
|
|
929
|
+
const [gridDivision, onGridDivisionChange] = createSignal(4);
|
|
928
930
|
const [snapToGrid, onSnapToGridChange] = createSignal(true);
|
|
929
931
|
const [duration, onDurationChange] = createSignal(0);
|
|
930
932
|
return {
|
package/dist/esm/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/HorizontalZoomControl.tsx","../../src/viewport/createViewPortDimension.ts","../../src/viewport/ScrollZoomViewPort.tsx","../../src/PianoRollNotes.tsx","../../src/viewport/ScrollContainer.tsx","../../src/PianoRollKeys.tsx","../../src/PianoRollGrid.tsx","../../src/useNotes.ts","../../src/useBoundingClientRect.ts","../../src/viewport/VerticalZoomControl.tsx","../../src/MultiTrackPianoRoll.tsx","../../src/PianoRoll.tsx","../../src/usePianoRoll.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\";\n\nconst PianoRollContext = createContext<PianoRollProps>();\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 \"condensed\",\n \"duration\",\n \"gridDivision\",\n \"notes\",\n \"position\",\n \"ppq\",\n \"snapToGrid\",\n \"verticalPosition\",\n \"verticalZoom\",\n \"zoom\",\n \"onInsertNote\",\n \"onNoteChange\",\n \"onPositionChange\",\n \"onRemoveNote\",\n \"onVerticalPositionChange\",\n \"onVerticalZoomChange\",\n \"onZoomChange\",\n ]);\n","import { JSX } from \"solid-js/jsx-runtime\";\n\nimport { usePianoRollContext } from \"../PianoRollContext\";\n\nconst HorizontalZoomControl = (props: JSX.IntrinsicElements[\"input\"]) => {\n const context = usePianoRollContext();\n\n return (\n <input\n max=\"500\"\n min=\"1\"\n step={0.01}\n {...props}\n value={context.zoom}\n onInput={(event) => context.onZoomChange?.(event.currentTarget.valueAsNumber)}\n type=\"range\"\n style={{\n \"margin-left\": \"50px\",\n \"margin-right\": \"16px\",\n ...(typeof props.style === \"object\" && props.style),\n }}\n />\n );\n};\n\nexport default HorizontalZoomControl;\n","import { createEffect } from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\n\nexport type ViewPortDimension = ReturnType<typeof createViewPortDimension>;\nexport type ViewPortDimensionName = \"horizontal\" | \"vertical\";\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\nexport default function createViewPortDimension(getState: () => ViewPortDimensionState) {\n const getStateWithFunctions = () => ({\n ...getState(),\n calculatePixelValue,\n calculatePosition,\n calculatePixelDimensions,\n calculateVisibleRange,\n calculateMaxPosition,\n isVisible,\n });\n\n const [state, setState] = createStore(getStateWithFunctions());\n\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\nexport const ScrollZoomViewPort = (\n props: ParentProps<{\n dimensions: Record<ViewPortDimensionName, () => Omit<ViewPortDimensionState, \"name\">>;\n }>,\n) => {\n const viewPorts = Object.entries(props.dimensions).map(([name, viewPortProps]) =>\n createViewPortDimension(() => ({ name: name as ViewPortDimensionName, ...viewPortProps() })),\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 { createMemo, createSignal, Index, Ref, Show } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport styles from \"./PianoRollNotes.module.scss\";\n\ntype NoteDragMode = \"trimStart\" | \"move\" | \"trimEnd\" | undefined;\n\nconst PianoRollNotes = (props: { ref?: Ref<HTMLDivElement | undefined> }) => {\n const context = usePianoRollContext();\n\n const verticalViewPort = createMemo(() => useViewPortDimension(\"vertical\"));\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 const midi = context.condensed\n ? 60\n : 127 - Math.floor(verticalViewPort().calculatePosition(event.clientY));\n const eventPositionTicks = Math.floor(position / gridDivisionTicks()) * gridDivisionTicks();\n const velocity = 127;\n\n const existingNote = newNote();\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?.(newNoteIndex(), note);\n return newNoteIndex();\n } else {\n return context.onInsertNote?.(note) ?? -1;\n }\n };\n\n const [isDragging, setIsDragging] = createSignal(false);\n const [noteDragMode, setNoteDragMode] = createSignal<NoteDragMode>();\n const [newNoteIndex, setNewNoteIndex] = createSignal(-1);\n const [isMouseDown, setIsMouseDown] = createSignal(false);\n\n const newNote = createMemo(() => context.notes[newNoteIndex()]);\n\n const getClasses = (noteDragMode: NoteDragMode) => {\n return noteDragMode ? [styles.Note, styles[noteDragMode]] : [styles.Note];\n };\n\n return (\n <div\n class={styles.PianoRollNotes}\n ref={props.ref}\n onMouseDown={() => {\n console.log(\"down\");\n setIsMouseDown(true);\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 setNewNoteIndex(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 (newNote()) {\n setNewNoteIndex(-1);\n return;\n }\n if (!event.altKey) return;\n insertOrUpdateNote(event);\n }}\n >\n <Index each={context.notes}>\n {(note, index) => {\n const verticalVirtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(127 - note().midi, 1),\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()) || context.condensed) &&\n horizontalViewPort().isVisible(horizontalDimensions())\n }\n >\n <div\n class={getClasses(noteDragMode()).join(\" \")}\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?.(index);\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n\n setIsDragging(true);\n const initialPosition = horizontalViewPort().calculatePosition(event.clientX);\n const diffPosition = initialPosition - note().ticks;\n\n const handleMouseMove = (mouseMoveEvent: MouseEvent) => {\n const ticks = snapValueToGridIfEnabled(\n Math.max(\n horizontalViewPort().calculatePosition(mouseMoveEvent.clientX) -\n diffPosition,\n 0,\n ),\n mouseMoveEvent.altKey,\n );\n\n context.onNoteChange?.(index, {\n ...note(),\n ...(noteDragMode() === \"move\" &&\n !context.condensed && {\n midi: Math.round(\n 127 - 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 handleMouseUp = () => {\n setIsDragging(false);\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 ...(context.condensed\n ? { top: 0, height: \"100%\" }\n : {\n top: `${verticalVirtualDimensions().offset}px`,\n height: `${verticalVirtualDimensions().size}px`,\n }),\n\n left: `${horizontalDimensions().offset}px`,\n width: `${horizontalDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\n </div>\n );\n};\n\nexport default PianoRollNotes;\n","import { createEffect, createMemo, ParentProps, Ref } from \"solid-js\";\n\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nconst ScrollContainer = (props: ParentProps<{ ref?: Ref<HTMLDivElement> }>) => {\n let scrollContentRef: HTMLDivElement | undefined;\n\n const verticalViewPort = createMemo(() => useViewPortDimension(\"vertical\"));\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\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) => {\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 }\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 class=\"PianoRoll-Scroller\"\n style={{\n height: \"100%\",\n width: \"100%\",\n \"z-index\": 4,\n overflow: \"scroll\",\n \"pointer-events\": \"auto\",\n }}\n onScroll={handleScroll}\n onWheel={handleWheel}\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 ScrollContainer;\n","import styles from \"./PianoRollKeys.module.css\";\nimport { createMemo, Index, Show } from \"solid-js\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\n\nconst PianoRollKeys = () => {\n const viewPort = createMemo(() => useViewPortDimension(\"vertical\"));\n\n return (\n <div class={styles.PianoRollKeys}>\n <Index each={keys}>\n {(key) => {\n const virtualDimensions = createMemo(() =>\n viewPort().calculatePixelDimensions(127 - key().number, 1),\n );\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[\"whiteAndNextIsWhite\"]]:\n !key().isBlack && !blackKeys.includes((key().number + 1) % 12),\n [styles[\"whiteAndPreviousIsWhite\"]]:\n !key().isBlack && !blackKeys.includes((key().number - 1) % 12),\n }}\n title={key().name}\n data-index={key().number % 12}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\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, 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(() => useViewPortDimension(\"vertical\"));\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 if (horizontalViewPort().calculateVisibleRange() / value > 100) {\n return calculateVisibleGridDivisorTicks(value * 2);\n }\n if (horizontalViewPort().calculateVisibleRange() / value < 30) {\n return calculateVisibleGridDivisorTicks(value / 2);\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.condensed}>\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-Key\"]}\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 </div>\n );\n};\n\nexport default PianoRollGrid;\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 { 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 { JSX } from \"solid-js/jsx-runtime\";\nimport { usePianoRollContext } from \"../PianoRollContext\";\n\nconst VerticalZoomControl = (props: JSX.IntrinsicElements[\"input\"]) => {\n const context = usePianoRollContext();\n\n return (\n <input\n min=\"1\"\n max=\"11\"\n step={0.01}\n {...props}\n value={context.verticalZoom}\n onInput={(event) => context.onVerticalZoomChange?.(event.currentTarget.valueAsNumber)}\n type=\"range\"\n {...{ orient: \"vertical\" }}\n style={{\n width: \"16px\",\n ...({\n \"writing-mode\": \"bt-lr\" /* IE */,\n \"-webkit-appearance\": \"slider-vertical\" /* WebKit */,\n } as unknown as JSX.CSSProperties),\n }}\n />\n );\n};\n\nexport default VerticalZoomControl;\n","import {\n JSX,\n createSignal,\n mergeProps,\n createMemo,\n Index,\n createEffect,\n splitProps,\n Show,\n} from \"solid-js\";\nimport styles from \"./PianoRoll.module.css\";\nimport HorizontalZoomControl from \"./viewport/HorizontalZoomControl\";\n\nimport { PianoRollContextProvider, splitContextProps } from \"./PianoRollContext\";\n\nimport PianoRollNotes from \"./PianoRollNotes\";\nimport ScrollContainer from \"./viewport/ScrollContainer\";\nimport PianoRollGrid from \"./PianoRollGrid\";\n\nimport { TrackJSON } from \"@tonejs/midi\";\nimport useNotes from \"./useNotes\";\nimport { PianoRollProps } from \"./PianoRoll\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport { ScrollZoomViewPort, useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\nimport { createStore } from \"solid-js/store\";\nimport PianoRollKeys from \"./PianoRollKeys\";\nimport VerticalZoomControl from \"./viewport/VerticalZoomControl\";\n\nexport type MultiTrackPianoRollProps = Omit<\n PianoRollProps,\n \"notes\" | \"onNoteChange\" | \"onInsertNote\" | \"onRemoveNote\" | \"condensed\"\n> & {\n tracks: TrackJSON[];\n selectedTrack?: TrackJSON;\n onSelectedTrackChange: (track?: TrackJSON) => void;\n} & JSX.IntrinsicElements[\"div\"];\n\nconst MultiTrackPianoRoll = (allProps: MultiTrackPianoRollProps) => {\n const condensed = createMemo(() => !allProps.selectedTrack);\n\n const [ownProps, restProps] = splitProps(allProps, [\"tracks\", \"selectedTrack\"]);\n\n const [contextProps, divProps] = splitContextProps(\n mergeProps(restProps, { notes: [], condensed: false }),\n );\n\n const [scrollerRef, setScrollerRef] = createSignal<HTMLDivElement>();\n const clientRect = useBoundingClientRect(scrollerRef);\n\n const zoomFactor = 500;\n\n const minZoom = createMemo(() => 1 / (zoomFactor / clientRect().width));\n const maxZoom = createMemo(() => 500 * (zoomFactor / clientRect().width));\n\n const minVerticalZoom = createMemo(() => 1 / (zoomFactor / clientRect().height));\n const maxVerticalZoom = createMemo(() => 10 * (zoomFactor / clientRect().height));\n\n return (\n <PianoRollContextProvider value={{ ...contextProps }}>\n <ScrollZoomViewPort\n dimensions={{\n horizontal: () => ({\n pixelOffset: clientRect().left,\n pixelSize: clientRect().width,\n position: contextProps.position,\n range: contextProps.duration,\n zoom: contextProps.zoom * (zoomFactor / clientRect().width),\n onPositionChange: contextProps.onPositionChange,\n onZoomChange: (zoom) =>\n contextProps.onZoomChange?.(\n clamp(zoom / (zoomFactor / clientRect().width), minZoom(), maxZoom()),\n ),\n }),\n vertical: () => ({\n pixelOffset: clientRect().top,\n pixelSize: clientRect().height,\n position: contextProps.verticalPosition,\n range: 128,\n zoom: contextProps.verticalZoom * (zoomFactor / clientRect().height),\n onPositionChange: contextProps.onVerticalPositionChange,\n onZoomChange: (verticalZoom) =>\n contextProps.onVerticalZoomChange?.(\n clamp(\n verticalZoom / (zoomFactor / clientRect().height),\n minVerticalZoom(),\n maxVerticalZoom(),\n ),\n ),\n }),\n }}\n >\n <div\n style={{\n display: \"flex\",\n flex: 1,\n height: \"100%\",\n \"flex-direction\": \"row\",\n }}\n >\n <ul style={{ \"margin-block-start\": 0, \"padding-inline-start\": 0, width: \"150px\" }}>\n <Index each={allProps.tracks}>\n {(track) => (\n <li\n style={{\n width: \"150px\",\n height: \"30px\",\n \"list-style\": \"none\",\n display: \"flex\",\n \"align-items\": \"center\",\n \"border-top\": \"1px black solid\",\n background: track() === allProps.selectedTrack ? \"lightgray\" : \"none\",\n cursor: \"pointer\",\n }}\n onClick={() => {\n if (track() === allProps.selectedTrack) {\n allProps.onSelectedTrackChange(undefined);\n } else {\n allProps.onSelectedTrackChange(track());\n }\n }}\n >\n {track().name}\n </li>\n )}\n </Index>\n </ul>\n\n <div class={styles.PianoRoll} style={{ flex: 1 }}>\n <div class={styles.PianoRollContainer}>\n <Show when={!condensed()}>\n <PianoRollKeys />\n </Show>\n\n <ScrollContainer ref={setScrollerRef}>\n <ul\n style={{\n margin: 0,\n \"margin-block-start\": 0,\n \"padding-inline-start\": 0,\n }}\n >\n <Index each={allProps.tracks}>\n {(track) => {\n const notes = useNotes();\n\n createEffect(() => {\n notes.onNotesChange(track().notes);\n });\n\n const [context, setContext] = createStore({ ...contextProps });\n\n createEffect(() => {\n setContext({\n ...contextProps,\n condensed: condensed(),\n notes: notes.notes(),\n onNoteChange: notes.onNoteChange,\n onInsertNote: notes.onInsertNote,\n onRemoveNote: notes.onRemoveNote,\n });\n });\n\n const verticalViewPort = useViewPortDimension(\"vertical\");\n\n return (\n <Show when={condensed() || allProps.selectedTrack === track()}>\n <PianoRollContextProvider value={context}>\n <li\n style={{\n display: \"flex\",\n position: \"relative\",\n \"list-style\": \"none\",\n \"flex-direction\": \"row\",\n height: condensed() ? \"30px\" : `${verticalViewPort.pixelSize}px`,\n \"border-top\": \"1px black solid\",\n }}\n >\n <PianoRollNotes />\n <PianoRollGrid />\n </li>\n </PianoRollContextProvider>\n </Show>\n );\n }}\n </Index>\n </ul>\n </ScrollContainer>\n <Show when={!condensed()}>\n <VerticalZoomControl\n value={contextProps.verticalZoom}\n onInput={(event) =>\n contextProps.onVerticalZoomChange?.(event.currentTarget.valueAsNumber)\n }\n />\n </Show>\n </div>\n <HorizontalZoomControl\n style={{ width: \"100%\", \"margin-left\": 0 }}\n value={contextProps.zoom}\n onInput={(event) => contextProps.onZoomChange?.(event.currentTarget.valueAsNumber)}\n />\n </div>\n </div>\n </ScrollZoomViewPort>\n </PianoRollContextProvider>\n );\n};\n\nexport default MultiTrackPianoRoll;\n","import styles from \"./PianoRoll.module.css\";\n\nimport { JSX, createSignal, createMemo } from \"solid-js\";\n\nimport { PianoRollContextProvider, splitContextProps } from \"./PianoRollContext\";\nimport PianoRollKeys from \"./PianoRollKeys\";\nimport PianoRollNotes from \"./PianoRollNotes\";\nimport ScrollContainer from \"./viewport/ScrollContainer\";\nimport PianoRollGrid from \"./PianoRollGrid\";\nimport { Note } from \"./types\";\nimport { ScrollZoomViewPort as ScrollZoomViewPort } from \"./viewport/ScrollZoomViewPort\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\nimport VerticalZoomControl from \"./viewport/VerticalZoomControl\";\nimport HorizontalZoomControl from \"./viewport/HorizontalZoomControl\";\n\nexport type GridDivision = 1 | 2 | 4 | 8 | 16 | 32 | 64;\n\nexport type PianoRollProps = {\n ppq: number;\n notes: Note[];\n\n gridDivision: GridDivision;\n snapToGrid: boolean;\n\n condensed?: boolean;\n\n verticalPosition: number;\n verticalZoom: number;\n\n position: number;\n duration: number;\n zoom: number;\n\n onVerticalZoomChange?: (zoom: number) => void;\n onVerticalPositionChange?: (zoom: number) => void;\n onZoomChange?: (zoom: number) => void;\n onPositionChange?: (zoom: number) => void;\n\n onNoteChange?: (index: number, note: Note) => void;\n onInsertNote?: (note: Note) => number;\n onRemoveNote?: (index: number) => void;\n};\n\nconst PianoRoll = (allProps: PianoRollProps & JSX.IntrinsicElements[\"div\"]) => {\n const [contextProps, divProps] = splitContextProps(allProps);\n\n const [scrollerRef, setScrollerRef] = createSignal<HTMLDivElement>();\n const clientRect = useBoundingClientRect(scrollerRef);\n\n const zoomFactor = 500;\n\n const minZoom = createMemo(() => 1 / (zoomFactor / clientRect().width));\n const maxZoom = createMemo(() => 500 * (zoomFactor / clientRect().width));\n\n const minVerticalZoom = createMemo(() => 1 / (zoomFactor / clientRect().height));\n const maxVerticalZoom = createMemo(() => 10 * (zoomFactor / clientRect().height));\n\n return (\n <PianoRollContextProvider value={contextProps}>\n <div {...divProps} class={styles.PianoRoll}>\n <div class={styles.PianoRollContainer}>\n <ScrollZoomViewPort\n dimensions={{\n horizontal: () => ({\n pixelOffset: clientRect().left,\n pixelSize: clientRect().width,\n position: contextProps.position,\n range: contextProps.duration,\n zoom: contextProps.zoom * (zoomFactor / clientRect().width),\n onPositionChange: contextProps.onPositionChange,\n onZoomChange: (zoom) =>\n contextProps.onZoomChange?.(\n clamp(zoom / (zoomFactor / clientRect().width), minZoom(), maxZoom()),\n ),\n }),\n vertical: () => ({\n pixelOffset: clientRect().top,\n pixelSize: clientRect().height,\n position: contextProps.verticalPosition,\n range: 128,\n zoom: contextProps.verticalZoom * (zoomFactor / clientRect().height),\n onPositionChange: contextProps.onVerticalPositionChange,\n onZoomChange: (verticalZoom) =>\n contextProps.onVerticalZoomChange?.(\n clamp(\n verticalZoom / (zoomFactor / clientRect().height),\n minVerticalZoom(),\n maxVerticalZoom(),\n ),\n ),\n }),\n }}\n >\n <PianoRollKeys />\n\n <ScrollContainer ref={setScrollerRef}>\n <PianoRollGrid />\n <PianoRollNotes />\n </ScrollContainer>\n\n <VerticalZoomControl min={minVerticalZoom()} max={maxVerticalZoom()} />\n </ScrollZoomViewPort>\n </div>\n <HorizontalZoomControl min={minZoom()} max={maxZoom()} />\n </div>\n </PianoRollContextProvider>\n );\n};\n\nexport default PianoRoll;\n","import { createSignal } from \"solid-js\";\nimport { GridDivision } from \"./PianoRoll\";\n\nconst usePianoRoll = () => {\n const [ppq, onPpqChange] = createSignal(120);\n\n const [condensed, onCondensedChange] = createSignal(false);\n\n const [position, onPositionChange] = createSignal(0);\n\n const [zoom, onZoomChange] = createSignal(10);\n const [verticalZoom, onVerticalZoomChange] = createSignal(5);\n const [verticalPosition, onVerticalPositionChange] = createSignal(64);\n\n const [gridDivision, onGridDivisionChange] = createSignal<GridDivision>(16);\n const [snapToGrid, onSnapToGridChange] = createSignal(true);\n\n const [duration, onDurationChange] = createSignal(0);\n\n return {\n ppq,\n onPpqChange,\n\n position,\n onPositionChange,\n\n zoom,\n onZoomChange,\n\n verticalPosition,\n onVerticalPositionChange,\n\n verticalZoom,\n onVerticalZoomChange,\n\n gridDivision,\n onGridDivisionChange,\n\n snapToGrid,\n onSnapToGridChange,\n\n condensed,\n onCondensedChange,\n\n duration,\n onDurationChange,\n };\n};\n\nexport default usePianoRoll;\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","HorizontalZoomControl","props","_tmpl$","_$spread","_$mergeProps","zoom","event","onZoomChange","currentTarget","valueAsNumber","createViewPortDimension","getState","getStateWithFunctions","calculatePixelValue","calculatePosition","calculatePixelDimensions","calculateVisibleRange","calculateMaxPosition","isVisible","state","setState","createStore","createEffect","position","virtualSize","pixelSize","range","calculatePixelOffset","offset","percentX","pixelOffset","length","size","clamp","value","min","max","Math","ScrollZoomViewPort","viewPorts","Object","entries","dimensions","map","name","viewPortProps","parentViewPorts","ScrollZoomViewPortContext","_$createComponent","children","useViewPortDimension","viewPort","find","PianoRollNotes","verticalViewPort","createMemo","horizontalViewPort","gridDivisionTicks","ppq","gridDivision","snapValueToGridIfEnabled","altKey","snapToGrid","round","insertOrUpdateNote","clientX","midi","condensed","floor","clientY","eventPositionTicks","velocity","existingNote","newNote","ticks","durationTicks","note","onNoteChange","newNoteIndex","onInsertNote","isDragging","setIsDragging","createSignal","noteDragMode","setNoteDragMode","setNewNoteIndex","isMouseDown","setIsMouseDown","notes","getClasses","styles","Note","undefined","index","console","log","_$insert","verticalVirtualDimensions","horizontalDimensions","_$memo","stopPropagation","initialPosition","diffPosition","handleMouseMove","mouseMoveEvent","handleMouseUp","window","removeEventListener","addEventListener","onRemoveNote","relativeX","noteStartX","noteEndX","_$effect","join","top","height","left","width","_$className","_$style","_$delegateEvents","ScrollContainer","scrollContentRef","handleScroll","preventDefault","didUpdateScroll","maxVerticalPosition","maxPosition","scrollTop","scrollLeft","scrollWidth","scrollHeight","scrollTopAmount","scrollLeftAmount","onPositionChange","handleWheel","abs","deltaX","deltaY","parentElement","scrollDivHeight","scrollDivWidth","scrollTo","_$use","PianoRollKeys","keys","key","virtualDimensions","number","isBlack","blackKeys","includes","_$classList","_$setAttribute","keyNames","Array","from","_","PianoRollGrid","measureTicks","selectedGridDivisorTicks","calculateVisibleGridDivisorTicks","gridDivisorTicks","gridArray","numberOfLines","ceil","startIndex","entry","useNotes","onNotesChange","slice","splice","findIndex","defaultRect","bottom","right","x","y","useBoundingClientRect","containerRef","boundingClientRect","setBoundingClientRect","container","updateBoundingClientRect","getBoundingClientRect","resizeObserver","ResizeObserver","observe","disconnect","VerticalZoomControl","verticalZoom","onVerticalZoomChange","orient","MultiTrackPianoRoll","selectedTrack","ownProps","restProps","contextProps","divProps","mergeProps","scrollerRef","setScrollerRef","clientRect","zoomFactor","minZoom","maxZoom","minVerticalZoom","maxVerticalZoom","horizontal","duration","vertical","verticalPosition","onVerticalPositionChange","tracks","track","onSelectedTrackChange","setContext","PianoRoll","PianoRollContainer","usePianoRoll","onPpqChange","onCondensedChange","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/PianoRollContext.tsx","../../src/viewport/HorizontalZoomControl.tsx","../../src/viewport/createViewPortDimension.ts","../../src/viewport/ScrollZoomViewPort.tsx","../../src/PianoRollNotes.tsx","../../src/viewport/ScrollContainer.tsx","../../src/PianoRollKeys.tsx","../../src/PianoRollGrid.tsx","../../src/useNotes.ts","../../src/useBoundingClientRect.ts","../../src/viewport/VerticalZoomControl.tsx","../../src/MultiTrackPianoRoll.tsx","../../src/PianoRoll.tsx","../../src/usePianoRoll.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\";\n\nconst PianoRollContext = createContext<PianoRollProps>();\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 \"condensed\",\n \"duration\",\n \"gridDivision\",\n \"notes\",\n \"position\",\n \"ppq\",\n \"snapToGrid\",\n \"verticalPosition\",\n \"verticalZoom\",\n \"zoom\",\n \"onInsertNote\",\n \"onNoteChange\",\n \"onPositionChange\",\n \"onRemoveNote\",\n \"onVerticalPositionChange\",\n \"onVerticalZoomChange\",\n \"onZoomChange\",\n ]);\n","import { JSX } from \"solid-js/jsx-runtime\";\n\nimport { usePianoRollContext } from \"../PianoRollContext\";\n\nconst HorizontalZoomControl = (props: JSX.IntrinsicElements[\"input\"]) => {\n const context = usePianoRollContext();\n\n return (\n <input\n max=\"500\"\n min=\"1\"\n step={0.01}\n {...props}\n value={context.zoom}\n onInput={(event) => context.onZoomChange?.(event.currentTarget.valueAsNumber)}\n type=\"range\"\n style={{\n \"margin-left\": \"50px\",\n \"margin-right\": \"16px\",\n ...(typeof props.style === \"object\" && props.style),\n }}\n />\n );\n};\n\nexport default HorizontalZoomControl;\n","import { createEffect } from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\n\nexport type ViewPortDimension = ReturnType<typeof createViewPortDimension>;\nexport type ViewPortDimensionName = \"horizontal\" | \"vertical\";\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\nexport default function createViewPortDimension(getState: () => ViewPortDimensionState) {\n const getStateWithFunctions = () => ({\n ...getState(),\n calculatePixelValue,\n calculatePosition,\n calculatePixelDimensions,\n calculateVisibleRange,\n calculateMaxPosition,\n isVisible,\n });\n\n const [state, setState] = createStore(getStateWithFunctions());\n\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\nexport const ScrollZoomViewPort = (\n props: ParentProps<{\n dimensions: Record<ViewPortDimensionName, () => Omit<ViewPortDimensionState, \"name\">>;\n }>,\n) => {\n const viewPorts = Object.entries(props.dimensions).map(([name, viewPortProps]) =>\n createViewPortDimension(() => ({ name: name as ViewPortDimensionName, ...viewPortProps() })),\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 { createMemo, createSignal, Index, Ref, Show } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport styles from \"./PianoRollNotes.module.scss\";\n\ntype NoteDragMode = \"trimStart\" | \"move\" | \"trimEnd\" | undefined;\n\nconst PianoRollNotes = (props: { ref?: Ref<HTMLDivElement | undefined> }) => {\n const context = usePianoRollContext();\n\n const verticalViewPort = createMemo(() => useViewPortDimension(\"vertical\"));\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 const midi = context.condensed\n ? 60\n : 127 - Math.floor(verticalViewPort().calculatePosition(event.clientY));\n const eventPositionTicks = Math.floor(position / gridDivisionTicks()) * gridDivisionTicks();\n const velocity = 127;\n\n const existingNote = newNote();\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?.(newNoteIndex(), note);\n return newNoteIndex();\n } else {\n return context.onInsertNote?.(note) ?? -1;\n }\n };\n\n const [isDragging, setIsDragging] = createSignal(false);\n const [noteDragMode, setNoteDragMode] = createSignal<NoteDragMode>();\n const [newNoteIndex, setNewNoteIndex] = createSignal(-1);\n const [isMouseDown, setIsMouseDown] = createSignal(false);\n\n const newNote = createMemo(() => context.notes[newNoteIndex()]);\n\n const getClasses = (noteDragMode: NoteDragMode) => {\n return noteDragMode ? [styles.Note, styles[noteDragMode]] : [styles.Note];\n };\n\n return (\n <div\n class={styles.PianoRollNotes}\n ref={props.ref}\n onMouseDown={(event) => {\n console.log(\"down\");\n setIsMouseDown(true);\n const index = insertOrUpdateNote(event);\n\n setNewNoteIndex(index);\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 setNewNoteIndex(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 (newNote()) {\n setNewNoteIndex(-1);\n return;\n }\n if (!event.altKey) return;\n insertOrUpdateNote(event);\n }}\n >\n <Index each={context.notes}>\n {(note, index) => {\n const verticalVirtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(127 - note().midi, 1),\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()) || context.condensed) &&\n horizontalViewPort().isVisible(horizontalDimensions())\n }\n >\n <div\n class={getClasses(noteDragMode()).join(\" \")}\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?.(index);\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n\n setIsDragging(true);\n const initialPosition = horizontalViewPort().calculatePosition(event.clientX);\n const diffPosition = initialPosition - note().ticks;\n\n const handleMouseMove = (mouseMoveEvent: MouseEvent) => {\n const ticks = snapValueToGridIfEnabled(\n Math.max(\n horizontalViewPort().calculatePosition(mouseMoveEvent.clientX) -\n diffPosition,\n 0,\n ),\n mouseMoveEvent.altKey,\n );\n\n context.onNoteChange?.(index, {\n ...note(),\n ...(noteDragMode() === \"move\" &&\n !context.condensed && {\n midi: Math.round(\n 127 - 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 handleMouseUp = () => {\n setIsDragging(false);\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 ...(context.condensed\n ? { top: 0, height: \"100%\" }\n : {\n top: `${verticalVirtualDimensions().offset}px`,\n height: `${verticalVirtualDimensions().size}px`,\n }),\n\n left: `${horizontalDimensions().offset}px`,\n width: `${horizontalDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\n </div>\n );\n};\n\nexport default PianoRollNotes;\n","import { createEffect, createMemo, ParentProps, Ref } from \"solid-js\";\n\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nconst ScrollContainer = (props: ParentProps<{ ref?: Ref<HTMLDivElement> }>) => {\n let scrollContentRef: HTMLDivElement | undefined;\n\n const verticalViewPort = createMemo(() => useViewPortDimension(\"vertical\"));\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\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) => {\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 }\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 class=\"PianoRoll-Scroller\"\n style={{\n height: \"100%\",\n width: \"100%\",\n \"z-index\": 4,\n overflow: \"scroll\",\n \"pointer-events\": \"auto\",\n }}\n onScroll={handleScroll}\n onWheel={handleWheel}\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 ScrollContainer;\n","import styles from \"./PianoRollKeys.module.css\";\nimport { createMemo, Index, Show } from \"solid-js\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\n\nconst PianoRollKeys = () => {\n const viewPort = createMemo(() => useViewPortDimension(\"vertical\"));\n\n return (\n <div class={styles.PianoRollKeys}>\n <Index each={keys}>\n {(key) => {\n const virtualDimensions = createMemo(() =>\n viewPort().calculatePixelDimensions(127 - key().number, 1),\n );\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[\"whiteAndNextIsWhite\"]]:\n !key().isBlack && !blackKeys.includes((key().number + 1) % 12),\n [styles[\"whiteAndPreviousIsWhite\"]]:\n !key().isBlack && !blackKeys.includes((key().number - 1) % 12),\n }}\n title={key().name}\n data-index={key().number % 12}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\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, 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(() => useViewPortDimension(\"vertical\"));\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 if (horizontalViewPort().calculateVisibleRange() / value > 100) {\n return calculateVisibleGridDivisorTicks(value * 2);\n }\n if (horizontalViewPort().calculateVisibleRange() / value < 30) {\n return calculateVisibleGridDivisorTicks(value / 2);\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.condensed}>\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-Key\"]}\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 </div>\n );\n};\n\nexport default PianoRollGrid;\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 { 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 { JSX } from \"solid-js/jsx-runtime\";\nimport { usePianoRollContext } from \"../PianoRollContext\";\n\nconst VerticalZoomControl = (props: JSX.IntrinsicElements[\"input\"]) => {\n const context = usePianoRollContext();\n\n return (\n <input\n min=\"1\"\n max=\"11\"\n step={0.01}\n {...props}\n value={context.verticalZoom}\n onInput={(event) => context.onVerticalZoomChange?.(event.currentTarget.valueAsNumber)}\n type=\"range\"\n {...{ orient: \"vertical\" }}\n style={{\n width: \"16px\",\n ...({\n \"writing-mode\": \"bt-lr\" /* IE */,\n \"-webkit-appearance\": \"slider-vertical\" /* WebKit */,\n } as unknown as JSX.CSSProperties),\n }}\n />\n );\n};\n\nexport default VerticalZoomControl;\n","import {\n JSX,\n createSignal,\n mergeProps,\n createMemo,\n Index,\n createEffect,\n splitProps,\n Show,\n} from \"solid-js\";\nimport styles from \"./PianoRoll.module.css\";\nimport HorizontalZoomControl from \"./viewport/HorizontalZoomControl\";\n\nimport { PianoRollContextProvider, splitContextProps } from \"./PianoRollContext\";\n\nimport PianoRollNotes from \"./PianoRollNotes\";\nimport ScrollContainer from \"./viewport/ScrollContainer\";\nimport PianoRollGrid from \"./PianoRollGrid\";\n\nimport { TrackJSON } from \"@tonejs/midi\";\nimport useNotes from \"./useNotes\";\nimport { PianoRollProps } from \"./PianoRoll\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport { ScrollZoomViewPort, useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\nimport { createStore } from \"solid-js/store\";\nimport PianoRollKeys from \"./PianoRollKeys\";\nimport VerticalZoomControl from \"./viewport/VerticalZoomControl\";\n\nexport type MultiTrackPianoRollProps = Omit<\n PianoRollProps,\n \"notes\" | \"onNoteChange\" | \"onInsertNote\" | \"onRemoveNote\" | \"condensed\"\n> & {\n tracks: TrackJSON[];\n selectedTrack?: TrackJSON;\n onSelectedTrackChange: (track?: TrackJSON) => void;\n} & JSX.IntrinsicElements[\"div\"];\n\nconst MultiTrackPianoRoll = (allProps: MultiTrackPianoRollProps) => {\n const condensed = createMemo(() => !allProps.selectedTrack);\n\n const [ownProps, restProps] = splitProps(allProps, [\"tracks\", \"selectedTrack\"]);\n\n const [contextProps, divProps] = splitContextProps(\n mergeProps(restProps, { notes: [], condensed: false }),\n );\n\n const [scrollerRef, setScrollerRef] = createSignal<HTMLDivElement>();\n const clientRect = useBoundingClientRect(scrollerRef);\n\n const zoomFactor = 500;\n\n const minZoom = createMemo(() => 1 / (zoomFactor / clientRect().width));\n const maxZoom = createMemo(() => 500 * (zoomFactor / clientRect().width));\n\n const minVerticalZoom = createMemo(() => 1 / (zoomFactor / clientRect().height));\n const maxVerticalZoom = createMemo(() => 10 * (zoomFactor / clientRect().height));\n\n return (\n <PianoRollContextProvider value={{ ...contextProps }}>\n <ScrollZoomViewPort\n dimensions={{\n horizontal: () => ({\n pixelOffset: clientRect().left,\n pixelSize: clientRect().width,\n position: contextProps.position,\n range: contextProps.duration,\n zoom: contextProps.zoom * (zoomFactor / clientRect().width),\n onPositionChange: contextProps.onPositionChange,\n onZoomChange: (zoom) =>\n contextProps.onZoomChange?.(\n clamp(zoom / (zoomFactor / clientRect().width), minZoom(), maxZoom()),\n ),\n }),\n vertical: () => ({\n pixelOffset: clientRect().top,\n pixelSize: clientRect().height,\n position: contextProps.verticalPosition,\n range: 128,\n zoom: contextProps.verticalZoom * (zoomFactor / clientRect().height),\n onPositionChange: contextProps.onVerticalPositionChange,\n onZoomChange: (verticalZoom) =>\n contextProps.onVerticalZoomChange?.(\n clamp(\n verticalZoom / (zoomFactor / clientRect().height),\n minVerticalZoom(),\n maxVerticalZoom(),\n ),\n ),\n }),\n }}\n >\n <div\n style={{\n display: \"flex\",\n flex: 1,\n height: \"100%\",\n \"flex-direction\": \"row\",\n }}\n >\n <ul style={{ \"margin-block-start\": 0, \"padding-inline-start\": 0, width: \"150px\" }}>\n <Index each={allProps.tracks}>\n {(track) => (\n <li\n style={{\n width: \"150px\",\n height: \"30px\",\n \"list-style\": \"none\",\n display: \"flex\",\n \"align-items\": \"center\",\n \"border-top\": \"1px black solid\",\n background: track() === allProps.selectedTrack ? \"lightgray\" : \"none\",\n cursor: \"pointer\",\n }}\n onClick={() => {\n if (track() === allProps.selectedTrack) {\n allProps.onSelectedTrackChange(undefined);\n } else {\n allProps.onSelectedTrackChange(track());\n }\n }}\n >\n {track().name}\n </li>\n )}\n </Index>\n </ul>\n\n <div class={styles.PianoRoll} style={{ flex: 1 }}>\n <div class={styles.PianoRollContainer}>\n <Show when={!condensed()}>\n <PianoRollKeys />\n </Show>\n\n <ScrollContainer ref={setScrollerRef}>\n <ul\n style={{\n margin: 0,\n \"margin-block-start\": 0,\n \"padding-inline-start\": 0,\n }}\n >\n <Index each={allProps.tracks}>\n {(track) => {\n const notes = useNotes();\n\n createEffect(() => {\n notes.onNotesChange(track().notes);\n });\n\n const [context, setContext] = createStore({ ...contextProps });\n\n createEffect(() => {\n setContext({\n ...contextProps,\n condensed: condensed(),\n notes: notes.notes(),\n onNoteChange: notes.onNoteChange,\n onInsertNote: notes.onInsertNote,\n onRemoveNote: notes.onRemoveNote,\n });\n });\n\n const verticalViewPort = useViewPortDimension(\"vertical\");\n\n return (\n <Show when={condensed() || allProps.selectedTrack === track()}>\n <PianoRollContextProvider value={context}>\n <li\n style={{\n display: \"flex\",\n position: \"relative\",\n \"list-style\": \"none\",\n \"flex-direction\": \"row\",\n height: condensed() ? \"30px\" : `${verticalViewPort.pixelSize}px`,\n \"border-top\": \"1px black solid\",\n }}\n >\n <PianoRollNotes />\n <PianoRollGrid />\n </li>\n </PianoRollContextProvider>\n </Show>\n );\n }}\n </Index>\n </ul>\n </ScrollContainer>\n <Show when={!condensed()}>\n <VerticalZoomControl\n value={contextProps.verticalZoom}\n onInput={(event) =>\n contextProps.onVerticalZoomChange?.(event.currentTarget.valueAsNumber)\n }\n />\n </Show>\n </div>\n <HorizontalZoomControl\n style={{ width: \"100%\", \"margin-left\": 0 }}\n value={contextProps.zoom}\n onInput={(event) => contextProps.onZoomChange?.(event.currentTarget.valueAsNumber)}\n />\n </div>\n </div>\n </ScrollZoomViewPort>\n </PianoRollContextProvider>\n );\n};\n\nexport default MultiTrackPianoRoll;\n","import styles from \"./PianoRoll.module.css\";\n\nimport { JSX, createSignal, createMemo } from \"solid-js\";\n\nimport { PianoRollContextProvider, splitContextProps } from \"./PianoRollContext\";\nimport PianoRollKeys from \"./PianoRollKeys\";\nimport PianoRollNotes from \"./PianoRollNotes\";\nimport ScrollContainer from \"./viewport/ScrollContainer\";\nimport PianoRollGrid from \"./PianoRollGrid\";\nimport { Note } from \"./types\";\nimport { ScrollZoomViewPort as ScrollZoomViewPort } from \"./viewport/ScrollZoomViewPort\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\nimport VerticalZoomControl from \"./viewport/VerticalZoomControl\";\nimport HorizontalZoomControl from \"./viewport/HorizontalZoomControl\";\n\nexport type GridDivision = 1 | 2 | 4 | 8 | 16 | 32 | 64;\n\nexport type PianoRollProps = {\n ppq: number;\n notes: Note[];\n\n gridDivision: GridDivision;\n snapToGrid: boolean;\n\n condensed?: boolean;\n\n verticalPosition: number;\n verticalZoom: number;\n\n position: number;\n duration: number;\n zoom: number;\n\n onVerticalZoomChange?: (zoom: number) => void;\n onVerticalPositionChange?: (zoom: number) => void;\n onZoomChange?: (zoom: number) => void;\n onPositionChange?: (zoom: number) => void;\n\n onNoteChange?: (index: number, note: Note) => void;\n onInsertNote?: (note: Note) => number;\n onRemoveNote?: (index: number) => void;\n};\n\nconst PianoRoll = (allProps: PianoRollProps & JSX.IntrinsicElements[\"div\"]) => {\n const [contextProps, divProps] = splitContextProps(allProps);\n\n const [scrollerRef, setScrollerRef] = createSignal<HTMLDivElement>();\n const clientRect = useBoundingClientRect(scrollerRef);\n\n const zoomFactor = 500;\n\n const minZoom = createMemo(() => 1 / (zoomFactor / clientRect().width));\n const maxZoom = createMemo(() => 500 * (zoomFactor / clientRect().width));\n\n const minVerticalZoom = createMemo(() => 1 / (zoomFactor / clientRect().height));\n const maxVerticalZoom = createMemo(() => 10 * (zoomFactor / clientRect().height));\n\n return (\n <PianoRollContextProvider value={contextProps}>\n <div {...divProps} class={styles.PianoRoll}>\n <div class={styles.PianoRollContainer}>\n <ScrollZoomViewPort\n dimensions={{\n horizontal: () => ({\n pixelOffset: clientRect().left,\n pixelSize: clientRect().width,\n position: contextProps.position,\n range: contextProps.duration,\n zoom: contextProps.zoom * (zoomFactor / clientRect().width),\n onPositionChange: contextProps.onPositionChange,\n onZoomChange: (zoom) =>\n contextProps.onZoomChange?.(\n clamp(zoom / (zoomFactor / clientRect().width), minZoom(), maxZoom()),\n ),\n }),\n vertical: () => ({\n pixelOffset: clientRect().top,\n pixelSize: clientRect().height,\n position: contextProps.verticalPosition,\n range: 128,\n zoom: contextProps.verticalZoom * (zoomFactor / clientRect().height),\n onPositionChange: contextProps.onVerticalPositionChange,\n onZoomChange: (verticalZoom) =>\n contextProps.onVerticalZoomChange?.(\n clamp(\n verticalZoom / (zoomFactor / clientRect().height),\n minVerticalZoom(),\n maxVerticalZoom(),\n ),\n ),\n }),\n }}\n >\n <PianoRollKeys />\n\n <ScrollContainer ref={setScrollerRef}>\n <PianoRollGrid />\n <PianoRollNotes />\n </ScrollContainer>\n\n <VerticalZoomControl min={minVerticalZoom()} max={maxVerticalZoom()} />\n </ScrollZoomViewPort>\n </div>\n <HorizontalZoomControl min={minZoom()} max={maxZoom()} />\n </div>\n </PianoRollContextProvider>\n );\n};\n\nexport default PianoRoll;\n","import { createSignal } from \"solid-js\";\nimport { GridDivision } from \"./PianoRoll\";\n\nconst usePianoRoll = () => {\n const [ppq, onPpqChange] = createSignal(120);\n\n const [condensed, onCondensedChange] = createSignal(false);\n\n const [position, onPositionChange] = createSignal(0);\n\n const [zoom, onZoomChange] = createSignal(10);\n const [verticalZoom, onVerticalZoomChange] = createSignal(5);\n const [verticalPosition, onVerticalPositionChange] = createSignal(64);\n\n const [gridDivision, onGridDivisionChange] = createSignal<GridDivision>(4);\n const [snapToGrid, onSnapToGridChange] = createSignal(true);\n\n const [duration, onDurationChange] = createSignal(0);\n\n return {\n ppq,\n onPpqChange,\n\n position,\n onPositionChange,\n\n zoom,\n onZoomChange,\n\n verticalPosition,\n onVerticalPositionChange,\n\n verticalZoom,\n onVerticalZoomChange,\n\n gridDivision,\n onGridDivisionChange,\n\n snapToGrid,\n onSnapToGridChange,\n\n condensed,\n onCondensedChange,\n\n duration,\n onDurationChange,\n };\n};\n\nexport default usePianoRoll;\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","HorizontalZoomControl","props","_tmpl$","_$spread","_$mergeProps","zoom","event","onZoomChange","currentTarget","valueAsNumber","createViewPortDimension","getState","getStateWithFunctions","calculatePixelValue","calculatePosition","calculatePixelDimensions","calculateVisibleRange","calculateMaxPosition","isVisible","state","setState","createStore","createEffect","position","virtualSize","pixelSize","range","calculatePixelOffset","offset","percentX","pixelOffset","length","size","clamp","value","min","max","Math","ScrollZoomViewPort","viewPorts","Object","entries","dimensions","map","name","viewPortProps","parentViewPorts","ScrollZoomViewPortContext","_$createComponent","children","useViewPortDimension","viewPort","find","PianoRollNotes","verticalViewPort","createMemo","horizontalViewPort","gridDivisionTicks","ppq","gridDivision","snapValueToGridIfEnabled","altKey","snapToGrid","round","insertOrUpdateNote","clientX","midi","condensed","floor","clientY","eventPositionTicks","velocity","existingNote","newNote","ticks","durationTicks","note","onNoteChange","newNoteIndex","onInsertNote","isDragging","setIsDragging","createSignal","noteDragMode","setNoteDragMode","setNewNoteIndex","isMouseDown","setIsMouseDown","notes","getClasses","styles","Note","undefined","index","console","log","_$insert","verticalVirtualDimensions","horizontalDimensions","_$memo","stopPropagation","initialPosition","diffPosition","handleMouseMove","mouseMoveEvent","handleMouseUp","window","removeEventListener","addEventListener","onRemoveNote","relativeX","noteStartX","noteEndX","_$effect","join","top","height","left","width","_$className","_$style","_$delegateEvents","ScrollContainer","scrollContentRef","handleScroll","preventDefault","didUpdateScroll","maxVerticalPosition","maxPosition","scrollTop","scrollLeft","scrollWidth","scrollHeight","scrollTopAmount","scrollLeftAmount","onPositionChange","handleWheel","abs","deltaX","deltaY","parentElement","scrollDivHeight","scrollDivWidth","scrollTo","_$use","PianoRollKeys","keys","key","virtualDimensions","number","isBlack","blackKeys","includes","_$classList","_$setAttribute","keyNames","Array","from","_","PianoRollGrid","measureTicks","selectedGridDivisorTicks","calculateVisibleGridDivisorTicks","gridDivisorTicks","gridArray","numberOfLines","ceil","startIndex","entry","useNotes","onNotesChange","slice","splice","findIndex","defaultRect","bottom","right","x","y","useBoundingClientRect","containerRef","boundingClientRect","setBoundingClientRect","container","updateBoundingClientRect","getBoundingClientRect","resizeObserver","ResizeObserver","observe","disconnect","VerticalZoomControl","verticalZoom","onVerticalZoomChange","orient","MultiTrackPianoRoll","selectedTrack","ownProps","restProps","contextProps","divProps","mergeProps","scrollerRef","setScrollerRef","clientRect","zoomFactor","minZoom","maxZoom","minVerticalZoom","maxVerticalZoom","horizontal","duration","vertical","verticalPosition","onVerticalPositionChange","tracks","track","onSelectedTrackChange","setContext","PianoRoll","PianoRollContainer","usePianoRoll","onPpqChange","onCondensedChange","onGridDivisionChange","onSnapToGridChange","onDurationChange"],"mappings":"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"}
|
|
@@ -39,9 +39,11 @@ const PianoRollNotes = (props) => {
|
|
|
39
39
|
const getClasses = (noteDragMode) => {
|
|
40
40
|
return noteDragMode ? [styles.Note, styles[noteDragMode]] : [styles.Note];
|
|
41
41
|
};
|
|
42
|
-
return (<div class={styles.PianoRollNotes} ref={props.ref} onMouseDown={() => {
|
|
42
|
+
return (<div class={styles.PianoRollNotes} ref={props.ref} onMouseDown={(event) => {
|
|
43
43
|
console.log("down");
|
|
44
44
|
setIsMouseDown(true);
|
|
45
|
+
const index = insertOrUpdateNote(event);
|
|
46
|
+
setNewNoteIndex(index);
|
|
45
47
|
}} onMouseMove={(event) => {
|
|
46
48
|
if (isDragging())
|
|
47
49
|
return;
|
|
@@ -6,7 +6,7 @@ const usePianoRoll = () => {
|
|
|
6
6
|
const [zoom, onZoomChange] = createSignal(10);
|
|
7
7
|
const [verticalZoom, onVerticalZoomChange] = createSignal(5);
|
|
8
8
|
const [verticalPosition, onVerticalPositionChange] = createSignal(64);
|
|
9
|
-
const [gridDivision, onGridDivisionChange] = createSignal(
|
|
9
|
+
const [gridDivision, onGridDivisionChange] = createSignal(4);
|
|
10
10
|
const [snapToGrid, onSnapToGridChange] = createSignal(true);
|
|
11
11
|
const [duration, onDurationChange] = createSignal(0);
|
|
12
12
|
return {
|
package/package.json
CHANGED