MCPcopy
hub / github.com/wavetermdev/waveterm / TermVDomNodeSingleId

Function TermVDomNodeSingleId

frontend/app/view/term/term.tsx:113–156  ·  view source on GitHub ↗
({ vdomBlockId, blockId, model }: TerminalViewProps & { vdomBlockId: string })

Source from the content-addressed store, hash-verified

111};
112
113const TermVDomNodeSingleId = ({ vdomBlockId, blockId, model }: TerminalViewProps & { vdomBlockId: string }) => {
114 React.useEffect(() => {
115 const unsub = waveEventSubscribeSingle({
116 eventType: "blockclose",
117 scope: WOS.makeORef("block", vdomBlockId),
118 handler: (_event) => {
119 RpcApi.SetMetaCommand(TabRpcClient, {
120 oref: WOS.makeORef("block", blockId),
121 meta: {
122 "term:mode": null,
123 "term:vdomblockid": null,
124 },
125 });
126 },
127 });
128 return () => {
129 unsub();
130 };
131 }, []);
132 const vdomNodeModel: BlockNodeModel = React.useMemo(() => {
133 const isFocusedAtom = jotai.atom((get) => {
134 return get(model.nodeModel.isFocused) && get(model.termMode) == "vdom";
135 });
136 return {
137 blockId: vdomBlockId,
138 isFocused: isFocusedAtom,
139 isMagnified: jotai.atom(false),
140 focusNode: () => {
141 model.nodeModel.focusNode();
142 },
143 toggleMagnify: () => {},
144 onClose: () => {
145 if (vdomBlockId != null) {
146 RpcApi.DeleteSubBlockCommand(TabRpcClient, { blockid: vdomBlockId });
147 }
148 },
149 };
150 }, [vdomBlockId, model]);
151 return (
152 <div key="htmlElem" className="term-htmlelem">
153 <SubBlock key="vdom" nodeModel={vdomNodeModel} />
154 </div>
155 );
156};
157
158const TermVDomNode = ({ blockId, model }: TerminalViewProps) => {
159 const vdomBlockId = jotai.useAtomValue(model.vdomBlockId);

Callers

nothing calls this directly

Calls 4

waveEventSubscribeSingleFunction · 0.90
focusNodeMethod · 0.80
SetMetaCommandMethod · 0.65
DeleteSubBlockCommandMethod · 0.65

Tested by

no test coverage detected