@flighthq/menu 0.5.1-next.815.cc08b93 → 0.5.1-next.903.f434bc2
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/README.md +2 -2
- package/dist/contract.d.ts +1 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +1 -0
- package/dist/contract.js.map +1 -1
- package/dist/menu.d.ts +3 -1
- package/dist/menu.d.ts.map +1 -1
- package/dist/menu.js +22 -7
- package/dist/menu.js.map +1 -1
- package/package.json +4 -4
- package/src/menu.test.ts +28 -18
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/menu`. The `@flighth
|
|
|
13
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
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/menu@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/menu@0.5.1-next.903.f434bc2](https://github.com/flighthq/flight/tree/f434bc233778d75aeea61995df3a8cfaec459a85/packages/menu)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/f434bc233778d75aeea61995df3a8cfaec459a85/LICENSE.md)
|
package/dist/contract.d.ts
CHANGED
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/contract.js
CHANGED
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/menu.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HasMenuApplication, HasMenuHighlight, HasMenuPopup, HasMenuSelect, MenuHighlight, MenuItemTemplate, MenuSelect, MenuSignals, NonEntityCreateResult } from '@flighthq/types/contract';
|
|
1
|
+
import type { EntityConstruction, HasMenuApplication, HasMenuHighlight, HasMenuPopup, HasMenuSelect, MenuHighlight, MenuItemTemplate, MenuSelect, MenuSignals, NonEntityCreateResult } from '@flighthq/types/contract';
|
|
2
2
|
export declare function attachMenuHighlight(host: HasMenuHighlight, highlight: MenuHighlight): void;
|
|
3
3
|
export declare function attachMenuSelect(host: HasMenuSelect, select: MenuSelect): void;
|
|
4
4
|
export declare function cloneMenuTemplate(template: Readonly<MenuItemTemplate>): MenuItemTemplate;
|
|
@@ -12,6 +12,8 @@ export declare function disposeMenuHighlight(highlight: MenuHighlight): void;
|
|
|
12
12
|
export declare function disposeMenuSelect(select: MenuSelect): void;
|
|
13
13
|
export declare function enableMenuSignals(): MenuSignals;
|
|
14
14
|
export declare function getMenuSignals(): Readonly<MenuSignals> | null;
|
|
15
|
+
export declare function initializeMenuHighlight(out: EntityConstruction<MenuHighlight>): void;
|
|
16
|
+
export declare function initializeMenuSelect(out: EntityConstruction<MenuSelect>): void;
|
|
15
17
|
export declare function setApplicationMenu(host: HasMenuApplication, items: readonly MenuItemTemplate[]): boolean;
|
|
16
18
|
export declare function showContextMenu(host: HasMenuPopup, items: readonly MenuItemTemplate[], x: number, y: number): Promise<string | null>;
|
|
17
19
|
export declare function validateMenuItemTemplate(template: Readonly<MenuItemTemplate>): string | null;
|
package/dist/menu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EAEb,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI,CAI1F;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAI9E;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAMxF;
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EAEb,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI,CAI1F;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAI9E;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAMxF;AAED,wBAAgB,mBAAmB,IAAI,aAAa,CAInD;AAKD,wBAAgB,sBAAsB,CACpC,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAC7C,qBAAqB,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAUvD;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CAI7C;AAYD,wBAAgB,sBAAsB,CAAC,GAAG,KAAK,EAAE,SAAS,kBAAkB,EAAE,GAAG,IAAI,CAiBpF;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAGlE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAGzD;AAID,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI,CAGnE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAG1D;AAMD,wBAAgB,iBAAiB,IAAI,WAAW,CAQ/C;AAED,wBAAgB,cAAc,IAAI,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAE7D;AAID,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,CAAC,aAAa,CAAC,GAAG,IAAI,CAEpF;AAGD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAAG,IAAI,CAE9E;AAKD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,gBAAgB,EAAE,GAAG,OAAO,CAExG;AAID,wBAAgB,eAAe,CAC7B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,SAAS,gBAAgB,EAAE,EAClC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMxB;AAKD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,GAAG,IAAI,CAE5F"}
|
package/dist/menu.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { clearSignal, createSignal, emitSignal } from '@flighthq/signals/contract';
|
|
3
3
|
// Starts delivering highlight notifications from the host's provider into `highlight`. Re-attaching
|
|
4
4
|
// detaches first, so one entity never holds two live subscriptions.
|
|
@@ -27,10 +27,10 @@ export function cloneMenuTemplate(template) {
|
|
|
27
27
|
}
|
|
28
28
|
return clone;
|
|
29
29
|
}
|
|
30
|
-
// Allocates a MenuHighlight event entity with an inert signal; call attachMenuHighlight to start
|
|
31
|
-
// delivery. Entity-composed, like every identity-bearing SDK object.
|
|
32
30
|
export function createMenuHighlight() {
|
|
33
|
-
|
|
31
|
+
const out = allocateEntity();
|
|
32
|
+
initializeMenuHighlight(out);
|
|
33
|
+
return finishEntity(out);
|
|
34
34
|
}
|
|
35
35
|
// Builds a menu item template, filling defaults (type 'normal', enabled true). Recursively normalizes
|
|
36
36
|
// any submenu children through the same default-fill, so every item in the tree has canonical defaults
|
|
@@ -46,9 +46,10 @@ export function createMenuItemTemplate(template) {
|
|
|
46
46
|
}
|
|
47
47
|
return item;
|
|
48
48
|
}
|
|
49
|
-
// Allocates a MenuSelect event entity with an inert signal; call attachMenuSelect to start delivery.
|
|
50
49
|
export function createMenuSelect() {
|
|
51
|
-
|
|
50
|
+
const out = allocateEntity();
|
|
51
|
+
initializeMenuSelect(out);
|
|
52
|
+
return finishEntity(out);
|
|
52
53
|
}
|
|
53
54
|
// Stops delivery without discarding the entity: runs this entity's own unsubscribe, if it has one.
|
|
54
55
|
// Safe to call when never attached. Does NOT touch the provider — backend teardown is `destroy` on the
|
|
@@ -105,12 +106,26 @@ export function disposeMenuSelect(select) {
|
|
|
105
106
|
// The module-level identity/enable state here is package state, not ambient capability resolution —
|
|
106
107
|
// nothing about which provider serves a call is decided by it.
|
|
107
108
|
export function enableMenuSignals() {
|
|
108
|
-
_menuSignals ??=
|
|
109
|
+
_menuSignals ??= (() => {
|
|
110
|
+
const out = allocateEntity();
|
|
111
|
+
out.onContextMenuClose = createSignal();
|
|
112
|
+
out.onContextMenuOpen = createSignal();
|
|
113
|
+
return finishEntity(out);
|
|
114
|
+
})();
|
|
109
115
|
return _menuSignals;
|
|
110
116
|
}
|
|
111
117
|
export function getMenuSignals() {
|
|
112
118
|
return _menuSignals;
|
|
113
119
|
}
|
|
120
|
+
// Allocates a MenuHighlight event entity with an inert signal; call attachMenuHighlight to start
|
|
121
|
+
// delivery. Entity-composed, like every identity-bearing SDK object.
|
|
122
|
+
export function initializeMenuHighlight(out) {
|
|
123
|
+
out.onMenuItemHighlight = createSignal();
|
|
124
|
+
}
|
|
125
|
+
// Allocates a MenuSelect event entity with an inert signal; call attachMenuSelect to start delivery.
|
|
126
|
+
export function initializeMenuSelect(out) {
|
|
127
|
+
out.onMenuItemSelect = createSignal();
|
|
128
|
+
}
|
|
114
129
|
// Installs the application menu bar through the host's provider. Returns false when the install did
|
|
115
130
|
// not take effect. A host without a native menu bar omits the slot entirely, so this cannot be reached
|
|
116
131
|
// with a stub that always answers false.
|
package/dist/menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/menu",
|
|
3
|
-
"version": "0.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.903.f434bc2",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/entity": "0.5.1-next.
|
|
42
|
-
"@flighthq/signals": "0.5.1-next.
|
|
43
|
-
"@flighthq/types": "0.5.1-next.
|
|
41
|
+
"@flighthq/entity": "0.5.1-next.903.f434bc2",
|
|
42
|
+
"@flighthq/signals": "0.5.1-next.903.f434bc2",
|
|
43
|
+
"@flighthq/types": "0.5.1-next.903.f434bc2"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"typescript": "^5.3.0"
|
package/src/menu.test.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { connectSignal } from '@flighthq/signals/contract';
|
|
3
3
|
import type {
|
|
4
4
|
EntityWithoutRuntime,
|
|
@@ -12,6 +12,7 @@ import type {
|
|
|
12
12
|
MenuPopupBackend,
|
|
13
13
|
MenuSelectBackend,
|
|
14
14
|
} from '@flighthq/types/contract';
|
|
15
|
+
import { EntityRuntimeKey } from '@flighthq/types/contract';
|
|
15
16
|
|
|
16
17
|
import {
|
|
17
18
|
attachMenuHighlight,
|
|
@@ -38,12 +39,14 @@ function popupHost(result: string | null, calls: string[] = []): HasMenuPopup &
|
|
|
38
39
|
return {
|
|
39
40
|
calls,
|
|
40
41
|
menu: {
|
|
41
|
-
popup:
|
|
42
|
-
|
|
42
|
+
popup: (() => {
|
|
43
|
+
const out = allocateEntity<any>();
|
|
44
|
+
out.popup = (_items: readonly MenuItemTemplate[], x: number, y: number): Promise<string | null> => {
|
|
43
45
|
calls.push(`popup@${x},${y}`);
|
|
44
46
|
return Promise.resolve(result);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
+
};
|
|
48
|
+
return finishEntity(out);
|
|
49
|
+
})(),
|
|
47
50
|
},
|
|
48
51
|
};
|
|
49
52
|
}
|
|
@@ -51,12 +54,14 @@ function popupHost(result: string | null, calls: string[] = []): HasMenuPopup &
|
|
|
51
54
|
function applicationHost(accepted: boolean, seen: MenuItemTemplate[][] = []): HasMenuApplication {
|
|
52
55
|
return {
|
|
53
56
|
menu: {
|
|
54
|
-
application:
|
|
55
|
-
|
|
57
|
+
application: (() => {
|
|
58
|
+
const out = allocateEntity<any>();
|
|
59
|
+
out.setApplicationMenu = (items: readonly MenuItemTemplate[]): boolean => {
|
|
56
60
|
seen.push([...items]);
|
|
57
61
|
return accepted;
|
|
58
|
-
}
|
|
59
|
-
|
|
62
|
+
};
|
|
63
|
+
return finishEntity(out);
|
|
64
|
+
})(),
|
|
60
65
|
},
|
|
61
66
|
};
|
|
62
67
|
}
|
|
@@ -68,14 +73,16 @@ function selectHost(): HasMenuSelect & { emit(id: string): void; subscriberCount
|
|
|
68
73
|
for (const listener of listeners) listener(id);
|
|
69
74
|
},
|
|
70
75
|
menu: {
|
|
71
|
-
select:
|
|
72
|
-
|
|
76
|
+
select: (() => {
|
|
77
|
+
const out = allocateEntity<any>();
|
|
78
|
+
out.subscribe = (listener: (id: string) => void): (() => void) => {
|
|
73
79
|
listeners.add(listener);
|
|
74
80
|
return () => {
|
|
75
81
|
listeners.delete(listener);
|
|
76
82
|
};
|
|
77
|
-
}
|
|
78
|
-
|
|
83
|
+
};
|
|
84
|
+
return finishEntity(out);
|
|
85
|
+
})(),
|
|
79
86
|
},
|
|
80
87
|
subscriberCount(): number {
|
|
81
88
|
return listeners.size;
|
|
@@ -90,14 +97,16 @@ function highlightHost(): HasMenuHighlight & { emit(id: string): void } {
|
|
|
90
97
|
for (const listener of listeners) listener(id);
|
|
91
98
|
},
|
|
92
99
|
menu: {
|
|
93
|
-
highlight:
|
|
94
|
-
|
|
100
|
+
highlight: (() => {
|
|
101
|
+
const out = allocateEntity<any>();
|
|
102
|
+
out.subscribe = (listener: (id: string) => void): (() => void) => {
|
|
95
103
|
listeners.add(listener);
|
|
96
104
|
return () => {
|
|
97
105
|
listeners.delete(listener);
|
|
98
106
|
};
|
|
99
|
-
}
|
|
100
|
-
|
|
107
|
+
};
|
|
108
|
+
return finishEntity(out);
|
|
109
|
+
})(),
|
|
101
110
|
},
|
|
102
111
|
};
|
|
103
112
|
}
|
|
@@ -191,7 +200,8 @@ describe('createMenuSelect', () => {
|
|
|
191
200
|
|
|
192
201
|
describe('destroyMenuApplication', () => {
|
|
193
202
|
function applicationHostWith(provider: EntityWithoutRuntime<MenuApplicationBackend>): HasMenuApplication {
|
|
194
|
-
|
|
203
|
+
(provider as Record<symbol, unknown>)[EntityRuntimeKey] = undefined;
|
|
204
|
+
return { menu: { application: provider as MenuApplicationBackend } };
|
|
195
205
|
}
|
|
196
206
|
|
|
197
207
|
it('destroys each distinct provider exactly once, even when hosts alias one', () => {
|