-
-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathtypes.ts
128 lines (116 loc) · 2.35 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import { h } from "preact";
export enum Action {
COMMAND,
DELAY,
EDITOR,
LOOP,
}
export type MacroItem =
| { action: Action.COMMAND; commandId: string }
| { action: Action.DELAY; delay: number }
| { action: Action.EDITOR }
| { action: Action.LOOP; times: number; commandId: string };
export interface Macro {
name: string;
icon: string;
startup?: boolean;
macro: MacroItem[];
}
export interface CommanderSettings {
confirmDeletion: boolean;
showAddCommand: boolean;
debug: boolean;
editorMenu: CommandIconPair[];
fileMenu: CommandIconPair[];
leftRibbon: CommandIconPair[];
rightRibbon: CommandIconPair[];
titleBar: CommandIconPair[];
statusBar: CommandIconPair[];
pageHeader: CommandIconPair[];
explorer: CommandIconPair[];
macros: Macro[];
hide: {
statusbar: string[];
leftRibbon: string[];
};
spacing: number;
advancedToolbar: AdvancedToolbarSettings;
}
export interface AdvancedToolbarSettings {
rowHeight: number;
rowCount: number;
spacing: number;
buttonWidth: number;
columnLayout: boolean;
mappedIcons: {
iconID: string;
commandID: string;
}[];
tooltips: boolean;
heightOffset: number;
}
export interface Tab {
name: string;
tab: h.JSX.Element;
}
export type Mode = "desktop" | "any" | "mobile" | string;
export interface CommandIconPair {
id: string;
icon: string;
name: string;
mode: Mode;
color?: string;
}
/* eslint-disable no-unused-vars */
declare module "obsidian" {
interface MenuItem {
dom: HTMLElement;
}
interface App {
commands: {
commands: {
[id: string]: Command;
};
executeCommandById: (id: string) => void;
};
plugins: {
manifests: {
[id: string]: PluginManifest;
};
};
statusBar: {
containerEl: HTMLElement;
};
appId: string;
isMobile: boolean;
setting: {
closeActiveTab: () => void;
openTabById: (id: string) => void;
activeTab: {
containerEl: HTMLElement;
};
};
}
interface WorkspaceRibbon {
orderedRibbonActions: {
icon: string;
title: string;
callback: () => void;
}[];
collapseButtonEl: HTMLElement;
ribbonItemsEl: HTMLElement;
addRibbonItemButton: (
icon: string,
name: string,
callback: (event: MouseEvent) => void
) => void;
makeRibbonItemButton: (
icon: string,
name: string,
callback: (event: MouseEvent) => void
) => HTMLElement;
}
interface WorkspaceLeaf {
containerEl: HTMLElement;
}
}