import { useState, useCallback, useMemo } from "react"; import type { WidgetOptions } from "../domain"; import { calculateHeight } from "../services/height/HeightStrategies"; export const useWidgetUI = (options?: WidgetOptions) => { const [isWidgetVisible, setIsWidgetVisible] = useState(false); const initialHeight = calculateHeight(options); const [widgetHeight, setWidgetHeight] = useState(initialHeight); const resize = useCallback( (receivedHeight: number) => { if (receivedHeight > 0) { const newHeight = calculateHeight(options, receivedHeight); setWidgetHeight(newHeight); } }, [options], ); const show = useCallback(() => { setIsWidgetVisible(true); }, []); const hide = useCallback(() => { setIsWidgetVisible(false); }, []); return { // State isWidgetVisible, widgetHeight, // Actions resize, show, hide, }; };