@jrichman/ink 6.6.9 → 7.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/build/components/Box.js +7 -4
  2. package/build/components/Box.js.map +1 -1
  3. package/build/components/StaticRender.d.ts +1 -1
  4. package/build/components/StaticRender.js +19 -7
  5. package/build/components/StaticRender.js.map +1 -1
  6. package/build/dom.d.ts +8 -3
  7. package/build/dom.js +42 -12
  8. package/build/dom.js.map +1 -1
  9. package/build/get-max-width.js +1 -1
  10. package/build/get-max-width.js.map +1 -1
  11. package/build/ink.d.ts +1 -0
  12. package/build/ink.js +61 -5
  13. package/build/ink.js.map +1 -1
  14. package/build/measure-element.js +25 -16
  15. package/build/measure-element.js.map +1 -1
  16. package/build/measure-text.js +8 -3
  17. package/build/measure-text.js.map +1 -1
  18. package/build/output.d.ts +60 -2
  19. package/build/output.js +259 -66
  20. package/build/output.js.map +1 -1
  21. package/build/reconciler.js +36 -6
  22. package/build/reconciler.js.map +1 -1
  23. package/build/render-background.js +2 -2
  24. package/build/render-background.js.map +1 -1
  25. package/build/render-border.js +2 -2
  26. package/build/render-border.js.map +1 -1
  27. package/build/render-container.js +2 -4
  28. package/build/render-container.js.map +1 -1
  29. package/build/render-node-to-output.js +161 -40
  30. package/build/render-node-to-output.js.map +1 -1
  31. package/build/render-sticky.d.ts +3 -3
  32. package/build/render-sticky.js +18 -18
  33. package/build/render-sticky.js.map +1 -1
  34. package/build/renderer.d.ts +1 -0
  35. package/build/renderer.js +58 -14
  36. package/build/renderer.js.map +1 -1
  37. package/build/resize-observer.js +4 -4
  38. package/build/resize-observer.js.map +1 -1
  39. package/build/scroll.js +3 -3
  40. package/build/scroll.js.map +1 -1
  41. package/build/serialization.js +1 -1
  42. package/build/serialization.js.map +1 -1
  43. package/build/squash-text-nodes.js +15 -6
  44. package/build/squash-text-nodes.js.map +1 -1
  45. package/build/styled-line.d.ts +8 -0
  46. package/build/styled-line.js +418 -137
  47. package/build/styled-line.js.map +1 -1
  48. package/build/terminal-buffer.d.ts +1 -0
  49. package/build/terminal-buffer.js +173 -48
  50. package/build/terminal-buffer.js.map +1 -1
  51. package/build/tokenize.d.ts +1 -0
  52. package/build/tokenize.js +146 -0
  53. package/build/tokenize.js.map +1 -1
  54. package/build/worker/animation-controller.js +1 -1
  55. package/build/worker/animation-controller.js.map +1 -1
  56. package/build/worker/canvas.js +15 -3
  57. package/build/worker/canvas.js.map +1 -1
  58. package/build/worker/compositor.js +2 -1
  59. package/build/worker/compositor.js.map +1 -1
  60. package/build/worker/render-worker.d.ts +14 -4
  61. package/build/worker/render-worker.js +32 -26
  62. package/build/worker/render-worker.js.map +1 -1
  63. package/build/worker/scene-manager.js +23 -8
  64. package/build/worker/scene-manager.js.map +1 -1
  65. package/build/worker/scroll-optimizer.d.ts +1 -1
  66. package/build/worker/scroll-optimizer.js +3 -3
  67. package/build/worker/scroll-optimizer.js.map +1 -1
  68. package/build/worker/terminal-writer.d.ts +0 -1
  69. package/build/worker/terminal-writer.js +25 -11
  70. package/build/worker/terminal-writer.js.map +1 -1
  71. package/package.json +2 -2
  72. package/readme.md +27 -8
  73. package/build/wrap-text.d.ts +0 -6
  74. package/build/wrap-text.js +0 -120
  75. package/build/wrap-text.js.map +0 -1
@@ -1,6 +0,0 @@
1
- import { type StyledChar } from '@alcalzone/ansi-tokenize';
2
- export declare const sliceStyledChars: (styledChars: StyledChar[], begin: number, end?: number) => StyledChar[];
3
- export declare const truncateStyledChars: (styledChars: StyledChar[], columns: number, options?: {
4
- position?: "start" | "middle" | "end";
5
- }) => StyledChar[];
6
- export declare const wrapStyledChars: (styledChars: StyledChar[], columns: number) => StyledChar[][];
@@ -1,120 +0,0 @@
1
- import { inkCharacterWidth, styledCharsWidth } from './measure-text.js';
2
- export const sliceStyledChars = (styledChars, begin, end) => {
3
- let width = 0;
4
- const result = [];
5
- for (const char of styledChars) {
6
- const charWidth = inkCharacterWidth(char.value);
7
- const charStart = width;
8
- const charEnd = width + charWidth;
9
- if (end !== undefined && charEnd > end) {
10
- break;
11
- }
12
- if (charStart >= begin) {
13
- result.push(char);
14
- }
15
- width += charWidth;
16
- }
17
- return result;
18
- };
19
- export const truncateStyledChars = (styledChars, columns, options = {}) => {
20
- const { position = 'end' } = options;
21
- const truncationCharacter = '…';
22
- const truncationStyledChar = {
23
- type: 'char',
24
- value: truncationCharacter,
25
- fullWidth: false,
26
- styles: [],
27
- };
28
- if (columns < 1) {
29
- return [];
30
- }
31
- if (columns === 1) {
32
- return [truncationStyledChar];
33
- }
34
- const textWidth = styledCharsWidth(styledChars);
35
- if (textWidth <= columns) {
36
- return styledChars;
37
- }
38
- const truncationWidth = inkCharacterWidth(truncationCharacter);
39
- if (position === 'start') {
40
- const right = sliceStyledChars(styledChars, textWidth - columns + truncationWidth, textWidth);
41
- return [truncationStyledChar, ...right];
42
- }
43
- if (position === 'middle') {
44
- const leftWidth = Math.ceil(columns / 2);
45
- const rightWidth = columns - leftWidth;
46
- const left = sliceStyledChars(styledChars, 0, leftWidth - truncationWidth);
47
- const right = sliceStyledChars(styledChars, textWidth - rightWidth, textWidth);
48
- return [...left, truncationStyledChar, ...right];
49
- }
50
- const left = sliceStyledChars(styledChars, 0, columns - truncationWidth);
51
- return [...left, truncationStyledChar];
52
- };
53
- const wrapWord = (rows, word, columns) => {
54
- let currentLine = rows.at(-1);
55
- let visible = styledCharsWidth(currentLine);
56
- for (const character of word) {
57
- const characterLength = inkCharacterWidth(character.value);
58
- if (visible + characterLength > columns && visible > 0) {
59
- rows.push([]);
60
- currentLine = rows.at(-1);
61
- visible = 0;
62
- }
63
- currentLine.push(character);
64
- visible += characterLength;
65
- }
66
- };
67
- export const wrapStyledChars = (styledChars, columns) => {
68
- const rows = [[]];
69
- const words = [];
70
- let currentWord = [];
71
- for (const char of styledChars) {
72
- if (char.value === ' ') {
73
- if (currentWord.length > 0) {
74
- words.push(currentWord);
75
- }
76
- currentWord = [];
77
- }
78
- else {
79
- currentWord.push(char);
80
- }
81
- }
82
- if (currentWord.length > 0) {
83
- words.push(currentWord);
84
- }
85
- const space = {
86
- type: 'char',
87
- value: ' ',
88
- fullWidth: false,
89
- styles: [],
90
- };
91
- for (const [index, word] of words.entries()) {
92
- const wordWidth = styledCharsWidth(word);
93
- let rowWidth = styledCharsWidth(rows.at(-1));
94
- if (index > 0) {
95
- rows.at(-1).push(space);
96
- rowWidth++;
97
- }
98
- if (wordWidth > columns) {
99
- if (index > 0) {
100
- rows[rows.length - 1] = rows.at(-1).slice(0, -1);
101
- if (rows.at(-1).length > 0) {
102
- rows.push([]);
103
- }
104
- }
105
- wrapWord(rows, word, columns);
106
- continue;
107
- }
108
- if (rowWidth + wordWidth > columns && rowWidth > 0) {
109
- if (index > 0) {
110
- rows[rows.length - 1] = rows.at(-1).slice(0, -1);
111
- }
112
- rows.push(word);
113
- }
114
- else {
115
- rows.at(-1).push(...word);
116
- }
117
- }
118
- return rows;
119
- };
120
- //# sourceMappingURL=wrap-text.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wrap-text.js","sourceRoot":"","sources":["../src/wrap-text.ts"],"names":[],"mappings":"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"}