Skip to content

Commit

Permalink
fix: update typings for new eslint config
Browse files Browse the repository at this point in the history
  • Loading branch information
mirkolenz committed Nov 6, 2024
1 parent eff052c commit b50e76d
Show file tree
Hide file tree
Showing 11 changed files with 86 additions and 52 deletions.
9 changes: 6 additions & 3 deletions src/components/Graph.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ export default function Graph() {
const node = draft.nodes.find((node) => node.id === nodeId);

if (node !== undefined) {
node.data.userdata.clickConnect = true;
(node.data.userdata as model.Userdata).clickConnect = true;
}
}),
);
Expand All @@ -282,8 +282,11 @@ export default function Graph() {
setState(
produce((draft: State) => {
draft.nodes
.filter((node) => node.data.userdata.clickConnect)
.forEach((node) => delete node.data.userdata.clickConnect);
.filter((node) => (node.data.userdata as model.Userdata).clickConnect)
.forEach(
(node) =>
delete (node.data.userdata as model.Userdata).clickConnect,
);
}),
);
}, []);
Expand Down
7 changes: 5 additions & 2 deletions src/components/NodeTypes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,11 @@ const NodeComponent: React.FC<NodeComponentProps> = ({
}) => {
const theme = useTheme();
const background = useMemo(
() => (node.data.userdata.clickConnect ? color.orange[500] : bg),
[node.data.userdata.clickConnect, bg],
() =>
(node.data.userdata as model.Userdata).clickConnect
? color.orange[500]
: bg,
[(node.data.userdata as model.Userdata).clickConnect, bg],
);
const borderColor = useMemo(
() => (node.selected ? theme.palette.text.primary : background),
Expand Down
13 changes: 7 additions & 6 deletions src/components/inspector/AtomFields.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export const AtomFields: React.FC<Props> = ({ idx = 0, children }) => {
(state) => state.nodes[selectedIndex] as model.AtomNode,
dequal,
);
const userdata = element.data.userdata as model.Userdata;
const majorClaim = useStore((state) => state.graph.majorClaim);

return (
Expand Down Expand Up @@ -60,26 +61,26 @@ export const AtomFields: React.FC<Props> = ({ idx = 0, children }) => {
);
}}
/>
{element.data.userdata.assistant && (
{userdata.assistant && (
<TextField
fullWidth
multiline
label="Assistant Explanation"
InputProps={{
readOnly: true,
}}
value={element.data.userdata.assistant.explanation ?? ""}
value={userdata.assistant.explanation ?? ""}
/>
)}
{element.data.userdata.assistant?.mcExplanation && (
{userdata.assistant?.mcExplanation && (
<TextField
fullWidth
multiline
label="Assistant Major Claim Explanation"
InputProps={{
readOnly: true,
}}
value={element.data.userdata.assistant.mcExplanation}
value={userdata.assistant.mcExplanation}
/>
)}
<Button
Expand All @@ -101,12 +102,12 @@ export const AtomFields: React.FC<Props> = ({ idx = 0, children }) => {
multiline
minRows={1}
label="Notes"
value={element.data.userdata.notes ?? ""}
value={userdata.notes ?? ""}
onChange={(event) => {
setState(
produce((draft: State) => {
const node = draft.nodes[selectedIndex];
node.data.userdata.notes = event.target.value;
(node.data.userdata as model.Userdata).notes = event.target.value;
}),
);
}}
Expand Down
4 changes: 2 additions & 2 deletions src/components/inspector/EdgeFields.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export const EdgeFields: React.FC<Props> = ({ idx = 0, children }) => {
multiline
minRows={1}
label="Notes"
value={element.data?.userdata?.notes ?? ""}
value={(element.data?.userdata as model.Userdata).notes ?? ""}
onChange={(event) => {
setState(
produce((draft: State) => {
Expand All @@ -34,7 +34,7 @@ export const EdgeFields: React.FC<Props> = ({ idx = 0, children }) => {
throw new Error("Edge data is undefined");
}

edge.data.userdata.notes = event.target.value;
(edge.data.userdata as model.Userdata).notes = event.target.value;
}),
);
}}
Expand Down
7 changes: 5 additions & 2 deletions src/components/inspector/GraphFields.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,9 @@ export const GraphFields: React.FC<Props> = () => {
const participants = useStore((state) => state.graph.participants);
const analyst = useStore((state) => state.analyst);
const assistantConfig = useStore((state) => state.assistantConfig);
const notes: string = useStore((state) => state.graph.userdata.notes);
const notes: string | undefined = useStore(
(state) => (state.graph.userdata as model.Userdata).notes,
);
const [assistantKey, setAssistantKey] = useSessionStorage<string>(
"assistantKey",
"",
Expand Down Expand Up @@ -557,7 +559,8 @@ export const GraphFields: React.FC<Props> = () => {
onChange={(event) => {
setState(
produce((draft: State) => {
draft.graph.userdata.notes = event.target.value;
(draft.graph.userdata as model.Userdata).notes =
event.target.value;
}),
);
}}
Expand Down
8 changes: 3 additions & 5 deletions src/components/inspector/SchemeFields.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ enum SchemeType {
PREFERENCE = "preference",
}

const defaultSchemes: {
[key in SchemeType]: arguebuf.Scheme;
} = {
const defaultSchemes: Record<SchemeType, arguebuf.Scheme> = {
support: { case: "support", value: arguebuf.Support.DEFAULT },
attack: { case: "attack", value: arguebuf.Attack.DEFAULT },
rephrase: { case: "rephrase", value: arguebuf.Rephrase.DEFAULT },
Expand Down Expand Up @@ -120,12 +118,12 @@ const SchemeFields: React.FC<Props> = ({ idx = 0 }) => {
multiline
minRows={1}
label="Notes"
value={element.data.userdata.notes ?? ""}
value={(element.data.userdata as model.Userdata).notes ?? ""}
onChange={(event) => {
setState(
produce((draft: State) => {
const node = draft.nodes[selectedIndex];
node.data.userdata.notes = event.target.value;
(node.data.userdata as model.Userdata).notes = event.target.value;
}),
);
}}
Expand Down
30 changes: 24 additions & 6 deletions src/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,20 @@ export type AtomNode = FlowNode<AtomNodeData>;
export type SchemeNode = FlowNode<SchemeNodeData>;
export type Graph = Omit<arguebuf.Graph, "nodes" | "edges">;

export interface Userdata {
notes?: string;
clickConnect?: boolean;
arguemapper: {
position: XYPosition;
};
assistant?: {
explanation?: string;
mcExplanation?: string;
config?: unknown;
mcConfig?: unknown;
};
}

export type Element = Node | Edge;
export type OptionalElement = Element | undefined;
export type Elements = Element[] | OptionalElement;
Expand Down Expand Up @@ -42,8 +56,9 @@ export function initWrapper({
function nodeToArguebuf(obj: Node): arguebuf.Node {
// immer freezes the object, so we need to clone it
const node = structuredClone(obj.data) as arguebuf.Node;
node.userdata.arguemapper = node.userdata.arguemapper || {};
node.userdata.arguemapper.position = obj.position;
const userdata = node.userdata as Userdata;
userdata.arguemapper = userdata.arguemapper ?? {};
userdata.arguemapper.position = obj.position;

return node;
}
Expand Down Expand Up @@ -73,8 +88,11 @@ export function fromArguebuf(obj: arguebuf.Graph): Wrapper {
id,
data: node,
type: node.type,
position: node.userdata.arguemapper?.position ?? { x: 0, y: 0 },
}) as Node,
position: (node.userdata as Userdata).arguemapper?.position ?? {
x: 0,
y: 0,
},
} as Node),
),
edges: Object.entries(obj.edges).map(
([id, edge]) =>
Expand All @@ -83,7 +101,7 @@ export function fromArguebuf(obj: arguebuf.Graph): Wrapper {
data: edge,
source: edge.source,
target: edge.target,
}) as Edge,
} as Edge),
),
graph: arguebuf.copy(obj, { nodes: [], edges: [] }),
};
Expand Down Expand Up @@ -136,7 +154,7 @@ export const selectionType = (
};

export const initSelection = () =>
({ nodes: [], edges: [], type: "graph" }) as Selection;
({ nodes: [], edges: [], type: "graph" } as Selection);

export interface InitNodeProps<T> {
id?: string;
Expand Down
41 changes: 25 additions & 16 deletions src/services/assistant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@ import * as model from "../model";
import { getSessionStorage } from "../storage";
import { AssistantConfig, State, getState, setState } from "../store";

export type Mapping<U> = {
[key in string]: U;
};

const ExtractedAdu = z.object({
text: z.string().describe("The text of the ADU"),
explanation: z
Expand Down Expand Up @@ -73,9 +69,7 @@ enum SchemeType {
ATTACK = "attack",
}

const schemeLookup: {
[key in SchemeType]: arguebuf.Scheme;
} = {
const schemeLookup: Record<SchemeType, arguebuf.Scheme> = {
support: { case: "support", value: arguebuf.Support.DEFAULT },
attack: { case: "attack", value: arguebuf.Attack.DEFAULT },
};
Expand Down Expand Up @@ -188,12 +182,22 @@ ${customPrompt}

setState(
produce((draft: State) => {
const mcNode = draft.nodes.find((node) => node.data.id === mc.id);

if (mcNode === undefined) {
throw new Error("Major claim node not found in nodes.");
}

draft.graph.majorClaim = mc.id;
const mcUserdata = draft.nodes.find((node) => node.data.id === mc.id)
?.data.userdata;
mcUserdata.assistant = mcUserdata.assistant || {};
mcUserdata.assistant.mcConfig = openaiConfig;
mcUserdata.assistant.mcExplanation = mc.explanation;
const userdata = mcNode.data.userdata as model.Userdata;

userdata.assistant = {
...(userdata.assistant ?? {}),
...{
mcConfig: openaiConfig,
mcExplanation: mc.explanation,
},
};
}),
);
}
Expand Down Expand Up @@ -407,10 +411,15 @@ ${customPrompt}
// now check if the major claim is part of the graph
if (mcNode !== undefined) {
draft.graph.majorClaim = mcNode.data.id;
const mcUserdata = mcNode.data.userdata;
mcUserdata.assistant = mcUserdata.assistant || {};
mcUserdata.assistant.mcConfig = openaiConfig;
mcUserdata.assistant.mcExplanation = mc.explanation;
const mcUserdata = mcNode.data.userdata as model.Userdata;

mcUserdata.assistant = {
...(mcUserdata.assistant ?? {}),
...{
mcConfig: openaiConfig,
mcExplanation: mc.explanation,
},
};
}
}
}),
Expand Down
14 changes: 6 additions & 8 deletions src/services/convert.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { JsonObject } from "arguebuf";
import { JsonObject } from "@bufbuild/protobuf";
import * as arguebuf from "arguebuf";
import { toJpeg, toPng } from "html-to-image";
import { Options as ImgOptions } from "html-to-image/lib/types.js";
Expand Down Expand Up @@ -28,7 +28,7 @@ export function exportGraph(
graph.addAnalyst(currentAnalyst);
}

return arguebuf.dump.json(graph, format);
return arguebuf.dump.json(graph, format) as JsonObject;
}

export function generateFilename() {
Expand Down Expand Up @@ -93,12 +93,10 @@ export enum ImgFormat {
JPG = "jpg",
}

const imgFormatMap: {
[key in ImgFormat]: (
elem: HTMLElement,
options?: ImgOptions,
) => Promise<string>;
} = {
const imgFormatMap: Record<
ImgFormat,
(elem: HTMLElement, options?: ImgOptions) => Promise<string>
> = {
png: toPng,
jpg: toJpeg,
};
Expand Down
2 changes: 1 addition & 1 deletion src/services/layout.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const commonOptions: LayoutOptions = {
"elk.spacing.nodeNode": "50",
};

const layoutOptions: { [key in model.LayoutAlgorithm]: LayoutOptions } = {
const layoutOptions: Record<model.LayoutAlgorithm, LayoutOptions> = {
layered: {
...commonOptions,
algorithm: "layered",
Expand Down
3 changes: 2 additions & 1 deletion src/store.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { JsonObject } from "@bufbuild/protobuf";
import * as arguebuf from "arguebuf";
import { dequal } from "dequal";
import { throttle } from "lodash";
Expand Down Expand Up @@ -62,7 +63,7 @@ interface SerializedState {
analyst: arguebuf.AnalystInterface;
edgeStyle: model.EdgeStyle;
firstVisit: boolean;
graph: Record<string, unknown>;
graph: JsonObject;
nodes: undefined;
edges: undefined;
imageScale: number;
Expand Down

0 comments on commit b50e76d

Please sign in to comment.