@mentra/sdk 2.1.29-beta.1 → 2.1.30-beta.1
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/events.d.ts +9 -0
- package/dist/app/session/events.d.ts.map +1 -1
- package/dist/app/session/index.d.ts +8 -2
- package/dist/app/session/index.d.ts.map +1 -1
- package/dist/display-utils/helpers/DisplayHelpers.d.ts +165 -0
- package/dist/display-utils/helpers/DisplayHelpers.d.ts.map +1 -0
- package/dist/display-utils/helpers/ScrollView.d.ts +183 -0
- package/dist/display-utils/helpers/ScrollView.d.ts.map +1 -0
- package/dist/display-utils/helpers/index.d.ts +11 -0
- package/dist/display-utils/helpers/index.d.ts.map +1 -0
- package/dist/display-utils/index.d.ts +108 -0
- package/dist/display-utils/index.d.ts.map +1 -0
- package/dist/display-utils/measurer/TextMeasurer.d.ts +160 -0
- package/dist/display-utils/measurer/TextMeasurer.d.ts.map +1 -0
- package/dist/display-utils/measurer/index.d.ts +10 -0
- package/dist/display-utils/measurer/index.d.ts.map +1 -0
- package/dist/display-utils/measurer/script-detection.d.ts +53 -0
- package/dist/display-utils/measurer/script-detection.d.ts.map +1 -0
- package/dist/display-utils/profiles/g1.d.ts +33 -0
- package/dist/display-utils/profiles/g1.d.ts.map +1 -0
- package/dist/display-utils/profiles/index.d.ts +9 -0
- package/dist/display-utils/profiles/index.d.ts.map +1 -0
- package/dist/display-utils/profiles/types.d.ts +95 -0
- package/dist/display-utils/profiles/types.d.ts.map +1 -0
- package/dist/display-utils/wrapper/TextWrapper.d.ts +94 -0
- package/dist/display-utils/wrapper/TextWrapper.d.ts.map +1 -0
- package/dist/display-utils/wrapper/index.d.ts +12 -0
- package/dist/display-utils/wrapper/index.d.ts.map +1 -0
- package/dist/display-utils/wrapper/types.d.ts +71 -0
- package/dist/display-utils/wrapper/types.d.ts.map +1 -0
- package/dist/display-utils.d.ts +27 -986
- package/dist/display-utils.d.ts.map +1 -1
- package/dist/display-utils.js +9 -9
- package/dist/display-utils.js.map +2 -2
- package/dist/index.js +47 -30
- package/dist/index.js.map +4 -4
- package/package.json +4 -10
|
@@ -178,6 +178,15 @@ export declare class EventManager {
|
|
|
178
178
|
* ➖ Remove an event handler
|
|
179
179
|
*/
|
|
180
180
|
private removeHandler;
|
|
181
|
+
/**
|
|
182
|
+
* 🔍 Get all currently registered stream types
|
|
183
|
+
* Returns the streams that have at least one handler registered.
|
|
184
|
+
* Used to derive subscriptions from handlers (single source of truth).
|
|
185
|
+
*
|
|
186
|
+
* This is the fix for Bug 007: subscriptions are now derived from handlers
|
|
187
|
+
* instead of being stored separately, preventing drift between the two.
|
|
188
|
+
*/
|
|
189
|
+
getRegisteredStreams(): ExtendedStreamType[];
|
|
181
190
|
/**
|
|
182
191
|
* 📡 Emit an event to all registered handlers with error isolation
|
|
183
192
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/app/session/events.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/app/session/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🎯 App Session Module
|
|
3
|
+
*
|
|
4
|
+
* Manages an active Third Party App session with MentraOS Cloud.
|
|
5
|
+
* Handles real-time communication, event subscriptions, and display management.
|
|
6
|
+
*/
|
|
1
7
|
import { EventManager, EventData } from "./events";
|
|
2
8
|
import { LayoutManager } from "./layouts";
|
|
3
9
|
import { SettingsManager } from "./settings";
|
|
@@ -73,8 +79,8 @@ export declare class AppSession {
|
|
|
73
79
|
private sessionId;
|
|
74
80
|
/** Number of reconnection attempts made */
|
|
75
81
|
private reconnectAttempts;
|
|
76
|
-
/**
|
|
77
|
-
private
|
|
82
|
+
/** Flag to prevent reconnection after session termination (e.g., "User session ended") */
|
|
83
|
+
private terminated;
|
|
78
84
|
/** Map to store rate options for streams */
|
|
79
85
|
private streamRates;
|
|
80
86
|
/** Resource tracker for automatic cleanup */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/session/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/session/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type { DisplayProfile } from "../profiles/types";
|
|
2
|
+
import { TextMeasurer } from "../measurer/TextMeasurer";
|
|
3
|
+
import { TextWrapper } from "../wrapper/TextWrapper";
|
|
4
|
+
import type { WrapOptions, WrapResult } from "../wrapper/types";
|
|
5
|
+
/**
|
|
6
|
+
* Truncation result with metadata.
|
|
7
|
+
*/
|
|
8
|
+
export interface TruncateResult {
|
|
9
|
+
/** The truncated text */
|
|
10
|
+
text: string;
|
|
11
|
+
/** Whether text was truncated */
|
|
12
|
+
wasTruncated: boolean;
|
|
13
|
+
/** Width in pixels of truncated text */
|
|
14
|
+
widthPx: number;
|
|
15
|
+
/** Original text length */
|
|
16
|
+
originalLength: number;
|
|
17
|
+
/** Truncated text length */
|
|
18
|
+
truncatedLength: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Page result for pagination.
|
|
22
|
+
*/
|
|
23
|
+
export interface Page {
|
|
24
|
+
/** Lines on this page */
|
|
25
|
+
lines: string[];
|
|
26
|
+
/** Page number (1-indexed) */
|
|
27
|
+
pageNumber: number;
|
|
28
|
+
/** Total number of pages */
|
|
29
|
+
totalPages: number;
|
|
30
|
+
/** Whether this is the first page */
|
|
31
|
+
isFirst: boolean;
|
|
32
|
+
/** Whether this is the last page */
|
|
33
|
+
isLast: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Chunk result for BLE transmission.
|
|
37
|
+
*/
|
|
38
|
+
export interface Chunk {
|
|
39
|
+
/** The chunk text */
|
|
40
|
+
text: string;
|
|
41
|
+
/** Chunk index (0-indexed) */
|
|
42
|
+
index: number;
|
|
43
|
+
/** Total number of chunks */
|
|
44
|
+
totalChunks: number;
|
|
45
|
+
/** Byte size of this chunk */
|
|
46
|
+
bytes: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Optional helper utilities for common display operations.
|
|
50
|
+
* Built on top of TextMeasurer and TextWrapper for convenience.
|
|
51
|
+
*/
|
|
52
|
+
export declare class DisplayHelpers {
|
|
53
|
+
private readonly measurer;
|
|
54
|
+
private readonly wrapper;
|
|
55
|
+
private readonly profile;
|
|
56
|
+
constructor(measurer: TextMeasurer, wrapper: TextWrapper);
|
|
57
|
+
/**
|
|
58
|
+
* Truncate lines array to max count.
|
|
59
|
+
*
|
|
60
|
+
* @param lines - Array of lines
|
|
61
|
+
* @param maxLines - Maximum lines to keep
|
|
62
|
+
* @param fromEnd - If true, keep last N lines; if false, keep first N (default: false)
|
|
63
|
+
* @returns Truncated lines array
|
|
64
|
+
*/
|
|
65
|
+
truncateToLines(lines: string[], maxLines: number, fromEnd?: boolean): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Truncate text to fit within pixel width, adding ellipsis if needed.
|
|
68
|
+
*
|
|
69
|
+
* @param text - Text to truncate
|
|
70
|
+
* @param maxWidthPx - Maximum width in pixels
|
|
71
|
+
* @param ellipsis - Ellipsis string (default: '...')
|
|
72
|
+
* @returns Truncation result
|
|
73
|
+
*/
|
|
74
|
+
truncateWithEllipsis(text: string, maxWidthPx?: number, ellipsis?: string): TruncateResult;
|
|
75
|
+
/**
|
|
76
|
+
* Estimate how many lines text will need without fully wrapping.
|
|
77
|
+
* This is a quick estimate based on average character width.
|
|
78
|
+
*
|
|
79
|
+
* @param text - Text to estimate
|
|
80
|
+
* @param maxWidthPx - Optional width override
|
|
81
|
+
* @returns Estimated line count
|
|
82
|
+
*/
|
|
83
|
+
estimateLineCount(text: string, maxWidthPx?: number): number;
|
|
84
|
+
/**
|
|
85
|
+
* Wrap and truncate text to fit screen in one call.
|
|
86
|
+
*
|
|
87
|
+
* @param text - Text to fit
|
|
88
|
+
* @param options - Wrap options
|
|
89
|
+
* @returns Lines that fit on screen
|
|
90
|
+
*/
|
|
91
|
+
fitToScreen(text: string, options?: WrapOptions): string[];
|
|
92
|
+
/**
|
|
93
|
+
* Wrap text and paginate into screen-sized pages.
|
|
94
|
+
*
|
|
95
|
+
* @param text - Text to paginate
|
|
96
|
+
* @param options - Wrap options (maxLines will be used as page size)
|
|
97
|
+
* @returns Array of pages
|
|
98
|
+
*/
|
|
99
|
+
paginate(text: string, options?: WrapOptions): Page[];
|
|
100
|
+
/**
|
|
101
|
+
* Calculate UTF-8 byte size of text.
|
|
102
|
+
*
|
|
103
|
+
* @param text - Text to measure
|
|
104
|
+
* @returns Byte size
|
|
105
|
+
*/
|
|
106
|
+
calculateByteSize(text: string): number;
|
|
107
|
+
/**
|
|
108
|
+
* Check if text exceeds byte limit.
|
|
109
|
+
*
|
|
110
|
+
* @param text - Text to check
|
|
111
|
+
* @param maxBytes - Optional override (defaults to profile)
|
|
112
|
+
* @returns true if exceeds limit
|
|
113
|
+
*/
|
|
114
|
+
exceedsByteLimit(text: string, maxBytes?: number): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Split text into BLE-safe chunks.
|
|
117
|
+
* Tries to split at word/line boundaries when possible.
|
|
118
|
+
*
|
|
119
|
+
* @param text - Text to chunk
|
|
120
|
+
* @param chunkSize - Optional override (defaults to profile)
|
|
121
|
+
* @returns Array of chunks
|
|
122
|
+
*/
|
|
123
|
+
splitIntoChunks(text: string, chunkSize?: number): Chunk[];
|
|
124
|
+
/**
|
|
125
|
+
* Calculate line utilization statistics.
|
|
126
|
+
*
|
|
127
|
+
* @param result - Wrap result to analyze
|
|
128
|
+
* @returns Utilization statistics
|
|
129
|
+
*/
|
|
130
|
+
calculateUtilization(result: WrapResult): {
|
|
131
|
+
averageUtilization: number;
|
|
132
|
+
minUtilization: number;
|
|
133
|
+
maxUtilization: number;
|
|
134
|
+
totalWastedPx: number;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Pad lines array to exact count with empty strings.
|
|
138
|
+
*
|
|
139
|
+
* @param lines - Lines to pad
|
|
140
|
+
* @param targetCount - Target number of lines
|
|
141
|
+
* @param padAtEnd - If true, pad at end; if false, pad at start (default: true)
|
|
142
|
+
* @returns Padded lines array
|
|
143
|
+
*/
|
|
144
|
+
padToLineCount(lines: string[], targetCount: number, padAtEnd?: boolean): string[];
|
|
145
|
+
/**
|
|
146
|
+
* Join lines with newlines for display.
|
|
147
|
+
*
|
|
148
|
+
* @param lines - Lines to join
|
|
149
|
+
* @returns Joined string
|
|
150
|
+
*/
|
|
151
|
+
joinLines(lines: string[]): string;
|
|
152
|
+
/**
|
|
153
|
+
* Get the measurer instance.
|
|
154
|
+
*/
|
|
155
|
+
getMeasurer(): TextMeasurer;
|
|
156
|
+
/**
|
|
157
|
+
* Get the wrapper instance.
|
|
158
|
+
*/
|
|
159
|
+
getWrapper(): TextWrapper;
|
|
160
|
+
/**
|
|
161
|
+
* Get the display profile.
|
|
162
|
+
*/
|
|
163
|
+
getProfile(): DisplayProfile;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=DisplayHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisplayHelpers.d.ts","sourceRoot":"","sources":["../../../src/display-utils/helpers/DisplayHelpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import type { DisplayProfile } from "../profiles/types";
|
|
2
|
+
import { TextMeasurer } from "../measurer/TextMeasurer";
|
|
3
|
+
import { TextWrapper } from "../wrapper/TextWrapper";
|
|
4
|
+
import type { WrapOptions } from "../wrapper/types";
|
|
5
|
+
/**
|
|
6
|
+
* Scroll position information.
|
|
7
|
+
*/
|
|
8
|
+
export interface ScrollPosition {
|
|
9
|
+
/** Current scroll offset (0 = top) */
|
|
10
|
+
offset: number;
|
|
11
|
+
/** Total number of lines in content */
|
|
12
|
+
totalLines: number;
|
|
13
|
+
/** Number of visible lines (viewport size) */
|
|
14
|
+
visibleLines: number;
|
|
15
|
+
/** Maximum scroll offset */
|
|
16
|
+
maxOffset: number;
|
|
17
|
+
/** Whether we're at the top */
|
|
18
|
+
atTop: boolean;
|
|
19
|
+
/** Whether we're at the bottom */
|
|
20
|
+
atBottom: boolean;
|
|
21
|
+
/** Scroll percentage (0-100) */
|
|
22
|
+
scrollPercent: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Visible content from the scroll view.
|
|
26
|
+
*/
|
|
27
|
+
export interface ScrollViewport {
|
|
28
|
+
/** Lines currently visible */
|
|
29
|
+
lines: string[];
|
|
30
|
+
/** Scroll position info */
|
|
31
|
+
position: ScrollPosition;
|
|
32
|
+
/** Whether content was truncated during wrapping */
|
|
33
|
+
contentTruncated: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* ScrollView provides a scrollable viewport into long wrapped text.
|
|
37
|
+
*
|
|
38
|
+
* Unlike pagination (discrete pages), scrolling allows continuous
|
|
39
|
+
* movement through content line by line.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const scrollView = new ScrollView(measurer, wrapper)
|
|
44
|
+
* scrollView.setContent("Very long text that wraps to many lines...")
|
|
45
|
+
*
|
|
46
|
+
* // Get initial view (top)
|
|
47
|
+
* let view = scrollView.getViewport()
|
|
48
|
+
* console.log(view.lines) // First 5 lines
|
|
49
|
+
*
|
|
50
|
+
* // Scroll down
|
|
51
|
+
* scrollView.scrollDown(2) // Move down 2 lines
|
|
52
|
+
* view = scrollView.getViewport()
|
|
53
|
+
*
|
|
54
|
+
* // Scroll to bottom
|
|
55
|
+
* scrollView.scrollToBottom()
|
|
56
|
+
*
|
|
57
|
+
* // Scroll to specific position
|
|
58
|
+
* scrollView.scrollTo(10) // Line 10 at top of viewport
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare class ScrollView {
|
|
62
|
+
private readonly measurer;
|
|
63
|
+
private readonly wrapper;
|
|
64
|
+
private readonly profile;
|
|
65
|
+
private readonly viewportSize;
|
|
66
|
+
private allLines;
|
|
67
|
+
private wrapResult;
|
|
68
|
+
private scrollOffset;
|
|
69
|
+
constructor(measurer: TextMeasurer, wrapper: TextWrapper, viewportSize?: number);
|
|
70
|
+
/**
|
|
71
|
+
* Set the content to display in the scroll view.
|
|
72
|
+
* Wraps the text and resets scroll position to top.
|
|
73
|
+
*
|
|
74
|
+
* @param text - Text content to display
|
|
75
|
+
* @param options - Optional wrap options
|
|
76
|
+
*/
|
|
77
|
+
setContent(text: string, options?: Omit<WrapOptions, "maxLines">): void;
|
|
78
|
+
/**
|
|
79
|
+
* Append content to the existing scroll view.
|
|
80
|
+
* Useful for streaming/live content like captions.
|
|
81
|
+
*
|
|
82
|
+
* @param text - Text to append
|
|
83
|
+
* @param options - Optional wrap options
|
|
84
|
+
* @param autoScroll - If true, scroll to show new content (default: true)
|
|
85
|
+
*/
|
|
86
|
+
appendContent(text: string, options?: Omit<WrapOptions, "maxLines">, autoScroll?: boolean): void;
|
|
87
|
+
/**
|
|
88
|
+
* Get the current viewport (visible lines).
|
|
89
|
+
*/
|
|
90
|
+
getViewport(): ScrollViewport;
|
|
91
|
+
/**
|
|
92
|
+
* Get current scroll position information.
|
|
93
|
+
*/
|
|
94
|
+
getPosition(): ScrollPosition;
|
|
95
|
+
/**
|
|
96
|
+
* Scroll to a specific line offset.
|
|
97
|
+
*
|
|
98
|
+
* @param offset - Line offset (0 = top)
|
|
99
|
+
*/
|
|
100
|
+
scrollTo(offset: number): void;
|
|
101
|
+
/**
|
|
102
|
+
* Scroll down by a number of lines.
|
|
103
|
+
*
|
|
104
|
+
* @param lines - Number of lines to scroll (default: 1)
|
|
105
|
+
*/
|
|
106
|
+
scrollDown(lines?: number): void;
|
|
107
|
+
/**
|
|
108
|
+
* Scroll up by a number of lines.
|
|
109
|
+
*
|
|
110
|
+
* @param lines - Number of lines to scroll (default: 1)
|
|
111
|
+
*/
|
|
112
|
+
scrollUp(lines?: number): void;
|
|
113
|
+
/**
|
|
114
|
+
* Scroll down by one viewport (page down).
|
|
115
|
+
*/
|
|
116
|
+
pageDown(): void;
|
|
117
|
+
/**
|
|
118
|
+
* Scroll up by one viewport (page up).
|
|
119
|
+
*/
|
|
120
|
+
pageUp(): void;
|
|
121
|
+
/**
|
|
122
|
+
* Scroll to the top.
|
|
123
|
+
*/
|
|
124
|
+
scrollToTop(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Scroll to the bottom.
|
|
127
|
+
*/
|
|
128
|
+
scrollToBottom(): void;
|
|
129
|
+
/**
|
|
130
|
+
* Scroll to show a specific line in the viewport.
|
|
131
|
+
*
|
|
132
|
+
* @param lineIndex - The line index to show
|
|
133
|
+
* @param position - Where in viewport: 'top', 'center', 'bottom' (default: 'top')
|
|
134
|
+
*/
|
|
135
|
+
scrollToLine(lineIndex: number, position?: "top" | "center" | "bottom"): void;
|
|
136
|
+
/**
|
|
137
|
+
* Scroll by a percentage of total content.
|
|
138
|
+
*
|
|
139
|
+
* @param percent - Percentage (0-100)
|
|
140
|
+
*/
|
|
141
|
+
scrollToPercent(percent: number): void;
|
|
142
|
+
/**
|
|
143
|
+
* Check if currently at the top.
|
|
144
|
+
*/
|
|
145
|
+
isAtTop(): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Check if currently at the bottom.
|
|
148
|
+
*/
|
|
149
|
+
isAtBottom(): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Check if content is scrollable (more lines than viewport).
|
|
152
|
+
*/
|
|
153
|
+
isScrollable(): boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Get all lines (not just visible).
|
|
156
|
+
*/
|
|
157
|
+
getAllLines(): string[];
|
|
158
|
+
/**
|
|
159
|
+
* Get total line count.
|
|
160
|
+
*/
|
|
161
|
+
getTotalLines(): number;
|
|
162
|
+
/**
|
|
163
|
+
* Get the viewport size.
|
|
164
|
+
*/
|
|
165
|
+
getViewportSize(): number;
|
|
166
|
+
/**
|
|
167
|
+
* Clear all content and reset scroll position.
|
|
168
|
+
*/
|
|
169
|
+
clear(): void;
|
|
170
|
+
/**
|
|
171
|
+
* Get the measurer instance.
|
|
172
|
+
*/
|
|
173
|
+
getMeasurer(): TextMeasurer;
|
|
174
|
+
/**
|
|
175
|
+
* Get the wrapper instance.
|
|
176
|
+
*/
|
|
177
|
+
getWrapper(): TextWrapper;
|
|
178
|
+
/**
|
|
179
|
+
* Get the display profile.
|
|
180
|
+
*/
|
|
181
|
+
getProfile(): DisplayProfile;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=ScrollView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollView.d.ts","sourceRoot":"","sources":["../../../src/display-utils/helpers/ScrollView.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display Helpers Module
|
|
3
|
+
*
|
|
4
|
+
* Optional convenience utilities for common display operations.
|
|
5
|
+
* Built on top of TextMeasurer and TextWrapper.
|
|
6
|
+
*/
|
|
7
|
+
export { DisplayHelpers } from "./DisplayHelpers";
|
|
8
|
+
export { ScrollView } from "./ScrollView";
|
|
9
|
+
export type { TruncateResult, Page, Chunk } from "./DisplayHelpers";
|
|
10
|
+
export type { ScrollPosition, ScrollViewport } from "./ScrollView";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/display-utils/helpers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAGvC,YAAY,EAAC,cAAc,EAAE,IAAI,EAAE,KAAK,EAAC,MAAM,kBAAkB,CAAA;AACjE,YAAY,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @mentra/display-utils
|
|
3
|
+
*
|
|
4
|
+
* Glasses-agnostic, pixel-accurate text measurement and wrapping library
|
|
5
|
+
* for smart glasses displays.
|
|
6
|
+
*
|
|
7
|
+
* Key features:
|
|
8
|
+
* - Pixel-perfect measurement (no abstract units or averages)
|
|
9
|
+
* - Multiple break modes (character, word, strict-word)
|
|
10
|
+
* - Full script support (Latin, CJK, Korean, Cyrillic)
|
|
11
|
+
* - Configurable display profiles for different glasses hardware
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import {
|
|
16
|
+
* TextMeasurer,
|
|
17
|
+
* TextWrapper,
|
|
18
|
+
* DisplayHelpers,
|
|
19
|
+
* G1_PROFILE
|
|
20
|
+
* } from '@mentra/display-utils'
|
|
21
|
+
*
|
|
22
|
+
* // Create measurer and wrapper for G1 glasses
|
|
23
|
+
* const measurer = new TextMeasurer(G1_PROFILE)
|
|
24
|
+
* const wrapper = new TextWrapper(measurer, { breakMode: 'character' })
|
|
25
|
+
* const helpers = new DisplayHelpers(measurer, wrapper)
|
|
26
|
+
*
|
|
27
|
+
* // Wrap text for display
|
|
28
|
+
* const result = wrapper.wrap("Hello, world! This is a long text.")
|
|
29
|
+
* console.log(result.lines)
|
|
30
|
+
* // ["Hello, world! This is a long text th-", "at needs wrapping."]
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export type { DisplayProfile, FontMetrics, UniformScriptWidths, FallbackConfig, DisplayConstraints, ScriptType, } from "./profiles";
|
|
34
|
+
export { G1_PROFILE, G1_PROFILE_LEGACY, G1_HYPHEN_WIDTH_PX, G1_SPACE_WIDTH_PX } from "./profiles";
|
|
35
|
+
export { TextMeasurer } from "./measurer";
|
|
36
|
+
export type { CharMeasurement, TextMeasurement } from "./measurer";
|
|
37
|
+
export { detectScript, isCJKCharacter, isKoreanCharacter, isUniformWidthScript, isUnsupportedScript, needsHyphenForBreak, SCRIPT_RANGES, } from "./measurer";
|
|
38
|
+
export { TextWrapper } from "./wrapper";
|
|
39
|
+
export type { WrapOptions, WrapResult, LineMetrics, BreakMode } from "./wrapper";
|
|
40
|
+
export { DEFAULT_WRAP_OPTIONS } from "./wrapper";
|
|
41
|
+
export { DisplayHelpers, ScrollView } from "./helpers";
|
|
42
|
+
export type { TruncateResult, Page, Chunk, ScrollPosition, ScrollViewport } from "./helpers";
|
|
43
|
+
import { TextMeasurer } from "./measurer";
|
|
44
|
+
import { TextWrapper } from "./wrapper";
|
|
45
|
+
import { DisplayHelpers } from "./helpers";
|
|
46
|
+
import type { DisplayProfile } from "./profiles";
|
|
47
|
+
import type { WrapOptions } from "./wrapper";
|
|
48
|
+
/**
|
|
49
|
+
* Create a complete display toolkit for a given profile.
|
|
50
|
+
*
|
|
51
|
+
* @param profile - Display profile (defaults to G1)
|
|
52
|
+
* @param wrapOptions - Default wrap options
|
|
53
|
+
* @returns Object with measurer, wrapper, and helpers
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const { measurer, wrapper, helpers } = createDisplayToolkit()
|
|
58
|
+
* const lines = wrapper.wrapToLines("Hello, world!")
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function createDisplayToolkit(profile?: DisplayProfile, wrapOptions?: WrapOptions): {
|
|
62
|
+
measurer: TextMeasurer;
|
|
63
|
+
wrapper: TextWrapper;
|
|
64
|
+
helpers: DisplayHelpers;
|
|
65
|
+
profile: DisplayProfile;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Create a G1-configured display toolkit with character breaking.
|
|
69
|
+
* This is the recommended setup for captions and similar high-utilization use cases.
|
|
70
|
+
*
|
|
71
|
+
* @returns Object with measurer, wrapper, and helpers configured for G1
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const { wrapper } = createG1Toolkit()
|
|
76
|
+
* const result = wrapper.wrap("Your text here")
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export declare function createG1Toolkit(): {
|
|
80
|
+
measurer: TextMeasurer;
|
|
81
|
+
wrapper: TextWrapper;
|
|
82
|
+
helpers: DisplayHelpers;
|
|
83
|
+
profile: DisplayProfile;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Create a G1-configured display toolkit for LEGACY mobile clients.
|
|
87
|
+
*
|
|
88
|
+
* Use this when the mobile client has old wrapping logic that re-wraps
|
|
89
|
+
* text received from the cloud. This profile uses a reduced display width
|
|
90
|
+
* (~522px instead of 576px) to prevent double-wrapping overflow.
|
|
91
|
+
*
|
|
92
|
+
* @returns Object with measurer, wrapper, and helpers configured for legacy G1 clients
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* // For old mobile clients that double-wrap
|
|
97
|
+
* const { wrapper } = createG1LegacyToolkit()
|
|
98
|
+
* const result = wrapper.wrap("Your text here")
|
|
99
|
+
* // Lines will be shorter to account for mobile re-wrapping
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare function createG1LegacyToolkit(): {
|
|
103
|
+
measurer: TextMeasurer;
|
|
104
|
+
wrapper: TextWrapper;
|
|
105
|
+
helpers: DisplayHelpers;
|
|
106
|
+
profile: DisplayProfile;
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/display-utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAMH,YAAY,EACV,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,UAAU,GACX,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAC,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,YAAY,CAAA;AAS/F,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAA;AACvC,YAAY,EAAC,eAAe,EAAE,eAAe,EAAC,MAAM,YAAY,CAAA;AAGhE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACd,MAAM,YAAY,CAAA;AAMnB,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAA;AACrC,YAAY,EAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,WAAW,CAAA;AAC9E,OAAO,EAAC,oBAAoB,EAAC,MAAM,WAAW,CAAA;AAM9C,OAAO,EAAC,cAAc,EAAE,UAAU,EAAC,MAAM,WAAW,CAAA;AACpD,YAAY,EAAC,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc,EAAC,MAAM,WAAW,CAAA;AAM1F,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAA;AACvC,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAA;AACrC,OAAO,EAAC,cAAc,EAAC,MAAM,WAAW,CAAA;AAExC,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,WAAW,CAAA;AAE1C;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,cAA2B,EACpC,WAAW,CAAC,EAAE,WAAW,GACxB;IACD,QAAQ,EAAE,YAAY,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,EAAE,cAAc,CAAA;IACvB,OAAO,EAAE,cAAc,CAAA;CACxB,CAWA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,IAAI;IACjC,QAAQ,EAAE,YAAY,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,EAAE,cAAc,CAAA;IACvB,OAAO,EAAE,cAAc,CAAA;CACxB,CAMA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,IAAI;IACvC,QAAQ,EAAE,YAAY,CAAA;IACtB,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,EAAE,cAAc,CAAA;IACvB,OAAO,EAAE,cAAc,CAAA;CACxB,CAMA"}
|