solid-pianoroll 0.0.23 → 0.0.25

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 (54) hide show
  1. package/dist/{cjs/index.js → dev.cjs} +446 -426
  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/index.d.ts +105 -0
  8. package/dist/{esm/index.js → index.js} +450 -425
  9. package/dist/index.jsx +1130 -0
  10. package/package.json +43 -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 -78
  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 -162
  18. package/dist/source/PianoRollNotesScroller.jsx +0 -16
  19. package/dist/source/PianoRollScale.jsx +0 -29
  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 -106
  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 -9
  35. package/dist/types/PianoRollContext.d.ts +0 -122
  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 -5
  45. package/dist/types/types.d.ts +0 -6
  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/usePianoRollState.d.ts +0 -63
  50. package/dist/types/viewport/PlayHead.d.ts +0 -8
  51. package/dist/types/viewport/ScrollZoomContainer.d.ts +0 -8
  52. package/dist/types/viewport/ScrollZoomViewPort.d.ts +0 -39
  53. package/dist/types/viewport/ZoomSliderControl.d.ts +0 -6
  54. package/dist/types/viewport/createViewPortDimension.d.ts +0 -40
@@ -1,31 +0,0 @@
1
- import { createContext, useContext } from "solid-js";
2
- import createViewPortDimension from "./createViewPortDimension";
3
- const defaultViewPortProps = {
4
- pixelOffset: 0,
5
- position: 0,
6
- range: 1,
7
- zoom: 1,
8
- minZoom: 1,
9
- maxZoom: Infinity,
10
- };
11
- export const ScrollZoomViewPort = (props) => {
12
- const viewPorts = Object.entries(props.dimensions).map(([name, viewPortProps]) => createViewPortDimension(() => ({
13
- name: name,
14
- ...defaultViewPortProps,
15
- ...viewPortProps(),
16
- })));
17
- const parentViewPorts = useContext(ScrollZoomViewPortContext);
18
- return (<ScrollZoomViewPortContext.Provider value={[...parentViewPorts, ...viewPorts]}>
19
- {props.children}
20
- </ScrollZoomViewPortContext.Provider>);
21
- };
22
- const ScrollZoomViewPortContext = createContext([]);
23
- export const useViewPortDimension = (name) => {
24
- const viewPorts = useContext(ScrollZoomViewPortContext);
25
- const viewPort = name
26
- ? viewPorts.find((viewPort) => viewPort.name === name)
27
- : viewPorts[viewPorts.length - 1];
28
- if (!viewPort)
29
- throw new Error(`ViewPort dimension "${name}" not found.`);
30
- return viewPort;
31
- };
@@ -1,29 +0,0 @@
1
- import { createMemo, mergeProps } from "solid-js";
2
- import { useViewPortDimension } from "./ScrollZoomViewPort";
3
- const ZoomSliderControl = (props) => {
4
- const propsWithDefaults = mergeProps({ orientation: "horizontal" }, props);
5
- const dimension = createMemo(() => useViewPortDimension(props.dimensionName ?? propsWithDefaults.orientation));
6
- return (<input min={dimension().minZoom} max={dimension().maxZoom} step={0.01} {...props} value={dimension().zoom} onInput={(event) => {
7
- const value = event.currentTarget.valueAsNumber;
8
- dimension().onZoomChange?.(value);
9
- }} type="range" {...{ orient: propsWithDefaults.orientation }} style={propsWithDefaults.orientation === "vertical"
10
- ? {
11
- margin: 0,
12
- "margin-left": "4px",
13
- "margin-right": "4px",
14
- width: "16px",
15
- transform: "rotate(180deg)",
16
- ...{
17
- "writing-mode": "bt-lr" /* IE */,
18
- "-webkit-appearance": "slider-vertical" /* WebKit */,
19
- },
20
- ...(typeof props.style === "object" && props.style),
21
- }
22
- : {
23
- margin: 0,
24
- "margin-top": "4px",
25
- "margin-bottom": "4px",
26
- ...(typeof props.style === "object" && props.style),
27
- }}/>);
28
- };
29
- export default ZoomSliderControl;
@@ -1,51 +0,0 @@
1
- import { createEffect } from "solid-js";
2
- import { createStore } from "solid-js/store";
3
- export default function createViewPortDimension(getState) {
4
- const getStateWithFunctions = () => {
5
- const state = getState();
6
- const onZoomChange = (zoom) => state.onZoomChange?.(clamp(zoom, state.minZoom, state.maxZoom));
7
- const onPositionChange = (position) => state.onPositionChange?.(position);
8
- return {
9
- ...state,
10
- onZoomChange,
11
- onPositionChange,
12
- calculatePixelOffset,
13
- calculatePixelValue,
14
- calculatePosition,
15
- calculatePixelDimensions,
16
- calculateVisibleRange,
17
- calculateMaxPosition,
18
- isVisible,
19
- };
20
- };
21
- const [state, setState] = createStore(getStateWithFunctions());
22
- createEffect(() => setState(getStateWithFunctions()));
23
- function calculatePixelValue(position = state.position) {
24
- const virtualSize = state.pixelSize * state.zoom;
25
- return (position / state.range) * virtualSize;
26
- }
27
- function calculatePixelOffset(position) {
28
- return calculatePixelValue(position) - calculatePixelValue(state.position);
29
- }
30
- function calculatePosition(offset) {
31
- const percentX = (offset - state.pixelOffset) / state.pixelSize;
32
- const position = state.position + percentX * calculateVisibleRange();
33
- return position;
34
- }
35
- function calculateVisibleRange() {
36
- return state.range / state.zoom;
37
- }
38
- function calculateMaxPosition() {
39
- return state.range - state.range / state.zoom;
40
- }
41
- function calculatePixelDimensions(position, length) {
42
- const offset = calculatePixelOffset(position);
43
- const size = calculatePixelValue(length);
44
- return { offset, size };
45
- }
46
- function isVisible({ offset, size }) {
47
- return offset + size > 0 && offset < state.pixelSize;
48
- }
49
- return state;
50
- }
51
- export const clamp = (value, min, max) => Math.max(min, Math.min(max, value));
@@ -1,9 +0,0 @@
1
- import { JSX, ParentProps } from "solid-js";
2
- import createPianoRollstate from "./usePianoRollState";
3
- export type GridDivision = 1 | 2 | 4 | 8 | 16 | 32 | 64;
4
- export type PianoRollProps = {
5
- showAllTracks?: boolean;
6
- showTrackList?: boolean;
7
- } & ReturnType<typeof createPianoRollstate> & Omit<JSX.IntrinsicElements["div"], "onDurationChange">;
8
- declare const PianoRoll: (allProps: ParentProps<PianoRollProps>) => JSX.Element;
9
- export default PianoRoll;
@@ -1,122 +0,0 @@
1
- import { PianoRollProps } from "./PianoRoll";
2
- export declare const PianoRollContextProvider: import("solid-js/types/reactive/signal").ContextProviderComponent<{
3
- showAllTracks?: boolean;
4
- showTrackList?: boolean;
5
- } & {
6
- ppq: number;
7
- mode: "keys" | "tracks";
8
- position: number;
9
- zoom: number;
10
- verticalZoom: number;
11
- verticalPosition: number;
12
- verticalTrackZoom: number;
13
- verticalTrackPosition: number;
14
- gridDivision: import("./PianoRoll").GridDivision;
15
- snapToGrid: boolean;
16
- duration: number;
17
- tracks: import("./types").Track[];
18
- selectedTrackIndex: number;
19
- pressedKeys: Record<number, Record<number, boolean>>;
20
- notesScrollerClientRect: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">;
21
- tracksScrollerClientRect: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">;
22
- onNoteChange: (trackIndex: number, noteIndex: number, note: import("./types").Note) => void;
23
- onInsertNote: (trackIndex: number, note: import("./types").Note) => number;
24
- onRemoveNote: (trackIndex: number, noteIndex: number) => void;
25
- onNoteDown: (trackIndex: number, keyNumber: number) => void;
26
- onNoteUp: (trackIndex: number, keyNumber: number) => void;
27
- isKeyDown: (trackIndex: number, keyNumber: number) => boolean;
28
- onPpqChange: (value: number) => void;
29
- onModeChange: (value: "keys" | "tracks") => void;
30
- onPositionChange: (value: number) => void;
31
- onZoomChange: (value: number) => void;
32
- onVerticalZoomChange: (value: number) => void;
33
- onVerticalPositionChange: (value: number) => void;
34
- onVerticalTrackZoomChange: (value: number) => void;
35
- onVerticalTrackPositionChange: (value: number) => void;
36
- onGridDivisionChange: (value: import("./PianoRoll").GridDivision) => void;
37
- onSnapToGridChange: (value: boolean) => void;
38
- onDurationChange: (value: number) => void;
39
- onTracksChange: (value: import("./types").Track[]) => void;
40
- onSelectedTrackIndexChange: (value: number) => void;
41
- onPressedKeysChange: (value: Record<number, Record<number, boolean>>) => void;
42
- onNotesScrollerClientRectChange: (value: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">) => void;
43
- onTracksScrollerClientRectChange: (value: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">) => void;
44
- }>;
45
- export declare const usePianoRollContext: () => {
46
- showAllTracks?: boolean;
47
- showTrackList?: boolean;
48
- } & {
49
- ppq: number;
50
- mode: "keys" | "tracks";
51
- position: number;
52
- zoom: number;
53
- verticalZoom: number;
54
- verticalPosition: number;
55
- verticalTrackZoom: number;
56
- verticalTrackPosition: number;
57
- gridDivision: import("./PianoRoll").GridDivision;
58
- snapToGrid: boolean;
59
- duration: number;
60
- tracks: import("./types").Track[];
61
- selectedTrackIndex: number;
62
- pressedKeys: Record<number, Record<number, boolean>>;
63
- notesScrollerClientRect: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">;
64
- tracksScrollerClientRect: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">;
65
- onNoteChange: (trackIndex: number, noteIndex: number, note: import("./types").Note) => void;
66
- onInsertNote: (trackIndex: number, note: import("./types").Note) => number;
67
- onRemoveNote: (trackIndex: number, noteIndex: number) => void;
68
- onNoteDown: (trackIndex: number, keyNumber: number) => void;
69
- onNoteUp: (trackIndex: number, keyNumber: number) => void;
70
- isKeyDown: (trackIndex: number, keyNumber: number) => boolean;
71
- onPpqChange: (value: number) => void;
72
- onModeChange: (value: "keys" | "tracks") => void;
73
- onPositionChange: (value: number) => void;
74
- onZoomChange: (value: number) => void;
75
- onVerticalZoomChange: (value: number) => void;
76
- onVerticalPositionChange: (value: number) => void;
77
- onVerticalTrackZoomChange: (value: number) => void;
78
- onVerticalTrackPositionChange: (value: number) => void;
79
- onGridDivisionChange: (value: import("./PianoRoll").GridDivision) => void;
80
- onSnapToGridChange: (value: boolean) => void;
81
- onDurationChange: (value: number) => void;
82
- onTracksChange: (value: import("./types").Track[]) => void;
83
- onSelectedTrackIndexChange: (value: number) => void;
84
- onPressedKeysChange: (value: Record<number, Record<number, boolean>>) => void;
85
- onNotesScrollerClientRectChange: (value: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">) => void;
86
- onTracksScrollerClientRectChange: (value: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">) => void;
87
- };
88
- export declare const splitContextProps: (allProps: PianoRollProps) => [Pick<PianoRollProps, "onDurationChange" | keyof {
89
- ppq: number;
90
- mode: "keys" | "tracks";
91
- position: number;
92
- zoom: number;
93
- verticalZoom: number;
94
- verticalPosition: number;
95
- verticalTrackZoom: number;
96
- verticalTrackPosition: number;
97
- gridDivision: import("./PianoRoll").GridDivision;
98
- snapToGrid: boolean;
99
- duration: number;
100
- tracks: import("./types").Track[];
101
- selectedTrackIndex: number;
102
- pressedKeys: Record<number, Record<number, boolean>>;
103
- notesScrollerClientRect: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">;
104
- tracksScrollerClientRect: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">;
105
- } | "onPpqChange" | "onModeChange" | "onPositionChange" | "onZoomChange" | "onVerticalZoomChange" | "onVerticalPositionChange" | "onVerticalTrackZoomChange" | "onVerticalTrackPositionChange" | "onGridDivisionChange" | "onSnapToGridChange" | "onTracksChange" | "onSelectedTrackIndexChange" | "onPressedKeysChange" | "onNotesScrollerClientRectChange" | "onTracksScrollerClientRectChange" | "onNoteChange" | "onInsertNote" | "onRemoveNote" | "onNoteDown" | "onNoteUp" | "isKeyDown" | "showAllTracks" | "showTrackList">, Omit<PianoRollProps, "onDurationChange" | keyof {
106
- ppq: number;
107
- mode: "keys" | "tracks";
108
- position: number;
109
- zoom: number;
110
- verticalZoom: number;
111
- verticalPosition: number;
112
- verticalTrackZoom: number;
113
- verticalTrackPosition: number;
114
- gridDivision: import("./PianoRoll").GridDivision;
115
- snapToGrid: boolean;
116
- duration: number;
117
- tracks: import("./types").Track[];
118
- selectedTrackIndex: number;
119
- pressedKeys: Record<number, Record<number, boolean>>;
120
- notesScrollerClientRect: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">;
121
- tracksScrollerClientRect: Pick<import("./useBoundingClientRect").ClientRect, "height" | "width" | "left" | "top">;
122
- } | "onPpqChange" | "onModeChange" | "onPositionChange" | "onZoomChange" | "onVerticalZoomChange" | "onVerticalPositionChange" | "onVerticalTrackZoomChange" | "onVerticalTrackPositionChange" | "onGridDivisionChange" | "onSnapToGridChange" | "onTracksChange" | "onSelectedTrackIndexChange" | "onPressedKeysChange" | "onNotesScrollerClientRectChange" | "onTracksScrollerClientRectChange" | "onNoteChange" | "onInsertNote" | "onRemoveNote" | "onNoteDown" | "onNoteUp" | "isKeyDown" | "showAllTracks" | "showTrackList">];
@@ -1,2 +0,0 @@
1
- declare const PianoRollGrid: () => import("solid-js").JSX.Element;
2
- export default PianoRollGrid;
@@ -1,9 +0,0 @@
1
- declare const PianoRollKeys: () => import("solid-js").JSX.Element;
2
- export declare const blackKeys: number[];
3
- export declare const keyNames: string[];
4
- export declare const keys: {
5
- number: number;
6
- name: string;
7
- isBlack: boolean;
8
- }[];
9
- export default PianoRollKeys;
@@ -1,5 +0,0 @@
1
- import { Ref } from "solid-js";
2
- declare const PianoRollNotes: (props: {
3
- ref?: Ref<HTMLDivElement | undefined>;
4
- }) => import("solid-js").JSX.Element;
5
- export default PianoRollNotes;
@@ -1,3 +0,0 @@
1
- import { ParentProps } from "solid-js";
2
- declare const PianoRollNotesScroller: (props: ParentProps) => import("solid-js").JSX.Element;
3
- export default PianoRollNotesScroller;
@@ -1,2 +0,0 @@
1
- declare const PianoRollScale: () => import("solid-js").JSX.Element;
2
- export default PianoRollScale;
@@ -1,3 +0,0 @@
1
- import { ParentProps } from "solid-js";
2
- declare const PianoRollScrollZoomViewPort: (props: ParentProps) => import("solid-js").JSX.Element;
3
- export default PianoRollScrollZoomViewPort;
@@ -1,2 +0,0 @@
1
- declare const PianoRollTrackList: () => import("solid-js").JSX.Element;
2
- export default PianoRollTrackList;
@@ -1,3 +0,0 @@
1
- import { ParentProps } from "solid-js";
2
- declare const PianoRollTrackListScroller: (props: ParentProps) => import("solid-js").JSX.Element;
3
- export default PianoRollTrackListScroller;
@@ -1,5 +0,0 @@
1
- import PianoRoll from "./PianoRoll";
2
- import PlayHead from "./viewport/PlayHead";
3
- import useNotes from "./useNotes";
4
- import createPianoRollstate from "./usePianoRollState";
5
- export { PianoRoll, createPianoRollstate, useNotes, PlayHead };
@@ -1,6 +0,0 @@
1
- import { Midi } from "@tonejs/midi";
2
- export type Note = Pick<ReturnType<Midi["tracks"][number]["notes"][number]["toJSON"]>, "durationTicks" | "midi" | "ticks" | "velocity">;
3
- export type Track = {
4
- name: string;
5
- notes: Note[];
6
- };
@@ -1,3 +0,0 @@
1
- import { Accessor } from "solid-js";
2
- export type ClientRect = Omit<DOMRect, "toJSON">;
3
- export default function useBoundingClientRect(containerRef: Accessor<HTMLElement | undefined>): Accessor<ClientRect>;
@@ -1,9 +0,0 @@
1
- import { Note } from "./types";
2
- declare const useNotes: () => {
3
- notes: import("solid-js").Accessor<Note[]>;
4
- onNotesChange: import("solid-js").Setter<Note[]>;
5
- onNoteChange: (index: number, note: Note) => void;
6
- onInsertNote: (note: Note) => number;
7
- onRemoveNote: (index: number) => void;
8
- };
9
- export default useNotes;
@@ -1,13 +0,0 @@
1
- declare const usePianoRollGrid: () => import("solid-js").Accessor<{
2
- index: number;
3
- ticks: number;
4
- isHighlighted: boolean;
5
- hasHighlightedBorder: boolean;
6
- showLabel: boolean;
7
- virtualDimensions: {
8
- offset: number;
9
- size: number;
10
- };
11
- label: string;
12
- }[]>;
13
- export default usePianoRollGrid;
@@ -1,63 +0,0 @@
1
- import { GridDivision } from "./PianoRoll";
2
- import { Note, Track } from "./types";
3
- import { ClientRect } from "./useBoundingClientRect";
4
- type PianoRollState = {
5
- ppq: number;
6
- mode: "keys" | "tracks";
7
- position: number;
8
- zoom: number;
9
- verticalZoom: number;
10
- verticalPosition: number;
11
- verticalTrackZoom: number;
12
- verticalTrackPosition: number;
13
- gridDivision: GridDivision;
14
- snapToGrid: boolean;
15
- duration: number;
16
- tracks: Track[];
17
- selectedTrackIndex: number;
18
- pressedKeys: Record<number, Record<number, boolean>>;
19
- notesScrollerClientRect: Pick<ClientRect, "left" | "width" | "top" | "height">;
20
- tracksScrollerClientRect: Pick<ClientRect, "left" | "width" | "top" | "height">;
21
- };
22
- export declare const pianoRollStatePropNames: ("onDurationChange" | keyof PianoRollState | "onPpqChange" | "onModeChange" | "onPositionChange" | "onZoomChange" | "onVerticalZoomChange" | "onVerticalPositionChange" | "onVerticalTrackZoomChange" | "onVerticalTrackPositionChange" | "onGridDivisionChange" | "onSnapToGridChange" | "onTracksChange" | "onSelectedTrackIndexChange" | "onPressedKeysChange" | "onNotesScrollerClientRectChange" | "onTracksScrollerClientRectChange" | "onNoteChange" | "onInsertNote" | "onRemoveNote" | "onNoteDown" | "onNoteUp" | "isKeyDown")[];
23
- declare const createPianoRollstate: (initialState?: Partial<PianoRollState>) => {
24
- ppq: number;
25
- mode: "keys" | "tracks";
26
- position: number;
27
- zoom: number;
28
- verticalZoom: number;
29
- verticalPosition: number;
30
- verticalTrackZoom: number;
31
- verticalTrackPosition: number;
32
- gridDivision: GridDivision;
33
- snapToGrid: boolean;
34
- duration: number;
35
- tracks: Track[];
36
- selectedTrackIndex: number;
37
- pressedKeys: Record<number, Record<number, boolean>>;
38
- notesScrollerClientRect: Pick<ClientRect, "left" | "width" | "top" | "height">;
39
- tracksScrollerClientRect: Pick<ClientRect, "left" | "width" | "top" | "height">;
40
- onNoteChange: (trackIndex: number, noteIndex: number, note: Note) => void;
41
- onInsertNote: (trackIndex: number, note: Note) => number;
42
- onRemoveNote: (trackIndex: number, noteIndex: number) => void;
43
- onNoteDown: (trackIndex: number, keyNumber: number) => void;
44
- onNoteUp: (trackIndex: number, keyNumber: number) => void;
45
- isKeyDown: (trackIndex: number, keyNumber: number) => boolean;
46
- onPpqChange: (value: number) => void;
47
- onModeChange: (value: "keys" | "tracks") => void;
48
- onPositionChange: (value: number) => void;
49
- onZoomChange: (value: number) => void;
50
- onVerticalZoomChange: (value: number) => void;
51
- onVerticalPositionChange: (value: number) => void;
52
- onVerticalTrackZoomChange: (value: number) => void;
53
- onVerticalTrackPositionChange: (value: number) => void;
54
- onGridDivisionChange: (value: GridDivision) => void;
55
- onSnapToGridChange: (value: boolean) => void;
56
- onDurationChange: (value: number) => void;
57
- onTracksChange: (value: Track[]) => void;
58
- onSelectedTrackIndexChange: (value: number) => void;
59
- onPressedKeysChange: (value: Record<number, Record<number, boolean>>) => void;
60
- onNotesScrollerClientRectChange: (value: Pick<ClientRect, "height" | "width" | "left" | "top">) => void;
61
- onTracksScrollerClientRectChange: (value: Pick<ClientRect, "height" | "width" | "left" | "top">) => void;
62
- };
63
- export default createPianoRollstate;
@@ -1,8 +0,0 @@
1
- import { JSX } from "solid-js";
2
- declare const PlayHead: (allProps: {
3
- position: number;
4
- onPositionChange?: (playHeadPosition: number) => void;
5
- sync?: boolean;
6
- dimensionName?: string;
7
- } & JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
8
- export default PlayHead;
@@ -1,8 +0,0 @@
1
- import { JSX, ParentProps, Ref } from "solid-js";
2
- declare const ScrollZoomContainer: (props: ParentProps<{
3
- ref?: Ref<HTMLDivElement>;
4
- verticalDimensionName?: string;
5
- horizontalDimensionName?: string;
6
- showScrollbar?: boolean;
7
- } & JSX.IntrinsicElements["div"]>) => JSX.Element;
8
- export default ScrollZoomContainer;
@@ -1,39 +0,0 @@
1
- import { ParentProps } from "solid-js";
2
- import { ViewPortDimensionName, ViewPortDimensionState } from "./createViewPortDimension";
3
- declare const defaultViewPortProps: {
4
- pixelOffset: number;
5
- position: number;
6
- range: number;
7
- zoom: number;
8
- minZoom: number;
9
- maxZoom: number;
10
- };
11
- export declare const ScrollZoomViewPort: (props: ParentProps<{
12
- dimensions: Record<ViewPortDimensionName, () => Omit<ViewPortDimensionState, "name" | keyof typeof defaultViewPortProps> & Partial<Pick<ViewPortDimensionState, keyof typeof defaultViewPortProps>>>;
13
- }>) => import("solid-js").JSX.Element;
14
- export declare const useViewPortDimension: (name: ViewPortDimensionName) => {
15
- onZoomChange: (zoom: number) => void;
16
- onPositionChange: (position: number) => void;
17
- calculatePixelOffset: (position: number) => number;
18
- calculatePixelValue: (position?: number) => number;
19
- calculatePosition: (offset: number) => number;
20
- calculatePixelDimensions: (position: number, length: number) => {
21
- offset: number;
22
- size: number;
23
- };
24
- calculateVisibleRange: () => number;
25
- calculateMaxPosition: () => number;
26
- isVisible: ({ offset, size }: {
27
- offset: number;
28
- size: number;
29
- }) => boolean;
30
- position: number;
31
- range: number;
32
- pixelOffset: number;
33
- pixelSize: number;
34
- name: string;
35
- zoom: number;
36
- minZoom: number;
37
- maxZoom: number;
38
- };
39
- export {};
@@ -1,6 +0,0 @@
1
- import { JSX } from "solid-js/jsx-runtime";
2
- declare const ZoomSliderControl: (props: {
3
- dimensionName?: string;
4
- orientation?: "horizontal" | "vertical";
5
- } & JSX.IntrinsicElements["input"]) => JSX.Element;
6
- export default ZoomSliderControl;
@@ -1,40 +0,0 @@
1
- export type ViewPortDimension = ReturnType<typeof createViewPortDimension>;
2
- export type ViewPortDimensionName = string;
3
- export type ViewPortDimensionState = {
4
- position: number;
5
- range: number;
6
- pixelOffset: number;
7
- pixelSize: number;
8
- name: ViewPortDimensionName;
9
- onZoomChange?: (zoom: number) => void;
10
- onPositionChange?: (zoom: number) => void;
11
- zoom: number;
12
- minZoom: number;
13
- maxZoom: number;
14
- };
15
- export default function createViewPortDimension(getState: () => ViewPortDimensionState): {
16
- onZoomChange: (zoom: number) => void;
17
- onPositionChange: (position: number) => void;
18
- calculatePixelOffset: (position: number) => number;
19
- calculatePixelValue: (position?: number) => number;
20
- calculatePosition: (offset: number) => number;
21
- calculatePixelDimensions: (position: number, length: number) => {
22
- offset: number;
23
- size: number;
24
- };
25
- calculateVisibleRange: () => number;
26
- calculateMaxPosition: () => number;
27
- isVisible: ({ offset, size }: {
28
- offset: number;
29
- size: number;
30
- }) => boolean;
31
- position: number;
32
- range: number;
33
- pixelOffset: number;
34
- pixelSize: number;
35
- name: string;
36
- zoom: number;
37
- minZoom: number;
38
- maxZoom: number;
39
- };
40
- export declare const clamp: (value: number, min: number, max: number) => number;