@markus-global/cli 0.7.2 → 0.7.3-rc.1
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/dist/tray.d.ts +0 -2
- package/dist/tray.d.ts.map +1 -1
- package/dist/tray.js +140 -76
- package/dist/tray.js.map +1 -1
- package/dist/tray.mjs +139 -52
- package/dist/web-ui/assets/{browser-D7voLlvI.js → browser-DT4cceR1.js} +1 -1
- package/dist/web-ui/assets/{index-BY8rA8ML.css → index-DxTg9YFr.css} +1 -1
- package/dist/web-ui/assets/index-Mg5Mw82t.js +706 -0
- package/dist/web-ui/index.html +2 -2
- package/package.json +1 -1
- package/dist/web-ui/assets/index-WWZgMSA9.js +0 -386
package/dist/tray.d.ts
CHANGED
package/dist/tray.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tray.d.ts","sourceRoot":"","sources":["../src/tray.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tray.d.ts","sourceRoot":"","sources":["../src/tray.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
package/dist/tray.js
CHANGED
|
@@ -1,42 +1,92 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cross-platform system tray controller for Markus.
|
|
3
3
|
* Provides start/stop controls and quick access to the Web UI.
|
|
4
|
-
*
|
|
5
|
-
* Launched by the desktop shortcut / .app instead of `markus start` directly.
|
|
6
4
|
*/
|
|
7
|
-
import { spawn, exec } from 'node:child_process';
|
|
8
|
-
import { readFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
5
|
+
import { spawn, exec, execSync } from 'node:child_process';
|
|
6
|
+
import { readFileSync, existsSync, mkdirSync, appendFileSync } from 'node:fs';
|
|
9
7
|
import { get as httpGet } from 'node:http';
|
|
10
8
|
import { createConnection } from 'node:net';
|
|
11
|
-
import { resolve, dirname } from 'node:path';
|
|
9
|
+
import { resolve, dirname, join } from 'node:path';
|
|
12
10
|
import { fileURLToPath } from 'node:url';
|
|
13
11
|
import { platform, homedir } from 'node:os';
|
|
14
12
|
import SysTrayModule from 'systray2';
|
|
15
|
-
// systray2 is CJS; default export is the class
|
|
16
13
|
const SysTray = SysTrayModule.default || SysTrayModule;
|
|
17
14
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
18
15
|
const WEB_UI_PORT = 8056;
|
|
19
16
|
const WEB_UI_URL = `http://localhost:${WEB_UI_PORT}`;
|
|
20
|
-
// Resolve paths relative to the binary distribution layout:
|
|
21
|
-
// bin/tray.mjs (this file)
|
|
22
|
-
// bin/node (bundled node)
|
|
23
|
-
// bin/markus.mjs
|
|
24
17
|
const BIN_DIR = __dirname;
|
|
25
18
|
const APP_DIR = resolve(BIN_DIR, '..');
|
|
26
|
-
const NODE_BIN = resolve(BIN_DIR, platform() === 'win32' ? 'node.exe' : 'node');
|
|
27
|
-
const MARKUS_MJS = resolve(BIN_DIR, 'markus.mjs');
|
|
28
19
|
const LOG_DIR = resolve(homedir(), '.markus', 'logs');
|
|
20
|
+
const LOG_FILE = join(LOG_DIR, 'tray-stderr.log');
|
|
21
|
+
// Resolve the markus command: prefer the symlink in /usr/local/bin,
|
|
22
|
+
// then fall back to the bundled wrapper script, then to direct node invocation.
|
|
23
|
+
function resolveMarkusCommand() {
|
|
24
|
+
const symlink = '/usr/local/bin/markus';
|
|
25
|
+
if (existsSync(symlink)) {
|
|
26
|
+
return { cmd: symlink, args: ['start'] };
|
|
27
|
+
}
|
|
28
|
+
const wrapper = resolve(APP_DIR, 'markus');
|
|
29
|
+
if (existsSync(wrapper)) {
|
|
30
|
+
return { cmd: wrapper, args: ['start'] };
|
|
31
|
+
}
|
|
32
|
+
const nodeBin = resolve(BIN_DIR, platform() === 'win32' ? 'node.exe' : 'node');
|
|
33
|
+
const markusMjs = resolve(BIN_DIR, 'markus.mjs');
|
|
34
|
+
return { cmd: nodeBin, args: [markusMjs, 'start'] };
|
|
35
|
+
}
|
|
36
|
+
const STRINGS = {
|
|
37
|
+
en: {
|
|
38
|
+
openUI: 'Open Web UI',
|
|
39
|
+
startServer: 'Start Server',
|
|
40
|
+
stopServer: 'Stop Server',
|
|
41
|
+
quit: 'Quit Markus',
|
|
42
|
+
tooltipRunning: 'Markus (running)',
|
|
43
|
+
tooltipStopped: 'Markus (stopped)',
|
|
44
|
+
portConflictTitle: 'Markus',
|
|
45
|
+
portConflictMsg: (port, occupant) => `Port ${port} is already in use by "${occupant}".\\nMarkus cannot start.\\n\\nFree the port or change it in ~/.markus/markus.json`,
|
|
46
|
+
},
|
|
47
|
+
zh: {
|
|
48
|
+
openUI: '打开控制台',
|
|
49
|
+
startServer: '启动服务',
|
|
50
|
+
stopServer: '停止服务',
|
|
51
|
+
quit: '退出 Markus',
|
|
52
|
+
tooltipRunning: 'Markus (运行中)',
|
|
53
|
+
tooltipStopped: 'Markus (已停止)',
|
|
54
|
+
portConflictTitle: 'Markus',
|
|
55
|
+
portConflictMsg: (port, occupant) => `端口 ${port} 已被 "${occupant}" 占用。\\nMarkus 无法启动。\\n\\n请释放端口或在 ~/.markus/markus.json 中修改端口`,
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
function detectLocale() {
|
|
59
|
+
const lang = (process.env['LANG'] ?? process.env['LC_ALL'] ?? process.env['LANGUAGE'] ?? '').toLowerCase();
|
|
60
|
+
if (lang.startsWith('zh'))
|
|
61
|
+
return 'zh';
|
|
62
|
+
if (platform() === 'darwin') {
|
|
63
|
+
try {
|
|
64
|
+
const appleLang = execSync('defaults read -g AppleLanguages 2>/dev/null', { encoding: 'utf-8' });
|
|
65
|
+
if (/zh/.test(appleLang))
|
|
66
|
+
return 'zh';
|
|
67
|
+
}
|
|
68
|
+
catch { /* ignore */ }
|
|
69
|
+
}
|
|
70
|
+
return 'en';
|
|
71
|
+
}
|
|
72
|
+
const t = STRINGS[detectLocale()];
|
|
73
|
+
// ── Logging ───────────────────────────────────────────────────────────────────
|
|
74
|
+
function trayLog(msg) {
|
|
75
|
+
const ts = new Date().toISOString();
|
|
76
|
+
const line = `${ts} ${msg}\n`;
|
|
77
|
+
try {
|
|
78
|
+
mkdirSync(LOG_DIR, { recursive: true });
|
|
79
|
+
appendFileSync(LOG_FILE, line);
|
|
80
|
+
}
|
|
81
|
+
catch { /* ignore */ }
|
|
82
|
+
console.error(line.trimEnd());
|
|
83
|
+
}
|
|
84
|
+
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
29
85
|
function loadIconBase64() {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
resolve(APP_DIR, 'markus.ico'),
|
|
33
|
-
];
|
|
34
|
-
for (const p of candidates) {
|
|
35
|
-
if (existsSync(p)) {
|
|
86
|
+
for (const p of [resolve(APP_DIR, 'logo.png'), resolve(APP_DIR, 'markus.ico')]) {
|
|
87
|
+
if (existsSync(p))
|
|
36
88
|
return readFileSync(p).toString('base64');
|
|
37
|
-
}
|
|
38
89
|
}
|
|
39
|
-
// Fallback: empty icon (systray2 will show a default)
|
|
40
90
|
return '';
|
|
41
91
|
}
|
|
42
92
|
function openBrowser(url) {
|
|
@@ -46,23 +96,18 @@ function openBrowser(url) {
|
|
|
46
96
|
: `xdg-open "${url}"`;
|
|
47
97
|
exec(cmd, () => { });
|
|
48
98
|
}
|
|
49
|
-
// ── Server process management ────────────────────────────────────────────────
|
|
50
|
-
let serverProcess = null;
|
|
51
|
-
let serverRunning = false;
|
|
52
99
|
function isPortListening(port) {
|
|
53
|
-
return new Promise((
|
|
54
|
-
const socket = createConnection({ port, host: '127.0.0.1' }, () => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
resolve(false);
|
|
65
|
-
});
|
|
100
|
+
return new Promise((res) => {
|
|
101
|
+
const socket = createConnection({ port, host: '127.0.0.1' }, () => { socket.destroy(); res(true); });
|
|
102
|
+
socket.on('error', () => { socket.destroy(); res(false); });
|
|
103
|
+
socket.setTimeout(2000, () => { socket.destroy(); res(false); });
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function checkHealthOnce(url) {
|
|
107
|
+
return new Promise((res) => {
|
|
108
|
+
const req = httpGet(url, (r) => { r.resume(); res(r.statusCode !== undefined && r.statusCode >= 200 && r.statusCode < 400); });
|
|
109
|
+
req.on('error', () => res(false));
|
|
110
|
+
req.setTimeout(2000, () => { req.destroy(); res(false); });
|
|
66
111
|
});
|
|
67
112
|
}
|
|
68
113
|
function waitForHealth(url, intervalMs = 500, maxMs = 30000) {
|
|
@@ -73,40 +118,60 @@ function waitForHealth(url, intervalMs = 500, maxMs = 30000) {
|
|
|
73
118
|
res.resume();
|
|
74
119
|
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 400) {
|
|
75
120
|
ok(true);
|
|
121
|
+
return;
|
|
76
122
|
}
|
|
77
|
-
else if (Date.now() >= deadline) {
|
|
78
|
-
ok(false);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
setTimeout(check, intervalMs);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
req.on('error', () => {
|
|
85
123
|
if (Date.now() >= deadline) {
|
|
86
124
|
ok(false);
|
|
125
|
+
return;
|
|
87
126
|
}
|
|
88
|
-
|
|
89
|
-
setTimeout(check, intervalMs);
|
|
90
|
-
}
|
|
127
|
+
setTimeout(check, intervalMs);
|
|
91
128
|
});
|
|
92
|
-
req.
|
|
129
|
+
req.on('error', () => { if (Date.now() >= deadline)
|
|
130
|
+
ok(false);
|
|
131
|
+
else
|
|
132
|
+
setTimeout(check, intervalMs); });
|
|
133
|
+
req.setTimeout(2000, () => req.destroy());
|
|
93
134
|
};
|
|
94
135
|
check();
|
|
95
136
|
});
|
|
96
137
|
}
|
|
138
|
+
// ── Server process management ────────────────────────────────────────────────
|
|
139
|
+
let serverProcess = null;
|
|
140
|
+
let serverRunning = false;
|
|
97
141
|
async function startServer() {
|
|
98
142
|
if (serverRunning)
|
|
99
143
|
return;
|
|
100
|
-
// If the port is already in use, the server is running externally — just open the browser
|
|
101
144
|
if (await isPortListening(WEB_UI_PORT)) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
145
|
+
const isMarkus = await checkHealthOnce(`${WEB_UI_URL}/api/health`);
|
|
146
|
+
if (isMarkus) {
|
|
147
|
+
trayLog(`Port ${WEB_UI_PORT} is Markus — opening browser`);
|
|
148
|
+
serverRunning = true;
|
|
149
|
+
updateTrayMenu();
|
|
150
|
+
openBrowser(WEB_UI_URL);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Port occupied by something else
|
|
154
|
+
let occupant = 'unknown';
|
|
155
|
+
try {
|
|
156
|
+
occupant = execSync(`lsof -i :${WEB_UI_PORT} -sTCP:LISTEN -t 2>/dev/null | head -1 | xargs ps -p -o comm= 2>/dev/null`, { encoding: 'utf-8' }).trim() || 'unknown';
|
|
157
|
+
}
|
|
158
|
+
catch { /* ignore */ }
|
|
159
|
+
trayLog(`Port ${WEB_UI_PORT} occupied by "${occupant}" — showing conflict dialog`);
|
|
160
|
+
if (platform() === 'darwin') {
|
|
161
|
+
exec(`osascript -e 'display dialog "${t.portConflictMsg(WEB_UI_PORT, occupant)}" with title "${t.portConflictTitle}" buttons {"OK"} default button "OK" with icon stop'`, () => { });
|
|
162
|
+
}
|
|
105
163
|
return;
|
|
106
164
|
}
|
|
107
165
|
mkdirSync(LOG_DIR, { recursive: true });
|
|
108
|
-
|
|
109
|
-
|
|
166
|
+
const { cmd, args } = resolveMarkusCommand();
|
|
167
|
+
trayLog(`Starting server: ${cmd} ${args.join(' ')}`);
|
|
168
|
+
const stdoutLog = join(LOG_DIR, 'stdout.log');
|
|
169
|
+
const stderrLog = join(LOG_DIR, 'stderr.log');
|
|
170
|
+
const { openSync } = await import('node:fs');
|
|
171
|
+
const outFd = openSync(stdoutLog, 'a');
|
|
172
|
+
const errFd = openSync(stderrLog, 'a');
|
|
173
|
+
serverProcess = spawn(cmd, args, {
|
|
174
|
+
stdio: ['ignore', outFd, errFd],
|
|
110
175
|
detached: false,
|
|
111
176
|
env: { ...process.env, NO_BROWSER: '1' },
|
|
112
177
|
});
|
|
@@ -117,26 +182,30 @@ async function startServer() {
|
|
|
117
182
|
serverProcess = null;
|
|
118
183
|
updateTrayMenu();
|
|
119
184
|
if (code && code !== 0) {
|
|
120
|
-
|
|
185
|
+
trayLog(`Server exited with code ${code} — check ${stderrLog}`);
|
|
121
186
|
}
|
|
122
187
|
});
|
|
123
188
|
serverProcess.on('error', (err) => {
|
|
124
189
|
serverRunning = false;
|
|
125
190
|
serverProcess = null;
|
|
126
191
|
updateTrayMenu();
|
|
127
|
-
|
|
192
|
+
trayLog(`Failed to spawn server: ${err.message}`);
|
|
128
193
|
});
|
|
129
|
-
// Wait for backend health check before opening browser
|
|
130
194
|
waitForHealth(`${WEB_UI_URL}/api/health`).then((ok) => {
|
|
131
|
-
if (ok && serverRunning)
|
|
195
|
+
if (ok && serverRunning) {
|
|
196
|
+
trayLog('Server healthy — opening browser');
|
|
132
197
|
openBrowser(WEB_UI_URL);
|
|
198
|
+
}
|
|
199
|
+
else if (!ok) {
|
|
200
|
+
trayLog(`Server did not become healthy within 30s — check ${stderrLog}`);
|
|
201
|
+
}
|
|
133
202
|
});
|
|
134
203
|
}
|
|
135
204
|
function stopServer() {
|
|
136
205
|
if (!serverProcess)
|
|
137
206
|
return;
|
|
207
|
+
trayLog('Stopping server...');
|
|
138
208
|
serverProcess.kill('SIGTERM');
|
|
139
|
-
// Force kill after 5 seconds if still alive
|
|
140
209
|
const forceTimer = setTimeout(() => {
|
|
141
210
|
if (serverProcess && !serverProcess.killed) {
|
|
142
211
|
serverProcess.kill('SIGKILL');
|
|
@@ -146,23 +215,19 @@ function stopServer() {
|
|
|
146
215
|
}
|
|
147
216
|
// ── Tray setup ───────────────────────────────────────────────────────────────
|
|
148
217
|
const SEPARATOR = { title: '<SEPARATOR>', tooltip: '', enabled: true };
|
|
149
|
-
const ITEM_OPEN_UI = { title: 'Open Web UI', tooltip: 'Open Markus in browser', enabled: true };
|
|
150
|
-
const ITEM_START = { title: 'Start Server', tooltip: 'Start Markus server', enabled: true };
|
|
151
|
-
const ITEM_STOP = { title: 'Stop Server', tooltip: 'Stop Markus server', enabled: false };
|
|
152
|
-
const ITEM_QUIT = { title: 'Quit Markus', tooltip: 'Stop server and quit', enabled: true };
|
|
153
218
|
let tray = null;
|
|
154
219
|
function buildMenu() {
|
|
155
220
|
return {
|
|
156
221
|
icon: loadIconBase64(),
|
|
157
222
|
title: '',
|
|
158
|
-
tooltip: serverRunning ?
|
|
223
|
+
tooltip: serverRunning ? t.tooltipRunning : t.tooltipStopped,
|
|
159
224
|
items: [
|
|
160
|
-
{
|
|
225
|
+
{ title: t.openUI, tooltip: t.openUI, enabled: serverRunning },
|
|
161
226
|
SEPARATOR,
|
|
162
|
-
{
|
|
163
|
-
{
|
|
227
|
+
{ title: t.startServer, tooltip: t.startServer, enabled: !serverRunning },
|
|
228
|
+
{ title: t.stopServer, tooltip: t.stopServer, enabled: serverRunning },
|
|
164
229
|
SEPARATOR,
|
|
165
|
-
|
|
230
|
+
{ title: t.quit, tooltip: t.quit, enabled: true },
|
|
166
231
|
],
|
|
167
232
|
};
|
|
168
233
|
}
|
|
@@ -172,22 +237,22 @@ function updateTrayMenu() {
|
|
|
172
237
|
tray.sendAction({ type: 'update-menu', menu: buildMenu() });
|
|
173
238
|
}
|
|
174
239
|
async function main() {
|
|
240
|
+
trayLog(`Tray starting (locale=${detectLocale()}, pid=${process.pid})`);
|
|
175
241
|
tray = new SysTray({ menu: buildMenu(), copyDir: false });
|
|
176
242
|
await tray.ready();
|
|
177
243
|
tray.onClick(async (action) => {
|
|
178
244
|
const title = action.item.title;
|
|
179
|
-
if (title ===
|
|
245
|
+
if (title === t.openUI) {
|
|
180
246
|
openBrowser(WEB_UI_URL);
|
|
181
247
|
}
|
|
182
|
-
else if (title ===
|
|
248
|
+
else if (title === t.startServer) {
|
|
183
249
|
await startServer();
|
|
184
250
|
}
|
|
185
|
-
else if (title ===
|
|
251
|
+
else if (title === t.stopServer) {
|
|
186
252
|
stopServer();
|
|
187
253
|
}
|
|
188
|
-
else if (title ===
|
|
254
|
+
else if (title === t.quit) {
|
|
189
255
|
stopServer();
|
|
190
|
-
// Wait briefly for server to stop, then exit
|
|
191
256
|
setTimeout(async () => {
|
|
192
257
|
if (tray)
|
|
193
258
|
await tray.kill(false);
|
|
@@ -196,13 +261,12 @@ async function main() {
|
|
|
196
261
|
}
|
|
197
262
|
});
|
|
198
263
|
tray.onError((err) => {
|
|
199
|
-
|
|
264
|
+
trayLog(`Tray error: ${err.message}`);
|
|
200
265
|
});
|
|
201
|
-
// Auto-start the server on launch
|
|
202
266
|
await startServer();
|
|
203
267
|
}
|
|
204
268
|
main().catch((err) => {
|
|
205
|
-
|
|
269
|
+
trayLog(`Tray failed to start: ${err}`);
|
|
206
270
|
process.exit(1);
|
|
207
271
|
});
|
|
208
272
|
//# sourceMappingURL=tray.js.map
|
package/dist/tray.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tray.js","sourceRoot":"","sources":["../src/tray.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAqB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,aAAa,MAAM,UAAU,CAAC;AACrC,+CAA+C;AAC/C,MAAM,OAAO,GAAI,aAAqB,CAAC,OAAO,IAAI,aAAa,CAAC;AAGhE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,UAAU,GAAG,oBAAoB,WAAW,EAAE,CAAC;AAErD,4DAA4D;AAC5D,8BAA8B;AAC9B,iCAAiC;AACjC,mBAAmB;AACnB,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAChF,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAClD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAEtD,SAAS,cAAc;IACrB,MAAM,UAAU,GAAG;QACjB,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;QAC5B,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC;KAC/B,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,sDAAsD;IACtD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,GAAG,GAAG,QAAQ,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG;QAC5C,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG;YACvC,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,gFAAgF;AAEhF,IAAI,aAAa,GAAwB,IAAI,CAAC;AAC9C,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE;YAChE,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;YAC3B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,UAAU,GAAG,GAAG,EAAE,KAAK,GAAG,KAAK;IACjE,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACpC,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC/B,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;oBACpE,EAAE,CAAC,IAAI,CAAC,CAAC;gBACX,CAAC;qBAAM,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;oBAClC,EAAE,CAAC,KAAK,CAAC,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;oBAC3B,EAAE,CAAC,KAAK,CAAC,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,KAAK,EAAE,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,IAAI,aAAa;QAAE,OAAO;IAE1B,0FAA0F;IAC1F,IAAI,MAAM,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,aAAa,GAAG,IAAI,CAAC;QACrB,cAAc,EAAE,CAAC;QACjB,WAAW,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO;IACT,CAAC;IAED,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExC,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;QACrD,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,KAAK;QACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE;KACzC,CAAC,CAAC;IAEH,aAAa,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,CAAC;IAEjB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAChC,aAAa,GAAG,KAAK,CAAC;QACtB,aAAa,GAAG,IAAI,CAAC;QACrB,cAAc,EAAE,CAAC;QACjB,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QAChC,aAAa,GAAG,KAAK,CAAC;QACtB,aAAa,GAAG,IAAI,CAAC;QACrB,cAAc,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,uDAAuD;IACvD,aAAa,CAAC,GAAG,UAAU,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;QACpD,IAAI,EAAE,IAAI,aAAa;YAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,CAAC,aAAa;QAAE,OAAO;IAC3B,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,4CAA4C;IAC5C,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;QACjC,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC3C,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,gFAAgF;AAEhF,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvE,MAAM,YAAY,GAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClG,MAAM,UAAU,GAAO,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAChG,MAAM,SAAS,GAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC/F,MAAM,SAAS,GAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhG,IAAI,IAAI,GAA2B,IAAI,CAAC;AAExC,SAAS,SAAS;IAChB,OAAO;QACL,IAAI,EAAE,cAAc,EAAE;QACtB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB;QAChE,KAAK,EAAE;YACL,EAAE,GAAG,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE;YAC3C,SAAS;YACT,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE;YAC1C,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE;YACxC,SAAS;YACT,SAAS;SACV;KACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1D,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IAEnB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAmD,EAAE,EAAE;QACzE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC,IAAI,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;YACjC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YACrC,UAAU,EAAE,CAAC;QACf,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;YACrC,UAAU,EAAE,CAAC;YACb,6CAA6C;YAC7C,UAAU,CAAC,KAAK,IAAI,EAAE;gBACpB,IAAI,IAAI;oBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,CAAC,GAAU,EAAE,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"tray.js","sourceRoot":"","sources":["../src/tray.ts"],"names":[],"mappings":"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"}
|