summaryrefslogtreecommitdiff
path: root/apps/web/src/preview/hooks
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/src/preview/hooks')
-rw-r--r--apps/web/src/preview/hooks/use-preview-interaction.ts18
-rw-r--r--apps/web/src/preview/hooks/use-transform-handles.ts16
2 files changed, 12 insertions, 22 deletions
diff --git a/apps/web/src/preview/hooks/use-preview-interaction.ts b/apps/web/src/preview/hooks/use-preview-interaction.ts
index d093dcf2..b707f1e6 100644
--- a/apps/web/src/preview/hooks/use-preview-interaction.ts
+++ b/apps/web/src/preview/hooks/use-preview-interaction.ts
@@ -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(
diff --git a/apps/web/src/preview/hooks/use-transform-handles.ts b/apps/web/src/preview/hooks/use-transform-handles.ts
index f4b7e306..55d8d8f7 100644
--- a/apps/web/src/preview/hooks/use-transform-handles.ts
+++ b/apps/web/src/preview/hooks/use-transform-handles.ts
@@ -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]);