@tui-sandbox/library 12.5.0 → 12.5.2
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/src/client/drawTextBox.js +7 -6
- package/dist/src/client/drawTextBox.js.map +1 -1
- package/dist/src/client/drawTextBox.test.js +41 -0
- package/dist/src/client/drawTextBox.test.js.map +1 -1
- package/dist/src/client/extractTerminalContent.d.ts +2 -0
- package/dist/src/client/extractTerminalContent.js +11 -0
- package/dist/src/client/extractTerminalContent.js.map +1 -0
- package/dist/src/client/extractTerminalContent.test.d.ts +1 -0
- package/dist/src/client/extractTerminalContent.test.js +29 -0
- package/dist/src/client/extractTerminalContent.test.js.map +1 -0
- package/dist/src/client/index.d.ts +2 -0
- package/dist/src/client/index.js +2 -0
- package/dist/src/client/index.js.map +1 -1
- package/dist/src/client/visualWidth.d.ts +1 -0
- package/dist/src/client/visualWidth.js +3 -0
- package/dist/src/client/visualWidth.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/src/server/cypress-support/tui-sandbox-template.ts +3 -14
|
@@ -1,16 +1,17 @@
|
|
|
1
|
+
import { visualWidth } from "./visualWidth.js";
|
|
1
2
|
/** Draw a Unicode box around text content with a title in the top border. */
|
|
2
3
|
export const drawTextBox = (title, content, minWidth = 88) => {
|
|
3
4
|
const header = ` ${title} `;
|
|
5
|
+
const headerWidth = visualWidth(header);
|
|
4
6
|
const contentLines = content.split("\n");
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const width = Math.max(minWidth, maxContentWidth + 4, header.length + 2);
|
|
7
|
+
const maxContentWidth = Math.max(...contentLines.map(line => visualWidth(line)));
|
|
8
|
+
const width = Math.max(minWidth, maxContentWidth + 4, headerWidth + 2);
|
|
8
9
|
const innerWidth = width - 2;
|
|
9
|
-
const topBorder = `┌${header}${"─".repeat(innerWidth -
|
|
10
|
+
const topBorder = `┌${header}${"─".repeat(innerWidth - headerWidth)}┐`;
|
|
10
11
|
const bottomBorder = `└${"─".repeat(innerWidth)}┘`;
|
|
11
12
|
const lines = contentLines.map(line => {
|
|
12
|
-
const
|
|
13
|
-
return `│ ${
|
|
13
|
+
const padding = " ".repeat(innerWidth - 2 - visualWidth(line));
|
|
14
|
+
return `│ ${line}${padding} │`;
|
|
14
15
|
});
|
|
15
16
|
return `${topBorder}\n${lines.join("\n")}\n${bottomBorder}`;
|
|
16
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawTextBox.js","sourceRoot":"","sources":["../../../src/client/drawTextBox.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,OAAe,EAAE,QAAQ,GAAG,EAAE,EAAU,EAAE;IACnF,MAAM,MAAM,GAAG,IAAI,KAAK,GAAG,CAAA;IAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAExC,
|
|
1
|
+
{"version":3,"file":"drawTextBox.js","sourceRoot":"","sources":["../../../src/client/drawTextBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,OAAe,EAAE,QAAQ,GAAG,EAAE,EAAU,EAAE;IACnF,MAAM,MAAM,GAAG,IAAI,KAAK,GAAG,CAAA;IAC3B,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAExC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAA;IAEtE,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAA;IAC5B,MAAM,SAAS,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,CAAA;IACtE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAA;IAClD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACpC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9D,OAAO,KAAK,IAAI,GAAG,OAAO,IAAI,CAAA;IAChC,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,SAAS,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,YAAY,EAAE,CAAA;AAC7D,CAAC,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
import { drawTextBox } from "./drawTextBox.js";
|
|
3
|
+
import { visualWidth } from "./visualWidth.js";
|
|
3
4
|
describe("drawTextBox", () => {
|
|
4
5
|
it("draws a box around terminal content", () => {
|
|
5
6
|
const content = [
|
|
@@ -28,5 +29,45 @@ describe("drawTextBox", () => {
|
|
|
28
29
|
const lengths = lines.map(line => line.length);
|
|
29
30
|
expect(new Set(lengths).size).toBe(1);
|
|
30
31
|
});
|
|
32
|
+
it("right-aligns the border when content contains wide CJK characters", () => {
|
|
33
|
+
// "日本" is 4 cells (2 wide chars at 2 cells each); "abcd" is also 4
|
|
34
|
+
// cells. JS .length differs (2 vs 4) but visual width must match across
|
|
35
|
+
// all box lines so the right border lines up.
|
|
36
|
+
const content = ["日本", "abcd"].join("\n");
|
|
37
|
+
const lines = drawTextBox("Title", content).split("\n");
|
|
38
|
+
const widths = lines.map(visualWidth);
|
|
39
|
+
expect(new Set(widths).size).toBe(1);
|
|
40
|
+
});
|
|
41
|
+
it("right-aligns the border when the title contains wide characters", () => {
|
|
42
|
+
const lines = drawTextBox("日本語タイトル", "content").split("\n");
|
|
43
|
+
const widths = lines.map(visualWidth);
|
|
44
|
+
expect(new Set(widths).size).toBe(1);
|
|
45
|
+
});
|
|
46
|
+
it("right-aligns the border for emoji content", () => {
|
|
47
|
+
const content = ["🎉🎉", "ab"].join("\n");
|
|
48
|
+
const lines = drawTextBox("Title", content).split("\n");
|
|
49
|
+
const widths = lines.map(visualWidth);
|
|
50
|
+
expect(new Set(widths).size).toBe(1);
|
|
51
|
+
});
|
|
52
|
+
it("right-aligns the border for ZWJ-joined emoji clusters", () => {
|
|
53
|
+
// 👨👩👧👦 is one grapheme (2 cells) built from 4 code points + ZWJs
|
|
54
|
+
// (11 JS chars total). Naive .length math would over-pad by 9.
|
|
55
|
+
const content = ["👨👩👧👦", "ab"].join("\n");
|
|
56
|
+
const lines = drawTextBox("Title", content).split("\n");
|
|
57
|
+
const widths = lines.map(visualWidth);
|
|
58
|
+
expect(new Set(widths).size).toBe(1);
|
|
59
|
+
});
|
|
60
|
+
it("renders a tight box around CJK content", () => {
|
|
61
|
+
// Snapshot — verifies the right border `│` actually lines up visually
|
|
62
|
+
// when the file is viewed in a monospace context. minWidth=20 forces
|
|
63
|
+
// the box to be sized by content rather than the default minimum.
|
|
64
|
+
const content = ["日本", "abcd"].join("\n");
|
|
65
|
+
expect(drawTextBox("T", content, 20)).toMatchInlineSnapshot(`
|
|
66
|
+
"┌ T ───────────────┐
|
|
67
|
+
│ 日本 │
|
|
68
|
+
│ abcd │
|
|
69
|
+
└──────────────────┘"
|
|
70
|
+
`);
|
|
71
|
+
});
|
|
31
72
|
}); // describe
|
|
32
73
|
//# sourceMappingURL=drawTextBox.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawTextBox.test.js","sourceRoot":"","sources":["../../../src/client/drawTextBox.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,OAAO,GAAG;YACd,EAAE;YACF,2CAA2C;YAC3C,mEAAmE;YACnE,uEAAuE;YACvE,cAAc;SACf,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEZ,MAAM,CAAC,WAAW,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;GAQnF,CAAC,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,QAAQ,GACZ,gIAAgI,CAAA;QAClI,MAAM,OAAO,GAAG,CAAC,wCAAwC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEpF,MAAM,MAAM,GAAG,WAAW,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAA;QAClE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEhC,4CAA4C;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC9C,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA,CAAC,WAAW"}
|
|
1
|
+
{"version":3,"file":"drawTextBox.test.js","sourceRoot":"","sources":["../../../src/client/drawTextBox.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Join row text into a snapshot, dropping trailing blank rows. */
|
|
2
|
+
export const extractTerminalContent = (rowTexts) => {
|
|
3
|
+
if (rowTexts.length === 0)
|
|
4
|
+
return undefined;
|
|
5
|
+
const lines = [...rowTexts];
|
|
6
|
+
while (lines.length > 0 && lines[lines.length - 1]?.trim() === "") {
|
|
7
|
+
lines.pop();
|
|
8
|
+
}
|
|
9
|
+
return lines.length > 0 ? lines.join("\n") : undefined;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=extractTerminalContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractTerminalContent.js","sourceRoot":"","sources":["../../../src/client/extractTerminalContent.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAA+B,EAAsB,EAAE;IAC5F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAE3C,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;IAC3B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAClE,KAAK,CAAC,GAAG,EAAE,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACxD,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { extractTerminalContent } from "./extractTerminalContent.js";
|
|
3
|
+
describe("extractTerminalContent", () => {
|
|
4
|
+
it("works with basic cases", () => {
|
|
5
|
+
expect(extractTerminalContent([]), "returns undefined for an empty rows array").toBeUndefined();
|
|
6
|
+
expect(extractTerminalContent(["", " ", "\t"]), "returns undefined when every row is blank").toBeUndefined();
|
|
7
|
+
expect(extractTerminalContent(["a", "b", "c"]), "returns undefined when every row is blank").toBe("a\nb\nc");
|
|
8
|
+
expect(extractTerminalContent(["hello", "world", "", " "]), "returns undefined when every row is blank").toBe("hello\nworld");
|
|
9
|
+
expect(extractTerminalContent(["", "hello"]), "returns undefined when every row is blank").toBe("\nhello");
|
|
10
|
+
});
|
|
11
|
+
describe("multi-byte / Unicode", () => {
|
|
12
|
+
it("preserves CJK wide characters", () => {
|
|
13
|
+
expect(extractTerminalContent(["你好世界"])).toBe("你好世界");
|
|
14
|
+
});
|
|
15
|
+
it("preserves emoji surrogate pairs", () => {
|
|
16
|
+
expect(extractTerminalContent(["🎉 Done!"])).toBe("🎉 Done!");
|
|
17
|
+
});
|
|
18
|
+
it("preserves precomposed and decomposed diacritics", () => {
|
|
19
|
+
expect(extractTerminalContent(["café"])).toBe("café");
|
|
20
|
+
expect(extractTerminalContent(["café"])).toBe("café");
|
|
21
|
+
});
|
|
22
|
+
it("treats ideographic space as blank when trimming trailing rows", () => {
|
|
23
|
+
// String.prototype.trim() removes U+3000 per spec, so a row containing
|
|
24
|
+
// only ideographic spaces is dropped from the trailing tail.
|
|
25
|
+
expect(extractTerminalContent(["text", " "])).toBe("text");
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=extractTerminalContent.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractTerminalContent.test.js","sourceRoot":"","sources":["../../../src/client/extractTerminalContent.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,EAAE,2CAA2C,CAAC,CAAC,aAAa,EAAE,CAAA;QAC/F,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,2CAA2C,CAAC,CAAC,aAAa,EAAE,CAAA;QAC7G,MAAM,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,2CAA2C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC5G,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,2CAA2C,CAAC,CAAC,IAAI,CAC5G,cAAc,CACf,CAAA;QACD,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,2CAA2C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC5G,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,sBAAsB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACrD,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACzD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;YACvE,uEAAuE;YACvE,6DAA6D;YAC7D,MAAM,CAAC,sBAAsB,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -2,4 +2,6 @@ export type { InMemoryClipboard } from "./clipboard.js";
|
|
|
2
2
|
export { rgbify } from "./color-utilities.js";
|
|
3
3
|
export { textIsVisibleWithBackgroundColor, textIsVisibleWithColor } from "./cypress-assertions.js";
|
|
4
4
|
export { drawTextBox } from "./drawTextBox.js";
|
|
5
|
+
export { extractTerminalContent } from "./extractTerminalContent.js";
|
|
5
6
|
export type { MyNeovimConfigModification } from "./neovim/MyNeovimConfigModification.ts";
|
|
7
|
+
export { visualWidth } from "./visualWidth.js";
|
package/dist/src/client/index.js
CHANGED
|
@@ -2,4 +2,6 @@
|
|
|
2
2
|
export { rgbify } from "./color-utilities.js";
|
|
3
3
|
export { textIsVisibleWithBackgroundColor, textIsVisibleWithColor } from "./cypress-assertions.js";
|
|
4
4
|
export { drawTextBox } from "./drawTextBox.js";
|
|
5
|
+
export { extractTerminalContent } from "./extractTerminalContent.js";
|
|
6
|
+
export { visualWidth } from "./visualWidth.js";
|
|
5
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAG9E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAG9E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const visualWidth: (s: string) => number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualWidth.js","sourceRoot":"","sources":["../../../src/client/visualWidth.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA"}
|