even-toolkit 0.2.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 +50 -9
- package/dist/splash.d.ts.map +1 -1
- package/dist/splash.js +61 -21
- package/dist/splash.js.map +1 -1
- 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 +1 -1
package/dist/splash.d.ts
CHANGED
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
* Splash screen system for G2 glasses apps.
|
|
3
3
|
*
|
|
4
4
|
* Renders a canvas-based splash image to G2 image tiles with configurable
|
|
5
|
-
* timing, tile layout, and a render callback
|
|
5
|
+
* timing, tile layout, custom positioning, and a render callback.
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
8
8
|
* const splash = createSplash({
|
|
9
9
|
* render: (ctx, w, h) => {
|
|
10
|
-
* ctx.fillStyle = '#000';
|
|
11
|
-
* ctx.fillRect(0, 0, w, h);
|
|
12
10
|
* ctx.fillStyle = '#e0e0e0';
|
|
13
11
|
* ctx.font = 'bold 16px monospace';
|
|
14
12
|
* ctx.textAlign = 'center';
|
|
@@ -18,12 +16,19 @@
|
|
|
18
16
|
* minTimeMs: 2000,
|
|
19
17
|
* });
|
|
20
18
|
*
|
|
21
|
-
* // In
|
|
22
|
-
*
|
|
23
|
-
* // ... init your app ...
|
|
24
|
-
* await splash.waitMinTime();
|
|
25
|
-
* // Now safe to switch to app UI
|
|
19
|
+
* // In useGlasses config:
|
|
20
|
+
* useGlasses({ ..., splash });
|
|
26
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
|
+
}
|
|
27
32
|
export interface SplashConfig {
|
|
28
33
|
/**
|
|
29
34
|
* Render callback — draw your splash on the provided canvas context.
|
|
@@ -36,12 +41,33 @@ export interface SplashConfig {
|
|
|
36
41
|
render: (ctx: CanvasRenderingContext2D, w: number, h: number) => void;
|
|
37
42
|
/**
|
|
38
43
|
* Number of image tiles to use (1-3).
|
|
39
|
-
* - 1: single 200x100 tile
|
|
44
|
+
* - 1: single 200x100 tile
|
|
40
45
|
* - 2: 400x100 across 2 tiles
|
|
41
46
|
* - 3: 576x100 across 3 tiles (full width)
|
|
42
47
|
* Default: 1
|
|
43
48
|
*/
|
|
44
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
|
+
};
|
|
45
71
|
/**
|
|
46
72
|
* Minimum time the splash should be visible (ms).
|
|
47
73
|
* `waitMinTime()` will delay until this time has passed since `show()`.
|
|
@@ -78,5 +104,20 @@ export interface SplashBridge {
|
|
|
78
104
|
showHomePage: (menuText: string) => Promise<void>;
|
|
79
105
|
sendImage: (containerId: number, containerName: string, pngBytes: Uint8Array) => Promise<void>;
|
|
80
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
|
+
};
|
|
81
122
|
export declare function createSplash(config: SplashConfig): SplashHandle;
|
|
82
123
|
//# sourceMappingURL=splash.d.ts.map
|
package/dist/splash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splash.d.ts","sourceRoot":"","sources":["../splash.ts"],"names":[],"mappings":"AAAA
|
|
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
CHANGED
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
* Splash screen system for G2 glasses apps.
|
|
3
3
|
*
|
|
4
4
|
* Renders a canvas-based splash image to G2 image tiles with configurable
|
|
5
|
-
* timing, tile layout, and a render callback
|
|
5
|
+
* timing, tile layout, custom positioning, and a render callback.
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
8
8
|
* const splash = createSplash({
|
|
9
9
|
* render: (ctx, w, h) => {
|
|
10
|
-
* ctx.fillStyle = '#000';
|
|
11
|
-
* ctx.fillRect(0, 0, w, h);
|
|
12
10
|
* ctx.fillStyle = '#e0e0e0';
|
|
13
11
|
* ctx.font = 'bold 16px monospace';
|
|
14
12
|
* ctx.textAlign = 'center';
|
|
@@ -18,28 +16,51 @@
|
|
|
18
16
|
* minTimeMs: 2000,
|
|
19
17
|
* });
|
|
20
18
|
*
|
|
21
|
-
* // In
|
|
22
|
-
*
|
|
23
|
-
* // ... init your app ...
|
|
24
|
-
* await splash.waitMinTime();
|
|
25
|
-
* // Now safe to switch to app UI
|
|
19
|
+
* // In useGlasses config:
|
|
20
|
+
* useGlasses({ ..., splash });
|
|
26
21
|
*/
|
|
27
|
-
import { G2_IMAGE_MAX_W, G2_IMAGE_MAX_H, IMAGE_TILES } from './layout';
|
|
22
|
+
import { G2_IMAGE_MAX_W, G2_IMAGE_MAX_H, DISPLAY_W, DISPLAY_H, IMAGE_TILES } from './layout';
|
|
28
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
|
+
};
|
|
29
50
|
export function createSplash(config) {
|
|
30
|
-
const
|
|
51
|
+
const tileCount = config.tiles ?? 1;
|
|
31
52
|
const minTime = config.minTimeMs ?? 2000;
|
|
32
53
|
const maxTime = config.maxTimeMs ?? 5000;
|
|
33
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;
|
|
34
60
|
let showTime = 0;
|
|
35
61
|
let showing = false;
|
|
36
62
|
let encodedTiles = [];
|
|
37
|
-
// Render canvas and encode tiles
|
|
38
63
|
function renderAndEncode() {
|
|
39
|
-
const tileW = G2_IMAGE_MAX_W; // 200
|
|
40
|
-
const tileH = G2_IMAGE_MAX_H; // 100
|
|
41
|
-
const canvasW = tiles * tileW;
|
|
42
|
-
const canvasH = tileH;
|
|
43
64
|
const canvas = document.createElement('canvas');
|
|
44
65
|
canvas.width = canvasW;
|
|
45
66
|
canvas.height = canvasH;
|
|
@@ -51,14 +72,25 @@ export function createSplash(config) {
|
|
|
51
72
|
config.render(ctx, canvasW, canvasH);
|
|
52
73
|
// Encode each tile
|
|
53
74
|
encodedTiles = [];
|
|
54
|
-
for (let i = 0; i <
|
|
75
|
+
for (let i = 0; i < tileCount; i++) {
|
|
55
76
|
const slot = IMAGE_TILES[i];
|
|
56
|
-
const
|
|
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) };
|
|
57
81
|
const enc = encodeTilesBatch(canvas, [{ crop, name: slot.name }], tileW, tileH)[0];
|
|
58
|
-
encodedTiles.push({
|
|
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
|
+
});
|
|
59
91
|
}
|
|
60
92
|
// Fill remaining tiles with black
|
|
61
|
-
if (
|
|
93
|
+
if (tileCount < 3) {
|
|
62
94
|
const black = document.createElement('canvas');
|
|
63
95
|
black.width = tileW;
|
|
64
96
|
black.height = tileH;
|
|
@@ -66,9 +98,17 @@ export function createSplash(config) {
|
|
|
66
98
|
bctx.fillStyle = '#000000';
|
|
67
99
|
bctx.fillRect(0, 0, tileW, tileH);
|
|
68
100
|
const blackEnc = encodeTilesBatch(black, [{ crop: { sx: 0, sy: 0, sw: tileW, sh: tileH }, name: 'black' }], tileW, tileH)[0];
|
|
69
|
-
for (let i =
|
|
101
|
+
for (let i = tileCount; i < 3; i++) {
|
|
70
102
|
const slot = IMAGE_TILES[i];
|
|
71
|
-
encodedTiles.push({
|
|
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
|
+
});
|
|
72
112
|
}
|
|
73
113
|
}
|
|
74
114
|
}
|
package/dist/splash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splash.js","sourceRoot":"","sources":["../splash.ts"],"names":[],"mappings":"AAAA
|
|
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