@rezi-ui/core 0.1.0-alpha.34 → 0.1.0-alpha.36
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/animation/interpolate.d.ts +5 -0
- package/dist/animation/interpolate.d.ts.map +1 -1
- package/dist/animation/interpolate.js +30 -0
- package/dist/animation/interpolate.js.map +1 -1
- package/dist/animation/timeline.d.ts.map +1 -1
- package/dist/animation/timeline.js +1 -3
- package/dist/animation/timeline.js.map +1 -1
- package/dist/animation/types.d.ts +17 -0
- package/dist/animation/types.d.ts.map +1 -1
- package/dist/app/createApp.d.ts +1 -1
- package/dist/app/createApp.d.ts.map +1 -1
- package/dist/app/createApp.js +91 -26
- package/dist/app/createApp.js.map +1 -1
- package/dist/app/rawRenderer.d.ts +1 -1
- package/dist/app/rawRenderer.d.ts.map +1 -1
- package/dist/app/rawRenderer.js +9 -7
- package/dist/app/rawRenderer.js.map +1 -1
- package/dist/app/runtimeBreadcrumbs.d.ts +1 -1
- package/dist/app/runtimeBreadcrumbs.d.ts.map +1 -1
- package/dist/app/types.d.ts +2 -1
- package/dist/app/types.d.ts.map +1 -1
- package/dist/app/widgetRenderer/animationTracks.d.ts +43 -2
- package/dist/app/widgetRenderer/animationTracks.d.ts.map +1 -1
- package/dist/app/widgetRenderer/animationTracks.js +83 -3
- package/dist/app/widgetRenderer/animationTracks.js.map +1 -1
- package/dist/app/widgetRenderer/cursorBreadcrumbs.d.ts +1 -2
- package/dist/app/widgetRenderer/cursorBreadcrumbs.d.ts.map +1 -1
- package/dist/app/widgetRenderer/cursorBreadcrumbs.js +16 -43
- package/dist/app/widgetRenderer/cursorBreadcrumbs.js.map +1 -1
- package/dist/app/widgetRenderer/damageTracking.d.ts +1 -0
- package/dist/app/widgetRenderer/damageTracking.d.ts.map +1 -1
- package/dist/app/widgetRenderer/damageTracking.js +2 -0
- package/dist/app/widgetRenderer/damageTracking.js.map +1 -1
- package/dist/app/widgetRenderer/submitFramePipeline.d.ts.map +1 -1
- package/dist/app/widgetRenderer/submitFramePipeline.js +277 -0
- package/dist/app/widgetRenderer/submitFramePipeline.js.map +1 -1
- package/dist/app/widgetRenderer.d.ts +17 -8
- package/dist/app/widgetRenderer.d.ts.map +1 -1
- package/dist/app/widgetRenderer.js +177 -80
- package/dist/app/widgetRenderer.js.map +1 -1
- package/dist/backend.d.ts +0 -5
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +0 -5
- package/dist/backend.js.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/layout/constraints.d.ts +15 -2
- package/dist/layout/constraints.d.ts.map +1 -1
- package/dist/layout/constraints.js +94 -4
- package/dist/layout/constraints.js.map +1 -1
- package/dist/layout/engine/distributeInteger.d.ts +9 -0
- package/dist/layout/engine/distributeInteger.d.ts.map +1 -0
- package/dist/layout/engine/distributeInteger.js +62 -0
- package/dist/layout/engine/distributeInteger.js.map +1 -0
- package/dist/layout/engine/flex.d.ts +14 -0
- package/dist/layout/engine/flex.d.ts.map +1 -1
- package/dist/layout/engine/flex.js +144 -1
- package/dist/layout/engine/flex.js.map +1 -1
- package/dist/layout/engine/guards.d.ts +8 -0
- package/dist/layout/engine/guards.d.ts.map +1 -1
- package/dist/layout/engine/guards.js +6 -0
- package/dist/layout/engine/guards.js.map +1 -1
- package/dist/layout/engine/intrinsic.d.ts +8 -0
- package/dist/layout/engine/intrinsic.d.ts.map +1 -0
- package/dist/layout/engine/intrinsic.js +383 -0
- package/dist/layout/engine/intrinsic.js.map +1 -0
- package/dist/layout/engine/layoutEngine.d.ts.map +1 -1
- package/dist/layout/engine/layoutEngine.js +78 -2
- package/dist/layout/engine/layoutEngine.js.map +1 -1
- package/dist/layout/kinds/box.d.ts +1 -1
- package/dist/layout/kinds/box.d.ts.map +1 -1
- package/dist/layout/kinds/box.js +48 -8
- package/dist/layout/kinds/box.js.map +1 -1
- package/dist/layout/kinds/grid.d.ts.map +1 -1
- package/dist/layout/kinds/grid.js +230 -29
- package/dist/layout/kinds/grid.js.map +1 -1
- package/dist/layout/kinds/leaf.d.ts.map +1 -1
- package/dist/layout/kinds/leaf.js +7 -2
- package/dist/layout/kinds/leaf.js.map +1 -1
- package/dist/layout/kinds/overlays.d.ts.map +1 -1
- package/dist/layout/kinds/overlays.js +28 -8
- package/dist/layout/kinds/overlays.js.map +1 -1
- package/dist/layout/kinds/stack.d.ts.map +1 -1
- package/dist/layout/kinds/stack.js +606 -218
- package/dist/layout/kinds/stack.js.map +1 -1
- package/dist/layout/responsive.d.ts +13 -1
- package/dist/layout/responsive.d.ts.map +1 -1
- package/dist/layout/responsive.js +60 -1
- package/dist/layout/responsive.js.map +1 -1
- package/dist/layout/textMeasure.d.ts +15 -0
- package/dist/layout/textMeasure.d.ts.map +1 -1
- package/dist/layout/textMeasure.js +116 -0
- package/dist/layout/textMeasure.js.map +1 -1
- package/dist/layout/types.d.ts +24 -0
- package/dist/layout/types.d.ts.map +1 -1
- package/dist/layout/validateProps.d.ts +14 -0
- package/dist/layout/validateProps.d.ts.map +1 -1
- package/dist/layout/validateProps.js +121 -1
- package/dist/layout/validateProps.js.map +1 -1
- package/dist/renderer/renderToDrawlist/renderTree.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/renderTree.js +32 -2
- package/dist/renderer/renderToDrawlist/renderTree.js.map +1 -1
- package/dist/renderer/renderToDrawlist/themeTokens.d.ts +2 -15
- package/dist/renderer/renderToDrawlist/themeTokens.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/themeTokens.js +2 -74
- package/dist/renderer/renderToDrawlist/themeTokens.js.map +1 -1
- package/dist/renderer/renderToDrawlist/types.d.ts +2 -2
- package/dist/renderer/renderToDrawlist/types.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/basic.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/basic.js +23 -2
- package/dist/renderer/renderToDrawlist/widgets/basic.js.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/collections.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/collections.js +56 -4
- package/dist/renderer/renderToDrawlist/widgets/collections.js.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/editors.js +1 -1
- package/dist/renderer/renderToDrawlist/widgets/editors.js.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/navigation.d.ts +2 -1
- package/dist/renderer/renderToDrawlist/widgets/navigation.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/navigation.js +171 -3
- package/dist/renderer/renderToDrawlist/widgets/navigation.js.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/overlays.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/overlays.js +85 -27
- package/dist/renderer/renderToDrawlist/widgets/overlays.js.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.js +1 -1
- package/dist/renderer/renderToDrawlist/widgets/renderFormWidgets.js.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/renderTextWidgets.d.ts.map +1 -1
- package/dist/renderer/renderToDrawlist/widgets/renderTextWidgets.js +64 -1
- package/dist/renderer/renderToDrawlist/widgets/renderTextWidgets.js.map +1 -1
- package/dist/renderer/renderToDrawlist.d.ts +1 -1
- package/dist/renderer/renderToDrawlist.js +6 -6
- package/dist/renderer/renderToDrawlist.js.map +1 -1
- package/dist/repro/replay.d.ts.map +1 -1
- package/dist/repro/replay.js +1 -8
- package/dist/repro/replay.js.map +1 -1
- package/dist/repro/schema.js +2 -2
- package/dist/repro/schema.js.map +1 -1
- package/dist/repro/types.d.ts +2 -2
- package/dist/repro/types.d.ts.map +1 -1
- package/dist/runtime/commit.d.ts +17 -1
- package/dist/runtime/commit.d.ts.map +1 -1
- package/dist/runtime/commit.js +291 -121
- package/dist/runtime/commit.js.map +1 -1
- package/dist/terminalCaps.d.ts +2 -2
- package/dist/terminalCaps.d.ts.map +1 -1
- package/dist/terminalCaps.js +2 -3
- package/dist/terminalCaps.js.map +1 -1
- package/dist/theme/blend.d.ts +6 -0
- package/dist/theme/blend.d.ts.map +1 -0
- package/dist/theme/blend.js +15 -0
- package/dist/theme/blend.js.map +1 -0
- package/dist/theme/extract.d.ts +8 -0
- package/dist/theme/extract.d.ts.map +1 -0
- package/dist/theme/extract.js +71 -0
- package/dist/theme/extract.js.map +1 -0
- package/dist/ui/designTokens.d.ts +3 -2
- package/dist/ui/designTokens.d.ts.map +1 -1
- package/dist/ui/designTokens.js +12 -1
- package/dist/ui/designTokens.js.map +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +1 -1
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/recipes.d.ts +154 -1
- package/dist/ui/recipes.d.ts.map +1 -1
- package/dist/ui/recipes.js +520 -12
- package/dist/ui/recipes.js.map +1 -1
- package/dist/widgets/composition.d.ts +8 -2
- package/dist/widgets/composition.d.ts.map +1 -1
- package/dist/widgets/composition.js +3 -2
- package/dist/widgets/composition.js.map +1 -1
- package/dist/widgets/hooks/animation.d.ts +41 -0
- package/dist/widgets/hooks/animation.d.ts.map +1 -1
- package/dist/widgets/hooks/animation.js +549 -96
- package/dist/widgets/hooks/animation.js.map +1 -1
- package/dist/widgets/protocol.d.ts.map +1 -1
- package/dist/widgets/protocol.js +1 -0
- package/dist/widgets/protocol.js.map +1 -1
- package/dist/widgets/splitPane.d.ts.map +1 -1
- package/dist/widgets/splitPane.js +17 -6
- package/dist/widgets/splitPane.js.map +1 -1
- package/dist/widgets/tests/protocol.test.js +1 -0
- package/dist/widgets/tests/protocol.test.js.map +1 -1
- package/dist/widgets/types.d.ts +89 -2
- package/dist/widgets/types.d.ts.map +1 -1
- package/dist/widgets/ui.d.ts +3 -0
- package/dist/widgets/ui.d.ts.map +1 -1
- package/dist/widgets/ui.js +6 -1
- package/dist/widgets/ui.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* packages/core/src/animation/interpolate.ts — Primitive interpolation helpers.
|
|
3
3
|
*/
|
|
4
|
+
import type { Rgb } from "../widgets/style.js";
|
|
4
5
|
/** Clamp a number into [0, 1]. */
|
|
5
6
|
export declare function clamp01(value: number): number;
|
|
6
7
|
/** Clamp an animation duration to a safe, non-negative integer in milliseconds. */
|
|
7
8
|
export declare function normalizeDurationMs(durationMs: number | undefined, fallbackMs: number): number;
|
|
8
9
|
/** Linear interpolation between two numeric values. */
|
|
9
10
|
export declare function interpolateNumber(from: number, to: number, t: number): number;
|
|
11
|
+
/** Linear interpolation between two RGB colors. */
|
|
12
|
+
export declare function interpolateRgb(from: Rgb, to: Rgb, t: number): Rgb;
|
|
13
|
+
/** Generate `steps` RGB samples between two colors (inclusive endpoints). */
|
|
14
|
+
export declare function interpolateRgbArray(from: Rgb, to: Rgb, steps: number): readonly Rgb[];
|
|
10
15
|
//# sourceMappingURL=interpolate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../src/animation/interpolate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kCAAkC;AAClC,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAI9F;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7E"}
|
|
1
|
+
{"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../src/animation/interpolate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE/C,kCAAkC;AAClC,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAI9F;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7E;AASD,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAMjE;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,EAAE,CASrF"}
|
|
@@ -23,4 +23,34 @@ export function normalizeDurationMs(durationMs, fallbackMs) {
|
|
|
23
23
|
export function interpolateNumber(from, to, t) {
|
|
24
24
|
return from + (to - from) * clamp01(t);
|
|
25
25
|
}
|
|
26
|
+
function clampRgbChannel(channel) {
|
|
27
|
+
if (!Number.isFinite(channel))
|
|
28
|
+
return 0;
|
|
29
|
+
if (channel <= 0)
|
|
30
|
+
return 0;
|
|
31
|
+
if (channel >= 255)
|
|
32
|
+
return 255;
|
|
33
|
+
return Math.round(channel);
|
|
34
|
+
}
|
|
35
|
+
/** Linear interpolation between two RGB colors. */
|
|
36
|
+
export function interpolateRgb(from, to, t) {
|
|
37
|
+
return Object.freeze({
|
|
38
|
+
r: clampRgbChannel(interpolateNumber(from.r, to.r, t)),
|
|
39
|
+
g: clampRgbChannel(interpolateNumber(from.g, to.g, t)),
|
|
40
|
+
b: clampRgbChannel(interpolateNumber(from.b, to.b, t)),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/** Generate `steps` RGB samples between two colors (inclusive endpoints). */
|
|
44
|
+
export function interpolateRgbArray(from, to, steps) {
|
|
45
|
+
const count = Math.max(0, Math.trunc(steps));
|
|
46
|
+
if (count <= 0)
|
|
47
|
+
return Object.freeze([]);
|
|
48
|
+
if (count === 1)
|
|
49
|
+
return Object.freeze([interpolateRgb(from, to, 0)]);
|
|
50
|
+
const samples = new Array(count);
|
|
51
|
+
for (let i = 0; i < count; i++) {
|
|
52
|
+
samples[i] = interpolateRgb(from, to, i / (count - 1));
|
|
53
|
+
}
|
|
54
|
+
return Object.freeze(samples);
|
|
55
|
+
}
|
|
26
56
|
//# sourceMappingURL=interpolate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpolate.js","sourceRoot":"","sources":["../../src/animation/interpolate.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"interpolate.js","sourceRoot":"","sources":["../../src/animation/interpolate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,kCAAkC;AAClC,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACzB,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,mBAAmB,CAAC,UAA8B,EAAE,UAAkB;IACpF,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,EAAU,EAAE,CAAS;IACnE,OAAO,IAAI,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC;IACxC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC3B,IAAI,OAAO,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,cAAc,CAAC,IAAS,EAAE,EAAO,EAAE,CAAS;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACvD,CAAC,CAAC;AACL,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,mBAAmB,CAAC,IAAS,EAAE,EAAO,EAAE,KAAa;IACnE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,OAAO,GAAU,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/animation/timeline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEhF,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf,CAAC,CAAC;AAgBH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,gBAAgB,EAAE,EACtC,QAAQ,GAAE,QAAQ,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAM,GACnE,kBAAkB,CA4CpB;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,GACZ,cAAc,
|
|
1
|
+
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/animation/timeline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEhF,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf,CAAC,CAAC;AAgBH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,gBAAgB,EAAE,EACtC,QAAQ,GAAE,QAAQ,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAM,GACnE,kBAAkB,CA4CpB;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,GACZ,cAAc,CAsChB"}
|
|
@@ -64,9 +64,7 @@ export function sampleSequence(sequence, elapsedMs, loop) {
|
|
|
64
64
|
done: true,
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
-
const normalizedElapsedMs = loop
|
|
68
|
-
? ((Math.max(0, elapsedMs) % total) + total) % total
|
|
69
|
-
: Math.max(0, elapsedMs);
|
|
67
|
+
const normalizedElapsedMs = loop ? ((elapsedMs % total) + total) % total : Math.max(0, elapsedMs);
|
|
70
68
|
let cursor = 0;
|
|
71
69
|
for (let i = 0; i < sequence.segments.length; i++) {
|
|
72
70
|
const seg = sequence.segments[i];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/animation/timeline.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/animation/timeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,17 +10,32 @@ export type EasingFunction = (t: number) => number;
|
|
|
10
10
|
export type EasingName = "linear" | "easeInQuad" | "easeOutQuad" | "easeInOutQuad" | "easeInCubic" | "easeOutCubic" | "easeInOutCubic" | "easeInExpo" | "easeOutExpo" | "easeInOutExpo" | "easeInBack" | "easeOutBack" | "easeInOutBack" | "easeOutBounce" | "easeInBounce";
|
|
11
11
|
/** Easing value accepted by transition APIs. */
|
|
12
12
|
export type EasingInput = EasingName | EasingFunction;
|
|
13
|
+
/** Playback controls for time-based animation hooks. */
|
|
14
|
+
export type PlaybackControl = Readonly<{
|
|
15
|
+
/** Freeze animation at the current sampled value. */
|
|
16
|
+
paused?: boolean;
|
|
17
|
+
/** Run animation time backwards. */
|
|
18
|
+
reversed?: boolean;
|
|
19
|
+
/** Playback rate multiplier. */
|
|
20
|
+
rate?: number;
|
|
21
|
+
}>;
|
|
13
22
|
/** Time-based interpolation configuration. */
|
|
14
23
|
export type TransitionConfig = Readonly<{
|
|
24
|
+
/** Delay before animation starts in milliseconds. */
|
|
25
|
+
delay?: number;
|
|
15
26
|
/** Transition duration in milliseconds. */
|
|
16
27
|
duration?: number;
|
|
17
28
|
/** Easing curve name or custom easing function. */
|
|
18
29
|
easing?: EasingInput;
|
|
30
|
+
/** Optional playback controls for pause/reverse/rate. */
|
|
31
|
+
playback?: PlaybackControl;
|
|
19
32
|
/** Called when the transition reaches the target value. */
|
|
20
33
|
onComplete?: () => void;
|
|
21
34
|
}>;
|
|
22
35
|
/** Spring simulation configuration. */
|
|
23
36
|
export type SpringConfig = Readonly<{
|
|
37
|
+
/** Delay before spring simulation starts in milliseconds. */
|
|
38
|
+
delay?: number;
|
|
24
39
|
/** Hooke spring constant. Larger values snap faster. */
|
|
25
40
|
stiffness?: number;
|
|
26
41
|
/** Velocity damping factor. Larger values reduce oscillation. */
|
|
@@ -60,6 +75,8 @@ export type SequenceConfig = Readonly<{
|
|
|
60
75
|
duration?: number;
|
|
61
76
|
/** Default easing for segments without per-keyframe easing. */
|
|
62
77
|
easing?: EasingInput;
|
|
78
|
+
/** Optional playback controls for pause/reverse/rate. */
|
|
79
|
+
playback?: PlaybackControl;
|
|
63
80
|
/** Loop sequence timeline when it reaches the end. */
|
|
64
81
|
loop?: boolean;
|
|
65
82
|
/** Called when the sequence reaches the final keyframe (when not looping). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/animation/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8CAA8C;AAC9C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAEnD,+DAA+D;AAC/D,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,YAAY,GACZ,aAAa,GACb,eAAe,GACf,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,YAAY,GACZ,aAAa,GACb,eAAe,GACf,YAAY,GACZ,aAAa,GACb,eAAe,GACf,eAAe,GACf,cAAc,CAAC;AAEnB,gDAAgD;AAChD,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC;AAEtD,8CAA8C;AAC9C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC,CAAC;AAEH,uCAAuC;AACvC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC,CAAC;AAEH,+DAA+D;AAC/D,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH,iDAAiD;AACjD,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,QAAQ,CAAC;IACP,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC,CAAC;AAEP,uCAAuC;AACvC,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC,CAAC;AAEH,8CAA8C;AAC9C,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/animation/types.ts"],"names":[],"mappings":"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"}
|
package/dist/app/createApp.d.ts
CHANGED
|
@@ -34,11 +34,11 @@ type ResolvedAppConfig = Readonly<{
|
|
|
34
34
|
maxDrawlistBytes: number;
|
|
35
35
|
rootPadding: number;
|
|
36
36
|
breakpointThresholds: ResponsiveBreakpointThresholds;
|
|
37
|
-
useV2Cursor: boolean;
|
|
38
37
|
drawlistValidateParams: boolean;
|
|
39
38
|
drawlistReuseOutputBuffer: boolean;
|
|
40
39
|
drawlistEncodedStringCacheCap: number;
|
|
41
40
|
maxFramesInFlight: number;
|
|
41
|
+
themeTransitionFrames: number;
|
|
42
42
|
internal_onRender?: ((metrics: AppRenderMetrics) => void) | undefined;
|
|
43
43
|
internal_onLayout?: ((snapshot: AppLayoutSnapshot) => void) | undefined;
|
|
44
44
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createApp.d.ts","sourceRoot":"","sources":["../../src/app/createApp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"createApp.d.ts","sourceRoot":"","sources":["../../src/app/createApp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAoBvB,OAAO,EACL,KAAK,8BAA8B,EAEpC,MAAM,yBAAyB,CAAC;AAMjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAS1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAe1D,OAAO,KAAK,EACV,GAAG,EACH,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAKjB,MAAM,YAAY,CAAC;AAQpB,oDAAoD;AACpD,KAAK,iBAAiB,GAAG,QAAQ,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,8BAA8B,CAAC;IACrD,sBAAsB,EAAE,OAAO,CAAC;IAChC,yBAAyB,EAAE,OAAO,CAAC;IACnC,6BAA6B,EAAE,MAAM,CAAC;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACtE,iBAAiB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACzE,CAAC,CAAC;AA0BH,eAAO,MAAM,uCAAuC,4BAA4B,CAAC;AACjF,eAAO,MAAM,gDAAgD,oCAAoC,CAAC;AA2HlG,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,iBAAiB,CA6DjF;AA4LD,KAAK,oBAAoB,GAAG,QAAQ,CAAC;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC;CACjC,CAAC,CAAC;AAEH,KAAK,qBAAqB,CAAC,CAAC,IAAI,oBAAoB,GAClD,QAAQ,CAAC;IACP,YAAY,EAAE,CAAC,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC,CAAC;AAEL,KAAK,0BAA0B,GAAG,oBAAoB,GACpD,QAAQ,CAAC;IACP,MAAM,EAAE,SAAS,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;IAC1D,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC,CAAC;AAkCL;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,0BAA0B,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACxF,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/app/createApp.js
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* @see docs/guide/lifecycle-and-updates.md
|
|
23
23
|
*/
|
|
24
24
|
import { ZrUiError } from "../abi.js";
|
|
25
|
-
import {
|
|
25
|
+
import { BACKEND_DRAWLIST_VERSION_MARKER, BACKEND_FPS_CAP_MARKER, BACKEND_MAX_EVENT_BYTES_MARKER, FRAME_ACCEPTED_ACK_MARKER, } from "../backend.js";
|
|
26
26
|
import { createManagerState, getBindings, getMode, getPendingChord, registerBindings, registerModes, resetChordState, routeKeyEvent, setMode, } from "../keybindings/index.js";
|
|
27
27
|
import { ZR_MOD_ALT, ZR_MOD_CTRL, ZR_MOD_META } from "../keybindings/keyCodes.js";
|
|
28
28
|
import { normalizeBreakpointThresholds, } from "../layout/responsive.js";
|
|
@@ -30,6 +30,7 @@ import { PERF_ENABLED, perfMarkEnd, perfMarkStart, perfNow, perfRecord } from ".
|
|
|
30
30
|
import { parseEventBatchV1 } from "../protocol/zrev_v1.js";
|
|
31
31
|
import { createRouterIntegration } from "../router/integration.js";
|
|
32
32
|
import { DEFAULT_TERMINAL_PROFILE, terminalProfileFromCaps, } from "../terminalProfile.js";
|
|
33
|
+
import { blendRgb } from "../theme/blend.js";
|
|
33
34
|
import { defaultTheme } from "../theme/defaultTheme.js";
|
|
34
35
|
import { coerceToLegacyTheme } from "../theme/interop.js";
|
|
35
36
|
import { ui } from "../widgets/ui.js";
|
|
@@ -46,11 +47,11 @@ const DEFAULT_CONFIG = Object.freeze({
|
|
|
46
47
|
maxDrawlistBytes: 2 << 20 /* 2 MiB */,
|
|
47
48
|
rootPadding: 0,
|
|
48
49
|
breakpointThresholds: normalizeBreakpointThresholds(undefined),
|
|
49
|
-
useV2Cursor: false,
|
|
50
50
|
drawlistValidateParams: true,
|
|
51
51
|
drawlistReuseOutputBuffer: true,
|
|
52
52
|
drawlistEncodedStringCacheCap: 131072,
|
|
53
53
|
maxFramesInFlight: 1,
|
|
54
|
+
themeTransitionFrames: 0,
|
|
54
55
|
internal_onRender: undefined,
|
|
55
56
|
internal_onLayout: undefined,
|
|
56
57
|
});
|
|
@@ -93,15 +94,6 @@ function getAcceptedFrameAck(p) {
|
|
|
93
94
|
return null;
|
|
94
95
|
return marker;
|
|
95
96
|
}
|
|
96
|
-
function readBackendBooleanMarker(backend, marker) {
|
|
97
|
-
const value = backend[marker];
|
|
98
|
-
if (value === undefined)
|
|
99
|
-
return null;
|
|
100
|
-
if (typeof value !== "boolean") {
|
|
101
|
-
invalidProps(`backend marker ${marker} must be a boolean when present`);
|
|
102
|
-
}
|
|
103
|
-
return value;
|
|
104
|
-
}
|
|
105
97
|
function readBackendPositiveIntMarker(backend, marker) {
|
|
106
98
|
const value = backend[marker];
|
|
107
99
|
if (value === undefined)
|
|
@@ -184,7 +176,6 @@ export function resolveAppConfig(config) {
|
|
|
184
176
|
? DEFAULT_CONFIG.rootPadding
|
|
185
177
|
: requireNonNegativeInt("rootPadding", config.rootPadding);
|
|
186
178
|
const breakpointThresholds = normalizeBreakpointThresholds(config.breakpoints);
|
|
187
|
-
const useV2Cursor = config.useV2Cursor === true;
|
|
188
179
|
const drawlistValidateParams = config.drawlistValidateParams === undefined
|
|
189
180
|
? DEFAULT_CONFIG.drawlistValidateParams
|
|
190
181
|
: config.drawlistValidateParams !== false;
|
|
@@ -197,6 +188,9 @@ export function resolveAppConfig(config) {
|
|
|
197
188
|
const maxFramesInFlight = config.maxFramesInFlight === undefined
|
|
198
189
|
? DEFAULT_CONFIG.maxFramesInFlight
|
|
199
190
|
: Math.min(4, Math.max(1, requirePositiveInt("maxFramesInFlight", config.maxFramesInFlight)));
|
|
191
|
+
const themeTransitionFrames = config.themeTransitionFrames === undefined
|
|
192
|
+
? DEFAULT_CONFIG.themeTransitionFrames
|
|
193
|
+
: requireNonNegativeInt("themeTransitionFrames", config.themeTransitionFrames);
|
|
200
194
|
const internal_onRender = typeof config.internal_onRender === "function" ? config.internal_onRender : undefined;
|
|
201
195
|
const internal_onLayout = typeof config.internal_onLayout === "function" ? config.internal_onLayout : undefined;
|
|
202
196
|
return Object.freeze({
|
|
@@ -205,11 +199,11 @@ export function resolveAppConfig(config) {
|
|
|
205
199
|
maxDrawlistBytes,
|
|
206
200
|
rootPadding,
|
|
207
201
|
breakpointThresholds,
|
|
208
|
-
useV2Cursor,
|
|
209
202
|
drawlistValidateParams,
|
|
210
203
|
drawlistReuseOutputBuffer,
|
|
211
204
|
drawlistEncodedStringCacheCap,
|
|
212
205
|
maxFramesInFlight,
|
|
206
|
+
themeTransitionFrames,
|
|
213
207
|
internal_onRender,
|
|
214
208
|
internal_onLayout,
|
|
215
209
|
});
|
|
@@ -336,19 +330,45 @@ function codepointToCtrlKeyCode(codepoint) {
|
|
|
336
330
|
}
|
|
337
331
|
return null;
|
|
338
332
|
}
|
|
333
|
+
function blendThemeColors(from, to, t) {
|
|
334
|
+
const clampedT = Math.max(0, Math.min(1, t));
|
|
335
|
+
if (clampedT <= 0)
|
|
336
|
+
return from;
|
|
337
|
+
if (clampedT >= 1)
|
|
338
|
+
return to;
|
|
339
|
+
const colors = {};
|
|
340
|
+
const keys = new Set([...Object.keys(from.colors), ...Object.keys(to.colors)]);
|
|
341
|
+
for (const key of keys) {
|
|
342
|
+
const fromColor = from.colors[key];
|
|
343
|
+
const toColor = to.colors[key];
|
|
344
|
+
if (fromColor && toColor) {
|
|
345
|
+
colors[key] = blendRgb(fromColor, toColor, clampedT);
|
|
346
|
+
}
|
|
347
|
+
else if (toColor) {
|
|
348
|
+
colors[key] = toColor;
|
|
349
|
+
}
|
|
350
|
+
else if (fromColor) {
|
|
351
|
+
colors[key] = fromColor;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return Object.freeze({
|
|
355
|
+
colors: Object.freeze(colors),
|
|
356
|
+
spacing: to.spacing,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
339
359
|
export function createApp(opts) {
|
|
340
360
|
const backend = opts.backend;
|
|
341
361
|
const config = resolveAppConfig(opts.config);
|
|
342
|
-
const backendUseDrawlistV2 = readBackendBooleanMarker(backend, BACKEND_DRAWLIST_V2_MARKER);
|
|
343
|
-
if (config.useV2Cursor && backendUseDrawlistV2 === false) {
|
|
344
|
-
invalidProps("config.useV2Cursor=true but backend.useDrawlistV2=false. " +
|
|
345
|
-
"Fix: enable cursor-v2 support in the backend (drawlistVersion >= 2).");
|
|
346
|
-
}
|
|
347
362
|
const backendDrawlistVersion = readBackendDrawlistVersionMarker(backend);
|
|
348
|
-
if (
|
|
349
|
-
invalidProps(`
|
|
350
|
-
}
|
|
351
|
-
const drawlistVersion = backendDrawlistVersion
|
|
363
|
+
if (backendDrawlistVersion !== null && backendDrawlistVersion < 2) {
|
|
364
|
+
invalidProps(`backend drawlistVersion=${String(backendDrawlistVersion)} is no longer supported. Fix: set backend drawlist version >= 2.`);
|
|
365
|
+
}
|
|
366
|
+
const drawlistVersion = backendDrawlistVersion === 2 ||
|
|
367
|
+
backendDrawlistVersion === 3 ||
|
|
368
|
+
backendDrawlistVersion === 4 ||
|
|
369
|
+
backendDrawlistVersion === 5
|
|
370
|
+
? backendDrawlistVersion
|
|
371
|
+
: 5;
|
|
352
372
|
const backendMaxEventBytes = readBackendPositiveIntMarker(backend, BACKEND_MAX_EVENT_BYTES_MARKER);
|
|
353
373
|
if (backendMaxEventBytes !== null && backendMaxEventBytes !== config.maxEventBytes) {
|
|
354
374
|
invalidProps(`config.maxEventBytes=${String(config.maxEventBytes)} must match backend maxEventBytes=${String(backendMaxEventBytes)}. Fix: align maxEventBytes between app config and backend, or prefer createNodeApp({ config }) for Node/Bun apps to keep them aligned automatically.`);
|
|
@@ -358,6 +378,7 @@ export function createApp(opts) {
|
|
|
358
378
|
invalidProps(`config.fpsCap=${String(config.fpsCap)} must match backend fpsCap=${String(backendFpsCap)}. Fix: align fpsCap between app config and backend, or prefer createNodeApp({ config }) for Node/Bun apps to keep them aligned automatically.`);
|
|
359
379
|
}
|
|
360
380
|
let theme = coerceToLegacyTheme(opts.theme ?? defaultTheme);
|
|
381
|
+
let themeTransition = null;
|
|
361
382
|
let terminalProfile = DEFAULT_TERMINAL_PROFILE;
|
|
362
383
|
const sm = new AppStateMachine();
|
|
363
384
|
const routes = opts.routes;
|
|
@@ -453,6 +474,43 @@ export function createApp(opts) {
|
|
|
453
474
|
return;
|
|
454
475
|
scheduler.enqueue({ kind: "renderRequest" });
|
|
455
476
|
}
|
|
477
|
+
function beginThemeTransition(nextTheme) {
|
|
478
|
+
if (config.themeTransitionFrames <= 0 || sm.state !== "Running" || mode !== "widget") {
|
|
479
|
+
theme = nextTheme;
|
|
480
|
+
themeTransition = null;
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
themeTransition = Object.freeze({
|
|
484
|
+
from: theme,
|
|
485
|
+
to: nextTheme,
|
|
486
|
+
frame: 0,
|
|
487
|
+
totalFrames: config.themeTransitionFrames,
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
function advanceThemeTransitionFrame() {
|
|
491
|
+
const active = themeTransition;
|
|
492
|
+
if (!active)
|
|
493
|
+
return;
|
|
494
|
+
const nextFrame = active.frame + 1;
|
|
495
|
+
if (nextFrame >= active.totalFrames) {
|
|
496
|
+
theme = active.to;
|
|
497
|
+
themeTransition = null;
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
theme = blendThemeColors(active.from, active.to, nextFrame / active.totalFrames);
|
|
501
|
+
themeTransition = Object.freeze({
|
|
502
|
+
...active,
|
|
503
|
+
frame: nextFrame,
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
function scheduleThemeTransitionContinuation() {
|
|
507
|
+
if (!themeTransition || sm.state !== "Running")
|
|
508
|
+
return;
|
|
509
|
+
// Theme-aware composite widgets resolve recipe styles during commit, so
|
|
510
|
+
// transition frames must invalidate view/commit, not only render.
|
|
511
|
+
markDirty(DIRTY_VIEW, false);
|
|
512
|
+
scheduler.enqueue({ kind: "renderRequest" });
|
|
513
|
+
}
|
|
456
514
|
function requestRenderFromRenderer() {
|
|
457
515
|
markDirty(DIRTY_RENDER);
|
|
458
516
|
}
|
|
@@ -481,7 +539,6 @@ export function createApp(opts) {
|
|
|
481
539
|
rootPadding: config.rootPadding,
|
|
482
540
|
breakpointThresholds: config.breakpointThresholds,
|
|
483
541
|
terminalProfile,
|
|
484
|
-
useV2Cursor: config.useV2Cursor,
|
|
485
542
|
...(opts.config?.drawlistValidateParams === undefined
|
|
486
543
|
? {}
|
|
487
544
|
: { drawlistValidateParams: opts.config.drawlistValidateParams }),
|
|
@@ -1159,6 +1216,7 @@ export function createApp(opts) {
|
|
|
1159
1216
|
checkLayoutStability: (pendingDirtyFlags & DIRTY_LAYOUT) === 0 && (pendingDirtyFlags & DIRTY_VIEW) !== 0,
|
|
1160
1217
|
nowMs: frameNowMs,
|
|
1161
1218
|
};
|
|
1219
|
+
advanceThemeTransitionFrame();
|
|
1162
1220
|
const resilientView = (state) => {
|
|
1163
1221
|
if (topLevelViewError !== null) {
|
|
1164
1222
|
return buildTopLevelViewErrorScreen(topLevelViewError);
|
|
@@ -1208,6 +1266,7 @@ export function createApp(opts) {
|
|
|
1208
1266
|
if (plan.commit)
|
|
1209
1267
|
consumedDirtyFlags |= DIRTY_VIEW;
|
|
1210
1268
|
clearConsumedDirtyFlags(consumedDirtyFlags, dirtyVersionStart);
|
|
1269
|
+
scheduleThemeTransitionContinuation();
|
|
1211
1270
|
}
|
|
1212
1271
|
function drainIgnored(items) {
|
|
1213
1272
|
for (const it of items) {
|
|
@@ -1410,10 +1469,14 @@ export function createApp(opts) {
|
|
|
1410
1469
|
if (inRender)
|
|
1411
1470
|
throwCode("ZRUI_UPDATE_DURING_RENDER", updateDuringRenderDetail("setTheme"));
|
|
1412
1471
|
const nextTheme = coerceToLegacyTheme(next);
|
|
1413
|
-
if (nextTheme ===
|
|
1472
|
+
if (nextTheme === themeTransition?.to)
|
|
1414
1473
|
return;
|
|
1415
|
-
theme
|
|
1416
|
-
|
|
1474
|
+
if (nextTheme === theme) {
|
|
1475
|
+
themeTransition = null;
|
|
1476
|
+
return;
|
|
1477
|
+
}
|
|
1478
|
+
beginThemeTransition(nextTheme);
|
|
1479
|
+
requestViewFromRenderer();
|
|
1417
1480
|
},
|
|
1418
1481
|
debugLayout(enabled) {
|
|
1419
1482
|
assertOperational("debugLayout");
|
|
@@ -1567,6 +1630,7 @@ export function createApp(opts) {
|
|
|
1567
1630
|
}
|
|
1568
1631
|
return p.then(() => {
|
|
1569
1632
|
lifecycleBusy = null;
|
|
1633
|
+
themeTransition = null;
|
|
1570
1634
|
sm.toStopped();
|
|
1571
1635
|
settleActiveRun?.();
|
|
1572
1636
|
}, (e) => {
|
|
@@ -1582,6 +1646,7 @@ export function createApp(opts) {
|
|
|
1582
1646
|
if (st0 === "Disposed")
|
|
1583
1647
|
return;
|
|
1584
1648
|
pollToken++;
|
|
1649
|
+
themeTransition = null;
|
|
1585
1650
|
try {
|
|
1586
1651
|
sm.dispose();
|
|
1587
1652
|
}
|