2019-10-19 08:59:56 -08:00
|
|
|
import {Reducer} from 'redux';
|
|
|
|
|
import {Immutable} from 'seamless-immutable';
|
|
|
|
|
|
2019-10-12 07:29:25 -08:00
|
|
|
declare global {
|
|
|
|
|
interface Window {
|
|
|
|
|
__rpcId: string;
|
2019-11-11 06:21:42 -09:00
|
|
|
rpc: any;
|
|
|
|
|
focusActiveTerm: any;
|
2019-10-12 07:29:25 -08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export type ITermGroup = {
|
2019-10-20 00:08:48 -08:00
|
|
|
uid: string;
|
2019-10-12 07:29:25 -08:00
|
|
|
sessionUid: string | null;
|
|
|
|
|
parentUid: string | null;
|
|
|
|
|
direction: string | null;
|
|
|
|
|
sizes: number[] | null;
|
|
|
|
|
children: string[];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type ITermGroups = Record<string, ITermGroup>;
|
|
|
|
|
|
|
|
|
|
export type ITermState = {
|
|
|
|
|
termGroups: ITermGroups;
|
|
|
|
|
activeSessions: Record<string, string>;
|
|
|
|
|
activeRootGroup: string | null;
|
|
|
|
|
};
|
2019-10-19 08:59:56 -08:00
|
|
|
|
|
|
|
|
export type ITermGroupReducer = Reducer<Immutable<ITermState>, any>;
|
|
|
|
|
|
|
|
|
|
export type uiState = {
|
|
|
|
|
_lastUpdate: null;
|
|
|
|
|
activeUid: string | null;
|
2019-11-11 06:21:42 -09:00
|
|
|
activityMarkers: Record<string, boolean>;
|
2019-10-19 08:59:56 -08:00
|
|
|
backgroundColor: string;
|
|
|
|
|
bell: string;
|
|
|
|
|
bellSoundURL: string | null;
|
|
|
|
|
bellSound: string | null;
|
|
|
|
|
borderColor: string;
|
|
|
|
|
colors: {
|
|
|
|
|
black: string;
|
|
|
|
|
blue: string;
|
|
|
|
|
cyan: string;
|
|
|
|
|
green: string;
|
|
|
|
|
lightBlack: string;
|
|
|
|
|
lightBlue: string;
|
|
|
|
|
lightCyan: string;
|
|
|
|
|
lightGreen: string;
|
|
|
|
|
lightMagenta: string;
|
|
|
|
|
lightRed: string;
|
|
|
|
|
lightWhite: string;
|
|
|
|
|
lightYellow: string;
|
|
|
|
|
magenta: string;
|
|
|
|
|
red: string;
|
|
|
|
|
white: string;
|
|
|
|
|
yellow: string;
|
|
|
|
|
};
|
|
|
|
|
cols: number | null;
|
|
|
|
|
copyOnSelect: boolean;
|
|
|
|
|
css: string;
|
|
|
|
|
cursorAccentColor: string;
|
|
|
|
|
cursorBlink: boolean;
|
|
|
|
|
cursorColor: string;
|
|
|
|
|
cursorShape: string;
|
|
|
|
|
cwd?: string;
|
|
|
|
|
disableLigatures: boolean;
|
|
|
|
|
fontFamily: string;
|
|
|
|
|
fontSize: number;
|
|
|
|
|
fontSizeOverride: null | number;
|
|
|
|
|
fontSmoothingOverride: string;
|
|
|
|
|
fontWeight: string;
|
|
|
|
|
fontWeightBold: string;
|
|
|
|
|
foregroundColor: string;
|
|
|
|
|
fullScreen: boolean;
|
|
|
|
|
letterSpacing: number;
|
|
|
|
|
lineHeight: number;
|
|
|
|
|
macOptionSelectionMode: string;
|
|
|
|
|
maximized: boolean;
|
|
|
|
|
messageDismissable: null | boolean;
|
|
|
|
|
messageText: null;
|
|
|
|
|
messageURL: null;
|
|
|
|
|
modifierKeys: {
|
|
|
|
|
altIsMeta: boolean;
|
|
|
|
|
cmdIsMeta: boolean;
|
|
|
|
|
};
|
|
|
|
|
notifications: {
|
|
|
|
|
font: boolean;
|
|
|
|
|
message: boolean;
|
|
|
|
|
resize: boolean;
|
|
|
|
|
updates: boolean;
|
|
|
|
|
};
|
|
|
|
|
openAt: Record<string, number>;
|
|
|
|
|
padding: string;
|
|
|
|
|
quickEdit: boolean;
|
|
|
|
|
resizeAt: number;
|
|
|
|
|
rows: number | null;
|
|
|
|
|
scrollback: number;
|
|
|
|
|
selectionColor: string;
|
|
|
|
|
showHamburgerMenu: string;
|
|
|
|
|
showWindowControls: string;
|
|
|
|
|
termCSS: string;
|
|
|
|
|
uiFontFamily: string;
|
|
|
|
|
updateCanInstall: null | boolean;
|
2019-11-11 06:21:42 -09:00
|
|
|
updateNotes: string | null;
|
|
|
|
|
updateReleaseUrl: string | null;
|
|
|
|
|
updateVersion: string | null;
|
2019-10-19 08:59:56 -08:00
|
|
|
webGLRenderer: boolean;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type IUiReducer = Reducer<Immutable<uiState>>;
|
|
|
|
|
export type session = {
|
|
|
|
|
cleared: boolean;
|
2019-10-20 00:08:48 -08:00
|
|
|
cols: number | null;
|
|
|
|
|
pid: number | null;
|
|
|
|
|
resizeAt?: number;
|
|
|
|
|
rows: number | null;
|
2019-10-19 08:59:56 -08:00
|
|
|
search: boolean;
|
|
|
|
|
shell: string;
|
|
|
|
|
title: string;
|
|
|
|
|
uid: string;
|
2019-10-20 00:08:48 -08:00
|
|
|
url: string | null;
|
|
|
|
|
splitDirection?: string;
|
|
|
|
|
activeUid?: string;
|
2019-10-19 08:59:56 -08:00
|
|
|
};
|
|
|
|
|
export type sessionState = {
|
2019-10-20 00:08:48 -08:00
|
|
|
sessions: Record<string, session>;
|
2019-10-19 08:59:56 -08:00
|
|
|
activeUid: string | null;
|
2019-11-11 06:21:42 -09:00
|
|
|
write?: any;
|
2019-10-19 08:59:56 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type ISessionReducer = Reducer<Immutable<sessionState>>;
|
|
|
|
|
|
|
|
|
|
export type hyperPlugin = {
|
|
|
|
|
getTabProps: any;
|
|
|
|
|
getTabsProps: any;
|
|
|
|
|
getTermGroupProps: any;
|
|
|
|
|
getTermProps: any;
|
|
|
|
|
mapHeaderDispatch: any;
|
|
|
|
|
mapHyperDispatch: any;
|
|
|
|
|
mapHyperTermDispatch: any;
|
|
|
|
|
mapNotificationsDispatch: any;
|
|
|
|
|
mapTermsDispatch: any;
|
|
|
|
|
mapHeaderState: any;
|
|
|
|
|
mapHyperState: any;
|
|
|
|
|
mapHyperTermState: any;
|
|
|
|
|
mapNotificationsState: any;
|
|
|
|
|
mapTermsState: any;
|
|
|
|
|
middleware: any;
|
|
|
|
|
onRendererWindow: any;
|
2019-10-20 00:08:48 -08:00
|
|
|
reduceSessions: ISessionReducer;
|
|
|
|
|
reduceTermGroups: ITermGroupReducer;
|
|
|
|
|
reduceUI: IUiReducer;
|
2019-10-19 08:59:56 -08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
import rootReducer from './reducers/index';
|
|
|
|
|
export type HyperState = ReturnType<typeof rootReducer>;
|
2019-11-11 06:21:42 -09:00
|
|
|
|
2019-12-27 06:33:21 -09:00
|
|
|
import {UIActions} from './constants/ui';
|
|
|
|
|
import {ConfigActions} from './constants/config';
|
|
|
|
|
import {SessionActions} from './constants/sessions';
|
|
|
|
|
import {NotificationActions} from './constants/notifications';
|
|
|
|
|
import {UpdateActions} from './constants/updater';
|
|
|
|
|
import {TermGroupActions} from './constants/term-groups';
|
|
|
|
|
import {InitActions} from './constants';
|
|
|
|
|
import {TabActions} from './constants/tabs';
|
|
|
|
|
|
|
|
|
|
export type HyperActions = (
|
|
|
|
|
| UIActions
|
|
|
|
|
| ConfigActions
|
|
|
|
|
| SessionActions
|
|
|
|
|
| NotificationActions
|
|
|
|
|
| UpdateActions
|
|
|
|
|
| TermGroupActions
|
|
|
|
|
| InitActions
|
|
|
|
|
| TabActions
|
|
|
|
|
) & {effect?: () => void};
|
|
|
|
|
|
2019-11-11 06:21:42 -09:00
|
|
|
type immutableRecord<T> = {[k in keyof T]: Immutable<T[k]>};
|
|
|
|
|
|
|
|
|
|
export type TermsProps = {
|
|
|
|
|
activeRootGroup: string | null;
|
|
|
|
|
activeSession: string | null;
|
|
|
|
|
customCSS: string;
|
|
|
|
|
fontSmoothing: string;
|
|
|
|
|
termGroups: Immutable<ITermGroup>[];
|
|
|
|
|
} & immutableRecord<
|
|
|
|
|
Pick<
|
|
|
|
|
uiState,
|
|
|
|
|
| 'backgroundColor'
|
|
|
|
|
| 'bell'
|
|
|
|
|
| 'bellSound'
|
|
|
|
|
| 'bellSoundURL'
|
|
|
|
|
| 'borderColor'
|
|
|
|
|
| 'colors'
|
|
|
|
|
| 'cols'
|
|
|
|
|
| 'copyOnSelect'
|
|
|
|
|
| 'cursorAccentColor'
|
|
|
|
|
| 'cursorBlink'
|
|
|
|
|
| 'cursorColor'
|
|
|
|
|
| 'cursorShape'
|
|
|
|
|
| 'disableLigatures'
|
|
|
|
|
| 'fontFamily'
|
|
|
|
|
| 'fontSize'
|
|
|
|
|
| 'fontWeight'
|
|
|
|
|
| 'fontWeightBold'
|
|
|
|
|
| 'foregroundColor'
|
|
|
|
|
| 'letterSpacing'
|
|
|
|
|
| 'lineHeight'
|
|
|
|
|
| 'macOptionSelectionMode'
|
|
|
|
|
| 'modifierKeys'
|
|
|
|
|
| 'padding'
|
|
|
|
|
| 'quickEdit'
|
|
|
|
|
| 'rows'
|
|
|
|
|
| 'scrollback'
|
|
|
|
|
| 'selectionColor'
|
|
|
|
|
| 'uiFontFamily'
|
|
|
|
|
| 'webGLRenderer'
|
|
|
|
|
>
|
|
|
|
|
> &
|
|
|
|
|
immutableRecord<Pick<sessionState, 'sessions' | 'write'>>;
|