@jrichman/ink 6.4.5 → 6.4.7

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 (49) hide show
  1. package/build/components/App.d.ts +2 -0
  2. package/build/components/App.js +2 -1
  3. package/build/components/App.js.map +1 -1
  4. package/build/components/AppContext.d.ts +2 -0
  5. package/build/components/AppContext.js.map +1 -1
  6. package/build/components/Box.d.ts +1 -0
  7. package/build/data-limited-lru-map.js +11 -1
  8. package/build/data-limited-lru-map.js.map +1 -1
  9. package/build/dom.d.ts +2 -0
  10. package/build/dom.js +29 -20
  11. package/build/dom.js.map +1 -1
  12. package/build/index.d.ts +4 -2
  13. package/build/index.js +3 -1
  14. package/build/index.js.map +1 -1
  15. package/build/ink.d.ts +7 -0
  16. package/build/ink.js +30 -4
  17. package/build/ink.js.map +1 -1
  18. package/build/layout.d.ts +18 -0
  19. package/build/layout.js +54 -0
  20. package/build/layout.js.map +1 -0
  21. package/build/measure-element.d.ts +29 -1
  22. package/build/measure-element.js +515 -0
  23. package/build/measure-element.js.map +1 -1
  24. package/build/measure-text.js +21 -14
  25. package/build/measure-text.js.map +1 -1
  26. package/build/render-node-to-output.d.ts +7 -1
  27. package/build/render-node-to-output.js +53 -16
  28. package/build/render-node-to-output.js.map +1 -1
  29. package/build/render.d.ts +11 -0
  30. package/build/render.js +2 -0
  31. package/build/render.js.map +1 -1
  32. package/build/renderer.d.ts +2 -1
  33. package/build/renderer.js +135 -1
  34. package/build/renderer.js.map +1 -1
  35. package/build/selection.d.ts +44 -0
  36. package/build/selection.js +370 -0
  37. package/build/selection.js.map +1 -0
  38. package/build/styles.d.ts +8 -0
  39. package/build/styles.js.map +1 -1
  40. package/build/text-wrap.d.ts +1 -0
  41. package/build/text-wrap.js +13 -0
  42. package/build/text-wrap.js.map +1 -1
  43. package/build/vertical-gap.d.ts +17 -0
  44. package/build/vertical-gap.js +20 -0
  45. package/build/vertical-gap.js.map +1 -0
  46. package/package.json +1 -1
  47. package/build/wrap-text.d.ts +0 -6
  48. package/build/wrap-text.js +0 -120
  49. package/build/wrap-text.js.map +0 -1
@@ -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":"AACA,OAAO,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAEtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,WAAyB,EACzB,KAAa,EACb,GAAY,EACG,EAAE;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,KAAK,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;QAElC,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;YACxC,MAAM;QACP,CAAC;QAED,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,IAAI,SAAS,CAAC;IACpB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAClC,WAAyB,EACzB,OAAe,EACf,UAAmD,EAAE,EACtC,EAAE;IACjB,MAAM,EAAC,QAAQ,GAAG,KAAK,EAAC,GAAG,OAAO,CAAC;IACnC,MAAM,mBAAmB,GAAG,GAAG,CAAC;IAChC,MAAM,oBAAoB,GAAe;QACxC,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,mBAAmB;QAC1B,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,EAAE;KACV,CAAC;IAEF,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEhD,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,MAAM,eAAe,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAE/D,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,gBAAgB,CAC7B,WAAW,EACX,SAAS,GAAG,OAAO,GAAG,eAAe,EACrC,SAAS,CACT,CAAC;QACF,OAAO,CAAC,oBAAoB,EAAE,GAAG,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;QACvC,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,GAAG,eAAe,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,gBAAgB,CAC7B,WAAW,EACX,SAAS,GAAG,UAAU,EACtB,SAAS,CACT,CAAC;QACF,OAAO,CAAC,GAAG,IAAI,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,IAAI,EAAE,oBAAoB,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAChB,IAAoB,EACpB,IAAkB,EAClB,OAAe,EACd,EAAE;IACH,IAAI,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;IAC/B,IAAI,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAE5C,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAE3D,IAAI,OAAO,GAAG,eAAe,GAAG,OAAO,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACd,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;YAC3B,OAAO,GAAG,CAAC,CAAC;QACb,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,IAAI,eAAe,CAAC;IAC5B,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,WAAyB,EACzB,OAAe,EACE,EAAE;IACnB,MAAM,IAAI,GAAmB,CAAC,EAAE,CAAC,CAAC;IAClC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,IAAI,WAAW,GAAiB,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YACxB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzB,CAAC;YAED,WAAW,GAAG,EAAE,CAAC;QAClB,CAAC;aAAM,CAAC;YACP,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,KAAK,GAAe;QACzB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,EAAE;KACV,CAAC;IAEF,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;QAE9C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,QAAQ,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,SAAS,GAAG,OAAO,EAAE,CAAC;YACzB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAElD,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,CAAC;YACF,CAAC;YAED,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9B,SAAS;QACV,CAAC;QAED,IAAI,QAAQ,GAAG,SAAS,GAAG,OAAO,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACpD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC,CAAC"}