* feat(files): edit workspace files on web Keep source buffers synchronized with host file changes and require an explicit overwrite or reload when revisions diverge. * feat(panels): surface and protect modified tabs Expose tooltip and modification state through the generic panel boundary so tabs can show stable metadata and guard every close route consistently. * fix(tests): use portable fake timeout handle * fix(files): harden editor conflict handling Preserve modified panel state across tab eviction, use precise revisions for optimistic writes, coalesce concurrent file watchers, and localize the editor interface. * fix(files): close editor concurrency gaps Coalesce clean reloads, preserve subscriber identities and file permissions, suspend pending saves during close confirmation, and carry precise revisions through file reads. * test(files): expect read revision metadata
34 lines
1019 B
TypeScript
34 lines
1019 B
TypeScript
import { Text, View } from "react-native";
|
|
import { StyleSheet } from "react-native-unistyles";
|
|
import type { HighlightStyle } from "@getpaseo/highlight";
|
|
import type { FileEditorModel } from "./model";
|
|
|
|
export function FileEditorView(_props: {
|
|
model: FileEditorModel;
|
|
filename: string;
|
|
vimEnabled: boolean;
|
|
theme: {
|
|
background: string;
|
|
foreground: string;
|
|
foregroundMuted: string;
|
|
border: string;
|
|
selection: string;
|
|
monoFont: string;
|
|
codeFontSize: number;
|
|
syntax: Record<HighlightStyle, string>;
|
|
};
|
|
onCursorChange(position: { line: number; column: number }): void;
|
|
onVimModeChange(mode: string | null): void;
|
|
}) {
|
|
return (
|
|
<View style={styles.container}>
|
|
<Text style={styles.text}>Source editing is available on web and desktop.</Text>
|
|
</View>
|
|
);
|
|
}
|
|
|
|
const styles = StyleSheet.create((theme) => ({
|
|
container: { flex: 1, alignItems: "center", justifyContent: "center" },
|
|
text: { color: theme.colors.foregroundMuted, fontSize: theme.fontSize.sm },
|
|
}));
|