solid-pianoroll 0.0.27 → 0.0.29
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/dev.cjs +295 -323
- package/dist/dev.js +297 -325
- package/dist/dev.jsx +181 -199
- package/dist/index.cjs +294 -322
- package/dist/index.js +297 -325
- package/dist/index.jsx +181 -199
- package/package.json +5 -2
package/dist/dev.cjs
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
var web = require('solid-js/web');
|
|
4
4
|
var solidJs = require('solid-js');
|
|
5
5
|
var store = require('solid-js/store');
|
|
6
|
+
var solidViewport = require('solid-viewport');
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
|
+
// src/PianoRoll.tsx
|
|
9
9
|
|
|
10
|
-
// esbuild-css-modules-plugin-namespace:/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-
|
|
11
|
-
var digest = "
|
|
10
|
+
// esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-s3EaGM8kmrC8/solid-pianoroll/src/PianoRoll.module.css.js
|
|
11
|
+
var digest = "4c2b012b69d9a9d56b2ed407a7df42a743722df5ccdacb8b19182ce1656beca4";
|
|
12
12
|
var css = `._PianoRoll_1v1e7_1 {
|
|
13
13
|
box-sizing: border-box;
|
|
14
14
|
display: flex;
|
|
@@ -56,7 +56,7 @@ var css = `._PianoRoll_1v1e7_1 {
|
|
|
56
56
|
document.head.appendChild(el);
|
|
57
57
|
}
|
|
58
58
|
})();
|
|
59
|
-
var PianoRoll_module_css_default = { "pianoRoll": "_PianoRoll_1v1e7_1", "pianoRollContainer": "_PianoRollContainer_1v1e7_10", "pianoRollLeftColumn": "_PianoRollLeftColumn_1v1e7_17", "showTrackList": "_showTrackList_1v1e7_24", "pianoRollRightColumn": "_PianoRollRightColumn_1v1e7_29" };
|
|
59
|
+
var PianoRoll_module_css_default = { "PianoRoll": "_PianoRoll_1v1e7_1", "pianoRoll": "_PianoRoll_1v1e7_1", "PianoRollContainer": "_PianoRollContainer_1v1e7_10", "pianoRollContainer": "_PianoRollContainer_1v1e7_10", "PianoRollLeftColumn": "_PianoRollLeftColumn_1v1e7_17", "pianoRollLeftColumn": "_PianoRollLeftColumn_1v1e7_17", "showTrackList": "_showTrackList_1v1e7_24", "PianoRollRightColumn": "_PianoRollRightColumn_1v1e7_29", "pianoRollRightColumn": "_PianoRollRightColumn_1v1e7_29" };
|
|
60
60
|
var defaultState = {
|
|
61
61
|
ppq: 0,
|
|
62
62
|
mode: "keys",
|
|
@@ -76,7 +76,7 @@ var defaultState = {
|
|
|
76
76
|
notesScrollerClientRect: { left: 0, width: 0, top: 0, height: 0 },
|
|
77
77
|
tracksScrollerClientRect: { left: 0, width: 0, top: 0, height: 0 }
|
|
78
78
|
};
|
|
79
|
-
var propNameToHandlerName =
|
|
79
|
+
var propNameToHandlerName = (name) => `on${name[0]?.toUpperCase()}${name.slice(1)}Change`;
|
|
80
80
|
var pianoRollStatePropNames = [
|
|
81
81
|
...Object.keys(defaultState),
|
|
82
82
|
...Object.keys(defaultState).map(propNameToHandlerName),
|
|
@@ -88,7 +88,7 @@ var pianoRollStatePropNames = [
|
|
|
88
88
|
"isKeyDown",
|
|
89
89
|
"snapValueToGridIfEnabled"
|
|
90
90
|
];
|
|
91
|
-
var createPianoRollstate =
|
|
91
|
+
var createPianoRollstate = (initialState) => {
|
|
92
92
|
const [state, setState] = store.createStore({
|
|
93
93
|
...defaultState,
|
|
94
94
|
...initialState
|
|
@@ -108,12 +108,12 @@ var createPianoRollstate = /* @__PURE__ */ __name((initialState) => {
|
|
|
108
108
|
];
|
|
109
109
|
})
|
|
110
110
|
);
|
|
111
|
-
const onPlayheadPositionChange =
|
|
111
|
+
const onPlayheadPositionChange = (playheadPosition, originalEvent) => {
|
|
112
112
|
handlers.onPlayHeadPositionChange(
|
|
113
113
|
snapValueToGridIfEnabled(playheadPosition, !!originalEvent?.altKey)
|
|
114
114
|
);
|
|
115
|
-
}
|
|
116
|
-
const updateNotes =
|
|
115
|
+
};
|
|
116
|
+
const updateNotes = async (trackIndex, getNotes) => {
|
|
117
117
|
const track = state.tracks[trackIndex];
|
|
118
118
|
if (!track)
|
|
119
119
|
return;
|
|
@@ -123,15 +123,15 @@ var createPianoRollstate = /* @__PURE__ */ __name((initialState) => {
|
|
|
123
123
|
{ ...track, notes: getNotes(notes) },
|
|
124
124
|
...state.tracks.slice(trackIndex + 1)
|
|
125
125
|
]);
|
|
126
|
-
}
|
|
127
|
-
const onNoteChange =
|
|
126
|
+
};
|
|
127
|
+
const onNoteChange = (trackIndex, noteIndex, note) => {
|
|
128
128
|
updateNotes(trackIndex, (notes) => [
|
|
129
129
|
...notes.slice(0, noteIndex),
|
|
130
130
|
note,
|
|
131
131
|
...notes.slice(noteIndex + 1)
|
|
132
132
|
]);
|
|
133
|
-
}
|
|
134
|
-
const onInsertNote =
|
|
133
|
+
};
|
|
134
|
+
const onInsertNote = (trackIndex, note) => {
|
|
135
135
|
const track = state.tracks[trackIndex];
|
|
136
136
|
if (!track)
|
|
137
137
|
return -1;
|
|
@@ -146,14 +146,14 @@ var createPianoRollstate = /* @__PURE__ */ __name((initialState) => {
|
|
|
146
146
|
...notes2.slice(newNoteIndex)
|
|
147
147
|
]);
|
|
148
148
|
return newNoteIndex;
|
|
149
|
-
}
|
|
150
|
-
const onRemoveNote =
|
|
149
|
+
};
|
|
150
|
+
const onRemoveNote = (trackIndex, noteIndex) => {
|
|
151
151
|
updateNotes(trackIndex, (notes) => [
|
|
152
152
|
...notes.slice(0, noteIndex),
|
|
153
153
|
...notes.slice(noteIndex + 1)
|
|
154
154
|
]);
|
|
155
|
-
}
|
|
156
|
-
const updateKeyPressedState =
|
|
155
|
+
};
|
|
156
|
+
const updateKeyPressedState = (trackIndex, keyNumber, value) => {
|
|
157
157
|
handlers.onPressedKeysChange?.({
|
|
158
158
|
...state.pressedKeys,
|
|
159
159
|
[trackIndex]: {
|
|
@@ -161,18 +161,18 @@ var createPianoRollstate = /* @__PURE__ */ __name((initialState) => {
|
|
|
161
161
|
[keyNumber]: value
|
|
162
162
|
}
|
|
163
163
|
});
|
|
164
|
-
}
|
|
165
|
-
const onNoteDown =
|
|
164
|
+
};
|
|
165
|
+
const onNoteDown = (trackIndex, keyNumber) => {
|
|
166
166
|
updateKeyPressedState(trackIndex, keyNumber, true);
|
|
167
|
-
}
|
|
168
|
-
const onNoteUp =
|
|
167
|
+
};
|
|
168
|
+
const onNoteUp = (trackIndex, keyNumber) => {
|
|
169
169
|
updateKeyPressedState(trackIndex, keyNumber, false);
|
|
170
|
-
}
|
|
171
|
-
const isKeyDown =
|
|
172
|
-
const snapValueToGridIfEnabled =
|
|
170
|
+
};
|
|
171
|
+
const isKeyDown = (trackIndex, keyNumber) => !!state.pressedKeys[trackIndex]?.[keyNumber];
|
|
172
|
+
const snapValueToGridIfEnabled = (value, altKey) => {
|
|
173
173
|
const gridDivisionTicks = state.ppq * 4 / state.gridDivision;
|
|
174
174
|
return state.snapToGrid && !altKey ? Math.round(value / gridDivisionTicks) * gridDivisionTicks : value;
|
|
175
|
-
}
|
|
175
|
+
};
|
|
176
176
|
return solidJs.mergeProps(state, {
|
|
177
177
|
...handlers,
|
|
178
178
|
onNoteChange,
|
|
@@ -184,22 +184,22 @@ var createPianoRollstate = /* @__PURE__ */ __name((initialState) => {
|
|
|
184
184
|
snapValueToGridIfEnabled,
|
|
185
185
|
onPlayheadPositionChange
|
|
186
186
|
});
|
|
187
|
-
}
|
|
187
|
+
};
|
|
188
188
|
exports.createPianoRollstate = createPianoRollstate;
|
|
189
189
|
|
|
190
190
|
// src/PianoRollContext.tsx
|
|
191
191
|
var PianoRollContext = solidJs.createContext();
|
|
192
192
|
var PianoRollContextProvider = PianoRollContext.Provider;
|
|
193
|
-
var usePianoRollContext =
|
|
193
|
+
var usePianoRollContext = () => {
|
|
194
194
|
const context = solidJs.useContext(PianoRollContext);
|
|
195
195
|
if (!context)
|
|
196
196
|
throw new Error("No PianoRollContext found");
|
|
197
197
|
return context;
|
|
198
|
-
}
|
|
199
|
-
var splitContextProps =
|
|
198
|
+
};
|
|
199
|
+
var splitContextProps = (allProps) => solidJs.splitProps(allProps, [...pianoRollStatePropNames, "showAllTracks", "showTrackList"]);
|
|
200
200
|
|
|
201
|
-
// esbuild-css-modules-plugin-namespace:/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-
|
|
202
|
-
var digest2 = "
|
|
201
|
+
// esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-QHhwuVzsA5eM/solid-pianoroll/src/PianoRollKeys.module.css.js
|
|
202
|
+
var digest2 = "655c9a4be622ec365983cf13073531f7560f268053424caa6297da081b5a6da8";
|
|
203
203
|
var css2 = `._PianoRollKeys_1ne9i_1 {
|
|
204
204
|
position: relative;
|
|
205
205
|
height: 100%;
|
|
@@ -262,64 +262,60 @@ var css2 = `._PianoRollKeys_1ne9i_1 {
|
|
|
262
262
|
document.head.appendChild(el);
|
|
263
263
|
}
|
|
264
264
|
})();
|
|
265
|
-
var PianoRollKeys_module_css_default = { "pianoRollKeys": "_PianoRollKeys_1ne9i_1", "key": "_Key_1ne9i_14", "black": "_black_1ne9i_29", "white": "_white_1ne9i_38", "down": "_down_1ne9i_46" };
|
|
265
|
+
var PianoRollKeys_module_css_default = { "PianoRollKeys": "_PianoRollKeys_1ne9i_1", "pianoRollKeys": "_PianoRollKeys_1ne9i_1", "Key": "_Key_1ne9i_14", "key": "_Key_1ne9i_14", "black": "_black_1ne9i_29", "white": "_white_1ne9i_38", "down": "_down_1ne9i_46" };
|
|
266
266
|
function createViewPortDimension(getState) {
|
|
267
|
-
const
|
|
268
|
-
const
|
|
269
|
-
const onZoomChange = /* @__PURE__ */ __name((zoom) => state2.onZoomChange?.(clamp(zoom, state2.minZoom, state2.maxZoom)), "onZoomChange");
|
|
270
|
-
const onPositionChange = /* @__PURE__ */ __name((position) => state2.onPositionChange?.(position), "onPositionChange");
|
|
267
|
+
const axis = solidViewport.createViewPortAxis(() => {
|
|
268
|
+
const s = getState();
|
|
271
269
|
return {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
270
|
+
name: s.name,
|
|
271
|
+
position: s.position,
|
|
272
|
+
range: s.range,
|
|
273
|
+
pixelOffset: s.pixelOffset,
|
|
274
|
+
pixelSize: s.pixelSize,
|
|
275
|
+
zoom: s.zoom,
|
|
276
|
+
minZoom: s.minZoom,
|
|
277
|
+
maxZoom: s.maxZoom,
|
|
278
|
+
onPositionChange: s.onPositionChange,
|
|
279
|
+
onZoomChange: s.onZoomChange
|
|
282
280
|
};
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
return state;
|
|
281
|
+
});
|
|
282
|
+
return {
|
|
283
|
+
get name() {
|
|
284
|
+
return axis.name;
|
|
285
|
+
},
|
|
286
|
+
get position() {
|
|
287
|
+
return axis.position;
|
|
288
|
+
},
|
|
289
|
+
get range() {
|
|
290
|
+
return axis.range;
|
|
291
|
+
},
|
|
292
|
+
get pixelOffset() {
|
|
293
|
+
return axis.pixelOffset;
|
|
294
|
+
},
|
|
295
|
+
get pixelSize() {
|
|
296
|
+
return axis.pixelSize;
|
|
297
|
+
},
|
|
298
|
+
get zoom() {
|
|
299
|
+
return axis.zoom;
|
|
300
|
+
},
|
|
301
|
+
get minZoom() {
|
|
302
|
+
return axis.minZoom;
|
|
303
|
+
},
|
|
304
|
+
get maxZoom() {
|
|
305
|
+
return axis.maxZoom;
|
|
306
|
+
},
|
|
307
|
+
onPositionChange: (position) => axis.onPositionChange?.(position),
|
|
308
|
+
onZoomChange: (zoom) => axis.onZoomChange?.(zoom),
|
|
309
|
+
calculatePixelValue: (position) => axis.toPixels(position),
|
|
310
|
+
calculatePixelOffset: (position) => axis.toPixelOffset(position),
|
|
311
|
+
calculatePosition: (offset) => axis.toPosition(offset),
|
|
312
|
+
calculatePixelDimensions: (position, length) => axis.dimensions(position, length),
|
|
313
|
+
calculateVisibleRange: () => axis.visibleRange(),
|
|
314
|
+
calculateMaxPosition: () => axis.maxPosition(),
|
|
315
|
+
isVisible: (dimensions) => axis.isVisible(dimensions)
|
|
316
|
+
};
|
|
320
317
|
}
|
|
321
|
-
|
|
322
|
-
var clamp = /* @__PURE__ */ __name((value, min, max) => Math.max(min, Math.min(max, value)), "clamp");
|
|
318
|
+
var clamp = (value, min, max) => Math.max(min, Math.min(max, value));
|
|
323
319
|
|
|
324
320
|
// src/viewport/ScrollZoomViewPort.tsx
|
|
325
321
|
var defaultViewPortProps = {
|
|
@@ -330,7 +326,7 @@ var defaultViewPortProps = {
|
|
|
330
326
|
minZoom: 1,
|
|
331
327
|
maxZoom: Infinity
|
|
332
328
|
};
|
|
333
|
-
var ScrollZoomViewPort =
|
|
329
|
+
var ScrollZoomViewPort = (props) => {
|
|
334
330
|
const viewPorts = Object.entries(props.dimensions).map(([name, viewPortProps]) => createViewPortDimension(() => ({
|
|
335
331
|
name,
|
|
336
332
|
...defaultViewPortProps,
|
|
@@ -345,18 +341,18 @@ var ScrollZoomViewPort = /* @__PURE__ */ __name((props) => {
|
|
|
345
341
|
return props.children;
|
|
346
342
|
}
|
|
347
343
|
});
|
|
348
|
-
}
|
|
344
|
+
};
|
|
349
345
|
var ScrollZoomViewPortContext = solidJs.createContext([]);
|
|
350
|
-
var useViewPortDimension =
|
|
346
|
+
var useViewPortDimension = (name) => {
|
|
351
347
|
const viewPorts = solidJs.useContext(ScrollZoomViewPortContext);
|
|
352
348
|
const viewPort = name ? viewPorts.find((viewPort2) => viewPort2.name === name) : viewPorts[viewPorts.length - 1];
|
|
353
349
|
if (!viewPort)
|
|
354
350
|
throw new Error(`ViewPort dimension "${name}" not found.`);
|
|
355
351
|
return viewPort;
|
|
356
|
-
}
|
|
352
|
+
};
|
|
357
353
|
|
|
358
|
-
// esbuild-css-modules-plugin-namespace:/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-
|
|
359
|
-
var digest3 = "
|
|
354
|
+
// esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-Vy2i5NPJLk6j/solid-pianoroll/src/viewport/ScrollZoomContainer.module.css.js
|
|
355
|
+
var digest3 = "e0ac7449a918804762170aa6571b135af8e3854b1c098de2d57d8c41d73b721c";
|
|
360
356
|
var css3 = `._ScrollZoomContainer_f395r_1 {
|
|
361
357
|
height: 100%;
|
|
362
358
|
width: 100%;
|
|
@@ -374,11 +370,11 @@ var css3 = `._ScrollZoomContainer_f395r_1 {
|
|
|
374
370
|
document.head.appendChild(el);
|
|
375
371
|
}
|
|
376
372
|
})();
|
|
377
|
-
var ScrollZoomContainer_module_css_default = { "scrollZoomContainer": "_ScrollZoomContainer_f395r_1" };
|
|
373
|
+
var ScrollZoomContainer_module_css_default = { "ScrollZoomContainer": "_ScrollZoomContainer_f395r_1", "scrollZoomContainer": "_ScrollZoomContainer_f395r_1" };
|
|
378
374
|
|
|
379
375
|
// src/viewport/ScrollZoomContainer.tsx
|
|
380
|
-
var _tmpl$ = /* @__PURE__ */ web.template(`<div><div><div><div
|
|
381
|
-
var ScrollZoomContainer =
|
|
376
|
+
var _tmpl$ = /* @__PURE__ */ web.template(`<div><div><div style=top:0;left:0;position:sticky;display:flex><div style=position:relative>`);
|
|
377
|
+
var ScrollZoomContainer = (props) => {
|
|
382
378
|
let scrollContentRef;
|
|
383
379
|
const [ownProps, divProps] = solidJs.splitProps(props, ["ref", "verticalDimensionName", "horizontalDimensionName", "showScrollbar"]);
|
|
384
380
|
const propsWithDefaults = solidJs.mergeProps({
|
|
@@ -388,8 +384,7 @@ var ScrollZoomContainer = /* @__PURE__ */ __name((props) => {
|
|
|
388
384
|
}, ownProps);
|
|
389
385
|
const verticalViewPort = solidJs.createMemo(() => useViewPortDimension(propsWithDefaults.verticalDimensionName));
|
|
390
386
|
const horizontalViewPort = solidJs.createMemo(() => useViewPortDimension(propsWithDefaults.horizontalDimensionName));
|
|
391
|
-
const handleScroll =
|
|
392
|
-
event.preventDefault();
|
|
387
|
+
const handleScroll = (event) => {
|
|
393
388
|
if (didUpdateScroll) {
|
|
394
389
|
didUpdateScroll = false;
|
|
395
390
|
return;
|
|
@@ -408,25 +403,26 @@ var ScrollZoomContainer = /* @__PURE__ */ __name((props) => {
|
|
|
408
403
|
const scrollLeftAmount = scrollLeft / (scrollWidth - width);
|
|
409
404
|
verticalViewPort().onPositionChange?.(maxVerticalPosition * scrollTopAmount);
|
|
410
405
|
horizontalViewPort().onPositionChange?.(maxPosition * scrollLeftAmount);
|
|
411
|
-
}
|
|
412
|
-
const handleWheel =
|
|
406
|
+
};
|
|
407
|
+
const handleWheel = (event) => {
|
|
413
408
|
if (event.altKey) {
|
|
414
409
|
event.preventDefault();
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
410
|
+
const horizontal = Math.abs(event.deltaX) > Math.abs(event.deltaY);
|
|
411
|
+
const viewPort = horizontal ? horizontalViewPort() : verticalViewPort();
|
|
412
|
+
const delta = horizontal ? event.deltaX : event.deltaY;
|
|
413
|
+
const pointer = horizontal ? event.clientX : event.clientY;
|
|
414
|
+
const valueAtPointer = viewPort.calculatePosition(pointer);
|
|
415
|
+
const newZoom = viewPort.zoom / (1 + delta / viewPort.pixelSize);
|
|
416
|
+
const newVisibleRange = viewPort.range / newZoom;
|
|
417
|
+
const fraction = (pointer - viewPort.pixelOffset) / viewPort.pixelSize;
|
|
418
|
+
viewPort.onZoomChange?.(newZoom);
|
|
419
|
+
viewPort.onPositionChange?.(valueAtPointer - fraction * newVisibleRange);
|
|
424
420
|
} else if (!props.showScrollbar) {
|
|
425
421
|
event.preventDefault();
|
|
426
422
|
event.currentTarget.scrollLeft += event.deltaX;
|
|
427
423
|
event.currentTarget.scrollTop += event.deltaY;
|
|
428
424
|
}
|
|
429
|
-
}
|
|
425
|
+
};
|
|
430
426
|
let didUpdateScroll = false;
|
|
431
427
|
solidJs.createEffect(() => {
|
|
432
428
|
const maxVerticalPosition = verticalViewPort().calculateMaxPosition();
|
|
@@ -450,10 +446,10 @@ var ScrollZoomContainer = /* @__PURE__ */ __name((props) => {
|
|
|
450
446
|
});
|
|
451
447
|
});
|
|
452
448
|
return (() => {
|
|
453
|
-
|
|
449
|
+
var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
|
|
454
450
|
_el$.addEventListener("wheel", handleWheel);
|
|
455
451
|
_el$.addEventListener("scroll", handleScroll);
|
|
456
|
-
|
|
452
|
+
var _ref$ = props.ref;
|
|
457
453
|
typeof _ref$ === "function" ? web.use(_ref$, _el$) : props.ref = _el$;
|
|
458
454
|
web.spread(_el$, web.mergeProps(divProps, {
|
|
459
455
|
get style() {
|
|
@@ -469,42 +465,37 @@ var ScrollZoomContainer = /* @__PURE__ */ __name((props) => {
|
|
|
469
465
|
};
|
|
470
466
|
}
|
|
471
467
|
}), false, true);
|
|
472
|
-
|
|
468
|
+
var _ref$2 = scrollContentRef;
|
|
473
469
|
typeof _ref$2 === "function" ? web.use(_ref$2, _el$2) : scrollContentRef = _el$2;
|
|
474
|
-
_el$3.style.setProperty("top", "0");
|
|
475
|
-
_el$3.style.setProperty("left", "0");
|
|
476
|
-
_el$3.style.setProperty("position", "sticky");
|
|
477
|
-
_el$3.style.setProperty("display", "flex");
|
|
478
|
-
_el$4.style.setProperty("position", "relative");
|
|
479
470
|
web.insert(_el$4, () => props.children);
|
|
480
471
|
web.effect((_p$) => {
|
|
481
|
-
|
|
482
|
-
_v$ !== _p$.
|
|
483
|
-
_v$2 !== _p$.
|
|
484
|
-
_v$3 !== _p$.
|
|
485
|
-
_v$4 !== _p$.
|
|
472
|
+
var _v$ = `${verticalViewPort().pixelSize}px`, _v$2 = `${horizontalViewPort().pixelSize}px`, _v$3 = `${verticalViewPort().pixelSize}px`, _v$4 = `${horizontalViewPort().pixelSize}px`;
|
|
473
|
+
_v$ !== _p$.e && web.setStyleProperty(_el$3, "height", _p$.e = _v$);
|
|
474
|
+
_v$2 !== _p$.t && web.setStyleProperty(_el$3, "width", _p$.t = _v$2);
|
|
475
|
+
_v$3 !== _p$.a && web.setStyleProperty(_el$4, "height", _p$.a = _v$3);
|
|
476
|
+
_v$4 !== _p$.o && web.setStyleProperty(_el$4, "width", _p$.o = _v$4);
|
|
486
477
|
return _p$;
|
|
487
478
|
}, {
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
479
|
+
e: void 0,
|
|
480
|
+
t: void 0,
|
|
481
|
+
a: void 0,
|
|
482
|
+
o: void 0
|
|
492
483
|
});
|
|
493
484
|
return _el$;
|
|
494
485
|
})();
|
|
495
|
-
}
|
|
486
|
+
};
|
|
496
487
|
var ScrollZoomContainer_default = ScrollZoomContainer;
|
|
497
488
|
|
|
498
489
|
// src/PianoRollKeys.tsx
|
|
499
|
-
var _tmpl$2 = /* @__PURE__ */ web.template(`<div
|
|
500
|
-
var PianoRollKeys =
|
|
490
|
+
var _tmpl$2 = /* @__PURE__ */ web.template(`<div>`);
|
|
491
|
+
var PianoRollKeys = () => {
|
|
501
492
|
const verticalViewPort = solidJs.createMemo(() => useViewPortDimension("vertical"));
|
|
502
493
|
const horizontalViewPort = solidJs.createMemo(() => useViewPortDimension("horizontalKeys"));
|
|
503
494
|
const [isMouseDown, setIsMouseDown] = solidJs.createSignal(false);
|
|
504
495
|
const context = usePianoRollContext();
|
|
505
|
-
const handleMouseUp =
|
|
496
|
+
const handleMouseUp = () => {
|
|
506
497
|
setIsMouseDown(false);
|
|
507
|
-
}
|
|
498
|
+
};
|
|
508
499
|
solidJs.createEffect(() => {
|
|
509
500
|
if (isMouseDown()) {
|
|
510
501
|
window.addEventListener("mouseup", handleMouseUp);
|
|
@@ -513,7 +504,7 @@ var PianoRollKeys = /* @__PURE__ */ __name(() => {
|
|
|
513
504
|
}
|
|
514
505
|
});
|
|
515
506
|
return (() => {
|
|
516
|
-
|
|
507
|
+
var _el$ = _tmpl$2();
|
|
517
508
|
web.insert(_el$, web.createComponent(ScrollZoomContainer_default, {
|
|
518
509
|
horizontalDimensionName: "horizontalKeys",
|
|
519
510
|
showScrollbar: false,
|
|
@@ -530,7 +521,7 @@ var PianoRollKeys = /* @__PURE__ */ __name(() => {
|
|
|
530
521
|
return verticalViewPort().isVisible(virtualDimensions());
|
|
531
522
|
},
|
|
532
523
|
get children() {
|
|
533
|
-
|
|
524
|
+
var _el$2 = _tmpl$2();
|
|
534
525
|
_el$2.addEventListener("mouseleave", () => {
|
|
535
526
|
if (isMouseDown()) {
|
|
536
527
|
context.onNoteUp(context.selectedTrackIndex, key().number);
|
|
@@ -549,26 +540,26 @@ var PianoRollKeys = /* @__PURE__ */ __name(() => {
|
|
|
549
540
|
context.onNoteDown(context.selectedTrackIndex, key().number);
|
|
550
541
|
};
|
|
551
542
|
web.effect((_p$) => {
|
|
552
|
-
|
|
543
|
+
var _v$3 = {
|
|
553
544
|
[PianoRollKeys_module_css_default["Key"]]: true,
|
|
554
545
|
[PianoRollKeys_module_css_default["black"]]: key().isBlack,
|
|
555
546
|
[PianoRollKeys_module_css_default["white"]]: !key().isBlack,
|
|
556
547
|
[PianoRollKeys_module_css_default["down"]]: isDown()
|
|
557
548
|
}, _v$4 = key().name, _v$5 = key().number % 12, _v$6 = `${virtualDimensions().offset - virtualDimensions().size * (!key().isBlack ? nextIsBlack ? 1 / 2 : 0 : 0)}px`, _v$7 = `${virtualDimensions().size + (!key().isBlack && nextIsBlack ? virtualDimensions().size / 2 : 0) + (!key().isBlack && previousIsBlack ? virtualDimensions().size / 2 : 0)}px`, _v$8 = `0px 0px ${Math.min(virtualDimensions().size / 20, 1)}px ${Math.min(virtualDimensions().size / 50, 1)}px rgba(0, 0, 0, 0.5) ${key().isBlack ? "" : "inset"}` + isDown() ? `0px 0px ${Math.min(virtualDimensions().size / 8, 2)}px ${Math.min(virtualDimensions().size / 20, 2)}px rgba(0, 0, 0, 0.5) inset` : "";
|
|
558
|
-
_p$.
|
|
559
|
-
_v$4 !== _p$.
|
|
560
|
-
_v$5 !== _p$.
|
|
561
|
-
_v$6 !== _p$.
|
|
562
|
-
_v$7 !== _p$.
|
|
563
|
-
_v$8 !== _p$.
|
|
549
|
+
_p$.e = web.classList(_el$2, _v$3, _p$.e);
|
|
550
|
+
_v$4 !== _p$.t && web.setAttribute(_el$2, "title", _p$.t = _v$4);
|
|
551
|
+
_v$5 !== _p$.a && web.setAttribute(_el$2, "data-index", _p$.a = _v$5);
|
|
552
|
+
_v$6 !== _p$.o && web.setStyleProperty(_el$2, "top", _p$.o = _v$6);
|
|
553
|
+
_v$7 !== _p$.i && web.setStyleProperty(_el$2, "height", _p$.i = _v$7);
|
|
554
|
+
_v$8 !== _p$.n && web.setStyleProperty(_el$2, "box-shadow", _p$.n = _v$8);
|
|
564
555
|
return _p$;
|
|
565
556
|
}, {
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
557
|
+
e: void 0,
|
|
558
|
+
t: void 0,
|
|
559
|
+
a: void 0,
|
|
560
|
+
o: void 0,
|
|
561
|
+
i: void 0,
|
|
562
|
+
n: void 0
|
|
572
563
|
});
|
|
573
564
|
return _el$2;
|
|
574
565
|
}
|
|
@@ -578,17 +569,17 @@ var PianoRollKeys = /* @__PURE__ */ __name(() => {
|
|
|
578
569
|
}
|
|
579
570
|
}));
|
|
580
571
|
web.effect((_p$) => {
|
|
581
|
-
|
|
582
|
-
_v$ !== _p$.
|
|
583
|
-
_v$2 !== _p$.
|
|
572
|
+
var _v$ = PianoRollKeys_module_css_default.PianoRollKeys, _v$2 = `${horizontalViewPort().pixelSize}px`;
|
|
573
|
+
_v$ !== _p$.e && web.className(_el$, _p$.e = _v$);
|
|
574
|
+
_v$2 !== _p$.t && web.setStyleProperty(_el$, "width", _p$.t = _v$2);
|
|
584
575
|
return _p$;
|
|
585
576
|
}, {
|
|
586
|
-
|
|
587
|
-
|
|
577
|
+
e: void 0,
|
|
578
|
+
t: void 0
|
|
588
579
|
});
|
|
589
580
|
return _el$;
|
|
590
581
|
})();
|
|
591
|
-
}
|
|
582
|
+
};
|
|
592
583
|
var blackKeys = [1, 3, 6, 8, 10];
|
|
593
584
|
var keyNames = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"];
|
|
594
585
|
var keys = Array.from({
|
|
@@ -601,8 +592,8 @@ var keys = Array.from({
|
|
|
601
592
|
var PianoRollKeys_default = PianoRollKeys;
|
|
602
593
|
web.delegateEvents(["mousedown", "mouseup"]);
|
|
603
594
|
|
|
604
|
-
// esbuild-css-modules-plugin-namespace:/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-
|
|
605
|
-
var digest4 = "
|
|
595
|
+
// esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-R3rIsMTusReO/solid-pianoroll/src/PianoRollNotes.module.css.js
|
|
596
|
+
var digest4 = "a8a19bfe58e3f6557481c4cde3a2a96269ffb1085b1b546dc004a1a0127b96c5";
|
|
606
597
|
var css4 = `._PianoRollNotes_u3pew_1 {
|
|
607
598
|
position: absolute;
|
|
608
599
|
flex: 1;
|
|
@@ -643,11 +634,11 @@ var css4 = `._PianoRollNotes_u3pew_1 {
|
|
|
643
634
|
document.head.appendChild(el);
|
|
644
635
|
}
|
|
645
636
|
})();
|
|
646
|
-
var PianoRollNotes_module_css_default = { "pianoRollNotes": "_PianoRollNotes_u3pew_1", "note": "_Note_u3pew_12", "trimStart": "_trimStart_u3pew_22", "trimEnd": "_trimEnd_u3pew_26" };
|
|
637
|
+
var PianoRollNotes_module_css_default = { "PianoRollNotes": "_PianoRollNotes_u3pew_1", "pianoRollNotes": "_PianoRollNotes_u3pew_1", "Note": "_Note_u3pew_12", "note": "_Note_u3pew_12", "trimStart": "_trimStart_u3pew_22", "trimEnd": "_trimEnd_u3pew_26" };
|
|
647
638
|
|
|
648
639
|
// src/PianoRollNotes.tsx
|
|
649
|
-
var _tmpl$3 = /* @__PURE__ */ web.template(`<div
|
|
650
|
-
var PianoRollNotes =
|
|
640
|
+
var _tmpl$3 = /* @__PURE__ */ web.template(`<div>`);
|
|
641
|
+
var PianoRollNotes = (props) => {
|
|
651
642
|
const context = usePianoRollContext();
|
|
652
643
|
const verticalViewPort = solidJs.createMemo(() => useViewPortDimension(context.mode === "keys" ? "vertical" : "verticalTracks"));
|
|
653
644
|
const horizontalViewPort = solidJs.createMemo(() => useViewPortDimension("horizontal"));
|
|
@@ -658,7 +649,7 @@ var PianoRollNotes = /* @__PURE__ */ __name((props) => {
|
|
|
658
649
|
const [currentNoteTrackIndex, setCurrentNoteTrackIndex] = solidJs.createSignal(-1);
|
|
659
650
|
const [diffPosition, setDiffPosition] = solidJs.createSignal(0);
|
|
660
651
|
const [getInitialNote, setInitialNote] = solidJs.createSignal();
|
|
661
|
-
const calculateNoteDragValues =
|
|
652
|
+
const calculateNoteDragValues = (event) => {
|
|
662
653
|
const targetTrackIndex = context.mode === "tracks" ? clamp(Math.floor(verticalViewPort().calculatePosition(event.clientY)), 0, context.tracks.length - 1) : currentNoteTrackIndex() > -1 ? currentNoteTrackIndex() : context.selectedTrackIndex;
|
|
663
654
|
const midi = context.mode === "keys" ? Math.floor(128 - verticalViewPort().calculatePosition(event.clientY)) : getInitialNote()?.midi ?? 60;
|
|
664
655
|
const horiontalPosition = horizontalViewPort().calculatePosition(event.clientX);
|
|
@@ -667,8 +658,8 @@ var PianoRollNotes = /* @__PURE__ */ __name((props) => {
|
|
|
667
658
|
midi,
|
|
668
659
|
horiontalPosition
|
|
669
660
|
};
|
|
670
|
-
}
|
|
671
|
-
const handleMouseMove =
|
|
661
|
+
};
|
|
662
|
+
const handleMouseMove = (mouseMoveEvent) => {
|
|
672
663
|
mouseMoveEvent.preventDefault();
|
|
673
664
|
mouseMoveEvent.stopPropagation();
|
|
674
665
|
const note = getInitialNote();
|
|
@@ -707,23 +698,23 @@ var PianoRollNotes = /* @__PURE__ */ __name((props) => {
|
|
|
707
698
|
setCurrentNoteIndex(newNoteIndex);
|
|
708
699
|
}
|
|
709
700
|
}
|
|
710
|
-
}
|
|
711
|
-
const stopDragging =
|
|
701
|
+
};
|
|
702
|
+
const stopDragging = () => {
|
|
712
703
|
window.removeEventListener("mousemove", handleMouseMove);
|
|
713
704
|
window.removeEventListener("mouseup", stopDragging);
|
|
714
705
|
setIsDragging(false);
|
|
715
706
|
setCurrentNoteIndex(-1);
|
|
716
707
|
setCurrentNoteTrackIndex(-1);
|
|
717
|
-
}
|
|
718
|
-
const startDragging =
|
|
708
|
+
};
|
|
709
|
+
const startDragging = () => {
|
|
719
710
|
window.addEventListener("mousemove", handleMouseMove);
|
|
720
711
|
window.addEventListener("mouseup", stopDragging);
|
|
721
|
-
}
|
|
722
|
-
const getClasses =
|
|
712
|
+
};
|
|
713
|
+
const getClasses = (noteDragMode2) => {
|
|
723
714
|
return noteDragMode2 ? [PianoRollNotes_module_css_default.Note, PianoRollNotes_module_css_default[noteDragMode2]] : [PianoRollNotes_module_css_default.Note];
|
|
724
|
-
}
|
|
715
|
+
};
|
|
725
716
|
return (() => {
|
|
726
|
-
|
|
717
|
+
var _el$ = _tmpl$3();
|
|
727
718
|
_el$.$$mousedown = (mouseDownEvent) => {
|
|
728
719
|
mouseDownEvent.preventDefault();
|
|
729
720
|
mouseDownEvent.stopPropagation();
|
|
@@ -749,7 +740,7 @@ var PianoRollNotes = /* @__PURE__ */ __name((props) => {
|
|
|
749
740
|
setNoteDragMode("trimEnd");
|
|
750
741
|
startDragging();
|
|
751
742
|
};
|
|
752
|
-
|
|
743
|
+
var _ref$ = props.ref;
|
|
753
744
|
typeof _ref$ === "function" ? web.use(_ref$, _el$) : props.ref = _el$;
|
|
754
745
|
web.insert(_el$, web.createComponent(solidJs.For, {
|
|
755
746
|
get each() {
|
|
@@ -773,7 +764,7 @@ var PianoRollNotes = /* @__PURE__ */ __name((props) => {
|
|
|
773
764
|
return web.memo(() => !!verticalViewPort().isVisible(verticalVirtualDimensions()))() && horizontalViewPort().isVisible(horizontalDimensions());
|
|
774
765
|
},
|
|
775
766
|
get children() {
|
|
776
|
-
|
|
767
|
+
var _el$2 = _tmpl$3();
|
|
777
768
|
_el$2.$$mousedown = (event) => {
|
|
778
769
|
event.stopPropagation();
|
|
779
770
|
const initialPosition = horizontalViewPort().calculatePosition(event.clientX);
|
|
@@ -799,23 +790,23 @@ var PianoRollNotes = /* @__PURE__ */ __name((props) => {
|
|
|
799
790
|
};
|
|
800
791
|
web.setAttribute(_el$2, "draggable", false);
|
|
801
792
|
web.effect((_p$) => {
|
|
802
|
-
|
|
803
|
-
_v$ !== _p$.
|
|
804
|
-
_v$2 !== _p$.
|
|
805
|
-
_v$3 !== _p$.
|
|
806
|
-
_v$4 !== _p$.
|
|
807
|
-
_v$5 !== _p$.
|
|
808
|
-
_v$6 !== _p$.
|
|
809
|
-
_v$7 !== _p$.
|
|
793
|
+
var _v$ = getClasses(noteDragMode()).join(" "), _v$2 = `${track.color}`, _v$3 = (note.velocity / 128 + 2) / 3, _v$4 = `${verticalVirtualDimensions().offset}px`, _v$5 = `${verticalVirtualDimensions().size}px`, _v$6 = `${horizontalDimensions().offset}px`, _v$7 = `${horizontalDimensions().size}px`;
|
|
794
|
+
_v$ !== _p$.e && web.className(_el$2, _p$.e = _v$);
|
|
795
|
+
_v$2 !== _p$.t && web.setStyleProperty(_el$2, "background-color", _p$.t = _v$2);
|
|
796
|
+
_v$3 !== _p$.a && web.setStyleProperty(_el$2, "opacity", _p$.a = _v$3);
|
|
797
|
+
_v$4 !== _p$.o && web.setStyleProperty(_el$2, "top", _p$.o = _v$4);
|
|
798
|
+
_v$5 !== _p$.i && web.setStyleProperty(_el$2, "height", _p$.i = _v$5);
|
|
799
|
+
_v$6 !== _p$.n && web.setStyleProperty(_el$2, "left", _p$.n = _v$6);
|
|
800
|
+
_v$7 !== _p$.s && web.setStyleProperty(_el$2, "width", _p$.s = _v$7);
|
|
810
801
|
return _p$;
|
|
811
802
|
}, {
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
803
|
+
e: void 0,
|
|
804
|
+
t: void 0,
|
|
805
|
+
a: void 0,
|
|
806
|
+
o: void 0,
|
|
807
|
+
i: void 0,
|
|
808
|
+
n: void 0,
|
|
809
|
+
s: void 0
|
|
819
810
|
});
|
|
820
811
|
return _el$2;
|
|
821
812
|
}
|
|
@@ -831,12 +822,12 @@ var PianoRollNotes = /* @__PURE__ */ __name((props) => {
|
|
|
831
822
|
}, _$p));
|
|
832
823
|
return _el$;
|
|
833
824
|
})();
|
|
834
|
-
}
|
|
825
|
+
};
|
|
835
826
|
var PianoRollNotes_default = PianoRollNotes;
|
|
836
827
|
web.delegateEvents(["mousedown", "mousemove", "dblclick"]);
|
|
837
828
|
|
|
838
|
-
// esbuild-css-modules-plugin-namespace:/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-
|
|
839
|
-
var digest5 = "
|
|
829
|
+
// esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-AoK0aPVvelR0/solid-pianoroll/src/PianoRollGrid.module.css.js
|
|
830
|
+
var digest5 = "dcbb9c2e6dfd3dc62419f65368e6f7d3c8b024ceea2c8f9247cff15156f9bc65";
|
|
840
831
|
var css5 = `._PianoRollGrid_qke5f_1 {
|
|
841
832
|
position: relative;
|
|
842
833
|
width: 100%;
|
|
@@ -892,8 +883,8 @@ var css5 = `._PianoRollGrid_qke5f_1 {
|
|
|
892
883
|
document.head.appendChild(el);
|
|
893
884
|
}
|
|
894
885
|
})();
|
|
895
|
-
var PianoRollGrid_module_css_default = { "pianoRollGrid": "_PianoRollGrid_qke5f_1", "pianoRollGridRow": "_PianoRollGrid-Row_qke5f_7", "isDark": "_IsDark_qke5f_14", "key": "_Key_qke5f_18", "isBlackAndNextIsWhite": "_IsBlackAndNextIsWhite_qke5f_21", "pianoRollGridTime": "_PianoRollGrid-Time_qke5f_26", "highlighted": "_Highlighted_qke5f_37", "highlightedBorder": "_HighlightedBorder_qke5f_41" };
|
|
896
|
-
var usePianoRollGrid =
|
|
886
|
+
var PianoRollGrid_module_css_default = { "PianoRollGrid": "_PianoRollGrid_qke5f_1", "pianoRollGrid": "_PianoRollGrid_qke5f_1", "PianoRollGrid-Row": "_PianoRollGrid-Row_qke5f_7", "pianoRollGridRow": "_PianoRollGrid-Row_qke5f_7", "IsDark": "_IsDark_qke5f_14", "isDark": "_IsDark_qke5f_14", "Key": "_Key_qke5f_18", "key": "_Key_qke5f_18", "IsBlackAndNextIsWhite": "_IsBlackAndNextIsWhite_qke5f_21", "isBlackAndNextIsWhite": "_IsBlackAndNextIsWhite_qke5f_21", "PianoRollGrid-Time": "_PianoRollGrid-Time_qke5f_26", "pianoRollGridTime": "_PianoRollGrid-Time_qke5f_26", "Highlighted": "_Highlighted_qke5f_37", "highlighted": "_Highlighted_qke5f_37", "HighlightedBorder": "_HighlightedBorder_qke5f_41", "highlightedBorder": "_HighlightedBorder_qke5f_41" };
|
|
887
|
+
var usePianoRollGrid = () => {
|
|
897
888
|
const context = usePianoRollContext();
|
|
898
889
|
const horizontalViewPort = solidJs.createMemo(() => useViewPortDimension("horizontal"));
|
|
899
890
|
const measureTicks = solidJs.createMemo(() => context.ppq * 4);
|
|
@@ -910,7 +901,6 @@ var usePianoRollGrid = /* @__PURE__ */ __name(() => {
|
|
|
910
901
|
}
|
|
911
902
|
return value;
|
|
912
903
|
}
|
|
913
|
-
__name(calculateVisibleGridDivisorTicks, "calculateVisibleGridDivisorTicks");
|
|
914
904
|
const gridDivisorTicks = solidJs.createMemo(
|
|
915
905
|
() => calculateVisibleGridDivisorTicks(selectedGridDivisorTicks())
|
|
916
906
|
);
|
|
@@ -938,18 +928,18 @@ var usePianoRollGrid = /* @__PURE__ */ __name(() => {
|
|
|
938
928
|
});
|
|
939
929
|
});
|
|
940
930
|
return gridArray;
|
|
941
|
-
}
|
|
931
|
+
};
|
|
942
932
|
var usePianoRollGrid_default = usePianoRollGrid;
|
|
943
933
|
|
|
944
934
|
// src/PianoRollGrid.tsx
|
|
945
|
-
var _tmpl$4 = /* @__PURE__ */ web.template(`<div
|
|
946
|
-
var PianoRollGrid =
|
|
935
|
+
var _tmpl$4 = /* @__PURE__ */ web.template(`<div>`);
|
|
936
|
+
var PianoRollGrid = () => {
|
|
947
937
|
const context = usePianoRollContext();
|
|
948
938
|
const verticalViewPort = solidJs.createMemo(() => useViewPortDimension(context.mode === "keys" ? "vertical" : "verticalTracks"));
|
|
949
939
|
const horizontalViewPort = solidJs.createMemo(() => useViewPortDimension("horizontal"));
|
|
950
940
|
const gridArray = usePianoRollGrid_default();
|
|
951
941
|
return (() => {
|
|
952
|
-
|
|
942
|
+
var _el$ = _tmpl$4();
|
|
953
943
|
web.insert(_el$, web.createComponent(solidJs.Index, {
|
|
954
944
|
get each() {
|
|
955
945
|
return gridArray();
|
|
@@ -960,21 +950,21 @@ var PianoRollGrid = /* @__PURE__ */ __name(() => {
|
|
|
960
950
|
return horizontalViewPort().isVisible(entry().virtualDimensions);
|
|
961
951
|
},
|
|
962
952
|
get children() {
|
|
963
|
-
|
|
953
|
+
var _el$2 = _tmpl$4();
|
|
964
954
|
web.effect((_p$) => {
|
|
965
|
-
|
|
955
|
+
var _v$ = {
|
|
966
956
|
[PianoRollGrid_module_css_default["PianoRollGrid-Time"]]: true,
|
|
967
957
|
[PianoRollGrid_module_css_default["Highlighted"]]: entry().isHighlighted,
|
|
968
958
|
[PianoRollGrid_module_css_default["HighlightedBorder"]]: entry().hasHighlightedBorder
|
|
969
959
|
}, _v$2 = `${entry().virtualDimensions.offset}px`, _v$3 = `${entry().virtualDimensions.size}px`;
|
|
970
|
-
_p$.
|
|
971
|
-
_v$2 !== _p$.
|
|
972
|
-
_v$3 !== _p$.
|
|
960
|
+
_p$.e = web.classList(_el$2, _v$, _p$.e);
|
|
961
|
+
_v$2 !== _p$.t && web.setStyleProperty(_el$2, "left", _p$.t = _v$2);
|
|
962
|
+
_v$3 !== _p$.a && web.setStyleProperty(_el$2, "width", _p$.a = _v$3);
|
|
973
963
|
return _p$;
|
|
974
964
|
}, {
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
965
|
+
e: void 0,
|
|
966
|
+
t: void 0,
|
|
967
|
+
a: void 0
|
|
978
968
|
});
|
|
979
969
|
return _el$2;
|
|
980
970
|
}
|
|
@@ -995,22 +985,22 @@ var PianoRollGrid = /* @__PURE__ */ __name(() => {
|
|
|
995
985
|
return verticalViewPort().isVisible(virtualDimensions());
|
|
996
986
|
},
|
|
997
987
|
get children() {
|
|
998
|
-
|
|
988
|
+
var _el$3 = _tmpl$4();
|
|
999
989
|
web.effect((_p$) => {
|
|
1000
|
-
|
|
990
|
+
var _v$4 = {
|
|
1001
991
|
[PianoRollGrid_module_css_default["PianoRollGrid-Row"]]: true,
|
|
1002
992
|
[PianoRollGrid_module_css_default["Key"]]: true,
|
|
1003
993
|
[PianoRollGrid_module_css_default["IsDark"]]: key().isBlack,
|
|
1004
994
|
[PianoRollGrid_module_css_default["IsBlackAndNextIsWhite"]]: !key().isBlack && !blackKeys.includes((key().number + 1) % 12)
|
|
1005
995
|
}, _v$5 = `${virtualDimensions().offset}px`, _v$6 = `${virtualDimensions().size}px`;
|
|
1006
|
-
_p$.
|
|
1007
|
-
_v$5 !== _p$.
|
|
1008
|
-
_v$6 !== _p$.
|
|
996
|
+
_p$.e = web.classList(_el$3, _v$4, _p$.e);
|
|
997
|
+
_v$5 !== _p$.t && web.setStyleProperty(_el$3, "top", _p$.t = _v$5);
|
|
998
|
+
_v$6 !== _p$.a && web.setStyleProperty(_el$3, "height", _p$.a = _v$6);
|
|
1009
999
|
return _p$;
|
|
1010
1000
|
}, {
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1001
|
+
e: void 0,
|
|
1002
|
+
t: void 0,
|
|
1003
|
+
a: void 0
|
|
1014
1004
|
});
|
|
1015
1005
|
return _el$3;
|
|
1016
1006
|
}
|
|
@@ -1035,20 +1025,20 @@ var PianoRollGrid = /* @__PURE__ */ __name(() => {
|
|
|
1035
1025
|
return verticalViewPort().isVisible(virtualDimensions());
|
|
1036
1026
|
},
|
|
1037
1027
|
get children() {
|
|
1038
|
-
|
|
1028
|
+
var _el$4 = _tmpl$4();
|
|
1039
1029
|
web.effect((_p$) => {
|
|
1040
|
-
|
|
1030
|
+
var _v$7 = {
|
|
1041
1031
|
[PianoRollGrid_module_css_default["PianoRollGrid-Row"]]: true,
|
|
1042
1032
|
[PianoRollGrid_module_css_default["IsDark"]]: index() % 2 === 0
|
|
1043
1033
|
}, _v$8 = `${virtualDimensions().offset}px`, _v$9 = `${virtualDimensions().size}px`;
|
|
1044
|
-
_p$.
|
|
1045
|
-
_v$8 !== _p$.
|
|
1046
|
-
_v$9 !== _p$.
|
|
1034
|
+
_p$.e = web.classList(_el$4, _v$7, _p$.e);
|
|
1035
|
+
_v$8 !== _p$.t && web.setStyleProperty(_el$4, "top", _p$.t = _v$8);
|
|
1036
|
+
_v$9 !== _p$.a && web.setStyleProperty(_el$4, "height", _p$.a = _v$9);
|
|
1047
1037
|
return _p$;
|
|
1048
1038
|
}, {
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1039
|
+
e: void 0,
|
|
1040
|
+
t: void 0,
|
|
1041
|
+
a: void 0
|
|
1052
1042
|
});
|
|
1053
1043
|
return _el$4;
|
|
1054
1044
|
}
|
|
@@ -1060,16 +1050,16 @@ var PianoRollGrid = /* @__PURE__ */ __name(() => {
|
|
|
1060
1050
|
web.effect(() => web.className(_el$, PianoRollGrid_module_css_default.PianoRollGrid));
|
|
1061
1051
|
return _el$;
|
|
1062
1052
|
})();
|
|
1063
|
-
}
|
|
1053
|
+
};
|
|
1064
1054
|
var PianoRollGrid_default = PianoRollGrid;
|
|
1065
|
-
var _tmpl$5 = /* @__PURE__ */ web.template(`<input step=
|
|
1066
|
-
var ZoomSliderControl =
|
|
1055
|
+
var _tmpl$5 = /* @__PURE__ */ web.template(`<input step=0.01>`);
|
|
1056
|
+
var ZoomSliderControl = (props) => {
|
|
1067
1057
|
const propsWithDefaults = solidJs.mergeProps({
|
|
1068
1058
|
orientation: "horizontal"
|
|
1069
1059
|
}, props);
|
|
1070
1060
|
const dimension = solidJs.createMemo(() => useViewPortDimension(props.dimensionName ?? propsWithDefaults.orientation));
|
|
1071
1061
|
return (() => {
|
|
1072
|
-
|
|
1062
|
+
var _el$ = _tmpl$5();
|
|
1073
1063
|
web.spread(_el$, web.mergeProps({
|
|
1074
1064
|
get min() {
|
|
1075
1065
|
return dimension().minZoom;
|
|
@@ -1090,7 +1080,7 @@ var ZoomSliderControl = /* @__PURE__ */ __name((props) => {
|
|
|
1090
1080
|
orient: propsWithDefaults.orientation
|
|
1091
1081
|
}), {
|
|
1092
1082
|
get style() {
|
|
1093
|
-
return propsWithDefaults.orientation === "vertical" ? {
|
|
1083
|
+
return web.memo(() => propsWithDefaults.orientation === "vertical")() ? {
|
|
1094
1084
|
margin: 0,
|
|
1095
1085
|
"margin-left": "4px",
|
|
1096
1086
|
"margin-right": "4px",
|
|
@@ -1099,6 +1089,7 @@ var ZoomSliderControl = /* @__PURE__ */ __name((props) => {
|
|
|
1099
1089
|
...{
|
|
1100
1090
|
"writing-mode": "bt-lr",
|
|
1101
1091
|
"-webkit-appearance": "slider-vertical"
|
|
1092
|
+
/* WebKit */
|
|
1102
1093
|
},
|
|
1103
1094
|
...typeof props.style === "object" && props.style
|
|
1104
1095
|
} : {
|
|
@@ -1111,11 +1102,11 @@ var ZoomSliderControl = /* @__PURE__ */ __name((props) => {
|
|
|
1111
1102
|
}), false, false);
|
|
1112
1103
|
return _el$;
|
|
1113
1104
|
})();
|
|
1114
|
-
}
|
|
1105
|
+
};
|
|
1115
1106
|
var ZoomSliderControl_default = ZoomSliderControl;
|
|
1116
1107
|
|
|
1117
|
-
// esbuild-css-modules-plugin-namespace:/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-
|
|
1118
|
-
var digest6 = "
|
|
1108
|
+
// esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-0s6QrsqkxWaN/solid-pianoroll/src/PianoRollTrackList.module.css.js
|
|
1109
|
+
var digest6 = "68f88fded084e9277cd921bc34d4952ddd03c4e6123ac27d8c7863f206fcf89f";
|
|
1119
1110
|
var css6 = `._PianoRollTrackList_11kti_1 {
|
|
1120
1111
|
position: relative;
|
|
1121
1112
|
height: 100%;
|
|
@@ -1151,14 +1142,14 @@ Track._selected_11kti_21 {
|
|
|
1151
1142
|
document.head.appendChild(el);
|
|
1152
1143
|
}
|
|
1153
1144
|
})();
|
|
1154
|
-
var PianoRollTrackList_module_css_default = { "pianoRollTrackList": "_PianoRollTrackList_11kti_1", "track": "_Track_11kti_7", "selected": "_selected_11kti_21" };
|
|
1155
|
-
var _tmpl$6 = /* @__PURE__ */ web.template(`<div
|
|
1156
|
-
var _tmpl$22 = /* @__PURE__ */ web.template(`<div>
|
|
1157
|
-
var PianoRollTrackList =
|
|
1145
|
+
var PianoRollTrackList_module_css_default = { "PianoRollTrackList": "_PianoRollTrackList_11kti_1", "pianoRollTrackList": "_PianoRollTrackList_11kti_1", "Track": "_Track_11kti_7", "track": "_Track_11kti_7", "selected": "_selected_11kti_21" };
|
|
1146
|
+
var _tmpl$6 = /* @__PURE__ */ web.template(`<div>`);
|
|
1147
|
+
var _tmpl$22 = /* @__PURE__ */ web.template(`<div> `);
|
|
1148
|
+
var PianoRollTrackList = () => {
|
|
1158
1149
|
const viewPort = solidJs.createMemo(() => useViewPortDimension("verticalTracks"));
|
|
1159
1150
|
const context = usePianoRollContext();
|
|
1160
1151
|
return (() => {
|
|
1161
|
-
|
|
1152
|
+
var _el$ = _tmpl$6();
|
|
1162
1153
|
web.insert(_el$, web.createComponent(solidJs.Index, {
|
|
1163
1154
|
get each() {
|
|
1164
1155
|
return context.tracks;
|
|
@@ -1170,25 +1161,25 @@ var PianoRollTrackList = /* @__PURE__ */ __name(() => {
|
|
|
1170
1161
|
return virtualDimensions().size > 0;
|
|
1171
1162
|
},
|
|
1172
1163
|
get children() {
|
|
1173
|
-
|
|
1164
|
+
var _el$2 = _tmpl$22(), _el$3 = _el$2.firstChild;
|
|
1174
1165
|
_el$2.$$click = () => context.onSelectedTrackIndexChange?.(index);
|
|
1175
1166
|
web.insert(_el$2, index, _el$3);
|
|
1176
1167
|
web.insert(_el$2, () => track().name || "[unnamed track]", null);
|
|
1177
1168
|
web.effect((_p$) => {
|
|
1178
|
-
|
|
1169
|
+
var _v$ = {
|
|
1179
1170
|
[PianoRollTrackList_module_css_default["Track"]]: true,
|
|
1180
1171
|
[PianoRollTrackList_module_css_default["selected"]]: index === context.selectedTrackIndex
|
|
1181
1172
|
}, _v$2 = track().name, _v$3 = `${virtualDimensions().offset}px`, _v$4 = `${virtualDimensions().size}px`;
|
|
1182
|
-
_p$.
|
|
1183
|
-
_v$2 !== _p$.
|
|
1184
|
-
_v$3 !== _p$.
|
|
1185
|
-
_v$4 !== _p$.
|
|
1173
|
+
_p$.e = web.classList(_el$2, _v$, _p$.e);
|
|
1174
|
+
_v$2 !== _p$.t && web.setAttribute(_el$2, "title", _p$.t = _v$2);
|
|
1175
|
+
_v$3 !== _p$.a && web.setStyleProperty(_el$2, "top", _p$.a = _v$3);
|
|
1176
|
+
_v$4 !== _p$.o && web.setStyleProperty(_el$2, "height", _p$.o = _v$4);
|
|
1186
1177
|
return _p$;
|
|
1187
1178
|
}, {
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1179
|
+
e: void 0,
|
|
1180
|
+
t: void 0,
|
|
1181
|
+
a: void 0,
|
|
1182
|
+
o: void 0
|
|
1192
1183
|
});
|
|
1193
1184
|
return _el$2;
|
|
1194
1185
|
}
|
|
@@ -1198,10 +1189,10 @@ var PianoRollTrackList = /* @__PURE__ */ __name(() => {
|
|
|
1198
1189
|
web.effect(() => web.className(_el$, PianoRollTrackList_module_css_default.PianoRollTrackList));
|
|
1199
1190
|
return _el$;
|
|
1200
1191
|
})();
|
|
1201
|
-
}
|
|
1192
|
+
};
|
|
1202
1193
|
var PianoRollTrackList_default = PianoRollTrackList;
|
|
1203
1194
|
web.delegateEvents(["click"]);
|
|
1204
|
-
var PianoRollScrollZoomViewPort =
|
|
1195
|
+
var PianoRollScrollZoomViewPort = (props) => {
|
|
1205
1196
|
const zoomFactor = 500;
|
|
1206
1197
|
const context = usePianoRollContext();
|
|
1207
1198
|
return web.createComponent(ScrollZoomViewPort, {
|
|
@@ -1251,7 +1242,7 @@ var PianoRollScrollZoomViewPort = /* @__PURE__ */ __name((props) => {
|
|
|
1251
1242
|
return props.children;
|
|
1252
1243
|
}
|
|
1253
1244
|
});
|
|
1254
|
-
}
|
|
1245
|
+
};
|
|
1255
1246
|
var PianoRollScrollZoomViewPort_default = PianoRollScrollZoomViewPort;
|
|
1256
1247
|
var defaultRect = {
|
|
1257
1248
|
left: 0,
|
|
@@ -1269,9 +1260,9 @@ function useBoundingClientRect(containerRef) {
|
|
|
1269
1260
|
const container = containerRef();
|
|
1270
1261
|
if (!container)
|
|
1271
1262
|
return;
|
|
1272
|
-
const updateBoundingClientRect =
|
|
1263
|
+
const updateBoundingClientRect = () => {
|
|
1273
1264
|
setBoundingClientRect(container.getBoundingClientRect() ?? defaultRect);
|
|
1274
|
-
}
|
|
1265
|
+
};
|
|
1275
1266
|
const resizeObserver = new ResizeObserver(updateBoundingClientRect);
|
|
1276
1267
|
resizeObserver.observe(container);
|
|
1277
1268
|
updateBoundingClientRect();
|
|
@@ -1281,10 +1272,9 @@ function useBoundingClientRect(containerRef) {
|
|
|
1281
1272
|
});
|
|
1282
1273
|
return boundingClientRect;
|
|
1283
1274
|
}
|
|
1284
|
-
__name(useBoundingClientRect, "useBoundingClientRect");
|
|
1285
1275
|
|
|
1286
1276
|
// src/PianoRollNotesScroller.tsx
|
|
1287
|
-
var PianoRollNotesScroller =
|
|
1277
|
+
var PianoRollNotesScroller = (props) => {
|
|
1288
1278
|
const context = usePianoRollContext();
|
|
1289
1279
|
const [ref, setRef] = solidJs.createSignal();
|
|
1290
1280
|
const clientRect = useBoundingClientRect(ref);
|
|
@@ -1300,9 +1290,9 @@ var PianoRollNotesScroller = /* @__PURE__ */ __name((props) => {
|
|
|
1300
1290
|
return props.children;
|
|
1301
1291
|
}
|
|
1302
1292
|
});
|
|
1303
|
-
}
|
|
1293
|
+
};
|
|
1304
1294
|
var PianoRollNotesScroller_default = PianoRollNotesScroller;
|
|
1305
|
-
var PianoRollTrackListScroller =
|
|
1295
|
+
var PianoRollTrackListScroller = (props) => {
|
|
1306
1296
|
const context = usePianoRollContext();
|
|
1307
1297
|
const [ref, setRef] = solidJs.createSignal();
|
|
1308
1298
|
const clientRect = useBoundingClientRect(ref);
|
|
@@ -1320,11 +1310,11 @@ var PianoRollTrackListScroller = /* @__PURE__ */ __name((props) => {
|
|
|
1320
1310
|
return props.children;
|
|
1321
1311
|
}
|
|
1322
1312
|
});
|
|
1323
|
-
}
|
|
1313
|
+
};
|
|
1324
1314
|
var PianoRollTrackListScroller_default = PianoRollTrackListScroller;
|
|
1325
1315
|
|
|
1326
|
-
// esbuild-css-modules-plugin-namespace:/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-
|
|
1327
|
-
var digest7 = "
|
|
1316
|
+
// esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-otPMivGW1aPm/solid-pianoroll/src/PianoRollScale.module.css.js
|
|
1317
|
+
var digest7 = "cc51a77ed85d192e0a184a41c8a39cc632f6fa6111db1d0feeb1fa4f30b67008";
|
|
1328
1318
|
var css7 = `._PianoRollScale_1khhn_1 {
|
|
1329
1319
|
position: relative;
|
|
1330
1320
|
width: 100%;
|
|
@@ -1374,26 +1364,26 @@ var css7 = `._PianoRollScale_1khhn_1 {
|
|
|
1374
1364
|
document.head.appendChild(el);
|
|
1375
1365
|
}
|
|
1376
1366
|
})();
|
|
1377
|
-
var PianoRollScale_module_css_default = { "pianoRollScale": "_PianoRollScale_1khhn_1", "pianoRollScaleTime": "_PianoRollScale-Time_1khhn_7", "pianoRollScaleLabel": "_PianoRollScale-Label_1khhn_23", "highlighted": "_Highlighted_1khhn_31", "highlightedBorder": "_HighlightedBorder_1khhn_35" };
|
|
1367
|
+
var PianoRollScale_module_css_default = { "PianoRollScale": "_PianoRollScale_1khhn_1", "pianoRollScale": "_PianoRollScale_1khhn_1", "PianoRollScale-Time": "_PianoRollScale-Time_1khhn_7", "pianoRollScaleTime": "_PianoRollScale-Time_1khhn_7", "PianoRollScale-Label": "_PianoRollScale-Label_1khhn_23", "pianoRollScaleLabel": "_PianoRollScale-Label_1khhn_23", "Highlighted": "_Highlighted_1khhn_31", "highlighted": "_Highlighted_1khhn_31", "HighlightedBorder": "_HighlightedBorder_1khhn_35", "highlightedBorder": "_HighlightedBorder_1khhn_35" };
|
|
1378
1368
|
|
|
1379
1369
|
// src/PianoRollScale.tsx
|
|
1380
|
-
var _tmpl$7 = /* @__PURE__ */ web.template(`<div
|
|
1381
|
-
var PianoRollScale =
|
|
1370
|
+
var _tmpl$7 = /* @__PURE__ */ web.template(`<div>`);
|
|
1371
|
+
var PianoRollScale = () => {
|
|
1382
1372
|
const horizontalViewPort = solidJs.createMemo(() => useViewPortDimension("horizontal"));
|
|
1383
1373
|
const grid = usePianoRollGrid_default();
|
|
1384
1374
|
const context = usePianoRollContext();
|
|
1385
|
-
const updatePlayheadPosition =
|
|
1375
|
+
const updatePlayheadPosition = (event) => {
|
|
1386
1376
|
const position = horizontalViewPort().calculatePosition(event.clientX);
|
|
1387
1377
|
context.onPlayHeadPositionChange(position, event);
|
|
1388
|
-
}
|
|
1378
|
+
};
|
|
1389
1379
|
return (() => {
|
|
1390
|
-
|
|
1380
|
+
var _el$ = _tmpl$7();
|
|
1391
1381
|
_el$.$$mousedown = (event) => {
|
|
1392
1382
|
updatePlayheadPosition(event);
|
|
1393
|
-
const handleMouseUp =
|
|
1383
|
+
const handleMouseUp = () => {
|
|
1394
1384
|
window.removeEventListener("mousemove", updatePlayheadPosition);
|
|
1395
1385
|
window.removeEventListener("mouseup", handleMouseUp);
|
|
1396
|
-
}
|
|
1386
|
+
};
|
|
1397
1387
|
window.addEventListener("mousemove", updatePlayheadPosition);
|
|
1398
1388
|
window.addEventListener("mouseup", handleMouseUp);
|
|
1399
1389
|
};
|
|
@@ -1407,32 +1397,32 @@ var PianoRollScale = /* @__PURE__ */ __name(() => {
|
|
|
1407
1397
|
return horizontalViewPort().isVisible(entry().virtualDimensions);
|
|
1408
1398
|
},
|
|
1409
1399
|
get children() {
|
|
1410
|
-
|
|
1400
|
+
var _el$2 = _tmpl$7();
|
|
1411
1401
|
web.insert(_el$2, web.createComponent(solidJs.Show, {
|
|
1412
1402
|
get when() {
|
|
1413
1403
|
return entry().showLabel;
|
|
1414
1404
|
},
|
|
1415
1405
|
get children() {
|
|
1416
|
-
|
|
1406
|
+
var _el$3 = _tmpl$7();
|
|
1417
1407
|
web.insert(_el$3, () => entry().label);
|
|
1418
1408
|
web.effect(() => web.className(_el$3, PianoRollScale_module_css_default["PianoRollScale-Label"]));
|
|
1419
1409
|
return _el$3;
|
|
1420
1410
|
}
|
|
1421
1411
|
}));
|
|
1422
1412
|
web.effect((_p$) => {
|
|
1423
|
-
|
|
1413
|
+
var _v$ = {
|
|
1424
1414
|
[PianoRollScale_module_css_default["PianoRollScale-Time"]]: true,
|
|
1425
1415
|
[PianoRollScale_module_css_default["Highlighted"]]: entry().isHighlighted,
|
|
1426
1416
|
[PianoRollScale_module_css_default["HighlightedBorder"]]: entry().hasHighlightedBorder
|
|
1427
1417
|
}, _v$2 = `${entry().virtualDimensions.offset}px`, _v$3 = `${entry().virtualDimensions.size}px`;
|
|
1428
|
-
_p$.
|
|
1429
|
-
_v$2 !== _p$.
|
|
1430
|
-
_v$3 !== _p$.
|
|
1418
|
+
_p$.e = web.classList(_el$2, _v$, _p$.e);
|
|
1419
|
+
_v$2 !== _p$.t && web.setStyleProperty(_el$2, "left", _p$.t = _v$2);
|
|
1420
|
+
_v$3 !== _p$.a && web.setStyleProperty(_el$2, "width", _p$.a = _v$3);
|
|
1431
1421
|
return _p$;
|
|
1432
1422
|
}, {
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1423
|
+
e: void 0,
|
|
1424
|
+
t: void 0,
|
|
1425
|
+
a: void 0
|
|
1436
1426
|
});
|
|
1437
1427
|
return _el$2;
|
|
1438
1428
|
}
|
|
@@ -1442,16 +1432,16 @@ var PianoRollScale = /* @__PURE__ */ __name(() => {
|
|
|
1442
1432
|
web.effect(() => web.className(_el$, PianoRollScale_module_css_default.PianoRollScale));
|
|
1443
1433
|
return _el$;
|
|
1444
1434
|
})();
|
|
1445
|
-
}
|
|
1435
|
+
};
|
|
1446
1436
|
var PianoRollScale_default = PianoRollScale;
|
|
1447
1437
|
web.delegateEvents(["mousedown"]);
|
|
1448
1438
|
|
|
1449
1439
|
// src/PianoRoll.tsx
|
|
1450
|
-
var _tmpl$8 = /* @__PURE__ */ web.template(`<div><button><div
|
|
1451
|
-
var _tmpl$23 = /* @__PURE__ */ web.template(`<div><div></div><div
|
|
1452
|
-
var _tmpl$32 = /* @__PURE__ */ web.template(`<div><div><div
|
|
1453
|
-
var _tmpl$42 = /* @__PURE__ */ web.template(`<div
|
|
1454
|
-
var PianoRoll =
|
|
1440
|
+
var _tmpl$8 = /* @__PURE__ */ web.template(`<div style="height:30px;border-right:1px black solid"><button style=font-size:16px;line-height:16px;cursor:pointer;overflow:hidden><div>`);
|
|
1441
|
+
var _tmpl$23 = /* @__PURE__ */ web.template(`<div style=width:100%;display:flex;height:100%;flex-direction:column;overflow:hidden><div style=height:30px></div><div style=flex:1;position:relative;overflow:hidden>`);
|
|
1442
|
+
var _tmpl$32 = /* @__PURE__ */ web.template(`<div><div><div style=flex:1;display:flex;overflow:hidden>`);
|
|
1443
|
+
var _tmpl$42 = /* @__PURE__ */ web.template(`<div>`);
|
|
1444
|
+
var PianoRoll = (allProps) => {
|
|
1455
1445
|
const propsWithDefaults = solidJs.mergeProps({
|
|
1456
1446
|
showAllTracks: false
|
|
1457
1447
|
}, allProps);
|
|
@@ -1459,7 +1449,7 @@ var PianoRoll = /* @__PURE__ */ __name((allProps) => {
|
|
|
1459
1449
|
return web.createComponent(PianoRollContextProvider, {
|
|
1460
1450
|
value: context,
|
|
1461
1451
|
get children() {
|
|
1462
|
-
|
|
1452
|
+
var _el$ = _tmpl$42();
|
|
1463
1453
|
web.spread(_el$, web.mergeProps(divProps, {
|
|
1464
1454
|
get ["class"]() {
|
|
1465
1455
|
return PianoRoll_module_css_default.PianoRoll;
|
|
@@ -1468,7 +1458,7 @@ var PianoRoll = /* @__PURE__ */ __name((allProps) => {
|
|
|
1468
1458
|
web.insert(_el$, web.createComponent(PianoRollScrollZoomViewPort_default, {
|
|
1469
1459
|
get children() {
|
|
1470
1460
|
return [(() => {
|
|
1471
|
-
|
|
1461
|
+
var _el$2 = _tmpl$32(), _el$3 = _el$2.firstChild, _el$7 = _el$3.firstChild;
|
|
1472
1462
|
web.insert(_el$2, web.createComponent(ZoomSliderControl_default, {
|
|
1473
1463
|
orientation: "vertical",
|
|
1474
1464
|
dimensionName: "verticalTracks"
|
|
@@ -1478,22 +1468,13 @@ var PianoRoll = /* @__PURE__ */ __name((allProps) => {
|
|
|
1478
1468
|
return context.showTrackList;
|
|
1479
1469
|
},
|
|
1480
1470
|
get children() {
|
|
1481
|
-
|
|
1482
|
-
_el$4.style.setProperty("height", "30px");
|
|
1483
|
-
_el$4.style.setProperty("border-right", "1px black solid");
|
|
1471
|
+
var _el$4 = _tmpl$8(), _el$5 = _el$4.firstChild, _el$6 = _el$5.firstChild;
|
|
1484
1472
|
_el$5.$$click = () => context.onModeChange(context.mode === "keys" ? "tracks" : "keys");
|
|
1485
|
-
_el$5.style.setProperty("font-size", "16px");
|
|
1486
|
-
_el$5.style.setProperty("line-height", "16px");
|
|
1487
|
-
_el$5.style.setProperty("cursor", "pointer");
|
|
1488
|
-
_el$5.style.setProperty("overflow", "hidden");
|
|
1489
1473
|
web.insert(_el$6, () => context.mode === "keys" ? "\u2261" : "\u{1F3B9}");
|
|
1490
1474
|
web.effect(() => web.setAttribute(_el$5, "title", context.mode === "keys" ? "Tracks Mode" : "Keys Mode"));
|
|
1491
1475
|
return _el$4;
|
|
1492
1476
|
}
|
|
1493
1477
|
}), _el$7);
|
|
1494
|
-
_el$7.style.setProperty("flex", "1");
|
|
1495
|
-
_el$7.style.setProperty("display", "flex");
|
|
1496
|
-
_el$7.style.setProperty("overflow", "hidden");
|
|
1497
1478
|
web.insert(_el$7, web.createComponent(solidJs.Show, {
|
|
1498
1479
|
get when() {
|
|
1499
1480
|
return context.showTrackList;
|
|
@@ -1517,19 +1498,10 @@ var PianoRoll = /* @__PURE__ */ __name((allProps) => {
|
|
|
1517
1498
|
web.insert(_el$2, web.createComponent(PianoRollNotesScroller_default, {
|
|
1518
1499
|
get children() {
|
|
1519
1500
|
return [web.memo(() => allProps.children), (() => {
|
|
1520
|
-
|
|
1521
|
-
_el$8.style.setProperty("width", "100%");
|
|
1522
|
-
_el$8.style.setProperty("display", "flex");
|
|
1523
|
-
_el$8.style.setProperty("height", "100%");
|
|
1524
|
-
_el$8.style.setProperty("flex-direction", "column");
|
|
1525
|
-
_el$8.style.setProperty("overflow", "hidden");
|
|
1526
|
-
_el$9.style.setProperty("height", "30px");
|
|
1501
|
+
var _el$8 = _tmpl$23(), _el$9 = _el$8.firstChild, _el$0 = _el$9.nextSibling;
|
|
1527
1502
|
web.insert(_el$9, web.createComponent(PianoRollScale_default, {}));
|
|
1528
|
-
_el$
|
|
1529
|
-
_el$
|
|
1530
|
-
_el$10.style.setProperty("overflow", "hidden");
|
|
1531
|
-
web.insert(_el$10, web.createComponent(PianoRollGrid_default, {}), null);
|
|
1532
|
-
web.insert(_el$10, web.createComponent(PianoRollNotes_default, {}), null);
|
|
1503
|
+
web.insert(_el$0, web.createComponent(PianoRollGrid_default, {}), null);
|
|
1504
|
+
web.insert(_el$0, web.createComponent(PianoRollNotes_default, {}), null);
|
|
1533
1505
|
return _el$8;
|
|
1534
1506
|
})()];
|
|
1535
1507
|
}
|
|
@@ -1541,16 +1513,16 @@ var PianoRoll = /* @__PURE__ */ __name((allProps) => {
|
|
|
1541
1513
|
}
|
|
1542
1514
|
}), null);
|
|
1543
1515
|
web.effect((_p$) => {
|
|
1544
|
-
|
|
1516
|
+
var _v$ = PianoRoll_module_css_default.PianoRollContainer, _v$2 = {
|
|
1545
1517
|
[PianoRoll_module_css_default.PianoRollLeftColumn]: true,
|
|
1546
1518
|
[PianoRoll_module_css_default.showTrackList]: context.showTrackList
|
|
1547
1519
|
};
|
|
1548
|
-
_v$ !== _p$.
|
|
1549
|
-
_p$.
|
|
1520
|
+
_v$ !== _p$.e && web.className(_el$2, _p$.e = _v$);
|
|
1521
|
+
_p$.t = web.classList(_el$3, _v$2, _p$.t);
|
|
1550
1522
|
return _p$;
|
|
1551
1523
|
}, {
|
|
1552
|
-
|
|
1553
|
-
|
|
1524
|
+
e: void 0,
|
|
1525
|
+
t: void 0
|
|
1554
1526
|
});
|
|
1555
1527
|
return _el$2;
|
|
1556
1528
|
})(), web.createComponent(ZoomSliderControl_default, {
|
|
@@ -1567,11 +1539,11 @@ var PianoRoll = /* @__PURE__ */ __name((allProps) => {
|
|
|
1567
1539
|
return _el$;
|
|
1568
1540
|
}
|
|
1569
1541
|
});
|
|
1570
|
-
}
|
|
1542
|
+
};
|
|
1571
1543
|
exports.PianoRoll = PianoRoll;
|
|
1572
1544
|
web.delegateEvents(["click"]);
|
|
1573
|
-
var _tmpl$9 = /* @__PURE__ */ web.template(`<div class=
|
|
1574
|
-
var PlayHead =
|
|
1545
|
+
var _tmpl$9 = /* @__PURE__ */ web.template(`<div class=PlayHead>`);
|
|
1546
|
+
var PlayHead = (allProps) => {
|
|
1575
1547
|
const [props, divProps] = solidJs.splitProps(allProps, ["position", "sync", "onPositionChange", "dimensionName"]);
|
|
1576
1548
|
const viewPort = useViewPortDimension(props.dimensionName ?? "horizontal");
|
|
1577
1549
|
solidJs.createEffect(() => {
|
|
@@ -1583,7 +1555,7 @@ var PlayHead = /* @__PURE__ */ __name((allProps) => {
|
|
|
1583
1555
|
});
|
|
1584
1556
|
const leftPosition = solidJs.createMemo(() => viewPort.calculatePixelOffset(props.position));
|
|
1585
1557
|
return (() => {
|
|
1586
|
-
|
|
1558
|
+
var _el$ = _tmpl$9();
|
|
1587
1559
|
web.spread(_el$, web.mergeProps(divProps, {
|
|
1588
1560
|
get style() {
|
|
1589
1561
|
return {
|
|
@@ -1599,38 +1571,38 @@ var PlayHead = /* @__PURE__ */ __name((allProps) => {
|
|
|
1599
1571
|
"onMouseDown": (event) => {
|
|
1600
1572
|
event.preventDefault();
|
|
1601
1573
|
event.stopPropagation();
|
|
1602
|
-
const handleMouseMove =
|
|
1574
|
+
const handleMouseMove = (event2) => {
|
|
1603
1575
|
const newPosition = viewPort.calculatePosition(event2.clientX);
|
|
1604
1576
|
props.onPositionChange?.(newPosition, event2);
|
|
1605
|
-
}
|
|
1606
|
-
const handleMouseUp =
|
|
1577
|
+
};
|
|
1578
|
+
const handleMouseUp = () => {
|
|
1607
1579
|
window.removeEventListener("mousemove", handleMouseMove);
|
|
1608
1580
|
window.removeEventListener("mouseup", handleMouseUp);
|
|
1609
|
-
}
|
|
1581
|
+
};
|
|
1610
1582
|
window.addEventListener("mousemove", handleMouseMove);
|
|
1611
1583
|
window.addEventListener("mouseup", handleMouseUp);
|
|
1612
1584
|
}
|
|
1613
1585
|
}), false, false);
|
|
1614
1586
|
return _el$;
|
|
1615
1587
|
})();
|
|
1616
|
-
}
|
|
1588
|
+
};
|
|
1617
1589
|
exports.PlayHead = PlayHead;
|
|
1618
|
-
var useNotes =
|
|
1590
|
+
var useNotes = () => {
|
|
1619
1591
|
const [notes, onNotesChange] = solidJs.createSignal([]);
|
|
1620
|
-
const onNoteChange =
|
|
1592
|
+
const onNoteChange = (index, note) => {
|
|
1621
1593
|
onNotesChange([...notes().slice(0, index), note, ...notes().splice(index + 1)]);
|
|
1622
|
-
}
|
|
1623
|
-
const onInsertNote =
|
|
1594
|
+
};
|
|
1595
|
+
const onInsertNote = (note) => {
|
|
1624
1596
|
const index = Math.max(
|
|
1625
1597
|
notes().findIndex(({ ticks }) => ticks > note.ticks),
|
|
1626
1598
|
0
|
|
1627
1599
|
);
|
|
1628
1600
|
onNotesChange([...notes().slice(0, index), note, ...notes().splice(index)]);
|
|
1629
1601
|
return index;
|
|
1630
|
-
}
|
|
1631
|
-
const onRemoveNote =
|
|
1602
|
+
};
|
|
1603
|
+
const onRemoveNote = (index) => {
|
|
1632
1604
|
onNotesChange([...notes().slice(0, index), ...notes().splice(index + 1)]);
|
|
1633
|
-
}
|
|
1605
|
+
};
|
|
1634
1606
|
return {
|
|
1635
1607
|
notes,
|
|
1636
1608
|
onNotesChange,
|
|
@@ -1638,5 +1610,5 @@ var useNotes = /* @__PURE__ */ __name(() => {
|
|
|
1638
1610
|
onInsertNote,
|
|
1639
1611
|
onRemoveNote
|
|
1640
1612
|
};
|
|
1641
|
-
}
|
|
1613
|
+
};
|
|
1642
1614
|
exports.useNotes = useNotes;
|