@flighthq/statusbar 0.5.1-next.1069.554a2ac → 0.5.1-next.1201.9b49dee
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/statusbar.d.ts +12 -12
- package/dist/statusbar.d.ts.map +1 -1
- package/dist/statusbar.js +34 -34
- package/dist/statusbar.js.map +1 -1
- package/package.json +4 -4
- package/src/statusbar.test.ts +54 -24
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/statusbar`. The `@fl
|
|
|
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/statusbar@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/statusbar@0.5.1-next.1201.9b49dee](https://github.com/flighthq/flight/tree/9b49dee3f22f6b2838c3d237edcc77bca65734f2/packages/statusbar)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/9b49dee3f22f6b2838c3d237edcc77bca65734f2/LICENSE.md)
|
package/dist/statusbar.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import type { EntityConstruction,
|
|
2
|
-
export declare function attachStatusBar(
|
|
3
|
-
export declare function clearStatusBarStyleStack(
|
|
1
|
+
import type { EntityConstruction, HostStatusBarChangeProvider, HostStatusBarColorProvider, HostStatusBarInfoProvider, HostStatusBarOverlaysProvider, HostStatusBarStyleProvider, HostStatusBarVisibilityProvider, StatusBar, StatusBarAnimation, StatusBarInfo, StatusBarStyle, StatusBarStyleEntry, StatusBarStyleEntryHandle } from '@flighthq/types/contract';
|
|
2
|
+
export declare function attachStatusBar(hostStatusBarChange: Readonly<HostStatusBarChangeProvider>, hostStatusBarInfo: Readonly<HostStatusBarInfoProvider>, bar: StatusBar): void;
|
|
3
|
+
export declare function clearStatusBarStyleStack(hostStatusBarInfo: Readonly<HostStatusBarInfoProvider>): void;
|
|
4
4
|
export declare function createStatusBar(): StatusBar;
|
|
5
5
|
export declare function createStatusBarInfo(): StatusBarInfo;
|
|
6
6
|
export declare function detachStatusBar(bar: StatusBar): void;
|
|
7
7
|
export declare function disposeStatusBar(bar: StatusBar): void;
|
|
8
|
-
export declare function getStatusBarHeight(
|
|
9
|
-
export declare function getStatusBarInfo(
|
|
10
|
-
export declare function hasStatusBarStyleEntry(
|
|
8
|
+
export declare function getStatusBarHeight(hostStatusBarInfo: Readonly<HostStatusBarInfoProvider>): number;
|
|
9
|
+
export declare function getStatusBarInfo(hostStatusBarInfo: Readonly<HostStatusBarInfoProvider>, out: StatusBarInfo): StatusBarInfo;
|
|
10
|
+
export declare function hasStatusBarStyleEntry(hostStatusBarInfo: Readonly<HostStatusBarInfoProvider>, handle: StatusBarStyleEntryHandle): boolean;
|
|
11
11
|
export declare function initializeStatusBar(out: EntityConstruction<StatusBar>): void;
|
|
12
12
|
export declare function initializeStatusBarInfo(out: EntityConstruction<StatusBarInfo>): void;
|
|
13
13
|
export declare function packedRgbaToHexColor(color: number): string;
|
|
14
|
-
export declare function popStatusBarStyleEntry(
|
|
15
|
-
export declare function pushStatusBarStyleEntry(
|
|
16
|
-
export declare function setStatusBarColor(
|
|
17
|
-
export declare function setStatusBarOverlaysContent(
|
|
18
|
-
export declare function setStatusBarStyle(
|
|
19
|
-
export declare function setStatusBarVisible(
|
|
14
|
+
export declare function popStatusBarStyleEntry(hostStatusBarInfo: Readonly<HostStatusBarInfoProvider>, handle: StatusBarStyleEntryHandle): void;
|
|
15
|
+
export declare function pushStatusBarStyleEntry(hostStatusBarColor: Readonly<HostStatusBarColorProvider>, hostStatusBarInfo: Readonly<HostStatusBarInfoProvider>, hostStatusBarOverlays: Readonly<HostStatusBarOverlaysProvider>, hostStatusBarStyle: Readonly<HostStatusBarStyleProvider>, hostStatusBarVisibility: Readonly<HostStatusBarVisibilityProvider>, entry: Readonly<StatusBarStyleEntry>): StatusBarStyleEntryHandle;
|
|
16
|
+
export declare function setStatusBarColor(hostStatusBarColor: Readonly<HostStatusBarColorProvider>, color: number, animated?: boolean): void;
|
|
17
|
+
export declare function setStatusBarOverlaysContent(hostStatusBarOverlays: Readonly<HostStatusBarOverlaysProvider>, overlay: boolean): void;
|
|
18
|
+
export declare function setStatusBarStyle(hostStatusBarStyle: Readonly<HostStatusBarStyleProvider>, style: StatusBarStyle): void;
|
|
19
|
+
export declare function setStatusBarVisible(hostStatusBarVisibility: Readonly<HostStatusBarVisibilityProvider>, visible: boolean, animation?: StatusBarAnimation): void;
|
|
20
20
|
//# sourceMappingURL=statusbar.d.ts.map
|
package/dist/statusbar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusbar.d.ts","sourceRoot":"","sources":["../src/statusbar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"statusbar.d.ts","sourceRoot":"","sources":["../src/statusbar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,EAC7B,0BAA0B,EAC1B,+BAA+B,EAC/B,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAElC,wBAAgB,eAAe,CAC7B,mBAAmB,EAAE,QAAQ,CAAC,2BAA2B,CAAC,EAC1D,iBAAiB,EAAE,QAAQ,CAAC,yBAAyB,CAAC,EACtD,GAAG,EAAE,SAAS,GACb,IAAI,CAQN;AAED,wBAAgB,wBAAwB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAKrG;AAED,wBAAgB,eAAe,IAAI,SAAS,CAI3C;AAED,wBAAgB,mBAAmB,IAAI,aAAa,CAInD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAKpD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAErD;AAED,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAEjG;AAED,wBAAgB,gBAAgB,CAC9B,iBAAiB,EAAE,QAAQ,CAAC,yBAAyB,CAAC,EACtD,GAAG,EAAE,aAAa,GACjB,aAAa,CAEf;AAED,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,QAAQ,CAAC,yBAAyB,CAAC,EACtD,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAGT;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI,CAE5E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,CAAC,aAAa,CAAC,GAAG,IAAI,CAMpF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,QAAQ,CAAC,yBAAyB,CAAC,EACtD,MAAM,EAAE,yBAAyB,GAChC,IAAI,CAQN;AAED,wBAAgB,uBAAuB,CACrC,kBAAkB,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EACxD,iBAAiB,EAAE,QAAQ,CAAC,yBAAyB,CAAC,EACtD,qBAAqB,EAAE,QAAQ,CAAC,6BAA6B,CAAC,EAC9D,kBAAkB,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EACxD,uBAAuB,EAAE,QAAQ,CAAC,+BAA+B,CAAC,EAClE,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GACnC,yBAAyB,CAoB3B;AAED,wBAAgB,iBAAiB,CAC/B,kBAAkB,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EACxD,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,OAAO,GACjB,IAAI,CAEN;AAED,wBAAgB,2BAA2B,CACzC,qBAAqB,EAAE,QAAQ,CAAC,6BAA6B,CAAC,EAC9D,OAAO,EAAE,OAAO,GACf,IAAI,CAEN;AAED,wBAAgB,iBAAiB,CAC/B,kBAAkB,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EACxD,KAAK,EAAE,cAAc,GACpB,IAAI,CAEN;AAED,wBAAgB,mBAAmB,CACjC,uBAAuB,EAAE,QAAQ,CAAC,+BAA+B,CAAC,EAClE,OAAO,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,kBAAkB,GAC7B,IAAI,CAEN"}
|
package/dist/statusbar.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { allocateEntity, finishEntity } from '@flighthq/entity/contract';
|
|
2
2
|
import { createSignal, emitSignal } from '@flighthq/signals/contract';
|
|
3
|
-
export function attachStatusBar(
|
|
3
|
+
export function attachStatusBar(hostStatusBarChange, hostStatusBarInfo, bar) {
|
|
4
4
|
detachStatusBar(bar);
|
|
5
|
-
const changeProvider =
|
|
6
|
-
const infoProvider =
|
|
5
|
+
const changeProvider = hostStatusBarChange;
|
|
6
|
+
const infoProvider = hostStatusBarInfo;
|
|
7
7
|
const unsubscribe = changeProvider.subscribe(() => {
|
|
8
8
|
emitSignal(bar.onChange, infoProvider.getInfo(createStatusBarInfo()));
|
|
9
9
|
});
|
|
10
10
|
_subscriptions.set(bar, unsubscribe);
|
|
11
11
|
}
|
|
12
|
-
export function clearStatusBarStyleStack(
|
|
13
|
-
const state = _styleStacks.get(
|
|
12
|
+
export function clearStatusBarStyleStack(hostStatusBarInfo) {
|
|
13
|
+
const state = _styleStacks.get(hostStatusBarInfo);
|
|
14
14
|
if (state === undefined || state.entries.length === 0)
|
|
15
15
|
return;
|
|
16
16
|
state.entries.length = 0;
|
|
17
|
-
applyTopStyleEntry(
|
|
17
|
+
applyTopStyleEntry(hostStatusBarInfo, state);
|
|
18
18
|
}
|
|
19
19
|
export function createStatusBar() {
|
|
20
20
|
const out = allocateEntity();
|
|
@@ -36,16 +36,16 @@ export function detachStatusBar(bar) {
|
|
|
36
36
|
export function disposeStatusBar(bar) {
|
|
37
37
|
detachStatusBar(bar);
|
|
38
38
|
}
|
|
39
|
-
export function getStatusBarHeight(
|
|
40
|
-
return
|
|
39
|
+
export function getStatusBarHeight(hostStatusBarInfo) {
|
|
40
|
+
return hostStatusBarInfo.getInfo(_scratchInfo).height;
|
|
41
41
|
}
|
|
42
|
-
export function getStatusBarInfo(
|
|
43
|
-
return
|
|
42
|
+
export function getStatusBarInfo(hostStatusBarInfo, out) {
|
|
43
|
+
return hostStatusBarInfo.getInfo(out);
|
|
44
44
|
}
|
|
45
|
-
export function hasStatusBarStyleEntry(
|
|
45
|
+
export function hasStatusBarStyleEntry(hostStatusBarInfo, handle) {
|
|
46
46
|
if (handle === INVALID_HANDLE)
|
|
47
47
|
return false;
|
|
48
|
-
return _styleStacks.get(
|
|
48
|
+
return _styleStacks.get(hostStatusBarInfo)?.entries.some((entry) => entry.handle === handle) ?? false;
|
|
49
49
|
}
|
|
50
50
|
export function initializeStatusBar(out) {
|
|
51
51
|
out.onChange = createSignal();
|
|
@@ -61,57 +61,57 @@ export function packedRgbaToHexColor(color) {
|
|
|
61
61
|
const rgb = (color >>> 8) & 0xffffff;
|
|
62
62
|
return '#' + rgb.toString(16).padStart(6, '0');
|
|
63
63
|
}
|
|
64
|
-
export function popStatusBarStyleEntry(
|
|
64
|
+
export function popStatusBarStyleEntry(hostStatusBarInfo, handle) {
|
|
65
65
|
if (handle === INVALID_HANDLE)
|
|
66
66
|
return;
|
|
67
|
-
const state = _styleStacks.get(
|
|
67
|
+
const state = _styleStacks.get(hostStatusBarInfo);
|
|
68
68
|
if (state === undefined)
|
|
69
69
|
return;
|
|
70
70
|
const index = state.entries.findIndex((entry) => entry.handle === handle);
|
|
71
71
|
if (index === -1)
|
|
72
72
|
return;
|
|
73
73
|
state.entries.splice(index, 1);
|
|
74
|
-
applyTopStyleEntry(
|
|
74
|
+
applyTopStyleEntry(hostStatusBarInfo, state);
|
|
75
75
|
}
|
|
76
|
-
export function pushStatusBarStyleEntry(
|
|
77
|
-
let state = _styleStacks.get(
|
|
76
|
+
export function pushStatusBarStyleEntry(hostStatusBarColor, hostStatusBarInfo, hostStatusBarOverlays, hostStatusBarStyle, hostStatusBarVisibility, entry) {
|
|
77
|
+
let state = _styleStacks.get(hostStatusBarInfo);
|
|
78
78
|
if (state === undefined) {
|
|
79
|
-
const infoProvider =
|
|
79
|
+
const infoProvider = hostStatusBarInfo;
|
|
80
80
|
const baseline = infoProvider.getInfo(createStatusBarInfo());
|
|
81
81
|
state = {
|
|
82
82
|
applied: { ...baseline },
|
|
83
83
|
baseline,
|
|
84
|
-
colorProvider:
|
|
84
|
+
colorProvider: hostStatusBarColor,
|
|
85
85
|
entries: [],
|
|
86
|
-
overlaysProvider:
|
|
87
|
-
styleProvider:
|
|
88
|
-
visibilityProvider:
|
|
86
|
+
overlaysProvider: hostStatusBarOverlays,
|
|
87
|
+
styleProvider: hostStatusBarStyle,
|
|
88
|
+
visibilityProvider: hostStatusBarVisibility,
|
|
89
89
|
};
|
|
90
|
-
_styleStacks.set(
|
|
90
|
+
_styleStacks.set(hostStatusBarInfo, state);
|
|
91
91
|
}
|
|
92
92
|
const handle = _nextHandle++;
|
|
93
93
|
state.entries.push({ entry, handle });
|
|
94
|
-
applyTopStyleEntry(
|
|
94
|
+
applyTopStyleEntry(hostStatusBarInfo, state);
|
|
95
95
|
return handle;
|
|
96
96
|
}
|
|
97
|
-
export function setStatusBarColor(
|
|
98
|
-
|
|
97
|
+
export function setStatusBarColor(hostStatusBarColor, color, animated) {
|
|
98
|
+
hostStatusBarColor.setBackgroundColor(color, animated);
|
|
99
99
|
}
|
|
100
|
-
export function setStatusBarOverlaysContent(
|
|
101
|
-
|
|
100
|
+
export function setStatusBarOverlaysContent(hostStatusBarOverlays, overlay) {
|
|
101
|
+
hostStatusBarOverlays.setOverlaysContent(overlay);
|
|
102
102
|
}
|
|
103
|
-
export function setStatusBarStyle(
|
|
104
|
-
|
|
103
|
+
export function setStatusBarStyle(hostStatusBarStyle, style) {
|
|
104
|
+
hostStatusBarStyle.setStyle(style);
|
|
105
105
|
}
|
|
106
|
-
export function setStatusBarVisible(
|
|
107
|
-
|
|
106
|
+
export function setStatusBarVisible(hostStatusBarVisibility, visible, animation) {
|
|
107
|
+
hostStatusBarVisibility.setVisible(visible, animation);
|
|
108
108
|
}
|
|
109
109
|
const INVALID_HANDLE = -1;
|
|
110
110
|
let _nextHandle = 1;
|
|
111
111
|
const _scratchInfo = createStatusBarInfo();
|
|
112
112
|
const _styleStacks = new WeakMap();
|
|
113
113
|
const _subscriptions = new WeakMap();
|
|
114
|
-
function applyTopStyleEntry(
|
|
114
|
+
function applyTopStyleEntry(hostStatusBarInfo, state) {
|
|
115
115
|
let animation;
|
|
116
116
|
let color;
|
|
117
117
|
let overlaysContent;
|
|
@@ -148,6 +148,6 @@ function applyTopStyleEntry(host, state) {
|
|
|
148
148
|
state.applied.style = style;
|
|
149
149
|
state.applied.visible = visible;
|
|
150
150
|
if (state.entries.length === 0)
|
|
151
|
-
_styleStacks.delete(
|
|
151
|
+
_styleStacks.delete(hostStatusBarInfo);
|
|
152
152
|
}
|
|
153
153
|
//# sourceMappingURL=statusbar.js.map
|
package/dist/statusbar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusbar.js","sourceRoot":"","sources":["../src/statusbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"statusbar.js","sourceRoot":"","sources":["../src/statusbar.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/statusbar",
|
|
3
|
-
"version": "0.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.1201.9b49dee",
|
|
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.1201.9b49dee",
|
|
42
|
+
"@flighthq/signals": "0.5.1-next.1201.9b49dee",
|
|
43
|
+
"@flighthq/types": "0.5.1-next.1201.9b49dee"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"typescript": "^5.3.0"
|
package/src/statusbar.test.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { connectSignal } from '@flighthq/signals/contract';
|
|
2
2
|
import type {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
HostStatusBarChangeProvider,
|
|
4
|
+
HostStatusBarColorProvider,
|
|
5
|
+
HostStatusBarInfoProvider,
|
|
6
|
+
HostStatusBarOverlaysProvider,
|
|
7
|
+
HostStatusBarStyleProvider,
|
|
8
|
+
HostStatusBarVisibilityProvider,
|
|
5
9
|
StatusBarInfo,
|
|
6
10
|
StatusBarStyle,
|
|
7
11
|
} from '@flighthq/types/contract';
|
|
@@ -18,9 +22,9 @@ describe('attachStatusBar', () => {
|
|
|
18
22
|
const seen: StatusBarInfo[] = [];
|
|
19
23
|
connectSignal(bar.onChange, (info) => seen.push(info));
|
|
20
24
|
|
|
21
|
-
statusbar.attachStatusBar(first.host, bar);
|
|
25
|
+
statusbar.attachStatusBar(...statusBarAttachProviders(first.host), bar);
|
|
22
26
|
first.emit();
|
|
23
|
-
statusbar.attachStatusBar(second.host, bar);
|
|
27
|
+
statusbar.attachStatusBar(...statusBarAttachProviders(second.host), bar);
|
|
24
28
|
first.emit();
|
|
25
29
|
second.emit();
|
|
26
30
|
|
|
@@ -33,9 +37,9 @@ describe('clearStatusBarStyleStack', () => {
|
|
|
33
37
|
it('restores only the passed host baseline', () => {
|
|
34
38
|
const first = fakeHost('light');
|
|
35
39
|
const second = fakeHost('dark');
|
|
36
|
-
statusbar.pushStatusBarStyleEntry(first.host, { style: 'dark' });
|
|
37
|
-
statusbar.pushStatusBarStyleEntry(second.host, { style: 'light' });
|
|
38
|
-
statusbar.clearStatusBarStyleStack(first.host);
|
|
40
|
+
statusbar.pushStatusBarStyleEntry(...statusBarStyleProviders(first.host), { style: 'dark' });
|
|
41
|
+
statusbar.pushStatusBarStyleEntry(...statusBarStyleProviders(second.host), { style: 'light' });
|
|
42
|
+
statusbar.clearStatusBarStyleStack(first.host.ui.statusBarInfo);
|
|
39
43
|
expect(first.setStyle).toHaveBeenLastCalledWith('light');
|
|
40
44
|
expect(second.setStyle).toHaveBeenCalledTimes(1);
|
|
41
45
|
});
|
|
@@ -61,7 +65,7 @@ describe('detachStatusBar', () => {
|
|
|
61
65
|
it('releases the exact attached provider once', () => {
|
|
62
66
|
const provider = fakeHost('light');
|
|
63
67
|
const bar = statusbar.createStatusBar();
|
|
64
|
-
statusbar.attachStatusBar(provider.host, bar);
|
|
68
|
+
statusbar.attachStatusBar(...statusBarAttachProviders(provider.host), bar);
|
|
65
69
|
statusbar.detachStatusBar(bar);
|
|
66
70
|
statusbar.detachStatusBar(bar);
|
|
67
71
|
expect(provider.unsubscribe).toHaveBeenCalledOnce();
|
|
@@ -72,20 +76,21 @@ describe('disposeStatusBar', () => {
|
|
|
72
76
|
it('detaches its subscription', () => {
|
|
73
77
|
const provider = fakeHost('light');
|
|
74
78
|
const bar = statusbar.createStatusBar();
|
|
75
|
-
statusbar.attachStatusBar(provider.host, bar);
|
|
79
|
+
statusbar.attachStatusBar(...statusBarAttachProviders(provider.host), bar);
|
|
76
80
|
statusbar.disposeStatusBar(bar);
|
|
77
81
|
expect(provider.unsubscribe).toHaveBeenCalledOnce();
|
|
78
82
|
});
|
|
79
83
|
});
|
|
80
84
|
|
|
81
85
|
describe('getStatusBarHeight', () => {
|
|
82
|
-
it('reads from the passed host', () =>
|
|
86
|
+
it('reads from the passed host', () =>
|
|
87
|
+
expect(statusbar.getStatusBarHeight(fakeHost('light').host.ui.statusBarInfo)).toBe(20));
|
|
83
88
|
});
|
|
84
89
|
|
|
85
90
|
describe('getStatusBarInfo', () => {
|
|
86
91
|
it('fills and returns the caller out object', () => {
|
|
87
92
|
const out = statusbar.createStatusBarInfo();
|
|
88
|
-
expect(statusbar.getStatusBarInfo(fakeHost('dark').host, out)).toBe(out);
|
|
93
|
+
expect(statusbar.getStatusBarInfo(fakeHost('dark').host.ui.statusBarInfo, out)).toBe(out);
|
|
89
94
|
expect(out.style).toBe('dark');
|
|
90
95
|
});
|
|
91
96
|
});
|
|
@@ -93,10 +98,10 @@ describe('getStatusBarInfo', () => {
|
|
|
93
98
|
describe('hasStatusBarStyleEntry', () => {
|
|
94
99
|
it('tracks handles within one explicit host', () => {
|
|
95
100
|
const provider = fakeHost('light');
|
|
96
|
-
const handle = statusbar.pushStatusBarStyleEntry(provider.host, { style: 'dark' });
|
|
97
|
-
expect(statusbar.hasStatusBarStyleEntry(provider.host, handle)).toBe(true);
|
|
98
|
-
statusbar.popStatusBarStyleEntry(provider.host, handle);
|
|
99
|
-
expect(statusbar.hasStatusBarStyleEntry(provider.host, handle)).toBe(false);
|
|
101
|
+
const handle = statusbar.pushStatusBarStyleEntry(...statusBarStyleProviders(provider.host), { style: 'dark' });
|
|
102
|
+
expect(statusbar.hasStatusBarStyleEntry(provider.host.ui.statusBarInfo, handle)).toBe(true);
|
|
103
|
+
statusbar.popStatusBarStyleEntry(provider.host.ui.statusBarInfo, handle);
|
|
104
|
+
expect(statusbar.hasStatusBarStyleEntry(provider.host.ui.statusBarInfo, handle)).toBe(false);
|
|
100
105
|
});
|
|
101
106
|
});
|
|
102
107
|
|
|
@@ -119,8 +124,8 @@ describe('packedRgbaToHexColor', () => {
|
|
|
119
124
|
describe('popStatusBarStyleEntry', () => {
|
|
120
125
|
it('restores the captured baseline', () => {
|
|
121
126
|
const provider = fakeHost('light');
|
|
122
|
-
const handle = statusbar.pushStatusBarStyleEntry(provider.host, { style: 'dark' });
|
|
123
|
-
statusbar.popStatusBarStyleEntry(provider.host, handle);
|
|
127
|
+
const handle = statusbar.pushStatusBarStyleEntry(...statusBarStyleProviders(provider.host), { style: 'dark' });
|
|
128
|
+
statusbar.popStatusBarStyleEntry(provider.host.ui.statusBarInfo, handle);
|
|
124
129
|
expect(provider.setStyle).toHaveBeenLastCalledWith('light');
|
|
125
130
|
});
|
|
126
131
|
});
|
|
@@ -128,8 +133,8 @@ describe('popStatusBarStyleEntry', () => {
|
|
|
128
133
|
describe('pushStatusBarStyleEntry', () => {
|
|
129
134
|
it('merges unset fields through the stack', () => {
|
|
130
135
|
const provider = fakeHost('light');
|
|
131
|
-
statusbar.pushStatusBarStyleEntry(provider.host, { style: 'dark' });
|
|
132
|
-
statusbar.pushStatusBarStyleEntry(provider.host, { visible: false });
|
|
136
|
+
statusbar.pushStatusBarStyleEntry(...statusBarStyleProviders(provider.host), { style: 'dark' });
|
|
137
|
+
statusbar.pushStatusBarStyleEntry(...statusBarStyleProviders(provider.host), { visible: false });
|
|
133
138
|
expect(provider.setStyle).toHaveBeenCalledTimes(1);
|
|
134
139
|
expect(provider.setVisible).toHaveBeenLastCalledWith(false, 'none');
|
|
135
140
|
});
|
|
@@ -138,7 +143,7 @@ describe('pushStatusBarStyleEntry', () => {
|
|
|
138
143
|
describe('setStatusBarColor', () => {
|
|
139
144
|
it('uses only the color slot', () => {
|
|
140
145
|
const provider = fakeHost('light');
|
|
141
|
-
statusbar.setStatusBarColor(provider.host, 0x112233ff, true);
|
|
146
|
+
statusbar.setStatusBarColor(provider.host.ui.statusBarColor, 0x112233ff, true);
|
|
142
147
|
expect(provider.setBackgroundColor).toHaveBeenCalledWith(0x112233ff, true);
|
|
143
148
|
});
|
|
144
149
|
});
|
|
@@ -146,11 +151,36 @@ describe('setStatusBarColor', () => {
|
|
|
146
151
|
describe('setStatusBarOverlaysContent', () => {
|
|
147
152
|
it('uses only the overlays slot', () => {
|
|
148
153
|
const provider = fakeHost('light');
|
|
149
|
-
statusbar.setStatusBarOverlaysContent(provider.host, true);
|
|
154
|
+
statusbar.setStatusBarOverlaysContent(provider.host.ui.statusBarOverlays, true);
|
|
150
155
|
expect(provider.setOverlaysContent).toHaveBeenCalledWith(true);
|
|
151
156
|
});
|
|
152
157
|
});
|
|
153
158
|
|
|
159
|
+
interface FakeStatusBarHost {
|
|
160
|
+
readonly ui: {
|
|
161
|
+
readonly statusBarChange: HostStatusBarChangeProvider;
|
|
162
|
+
readonly statusBarColor: HostStatusBarColorProvider;
|
|
163
|
+
readonly statusBarInfo: HostStatusBarInfoProvider;
|
|
164
|
+
readonly statusBarOverlays: HostStatusBarOverlaysProvider;
|
|
165
|
+
readonly statusBarStyle: HostStatusBarStyleProvider;
|
|
166
|
+
readonly statusBarVisibility: HostStatusBarVisibilityProvider;
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function statusBarAttachProviders(host: FakeStatusBarHost) {
|
|
171
|
+
return [host.ui.statusBarChange, host.ui.statusBarInfo] as const;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function statusBarStyleProviders(host: FakeStatusBarHost) {
|
|
175
|
+
return [
|
|
176
|
+
host.ui.statusBarColor,
|
|
177
|
+
host.ui.statusBarInfo,
|
|
178
|
+
host.ui.statusBarOverlays,
|
|
179
|
+
host.ui.statusBarStyle,
|
|
180
|
+
host.ui.statusBarVisibility,
|
|
181
|
+
] as const;
|
|
182
|
+
}
|
|
183
|
+
|
|
154
184
|
function fakeHost(initialStyle: StatusBarStyle) {
|
|
155
185
|
let listener: (() => void) | null = null;
|
|
156
186
|
const unsubscribe = vi.fn(() => {
|
|
@@ -160,7 +190,7 @@ function fakeHost(initialStyle: StatusBarStyle) {
|
|
|
160
190
|
const setOverlaysContent = vi.fn();
|
|
161
191
|
const setStyle = vi.fn();
|
|
162
192
|
const setVisible = vi.fn();
|
|
163
|
-
const host:
|
|
193
|
+
const host: FakeStatusBarHost = {
|
|
164
194
|
ui: {
|
|
165
195
|
statusBarChange: {
|
|
166
196
|
subscribe(next) {
|
|
@@ -199,7 +229,7 @@ function fakeHost(initialStyle: StatusBarStyle) {
|
|
|
199
229
|
describe('setStatusBarStyle', () => {
|
|
200
230
|
it('uses only the style slot', () => {
|
|
201
231
|
const provider = fakeHost('light');
|
|
202
|
-
statusbar.setStatusBarStyle(provider.host, 'dark');
|
|
232
|
+
statusbar.setStatusBarStyle(provider.host.ui.statusBarStyle, 'dark');
|
|
203
233
|
expect(provider.setStyle).toHaveBeenCalledWith('dark');
|
|
204
234
|
});
|
|
205
235
|
});
|
|
@@ -207,7 +237,7 @@ describe('setStatusBarStyle', () => {
|
|
|
207
237
|
describe('setStatusBarVisible', () => {
|
|
208
238
|
it('uses only the visibility slot', () => {
|
|
209
239
|
const provider = fakeHost('light');
|
|
210
|
-
statusbar.setStatusBarVisible(provider.host, false, 'fade');
|
|
240
|
+
statusbar.setStatusBarVisible(provider.host.ui.statusBarVisibility, false, 'fade');
|
|
211
241
|
expect(provider.setVisible).toHaveBeenCalledWith(false, 'fade');
|
|
212
242
|
});
|
|
213
243
|
});
|