| 44 | import { TermWrap, WebGLSupported } from "./termwrap"; |
| 45 | |
| 46 | export class TermViewModel implements ViewModel { |
| 47 | viewType: string; |
| 48 | nodeModel: BlockNodeModel; |
| 49 | tabModel: TabModel; |
| 50 | connected: boolean; |
| 51 | termRef: React.RefObject<TermWrap> = { current: null }; |
| 52 | blockAtom: jotai.Atom<Block>; |
| 53 | termMode: jotai.Atom<string>; |
| 54 | blockId: string; |
| 55 | viewIcon: jotai.Atom<IconButtonDecl>; |
| 56 | viewName: jotai.Atom<string>; |
| 57 | viewText: jotai.Atom<HeaderElem[]>; |
| 58 | blockBg: jotai.Atom<MetaType>; |
| 59 | manageConnection: jotai.Atom<boolean>; |
| 60 | filterOutNowsh?: jotai.Atom<boolean>; |
| 61 | connStatus: jotai.Atom<ConnStatus>; |
| 62 | useTermHeader: jotai.Atom<boolean>; |
| 63 | termWshClient: TermWshClient; |
| 64 | vdomBlockId: jotai.Atom<string>; |
| 65 | vdomToolbarBlockId: jotai.Atom<string>; |
| 66 | vdomToolbarTarget: jotai.PrimitiveAtom<VDomTargetToolbar>; |
| 67 | fontSizeAtom: jotai.Atom<number>; |
| 68 | termThemeNameAtom: jotai.Atom<string>; |
| 69 | termTransparencyAtom: jotai.Atom<number>; |
| 70 | termBPMAtom: jotai.Atom<boolean>; |
| 71 | noPadding: jotai.PrimitiveAtom<boolean>; |
| 72 | endIconButtons: jotai.Atom<IconButtonDecl[]>; |
| 73 | shellProcFullStatus: jotai.PrimitiveAtom<BlockControllerRuntimeStatus>; |
| 74 | shellProcStatus: jotai.Atom<string>; |
| 75 | shellProcStatusUnsubFn: () => void; |
| 76 | blockJobStatusAtom: jotai.PrimitiveAtom<BlockJobStatusData>; |
| 77 | blockJobStatusVersionTs: number; |
| 78 | blockJobStatusUnsubFn: () => void; |
| 79 | termBPMUnsubFn: () => void; |
| 80 | termCursorUnsubFn: () => void; |
| 81 | termCursorBlinkUnsubFn: () => void; |
| 82 | isCmdController: jotai.Atom<boolean>; |
| 83 | isRestarting: jotai.PrimitiveAtom<boolean>; |
| 84 | termDurableStatus: jotai.Atom<BlockJobStatusData | null>; |
| 85 | termConfigedDurable: jotai.Atom<null | boolean>; |
| 86 | searchAtoms?: SearchAtoms; |
| 87 | |
| 88 | constructor({ blockId, nodeModel, tabModel }: ViewModelInitType) { |
| 89 | this.viewType = "term"; |
| 90 | this.blockId = blockId; |
| 91 | this.tabModel = tabModel; |
| 92 | this.termWshClient = new TermWshClient(blockId, this); |
| 93 | DefaultRouter.registerRoute(makeFeBlockRouteId(blockId), this.termWshClient); |
| 94 | this.nodeModel = nodeModel; |
| 95 | this.blockAtom = WOS.getWaveObjectAtom<Block>(`block:${blockId}`); |
| 96 | this.vdomBlockId = jotai.atom((get) => { |
| 97 | const blockData = get(this.blockAtom); |
| 98 | return blockData?.meta?.["term:vdomblockid"]; |
| 99 | }); |
| 100 | this.vdomToolbarBlockId = jotai.atom((get) => { |
| 101 | const blockData = get(this.blockAtom); |
| 102 | return blockData?.meta?.["term:vdomtoolbarblockid"]; |
| 103 | }); |
nothing calls this directly
no outgoing calls
no test coverage detected