solid-pianoroll 0.0.28 → 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/index.cjs CHANGED
@@ -3,11 +3,11 @@
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
- var __defProp = Object.defineProperty;
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-90274-FOsiVqLCjAQ6/solid-pianoroll/src/PianoRoll.module.css.js
10
+ // esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-cPoqwonzC4E5/solid-pianoroll/src/PianoRoll.module.css.js
11
11
  var digest = "887a11995d1eb7609e0c745d81bd88369ecf06022a472277697f5ac8361ce2d3";
12
12
  var css = `._PianoRoll_1v1e7_1 {
13
13
  box-sizing: border-box;
@@ -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 = /* @__PURE__ */ __name((name) => `on${name[0]?.toUpperCase()}${name.slice(1)}Change`, "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 = /* @__PURE__ */ __name((initialState) => {
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 = /* @__PURE__ */ __name((playheadPosition, originalEvent) => {
111
+ const onPlayheadPositionChange = (playheadPosition, originalEvent) => {
112
112
  handlers.onPlayHeadPositionChange(
113
113
  snapValueToGridIfEnabled(playheadPosition, !!originalEvent?.altKey)
114
114
  );
115
- }, "onPlayheadPositionChange");
116
- const updateNotes = /* @__PURE__ */ __name(async (trackIndex, getNotes) => {
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
- }, "updateNotes");
127
- const onNoteChange = /* @__PURE__ */ __name((trackIndex, noteIndex, note) => {
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
- }, "onNoteChange");
134
- const onInsertNote = /* @__PURE__ */ __name((trackIndex, note) => {
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
- }, "onInsertNote");
150
- const onRemoveNote = /* @__PURE__ */ __name((trackIndex, noteIndex) => {
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
- }, "onRemoveNote");
156
- const updateKeyPressedState = /* @__PURE__ */ __name((trackIndex, keyNumber, value) => {
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
- }, "updateKeyPressedState");
165
- const onNoteDown = /* @__PURE__ */ __name((trackIndex, keyNumber) => {
164
+ };
165
+ const onNoteDown = (trackIndex, keyNumber) => {
166
166
  updateKeyPressedState(trackIndex, keyNumber, true);
167
- }, "onNoteDown");
168
- const onNoteUp = /* @__PURE__ */ __name((trackIndex, keyNumber) => {
167
+ };
168
+ const onNoteUp = (trackIndex, keyNumber) => {
169
169
  updateKeyPressedState(trackIndex, keyNumber, false);
170
- }, "onNoteUp");
171
- const isKeyDown = /* @__PURE__ */ __name((trackIndex, keyNumber) => !!state.pressedKeys[trackIndex]?.[keyNumber], "isKeyDown");
172
- const snapValueToGridIfEnabled = /* @__PURE__ */ __name((value, altKey) => {
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
- }, "snapValueToGridIfEnabled");
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
- }, "createPianoRollstate");
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 = /* @__PURE__ */ __name(() => {
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
- }, "usePianoRollContext");
199
- var splitContextProps = /* @__PURE__ */ __name((allProps) => solidJs.splitProps(allProps, [...pianoRollStatePropNames, "showAllTracks", "showTrackList"]), "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-90274-6dTWcJEqWQTY/solid-pianoroll/src/PianoRollKeys.module.css.js
202
- var digest2 = "03b20096f415e0b57d6aec151fb4204c32b67ef9d25331d300984de7c7d34490";
201
+ // esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-z2Xy94IuBNXy/solid-pianoroll/src/PianoRollKeys.module.css.js
202
+ var digest2 = "459b88ebb0a4983e749d1a1d60023f26556d1e041572044886868152452e0947";
203
203
  var css2 = `._PianoRollKeys_1ne9i_1 {
204
204
  position: relative;
205
205
  height: 100%;
@@ -264,62 +264,58 @@ var css2 = `._PianoRollKeys_1ne9i_1 {
264
264
  })();
265
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 getStateWithFunctions = /* @__PURE__ */ __name(() => {
268
- const state2 = getState();
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
- ...state2,
273
- onZoomChange,
274
- onPositionChange,
275
- calculatePixelOffset,
276
- calculatePixelValue,
277
- calculatePosition,
278
- calculatePixelDimensions,
279
- calculateVisibleRange,
280
- calculateMaxPosition,
281
- isVisible
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
- }, "getStateWithFunctions");
284
- const [state, setState] = store.createStore(getStateWithFunctions());
285
- solidJs.createEffect(() => setState(getStateWithFunctions()));
286
- function calculatePixelValue(position = state.position) {
287
- const virtualSize = state.pixelSize * state.zoom;
288
- return position / state.range * virtualSize;
289
- }
290
- __name(calculatePixelValue, "calculatePixelValue");
291
- function calculatePixelOffset(position) {
292
- return calculatePixelValue(position) - calculatePixelValue(state.position);
293
- }
294
- __name(calculatePixelOffset, "calculatePixelOffset");
295
- function calculatePosition(offset) {
296
- const percentX = (offset - state.pixelOffset) / state.pixelSize;
297
- const position = state.position + percentX * calculateVisibleRange();
298
- return position;
299
- }
300
- __name(calculatePosition, "calculatePosition");
301
- function calculateVisibleRange() {
302
- return state.range / state.zoom;
303
- }
304
- __name(calculateVisibleRange, "calculateVisibleRange");
305
- function calculateMaxPosition() {
306
- return state.range - state.range / state.zoom;
307
- }
308
- __name(calculateMaxPosition, "calculateMaxPosition");
309
- function calculatePixelDimensions(position, length) {
310
- const offset = calculatePixelOffset(position);
311
- const size = calculatePixelValue(length);
312
- return { offset, size };
313
- }
314
- __name(calculatePixelDimensions, "calculatePixelDimensions");
315
- function isVisible({ offset, size }) {
316
- return offset + size > 0 && offset < state.pixelSize;
317
- }
318
- __name(isVisible, "isVisible");
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
- __name(createViewPortDimension, "createViewPortDimension");
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 = /* @__PURE__ */ __name((props) => {
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
- }, "ScrollZoomViewPort");
344
+ };
349
345
  var ScrollZoomViewPortContext = solidJs.createContext([]);
350
- var useViewPortDimension = /* @__PURE__ */ __name((name) => {
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
- }, "useViewPortDimension");
352
+ };
357
353
 
358
- // esbuild-css-modules-plugin-namespace:/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90274-OmWtiaJZ1A76/solid-pianoroll/src/viewport/ScrollZoomContainer.module.css.js
359
- var digest3 = "24d1adf7c72fa4bf71c21236b6d2b0719c8e90ad884e5ed126d2992e28aa8e4f";
354
+ // esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-JutpxYRTPHfH/solid-pianoroll/src/viewport/ScrollZoomContainer.module.css.js
355
+ var digest3 = "2b8b4b4217d60ab34494eb21a2cefcd0001dba2ea1cf7bbcd5d160afbb9f1a6e";
360
356
  var css3 = `._ScrollZoomContainer_f395r_1 {
361
357
  height: 100%;
362
358
  width: 100%;
@@ -377,8 +373,8 @@ var css3 = `._ScrollZoomContainer_f395r_1 {
377
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></div></div></div></div>`, 8);
381
- var ScrollZoomContainer = /* @__PURE__ */ __name((props) => {
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 = /* @__PURE__ */ __name((event) => {
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
- }, "handleScroll");
412
- const handleWheel = /* @__PURE__ */ __name((event) => {
406
+ };
407
+ const handleWheel = (event) => {
413
408
  if (event.altKey) {
414
409
  event.preventDefault();
415
- if (Math.abs(event.deltaX) > Math.abs(event.deltaY)) {
416
- horizontalViewPort()?.onZoomChange?.(horizontalViewPort().zoom / (1 + event.deltaX / horizontalViewPort().pixelSize));
417
- const maxPosition = horizontalViewPort().calculateMaxPosition();
418
- horizontalViewPort()?.onPositionChange?.(Math.min(maxPosition, horizontalViewPort()?.position));
419
- } else {
420
- verticalViewPort()?.onZoomChange?.(verticalViewPort().zoom / (1 + event.deltaY / verticalViewPort().pixelSize));
421
- const maxVerticalPosition = verticalViewPort().calculateMaxPosition();
422
- verticalViewPort()?.onPositionChange?.(Math.min(maxVerticalPosition, verticalViewPort()?.position));
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
- }, "handleWheel");
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
- const _el$ = _tmpl$.cloneNode(true), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
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
- const _ref$ = props.ref;
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
- const _ref$2 = scrollContentRef;
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
- const _v$ = `${verticalViewPort().pixelSize}px`, _v$2 = `${horizontalViewPort().pixelSize}px`, _v$3 = `${verticalViewPort().pixelSize}px`, _v$4 = `${horizontalViewPort().pixelSize}px`;
482
- _v$ !== _p$._v$ && _el$3.style.setProperty("height", _p$._v$ = _v$);
483
- _v$2 !== _p$._v$2 && _el$3.style.setProperty("width", _p$._v$2 = _v$2);
484
- _v$3 !== _p$._v$3 && _el$4.style.setProperty("height", _p$._v$3 = _v$3);
485
- _v$4 !== _p$._v$4 && _el$4.style.setProperty("width", _p$._v$4 = _v$4);
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
- _v$: void 0,
489
- _v$2: void 0,
490
- _v$3: void 0,
491
- _v$4: void 0
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
- }, "ScrollZoomContainer");
486
+ };
496
487
  var ScrollZoomContainer_default = ScrollZoomContainer;
497
488
 
498
489
  // src/PianoRollKeys.tsx
499
- var _tmpl$2 = /* @__PURE__ */ web.template(`<div></div>`, 2);
500
- var PianoRollKeys = /* @__PURE__ */ __name(() => {
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 = /* @__PURE__ */ __name(() => {
496
+ const handleMouseUp = () => {
506
497
  setIsMouseDown(false);
507
- }, "handleMouseUp");
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
- const _el$ = _tmpl$2.cloneNode(true);
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
- const _el$2 = _tmpl$2.cloneNode(true);
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
- const _v$3 = {
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$._v$3 = web.classList(_el$2, _v$3, _p$._v$3);
559
- _v$4 !== _p$._v$4 && web.setAttribute(_el$2, "title", _p$._v$4 = _v$4);
560
- _v$5 !== _p$._v$5 && web.setAttribute(_el$2, "data-index", _p$._v$5 = _v$5);
561
- _v$6 !== _p$._v$6 && _el$2.style.setProperty("top", _p$._v$6 = _v$6);
562
- _v$7 !== _p$._v$7 && _el$2.style.setProperty("height", _p$._v$7 = _v$7);
563
- _v$8 !== _p$._v$8 && _el$2.style.setProperty("box-shadow", _p$._v$8 = _v$8);
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
- _v$3: void 0,
567
- _v$4: void 0,
568
- _v$5: void 0,
569
- _v$6: void 0,
570
- _v$7: void 0,
571
- _v$8: void 0
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
- const _v$ = PianoRollKeys_module_css_default.PianoRollKeys, _v$2 = `${horizontalViewPort().pixelSize}px`;
582
- _v$ !== _p$._v$ && web.className(_el$, _p$._v$ = _v$);
583
- _v$2 !== _p$._v$2 && _el$.style.setProperty("width", _p$._v$2 = _v$2);
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
- _v$: void 0,
587
- _v$2: void 0
577
+ e: void 0,
578
+ t: void 0
588
579
  });
589
580
  return _el$;
590
581
  })();
591
- }, "PianoRollKeys");
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-90274-JdJ5VDGsHGGH/solid-pianoroll/src/PianoRollNotes.module.css.js
605
- var digest4 = "88d85611b5c2bde3bc1977c84a04887008291118658c6b63ef4521f91b34a578";
595
+ // esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-xT5xfp0oH2lW/solid-pianoroll/src/PianoRollNotes.module.css.js
596
+ var digest4 = "b2a92e66b76774fc299e0921cc071f2fab274b12f595e64b67bf41d3cd14a2c8";
606
597
  var css4 = `._PianoRollNotes_u3pew_1 {
607
598
  position: absolute;
608
599
  flex: 1;
@@ -646,8 +637,8 @@ var css4 = `._PianoRollNotes_u3pew_1 {
646
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></div>`, 2);
650
- var PianoRollNotes = /* @__PURE__ */ __name((props) => {
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 = /* @__PURE__ */ __name((event) => {
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
- }, "calculateNoteDragValues");
671
- const handleMouseMove = /* @__PURE__ */ __name((mouseMoveEvent) => {
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
- }, "handleMouseMove");
711
- const stopDragging = /* @__PURE__ */ __name(() => {
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
- }, "stopDragging");
718
- const startDragging = /* @__PURE__ */ __name(() => {
708
+ };
709
+ const startDragging = () => {
719
710
  window.addEventListener("mousemove", handleMouseMove);
720
711
  window.addEventListener("mouseup", stopDragging);
721
- }, "startDragging");
722
- const getClasses = /* @__PURE__ */ __name((noteDragMode2) => {
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
- }, "getClasses");
715
+ };
725
716
  return (() => {
726
- const _el$ = _tmpl$3.cloneNode(true);
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
- const _ref$ = props.ref;
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
- const _el$2 = _tmpl$3.cloneNode(true);
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
- const _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`;
803
- _v$ !== _p$._v$ && web.className(_el$2, _p$._v$ = _v$);
804
- _v$2 !== _p$._v$2 && _el$2.style.setProperty("background-color", _p$._v$2 = _v$2);
805
- _v$3 !== _p$._v$3 && _el$2.style.setProperty("opacity", _p$._v$3 = _v$3);
806
- _v$4 !== _p$._v$4 && _el$2.style.setProperty("top", _p$._v$4 = _v$4);
807
- _v$5 !== _p$._v$5 && _el$2.style.setProperty("height", _p$._v$5 = _v$5);
808
- _v$6 !== _p$._v$6 && _el$2.style.setProperty("left", _p$._v$6 = _v$6);
809
- _v$7 !== _p$._v$7 && _el$2.style.setProperty("width", _p$._v$7 = _v$7);
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
- _v$: void 0,
813
- _v$2: void 0,
814
- _v$3: void 0,
815
- _v$4: void 0,
816
- _v$5: void 0,
817
- _v$6: void 0,
818
- _v$7: void 0
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
- }, "PianoRollNotes");
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-90274-vYSYPll6vbB5/solid-pianoroll/src/PianoRollGrid.module.css.js
839
- var digest5 = "40faf9aa8a11f47648dbfcdf98fc8f2fb2b6fefa1bd9299897d9dea205356740";
829
+ // esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-3YdnJNafzMeh/solid-pianoroll/src/PianoRollGrid.module.css.js
830
+ var digest5 = "77803636cf1d130e93f150f16ac3720f30557071084ef348763fd90eb065c976";
840
831
  var css5 = `._PianoRollGrid_qke5f_1 {
841
832
  position: relative;
842
833
  width: 100%;
@@ -893,7 +884,7 @@ var css5 = `._PianoRollGrid_qke5f_1 {
893
884
  }
894
885
  })();
895
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" };
896
- var usePianoRollGrid = /* @__PURE__ */ __name(() => {
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
- }, "usePianoRollGrid");
931
+ };
942
932
  var usePianoRollGrid_default = usePianoRollGrid;
943
933
 
944
934
  // src/PianoRollGrid.tsx
945
- var _tmpl$4 = /* @__PURE__ */ web.template(`<div></div>`, 2);
946
- var PianoRollGrid = /* @__PURE__ */ __name(() => {
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
- const _el$ = _tmpl$4.cloneNode(true);
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
- const _el$2 = _tmpl$4.cloneNode(true);
953
+ var _el$2 = _tmpl$4();
964
954
  web.effect((_p$) => {
965
- const _v$ = {
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$._v$ = web.classList(_el$2, _v$, _p$._v$);
971
- _v$2 !== _p$._v$2 && _el$2.style.setProperty("left", _p$._v$2 = _v$2);
972
- _v$3 !== _p$._v$3 && _el$2.style.setProperty("width", _p$._v$3 = _v$3);
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
- _v$: void 0,
976
- _v$2: void 0,
977
- _v$3: void 0
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
- const _el$3 = _tmpl$4.cloneNode(true);
988
+ var _el$3 = _tmpl$4();
999
989
  web.effect((_p$) => {
1000
- const _v$4 = {
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$._v$4 = web.classList(_el$3, _v$4, _p$._v$4);
1007
- _v$5 !== _p$._v$5 && _el$3.style.setProperty("top", _p$._v$5 = _v$5);
1008
- _v$6 !== _p$._v$6 && _el$3.style.setProperty("height", _p$._v$6 = _v$6);
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
- _v$4: void 0,
1012
- _v$5: void 0,
1013
- _v$6: void 0
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
- const _el$4 = _tmpl$4.cloneNode(true);
1028
+ var _el$4 = _tmpl$4();
1039
1029
  web.effect((_p$) => {
1040
- const _v$7 = {
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$._v$7 = web.classList(_el$4, _v$7, _p$._v$7);
1045
- _v$8 !== _p$._v$8 && _el$4.style.setProperty("top", _p$._v$8 = _v$8);
1046
- _v$9 !== _p$._v$9 && _el$4.style.setProperty("height", _p$._v$9 = _v$9);
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
- _v$7: void 0,
1050
- _v$8: void 0,
1051
- _v$9: void 0
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
- }, "PianoRollGrid");
1053
+ };
1064
1054
  var PianoRollGrid_default = PianoRollGrid;
1065
- var _tmpl$5 = /* @__PURE__ */ web.template(`<input step="0.01">`, 1);
1066
- var ZoomSliderControl = /* @__PURE__ */ __name((props) => {
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
- const _el$ = _tmpl$5.cloneNode(true);
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
- }, "ZoomSliderControl");
1105
+ };
1115
1106
  var ZoomSliderControl_default = ZoomSliderControl;
1116
1107
 
1117
- // esbuild-css-modules-plugin-namespace:/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90274-Qw2soqg4UY2e/solid-pianoroll/src/PianoRollTrackList.module.css.js
1118
- var digest6 = "df77d233142e5d8d0abf2bb572603aeb48222d102a663aaaa0be9f4ab43f4767";
1108
+ // esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-FR1yBGbvVK64/solid-pianoroll/src/PianoRollTrackList.module.css.js
1109
+ var digest6 = "da4f21ce4c916ea8377f389c87d2b8948dc371aa39212ea54c82f08841d95d76";
1119
1110
  var css6 = `._PianoRollTrackList_11kti_1 {
1120
1111
  position: relative;
1121
1112
  height: 100%;
@@ -1152,13 +1143,13 @@ Track._selected_11kti_21 {
1152
1143
  }
1153
1144
  })();
1154
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" };
1155
- var _tmpl$6 = /* @__PURE__ */ web.template(`<div></div>`, 2);
1156
- var _tmpl$22 = /* @__PURE__ */ web.template(`<div> </div>`, 2);
1157
- var PianoRollTrackList = /* @__PURE__ */ __name(() => {
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
- const _el$ = _tmpl$6.cloneNode(true);
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
- const _el$2 = _tmpl$22.cloneNode(true), _el$3 = _el$2.firstChild;
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
- const _v$ = {
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$._v$ = web.classList(_el$2, _v$, _p$._v$);
1183
- _v$2 !== _p$._v$2 && web.setAttribute(_el$2, "title", _p$._v$2 = _v$2);
1184
- _v$3 !== _p$._v$3 && _el$2.style.setProperty("top", _p$._v$3 = _v$3);
1185
- _v$4 !== _p$._v$4 && _el$2.style.setProperty("height", _p$._v$4 = _v$4);
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
- _v$: void 0,
1189
- _v$2: void 0,
1190
- _v$3: void 0,
1191
- _v$4: void 0
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
- }, "PianoRollTrackList");
1192
+ };
1202
1193
  var PianoRollTrackList_default = PianoRollTrackList;
1203
1194
  web.delegateEvents(["click"]);
1204
- var PianoRollScrollZoomViewPort = /* @__PURE__ */ __name((props) => {
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
- }, "PianoRollScrollZoomViewPort");
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 = /* @__PURE__ */ __name(() => {
1263
+ const updateBoundingClientRect = () => {
1273
1264
  setBoundingClientRect(container.getBoundingClientRect() ?? defaultRect);
1274
- }, "updateBoundingClientRect");
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 = /* @__PURE__ */ __name((props) => {
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
- }, "PianoRollNotesScroller");
1293
+ };
1304
1294
  var PianoRollNotesScroller_default = PianoRollNotesScroller;
1305
- var PianoRollTrackListScroller = /* @__PURE__ */ __name((props) => {
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
- }, "PianoRollTrackListScroller");
1313
+ };
1324
1314
  var PianoRollTrackListScroller_default = PianoRollTrackListScroller;
1325
1315
 
1326
- // esbuild-css-modules-plugin-namespace:/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90274-C8fcCAbEzB5N/solid-pianoroll/src/PianoRollScale.module.css.js
1327
- var digest7 = "ff694d65d497b28eee13b1a4b3bf294cd6bcd56c19e212c39e5cf55bc49c50e0";
1316
+ // esbuild-css-modules-plugin-namespace:/private/var/folders/hn/m5r9jj0x3zb28s_y23nrnhmc0000gn/T/tmp-90536-n7CLz67yg3wq/solid-pianoroll/src/PianoRollScale.module.css.js
1317
+ var digest7 = "be26077da06e91708b780e69a33fd124b9d22c2b1e6e019c5e58ed65c5b717cf";
1328
1318
  var css7 = `._PianoRollScale_1khhn_1 {
1329
1319
  position: relative;
1330
1320
  width: 100%;
@@ -1377,23 +1367,23 @@ var css7 = `._PianoRollScale_1khhn_1 {
1377
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></div>`, 2);
1381
- var PianoRollScale = /* @__PURE__ */ __name(() => {
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 = /* @__PURE__ */ __name((event) => {
1375
+ const updatePlayheadPosition = (event) => {
1386
1376
  const position = horizontalViewPort().calculatePosition(event.clientX);
1387
1377
  context.onPlayHeadPositionChange(position, event);
1388
- }, "updatePlayheadPosition");
1378
+ };
1389
1379
  return (() => {
1390
- const _el$ = _tmpl$7.cloneNode(true);
1380
+ var _el$ = _tmpl$7();
1391
1381
  _el$.$$mousedown = (event) => {
1392
1382
  updatePlayheadPosition(event);
1393
- const handleMouseUp = /* @__PURE__ */ __name(() => {
1383
+ const handleMouseUp = () => {
1394
1384
  window.removeEventListener("mousemove", updatePlayheadPosition);
1395
1385
  window.removeEventListener("mouseup", handleMouseUp);
1396
- }, "handleMouseUp");
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
- const _el$2 = _tmpl$7.cloneNode(true);
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
- const _el$3 = _tmpl$7.cloneNode(true);
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
- const _v$ = {
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$._v$ = web.classList(_el$2, _v$, _p$._v$);
1429
- _v$2 !== _p$._v$2 && _el$2.style.setProperty("left", _p$._v$2 = _v$2);
1430
- _v$3 !== _p$._v$3 && _el$2.style.setProperty("width", _p$._v$3 = _v$3);
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
- _v$: void 0,
1434
- _v$2: void 0,
1435
- _v$3: void 0
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
- }, "PianoRollScale");
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></div></button></div>`, 6);
1451
- var _tmpl$23 = /* @__PURE__ */ web.template(`<div><div></div><div></div></div>`, 6);
1452
- var _tmpl$32 = /* @__PURE__ */ web.template(`<div><div><div></div></div></div>`, 6);
1453
- var _tmpl$42 = /* @__PURE__ */ web.template(`<div></div>`, 2);
1454
- var PianoRoll = /* @__PURE__ */ __name((allProps) => {
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
- const _el$ = _tmpl$42.cloneNode(true);
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
- const _el$2 = _tmpl$32.cloneNode(true), _el$3 = _el$2.firstChild, _el$7 = _el$3.firstChild;
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
- const _el$4 = _tmpl$8.cloneNode(true), _el$5 = _el$4.firstChild, _el$6 = _el$5.firstChild;
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
- const _el$8 = _tmpl$23.cloneNode(true), _el$9 = _el$8.firstChild, _el$10 = _el$9.nextSibling;
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$10.style.setProperty("flex", "1");
1529
- _el$10.style.setProperty("position", "relative");
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
- const _v$ = PianoRoll_module_css_default.PianoRollContainer, _v$2 = {
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$._v$ && web.className(_el$2, _p$._v$ = _v$);
1549
- _p$._v$2 = web.classList(_el$3, _v$2, _p$._v$2);
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
- _v$: void 0,
1553
- _v$2: void 0
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
- }, "PianoRoll");
1542
+ };
1571
1543
  exports.PianoRoll = PianoRoll;
1572
1544
  web.delegateEvents(["click"]);
1573
- var _tmpl$9 = /* @__PURE__ */ web.template(`<div class="PlayHead"></div>`, 2);
1574
- var PlayHead = /* @__PURE__ */ __name((allProps) => {
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
- const _el$ = _tmpl$9.cloneNode(true);
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 = /* @__PURE__ */ __name((event2) => {
1574
+ const handleMouseMove = (event2) => {
1603
1575
  const newPosition = viewPort.calculatePosition(event2.clientX);
1604
1576
  props.onPositionChange?.(newPosition, event2);
1605
- }, "handleMouseMove");
1606
- const handleMouseUp = /* @__PURE__ */ __name(() => {
1577
+ };
1578
+ const handleMouseUp = () => {
1607
1579
  window.removeEventListener("mousemove", handleMouseMove);
1608
1580
  window.removeEventListener("mouseup", handleMouseUp);
1609
- }, "handleMouseUp");
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
- }, "PlayHead");
1588
+ };
1617
1589
  exports.PlayHead = PlayHead;
1618
- var useNotes = /* @__PURE__ */ __name(() => {
1590
+ var useNotes = () => {
1619
1591
  const [notes, onNotesChange] = solidJs.createSignal([]);
1620
- const onNoteChange = /* @__PURE__ */ __name((index, note) => {
1592
+ const onNoteChange = (index, note) => {
1621
1593
  onNotesChange([...notes().slice(0, index), note, ...notes().splice(index + 1)]);
1622
- }, "onNoteChange");
1623
- const onInsertNote = /* @__PURE__ */ __name((note) => {
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
- }, "onInsertNote");
1631
- const onRemoveNote = /* @__PURE__ */ __name((index) => {
1602
+ };
1603
+ const onRemoveNote = (index) => {
1632
1604
  onNotesChange([...notes().slice(0, index), ...notes().splice(index + 1)]);
1633
- }, "onRemoveNote");
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
- }, "useNotes");
1613
+ };
1642
1614
  exports.useNotes = useNotes;