solid-pianoroll 0.0.24 → 0.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/{cjs/index.js → dev.cjs} +408 -430
  2. package/dist/dev.css +212 -0
  3. package/dist/dev.js +1330 -0
  4. package/dist/dev.jsx +1130 -0
  5. package/dist/index.cjs +1330 -0
  6. package/dist/index.css +212 -0
  7. package/dist/{types/usePianoRollState.d.ts → index.d.ts} +38 -6
  8. package/dist/{esm/index.js → index.js} +412 -429
  9. package/dist/index.jsx +1130 -0
  10. package/package.json +46 -34
  11. package/dist/cjs/index.js.map +0 -1
  12. package/dist/esm/index.js.map +0 -1
  13. package/dist/source/PianoRoll.jsx +0 -82
  14. package/dist/source/PianoRollContext.jsx +0 -11
  15. package/dist/source/PianoRollGrid.jsx +0 -64
  16. package/dist/source/PianoRollKeys.jsx +0 -72
  17. package/dist/source/PianoRollNotes.jsx +0 -160
  18. package/dist/source/PianoRollNotesScroller.jsx +0 -16
  19. package/dist/source/PianoRollScale.jsx +0 -43
  20. package/dist/source/PianoRollScrollZoomViewPort.jsx +0 -49
  21. package/dist/source/PianoRollTrackList.jsx +0 -27
  22. package/dist/source/PianoRollTrackListScroller.jsx +0 -16
  23. package/dist/source/index.jsx +0 -5
  24. package/dist/source/types.js +0 -1
  25. package/dist/source/useBoundingClientRect.js +0 -29
  26. package/dist/source/useNotes.js +0 -23
  27. package/dist/source/usePianoRollGrid.js +0 -45
  28. package/dist/source/usePianoRollState.js +0 -126
  29. package/dist/source/viewport/PlayHead.jsx +0 -43
  30. package/dist/source/viewport/ScrollZoomContainer.jsx +0 -104
  31. package/dist/source/viewport/ScrollZoomViewPort.jsx +0 -31
  32. package/dist/source/viewport/ZoomSliderControl.jsx +0 -29
  33. package/dist/source/viewport/createViewPortDimension.js +0 -51
  34. package/dist/types/PianoRoll.d.ts +0 -8
  35. package/dist/types/PianoRollContext.d.ts +0 -45
  36. package/dist/types/PianoRollGrid.d.ts +0 -2
  37. package/dist/types/PianoRollKeys.d.ts +0 -9
  38. package/dist/types/PianoRollNotes.d.ts +0 -5
  39. package/dist/types/PianoRollNotesScroller.d.ts +0 -3
  40. package/dist/types/PianoRollScale.d.ts +0 -2
  41. package/dist/types/PianoRollScrollZoomViewPort.d.ts +0 -3
  42. package/dist/types/PianoRollTrackList.d.ts +0 -2
  43. package/dist/types/PianoRollTrackListScroller.d.ts +0 -3
  44. package/dist/types/index.d.ts +0 -6
  45. package/dist/types/types.d.ts +0 -8
  46. package/dist/types/useBoundingClientRect.d.ts +0 -3
  47. package/dist/types/useNotes.d.ts +0 -9
  48. package/dist/types/usePianoRollGrid.d.ts +0 -13
  49. package/dist/types/viewport/PlayHead.d.ts +0 -8
  50. package/dist/types/viewport/ScrollZoomContainer.d.ts +0 -8
  51. package/dist/types/viewport/ScrollZoomViewPort.d.ts +0 -39
  52. package/dist/types/viewport/ZoomSliderControl.d.ts +0 -6
  53. package/dist/types/viewport/createViewPortDimension.d.ts +0 -40
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.0.24",
2
+ "version": "0.0.26",
3
3
  "name": "solid-pianoroll",
4
4
  "description": "Pianoroll UI Control for Solid JS apps",
5
5
  "license": "MIT",
@@ -18,29 +18,41 @@
18
18
  "files": [
19
19
  "dist"
20
20
  ],
21
- "main": "dist/cjs/index.js",
22
- "module": "dist/esm/index.js",
23
- "types": "dist/types/index.d.ts",
21
+ "packageManager": "pnpm@7.22.0",
22
+ "sideEffects": false,
23
+ "main": "./dist/index.cjs",
24
+ "module": "./dist/index.js",
25
+ "types": "./dist/index.d.ts",
26
+ "browser": {},
24
27
  "exports": {
25
- ".": {
26
- "solid": "./dist/source/index.jsx",
27
- "import": "./dist/esm/index.js",
28
- "browser": {
29
- "import": "./dist/esm/index.js",
30
- "require": "./dist/cjs/index.js"
28
+ "solid": {
29
+ "development": "./dist/dev.jsx",
30
+ "import": "./dist/index.jsx"
31
+ },
32
+ "development": {
33
+ "import": {
34
+ "types": "./dist/index.d.ts",
35
+ "default": "./dist/dev.js"
31
36
  },
32
- "require": "./dist/cjs/index.js",
33
- "node": "./dist/cjs/index.js"
34
- }
37
+ "require": "./dist/dev.cjs"
38
+ },
39
+ "import": {
40
+ "types": "./dist/index.d.ts",
41
+ "default": "./dist/index.js"
42
+ },
43
+ "require": "./dist/index.cjs"
35
44
  },
45
+ "typesVersions": {},
36
46
  "scripts": {
37
47
  "dev": "vite serve dev",
38
48
  "build-dev": "vite build dev",
39
- "test": "echo \"test not setup\"",
40
- "build": "rollup -c && yarn build-dev",
41
- "prepublishOnly": "yarn build",
42
- "format": "prettier -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"",
43
- "update-deps": "taze -w && yarn",
49
+ "test": "concurrently pnpm:test:*",
50
+ "build": "tsup",
51
+ "test:client": "vitest",
52
+ "test:ssr": "pnpm run test:client --mode ssr",
53
+ "prepublishOnly": "pnpm build",
54
+ "format": "prettier --ignore-path .gitignore -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"",
55
+ "update-deps": "pnpm up -Li",
44
56
  "typecheck": "tsc --noEmit"
45
57
  },
46
58
  "optionalDependencies": {
@@ -48,26 +60,26 @@
48
60
  "tone": "^14.7.77"
49
61
  },
50
62
  "peerDependencies": {
51
- "solid-js": ">=1.0.0"
63
+ "solid-js": "^1.6.0"
52
64
  },
53
65
  "devDependencies": {
54
- "@typescript-eslint/eslint-plugin": "^5.47.1",
55
- "@typescript-eslint/parser": "^5.47.1",
56
- "eslint": "^8.31.0",
57
- "eslint-config-prettier": "^8.5.0",
58
- "eslint-plugin-prettier": "^4.2.1",
59
- "eslint-plugin-unused-imports": "^2.0.0",
60
- "postcss": "^8.4.20",
61
- "prettier": "2.8.1",
62
- "rollup": "^3.7.2",
63
- "rollup-plugin-postcss": "^4.0.2",
64
- "rollup-preset-solid": "^2.0.1",
65
- "solid-js": "^1.6.4",
66
- "taze": "^0.8.4",
66
+ "autoprefixer": "^10.4.13",
67
+ "concurrently": "^7.6.0",
68
+ "esbuild": "^0.17.5",
69
+ "esbuild-plugin-solid": "^0.5.0",
70
+ "jsdom": "^21.1.0",
71
+ "postcss": "^8.4.21",
72
+ "postcss-modules": "^6.0.0",
73
+ "prettier": "2.8.3",
74
+ "sass": "^1.57.1",
75
+ "solid-js": "^1.6.9",
76
+ "tsup": "^6.5.0",
77
+ "tsup-preset-solid": "^0.1.5",
67
78
  "typescript": "^4.9.4",
68
79
  "typescript-plugin-css-modules": "^4.1.1",
69
- "vite": "^4.0.0",
70
- "vite-plugin-solid": "^2.5.0"
80
+ "vite": "^4.0.4",
81
+ "vite-plugin-solid": "^2.5.0",
82
+ "vitest": "^0.28.3"
71
83
  },
72
84
  "keywords": [
73
85
  "solid"
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../node_modules/style-inject/dist/style-inject.es.js","../../src/usePianoRollState.ts","../../src/PianoRollContext.tsx","../../src/viewport/createViewPortDimension.ts","../../src/viewport/ScrollZoomViewPort.tsx","../../src/viewport/ScrollZoomContainer.tsx","../../src/PianoRollKeys.tsx","../../src/PianoRollNotes.tsx","../../src/usePianoRollGrid.ts","../../src/PianoRollGrid.tsx","../../src/viewport/ZoomSliderControl.tsx","../../src/PianoRollTrackList.tsx","../../src/PianoRollScrollZoomViewPort.tsx","../../src/useBoundingClientRect.ts","../../src/PianoRollNotesScroller.tsx","../../src/PianoRollTrackListScroller.tsx","../../src/PianoRollScale.tsx","../../src/PianoRoll.tsx","../../src/viewport/PlayHead.tsx","../../src/useNotes.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { mergeProps } from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\nimport { GridDivision } from \"./types\";\nimport { Note, Track } from \"./types\";\nimport { ClientRect } from \"./useBoundingClientRect\";\n\ntype PianoRollState = {\n ppq: number;\n mode: \"keys\" | \"tracks\";\n position: number;\n zoom: number;\n verticalZoom: number;\n verticalPosition: number;\n verticalTrackZoom: number;\n verticalTrackPosition: number;\n playHeadPosition: number;\n gridDivision: GridDivision;\n snapToGrid: boolean;\n duration: number;\n tracks: Track[];\n selectedTrackIndex: number;\n pressedKeys: Record<number, Record<number, boolean>>;\n notesScrollerClientRect: Pick<ClientRect, \"left\" | \"width\" | \"top\" | \"height\">;\n tracksScrollerClientRect: Pick<ClientRect, \"left\" | \"width\" | \"top\" | \"height\">;\n};\n\nconst defaultState: PianoRollState = {\n ppq: 0,\n mode: \"keys\",\n position: 0,\n zoom: 10,\n verticalZoom: 5,\n verticalPosition: 44,\n verticalTrackZoom: 0.5,\n verticalTrackPosition: 0,\n playHeadPosition: 0,\n gridDivision: 4,\n snapToGrid: true,\n duration: 0,\n tracks: [],\n selectedTrackIndex: 0,\n pressedKeys: {},\n notesScrollerClientRect: { left: 0, width: 0, top: 0, height: 0 },\n tracksScrollerClientRect: { left: 0, width: 0, top: 0, height: 0 },\n};\n\ntype PropNameToHandlerName<PropName extends string> = `on${Capitalize<PropName>}Change`;\n\ntype StateChangeHandlerObject = {\n [PropName in keyof typeof defaultState as PropNameToHandlerName<PropName>]: (\n value: typeof defaultState[PropName],\n originalEvent?: MouseEvent | KeyboardEvent,\n ) => void;\n};\n\nconst propNameToHandlerName = (name: string) => `on${name[0]?.toUpperCase()}${name.slice(1)}Change`;\n\nexport const pianoRollStatePropNames = [\n ...Object.keys(defaultState),\n ...Object.keys(defaultState).map(propNameToHandlerName),\n \"onNoteChange\",\n \"onInsertNote\",\n \"onRemoveNote\",\n \"onNoteDown\",\n \"onNoteUp\",\n \"isKeyDown\",\n \"snapValueToGridIfEnabled\",\n] as (keyof ReturnType<typeof createPianoRollstate>)[];\n\nconst createPianoRollstate = (\n initialState?: Partial<PianoRollState & StateChangeHandlerObject>,\n) => {\n const [state, setState] = createStore<PianoRollState>({\n ...defaultState,\n ...initialState,\n });\n\n const handlers = Object.fromEntries(\n (Object.entries(state) as Entries<typeof state>).map((entry) => {\n const handlerName = propNameToHandlerName(entry[0]) as PropNameToHandlerName<typeof entry[0]>;\n return [\n handlerName,\n (value: typeof entry[1], originalEvent?: MouseEvent | KeyboardEvent) => {\n const handler = initialState?.[handlerName] as\n | ((value: typeof entry[1], originalEvent?: MouseEvent | KeyboardEvent) => void)\n | undefined;\n\n setState(entry[0], value);\n\n if (handler) {\n handler(value, originalEvent);\n }\n },\n ];\n }),\n ) as StateChangeHandlerObject;\n\n const onPlayheadPositionChange = (\n playheadPosition: number,\n originalEvent?: MouseEvent | KeyboardEvent,\n ) => {\n handlers.onPlayHeadPositionChange(\n snapValueToGridIfEnabled(playheadPosition, !!originalEvent?.altKey),\n );\n };\n\n const updateNotes = async (trackIndex: number, getNotes: (notes: Note[]) => Note[]) => {\n const track = state.tracks[trackIndex];\n if (!track) return;\n\n const notes = track.notes;\n\n handlers.onTracksChange([\n ...state.tracks.slice(0, trackIndex),\n { ...track, notes: getNotes(notes) },\n ...state.tracks.slice(trackIndex + 1),\n ]);\n };\n\n const onNoteChange = (trackIndex: number, noteIndex: number, note: Note) => {\n updateNotes(trackIndex, (notes) => [\n ...notes.slice(0, noteIndex),\n note,\n ...notes.slice(noteIndex + 1),\n ]);\n };\n\n const onInsertNote = (trackIndex: number, note: Note) => {\n const track = state.tracks[trackIndex];\n if (!track) return -1;\n\n const notes = track.notes;\n\n const newNoteIndex = Math.max(\n notes.findIndex(({ ticks }) => ticks > note.ticks),\n 0,\n );\n\n updateNotes(trackIndex, (notes) => [\n ...notes.slice(0, newNoteIndex),\n note,\n ...notes.slice(newNoteIndex),\n ]);\n\n return newNoteIndex;\n };\n\n const onRemoveNote = (trackIndex: number, noteIndex: number) => {\n updateNotes(trackIndex, (notes) => [\n ...notes.slice(0, noteIndex),\n ...notes.slice(noteIndex + 1),\n ]);\n };\n\n const updateKeyPressedState = (trackIndex: number, keyNumber: number, value: boolean) => {\n handlers.onPressedKeysChange?.({\n ...state.pressedKeys,\n [trackIndex]: {\n ...state.pressedKeys[trackIndex],\n [keyNumber]: value,\n },\n });\n };\n\n const onNoteDown = (trackIndex: number, keyNumber: number) => {\n updateKeyPressedState(trackIndex, keyNumber, true);\n };\n\n const onNoteUp = (trackIndex: number, keyNumber: number) => {\n updateKeyPressedState(trackIndex, keyNumber, false);\n };\n\n const isKeyDown = (trackIndex: number, keyNumber: number) =>\n !!state.pressedKeys[trackIndex]?.[keyNumber];\n\n const snapValueToGridIfEnabled = (value: number, altKey: boolean) => {\n const gridDivisionTicks = (state.ppq * 4) / state.gridDivision;\n\n return state.snapToGrid && !altKey\n ? Math.round(value / gridDivisionTicks) * gridDivisionTicks\n : value;\n };\n\n return mergeProps(state, {\n ...handlers,\n onNoteChange,\n onInsertNote,\n onRemoveNote,\n onNoteDown,\n onNoteUp,\n isKeyDown,\n snapValueToGridIfEnabled,\n onPlayheadPositionChange,\n });\n};\n\ntype Entries<T> = {\n [K in keyof T]: [K, T[K]];\n}[keyof T][];\n\nexport default createPianoRollstate;\n","import { createContext, splitProps, useContext } from \"solid-js\";\n\nimport { PianoRollProps } from \"./PianoRoll\";\nimport createPianoRollstate, { pianoRollStatePropNames } from \"./usePianoRollState\";\n\nexport type PianoRollContext = {\n showAllTracks?: boolean;\n showTrackList?: boolean;\n} & ReturnType<typeof createPianoRollstate>;\n\nconst PianoRollContext = createContext<PianoRollContext>();\n\nexport const PianoRollContextProvider = PianoRollContext.Provider;\n\nexport const usePianoRollContext = () => {\n const context = useContext(PianoRollContext);\n\n if (!context) throw new Error(\"No PianoRollContext found\");\n\n return context;\n};\n\nexport const splitContextProps = (allProps: PianoRollProps) =>\n splitProps(allProps, [...pianoRollStatePropNames, \"showAllTracks\", \"showTrackList\"]);\n","import { createEffect } from \"solid-js\";\nimport { createStore } from \"solid-js/store\";\n\nexport type ViewPortDimension = ReturnType<typeof createViewPortDimension>;\nexport type ViewPortDimensionName = string;\nexport type ViewPortDimensionState = {\n position: number;\n range: number;\n\n pixelOffset: number;\n pixelSize: number;\n\n name: ViewPortDimensionName;\n\n onZoomChange?: (zoom: number) => void;\n onPositionChange?: (zoom: number) => void;\n\n zoom: number;\n\n minZoom: number;\n maxZoom: number;\n};\n\nexport default function createViewPortDimension(getState: () => ViewPortDimensionState) {\n const getStateWithFunctions = () => {\n const state = getState();\n\n const onZoomChange = (zoom: number) =>\n state.onZoomChange?.(clamp(zoom, state.minZoom, state.maxZoom));\n\n const onPositionChange = (position: number) => state.onPositionChange?.(position);\n\n return {\n ...state,\n onZoomChange,\n onPositionChange,\n calculatePixelOffset,\n calculatePixelValue,\n calculatePosition,\n calculatePixelDimensions,\n calculateVisibleRange,\n calculateMaxPosition,\n isVisible,\n };\n };\n\n const [state, setState] = createStore(getStateWithFunctions());\n createEffect(() => setState(getStateWithFunctions()));\n\n function calculatePixelValue(position: number = state.position) {\n const virtualSize = state.pixelSize * state.zoom;\n return (position / state.range) * virtualSize;\n }\n\n function calculatePixelOffset(position: number) {\n return calculatePixelValue(position) - calculatePixelValue(state.position);\n }\n\n function calculatePosition(offset: number) {\n const percentX = (offset - state.pixelOffset) / state.pixelSize;\n const position = state.position + percentX * calculateVisibleRange();\n\n return position;\n }\n\n function calculateVisibleRange() {\n return state.range / state.zoom;\n }\n\n function calculateMaxPosition() {\n return state.range - state.range / state.zoom;\n }\n\n function calculatePixelDimensions(position: number, length: number) {\n const offset = calculatePixelOffset(position);\n const size = calculatePixelValue(length);\n\n return { offset, size };\n }\n\n function isVisible({ offset, size }: { offset: number; size: number }) {\n return offset + size > 0 && offset < state.pixelSize;\n }\n\n return state;\n}\n\nexport const clamp = (value: number, min: number, max: number) =>\n Math.max(min, Math.min(max, value));\n","import { createContext, ParentProps, useContext } from \"solid-js\";\nimport createViewPortDimension, {\n ViewPortDimension,\n ViewPortDimensionName,\n ViewPortDimensionState,\n} from \"./createViewPortDimension\";\n\nconst defaultViewPortProps = {\n pixelOffset: 0,\n position: 0,\n range: 1,\n zoom: 1,\n minZoom: 1,\n maxZoom: Infinity,\n};\n\nexport const ScrollZoomViewPort = (\n props: ParentProps<{\n dimensions: Record<\n ViewPortDimensionName,\n () => Omit<ViewPortDimensionState, \"name\" | keyof typeof defaultViewPortProps> &\n Partial<Pick<ViewPortDimensionState, keyof typeof defaultViewPortProps>>\n >;\n }>,\n) => {\n const viewPorts = Object.entries(props.dimensions).map(([name, viewPortProps]) =>\n createViewPortDimension(() => ({\n name: name as ViewPortDimensionName,\n ...defaultViewPortProps,\n ...viewPortProps(),\n })),\n );\n\n const parentViewPorts = useContext(ScrollZoomViewPortContext);\n\n return (\n <ScrollZoomViewPortContext.Provider value={[...parentViewPorts, ...viewPorts]}>\n {props.children}\n </ScrollZoomViewPortContext.Provider>\n );\n};\n\nconst ScrollZoomViewPortContext = createContext<ViewPortDimension[]>([]);\n\nexport const useViewPortDimension = (name: ViewPortDimensionName) => {\n const viewPorts = useContext(ScrollZoomViewPortContext);\n\n const viewPort = name\n ? viewPorts.find((viewPort) => viewPort.name === name)\n : viewPorts[viewPorts.length - 1];\n\n if (!viewPort) throw new Error(`ViewPort dimension \"${name}\" not found.`);\n\n return viewPort;\n};\n","import { createEffect, createMemo, JSX, mergeProps, ParentProps, Ref, splitProps } from \"solid-js\";\n\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nimport styles from \"./ScrollZoomContainer.module.css\";\n\nconst ScrollZoomContainer = (\n props: ParentProps<\n {\n ref?: Ref<HTMLDivElement>;\n verticalDimensionName?: string;\n horizontalDimensionName?: string;\n showScrollbar?: boolean;\n } & JSX.IntrinsicElements[\"div\"]\n >,\n) => {\n let scrollContentRef: HTMLDivElement | undefined;\n\n const [ownProps, divProps] = splitProps(props, [\n \"ref\",\n \"verticalDimensionName\",\n \"horizontalDimensionName\",\n \"showScrollbar\",\n ]);\n\n const propsWithDefaults = mergeProps(\n {\n verticalDimensionName: \"vertical\",\n horizontalDimensionName: \"horizontal\",\n showScrollbar: true,\n },\n ownProps,\n );\n\n const verticalViewPort = createMemo(() =>\n useViewPortDimension(propsWithDefaults.verticalDimensionName),\n );\n const horizontalViewPort = createMemo(() =>\n useViewPortDimension(propsWithDefaults.horizontalDimensionName),\n );\n\n const handleScroll = (event: UIEvent & { currentTarget: Element }) => {\n event.preventDefault();\n\n if (didUpdateScroll) {\n didUpdateScroll = false;\n return;\n }\n\n const maxVerticalPosition = verticalViewPort().calculateMaxPosition();\n const maxPosition = horizontalViewPort().calculateMaxPosition();\n\n const height = verticalViewPort().pixelSize;\n const width = horizontalViewPort().pixelSize;\n const { scrollTop, scrollLeft, scrollWidth, scrollHeight } = event.currentTarget;\n\n const scrollTopAmount = scrollTop / (scrollHeight - height);\n const scrollLeftAmount = scrollLeft / (scrollWidth - width);\n\n verticalViewPort().onPositionChange?.(maxVerticalPosition * scrollTopAmount);\n horizontalViewPort().onPositionChange?.(maxPosition * scrollLeftAmount);\n };\n\n const handleWheel = (event: WheelEvent & { currentTarget: Element }) => {\n if (event.altKey) {\n event.preventDefault();\n\n if (Math.abs(event.deltaX) > Math.abs(event.deltaY)) {\n horizontalViewPort()?.onZoomChange?.(\n horizontalViewPort().zoom / (1 + event.deltaX / horizontalViewPort().pixelSize),\n );\n const maxPosition = horizontalViewPort().calculateMaxPosition();\n\n horizontalViewPort()?.onPositionChange?.(\n Math.min(maxPosition, horizontalViewPort()?.position),\n );\n } else {\n verticalViewPort()?.onZoomChange?.(\n verticalViewPort().zoom / (1 + event.deltaY / verticalViewPort().pixelSize),\n );\n const maxVerticalPosition = verticalViewPort().calculateMaxPosition();\n\n verticalViewPort()?.onPositionChange?.(\n Math.min(maxVerticalPosition, verticalViewPort()?.position),\n );\n }\n } else if (!props.showScrollbar) {\n event.preventDefault();\n event.currentTarget.scrollLeft += event.deltaX;\n event.currentTarget.scrollTop += event.deltaY;\n }\n };\n\n let didUpdateScroll = false;\n\n createEffect(() => {\n const maxVerticalPosition = verticalViewPort().calculateMaxPosition();\n const maxPosition = horizontalViewPort().calculateMaxPosition();\n\n const scrollTopAmount =\n maxVerticalPosition > 0 ? verticalViewPort().position / maxVerticalPosition : 0;\n const scrollLeftAmount = maxPosition > 0 ? horizontalViewPort().position / maxPosition : 0;\n\n const height = verticalViewPort().pixelSize;\n const width = horizontalViewPort().pixelSize;\n\n if (!scrollContentRef?.parentElement) return;\n\n const scrollDivHeight = verticalViewPort().zoom * verticalViewPort().pixelSize;\n const scrollTop = scrollTopAmount * (scrollDivHeight - height);\n\n const scrollDivWidth = horizontalViewPort().zoom * horizontalViewPort().pixelSize;\n const scrollLeft = scrollLeftAmount * (scrollDivWidth - width);\n\n didUpdateScroll = true;\n\n scrollContentRef.style.height = `${scrollDivHeight}px`;\n scrollContentRef.style.width = `${scrollDivWidth}px`;\n\n scrollContentRef.parentElement.scrollTo({\n left: scrollLeft,\n top: scrollTop,\n });\n });\n\n return (\n <div\n ref={props.ref}\n onScroll={handleScroll}\n onWheel={handleWheel}\n {...divProps}\n style={{\n overflow: propsWithDefaults.showScrollbar ? \"scroll\" : \"hidden\",\n ...(typeof divProps.style === \"object\" && divProps.style),\n }}\n classList={{\n [styles.ScrollZoomContainer]: true,\n ...divProps.classList,\n }}\n >\n <div ref={scrollContentRef}>\n <div\n style={{\n top: 0,\n left: 0,\n height: `${verticalViewPort().pixelSize}px`,\n width: `${horizontalViewPort().pixelSize}px`,\n position: \"sticky\",\n display: \"flex\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n height: `${verticalViewPort().pixelSize}px`,\n width: `${horizontalViewPort().pixelSize}px`,\n }}\n >\n {props.children}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ScrollZoomContainer;\n","import styles from \"./PianoRollKeys.module.css\";\nimport { createEffect, createMemo, createSignal, Index, Show } from \"solid-js\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport ScrollZoomContainer from \"./viewport/ScrollZoomContainer\";\n\nconst PianoRollKeys = () => {\n const verticalViewPort = createMemo(() => useViewPortDimension(\"vertical\"));\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontalKeys\"));\n const [isMouseDown, setIsMouseDown] = createSignal(false);\n const context = usePianoRollContext();\n\n const handleMouseUp = () => {\n setIsMouseDown(false);\n };\n\n createEffect(() => {\n if (isMouseDown()) {\n window.addEventListener(\"mouseup\", handleMouseUp);\n } else {\n window.removeEventListener(\"mouseup\", handleMouseUp);\n }\n });\n\n return (\n <div class={styles.PianoRollKeys} style={{ width: `${horizontalViewPort().pixelSize}px` }}>\n <ScrollZoomContainer horizontalDimensionName=\"horizontalKeys\" showScrollbar={false}>\n <Index each={keys}>\n {(key) => {\n const isDown = createMemo(() =>\n context.isKeyDown(context.selectedTrackIndex, key().number),\n );\n const virtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(127 - key().number, 1),\n );\n\n const previousIsBlack = blackKeys.includes((key().number - 1) % 12);\n const nextIsBlack = blackKeys.includes((key().number + 1) % 12);\n\n return (\n <Show when={verticalViewPort().isVisible(virtualDimensions())}>\n <div\n classList={{\n [styles[\"Key\"]]: true,\n [styles[\"black\"]]: key().isBlack,\n [styles[\"white\"]]: !key().isBlack,\n [styles[\"down\"]]: isDown(),\n }}\n onMouseDown={() => {\n setIsMouseDown(true);\n context.onNoteDown(context.selectedTrackIndex, key().number);\n }}\n onMouseUp={() => {\n context.onNoteUp(context.selectedTrackIndex, key().number);\n }}\n onMouseEnter={() => {\n if (isMouseDown()) {\n context.onNoteDown(context.selectedTrackIndex, key().number);\n }\n }}\n onMouseLeave={() => {\n if (isMouseDown()) {\n context.onNoteUp(context.selectedTrackIndex, key().number);\n }\n }}\n title={key().name}\n data-index={key().number % 12}\n style={{\n top: `${\n virtualDimensions().offset -\n virtualDimensions().size * (!key().isBlack ? (nextIsBlack ? 1 / 2 : 0) : 0)\n }px`,\n height: `${\n virtualDimensions().size +\n (!key().isBlack && nextIsBlack ? virtualDimensions().size / 2 : 0) +\n (!key().isBlack && previousIsBlack ? virtualDimensions().size / 2 : 0)\n }px`,\n \"box-shadow\":\n `0px 0px ${Math.min(virtualDimensions().size / 20, 1)}px ${Math.min(\n virtualDimensions().size / 50,\n 1,\n )}px rgba(0, 0, 0, 0.5) ${key().isBlack ? \"\" : \"inset\"}` + isDown()\n ? `0px 0px ${Math.min(virtualDimensions().size / 8, 2)}px ${Math.min(\n virtualDimensions().size / 20,\n 2,\n )}px rgba(0, 0, 0, 0.5) inset`\n : \"\",\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\n </ScrollZoomContainer>\n </div>\n );\n};\n\nexport const blackKeys = [1, 3, 6, 8, 10];\nexport const keyNames = [\"C\", \"C#\", \"D\", \"D#\", \"E\", \"F\", \"F#\", \"G\", \"G#\", \"A\", \"A#\", \"B\"];\nexport const keys = Array.from({ length: 128 }).map((_, index) => ({\n number: index,\n name: `${keyNames[index % 12]} ${Math.floor(index / 12) - 2}`,\n isBlack: blackKeys.includes(index % 12),\n}));\n\nexport default PianoRollKeys;\n","import { createMemo, createSignal, For, Ref, Show } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport styles from \"./PianoRollNotes.module.scss\";\nimport { clamp } from \"./viewport/createViewPortDimension\";\nimport { Note } from \"./types\";\n\ntype NoteDragMode = \"trimStart\" | \"move\" | \"trimEnd\" | undefined;\n\nconst PianoRollNotes = (props: { ref?: Ref<HTMLDivElement | undefined> }) => {\n const context = usePianoRollContext();\n\n const verticalViewPort = createMemo(() =>\n useViewPortDimension(context.mode === \"keys\" ? \"vertical\" : \"verticalTracks\"),\n );\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\n\n const gridDivisionTicks = createMemo(() => (context.ppq * 4) / context.gridDivision);\n\n const [isDragging, setIsDragging] = createSignal(false);\n const [noteDragMode, setNoteDragMode] = createSignal<NoteDragMode>();\n const [currentNoteIndex, setCurrentNoteIndex] = createSignal(-1);\n const [currentNoteTrackIndex, setCurrentNoteTrackIndex] = createSignal(-1);\n\n const [diffPosition, setDiffPosition] = createSignal(0);\n const [getInitialNote, setInitialNote] = createSignal<Note>();\n\n const calculateNoteDragValues = (event: MouseEvent) => {\n const targetTrackIndex =\n context.mode === \"tracks\"\n ? clamp(\n Math.floor(verticalViewPort().calculatePosition(event.clientY)),\n 0,\n context.tracks.length - 1,\n )\n : currentNoteTrackIndex() > -1\n ? currentNoteTrackIndex()\n : context.selectedTrackIndex;\n\n const midi =\n context.mode === \"keys\"\n ? Math.floor(128 - verticalViewPort().calculatePosition(event.clientY))\n : getInitialNote()?.midi ?? 60;\n\n const horiontalPosition = horizontalViewPort().calculatePosition(event.clientX);\n\n return {\n targetTrackIndex,\n midi,\n horiontalPosition,\n };\n };\n\n const handleMouseMove = (mouseMoveEvent: MouseEvent) => {\n mouseMoveEvent.preventDefault();\n mouseMoveEvent.stopPropagation();\n\n const note = getInitialNote();\n if (!note) return;\n\n const { targetTrackIndex, midi, horiontalPosition } = calculateNoteDragValues(mouseMoveEvent);\n\n const ticks = context.snapValueToGridIfEnabled(\n horiontalPosition - diffPosition(),\n mouseMoveEvent.altKey,\n );\n\n const updatedNote = {\n ...note,\n midi,\n ...(noteDragMode() === \"move\" && { ticks }),\n ...(noteDragMode() === \"trimStart\" && {\n ticks: ticks < note.ticks + note.durationTicks ? ticks : note.ticks + note.durationTicks,\n durationTicks:\n ticks < note.ticks + note.durationTicks\n ? note.ticks + note.durationTicks - ticks\n : context.snapValueToGridIfEnabled(\n horiontalPosition - note.ticks,\n mouseMoveEvent.altKey,\n ),\n }),\n ...(noteDragMode() === \"trimEnd\" && {\n ticks: ticks < note.ticks ? ticks : note.ticks,\n durationTicks:\n ticks < note.ticks\n ? note.ticks - ticks\n : context.snapValueToGridIfEnabled(\n horiontalPosition - note.ticks,\n mouseMoveEvent.altKey,\n ),\n }),\n };\n\n const previousTrackIndex = currentNoteTrackIndex();\n const previousNoteIndex = currentNoteIndex();\n\n if (targetTrackIndex === previousTrackIndex) {\n context.onNoteChange?.(previousTrackIndex, previousNoteIndex, updatedNote);\n } else {\n if (context.onInsertNote) {\n context.onRemoveNote?.(previousTrackIndex, previousNoteIndex);\n const newNoteIndex = context.onInsertNote(targetTrackIndex, updatedNote);\n\n setCurrentNoteTrackIndex(targetTrackIndex);\n setCurrentNoteIndex(newNoteIndex);\n }\n }\n };\n\n const stopDragging = () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", stopDragging);\n setIsDragging(false);\n setCurrentNoteIndex(-1);\n setCurrentNoteTrackIndex(-1);\n };\n\n const startDragging = () => {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", stopDragging);\n };\n\n const getClasses = (noteDragMode: NoteDragMode) => {\n return noteDragMode ? [styles.Note, styles[noteDragMode]] : [styles.Note];\n };\n\n return (\n <div\n classList={{ [styles.PianoRollNotes]: true }}\n ref={props.ref}\n onMouseDown={(mouseDownEvent) => {\n mouseDownEvent.preventDefault();\n mouseDownEvent.stopPropagation();\n\n const { targetTrackIndex, midi, horiontalPosition } =\n calculateNoteDragValues(mouseDownEvent);\n\n const ticks = context.snapValueToGridIfEnabled(\n horiontalPosition,\n mouseDownEvent.altKey,\n context,\n );\n\n const durationTicks = gridDivisionTicks();\n\n const newNote: Note = {\n midi,\n ticks,\n durationTicks,\n velocity: 100,\n };\n\n const newNoteIndex = context.onInsertNote(targetTrackIndex, newNote);\n\n setIsDragging(true);\n setCurrentNoteTrackIndex(targetTrackIndex);\n setCurrentNoteIndex(newNoteIndex);\n setInitialNote(newNote);\n setDiffPosition(0);\n setNoteDragMode(\"trimEnd\");\n\n startDragging();\n }}\n >\n <For each={context.tracks}>\n {(track, trackIndex) => {\n return (\n <Show\n when={\n trackIndex() === context.selectedTrackIndex ||\n context.showAllTracks ||\n context.mode === \"tracks\"\n }\n >\n <For each={track.notes}>\n {(note, noteIndex) => {\n const verticalVirtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(\n context.mode === \"keys\" ? 127 - note.midi : trackIndex(),\n 1,\n ),\n );\n\n const horizontalDimensions = createMemo(() =>\n horizontalViewPort().calculatePixelDimensions(note.ticks, note.durationTicks),\n );\n\n return (\n <Show\n when={\n verticalViewPort().isVisible(verticalVirtualDimensions()) &&\n horizontalViewPort().isVisible(horizontalDimensions())\n }\n >\n <div\n class={getClasses(noteDragMode()).join(\" \")}\n draggable={false}\n onMouseMove={(event) => {\n if (isDragging()) return;\n event.stopPropagation();\n\n const relativeX = horizontalViewPort().calculatePixelValue(\n horizontalViewPort().calculatePosition(event.clientX),\n );\n const noteStartX = horizontalViewPort().calculatePixelValue(note.ticks);\n const noteEndX = horizontalViewPort().calculatePixelValue(\n note.ticks + note.durationTicks,\n );\n\n setNoteDragMode(\n relativeX - noteStartX < 3\n ? \"trimStart\"\n : noteEndX - relativeX < 3\n ? \"trimEnd\"\n : \"move\",\n );\n }}\n onDblClick={(event) => {\n event.stopPropagation();\n context.onRemoveNote?.(trackIndex(), noteIndex());\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n\n const initialPosition = horizontalViewPort().calculatePosition(\n event.clientX,\n );\n\n setDiffPosition(\n noteDragMode() === \"trimEnd\"\n ? -(note.ticks + note.durationTicks - initialPosition)\n : initialPosition - note.ticks,\n );\n setIsDragging(true);\n setCurrentNoteIndex(noteIndex());\n setCurrentNoteTrackIndex(trackIndex());\n setInitialNote(note);\n\n startDragging();\n }}\n style={{\n \"background-color\": `${track.color}`,\n\n opacity: (note.velocity / 128 + 2) / 3,\n\n top: `${verticalVirtualDimensions().offset}px`,\n height: `${verticalVirtualDimensions().size}px`,\n\n left: `${horizontalDimensions().offset}px`,\n width: `${horizontalDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </For>\n </Show>\n );\n }}\n </For>\n </div>\n );\n};\n\nexport default PianoRollNotes;\n","import { createMemo } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\n\nconst usePianoRollGrid = () => {\n const context = usePianoRollContext();\n\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\n const measureTicks = createMemo(() => context.ppq * 4);\n const selectedGridDivisorTicks = createMemo(() => measureTicks() / context.gridDivision);\n\n function calculateVisibleGridDivisorTicks(value: number): number {\n const visibleRange = horizontalViewPort().calculateVisibleRange();\n\n if (visibleRange <= 0) return 0;\n\n if (visibleRange / value > 100) {\n return calculateVisibleGridDivisorTicks(value * 2);\n }\n\n if (visibleRange / value < 30) {\n return calculateVisibleGridDivisorTicks(value / 2);\n }\n\n return value;\n }\n\n const gridDivisorTicks = createMemo(() =>\n calculateVisibleGridDivisorTicks(selectedGridDivisorTicks()),\n );\n\n const gridArray = createMemo(() => {\n const numberOfLines = Math.ceil(\n horizontalViewPort().calculateVisibleRange() / gridDivisorTicks() + 1,\n );\n const startIndex = Math.floor(context.position / gridDivisorTicks());\n\n return Array.from({ length: numberOfLines }).map((_, i) => {\n const index = i + startIndex;\n const ticks = index * gridDivisorTicks();\n\n const measurePosition = ticks / context.ppq / 4 + 1;\n\n const bars = Math.floor(measurePosition);\n const beats = Math.floor((measurePosition - bars) * 4);\n\n const label = `${bars}${beats ? `.${beats}` : \"\"}`;\n return {\n index,\n ticks,\n isHighlighted:\n Math.ceil(((index + 1) * selectedGridDivisorTicks()) / measureTicks()) % 2 === 0,\n hasHighlightedBorder: (index * gridDivisorTicks()) % selectedGridDivisorTicks() === 0,\n showLabel: ((index * selectedGridDivisorTicks()) / measureTicks()) % 2 === 0,\n virtualDimensions: horizontalViewPort().calculatePixelDimensions(ticks, gridDivisorTicks()),\n label,\n };\n });\n });\n\n return gridArray;\n};\n\nexport default usePianoRollGrid;\n","import { createMemo, For, Index, Show } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { blackKeys, keys } from \"./PianoRollKeys\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport styles from \"./PianoRollGrid.module.css\";\nimport usePianoRollGrid from \"./usePianoRollGrid\";\n\nconst PianoRollGrid = () => {\n const context = usePianoRollContext();\n\n const verticalViewPort = createMemo(() =>\n useViewPortDimension(context.mode === \"keys\" ? \"vertical\" : \"verticalTracks\"),\n );\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\n const gridArray = usePianoRollGrid();\n\n return (\n <div class={styles.PianoRollGrid}>\n <Index each={gridArray()}>\n {(entry) => {\n return (\n <Show when={horizontalViewPort().isVisible(entry().virtualDimensions)}>\n <div\n classList={{\n [styles[\"PianoRollGrid-Time\"]]: true,\n [styles[\"Highlighted\"]]: entry().isHighlighted,\n [styles[\"HighlightedBorder\"]]: entry().hasHighlightedBorder,\n }}\n style={{\n left: `${entry().virtualDimensions.offset}px`,\n width: `${entry().virtualDimensions.size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\n <Show when={context.mode === \"keys\"}>\n <Index each={keys}>\n {(key) => {\n const virtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(127 - key().number, 1),\n );\n\n return (\n <Show when={verticalViewPort().isVisible(virtualDimensions())}>\n <div\n classList={{\n [styles[\"PianoRollGrid-Row\"]]: true,\n [styles[\"Key\"]]: true,\n [styles[\"IsDark\"]]: key().isBlack,\n [styles[\"IsBlackAndNextIsWhite\"]]:\n !key().isBlack && !blackKeys.includes((key().number + 1) % 12),\n }}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </Index>\n </Show>\n\n <Show when={context.mode === \"tracks\"}>\n <For each={context.tracks}>\n {(track, index) => {\n const virtualDimensions = createMemo(() =>\n verticalViewPort().calculatePixelDimensions(index(), 1),\n );\n\n return (\n <Show when={verticalViewPort().isVisible(virtualDimensions())}>\n <div\n classList={{\n [styles[\"PianoRollGrid-Row\"]]: true,\n [styles[\"IsDark\"]]: index() % 2 === 0,\n }}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n }}\n ></div>\n </Show>\n );\n }}\n </For>\n </Show>\n </div>\n );\n};\n\nexport default PianoRollGrid;\n","import { createMemo, mergeProps } from \"solid-js\";\nimport { JSX } from \"solid-js/jsx-runtime\";\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nconst ZoomSliderControl = (\n props: {\n dimensionName?: string;\n orientation?: \"horizontal\" | \"vertical\";\n } & JSX.IntrinsicElements[\"input\"],\n) => {\n const propsWithDefaults = mergeProps({ orientation: \"horizontal\" }, props);\n const dimension = createMemo(() =>\n useViewPortDimension(props.dimensionName ?? propsWithDefaults.orientation),\n );\n\n return (\n <input\n min={dimension().minZoom}\n max={dimension().maxZoom}\n step={0.01}\n {...props}\n value={dimension().zoom}\n onInput={(event) => {\n const value = event.currentTarget.valueAsNumber;\n dimension().onZoomChange?.(value);\n }}\n type=\"range\"\n {...{ orient: propsWithDefaults.orientation }}\n style={\n propsWithDefaults.orientation === \"vertical\"\n ? {\n margin: 0,\n \"margin-left\": \"4px\",\n \"margin-right\": \"4px\",\n width: \"16px\",\n transform: \"rotate(180deg)\",\n ...({\n \"writing-mode\": \"bt-lr\" /* IE */,\n \"-webkit-appearance\": \"slider-vertical\" /* WebKit */,\n } as unknown as JSX.CSSProperties),\n ...(typeof props.style === \"object\" && props.style),\n }\n : {\n margin: 0,\n \"margin-top\": \"4px\",\n \"margin-bottom\": \"4px\",\n ...(typeof props.style === \"object\" && props.style),\n }\n }\n />\n );\n};\n\nexport default ZoomSliderControl;\n","import styles from \"./PianoRollTrackList.module.scss\";\nimport { createMemo, Index, Show } from \"solid-js\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\n\nconst PianoRollTrackList = () => {\n const viewPort = createMemo(() => useViewPortDimension(\"verticalTracks\"));\n const context = usePianoRollContext();\n\n return (\n <div class={styles.PianoRollTrackList}>\n <Index each={context.tracks}>\n {(track, index) => {\n const virtualDimensions = createMemo(() => viewPort().calculatePixelDimensions(index, 1));\n\n return (\n <Show when={virtualDimensions().size > 0}>\n <div\n classList={{\n [styles[\"Track\"]]: true,\n [styles[\"selected\"]]: index === context.selectedTrackIndex,\n }}\n title={track().name}\n style={{\n top: `${virtualDimensions().offset}px`,\n height: `${virtualDimensions().size}px`,\n }}\n onClick={() => context.onSelectedTrackIndexChange?.(index)}\n >\n {index} {track().name || \"[unnamed track]\"}\n </div>\n </Show>\n );\n }}\n </Index>\n </div>\n );\n};\n\nexport default PianoRollTrackList;\n","import { ParentProps } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport { ScrollZoomViewPort } from \"./viewport/ScrollZoomViewPort\";\n\nconst PianoRollScrollZoomViewPort = (props: ParentProps) => {\n const zoomFactor = 500;\n\n const context = usePianoRollContext();\n\n return (\n <ScrollZoomViewPort\n dimensions={{\n horizontal: () => ({\n pixelOffset: context.notesScrollerClientRect.left,\n pixelSize: context.notesScrollerClientRect.width,\n position: context.position,\n range: context.duration,\n zoom: context.zoom * (zoomFactor / context.notesScrollerClientRect.width),\n onPositionChange: context.onPositionChange,\n onZoomChange: (zoom) =>\n context.onZoomChange?.(zoom / (zoomFactor / context.notesScrollerClientRect.width)),\n minZoom: 1,\n maxZoom: 500,\n }),\n vertical: () => ({\n pixelOffset: context.notesScrollerClientRect.top,\n pixelSize: context.notesScrollerClientRect.height,\n position: context.verticalPosition,\n range: 128,\n zoom: context.verticalZoom * (zoomFactor / context.notesScrollerClientRect.height),\n onPositionChange: context.onVerticalPositionChange,\n onZoomChange: (verticalZoom) =>\n context.onVerticalZoomChange?.(\n verticalZoom / (zoomFactor / context.notesScrollerClientRect.height),\n ),\n minZoom: 1,\n maxZoom: 10,\n }),\n horizontalTracks: () => ({\n pixelOffset: 0,\n pixelSize: context.tracksScrollerClientRect.width,\n }),\n verticalTracks: () => ({\n pixelOffset: context.tracksScrollerClientRect.top,\n pixelSize: context.tracksScrollerClientRect.height,\n position: context.verticalTrackPosition,\n range: context.tracks.length,\n zoom: context.verticalTrackZoom * (zoomFactor / context.tracksScrollerClientRect.height),\n onPositionChange: context.onVerticalTrackPositionChange,\n onZoomChange: (verticalTrackZoom) =>\n context.onVerticalTrackZoomChange?.(\n verticalTrackZoom / (zoomFactor / context.tracksScrollerClientRect.height),\n ),\n minZoom: 0.8,\n maxZoom: 3,\n }),\n horizontalKeys: () => ({ pixelSize: 60 }),\n }}\n >\n {props.children}\n </ScrollZoomViewPort>\n );\n};\n\nexport default PianoRollScrollZoomViewPort;\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 { createEffect, createSignal, ParentProps } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport ScrollZoomContainer from \"./viewport/ScrollZoomContainer\";\n\nconst PianoRollNotesScroller = (props: ParentProps) => {\n const context = usePianoRollContext();\n\n const [ref, setRef] = createSignal<HTMLDivElement>();\n const clientRect = useBoundingClientRect(ref);\n\n createEffect(() => {\n context.onNotesScrollerClientRectChange(clientRect());\n });\n\n return (\n <ScrollZoomContainer\n ref={setRef}\n verticalDimensionName={context.mode === \"keys\" ? \"vertical\" : \"verticalTracks\"}\n >\n {props.children}\n </ScrollZoomContainer>\n );\n};\n\nexport default PianoRollNotesScroller;\n","import { createEffect, createSignal, ParentProps } from \"solid-js\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\nimport useBoundingClientRect from \"./useBoundingClientRect\";\nimport ScrollZoomContainer from \"./viewport/ScrollZoomContainer\";\n\nconst PianoRollTrackListScroller = (props: ParentProps) => {\n const context = usePianoRollContext();\n\n const [ref, setRef] = createSignal<HTMLDivElement>();\n const clientRect = useBoundingClientRect(ref);\n\n createEffect(() => {\n context.onTracksScrollerClientRectChange(clientRect());\n });\n\n return (\n <ScrollZoomContainer\n ref={setRef}\n horizontalDimensionName=\"horizontalTracks\"\n verticalDimensionName=\"verticalTracks\"\n showScrollbar={context.mode === \"keys\"}\n >\n {props.children}\n </ScrollZoomContainer>\n );\n};\n\nexport default PianoRollTrackListScroller;\n","import { createMemo, Index, Show } from \"solid-js\";\nimport { useViewPortDimension } from \"./viewport/ScrollZoomViewPort\";\nimport styles from \"./PianoRollScale.module.css\";\nimport usePianoRollGrid from \"./usePianoRollGrid\";\nimport { usePianoRollContext } from \"./PianoRollContext\";\n\nconst PianoRollScale = () => {\n const horizontalViewPort = createMemo(() => useViewPortDimension(\"horizontal\"));\n const grid = usePianoRollGrid();\n const context = usePianoRollContext();\n\n const updatePlayheadPosition = (event: MouseEvent) => {\n const position = horizontalViewPort().calculatePosition(event.clientX);\n context.onPlayHeadPositionChange(position, event);\n };\n\n return (\n <div\n class={styles.PianoRollScale}\n onMouseDown={(event) => {\n updatePlayheadPosition(event);\n\n const handleMouseUp = () => {\n window.removeEventListener(\"mousemove\", updatePlayheadPosition);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n window.addEventListener(\"mousemove\", updatePlayheadPosition);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n >\n <Index each={grid()}>\n {(entry) => {\n return (\n <Show when={horizontalViewPort().isVisible(entry().virtualDimensions)}>\n <div\n classList={{\n [styles[\"PianoRollScale-Time\"]]: true,\n [styles[\"Highlighted\"]]: entry().isHighlighted,\n [styles[\"HighlightedBorder\"]]: entry().hasHighlightedBorder,\n }}\n style={{\n left: `${entry().virtualDimensions.offset}px`,\n width: `${entry().virtualDimensions.size}px`,\n }}\n >\n <Show when={entry().showLabel}>\n <div class={styles[\"PianoRollScale-Label\"]}>{entry().label}</div>\n </Show>\n </div>\n </Show>\n );\n }}\n </Index>\n </div>\n );\n};\n\nexport default PianoRollScale;\n","import styles from \"./PianoRoll.module.css\";\n\nimport { JSX, ParentProps, Show, mergeProps } from \"solid-js\";\n\nimport { PianoRollContextProvider, splitContextProps } from \"./PianoRollContext\";\nimport PianoRollKeys from \"./PianoRollKeys\";\nimport PianoRollNotes from \"./PianoRollNotes\";\nimport PianoRollGrid from \"./PianoRollGrid\";\nimport ZoomSliderControl from \"./viewport/ZoomSliderControl\";\nimport PianoRollTrackList from \"./PianoRollTrackList\";\nimport createPianoRollstate from \"./usePianoRollState\";\nimport PianoRollScrollZoomViewPort from \"./PianoRollScrollZoomViewPort\";\nimport PianoRollNotesScroller from \"./PianoRollNotesScroller\";\nimport PianoRollTrackListScroller from \"./PianoRollTrackListScroller\";\nimport PianoRollScale from \"./PianoRollScale\";\n\nexport type PianoRollProps = {\n showAllTracks?: boolean;\n showTrackList?: boolean;\n} & ReturnType<typeof createPianoRollstate> &\n Omit<JSX.IntrinsicElements[\"div\"], \"onDurationChange\">;\n\nconst PianoRoll = (allProps: ParentProps<PianoRollProps>) => {\n const propsWithDefaults = mergeProps({ showAllTracks: false }, allProps);\n const [context, divProps] = splitContextProps(propsWithDefaults);\n\n return (\n <PianoRollContextProvider value={context}>\n <div {...divProps} class={styles.PianoRoll}>\n <PianoRollScrollZoomViewPort>\n <div class={styles.PianoRollContainer}>\n <ZoomSliderControl orientation=\"vertical\" dimensionName=\"verticalTracks\" />\n <div\n classList={{\n [styles.PianoRollLeftColumn]: true,\n [styles.showTrackList]: context.showTrackList,\n }}\n >\n <Show when={context.showTrackList}>\n <div\n style={{\n height: \"30px\",\n \"border-right\": \"1px black solid\",\n }}\n >\n <button\n title={context.mode === \"keys\" ? \"Tracks Mode\" : \"Keys Mode\"}\n onClick={() =>\n context.onModeChange(context.mode === \"keys\" ? \"tracks\" : \"keys\")\n }\n style={{\n \"font-size\": \"16px\",\n \"line-height\": \"16px\",\n cursor: \"pointer\",\n overflow: \"hidden\",\n }}\n >\n <div>{context.mode === \"keys\" ? \"≡\" : \"🎹\"}</div>\n </button>\n </div>\n </Show>\n <div style={{ flex: 1, display: \"flex\", overflow: \"hidden\" }}>\n <Show when={context.showTrackList}>\n <PianoRollTrackListScroller>\n <PianoRollTrackList />\n </PianoRollTrackListScroller>\n </Show>\n <Show when={context.mode === \"keys\"}>\n <PianoRollKeys />\n </Show>\n </div>\n </div>\n\n <PianoRollNotesScroller>\n {allProps.children}\n <div\n style={{\n width: \"100%\",\n display: \"flex\",\n height: \"100%\",\n \"flex-direction\": \"column\",\n overflow: \"hidden\",\n }}\n >\n <div style={{ height: \"30px\" }}>\n <PianoRollScale />\n </div>\n\n <div style={{ flex: 1, position: \"relative\", overflow: \"hidden\" }}>\n <PianoRollGrid />\n <PianoRollNotes />\n </div>\n </div>\n </PianoRollNotesScroller>\n\n <ZoomSliderControl orientation=\"vertical\" disabled={context.mode !== \"keys\"} />\n </div>\n <ZoomSliderControl\n orientation=\"horizontal\"\n style={{\n \"margin-left\": `${context.tracksScrollerClientRect.width + 24}px`,\n \"margin-right\": \"24px\",\n }}\n />\n </PianoRollScrollZoomViewPort>\n </div>\n </PianoRollContextProvider>\n );\n};\n\nexport default PianoRoll;\n","import { createEffect, createMemo, JSX, splitProps } from \"solid-js\";\nimport { clamp } from \"./createViewPortDimension\";\nimport { useViewPortDimension } from \"./ScrollZoomViewPort\";\n\nconst PlayHead = (\n allProps: {\n position: number;\n onPositionChange?: (playHeadPosition: number, event: MouseEvent) => void;\n sync?: boolean;\n dimensionName?: string;\n } & JSX.IntrinsicElements[\"div\"],\n) => {\n const [props, divProps] = splitProps(allProps, [\n \"position\",\n \"sync\",\n \"onPositionChange\",\n \"dimensionName\",\n ]);\n\n const viewPort = useViewPortDimension(props.dimensionName ?? \"horizontal\");\n\n createEffect(() => {\n if (!props.sync) return;\n\n const maxPosition = viewPort.range;\n const newPosition = clamp(props.position - viewPort.range / viewPort.zoom / 2, 0, maxPosition);\n\n viewPort.onPositionChange?.(newPosition);\n });\n\n const leftPosition = createMemo(() => viewPort.calculatePixelOffset(props.position));\n\n return (\n <div\n class=\"PlayHead\"\n {...divProps}\n style={{\n position: \"absolute\",\n height: \"100%\",\n width: \"2px\",\n left: `${leftPosition()}px`,\n \"background-color\": \"green\",\n cursor: \"pointer\",\n ...(typeof divProps.style === \"object\" && divProps.style),\n }}\n onMouseDown={(event) => {\n event.preventDefault();\n event.stopPropagation();\n const handleMouseMove = (event: MouseEvent) => {\n const newPosition = viewPort.calculatePosition(event.clientX);\n props.onPositionChange?.(newPosition, event);\n };\n const handleMouseUp = () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }}\n />\n );\n};\n\nexport default PlayHead;\n","import { createSignal } from \"solid-js\";\nimport { Note } from \"./types\";\n\nconst useNotes = () => {\n const [notes, onNotesChange] = createSignal<Note[]>([]);\n const onNoteChange = (index: number, note: Note) => {\n onNotesChange([...notes().slice(0, index), note, ...notes().splice(index + 1)]);\n };\n\n const onInsertNote = (note: Note) => {\n const index = Math.max(\n notes().findIndex(({ ticks }) => ticks > note.ticks),\n 0,\n );\n onNotesChange([...notes().slice(0, index), note, ...notes().splice(index)]);\n return index;\n };\n\n const onRemoveNote = (index: number) => {\n onNotesChange([...notes().slice(0, index), ...notes().splice(index + 1)]);\n };\n\n return {\n notes,\n onNotesChange,\n onNoteChange,\n onInsertNote,\n onRemoveNote,\n };\n};\n\nexport default useNotes;\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","defaultState","ppq","mode","position","zoom","verticalZoom","verticalPosition","verticalTrackZoom","verticalTrackPosition","playHeadPosition","gridDivision","snapToGrid","duration","tracks","selectedTrackIndex","pressedKeys","notesScrollerClientRect","left","width","top","height","tracksScrollerClientRect","propNameToHandlerName","name","toUpperCase","slice","pianoRollStatePropNames","Object","keys","map","createPianoRollstate","initialState","state","setState","createStore","handlers","fromEntries","entries","entry","handlerName","value","originalEvent","handler","onPlayheadPositionChange","playheadPosition","onPlayHeadPositionChange","snapValueToGridIfEnabled","altKey","updateNotes","trackIndex","getNotes","track","notes","onTracksChange","onNoteChange","noteIndex","note","onInsertNote","newNoteIndex","Math","max","findIndex","ticks","onRemoveNote","updateKeyPressedState","keyNumber","onPressedKeysChange","onNoteDown","onNoteUp","isKeyDown","gridDivisionTicks","round","mergeProps","PianoRollContext","createContext","PianoRollContextProvider","Provider","usePianoRollContext","context","useContext","Error","splitContextProps","allProps","splitProps","createViewPortDimension","getState","getStateWithFunctions","onZoomChange","clamp","minZoom","maxZoom","onPositionChange","calculatePixelOffset","calculatePixelValue","calculatePosition","calculatePixelDimensions","calculateVisibleRange","calculateMaxPosition","isVisible","createEffect","virtualSize","pixelSize","range","offset","percentX","pixelOffset","length","size","min","defaultViewPortProps","Infinity","ScrollZoomViewPort","props","viewPorts","dimensions","viewPortProps","parentViewPorts","ScrollZoomViewPortContext","_$createComponent","children","useViewPortDimension","viewPort","find","ScrollZoomContainer","scrollContentRef","ownProps","divProps","propsWithDefaults","verticalDimensionName","horizontalDimensionName","showScrollbar","verticalViewPort","createMemo","horizontalViewPort","handleScroll","event","preventDefault","didUpdateScroll","maxVerticalPosition","maxPosition","scrollTop","scrollLeft","scrollWidth","scrollHeight","currentTarget","scrollTopAmount","scrollLeftAmount","handleWheel","abs","deltaX","deltaY","parentElement","scrollDivHeight","scrollDivWidth","scrollTo","_tmpl$","_$spread","_$mergeProps","overflow","styles","classList","_$use","_$insert","_$effect","PianoRollKeys","isMouseDown","setIsMouseDown","createSignal","handleMouseUp","window","addEventListener","removeEventListener","Index","key","isDown","number","virtualDimensions","previousIsBlack","blackKeys","includes","nextIsBlack","Show","isBlack","_$classList","_$setAttribute","_$className","keyNames","Array","from","_","index","floor","_$delegateEvents","PianoRollNotes","isDragging","setIsDragging","noteDragMode","setNoteDragMode","currentNoteIndex","setCurrentNoteIndex","currentNoteTrackIndex","setCurrentNoteTrackIndex","diffPosition","setDiffPosition","getInitialNote","setInitialNote","calculateNoteDragValues","targetTrackIndex","clientY","midi","horiontalPosition","clientX","handleMouseMove","mouseMoveEvent","stopPropagation","updatedNote","durationTicks","previousTrackIndex","previousNoteIndex","stopDragging","startDragging","getClasses","Note","mouseDownEvent","newNote","velocity","For","showAllTracks","verticalVirtualDimensions","horizontalDimensions","_$memo","initialPosition","relativeX","noteStartX","noteEndX","join","color","usePianoRollGrid","measureTicks","selectedGridDivisorTicks","calculateVisibleGridDivisorTicks","visibleRange","gridDivisorTicks","gridArray","numberOfLines","ceil","startIndex","i","measurePosition","bars","beats","label","isHighlighted","hasHighlightedBorder","showLabel","PianoRollGrid","ZoomSliderControl","orientation","dimension","dimensionName","valueAsNumber","orient","margin","transform","PianoRollTrackList","_tmpl$2","onSelectedTrackIndexChange","PianoRollScrollZoomViewPort","zoomFactor","horizontal","vertical","onVerticalPositionChange","onVerticalZoomChange","horizontalTracks","verticalTracks","onVerticalTrackPositionChange","onVerticalTrackZoomChange","horizontalKeys","defaultRect","bottom","right","x","y","useBoundingClientRect","containerRef","boundingClientRect","setBoundingClientRect","container","updateBoundingClientRect","getBoundingClientRect","resizeObserver","ResizeObserver","observe","disconnect","PianoRollNotesScroller","setRef","clientRect","onNotesScrollerClientRectChange","PianoRollTrackListScroller","onTracksScrollerClientRectChange","PianoRollScale","grid","updatePlayheadPosition","PianoRoll","showTrackList","onModeChange","PianoRollContainer","PianoRollLeftColumn","PlayHead","sync","newPosition","leftPosition","cursor","useNotes","onNotesChange","splice"],"mappings":"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"}