@tremolo-ui/react 0.0.11 → 0.1.0-alpha.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/cjs/index.js +711 -395
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/AnimationCanvas/index.d.ts +2 -2
- package/dist/cjs/types/components/AnimationCanvas/index.d.ts.map +1 -1
- package/dist/cjs/types/components/AnimationKnob/index.d.ts +10 -3
- package/dist/cjs/types/components/AnimationKnob/index.d.ts.map +1 -1
- package/dist/cjs/types/components/Knob/index.d.ts +25 -3
- package/dist/cjs/types/components/Knob/index.d.ts.map +1 -1
- package/dist/cjs/types/components/NumberInput/DecrementStepper.d.ts +2 -0
- package/dist/cjs/types/components/NumberInput/DecrementStepper.d.ts.map +1 -1
- package/dist/cjs/types/components/NumberInput/IncrementStepper.d.ts +2 -0
- package/dist/cjs/types/components/NumberInput/IncrementStepper.d.ts.map +1 -1
- package/dist/cjs/types/components/NumberInput/InternalInput.d.ts +18 -0
- package/dist/cjs/types/components/NumberInput/InternalInput.d.ts.map +1 -0
- package/dist/cjs/types/components/NumberInput/Stepper.d.ts +2 -0
- package/dist/cjs/types/components/NumberInput/Stepper.d.ts.map +1 -1
- package/dist/cjs/types/components/NumberInput/context.d.ts +3 -2
- package/dist/cjs/types/components/NumberInput/context.d.ts.map +1 -1
- package/dist/cjs/types/components/NumberInput/index.d.ts +12 -3
- package/dist/cjs/types/components/NumberInput/index.d.ts.map +1 -1
- package/dist/cjs/types/components/Piano/KeyLabel.d.ts +1 -3
- package/dist/cjs/types/components/Piano/KeyLabel.d.ts.map +1 -1
- package/dist/cjs/types/components/Piano/context.d.ts +24 -0
- package/dist/cjs/types/components/Piano/context.d.ts.map +1 -0
- package/dist/cjs/types/components/Piano/index.d.ts +15 -12
- package/dist/cjs/types/components/Piano/index.d.ts.map +1 -1
- package/dist/cjs/types/components/Piano/key.d.ts +14 -19
- package/dist/cjs/types/components/Piano/key.d.ts.map +1 -1
- package/dist/cjs/types/components/Piano/keyboardShortcuts.d.ts +2 -2
- package/dist/cjs/types/components/Slider/Scale.d.ts +1 -3
- package/dist/cjs/types/components/Slider/Scale.d.ts.map +1 -1
- package/dist/cjs/types/components/Slider/Thumb.d.ts +1 -0
- package/dist/cjs/types/components/Slider/Thumb.d.ts.map +1 -1
- package/dist/cjs/types/components/Slider/Track.d.ts +2 -2
- package/dist/cjs/types/components/Slider/Track.d.ts.map +1 -1
- package/dist/cjs/types/components/Slider/index.d.ts +5 -1
- package/dist/cjs/types/components/Slider/index.d.ts.map +1 -1
- package/dist/cjs/types/components/WheelObserver/index.d.ts +3 -3
- package/dist/cjs/types/components/WheelObserver/index.d.ts.map +1 -1
- package/dist/cjs/types/components/XYPad/Area.d.ts +3 -3
- package/dist/cjs/types/components/XYPad/Area.d.ts.map +1 -1
- package/dist/cjs/types/components/XYPad/Thumb.d.ts +1 -0
- package/dist/cjs/types/components/XYPad/Thumb.d.ts.map +1 -1
- package/dist/cjs/types/components/XYPad/index.d.ts +6 -1
- package/dist/cjs/types/components/XYPad/index.d.ts.map +1 -1
- package/dist/cjs/types/hooks/useDrag.d.ts.map +1 -1
- package/dist/cjs/types/hooks/useDragWithElement.d.ts +16 -0
- package/dist/cjs/types/hooks/useDragWithElement.d.ts.map +1 -0
- package/dist/cjs/types/hooks/useInterval.d.ts +2 -0
- package/dist/cjs/types/hooks/useInterval.d.ts.map +1 -0
- package/dist/cjs/types/hooks/useLongPress.d.ts +2 -0
- package/dist/cjs/types/hooks/useLongPress.d.ts.map +1 -0
- package/dist/cjs/types/index.d.ts +5 -0
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/esm/index.js +706 -396
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/AnimationCanvas/index.d.ts +2 -2
- package/dist/esm/types/components/AnimationCanvas/index.d.ts.map +1 -1
- package/dist/esm/types/components/AnimationKnob/index.d.ts +10 -3
- package/dist/esm/types/components/AnimationKnob/index.d.ts.map +1 -1
- package/dist/esm/types/components/Knob/index.d.ts +25 -3
- package/dist/esm/types/components/Knob/index.d.ts.map +1 -1
- package/dist/esm/types/components/NumberInput/DecrementStepper.d.ts +2 -0
- package/dist/esm/types/components/NumberInput/DecrementStepper.d.ts.map +1 -1
- package/dist/esm/types/components/NumberInput/IncrementStepper.d.ts +2 -0
- package/dist/esm/types/components/NumberInput/IncrementStepper.d.ts.map +1 -1
- package/dist/esm/types/components/NumberInput/InternalInput.d.ts +18 -0
- package/dist/esm/types/components/NumberInput/InternalInput.d.ts.map +1 -0
- package/dist/esm/types/components/NumberInput/Stepper.d.ts +2 -0
- package/dist/esm/types/components/NumberInput/Stepper.d.ts.map +1 -1
- package/dist/esm/types/components/NumberInput/context.d.ts +3 -2
- package/dist/esm/types/components/NumberInput/context.d.ts.map +1 -1
- package/dist/esm/types/components/NumberInput/index.d.ts +12 -3
- package/dist/esm/types/components/NumberInput/index.d.ts.map +1 -1
- package/dist/esm/types/components/Piano/KeyLabel.d.ts +1 -3
- package/dist/esm/types/components/Piano/KeyLabel.d.ts.map +1 -1
- package/dist/esm/types/components/Piano/context.d.ts +24 -0
- package/dist/esm/types/components/Piano/context.d.ts.map +1 -0
- package/dist/esm/types/components/Piano/index.d.ts +15 -12
- package/dist/esm/types/components/Piano/index.d.ts.map +1 -1
- package/dist/esm/types/components/Piano/key.d.ts +14 -19
- package/dist/esm/types/components/Piano/key.d.ts.map +1 -1
- package/dist/esm/types/components/Piano/keyboardShortcuts.d.ts +2 -2
- package/dist/esm/types/components/Slider/Scale.d.ts +1 -3
- package/dist/esm/types/components/Slider/Scale.d.ts.map +1 -1
- package/dist/esm/types/components/Slider/Thumb.d.ts +1 -0
- package/dist/esm/types/components/Slider/Thumb.d.ts.map +1 -1
- package/dist/esm/types/components/Slider/Track.d.ts +2 -2
- package/dist/esm/types/components/Slider/Track.d.ts.map +1 -1
- package/dist/esm/types/components/Slider/index.d.ts +5 -1
- package/dist/esm/types/components/Slider/index.d.ts.map +1 -1
- package/dist/esm/types/components/WheelObserver/index.d.ts +3 -3
- package/dist/esm/types/components/WheelObserver/index.d.ts.map +1 -1
- package/dist/esm/types/components/XYPad/Area.d.ts +3 -3
- package/dist/esm/types/components/XYPad/Area.d.ts.map +1 -1
- package/dist/esm/types/components/XYPad/Thumb.d.ts +1 -0
- package/dist/esm/types/components/XYPad/Thumb.d.ts.map +1 -1
- package/dist/esm/types/components/XYPad/index.d.ts +6 -1
- package/dist/esm/types/components/XYPad/index.d.ts.map +1 -1
- package/dist/esm/types/hooks/useDrag.d.ts.map +1 -1
- package/dist/esm/types/hooks/useDragWithElement.d.ts +16 -0
- package/dist/esm/types/hooks/useDragWithElement.d.ts.map +1 -0
- package/dist/esm/types/hooks/useInterval.d.ts +2 -0
- package/dist/esm/types/hooks/useInterval.d.ts.map +1 -0
- package/dist/esm/types/hooks/useLongPress.d.ts +2 -0
- package/dist/esm/types/hooks/useLongPress.d.ts.map +1 -0
- package/dist/esm/types/index.d.ts +5 -0
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/styles/index.css +117 -33
- package/package.json +3 -2
- package/src/components/AnimationCanvas/index.tsx +14 -6
- package/src/components/AnimationKnob/index.tsx +216 -187
- package/src/components/Knob/index.tsx +244 -171
- package/src/components/NumberInput/DecrementStepper.tsx +9 -2
- package/src/components/NumberInput/IncrementStepper.tsx +9 -2
- package/src/components/NumberInput/InternalInput.tsx +219 -0
- package/src/components/NumberInput/Stepper.tsx +2 -0
- package/src/components/NumberInput/context.tsx +20 -8
- package/src/components/NumberInput/index.css +76 -22
- package/src/components/NumberInput/index.tsx +94 -162
- package/src/components/Piano/KeyLabel.tsx +9 -5
- package/src/components/Piano/context.tsx +108 -0
- package/src/components/Piano/index.css +24 -6
- package/src/components/Piano/index.tsx +192 -122
- package/src/components/Piano/key.tsx +215 -0
- package/src/components/Piano/keyboardShortcuts.ts +2 -2
- package/src/components/Slider/Scale.tsx +1 -4
- package/src/components/Slider/Thumb.tsx +4 -0
- package/src/components/Slider/Track.tsx +5 -2
- package/src/components/Slider/index.css +5 -2
- package/src/components/Slider/index.tsx +84 -71
- package/src/components/WheelObserver/index.tsx +4 -2
- package/src/components/XYPad/Area.tsx +7 -6
- package/src/components/XYPad/Thumb.tsx +6 -0
- package/src/components/XYPad/index.css +12 -2
- package/src/components/XYPad/index.tsx +116 -90
- package/src/hooks/useDrag.ts +6 -7
- package/src/hooks/useDragWithElement.ts +76 -0
- package/src/hooks/useInterval.ts +27 -0
- package/src/hooks/useLongPress.ts +31 -0
- package/src/index.ts +6 -0
- package/src/styles/index.css +0 -1
- package/dist/cjs/types/components/Piano/BlackKey.d.ts +0 -5
- package/dist/cjs/types/components/Piano/BlackKey.d.ts.map +0 -1
- package/dist/cjs/types/components/Piano/WhiteKey.d.ts +0 -7
- package/dist/cjs/types/components/Piano/WhiteKey.d.ts.map +0 -1
- package/dist/esm/types/components/Piano/BlackKey.d.ts +0 -5
- package/dist/esm/types/components/Piano/BlackKey.d.ts.map +0 -1
- package/dist/esm/types/components/Piano/WhiteKey.d.ts +0 -7
- package/dist/esm/types/components/Piano/WhiteKey.d.ts.map +0 -1
- package/src/components/Piano/BlackKey.tsx +0 -118
- package/src/components/Piano/WhiteKey.tsx +0 -120
- package/src/components/Piano/key.ts +0 -46
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import React, { ReactElement } from 'react';
|
|
2
2
|
import { InputEventOption } from '@tremolo-ui/functions';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Two-dimensional slider component.
|
|
5
|
+
* @category XYPad
|
|
6
|
+
*/
|
|
4
7
|
export interface ValueOptions {
|
|
5
8
|
value: number;
|
|
6
9
|
min: number;
|
|
@@ -25,6 +28,8 @@ export interface XYPadProps {
|
|
|
25
28
|
disabled?: boolean;
|
|
26
29
|
readonly?: boolean;
|
|
27
30
|
onChange?: (valueX: number, valueY: number) => void;
|
|
31
|
+
onDragStart?: (valueX: number, valueY: number) => void;
|
|
32
|
+
onDragEnd?: (valueX: number, valueY: number) => void;
|
|
28
33
|
/** \<XYPadThumb /> | \<XYPadArea /> */
|
|
29
34
|
children?: ReactElement | ReactElement[];
|
|
30
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/XYPad/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAGZ,YAAY,EAKb,MAAM,OAAO,CAAA;AAEd,OAAO,EAML,gBAAgB,EAEjB,MAAM,uBAAuB,CAAA;AAS9B
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/XYPad/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAGZ,YAAY,EAKb,MAAM,OAAO,CAAA;AAEd,OAAO,EAML,gBAAgB,EAEjB,MAAM,uBAAuB,CAAA;AAS9B;;;GAGG;AACH,MAAM,WAAW,YAAY;IAE3B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IAGX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC/B;;OAEG;IACH,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CACnC;AAED,sBAAsB;AACtB,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,YAAY,CAAA;IACf,CAAC,EAAE,YAAY,CAAA;IAEf,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACpD,uCAAuC;IACvC,QAAQ,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;CACzC;AAED,sBAAsB;AACtB,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAaD;;;GAGG;AACH,eAAO,MAAM,KAAK,sMA+PjB,CAAA;AAED,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDrag.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useDrag.ts"],"names":[],"mappings":"AAKA,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,EACzC,SAAa,EACb,MAAM,EACN,WAAW,EACX,SAAS,GACV,EAAE,KAAK,GAAG;IACT,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI;IACjC,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CACvC,
|
|
1
|
+
{"version":3,"file":"useDrag.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useDrag.ts"],"names":[],"mappings":"AAKA,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,EACzC,SAAa,EACb,MAAM,EACN,WAAW,EACX,SAAS,GACV,EAAE,KAAK,GAAG;IACT,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI;IACjC,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CACvC,CAkEA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
interface Props<T extends Element> {
|
|
3
|
+
baseElementRef: RefObject<T | null>;
|
|
4
|
+
onDrag: (normalizedX: number, normalizedY: number) => void;
|
|
5
|
+
onDragStart?: (normalizedX: number, normalizedY: number) => void;
|
|
6
|
+
onDragEnd?: (normalizedX: number, normalizedY: number) => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* @returns [refCallback, pointerDownHandler]
|
|
10
|
+
*/
|
|
11
|
+
export declare function useDragWithElement<T extends Element>({ baseElementRef, onDrag, onDragStart, onDragEnd, }: Props<T>): [
|
|
12
|
+
(div: EventTarget | null) => void,
|
|
13
|
+
(event: React.PointerEvent<T>) => void
|
|
14
|
+
];
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=useDragWithElement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDragWithElement.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useDragWithElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtD,UAAU,KAAK,CAAC,CAAC,SAAS,OAAO;IAC/B,cAAc,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IACnC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;IAChE,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,EACpD,cAAc,EACd,MAAM,EACN,WAAW,EACX,SAAS,GACV,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG;IACZ,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI;IACjC,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CACvC,CAkDA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInterval.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useInterval.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,QAwBrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLongPress.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useLongPress.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,IAAI,EACpB,YAAY,SAAM,EAClB,QAAQ,SAAK,cAsBd"}
|
|
@@ -13,4 +13,9 @@ export * from './components/Piano';
|
|
|
13
13
|
export * from './components/Slider';
|
|
14
14
|
export * from './components/WheelObserver';
|
|
15
15
|
export * from './components/XYPad';
|
|
16
|
+
export * from './hooks/useAnimationFrame';
|
|
17
|
+
export * from './hooks/useDrag';
|
|
18
|
+
export * from './hooks/useEventListener';
|
|
19
|
+
export * from './hooks/useInterval';
|
|
20
|
+
export * from './hooks/useLongPress';
|
|
16
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAA;AAC3B,OAAO,6BAA6B,CAAA;AACpC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,8BAA8B,CAAA;AACrC,OAAO,+BAA+B,CAAA;AACtC,OAAO,8BAA8B,CAAA;AAErC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAA;AAC3B,OAAO,6BAA6B,CAAA;AACpC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,8BAA8B,CAAA;AACrC,OAAO,+BAA+B,CAAA;AACtC,OAAO,8BAA8B,CAAA;AAErC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAElC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA"}
|
package/dist/styles/index.css
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
:root {
|
|
2
2
|
--tremolo-theme-color: #4e76e6;
|
|
3
|
-
--tremolo-theme-color-rgb: 78, 118, 230;
|
|
4
3
|
}
|
|
5
4
|
|
|
6
5
|
.tremolo-no-select {
|
|
@@ -57,42 +56,80 @@
|
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
.tremolo-number-input-wrapper {
|
|
60
|
-
--
|
|
61
|
-
--
|
|
59
|
+
--border-radius: 4px;
|
|
60
|
+
--stepper-width: 20px;
|
|
61
|
+
--active-color: var(--tremolo-theme-color);
|
|
62
62
|
|
|
63
63
|
display: inline-flex;
|
|
64
64
|
flex-direction: row;
|
|
65
65
|
position: relative;
|
|
66
|
-
|
|
67
|
-
border-style: solid;
|
|
68
|
-
border-width: 1px;
|
|
69
|
-
border-color: #bbb;
|
|
70
|
-
border-radius: var(--tremolo-number-input-border-radius);
|
|
71
|
-
|
|
72
66
|
width: 140px;
|
|
73
67
|
height: min-content;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
68
|
+
border-style: solid;
|
|
69
|
+
border-color: #c1c1c1;
|
|
70
|
+
border-width: 0px;
|
|
71
|
+
outline: none;
|
|
72
|
+
transition: all 0.1s;
|
|
78
73
|
|
|
79
74
|
&:not(:focus-within):has(> .tremolo-number-input[data-error='true']) {
|
|
80
75
|
border-color: #f34343;
|
|
81
76
|
}
|
|
82
77
|
|
|
83
|
-
|
|
84
|
-
border-
|
|
85
|
-
|
|
78
|
+
&[data-variant='outline'] {
|
|
79
|
+
border-width: 1px;
|
|
80
|
+
border-radius: var(--border-radius);
|
|
81
|
+
|
|
82
|
+
&:hover {
|
|
83
|
+
border-color: #909090;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
&:focus-within {
|
|
87
|
+
border-color: var(--active-color);
|
|
88
|
+
box-shadow: 0px 0px 0px 2px
|
|
89
|
+
color-mix(in srgb, var(--active-color) 10%, transparent);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
&[data-variant='filled'] {
|
|
94
|
+
border-width: 1px;
|
|
95
|
+
border-radius: var(--border-radius);
|
|
96
|
+
border-color: transparent;
|
|
97
|
+
background-color: #edf2f7;
|
|
98
|
+
|
|
99
|
+
&:hover {
|
|
100
|
+
background-color: #e4e9ee;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&:focus-within {
|
|
104
|
+
background-color: inherit;
|
|
105
|
+
border-color: var(--active-color);
|
|
106
|
+
box-shadow: 0px 0px 0px 2px
|
|
107
|
+
color-mix(in srgb, var(--active-color) 10%, transparent);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
&[data-variant='flushed'] {
|
|
112
|
+
border-bottom-width: 1px;
|
|
113
|
+
|
|
114
|
+
&:hover {
|
|
115
|
+
border-color: #909090;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
&:focus-within {
|
|
119
|
+
border-color: var(--active-color);
|
|
120
|
+
box-shadow: 0px 2px 0px 0px
|
|
121
|
+
color-mix(in srgb, var(--active-color) 10%, transparent);
|
|
122
|
+
}
|
|
86
123
|
}
|
|
87
124
|
|
|
88
125
|
&[data-stepper='false'] {
|
|
89
|
-
--
|
|
126
|
+
--stepper-width: 0px;
|
|
90
127
|
}
|
|
91
128
|
}
|
|
92
129
|
|
|
93
130
|
.tremolo-number-input {
|
|
94
131
|
display: block;
|
|
95
|
-
width: calc(100% - 20px - var(--
|
|
132
|
+
width: calc(100% - 20px - var(--stepper-width));
|
|
96
133
|
background-color: inherit;
|
|
97
134
|
font: inherit;
|
|
98
135
|
padding: 6px 10px;
|
|
@@ -100,7 +137,11 @@
|
|
|
100
137
|
margin: 0;
|
|
101
138
|
border: none;
|
|
102
139
|
outline: none;
|
|
103
|
-
appearance:
|
|
140
|
+
appearance: none;
|
|
141
|
+
|
|
142
|
+
&[aria-readonly='true'] {
|
|
143
|
+
cursor: not-allowed;
|
|
144
|
+
}
|
|
104
145
|
}
|
|
105
146
|
|
|
106
147
|
.tremolo-number-input-stepper {
|
|
@@ -110,7 +151,7 @@
|
|
|
110
151
|
position: absolute;
|
|
111
152
|
top: 0;
|
|
112
153
|
right: 0;
|
|
113
|
-
width: var(--
|
|
154
|
+
width: var(--stepper-width);
|
|
114
155
|
transition: all 0.1s linear;
|
|
115
156
|
|
|
116
157
|
&[data-dynamic='true'] {
|
|
@@ -119,7 +160,11 @@
|
|
|
119
160
|
}
|
|
120
161
|
}
|
|
121
162
|
|
|
122
|
-
|
|
163
|
+
:is(
|
|
164
|
+
.tremolo-number-input-wrapper:hover,
|
|
165
|
+
.tremolo-number-input-wrapper:focus-within
|
|
166
|
+
)
|
|
167
|
+
.tremolo-number-input-stepper {
|
|
123
168
|
opacity: 1;
|
|
124
169
|
transform: translateX(0);
|
|
125
170
|
}
|
|
@@ -136,7 +181,7 @@
|
|
|
136
181
|
max-height: 50%;
|
|
137
182
|
user-select: none;
|
|
138
183
|
cursor: pointer;
|
|
139
|
-
border-top-right-radius: var(--
|
|
184
|
+
border-top-right-radius: var(--border-radius);
|
|
140
185
|
|
|
141
186
|
&[aria-disabled='false']:active {
|
|
142
187
|
background-color: #3443560e;
|
|
@@ -145,6 +190,10 @@
|
|
|
145
190
|
&[aria-disabled='true'] {
|
|
146
191
|
cursor: not-allowed;
|
|
147
192
|
}
|
|
193
|
+
|
|
194
|
+
&[aria-readonly='true'] {
|
|
195
|
+
cursor: not-allowed;
|
|
196
|
+
}
|
|
148
197
|
}
|
|
149
198
|
|
|
150
199
|
.tremolo-number-input-decrement-stepper {
|
|
@@ -160,7 +209,7 @@
|
|
|
160
209
|
max-height: 50%;
|
|
161
210
|
user-select: none;
|
|
162
211
|
cursor: pointer;
|
|
163
|
-
border-bottom-right-radius: var(--
|
|
212
|
+
border-bottom-right-radius: var(--border-radius);
|
|
164
213
|
|
|
165
214
|
&[aria-disabled='false']:active {
|
|
166
215
|
background-color: #3443560e;
|
|
@@ -169,26 +218,39 @@
|
|
|
169
218
|
&[aria-disabled='true'] {
|
|
170
219
|
cursor: not-allowed;
|
|
171
220
|
}
|
|
221
|
+
|
|
222
|
+
&[aria-readonly='true'] {
|
|
223
|
+
cursor: not-allowed;
|
|
224
|
+
}
|
|
172
225
|
}
|
|
173
226
|
|
|
174
227
|
.tremolo-piano {
|
|
175
228
|
display: inline-block;
|
|
176
229
|
box-sizing: border-box;
|
|
177
230
|
user-select: none;
|
|
231
|
+
touch-action: none;
|
|
178
232
|
position: relative;
|
|
179
233
|
}
|
|
180
234
|
|
|
181
235
|
.tremolo-piano-white-key {
|
|
236
|
+
--bg: white;
|
|
237
|
+
--color: black;
|
|
238
|
+
--active-bg: #ccc;
|
|
239
|
+
--active-color: black;
|
|
240
|
+
|
|
241
|
+
box-sizing: border-box;
|
|
182
242
|
position: absolute;
|
|
183
|
-
background-color:
|
|
184
|
-
color:
|
|
243
|
+
background-color: var(--bg);
|
|
244
|
+
-webkit-tap-highlight-color: transparent;
|
|
245
|
+
color: var(--color);
|
|
185
246
|
border: 1px solid #555;
|
|
186
247
|
border-radius: 0px 0px 8px 8px;
|
|
187
248
|
cursor: pointer;
|
|
188
249
|
z-index: 1;
|
|
189
250
|
|
|
190
251
|
&[data-active='true'] {
|
|
191
|
-
background-color:
|
|
252
|
+
background-color: var(--active-bg);
|
|
253
|
+
color: var(--active-color);
|
|
192
254
|
}
|
|
193
255
|
|
|
194
256
|
&[aria-disabled='true'] {
|
|
@@ -197,16 +259,24 @@
|
|
|
197
259
|
}
|
|
198
260
|
|
|
199
261
|
.tremolo-piano-black-key {
|
|
262
|
+
--color: white;
|
|
263
|
+
--bg: #333;
|
|
264
|
+
--active-color: white;
|
|
265
|
+
--active-bg: #666;
|
|
266
|
+
|
|
267
|
+
box-sizing: border-box;
|
|
200
268
|
position: absolute;
|
|
201
|
-
background-color:
|
|
202
|
-
color:
|
|
269
|
+
background-color: var(--bg);
|
|
270
|
+
-webkit-tap-highlight-color: transparent;
|
|
271
|
+
color: var(--color);
|
|
203
272
|
border: 1px solid #555;
|
|
204
273
|
border-radius: 0px 0px 8px 8px;
|
|
205
274
|
cursor: pointer;
|
|
206
275
|
z-index: 2;
|
|
207
276
|
|
|
208
277
|
&[data-active='true'] {
|
|
209
|
-
background-color:
|
|
278
|
+
background-color: var(--active-bg);
|
|
279
|
+
color: var(--active-color);
|
|
210
280
|
}
|
|
211
281
|
|
|
212
282
|
&[aria-disabled='true'] {
|
|
@@ -222,6 +292,7 @@
|
|
|
222
292
|
}
|
|
223
293
|
|
|
224
294
|
.tremolo-piano-key-label {
|
|
295
|
+
box-sizing: content-box;
|
|
225
296
|
display: flex;
|
|
226
297
|
justify-content: center;
|
|
227
298
|
align-items: center;
|
|
@@ -253,7 +324,9 @@
|
|
|
253
324
|
}
|
|
254
325
|
|
|
255
326
|
.tremolo-slider-thumb {
|
|
256
|
-
|
|
327
|
+
--color: var(--tremolo-theme-color);
|
|
328
|
+
|
|
329
|
+
background: var(--color);
|
|
257
330
|
border-radius: 50%;
|
|
258
331
|
outline: none;
|
|
259
332
|
|
|
@@ -262,7 +335,8 @@
|
|
|
262
335
|
}
|
|
263
336
|
|
|
264
337
|
&[aria-readonly='false']:focus {
|
|
265
|
-
box-shadow: 0px 0px 0px 3px
|
|
338
|
+
box-shadow: 0px 0px 0px 3px
|
|
339
|
+
color-mix(in srgb, var(--color) 20%, transparent);
|
|
266
340
|
}
|
|
267
341
|
}
|
|
268
342
|
|
|
@@ -325,6 +399,13 @@
|
|
|
325
399
|
cursor: pointer;
|
|
326
400
|
}
|
|
327
401
|
|
|
402
|
+
.tremolo-xy-pad-area {
|
|
403
|
+
--color: #eee;
|
|
404
|
+
|
|
405
|
+
position: relative;
|
|
406
|
+
background-color: var(--color);
|
|
407
|
+
}
|
|
408
|
+
|
|
328
409
|
.tremolo-xy-pad-thumb-wrapper {
|
|
329
410
|
position: absolute;
|
|
330
411
|
translate: -50% -50%;
|
|
@@ -332,15 +413,18 @@
|
|
|
332
413
|
}
|
|
333
414
|
|
|
334
415
|
.tremolo-xy-pad-thumb {
|
|
416
|
+
--color: var(--tremolo-theme-color);
|
|
417
|
+
|
|
335
418
|
border-radius: 50%;
|
|
336
419
|
outline: none;
|
|
337
|
-
background-color:
|
|
420
|
+
background-color: var(--color);
|
|
338
421
|
|
|
339
422
|
&[aria-disabled='true'] {
|
|
340
423
|
background-color: #5d6478;
|
|
341
424
|
}
|
|
342
425
|
|
|
343
426
|
&:focus {
|
|
344
|
-
box-shadow: 0px 0px 0px 3px
|
|
427
|
+
box-shadow: 0px 0px 0px 3px
|
|
428
|
+
color-mix(in srgb, var(--color) 20%, transparent);
|
|
345
429
|
}
|
|
346
430
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tremolo-ui/react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.1.0-alpha.0",
|
|
4
4
|
"description": "React component library for audio app",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"clean:sb": "rimraf ./storybook-static"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
+
"@storybook/addon-a11y": "^8.6.7",
|
|
23
24
|
"@storybook/addon-essentials": "^8.6.7",
|
|
24
25
|
"@storybook/addon-interactions": "^8.6.7",
|
|
25
26
|
"@storybook/addon-links": "^8.6.7",
|
|
@@ -42,7 +43,7 @@
|
|
|
42
43
|
"react-dom": "^18 || ^19"
|
|
43
44
|
},
|
|
44
45
|
"dependencies": {
|
|
45
|
-
"@tremolo-ui/functions": "0.0.
|
|
46
|
+
"@tremolo-ui/functions": "0.0.12",
|
|
46
47
|
"clsx": "^2.1.1",
|
|
47
48
|
"zustand": "^5.0.3"
|
|
48
49
|
},
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import clsx from 'clsx'
|
|
2
2
|
import {
|
|
3
3
|
ComponentPropsWithoutRef,
|
|
4
|
-
MutableRefObject,
|
|
5
4
|
ReactElement,
|
|
5
|
+
RefObject,
|
|
6
6
|
useCallback,
|
|
7
7
|
useEffect,
|
|
8
8
|
useRef,
|
|
@@ -29,8 +29,8 @@ export type DrawFunction = (
|
|
|
29
29
|
// TODO: saving scale and translate
|
|
30
30
|
// context: Omit<CanvasRenderingContext2D, 'save' | 'restore' | 'scale'>,
|
|
31
31
|
context: CanvasRenderingContext2D,
|
|
32
|
-
width:
|
|
33
|
-
height:
|
|
32
|
+
width: RefObject<number>,
|
|
33
|
+
height: RefObject<number>,
|
|
34
34
|
count: number,
|
|
35
35
|
) => void
|
|
36
36
|
|
|
@@ -84,6 +84,7 @@ export function AnimationCanvas({
|
|
|
84
84
|
init,
|
|
85
85
|
draw,
|
|
86
86
|
className,
|
|
87
|
+
onContextMenu = (event) => event.preventDefault(),
|
|
87
88
|
...props
|
|
88
89
|
}: AnimationCanvasProps &
|
|
89
90
|
Omit<
|
|
@@ -99,8 +100,8 @@ export function AnimationCanvas({
|
|
|
99
100
|
const loop = useCallback(
|
|
100
101
|
(
|
|
101
102
|
context: CanvasRenderingContext2D,
|
|
102
|
-
width:
|
|
103
|
-
height:
|
|
103
|
+
width: RefObject<number>,
|
|
104
|
+
height: RefObject<number>,
|
|
104
105
|
count: number,
|
|
105
106
|
) => {
|
|
106
107
|
reqIdRef.current = requestAnimationFrame(() =>
|
|
@@ -154,7 +155,13 @@ export function AnimationCanvas({
|
|
|
154
155
|
;(context[prop] as DrawingStateValue) = contextMemo[prop]
|
|
155
156
|
}
|
|
156
157
|
|
|
157
|
-
if (
|
|
158
|
+
if (
|
|
159
|
+
reduceFlickering &&
|
|
160
|
+
memoContext &&
|
|
161
|
+
memoCanvas &&
|
|
162
|
+
memoCanvas.width > 0 &&
|
|
163
|
+
memoCanvas.height > 0
|
|
164
|
+
) {
|
|
158
165
|
context.drawImage(memoContext.canvas, 0, 0)
|
|
159
166
|
}
|
|
160
167
|
}
|
|
@@ -194,6 +201,7 @@ export function AnimationCanvas({
|
|
|
194
201
|
width={relativeSize ? 0 : width}
|
|
195
202
|
height={relativeSize ? 0 : height}
|
|
196
203
|
ref={canvasRef}
|
|
204
|
+
onContextMenu={onContextMenu}
|
|
197
205
|
{...props}
|
|
198
206
|
></canvas>
|
|
199
207
|
{relativeSize && reduceFlickering && (
|