1import { useMemo } from "react";
2
3import {
4 resolveMobileCodeSurface,
5 type ResolvedMobileCodeSurface,
6} from "../../../lib/appearancePreferences";
7import { createNativeReviewDiffStyle } from "../../review/nativeReviewDiffAdapter";
8import { createNativeSourceStyle } from "../../files/nativeSourceFileAdapter";
9import { useAppearancePreferences } from "./AppearancePreferencesProvider";
10
11export function useAppearanceCodeSurface(): {
12 readonly codeSurface: ResolvedMobileCodeSurface;
13 readonly codeWordBreak: boolean;
14 readonly nativeSourceStyle: ReturnType<typeof createNativeSourceStyle>;
15 readonly nativeReviewDiffStyle: ReturnType<typeof createNativeReviewDiffStyle>;
16} {
17 const { appearance } = useAppearancePreferences();
18 const codeSurface = useMemo(
19 () => resolveMobileCodeSurface(appearance.codeFontSize),
20 [appearance.codeFontSize],
21 );
22 const nativeSourceStyle = useMemo(() => createNativeSourceStyle(codeSurface), [codeSurface]);
23 const nativeReviewDiffStyle = useMemo(
24 () => createNativeReviewDiffStyle(codeSurface, appearance.codeWordBreak),
25 [appearance.codeWordBreak, codeSurface],
26 );
27
28 return {
29 codeSurface,
30 codeWordBreak: appearance.codeWordBreak,
31 nativeSourceStyle,
32 nativeReviewDiffStyle,
33 };
34}