@typecad/ui 1.0.0-alpha.12 → 1.0.0-alpha.13
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/assets/fonts/dejavu/DejaVuSans-Bold.ttf +0 -0
- package/assets/fonts/dejavu/DejaVuSans-ExtraLight.ttf +0 -0
- package/assets/fonts/dejavu/DejaVuSans-Oblique.ttf +0 -0
- package/assets/fonts/dejavu/DejaVuSans.ttf +0 -0
- package/assets/fonts/dejavu/DejaVuSansMono-Bold.ttf +0 -0
- package/assets/fonts/dejavu/DejaVuSansMono.ttf +0 -0
- package/assets/fonts/dejavu/LICENSE +187 -0
- package/assets/fonts/dejavu/README.md +49 -0
- package/dist/engine-index.js +2 -0
- package/dist/preview/build-program.d.ts +7 -1
- package/dist/preview/build-program.js +94 -15
- package/dist/preview/host-gfx.d.ts +3 -0
- package/dist/preview/host-gfx.js +30 -3
- package/dist/preview/host-ui-runtime.d.ts +115 -0
- package/dist/preview/host-ui-runtime.js +928 -46
- package/dist/ui-engine/block-layout.js +25 -11
- package/dist/ui-engine/color.d.ts +6 -0
- package/dist/ui-engine/color.js +80 -2
- package/dist/ui-engine/compat-report.d.ts +8 -0
- package/dist/ui-engine/compat-report.js +124 -0
- package/dist/ui-engine/css-imports.d.ts +4 -0
- package/dist/ui-engine/css-imports.js +70 -0
- package/dist/ui-engine/css-parser.js +58 -14
- package/dist/ui-engine/default-font.d.ts +25 -0
- package/dist/ui-engine/default-font.js +80 -0
- package/dist/ui-engine/font-assets.d.ts +2 -2
- package/dist/ui-engine/font-assets.js +22 -5
- package/dist/ui-engine/html-parser.d.ts +4 -0
- package/dist/ui-engine/html-parser.js +241 -26
- package/dist/ui-engine/image-assets.d.ts +8 -1
- package/dist/ui-engine/image-assets.js +35 -2
- package/dist/ui-engine/image-decode.d.ts +22 -0
- package/dist/ui-engine/image-decode.js +194 -0
- package/dist/ui-engine/inline-parser.js +1 -1
- package/dist/ui-engine/layout-engine.d.ts +19 -0
- package/dist/ui-engine/layout-engine.js +59 -3
- package/dist/ui-engine/model.d.ts +18 -0
- package/dist/ui-engine/model.js +75 -7
- package/dist/ui-engine/runtime-header/blend-bodies.js +29 -9
- package/dist/ui-engine/runtime-header/canvas-helpers.js +3 -0
- package/dist/ui-engine/runtime-header/canvas-scrollbar.js +115 -111
- package/dist/ui-engine/runtime-header/cuttlefish-gfx.js +21 -0
- package/dist/ui-engine/runtime-header/dirty-scroll-mutators.js +182 -179
- package/dist/ui-engine/runtime-header/forward-decls.js +215 -167
- package/dist/ui-engine/runtime-header/init-press-input.js +138 -135
- package/dist/ui-engine/runtime-header/keyboard.js +682 -380
- package/dist/ui-engine/runtime-header/node-draw-body.js +1656 -1386
- package/dist/ui-engine/runtime-header/paint-order-coords.js +259 -214
- package/dist/ui-engine/runtime-header/paint-rects-repair.js +736 -568
- package/dist/ui-engine/runtime-header/scroll-physics.js +25 -1
- package/dist/ui-engine/runtime-header/state-bindings-nav.js +9 -0
- package/dist/ui-engine/runtime-header/structs.js +228 -216
- package/dist/ui-engine/runtime-header/text-rendering.js +888 -770
- package/dist/ui-engine/runtime-header/tick/bindings-phase.js +118 -116
- package/dist/ui-engine/runtime-header/tick/dirty-draw-phase.js +897 -633
- package/dist/ui-engine/runtime-header/tick/scroll-canvas-phase.js +24 -25
- package/dist/ui-engine/runtime-header/touch-keyboard-fwd.js +78 -23
- package/dist/ui-engine/runtime-header/types-defines.js +110 -93
- package/dist/ui-engine/shadcn-kit.d.ts +1 -0
- package/dist/ui-engine/shadcn-kit.js +502 -0
- package/dist/ui-engine/style-resolver.d.ts +4 -0
- package/dist/ui-engine/style-resolver.js +58 -6
- package/dist/ui-engine/transpile-ui.js +12 -5
- package/dist/ui-engine/ua-stylesheet.d.ts +22 -1
- package/dist/ui-engine/ua-stylesheet.js +119 -32
- package/dist/ui-engine/ui-lowering.js +37 -3
- package/dist/ui-engine/ui-registry.js +32 -4
- package/dist/ui-engine/yoga-layout.js +57 -52
- package/package.json +9 -3
- package/src/engine-index.ts +53 -51
- package/src/preview/build-program.ts +810 -734
- package/src/preview/host-gfx.ts +30 -3
- package/src/preview/host-ui-runtime.ts +4133 -3289
- package/src/ui-engine/block-layout.ts +24 -11
- package/src/ui-engine/color.ts +77 -2
- package/src/ui-engine/compat-report.ts +139 -0
- package/src/ui-engine/css-imports.ts +69 -0
- package/src/ui-engine/css-parser.ts +64 -15
- package/src/ui-engine/default-font.ts +95 -0
- package/src/ui-engine/font-assets.ts +545 -525
- package/src/ui-engine/html-parser.ts +615 -397
- package/src/ui-engine/image-assets.ts +37 -2
- package/src/ui-engine/image-decode.ts +244 -0
- package/src/ui-engine/inline-parser.ts +1 -1
- package/src/ui-engine/layout-engine.ts +61 -3
- package/src/ui-engine/model.ts +1317 -1230
- package/src/ui-engine/runtime-header/blend-bodies.ts +29 -9
- package/src/ui-engine/runtime-header/canvas-helpers.ts +3 -0
- package/src/ui-engine/runtime-header/canvas-scrollbar.ts +121 -117
- package/src/ui-engine/runtime-header/cuttlefish-gfx.ts +21 -0
- package/src/ui-engine/runtime-header/dirty-scroll-mutators.ts +188 -185
- package/src/ui-engine/runtime-header/forward-decls.ts +227 -179
- package/src/ui-engine/runtime-header/init-press-input.ts +144 -141
- package/src/ui-engine/runtime-header/keyboard.ts +689 -386
- package/src/ui-engine/runtime-header/node-draw-body.ts +1681 -1411
- package/src/ui-engine/runtime-header/paint-order-coords.ts +265 -220
- package/src/ui-engine/runtime-header/paint-rects-repair.ts +742 -574
- package/src/ui-engine/runtime-header/scroll-physics.ts +25 -1
- package/src/ui-engine/runtime-header/state-bindings-nav.ts +9 -0
- package/src/ui-engine/runtime-header/structs.ts +234 -222
- package/src/ui-engine/runtime-header/text-rendering.ts +894 -776
- package/src/ui-engine/runtime-header/tick/bindings-phase.ts +124 -122
- package/src/ui-engine/runtime-header/tick/dirty-draw-phase.ts +902 -638
- package/src/ui-engine/runtime-header/tick/scroll-canvas-phase.ts +30 -31
- package/src/ui-engine/runtime-header/touch-keyboard-fwd.ts +78 -23
- package/src/ui-engine/runtime-header/types-defines.ts +116 -99
- package/src/ui-engine/shadcn-kit.ts +503 -0
- package/src/ui-engine/style-resolver.ts +471 -416
- package/src/ui-engine/transpile-ui.ts +12 -5
- package/src/ui-engine/ua-stylesheet.ts +137 -31
- package/src/ui-engine/ui-lowering.ts +486 -452
- package/src/ui-engine/ui-registry.ts +556 -524
- package/src/ui-engine/yoga-layout.ts +307 -309
|
@@ -12,6 +12,11 @@ interface RuntimeOptions {
|
|
|
12
12
|
onFrame?: (rgba: Uint8ClampedArray) => void;
|
|
13
13
|
onDiagnostics?: (message: string) => void;
|
|
14
14
|
}
|
|
15
|
+
/** Linear color lerp at the ACTIVE depth (module runtimeColorFormat): 888
|
|
16
|
+
* targets lerp per 8-bit channel; 565 targets lerp per 5/6-bit channel
|
|
17
|
+
* (device parity — the C++ ui_lerp macro switches the same way). Exported
|
|
18
|
+
* for tests. */
|
|
19
|
+
export declare function lerpColor(a: number, b: number, k100: number): number;
|
|
15
20
|
export declare class PreviewUIRuntime {
|
|
16
21
|
private readonly snapshot;
|
|
17
22
|
readonly gfx: HostAdafruitGFX;
|
|
@@ -63,6 +68,10 @@ export declare class PreviewUIRuntime {
|
|
|
63
68
|
private settleFromScrollY;
|
|
64
69
|
private rangeNode;
|
|
65
70
|
private keyboardVisible;
|
|
71
|
+
/** Modal <select> option list: node index while open, -1 when closed. */
|
|
72
|
+
private selectMenuNode;
|
|
73
|
+
/** True while the select modal overlay needs (re)stamping this frame. */
|
|
74
|
+
private selectMenuDirty;
|
|
66
75
|
private keyboardDirty;
|
|
67
76
|
private keyboardTarget;
|
|
68
77
|
private keyboardKeys;
|
|
@@ -92,6 +101,11 @@ export declare class PreviewUIRuntime {
|
|
|
92
101
|
pointerDown(x: number, y: number): void;
|
|
93
102
|
pointerMove(x: number, y: number): void;
|
|
94
103
|
pointerUp(): void;
|
|
104
|
+
/** Mouse-wheel scroll: a discrete delta applied to the scroll owner under
|
|
105
|
+
* (x, y) — the same hit-scan a drag uses, without the gesture state
|
|
106
|
+
* machine. Wheel-down (positive deltaPx) shows later content; any
|
|
107
|
+
* overscroll from the tick bounces back via the standard settle. */
|
|
108
|
+
wheel(x: number, y: number, deltaPx: number): void;
|
|
95
109
|
triggerPin(control: PreviewPinControlSpec): void;
|
|
96
110
|
private createScreenProxy;
|
|
97
111
|
private applyInitialAssignments;
|
|
@@ -103,6 +117,12 @@ export declare class PreviewUIRuntime {
|
|
|
103
117
|
private uiInit;
|
|
104
118
|
private isActiveNode;
|
|
105
119
|
private isEffectivelyVisible;
|
|
120
|
+
/** Effective stacking z, CSS-style: a non-zero zIndex raises the node AND
|
|
121
|
+
* its subtree — a z-raised panel forms a stacking context, so its
|
|
122
|
+
* descendants stack WITH it (above lower-z siblings), never
|
|
123
|
+
* independently UNDER it (a flat (z, index) sort painted a dialog card
|
|
124
|
+
* over its own children). 0 = "auto" — keep walking ancestors. */
|
|
125
|
+
private stackingZ;
|
|
106
126
|
private drawsBefore;
|
|
107
127
|
private compareDrawOrder;
|
|
108
128
|
private navigate;
|
|
@@ -141,6 +161,12 @@ export declare class PreviewUIRuntime {
|
|
|
141
161
|
private tryRepairGeometryFill;
|
|
142
162
|
private clearCurrentSubtreePaint;
|
|
143
163
|
private setVisible;
|
|
164
|
+
private subtreeFlowExtent;
|
|
165
|
+
private shiftSubtreeMain;
|
|
166
|
+
private restackFlowContainer;
|
|
167
|
+
private reflowScrollContent;
|
|
168
|
+
private reflowAfterVisibility;
|
|
169
|
+
private classifyDirtyAgainstOpenDrawers;
|
|
144
170
|
private scrollClipForNode;
|
|
145
171
|
private rectIntersectsClip;
|
|
146
172
|
private intersectClipRect;
|
|
@@ -170,6 +196,43 @@ export declare class PreviewUIRuntime {
|
|
|
170
196
|
private markScrollViewDirty;
|
|
171
197
|
private invalidateScrollCanvasForNode;
|
|
172
198
|
private drawDirty;
|
|
199
|
+
/** Enable/disable per-frame debug geometry capture (the client overlay
|
|
200
|
+
* reads it; zero cost while off). */
|
|
201
|
+
setDebugCapture(on: boolean): void;
|
|
202
|
+
/** Current-frame debug geometry for the client overlay: every visible node
|
|
203
|
+
* on the active screen at its CURRENT draw position (transform/press/
|
|
204
|
+
* drawer/scroll offsets applied), the scroll viewport clips, and the
|
|
205
|
+
* regions painted this tick (dirty-flash). Coordinates are logical
|
|
206
|
+
* display pixels, matching the app canvas 1:1. */
|
|
207
|
+
debugInfo(): {
|
|
208
|
+
nodes: Array<{
|
|
209
|
+
i: number;
|
|
210
|
+
id?: string;
|
|
211
|
+
tag: string;
|
|
212
|
+
kind: string;
|
|
213
|
+
x: number;
|
|
214
|
+
y: number;
|
|
215
|
+
w: number;
|
|
216
|
+
h: number;
|
|
217
|
+
tappable: boolean;
|
|
218
|
+
}>;
|
|
219
|
+
clips: Array<{
|
|
220
|
+
x: number;
|
|
221
|
+
y: number;
|
|
222
|
+
w: number;
|
|
223
|
+
h: number;
|
|
224
|
+
}>;
|
|
225
|
+
painted: Array<{
|
|
226
|
+
x: number;
|
|
227
|
+
y: number;
|
|
228
|
+
w: number;
|
|
229
|
+
h: number;
|
|
230
|
+
}>;
|
|
231
|
+
};
|
|
232
|
+
/** Inspect-on-tap: topmost node (draw order) whose CURRENT draw box
|
|
233
|
+
* contains the point — unlike hitTest, containers count too. Returns the
|
|
234
|
+
* index, or -1. */
|
|
235
|
+
debugHit(tx: number, ty: number): number;
|
|
173
236
|
private lineX;
|
|
174
237
|
private textInsets;
|
|
175
238
|
private drawTextLines;
|
|
@@ -208,6 +271,54 @@ export declare class PreviewUIRuntime {
|
|
|
208
271
|
private handleNoTouch;
|
|
209
272
|
private dispatchBuiltInClick;
|
|
210
273
|
private keyboardTemplateForNode;
|
|
274
|
+
/** node index -> { open, progress } for every <drawer>; absent = closed. */
|
|
275
|
+
private readonly drawerStates;
|
|
276
|
+
/** True while the client wants per-frame debug geometry + paint rects. */
|
|
277
|
+
private debugCapture;
|
|
278
|
+
/** Node paint rects drawn during this tick (cleared at tick start). */
|
|
279
|
+
private debugPaintedRects;
|
|
280
|
+
/** Drawer animation step per tick (~180ms full slide). */
|
|
281
|
+
/** <toast> auto-close windows, keyed by drawer slot node index. */
|
|
282
|
+
private readonly toastElapsed;
|
|
283
|
+
private applyDrawers;
|
|
284
|
+
private drawerNodeById;
|
|
285
|
+
private drawerOpen;
|
|
286
|
+
private drawerClose;
|
|
287
|
+
/** Slide extent for a drawer or toast: the panel must clear the display
|
|
288
|
+
* edge completely — its own height parks a bottom:0 panel's top row at
|
|
289
|
+
* the fold (a visible sliver after close). Centered dialogs don't slide. */
|
|
290
|
+
private drawerExtent;
|
|
291
|
+
/** Apply a slide progress to the drawer subtree: offsets shift from the
|
|
292
|
+
* edge; the subtree is hidden at 0. Erases the previous frame's region via
|
|
293
|
+
* the standard subtree clear + marks descendants dirty (same contract as
|
|
294
|
+
* animated transform changes). */
|
|
295
|
+
private setDrawerProgress;
|
|
296
|
+
/** True while the node sits inside a fully-closed drawer (skip in draws and
|
|
297
|
+
* hit tests). Drawers with no state entry are closed. */
|
|
298
|
+
private insideClosedDrawer;
|
|
299
|
+
/** Walk ancestors: any drawer ancestor without an open/animating state. */
|
|
300
|
+
private drawerAncestorClosed;
|
|
301
|
+
/** Apply the closed slide offsets to every drawer subtree (initial seed and
|
|
302
|
+
* post-navigate reset) so closed drawers never paint at rest position. */
|
|
303
|
+
private seedDrawersClosed;
|
|
304
|
+
/** Shared geometry of the select modal: a centered list panel sized to
|
|
305
|
+
* the options (capped to ~60% of the screen height). Rows are option
|
|
306
|
+
* text, the current one inverted (fill = select bg, text = inverted). */
|
|
307
|
+
private selectMenuGeometry;
|
|
308
|
+
private openSelectMenu;
|
|
309
|
+
/** Close the modal. When `repaint`, mark the whole tree dirty so the
|
|
310
|
+
* overlay is erased by a full redraw (navigate() clears the screen
|
|
311
|
+
* itself, so it passes false). */
|
|
312
|
+
private closeSelectMenu;
|
|
313
|
+
/** Stamp the modal overlay on top of the current framebuffer. Idempotent
|
|
314
|
+
* per frame — the close path full-repaints beneath it. */
|
|
315
|
+
private drawSelectMenu;
|
|
316
|
+
/** Panel fill: the select's effective background, falling back to a
|
|
317
|
+
* near-black card on unstyled selects. */
|
|
318
|
+
private selectMenuPanelColor;
|
|
319
|
+
/** Route a tap while the modal is open: a row selects + closes; anything
|
|
320
|
+
* else just closes (dismiss on outside tap). */
|
|
321
|
+
private selectMenuHandleTouch;
|
|
211
322
|
private keyboardOpen;
|
|
212
323
|
private keyboardClose;
|
|
213
324
|
private keyboardComputeBox;
|
|
@@ -229,6 +340,10 @@ export declare class PreviewUIRuntime {
|
|
|
229
340
|
private markDirty;
|
|
230
341
|
private scriptTreeNames;
|
|
231
342
|
private normalizeScript;
|
|
343
|
+
/** Apply `re` to code segments only: skip '..'/".." literal contents, and
|
|
344
|
+
* inside `..` templates recurse into ${...} interpolations (their
|
|
345
|
+
* expressions are code; the literal text between them is not). */
|
|
346
|
+
private rewriteOutsideLiterals;
|
|
232
347
|
/** Rewrite signal getter/setter syntax to plain variable reads/writes. See
|
|
233
348
|
* normalizeScript for the lowering contract; this is the preview counterpart
|
|
234
349
|
* of ui-callback-lowering.ts's rules 2 and 3. */
|