@tremolo-ui/react 0.0.10 → 0.0.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Slider/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAEZ,aAAa,EAEb,YAAY,EAKb,MAAM,OAAO,CAAA;AAEd,OAAO,EAML,gBAAgB,EAGjB,MAAM,uBAAuB,CAAA;AAW9B,uBAAuB;AACvB,MAAM,WAAW,WAAW;IAE1B,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,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC/B;;OAEG;IACH,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;CAEzC;AAED,uBAAuB;AACvB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAKD;;;GAGG;AACH,eAAO,MAAM,MAAM,yMA2OlB,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EACL,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Slider/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAEZ,aAAa,EAEb,YAAY,EAKb,MAAM,OAAO,CAAA;AAEd,OAAO,EAML,gBAAgB,EAGjB,MAAM,uBAAuB,CAAA;AAW9B,uBAAuB;AACvB,MAAM,WAAW,WAAW;IAE1B,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,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC/B;;OAEG;IACH,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;CAEzC;AAED,uBAAuB;AACvB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAKD;;;GAGG;AACH,eAAO,MAAM,MAAM,yMA4OlB,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EACL,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAnimationFrame.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAnimationFrame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkC,MAAM,OAAO,CAAA;AAEtE,eAAO,MAAM,iBAAiB,iCAEtB,cAAc,SAarB,CAAA"}
1
+ {"version":3,"file":"useAnimationFrame.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAnimationFrame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAkC,MAAM,OAAO,CAAA;AAEtE,eAAO,MAAM,iBAAiB,GAC5B,qBAAmB,EACnB,OAAM,cAAmB,SAa1B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tremolo-ui/react",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "description": "React component library for audio app",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -8,28 +8,43 @@
8
8
  "types": "dist/cjs/types/index.d.ts",
9
9
  "scripts": {
10
10
  "sb": "storybook dev -p 6006",
11
+ "typecheck": "tsc",
11
12
  "build:sb": "storybook build",
12
13
  "serve": "http-server ./storybook-static",
13
14
  "lint": "eslint --fix --ext .ts,.tsx .",
14
15
  "format": "prettier --write .",
15
16
  "test": "echo 'No test yet.'",
16
- "build:package": "rollup -c",
17
+ "build:package": "tsc && rollup -c",
17
18
  "clean": "npm run clean:build && npm run clean:sb",
18
19
  "clean:build": "rimraf ./dist .rollup.cache",
19
20
  "clean:sb": "rimraf ./storybook-static"
20
21
  },
21
- "exports": {
22
- ".": {
23
- "require": {
24
- "types": "./dist/cjs/types/index.d.ts",
25
- "default": "./dist/cjs/index.js"
26
- },
27
- "import": {
28
- "types": "./dist/esm/types/index.d.ts",
29
- "default": "./dist/esm/index.js"
30
- }
31
- },
32
- "./styles/index.css": "./dist/styles/index.css"
22
+ "devDependencies": {
23
+ "@storybook/addon-essentials": "^8.6.7",
24
+ "@storybook/addon-interactions": "^8.6.7",
25
+ "@storybook/addon-links": "^8.6.7",
26
+ "@storybook/blocks": "^8.6.7",
27
+ "@storybook/react": "^8.6.7",
28
+ "@storybook/react-vite": "^8.6.7",
29
+ "@storybook/test": "^8.6.7",
30
+ "@testing-library/react": "^16.0.1",
31
+ "@types/react": "^19.0.10",
32
+ "@types/react-dom": "^19.0.4",
33
+ "jest-environment-jsdom": "^29.7.0",
34
+ "jotai": "^2.12.1",
35
+ "react": "19.x",
36
+ "react-dom": "19.x",
37
+ "storybook": "^8.6.7",
38
+ "tone": "^15.0.4"
39
+ },
40
+ "peerDependencies": {
41
+ "react": "^18 ||^19",
42
+ "react-dom": "^18 || ^19"
43
+ },
44
+ "dependencies": {
45
+ "@tremolo-ui/functions": "0.0.11",
46
+ "clsx": "^2.1.1",
47
+ "zustand": "^5.0.3"
33
48
  },
34
49
  "files": [
35
50
  "dist",
@@ -56,31 +71,17 @@
56
71
  "components",
57
72
  "web-audio"
58
73
  ],
59
- "devDependencies": {
60
- "@storybook/addon-essentials": "^8.3.3",
61
- "@storybook/addon-interactions": "^8.3.3",
62
- "@storybook/addon-links": "^8.3.3",
63
- "@storybook/blocks": "^8.3.3",
64
- "@storybook/react": "^8.3.3",
65
- "@storybook/react-vite": "^8.3.3",
66
- "@storybook/test": "^8.3.3",
67
- "@testing-library/react": "^16.0.1",
68
- "jest-environment-jsdom": "^29.7.0",
69
- "jotai": "^2.12.1",
70
- "react": "^18.3.1",
71
- "react-component-benchmark": "^2.0.0",
72
- "react-dom": "^18.3.1",
73
- "storybook": "^8.3.3",
74
- "tone": "^15.0.4"
75
- },
76
- "peerDependencies": {
77
- "@tremolo-ui/functions": "0.0.10",
78
- "react": "18.x || 19.x",
79
- "react-dom": "18.x || 19.x"
80
- },
81
- "dependencies": {
82
- "@tremolo-ui/functions": "file:../functions",
83
- "clsx": "^2.1.1",
84
- "zustand": "^5.0.3"
74
+ "exports": {
75
+ ".": {
76
+ "require": {
77
+ "types": "./dist/cjs/types/index.d.ts",
78
+ "default": "./dist/cjs/index.js"
79
+ },
80
+ "import": {
81
+ "types": "./dist/esm/types/index.d.ts",
82
+ "default": "./dist/esm/index.js"
83
+ }
84
+ },
85
+ "./styles/index.css": "./dist/styles/index.css"
85
86
  }
86
87
  }
@@ -92,7 +92,7 @@ export function AnimationCanvas({
92
92
  >): ReactElement {
93
93
  const canvasRef = useRef<HTMLCanvasElement>(null)
94
94
  const memoCanvasRef = useRef<HTMLCanvasElement>(null)
95
- const reqIdRef = useRef<number>()
95
+ const reqIdRef = useRef(-1)
96
96
  const widthRef = useRef(0)
97
97
  const heightRef = useRef(0)
98
98
 
@@ -109,7 +109,7 @@ export function NumberInputProvider({
109
109
  children,
110
110
  ...props
111
111
  }: NumberInputProviderProps) {
112
- const storeRef = useRef<NumberInputStore>()
112
+ const storeRef = useRef<NumberInputStore>(null)
113
113
  if (!storeRef.current) {
114
114
  storeRef.current = createNumberInputStore(props)
115
115
  }
@@ -78,7 +78,7 @@ export function Piano({
78
78
  // -- state and ref ---
79
79
  const [pressed, setPressed] = useState(false)
80
80
  const [whiteNoteWidth, setWhiteNoteWidth] = useState(-1)
81
- const keyRefs = useRef<RefObject<KeyMethods>[]>([])
81
+ const keyRefs = useRef<RefObject<KeyMethods | null>[]>([])
82
82
  for (let i = 0; i < noteRange.last - noteRange.first + 1; i++) {
83
83
  keyRefs.current[i] = createRef<KeyMethods>()
84
84
  }
@@ -49,6 +49,7 @@ export const SliderThumb = forwardRef<SliderThumbMethods, SliderThumbProps>(
49
49
  const wrapperRef = useRef<HTMLDivElement>(null)
50
50
  const vertical = useSliderContext((s) => s.vertical)
51
51
  const disabled = useSliderContext((s) => s.disabled)
52
+ const readonly = useSliderContext((s) => s.readonly)
52
53
 
53
54
  useImperativeHandle(ref, () => {
54
55
  return {
@@ -79,6 +80,7 @@ export const SliderThumb = forwardRef<SliderThumbMethods, SliderThumbProps>(
79
80
  // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
80
81
  tabIndex={0}
81
82
  aria-disabled={disabled}
83
+ aria-readonly={readonly}
82
84
  style={{
83
85
  width: size ?? width,
84
86
  height: size ?? height,
@@ -5,9 +5,7 @@ import { styleHelper, xor } from '@tremolo-ui/functions'
5
5
 
6
6
  import { useSliderContext } from './context'
7
7
 
8
- /** @category Slider */
9
8
  export const defaultLength = 140
10
- /** @category Slider */
11
9
  export const defaultThickness = 10
12
10
 
13
11
  /** @category Slider */
@@ -9,16 +9,7 @@ type State = {
9
9
  vertical: boolean
10
10
  reverse: boolean
11
11
  disabled: boolean
12
- }
13
-
14
- type Action = {
15
- updateMin: (min: State['min']) => void
16
- updateMax: (max: State['max']) => void
17
- updateStep: (step: State['step']) => void
18
- updateSkew: (skew: State['skew']) => void
19
- updateVertical: (vertical: State['vertical']) => void
20
- updateReverse: (reverse: State['reverse']) => void
21
- updateDisabled: (disabled: State['disabled']) => void
12
+ readonly: boolean
22
13
  }
23
14
 
24
15
  type SliderStore = ReturnType<typeof createSliderStore>
@@ -32,18 +23,12 @@ const createSliderStore = (initProps?: Partial<State>) => {
32
23
  vertical: false,
33
24
  reverse: false,
34
25
  disabled: false,
26
+ readonly: false,
35
27
  }
36
28
 
37
- return createStore<State & Action>()((set) => ({
29
+ return createStore<State>()(() => ({
38
30
  ...DEFAULT_PROPS,
39
31
  ...initProps,
40
- updateMin: (min) => set(() => ({ min: min })),
41
- updateMax: (max) => set(() => ({ max: max })),
42
- updateStep: (step) => set(() => ({ step: step })),
43
- updateSkew: (skew) => set(() => ({ skew: skew })),
44
- updateVertical: (vertical) => set(() => ({ vertical: vertical })),
45
- updateReverse: (reverse) => set(() => ({ reverse: reverse })),
46
- updateDisabled: (disabled) => set(() => ({ disabled: disabled })),
47
32
  }))
48
33
  }
49
34
 
@@ -52,7 +37,7 @@ const SliderContext = createContext<SliderStore | null>(null)
52
37
  type SliderProviderProps = React.PropsWithChildren<Partial<State>>
53
38
 
54
39
  export function SliderProvider({ children, ...props }: SliderProviderProps) {
55
- const storeRef = useRef<SliderStore>()
40
+ const storeRef = useRef<SliderStore>(null)
56
41
  if (!storeRef.current) {
57
42
  storeRef.current = createSliderStore(props)
58
43
  }
@@ -73,7 +58,7 @@ export function SliderProvider({ children, ...props }: SliderProviderProps) {
73
58
  }
74
59
 
75
60
  /** @category Slider */
76
- export function useSliderContext<T>(selector: (state: State & Action) => T): T {
61
+ export function useSliderContext<T>(selector: (state: State) => T): T {
77
62
  const store = useContext(SliderContext)
78
63
  if (!store) throw new Error('Missing SliderContext.Provider in the tree')
79
64
  return useStore(store, selector)
@@ -261,6 +261,7 @@ export const Slider = forwardRef<SliderMethods, Props>(
261
261
  vertical={vertical}
262
262
  reverse={reverse}
263
263
  disabled={disabled}
264
+ readonly={readonly}
264
265
  >
265
266
  <div
266
267
  className={clsx('tremolo-slider', className)}