import { useMemo } from 'react'; import * as React from 'react'; import { Input, Slider } from '@mantine/core'; import debounce from 'lodash/debounce'; import { useSyncedRef } from '../../hooks'; interface OpacitySliderProps { callback: (n: number) => void; currentValue: number; disabled?: boolean; } export function OpacitySlider({ callback, currentValue, disabled }: OpacitySliderProps) { const syncedCallback = useSyncedRef(callback); const debouncedCallback = useMemo(() => { return debounce((n: number) => syncedCallback.current?.(n), 10); }, [syncedCallback]); return ( { debouncedCallback(n); }} /> ); }