@flighthq/host-electron 0.4.0-next.1920.b93ad0f → 0.4.0-next.1932.1ef883a
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/LICENSE.md +9 -0
- package/README.md +17 -0
- package/dist/electronApp.d.ts.map +1 -1
- package/dist/electronApp.js +2 -15
- package/dist/electronApp.js.map +1 -1
- package/dist/electronClipboard.js +4 -4
- package/dist/electronMenu.d.ts +1 -1
- package/dist/electronMenu.d.ts.map +1 -1
- package/dist/electronMenu.js +1 -22
- package/dist/electronMenu.js.map +1 -1
- package/dist/electronMenuTemplate.d.ts +3 -0
- package/dist/electronMenuTemplate.d.ts.map +1 -0
- package/dist/electronMenuTemplate.js +76 -0
- package/dist/electronMenuTemplate.js.map +1 -0
- package/dist/electronRegister.d.ts.map +1 -1
- package/dist/electronRegister.js +2 -1
- package/dist/electronRegister.js.map +1 -1
- package/dist/electronTray.d.ts.map +1 -1
- package/dist/electronTray.js +1 -18
- package/dist/electronTray.js.map +1 -1
- package/dist/electronUpdater.js +1 -1
- package/package.json +19 -19
- package/src/electronClipboard.test.ts +5 -5
- package/src/electronMenuTemplate.test.ts +23 -0
- package/src/electronUpdater.test.ts +1 -1
package/LICENSE.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2013-2026 Joshua Granick and other contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# @flighthq/host-electron
|
|
2
|
+
|
|
3
|
+
Electron host backend: registers Electron main-process implementations of Flight's window/app/dialog/clipboard/menu/tray/shortcut/screen/power/notification/shell/protocol/updater/ipc/storage seams
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm install @flighthq/host-electron
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Import the supported application-facing API from `@flighthq/host-electron`. The `@flighthq/host-electron/contract` export is the wider package-to-package contract used to compose Flight itself.
|
|
12
|
+
|
|
13
|
+
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
|
+
|
|
15
|
+
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
+
- [Source for @flighthq/host-electron@0.4.0-next.1932.1ef883a](https://github.com/flighthq/flight/tree/1ef883a866729a9bc6f461111970f6377de1499f/packages/host-electron)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/1ef883a866729a9bc6f461111970f6377de1499f/LICENSE.md)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electronApp.d.ts","sourceRoot":"","sources":["../src/electronApp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"electronApp.d.ts","sourceRoot":"","sources":["../src/electronApp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA6B,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAQnG,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,CA4J1E"}
|
package/dist/electronApp.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { toElectronTemplate } from './electronMenuTemplate';
|
|
1
2
|
// Maps Flight's AppBackend onto Electron's `app` module (plus `app.dock` on macOs). Dock-only
|
|
2
3
|
// operations no-op or return -1 where there is no dock. Subscribe methods wire an electron event
|
|
3
4
|
// listener and return an unsubscribe that removes that exact handler; the wrapper adapts Electron's
|
|
@@ -101,7 +102,7 @@ export function createElectronAppBackend(electron) {
|
|
|
101
102
|
setDockMenu(items) {
|
|
102
103
|
if (!app.dock)
|
|
103
104
|
return;
|
|
104
|
-
app.dock.setMenu(electron.Menu.buildFromTemplate(items
|
|
105
|
+
app.dock.setMenu(electron.Menu.buildFromTemplate(toElectronTemplate(items)));
|
|
105
106
|
},
|
|
106
107
|
setLoginItem(settings) {
|
|
107
108
|
app.setLoginItemSettings({
|
|
@@ -167,18 +168,4 @@ function toElectronPathName(kind) {
|
|
|
167
168
|
return 'crashDumps';
|
|
168
169
|
return 'userData';
|
|
169
170
|
}
|
|
170
|
-
function toMenuItemOptions(item) {
|
|
171
|
-
const out = {
|
|
172
|
-
id: item.id,
|
|
173
|
-
label: item.label,
|
|
174
|
-
type: item.type,
|
|
175
|
-
role: item.role,
|
|
176
|
-
accelerator: item.accelerator,
|
|
177
|
-
enabled: item.enabled,
|
|
178
|
-
checked: item.checked,
|
|
179
|
-
};
|
|
180
|
-
if (item.submenu)
|
|
181
|
-
out.submenu = item.submenu.map(toMenuItemOptions);
|
|
182
|
-
return out;
|
|
183
|
-
}
|
|
184
171
|
//# sourceMappingURL=electronApp.js.map
|
package/dist/electronApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electronApp.js","sourceRoot":"","sources":["../src/electronApp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"electronApp.js","sourceRoot":"","sources":["../src/electronApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ export function createElectronClipboardBackend(electron) {
|
|
|
23
23
|
},
|
|
24
24
|
async readHtml() {
|
|
25
25
|
try {
|
|
26
|
-
return cb.
|
|
26
|
+
return cb.readHTML();
|
|
27
27
|
}
|
|
28
28
|
catch {
|
|
29
29
|
return '';
|
|
@@ -31,7 +31,7 @@ export function createElectronClipboardBackend(electron) {
|
|
|
31
31
|
},
|
|
32
32
|
async writeHtml(html) {
|
|
33
33
|
try {
|
|
34
|
-
cb.
|
|
34
|
+
cb.writeHTML(html);
|
|
35
35
|
return true;
|
|
36
36
|
}
|
|
37
37
|
catch {
|
|
@@ -49,7 +49,7 @@ export function createElectronClipboardBackend(electron) {
|
|
|
49
49
|
async readImage() {
|
|
50
50
|
try {
|
|
51
51
|
const image = cb.readImage();
|
|
52
|
-
return image.isEmpty() ? '' : image.
|
|
52
|
+
return image.isEmpty() ? '' : image.toDataURL();
|
|
53
53
|
}
|
|
54
54
|
catch {
|
|
55
55
|
return '';
|
|
@@ -57,7 +57,7 @@ export function createElectronClipboardBackend(electron) {
|
|
|
57
57
|
},
|
|
58
58
|
async writeImage(dataUrl) {
|
|
59
59
|
try {
|
|
60
|
-
cb.writeImage(electron.nativeImage.
|
|
60
|
+
cb.writeImage(electron.nativeImage.createFromDataURL(dataUrl));
|
|
61
61
|
return true;
|
|
62
62
|
}
|
|
63
63
|
catch {
|
package/dist/electronMenu.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ElectronApi, MenuBackend } from '@flighthq/types/contract';
|
|
2
2
|
export declare function createElectronMenuBackend(electron: ElectronApi): MenuBackend;
|
|
3
3
|
//# sourceMappingURL=electronMenu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electronMenu.d.ts","sourceRoot":"","sources":["../src/electronMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"electronMenu.d.ts","sourceRoot":"","sources":["../src/electronMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAQzE,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,CA+B5E"}
|
package/dist/electronMenu.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { toElectronTemplate } from './electronMenuTemplate';
|
|
1
2
|
// Maps Flight's MenuBackend onto Electron's Menu module. Flight menu items are plain templates with a
|
|
2
3
|
// stable `id`; Electron delivers selection through per-item `click` callbacks, so the seam funnels
|
|
3
4
|
// those clicks back through an explicit onSelect. The application menu's clicks go to the listener
|
|
@@ -34,26 +35,4 @@ export function createElectronMenuBackend(electron) {
|
|
|
34
35
|
},
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
|
-
// Recursively maps Flight menu templates to Electron menu options. A selectable leaf with an id gets a
|
|
38
|
-
// `click` that reports its id through onSelect; submenus recurse with the same onSelect.
|
|
39
|
-
function toElectronTemplate(items, onSelect) {
|
|
40
|
-
return items.map((item) => {
|
|
41
|
-
const options = {
|
|
42
|
-
id: item.id,
|
|
43
|
-
label: item.label,
|
|
44
|
-
type: item.type,
|
|
45
|
-
role: item.role,
|
|
46
|
-
accelerator: item.accelerator,
|
|
47
|
-
enabled: item.enabled,
|
|
48
|
-
checked: item.checked,
|
|
49
|
-
};
|
|
50
|
-
if (item.submenu) {
|
|
51
|
-
options.submenu = toElectronTemplate(item.submenu, onSelect);
|
|
52
|
-
}
|
|
53
|
-
else if (onSelect && item.id !== undefined) {
|
|
54
|
-
options.click = () => onSelect(item.id);
|
|
55
|
-
}
|
|
56
|
-
return options;
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
38
|
//# sourceMappingURL=electronMenu.js.map
|
package/dist/electronMenu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electronMenu.js","sourceRoot":"","sources":["../src/electronMenu.ts"],"names":[],"mappings":"AAEA,sGAAsG;AACtG,mGAAmG;AACnG,mGAAmG;AACnG,qGAAqG;AACrG,MAAM,UAAU,yBAAyB,CAAC,QAAqB;IAC7D,kGAAkG;IAClG,kFAAkF;IAClF,IAAI,cAAc,GAAkC,IAAI,CAAC;IACzD,OAAO;QACL,kBAAkB,CAAC,KAAK;YACtB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAC9B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACzF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YAC1B,2FAA2F;YAC3F,+FAA+F;YAC/F,sDAAsD;YACtD,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;gBAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7F,IAAI,CAAC;oBACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACvB,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,eAAe,CAAC,QAAQ;YACtB,cAAc,GAAG,QAAQ,CAAC;YAC1B,OAAO,GAAG,EAAE;gBACV,IAAI,cAAc,KAAK,QAAQ;oBAAE,cAAc,GAAG,IAAI,CAAC;YACzD,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC
|
|
1
|
+
{"version":3,"file":"electronMenu.js","sourceRoot":"","sources":["../src/electronMenu.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,sGAAsG;AACtG,mGAAmG;AACnG,mGAAmG;AACnG,qGAAqG;AACrG,MAAM,UAAU,yBAAyB,CAAC,QAAqB;IAC7D,kGAAkG;IAClG,kFAAkF;IAClF,IAAI,cAAc,GAAkC,IAAI,CAAC;IACzD,OAAO;QACL,kBAAkB,CAAC,KAAK;YACtB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAC9B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACzF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YAC1B,2FAA2F;YAC3F,+FAA+F;YAC/F,sDAAsD;YACtD,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;gBAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7F,IAAI,CAAC;oBACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACvB,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,eAAe,CAAC,QAAQ;YACtB,cAAc,GAAG,QAAQ,CAAC;YAC1B,OAAO,GAAG,EAAE;gBACV,IAAI,cAAc,KAAK,QAAQ;oBAAE,cAAc,GAAG,IAAI,CAAC;YACzD,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ElectronMenuItemOptions, MenuItemTemplate } from '@flighthq/types/contract';
|
|
2
|
+
export declare function toElectronTemplate(items: readonly MenuItemTemplate[], onSelect?: (id: string) => void): ElectronMenuItemOptions[];
|
|
3
|
+
//# sourceMappingURL=electronMenuTemplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"electronMenuTemplate.d.ts","sourceRoot":"","sources":["../src/electronMenuTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAwB,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIhH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,gBAAgB,EAAE,EAClC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAC9B,uBAAuB,EAAE,CAkB3B"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// Recursively maps Flight's open menu descriptor onto Electron's closed role enum. Unknown vendor
|
|
2
|
+
// roles are intentionally omitted; the two differently-spelled built-ins map to Electron's spelling.
|
|
3
|
+
export function toElectronTemplate(items, onSelect) {
|
|
4
|
+
return items.map((item) => {
|
|
5
|
+
const options = {
|
|
6
|
+
accelerator: item.accelerator,
|
|
7
|
+
checked: item.checked,
|
|
8
|
+
enabled: item.enabled,
|
|
9
|
+
id: item.id,
|
|
10
|
+
label: item.label,
|
|
11
|
+
role: toElectronRole(item.role),
|
|
12
|
+
type: item.type,
|
|
13
|
+
};
|
|
14
|
+
if (item.submenu) {
|
|
15
|
+
options.submenu = toElectronTemplate(item.submenu, onSelect);
|
|
16
|
+
}
|
|
17
|
+
else if (onSelect && item.id !== undefined) {
|
|
18
|
+
options.click = () => onSelect(item.id);
|
|
19
|
+
}
|
|
20
|
+
return options;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
const electronRoles = new Set([
|
|
24
|
+
'about',
|
|
25
|
+
'appMenu',
|
|
26
|
+
'clearRecentDocuments',
|
|
27
|
+
'close',
|
|
28
|
+
'copy',
|
|
29
|
+
'cut',
|
|
30
|
+
'delete',
|
|
31
|
+
'editMenu',
|
|
32
|
+
'fileMenu',
|
|
33
|
+
'forceReload',
|
|
34
|
+
'front',
|
|
35
|
+
'help',
|
|
36
|
+
'hide',
|
|
37
|
+
'hideOthers',
|
|
38
|
+
'mergeAllWindows',
|
|
39
|
+
'minimize',
|
|
40
|
+
'moveTabToNewWindow',
|
|
41
|
+
'paste',
|
|
42
|
+
'pasteAndMatchStyle',
|
|
43
|
+
'quit',
|
|
44
|
+
'recentDocuments',
|
|
45
|
+
'redo',
|
|
46
|
+
'reload',
|
|
47
|
+
'resetZoom',
|
|
48
|
+
'selectAll',
|
|
49
|
+
'selectNextTab',
|
|
50
|
+
'selectPreviousTab',
|
|
51
|
+
'services',
|
|
52
|
+
'shareMenu',
|
|
53
|
+
'showAllTabs',
|
|
54
|
+
'startSpeaking',
|
|
55
|
+
'stopSpeaking',
|
|
56
|
+
'toggleDevTools',
|
|
57
|
+
'toggleSpellChecker',
|
|
58
|
+
'toggleTabBar',
|
|
59
|
+
'togglefullscreen',
|
|
60
|
+
'undo',
|
|
61
|
+
'unhide',
|
|
62
|
+
'viewMenu',
|
|
63
|
+
'window',
|
|
64
|
+
'windowMenu',
|
|
65
|
+
'zoom',
|
|
66
|
+
'zoomIn',
|
|
67
|
+
'zoomOut',
|
|
68
|
+
]);
|
|
69
|
+
function toElectronRole(role) {
|
|
70
|
+
if (role === 'toggleFullscreen')
|
|
71
|
+
return 'togglefullscreen';
|
|
72
|
+
if (role === 'helpMenu')
|
|
73
|
+
return 'help';
|
|
74
|
+
return role !== undefined && electronRoles.has(role) ? role : undefined;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=electronMenuTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"electronMenuTemplate.js","sourceRoot":"","sources":["../src/electronMenuTemplate.ts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,qGAAqG;AACrG,MAAM,UAAU,kBAAkB,CAChC,KAAkC,EAClC,QAA+B;IAE/B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,OAAO,GAA4B;YACvC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,QAAQ,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAuB;IACvE,OAAO;IACP,SAAS;IACT,sBAAsB;IACtB,OAAO;IACP,MAAM;IACN,KAAK;IACL,QAAQ;IACR,UAAU;IACV,UAAU;IACV,aAAa;IACb,OAAO;IACP,MAAM;IACN,MAAM;IACN,YAAY;IACZ,iBAAiB;IACjB,UAAU;IACV,oBAAoB;IACpB,OAAO;IACP,oBAAoB;IACpB,MAAM;IACN,iBAAiB;IACjB,MAAM;IACN,QAAQ;IACR,WAAW;IACX,WAAW;IACX,eAAe;IACf,mBAAmB;IACnB,UAAU;IACV,WAAW;IACX,aAAa;IACb,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;IACd,kBAAkB;IAClB,MAAM;IACN,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,SAAS;CACV,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,IAA8B;IACpD,IAAI,IAAI,KAAK,kBAAkB;QAAE,OAAO,kBAAkB,CAAC;IAC3D,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,IAAI,KAAK,SAAS,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAA6B,CAAC,CAAC,CAAC,SAAS,CAAC;AACpG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electronRegister.d.ts","sourceRoot":"","sources":["../src/electronRegister.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"electronRegister.d.ts","sourceRoot":"","sources":["../src/electronRegister.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAgCpF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,GAAE,QAAQ,CAAC,sBAAsB,CAAM,GAAG,IAAI,CAiBpH"}
|
package/dist/electronRegister.js
CHANGED
|
@@ -36,7 +36,8 @@ import { createElectronWindowBackend } from './electronWindow';
|
|
|
36
36
|
//
|
|
37
37
|
// import * as electron from 'electron';
|
|
38
38
|
// import * as fs from 'node:fs';
|
|
39
|
-
//
|
|
39
|
+
// const electronApi: ElectronApi = { ...electron, fs, Tray: electron.Tray as ElectronApi['Tray'] };
|
|
40
|
+
// registerElectronBackends(electronApi);
|
|
40
41
|
//
|
|
41
42
|
// After this, the platform/app/window seams resolve to their Electron implementations instead of the
|
|
42
43
|
// web defaults. Each set*Backend(null) (per package) reverts to the web default; there is no bulk
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electronRegister.js","sourceRoot":"","sources":["../src/electronRegister.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D,qGAAqG;AACrG,oGAAoG;AACpG,oBAAoB;AACpB,EAAE;AACF,0CAA0C;AAC1C,mCAAmC;AACnC,
|
|
1
|
+
{"version":3,"file":"electronRegister.js","sourceRoot":"","sources":["../src/electronRegister.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electronTray.d.ts","sourceRoot":"","sources":["../src/electronTray.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"electronTray.d.ts","sourceRoot":"","sources":["../src/electronTray.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAGX,WAAW,EAGZ,MAAM,0BAA0B,CAAC;AASlC,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,CA4H5E"}
|
package/dist/electronTray.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { toElectronTemplate } from './electronMenuTemplate';
|
|
1
2
|
// Maps Flight's TrayBackend onto Electron's Tray module. Flight identifies trays by an opaque numeric
|
|
2
3
|
// id; the seam keeps an id→record map (the ElectronTray plus the title/tooltip/menu it cannot read
|
|
3
4
|
// back) and a single event listener. Every tray, on creation, attaches click handlers that forward a
|
|
@@ -143,22 +144,4 @@ function toBounds(tray) {
|
|
|
143
144
|
return null;
|
|
144
145
|
}
|
|
145
146
|
}
|
|
146
|
-
// Recursively maps Flight menu templates to Electron menu options for a tray context menu. Tray menus
|
|
147
|
-
// carry no select callback in this seam — selection is reported through the menu backend's listener.
|
|
148
|
-
function toElectronTemplate(items) {
|
|
149
|
-
return items.map((item) => {
|
|
150
|
-
const options = {
|
|
151
|
-
id: item.id,
|
|
152
|
-
label: item.label,
|
|
153
|
-
type: item.type,
|
|
154
|
-
role: item.role,
|
|
155
|
-
accelerator: item.accelerator,
|
|
156
|
-
enabled: item.enabled,
|
|
157
|
-
checked: item.checked,
|
|
158
|
-
};
|
|
159
|
-
if (item.submenu)
|
|
160
|
-
options.submenu = toElectronTemplate(item.submenu);
|
|
161
|
-
return options;
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
147
|
//# sourceMappingURL=electronTray.js.map
|
package/dist/electronTray.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electronTray.js","sourceRoot":"","sources":["../src/electronTray.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"electronTray.js","sourceRoot":"","sources":["../src/electronTray.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,sGAAsG;AACtG,mGAAmG;AACnG,qGAAqG;AACrG,qGAAqG;AACrG,4EAA4E;AAC5E,MAAM,UAAU,yBAAyB,CAAC,QAAqB;IAC7D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,+EAA+E;IAC/E,IAAI,aAAa,GAAsD,IAAI,CAAC;IAC5E,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,IAAmB,EAAQ,EAAE;QACrD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,aAAa,EAAE,CAAC;YACd,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YAC7C,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;YACd,EAAE;YACF,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK;YACf,IAAI;SACL,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAO;QACL,MAAM,CAAC,OAAO;YACZ,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,MAAM,GAAe,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACxE,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAClC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACjC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YACnC,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC7B,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC/B,CAAC;YACD,6EAA6E;YAC7E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;YACvD,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACtB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,EAAE;YACR,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,cAAc,CAAC,EAAE,EAAE,OAAO;YACxB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC;gBACjC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC3C,CAAC,CAAC;QACL,CAAC;QACD,aAAa,CAAC,EAAE;YACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,CAAC;QACD,SAAS,CAAC,EAAE;YACV,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,CAAC;QACD,eAAe;YACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC9G,CAAC;QACD,QAAQ,CAAC,EAAE;YACT,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,CAAC;QACD,UAAU,CAAC,EAAE;YACX,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;QACtC,CAAC;QACD,WAAW,CAAC,EAAE;YACZ,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,CAAC;QACD,OAAO;YACL,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,gBAAgB,CAAC,EAAE,EAAE,QAAQ;YAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAClH,CAAC;QACD,cAAc,CAAC,EAAE,EAAE,KAAK;YACtB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,IAAI;YACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,0BAA0B,CAAC,EAAE,EAAE,MAAM;YACnC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;QACD,cAAc,CAAC,EAAE,EAAE,IAAI;YACrB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,WAAW;YACT,iGAAiG;YACjG,iGAAiG;QACnG,CAAC;QACD,QAAQ,CAAC,EAAE,EAAE,KAAK;YAChB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,UAAU,CAAC,EAAE,EAAE,OAAO;YACpB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC;QACD,SAAS,CAAC,QAAQ;YAChB,aAAa,GAAG,QAAQ,CAAC;YACzB,OAAO,GAAG,EAAE;gBACV,IAAI,aAAa,KAAK,QAAQ;oBAAE,aAAa,GAAG,IAAI,CAAC;YACvD,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAA4B;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/electronUpdater.js
CHANGED
|
@@ -9,7 +9,7 @@ export function createElectronUpdaterBackend(electron) {
|
|
|
9
9
|
let config = { allowPrerelease: false, autoDownload: true, autoInstallOnAppQuit: true };
|
|
10
10
|
return {
|
|
11
11
|
setFeedUrl(url) {
|
|
12
|
-
autoUpdater.
|
|
12
|
+
autoUpdater.setFeedURL({ url });
|
|
13
13
|
},
|
|
14
14
|
checkForUpdates() {
|
|
15
15
|
autoUpdater.checkForUpdates();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/host-electron",
|
|
3
|
-
"version": "0.4.0-next.
|
|
3
|
+
"version": "0.4.0-next.1932.1ef883a",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,24 +38,24 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/app": "0.4.0-next.
|
|
42
|
-
"@flighthq/application": "0.4.0-next.
|
|
43
|
-
"@flighthq/clipboard": "0.4.0-next.
|
|
44
|
-
"@flighthq/dialog": "0.4.0-next.
|
|
45
|
-
"@flighthq/ipc": "0.4.0-next.
|
|
46
|
-
"@flighthq/menu": "0.4.0-next.
|
|
47
|
-
"@flighthq/notification": "0.4.0-next.
|
|
48
|
-
"@flighthq/platform": "0.4.0-next.
|
|
49
|
-
"@flighthq/power": "0.4.0-next.
|
|
50
|
-
"@flighthq/protocol": "0.4.0-next.
|
|
51
|
-
"@flighthq/screen": "0.4.0-next.
|
|
52
|
-
"@flighthq/shell": "0.4.0-next.
|
|
53
|
-
"@flighthq/shortcut": "0.4.0-next.
|
|
54
|
-
"@flighthq/signals": "0.4.0-next.
|
|
55
|
-
"@flighthq/storage": "0.4.0-next.
|
|
56
|
-
"@flighthq/tray": "0.4.0-next.
|
|
57
|
-
"@flighthq/types": "0.4.0-next.
|
|
58
|
-
"@flighthq/updater": "0.4.0-next.
|
|
41
|
+
"@flighthq/app": "0.4.0-next.1932.1ef883a",
|
|
42
|
+
"@flighthq/application": "0.4.0-next.1932.1ef883a",
|
|
43
|
+
"@flighthq/clipboard": "0.4.0-next.1932.1ef883a",
|
|
44
|
+
"@flighthq/dialog": "0.4.0-next.1932.1ef883a",
|
|
45
|
+
"@flighthq/ipc": "0.4.0-next.1932.1ef883a",
|
|
46
|
+
"@flighthq/menu": "0.4.0-next.1932.1ef883a",
|
|
47
|
+
"@flighthq/notification": "0.4.0-next.1932.1ef883a",
|
|
48
|
+
"@flighthq/platform": "0.4.0-next.1932.1ef883a",
|
|
49
|
+
"@flighthq/power": "0.4.0-next.1932.1ef883a",
|
|
50
|
+
"@flighthq/protocol": "0.4.0-next.1932.1ef883a",
|
|
51
|
+
"@flighthq/screen": "0.4.0-next.1932.1ef883a",
|
|
52
|
+
"@flighthq/shell": "0.4.0-next.1932.1ef883a",
|
|
53
|
+
"@flighthq/shortcut": "0.4.0-next.1932.1ef883a",
|
|
54
|
+
"@flighthq/signals": "0.4.0-next.1932.1ef883a",
|
|
55
|
+
"@flighthq/storage": "0.4.0-next.1932.1ef883a",
|
|
56
|
+
"@flighthq/tray": "0.4.0-next.1932.1ef883a",
|
|
57
|
+
"@flighthq/types": "0.4.0-next.1932.1ef883a",
|
|
58
|
+
"@flighthq/updater": "0.4.0-next.1932.1ef883a"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"typescript": "^5.3.0"
|
|
@@ -5,7 +5,7 @@ import { createElectronClipboardBackend } from './electronClipboard';
|
|
|
5
5
|
function fakeElectron(): ElectronApi {
|
|
6
6
|
const store = { text: '', html: '', rtf: '', imageDataUrl: '', bookmarkTitle: '', bookmarkUrl: '' };
|
|
7
7
|
const image = (dataUrl: string): ElectronNativeImage => ({
|
|
8
|
-
|
|
8
|
+
toDataURL: () => dataUrl,
|
|
9
9
|
isEmpty: () => dataUrl === '',
|
|
10
10
|
});
|
|
11
11
|
return {
|
|
@@ -14,8 +14,8 @@ function fakeElectron(): ElectronApi {
|
|
|
14
14
|
writeText: (t: string) => {
|
|
15
15
|
store.text = t;
|
|
16
16
|
},
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
readHTML: () => store.html,
|
|
18
|
+
writeHTML: (h: string) => {
|
|
19
19
|
store.html = h;
|
|
20
20
|
},
|
|
21
21
|
readRTF: () => store.rtf,
|
|
@@ -29,7 +29,7 @@ function fakeElectron(): ElectronApi {
|
|
|
29
29
|
},
|
|
30
30
|
readImage: () => image(store.imageDataUrl),
|
|
31
31
|
writeImage: (img: ElectronNativeImage) => {
|
|
32
|
-
store.imageDataUrl = img.
|
|
32
|
+
store.imageDataUrl = img.toDataURL();
|
|
33
33
|
},
|
|
34
34
|
clear: () => {
|
|
35
35
|
store.text = '';
|
|
@@ -41,7 +41,7 @@ function fakeElectron(): ElectronApi {
|
|
|
41
41
|
},
|
|
42
42
|
},
|
|
43
43
|
nativeImage: {
|
|
44
|
-
|
|
44
|
+
createFromDataURL: (dataUrl: string) => image(dataUrl),
|
|
45
45
|
createFromPath: () => image(''),
|
|
46
46
|
},
|
|
47
47
|
} as unknown as ElectronApi;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { toElectronTemplate } from './electronMenuTemplate';
|
|
2
|
+
|
|
3
|
+
describe('toElectronTemplate', () => {
|
|
4
|
+
it('maps Flight roles and omits unsupported custom roles', () => {
|
|
5
|
+
const template = toElectronTemplate([
|
|
6
|
+
{ label: 'Fullscreen', role: 'toggleFullscreen' },
|
|
7
|
+
{ label: 'Help', role: 'helpMenu' },
|
|
8
|
+
{ label: 'Custom', role: 'acme.custom' },
|
|
9
|
+
]);
|
|
10
|
+
|
|
11
|
+
expect(template.map((item) => item.role)).toEqual(['togglefullscreen', 'help', undefined]);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('recursively wires selectable ids', () => {
|
|
15
|
+
const selected: string[] = [];
|
|
16
|
+
const template = toElectronTemplate([{ label: 'File', submenu: [{ id: 'open', label: 'Open' }] }], (id) =>
|
|
17
|
+
selected.push(id),
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
template[0].submenu?.[0].click?.();
|
|
21
|
+
expect(selected).toEqual(['open']);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -11,7 +11,7 @@ function fakeElectron(): {
|
|
|
11
11
|
const calls = { feedUrl: undefined as string | undefined, checks: 0, quit: 0 };
|
|
12
12
|
const electron = {
|
|
13
13
|
autoUpdater: {
|
|
14
|
-
|
|
14
|
+
setFeedURL: (options: { url: string }) => {
|
|
15
15
|
calls.feedUrl = options.url;
|
|
16
16
|
},
|
|
17
17
|
checkForUpdates: () => {
|