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.
@@ -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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"}
@@ -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
@@ -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;AAK5D,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;CAC1B;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CA4I/D"}
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"}
@@ -100,15 +100,32 @@ export function useGlasses(config) {
100
100
  await hub.init();
101
101
  if (disposed)
102
102
  return;
103
- // Show initial splash text
104
- await hub.showTextPage(`\n\n ${configRef.current.appName}`);
105
- if (disposed)
106
- return;
107
- hub.onEvent((event) => {
108
- const action = mapGlassEvent(event);
109
- if (action)
110
- handleAction(action);
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
@@ -1 +1 @@
1
- {"version":3,"file":"useGlasses.js","sourceRoot":"","sources":["../useGlasses.ts"],"names":[],"mappings":"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"}
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.1.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": [