@tremolo-ui/react 0.7.0 → 0.8.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 +346 -1015
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +76 -221
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.ts +76 -221
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +333 -978
  8. package/dist/index.js.map +1 -1
  9. package/package.json +3 -3
  10. package/src/components/DropZone/index.tsx +2 -1
  11. package/src/components/FileInput/index.tsx +8 -13
  12. package/src/components/Knob/ActiveLine.tsx +5 -3
  13. package/src/components/Knob/InactiveLine.tsx +6 -4
  14. package/src/components/Knob/SVGRoot.tsx +3 -3
  15. package/src/components/Knob/Thumb.tsx +3 -2
  16. package/src/components/Knob/context.tsx +3 -74
  17. package/src/components/Knob/index.tsx +19 -16
  18. package/src/components/NumberInput/InputField.tsx +12 -27
  19. package/src/components/NumberInput/Stepper.tsx +49 -97
  20. package/src/components/NumberInput/StepperButton.tsx +3 -4
  21. package/src/components/NumberInput/context.tsx +2 -1
  22. package/src/components/NumberInput/index.tsx +40 -71
  23. package/src/components/Piano/index.tsx +35 -142
  24. package/src/components/PointsEditor/Container.tsx +15 -26
  25. package/src/components/PointsEditor/Point.tsx +38 -85
  26. package/src/components/PointsEditor/context.tsx +5 -56
  27. package/src/components/PointsEditor/index.tsx +29 -311
  28. package/src/components/Slider/Marks.tsx +3 -5
  29. package/src/components/Slider/MarksOption.tsx +7 -18
  30. package/src/components/Slider/Track.tsx +2 -1
  31. package/src/components/Slider/index.tsx +29 -28
  32. package/src/components/XYPad/Area.tsx +27 -49
  33. package/src/components/XYPad/Thumb.tsx +3 -1
  34. package/src/components/XYPad/context.tsx +1 -3
  35. package/src/components/XYPad/index.tsx +33 -46
  36. package/src/components/_util/VisuallyHiddenRangeInput.tsx +1 -1
  37. package/src/hooks/_internal/useCheckSteps.ts +9 -146
  38. package/src/hooks/useLongPress.ts +35 -51
  39. package/src/hooks/useMIDIAccess.ts +0 -8
  40. package/src/hooks/useMIDIInput.ts +0 -3
  41. package/src/index.ts +2 -27
  42. package/src/components/Piano/keyboard-shortcuts.ts +0 -61
  43. package/src/components/Slider/type.ts +0 -46
  44. package/src/components/_util/css-length.ts +0 -13
  45. package/src/components/_util/decimal-digits.ts +0 -23
  46. package/src/components/_util/visually-hidden.ts +0 -25
  47. package/src/input-event.ts +0 -32
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import React, { AriaAttributes, CSSProperties, ComponentPropsWithoutRef, DependencyList, ReactNode, Ref, RefObject, SVGProps } from "react";
2
- import { AnimationFrame, AxisOptions, DragState, DropZoneOptions, InputEventOption, MIDIAccessError, MIDIAccessOptions, MIDIAccessOptions as MIDIAccessOptions$1, MIDIInputHandlers, ModifierState, ModifierValue, NOT_SUPPORTED, NoteRange, PERMISSION_DENIED, PITCH_BEND_CENTER, SelectionBoxRect, UNAVAILABLE, WheelOptions, XY, XY as XY$1, XYInput, XYInput as XYInput$1 } from "@tremolo-ui/dom";
2
+ import { AnimationFrame, AxisOptions, DragState, DropZoneOptions, InputEventOption, KeyboardShortcuts, KeyboardShortcutsScope, KnobAngles, MIDIAccessOptions, MIDIInputHandlers, MarksOptions, ModifierState, ModifierValue, NoteRange, PointPosition, PointsEditorInstance, SelectionBoxRect, WheelOptions, XY, XYInput } from "@tremolo-ui/dom";
3
3
  import { Scale, ValueRange } from "@tremolo-ui/functions";
4
4
  //#region src/components/AnimationCanvas/index.d.ts
5
5
  type InitFunction = (context: CanvasRenderingContext2D, option: {
@@ -120,7 +120,8 @@ interface DropZoneProps {
120
120
  onDrop?: (files: File[], event: DragEvent) => void;
121
121
  /**
122
122
  * Called with the dropped files that do not match `accept`, so that the
123
- * reason can be shown.
123
+ * reason can be shown. It comes after `onDrop` for the same drop, so a list
124
+ * of rejected files can be cleared in `onDrop` and filled here.
124
125
  */
125
126
  onReject?: (files: File[], event: DragEvent) => void;
126
127
  /** What the zone shows. */
@@ -181,7 +182,8 @@ interface FileInputProps {
181
182
  /**
182
183
  * Called with the files that were picked and do not match `accept`, so that
183
184
  * the reason can be shown. Given alongside `onChange` when a selection held
184
- * both.
185
+ * both, and after it, so a list of rejected files can be cleared in
186
+ * `onChange` and filled here.
185
187
  */
186
188
  onReject?: (files: File[]) => void;
187
189
  /** Normally a `FileInput.Trigger`, and whatever shows what was picked. */
@@ -281,18 +283,7 @@ type KnobConfig = {
281
283
  /** angle range [degree] */
282
284
  angleRange: number;
283
285
  };
284
- type KnobContextValue = KnobConfig & {
285
- /** normalized value */
286
- p: number;
287
- /** ロータリー開始位置 */
288
- r1: number;
289
- /** activeLine の開始位置 */
290
- r2: number;
291
- /** activeLine の終了位置 */
292
- r3: number;
293
- /** ロータリー終了位置 */
294
- r4: number;
295
- };
286
+ type KnobContextValue = KnobConfig & KnobAngles;
296
287
  /**
297
288
  * Everything here is derived during render, so there is no state to keep in
298
289
  * sync: `value` comes from the props of `Root` and the rest follows from it.
@@ -600,6 +591,9 @@ interface NumberInputProps {
600
591
  * Read a value back out of the text. Has to undo `format`.
601
592
  *
602
593
  * Text with no number in it reads as `NaN`, which leaves the value alone.
594
+ * The default, `parseNumberText` from `@tremolo-ui/dom`, reads the number
595
+ * with the unit around it left out, and is `NaN` for one it cannot read
596
+ * whole: `1,000`, `1:30`, or a number with a unit in front, such as `L 30`.
603
597
  */
604
598
  parse?: (text: string) => number;
605
599
  /**
@@ -672,7 +666,7 @@ interface NumberInputProps {
672
666
  pointerLock?: boolean;
673
667
  /**
674
668
  * Select the text when `InputField` takes focus: `'all'` selects all of it,
675
- * `'number'` only the leading number, leaving whatever the format appended,
669
+ * `'number'` only the number, leaving the unit the format put around it,
676
670
  * and `'none'` leaves the caret where the click put it.
677
671
  * @default 'none'
678
672
  */
@@ -763,8 +757,6 @@ export declare const NumberInput: {
763
757
  title?: string | undefined | undefined;
764
758
  pattern?: string | undefined | undefined;
765
759
  key?: import("react").Key | null | undefined;
766
- height?: number | string | undefined | undefined;
767
- width?: number | string | undefined | undefined;
768
760
  defaultChecked?: boolean | undefined | undefined;
769
761
  suppressContentEditableWarning?: boolean | undefined | undefined;
770
762
  suppressHydrationWarning?: boolean | undefined | undefined;
@@ -1041,14 +1033,15 @@ export declare const NumberInput: {
1041
1033
  onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLInputElement> | undefined;
1042
1034
  onTransitionStart?: import("react").TransitionEventHandler<HTMLInputElement> | undefined;
1043
1035
  onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLInputElement> | undefined;
1036
+ accept?: string | undefined | undefined;
1037
+ multiple?: boolean | undefined | undefined;
1038
+ disabled?: boolean | undefined | undefined;
1039
+ height?: number | string | undefined | undefined;
1040
+ width?: number | string | undefined | undefined;
1044
1041
  min?: number | string | undefined | undefined;
1045
1042
  max?: number | string | undefined | undefined;
1046
1043
  step?: number | string | undefined | undefined;
1047
- disabled?: boolean | undefined | undefined;
1048
1044
  alt?: string | undefined | undefined;
1049
- accept?: string | undefined | undefined;
1050
- multiple?: boolean | undefined | undefined;
1051
- size?: number | undefined | undefined;
1052
1045
  autoComplete?: import("react").HTMLInputAutoCompleteAttribute | undefined;
1053
1046
  capture?: boolean | "user" | "environment" | undefined | undefined;
1054
1047
  checked?: boolean | undefined | undefined;
@@ -1064,6 +1057,7 @@ export declare const NumberInput: {
1064
1057
  placeholder?: string | undefined | undefined;
1065
1058
  readOnly?: boolean | undefined | undefined;
1066
1059
  required?: boolean | undefined | undefined;
1060
+ size?: number | undefined | undefined;
1067
1061
  src?: string | undefined | undefined;
1068
1062
  } & import("react").RefAttributes<HTMLInputElement>>;
1069
1063
  Stepper: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -1071,34 +1065,7 @@ export declare const NumberInput: {
1071
1065
  DecrementStepper: typeof DecrementStepper;
1072
1066
  };
1073
1067
  //#endregion
1074
- //#region src/components/Piano/keyboard-shortcuts.d.ts
1075
- type KeyboardShortcuts = {
1076
- /**
1077
- * Keys laid out from `noteRange.first`, one entry per semitone.
1078
- *
1079
- * An empty string leaves that note without a shortcut: `KeyboardEvent.key` is
1080
- * never empty, so the entry can never match. Use it to skip the black keys
1081
- * (see {@link SHORTCUTS.HOME_ROW_NATURAL}) and keep the remaining entries
1082
- * lined up with the notes.
1083
- */
1084
- keys: string[];
1085
- };
1086
- /**
1087
- * Ready-made keyboard layouts. Both assume `noteRange.first` is a C.
1088
- */
1089
- export declare const SHORTCUTS: {
1090
- /** Every semitone from C, over the two rows of a QWERTY keyboard. */
1091
- HOME_ROW: {
1092
- keys: string[];
1093
- };
1094
- /** The white keys only, on the home row. Black keys have no shortcut. */
1095
- HOME_ROW_NATURAL: {
1096
- keys: string[];
1097
- };
1098
- };
1099
- //#endregion
1100
1068
  //#region src/components/Piano/index.d.ts
1101
- type KeyboardShortcutsScope = 'root' | 'window';
1102
1069
  /**
1103
1070
  * What {@link PianoProps.keyProps} may return for one key.
1104
1071
  *
@@ -1106,9 +1073,7 @@ type KeyboardShortcutsScope = 'root' | 'window';
1106
1073
  * JSX syntax, not on an object type, and selecting on one is the usual way to
1107
1074
  * mark a key out.
1108
1075
  */
1109
- type KeyAttributes = Omit<ComponentPropsWithoutRef<'div'>, 'style'> & {
1110
- style?: CSSProperties & CSSVariables<'color' | 'bg' | 'active-color' | 'active-bg'>;
1111
- } & Record<`data-${string}`, string | number | boolean | undefined>;
1076
+ type KeyAttributes = ComponentPropsWithoutRef<'div'> & Record<`data-${string}`, string | number | boolean | undefined>;
1112
1077
  /** What a key is, when {@link PianoProps.label} or `keyProps` is asked about it. */
1113
1078
  interface KeyState {
1114
1079
  /** Position in the note range, counting from `noteRange.first`. */
@@ -1189,15 +1154,9 @@ interface PianoProps {
1189
1154
  * @default 0.6
1190
1155
  */
1191
1156
  blackKeyHeightRatio?: number;
1192
- /**
1193
- * Height of the keyboard. Sets `--height`; when it is omitted, the height
1194
- * the theme gives stands, and the theme can tell `resizable` apart through
1195
- * `data-resizable`.
1196
- */
1197
- height?: number | string;
1198
1157
  /**
1199
1158
  * What to draw inside a key. `''`, `null` and `undefined` leave it bare, so
1200
- * a layout with gaps — {@link SHORTCUTS.HOME_ROW_NATURAL}, say — needs no
1159
+ * a layout with gaps — `SHORTCUTS.HOME_ROW_NATURAL`, say — needs no
1201
1160
  * special casing.
1202
1161
  */
1203
1162
  label?: (note: number, state: KeyState) => ReactNode;
@@ -1224,7 +1183,6 @@ interface PianoProps {
1224
1183
  onPlayNote?: (note: number, velocity?: number) => void;
1225
1184
  /** Called once everything holding a note has let go of it. */
1226
1185
  onStopNote?: (note: number) => void;
1227
- style?: CSSProperties & CSSVariables<'height'>;
1228
1186
  }
1229
1187
  interface PianoMethods {
1230
1188
  playNote: (note: number, velocity?: number) => void;
@@ -1241,15 +1199,7 @@ export declare const Piano: {
1241
1199
  declare function Background({ className, children, style, ...props }: ComponentPropsWithoutRef<'div'>): import("react").JSX.Element;
1242
1200
  //#endregion
1243
1201
  //#region src/components/PointsEditor/Point.d.ts
1244
- type PointBaseType = {
1245
- x: number;
1246
- y: number;
1247
- };
1248
- export declare function clampPoint(point: PointBaseType, min?: Partial<PointBaseType>, max?: Partial<PointBaseType>): {
1249
- x: number;
1250
- y: number;
1251
- };
1252
- interface PointsEditorPointProps<T extends PointBaseType> {
1202
+ interface PointsEditorPointProps<T extends PointPosition> {
1253
1203
  /**
1254
1204
  * Where the point is, as `{ x, y }` from 0 to 1 on each axis, with `y`
1255
1205
  * growing downwards.
@@ -1262,15 +1212,9 @@ interface PointsEditorPointProps<T extends PointBaseType> {
1262
1212
  */
1263
1213
  id?: string;
1264
1214
  /** The lowest position the point can take, per axis. An axis left out is 0. */
1265
- min?: Partial<PointBaseType>;
1215
+ min?: Partial<PointPosition>;
1266
1216
  /** The highest position the point can take, per axis. An axis left out is 1. */
1267
- max?: Partial<PointBaseType>;
1268
- /** Width and height at once. Sets both `--width` and `--height`. */
1269
- size?: number | string;
1270
- /** Sets `--width`; the size the theme gives it stands when omitted. */
1271
- width?: number | string;
1272
- /** Sets `--height`; the size the theme gives it stands when omitted. */
1273
- height?: number | string;
1217
+ max?: Partial<PointPosition>;
1274
1218
  /** Sets `--color`, for the theme to colour the point with. */
1275
1219
  color?: string;
1276
1220
  /** Overrides the `disabled` of `PointsEditor.Root`. */
@@ -1292,14 +1236,14 @@ interface PointsEditorPointProps<T extends PointBaseType> {
1292
1236
  * Called with the new position when the point is dragged or moved by the
1293
1237
  * arrow keys or the wheel, including when it moves along with a selection.
1294
1238
  */
1295
- onChange?: (value: PointBaseType) => void;
1239
+ onChange?: (value: PointPosition) => void;
1296
1240
  /** Called when a drag on this point starts, with where the point is. */
1297
- onDragStart?: (value: PointBaseType) => void;
1241
+ onDragStart?: (value: PointPosition) => void;
1298
1242
  /** Called when that drag ends, with where the point is. */
1299
- onDragEnd?: (value: PointBaseType) => void;
1300
- style?: CSSProperties & CSSVariables<'width' | 'height' | 'color' | 'translate'>;
1243
+ onDragEnd?: (value: PointPosition) => void;
1244
+ style?: CSSProperties & CSSVariables<'color' | 'translate'>;
1301
1245
  }
1302
- declare function Point<T extends PointBaseType>({ value, children, id: idProp, min, max, size, width, height, color, disabled: _disabled, readonly: _readonly, wheel: _wheel, keyboard: _keyboard, 'aria-label': ariaLabel, 'aria-valuetext': ariaValuetext, onChange, onDragStart, onDragEnd, className, style, onPointerDown, onKeyDown, onFocus, ...props }: PointsEditorPointProps<T> & Omit<ComponentPropsWithoutRef<'div'>, keyof PointsEditorPointProps<T>>): import("react").JSX.Element;
1246
+ declare function Point<T extends PointPosition>({ value, children, id: idProp, min, max, color, disabled: _disabled, readonly: _readonly, wheel: _wheel, keyboard: _keyboard, 'aria-label': ariaLabel, 'aria-valuetext': ariaValuetext, onChange, onDragStart, onDragEnd, className, style, onPointerDown, onKeyDown, onFocus, ...props }: PointsEditorPointProps<T> & Omit<ComponentPropsWithoutRef<'div'>, keyof PointsEditorPointProps<T>>): import("react").JSX.Element;
1303
1247
  //#endregion
1304
1248
  //#region src/components/PointsEditor/SelectionBox.d.ts
1305
1249
  /**
@@ -1311,24 +1255,6 @@ declare function Point<T extends PointBaseType>({ value, children, id: idProp, m
1311
1255
  declare function SelectionBox({ children, className, style, ...props }: ComponentPropsWithoutRef<'div'>): import("react").JSX.Element | null;
1312
1256
  //#endregion
1313
1257
  //#region src/components/PointsEditor/context.d.ts
1314
- /**
1315
- * What a `Point` tells the editor about itself, so that a selection can be
1316
- * moved without the editor knowing how the points are stored.
1317
- *
1318
- * Held behind a ref and rewritten on every render: the value changes on every
1319
- * frame of a drag, and a registry keyed on it would be rebuilt just as often.
1320
- */
1321
- interface PointRegistration {
1322
- value: PointBaseType;
1323
- min?: Partial<PointBaseType>;
1324
- max?: Partial<PointBaseType>;
1325
- readonly: boolean;
1326
- onChange?: (value: PointBaseType) => void;
1327
- /** The point's own element, to match the focus against. */
1328
- element: HTMLElement | null;
1329
- /** The wheel option this point resolved, root inheritance applied. */
1330
- wheel: ModifierValue<InputEventOption> | null;
1331
- }
1332
1258
  type PointsEditorContextValue = {
1333
1259
  disabled: boolean;
1334
1260
  readonly: boolean;
@@ -1350,37 +1276,14 @@ type PointsEditorContextValue = {
1350
1276
  selectable: boolean;
1351
1277
  /** Ids of the points currently selected. Always empty while `selectable` is off. */
1352
1278
  selection: readonly string[];
1353
- /** Register a point so that a selection can move it with the rest. */
1354
- registerPoint: (id: string, entry: RefObject<PointRegistration>) => () => void;
1355
- /**
1356
- * Whether the element is a point, or inside one. The registry knows which
1357
- * elements the points are, so nothing has to be recognised by a class name.
1358
- */
1359
- isPointElement: (element: Element | null | undefined) => boolean;
1360
1279
  /**
1361
- * A pointer went down on a point: works out the new selection and takes the
1362
- * snapshot the move will be measured against.
1280
+ * The selection and the moves, from `createPointsEditor` in
1281
+ * `@tremolo-ui/dom`: every `Point` registers with it, and a press, a drag,
1282
+ * a key or the wheel goes through it so that a selection moves as one.
1363
1283
  */
1364
- beginPointDrag: (id: string, modifiers: ModifierState) => void;
1365
- /** Move everything the drag picked up, by one amount, clamped as one. */
1366
- movePointDrag: (delta: PointBaseType) => void;
1367
- /**
1368
- * Move the selection by an amount that did not come from a drag — an arrow
1369
- * key or a wheel notch. The current values are the starting point.
1370
- */
1371
- nudgeSelection: (id: string, delta: PointBaseType) => void;
1372
- /**
1373
- * Move the point that currently holds focus by one notch. The wheel listener
1374
- * belongs to `Container` rather than to every `Point`, so the lookup of who
1375
- * has focus happens here, where the registry is. Returns whether a point
1376
- * took it, so the caller knows whether to consume the event.
1377
- */
1378
- nudgeFocusedPoint: (axis: 'x' | 'y', direction: number, modifiers: ModifierState) => boolean;
1284
+ editor: PointsEditorInstance;
1379
1285
  /** The selection box, while one is being dragged. */
1380
1286
  selectionBox: SelectionBoxRect | null;
1381
- beginSelectionBox: (at: PointBaseType, modifiers: ModifierState) => void;
1382
- moveSelectionBox: (to: PointBaseType) => void;
1383
- endSelectionBox: () => void;
1384
1287
  };
1385
1288
  /**
1386
1289
  * The settings `Root` was given, for the subcomponents to read. A point's
@@ -1392,10 +1295,6 @@ export declare function usePointsEditorContext<T>(selector: (state: PointsEditor
1392
1295
  //#endregion
1393
1296
  //#region src/components/PointsEditor/index.d.ts
1394
1297
  interface PointsEditorProps {
1395
- /** Sets `--width`; the size the theme gives it stands when omitted. */
1396
- width?: number | string;
1397
- /** Sets `--height`; the size the theme gives it stands when omitted. */
1398
- height?: number | string;
1399
1298
  /**
1400
1299
  * Make the points unchangeable and remove them from the tab order.
1401
1300
  * The parts carry `data-disabled` while it is set.
@@ -1507,7 +1406,6 @@ interface PointsEditorProps {
1507
1406
  * </PointsEditor.Root>
1508
1407
  */
1509
1408
  children: ReactNode;
1510
- style?: CSSProperties & CSSVariables<'width' | 'height'>;
1511
1409
  }
1512
1410
  /**
1513
1411
  * Multiple Point Controller
@@ -1551,19 +1449,6 @@ interface SliderTrackProps {
1551
1449
  style?: CSSProperties & CSSVariables<'length' | 'thickness' | 'active' | 'inactive' | 'percent'>;
1552
1450
  }
1553
1451
  //#endregion
1554
- //#region src/components/Slider/type.d.ts
1555
- /**
1556
- * How `Slider.Marks` fills itself in when it is given no children: one option
1557
- * every `per`, or every `step` of the slider. The object form turns off the
1558
- * mark or the label for the whole set; a single option is customized by
1559
- * writing `Slider.MarksOption` out instead.
1560
- */
1561
- type MarksOptions = 'step' | number | {
1562
- per: 'step' | number;
1563
- mark?: boolean;
1564
- label?: boolean;
1565
- };
1566
- //#endregion
1567
1452
  //#region src/components/Slider/Marks.d.ts
1568
1453
  interface SliderMarksProps {
1569
1454
  /**
@@ -1604,8 +1489,6 @@ interface SliderMarksOptionProps {
1604
1489
  length?: number | string;
1605
1490
  /** Space between the mark and the label. Sets `--gap`. */
1606
1491
  gap?: number | string;
1607
- /** Width of the label. Sets `--label-width`. */
1608
- labelWidth?: number | string;
1609
1492
  /** Classes for the mark and the label inside the option. */
1610
1493
  classes?: {
1611
1494
  mark?: string;
@@ -1616,9 +1499,9 @@ interface SliderMarksOptionProps {
1616
1499
  mark?: CSSProperties;
1617
1500
  label?: CSSProperties;
1618
1501
  };
1619
- style?: CSSProperties & CSSVariables<'thickness' | 'length' | 'gap' | 'label-width' | 'translate'>;
1502
+ style?: CSSProperties & CSSVariables<'thickness' | 'length' | 'gap' | 'translate'>;
1620
1503
  }
1621
- declare function MarksOption({ value, mark, label, thickness, length, gap, labelWidth, classes, styles, className, style, ...props }: SliderMarksOptionProps & Omit<ComponentPropsWithoutRef<'div'>, keyof SliderMarksOptionProps>): import("react").JSX.Element;
1504
+ declare function MarksOption({ value, mark, label, thickness, length, gap, classes, styles, className, style, ...props }: SliderMarksOptionProps & Omit<ComponentPropsWithoutRef<'div'>, keyof SliderMarksOptionProps>): import("react").JSX.Element;
1622
1505
  //#endregion
1623
1506
  //#region src/components/Slider/context.d.ts
1624
1507
  type SliderContextValue = {
@@ -1787,34 +1670,6 @@ export declare const Slider: {
1787
1670
  MarksOption: typeof MarksOption;
1788
1671
  };
1789
1672
  //#endregion
1790
- //#region src/components/XYPad/context.d.ts
1791
- type XYPadContextValue = {
1792
- value: XY<number>;
1793
- min: XY<number>;
1794
- max: XY<number>;
1795
- step: XY<number>;
1796
- /** How the value of each axis is distributed across the travel. */
1797
- scale: XY<Scale>;
1798
- reverse: XY<boolean>;
1799
- disabled: boolean;
1800
- readonly: boolean;
1801
- onChange?: (value: XY<number>) => void;
1802
- /**
1803
- * Position of the thumb, 0-100 per axis, already accounting for `reverse`.
1804
- */
1805
- percent: XY<number>;
1806
- /** `Area` registers its element here; `Root` normalizes the pointer against it. */
1807
- areaRef: RefObject<HTMLDivElement | null>;
1808
- /** `Thumb` registers itself here; `Root` focuses it when a drag starts. */
1809
- thumbRef: RefObject<XYPadThumbMethods | null>;
1810
- };
1811
- /**
1812
- * Everything here is derived during render, so there is no state to keep in
1813
- * sync: `value` comes from the props of `Root` and the rest follows from it.
1814
- */
1815
- export declare function useXYPadContext(): XYPadContextValue;
1816
- export declare function useXYPadContext<T>(selector: (state: XYPadContextValue) => T): T;
1817
- //#endregion
1818
1673
  //#region src/components/XYPad/Thumb.d.ts
1819
1674
  interface XYPadThumbProps {
1820
1675
  /**
@@ -1845,16 +1700,33 @@ interface XYPadThumbMethods {
1845
1700
  blur: () => void;
1846
1701
  }
1847
1702
  //#endregion
1848
- //#region src/components/XYPad/Area.d.ts
1849
- interface XYPadAreaProps {
1850
- /** Sets `--width`; the size the theme gives it stands when omitted. */
1851
- width?: number | string;
1852
- /** Sets `--height`; the size the theme gives it stands when omitted. */
1853
- height?: number | string;
1854
- /** Sets `--color`, for the theme to colour the area with. */
1855
- color?: string;
1856
- style?: CSSProperties & CSSVariables<'width' | 'height' | 'color'>;
1857
- }
1703
+ //#region src/components/XYPad/context.d.ts
1704
+ type XYPadContextValue = {
1705
+ value: XY<number>;
1706
+ min: XY<number>;
1707
+ max: XY<number>;
1708
+ step: XY<number>;
1709
+ /** How the value of each axis is distributed across the travel. */
1710
+ scale: XY<Scale>;
1711
+ reverse: XY<boolean>;
1712
+ disabled: boolean;
1713
+ readonly: boolean;
1714
+ onChange?: (value: XY<number>) => void;
1715
+ /**
1716
+ * Position of the thumb, 0-100 per axis, already accounting for `reverse`.
1717
+ */
1718
+ percent: XY<number>;
1719
+ /** `Area` registers its element here; `Root` normalizes the pointer against it. */
1720
+ areaRef: RefObject<HTMLDivElement | null>;
1721
+ /** `Thumb` registers itself here; `Root` focuses it when a drag starts. */
1722
+ thumbRef: RefObject<XYPadThumbMethods | null>;
1723
+ };
1724
+ /**
1725
+ * Everything here is derived during render, so there is no state to keep in
1726
+ * sync: `value` comes from the props of `Root` and the rest follows from it.
1727
+ */
1728
+ export declare function useXYPadContext(): XYPadContextValue;
1729
+ export declare function useXYPadContext<T>(selector: (state: XYPadContextValue) => T): T;
1858
1730
  //#endregion
1859
1731
  //#region src/components/XYPad/index.d.ts
1860
1732
  /**
@@ -1990,7 +1862,7 @@ interface XYPadMethods {
1990
1862
  export declare const XYPad: {
1991
1863
  Root: import("react").ForwardRefExoticComponent<XYPadProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, keyof XYPadProps> & import("react").RefAttributes<XYPadMethods>>;
1992
1864
  Thumb: import("react").ForwardRefExoticComponent<XYPadThumbProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, keyof XYPadThumbProps> & import("react").RefAttributes<XYPadThumbMethods>>;
1993
- Area: import("react").ForwardRefExoticComponent<XYPadAreaProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, keyof XYPadAreaProps> & import("react").RefAttributes<HTMLDivElement>>;
1865
+ Area: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
1994
1866
  };
1995
1867
  //#endregion
1996
1868
  //#region src/hooks/useAnimationFrame.d.ts
@@ -2040,7 +1912,7 @@ export declare function useDrag<T extends Element>({ threshold, cursor, pointerL
2040
1912
  //#region src/hooks/useDragValue.d.ts
2041
1913
  interface UseDragValueOptions {
2042
1914
  /** Scaling of each axis; a single value applies to both. */
2043
- axis: XYInput$1<AxisOptions>;
1915
+ axis: XYInput<AxisOptions>;
2044
1916
  /**
2045
1917
  * Normalize the pointer against the bounding rect of this element, so that
2046
1918
  * the value *is* the position pointed at.
@@ -2054,12 +1926,12 @@ interface UseDragValueOptions {
2054
1926
  *
2055
1927
  * Give either this or `baseElementRef`.
2056
1928
  */
2057
- getValue?: () => XY$1<number>;
1929
+ getValue?: () => XY<number>;
2058
1930
  /**
2059
1931
  * Pixels of movement that span the whole range, with `getValue`.
2060
1932
  * @default 100
2061
1933
  */
2062
- pixelRange?: XYInput$1<number>;
1934
+ pixelRange?: XYInput<number>;
2063
1935
  /**
2064
1936
  * How much the movement counts, read on every move. `0.1` makes the same
2065
1937
  * movement cover a tenth of the range, which is what a fine-adjustment
@@ -2112,11 +1984,11 @@ interface UseDragValueOptions {
2112
1984
  * @param state the whole drag, for anything the value leaves out — the
2113
1985
  * pointer event and its modifier keys, most of all.
2114
1986
  */
2115
- onChange?: (value: XY$1<number>, state: DragState) => void;
1987
+ onChange?: (value: XY<number>, state: DragState) => void;
2116
1988
  /** Called once the drag starts, with the value it starts from. */
2117
- onDragStart?: (value: XY$1<number>, state: DragState) => void;
1989
+ onDragStart?: (value: XY<number>, state: DragState) => void;
2118
1990
  /** Called when the pointer is released, with the value it ends on. */
2119
- onDragEnd?: (value: XY$1<number>, state: DragState) => void;
1991
+ onDragEnd?: (value: XY<number>, state: DragState) => void;
2120
1992
  }
2121
1993
  /**
2122
1994
  * Drive a value with a pointer drag.
@@ -2155,7 +2027,14 @@ export declare function useEventListener<K extends keyof GlobalEventHandlersEven
2155
2027
  export declare function useInterval(callback: () => void, delay: number | null): void;
2156
2028
  //#endregion
2157
2029
  //#region src/hooks/useLongPress.d.ts
2158
- export declare function useLongPress(callback: () => void, initialDelay?: number, interval?: number): (event?: Pick<PointerEvent, "button" | "pointerId">) => void;
2030
+ /**
2031
+ * Repeat `callback` while a pointer is held down: once on the press, then
2032
+ * every `interval` after `initialDelay`. The repeat itself is
2033
+ * `createLongPress` in `@tremolo-ui/dom`.
2034
+ *
2035
+ * Returns the function that starts a press, for an `onPointerDown`.
2036
+ */
2037
+ export declare function useLongPress(callback: () => void, initialDelay?: number, interval?: number): (event?: Pick<PointerEvent, "button" | "pointerId">) => void | undefined;
2159
2038
  //#endregion
2160
2039
  //#region src/hooks/useMIDIAccess.d.ts
2161
2040
  /**
@@ -2169,7 +2048,7 @@ export declare function useLongPress(callback: () => void, initialDelay?: number
2169
2048
  * ask for it only when it is actually used.
2170
2049
  */
2171
2050
  export declare function useMIDIAccess(requestOnMount?: boolean): {
2172
- request: (options?: MIDIAccessOptions$1) => void;
2051
+ request: (options?: MIDIAccessOptions) => void;
2173
2052
  midiAccess: MIDIAccess | null;
2174
2053
  error: import("@tremolo-ui/dom").MIDIAccessError | null;
2175
2054
  inputs: readonly MIDIInput[];
@@ -2230,29 +2109,5 @@ interface UseWheelOptions extends Omit<WheelOptions, 'onWheel'> {
2230
2109
  */
2231
2110
  export declare function useWheel<T extends Element>(onWheel: (event: WheelEvent) => void, { requireFocus, target }?: UseWheelOptions): (node: T | null) => void;
2232
2111
  //#endregion
2233
- //#region src/input-event.d.ts
2234
- /**
2235
- * The keyboard amount used by Knob, NumberInput, Slider, and XYPad by default:
2236
- * 1 per press in the units of the value, and 0.1 with shift held. That is one
2237
- * `step` only while `step` is 1; a coarser `step` rounds 1 straight back, which
2238
- * `useCheckSteps` warns about.
2239
- *
2240
- * A modifier entry is not snapped to `step`, which is what lets the finer
2241
- * amount move at all — see `applyDelta` in `@tremolo-ui/dom`.
2242
- */
2243
- export declare const DEFAULT_KEYBOARD_OPTIONS: ModifierValue<InputEventOption>;
2244
- /**
2245
- * The wheel amount used by Knob, NumberInput, Slider, and XYPad by default.
2246
- *
2247
- * Browsers turn shift+wheel into horizontal scrolling, which empties `deltaY`
2248
- * and fills `deltaX`, so no modifier is bound here.
2249
- */
2250
- export declare const DEFAULT_WHEEL_OPTIONS: ModifierValue<InputEventOption>;
2251
- /**
2252
- * The drag sensitivity used by value controls by default. Shift makes the
2253
- * same movement cover a tenth of the range, matching the arrow keys.
2254
- */
2255
- export declare const DEFAULT_DRAG_SENSITIVITY: ModifierValue<number>;
2256
- //#endregion
2257
- export { type AnimationCanvasCommonProps, type AnimationCanvasFixedProps, type AnimationCanvasProps, type AnimationCanvasResizableProps, type CSSVariables, type DrawFunction, type DropZoneProps, type FileInputContextValue, type FileInputProps, type FileInputTriggerProps, type InitFunction, type KeyAttributes, type KeyState, type KeyboardShortcuts, type KnobContextValue, type KnobMethods, type KnobProps, type KnobSVGRootProps, type KnobThumbProps, type MIDIAccessError, type MIDIAccessOptions, type MIDIInputHandlers, type MarksOptions, NOT_SUPPORTED, type NumberInputContextValue, type NumberInputMethods, type NumberInputProps, PERMISSION_DENIED, PITCH_BEND_CENTER, type PianoMethods, type PianoProps, type PointBaseType, type PointsEditorContextValue, type PointsEditorPointProps, type PointsEditorProps, type SliderContextValue, type SliderMarksOptionProps, type SliderMarksProps, type SliderMethods, type SliderProps, type SliderThumbMethods, type SliderThumbProps, type SliderTrackProps, UNAVAILABLE, type UseDragOptions, type UseDragValueOptions, type UseDropZoneOptions, type UseWheelOptions, type XY, type XYInput, type XYPadAreaProps, type XYPadContextValue, type XYPadMethods, type XYPadProps, type XYPadThumbMethods, type XYPadThumbProps };
2112
+ export type { AnimationCanvasCommonProps, AnimationCanvasFixedProps, AnimationCanvasProps, AnimationCanvasResizableProps, CSSVariables, DrawFunction, DropZoneProps, FileInputContextValue, FileInputProps, FileInputTriggerProps, InitFunction, KeyAttributes, KeyState, KnobContextValue, KnobMethods, KnobProps, KnobSVGRootProps, KnobThumbProps, NumberInputContextValue, NumberInputMethods, NumberInputProps, PianoMethods, PianoProps, PointsEditorContextValue, PointsEditorPointProps, PointsEditorProps, SliderContextValue, SliderMarksOptionProps, SliderMarksProps, SliderMethods, SliderProps, SliderThumbMethods, SliderThumbProps, SliderTrackProps, UseDragOptions, UseDragValueOptions, UseDropZoneOptions, UseWheelOptions, XYPadContextValue, XYPadMethods, XYPadProps, XYPadThumbMethods, XYPadThumbProps };
2258
2113
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/components/AnimationCanvas/index.tsx","../src/components/DropZone/index.tsx","../src/components/FileInput/Trigger.tsx","../src/components/FileInput/context.tsx","../src/components/FileInput/index.tsx","../src/components/Knob/ActiveLine.tsx","../src/components/Knob/InactiveLine.tsx","../src/components/Knob/SVGRoot.tsx","../src/components/Knob/Thumb.tsx","../src/css-variables.ts","../src/components/Knob/context.tsx","../src/components/Knob/index.tsx","../src/components/NumberInput/StepperButton.tsx","../src/components/NumberInput/DecrementStepper.tsx","../src/components/NumberInput/IncrementStepper.tsx","../src/components/NumberInput/context.tsx","../src/components/NumberInput/index.tsx","../src/components/Piano/keyboard-shortcuts.ts","../src/components/Piano/index.tsx","../src/components/PointsEditor/Background.tsx","../src/components/PointsEditor/Point.tsx","../src/components/PointsEditor/SelectionBox.tsx","../src/components/PointsEditor/context.tsx","../src/components/PointsEditor/index.tsx","../src/components/Slider/Thumb.tsx","../src/components/Slider/Track.tsx","../src/components/Slider/type.ts","../src/components/Slider/Marks.tsx","../src/components/Slider/MarksOption.tsx","../src/components/Slider/context.tsx","../src/components/Slider/index.tsx","../src/components/XYPad/context.tsx","../src/components/XYPad/Thumb.tsx","../src/components/XYPad/Area.tsx","../src/components/XYPad/index.tsx","../src/hooks/useAnimationFrame.ts","../src/hooks/useDrag.ts","../src/hooks/useDragValue.ts","../src/hooks/useDropZone.ts","../src/hooks/useEventListener.ts","../src/hooks/useInterval.ts","../src/hooks/useLongPress.ts","../src/hooks/useMIDIAccess.ts","../src/hooks/useMIDIInput.ts","../src/hooks/useMIDIMessage.ts","../src/hooks/useWheel.ts","../src/input-event.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/components/AnimationCanvas/index.tsx","../src/components/DropZone/index.tsx","../src/components/FileInput/Trigger.tsx","../src/components/FileInput/context.tsx","../src/components/FileInput/index.tsx","../src/components/Knob/ActiveLine.tsx","../src/components/Knob/InactiveLine.tsx","../src/components/Knob/SVGRoot.tsx","../src/components/Knob/Thumb.tsx","../src/css-variables.ts","../src/components/Knob/context.tsx","../src/components/Knob/index.tsx","../src/components/NumberInput/StepperButton.tsx","../src/components/NumberInput/DecrementStepper.tsx","../src/components/NumberInput/IncrementStepper.tsx","../src/components/NumberInput/context.tsx","../src/components/NumberInput/index.tsx","../src/components/Piano/index.tsx","../src/components/PointsEditor/Background.tsx","../src/components/PointsEditor/Point.tsx","../src/components/PointsEditor/SelectionBox.tsx","../src/components/PointsEditor/context.tsx","../src/components/PointsEditor/index.tsx","../src/components/Slider/Thumb.tsx","../src/components/Slider/Track.tsx","../src/components/Slider/Marks.tsx","../src/components/Slider/MarksOption.tsx","../src/components/Slider/context.tsx","../src/components/Slider/index.tsx","../src/components/XYPad/Thumb.tsx","../src/components/XYPad/context.tsx","../src/components/XYPad/index.tsx","../src/hooks/useAnimationFrame.ts","../src/hooks/useDrag.ts","../src/hooks/useDragValue.ts","../src/hooks/useDropZone.ts","../src/hooks/useEventListener.ts","../src/hooks/useInterval.ts","../src/hooks/useLongPress.ts","../src/hooks/useMIDIAccess.ts","../src/hooks/useMIDIInput.ts","../src/hooks/useMIDIMessage.ts","../src/hooks/useWheel.ts"],"mappings":"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"}