even-toolkit 0.1.0 → 0.3.0
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/splash.d.ts +123 -0
- package/dist/splash.d.ts.map +1 -0
- package/dist/splash.js +148 -0
- package/dist/splash.js.map +1 -0
- package/dist/useGlasses.d.ts +8 -0
- package/dist/useGlasses.d.ts.map +1 -1
- package/dist/useGlasses.js +26 -9
- package/dist/useGlasses.js.map +1 -1
- package/package.json +5 -1
package/dist/splash.d.ts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splash screen system for G2 glasses apps.
|
|
3
|
+
*
|
|
4
|
+
* Renders a canvas-based splash image to G2 image tiles with configurable
|
|
5
|
+
* timing, tile layout, custom positioning, and a render callback.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* const splash = createSplash({
|
|
9
|
+
* render: (ctx, w, h) => {
|
|
10
|
+
* ctx.fillStyle = '#e0e0e0';
|
|
11
|
+
* ctx.font = 'bold 16px monospace';
|
|
12
|
+
* ctx.textAlign = 'center';
|
|
13
|
+
* ctx.fillText('MyApp', w/2, h/2);
|
|
14
|
+
* },
|
|
15
|
+
* tiles: 1,
|
|
16
|
+
* minTimeMs: 2000,
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // In useGlasses config:
|
|
20
|
+
* useGlasses({ ..., splash });
|
|
21
|
+
*/
|
|
22
|
+
export interface TilePosition {
|
|
23
|
+
/** X position on the G2 display (0-576). Default: auto from tile index */
|
|
24
|
+
x: number;
|
|
25
|
+
/** Y position on the G2 display (0-288). Default: 0 */
|
|
26
|
+
y: number;
|
|
27
|
+
/** Tile width. Default: 200 (G2_IMAGE_MAX_W) */
|
|
28
|
+
w?: number;
|
|
29
|
+
/** Tile height. Default: 100 (G2_IMAGE_MAX_H) */
|
|
30
|
+
h?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface SplashConfig {
|
|
33
|
+
/**
|
|
34
|
+
* Render callback — draw your splash on the provided canvas context.
|
|
35
|
+
* The canvas is pre-filled with black.
|
|
36
|
+
*
|
|
37
|
+
* @param ctx Canvas 2D context
|
|
38
|
+
* @param w Canvas width in pixels
|
|
39
|
+
* @param h Canvas height in pixels
|
|
40
|
+
*/
|
|
41
|
+
render: (ctx: CanvasRenderingContext2D, w: number, h: number) => void;
|
|
42
|
+
/**
|
|
43
|
+
* Number of image tiles to use (1-3).
|
|
44
|
+
* - 1: single 200x100 tile
|
|
45
|
+
* - 2: 400x100 across 2 tiles
|
|
46
|
+
* - 3: 576x100 across 3 tiles (full width)
|
|
47
|
+
* Default: 1
|
|
48
|
+
*/
|
|
49
|
+
tiles?: 1 | 2 | 3;
|
|
50
|
+
/**
|
|
51
|
+
* Custom tile positions on the G2 display.
|
|
52
|
+
* Override where each tile is placed. Array length must match `tiles` count.
|
|
53
|
+
*
|
|
54
|
+
* Example — center a single tile:
|
|
55
|
+
* tilePositions: [{ x: 188, y: 94 }] // centered on 576x288
|
|
56
|
+
*
|
|
57
|
+
* Example — 2 tiles stacked vertically:
|
|
58
|
+
* tilePositions: [{ x: 0, y: 0 }, { x: 0, y: 100 }]
|
|
59
|
+
*
|
|
60
|
+
* Default: tiles placed side-by-side at y=0 (standard layout)
|
|
61
|
+
*/
|
|
62
|
+
tilePositions?: TilePosition[];
|
|
63
|
+
/**
|
|
64
|
+
* Canvas size override. By default: (tiles * 200) x 100.
|
|
65
|
+
* Use this when you need a different aspect ratio or resolution.
|
|
66
|
+
*/
|
|
67
|
+
canvasSize?: {
|
|
68
|
+
w: number;
|
|
69
|
+
h: number;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Minimum time the splash should be visible (ms).
|
|
73
|
+
* `waitMinTime()` will delay until this time has passed since `show()`.
|
|
74
|
+
* Default: 2000
|
|
75
|
+
*/
|
|
76
|
+
minTimeMs?: number;
|
|
77
|
+
/**
|
|
78
|
+
* Maximum time before the splash is forcefully dismissed (ms).
|
|
79
|
+
* Set to 0 for no max. Default: 5000
|
|
80
|
+
*/
|
|
81
|
+
maxTimeMs?: number;
|
|
82
|
+
/**
|
|
83
|
+
* Menu text shown below the image (in the text container).
|
|
84
|
+
* Default: empty string (hidden)
|
|
85
|
+
*/
|
|
86
|
+
menuText?: string;
|
|
87
|
+
}
|
|
88
|
+
export interface SplashHandle {
|
|
89
|
+
/** Show the splash on the glasses. Returns when the image is sent. */
|
|
90
|
+
show: (bridge: SplashBridge) => Promise<void>;
|
|
91
|
+
/** Wait until minTimeMs has elapsed since show(). Resolves immediately if already elapsed. */
|
|
92
|
+
waitMinTime: () => Promise<void>;
|
|
93
|
+
/** Check if the splash is currently showing. */
|
|
94
|
+
isShowing: () => boolean;
|
|
95
|
+
/** Get encoded tile data (for apps that manage their own bridge). */
|
|
96
|
+
getTiles: () => {
|
|
97
|
+
id: number;
|
|
98
|
+
name: string;
|
|
99
|
+
bytes: Uint8Array;
|
|
100
|
+
}[];
|
|
101
|
+
}
|
|
102
|
+
/** Minimal bridge interface needed for splash (subset of EvenHubBridge). */
|
|
103
|
+
export interface SplashBridge {
|
|
104
|
+
showHomePage: (menuText: string) => Promise<void>;
|
|
105
|
+
sendImage: (containerId: number, containerName: string, pngBytes: Uint8Array) => Promise<void>;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Preset tile positions for common layouts.
|
|
109
|
+
*/
|
|
110
|
+
export declare const TILE_PRESETS: {
|
|
111
|
+
/** Single tile centered on the G2 display */
|
|
112
|
+
centered1: TilePosition[];
|
|
113
|
+
/** Single tile top-center */
|
|
114
|
+
topCenter1: TilePosition[];
|
|
115
|
+
/** 2 tiles side-by-side, centered vertically */
|
|
116
|
+
centered2: TilePosition[];
|
|
117
|
+
/** 3 tiles full width at top */
|
|
118
|
+
fullWidthTop: TilePosition[];
|
|
119
|
+
/** Default: standard side-by-side at y=0 */
|
|
120
|
+
default: undefined;
|
|
121
|
+
};
|
|
122
|
+
export declare function createSplash(config: SplashConfig): SplashHandle;
|
|
123
|
+
//# sourceMappingURL=splash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splash.d.ts","sourceRoot":"","sources":["../splash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,CAAC,EAAE,MAAM,CAAC;IACV,uDAAuD;IACvD,CAAC,EAAE,MAAM,CAAC;IACV,gDAAgD;IAChD,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,YAAY;IAC3B;;;;;;;OAOG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtE;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAElB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAE/B;;;OAGG;IACH,UAAU,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAEtC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,8FAA8F;IAC9F,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,gDAAgD;IAChD,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,qEAAqE;IACrE,QAAQ,EAAE,MAAM;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,EAAE,CAAC;CACnE;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChG;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB,6CAA6C;;IAK7C,6BAA6B;;IAK7B,gDAAgD;;IAMhD,gCAAgC;;IAOhC,4CAA4C;;CAE7C,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAgH/D"}
|
package/dist/splash.js
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splash screen system for G2 glasses apps.
|
|
3
|
+
*
|
|
4
|
+
* Renders a canvas-based splash image to G2 image tiles with configurable
|
|
5
|
+
* timing, tile layout, custom positioning, and a render callback.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* const splash = createSplash({
|
|
9
|
+
* render: (ctx, w, h) => {
|
|
10
|
+
* ctx.fillStyle = '#e0e0e0';
|
|
11
|
+
* ctx.font = 'bold 16px monospace';
|
|
12
|
+
* ctx.textAlign = 'center';
|
|
13
|
+
* ctx.fillText('MyApp', w/2, h/2);
|
|
14
|
+
* },
|
|
15
|
+
* tiles: 1,
|
|
16
|
+
* minTimeMs: 2000,
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // In useGlasses config:
|
|
20
|
+
* useGlasses({ ..., splash });
|
|
21
|
+
*/
|
|
22
|
+
import { G2_IMAGE_MAX_W, G2_IMAGE_MAX_H, DISPLAY_W, DISPLAY_H, IMAGE_TILES } from './layout';
|
|
23
|
+
import { encodeTilesBatch } from './png-utils';
|
|
24
|
+
/**
|
|
25
|
+
* Preset tile positions for common layouts.
|
|
26
|
+
*/
|
|
27
|
+
export const TILE_PRESETS = {
|
|
28
|
+
/** Single tile centered on the G2 display */
|
|
29
|
+
centered1: [
|
|
30
|
+
{ x: Math.floor((DISPLAY_W - G2_IMAGE_MAX_W) / 2), y: Math.floor((DISPLAY_H - G2_IMAGE_MAX_H) / 2) },
|
|
31
|
+
],
|
|
32
|
+
/** Single tile top-center */
|
|
33
|
+
topCenter1: [
|
|
34
|
+
{ x: Math.floor((DISPLAY_W - G2_IMAGE_MAX_W) / 2), y: 20 },
|
|
35
|
+
],
|
|
36
|
+
/** 2 tiles side-by-side, centered vertically */
|
|
37
|
+
centered2: [
|
|
38
|
+
{ x: Math.floor((DISPLAY_W - 400) / 2), y: Math.floor((DISPLAY_H - G2_IMAGE_MAX_H) / 2) },
|
|
39
|
+
{ x: Math.floor((DISPLAY_W - 400) / 2) + G2_IMAGE_MAX_W, y: Math.floor((DISPLAY_H - G2_IMAGE_MAX_H) / 2) },
|
|
40
|
+
],
|
|
41
|
+
/** 3 tiles full width at top */
|
|
42
|
+
fullWidthTop: [
|
|
43
|
+
{ x: 0, y: 0 },
|
|
44
|
+
{ x: G2_IMAGE_MAX_W, y: 0 },
|
|
45
|
+
{ x: G2_IMAGE_MAX_W * 2, y: 0 },
|
|
46
|
+
],
|
|
47
|
+
/** Default: standard side-by-side at y=0 */
|
|
48
|
+
default: undefined,
|
|
49
|
+
};
|
|
50
|
+
export function createSplash(config) {
|
|
51
|
+
const tileCount = config.tiles ?? 1;
|
|
52
|
+
const minTime = config.minTimeMs ?? 2000;
|
|
53
|
+
const maxTime = config.maxTimeMs ?? 5000;
|
|
54
|
+
const menuText = config.menuText ?? '';
|
|
55
|
+
const positions = config.tilePositions;
|
|
56
|
+
const tileW = G2_IMAGE_MAX_W; // 200
|
|
57
|
+
const tileH = G2_IMAGE_MAX_H; // 100
|
|
58
|
+
const canvasW = config.canvasSize?.w ?? (tileCount * tileW);
|
|
59
|
+
const canvasH = config.canvasSize?.h ?? tileH;
|
|
60
|
+
let showTime = 0;
|
|
61
|
+
let showing = false;
|
|
62
|
+
let encodedTiles = [];
|
|
63
|
+
function renderAndEncode() {
|
|
64
|
+
const canvas = document.createElement('canvas');
|
|
65
|
+
canvas.width = canvasW;
|
|
66
|
+
canvas.height = canvasH;
|
|
67
|
+
const ctx = canvas.getContext('2d');
|
|
68
|
+
// Black background
|
|
69
|
+
ctx.fillStyle = '#000000';
|
|
70
|
+
ctx.fillRect(0, 0, canvasW, canvasH);
|
|
71
|
+
// App-specific rendering
|
|
72
|
+
config.render(ctx, canvasW, canvasH);
|
|
73
|
+
// Encode each tile
|
|
74
|
+
encodedTiles = [];
|
|
75
|
+
for (let i = 0; i < tileCount; i++) {
|
|
76
|
+
const slot = IMAGE_TILES[i];
|
|
77
|
+
const pos = positions?.[i];
|
|
78
|
+
const cropX = i * tileW;
|
|
79
|
+
const cropW = Math.min(tileW, canvasW - cropX);
|
|
80
|
+
const crop = { sx: cropX, sy: 0, sw: cropW, sh: Math.min(tileH, canvasH) };
|
|
81
|
+
const enc = encodeTilesBatch(canvas, [{ crop, name: slot.name }], tileW, tileH)[0];
|
|
82
|
+
encodedTiles.push({
|
|
83
|
+
id: slot.id,
|
|
84
|
+
name: slot.name,
|
|
85
|
+
bytes: enc.bytes,
|
|
86
|
+
x: pos?.x ?? slot.x,
|
|
87
|
+
y: pos?.y ?? slot.y,
|
|
88
|
+
w: pos?.w ?? tileW,
|
|
89
|
+
h: pos?.h ?? tileH,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
// Fill remaining tiles with black
|
|
93
|
+
if (tileCount < 3) {
|
|
94
|
+
const black = document.createElement('canvas');
|
|
95
|
+
black.width = tileW;
|
|
96
|
+
black.height = tileH;
|
|
97
|
+
const bctx = black.getContext('2d');
|
|
98
|
+
bctx.fillStyle = '#000000';
|
|
99
|
+
bctx.fillRect(0, 0, tileW, tileH);
|
|
100
|
+
const blackEnc = encodeTilesBatch(black, [{ crop: { sx: 0, sy: 0, sw: tileW, sh: tileH }, name: 'black' }], tileW, tileH)[0];
|
|
101
|
+
for (let i = tileCount; i < 3; i++) {
|
|
102
|
+
const slot = IMAGE_TILES[i];
|
|
103
|
+
encodedTiles.push({
|
|
104
|
+
id: slot.id,
|
|
105
|
+
name: slot.name,
|
|
106
|
+
bytes: blackEnc.bytes,
|
|
107
|
+
x: slot.x,
|
|
108
|
+
y: slot.y,
|
|
109
|
+
w: tileW,
|
|
110
|
+
h: tileH,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
async show(bridge) {
|
|
117
|
+
renderAndEncode();
|
|
118
|
+
showTime = Date.now();
|
|
119
|
+
showing = true;
|
|
120
|
+
// Show the home layout (image + optional text below)
|
|
121
|
+
await bridge.showHomePage(menuText);
|
|
122
|
+
// Send all tiles
|
|
123
|
+
for (const tile of encodedTiles) {
|
|
124
|
+
await bridge.sendImage(tile.id, tile.name, tile.bytes);
|
|
125
|
+
}
|
|
126
|
+
// Auto-dismiss after maxTime
|
|
127
|
+
if (maxTime > 0) {
|
|
128
|
+
setTimeout(() => { showing = false; }, maxTime);
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
async waitMinTime() {
|
|
132
|
+
const elapsed = Date.now() - showTime;
|
|
133
|
+
if (elapsed < minTime) {
|
|
134
|
+
await new Promise((r) => setTimeout(r, minTime - elapsed));
|
|
135
|
+
}
|
|
136
|
+
showing = false;
|
|
137
|
+
},
|
|
138
|
+
isShowing() {
|
|
139
|
+
return showing;
|
|
140
|
+
},
|
|
141
|
+
getTiles() {
|
|
142
|
+
if (encodedTiles.length === 0)
|
|
143
|
+
renderAndEncode();
|
|
144
|
+
return encodedTiles;
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=splash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splash.js","sourceRoot":"","sources":["../splash.ts"],"names":[],"mappings":"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"}
|
package/dist/useGlasses.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { DisplayData, GlassAction, GlassNavState, ColumnData } from './types';
|
|
2
2
|
import { type ColumnConfig } from './bridge';
|
|
3
|
+
import type { SplashHandle } from './splash';
|
|
3
4
|
export interface UseGlassesConfig<S> {
|
|
4
5
|
getSnapshot: () => S;
|
|
5
6
|
/** Convert snapshot to single text display (for 'text' mode) */
|
|
@@ -13,6 +14,13 @@ export interface UseGlassesConfig<S> {
|
|
|
13
14
|
getPageMode?: (screen: string) => 'text' | 'columns';
|
|
14
15
|
/** Column layout config — default: 3 equal columns across 576px */
|
|
15
16
|
columns?: ColumnConfig[];
|
|
17
|
+
/**
|
|
18
|
+
* Optional image-based splash screen.
|
|
19
|
+
* When provided, shows the splash image instead of the default text splash,
|
|
20
|
+
* then waits minTimeMs before switching to app content.
|
|
21
|
+
* Create with `createSplash()` from 'even-toolkit/splash'.
|
|
22
|
+
*/
|
|
23
|
+
splash?: SplashHandle;
|
|
16
24
|
}
|
|
17
25
|
export declare function useGlasses<S>(config: UseGlassesConfig<S>): void;
|
|
18
26
|
//# sourceMappingURL=useGlasses.d.ts.map
|
package/dist/useGlasses.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGlasses.d.ts","sourceRoot":"","sources":["../useGlasses.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"useGlasses.d.ts","sourceRoot":"","sources":["../useGlasses.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAI5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrB,gEAAgE;IAChE,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,KAAK,WAAW,CAAC;IAChE,sEAAsE;IACtE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,KAAK,UAAU,CAAC;IAC5D,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,KAAK,aAAa,CAAC;IACvF,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACrD,mEAAmE;IACnE,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CA4J/D"}
|
package/dist/useGlasses.js
CHANGED
|
@@ -100,15 +100,32 @@ export function useGlasses(config) {
|
|
|
100
100
|
await hub.init();
|
|
101
101
|
if (disposed)
|
|
102
102
|
return;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
103
|
+
const splash = configRef.current.splash;
|
|
104
|
+
if (splash) {
|
|
105
|
+
// Image-based splash: show canvas-rendered image, then wait minTime
|
|
106
|
+
await splash.show(hub);
|
|
107
|
+
if (disposed)
|
|
108
|
+
return;
|
|
109
|
+
hub.onEvent((event) => {
|
|
110
|
+
const action = mapGlassEvent(event);
|
|
111
|
+
if (action)
|
|
112
|
+
handleAction(action);
|
|
113
|
+
});
|
|
114
|
+
await splash.waitMinTime();
|
|
115
|
+
if (disposed)
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// Default text splash
|
|
120
|
+
await hub.showTextPage(`\n\n ${configRef.current.appName}`);
|
|
121
|
+
if (disposed)
|
|
122
|
+
return;
|
|
123
|
+
hub.onEvent((event) => {
|
|
124
|
+
const action = mapGlassEvent(event);
|
|
125
|
+
if (action)
|
|
126
|
+
handleAction(action);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
112
129
|
}
|
|
113
130
|
catch {
|
|
114
131
|
// SDK not available — app continues without glasses
|
package/dist/useGlasses.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGlasses.js","sourceRoot":"","sources":["../useGlasses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"useGlasses.js","sourceRoot":"","sources":["../useGlasses.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "even-toolkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Shared library for building Even Realities G2 glasses apps — bridge, display, gestures, action bars, timers, and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -69,6 +69,10 @@
|
|
|
69
69
|
"./keep-alive": {
|
|
70
70
|
"types": "./dist/keep-alive.d.ts",
|
|
71
71
|
"import": "./dist/keep-alive.js"
|
|
72
|
+
},
|
|
73
|
+
"./splash": {
|
|
74
|
+
"types": "./dist/splash.d.ts",
|
|
75
|
+
"import": "./dist/splash.js"
|
|
72
76
|
}
|
|
73
77
|
},
|
|
74
78
|
"files": [
|