diff --git a/eslint.config.js b/eslint.config.js index 87c0279..f96d6d4 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -8,4 +8,12 @@ export default defineConfig( react, ts, storybook.configs['flat/recommended'], + { + // TODO: Enable those rules + rules: { + 'react-you-might-not-need-an-effect/no-pass-data-to-parent': 'off', + 'react-hooks/refs': 'off', + 'react-hooks/set-state-in-effect': 'off', + }, + }, ); diff --git a/package.json b/package.json index d7eee68..a90c091 100644 --- a/package.json +++ b/package.json @@ -39,17 +39,17 @@ "@storybook/addon-docs": "^9.1.2", "@storybook/addon-links": "^9.1.2", "@storybook/react-vite": "^9.1.2", - "@types/react": "^19.1.10", + "@types/react": "^19.2.2", "@zakodium/tsconfig": "^1.0.2", - "eslint": "^9.33.0", - "eslint-config-zakodium": "^16.0.0", + "eslint": "^9.38.0", + "eslint-config-zakodium": "^17.0.0", "eslint-plugin-storybook": "^9.1.2", "prettier": "^3.6.2", - "react": "^19.1.1", - "react-dom": "^19.1.1", - "rimraf": "^6.0.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "rimraf": "^6.1.0", "storybook": "^9.1.2", - "typescript": "^5.9.2" + "typescript": "^5.9.3" }, "repository": { "type": "git", diff --git a/src/hooks/useTicks.ts b/src/hooks/useTicks.ts index 2e2637b..f0afa71 100644 --- a/src/hooks/useTicks.ts +++ b/src/hooks/useTicks.ts @@ -44,7 +44,7 @@ export function useTicks( options: Options, ) { const range = scale.range() as [number, number]; - if (!range || range.length !== 2) { + if (range?.length !== 2) { throw new Error('Range needs to be specified'); } diff --git a/src/hooks/use_resize_observer.ts b/src/hooks/use_resize_observer.ts index a3675b1..9594829 100644 --- a/src/hooks/use_resize_observer.ts +++ b/src/hooks/use_resize_observer.ts @@ -1,8 +1,15 @@ -import { useCallback, useRef, useState } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; -export function useResizeObserver() { +export type UseResizeObserverCallback = (rect: DOMRect) => void; + +export function useResizeObserver(callback?: UseResizeObserverCallback) { const [size, setSize] = useState(); const observerRef = useRef(null); + const callbackRef = useRef(callback); + + useEffect(() => { + callbackRef.current = callback; + }, [callback]); const refCallback = useCallback((node: Element | null) => { if (observerRef.current) { @@ -13,7 +20,7 @@ export function useResizeObserver() { if (node) { const updateSize = () => { const rect = node.getBoundingClientRect(); - + callbackRef.current?.(rect); setSize(rect); };