@tremolo-ui/vue 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/index.cjs +865 -611
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +954 -189
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.ts +954 -189
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +339 -128
  8. package/dist/index.js.map +1 -1
  9. package/package.json +7 -7
  10. package/src/components/AnimationCanvas/AnimationCanvas.ts +27 -30
  11. package/src/components/AnimationCanvas/index.ts +1 -5
  12. package/src/components/DropZone/DropZone.ts +19 -9
  13. package/src/components/DropZone/index.ts +1 -1
  14. package/src/components/FileInput/FileInput.ts +28 -14
  15. package/src/components/FileInput/index.ts +1 -1
  16. package/src/components/Knob/Knob.ts +107 -57
  17. package/src/components/Knob/KnobThumb.ts +32 -22
  18. package/src/components/Knob/index.ts +2 -2
  19. package/src/components/NumberInput/NumberInput.ts +136 -53
  20. package/src/components/NumberInput/NumberInputField.ts +5 -2
  21. package/src/components/NumberInput/NumberInputStepper.ts +25 -4
  22. package/src/components/NumberInput/context.ts +12 -0
  23. package/src/components/NumberInput/index.ts +1 -1
  24. package/src/components/NumberInput/stepper-button.ts +8 -1
  25. package/src/components/Piano/Piano.ts +51 -43
  26. package/src/components/Piano/index.ts +6 -1
  27. package/src/components/PointsEditor/PointsEditor.ts +43 -35
  28. package/src/components/PointsEditor/PointsEditorContainer.ts +2 -6
  29. package/src/components/PointsEditor/PointsEditorPoint.ts +82 -42
  30. package/src/components/PointsEditor/context.ts +1 -1
  31. package/src/components/PointsEditor/index.ts +5 -2
  32. package/src/components/Slider/Slider.ts +92 -49
  33. package/src/components/Slider/SliderMarks.ts +28 -14
  34. package/src/components/Slider/SliderMarksOption.ts +54 -33
  35. package/src/components/Slider/SliderThumb.ts +26 -8
  36. package/src/components/Slider/SliderTrack.ts +31 -16
  37. package/src/components/Slider/context.ts +1 -1
  38. package/src/components/Slider/index.ts +8 -5
  39. package/src/components/XYPad/XYPad.ts +94 -56
  40. package/src/components/XYPad/XYPadThumb.ts +21 -14
  41. package/src/components/XYPad/index.ts +2 -2
  42. package/src/components/_util/change-gesture.ts +44 -0
  43. package/src/components/_util/useCheckSteps.ts +1 -1
  44. package/src/components/_util/visually-hidden-range-input.ts +1 -1
  45. package/src/composables/useInstance.ts +1 -1
  46. package/src/composables/useWheel.ts +5 -2
  47. package/src/index.ts +21 -4
package/dist/index.d.ts CHANGED
@@ -1,23 +1,51 @@
1
- import { HTMLAttributes, MaybeRefOrGetter, PropType, SlotsType } from "vue";
2
- import { AnimationFrame, DragOptions, DragValueOptions, DropZoneOptions, DropZoneState, InputEventOption, KeyboardShortcuts, KeyboardShortcutsScope, KnobAngles, LongPressOptions, MIDIAccessOptions, MIDIAccessState, MIDIInputHandlers, MarksOptions, ModifierState, ModifierValue, NoteRange, PointPosition, PointsEditorInstance, SelectionBoxRect, WheelOptions, XY, XYInput, parseNumberText } from "@tremolo-ui/dom";
1
+ import { ExtractPublicPropTypes, HTMLAttributes, MaybeRefOrGetter, PropType, SlotsType } from "vue";
2
+ import { CanvasDrawFunction, CanvasInitFunction, ChangeSource, DragOptions, DragValueOptions, DropZoneOptions, DropZoneState, InputEventOption, KeyboardShortcuts, KeyboardShortcutsScope, KnobAngles, LongPressOptions, MIDIAccessOptions, MIDIAccessState, MIDIInputHandlers, MarksOptions, ModifierState, ModifierValue, NoteRange, PointPosition, PointsEditorInstance, SelectionBoxRect, WheelOptions, XY, XYInput } from "@tremolo-ui/dom";
3
+ import { parseNumberText } from "@tremolo-ui/dom/internal";
3
4
  import { Scale, ValueRange } from "@tremolo-ui/functions";
4
5
  //#region src/components/AnimationCanvas/AnimationCanvas.d.ts
5
- /** Called once the canvas is ready, and again whenever it is resized. */
6
- type InitFunction = (context: CanvasRenderingContext2D, size: {
7
- width: number;
8
- height: number;
9
- }) => void;
10
- /** Called on every frame while `animate` is on, and once otherwise. */
11
- type DrawFunction = (context: CanvasRenderingContext2D, frame: AnimationFrame) => void;
6
+ declare const animationCanvasProps: {
7
+ /** Draws a frame. */
8
+ draw: {
9
+ type: PropType<CanvasDrawFunction>;
10
+ required: true;
11
+ };
12
+ /** Sets the canvas up, once, before the first frame. */
13
+ init: PropType<CanvasInitFunction>;
14
+ /** Draw on every animation frame. @default true */
15
+ animate: {
16
+ type: BooleanConstructor;
17
+ default: boolean;
18
+ };
19
+ /** Settings for the 2D context. Read once, when the canvas is created. */
20
+ options: PropType<CanvasRenderingContext2DSettings>;
21
+ /** Keep the drawing while the canvas is resized. @default true */
22
+ reduceFlickering: {
23
+ type: BooleanConstructor;
24
+ default: boolean;
25
+ };
26
+ /** Follow the size of the parent element; `width` and `height` are ignored. */
27
+ resizable: BooleanConstructor;
28
+ /** Width in CSS pixels, while not `resizable`. @default 100 */
29
+ width: {
30
+ type: NumberConstructor;
31
+ default: number;
32
+ };
33
+ /** Height in CSS pixels, while not `resizable`. @default 100 */
34
+ height: {
35
+ type: NumberConstructor;
36
+ default: number;
37
+ };
38
+ };
39
+ type AnimationCanvasProps = ExtractPublicPropTypes<typeof animationCanvasProps>;
12
40
  /** A `<canvas>` drawn by `draw` on every animation frame. */
13
41
  export declare const AnimationCanvas: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
14
42
  /** Draws a frame. */
15
43
  draw: {
16
- type: PropType<DrawFunction>;
44
+ type: PropType<CanvasDrawFunction>;
17
45
  required: true;
18
46
  };
19
- /** Sets the canvas up before the first frame and after a resize. */
20
- init: PropType<InitFunction>;
47
+ /** Sets the canvas up, once, before the first frame. */
48
+ init: PropType<CanvasInitFunction>;
21
49
  /** Draw on every animation frame. @default true */
22
50
  animate: {
23
51
  type: BooleanConstructor;
@@ -47,11 +75,11 @@ export declare const AnimationCanvas: import("vue").DefineComponent<import("vue"
47
75
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
48
76
  /** Draws a frame. */
49
77
  draw: {
50
- type: PropType<DrawFunction>;
78
+ type: PropType<CanvasDrawFunction>;
51
79
  required: true;
52
80
  };
53
- /** Sets the canvas up before the first frame and after a resize. */
54
- init: PropType<InitFunction>;
81
+ /** Sets the canvas up, once, before the first frame. */
82
+ init: PropType<CanvasInitFunction>;
55
83
  /** Draw on every animation frame. @default true */
56
84
  animate: {
57
85
  type: BooleanConstructor;
@@ -77,14 +105,23 @@ export declare const AnimationCanvas: import("vue").DefineComponent<import("vue"
77
105
  default: number;
78
106
  };
79
107
  }>> & Readonly<{}>, {
80
- resizable: boolean;
81
108
  animate: boolean;
82
109
  reduceFlickering: boolean;
110
+ resizable: boolean;
83
111
  width: number;
84
112
  height: number;
85
113
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
86
114
  //#endregion
87
115
  //#region src/components/DropZone/DropZone.d.ts
116
+ declare const dropZoneProps: {
117
+ /** Which files to take, as the `accept` attribute of a file input. */
118
+ accept: StringConstructor;
119
+ /** Take every file dropped, rather than the first. */
120
+ multiple: BooleanConstructor;
121
+ /** Ignore drops. The zone carries `data-disabled`. */
122
+ disabled: BooleanConstructor;
123
+ };
124
+ type DropZoneProps = ExtractPublicPropTypes<typeof dropZoneProps>;
88
125
  /** A region that takes dropped files. */
89
126
  export declare const DropZone: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
90
127
  /** Which files to take, as the `accept` attribute of a file input. */
@@ -126,6 +163,19 @@ interface FileInputContextValue {
126
163
  export declare function useFileInputContext(): FileInputContextValue;
127
164
  //#endregion
128
165
  //#region src/components/FileInput/FileInput.d.ts
166
+ declare const fileInputProps: {
167
+ /**
168
+ * Which files to take: extensions, MIME types and type groups. It is
169
+ * checked again when the files arrive, since the picker only takes it as
170
+ * a hint.
171
+ */
172
+ accept: StringConstructor;
173
+ /** Let several files be picked at once. */
174
+ multiple: BooleanConstructor;
175
+ /** Make the input unusable. The parts carry `data-disabled`. */
176
+ disabled: BooleanConstructor;
177
+ };
178
+ type FileInputProps = ExtractPublicPropTypes<typeof fileInputProps>;
129
179
  /**
130
180
  * Picks files. The control is the native file input, out of sight but in the
131
181
  * tab order, with `FileInputTrigger` as its label.
@@ -160,8 +210,8 @@ export declare const FileInput: import("vue").DefineComponent<import("vue").Extr
160
210
  /** Make the input unusable. The parts carry `data-disabled`. */
161
211
  disabled: BooleanConstructor;
162
212
  }>> & Readonly<{
163
- onReject?: ((files: File[]) => any) | undefined;
164
213
  onChange?: ((files: File[]) => any) | undefined;
214
+ onReject?: ((files: File[]) => any) | undefined;
165
215
  }>, {
166
216
  multiple: boolean;
167
217
  disabled: boolean;
@@ -198,6 +248,86 @@ interface KnobContextValue {
198
248
  export declare function useKnobContext(): KnobContextValue;
199
249
  //#endregion
200
250
  //#region src/components/Knob/Knob.d.ts
251
+ declare const knobProps: {
252
+ /** The current value. Bind it with `v-model`. */
253
+ modelValue: {
254
+ type: NumberConstructor;
255
+ required: true;
256
+ };
257
+ /** The value with the knob turned all the way down. */
258
+ min: {
259
+ type: NumberConstructor;
260
+ required: true;
261
+ };
262
+ /** The value with the knob turned all the way up. */
263
+ max: {
264
+ type: NumberConstructor;
265
+ required: true;
266
+ };
267
+ /** Granularity of the value. @default 1 */
268
+ step: {
269
+ type: NumberConstructor;
270
+ default: number;
271
+ };
272
+ /** How the value is distributed across the travel. @default linearScale */
273
+ scale: {
274
+ type: PropType<Scale>;
275
+ default: () => Scale;
276
+ };
277
+ /**
278
+ * The value a double click restores. `null` turns the double click off.
279
+ * @default startValue
280
+ */
281
+ resetValue: {
282
+ type: PropType<number | null>;
283
+ default: undefined;
284
+ };
285
+ /** Where the active arc starts. @default min */
286
+ startValue: NumberConstructor;
287
+ /** Width and height of the knob. Sets `--knob-size`. */
288
+ size: (NumberConstructor | StringConstructor)[];
289
+ /** The cursor to show while dragging. @default 'grabbing' */
290
+ dragCursor: {
291
+ type: StringConstructor;
292
+ default: string;
293
+ };
294
+ /** How much one notch of the wheel moves the value. `null` turns it off. */
295
+ wheel: {
296
+ type: PropType<ModifierValue<InputEventOption> | null>;
297
+ default: () => ModifierValue<InputEventOption>;
298
+ };
299
+ /** How much one arrow key press moves the value. `null` turns it off. */
300
+ keyboard: {
301
+ type: PropType<ModifierValue<InputEventOption> | null>;
302
+ default: () => ModifierValue<InputEventOption>;
303
+ };
304
+ /** How much a drag moves the value, per modifier key. */
305
+ dragSensitivity: {
306
+ type: PropType<ModifierValue<number>>;
307
+ default: () => ModifierValue<number>;
308
+ };
309
+ /** Hide the cursor while dragging and read the movement directly. */
310
+ pointerLock: BooleanConstructor;
311
+ /** Make the knob unchangeable and remove it from the tab order. */
312
+ disabled: BooleanConstructor;
313
+ /** Make the knob unchangeable while leaving it focusable. */
314
+ readonly: BooleanConstructor;
315
+ /**
316
+ * How long after the last wheel notch or arrow key a change counts as over,
317
+ * in milliseconds, for `change-end`.
318
+ * @default 500
319
+ */
320
+ changeEndDelay: {
321
+ type: NumberConstructor;
322
+ default: number;
323
+ };
324
+ /** How far the knob turns from `min` to `max`, in degrees. @default 270 */
325
+ angleRange: {
326
+ type: NumberConstructor;
327
+ default: number;
328
+ };
329
+ };
330
+ type KnobProps = ExtractPublicPropTypes<typeof knobProps>;
201
331
  /**
202
332
  * Interactive rotary knob, drawn in SVG by `KnobSVGRoot` and the parts inside
203
333
  * it. Bind the value with `v-model`.
@@ -228,16 +358,23 @@ export declare const Knob: import("vue").DefineComponent<import("vue").ExtractPr
228
358
  type: PropType<Scale>;
229
359
  default: () => Scale;
230
360
  };
231
- /** The value a double click restores. @default min */
232
- defaultValue: NumberConstructor;
361
+ /**
362
+ * The value a double click restores. `null` turns the double click off.
363
+ * @default startValue
364
+ */
365
+ resetValue: {
366
+ type: PropType<number | null>;
367
+ default: undefined;
368
+ };
233
369
  /** Where the active arc starts. @default min */
234
370
  startValue: NumberConstructor;
235
371
  /** Width and height of the knob. Sets `--knob-size`. */
236
- size: (StringConstructor | NumberConstructor)[];
237
- /** The cursor to show while dragging. @default { cursor: 'grabbing' } */
238
- externalStyles: PropType<{
239
- cursor?: string;
240
- }>;
372
+ size: (NumberConstructor | StringConstructor)[];
373
+ /** The cursor to show while dragging. @default 'grabbing' */
374
+ dragCursor: {
375
+ type: StringConstructor;
376
+ default: string;
377
+ };
241
378
  /** How much one notch of the wheel moves the value. `null` turns it off. */
242
379
  wheel: {
243
380
  type: PropType<ModifierValue<InputEventOption> | null>;
@@ -255,15 +392,19 @@ export declare const Knob: import("vue").DefineComponent<import("vue").ExtractPr
255
392
  };
256
393
  /** Hide the cursor while dragging and read the movement directly. */
257
394
  pointerLock: BooleanConstructor;
258
- /** Restore `defaultValue` on a double click. @default true */
259
- enableDoubleClickDefault: {
260
- type: BooleanConstructor;
261
- default: boolean;
262
- };
263
395
  /** Make the knob unchangeable and remove it from the tab order. */
264
396
  disabled: BooleanConstructor;
265
397
  /** Make the knob unchangeable while leaving it focusable. */
266
398
  readonly: BooleanConstructor;
399
+ /**
400
+ * How long after the last wheel notch or arrow key a change counts as over,
401
+ * in milliseconds, for `change-end`.
402
+ * @default 500
403
+ */
404
+ changeEndDelay: {
405
+ type: NumberConstructor;
406
+ default: number;
407
+ };
267
408
  /** How far the knob turns from `min` to `max`, in degrees. @default 270 */
268
409
  angleRange: {
269
410
  type: NumberConstructor;
@@ -273,6 +414,13 @@ export declare const Knob: import("vue").DefineComponent<import("vue").ExtractPr
273
414
  [key: string]: any;
274
415
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
275
416
  'update:modelValue': (value: number) => boolean;
417
+ /**
418
+ * A change of the value started, with the value before it and what it is
419
+ * made with.
420
+ */
421
+ changeStart: (value: number, _source: ChangeSource) => boolean;
422
+ /** The change ended, with the value it ended on. */
423
+ changeEnd: (value: number, _source: ChangeSource) => boolean;
276
424
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
277
425
  /** The current value. Bind it with `v-model`. */
278
426
  modelValue: {
@@ -299,16 +447,23 @@ export declare const Knob: import("vue").DefineComponent<import("vue").ExtractPr
299
447
  type: PropType<Scale>;
300
448
  default: () => Scale;
301
449
  };
302
- /** The value a double click restores. @default min */
303
- defaultValue: NumberConstructor;
450
+ /**
451
+ * The value a double click restores. `null` turns the double click off.
452
+ * @default startValue
453
+ */
454
+ resetValue: {
455
+ type: PropType<number | null>;
456
+ default: undefined;
457
+ };
304
458
  /** Where the active arc starts. @default min */
305
459
  startValue: NumberConstructor;
306
460
  /** Width and height of the knob. Sets `--knob-size`. */
307
- size: (StringConstructor | NumberConstructor)[];
308
- /** The cursor to show while dragging. @default { cursor: 'grabbing' } */
309
- externalStyles: PropType<{
310
- cursor?: string;
311
- }>;
461
+ size: (NumberConstructor | StringConstructor)[];
462
+ /** The cursor to show while dragging. @default 'grabbing' */
463
+ dragCursor: {
464
+ type: StringConstructor;
465
+ default: string;
466
+ };
312
467
  /** How much one notch of the wheel moves the value. `null` turns it off. */
313
468
  wheel: {
314
469
  type: PropType<ModifierValue<InputEventOption> | null>;
@@ -326,15 +481,19 @@ export declare const Knob: import("vue").DefineComponent<import("vue").ExtractPr
326
481
  };
327
482
  /** Hide the cursor while dragging and read the movement directly. */
328
483
  pointerLock: BooleanConstructor;
329
- /** Restore `defaultValue` on a double click. @default true */
330
- enableDoubleClickDefault: {
331
- type: BooleanConstructor;
332
- default: boolean;
333
- };
334
484
  /** Make the knob unchangeable and remove it from the tab order. */
335
485
  disabled: BooleanConstructor;
336
486
  /** Make the knob unchangeable while leaving it focusable. */
337
487
  readonly: BooleanConstructor;
488
+ /**
489
+ * How long after the last wheel notch or arrow key a change counts as over,
490
+ * in milliseconds, for `change-end`.
491
+ * @default 500
492
+ */
493
+ changeEndDelay: {
494
+ type: NumberConstructor;
495
+ default: number;
496
+ };
338
497
  /** How far the knob turns from `min` to `max`, in degrees. @default 270 */
339
498
  angleRange: {
340
499
  type: NumberConstructor;
@@ -342,16 +501,20 @@ export declare const Knob: import("vue").DefineComponent<import("vue").ExtractPr
342
501
  };
343
502
  }>> & Readonly<{
344
503
  "onUpdate:modelValue"?: ((value: number) => any) | undefined;
504
+ onChangeStart?: ((value: number, _source: ChangeSource) => any) | undefined;
505
+ onChangeEnd?: ((value: number, _source: ChangeSource) => any) | undefined;
345
506
  }>, {
346
- disabled: boolean;
347
507
  wheel: ModifierValue<InputEventOption> | null;
348
508
  step: number;
509
+ disabled: boolean;
510
+ scale: Scale;
511
+ dragCursor: string;
349
512
  keyboard: ModifierValue<InputEventOption> | null;
350
513
  dragSensitivity: ModifierValue<number>;
351
514
  readonly: boolean;
352
- scale: Scale;
515
+ changeEndDelay: number;
353
516
  pointerLock: boolean;
354
- enableDoubleClickDefault: boolean;
517
+ resetValue: number | null;
355
518
  angleRange: number;
356
519
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
357
520
  //#endregion
@@ -363,7 +526,7 @@ export declare const KnobActiveLine: import("vue").DefineComponent<import("vue")
363
526
  default: string;
364
527
  };
365
528
  strokeWidth: {
366
- type: (StringConstructor | NumberConstructor)[];
529
+ type: (NumberConstructor | StringConstructor)[];
367
530
  default: number;
368
531
  };
369
532
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
@@ -374,7 +537,7 @@ export declare const KnobActiveLine: import("vue").DefineComponent<import("vue")
374
537
  default: string;
375
538
  };
376
539
  strokeWidth: {
377
- type: (StringConstructor | NumberConstructor)[];
540
+ type: (NumberConstructor | StringConstructor)[];
378
541
  default: number;
379
542
  };
380
543
  }>> & Readonly<{}>, {
@@ -393,7 +556,7 @@ export declare const KnobInactiveLine: import("vue").DefineComponent<import("vue
393
556
  default: string;
394
557
  };
395
558
  strokeWidth: {
396
- type: (StringConstructor | NumberConstructor)[];
559
+ type: (NumberConstructor | StringConstructor)[];
397
560
  default: number;
398
561
  };
399
562
  }>, () => (import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
@@ -404,7 +567,7 @@ export declare const KnobInactiveLine: import("vue").DefineComponent<import("vue
404
567
  default: string;
405
568
  };
406
569
  strokeWidth: {
407
- type: (StringConstructor | NumberConstructor)[];
570
+ type: (NumberConstructor | StringConstructor)[];
408
571
  default: number;
409
572
  };
410
573
  }>> & Readonly<{}>, {
@@ -422,75 +585,107 @@ export declare const KnobSVGRoot: import("vue").DefineComponent<{}, () => import
422
585
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
423
586
  //#endregion
424
587
  //#region src/components/Knob/KnobThumb.d.ts
588
+ declare const knobThumbProps: {
589
+ /** Fill colour of the circle. @default 'currentColor' */
590
+ color: {
591
+ type: StringConstructor;
592
+ default: string;
593
+ };
594
+ /** Colour of the line that points at the value. @default 'currentColor' */
595
+ lineColor: {
596
+ type: StringConstructor;
597
+ default: string;
598
+ };
599
+ /** Diameter of the circle, as a percentage of the knob. @default 84 */
600
+ size: {
601
+ type: NumberConstructor;
602
+ default: number;
603
+ };
604
+ /** Thickness of the line, as a percentage of the knob. @default 6 */
605
+ lineWeight: {
606
+ type: NumberConstructor;
607
+ default: number;
608
+ };
609
+ /** How far down the line reaches, as a percentage. @default 35 */
610
+ lineLength: {
611
+ type: NumberConstructor;
612
+ default: number;
613
+ };
614
+ /** Classes for the line that points at the value. */
615
+ classes: PropType<{
616
+ line?: string;
617
+ }>;
618
+ };
619
+ type KnobThumbProps = ExtractPublicPropTypes<typeof knobThumbProps>;
425
620
  /** The circle that turns with the value, and the line on it that points at it. */
426
621
  export declare const KnobThumb: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
427
622
  /** Fill colour of the circle. @default 'currentColor' */
428
- thumb: {
623
+ color: {
429
624
  type: StringConstructor;
430
625
  default: string;
431
626
  };
432
627
  /** Colour of the line that points at the value. @default 'currentColor' */
433
- thumbLine: {
628
+ lineColor: {
434
629
  type: StringConstructor;
435
630
  default: string;
436
631
  };
437
632
  /** Diameter of the circle, as a percentage of the knob. @default 84 */
438
- thumbSize: {
633
+ size: {
439
634
  type: NumberConstructor;
440
635
  default: number;
441
636
  };
442
637
  /** Thickness of the line, as a percentage of the knob. @default 6 */
443
- thumbLineWeight: {
638
+ lineWeight: {
444
639
  type: NumberConstructor;
445
640
  default: number;
446
641
  };
447
642
  /** How far down the line reaches, as a percentage. @default 35 */
448
- thumbLineLength: {
643
+ lineLength: {
449
644
  type: NumberConstructor;
450
645
  default: number;
451
646
  };
452
647
  /** Classes for the line that points at the value. */
453
648
  classes: PropType<{
454
- thumbLine?: string;
649
+ line?: string;
455
650
  }>;
456
651
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
457
652
  [key: string]: any;
458
653
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
459
654
  /** Fill colour of the circle. @default 'currentColor' */
460
- thumb: {
655
+ color: {
461
656
  type: StringConstructor;
462
657
  default: string;
463
658
  };
464
659
  /** Colour of the line that points at the value. @default 'currentColor' */
465
- thumbLine: {
660
+ lineColor: {
466
661
  type: StringConstructor;
467
662
  default: string;
468
663
  };
469
664
  /** Diameter of the circle, as a percentage of the knob. @default 84 */
470
- thumbSize: {
665
+ size: {
471
666
  type: NumberConstructor;
472
667
  default: number;
473
668
  };
474
669
  /** Thickness of the line, as a percentage of the knob. @default 6 */
475
- thumbLineWeight: {
670
+ lineWeight: {
476
671
  type: NumberConstructor;
477
672
  default: number;
478
673
  };
479
674
  /** How far down the line reaches, as a percentage. @default 35 */
480
- thumbLineLength: {
675
+ lineLength: {
481
676
  type: NumberConstructor;
482
677
  default: number;
483
678
  };
484
679
  /** Classes for the line that points at the value. */
485
680
  classes: PropType<{
486
- thumbLine?: string;
681
+ line?: string;
487
682
  }>;
488
683
  }>> & Readonly<{}>, {
489
- thumb: string;
490
- thumbLine: string;
491
- thumbSize: number;
492
- thumbLineWeight: number;
493
- thumbLineLength: number;
684
+ color: string;
685
+ size: number;
686
+ lineColor: string;
687
+ lineWeight: number;
688
+ lineLength: number;
494
689
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
495
690
  //#endregion
496
691
  //#region src/components/NumberInput/context.d.ts
@@ -506,6 +701,7 @@ interface NumberInputContextValue {
506
701
  readonly drag: number | null;
507
702
  readonly dragSensitivity: ModifierValue<number>;
508
703
  readonly pointerLock: boolean;
704
+ readonly dragCursor: string;
509
705
  readonly selectOnFocus: 'all' | 'number' | 'none';
510
706
  readonly unformatOnFocus: boolean;
511
707
  readonly keepCaretOnStep: boolean;
@@ -534,8 +730,7 @@ interface NumberInputContextValue {
534
730
  export declare function useNumberInputContext(): NumberInputContextValue;
535
731
  //#endregion
536
732
  //#region src/components/NumberInput/NumberInput.d.ts
537
- /** Input with some useful functions for entering numbers. Bind it with `v-model`. */
538
- export declare const NumberInput: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
733
+ declare const numberInputProps: {
539
734
  /** The current value. Bind it with `v-model`. */
540
735
  modelValue: {
541
736
  type: NumberConstructor;
@@ -589,6 +784,11 @@ export declare const NumberInput: import("vue").DefineComponent<import("vue").Ex
589
784
  };
590
785
  /** Hide the cursor while dragging the stepper. */
591
786
  pointerLock: BooleanConstructor;
787
+ /** The cursor to show while dragging the stepper. @default 'ns-resize' */
788
+ dragCursor: {
789
+ type: StringConstructor;
790
+ default: string;
791
+ };
592
792
  /** Select the text when the field takes focus. @default 'none' */
593
793
  selectOnFocus: {
594
794
  type: PropType<"all" | "number" | "none">;
@@ -607,11 +807,19 @@ export declare const NumberInput: import("vue").DefineComponent<import("vue").Ex
607
807
  disabled: BooleanConstructor;
608
808
  /** Make the value unchangeable while leaving the field focusable. */
609
809
  readonly: BooleanConstructor;
610
- }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
611
- [key: string]: any;
612
- }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
613
- 'update:modelValue': (value: number) => boolean;
614
- }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
810
+ /**
811
+ * How long after the last wheel notch, arrow key or typed character a change
812
+ * counts as over, in milliseconds, for `change-end`.
813
+ * @default 500
814
+ */
815
+ changeEndDelay: {
816
+ type: NumberConstructor;
817
+ default: number;
818
+ };
819
+ };
820
+ type NumberInputProps = ExtractPublicPropTypes<typeof numberInputProps>;
821
+ /** Input with some useful functions for entering numbers. Bind it with `v-model`. */
822
+ export declare const NumberInput: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
615
823
  /** The current value. Bind it with `v-model`. */
616
824
  modelValue: {
617
825
  type: NumberConstructor;
@@ -665,6 +873,11 @@ export declare const NumberInput: import("vue").DefineComponent<import("vue").Ex
665
873
  };
666
874
  /** Hide the cursor while dragging the stepper. */
667
875
  pointerLock: BooleanConstructor;
876
+ /** The cursor to show while dragging the stepper. @default 'ns-resize' */
877
+ dragCursor: {
878
+ type: StringConstructor;
879
+ default: string;
880
+ };
668
881
  /** Select the text when the field takes focus. @default 'none' */
669
882
  selectOnFocus: {
670
883
  type: PropType<"all" | "number" | "none">;
@@ -683,51 +896,162 @@ export declare const NumberInput: import("vue").DefineComponent<import("vue").Ex
683
896
  disabled: BooleanConstructor;
684
897
  /** Make the value unchangeable while leaving the field focusable. */
685
898
  readonly: BooleanConstructor;
686
- }>> & Readonly<{
687
- "onUpdate:modelValue"?: ((value: number) => any) | undefined;
688
- }>, {
689
- disabled: boolean;
690
- drag: number | null;
691
- wheel: import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null;
692
- step: number;
693
- keyboard: import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null;
694
- dragSensitivity: import("@tremolo-ui/dom").ModifierValue<number>;
695
- readonly: boolean;
696
- scale: Scale;
697
- pointerLock: boolean;
698
- unformatOnFocus: boolean;
699
- keepCaretOnStep: boolean;
700
- format: (value: number) => string;
701
- parse: (text: string) => number;
702
- clampValue: boolean;
703
- selectOnFocus: "number" | "none" | "all";
704
- blurOnEnter: boolean;
705
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
706
- //#endregion
707
- //#region src/components/NumberInput/NumberInputDecrementStepper.d.ts
708
- /** Lowers the value by one `step`, repeating while held. */
709
- export declare const NumberInputDecrementStepper: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
710
- [key: string]: any;
711
- }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
712
- //#endregion
713
- //#region src/components/NumberInput/NumberInputField.d.ts
714
- /**
715
- * The text field, and the only place the value can be typed. While the user
716
- * types, their own text stands rather than `format(value)`.
717
- */
718
- export declare const NumberInputField: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
719
- [key: string]: any;
720
- }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
721
- //#endregion
722
- //#region src/components/NumberInput/NumberInputIncrementStepper.d.ts
723
- /** Raises the value by one `step`, repeating while held. */
724
- export declare const NumberInputIncrementStepper: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
899
+ /**
900
+ * How long after the last wheel notch, arrow key or typed character a change
901
+ * counts as over, in milliseconds, for `change-end`.
902
+ * @default 500
903
+ */
904
+ changeEndDelay: {
905
+ type: NumberConstructor;
906
+ default: number;
907
+ };
908
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
725
909
  [key: string]: any;
726
- }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
727
- //#endregion
728
- //#region src/components/NumberInput/NumberInputStepper.d.ts
729
- /**
730
- * The area the steppers sit in, and a drag handle in its own right: dragging
910
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
911
+ 'update:modelValue': (value: number) => boolean;
912
+ /**
913
+ * A change of the value started — a press on a stepper, the first wheel
914
+ * notch, arrow key or typed character — with the value before it and what
915
+ * it is made with.
916
+ */
917
+ changeStart: (value: number, _source: ChangeSource) => boolean;
918
+ /** The change ended, with the value it ended on. */
919
+ changeEnd: (value: number, _source: ChangeSource) => boolean;
920
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
921
+ /** The current value. Bind it with `v-model`. */
922
+ modelValue: {
923
+ type: NumberConstructor;
924
+ required: true;
925
+ };
926
+ /** The lowest value. Leave it out for no lower end. */
927
+ min: NumberConstructor;
928
+ /** The highest value. Leave it out for no upper end. */
929
+ max: NumberConstructor;
930
+ /** Granularity of the value. @default 1 */
931
+ step: {
932
+ type: NumberConstructor;
933
+ default: number;
934
+ };
935
+ /** How the value is distributed, for a `normalized` amount. */
936
+ scale: {
937
+ type: PropType<Scale>;
938
+ default: () => Scale;
939
+ };
940
+ /** The text shown for a value. @default String */
941
+ format: {
942
+ type: PropType<(value: number) => string>;
943
+ default: StringConstructor;
944
+ };
945
+ /** Read a value back out of the text. Has to undo `format`. */
946
+ parse: {
947
+ type: PropType<(text: string) => number>;
948
+ default: typeof parseNumberText;
949
+ };
950
+ /** Keep the value within `min` and `max` when committed or stepped. */
951
+ clampValue: {
952
+ type: BooleanConstructor;
953
+ default: boolean;
954
+ };
955
+ wheel: {
956
+ type: PropType<import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null>;
957
+ default: () => import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption>;
958
+ };
959
+ keyboard: {
960
+ type: PropType<import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null>;
961
+ default: () => import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption>;
962
+ };
963
+ dragSensitivity: {
964
+ type: PropType<import("@tremolo-ui/dom").ModifierValue<number>>;
965
+ default: () => import("@tremolo-ui/dom").ModifierValue<number>;
966
+ };
967
+ /** Pixels of vertical drag on the stepper per `step`. `null` turns it off. */
968
+ drag: {
969
+ type: PropType<number | null>;
970
+ default: number;
971
+ };
972
+ /** Hide the cursor while dragging the stepper. */
973
+ pointerLock: BooleanConstructor;
974
+ /** The cursor to show while dragging the stepper. @default 'ns-resize' */
975
+ dragCursor: {
976
+ type: StringConstructor;
977
+ default: string;
978
+ };
979
+ /** Select the text when the field takes focus. @default 'none' */
980
+ selectOnFocus: {
981
+ type: PropType<"all" | "number" | "none">;
982
+ default: string;
983
+ };
984
+ /** Show the plain value while the field has focus. */
985
+ unformatOnFocus: BooleanConstructor;
986
+ /** Put the caret back at the same digit after an arrow key step. */
987
+ keepCaretOnStep: BooleanConstructor;
988
+ /** Commit and leave the field on Enter. @default true */
989
+ blurOnEnter: {
990
+ type: BooleanConstructor;
991
+ default: boolean;
992
+ };
993
+ /** Make the input unchangeable and remove it from the tab order. */
994
+ disabled: BooleanConstructor;
995
+ /** Make the value unchangeable while leaving the field focusable. */
996
+ readonly: BooleanConstructor;
997
+ /**
998
+ * How long after the last wheel notch, arrow key or typed character a change
999
+ * counts as over, in milliseconds, for `change-end`.
1000
+ * @default 500
1001
+ */
1002
+ changeEndDelay: {
1003
+ type: NumberConstructor;
1004
+ default: number;
1005
+ };
1006
+ }>> & Readonly<{
1007
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
1008
+ onChangeStart?: ((value: number, _source: ChangeSource) => any) | undefined;
1009
+ onChangeEnd?: ((value: number, _source: ChangeSource) => any) | undefined;
1010
+ }>, {
1011
+ drag: number | null;
1012
+ wheel: import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null;
1013
+ step: number;
1014
+ disabled: boolean;
1015
+ scale: Scale;
1016
+ dragCursor: string;
1017
+ keyboard: import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null;
1018
+ dragSensitivity: import("@tremolo-ui/dom").ModifierValue<number>;
1019
+ readonly: boolean;
1020
+ changeEndDelay: number;
1021
+ format: (value: number) => string;
1022
+ parse: (text: string) => number;
1023
+ clampValue: boolean;
1024
+ pointerLock: boolean;
1025
+ selectOnFocus: "number" | "none" | "all";
1026
+ unformatOnFocus: boolean;
1027
+ keepCaretOnStep: boolean;
1028
+ blurOnEnter: boolean;
1029
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1030
+ //#endregion
1031
+ //#region src/components/NumberInput/NumberInputDecrementStepper.d.ts
1032
+ /** Lowers the value by one `step`, repeating while held. */
1033
+ export declare const NumberInputDecrementStepper: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
1034
+ [key: string]: any;
1035
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1036
+ //#endregion
1037
+ //#region src/components/NumberInput/NumberInputField.d.ts
1038
+ /**
1039
+ * The text field, and the only place the value can be typed. While the user
1040
+ * types, their own text stands rather than `format(value)`.
1041
+ */
1042
+ export declare const NumberInputField: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
1043
+ [key: string]: any;
1044
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1045
+ //#endregion
1046
+ //#region src/components/NumberInput/NumberInputIncrementStepper.d.ts
1047
+ /** Raises the value by one `step`, repeating while held. */
1048
+ export declare const NumberInputIncrementStepper: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
1049
+ [key: string]: any;
1050
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1051
+ //#endregion
1052
+ //#region src/components/NumberInput/NumberInputStepper.d.ts
1053
+ /**
1054
+ * The area the steppers sit in, and a drag handle in its own right: dragging
731
1055
  * it up and down moves the value one `step` every `drag` pixels.
732
1056
  */
733
1057
  export declare const NumberInputStepper: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
@@ -747,6 +1071,63 @@ interface KeyState {
747
1071
  }
748
1072
  /** What `keyProps` may return for one key. */
749
1073
  type KeyAttributes = HTMLAttributes & Record<`data-${string}`, string | number | boolean | undefined>;
1074
+ declare const pianoProps: {
1075
+ /** The notes drawn, from `first` to `last`. */
1076
+ noteRange: {
1077
+ type: PropType<NoteRange>;
1078
+ required: true;
1079
+ };
1080
+ /** Let a pointer slide from one key to the next. @default true */
1081
+ glissando: {
1082
+ type: BooleanConstructor;
1083
+ default: boolean;
1084
+ };
1085
+ /** Highest note that can sound. @default 127 */
1086
+ midiMax: {
1087
+ type: NumberConstructor;
1088
+ default: number;
1089
+ };
1090
+ /** Play notes from the computer keyboard. See `SHORTCUTS` in `@tremolo-ui/dom`. */
1091
+ keyboardShortcuts: PropType<KeyboardShortcuts>;
1092
+ /** Where keyboard shortcuts listen. @default 'root' */
1093
+ keyboardShortcutsScope: {
1094
+ type: PropType<KeyboardShortcutsScope>;
1095
+ default: string;
1096
+ };
1097
+ /** Follow the width of the parent element. */
1098
+ resizable: BooleanConstructor;
1099
+ /** Width of a white key in pixels. @default 40 */
1100
+ whiteKeyWidth: {
1101
+ type: NumberConstructor;
1102
+ default: number;
1103
+ };
1104
+ /** Space between two white keys, in pixels. @default 1 */
1105
+ keyGap: {
1106
+ type: NumberConstructor;
1107
+ default: number;
1108
+ };
1109
+ /** Width of a black key, as a fraction of a white one. @default 0.65 */
1110
+ blackKeyWidthRatio: {
1111
+ type: NumberConstructor;
1112
+ default: number;
1113
+ };
1114
+ /** Height of a black key, as a fraction of the keyboard. @default 0.6 */
1115
+ blackKeyHeightRatio: {
1116
+ type: NumberConstructor;
1117
+ default: number;
1118
+ };
1119
+ /** Classes for the label inside each key. */
1120
+ classes: PropType<{
1121
+ keyLabelWrapper?: string;
1122
+ keyLabel?: string;
1123
+ }>;
1124
+ /**
1125
+ * Extra attributes for one key, by note. The geometry of the key is
1126
+ * applied after the returned style and cannot be overridden.
1127
+ */
1128
+ keyProps: PropType<(note: number, state: KeyState) => KeyAttributes>;
1129
+ };
1130
+ type PianoProps = ExtractPublicPropTypes<typeof pianoProps>;
750
1131
  /**
751
1132
  * Customizable piano. The keys are drawn by the component; what goes inside
752
1133
  * one is the `label` slot, which receives the note and its state.
@@ -895,7 +1276,7 @@ interface PointsEditorContextValue {
895
1276
  readonly wheel: ModifierValue<InputEventOption> | null;
896
1277
  readonly keyboard: ModifierValue<InputEventOption> | null;
897
1278
  readonly dragSensitivity: ModifierValue<number>;
898
- readonly cursor: string;
1279
+ readonly dragCursor: string;
899
1280
  readonly selectable: boolean;
900
1281
  /** Ids of the selected points. Always empty while `selectable` is off. */
901
1282
  readonly selection: readonly string[];
@@ -912,6 +1293,40 @@ interface PointsEditorContextValue {
912
1293
  export declare function usePointsEditorContext(): PointsEditorContextValue;
913
1294
  //#endregion
914
1295
  //#region src/components/PointsEditor/PointsEditor.d.ts
1296
+ declare const pointsEditorProps: {
1297
+ /** Make the points unchangeable and remove them from the tab order. */
1298
+ disabled: BooleanConstructor;
1299
+ /** Make the points unmovable. */
1300
+ readonly: BooleanConstructor;
1301
+ /** The cursor to show while dragging a point. @default 'grabbing' */
1302
+ dragCursor: {
1303
+ type: StringConstructor;
1304
+ default: string;
1305
+ };
1306
+ /** How much one wheel notch moves the focused point. */
1307
+ wheel: {
1308
+ type: PropType<ModifierValue<InputEventOption> | null>;
1309
+ default: () => ModifierValue<InputEventOption>;
1310
+ };
1311
+ /** How much one arrow key press moves a point. */
1312
+ keyboard: {
1313
+ type: PropType<ModifierValue<InputEventOption> | null>;
1314
+ default: () => ModifierValue<InputEventOption>;
1315
+ };
1316
+ /** How much a drag moves a point, per modifier key. */
1317
+ dragSensitivity: {
1318
+ type: PropType<ModifierValue<number>>;
1319
+ default: () => ModifierValue<number>;
1320
+ };
1321
+ /**
1322
+ * Let points be selected, and a selection be moved as one. A selection
1323
+ * updates several points in the same tick.
1324
+ */
1325
+ selectable: BooleanConstructor;
1326
+ /** Ids of the selected points. Bind it with `v-model:selection`. */
1327
+ selection: PropType<string[]>;
1328
+ };
1329
+ type PointsEditorProps = ExtractPublicPropTypes<typeof pointsEditorProps>;
915
1330
  /**
916
1331
  * Multiple point controller. Bind the selection with `v-model:selection` to
917
1332
  * hold it yourself; the editor keeps its own otherwise.
@@ -921,10 +1336,11 @@ export declare const PointsEditor: import("vue").DefineComponent<import("vue").E
921
1336
  disabled: BooleanConstructor;
922
1337
  /** Make the points unmovable. */
923
1338
  readonly: BooleanConstructor;
924
- /** The cursor to show while dragging a point. @default { cursor: 'grabbing' } */
925
- externalStyles: PropType<{
926
- cursor?: string;
927
- }>;
1339
+ /** The cursor to show while dragging a point. @default 'grabbing' */
1340
+ dragCursor: {
1341
+ type: StringConstructor;
1342
+ default: string;
1343
+ };
928
1344
  /** How much one wheel notch moves the focused point. */
929
1345
  wheel: {
930
1346
  type: PropType<ModifierValue<InputEventOption> | null>;
@@ -956,10 +1372,11 @@ export declare const PointsEditor: import("vue").DefineComponent<import("vue").E
956
1372
  disabled: BooleanConstructor;
957
1373
  /** Make the points unmovable. */
958
1374
  readonly: BooleanConstructor;
959
- /** The cursor to show while dragging a point. @default { cursor: 'grabbing' } */
960
- externalStyles: PropType<{
961
- cursor?: string;
962
- }>;
1375
+ /** The cursor to show while dragging a point. @default 'grabbing' */
1376
+ dragCursor: {
1377
+ type: StringConstructor;
1378
+ default: string;
1379
+ };
963
1380
  /** How much one wheel notch moves the focused point. */
964
1381
  wheel: {
965
1382
  type: PropType<ModifierValue<InputEventOption> | null>;
@@ -985,8 +1402,9 @@ export declare const PointsEditor: import("vue").DefineComponent<import("vue").E
985
1402
  }>> & Readonly<{
986
1403
  "onUpdate:selection"?: ((selection: string[]) => any) | undefined;
987
1404
  }>, {
988
- disabled: boolean;
989
1405
  wheel: ModifierValue<InputEventOption> | null;
1406
+ disabled: boolean;
1407
+ dragCursor: string;
990
1408
  keyboard: ModifierValue<InputEventOption> | null;
991
1409
  dragSensitivity: ModifierValue<number>;
992
1410
  readonly: boolean;
@@ -1010,6 +1428,55 @@ export declare const PointsEditorContainer: import("vue").DefineComponent<{}, ()
1010
1428
  //#endregion
1011
1429
  //#region src/components/PointsEditor/PointsEditorPoint.d.ts
1012
1430
  type PerAxis$1 = string | Partial<Record<'x' | 'y', string>>;
1431
+ declare const pointsEditorPointProps: {
1432
+ /** Where the point is, with `y` growing downwards. Bind it with `v-model`. */
1433
+ modelValue: {
1434
+ type: PropType<PointPosition>;
1435
+ required: true;
1436
+ };
1437
+ /** How the selection refers to this point. One is generated when left out. */
1438
+ id: StringConstructor;
1439
+ /** The lowest position the point can take, per axis. */
1440
+ min: PropType<Partial<PointPosition>>;
1441
+ /** The highest position the point can take, per axis. */
1442
+ max: PropType<Partial<PointPosition>>;
1443
+ /** Sets `--color`, for the theme to colour the point with. */
1444
+ color: StringConstructor;
1445
+ /** Overrides the `disabled` of `PointsEditor`. */
1446
+ disabled: {
1447
+ type: BooleanConstructor;
1448
+ default: undefined;
1449
+ };
1450
+ /** Overrides the `readonly` of `PointsEditor`. */
1451
+ readonly: {
1452
+ type: BooleanConstructor;
1453
+ default: undefined;
1454
+ };
1455
+ /**
1456
+ * How long after the last wheel notch or arrow key a change counts as over,
1457
+ * in milliseconds, for `change-end`.
1458
+ * @default 500
1459
+ */
1460
+ changeEndDelay: {
1461
+ type: NumberConstructor;
1462
+ default: number;
1463
+ };
1464
+ /** Overrides the `wheel` of `PointsEditor`; `null` turns it off. */
1465
+ wheel: {
1466
+ type: PropType<ModifierValue<InputEventOption> | null>;
1467
+ default: undefined;
1468
+ };
1469
+ /** Overrides the `keyboard` of `PointsEditor`; `null` turns it off. */
1470
+ keyboard: {
1471
+ type: PropType<ModifierValue<InputEventOption> | null>;
1472
+ default: undefined;
1473
+ };
1474
+ /** The accessible name of each axis, or one for both. */
1475
+ ariaLabel: PropType<PerAxis$1>;
1476
+ /** What the value of each axis means, or one for both. */
1477
+ ariaValuetext: PropType<PerAxis$1>;
1478
+ };
1479
+ type PointsEditorPointProps = ExtractPublicPropTypes<typeof pointsEditorPointProps>;
1013
1480
  /** One point, bound with `v-model` as `{ x, y }` from 0 to 1. */
1014
1481
  export declare const PointsEditorPoint: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
1015
1482
  /** Where the point is, with `y` growing downwards. Bind it with `v-model`. */
@@ -1035,6 +1502,15 @@ export declare const PointsEditorPoint: import("vue").DefineComponent<import("vu
1035
1502
  type: BooleanConstructor;
1036
1503
  default: undefined;
1037
1504
  };
1505
+ /**
1506
+ * How long after the last wheel notch or arrow key a change counts as over,
1507
+ * in milliseconds, for `change-end`.
1508
+ * @default 500
1509
+ */
1510
+ changeEndDelay: {
1511
+ type: NumberConstructor;
1512
+ default: number;
1513
+ };
1038
1514
  /** Overrides the `wheel` of `PointsEditor`; `null` turns it off. */
1039
1515
  wheel: {
1040
1516
  type: PropType<ModifierValue<InputEventOption> | null>;
@@ -1053,8 +1529,15 @@ export declare const PointsEditorPoint: import("vue").DefineComponent<import("vu
1053
1529
  [key: string]: any;
1054
1530
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
1055
1531
  'update:modelValue': (value: PointPosition) => boolean;
1056
- dragStart: (value: PointPosition) => boolean;
1057
- dragEnd: (value: PointPosition) => boolean;
1532
+ /**
1533
+ * A change of this point started — a drag on it, the first wheel notch or
1534
+ * arrow key while it has the focus — with where it is and what the change
1535
+ * is made with. The points that move along with a selection report
1536
+ * through `update:modelValue` only.
1537
+ */
1538
+ changeStart: (value: PointPosition, _source: ChangeSource) => boolean;
1539
+ /** The change ended, with where the point is. */
1540
+ changeEnd: (value: PointPosition, _source: ChangeSource) => boolean;
1058
1541
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1059
1542
  /** Where the point is, with `y` growing downwards. Bind it with `v-model`. */
1060
1543
  modelValue: {
@@ -1079,6 +1562,15 @@ export declare const PointsEditorPoint: import("vue").DefineComponent<import("vu
1079
1562
  type: BooleanConstructor;
1080
1563
  default: undefined;
1081
1564
  };
1565
+ /**
1566
+ * How long after the last wheel notch or arrow key a change counts as over,
1567
+ * in milliseconds, for `change-end`.
1568
+ * @default 500
1569
+ */
1570
+ changeEndDelay: {
1571
+ type: NumberConstructor;
1572
+ default: number;
1573
+ };
1082
1574
  /** Overrides the `wheel` of `PointsEditor`; `null` turns it off. */
1083
1575
  wheel: {
1084
1576
  type: PropType<ModifierValue<InputEventOption> | null>;
@@ -1095,13 +1587,14 @@ export declare const PointsEditorPoint: import("vue").DefineComponent<import("vu
1095
1587
  ariaValuetext: PropType<PerAxis$1>;
1096
1588
  }>> & Readonly<{
1097
1589
  "onUpdate:modelValue"?: ((value: PointPosition) => any) | undefined;
1098
- onDragStart?: ((value: PointPosition) => any) | undefined;
1099
- onDragEnd?: ((value: PointPosition) => any) | undefined;
1590
+ onChangeStart?: ((value: PointPosition, _source: ChangeSource) => any) | undefined;
1591
+ onChangeEnd?: ((value: PointPosition, _source: ChangeSource) => any) | undefined;
1100
1592
  }>, {
1101
- disabled: boolean;
1102
1593
  wheel: ModifierValue<InputEventOption> | null;
1594
+ disabled: boolean;
1103
1595
  keyboard: ModifierValue<InputEventOption> | null;
1104
1596
  readonly: boolean;
1597
+ changeEndDelay: number;
1105
1598
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1106
1599
  //#endregion
1107
1600
  //#region src/components/PointsEditor/PointsEditorSelectionBox.d.ts
@@ -1121,7 +1614,7 @@ interface SliderContextValue {
1121
1614
  readonly max: number;
1122
1615
  readonly step: number;
1123
1616
  readonly scale: Scale;
1124
- readonly vertical: boolean;
1617
+ readonly orientation: 'horizontal' | 'vertical';
1125
1618
  readonly reverse: boolean;
1126
1619
  readonly disabled: boolean;
1127
1620
  readonly readonly: boolean;
@@ -1138,6 +1631,74 @@ interface SliderContextValue {
1138
1631
  export declare function useSliderContext(): SliderContextValue;
1139
1632
  //#endregion
1140
1633
  //#region src/components/Slider/Slider.d.ts
1634
+ declare const sliderProps: {
1635
+ /** The current value. Bind it with `v-model`. */
1636
+ modelValue: {
1637
+ type: NumberConstructor;
1638
+ required: true;
1639
+ };
1640
+ /** The value at the start of the travel. */
1641
+ min: {
1642
+ type: NumberConstructor;
1643
+ required: true;
1644
+ };
1645
+ /** The value at the end of the travel. */
1646
+ max: {
1647
+ type: NumberConstructor;
1648
+ required: true;
1649
+ };
1650
+ /** Granularity of the value. @default 1 */
1651
+ step: {
1652
+ type: NumberConstructor;
1653
+ default: number;
1654
+ };
1655
+ /** How the value is distributed across the travel. @default linearScale */
1656
+ scale: {
1657
+ type: PropType<Scale>;
1658
+ default: () => Scale;
1659
+ };
1660
+ /**
1661
+ * Which way the slider runs. A vertical slider grows upwards.
1662
+ * @default 'horizontal'
1663
+ */
1664
+ orientation: {
1665
+ type: PropType<"horizontal" | "vertical">;
1666
+ default: string;
1667
+ };
1668
+ /** Grow the value the other way. */
1669
+ reverse: BooleanConstructor;
1670
+ /** The cursor to show while dragging. @default 'pointer' */
1671
+ dragCursor: {
1672
+ type: StringConstructor;
1673
+ default: string;
1674
+ };
1675
+ wheel: {
1676
+ type: PropType<import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null>;
1677
+ default: () => import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption>;
1678
+ };
1679
+ keyboard: {
1680
+ type: PropType<import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null>;
1681
+ default: () => import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption>;
1682
+ };
1683
+ dragSensitivity: {
1684
+ type: PropType<import("@tremolo-ui/dom").ModifierValue<number>>;
1685
+ default: () => import("@tremolo-ui/dom").ModifierValue<number>;
1686
+ };
1687
+ /** Make the slider unchangeable and remove it from the tab order. */
1688
+ disabled: BooleanConstructor;
1689
+ /** Make the value unchangeable. */
1690
+ readonly: BooleanConstructor;
1691
+ /**
1692
+ * How long after the last wheel notch or arrow key a change counts as over,
1693
+ * in milliseconds, for `change-end`.
1694
+ * @default 500
1695
+ */
1696
+ changeEndDelay: {
1697
+ type: NumberConstructor;
1698
+ default: number;
1699
+ };
1700
+ };
1701
+ type SliderProps = ExtractPublicPropTypes<typeof sliderProps>;
1141
1702
  /** Customizable slider. Bind the value with `v-model`. */
1142
1703
  export declare const Slider: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
1143
1704
  /** The current value. Bind it with `v-model`. */
@@ -1165,14 +1726,21 @@ export declare const Slider: import("vue").DefineComponent<import("vue").Extract
1165
1726
  type: PropType<Scale>;
1166
1727
  default: () => Scale;
1167
1728
  };
1168
- /** Run the slider vertically, with the value growing upwards. */
1169
- vertical: BooleanConstructor;
1729
+ /**
1730
+ * Which way the slider runs. A vertical slider grows upwards.
1731
+ * @default 'horizontal'
1732
+ */
1733
+ orientation: {
1734
+ type: PropType<"horizontal" | "vertical">;
1735
+ default: string;
1736
+ };
1170
1737
  /** Grow the value the other way. */
1171
1738
  reverse: BooleanConstructor;
1172
- /** The cursor to show while dragging. @default { cursor: 'pointer' } */
1173
- externalStyles: PropType<{
1174
- cursor?: string;
1175
- }>;
1739
+ /** The cursor to show while dragging. @default 'pointer' */
1740
+ dragCursor: {
1741
+ type: StringConstructor;
1742
+ default: string;
1743
+ };
1176
1744
  wheel: {
1177
1745
  type: PropType<import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null>;
1178
1746
  default: () => import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption>;
@@ -1189,14 +1757,26 @@ export declare const Slider: import("vue").DefineComponent<import("vue").Extract
1189
1757
  disabled: BooleanConstructor;
1190
1758
  /** Make the value unchangeable. */
1191
1759
  readonly: BooleanConstructor;
1760
+ /**
1761
+ * How long after the last wheel notch or arrow key a change counts as over,
1762
+ * in milliseconds, for `change-end`.
1763
+ * @default 500
1764
+ */
1765
+ changeEndDelay: {
1766
+ type: NumberConstructor;
1767
+ default: number;
1768
+ };
1192
1769
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
1193
1770
  [key: string]: any;
1194
1771
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
1195
1772
  'update:modelValue': (value: number) => boolean;
1196
- /** A drag started, with the value where the track was pressed. */
1197
- dragStart: (value: number) => boolean;
1198
- /** The drag ended, with the value it ended on. */
1199
- dragEnd: (value: number) => boolean;
1773
+ /**
1774
+ * A change of the value started, with the value before it and what it is
1775
+ * made with.
1776
+ */
1777
+ changeStart: (value: number, _source: ChangeSource) => boolean;
1778
+ /** The change ended, with the value it ended on. */
1779
+ changeEnd: (value: number, _source: ChangeSource) => boolean;
1200
1780
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1201
1781
  /** The current value. Bind it with `v-model`. */
1202
1782
  modelValue: {
@@ -1223,14 +1803,21 @@ export declare const Slider: import("vue").DefineComponent<import("vue").Extract
1223
1803
  type: PropType<Scale>;
1224
1804
  default: () => Scale;
1225
1805
  };
1226
- /** Run the slider vertically, with the value growing upwards. */
1227
- vertical: BooleanConstructor;
1806
+ /**
1807
+ * Which way the slider runs. A vertical slider grows upwards.
1808
+ * @default 'horizontal'
1809
+ */
1810
+ orientation: {
1811
+ type: PropType<"horizontal" | "vertical">;
1812
+ default: string;
1813
+ };
1228
1814
  /** Grow the value the other way. */
1229
1815
  reverse: BooleanConstructor;
1230
- /** The cursor to show while dragging. @default { cursor: 'pointer' } */
1231
- externalStyles: PropType<{
1232
- cursor?: string;
1233
- }>;
1816
+ /** The cursor to show while dragging. @default 'pointer' */
1817
+ dragCursor: {
1818
+ type: StringConstructor;
1819
+ default: string;
1820
+ };
1234
1821
  wheel: {
1235
1822
  type: PropType<import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null>;
1236
1823
  default: () => import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption>;
@@ -1247,27 +1834,49 @@ export declare const Slider: import("vue").DefineComponent<import("vue").Extract
1247
1834
  disabled: BooleanConstructor;
1248
1835
  /** Make the value unchangeable. */
1249
1836
  readonly: BooleanConstructor;
1837
+ /**
1838
+ * How long after the last wheel notch or arrow key a change counts as over,
1839
+ * in milliseconds, for `change-end`.
1840
+ * @default 500
1841
+ */
1842
+ changeEndDelay: {
1843
+ type: NumberConstructor;
1844
+ default: number;
1845
+ };
1250
1846
  }>> & Readonly<{
1251
1847
  "onUpdate:modelValue"?: ((value: number) => any) | undefined;
1252
- onDragStart?: ((value: number) => any) | undefined;
1253
- onDragEnd?: ((value: number) => any) | undefined;
1848
+ onChangeStart?: ((value: number, _source: ChangeSource) => any) | undefined;
1849
+ onChangeEnd?: ((value: number, _source: ChangeSource) => any) | undefined;
1254
1850
  }>, {
1255
- disabled: boolean;
1256
1851
  reverse: boolean;
1257
1852
  wheel: import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null;
1258
1853
  step: number;
1259
- vertical: boolean;
1854
+ disabled: boolean;
1855
+ scale: Scale;
1856
+ dragCursor: string;
1260
1857
  keyboard: import("@tremolo-ui/dom").ModifierValue<import("@tremolo-ui/dom").InputEventOption> | null;
1261
1858
  dragSensitivity: import("@tremolo-ui/dom").ModifierValue<number>;
1262
1859
  readonly: boolean;
1263
- scale: Scale;
1860
+ changeEndDelay: number;
1861
+ orientation: "horizontal" | "vertical";
1264
1862
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1265
1863
  //#endregion
1266
1864
  //#region src/components/Slider/SliderMarks.d.ts
1865
+ declare const sliderMarksProps: {
1866
+ /** Space between the marks and the track. Sets `--gap`. */
1867
+ gap: (NumberConstructor | StringConstructor)[];
1868
+ /**
1869
+ * Build the marks instead of writing `SliderMarksOption` out: a number
1870
+ * puts one every that many, `'step'` one every `step`. The default slot
1871
+ * is ignored while it is set.
1872
+ */
1873
+ options: PropType<MarksOptions>;
1874
+ };
1875
+ type SliderMarksProps = ExtractPublicPropTypes<typeof sliderMarksProps>;
1267
1876
  /** The marks along the slider: written out as options, or built from `options`. */
1268
1877
  export declare const SliderMarks: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
1269
1878
  /** Space between the marks and the track. Sets `--gap`. */
1270
- gap: (StringConstructor | NumberConstructor)[];
1879
+ gap: (NumberConstructor | StringConstructor)[];
1271
1880
  /**
1272
1881
  * Build the marks instead of writing `SliderMarksOption` out: a number
1273
1882
  * puts one every that many, `'step'` one every `step`. The default slot
@@ -1278,7 +1887,7 @@ export declare const SliderMarks: import("vue").DefineComponent<import("vue").Ex
1278
1887
  [key: string]: any;
1279
1888
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1280
1889
  /** Space between the marks and the track. Sets `--gap`. */
1281
- gap: (StringConstructor | NumberConstructor)[];
1890
+ gap: (NumberConstructor | StringConstructor)[];
1282
1891
  /**
1283
1892
  * Build the marks instead of writing `SliderMarksOption` out: a number
1284
1893
  * puts one every that many, `'step'` one every `step`. The default slot
@@ -1288,6 +1897,43 @@ export declare const SliderMarks: import("vue").DefineComponent<import("vue").Ex
1288
1897
  }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1289
1898
  //#endregion
1290
1899
  //#region src/components/Slider/SliderMarksOption.d.ts
1900
+ declare const sliderMarksOptionProps: {
1901
+ /** Where the mark sits, on the same scale as the thumb. */
1902
+ value: {
1903
+ type: NumberConstructor;
1904
+ required: true;
1905
+ };
1906
+ /** Draw the mark itself. @default true */
1907
+ mark: {
1908
+ type: BooleanConstructor;
1909
+ default: boolean;
1910
+ };
1911
+ /**
1912
+ * Text shown next to the mark. Leave it out to show the value; `null`
1913
+ * leaves the label out.
1914
+ */
1915
+ label: {
1916
+ type: PropType<number | string | null>;
1917
+ default: undefined;
1918
+ };
1919
+ /** Thickness of the mark. Sets `--thickness`. */
1920
+ thickness: (NumberConstructor | StringConstructor)[];
1921
+ /** Length of the mark. Sets `--length`. */
1922
+ length: (NumberConstructor | StringConstructor)[];
1923
+ /** Space between the mark and the label. Sets `--gap`. */
1924
+ gap: (NumberConstructor | StringConstructor)[];
1925
+ /** Classes for the mark and the label inside the option. */
1926
+ classes: PropType<{
1927
+ mark?: string;
1928
+ label?: string;
1929
+ }>;
1930
+ /** Styles for the mark and the label inside the option. */
1931
+ styles: PropType<{
1932
+ mark?: string;
1933
+ label?: string;
1934
+ }>;
1935
+ };
1936
+ type SliderMarksOptionProps = ExtractPublicPropTypes<typeof sliderMarksOptionProps>;
1291
1937
  /** One mark along the slider, and its label. */
1292
1938
  export declare const SliderMarksOption: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
1293
1939
  /** Where the mark sits, on the same scale as the thumb. */
@@ -1309,11 +1955,11 @@ export declare const SliderMarksOption: import("vue").DefineComponent<import("vu
1309
1955
  default: undefined;
1310
1956
  };
1311
1957
  /** Thickness of the mark. Sets `--thickness`. */
1312
- thickness: (StringConstructor | NumberConstructor)[];
1958
+ thickness: (NumberConstructor | StringConstructor)[];
1313
1959
  /** Length of the mark. Sets `--length`. */
1314
- length: (StringConstructor | NumberConstructor)[];
1960
+ length: (NumberConstructor | StringConstructor)[];
1315
1961
  /** Space between the mark and the label. Sets `--gap`. */
1316
- gap: (StringConstructor | NumberConstructor)[];
1962
+ gap: (NumberConstructor | StringConstructor)[];
1317
1963
  /** Classes for the mark and the label inside the option. */
1318
1964
  classes: PropType<{
1319
1965
  mark?: string;
@@ -1346,11 +1992,11 @@ export declare const SliderMarksOption: import("vue").DefineComponent<import("vu
1346
1992
  default: undefined;
1347
1993
  };
1348
1994
  /** Thickness of the mark. Sets `--thickness`. */
1349
- thickness: (StringConstructor | NumberConstructor)[];
1995
+ thickness: (NumberConstructor | StringConstructor)[];
1350
1996
  /** Length of the mark. Sets `--length`. */
1351
- length: (StringConstructor | NumberConstructor)[];
1997
+ length: (NumberConstructor | StringConstructor)[];
1352
1998
  /** Space between the mark and the label. Sets `--gap`. */
1353
- gap: (StringConstructor | NumberConstructor)[];
1999
+ gap: (NumberConstructor | StringConstructor)[];
1354
2000
  /** Classes for the mark and the label inside the option. */
1355
2001
  classes: PropType<{
1356
2002
  mark?: string;
@@ -1367,6 +2013,11 @@ export declare const SliderMarksOption: import("vue").DefineComponent<import("vu
1367
2013
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1368
2014
  //#endregion
1369
2015
  //#region src/components/Slider/SliderThumb.d.ts
2016
+ declare const sliderThumbProps: {
2017
+ /** Sets `--color`, for the theme to colour the thumb with. */
2018
+ color: StringConstructor;
2019
+ };
2020
+ type SliderThumbProps = ExtractPublicPropTypes<typeof sliderThumbProps>;
1370
2021
  /**
1371
2022
  * The thumb, placed at the value. The ARIA (`aria-label` and friends) lands
1372
2023
  * on the range input inside it, which is the control and takes the focus.
@@ -1382,27 +2033,38 @@ export declare const SliderThumb: import("vue").DefineComponent<import("vue").Ex
1382
2033
  }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1383
2034
  //#endregion
1384
2035
  //#region src/components/Slider/SliderTrack.d.ts
2036
+ declare const sliderTrackProps: {
2037
+ /** How long the track is along the axis the slider runs. Sets `--length`. */
2038
+ length: (NumberConstructor | StringConstructor)[];
2039
+ /** How thick the track is across that axis. Sets `--thickness`. */
2040
+ thickness: (NumberConstructor | StringConstructor)[];
2041
+ /** Colour of the part from `min` to the value. Sets `--active-color`. */
2042
+ activeColor: StringConstructor;
2043
+ /** Colour of the rest of the track. Sets `--inactive-color`. */
2044
+ inactiveColor: StringConstructor;
2045
+ };
2046
+ type SliderTrackProps = ExtractPublicPropTypes<typeof sliderTrackProps>;
1385
2047
  /** The track the thumb runs along, and what the pointer is measured against. */
1386
2048
  export declare const SliderTrack: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
1387
2049
  /** How long the track is along the axis the slider runs. Sets `--length`. */
1388
- length: (StringConstructor | NumberConstructor)[];
2050
+ length: (NumberConstructor | StringConstructor)[];
1389
2051
  /** How thick the track is across that axis. Sets `--thickness`. */
1390
- thickness: (StringConstructor | NumberConstructor)[];
1391
- /** Colour of the part from `min` to the value. Sets `--active`. */
1392
- active: StringConstructor;
1393
- /** Colour of the rest of the track. Sets `--inactive`. */
1394
- inactive: StringConstructor;
2052
+ thickness: (NumberConstructor | StringConstructor)[];
2053
+ /** Colour of the part from `min` to the value. Sets `--active-color`. */
2054
+ activeColor: StringConstructor;
2055
+ /** Colour of the rest of the track. Sets `--inactive-color`. */
2056
+ inactiveColor: StringConstructor;
1395
2057
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
1396
2058
  [key: string]: any;
1397
2059
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1398
2060
  /** How long the track is along the axis the slider runs. Sets `--length`. */
1399
- length: (StringConstructor | NumberConstructor)[];
2061
+ length: (NumberConstructor | StringConstructor)[];
1400
2062
  /** How thick the track is across that axis. Sets `--thickness`. */
1401
- thickness: (StringConstructor | NumberConstructor)[];
1402
- /** Colour of the part from `min` to the value. Sets `--active`. */
1403
- active: StringConstructor;
1404
- /** Colour of the rest of the track. Sets `--inactive`. */
1405
- inactive: StringConstructor;
2063
+ thickness: (NumberConstructor | StringConstructor)[];
2064
+ /** Colour of the part from `min` to the value. Sets `--active-color`. */
2065
+ activeColor: StringConstructor;
2066
+ /** Colour of the rest of the track. Sets `--inactive-color`. */
2067
+ inactiveColor: StringConstructor;
1406
2068
  }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1407
2069
  //#endregion
1408
2070
  //#region src/components/XYPad/context.d.ts
@@ -1429,6 +2091,69 @@ interface XYPadContextValue {
1429
2091
  export declare function useXYPadContext(): XYPadContextValue;
1430
2092
  //#endregion
1431
2093
  //#region src/components/XYPad/XYPad.d.ts
2094
+ declare const xyPadProps: {
2095
+ /** The current value as `[x, y]`. Bind it with `v-model`. */
2096
+ modelValue: {
2097
+ type: PropType<XY<number>>;
2098
+ required: true;
2099
+ };
2100
+ /** The value at the start of the travel, per axis. */
2101
+ min: {
2102
+ type: PropType<XYInput<number>>;
2103
+ required: true;
2104
+ };
2105
+ /** The value at the end of the travel, per axis. */
2106
+ max: {
2107
+ type: PropType<XYInput<number>>;
2108
+ required: true;
2109
+ };
2110
+ /** Granularity of the value, per axis. @default 1 */
2111
+ step: {
2112
+ type: PropType<XYInput<number>>;
2113
+ default: number;
2114
+ };
2115
+ /** How the value is distributed, per axis. @default linearScale */
2116
+ scale: {
2117
+ type: PropType<XYInput<Scale>>;
2118
+ default: () => Scale;
2119
+ };
2120
+ /** Grow the value the other way, per axis. `y` grows downwards unless reversed. */
2121
+ reverse: {
2122
+ type: PropType<XYInput<boolean>>;
2123
+ default: boolean;
2124
+ };
2125
+ /** The cursor to show while dragging. @default 'pointer' */
2126
+ dragCursor: {
2127
+ type: StringConstructor;
2128
+ default: string;
2129
+ };
2130
+ wheel: {
2131
+ type: PropType<ModifierValue<InputEventOption> | null>;
2132
+ default: () => ModifierValue<InputEventOption>;
2133
+ };
2134
+ keyboard: {
2135
+ type: PropType<ModifierValue<InputEventOption> | null>;
2136
+ default: () => ModifierValue<InputEventOption>;
2137
+ };
2138
+ dragSensitivity: {
2139
+ type: PropType<ModifierValue<number>>;
2140
+ default: () => ModifierValue<number>;
2141
+ };
2142
+ /** Make the pad unchangeable and remove it from the tab order. */
2143
+ disabled: BooleanConstructor;
2144
+ /** Make the value unchangeable. */
2145
+ readonly: BooleanConstructor;
2146
+ /**
2147
+ * How long after the last wheel notch or arrow key a change counts as over,
2148
+ * in milliseconds, for `change-end`.
2149
+ * @default 500
2150
+ */
2151
+ changeEndDelay: {
2152
+ type: NumberConstructor;
2153
+ default: number;
2154
+ };
2155
+ };
2156
+ type XYPadProps = ExtractPublicPropTypes<typeof xyPadProps>;
1432
2157
  /**
1433
2158
  * Two-dimensional slider. The per-axis settings are `[x, y]` tuples, and a
1434
2159
  * plain value applies to both axes. Bind the value with `v-model`.
@@ -1464,10 +2189,11 @@ export declare const XYPad: import("vue").DefineComponent<import("vue").ExtractP
1464
2189
  type: PropType<XYInput<boolean>>;
1465
2190
  default: boolean;
1466
2191
  };
1467
- /** The cursor to show while dragging. @default { cursor: 'pointer' } */
1468
- externalStyles: PropType<{
1469
- cursor?: string;
1470
- }>;
2192
+ /** The cursor to show while dragging. @default 'pointer' */
2193
+ dragCursor: {
2194
+ type: StringConstructor;
2195
+ default: string;
2196
+ };
1471
2197
  wheel: {
1472
2198
  type: PropType<ModifierValue<InputEventOption> | null>;
1473
2199
  default: () => ModifierValue<InputEventOption>;
@@ -1484,12 +2210,26 @@ export declare const XYPad: import("vue").DefineComponent<import("vue").ExtractP
1484
2210
  disabled: BooleanConstructor;
1485
2211
  /** Make the value unchangeable. */
1486
2212
  readonly: BooleanConstructor;
2213
+ /**
2214
+ * How long after the last wheel notch or arrow key a change counts as over,
2215
+ * in milliseconds, for `change-end`.
2216
+ * @default 500
2217
+ */
2218
+ changeEndDelay: {
2219
+ type: NumberConstructor;
2220
+ default: number;
2221
+ };
1487
2222
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
1488
2223
  [key: string]: any;
1489
2224
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
1490
2225
  'update:modelValue': (value: XY<number>) => boolean;
1491
- dragStart: (value: XY<number>) => boolean;
1492
- dragEnd: (value: XY<number>) => boolean;
2226
+ /**
2227
+ * A change of the value started, with the value before it and what it is
2228
+ * made with.
2229
+ */
2230
+ changeStart: (value: XY<number>, _source: ChangeSource) => boolean;
2231
+ /** The change ended, with the value it ended on. */
2232
+ changeEnd: (value: XY<number>, _source: ChangeSource) => boolean;
1493
2233
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
1494
2234
  /** The current value as `[x, y]`. Bind it with `v-model`. */
1495
2235
  modelValue: {
@@ -1521,10 +2261,11 @@ export declare const XYPad: import("vue").DefineComponent<import("vue").ExtractP
1521
2261
  type: PropType<XYInput<boolean>>;
1522
2262
  default: boolean;
1523
2263
  };
1524
- /** The cursor to show while dragging. @default { cursor: 'pointer' } */
1525
- externalStyles: PropType<{
1526
- cursor?: string;
1527
- }>;
2264
+ /** The cursor to show while dragging. @default 'pointer' */
2265
+ dragCursor: {
2266
+ type: StringConstructor;
2267
+ default: string;
2268
+ };
1528
2269
  wheel: {
1529
2270
  type: PropType<ModifierValue<InputEventOption> | null>;
1530
2271
  default: () => ModifierValue<InputEventOption>;
@@ -1541,19 +2282,30 @@ export declare const XYPad: import("vue").DefineComponent<import("vue").ExtractP
1541
2282
  disabled: BooleanConstructor;
1542
2283
  /** Make the value unchangeable. */
1543
2284
  readonly: BooleanConstructor;
2285
+ /**
2286
+ * How long after the last wheel notch or arrow key a change counts as over,
2287
+ * in milliseconds, for `change-end`.
2288
+ * @default 500
2289
+ */
2290
+ changeEndDelay: {
2291
+ type: NumberConstructor;
2292
+ default: number;
2293
+ };
1544
2294
  }>> & Readonly<{
1545
2295
  "onUpdate:modelValue"?: ((value: XY<number>) => any) | undefined;
1546
- onDragStart?: ((value: XY<number>) => any) | undefined;
1547
- onDragEnd?: ((value: XY<number>) => any) | undefined;
2296
+ onChangeStart?: ((value: XY<number>, _source: ChangeSource) => any) | undefined;
2297
+ onChangeEnd?: ((value: XY<number>, _source: ChangeSource) => any) | undefined;
1548
2298
  }>, {
1549
- disabled: boolean;
1550
2299
  reverse: boolean | readonly [x: boolean, y: boolean];
1551
2300
  wheel: ModifierValue<InputEventOption> | null;
1552
2301
  step: number | readonly [x: number, y: number];
2302
+ disabled: boolean;
2303
+ scale: Scale | readonly [x: Scale, y: Scale];
2304
+ dragCursor: string;
1553
2305
  keyboard: ModifierValue<InputEventOption> | null;
1554
2306
  dragSensitivity: ModifierValue<number>;
1555
2307
  readonly: boolean;
1556
- scale: Scale | readonly [x: Scale, y: Scale];
2308
+ changeEndDelay: number;
1557
2309
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
1558
2310
  //#endregion
1559
2311
  //#region src/components/XYPad/XYPadArea.d.ts
@@ -1564,6 +2316,19 @@ export declare const XYPadArea: import("vue").DefineComponent<{}, () => import("
1564
2316
  //#endregion
1565
2317
  //#region src/components/XYPad/XYPadThumb.d.ts
1566
2318
  type PerAxis = XYInput<string | undefined>;
2319
+ declare const xyPadThumbProps: {
2320
+ /** Sets `--color`, for the theme to colour the thumb with. */
2321
+ color: StringConstructor;
2322
+ /** The accessible name of each axis, as `[x, y]`. */
2323
+ ariaLabel: PropType<PerAxis>;
2324
+ /** The ids of what labels each axis, as `[x, y]` or one for both. */
2325
+ ariaLabelledby: PropType<PerAxis>;
2326
+ /** The ids of what describes each axis, as `[x, y]` or one for both. */
2327
+ ariaDescribedby: PropType<PerAxis>;
2328
+ /** What the value of each axis means, as `[x, y]` or one for both. */
2329
+ ariaValuetext: PropType<PerAxis>;
2330
+ };
2331
+ type XYPadThumbProps = ExtractPublicPropTypes<typeof xyPadThumbProps>;
1567
2332
  /** The thumb, placed at the value, with one range input per axis inside. */
1568
2333
  export declare const XYPadThumb: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
1569
2334
  /** Sets `--color`, for the theme to colour the thumb with. */
@@ -1672,7 +2437,7 @@ export declare function useMIDIMessage(midiAccess: MaybeRefOrGetter<MIDIAccess |
1672
2437
  * `preventDefault()` can keep the page from scrolling. See `createWheel` in
1673
2438
  * `@tremolo-ui/dom`.
1674
2439
  */
1675
- export declare function useWheel(target: MaybeRefOrGetter<Element | null | undefined>, onWheel: (event: WheelEvent) => void, options?: MaybeRefOrGetter<WheelOptions>): void;
2440
+ export declare function useWheel(target: MaybeRefOrGetter<Element | null | undefined>, onWheel: (event: WheelEvent) => void, options?: MaybeRefOrGetter<Omit<WheelOptions, 'onWheel'>>): void;
1676
2441
  //#endregion
1677
- export type { DrawFunction, FileInputContextValue, InitFunction, KeyAttributes, KeyState, KnobContextValue, NumberInputContextValue, PointsEditorContextValue, SliderContextValue, XYPadContextValue };
2442
+ export type { AnimationCanvasProps, DropZoneProps, FileInputContextValue, FileInputProps, KeyAttributes, KeyState, KnobContextValue, KnobProps, KnobThumbProps, NumberInputContextValue, NumberInputProps, PianoProps, PointsEditorContextValue, PointsEditorPointProps, PointsEditorProps, SliderContextValue, SliderMarksOptionProps, SliderMarksProps, SliderProps, SliderThumbProps, SliderTrackProps, XYPadContextValue, XYPadProps, XYPadThumbProps };
1678
2443
  //# sourceMappingURL=index.d.ts.map