mirror of
https://github.com/wavetermdev/waveterm.git
synced 2025-01-04 18:59:08 +01:00
cleanup input model
This commit is contained in:
parent
648d98f065
commit
29cd754358
@ -3,125 +3,22 @@
|
||||
|
||||
import type React from "react";
|
||||
import * as mobx from "mobx";
|
||||
import { sprintf } from "sprintf-js";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import { boundMethod } from "autobind-decorator";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import * as mobxReact from "mobx-react";
|
||||
import { isBlank } from "../util/util";
|
||||
import {
|
||||
handleJsonFetchResponse,
|
||||
base64ToString,
|
||||
stringToBase64,
|
||||
base64ToArray,
|
||||
genMergeData,
|
||||
genMergeDataMap,
|
||||
genMergeSimpleData,
|
||||
boundInt,
|
||||
isModKeyPress,
|
||||
isBlank,
|
||||
} from "../util/util";
|
||||
import { TermWrap } from "../plugins/terminal/term";
|
||||
import { PluginModel } from "../plugins/plugins";
|
||||
import {
|
||||
SessionDataType,
|
||||
LineType,
|
||||
RemoteType,
|
||||
HistoryItem,
|
||||
RemoteInstanceType,
|
||||
RemotePtrType,
|
||||
CmdDataType,
|
||||
FeCmdPacketType,
|
||||
TermOptsType,
|
||||
ScreenDataType,
|
||||
ScreenOptsType,
|
||||
PtyDataUpdateType,
|
||||
ModelUpdateType,
|
||||
UpdateMessage,
|
||||
InfoType,
|
||||
UIContextType,
|
||||
HistoryInfoType,
|
||||
HistoryQueryOpts,
|
||||
FeInputPacketType,
|
||||
RemoteInputPacketType,
|
||||
ContextMenuOpts,
|
||||
RendererContext,
|
||||
RendererModel,
|
||||
PtyDataType,
|
||||
BookmarkType,
|
||||
ClientDataType,
|
||||
HistoryViewDataType,
|
||||
AlertMessageType,
|
||||
HistorySearchParams,
|
||||
FocusTypeStrs,
|
||||
ScreenLinesType,
|
||||
HistoryTypeStrs,
|
||||
RendererPluginType,
|
||||
WindowSize,
|
||||
WebShareOpts,
|
||||
TermContextUnion,
|
||||
RemoteEditType,
|
||||
RemoteViewType,
|
||||
CommandRtnType,
|
||||
WebCmd,
|
||||
WebRemote,
|
||||
OpenAICmdInfoChatMessageType,
|
||||
StatusIndicatorLevel,
|
||||
} from "../types/types";
|
||||
import * as T from "../types/types";
|
||||
import { WSControl } from "./ws";
|
||||
import {
|
||||
getMonoFontSize,
|
||||
windowWidthToCols,
|
||||
windowHeightToRows,
|
||||
termWidthFromCols,
|
||||
termHeightFromRows,
|
||||
} from "../util/textmeasure";
|
||||
import dayjs from "dayjs";
|
||||
import localizedFormat from "dayjs/plugin/localizedFormat";
|
||||
import customParseFormat from "dayjs/plugin/customParseFormat";
|
||||
import { getRendererContext, cmdStatusIsRunning } from "../app/line/lineutil";
|
||||
import { MagicLayout } from "../app/magiclayout";
|
||||
import { modalsRegistry } from "../app/common/modals/registry";
|
||||
import { StrWithPos } from "../types/types";
|
||||
import * as appconst from "../app/appconst";
|
||||
import { checkKeyPressed, adaptFromReactOrNativeKeyEvent, setKeyUtilPlatform } from "../util/keyutil";
|
||||
import { OV, OArr, OMap, CV } from "../types/types";
|
||||
import { Session } from "./session";
|
||||
import { GlobalCommandRunner } from "./commandrunner";
|
||||
import { OV } from "../types/types";
|
||||
import { Model } from "./model";
|
||||
import { ScreenLines } from "./screenlines";
|
||||
|
||||
dayjs.extend(customParseFormat);
|
||||
dayjs.extend(localizedFormat);
|
||||
|
||||
const RemotePtyRows = 8; // also in main.tsx
|
||||
const RemotePtyCols = 80;
|
||||
const ProdServerEndpoint = "http://127.0.0.1:1619";
|
||||
const ProdServerWsEndpoint = "ws://127.0.0.1:1623";
|
||||
const DevServerEndpoint = "http://127.0.0.1:8090";
|
||||
const DevServerWsEndpoint = "ws://127.0.0.1:8091";
|
||||
const DefaultTermFontSize = 12;
|
||||
const MinFontSize = 8;
|
||||
const MaxFontSize = 24;
|
||||
const InputChunkSize = 500;
|
||||
const RemoteColors = ["red", "green", "yellow", "blue", "magenta", "cyan", "white", "orange"];
|
||||
const TabColors = ["red", "orange", "yellow", "green", "mint", "cyan", "blue", "violet", "pink", "white"];
|
||||
const TabIcons = [
|
||||
"sparkle",
|
||||
"fire",
|
||||
"ghost",
|
||||
"cloud",
|
||||
"compass",
|
||||
"crown",
|
||||
"droplet",
|
||||
"graduation-cap",
|
||||
"heart",
|
||||
"file",
|
||||
];
|
||||
|
||||
// @ts-ignore
|
||||
const VERSION = __WAVETERM_VERSION__;
|
||||
// @ts-ignore
|
||||
const BUILD = __WAVETERM_BUILD__;
|
||||
import { CommandRunner } from "./commandrunner";
|
||||
|
||||
function getDefaultHistoryQueryOpts(): HistoryQueryOpts {
|
||||
return {
|
||||
@ -137,7 +34,8 @@ function getDefaultHistoryQueryOpts(): HistoryQueryOpts {
|
||||
}
|
||||
|
||||
class InputModel {
|
||||
globalModel: Model = null;
|
||||
globalCommandRunner: CommandRunner;
|
||||
globalModel: Model;
|
||||
historyShow: OV<boolean> = mobx.observable.box(false);
|
||||
infoShow: OV<boolean> = mobx.observable.box(false);
|
||||
aIChatShow: OV<boolean> = mobx.observable.box(false);
|
||||
@ -187,6 +85,7 @@ class InputModel {
|
||||
|
||||
constructor(globalModel: Model) {
|
||||
this.globalModel = globalModel;
|
||||
this.globalCommandRunner = CommandRunner.getInstance();
|
||||
this.filteredHistoryItems = mobx.computed(() => {
|
||||
return this._getFilteredHistoryItems();
|
||||
});
|
||||
@ -254,7 +153,7 @@ class InputModel {
|
||||
let screen = this.globalModel.getActiveScreen();
|
||||
if (screen != null) {
|
||||
if (screen.focusType.get() != "input") {
|
||||
GlobalCommandRunner.screenSetFocus("input");
|
||||
this.globalCommandRunner.screenSetFocus("input");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -352,7 +251,7 @@ class InputModel {
|
||||
mobx.action(() => {
|
||||
this.historyLoading.set(true);
|
||||
})();
|
||||
GlobalCommandRunner.loadHistory(show, htype);
|
||||
this.globalCommandRunner.loadHistory(show, htype);
|
||||
}
|
||||
|
||||
openHistory(): void {
|
||||
@ -373,7 +272,7 @@ class InputModel {
|
||||
}
|
||||
}
|
||||
|
||||
updateCmdLine(cmdLine: T.StrWithPos): void {
|
||||
updateCmdLine(cmdLine: StrWithPos): void {
|
||||
mobx.action(() => {
|
||||
this.setCurLine(cmdLine.str);
|
||||
if (cmdLine.pos != appconst.NoStrPos) {
|
||||
|
Loading…
Reference in New Issue
Block a user