chore: switch from biome to eslint + prettier; fix ton of lint issues

This commit is contained in:
Maze Winther
2026-04-29 00:37:56 +02:00
parent 6ec818fc11
commit d7692b4c79
159 changed files with 5630 additions and 5255 deletions
@@ -13,12 +13,12 @@ import { toast } from "sonner";
export function PreviewContextMenu({
onToggleFullscreen,
containerRef,
container,
overlayControls,
onOverlayVisibilityChange,
}: {
onToggleFullscreen: () => void;
containerRef: React.RefObject<HTMLElement | null>;
container: HTMLElement | null;
overlayControls: PreviewOverlayControl[];
onOverlayVisibilityChange: (params: {
overlayId: string;
@@ -51,7 +51,7 @@ export function PreviewContextMenu({
};
return (
<ContextMenuContent className="w-56" container={containerRef.current}>
<ContextMenuContent className="w-56" container={container}>
<ContextMenuItem onClick={viewport.fitToScreen} inset>
Fit to screen
</ContextMenuItem>
+16 -10
View File
@@ -1,6 +1,6 @@
"use client";
import { useCallback, useEffect, useMemo, useRef } from "react";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import useDeepCompareEffect from "use-deep-compare-effect";
import { useEditor } from "@/editor/use-editor";
import { useRafLoop } from "@/hooks/use-raf-loop";
@@ -68,15 +68,20 @@ export function PreviewPanel({
}) => void;
}) {
const containerRef = useRef<HTMLDivElement>(null);
const [container, setContainer] = useState<HTMLDivElement | null>(null);
const { toggleFullscreen } = useFullscreen({ containerRef });
const handleContainerRef = useCallback((node: HTMLDivElement | null) => {
containerRef.current = node;
setContainer(node);
}, []);
return (
<div
ref={containerRef}
ref={handleContainerRef}
className="panel bg-background relative flex size-full min-h-0 min-w-0 flex-col rounded-sm border"
>
<PreviewCanvas
containerRef={containerRef}
container={container}
onToggleFullscreen={toggleFullscreen}
overlayControls={overlayControls}
overlayInstances={overlayInstances}
@@ -117,13 +122,13 @@ function RenderTreeController() {
}
function PreviewCanvas({
containerRef,
container,
onToggleFullscreen,
overlayControls,
overlayInstances,
onOverlayVisibilityChange,
}: {
containerRef: React.RefObject<HTMLElement | null>;
container: HTMLElement | null;
onToggleFullscreen: () => void;
overlayControls: PreviewOverlayControl[];
overlayInstances: PreviewOverlayInstance[];
@@ -149,6 +154,7 @@ function PreviewCanvas({
viewportRef,
viewportWidth: viewportSize.width,
});
const { canPan, panByScreenDelta, scaleZoom } = viewport;
const renderer = useMemo(() => {
return new CanvasRenderer({
@@ -240,7 +246,7 @@ function PreviewCanvas({
Math.min(Math.abs(pendingZoomDelta), 30);
const zoomFactor = Math.exp(-cappedDelta / 300);
viewport.scaleZoom({ factor: zoomFactor });
scaleZoom({ factor: zoomFactor });
pendingZoomDelta = 0;
zoomRafId = null;
});
@@ -249,7 +255,7 @@ function PreviewCanvas({
return;
}
if (!viewport.canPan) {
if (!canPan) {
return;
}
@@ -263,7 +269,7 @@ function PreviewCanvas({
if (panRafId === null) {
panRafId = requestAnimationFrame(() => {
viewport.panByScreenDelta({
panByScreenDelta({
deltaX: pendingPanDeltaX,
deltaY: pendingPanDeltaY,
});
@@ -290,7 +296,7 @@ function PreviewCanvas({
cancelAnimationFrame(panRafId);
}
};
}, [viewport.canPan, viewport.panByScreenDelta, viewport.scaleZoom]);
}, [canPan, panByScreenDelta, scaleZoom]);
return (
<PreviewViewportProvider value={viewport}>
@@ -329,7 +335,7 @@ function PreviewCanvas({
</ContextMenuTrigger>
<PreviewContextMenu
onToggleFullscreen={onToggleFullscreen}
containerRef={containerRef}
container={container}
overlayControls={overlayControls}
onOverlayVisibilityChange={onOverlayVisibilityChange}
/>
@@ -9,6 +9,7 @@ import {
useRef,
useState,
} from "react";
import { useCommittedRef } from "@/hooks/use-committed-ref";
import {
canvasToOverlay,
getDisplayScale,
@@ -219,8 +220,7 @@ export function usePreviewViewportState({
}));
const [isPanning, setIsPanning] = useState(false);
const panSessionRef = useRef<PanSession | null>(null);
const centerRef = useRef(center);
centerRef.current = center;
const centerRef = useCommittedRef(center);
const fitScale = useMemo(
() =>
@@ -409,10 +409,10 @@ export function usePreviewViewportState({
pointerId: event.pointerId,
};
setIsPanning(true);
(event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);
event.currentTarget.setPointerCapture(event.pointerId);
return true;
},
[zoom],
[centerRef, zoom],
);
const handlePanPointerMove = useCallback(
@@ -451,13 +451,9 @@ export function usePreviewViewportState({
}
if (
(event.currentTarget as HTMLElement).hasPointerCapture(
panSession.pointerId,
)
event.currentTarget.hasPointerCapture(panSession.pointerId)
) {
(event.currentTarget as HTMLElement).releasePointerCapture(
panSession.pointerId,
);
event.currentTarget.releasePointerCapture(panSession.pointerId);
}
panSessionRef.current = null;
@@ -120,7 +120,6 @@ export function TextEditOverlay({
transformOrigin: "center center",
}}
>
{/* biome-ignore lint/a11y/useSemanticElements: contenteditable required for multiline, IME, paste */}
<div
ref={divRef}
contentEditable
@@ -1,5 +1,6 @@
import { useEffect, useReducer, useRef } from "react";
import { useEffect, useReducer, useState } from "react";
import { useEditor } from "@/editor/use-editor";
import { useCommittedRef } from "@/hooks/use-committed-ref";
import { useShiftKey } from "@/hooks/use-shift-key";
import { usePreviewViewport } from "@/preview/components/preview-viewport";
import type { SnapLine } from "@/preview/preview-snap";
@@ -59,17 +60,10 @@ export function usePreviewInteraction({
onSnapLinesChange,
},
};
const depsRef = useRef<PreviewInteractionDeps>(deps);
depsRef.current = deps;
const controllerRef = useRef<PreviewInteractionController | null>(null);
if (!controllerRef.current) {
controllerRef.current = new PreviewInteractionController({
depsRef: depsRef as PreviewInteractionDepsRef,
});
}
const controller = controllerRef.current;
const depsRef = useCommittedRef(deps) as PreviewInteractionDepsRef;
const [controller] = useState(
() => new PreviewInteractionController({ depsRef }),
);
const [, rerender] = useReducer((n: number) => n + 1, 0);
useEffect(
@@ -1,7 +1,8 @@
import { useEffect, useReducer, useRef } from "react";
import { useEffect, useReducer, useState } from "react";
import { usePreviewViewport } from "@/preview/components/preview-viewport";
import type { OnSnapLinesChange } from "@/preview/hooks/use-preview-interaction";
import { useEditor } from "@/editor/use-editor";
import { useCommittedRef } from "@/hooks/use-committed-ref";
import { useShiftKey } from "@/hooks/use-shift-key";
import { registerCanceller } from "@/editor/cancel-interaction";
import {
@@ -48,15 +49,10 @@ export function useTransformHandles({
onSnapLinesChange,
},
};
const depsRef = useRef<TransformHandleDeps>(deps);
depsRef.current = deps;
const controllerRef = useRef<TransformHandleController | null>(null);
if (!controllerRef.current) {
controllerRef.current = new TransformHandleController({ depsRef });
}
const controller = controllerRef.current;
const depsRef = useCommittedRef(deps);
const [controller] = useState(
() => new TransformHandleController({ depsRef }),
);
const [, rerender] = useReducer((n: number) => n + 1, 0);
useEffect(() => controller.subscribe(rerender), [controller]);