@termix-ssh/plugin-sdk 1.0.11 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/PLUGIN-GUIDE.md +178 -54
- package/cli/commands/build.mjs +36 -22
- package/cli/commands/pack.mjs +12 -2
- package/cli/commands/validate.mjs +63 -3
- package/cli/lib/plugin-dir.mjs +11 -0
- package/cli/lib/tmxplug.mjs +9 -0
- package/dist/backend.d.ts +404 -0
- package/dist/capabilities.js +7 -0
- package/dist/db.js +1 -0
- package/dist/desktop.d.ts +0 -243
- package/dist/frontend.d.ts +175 -2
- package/dist/frontend.js +7 -0
- package/dist/host/PluginsTab-OXQQ7M4I.js +3266 -0
- package/dist/host/chunk-54KCK6IZ.js +3167 -0
- package/dist/host/chunk-CALNJCHN.js +10435 -0
- package/dist/host/{chunk-7RRTYD6B.js → chunk-CN5UBTBP.js} +1412 -14
- package/dist/host/{chunk-RLQBKJRK.js → chunk-ERGN4YW6.js} +9204 -11492
- package/dist/host/{chunk-LSWB3ZZV.js → chunk-T2PZWXFJ.js} +6 -1
- package/dist/host/chunk-YGYBM7SQ.js +58 -0
- package/dist/host/core-classes.json +1 -1
- package/dist/host/{linked-server-UCW74T2V.js → linked-server-5VFO4XQB.js} +2 -2
- package/dist/host/{rbac-api-6UYMFIFV.js → rbac-api-5YMBJAO5.js} +2 -2
- package/dist/host/testing-host.js +123 -57
- package/dist/host/types/src/types/onboarding.d.ts +0 -2
- package/dist/host/types/src/types/ui-types.d.ts +2 -1
- package/dist/host/types/src/ui/api/audit-log-api.d.ts +36 -0
- package/dist/host/types/src/ui/api/credentials-api.d.ts +0 -22
- package/dist/host/types/src/ui/api/host-defaults-api.d.ts +42 -0
- package/dist/host/types/src/ui/api/host-tags-api.d.ts +2 -0
- package/dist/host/types/src/ui/api/look-api.d.ts +40 -0
- package/dist/host/types/src/ui/api/open-tabs-api.d.ts +4 -0
- package/dist/host/types/src/ui/api/plugins-api.d.ts +30 -0
- package/dist/host/types/src/ui/api/private-endpoints-api.d.ts +6 -0
- package/dist/host/types/src/ui/api/settings-api.d.ts +0 -6
- package/dist/host/types/src/ui/api/ssh-host-management-api.d.ts +0 -28
- package/dist/host/types/src/ui/api/tls-api.d.ts +25 -0
- package/dist/host/types/src/ui/auth/ElectronLoginForm.d.ts +9 -0
- package/dist/host/types/src/ui/components/command.d.ts +78 -0
- package/dist/host/types/src/ui/components/folder-style.d.ts +16 -0
- package/dist/host/types/src/ui/components/theme-provider.d.ts +2 -1
- package/dist/host/types/src/ui/components/version-badge.d.ts +7 -0
- package/dist/host/types/src/ui/hooks/use-page-visible-interval.d.ts +10 -0
- package/dist/host/types/src/ui/lib/activity-types.d.ts +15 -0
- package/dist/host/types/src/ui/lib/app-version.d.ts +2 -0
- package/dist/host/types/src/ui/lib/apply-ui-preset.d.ts +19 -0
- package/dist/host/types/src/ui/lib/create-id.d.ts +2 -0
- package/dist/host/types/src/ui/lib/database-transfer-url.d.ts +8 -0
- package/dist/host/types/src/ui/lib/desktop-updates.d.ts +29 -0
- package/dist/host/types/src/ui/lib/host-connection-tabs.d.ts +14 -0
- package/dist/host/types/src/ui/lib/host-to-ssh-host.d.ts +4 -0
- package/dist/host/types/src/ui/lib/issue-url.d.ts +21 -0
- package/dist/host/types/src/ui/lib/local-adaptive-preferences.d.ts +9 -0
- package/dist/host/types/src/ui/lib/pane-nav-hotkey.d.ts +7 -0
- package/dist/host/types/src/ui/lib/plugin-i18n.d.ts +4 -3
- package/dist/host/types/src/ui/lib/role-label.d.ts +3 -0
- package/dist/host/types/src/ui/look/LookSettings.d.ts +8 -0
- package/dist/host/types/src/ui/look/layout-registry.d.ts +34 -0
- package/dist/host/types/src/ui/look/look-store.d.ts +29 -0
- package/dist/host/types/src/ui/look/resolve-look.d.ts +18 -0
- package/dist/host/types/src/ui/look/theme-css.d.ts +7 -0
- package/dist/host/types/src/ui/look/theme-registry.d.ts +41 -0
- package/dist/host/types/src/ui/look/use-look-theme.d.ts +12 -0
- package/dist/host/types/src/ui/main-axios.d.ts +2 -2
- package/dist/host/types/src/ui/manage/manage-requests.d.ts +34 -0
- package/dist/host/types/src/ui/onboarding/onboarding-registry.d.ts +3 -1
- package/dist/host/types/src/ui/plugin-host/loader.d.ts +2 -0
- package/dist/host/types/src/ui/plugin-host/scope.d.ts +6 -0
- package/dist/host/types/src/ui/plugin-host/sdk-ui.d.ts +101 -0
- package/dist/host/types/src/ui/plugin-host/view-ownership.d.ts +1 -1
- package/dist/host/types/src/ui/plugins/PluginConsentPrompt.d.ts +20 -0
- package/dist/host/types/src/ui/plugins/PluginDetail.d.ts +7 -0
- package/dist/host/types/src/ui/plugins/PluginReleaseNotes.d.ts +14 -0
- package/dist/host/types/src/ui/plugins/PluginsTab.d.ts +1 -0
- package/dist/host/types/src/ui/plugins/RegistriesSection.d.ts +4 -0
- package/dist/host/types/src/ui/plugins/plugin-bits.d.ts +23 -0
- package/dist/host/types/src/ui/plugins/plugin-model.d.ts +136 -0
- package/dist/host/types/src/ui/plugins/use-plugins-manager.d.ts +78 -0
- package/dist/host/types/src/ui/settings/appearance/appearance-controls.d.ts +53 -0
- package/dist/host/types/src/ui/settings/sync/LinkServerDialog.d.ts +12 -0
- package/dist/host/types/src/ui/settings/sync/ProxySettingsFields.d.ts +15 -0
- package/dist/host/types/src/ui/settings/sync/saved-servers.d.ts +3 -0
- package/dist/host/types/src/ui/shell/controller/ShellControllerProvider.d.ts +20 -0
- package/dist/host/types/src/ui/shell/controller/plugin-shell.d.ts +7 -0
- package/dist/host/types/src/ui/shell/controller/shell-store.d.ts +4 -0
- package/dist/host/types/src/ui/shell/controller/types.d.ts +156 -0
- package/dist/host/types/src/ui/shell/controller/use-hosts.d.ts +10 -0
- package/dist/host/types/src/ui/shell/controller/use-regions.d.ts +5 -0
- package/dist/host/types/src/ui/shell/controller/use-shell-keybindings.d.ts +12 -0
- package/dist/host/types/src/ui/shell/controller/use-shell-lifecycle.d.ts +17 -0
- package/dist/host/types/src/ui/shell/controller/use-split.d.ts +21 -0
- package/dist/host/types/src/ui/shell/controller/use-tabs.d.ts +70 -0
- package/dist/host/types/src/ui/shell/controller/use-workspace-layout.d.ts +4 -0
- package/dist/host/types/src/ui/shell/reconnect-tabs.d.ts +6 -0
- package/dist/host/types/src/ui/shell/shell-layout.d.ts +46 -0
- package/dist/host/types/src/ui/shell/split/EmptyPanePicker.d.ts +32 -0
- package/dist/host/types/src/ui/shell/split/SplitDropOverlay.d.ts +9 -0
- package/dist/host/types/src/ui/shell/split/SplitLayoutMenu.d.ts +16 -0
- package/dist/host/types/src/ui/shell/split/SplitView.d.ts +31 -0
- package/dist/host/types/src/ui/shell/split/split-drag.d.ts +58 -0
- package/dist/host/types/src/ui/shell/split/split-presets.d.ts +28 -0
- package/dist/host/types/src/ui/shell/split/split-tabs.d.ts +95 -0
- package/dist/host/types/src/ui/shell/split/split-targets.d.ts +30 -0
- package/dist/host/types/src/ui/shell/split/split-tree.d.ts +89 -0
- package/dist/host/types/src/ui/shell/stage/TabStage.d.ts +9 -0
- package/dist/host/types/src/ui/shell/stage/tab-stage-store.d.ts +24 -0
- package/dist/host/types/src/ui/shell/tab-close-guards.d.ts +9 -0
- package/dist/host/types/src/ui/shell/tab-handles.d.ts +8 -0
- package/dist/host/types/src/ui/shell/tabUtils.d.ts +15 -0
- package/dist/host/types/src/ui/sidebar/AuthEnrollmentSections.d.ts +5 -0
- package/dist/host/types/src/ui/sidebar/HostManagerData.d.ts +4 -0
- package/dist/host/types/src/ui/sidebar/build-host-tree.d.ts +25 -0
- package/dist/host/types/src/ui/sidebar/host-contributions.d.ts +10 -0
- package/dist/host/ui.js +6045 -4055
- package/dist/host/{use-permissions-GYCBY2AU.js → use-permissions-ISEDRY3J.js} +2 -2
- package/dist/manifest.d.ts +50 -1
- package/dist/manifest.js +104 -1
- package/dist/ssh-keys.d.ts +29 -0
- package/dist/ssh-keys.js +85 -0
- package/dist/testing/setup.js +1 -0
- package/dist/testing.d.ts +32 -15
- package/dist/testing.js +218 -1
- package/dist/theme-css.d.ts +11 -0
- package/dist/theme-css.js +142 -0
- package/dist/vitest-preset.d.ts +18 -0
- package/dist/vitest-preset.js +14 -3
- package/package.json +5 -1
- package/schema/manifest.schema.json +121 -8
- package/tsconfig.plugin.json +1 -0
- package/dist/host/chunk-YC2MAKSP.js +0 -14
|
@@ -32,25 +32,3 @@ export declare function reorderCredentials(positions: {
|
|
|
32
32
|
}[]): Promise<{
|
|
33
33
|
updated: number;
|
|
34
34
|
}>;
|
|
35
|
-
export declare function detectKeyType(privateKey: string, keyPassword?: string): Promise<Record<string, unknown>>;
|
|
36
|
-
export declare function detectPublicKeyType(publicKey: string): Promise<Record<string, unknown>>;
|
|
37
|
-
export declare function validateKeyPair(privateKey: string, publicKey: string, keyPassword?: string): Promise<Record<string, unknown>>;
|
|
38
|
-
export interface GeneratedPublicKey {
|
|
39
|
-
success?: boolean;
|
|
40
|
-
publicKey?: string;
|
|
41
|
-
error?: string;
|
|
42
|
-
}
|
|
43
|
-
export declare function generatePublicKeyFromPrivate(privateKey: string, keyPassword?: string): Promise<GeneratedPublicKey>;
|
|
44
|
-
export interface GeneratedKeyPair {
|
|
45
|
-
success: boolean;
|
|
46
|
-
privateKey?: string;
|
|
47
|
-
publicKey?: string;
|
|
48
|
-
keyType?: string;
|
|
49
|
-
format?: string;
|
|
50
|
-
algorithm?: string;
|
|
51
|
-
keySize?: number;
|
|
52
|
-
curve?: string;
|
|
53
|
-
error?: string;
|
|
54
|
-
}
|
|
55
|
-
export declare function generateKeyPair(keyType: "ssh-ed25519" | "ssh-rsa" | "ecdsa-sha2-nistp256", keySize?: number, passphrase?: string): Promise<GeneratedKeyPair>;
|
|
56
|
-
export declare function deployCredentialToHost(credentialId: number, targetHostId: number): Promise<Record<string, unknown>>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { HostDefaultsLevel, ResolvedHostDefault } from "../../types/host-defaults";
|
|
2
|
+
export interface HostDefaultsLevelData {
|
|
3
|
+
/** Values set at this level, by "namespace.key". */
|
|
4
|
+
values: Record<string, unknown>;
|
|
5
|
+
/** What each key reads when this level leaves it unset. */
|
|
6
|
+
inherited: Record<string, ResolvedHostDefault>;
|
|
7
|
+
}
|
|
8
|
+
export interface HostDefaultsTarget {
|
|
9
|
+
level: HostDefaultsLevel;
|
|
10
|
+
folderId?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface HostDefaultsChange {
|
|
13
|
+
set: Record<string, unknown>;
|
|
14
|
+
unset: string[];
|
|
15
|
+
}
|
|
16
|
+
export declare function getHostDefaultsLevel(target: HostDefaultsTarget): Promise<HostDefaultsLevelData>;
|
|
17
|
+
export declare function saveHostDefaultsLevel(target: HostDefaultsTarget, change: HostDefaultsChange): Promise<{
|
|
18
|
+
changedHosts?: number;
|
|
19
|
+
jobId?: string;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function previewHostDefaultsLevel(target: HostDefaultsTarget, change: HostDefaultsChange): Promise<{
|
|
22
|
+
changedHosts: number;
|
|
23
|
+
}>;
|
|
24
|
+
export declare function getHostDefaultsJob(id: string): Promise<{
|
|
25
|
+
status: "running" | "done" | "failed";
|
|
26
|
+
changedHosts: number;
|
|
27
|
+
}>;
|
|
28
|
+
/** A folder's id for its defaults, created when it only exists on hosts. */
|
|
29
|
+
export declare function getFolderDefaultsId(name: string): Promise<number>;
|
|
30
|
+
/** What a host, or a new one in a folder or under a parent, resolves to. */
|
|
31
|
+
export declare function resolveHostDefaults(where: {
|
|
32
|
+
hostId?: number;
|
|
33
|
+
folder?: string | null;
|
|
34
|
+
parentHostId?: number | null;
|
|
35
|
+
}, adminTargetUserId?: string): Promise<Record<string, ResolvedHostDefault>>;
|
|
36
|
+
export declare function resetHostToDefaults(hostIds: number[], reset: {
|
|
37
|
+
all?: boolean;
|
|
38
|
+
namespaces?: string[];
|
|
39
|
+
keys?: string[];
|
|
40
|
+
}): Promise<void>;
|
|
41
|
+
/** Waits for a server-wide defaults job. Resolves to the hosts it changed, or null. */
|
|
42
|
+
export declare function waitForDefaultsJob(id: string, intervalMs?: number, maxWaitMs?: number): Promise<number | null>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** A layout or theme plugin the server found but could not load. */
|
|
2
|
+
export interface UnavailableLook {
|
|
3
|
+
id: string;
|
|
4
|
+
version: string | null;
|
|
5
|
+
layouts: string[];
|
|
6
|
+
themes: string[];
|
|
7
|
+
error: string;
|
|
8
|
+
}
|
|
9
|
+
/** Everything the browser picks the layout and theme from. */
|
|
10
|
+
export interface LookResponse {
|
|
11
|
+
layoutId: string | null;
|
|
12
|
+
themeId: string | null;
|
|
13
|
+
/** Admin defaults. */
|
|
14
|
+
defaults: {
|
|
15
|
+
layout: string | null;
|
|
16
|
+
theme: string | null;
|
|
17
|
+
};
|
|
18
|
+
/** The default-look plugin's layout and theme. */
|
|
19
|
+
defaultLook: {
|
|
20
|
+
layout: string | null;
|
|
21
|
+
theme: string | null;
|
|
22
|
+
};
|
|
23
|
+
/** TERMIX_SAFE_LAYOUT is set on the server. */
|
|
24
|
+
safeLayout: boolean;
|
|
25
|
+
unavailable: UnavailableLook[];
|
|
26
|
+
}
|
|
27
|
+
export declare function getLook(): Promise<LookResponse>;
|
|
28
|
+
/** The user's own layout and theme; null follows the default. */
|
|
29
|
+
export declare function saveUserLook(look: {
|
|
30
|
+
layoutId?: string | null;
|
|
31
|
+
themeId?: string | null;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
/** Admin only. Null clears a default. */
|
|
34
|
+
export declare function saveDefaultLook(defaults: {
|
|
35
|
+
layout?: string | null;
|
|
36
|
+
theme?: string | null;
|
|
37
|
+
}): Promise<{
|
|
38
|
+
layout: string | null;
|
|
39
|
+
theme: string | null;
|
|
40
|
+
}>;
|
|
@@ -62,6 +62,10 @@ export interface UserPreferences {
|
|
|
62
62
|
compactHostView?: boolean | null;
|
|
63
63
|
statusColorScheme?: string | null;
|
|
64
64
|
customKeybindings?: string | null;
|
|
65
|
+
/** Layout this user chose; null follows the admin default. */
|
|
66
|
+
layoutId?: string | null;
|
|
67
|
+
/** Theme this user chose; null follows the admin default. */
|
|
68
|
+
themeId?: string | null;
|
|
65
69
|
}
|
|
66
70
|
export declare function parseCustomKeybindings(raw?: string | null): CustomKeybinding[];
|
|
67
71
|
/**
|
|
@@ -56,6 +56,24 @@ export interface PluginViewContribution {
|
|
|
56
56
|
titleKey: string;
|
|
57
57
|
icon?: string;
|
|
58
58
|
}
|
|
59
|
+
export interface PluginLayoutContribution {
|
|
60
|
+
id: string;
|
|
61
|
+
label: string;
|
|
62
|
+
description?: string;
|
|
63
|
+
defaultTheme?: string;
|
|
64
|
+
default?: boolean;
|
|
65
|
+
}
|
|
66
|
+
export interface PluginThemeContribution {
|
|
67
|
+
id: string;
|
|
68
|
+
label: string;
|
|
69
|
+
mode: "light" | "dark";
|
|
70
|
+
css: string;
|
|
71
|
+
swatch?: {
|
|
72
|
+
background: string;
|
|
73
|
+
panel: string;
|
|
74
|
+
text: string;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
59
77
|
export interface PluginContributions {
|
|
60
78
|
tabs?: PluginTabContribution[];
|
|
61
79
|
panels?: PluginViewContribution[];
|
|
@@ -69,6 +87,8 @@ export interface PluginContributions {
|
|
|
69
87
|
descriptionKey: string;
|
|
70
88
|
}[];
|
|
71
89
|
uiPresets?: PluginUiPresets;
|
|
90
|
+
layouts?: PluginLayoutContribution[];
|
|
91
|
+
themes?: PluginThemeContribution[];
|
|
72
92
|
}
|
|
73
93
|
export { isRedactedSecret, type RedactedSecret, } from "@termix-ssh/plugin-sdk/settings";
|
|
74
94
|
export type PluginSettingsValues = Record<string, unknown>;
|
|
@@ -117,6 +137,10 @@ export interface PluginSummary {
|
|
|
117
137
|
assetVersion?: string | null;
|
|
118
138
|
/** "en" plus the xx_YY names of shipped translations. */
|
|
119
139
|
locales?: string[];
|
|
140
|
+
/** Cache key for the theme CSS files; null without themes. */
|
|
141
|
+
themeVersion?: string | null;
|
|
142
|
+
/** The app is drawn with this plugin by default; it cannot be uninstalled. */
|
|
143
|
+
defaultLook?: boolean;
|
|
120
144
|
tier?: string;
|
|
121
145
|
source?: string;
|
|
122
146
|
/** Capabilities this plugin's manifest declares. Admins only. */
|
|
@@ -158,6 +182,8 @@ export interface RegistryPluginVersion {
|
|
|
158
182
|
/** A beta, offered only to plugins on the beta channel. */
|
|
159
183
|
prerelease?: boolean;
|
|
160
184
|
compatible: boolean;
|
|
185
|
+
/** The Termix range this version needs, when this build is too old. */
|
|
186
|
+
needsTermix?: string | null;
|
|
161
187
|
capabilities: string[];
|
|
162
188
|
publishedAt?: string;
|
|
163
189
|
releaseNotesUrl?: string;
|
|
@@ -180,6 +206,8 @@ export interface RegistryPluginEntry {
|
|
|
180
206
|
videoId?: string;
|
|
181
207
|
features?: string[];
|
|
182
208
|
docs?: string;
|
|
209
|
+
/** The manifest's contributes keys, like layouts or themes. */
|
|
210
|
+
contributes?: string[];
|
|
183
211
|
versions: RegistryPluginVersion[];
|
|
184
212
|
/** Newest release on the plugin's channel. */
|
|
185
213
|
latestVersion: string | null;
|
|
@@ -317,6 +345,8 @@ export declare function setRegistryEnabled(id: string, enabled: boolean): Promis
|
|
|
317
345
|
export declare function removeRegistry(id: string): Promise<void>;
|
|
318
346
|
export declare function updateAllPlugins(): Promise<UpdateAllResult>;
|
|
319
347
|
export declare function uninstallPlugin(pluginId: string): Promise<void>;
|
|
348
|
+
/** Puts a bundled plugin back to the copy that shipped with this install. */
|
|
349
|
+
export declare function restoreBundledPlugin(pluginId: string): Promise<void>;
|
|
320
350
|
export declare function previewPluginState(pluginId: string, enabled: boolean): Promise<PluginStateChange>;
|
|
321
351
|
export declare function setPluginState(pluginId: string, enabled: boolean, consent?: {
|
|
322
352
|
version: string;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin allowlists of private addresses that outbound requests may reach, one
|
|
3
|
+
* per core feature that makes them.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getNotificationPrivateEndpoints(): Promise<string[]>;
|
|
6
|
+
export declare function setNotificationPrivateEndpoints(hosts: string[]): Promise<string[]>;
|
|
@@ -12,11 +12,5 @@ export interface BrandingSettings {
|
|
|
12
12
|
/** PNG data URL, or null when no custom logo is configured. */
|
|
13
13
|
logo: string | null;
|
|
14
14
|
}
|
|
15
|
-
export interface BrandingSettingsUpdate {
|
|
16
|
-
appName?: string;
|
|
17
|
-
tagline?: string;
|
|
18
|
-
logo?: string | null;
|
|
19
|
-
}
|
|
20
15
|
/** Public endpoint -- no auth required, so the login screen can read it. */
|
|
21
16
|
export declare function getBranding(): Promise<BrandingSettings>;
|
|
22
|
-
export declare function updateBranding(update: BrandingSettingsUpdate): Promise<BrandingSettings>;
|
|
@@ -4,22 +4,6 @@ import type { SSHHostWithStatus } from "../main-axios";
|
|
|
4
4
|
export declare function getSSHHosts(): Promise<SSHHostWithStatus[]>;
|
|
5
5
|
export declare function createSSHHost(hostData: SSHHostData): Promise<SSHHost>;
|
|
6
6
|
export declare function updateSSHHost(hostId: number, hostData: SSHHostData): Promise<SSHHost>;
|
|
7
|
-
export declare function bulkImportSSHHosts(hosts: SSHHostData[], overwrite?: boolean, credentials?: Record<string, unknown>[]): Promise<{
|
|
8
|
-
message: string;
|
|
9
|
-
success: number;
|
|
10
|
-
updated: number;
|
|
11
|
-
skipped: number;
|
|
12
|
-
failed: number;
|
|
13
|
-
errors: string[];
|
|
14
|
-
}>;
|
|
15
|
-
export declare function importSSHConfigHosts(content: string, overwrite?: boolean): Promise<{
|
|
16
|
-
message: string;
|
|
17
|
-
success: number;
|
|
18
|
-
updated: number;
|
|
19
|
-
skipped: number;
|
|
20
|
-
failed: number;
|
|
21
|
-
errors: string[];
|
|
22
|
-
}>;
|
|
23
7
|
export declare function bulkUpdateSSHHosts(hostIds: number[], updates: Record<string, unknown>): Promise<{
|
|
24
8
|
updated: number;
|
|
25
9
|
failed: number;
|
|
@@ -33,18 +17,6 @@ export declare function reorderSSHHosts(positions: {
|
|
|
33
17
|
}>;
|
|
34
18
|
export declare function deleteSSHHost(hostId: number): Promise<Record<string, unknown>>;
|
|
35
19
|
export declare function getSSHHostById(hostId: number): Promise<SSHHost>;
|
|
36
|
-
export declare function exportSSHHostWithCredentials(hostId: number): Promise<SSHHost>;
|
|
37
|
-
export declare function exportAllSSHHosts(): Promise<{
|
|
38
|
-
hosts: SSHHost[];
|
|
39
|
-
}>;
|
|
40
|
-
export declare function exportAllSSHHosts(options: {
|
|
41
|
-
share: true;
|
|
42
|
-
}): Promise<{
|
|
43
|
-
version: string;
|
|
44
|
-
exportedAt: string;
|
|
45
|
-
credentials: Record<string, unknown>[];
|
|
46
|
-
hosts: SSHHost[];
|
|
47
|
-
}>;
|
|
48
20
|
export declare function testProxyConnection(options: {
|
|
49
21
|
singleProxy?: {
|
|
50
22
|
host: string;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type TlsCertificateInfo = {
|
|
2
|
+
subject: string;
|
|
3
|
+
issuer: string;
|
|
4
|
+
names: string[];
|
|
5
|
+
notBefore: string;
|
|
6
|
+
notAfter: string;
|
|
7
|
+
selfSigned: boolean;
|
|
8
|
+
fingerprint: string;
|
|
9
|
+
};
|
|
10
|
+
export type TlsStatus = {
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
certificate: TlsCertificateInfo | null;
|
|
13
|
+
renewal: {
|
|
14
|
+
pluginId: string;
|
|
15
|
+
pluginName: string;
|
|
16
|
+
} | null;
|
|
17
|
+
};
|
|
18
|
+
export declare function getTlsStatus(): Promise<TlsStatus>;
|
|
19
|
+
export declare function uploadTlsCertificate(payload: {
|
|
20
|
+
certificate: string;
|
|
21
|
+
privateKey: string;
|
|
22
|
+
}): Promise<TlsStatus & {
|
|
23
|
+
success: boolean;
|
|
24
|
+
reloadMessage?: string;
|
|
25
|
+
}>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface ElectronLoginFormProps {
|
|
3
|
+
serverUrl: string;
|
|
4
|
+
onAuthSuccess: (token: string | null) => void | Promise<void>;
|
|
5
|
+
onChangeServer: () => void;
|
|
6
|
+
targetPurpose?: "local" | "link";
|
|
7
|
+
}
|
|
8
|
+
export declare function ElectronLoginForm({ serverUrl, onAuthSuccess, onChangeServer, targetPurpose, }: ElectronLoginFormProps): React.JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const Command: React.ForwardRefExoticComponent<Omit<{
|
|
3
|
+
children?: React.ReactNode;
|
|
4
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
5
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
6
|
+
} & {
|
|
7
|
+
asChild?: boolean;
|
|
8
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
9
|
+
label?: string;
|
|
10
|
+
shouldFilter?: boolean;
|
|
11
|
+
filter?: (value: string, search: string, keywords?: string[]) => number;
|
|
12
|
+
defaultValue?: string;
|
|
13
|
+
value?: string;
|
|
14
|
+
onValueChange?: (value: string) => void;
|
|
15
|
+
loop?: boolean;
|
|
16
|
+
disablePointerSelection?: boolean;
|
|
17
|
+
vimBindings?: boolean;
|
|
18
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
19
|
+
declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "key" | keyof React.InputHTMLAttributes<HTMLInputElement>> & {
|
|
20
|
+
ref?: React.Ref<HTMLInputElement>;
|
|
21
|
+
} & {
|
|
22
|
+
asChild?: boolean;
|
|
23
|
+
}, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
|
|
24
|
+
value?: string;
|
|
25
|
+
onValueChange?: (search: string) => void;
|
|
26
|
+
} & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
27
|
+
declare const CommandList: React.ForwardRefExoticComponent<Omit<{
|
|
28
|
+
children?: React.ReactNode;
|
|
29
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
30
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
31
|
+
} & {
|
|
32
|
+
asChild?: boolean;
|
|
33
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
34
|
+
label?: string;
|
|
35
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
36
|
+
declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
|
|
37
|
+
children?: React.ReactNode;
|
|
38
|
+
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
39
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
40
|
+
} & {
|
|
41
|
+
asChild?: boolean;
|
|
42
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "heading" | "value"> & {
|
|
43
|
+
heading?: React.ReactNode;
|
|
44
|
+
value?: string;
|
|
45
|
+
forceMount?: boolean;
|
|
46
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
47
|
+
declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
48
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
49
|
+
} & {
|
|
50
|
+
asChild?: boolean;
|
|
51
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
52
|
+
alwaysRender?: boolean;
|
|
53
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
54
|
+
declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
|
|
55
|
+
children?: React.ReactNode;
|
|
56
|
+
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
57
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
58
|
+
} & {
|
|
59
|
+
asChild?: boolean;
|
|
60
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "onSelect" | "disabled" | "value"> & {
|
|
61
|
+
disabled?: boolean;
|
|
62
|
+
onSelect?: (value: string) => void;
|
|
63
|
+
value?: string;
|
|
64
|
+
keywords?: string[];
|
|
65
|
+
forceMount?: boolean;
|
|
66
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
67
|
+
declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
|
|
68
|
+
children?: React.ReactNode;
|
|
69
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
70
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
71
|
+
} & {
|
|
72
|
+
asChild?: boolean;
|
|
73
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
74
|
+
declare const CommandShortcut: {
|
|
75
|
+
({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): React.JSX.Element;
|
|
76
|
+
displayName: string;
|
|
77
|
+
};
|
|
78
|
+
export { Command, CommandInput, CommandList, CommandGroup, CommandItem, CommandSeparator, CommandEmpty, CommandShortcut, };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const DEFAULT_FOLDER_ICON = "folder";
|
|
2
|
+
export declare const DEFAULT_FOLDER_COLOR = "#f59145";
|
|
3
|
+
export declare function FolderIconEl({ icon, className, style, }: {
|
|
4
|
+
icon?: string | null;
|
|
5
|
+
className?: string;
|
|
6
|
+
style?: React.CSSProperties;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
8
|
+
export declare function HexColorPicker({ value, onChange, }: {
|
|
9
|
+
value: string;
|
|
10
|
+
onChange: (hex: string) => void;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
export declare function IconPicker({ value, color, onChange, }: {
|
|
13
|
+
value: string;
|
|
14
|
+
color?: string;
|
|
15
|
+
onChange: (icon: string) => void;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
@@ -6,7 +6,8 @@ type ThemeProviderProps = {
|
|
|
6
6
|
};
|
|
7
7
|
type ThemeProviderState = {
|
|
8
8
|
theme: ThemeId;
|
|
9
|
-
|
|
9
|
+
/** Pass persist false to show a theme without keeping it in this browser. */
|
|
10
|
+
setTheme: (theme: ThemeId, persist?: boolean) => void;
|
|
10
11
|
setThemePreview: (theme: ThemeId | null) => void;
|
|
11
12
|
};
|
|
12
13
|
export declare function ThemeProvider({ children, defaultTheme, storageKey, ...props }: ThemeProviderProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface VersionBadgeProps {
|
|
2
|
+
status: "up_to_date" | "requires_update" | "beta" | "unknown";
|
|
3
|
+
releaseUrl?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function VersionBadge({ status, releaseUrl, className, }: VersionBadgeProps): import("react").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type Options = {
|
|
2
|
+
/** Run callback once when the effect mounts (if visible). Default true. */
|
|
3
|
+
runOnMount?: boolean;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Runs `callback` on `intervalMs` while the page is visible.
|
|
7
|
+
* Pauses when the tab is backgrounded; fires once on resume.
|
|
8
|
+
*/
|
|
9
|
+
export declare function usePageVisibleInterval(callback: () => void, intervalMs: number, enabled?: boolean, options?: Options): void;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ComponentType } from "react";
|
|
2
|
+
export interface ActivityTarget {
|
|
3
|
+
icon: ComponentType<{
|
|
4
|
+
className?: string;
|
|
5
|
+
}> | undefined;
|
|
6
|
+
/** Tab type the entry reopens. */
|
|
7
|
+
tab: string;
|
|
8
|
+
labelKey: string | undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* What a recent-activity entry opens and how it is labelled. Plugin tabs
|
|
12
|
+
* claim their activity types through the registry, so an entry whose plugin
|
|
13
|
+
* is gone simply has no target.
|
|
14
|
+
*/
|
|
15
|
+
export declare function activityTarget(type: string): ActivityTarget | undefined;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type UiPreset, type UiRailPreferences } from "../../types/ui-preferences";
|
|
2
|
+
import { type RailItemDef } from "../sidebar/rail-items";
|
|
3
|
+
export declare function buildDashboardSlots(cardIds: string[]): {
|
|
4
|
+
key: string;
|
|
5
|
+
id: string;
|
|
6
|
+
panel: "main" | "side";
|
|
7
|
+
order: number;
|
|
8
|
+
height: number;
|
|
9
|
+
}[];
|
|
10
|
+
/**
|
|
11
|
+
* The rail views a preset hides: its own list, plus every plugin item that
|
|
12
|
+
* does not ask to stay when the preset hides plugin items.
|
|
13
|
+
*/
|
|
14
|
+
export declare function presetHiddenRailTabs(rail: UiRailPreferences, pluginItems: Pick<RailItemDef, "id" | "simplePreset" | "hideable">[]): string[];
|
|
15
|
+
/**
|
|
16
|
+
* Writes a preset's values into the stores that own them. Safe to call when
|
|
17
|
+
* nothing changed; every write is idempotent.
|
|
18
|
+
*/
|
|
19
|
+
export declare function applyPresetSideEffects(preset: Exclude<UiPreset, "custom">): Promise<void>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type BrowserLocation = Pick<Location, "protocol" | "host" | "hostname" | "port">;
|
|
2
|
+
interface DatabaseTransferUrlOptions {
|
|
3
|
+
electron: boolean;
|
|
4
|
+
configuredServerUrl?: string | null;
|
|
5
|
+
location: BrowserLocation;
|
|
6
|
+
}
|
|
7
|
+
export declare function getDatabaseTransferUrl(operation: "export" | "import", { electron, configuredServerUrl, location }: DatabaseTransferUrlOptions): string;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type DesktopUpdateMode = "automatic" | "prompt" | "never";
|
|
2
|
+
export type DesktopInstallKind = "auto" | "manual" | "store" | "disabled";
|
|
3
|
+
export type DesktopUpdateStatus = "idle" | "checking" | "available" | "downloading" | "downloaded" | "up-to-date" | "error";
|
|
4
|
+
export interface DesktopUpdateState {
|
|
5
|
+
kind: DesktopInstallKind;
|
|
6
|
+
mode: DesktopUpdateMode;
|
|
7
|
+
currentVersion: string;
|
|
8
|
+
status: DesktopUpdateStatus;
|
|
9
|
+
version: string | null;
|
|
10
|
+
releaseUrl: string | null;
|
|
11
|
+
progress: number | null;
|
|
12
|
+
error: string | null;
|
|
13
|
+
}
|
|
14
|
+
interface DesktopUpdatesBridge {
|
|
15
|
+
getState: () => Promise<DesktopUpdateState | null>;
|
|
16
|
+
check: () => Promise<DesktopUpdateState | null>;
|
|
17
|
+
download: () => Promise<DesktopUpdateState | null>;
|
|
18
|
+
install: () => Promise<boolean>;
|
|
19
|
+
setMode: (mode: DesktopUpdateMode) => Promise<DesktopUpdateState | null>;
|
|
20
|
+
onState: (callback: (state: DesktopUpdateState) => void) => () => void;
|
|
21
|
+
}
|
|
22
|
+
/** The main process updater, or null in the browser and on older builds. */
|
|
23
|
+
export declare function desktopUpdates(): DesktopUpdatesBridge | null;
|
|
24
|
+
/** Whether this install has an updater the user can configure. */
|
|
25
|
+
export declare function canConfigureUpdates(state: DesktopUpdateState | null): state is DesktopUpdateState;
|
|
26
|
+
/** Which toast, if any, this state calls for. */
|
|
27
|
+
export declare function updateToastFor(state: DesktopUpdateState | null): "prompt" | "manual" | "ready" | null;
|
|
28
|
+
export declare function useDesktopUpdate(): DesktopUpdateState | null;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Host, TabType } from "../../types/ui-types";
|
|
2
|
+
/**
|
|
3
|
+
* Which tab a click on a host opens. The ways to connect (the SSH terminal,
|
|
4
|
+
* remote desktop) are host actions that plugins register, so the answer is the
|
|
5
|
+
* highest-priority connect action the host allows, or null when no running
|
|
6
|
+
* plugin can connect to it.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getDefaultConnectionTab(host: Host): TabType | null;
|
|
9
|
+
/**
|
|
10
|
+
* The preferred tab if the host allows it. A connect tab type the host has
|
|
11
|
+
* switched off falls back to the host's default; any other type is taken as
|
|
12
|
+
* asked.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveHostTabType(host: Host, preferredType?: TabType): TabType | null;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const CORE_REPO_URL = "https://github.com/Termix-SSH/Termix";
|
|
2
|
+
/** A GitHub repo URL without .git or a trailing slash, or null if it is not one. */
|
|
3
|
+
export declare function normalizeGitHubRepo(repository?: string | null): string | null;
|
|
4
|
+
/**
|
|
5
|
+
* A new issue from one of the repo's issue forms, with fields prefilled by
|
|
6
|
+
* their form ids. Logs get cut first when the URL would be too long.
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildIssueUrl(repo: string, options: {
|
|
9
|
+
template: string;
|
|
10
|
+
title?: string;
|
|
11
|
+
fields?: Record<string, string | null | undefined>;
|
|
12
|
+
}): string;
|
|
13
|
+
/** One line on where Termix is running, for the environment field. */
|
|
14
|
+
export declare function describeEnvironment(userAgent?: string, desktop?: boolean): string;
|
|
15
|
+
/** A bug report on the Termix core repo. */
|
|
16
|
+
export declare function reportCoreIssueUrl(termixVersion?: string): string;
|
|
17
|
+
/** Beta feedback on the core repo, listing every plugin running a beta. */
|
|
18
|
+
export declare function reportBetaFeedbackUrl(termixVersion?: string, betaPlugins?: Array<{
|
|
19
|
+
id: string;
|
|
20
|
+
version: string;
|
|
21
|
+
}>): string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { TabType } from "../../types/ui-types";
|
|
2
|
+
export declare const LOCAL_ADAPTIVE_PREFERENCES_KEY = "termix.local.adaptive-engine.v1";
|
|
3
|
+
/** Records an abstract action locally. Callers must not use raw paths or input. */
|
|
4
|
+
export declare function recordLocalPreference(scope: string, action: string, now?: number): void;
|
|
5
|
+
/** Returns a learned action only after enough consistent local evidence. */
|
|
6
|
+
export declare function getLocalPreference<T extends string>(scope: string, candidates: readonly T[], fallback: T, now?: number): T;
|
|
7
|
+
export declare function clearLocalAdaptivePreferences(): void;
|
|
8
|
+
export declare function recordHostActionPreference(hostId: string, action: TabType): void;
|
|
9
|
+
export declare function getPreferredHostAction(hostId: string, candidates: readonly TabType[], fallback: TabType): TabType;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type PaneNavDirection = "left" | "right" | "up" | "down";
|
|
2
|
+
/**
|
|
3
|
+
* The split pane to move to for this key, if any. Cmd+Option+Arrow on macOS,
|
|
4
|
+
* where Option+Arrow moves the shell cursor by word, Alt+Arrow elsewhere.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getPaneNavDirection(e: KeyboardEvent): PaneNavDirection | null;
|
|
7
|
+
export declare function paneNavHotkeyLabel(): string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/** The part of a translate function these helpers use. */
|
|
2
|
+
export type Translator = (key: string, options?: Record<string, unknown>) => string;
|
|
2
3
|
/**
|
|
3
4
|
* Where a plugin's i18n keys resolve from.
|
|
4
5
|
*
|
|
@@ -15,12 +16,12 @@ export declare function pluginKey(pluginId: string, key: string | undefined): st
|
|
|
15
16
|
* else the manifest's. A plugin whose strings are not loaded, like one only
|
|
16
17
|
* listed in a registry, shows the manifest name.
|
|
17
18
|
*/
|
|
18
|
-
export declare function pluginName(t:
|
|
19
|
+
export declare function pluginName(t: Translator, plugin: {
|
|
19
20
|
id: string;
|
|
20
21
|
name: string;
|
|
21
22
|
}): string;
|
|
22
23
|
/** Same as pluginName, for "plugin.description". */
|
|
23
|
-
export declare function pluginDescription(t:
|
|
24
|
+
export declare function pluginDescription(t: Translator, plugin: {
|
|
24
25
|
id: string;
|
|
25
26
|
description?: string | null;
|
|
26
27
|
}): string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The layout picker, plus the default layout and theme for everyone when an
|
|
3
|
+
* admin is looking. Lists what the layout and theme registries hold, so
|
|
4
|
+
* plugin layouts and themes show up as soon as they are installed.
|
|
5
|
+
*/
|
|
6
|
+
export declare function LookSettings({ isAdmin }: {
|
|
7
|
+
isAdmin: boolean;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type ComponentType } from "react";
|
|
2
|
+
import type { TFunction } from "i18next";
|
|
3
|
+
/** A layout someone can choose, known from a manifest before its code loads. */
|
|
4
|
+
export interface LayoutDescriptor {
|
|
5
|
+
id: string;
|
|
6
|
+
/** i18n key in the plugin namespace, or plain text. */
|
|
7
|
+
label: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
defaultTheme?: string;
|
|
10
|
+
/** Set for a plugin layout. */
|
|
11
|
+
pluginId?: string;
|
|
12
|
+
}
|
|
13
|
+
/** A layout whose code is running, from app.registerLayout. */
|
|
14
|
+
export interface RegisteredLayout {
|
|
15
|
+
id: string;
|
|
16
|
+
pluginId?: string;
|
|
17
|
+
component: ComponentType;
|
|
18
|
+
/** Shown on phones and narrow windows. Never in the desktop app. */
|
|
19
|
+
mobileComponent?: ComponentType;
|
|
20
|
+
defaultTheme?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const registerLayout: (item: RegisteredLayout) => () => void;
|
|
23
|
+
export declare const getRegisteredLayout: (id: string) => RegisteredLayout;
|
|
24
|
+
export declare const useRegisteredLayouts: () => RegisteredLayout[];
|
|
25
|
+
export declare const resetRegisteredLayouts: () => void;
|
|
26
|
+
/** Every layout that can be chosen, from the installed plugins. */
|
|
27
|
+
export declare function listLayouts(): LayoutDescriptor[];
|
|
28
|
+
export declare function getLayoutDescriptor(id: string): LayoutDescriptor | undefined;
|
|
29
|
+
/** Replaces the plugin layouts at once, from the plugin list. */
|
|
30
|
+
export declare function setPluginLayouts(layouts: LayoutDescriptor[]): void;
|
|
31
|
+
export declare function useLayouts(): LayoutDescriptor[];
|
|
32
|
+
export declare function layoutLabel(layout: LayoutDescriptor, t: TFunction): string;
|
|
33
|
+
/** Test seam. */
|
|
34
|
+
export declare function resetPluginLayouts(): void;
|