@effect-tui/react 0.15.1 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/src/components/ListView.d.ts +4 -4
- package/dist/src/components/ListView.d.ts.map +1 -1
- package/dist/src/components/ListView.js +16 -17
- package/dist/src/components/ListView.js.map +1 -1
- package/dist/src/console/ConsolePopover.d.ts +7 -1
- package/dist/src/console/ConsolePopover.d.ts.map +1 -1
- package/dist/src/console/ConsolePopover.js +55 -74
- package/dist/src/console/ConsolePopover.js.map +1 -1
- package/dist/src/debug/DebugOverlay.d.ts.map +1 -1
- package/dist/src/debug/DebugOverlay.js +3 -57
- package/dist/src/debug/DebugOverlay.js.map +1 -1
- package/dist/src/debug/DiagnosticsPanel.js +1 -1
- package/dist/src/debug/DiagnosticsPanel.js.map +1 -1
- package/dist/src/dev.d.ts +5 -117
- package/dist/src/dev.d.ts.map +1 -1
- package/dist/src/dev.js +3 -333
- package/dist/src/dev.js.map +1 -1
- package/dist/src/hooks/use-scroll.d.ts +31 -35
- package/dist/src/hooks/use-scroll.d.ts.map +1 -1
- package/dist/src/hooks/use-scroll.js +51 -90
- package/dist/src/hooks/use-scroll.js.map +1 -1
- package/dist/src/hosts/canvas.d.ts +2 -2
- package/dist/src/hosts/canvas.d.ts.map +1 -1
- package/dist/src/hosts/canvas.js +8 -10
- package/dist/src/hosts/canvas.js.map +1 -1
- package/dist/src/hosts/codeblock.d.ts +7 -4
- package/dist/src/hosts/codeblock.d.ts.map +1 -1
- package/dist/src/hosts/codeblock.js +26 -9
- package/dist/src/hosts/codeblock.js.map +1 -1
- package/dist/src/hosts/flex-container.d.ts +1 -1
- package/dist/src/hosts/flex-container.d.ts.map +1 -1
- package/dist/src/hosts/flex-container.js +3 -3
- package/dist/src/hosts/flex-container.js.map +1 -1
- package/dist/src/hosts/index.d.ts +2 -1
- package/dist/src/hosts/index.d.ts.map +1 -1
- package/dist/src/hosts/index.js +2 -1
- package/dist/src/hosts/index.js.map +1 -1
- package/dist/src/hosts/layout-helpers.d.ts +10 -0
- package/dist/src/hosts/layout-helpers.d.ts.map +1 -0
- package/dist/src/hosts/layout-helpers.js +10 -0
- package/dist/src/hosts/layout-helpers.js.map +1 -0
- package/dist/src/hosts/leaf.d.ts +14 -0
- package/dist/src/hosts/leaf.d.ts.map +1 -0
- package/dist/src/hosts/leaf.js +31 -0
- package/dist/src/hosts/leaf.js.map +1 -0
- package/dist/src/hosts/overlay.d.ts.map +1 -1
- package/dist/src/hosts/overlay.js +4 -7
- package/dist/src/hosts/overlay.js.map +1 -1
- package/dist/src/hosts/scroll.d.ts +47 -24
- package/dist/src/hosts/scroll.d.ts.map +1 -1
- package/dist/src/hosts/scroll.js +68 -51
- package/dist/src/hosts/scroll.js.map +1 -1
- package/dist/src/hosts/spacer.d.ts +3 -4
- package/dist/src/hosts/spacer.d.ts.map +1 -1
- package/dist/src/hosts/spacer.js +2 -5
- package/dist/src/hosts/spacer.js.map +1 -1
- package/dist/src/hosts/text.d.ts +2 -3
- package/dist/src/hosts/text.d.ts.map +1 -1
- package/dist/src/hosts/text.js +5 -61
- package/dist/src/hosts/text.js.map +1 -1
- package/dist/src/hosts/vstack.js +1 -1
- package/dist/src/hosts/vstack.js.map +1 -1
- package/dist/src/hosts/zstack.d.ts +1 -1
- package/dist/src/hosts/zstack.d.ts.map +1 -1
- package/dist/src/hosts/zstack.js +6 -6
- package/dist/src/hosts/zstack.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/internal/dev/hmr.d.ts +20 -0
- package/dist/src/internal/dev/hmr.d.ts.map +1 -0
- package/dist/src/internal/dev/hmr.js +93 -0
- package/dist/src/internal/dev/hmr.js.map +1 -0
- package/dist/src/internal/dev/runtime.d.ts +24 -0
- package/dist/src/internal/dev/runtime.d.ts.map +1 -0
- package/dist/src/internal/dev/runtime.js +135 -0
- package/dist/src/internal/dev/runtime.js.map +1 -0
- package/dist/src/internal/dev/ui.d.ts +13 -0
- package/dist/src/internal/dev/ui.d.ts.map +1 -0
- package/dist/src/internal/dev/ui.js +51 -0
- package/dist/src/internal/dev/ui.js.map +1 -0
- package/dist/src/internal/renderer/context.d.ts +9 -0
- package/dist/src/internal/renderer/context.d.ts.map +1 -0
- package/dist/src/internal/renderer/context.js +22 -0
- package/dist/src/internal/renderer/context.js.map +1 -0
- package/dist/src/internal/renderer/core/FrameBuilder.d.ts +18 -0
- package/dist/src/internal/renderer/core/FrameBuilder.d.ts.map +1 -0
- package/dist/src/internal/renderer/core/FrameBuilder.js +40 -0
- package/dist/src/internal/renderer/core/FrameBuilder.js.map +1 -0
- package/dist/src/internal/renderer/core/RendererState.d.ts +41 -0
- package/dist/src/internal/renderer/core/RendererState.d.ts.map +1 -0
- package/dist/src/internal/renderer/core/RendererState.js +70 -0
- package/dist/src/internal/renderer/core/RendererState.js.map +1 -0
- package/dist/src/internal/renderer/core/index.d.ts +3 -0
- package/dist/src/internal/renderer/core/index.d.ts.map +1 -0
- package/dist/src/internal/renderer/core/index.js +3 -0
- package/dist/src/internal/renderer/core/index.js.map +1 -0
- package/dist/src/internal/renderer/index.d.ts +40 -0
- package/dist/src/internal/renderer/index.d.ts.map +1 -0
- package/dist/src/internal/renderer/index.js +518 -0
- package/dist/src/internal/renderer/index.js.map +1 -0
- package/dist/src/internal/renderer/input/InputProcessor.d.ts +30 -0
- package/dist/src/internal/renderer/input/InputProcessor.d.ts.map +1 -0
- package/dist/src/internal/renderer/input/InputProcessor.js +122 -0
- package/dist/src/internal/renderer/input/InputProcessor.js.map +1 -0
- package/dist/src/internal/renderer/input/index.d.ts +2 -0
- package/dist/src/internal/renderer/input/index.d.ts.map +1 -0
- package/dist/src/internal/renderer/input/index.js +2 -0
- package/dist/src/internal/renderer/input/index.js.map +1 -0
- package/dist/src/internal/renderer/lifecycle/EventBus.d.ts +42 -0
- package/dist/src/internal/renderer/lifecycle/EventBus.d.ts.map +1 -0
- package/dist/src/internal/renderer/lifecycle/EventBus.js +97 -0
- package/dist/src/internal/renderer/lifecycle/EventBus.js.map +1 -0
- package/dist/src/internal/renderer/lifecycle/ProcessLifecycle.d.ts +13 -0
- package/dist/src/internal/renderer/lifecycle/ProcessLifecycle.d.ts.map +1 -0
- package/dist/src/internal/renderer/lifecycle/ProcessLifecycle.js +111 -0
- package/dist/src/internal/renderer/lifecycle/ProcessLifecycle.js.map +1 -0
- package/dist/src/internal/renderer/lifecycle/RenderCache.d.ts +3 -0
- package/dist/src/internal/renderer/lifecycle/RenderCache.d.ts.map +1 -0
- package/dist/src/internal/renderer/lifecycle/RenderCache.js +9 -0
- package/dist/src/internal/renderer/lifecycle/RenderCache.js.map +1 -0
- package/dist/src/internal/renderer/lifecycle/index.d.ts +4 -0
- package/dist/src/internal/renderer/lifecycle/index.d.ts.map +1 -0
- package/dist/src/internal/renderer/lifecycle/index.js +4 -0
- package/dist/src/internal/renderer/lifecycle/index.js.map +1 -0
- package/dist/src/internal/renderer/modes/FullscreenRenderer.d.ts +12 -0
- package/dist/src/internal/renderer/modes/FullscreenRenderer.d.ts.map +1 -0
- package/dist/src/internal/renderer/modes/FullscreenRenderer.js +54 -0
- package/dist/src/internal/renderer/modes/FullscreenRenderer.js.map +1 -0
- package/dist/src/internal/renderer/modes/InlineRenderer.d.ts +25 -0
- package/dist/src/internal/renderer/modes/InlineRenderer.d.ts.map +1 -0
- package/dist/src/internal/renderer/modes/InlineRenderer.js +166 -0
- package/dist/src/internal/renderer/modes/InlineRenderer.js.map +1 -0
- package/dist/src/internal/renderer/modes/RendererMode.d.ts +42 -0
- package/dist/src/internal/renderer/modes/RendererMode.d.ts.map +1 -0
- package/dist/src/internal/renderer/modes/RendererMode.js +2 -0
- package/dist/src/internal/renderer/modes/RendererMode.js.map +1 -0
- package/dist/src/internal/renderer/modes/StaticContentRenderer.d.ts +25 -0
- package/dist/src/internal/renderer/modes/StaticContentRenderer.d.ts.map +1 -0
- package/dist/src/internal/renderer/modes/StaticContentRenderer.js +49 -0
- package/dist/src/internal/renderer/modes/StaticContentRenderer.js.map +1 -0
- package/dist/src/internal/renderer/modes/index.d.ts +5 -0
- package/dist/src/internal/renderer/modes/index.d.ts.map +1 -0
- package/dist/src/internal/renderer/modes/index.js +4 -0
- package/dist/src/internal/renderer/modes/index.js.map +1 -0
- package/dist/src/internal/renderer/terminal/KeyboardCapabilityProbe.d.ts +13 -0
- package/dist/src/internal/renderer/terminal/KeyboardCapabilityProbe.d.ts.map +1 -0
- package/dist/src/internal/renderer/terminal/KeyboardCapabilityProbe.js +75 -0
- package/dist/src/internal/renderer/terminal/KeyboardCapabilityProbe.js.map +1 -0
- package/dist/src/internal/renderer/terminal/TerminalSetup.d.ts +29 -0
- package/dist/src/internal/renderer/terminal/TerminalSetup.d.ts.map +1 -0
- package/dist/src/internal/renderer/terminal/TerminalSetup.js +82 -0
- package/dist/src/internal/renderer/terminal/TerminalSetup.js.map +1 -0
- package/dist/src/internal/renderer/terminal/index.d.ts +3 -0
- package/dist/src/internal/renderer/terminal/index.d.ts.map +1 -0
- package/dist/src/internal/renderer/terminal/index.js +3 -0
- package/dist/src/internal/renderer/terminal/index.js.map +1 -0
- package/dist/src/internal/renderer/types.d.ts +118 -0
- package/dist/src/internal/renderer/types.d.ts.map +1 -0
- package/dist/src/internal/renderer/types.js +2 -0
- package/dist/src/internal/renderer/types.js.map +1 -0
- package/dist/src/renderer-context.d.ts +1 -8
- package/dist/src/renderer-context.d.ts.map +1 -1
- package/dist/src/renderer-context.js +1 -21
- package/dist/src/renderer-context.js.map +1 -1
- package/dist/src/renderer-types.d.ts +1 -115
- package/dist/src/renderer-types.d.ts.map +1 -1
- package/dist/src/renderer.d.ts +1 -31
- package/dist/src/renderer.d.ts.map +1 -1
- package/dist/src/renderer.js +1 -468
- package/dist/src/renderer.js.map +1 -1
- package/dist/src/test/render-tui.d.ts +3 -3
- package/dist/src/test/render-tui.d.ts.map +1 -1
- package/dist/src/test/render-tui.js +16 -9
- package/dist/src/test/render-tui.js.map +1 -1
- package/dist/src/utils/alignment.d.ts +1 -1
- package/dist/src/utils/alignment.d.ts.map +1 -1
- package/dist/src/utils/alignment.js +0 -2
- package/dist/src/utils/alignment.js.map +1 -1
- package/dist/src/utils/console-helpers.d.ts +19 -0
- package/dist/src/utils/console-helpers.d.ts.map +1 -0
- package/dist/src/utils/console-helpers.js +61 -0
- package/dist/src/utils/console-helpers.js.map +1 -0
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +1 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/styles.d.ts +8 -1
- package/dist/src/utils/styles.d.ts.map +1 -1
- package/dist/src/utils/styles.js +10 -8
- package/dist/src/utils/styles.js.map +1 -1
- package/dist/src/utils/text-wrap.d.ts +5 -0
- package/dist/src/utils/text-wrap.d.ts.map +1 -1
- package/dist/src/utils/text-wrap.js +110 -48
- package/dist/src/utils/text-wrap.js.map +1 -1
- package/dist/src/visualize/index.js +1 -1
- package/dist/src/visualize/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/components/ListView.tsx +21 -23
- package/src/console/ConsolePopover.tsx +124 -107
- package/src/debug/DebugOverlay.ts +15 -74
- package/src/debug/DiagnosticsPanel.tsx +1 -1
- package/src/dev.tsx +5 -458
- package/src/hooks/use-scroll.ts +85 -145
- package/src/hosts/canvas.ts +8 -11
- package/src/hosts/codeblock.ts +30 -11
- package/src/hosts/flex-container.ts +4 -4
- package/src/hosts/index.ts +10 -1
- package/src/hosts/layout-helpers.ts +20 -0
- package/src/hosts/leaf.ts +36 -0
- package/src/hosts/overlay.ts +11 -9
- package/src/hosts/scroll.ts +94 -69
- package/src/hosts/spacer.ts +3 -7
- package/src/hosts/text.ts +5 -58
- package/src/hosts/vstack.ts +1 -1
- package/src/hosts/zstack.ts +7 -7
- package/src/index.ts +1 -1
- package/src/internal/dev/hmr.ts +101 -0
- package/src/internal/dev/runtime.ts +170 -0
- package/src/internal/dev/ui.tsx +87 -0
- package/src/internal/renderer/context.ts +27 -0
- package/src/{renderer → internal/renderer}/core/FrameBuilder.ts +2 -2
- package/src/internal/renderer/index.ts +656 -0
- package/src/{renderer → internal/renderer}/input/InputProcessor.ts +10 -1
- package/src/{renderer → internal/renderer}/lifecycle/EventBus.ts +9 -1
- package/src/internal/renderer/lifecycle/ProcessLifecycle.ts +125 -0
- package/src/internal/renderer/lifecycle/index.ts +3 -0
- package/src/{renderer → internal/renderer}/modes/InlineRenderer.ts +5 -2
- package/src/{renderer → internal/renderer}/modes/RendererMode.ts +1 -1
- package/src/{renderer → internal/renderer}/modes/StaticContentRenderer.ts +5 -2
- package/src/internal/renderer/terminal/KeyboardCapabilityProbe.ts +91 -0
- package/src/{renderer/lifecycle → internal/renderer/terminal}/TerminalSetup.ts +4 -22
- package/src/internal/renderer/terminal/index.ts +2 -0
- package/src/internal/renderer/types.ts +125 -0
- package/src/renderer-context.ts +1 -27
- package/src/renderer-types.ts +10 -123
- package/src/renderer.ts +1 -590
- package/src/test/render-tui.ts +16 -10
- package/src/utils/alignment.ts +1 -3
- package/src/utils/console-helpers.ts +86 -0
- package/src/utils/index.ts +1 -1
- package/src/utils/styles.ts +16 -4
- package/src/utils/text-wrap.ts +139 -48
- package/src/visualize/index.tsx +1 -1
- package/src/renderer/lifecycle/ResizeManager.ts +0 -65
- package/src/renderer/lifecycle/index.ts +0 -4
- /package/src/{renderer → internal/renderer}/core/RendererState.ts +0 -0
- /package/src/{renderer → internal/renderer}/core/index.ts +0 -0
- /package/src/{renderer → internal/renderer}/input/index.ts +0 -0
- /package/src/{renderer → internal/renderer}/lifecycle/RenderCache.ts +0 -0
- /package/src/{renderer → internal/renderer}/modes/FullscreenRenderer.ts +0 -0
- /package/src/{renderer → internal/renderer}/modes/index.ts +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Colors, displayWidth } from "@effect-tui/core";
|
|
2
2
|
import { resolveBgStyle, resolvePadding, styleIdFromProps } from "../utils/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import { LeafHost } from "./leaf.js";
|
|
4
4
|
function lineDisplayWidth(line) {
|
|
5
5
|
return line.reduce((w, token) => w + displayWidth(token.text), 0);
|
|
6
6
|
}
|
|
7
|
-
export class CodeBlockHost extends
|
|
7
|
+
export class CodeBlockHost extends LeafHost {
|
|
8
8
|
lines = [[]];
|
|
9
9
|
lineNumbers = false;
|
|
10
10
|
padding = { top: 0, right: 0, bottom: 0, left: 0 };
|
|
@@ -13,6 +13,7 @@ export class CodeBlockHost extends BaseHost {
|
|
|
13
13
|
lineNumberBackground;
|
|
14
14
|
cachedLineWidths = [];
|
|
15
15
|
gutterWidth = 0;
|
|
16
|
+
prepared = false;
|
|
16
17
|
constructor(props, ctx) {
|
|
17
18
|
super("codeblock", props, ctx);
|
|
18
19
|
this.updateProps(props);
|
|
@@ -31,10 +32,22 @@ export class CodeBlockHost extends BaseHost {
|
|
|
31
32
|
get insetY() {
|
|
32
33
|
return this.padding.top + this.padding.bottom;
|
|
33
34
|
}
|
|
35
|
+
prepareMetrics() {
|
|
36
|
+
this.cachedLineWidths = this.lines.map((line) => lineDisplayWidth(line));
|
|
37
|
+
this.gutterWidth = this.computeGutterWidth();
|
|
38
|
+
this.prepared = true;
|
|
39
|
+
}
|
|
40
|
+
ensurePrepared() {
|
|
41
|
+
if (this.prepared)
|
|
42
|
+
return;
|
|
43
|
+
this.prepareMetrics();
|
|
44
|
+
}
|
|
45
|
+
prepareSelf() {
|
|
46
|
+
this.ensurePrepared();
|
|
47
|
+
}
|
|
34
48
|
measure(maxW, maxH) {
|
|
35
49
|
const constrained = this.constrainProposal(maxW, maxH);
|
|
36
|
-
this.
|
|
37
|
-
this.gutterWidth = this.computeGutterWidth();
|
|
50
|
+
this.ensurePrepared();
|
|
38
51
|
const maxLineW = this.cachedLineWidths.reduce((max, w) => (w > max ? w : max), 0);
|
|
39
52
|
const contentW = maxLineW + this.insetX;
|
|
40
53
|
const innerHeight = Math.max(1, this.lines.length) + this.insetY;
|
|
@@ -43,9 +56,6 @@ export class CodeBlockHost extends BaseHost {
|
|
|
43
56
|
h: Math.min(constrained.h, innerHeight),
|
|
44
57
|
});
|
|
45
58
|
}
|
|
46
|
-
layout(rect) {
|
|
47
|
-
super.layout(rect);
|
|
48
|
-
}
|
|
49
59
|
render(buffer, palette) {
|
|
50
60
|
if (!this.rect)
|
|
51
61
|
return;
|
|
@@ -93,10 +103,15 @@ export class CodeBlockHost extends BaseHost {
|
|
|
93
103
|
}
|
|
94
104
|
updateProps(props) {
|
|
95
105
|
super.updateProps(props);
|
|
96
|
-
|
|
106
|
+
let invalidate = false;
|
|
107
|
+
if (props.lines !== undefined) {
|
|
97
108
|
this.lines = props.lines;
|
|
98
|
-
|
|
109
|
+
invalidate = true;
|
|
110
|
+
}
|
|
111
|
+
if (props.lineNumbers !== undefined) {
|
|
99
112
|
this.lineNumbers = !!props.lineNumbers;
|
|
113
|
+
invalidate = true;
|
|
114
|
+
}
|
|
100
115
|
if (props.padding !== undefined)
|
|
101
116
|
this.padding = resolvePadding(props.padding);
|
|
102
117
|
if (props.background !== undefined)
|
|
@@ -105,6 +120,8 @@ export class CodeBlockHost extends BaseHost {
|
|
|
105
120
|
this.lineNumberColor = props.lineNumberColor;
|
|
106
121
|
if (props.lineNumberBackground !== undefined)
|
|
107
122
|
this.lineNumberBackground = props.lineNumberBackground;
|
|
123
|
+
if (invalidate)
|
|
124
|
+
this.prepared = false;
|
|
108
125
|
}
|
|
109
126
|
}
|
|
110
127
|
//# sourceMappingURL=codeblock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeblock.js","sourceRoot":"","sources":["../../../src/hosts/codeblock.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,MAAM,EAAE,YAAY,EAAgB,MAAM,kBAAkB,CAAA;AAGlG,OAAO,EAAmC,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACrH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAWpC,SAAS,gBAAgB,CAAC,IAAmB;IAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;AAClE,CAAC;AAED,MAAM,OAAO,aAAc,SAAQ,QAAQ;IAC1C,KAAK,GAAoB,CAAC,EAAE,CAAC,CAAA;IAC7B,WAAW,GAAG,KAAK,CAAA;IACnB,OAAO,GAAY,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;IAC3D,UAAU,CAAQ;IAClB,eAAe,CAAQ;IACvB,oBAAoB,CAAQ;IAEpB,gBAAgB,GAAa,EAAE,CAAA;IAC/B,WAAW,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"codeblock.js","sourceRoot":"","sources":["../../../src/hosts/codeblock.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { CellBuffer, Color, Palette } from "@effect-tui/core";
|
|
|
2
2
|
import type { CommonProps, HostContext, Rect, Size } from "../reconciler/types.js";
|
|
3
3
|
import { type FlexAxis, type Padding, type PaddingInput } from "../utils/index.js";
|
|
4
4
|
import { BaseHost } from "./base.js";
|
|
5
|
-
export type CrossAlignment<A extends FlexAxis> = A extends "vertical" ? "
|
|
5
|
+
export type CrossAlignment<A extends FlexAxis> = A extends "vertical" ? "left" | "center" | "right" : "top" | "center" | "bottom";
|
|
6
6
|
export interface FlexContainerProps<A extends FlexAxis> extends CommonProps {
|
|
7
7
|
spacing?: number;
|
|
8
8
|
alignment?: CrossAlignment<A>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flex-container.d.ts","sourceRoot":"","sources":["../../../src/hosts/flex-container.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAEN,KAAK,QAAQ,EAGb,KAAK,OAAO,EACZ,KAAK,YAAY,EAGjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,UAAU,GAClE,
|
|
1
|
+
{"version":3,"file":"flex-container.d.ts","sourceRoot":"","sources":["../../../src/hosts/flex-container.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAEN,KAAK,QAAQ,EAGb,KAAK,OAAO,EACZ,KAAK,YAAY,EAGjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,UAAU,GAClE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAC3B,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE9B,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,WAAW;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,yDAAyD;IACzD,EAAE,CAAC,EAAE,KAAK,CAAA;CACV;AAYD;;;GAGG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,QAAQ;IASjE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAR3B,OAAO,SAAI;IACX,SAAS,EAAG,cAAc,CAAC,CAAC,CAAC,CAAA;IAC7B,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,OAAO,EAAE,OAAO,CAA2C;IAC3D,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,cAAc,CAA2B;gBAG7B,IAAI,EAAE,CAAC,EAC1B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,GAAG,EAAE,WAAW,EAChB,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC;IAOpC,4EAA4E;IAC5E,OAAO,CAAC,oBAAoB;IAI5B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAuBhC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAsBjC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAgBzC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAU1D"}
|
|
@@ -6,7 +6,7 @@ function toFlexAlignment(axis, alignment) {
|
|
|
6
6
|
if (alignment === "center")
|
|
7
7
|
return "center";
|
|
8
8
|
if (axis === "vertical") {
|
|
9
|
-
return alignment === "
|
|
9
|
+
return alignment === "left" ? "start" : "end";
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
12
|
return alignment === "top" ? "start" : "end";
|
|
@@ -69,7 +69,7 @@ export class FlexContainerHost extends BaseHost {
|
|
|
69
69
|
}
|
|
70
70
|
layout(rect) {
|
|
71
71
|
const layoutRect = this.layoutWithConstraints(rect);
|
|
72
|
-
const stretchCross = this.axis === "vertical" ? this.alignment === "
|
|
72
|
+
const stretchCross = this.axis === "vertical" ? this.alignment === "left" : this.alignment === "top";
|
|
73
73
|
const insetX = this.padding.left + this.padding.right;
|
|
74
74
|
const insetY = this.padding.top + this.padding.bottom;
|
|
75
75
|
const innerRect = {
|
|
@@ -100,7 +100,7 @@ export class FlexContainerHost extends BaseHost {
|
|
|
100
100
|
// Reset to axis-specific default when undefined
|
|
101
101
|
this.alignment =
|
|
102
102
|
props.alignment ??
|
|
103
|
-
(this.axis === "vertical" ? "
|
|
103
|
+
(this.axis === "vertical" ? "left" : "top");
|
|
104
104
|
this.padding = resolvePadding(props.padding);
|
|
105
105
|
this.bg = props.bg;
|
|
106
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flex-container.js","sourceRoot":"","sources":["../../../src/hosts/flex-container.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EAGN,UAAU,EACV,WAAW,EAGX,cAAc,EACd,cAAc,GACd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAcpC,gDAAgD;AAChD,SAAS,eAAe,CAAqB,IAAO,EAAE,SAA4B;IACjF,IAAI,SAAS,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC3C,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACzB,OAAO,SAAS,KAAK,
|
|
1
|
+
{"version":3,"file":"flex-container.js","sourceRoot":"","sources":["../../../src/hosts/flex-container.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,9 @@ export { CodeBlockHost, type CodeBlockProps } from "./codeblock.js";
|
|
|
8
8
|
export { HStackHost, type HStackProps } from "./hstack.js";
|
|
9
9
|
export { OverlayHost, type OverlayProps } from "./overlay.js";
|
|
10
10
|
export { OverlayItemHost, type OverlayItemProps } from "./overlay-item.js";
|
|
11
|
-
export { ScrollHost, type ScrollProps } from "./scroll.js";
|
|
11
|
+
export { ScrollHost, type ScrollAlign, type ScrollAlignX, type ScrollAlignY, type ScrollAxis, type ScrollLayoutChange, type ScrollProps, } from "./scroll.js";
|
|
12
12
|
export { SingleChildHost } from "./single-child.js";
|
|
13
|
+
export { LeafHost } from "./leaf.js";
|
|
13
14
|
export { SpacerHost, type SpacerProps } from "./spacer.js";
|
|
14
15
|
export { RawTextHost, SpanHost, TextHost, type SpanProps, type SpanStyle, type StyledSpan, type TextProps, } from "./text.js";
|
|
15
16
|
export { VStackHost, type VStackProps } from "./vstack.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AASzC,OAAO,EAAE,WAAW,EAAsB,MAAM,WAAW,CAAA;AAI3D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AASzC,OAAO,EAAE,WAAW,EAAsB,MAAM,WAAW,CAAA;AAI3D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EACN,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,WAAW,GAChB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EACN,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,SAAS,GACd,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAI1D,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,KAAK,QAAQ,CAavF,CAAA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,CAM/F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAE9E"}
|
package/dist/src/hosts/index.js
CHANGED
|
@@ -16,8 +16,9 @@ export { CodeBlockHost } from "./codeblock.js";
|
|
|
16
16
|
export { HStackHost } from "./hstack.js";
|
|
17
17
|
export { OverlayHost } from "./overlay.js";
|
|
18
18
|
export { OverlayItemHost } from "./overlay-item.js";
|
|
19
|
-
export { ScrollHost } from "./scroll.js";
|
|
19
|
+
export { ScrollHost, } from "./scroll.js";
|
|
20
20
|
export { SingleChildHost } from "./single-child.js";
|
|
21
|
+
export { LeafHost } from "./leaf.js";
|
|
21
22
|
export { SpacerHost } from "./spacer.js";
|
|
22
23
|
export { RawTextHost, SpanHost, TextHost, } from "./text.js";
|
|
23
24
|
export { VStackHost } from "./vstack.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,UAAU,EAAsC,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAuB,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAqB,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAyB,MAAM,mBAAmB,CAAA;AAC1E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,UAAU,EAAsC,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAuB,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAqB,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAyB,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EACN,UAAU,GAOV,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EACN,WAAW,EACX,QAAQ,EACR,QAAQ,GAKR,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAE1D,uDAAuD;AACvD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,YAAY,GAAmE;IAC3F,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,OAAO;IACZ,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,aAAa;IACxB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,WAAW;IACpB,WAAW,EAAE,eAAe;CAC5B,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAkB,EAAE,GAAgB;IACpF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,GAAgB;IAChE,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAClC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Rect, Size } from "../reconciler/types.js";
|
|
2
|
+
import type { HostInstance } from "../reconciler/types.js";
|
|
3
|
+
import { type HAlign, type VAlign } from "../utils/index.js";
|
|
4
|
+
type Alignment = {
|
|
5
|
+
h?: HAlign;
|
|
6
|
+
v?: VAlign;
|
|
7
|
+
};
|
|
8
|
+
export declare function layoutAlignedChildren(layoutRect: Rect, children: HostInstance[], cachedSizes: Size[], alignmentForChild: (child: HostInstance, index: number) => Alignment, startIndex?: number): void;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=layout-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-helpers.d.ts","sourceRoot":"","sources":["../../../src/hosts/layout-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAoB,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE9E,KAAK,SAAS,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3C,wBAAgB,qBAAqB,CACpC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,YAAY,EAAE,EACxB,WAAW,EAAE,IAAI,EAAE,EACnB,iBAAiB,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,EACpE,UAAU,SAAI,GACZ,IAAI,CAON"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { alignedChildRect } from "../utils/index.js";
|
|
2
|
+
export function layoutAlignedChildren(layoutRect, children, cachedSizes, alignmentForChild, startIndex = 0) {
|
|
3
|
+
for (let i = startIndex; i < children.length; i++) {
|
|
4
|
+
const child = children[i];
|
|
5
|
+
const size = cachedSizes[i] ?? child.measure(layoutRect.w, layoutRect.h);
|
|
6
|
+
const alignment = alignmentForChild(child, i);
|
|
7
|
+
child.layout(alignedChildRect(layoutRect, size, alignment.h ?? "center", alignment.v ?? "center"));
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=layout-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-helpers.js","sourceRoot":"","sources":["../../../src/hosts/layout-helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAA4B,MAAM,mBAAmB,CAAA;AAI9E,MAAM,UAAU,qBAAqB,CACpC,UAAgB,EAChB,QAAwB,EACxB,WAAmB,EACnB,iBAAoE,EACpE,UAAU,GAAG,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACzB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;QACxE,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC7C,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAA;IACnG,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { HostInstance } from "../reconciler/types.js";
|
|
2
|
+
import { BaseHost } from "./base.js";
|
|
3
|
+
/**
|
|
4
|
+
* Base host that rejects children.
|
|
5
|
+
* Any attempted child insertion is ignored with a warning (once).
|
|
6
|
+
*/
|
|
7
|
+
export declare abstract class LeafHost extends BaseHost {
|
|
8
|
+
private warned;
|
|
9
|
+
appendChild(child: HostInstance): void;
|
|
10
|
+
insertBefore(child: HostInstance, _before: HostInstance): void;
|
|
11
|
+
removeChild(child: HostInstance): void;
|
|
12
|
+
private rejectChild;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=leaf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leaf.d.ts","sourceRoot":"","sources":["../../../src/hosts/leaf.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC;;;GAGG;AACH,8BAAsB,QAAS,SAAQ,QAAQ;IAC9C,OAAO,CAAC,MAAM,CAAQ;IAEb,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAItC,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAI9D,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAU/C,OAAO,CAAC,WAAW;CAOnB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BaseHost } from "./base.js";
|
|
2
|
+
/**
|
|
3
|
+
* Base host that rejects children.
|
|
4
|
+
* Any attempted child insertion is ignored with a warning (once).
|
|
5
|
+
*/
|
|
6
|
+
export class LeafHost extends BaseHost {
|
|
7
|
+
warned = false;
|
|
8
|
+
appendChild(child) {
|
|
9
|
+
this.rejectChild(child);
|
|
10
|
+
}
|
|
11
|
+
insertBefore(child, _before) {
|
|
12
|
+
this.rejectChild(child);
|
|
13
|
+
}
|
|
14
|
+
removeChild(child) {
|
|
15
|
+
const idx = this.children.indexOf(child);
|
|
16
|
+
if (idx >= 0) {
|
|
17
|
+
this.children.splice(idx, 1);
|
|
18
|
+
}
|
|
19
|
+
if (child.parent === this) {
|
|
20
|
+
child.parent = null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
rejectChild(child) {
|
|
24
|
+
if (!this.warned) {
|
|
25
|
+
console.warn(`[effect-tui] <${this.type}> does not support children; child ignored.`);
|
|
26
|
+
this.warned = true;
|
|
27
|
+
}
|
|
28
|
+
child.parent = null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=leaf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leaf.js","sourceRoot":"","sources":["../../../src/hosts/leaf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC;;;GAGG;AACH,MAAM,OAAgB,QAAS,SAAQ,QAAQ;IACtC,MAAM,GAAG,KAAK,CAAA;IAEb,WAAW,CAAC,KAAmB;QACvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IAEQ,YAAY,CAAC,KAAmB,EAAE,OAAqB;QAC/D,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IAEQ,WAAW,CAAC,KAAmB;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QAC7B,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC3B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAA;QACpB,CAAC;IACF,CAAC;IAEO,WAAW,CAAC,KAAmB;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,6CAA6C,CAAC,CAAA;YACrF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QACnB,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/hosts/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/hosts/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAIpC,MAAM,WAAW,YAAa,SAAQ,WAAW;CAAG;AAEpD,qBAAa,WAAY,SAAQ,QAAQ;IACxC,OAAO,CAAC,WAAW,CAAa;gBAEpB,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW;IAKxC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAwBzC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAsBxB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAM3D"}
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
* </Overlay>
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
|
-
import { alignedChildRect } from "../utils/index.js";
|
|
19
18
|
import { BaseHost } from "./base.js";
|
|
19
|
+
import { layoutAlignedChildren } from "./layout-helpers.js";
|
|
20
20
|
export class OverlayHost extends BaseHost {
|
|
21
21
|
cachedSizes = [];
|
|
22
22
|
constructor(props, ctx) {
|
|
@@ -50,13 +50,10 @@ export class OverlayHost extends BaseHost {
|
|
|
50
50
|
baseChild.layout(layoutRect);
|
|
51
51
|
}
|
|
52
52
|
// Layout overlay children with their alignment
|
|
53
|
-
|
|
54
|
-
const child = this.children[i];
|
|
55
|
-
const size = this.cachedSizes[i] ?? child.measure(layoutRect.w, layoutRect.h);
|
|
53
|
+
layoutAlignedChildren(layoutRect, this.children, this.cachedSizes, (child) => {
|
|
56
54
|
// Read alignment from OverlayItemHost (use type check, not instanceof, for bundler compatibility)
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
55
|
+
return child.type === "overlayItem" ? child.alignment : {};
|
|
56
|
+
}, 1);
|
|
60
57
|
}
|
|
61
58
|
render(buffer, palette) {
|
|
62
59
|
// Render all children in order (base first, then overlays)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../../src/hosts/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../../src/hosts/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAK3D,MAAM,OAAO,WAAY,SAAQ,QAAQ;IAChC,WAAW,GAAW,EAAE,CAAA;IAEhC,YAAY,KAAmB,EAAE,GAAgB;QAChD,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAC5B,IAAI,CAAC,WAAW,CAAC,KAA2C,CAAC,CAAA;IAC9D,CAAC;IAEQ,OAAO,CAAC,IAAY,EAAE,IAAY;QAC1C,yDAAyD;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAEtD,uCAAuC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;QAChE,IAAI,CAAC,WAAW,GAAG,CAAC,QAAQ,CAAC,CAAA;QAE7B,8CAA8C;QAC9C,iEAAiE;QACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;YAC7D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;QAED,4DAA4D;QAC5D,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAEQ,MAAM,CAAC,IAAU;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAEnD,qCAAqC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAClC,IAAI,SAAS,EAAE,CAAC;YACf,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC7B,CAAC;QAED,+CAA+C;QAC/C,qBAAqB,CACpB,UAAU,EACV,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,CAAC,KAAK,EAAE,EAAE;YACT,kGAAkG;YAClG,OAAO,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAE,KAAyB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;QAChF,CAAC,EACD,CAAC,CACD,CAAA;IACF,CAAC;IAEQ,MAAM,CAAC,MAAkB,EAAE,OAAgB;QACnD,2DAA2D;QAC3D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QACjD,CAAC;IACF,CAAC;CACD"}
|
|
@@ -1,15 +1,48 @@
|
|
|
1
1
|
import type { CellBuffer, Color, Palette } from "@effect-tui/core";
|
|
2
2
|
import type { CommonProps, HostContext, Rect, Size } from "../reconciler/types.js";
|
|
3
3
|
import { SingleChildHost } from "./single-child.js";
|
|
4
|
+
export type ScrollAxis = "vertical" | "horizontal" | "both";
|
|
5
|
+
export type ScrollAlignX = "left" | "center" | "right";
|
|
6
|
+
export type ScrollAlignY = "top" | "center" | "bottom";
|
|
7
|
+
export type ScrollAlign = ScrollAlignX | ScrollAlignY | {
|
|
8
|
+
x?: ScrollAlignX;
|
|
9
|
+
y?: ScrollAlignY;
|
|
10
|
+
};
|
|
11
|
+
export interface ScrollLayoutChange {
|
|
12
|
+
content: {
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
};
|
|
16
|
+
viewport: {
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
};
|
|
20
|
+
offset: {
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
};
|
|
24
|
+
rect: {
|
|
25
|
+
x: number;
|
|
26
|
+
y: number;
|
|
27
|
+
w: number;
|
|
28
|
+
h: number;
|
|
29
|
+
};
|
|
30
|
+
axis: ScrollAxis;
|
|
31
|
+
}
|
|
4
32
|
export interface ScrollProps extends CommonProps {
|
|
5
33
|
/** Scroll axis: "vertical" (default), "horizontal", or "both" */
|
|
6
|
-
axis?:
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
/** Horizontal offset
|
|
34
|
+
axis?: ScrollAxis;
|
|
35
|
+
/** Vertical scroll offset in pixels (0 = top) */
|
|
36
|
+
offsetY?: number;
|
|
37
|
+
/** Horizontal scroll offset in pixels (0 = left) */
|
|
10
38
|
offsetX?: number;
|
|
11
|
-
/**
|
|
12
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Alignment when content is smaller than viewport.
|
|
41
|
+
* - axis="vertical": "top" | "center" | "bottom"
|
|
42
|
+
* - axis="horizontal": "left" | "center" | "right"
|
|
43
|
+
* - axis="both": { x, y }
|
|
44
|
+
*/
|
|
45
|
+
align?: ScrollAlign;
|
|
13
46
|
/** Background color for the scroll viewport */
|
|
14
47
|
bg?: Color;
|
|
15
48
|
/** Whether to show scrollbar indicators */
|
|
@@ -19,31 +52,19 @@ export interface ScrollProps extends CommonProps {
|
|
|
19
52
|
* This is handled in the host itself for instant updates (no React roundtrip).
|
|
20
53
|
*/
|
|
21
54
|
sticky?: boolean;
|
|
22
|
-
/** Called when
|
|
23
|
-
|
|
24
|
-
/** Called when viewport size changes (for useScroll) */
|
|
25
|
-
onViewportSize?: (width: number, height: number) => void;
|
|
26
|
-
/** Called when effective offset changes (for syncing with useScroll when sticky adjusts) */
|
|
27
|
-
onEffectiveOffset?: (offset: number) => void;
|
|
28
|
-
/** Called when effective horizontal offset changes */
|
|
29
|
-
onEffectiveOffsetX?: (offsetX: number) => void;
|
|
30
|
-
/** Called when layout rect changes (for hit testing) */
|
|
31
|
-
onRect?: (x: number, y: number, w: number, h: number) => void;
|
|
55
|
+
/** Called when scroll layout changes (content/viewport/offset/rect). */
|
|
56
|
+
onScrollLayoutChange?: (event: ScrollLayoutChange) => void;
|
|
32
57
|
}
|
|
33
58
|
export declare class ScrollHost extends SingleChildHost {
|
|
34
|
-
axis:
|
|
35
|
-
|
|
59
|
+
axis: ScrollAxis;
|
|
60
|
+
offsetY: number;
|
|
36
61
|
offsetX: number;
|
|
37
|
-
align
|
|
62
|
+
align?: ScrollAlign;
|
|
38
63
|
bg?: Color;
|
|
39
64
|
showScrollbar: boolean;
|
|
40
65
|
sticky: boolean;
|
|
41
66
|
greedy: boolean | number | undefined;
|
|
42
|
-
|
|
43
|
-
onViewportSize?: (width: number, height: number) => void;
|
|
44
|
-
onEffectiveOffset?: (offset: number) => void;
|
|
45
|
-
onEffectiveOffsetX?: (offsetX: number) => void;
|
|
46
|
-
onRect?: (x: number, y: number, w: number, h: number) => void;
|
|
67
|
+
onScrollLayoutChange?: (event: ScrollLayoutChange) => void;
|
|
47
68
|
private contentWidth;
|
|
48
69
|
private contentHeight;
|
|
49
70
|
private lastReportedContentW;
|
|
@@ -54,6 +75,8 @@ export declare class ScrollHost extends SingleChildHost {
|
|
|
54
75
|
private lastRectY;
|
|
55
76
|
private lastRectW;
|
|
56
77
|
private lastRectH;
|
|
78
|
+
private lastOffsetY;
|
|
79
|
+
private lastOffsetX;
|
|
57
80
|
private wasAtEnd;
|
|
58
81
|
private wasAtEndX;
|
|
59
82
|
private effectiveOffset;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../src/hosts/scroll.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAElF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,
|
|
1
|
+
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../src/hosts/scroll.ts"],"names":[],"mappings":"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"}
|