@tremolo-ui/react 0.0.6 → 0.0.8
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 +954 -217
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/AnimationCanvas/index.d.ts +16 -9
- package/dist/cjs/types/components/AnimationCanvas/index.d.ts.map +1 -1
- package/dist/cjs/types/components/AnimationKnob/index.d.ts +53 -0
- package/dist/cjs/types/components/AnimationKnob/index.d.ts.map +1 -0
- package/dist/cjs/types/components/DragObserver/index.d.ts +19 -0
- package/dist/cjs/types/components/DragObserver/index.d.ts.map +1 -0
- package/dist/cjs/types/components/Knob/index.d.ts +26 -26
- package/dist/cjs/types/components/Knob/index.d.ts.map +1 -1
- package/dist/cjs/types/components/NumberInput/index.d.ts +2 -5
- package/dist/cjs/types/components/NumberInput/index.d.ts.map +1 -1
- package/dist/cjs/types/components/Piano/BlackKey.d.ts +3 -3
- package/dist/cjs/types/components/Piano/BlackKey.d.ts.map +1 -1
- package/dist/cjs/types/components/Piano/KeyLabel.d.ts +5 -8
- package/dist/cjs/types/components/Piano/KeyLabel.d.ts.map +1 -1
- package/dist/cjs/types/components/Piano/WhiteKey.d.ts +3 -3
- package/dist/cjs/types/components/Piano/WhiteKey.d.ts.map +1 -1
- package/dist/cjs/types/components/Piano/index.d.ts +4 -5
- package/dist/cjs/types/components/Piano/index.d.ts.map +1 -1
- package/dist/cjs/types/components/Piano/key.d.ts +4 -7
- package/dist/cjs/types/components/Piano/key.d.ts.map +1 -1
- package/dist/cjs/types/components/Piano/keyboardShortcuts.d.ts.map +1 -1
- package/dist/cjs/types/components/Slider/Scale.d.ts +11 -0
- package/dist/cjs/types/components/Slider/Scale.d.ts.map +1 -0
- package/dist/cjs/types/components/Slider/ScaleOption.d.ts +25 -0
- package/dist/cjs/types/components/Slider/ScaleOption.d.ts.map +1 -0
- package/dist/cjs/types/components/Slider/Thumb.d.ts +5 -13
- package/dist/cjs/types/components/Slider/Thumb.d.ts.map +1 -1
- package/dist/cjs/types/components/Slider/Track.d.ts +10 -21
- package/dist/cjs/types/components/Slider/Track.d.ts.map +1 -1
- package/dist/cjs/types/components/Slider/context.d.ts +21 -0
- package/dist/cjs/types/components/Slider/context.d.ts.map +1 -0
- package/dist/cjs/types/components/Slider/index.d.ts +18 -12
- package/dist/cjs/types/components/Slider/index.d.ts.map +1 -1
- package/dist/cjs/types/components/WheelObserver/index.d.ts +24 -0
- package/dist/cjs/types/components/WheelObserver/index.d.ts.map +1 -0
- package/dist/cjs/types/components/XYPad/Area.d.ts +13 -0
- package/dist/cjs/types/components/XYPad/Area.d.ts.map +1 -0
- package/dist/cjs/types/components/XYPad/Thumb.d.ts +19 -0
- package/dist/cjs/types/components/XYPad/Thumb.d.ts.map +1 -0
- package/dist/cjs/types/components/XYPad/index.d.ts +39 -0
- package/dist/cjs/types/components/XYPad/index.d.ts.map +1 -0
- package/dist/cjs/types/hooks/useCallbackRef.d.ts.map +1 -1
- package/dist/cjs/types/index.d.ts +11 -0
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/esm/index.js +932 -218
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/AnimationCanvas/index.d.ts +16 -9
- package/dist/esm/types/components/AnimationCanvas/index.d.ts.map +1 -1
- package/dist/esm/types/components/AnimationKnob/index.d.ts +53 -0
- package/dist/esm/types/components/AnimationKnob/index.d.ts.map +1 -0
- package/dist/esm/types/components/DragObserver/index.d.ts +19 -0
- package/dist/esm/types/components/DragObserver/index.d.ts.map +1 -0
- package/dist/esm/types/components/Knob/index.d.ts +26 -26
- package/dist/esm/types/components/Knob/index.d.ts.map +1 -1
- package/dist/esm/types/components/NumberInput/index.d.ts +2 -5
- package/dist/esm/types/components/NumberInput/index.d.ts.map +1 -1
- package/dist/esm/types/components/Piano/BlackKey.d.ts +3 -3
- package/dist/esm/types/components/Piano/BlackKey.d.ts.map +1 -1
- package/dist/esm/types/components/Piano/KeyLabel.d.ts +5 -8
- package/dist/esm/types/components/Piano/KeyLabel.d.ts.map +1 -1
- package/dist/esm/types/components/Piano/WhiteKey.d.ts +3 -3
- package/dist/esm/types/components/Piano/WhiteKey.d.ts.map +1 -1
- package/dist/esm/types/components/Piano/index.d.ts +4 -5
- package/dist/esm/types/components/Piano/index.d.ts.map +1 -1
- package/dist/esm/types/components/Piano/key.d.ts +4 -7
- package/dist/esm/types/components/Piano/key.d.ts.map +1 -1
- package/dist/esm/types/components/Piano/keyboardShortcuts.d.ts.map +1 -1
- package/dist/esm/types/components/Slider/Scale.d.ts +11 -0
- package/dist/esm/types/components/Slider/Scale.d.ts.map +1 -0
- package/dist/esm/types/components/Slider/ScaleOption.d.ts +25 -0
- package/dist/esm/types/components/Slider/ScaleOption.d.ts.map +1 -0
- package/dist/esm/types/components/Slider/Thumb.d.ts +5 -13
- package/dist/esm/types/components/Slider/Thumb.d.ts.map +1 -1
- package/dist/esm/types/components/Slider/Track.d.ts +10 -21
- package/dist/esm/types/components/Slider/Track.d.ts.map +1 -1
- package/dist/esm/types/components/Slider/context.d.ts +21 -0
- package/dist/esm/types/components/Slider/context.d.ts.map +1 -0
- package/dist/esm/types/components/Slider/index.d.ts +18 -12
- package/dist/esm/types/components/Slider/index.d.ts.map +1 -1
- package/dist/esm/types/components/WheelObserver/index.d.ts +24 -0
- package/dist/esm/types/components/WheelObserver/index.d.ts.map +1 -0
- package/dist/esm/types/components/XYPad/Area.d.ts +13 -0
- package/dist/esm/types/components/XYPad/Area.d.ts.map +1 -0
- package/dist/esm/types/components/XYPad/Thumb.d.ts +19 -0
- package/dist/esm/types/components/XYPad/Thumb.d.ts.map +1 -0
- package/dist/esm/types/components/XYPad/index.d.ts +39 -0
- package/dist/esm/types/components/XYPad/index.d.ts.map +1 -0
- package/dist/esm/types/hooks/useCallbackRef.d.ts.map +1 -1
- package/dist/esm/types/index.d.ts +11 -0
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/styles/index.css +241 -0
- package/package.json +2 -5
- package/src/components/AnimationCanvas/index.tsx +87 -57
- package/src/components/AnimationKnob/index.tsx +305 -0
- package/src/components/DragObserver/index.tsx +94 -0
- package/src/components/Knob/index.css +48 -0
- package/src/components/Knob/index.tsx +152 -165
- package/src/components/NumberInput/index.css +25 -0
- package/src/components/NumberInput/index.tsx +8 -41
- package/src/components/Piano/BlackKey.tsx +104 -98
- package/src/components/Piano/KeyLabel.tsx +18 -40
- package/src/components/Piano/WhiteKey.tsx +92 -87
- package/src/components/Piano/index.css +63 -0
- package/src/components/Piano/index.tsx +78 -61
- package/src/components/Piano/key.ts +4 -7
- package/src/components/Piano/keyboardShortcuts.ts +23 -4
- package/src/components/Slider/Scale.tsx +55 -0
- package/src/components/Slider/ScaleOption.tsx +103 -0
- package/src/components/Slider/Thumb.tsx +69 -76
- package/src/components/Slider/Track.tsx +37 -48
- package/src/components/Slider/context.tsx +66 -0
- package/src/components/Slider/index.css +76 -0
- package/src/components/Slider/index.tsx +256 -298
- package/src/components/WheelObserver/index.tsx +47 -0
- package/src/components/XYPad/Area.tsx +40 -0
- package/src/components/XYPad/Thumb.tsx +92 -0
- package/src/components/XYPad/index.css +24 -0
- package/src/components/XYPad/index.tsx +317 -0
- package/src/hooks/useCallbackRef.ts +1 -0
- package/src/hooks/useRefCallbackEvent.ts +1 -0
- package/src/index.ts +12 -0
- package/dist/cjs/types/components/Slider/type.d.ts +0 -7
- package/dist/cjs/types/components/Slider/type.d.ts.map +0 -1
- package/dist/cjs/types/system/pseudo.d.ts +0 -14
- package/dist/cjs/types/system/pseudo.d.ts.map +0 -1
- package/dist/esm/types/components/Slider/type.d.ts +0 -7
- package/dist/esm/types/components/Slider/type.d.ts.map +0 -1
- package/dist/esm/types/system/pseudo.d.ts +0 -14
- package/dist/esm/types/system/pseudo.d.ts.map +0 -1
- package/src/components/Slider/type.ts +0 -16
- package/src/system/pseudo.ts +0 -55
|
@@ -1,76 +1,65 @@
|
|
|
1
|
-
import { css, CSSObject } from '@emotion/react'
|
|
2
|
-
import { ReactElement } from 'react'
|
|
3
1
|
import clsx from 'clsx'
|
|
4
|
-
import {
|
|
5
|
-
import { isHorizontal } from '@tremolo-ui/functions/Slider'
|
|
2
|
+
import { CSSProperties, ReactElement } from 'react'
|
|
6
3
|
|
|
7
|
-
import {
|
|
4
|
+
import { styleHelper, xor } from '@tremolo-ui/functions'
|
|
8
5
|
|
|
9
|
-
|
|
6
|
+
import { useDisabled, useReverse, useVertical } from './context'
|
|
7
|
+
|
|
8
|
+
export const defaultLength = 140
|
|
9
|
+
export const defaultThickness = 10
|
|
10
|
+
|
|
11
|
+
export interface SliderTrackProps {
|
|
10
12
|
length?: number | string
|
|
11
13
|
thickness?: number | string
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
activeHoverBg?: string
|
|
16
|
-
inactiveHoverBg?: string
|
|
17
|
-
|
|
18
|
-
disabledActiveBg?: string
|
|
19
|
-
disabledInactiveBg?: string
|
|
20
|
-
disabledActiveHoverBg?: string
|
|
21
|
-
disabledInactiveHoverBg?: string
|
|
15
|
+
active?: string
|
|
16
|
+
inactive?: string
|
|
22
17
|
|
|
23
18
|
className?: string
|
|
24
|
-
style?:
|
|
19
|
+
style?: CSSProperties
|
|
25
20
|
children?: ReactElement
|
|
26
21
|
|
|
27
|
-
/**
|
|
22
|
+
/** @internal */
|
|
28
23
|
__thumb?: ReactElement
|
|
29
|
-
/**
|
|
30
|
-
__direction?: Direction
|
|
31
|
-
/** inherit */
|
|
32
|
-
__disabled?: boolean
|
|
33
|
-
/** internal */
|
|
24
|
+
/** @internal */
|
|
34
25
|
__percent?: number
|
|
35
26
|
}
|
|
36
27
|
|
|
37
28
|
export function SliderTrack({
|
|
38
|
-
length =
|
|
39
|
-
thickness =
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
activeHoverBg = '#6387e9',
|
|
43
|
-
inactiveHoverBg = '#e0e0e0',
|
|
44
|
-
disabledActiveBg = '#858890',
|
|
45
|
-
disabledInactiveBg = '#ddd',
|
|
46
|
-
disabledActiveHoverBg = disabledActiveBg,
|
|
47
|
-
disabledInactiveHoverBg = disabledInactiveBg,
|
|
29
|
+
length = defaultLength,
|
|
30
|
+
thickness = defaultThickness,
|
|
31
|
+
active,
|
|
32
|
+
inactive,
|
|
48
33
|
children,
|
|
49
34
|
className,
|
|
50
35
|
style,
|
|
51
36
|
__thumb,
|
|
52
|
-
__direction,
|
|
53
|
-
__disabled,
|
|
54
37
|
__percent,
|
|
55
38
|
}: SliderTrackProps) {
|
|
56
|
-
const
|
|
57
|
-
const
|
|
58
|
-
const
|
|
59
|
-
|
|
39
|
+
const vertical = useVertical()
|
|
40
|
+
const reverse = useReverse()
|
|
41
|
+
const disabled = useDisabled()
|
|
42
|
+
|
|
43
|
+
const direction = vertical ? 'bottom' : 'right'
|
|
44
|
+
const colors = {
|
|
45
|
+
'--active': active,
|
|
46
|
+
'--inactive': inactive,
|
|
47
|
+
}
|
|
48
|
+
|
|
60
49
|
return (
|
|
61
50
|
<div
|
|
62
51
|
className={clsx('tremolo-slider-track', className)}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
52
|
+
aria-disabled={disabled}
|
|
53
|
+
style={{
|
|
54
|
+
...colors,
|
|
55
|
+
background: xor(vertical, reverse)
|
|
56
|
+
? `linear-gradient(to ${direction}, var(--inactive, #eee) ${__percent}%, var(--active, #7998ec) ${__percent}%)`
|
|
57
|
+
: `linear-gradient(to ${direction}, var(--active, #7998ec) ${__percent}%, var(--inactive, #eee) ${__percent}%)`,
|
|
66
58
|
borderRadius: styleHelper(thickness!, '/', 2),
|
|
67
|
-
width:
|
|
68
|
-
height:
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
},
|
|
72
|
-
...style
|
|
73
|
-
})}
|
|
59
|
+
width: !vertical ? length : thickness,
|
|
60
|
+
height: vertical ? length : thickness,
|
|
61
|
+
...style,
|
|
62
|
+
}}
|
|
74
63
|
>
|
|
75
64
|
{children}
|
|
76
65
|
{__thumb}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { createContext, useState, useContext, ReactNode } from 'react'
|
|
2
|
+
|
|
3
|
+
const minContext = createContext(0)
|
|
4
|
+
const maxContext = createContext(0)
|
|
5
|
+
const stepContext = createContext(0)
|
|
6
|
+
const skewContext = createContext(0)
|
|
7
|
+
const verticalContext = createContext(false)
|
|
8
|
+
const reverseContext = createContext(false)
|
|
9
|
+
const disabledContext = createContext(false)
|
|
10
|
+
|
|
11
|
+
interface Props {
|
|
12
|
+
min: number
|
|
13
|
+
max: number
|
|
14
|
+
step: number
|
|
15
|
+
skew: number
|
|
16
|
+
vertical: boolean
|
|
17
|
+
reverse: boolean
|
|
18
|
+
disabled: boolean
|
|
19
|
+
children: ReactNode
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function SliderValuesProvider({
|
|
23
|
+
min: _min,
|
|
24
|
+
max: _max,
|
|
25
|
+
step: _step,
|
|
26
|
+
skew: _skew,
|
|
27
|
+
vertical: _vertical,
|
|
28
|
+
reverse: _reverse,
|
|
29
|
+
disabled: _disabled,
|
|
30
|
+
children,
|
|
31
|
+
}: Props) {
|
|
32
|
+
const [min] = useState(_min)
|
|
33
|
+
const [max] = useState(_max)
|
|
34
|
+
const [step] = useState(_step)
|
|
35
|
+
const [skew] = useState(_skew)
|
|
36
|
+
const [vertical] = useState(_vertical)
|
|
37
|
+
const [reverse] = useState(_reverse)
|
|
38
|
+
const [disabled] = useState(_disabled)
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<minContext.Provider value={min}>
|
|
42
|
+
<maxContext.Provider value={max}>
|
|
43
|
+
<stepContext.Provider value={step}>
|
|
44
|
+
<skewContext.Provider value={skew}>
|
|
45
|
+
<verticalContext.Provider value={vertical}>
|
|
46
|
+
<reverseContext.Provider value={reverse}>
|
|
47
|
+
<disabledContext.Provider value={disabled}>
|
|
48
|
+
{children}
|
|
49
|
+
</disabledContext.Provider>
|
|
50
|
+
</reverseContext.Provider>
|
|
51
|
+
</verticalContext.Provider>
|
|
52
|
+
</skewContext.Provider>
|
|
53
|
+
</stepContext.Provider>
|
|
54
|
+
</maxContext.Provider>
|
|
55
|
+
</minContext.Provider>
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export const useMin = () => useContext(minContext)
|
|
60
|
+
export const useMax = () => useContext(maxContext)
|
|
61
|
+
export const useStep = () => useContext(stepContext)
|
|
62
|
+
export const useSkew = () => useContext(skewContext)
|
|
63
|
+
export const useVertical = () => useContext(verticalContext)
|
|
64
|
+
// export const useSetVertical = () => useContext(setVerticalContext)
|
|
65
|
+
export const useReverse = () => useContext(reverseContext)
|
|
66
|
+
export const useDisabled = () => useContext(disabledContext)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
.tremolo-slider {
|
|
2
|
+
display: inline-block;
|
|
3
|
+
cursor: pointer;
|
|
4
|
+
outline: 0;
|
|
5
|
+
-webkit-tap-highlight-color: transparent;
|
|
6
|
+
|
|
7
|
+
&[aria-readonly='true'] {
|
|
8
|
+
cursor: not-allowed;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.tremolo-slider-thumb-wrapper {
|
|
13
|
+
position: absolute;
|
|
14
|
+
translate: -50% -50%;
|
|
15
|
+
z-index: 100;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.tremolo-slider-thumb {
|
|
19
|
+
background: #4e76e6;
|
|
20
|
+
border-radius: 50%;
|
|
21
|
+
outline: none;
|
|
22
|
+
|
|
23
|
+
&[aria-disabled='true'] {
|
|
24
|
+
background: #5d6478;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
&[aria-readonly='false']:focus {
|
|
28
|
+
box-shadow: 0px 0px 0px 3px rgba(var(--tremolo-theme-color-rgb), 0.2);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.tremolo-slider-track {
|
|
33
|
+
--active: #7998ec;
|
|
34
|
+
--inactive: #eee;
|
|
35
|
+
|
|
36
|
+
position: relative;
|
|
37
|
+
|
|
38
|
+
&:hover {
|
|
39
|
+
--active: #6387e9;
|
|
40
|
+
--inactive: #e0e0e0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&[aria-disabled='true'] {
|
|
44
|
+
--active: #858890;
|
|
45
|
+
--inactive: #ddd;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.tremolo-slider-scale {
|
|
50
|
+
display: block;
|
|
51
|
+
position: relative;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.tremolo-slider-scale-option {
|
|
55
|
+
display: flex;
|
|
56
|
+
color: #222;
|
|
57
|
+
flex-direction: column;
|
|
58
|
+
justify-content: center;
|
|
59
|
+
align-items: center;
|
|
60
|
+
position: absolute;
|
|
61
|
+
translate: -50% 0;
|
|
62
|
+
z-index: 10;
|
|
63
|
+
|
|
64
|
+
&[data-vertical='true'] {
|
|
65
|
+
flex-direction: row;
|
|
66
|
+
translate: 0 -50%;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.tremolo-slider-scale-option-mark {
|
|
71
|
+
background-color: currentColor;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.tremolo-slider-scale-option-label {
|
|
75
|
+
text-align: right;
|
|
76
|
+
}
|