import { Typewriter } from "./Typewriter"; import { useBars } from "~/context/bars"; import { onMount, createEffect } from "solid-js"; export function LeftBar() { const { setLeftBarSize, leftBarVisible } = useBars(); let ref: HTMLDivElement | undefined; let actualWidth = 0; onMount(() => { if (ref) { const updateSize = () => { actualWidth = ref?.offsetWidth || 0; setLeftBarSize(leftBarVisible() ? actualWidth : 0); }; updateSize(); const resizeObserver = new ResizeObserver((entries) => { // Use requestAnimationFrame to avoid ResizeObserver loop error requestAnimationFrame(() => { actualWidth = ref?.offsetWidth || 0; setLeftBarSize(leftBarVisible() ? actualWidth : 0); }); }); resizeObserver.observe(ref); return () => resizeObserver.disconnect(); } }); // Update size when visibility changes createEffect(() => { setLeftBarSize(leftBarVisible() ? actualWidth : 0); }); return ( ); } export function RightBar() { const { setRightBarSize, rightBarVisible } = useBars(); let ref: HTMLDivElement | undefined; let actualWidth = 0; onMount(() => { if (ref) { const updateSize = () => { actualWidth = ref?.offsetWidth || 0; setRightBarSize(rightBarVisible() ? actualWidth : 0); }; updateSize(); const resizeObserver = new ResizeObserver((entries) => { // Use requestAnimationFrame to avoid ResizeObserver loop error requestAnimationFrame(() => { actualWidth = ref?.offsetWidth || 0; setRightBarSize(rightBarVisible() ? actualWidth : 0); }); }); resizeObserver.observe(ref); return () => resizeObserver.disconnect(); } }); // Update size when visibility changes createEffect(() => { setRightBarSize(rightBarVisible() ? actualWidth : 0); }); return ( ); }