@mentra/sdk 2.1.2-alpha.1 โ 2.1.3
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/app/session/layouts.d.ts +63 -3
- package/dist/app/session/layouts.d.ts.map +1 -1
- package/dist/app/session/layouts.js +101 -7
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/types/enums.d.ts +3 -1
- package/dist/types/enums.d.ts.map +1 -1
- package/dist/types/enums.js +2 -0
- package/dist/types/layouts.d.ts +16 -1
- package/dist/types/layouts.d.ts.map +1 -1
- package/dist/types/models.d.ts +1 -0
- package/dist/types/models.d.ts.map +1 -1
- package/dist/types/models.js +1 -0
- package/dist/utils/animation-utils.d.ts +206 -0
- package/dist/utils/animation-utils.d.ts.map +1 -0
- package/dist/utils/animation-utils.js +339 -0
- package/dist/utils/bitmap-utils.d.ts +147 -0
- package/dist/utils/bitmap-utils.d.ts.map +1 -0
- package/dist/utils/bitmap-utils.js +338 -0
- package/package.json +1 -1
@@ -111,20 +111,26 @@ export declare class LayoutManager {
|
|
111
111
|
/**
|
112
112
|
* ๐ Shows a bitmap
|
113
113
|
*
|
114
|
-
*
|
114
|
+
* Uses the proven animation system internally for proper L/R eye synchronization.
|
115
|
+
* This ensures single bitmap displays work consistently with the same
|
116
|
+
* hardware-optimized timing as animations.
|
117
|
+
*
|
118
|
+
* @param data - hex or base64 encoded bitmap data
|
115
119
|
* @param options - Optional parameters (view, duration)
|
116
120
|
*
|
117
121
|
* @example
|
118
122
|
* ```typescript
|
119
123
|
* layouts.showBitmapView(
|
120
|
-
*
|
124
|
+
* yourHexOrBase64EncodedBitmapDataString
|
121
125
|
* );
|
122
126
|
* ```
|
123
127
|
*/
|
124
128
|
showBitmapView(data: string, options?: {
|
125
129
|
view?: ViewType;
|
126
130
|
durationMs?: number;
|
127
|
-
}):
|
131
|
+
}): {
|
132
|
+
stop: () => void;
|
133
|
+
};
|
128
134
|
/**
|
129
135
|
* ๐ Shows a dashboard card with left and right text
|
130
136
|
*
|
@@ -146,5 +152,59 @@ export declare class LayoutManager {
|
|
146
152
|
view?: ViewType;
|
147
153
|
durationMs?: number;
|
148
154
|
}): void;
|
155
|
+
/**
|
156
|
+
* ๐งน Clears the display
|
157
|
+
*
|
158
|
+
* Best for:
|
159
|
+
* - Clearing previous content
|
160
|
+
* - Resetting display state
|
161
|
+
* - Starting fresh
|
162
|
+
*
|
163
|
+
* @param options - Optional parameters (view)
|
164
|
+
*
|
165
|
+
* @example
|
166
|
+
* ```typescript
|
167
|
+
* layouts.clearView();
|
168
|
+
* layouts.clearView({ view: ViewType.DASHBOARD });
|
169
|
+
* ```
|
170
|
+
*/
|
171
|
+
clearView(options?: {
|
172
|
+
view?: ViewType;
|
173
|
+
}): void;
|
174
|
+
/**
|
175
|
+
* ๐ฌ Shows an animated sequence of bitmap images (iOS-controlled timing)
|
176
|
+
*
|
177
|
+
* Sends complete animation package to iOS for device-controlled timing.
|
178
|
+
* This provides superior performance and synchronization by letting
|
179
|
+
* the device control the display timing directly.
|
180
|
+
*
|
181
|
+
* Best for:
|
182
|
+
* - Smooth high-performance animations
|
183
|
+
* - Precise timing control
|
184
|
+
* - Synchronized left/right display
|
185
|
+
* - EvenDemo-quality performance
|
186
|
+
*
|
187
|
+
* @param bitmapDataArray - Array of bitmap data strings (hex or base64 encoded)
|
188
|
+
* @param intervalMs - Time between frames in milliseconds (default: 1650ms)
|
189
|
+
* @param repeat - Whether to loop the animation continuously (default: false)
|
190
|
+
* @param options - Optional parameters (view)
|
191
|
+
*
|
192
|
+
* @example
|
193
|
+
* ```typescript
|
194
|
+
* // Device-controlled animation (recommended)
|
195
|
+
* const frames = ['hexdata1', 'hexdata2', 'hexdata3'];
|
196
|
+
* layouts.showBitmapAnimation(frames, 1650, true);
|
197
|
+
*
|
198
|
+
* // Single-cycle animation
|
199
|
+
* layouts.showBitmapAnimation(loadingFrames, 1650, false);
|
200
|
+
* ```
|
201
|
+
*
|
202
|
+
* @returns Animation controller object with stop() method
|
203
|
+
*/
|
204
|
+
showBitmapAnimation(bitmapDataArray: string[], intervalMs?: number, repeat?: boolean, options?: {
|
205
|
+
view?: ViewType;
|
206
|
+
}): {
|
207
|
+
stop: () => void;
|
208
|
+
};
|
149
209
|
}
|
150
210
|
//# sourceMappingURL=layouts.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../../src/app/session/layouts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,cAAc,EAOd,QAAQ,
|
1
|
+
{"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../../src/app/session/layouts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,cAAc,EAOd,QAAQ,EAKT,MAAM,aAAa,CAAC;AAErB,qBAAa,aAAa;IAQtB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IARrB;;;;;OAKG;gBAEO,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI;IAGxD;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAuG1B;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAC;IAuCnD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAcpD;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAclD;;;;;;;;;;;;;;;;KAgBC;IACH,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;cA0HzC,MAAM,IAAI;;IA/FrB;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAcpD;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE;IAUvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,mBAAmB,CACjB,eAAe,EAAE,MAAM,EAAE,EACzB,UAAU,GAAE,MAAa,EACzB,MAAM,GAAE,OAAe,EACvB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,GAC5B;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE;CA8BxB"}
|
@@ -96,6 +96,9 @@ class LayoutManager {
|
|
96
96
|
throw new Error("Bitmap data is too large (>1MB), please reduce size");
|
97
97
|
}
|
98
98
|
break;
|
99
|
+
case types_1.LayoutType.CLEAR_VIEW:
|
100
|
+
// ClearView has no additional validation needed
|
101
|
+
break;
|
99
102
|
}
|
100
103
|
// Validate view type
|
101
104
|
if (view !== types_1.ViewType.MAIN && view !== types_1.ViewType.DASHBOARD) {
|
@@ -236,22 +239,38 @@ class LayoutManager {
|
|
236
239
|
/**
|
237
240
|
* ๐ Shows a bitmap
|
238
241
|
*
|
239
|
-
*
|
242
|
+
* Uses the proven animation system internally for proper L/R eye synchronization.
|
243
|
+
* This ensures single bitmap displays work consistently with the same
|
244
|
+
* hardware-optimized timing as animations.
|
245
|
+
*
|
246
|
+
* @param data - hex or base64 encoded bitmap data
|
240
247
|
* @param options - Optional parameters (view, duration)
|
241
248
|
*
|
242
249
|
* @example
|
243
250
|
* ```typescript
|
244
251
|
* layouts.showBitmapView(
|
245
|
-
*
|
252
|
+
* yourHexOrBase64EncodedBitmapDataString
|
246
253
|
* );
|
247
254
|
* ```
|
248
255
|
*/
|
249
256
|
showBitmapView(data, options) {
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
257
|
+
// Use the proven animation system for single frame display
|
258
|
+
// This ensures proper L/R eye synchronization that works with
|
259
|
+
// the optimized iOS BLE transmission system
|
260
|
+
const duration = options?.durationMs || 5000; // Default 5 seconds
|
261
|
+
const frameInterval = 1650; // Use same interval as working animations
|
262
|
+
// Create short multi-frame animation for better L/R sync
|
263
|
+
// Repeat the same frame a few times to mimic continuous animation behavior
|
264
|
+
const frames = [data, data, data]; // Triple the frame for stability
|
265
|
+
const animation = this.showBitmapAnimation(frames, // Multi-frame array (same image repeated)
|
266
|
+
frameInterval, // Use proven 1650ms interval
|
267
|
+
false, // Don't repeat infinitely
|
268
|
+
{ view: options?.view });
|
269
|
+
// Auto-stop after duration
|
270
|
+
setTimeout(() => {
|
271
|
+
animation.stop();
|
272
|
+
}, duration);
|
273
|
+
return animation;
|
255
274
|
}
|
256
275
|
/**
|
257
276
|
* ๐ Shows a dashboard card with left and right text
|
@@ -278,5 +297,80 @@ class LayoutManager {
|
|
278
297
|
};
|
279
298
|
this.sendMessage(this.createDisplayEvent(layout, options?.view || types_1.ViewType.DASHBOARD, options?.durationMs));
|
280
299
|
}
|
300
|
+
/**
|
301
|
+
* ๐งน Clears the display
|
302
|
+
*
|
303
|
+
* Best for:
|
304
|
+
* - Clearing previous content
|
305
|
+
* - Resetting display state
|
306
|
+
* - Starting fresh
|
307
|
+
*
|
308
|
+
* @param options - Optional parameters (view)
|
309
|
+
*
|
310
|
+
* @example
|
311
|
+
* ```typescript
|
312
|
+
* layouts.clearView();
|
313
|
+
* layouts.clearView({ view: ViewType.DASHBOARD });
|
314
|
+
* ```
|
315
|
+
*/
|
316
|
+
clearView(options) {
|
317
|
+
const layout = {
|
318
|
+
layoutType: types_1.LayoutType.CLEAR_VIEW
|
319
|
+
};
|
320
|
+
this.sendMessage(this.createDisplayEvent(layout, options?.view));
|
321
|
+
}
|
322
|
+
/**
|
323
|
+
* ๐ฌ Shows an animated sequence of bitmap images (iOS-controlled timing)
|
324
|
+
*
|
325
|
+
* Sends complete animation package to iOS for device-controlled timing.
|
326
|
+
* This provides superior performance and synchronization by letting
|
327
|
+
* the device control the display timing directly.
|
328
|
+
*
|
329
|
+
* Best for:
|
330
|
+
* - Smooth high-performance animations
|
331
|
+
* - Precise timing control
|
332
|
+
* - Synchronized left/right display
|
333
|
+
* - EvenDemo-quality performance
|
334
|
+
*
|
335
|
+
* @param bitmapDataArray - Array of bitmap data strings (hex or base64 encoded)
|
336
|
+
* @param intervalMs - Time between frames in milliseconds (default: 1650ms)
|
337
|
+
* @param repeat - Whether to loop the animation continuously (default: false)
|
338
|
+
* @param options - Optional parameters (view)
|
339
|
+
*
|
340
|
+
* @example
|
341
|
+
* ```typescript
|
342
|
+
* // Device-controlled animation (recommended)
|
343
|
+
* const frames = ['hexdata1', 'hexdata2', 'hexdata3'];
|
344
|
+
* layouts.showBitmapAnimation(frames, 1650, true);
|
345
|
+
*
|
346
|
+
* // Single-cycle animation
|
347
|
+
* layouts.showBitmapAnimation(loadingFrames, 1650, false);
|
348
|
+
* ```
|
349
|
+
*
|
350
|
+
* @returns Animation controller object with stop() method
|
351
|
+
*/
|
352
|
+
showBitmapAnimation(bitmapDataArray, intervalMs = 1650, repeat = false, options) {
|
353
|
+
// Validation
|
354
|
+
if (!Array.isArray(bitmapDataArray) || bitmapDataArray.length === 0) {
|
355
|
+
throw new Error("showBitmapAnimation requires a non-empty array of bitmap data");
|
356
|
+
}
|
357
|
+
// Send complete animation package to iOS for device-controlled timing
|
358
|
+
const layout = {
|
359
|
+
layoutType: types_1.LayoutType.BITMAP_ANIMATION,
|
360
|
+
frames: bitmapDataArray,
|
361
|
+
interval: intervalMs,
|
362
|
+
repeat: repeat
|
363
|
+
};
|
364
|
+
this.sendMessage(this.createDisplayEvent(layout, options?.view));
|
365
|
+
console.log(`๐ฌ Sent batched animation to iOS: ${bitmapDataArray.length} frames at ${intervalMs}ms${repeat ? ' (repeating)' : ''}`);
|
366
|
+
// Return controller for compatibility
|
367
|
+
return {
|
368
|
+
stop: () => {
|
369
|
+
// Send stop command to iOS
|
370
|
+
this.clearView();
|
371
|
+
console.log('๐ Animation stop requested');
|
372
|
+
}
|
373
|
+
};
|
374
|
+
}
|
281
375
|
}
|
282
376
|
exports.LayoutManager = LayoutManager;
|
package/dist/index.d.ts
CHANGED
@@ -4,6 +4,8 @@ export * from './types/messages/base';
|
|
4
4
|
export * from './types/messages/glasses-to-cloud';
|
5
5
|
export * from './types/messages/cloud-to-glasses';
|
6
6
|
export * from './types/messages/app-to-cloud';
|
7
|
+
export * from "./utils/bitmap-utils";
|
8
|
+
export * from "./utils/animation-utils";
|
7
9
|
export { AppConnectionAck, AppConnectionError, AppStopped, SettingsUpdate as AppSettingsUpdate, // Alias to avoid conflict with cloud-to-glasses SettingsUpdate
|
8
10
|
DataStream, CloudToAppMessage, TranslationData, ToolCall, StandardConnectionError, CustomMessage, ManagedStreamStatus, OutputStatus, MentraosSettingsUpdate, TranscriptionData, AudioChunk, PermissionError, PermissionErrorDetail, AudioPlayResponse, isAppConnectionAck, isAppConnectionError, isAppStopped, isSettingsUpdate, isDataStream, isAudioChunk, isDashboardModeChanged, isDashboardAlwaysOnChanged, isManagedStreamStatus, isPhotoResponse as isPhotoResponseFromCloud, isRtmpStreamStatus as isRtmpStreamStatusFromCloud } from './types/messages/cloud-to-app';
|
9
11
|
export * from './types/streams';
|
@@ -20,7 +22,7 @@ export * from "./logging/logger";
|
|
20
22
|
export { ButtonPress, HeadPosition, GlassesBatteryUpdate, PhoneBatteryUpdate, GlassesConnectionState, LocationUpdate, CalendarEvent, Vad, PhoneNotification, PhoneNotificationDismissed, StartApp, StopApp, ConnectionInit, DashboardState, OpenDashboard, GlassesToCloudMessage, PhotoResponse, RtmpStreamStatus, KeepAliveAck } from './types/messages/glasses-to-cloud';
|
21
23
|
export { ConnectionAck, ConnectionError, AuthError, DisplayEvent, AppStateChange, MicrophoneStateChange, CloudToGlassesMessage, PhotoRequestToGlasses, SettingsUpdate, StartRtmpStream, StopRtmpStream, KeepRtmpStreamAlive } from './types/messages/cloud-to-glasses';
|
22
24
|
export { AppConnectionInit, AppSubscriptionUpdate, RtmpStreamRequest, RtmpStreamStopRequest, AppToCloudMessage, PhotoRequest } from './types/messages/app-to-cloud';
|
23
|
-
export { TextWall, DoubleTextWall, DashboardCard, ReferenceCard, Layout, DisplayRequest } from './types/layouts';
|
25
|
+
export { TextWall, DoubleTextWall, DashboardCard, ReferenceCard, Layout, DisplayRequest, BitmapView, ClearView, } from './types/layouts';
|
24
26
|
export { isButtonPress, isHeadPosition, isConnectionInit, isStartApp, isStopApp, isPhotoResponse as isPhotoResponseFromGlasses, isRtmpStreamStatus as isRtmpStreamStatusFromGlasses, isKeepAliveAck, isPhoneNotificationDismissed } from './types/messages/glasses-to-cloud';
|
25
27
|
export { isConnectionAck, isDisplayEvent, isAppStateChange, isPhotoRequest, isSettingsUpdate as isSettingsUpdateToGlasses, isStartRtmpStream, isStopRtmpStream, isKeepRtmpStreamAlive } from './types/messages/cloud-to-glasses';
|
26
28
|
export { isAppConnectionInit, isAppSubscriptionUpdate, isDisplayRequest, isRtmpStreamRequest, isRtmpStreamStopRequest, isPhotoRequest as isPhotoRequestFromApp } from './types/messages/app-to-cloud';
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,eAAe,CAAC;AAG9B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,cAAc,IAAI,iBAAiB,EAAG,+DAA+D;AACrG,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EAEjB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EAGrB,eAAe,IAAI,wBAAwB,EAC3C,kBAAkB,IAAI,2BAA2B,EAClD,MAAM,+BAA+B,CAAC;AAGvC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,aAAa,CAAC;AAG5B,cAAc,kBAAkB,CAAC;AAOjC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,GAAG,EACH,iBAAiB,EACjB,0BAA0B,EAC1B,QAAQ,EACR,OAAO,EACP,cAAc,EACd,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACb,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,aAAa,EACb,eAAe,EACf,SAAS,EACT,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,cAAc,EACd,mBAAmB,EACpB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACb,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,QAAQ,EACR,cAAc,EACd,aAAa,EACb,aAAa,EACb,MAAM,EACN,cAAc,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -25,6 +25,9 @@ __exportStar(require("./types/messages/base"), exports);
|
|
25
25
|
__exportStar(require("./types/messages/glasses-to-cloud"), exports);
|
26
26
|
__exportStar(require("./types/messages/cloud-to-glasses"), exports);
|
27
27
|
__exportStar(require("./types/messages/app-to-cloud"), exports);
|
28
|
+
// Utility exports
|
29
|
+
__exportStar(require("./utils/bitmap-utils"), exports);
|
30
|
+
__exportStar(require("./utils/animation-utils"), exports);
|
28
31
|
// Export cloud-to-app but exclude the conflicting type guards
|
29
32
|
var cloud_to_app_1 = require("./types/messages/cloud-to-app");
|
30
33
|
// Type guards (excluding isPhotoResponse and isRtmpStreamStatus which conflict)
|
package/dist/types/enums.d.ts
CHANGED
@@ -33,7 +33,9 @@ export declare enum LayoutType {
|
|
33
33
|
DOUBLE_TEXT_WALL = "double_text_wall",
|
34
34
|
DASHBOARD_CARD = "dashboard_card",
|
35
35
|
REFERENCE_CARD = "reference_card",
|
36
|
-
BITMAP_VIEW = "bitmap_view"
|
36
|
+
BITMAP_VIEW = "bitmap_view",
|
37
|
+
BITMAP_ANIMATION = "bitmap_animation",
|
38
|
+
CLEAR_VIEW = "clear_view"
|
37
39
|
}
|
38
40
|
/**
|
39
41
|
* Types of views for displaying content
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../src/types/enums.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,oBAAY,OAAO;IACf,gBAAgB,qBAAqB,CAAG,6CAA6C;IACrF,UAAU,eAAe,CAAe,0CAA0C;IAClF,QAAQ,aAAa;CACxB;AAGD;;GAEG;AACH,oBAAY,QAAQ;IAChB,aAAa,kBAAkB,CAAG,gBAAgB;IAClD,SAAS,cAAc,CAAW,0BAA0B;IAC5D,OAAO,YAAY,CAAe,cAAc;IAChD,OAAO,YAAY,CAAe,qBAAqB;IACvD,OAAO,YAAY,CAAe,mBAAmB;IACrD,KAAK,UAAU;CAClB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAChB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;CAEZ;AAED;;GAEG;AACH,oBAAY,UAAU;IAClB,SAAS,cAAc;IACvB,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;
|
1
|
+
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../src/types/enums.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,oBAAY,OAAO;IACf,gBAAgB,qBAAqB,CAAG,6CAA6C;IACrF,UAAU,eAAe,CAAe,0CAA0C;IAClF,QAAQ,aAAa;CACxB;AAGD;;GAEG;AACH,oBAAY,QAAQ;IAChB,aAAa,kBAAkB,CAAG,gBAAgB;IAClD,SAAS,cAAc,CAAW,0BAA0B;IAC5D,OAAO,YAAY,CAAe,cAAc;IAChD,OAAO,YAAY,CAAe,qBAAqB;IACvD,OAAO,YAAY,CAAe,mBAAmB;IACrD,KAAK,UAAU;CAClB;AAED;;GAEG;AACH,oBAAY,QAAQ;IAChB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;CAEZ;AAED;;GAEG;AACH,oBAAY,UAAU;IAClB,SAAS,cAAc;IACvB,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;CAC5B;AAED;;GAEG;AACH,oBAAY,QAAQ;IAChB,SAAS,cAAc,CAAI,oCAAoC;IAC/D,SAAS,cAAc,CAAI,+BAA+B;IAC1D,IAAI,SAAS;CAChB;AAGD,oBAAY,cAAc;IACtB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,mBAAmB,wBAAwB;IAC3C,kBAAkB,uBAAuB;IACzC,WAAW,gBAAgB;IAC3B,WAAW,eAAe;IAC1B,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;CAC9B"}
|
package/dist/types/enums.js
CHANGED
@@ -44,6 +44,8 @@ var LayoutType;
|
|
44
44
|
LayoutType["DASHBOARD_CARD"] = "dashboard_card";
|
45
45
|
LayoutType["REFERENCE_CARD"] = "reference_card";
|
46
46
|
LayoutType["BITMAP_VIEW"] = "bitmap_view";
|
47
|
+
LayoutType["BITMAP_ANIMATION"] = "bitmap_animation";
|
48
|
+
LayoutType["CLEAR_VIEW"] = "clear_view";
|
47
49
|
})(LayoutType || (exports.LayoutType = LayoutType = {}));
|
48
50
|
/**
|
49
51
|
* Types of views for displaying content
|
package/dist/types/layouts.d.ts
CHANGED
@@ -36,10 +36,25 @@ export interface BitmapView {
|
|
36
36
|
layoutType: LayoutType.BITMAP_VIEW;
|
37
37
|
data: string;
|
38
38
|
}
|
39
|
+
/**
|
40
|
+
* Bitmap animation layout - sends batched frames for iOS-controlled timing
|
41
|
+
*/
|
42
|
+
export interface BitmapAnimation {
|
43
|
+
layoutType: LayoutType.BITMAP_ANIMATION;
|
44
|
+
frames: string[];
|
45
|
+
interval: number;
|
46
|
+
repeat: boolean;
|
47
|
+
}
|
48
|
+
/**
|
49
|
+
* Clear view layout - clears the display
|
50
|
+
*/
|
51
|
+
export interface ClearView {
|
52
|
+
layoutType: LayoutType.CLEAR_VIEW;
|
53
|
+
}
|
39
54
|
/**
|
40
55
|
* Union type for all layouts
|
41
56
|
*/
|
42
|
-
export type Layout = TextWall | DoubleTextWall | DashboardCard | ReferenceCard | BitmapView;
|
57
|
+
export type Layout = TextWall | DoubleTextWall | DashboardCard | ReferenceCard | BitmapView | BitmapAnimation | ClearView;
|
43
58
|
export interface DisplayRequest extends BaseMessage {
|
44
59
|
type: AppToCloudMessageType.DISPLAY_REQUEST;
|
45
60
|
packageName: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../src/types/layouts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;
|
1
|
+
{"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../src/types/layouts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,GAAG,eAAe,GAAG,SAAS,CAAC;AAE1H,MAAM,WAAW,cAAe,SAAQ,WAAW;IAC/C,IAAI,EAAE,qBAAqB,CAAC,eAAe,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B"}
|
package/dist/types/models.d.ts
CHANGED
@@ -25,6 +25,7 @@ export declare enum PermissionType {
|
|
25
25
|
MICROPHONE = "MICROPHONE",
|
26
26
|
LOCATION = "LOCATION",
|
27
27
|
CALENDAR = "CALENDAR",
|
28
|
+
CAMERA = "CAMERA",
|
28
29
|
NOTIFICATIONS = "NOTIFICATIONS",
|
29
30
|
READ_NOTIFICATIONS = "READ_NOTIFICATIONS",
|
30
31
|
POST_NOTIFICATIONS = "POST_NOTIFICATIONS",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/types/models.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAsB,OAAO,EAAE,MAAM,SAAS,CAAC;AAItE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAGD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,oBAAY,cAAc;IACxB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,QAAQ,aAAa;
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/types/models.ts"],"names":[],"mappings":"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"}
|
package/dist/types/models.js
CHANGED
@@ -11,6 +11,7 @@ var PermissionType;
|
|
11
11
|
PermissionType["MICROPHONE"] = "MICROPHONE";
|
12
12
|
PermissionType["LOCATION"] = "LOCATION";
|
13
13
|
PermissionType["CALENDAR"] = "CALENDAR";
|
14
|
+
PermissionType["CAMERA"] = "CAMERA";
|
14
15
|
// Legacy notification permission (backward compatibility)
|
15
16
|
PermissionType["NOTIFICATIONS"] = "NOTIFICATIONS";
|
16
17
|
// New granular notification permissions
|
@@ -0,0 +1,206 @@
|
|
1
|
+
/**
|
2
|
+
* ๐ฌ Animation Utilities Module
|
3
|
+
*
|
4
|
+
* Provides helper functions for creating and managing bitmap animations in MentraOS applications.
|
5
|
+
* Includes timing utilities, animation factories, and performance optimization helpers.
|
6
|
+
*
|
7
|
+
* @example
|
8
|
+
* ```typescript
|
9
|
+
* import { AnimationUtils } from '@mentra/sdk';
|
10
|
+
*
|
11
|
+
* // Create animation from files
|
12
|
+
* const animation = await AnimationUtils.createBitmapAnimation(
|
13
|
+
* session, './frames', 10, 1750, true
|
14
|
+
* );
|
15
|
+
*
|
16
|
+
* // Simple delay utility
|
17
|
+
* await AnimationUtils.delay(2000);
|
18
|
+
*
|
19
|
+
* // Stop animation
|
20
|
+
* animation.stop();
|
21
|
+
* ```
|
22
|
+
*/
|
23
|
+
import { AppSession } from '../app/session';
|
24
|
+
import { LoadFramesOptions } from './bitmap-utils';
|
25
|
+
/**
|
26
|
+
* Configuration options for bitmap animations
|
27
|
+
*/
|
28
|
+
export interface AnimationConfig {
|
29
|
+
/** Time between frames in milliseconds (default: 1750ms - optimized for MentraOS) */
|
30
|
+
intervalMs?: number;
|
31
|
+
/** Whether to loop the animation continuously (default: false) */
|
32
|
+
repeat?: boolean;
|
33
|
+
/** Validate frames before starting animation (default: true) */
|
34
|
+
validateFrames?: boolean;
|
35
|
+
/** Options for loading frames from files */
|
36
|
+
loadOptions?: LoadFramesOptions;
|
37
|
+
/** Callback fired when animation starts */
|
38
|
+
onStart?: () => void;
|
39
|
+
/** Callback fired when animation stops/completes */
|
40
|
+
onStop?: () => void;
|
41
|
+
/** Callback fired on each frame display */
|
42
|
+
onFrame?: (frameIndex: number, totalFrames: number) => void;
|
43
|
+
/** Callback fired if animation encounters an error */
|
44
|
+
onError?: (error: string) => void;
|
45
|
+
}
|
46
|
+
/**
|
47
|
+
* Animation controller interface
|
48
|
+
*/
|
49
|
+
export interface AnimationController {
|
50
|
+
/** Stop the animation */
|
51
|
+
stop: () => void;
|
52
|
+
/** Check if animation is currently running */
|
53
|
+
isRunning: () => boolean;
|
54
|
+
/** Get current frame index */
|
55
|
+
getCurrentFrame: () => number;
|
56
|
+
/** Get total frame count */
|
57
|
+
getTotalFrames: () => number;
|
58
|
+
}
|
59
|
+
/**
|
60
|
+
* Performance timing information
|
61
|
+
*/
|
62
|
+
export interface TimingInfo {
|
63
|
+
/** Target interval between frames */
|
64
|
+
targetInterval: number;
|
65
|
+
/** Actual measured interval between frames */
|
66
|
+
actualInterval: number;
|
67
|
+
/** Timing drift (difference between target and actual) */
|
68
|
+
drift: number;
|
69
|
+
/** Frame rate (frames per second) */
|
70
|
+
fps: number;
|
71
|
+
}
|
72
|
+
/**
|
73
|
+
* Utility class for creating and managing animations in MentraOS applications
|
74
|
+
*/
|
75
|
+
export declare class AnimationUtils {
|
76
|
+
/**
|
77
|
+
* Simple async delay helper
|
78
|
+
*
|
79
|
+
* @param ms - Milliseconds to delay
|
80
|
+
* @returns Promise that resolves after the specified delay
|
81
|
+
*
|
82
|
+
* @example
|
83
|
+
* ```typescript
|
84
|
+
* console.log('Starting...');
|
85
|
+
* await AnimationUtils.delay(2000);
|
86
|
+
* console.log('2 seconds later!');
|
87
|
+
* ```
|
88
|
+
*/
|
89
|
+
static delay(ms: number): Promise<void>;
|
90
|
+
/**
|
91
|
+
* Create bitmap animation from files with advanced configuration
|
92
|
+
*
|
93
|
+
* @param session - MentraOS app session
|
94
|
+
* @param basePath - Directory containing animation frames
|
95
|
+
* @param frameCount - Number of frames to load
|
96
|
+
* @param config - Animation configuration options
|
97
|
+
* @returns Promise resolving to animation controller
|
98
|
+
*
|
99
|
+
* @example
|
100
|
+
* ```typescript
|
101
|
+
* // Simple animation
|
102
|
+
* const animation = await AnimationUtils.createBitmapAnimation(
|
103
|
+
* session, './animations', 10
|
104
|
+
* );
|
105
|
+
*
|
106
|
+
* // Advanced configuration
|
107
|
+
* const advancedAnimation = await AnimationUtils.createBitmapAnimation(
|
108
|
+
* session, './sprites', 8, {
|
109
|
+
* intervalMs: 1000,
|
110
|
+
* repeat: true,
|
111
|
+
* loadOptions: { filePattern: 'sprite_{i}.bmp', startFrame: 0 },
|
112
|
+
* onFrame: (frame, total) => console.log(`Frame ${frame}/${total}`),
|
113
|
+
* onError: (error) => console.error('Animation error:', error)
|
114
|
+
* }
|
115
|
+
* );
|
116
|
+
* ```
|
117
|
+
*/
|
118
|
+
static createBitmapAnimation(session: AppSession, basePath: string, frameCount: number, config?: AnimationConfig): Promise<AnimationController>;
|
119
|
+
/**
|
120
|
+
* Create bitmap animation from pre-loaded frame data
|
121
|
+
*
|
122
|
+
* @param session - MentraOS app session
|
123
|
+
* @param frames - Array of hex-encoded bitmap data
|
124
|
+
* @param config - Animation configuration options
|
125
|
+
* @returns Animation controller
|
126
|
+
*
|
127
|
+
* @example
|
128
|
+
* ```typescript
|
129
|
+
* const frames = ['424d461a...', '424d461b...', '424d461c...'];
|
130
|
+
* const animation = AnimationUtils.createBitmapAnimationFromFrames(
|
131
|
+
* session, frames, { intervalMs: 1500, repeat: true }
|
132
|
+
* );
|
133
|
+
* ```
|
134
|
+
*/
|
135
|
+
static createBitmapAnimationFromFrames(session: AppSession, frames: string[], config?: Omit<AnimationConfig, 'loadOptions' | 'validateFrames'>): AnimationController;
|
136
|
+
/**
|
137
|
+
* Create a sequence of bitmap displays with custom timing
|
138
|
+
*
|
139
|
+
* @param session - MentraOS app session
|
140
|
+
* @param sequence - Array of frame data with individual timing
|
141
|
+
* @returns Promise that resolves when sequence completes
|
142
|
+
*
|
143
|
+
* @example
|
144
|
+
* ```typescript
|
145
|
+
* await AnimationUtils.createBitmapSequence(session, [
|
146
|
+
* { frame: frame1Hex, duration: 1000 },
|
147
|
+
* { frame: frame2Hex, duration: 500 },
|
148
|
+
* { frame: frame3Hex, duration: 2000 }
|
149
|
+
* ]);
|
150
|
+
* ```
|
151
|
+
*/
|
152
|
+
static createBitmapSequence(session: AppSession, sequence: Array<{
|
153
|
+
frame: string;
|
154
|
+
duration: number;
|
155
|
+
}>): Promise<void>;
|
156
|
+
/**
|
157
|
+
* Measure animation timing performance
|
158
|
+
*
|
159
|
+
* @param targetInterval - Expected interval between frames in ms
|
160
|
+
* @param measureDuration - How long to measure in ms (default: 10 seconds)
|
161
|
+
* @returns Promise resolving to timing performance data
|
162
|
+
*
|
163
|
+
* @example
|
164
|
+
* ```typescript
|
165
|
+
* const timing = await AnimationUtils.measureTiming(1750, 10000);
|
166
|
+
* console.log(`Target: ${timing.targetInterval}ms, Actual: ${timing.actualInterval}ms`);
|
167
|
+
* console.log(`Drift: ${timing.drift}ms, FPS: ${timing.fps.toFixed(1)}`);
|
168
|
+
* ```
|
169
|
+
*/
|
170
|
+
static measureTiming(targetInterval: number, measureDuration?: number): Promise<TimingInfo>;
|
171
|
+
/**
|
172
|
+
* Create optimized animation settings for different hardware
|
173
|
+
*
|
174
|
+
* @param deviceType - Target device type
|
175
|
+
* @returns Recommended animation configuration
|
176
|
+
*
|
177
|
+
* @example
|
178
|
+
* ```typescript
|
179
|
+
* const config = AnimationUtils.getOptimizedConfig('even-realities-g1');
|
180
|
+
* const animation = await AnimationUtils.createBitmapAnimation(
|
181
|
+
* session, './frames', 10, config
|
182
|
+
* );
|
183
|
+
* ```
|
184
|
+
*/
|
185
|
+
static getOptimizedConfig(deviceType: 'even-realities-g1' | 'generic'): AnimationConfig;
|
186
|
+
/**
|
187
|
+
* Preload and cache animation frames for better performance
|
188
|
+
*
|
189
|
+
* @param basePath - Directory containing frames
|
190
|
+
* @param frameCount - Number of frames to preload
|
191
|
+
* @param options - Loading options
|
192
|
+
* @returns Promise resolving to cached frame data
|
193
|
+
*
|
194
|
+
* @example
|
195
|
+
* ```typescript
|
196
|
+
* // Preload frames
|
197
|
+
* const cachedFrames = await AnimationUtils.preloadFrames('./animations', 10);
|
198
|
+
*
|
199
|
+
* // Use cached frames multiple times
|
200
|
+
* const animation1 = AnimationUtils.createBitmapAnimationFromFrames(session, cachedFrames);
|
201
|
+
* const animation2 = AnimationUtils.createBitmapAnimationFromFrames(session, cachedFrames);
|
202
|
+
* ```
|
203
|
+
*/
|
204
|
+
static preloadFrames(basePath: string, frameCount: number, options?: LoadFramesOptions): Promise<string[]>;
|
205
|
+
}
|
206
|
+
//# sourceMappingURL=animation-utils.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"animation-utils.d.ts","sourceRoot":"","sources":["../../src/utils/animation-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAe,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,sDAAsD;IACtD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,yBAAyB;IACzB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,8BAA8B;IAC9B,eAAe,EAAE,MAAM,MAAM,CAAC;IAC9B,4BAA4B;IAC5B,cAAc,EAAE,MAAM,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,qCAAqC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,cAAc;IAEvB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;WACU,qBAAqB,CAC9B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,eAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IAgD/B;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,+BAA+B,CAClC,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,GAAE,IAAI,CAAC,eAAe,EAAE,aAAa,GAAG,gBAAgB,CAAM,GACrE,mBAAmB;IAyFtB;;;;;;;;;;;;;;;OAeG;WACU,oBAAoB,CAC7B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GACrD,OAAO,CAAC,IAAI,CAAC;IAuBhB;;;;;;;;;;;;;OAaG;WACU,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,GAAE,MAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IA0CxG;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,mBAAmB,GAAG,SAAS,GAAG,eAAe;IA2BvF;;;;;;;;;;;;;;;;;OAiBG;WACU,aAAa,CACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC;CAYvB"}
|