@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.
- package/dist/index.cjs +346 -1015
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +76 -221
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +76 -221
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +333 -978
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/components/DropZone/index.tsx +2 -1
- package/src/components/FileInput/index.tsx +8 -13
- package/src/components/Knob/ActiveLine.tsx +5 -3
- package/src/components/Knob/InactiveLine.tsx +6 -4
- package/src/components/Knob/SVGRoot.tsx +3 -3
- package/src/components/Knob/Thumb.tsx +3 -2
- package/src/components/Knob/context.tsx +3 -74
- package/src/components/Knob/index.tsx +19 -16
- package/src/components/NumberInput/InputField.tsx +12 -27
- package/src/components/NumberInput/Stepper.tsx +49 -97
- package/src/components/NumberInput/StepperButton.tsx +3 -4
- package/src/components/NumberInput/context.tsx +2 -1
- package/src/components/NumberInput/index.tsx +40 -71
- package/src/components/Piano/index.tsx +35 -142
- package/src/components/PointsEditor/Container.tsx +15 -26
- package/src/components/PointsEditor/Point.tsx +38 -85
- package/src/components/PointsEditor/context.tsx +5 -56
- package/src/components/PointsEditor/index.tsx +29 -311
- package/src/components/Slider/Marks.tsx +3 -5
- package/src/components/Slider/MarksOption.tsx +7 -18
- package/src/components/Slider/Track.tsx +2 -1
- package/src/components/Slider/index.tsx +29 -28
- package/src/components/XYPad/Area.tsx +27 -49
- package/src/components/XYPad/Thumb.tsx +3 -1
- package/src/components/XYPad/context.tsx +1 -3
- package/src/components/XYPad/index.tsx +33 -46
- package/src/components/_util/VisuallyHiddenRangeInput.tsx +1 -1
- package/src/hooks/_internal/useCheckSteps.ts +9 -146
- package/src/hooks/useLongPress.ts +35 -51
- package/src/hooks/useMIDIAccess.ts +0 -8
- package/src/hooks/useMIDIInput.ts +0 -3
- package/src/index.ts +2 -27
- package/src/components/Piano/keyboard-shortcuts.ts +0 -61
- package/src/components/Slider/type.ts +0 -46
- package/src/components/_util/css-length.ts +0 -13
- package/src/components/_util/decimal-digits.ts +0 -23
- package/src/components/_util/visually-hidden.ts +0 -25
- package/src/input-event.ts +0 -32
package/dist/index.d.ts
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,
|
|
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
|
|
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 =
|
|
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 —
|
|
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
|
-
|
|
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<
|
|
1215
|
+
min?: Partial<PointPosition>;
|
|
1266
1216
|
/** The highest position the point can take, per axis. An axis left out is 1. */
|
|
1267
|
-
max?: Partial<
|
|
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:
|
|
1239
|
+
onChange?: (value: PointPosition) => void;
|
|
1296
1240
|
/** Called when a drag on this point starts, with where the point is. */
|
|
1297
|
-
onDragStart?: (value:
|
|
1241
|
+
onDragStart?: (value: PointPosition) => void;
|
|
1298
1242
|
/** Called when that drag ends, with where the point is. */
|
|
1299
|
-
onDragEnd?: (value:
|
|
1300
|
-
style?: CSSProperties & CSSVariables<'
|
|
1243
|
+
onDragEnd?: (value: PointPosition) => void;
|
|
1244
|
+
style?: CSSProperties & CSSVariables<'color' | 'translate'>;
|
|
1301
1245
|
}
|
|
1302
|
-
declare function Point<T extends
|
|
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
|
-
*
|
|
1362
|
-
*
|
|
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
|
-
|
|
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' | '
|
|
1502
|
+
style?: CSSProperties & CSSVariables<'thickness' | 'length' | 'gap' | 'translate'>;
|
|
1620
1503
|
}
|
|
1621
|
-
declare function MarksOption({ value, mark, label, thickness, length, gap,
|
|
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/
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
/**
|
|
1855
|
-
|
|
1856
|
-
|
|
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<
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","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/
|
|
1
|
+
{"version":3,"file":"index.d.ts","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":";;;;KAgBY,gBACV,SAAS,0BACT;;EAEE;;EAEA;;KAIQ,gBACV,SAAS,0BACT,QAAQ;UAGO;;;;;;;;EAQf,MAAM;;;;;EAKN,OAAO;;;;;;;;EAQP;;;;;;;EAOA,UAAU;;;;;;;;EAQV;;;UAIe;;EAEf;;;;;EAKA;;;;;EAKA;;;;;;UAOe;;;;;EAKf;;EAEA;;EAEA;;KAGU,uBAAuB,8BAChC,4BAA4B;KAE1B,QAAQ,uBACX,KACE,0CACM;;;;qBAMG,iCAAe,0BAAA,wBAAA,cAAA;;;UC7GX;;;;;;;;;;;EAWf;;;;;;;EAOA;;;;;;;EAOA;;;;;;;EAQA,UAAU,OAAO,QAAQ,OAAO;;;;;;EAMhC,YAAY,OAAO,QAAQ,OAAO;;EAGlC,UAAU;;;;;qBAmDC;;;;;UC9FI;;EAEf,UAAU;;;;KCJA;;EAEV;EACA;;wBAQc,uBAAuB;wBACvB,oBAAoB,GAClC,WAAW,OAAO,0BAA0B,IAC3C;;;UCFc;;;;;;;;;;EAUf;;;;;EAKA;;;;;EAKA;;;;;;;;EASA,YAAY,OAAO;;;;;;;EAOnB,YAAY,OAAO;;EAGnB,UAAU;;;;;qBA+EC;;;;;;iBC5HG,aACd,QACA,aACA,cACG,SACF,KAAK,SAAS,wCAAqB,IAAA;;;iBCLtB,eACd,QACA,aACA,cACG,SACF,KAAK,SAAS,wCAAqB,IAAA;;;UCPrB;;;;;EAKf,UAAU;;iBAGI,UACd,UACA,UACG,SACF,mBAAmB,KAAK,SAAS,sBAAsB,oCAAiB,IAAA;;;UCT1D;;;;;EAKf;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;;EAMA;;;;;EAMA;IACE;;;iBAIY,QACd,WAEA,OACA,WACA,WACA,iBACA,iBACA,YAEG,SACF,iBAAiB,KAAK,SAAS,4BAA4B,kCAAe,IAAA;;;;;;;;;;;;;;;;;;;;;KCvCjE,aAAa,+BACtB,KAAK,UAAU,+BAEf;;;KChBS;EACV;EACA;EACA;EACA;EACA,OAAO;EACP;;EAEA;;KAGU,mBAAmB,aAAa;;;;;wBAU5B,kBAAkB;wBAClB,eAAe,GAAG,WAAW,OAAO,qBAAqB,IAAI;;;UCkB5D;;EAEf;;EAEA;;EAEA;;;;;;;EAQA;;;;;;;;;;EAUA,QAAQ;;;;;EAKR;;;;;;EAOA;;;;;EAMA;;;;;;;EAQA;IACE,SAAS;;;;;;;;;;;;;EAaX,QAAQ,cAAc;;;;;;;;;;;;;;;EAetB,kBAAkB;;;;;;;;;;;;;;;;;;EAmBlB;;;;;;;;;;;;;;;EAgBA,WAAW,cAAc;;;;;EAKzB;;;;;EAMA;;;;;EAKA;;;;;;EAOA;;;;;EAMA,YAAY;;;;;;;;;;;;;;EAeZ,UAAU;EAEV,QAAQ,gBAAgB;;UAGT;EACf;EACA;;;;;qBA4KW;;;;;;;;;;;;;KClXD,qBAAqB,KAC/B;EAGA,QAAQ,gBAAgB;;;;;iBCTV,iBAAiB,OAAO,qCAAkB,IAAA;;;;iBCA1C,iBAAiB,OAAO,qCAAkB,IAAA;;;KCE9C;EACV;;;;;;EAOA;EACA;EACA;;EAEA,OAAO;EAEP;EACA;EACA;;;;;EAMA,OAAO;;EAEP,UAAU;EAEV,UAAU,cAAc;;EAExB;;EAEA,iBAAiB;;EAEjB;;EAGA;;EAEA;;EAEA;;EAEA;;EAGA;EACA;;EAEA;;EAEA;EACA;EAEA,SAAS;EACT,QAAQ;;EAGR,WAAW;;EAEX;;EAEA,cAAc;;EAEd,QACE,mBACA,QAAQ,cAAc,mBACtB,YAAY;;EAId,UAAU,UAAU;;;;;;wBAYN,yBAAyB;wBACzB,sBAAsB,GACpC,WAAW,OAAO,4BAA4B,IAC7C;;;UCzDc;;;;;EAKf;;;;;;;EAQA;;;;;;;EAOA;;;;;;;;EAQA;;;;;;;EAOA,QAAQ;;;;;;;;;;EAWR,UAAU;;;;;;;;;EASV,SAAS;;;;;;EAOT;;;;;;;;;;;;;EAcA,QAAQ,cAAc;;;;;;;;;;;;;;;EAetB,WAAW,cAAc;;;;;;EAMzB;;;;;;;;;;;;;EAcA,kBAAkB;;;;;;;;;;;;;;;EAgBlB;;;;;;;EAQA;;;;;;;;;;;;;;EAcA;;;;;;;;;;;;;;;;;;;EAmBA;;;;;;EAMA;;;;;EAMA;;;;;EAKA;;;;;;EAOA,YAAY;;;;;;;;;;;;;;EAeZ,UAAU;;UAGK;EACf;EACA;;;;;qBAiPW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KCvcD,gBAAgB,kCAC1B;;UAGe;;EAEf;EACA;;EAEA;;EAEA;;UAGe;;;;;;EAMf;IACE;IACA;;;;;;EAOF,WAAW;;;;;;;EAQX;;;;;;EAOA;;;;;;EAOA,oBAAoB;;;;;;;;EASpB,yBAAyB;;;;;;;EAQzB;;;;;;EAOA;;;;;EAKA;;;;;EAKA;;;;;EAKA;;;;;;EAOA,SAAS,cAAc,OAAO,aAAa;;;;;;;;;;;;;;EAe3C,YAAY,cAAc,OAAO,aAAa;;;;;;;EAQ9C,cAAc,cAAc;;EAE5B,cAAc;;UAGC;EACf,WAAW,cAAc;EACzB,WAAW;;;;;qBAmOA;;;;;iBClYG,aACd,WACA,UACA,UACG,SACF,kDAA+B,IAAA;;;UCsBjB,uBAAuB,UAAU;;;;;EAKhD,OAAO;;;;;;EAMP;;EAEA,MAAM,QAAQ;;EAEd,MAAM,QAAQ;;EAGd;;EAGA;;EAEA;;EAGA,QAAQ,cAAc;;EAEtB,WAAW,cAAc;;;;;EAMzB,wBAAwB,QAAQ;;EAEhC,4BAA4B,QAAQ;;;;;EAMpC,YAAY,OAAO;;EAEnB,eAAe,OAAO;;EAEtB,aAAa,OAAO;EAEpB,QAAQ,gBAAgB;;iBAcV,MAAM,UAAU,iBAC9B,OACA,UACA,IAAI,QACJ,KACA,KACA,OAEA,UAAU,WACV,UAAU,WACV,OAAO,QACP,UAAU,yBACI,6BACI,eAElB,UACA,aACA,WAEA,WACA,OACA,eACA,WACA,YACG,SACF,uBAAuB,KACxB,KAAK,uCAAuC,uBAAuB,sBAAG,IAAA;;;;;;;;;iBCzGxD,eACd,UACA,WACA,UACG,SACF,kDAA+B,IAAA;;;KCRtB;EACV;EACA;;EAEA,OAAO,cAAc;;EAErB,UAAU,cAAc;;EAExB,iBAAiB;EACjB;IACE,SAAS;;;;;;EAMX,cAAc,UAAU;;EAExB;;EAEA;;;;;;EAMA,QAAQ;;EAER,cAAc;;;;;;;wBAaA,0BAA0B;wBAC1B,uBAAuB,GACrC,WAAW,OAAO,6BAA6B,IAC9C;;;UCvBc;;;;;EAKf;;;;;EAKA;;;;;;;EAQA;IACE,SAAS;;;;;;;;;;;;EAaX,QAAQ,cAAc;;;;;;;;;;;;EAYtB,WAAW,cAAc;;;;;;;;;;;;;;;;;EAkBzB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;EAwBlB;;;;;;;;EASA;;EAEA;;EAEA,qBAAqB;;;;;;;;;;;;;;;;;EAkBrB,UAAU;;;;;qBAwHC;;;;;;;;;UC5PI;;;;;;EAMf;EAEA,QAAQ,gBAAgB;;UAGT;EACf;EACA;;;;UCjBe;;;;;EAKf;;EAEA;;EAGA;;EAEA;EAEA,QAAQ,gBACN;;;;UCfa;;;;;EAKf;;;;;;;;;EASA,UAAU;EAEV,QAAQ,gBAAgB;;iBAGV,QACd,KACA,SACA,UACA,WACA,UACG,SACF,mBACD,KAAK,uCAAuC,oCAAiB,IAAA;;;UC5B9C;;EAEf;;;;;EAMA;;;;;EAKA;;EAEA;;EAEA;;EAEA;;EAEA;IACE;IACA;;;EAGF;IACE,OAAO;IACP,QAAQ;;EAGV,QAAQ,gBACN;;iBAGY,cACd,OACA,MACA,OACA,WACA,QACA,KACA,SACA,QACA,WACA,UACG,SACF,yBACD,KAAK,uCAAuC,0CAAuB,IAAA;;;KCpDzD;EACV;EACA;EACA;EACA;;EAEA,OAAO;EACP;EACA;EACA;EACA;EACA,YAAY;;;;;EAKZ;;EAGA,UAAU,UAAU;;EAEpB,UAAU,UAAU;;;;;;wBAaN,oBAAoB;wBACpB,iBAAiB,GAC/B,WAAW,OAAO,uBAAuB,IACxC;;;UCDc;;EAEf;;EAEA;;EAEA;;;;;;;EAQA;;;;;;;;;;EAUA,QAAQ;;;;;;;EAOR;;;;;;;EAOA;;;;;;;EAQA;IACE,SAAS;;;;;;;;;;;;;;EAcX,QAAQ,cAAc;;;;;;;;;;;;;;;;;EAiBtB,kBAAkB;;;;;;;;;;;;;;;EAgBlB,WAAW,cAAc;;;;;EAMzB;;;;;EAKA;;EAEA,YAAY;;EAEZ,eAAe;;EAEf,aAAa;;;;;;;;;;;;EAYb,UAAU;;UAGK;EACf;EACA;;;;;qBAuNW;;;;;;;;;UC/WI;;;;;;EAMf;;;;;;EAOA,eAAe,QAAQ;;EAEvB,oBAAoB,QAAQ;;EAE5B,qBAAqB,QAAQ;;;;;EAK7B,mBAAmB,QAAQ;EAE3B,QAAQ,gBAAgB;;UAGT;EACf;EACA;;;;KCxCU;EACV,OAAO;EACP,KAAK;EACL,KAAK;EACL,MAAM;;EAEN,OAAO,GAAG;EACV,SAAS;EACT;EACA;EACA,YAAY,OAAO;;;;EAKnB,SAAS;;EAGT,SAAS,UAAU;;EAEnB,UAAU,UAAU;;;;;;wBAaN,mBAAmB;wBACnB,gBAAgB,GAAG,WAAW,OAAO,sBAAsB,IAAI;;;;;;;;;UCS9D;;EAEf,OAAO;;EAEP,KAAK;;EAEL,KAAK;;;;;;;EAQL,OAAO;;;;;;;;;;;EAWP,QAAQ,QAAQ;;;;;;;EAOhB,UAAU;;;;;;;;;;;;;EAcV,QAAQ,cAAc;;;;;;;;;;;;;;;;;EAiBtB,kBAAkB;;;;;;;;;;;;;;;;EAiBlB,WAAW,cAAc;;;;;;;EAQzB;IACE,SAAS;;;;;;EAOX;;;;;EAKA;;EAGA,YAAY,OAAO;;EAEnB,eAAe,OAAO;;EAEtB,aAAa,OAAO;;;;;;;;;;;;EAapB,UAAU;;UAGK;EACf;EACA;EACA,UAAU,IAAI;;;;;qBA+PH;;;;;;;wBC5aG,kBACd,uBACA,OAAM;;;UCAS;;;;;;;;;EASf;;EAGA;;;;;;;;EASA;;;;;;;;EASA,UACE,WACA,WACA,gBACA,gBACA,OAAO;;EAGT,eAAe,OAAO;;EAEtB,aAAa,OAAO;;;;;;;wBAQN,QAAQ,UAAU,WAChC,WACA,QACA,aACA,QACA,aACA,aACC,kBAAkB,MAAM;;;UC9CV;;EAEf,MAAM,QAAQ;;;;;;;EAQd,iBAAiB,UAAU;;;;;;;EAQ3B,iBAAiB;;;;;EAKjB,aAAa;;;;;;;;;;;;;EAab,eAAe,OAAO;;;;;;;EAQtB;;;;;;;EAOA;;EAEA;;;;;;;;;EASA;;;;;;;EAOA,eAAe,OAAO;;;;;;;;EAStB,YAAY,OAAO,YAAY,OAAO;;EAEtC,eAAe,OAAO,YAAY,OAAO;;EAEzC,aAAa,OAAO,YAAY,OAAO;;;;;;;wBAQzB,aAAa,UAAU,SACrC,SAAS;EACN,cAAc,MAAM;EAAmB;;;;UC/F3B,2BAA2B,KAC1C;;;;;;;;;wBAYc,YAAY,UAAU,WACpC,QACA,UACA,UACA,QACA,aACC;EACD,cAAc,MAAM;EACpB;EACA;;;;KC9BG,SAAS,4BAA4B;KACrC,oBAAoB;wBAET,iBAAiB,gBAAgB,kBAC/C,QAAQ,QACR,OAAO,GACP,UAAU,OAAO,iBAAiB,aAClC,UAAU,UACT;wBACa,iBAAiB,gBAAgB,gBAC/C,QAAQ,QACR,OAAO,GACP,UAAU,OAAO,eAAe,aAChC,UAAU,UACT;wBACa,iBAAiB,gBAAgB,6BAC/C,QAAQ,QACR,OAAO,GACP,UAAU,OAAO,4BAA4B,aAC7C,UAAU,UACT;;;wBCtBa,YAAY,sBAAsB;;;;;;;;;;wBCWlC,aACd,sBACA,uBACA,qBAAa,QA4BF,KAAK;;;;;;;;;;;;;wBC+BF,cAAc;EA3BD,UAAA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;wBCvBb,aACd,YAAY,mBACZ,UAAU;;;;;;;;;;wBChBI,eACd,YAAY,mBACZ,gBAAgB,OAAO;;;UCJR,wBAAwB,KAAK;;;;;;;;;;;;;EAa5C,SAAS,UAAU;;;;;;;;;wBAUL,SAAS,UAAU,SACjC,UAAU,OAAO,uBACf,cAAsB,WAAU,mBAChC,MAAM"}
|