@google/gemini-cli 0.25.0-nightly.20260112.15891721a → 0.25.0-preview.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.
Files changed (255) hide show
  1. package/dist/package.json +2 -2
  2. package/dist/src/commands/extensions/examples/mcp-server/example.d.ts +6 -0
  3. package/dist/src/commands/extensions/examples/mcp-server/example.js +22 -36
  4. package/dist/src/commands/extensions/examples/mcp-server/example.js.map +1 -0
  5. package/dist/src/commands/extensions/examples/mcp-server/example.test.d.ts +6 -0
  6. package/dist/src/commands/extensions/examples/mcp-server/example.test.js +111 -0
  7. package/dist/src/commands/extensions/examples/mcp-server/example.test.js.map +1 -0
  8. package/dist/src/commands/extensions/examples/mcp-server/example.test.ts +135 -0
  9. package/dist/src/commands/extensions/examples/mcp-server/example.ts +60 -0
  10. package/dist/src/commands/extensions/examples/mcp-server/gemini-extension.json +1 -1
  11. package/dist/src/commands/extensions/examples/mcp-server/package.json +7 -0
  12. package/dist/src/commands/extensions/examples/mcp-server/tsconfig.json +13 -0
  13. package/dist/src/commands/extensions/utils.d.ts +1 -1
  14. package/dist/src/commands/skills/disable.js +1 -1
  15. package/dist/src/commands/skills/disable.js.map +1 -1
  16. package/dist/src/commands/skills/disable.test.js +1 -1
  17. package/dist/src/commands/skills/disable.test.js.map +1 -1
  18. package/dist/src/commands/skills/install.d.ts +14 -0
  19. package/dist/src/commands/skills/install.js +61 -0
  20. package/dist/src/commands/skills/install.js.map +1 -0
  21. package/dist/src/commands/skills/install.test.d.ts +6 -0
  22. package/dist/src/commands/skills/install.test.js +57 -0
  23. package/dist/src/commands/skills/install.test.js.map +1 -0
  24. package/dist/src/commands/skills/list.js +1 -1
  25. package/dist/src/commands/skills/list.js.map +1 -1
  26. package/dist/src/commands/skills/list.test.js +1 -1
  27. package/dist/src/commands/skills/list.test.js.map +1 -1
  28. package/dist/src/commands/skills/uninstall.d.ts +13 -0
  29. package/dist/src/commands/skills/uninstall.js +56 -0
  30. package/dist/src/commands/skills/uninstall.js.map +1 -0
  31. package/dist/src/commands/skills/uninstall.test.d.ts +6 -0
  32. package/dist/src/commands/skills/uninstall.test.js +61 -0
  33. package/dist/src/commands/skills/uninstall.test.js.map +1 -0
  34. package/dist/src/commands/skills.js +4 -0
  35. package/dist/src/commands/skills.js.map +1 -1
  36. package/dist/src/config/config.js +5 -0
  37. package/dist/src/config/config.js.map +1 -1
  38. package/dist/src/config/extension-manager-agents.test.d.ts +6 -0
  39. package/dist/src/config/extension-manager-agents.test.js +115 -0
  40. package/dist/src/config/extension-manager-agents.test.js.map +1 -0
  41. package/dist/src/config/extension-manager-scope.test.js +11 -0
  42. package/dist/src/config/extension-manager-scope.test.js.map +1 -1
  43. package/dist/src/config/extension-manager-skills.test.js +4 -0
  44. package/dist/src/config/extension-manager-skills.test.js.map +1 -1
  45. package/dist/src/config/extension-manager.js +7 -1
  46. package/dist/src/config/extension-manager.js.map +1 -1
  47. package/dist/src/config/extension.test.js +10 -1
  48. package/dist/src/config/extension.test.js.map +1 -1
  49. package/dist/src/config/keyBindings.d.ts +14 -2
  50. package/dist/src/config/keyBindings.js +85 -10
  51. package/dist/src/config/keyBindings.js.map +1 -1
  52. package/dist/src/config/settings.js +8 -9
  53. package/dist/src/config/settings.js.map +1 -1
  54. package/dist/src/config/settingsSchema.d.ts +66 -2
  55. package/dist/src/config/settingsSchema.js +99 -2
  56. package/dist/src/config/settingsSchema.js.map +1 -1
  57. package/dist/src/gemini.js +12 -6
  58. package/dist/src/gemini.js.map +1 -1
  59. package/dist/src/generated/git-commit.d.ts +2 -2
  60. package/dist/src/generated/git-commit.js +2 -2
  61. package/dist/src/generated/git-commit.js.map +1 -1
  62. package/dist/src/services/BuiltinCommandLoader.js +18 -1
  63. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  64. package/dist/src/test-utils/render.js +1 -0
  65. package/dist/src/test-utils/render.js.map +1 -1
  66. package/dist/src/ui/AppContainer.js +103 -40
  67. package/dist/src/ui/AppContainer.js.map +1 -1
  68. package/dist/src/ui/AppContainer.test.js +214 -41
  69. package/dist/src/ui/AppContainer.test.js.map +1 -1
  70. package/dist/src/ui/auth/AuthDialog.d.ts +4 -1
  71. package/dist/src/ui/auth/AuthDialog.js +8 -2
  72. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  73. package/dist/src/ui/auth/AuthDialog.test.js +17 -0
  74. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  75. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.d.ts +10 -0
  76. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.js +27 -0
  77. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.js.map +1 -0
  78. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.d.ts +6 -0
  79. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js +68 -0
  80. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js.map +1 -0
  81. package/dist/src/ui/commands/aboutCommand.js +1 -1
  82. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  83. package/dist/src/ui/commands/aboutCommand.test.js +4 -4
  84. package/dist/src/ui/commands/aboutCommand.test.js.map +1 -1
  85. package/dist/src/ui/commands/agentsCommand.js +5 -1
  86. package/dist/src/ui/commands/agentsCommand.js.map +1 -1
  87. package/dist/src/ui/commands/agentsCommand.test.js +1 -1
  88. package/dist/src/ui/commands/agentsCommand.test.js.map +1 -1
  89. package/dist/src/ui/commands/chatCommand.js +1 -1
  90. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  91. package/dist/src/ui/commands/chatCommand.test.js +1 -1
  92. package/dist/src/ui/commands/chatCommand.test.js.map +1 -1
  93. package/dist/src/ui/commands/directoryCommand.js +9 -9
  94. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  95. package/dist/src/ui/commands/directoryCommand.test.js +9 -9
  96. package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
  97. package/dist/src/ui/commands/extensionsCommand.js +36 -36
  98. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  99. package/dist/src/ui/commands/extensionsCommand.test.js +36 -36
  100. package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
  101. package/dist/src/ui/commands/helpCommand.js +1 -1
  102. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  103. package/dist/src/ui/commands/helpCommand.test.js +1 -1
  104. package/dist/src/ui/commands/helpCommand.test.js.map +1 -1
  105. package/dist/src/ui/commands/hooksCommand.js +1 -1
  106. package/dist/src/ui/commands/hooksCommand.js.map +1 -1
  107. package/dist/src/ui/commands/hooksCommand.test.js +4 -4
  108. package/dist/src/ui/commands/hooksCommand.test.js.map +1 -1
  109. package/dist/src/ui/commands/mcpCommand.js +6 -6
  110. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  111. package/dist/src/ui/commands/mcpCommand.test.js +3 -3
  112. package/dist/src/ui/commands/mcpCommand.test.js.map +1 -1
  113. package/dist/src/ui/commands/memoryCommand.js +18 -43
  114. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  115. package/dist/src/ui/commands/memoryCommand.test.js +85 -15
  116. package/dist/src/ui/commands/memoryCommand.test.js.map +1 -1
  117. package/dist/src/ui/commands/skillsCommand.js +23 -8
  118. package/dist/src/ui/commands/skillsCommand.js.map +1 -1
  119. package/dist/src/ui/commands/skillsCommand.test.js +33 -12
  120. package/dist/src/ui/commands/skillsCommand.test.js.map +1 -1
  121. package/dist/src/ui/commands/statsCommand.js +4 -4
  122. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  123. package/dist/src/ui/commands/statsCommand.test.js +4 -4
  124. package/dist/src/ui/commands/statsCommand.test.js.map +1 -1
  125. package/dist/src/ui/commands/toolsCommand.js +2 -2
  126. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  127. package/dist/src/ui/commands/toolsCommand.test.js +2 -2
  128. package/dist/src/ui/commands/toolsCommand.test.js.map +1 -1
  129. package/dist/src/ui/components/DialogManager.js +1 -1
  130. package/dist/src/ui/components/DialogManager.js.map +1 -1
  131. package/dist/src/ui/components/Help.js +1 -1
  132. package/dist/src/ui/components/Help.js.map +1 -1
  133. package/dist/src/ui/components/InputPrompt.js +18 -7
  134. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  135. package/dist/src/ui/components/InputPrompt.test.js +64 -1
  136. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  137. package/dist/src/ui/components/MainContent.js +6 -9
  138. package/dist/src/ui/components/MainContent.js.map +1 -1
  139. package/dist/src/ui/components/MainContent.test.js +19 -9
  140. package/dist/src/ui/components/MainContent.test.js.map +1 -1
  141. package/dist/src/ui/components/ModelDialog.js +1 -1
  142. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  143. package/dist/src/ui/components/MultiFolderTrustDialog.d.ts +2 -2
  144. package/dist/src/ui/components/MultiFolderTrustDialog.js +1 -1
  145. package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -1
  146. package/dist/src/ui/components/MultiFolderTrustDialog.test.js +2 -2
  147. package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -1
  148. package/dist/src/ui/components/SettingsDialog.test.js +5 -2
  149. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  150. package/dist/src/ui/components/StickyHeader.d.ts +2 -0
  151. package/dist/src/ui/components/StickyHeader.js +1 -1
  152. package/dist/src/ui/components/StickyHeader.js.map +1 -1
  153. package/dist/src/ui/components/messages/DiffRenderer.js +5 -13
  154. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  155. package/dist/src/ui/components/messages/DiffRenderer.test.js +26 -17
  156. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
  157. package/dist/src/ui/components/messages/ShellToolMessage.js +8 -5
  158. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  159. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +1 -5
  160. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  161. package/dist/src/ui/components/messages/ToolMessage.js +6 -2
  162. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  163. package/dist/src/ui/components/messages/ToolResultDisplay.js +22 -16
  164. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  165. package/dist/src/ui/components/messages/ToolResultDisplay.test.js +36 -18
  166. package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -1
  167. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.d.ts +6 -0
  168. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js +134 -0
  169. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js.map +1 -0
  170. package/dist/src/ui/components/shared/MaxSizedBox.d.ts +2 -38
  171. package/dist/src/ui/components/shared/MaxSizedBox.js +34 -419
  172. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  173. package/dist/src/ui/components/shared/MaxSizedBox.test.js +48 -133
  174. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -1
  175. package/dist/src/ui/components/shared/text-buffer.d.ts +4 -4
  176. package/dist/src/ui/components/shared/text-buffer.js +35 -38
  177. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  178. package/dist/src/ui/components/views/AgentsStatus.js +3 -3
  179. package/dist/src/ui/components/views/AgentsStatus.js.map +1 -1
  180. package/dist/src/ui/constants/tips.js +1 -1
  181. package/dist/src/ui/constants/tips.js.map +1 -1
  182. package/dist/src/ui/constants.d.ts +1 -0
  183. package/dist/src/ui/constants.js +1 -0
  184. package/dist/src/ui/constants.js.map +1 -1
  185. package/dist/src/ui/contexts/KeypressContext.js +28 -0
  186. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  187. package/dist/src/ui/contexts/KeypressContext.test.js +31 -1
  188. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  189. package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -0
  190. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  191. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +2 -1
  192. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +5 -4
  193. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  194. package/dist/src/ui/hooks/useCommandCompletion.d.ts +1 -0
  195. package/dist/src/ui/hooks/useCommandCompletion.js +1 -0
  196. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  197. package/dist/src/ui/hooks/useCommandCompletion.test.js +7 -2
  198. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
  199. package/dist/src/ui/hooks/useExtensionUpdates.test.js +11 -2
  200. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -1
  201. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -1
  202. package/dist/src/ui/hooks/useGeminiStream.js +34 -14
  203. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  204. package/dist/src/ui/hooks/useGeminiStream.test.js +87 -10
  205. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  206. package/dist/src/ui/hooks/useHistoryManager.d.ts +1 -1
  207. package/dist/src/ui/hooks/useHistoryManager.js +1 -1
  208. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
  209. package/dist/src/ui/hooks/useHistoryManager.test.js +16 -0
  210. package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -1
  211. package/dist/src/ui/hooks/useIncludeDirsTrust.js +2 -2
  212. package/dist/src/ui/hooks/useIncludeDirsTrust.js.map +1 -1
  213. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +2 -2
  214. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +1 -1
  215. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +2 -1
  216. package/dist/src/ui/hooks/useLoadingIndicator.js +7 -3
  217. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  218. package/dist/src/ui/hooks/useLoadingIndicator.test.js +14 -4
  219. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  220. package/dist/src/ui/hooks/usePhraseCycler.d.ts +1 -1
  221. package/dist/src/ui/hooks/usePhraseCycler.js +2 -2
  222. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  223. package/dist/src/ui/keyMatchers.test.js +79 -53
  224. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  225. package/dist/src/ui/types.d.ts +2 -1
  226. package/dist/src/ui/types.js +2 -0
  227. package/dist/src/ui/types.js.map +1 -1
  228. package/dist/src/ui/utils/CodeColorizer.js +2 -2
  229. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  230. package/dist/src/ui/utils/commandUtils.js +1 -3
  231. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  232. package/dist/src/ui/utils/commandUtils.test.js +15 -2
  233. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  234. package/dist/src/utils/sessionCleanup.js +12 -0
  235. package/dist/src/utils/sessionCleanup.js.map +1 -1
  236. package/dist/src/utils/skillUtils.d.ts +13 -0
  237. package/dist/src/utils/skillUtils.js +93 -0
  238. package/dist/src/utils/skillUtils.js.map +1 -1
  239. package/dist/src/utils/skillUtils.test.d.ts +6 -0
  240. package/dist/src/utils/skillUtils.test.js +57 -0
  241. package/dist/src/utils/skillUtils.test.js.map +1 -0
  242. package/dist/src/utils/windowTitle.d.ts +13 -4
  243. package/dist/src/utils/windowTitle.js +65 -7
  244. package/dist/src/utils/windowTitle.js.map +1 -1
  245. package/dist/src/utils/windowTitle.test.js +183 -40
  246. package/dist/src/utils/windowTitle.test.js.map +1 -1
  247. package/dist/tsconfig.tsbuildinfo +1 -1
  248. package/package.json +3 -3
  249. package/dist/google-gemini-cli-0.25.0-nightly.20260107.59a18e710.tgz +0 -0
  250. package/dist/src/commands/extensions/examples/hooks/gemini-extension.json +0 -4
  251. package/dist/src/commands/extensions/examples/hooks/hooks/hooks.json +0 -14
  252. package/dist/src/commands/extensions/examples/hooks/scripts/on-start.js +0 -8
  253. package/dist/src/commands/extensions/examples/mcp-server/README.md +0 -35
  254. package/dist/src/commands/extensions/examples/skills/gemini-extension.json +0 -4
  255. package/dist/src/commands/extensions/examples/skills/skills/greeter/SKILL.md +0 -7
@@ -3,59 +3,23 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import React from 'react';
6
+ import type React from 'react';
7
7
  /**
8
8
  * Minimum height for the MaxSizedBox component.
9
9
  * This ensures there is room for at least one line of content as well as the
10
10
  * message that content was truncated.
11
11
  */
12
12
  export declare const MINIMUM_MAX_HEIGHT = 2;
13
- export declare function setMaxSizedBoxDebugging(value: boolean): void;
14
13
  interface MaxSizedBoxProps {
15
14
  children?: React.ReactNode;
16
15
  maxWidth?: number;
17
- maxHeight: number | undefined;
16
+ maxHeight?: number;
18
17
  overflowDirection?: 'top' | 'bottom';
19
18
  additionalHiddenLinesCount?: number;
20
19
  }
21
20
  /**
22
21
  * A React component that constrains the size of its children and provides
23
22
  * content-aware truncation when the content exceeds the specified `maxHeight`.
24
- *
25
- * `MaxSizedBox` requires a specific structure for its children to correctly
26
- * measure and render the content:
27
- *
28
- * 1. **Direct children must be `<Box>` elements.** Each `<Box>` represents a
29
- * single row of content.
30
- * 2. **Row `<Box>` elements must contain only `<Text>` elements.** These
31
- * `<Text>` elements can be nested and there are no restrictions to Text
32
- * element styling other than that non-wrapping text elements must be
33
- * before wrapping text elements.
34
- *
35
- * **Constraints:**
36
- * - **Box Properties:** Custom properties on the child `<Box>` elements are
37
- * ignored. In debug mode, runtime checks will report errors for any
38
- * unsupported properties.
39
- * - **Text Wrapping:** Within a single row, `<Text>` elements with no wrapping
40
- * (e.g., headers, labels) must appear before any `<Text>` elements that wrap.
41
- * - **Element Types:** Runtime checks will warn if unsupported element types
42
- * are used as children.
43
- *
44
- * @example
45
- * <MaxSizedBox maxWidth={80} maxHeight={10}>
46
- * <Box>
47
- * <Text>This is the first line.</Text>
48
- * </Box>
49
- * <Box>
50
- * <Text color="cyan" wrap="truncate">Non-wrapping Header: </Text>
51
- * <Text>This is the rest of the line which will wrap if it's too long.</Text>
52
- * </Box>
53
- * <Box>
54
- * <Text>
55
- * Line 3 with <Text color="yellow">nested styled text</Text> inside of it.
56
- * </Text>
57
- * </Box>
58
- * </MaxSizedBox>
59
23
  */
60
24
  export declare const MaxSizedBox: React.FC<MaxSizedBoxProps>;
61
25
  export {};
@@ -1,115 +1,50 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * @license
4
- * Copyright 2025 Google LLC
5
- * SPDX-License-Identifier: Apache-2.0
6
- */
7
- import React, { Fragment, useEffect, useId } from 'react';
8
- import { Box, Text } from 'ink';
9
- import stringWidth from 'string-width';
2
+ import { useCallback, useEffect, useId, useRef, useState } from 'react';
3
+ import { Box, Text, ResizeObserver } from 'ink';
10
4
  import { theme } from '../../semantic-colors.js';
11
- import { toCodePoints } from '../../utils/textUtils.js';
12
5
  import { useOverflowActions } from '../../contexts/OverflowContext.js';
13
- import { debugLogger } from '@google/gemini-cli-core';
14
- let enableDebugLog = false;
15
6
  /**
16
7
  * Minimum height for the MaxSizedBox component.
17
8
  * This ensures there is room for at least one line of content as well as the
18
9
  * message that content was truncated.
19
10
  */
20
11
  export const MINIMUM_MAX_HEIGHT = 2;
21
- export function setMaxSizedBoxDebugging(value) {
22
- enableDebugLog = value;
23
- }
24
- function debugReportError(message, element) {
25
- if (!enableDebugLog)
26
- return;
27
- if (!React.isValidElement(element)) {
28
- debugLogger.warn(message, `Invalid element: '${String(element)}' typeof=${typeof element}`);
29
- return;
30
- }
31
- let sourceMessage = '<Unknown file>';
32
- try {
33
- const elementWithSource = element;
34
- const fileName = elementWithSource._source?.fileName;
35
- const lineNumber = elementWithSource._source?.lineNumber;
36
- sourceMessage = fileName ? `${fileName}:${lineNumber}` : '<Unknown file>';
37
- }
38
- catch (error) {
39
- debugLogger.warn('Error while trying to get file name:', error);
40
- }
41
- debugLogger.warn(message, `${String(element.type)}. Source: ${sourceMessage}`);
42
- }
43
12
  /**
44
13
  * A React component that constrains the size of its children and provides
45
14
  * content-aware truncation when the content exceeds the specified `maxHeight`.
46
- *
47
- * `MaxSizedBox` requires a specific structure for its children to correctly
48
- * measure and render the content:
49
- *
50
- * 1. **Direct children must be `<Box>` elements.** Each `<Box>` represents a
51
- * single row of content.
52
- * 2. **Row `<Box>` elements must contain only `<Text>` elements.** These
53
- * `<Text>` elements can be nested and there are no restrictions to Text
54
- * element styling other than that non-wrapping text elements must be
55
- * before wrapping text elements.
56
- *
57
- * **Constraints:**
58
- * - **Box Properties:** Custom properties on the child `<Box>` elements are
59
- * ignored. In debug mode, runtime checks will report errors for any
60
- * unsupported properties.
61
- * - **Text Wrapping:** Within a single row, `<Text>` elements with no wrapping
62
- * (e.g., headers, labels) must appear before any `<Text>` elements that wrap.
63
- * - **Element Types:** Runtime checks will warn if unsupported element types
64
- * are used as children.
65
- *
66
- * @example
67
- * <MaxSizedBox maxWidth={80} maxHeight={10}>
68
- * <Box>
69
- * <Text>This is the first line.</Text>
70
- * </Box>
71
- * <Box>
72
- * <Text color="cyan" wrap="truncate">Non-wrapping Header: </Text>
73
- * <Text>This is the rest of the line which will wrap if it's too long.</Text>
74
- * </Box>
75
- * <Box>
76
- * <Text>
77
- * Line 3 with <Text color="yellow">nested styled text</Text> inside of it.
78
- * </Text>
79
- * </Box>
80
- * </MaxSizedBox>
81
15
  */
82
16
  export const MaxSizedBox = ({ children, maxWidth, maxHeight, overflowDirection = 'top', additionalHiddenLinesCount = 0, }) => {
83
17
  const id = useId();
84
18
  const { addOverflowingId, removeOverflowingId } = useOverflowActions() || {};
85
- const laidOutStyledText = [];
86
- const targetMaxHeight = Math.max(Math.round(maxHeight ?? Number.MAX_SAFE_INTEGER), MINIMUM_MAX_HEIGHT);
87
- if (maxWidth === undefined) {
88
- throw new Error('maxWidth must be defined when maxHeight is set.');
89
- }
90
- function visitRows(element) {
91
- if (!React.isValidElement(element)) {
92
- return;
93
- }
94
- if (element.type === Fragment) {
95
- React.Children.forEach(element.props.children, visitRows);
96
- return;
97
- }
98
- if (element.type === Box) {
99
- layoutInkElementAsStyledText(element, maxWidth, laidOutStyledText);
100
- return;
101
- }
102
- debugReportError('MaxSizedBox children must be <Box> elements', element);
103
- }
104
- React.Children.forEach(children, visitRows);
105
- const contentWillOverflow = (targetMaxHeight !== undefined &&
106
- laidOutStyledText.length > targetMaxHeight) ||
19
+ const observerRef = useRef(null);
20
+ const [contentHeight, setContentHeight] = useState(0);
21
+ const onRefChange = useCallback((node) => {
22
+ if (observerRef.current) {
23
+ observerRef.current.disconnect();
24
+ observerRef.current = null;
25
+ }
26
+ if (node && maxHeight !== undefined) {
27
+ const observer = new ResizeObserver((entries) => {
28
+ const entry = entries[0];
29
+ if (entry) {
30
+ setContentHeight(entry.contentRect.height);
31
+ }
32
+ });
33
+ observer.observe(node);
34
+ observerRef.current = observer;
35
+ }
36
+ }, [maxHeight]);
37
+ const effectiveMaxHeight = maxHeight !== undefined
38
+ ? Math.max(Math.round(maxHeight), MINIMUM_MAX_HEIGHT)
39
+ : undefined;
40
+ const isOverflowing = (effectiveMaxHeight !== undefined && contentHeight > effectiveMaxHeight) ||
107
41
  additionalHiddenLinesCount > 0;
108
- const visibleContentHeight = contentWillOverflow && targetMaxHeight !== undefined
109
- ? targetMaxHeight - 1
110
- : targetMaxHeight;
42
+ // If we're overflowing, we need to hide at least 1 line for the message.
43
+ const visibleContentHeight = isOverflowing && effectiveMaxHeight !== undefined
44
+ ? effectiveMaxHeight - 1
45
+ : effectiveMaxHeight;
111
46
  const hiddenLinesCount = visibleContentHeight !== undefined
112
- ? Math.max(0, laidOutStyledText.length - visibleContentHeight)
47
+ ? Math.max(0, contentHeight - visibleContentHeight)
113
48
  : 0;
114
49
  const totalHiddenLines = hiddenLinesCount + additionalHiddenLinesCount;
115
50
  useEffect(() => {
@@ -123,330 +58,10 @@ export const MaxSizedBox = ({ children, maxWidth, maxHeight, overflowDirection =
123
58
  removeOverflowingId?.(id);
124
59
  };
125
60
  }, [id, totalHiddenLines, addOverflowingId, removeOverflowingId]);
126
- const visibleStyledText = hiddenLinesCount > 0
127
- ? overflowDirection === 'top'
128
- ? laidOutStyledText.slice(hiddenLinesCount, laidOutStyledText.length)
129
- : laidOutStyledText.slice(0, visibleContentHeight)
130
- : laidOutStyledText;
131
- const visibleLines = visibleStyledText.map((line, index) => (_jsx(Box, { children: line.length > 0 ? (line.map((segment, segIndex) => (_jsx(Text, { ...segment.props, children: segment.text }, segIndex)))) : (_jsx(Text, { children: " " })) }, index)));
132
- return (_jsxs(Box, { flexDirection: "column", width: maxWidth, flexShrink: 0, children: [totalHiddenLines > 0 && overflowDirection === 'top' && (_jsxs(Text, { color: theme.text.secondary, wrap: "truncate", children: ["... first ", totalHiddenLines, " line", totalHiddenLines === 1 ? '' : 's', ' ', "hidden ..."] })), visibleLines, totalHiddenLines > 0 && overflowDirection === 'bottom' && (_jsxs(Text, { color: theme.text.secondary, wrap: "truncate", children: ["... last ", totalHiddenLines, " line", totalHiddenLines === 1 ? '' : 's', ' ', "hidden ..."] }))] }));
133
- };
134
- /**
135
- * Flattens the child elements of MaxSizedBox into an array of `Row` objects.
136
- *
137
- * This function expects a specific child structure to function correctly:
138
- * 1. The top-level child of `MaxSizedBox` should be a single `<Box>`. This
139
- * outer box is primarily for structure and is not directly rendered.
140
- * 2. Inside the outer `<Box>`, there should be one or more children. Each of
141
- * these children must be a `<Box>` that represents a row.
142
- * 3. Inside each "row" `<Box>`, the children must be `<Text>` components.
143
- *
144
- * The structure should look like this:
145
- * <MaxSizedBox>
146
- * <Box> // Row 1
147
- * <Text>...</Text>
148
- * <Text>...</Text>
149
- * </Box>
150
- * <Box> // Row 2
151
- * <Text>...</Text>
152
- * </Box>
153
- * </MaxSizedBox>
154
- *
155
- * It is an error for a <Text> child without wrapping to appear after a
156
- * <Text> child with wrapping within the same row Box.
157
- *
158
- * @param element The React node to flatten.
159
- * @returns An array of `Row` objects.
160
- */
161
- function visitBoxRow(element) {
162
- if (!React.isValidElement(element) ||
163
- element.type !== Box) {
164
- debugReportError(`All children of MaxSizedBox must be <Box> elements`, element);
165
- return {
166
- noWrapSegments: [{ text: '<ERROR>', props: {} }],
167
- segments: [],
168
- };
169
- }
170
- if (enableDebugLog) {
171
- const boxProps = element.props;
172
- // Ensure the Box has no props other than the default ones and key.
173
- let maxExpectedProps = 4;
174
- if (boxProps.children !== undefined) {
175
- // Allow the key prop, which is automatically added by React.
176
- maxExpectedProps += 1;
177
- }
178
- if (boxProps.flexDirection !== undefined &&
179
- boxProps.flexDirection !== 'row') {
180
- debugReportError('MaxSizedBox children must have flexDirection="row".', element);
181
- }
182
- if (Object.keys(boxProps).length > maxExpectedProps) {
183
- debugReportError(`Boxes inside MaxSizedBox must not have additional props. ${Object.keys(boxProps).join(', ')}`, element);
184
- }
61
+ if (effectiveMaxHeight === undefined) {
62
+ return (_jsx(Box, { flexDirection: "column", width: maxWidth, children: children }));
185
63
  }
186
- const row = {
187
- noWrapSegments: [],
188
- segments: [],
189
- };
190
- let hasSeenWrapped = false;
191
- function visitRowChild(element, parentProps) {
192
- if (element === null) {
193
- return;
194
- }
195
- if (typeof element === 'string' || typeof element === 'number') {
196
- const text = String(element);
197
- // Ignore empty strings as they don't need to be rendered.
198
- if (!text) {
199
- return;
200
- }
201
- const segment = { text, props: parentProps ?? {} };
202
- // Check the 'wrap' property from the merged props to decide the segment type.
203
- if (parentProps === undefined || parentProps['wrap'] === 'wrap') {
204
- hasSeenWrapped = true;
205
- row.segments.push(segment);
206
- }
207
- else {
208
- if (!hasSeenWrapped) {
209
- row.noWrapSegments.push(segment);
210
- }
211
- else {
212
- // put in the wrapped segment as the row is already stuck in wrapped mode.
213
- row.segments.push(segment);
214
- debugReportError('Text elements without wrapping cannot appear after elements with wrapping in the same row.', element);
215
- }
216
- }
217
- return;
218
- }
219
- if (!React.isValidElement(element)) {
220
- debugReportError('Invalid element.', element);
221
- return;
222
- }
223
- if (element.type === Fragment) {
224
- React.Children.forEach(element.props.children, (child) => visitRowChild(child, parentProps));
225
- return;
226
- }
227
- if (element.type !== Text) {
228
- debugReportError('Children of a row Box must be <Text> elements.', element);
229
- return;
230
- }
231
- // Merge props from parent <Text> elements. Child props take precedence.
232
- const { children, ...currentProps } = element.props;
233
- const mergedProps = parentProps === undefined
234
- ? currentProps
235
- : { ...parentProps, ...currentProps };
236
- React.Children.forEach(children, (child) => visitRowChild(child, mergedProps));
237
- }
238
- React.Children.forEach(element.props.children, (child) => visitRowChild(child, undefined));
239
- return row;
240
- }
241
- function layoutInkElementAsStyledText(element, maxWidth, output) {
242
- const row = visitBoxRow(element);
243
- if (row.segments.length === 0 && row.noWrapSegments.length === 0) {
244
- // Return a single empty line if there are no segments to display
245
- output.push([]);
246
- return;
247
- }
248
- const lines = [];
249
- const nonWrappingContent = [];
250
- let noWrappingWidth = 0;
251
- // First, lay out the non-wrapping segments
252
- row.noWrapSegments.forEach((segment) => {
253
- nonWrappingContent.push(segment);
254
- noWrappingWidth += stringWidth(segment.text);
255
- });
256
- if (row.segments.length === 0) {
257
- // This is a bit of a special case when there are no segments that allow
258
- // wrapping. It would be ideal to unify.
259
- const lines = [];
260
- let currentLine = [];
261
- nonWrappingContent.forEach((segment) => {
262
- const textLines = segment.text.split('\n');
263
- textLines.forEach((text, index) => {
264
- if (index > 0) {
265
- lines.push(currentLine);
266
- currentLine = [];
267
- }
268
- if (text) {
269
- currentLine.push({ text, props: segment.props });
270
- }
271
- });
272
- });
273
- if (currentLine.length > 0 ||
274
- (nonWrappingContent.length > 0 &&
275
- nonWrappingContent[nonWrappingContent.length - 1].text.endsWith('\n'))) {
276
- lines.push(currentLine);
277
- }
278
- for (const line of lines) {
279
- output.push(line);
280
- }
281
- return;
282
- }
283
- const availableWidth = maxWidth - noWrappingWidth;
284
- if (availableWidth < 1) {
285
- // No room to render the wrapping segments. Truncate the non-wrapping
286
- // content and append an ellipsis so the line always fits within maxWidth.
287
- // Handle line breaks in non-wrapping content when truncating
288
- const lines = [];
289
- let currentLine = [];
290
- let currentLineWidth = 0;
291
- for (const segment of nonWrappingContent) {
292
- const textLines = segment.text.split('\n');
293
- textLines.forEach((text, index) => {
294
- if (index > 0) {
295
- // New line encountered, finish current line and start new one
296
- lines.push(currentLine);
297
- currentLine = [];
298
- currentLineWidth = 0;
299
- }
300
- if (text) {
301
- const textWidth = stringWidth(text);
302
- // When there's no room for wrapping content, be very conservative
303
- // For lines after the first line break, show only ellipsis if the text would be truncated
304
- if (index > 0 && textWidth > 0) {
305
- // This is content after a line break - just show ellipsis to indicate truncation
306
- currentLine.push({ text: '…', props: {} });
307
- currentLineWidth = stringWidth('…');
308
- }
309
- else {
310
- // This is the first line or a continuation, try to fit what we can
311
- const maxContentWidth = Math.max(0, maxWidth - stringWidth('…'));
312
- if (textWidth <= maxContentWidth && currentLineWidth === 0) {
313
- // Text fits completely on this line
314
- currentLine.push({ text, props: segment.props });
315
- currentLineWidth += textWidth;
316
- }
317
- else {
318
- // Text needs truncation
319
- const codePoints = toCodePoints(text);
320
- let truncatedWidth = currentLineWidth;
321
- let sliceEndIndex = 0;
322
- for (const char of codePoints) {
323
- const charWidth = stringWidth(char);
324
- if (truncatedWidth + charWidth > maxContentWidth) {
325
- break;
326
- }
327
- truncatedWidth += charWidth;
328
- sliceEndIndex++;
329
- }
330
- const slice = codePoints.slice(0, sliceEndIndex).join('');
331
- if (slice) {
332
- currentLine.push({ text: slice, props: segment.props });
333
- }
334
- currentLine.push({ text: '…', props: {} });
335
- currentLineWidth = truncatedWidth + stringWidth('…');
336
- }
337
- }
338
- }
339
- });
340
- }
341
- // Add the last line if it has content or if the last segment ended with \n
342
- if (currentLine.length > 0 ||
343
- (nonWrappingContent.length > 0 &&
344
- nonWrappingContent[nonWrappingContent.length - 1].text.endsWith('\n'))) {
345
- lines.push(currentLine);
346
- }
347
- // If we don't have any lines yet, add an ellipsis line
348
- if (lines.length === 0) {
349
- lines.push([{ text: '…', props: {} }]);
350
- }
351
- for (const line of lines) {
352
- output.push(line);
353
- }
354
- return;
355
- }
356
- // Now, lay out the wrapping segments
357
- let wrappingPart = [];
358
- let wrappingPartWidth = 0;
359
- function addWrappingPartToLines() {
360
- if (lines.length === 0) {
361
- lines.push([...nonWrappingContent, ...wrappingPart]);
362
- }
363
- else {
364
- if (noWrappingWidth > 0) {
365
- lines.push([
366
- ...[{ text: ' '.repeat(noWrappingWidth), props: {} }],
367
- ...wrappingPart,
368
- ]);
369
- }
370
- else {
371
- lines.push(wrappingPart);
372
- }
373
- }
374
- wrappingPart = [];
375
- wrappingPartWidth = 0;
376
- }
377
- function addToWrappingPart(text, props) {
378
- if (wrappingPart.length > 0 &&
379
- wrappingPart[wrappingPart.length - 1].props === props) {
380
- wrappingPart[wrappingPart.length - 1].text += text;
381
- }
382
- else {
383
- wrappingPart.push({ text, props });
384
- }
385
- }
386
- row.segments.forEach((segment) => {
387
- const linesFromSegment = segment.text.split('\n');
388
- linesFromSegment.forEach((lineText, lineIndex) => {
389
- if (lineIndex > 0) {
390
- addWrappingPartToLines();
391
- }
392
- const words = lineText.split(/(\s+)/); // Split by whitespace
393
- words.forEach((word) => {
394
- if (!word)
395
- return;
396
- const wordWidth = stringWidth(word);
397
- if (wrappingPartWidth + wordWidth > availableWidth &&
398
- wrappingPartWidth > 0) {
399
- addWrappingPartToLines();
400
- if (/^\s+$/.test(word)) {
401
- return;
402
- }
403
- }
404
- if (wordWidth > availableWidth) {
405
- // Word is too long, needs to be split across lines
406
- const wordAsCodePoints = toCodePoints(word);
407
- let remainingWordAsCodePoints = wordAsCodePoints;
408
- while (remainingWordAsCodePoints.length > 0) {
409
- let splitIndex = 0;
410
- let currentSplitWidth = 0;
411
- for (const char of remainingWordAsCodePoints) {
412
- const charWidth = stringWidth(char);
413
- if (wrappingPartWidth + currentSplitWidth + charWidth >
414
- availableWidth) {
415
- break;
416
- }
417
- currentSplitWidth += charWidth;
418
- splitIndex++;
419
- }
420
- if (splitIndex > 0) {
421
- const part = remainingWordAsCodePoints
422
- .slice(0, splitIndex)
423
- .join('');
424
- addToWrappingPart(part, segment.props);
425
- wrappingPartWidth += stringWidth(part);
426
- remainingWordAsCodePoints =
427
- remainingWordAsCodePoints.slice(splitIndex);
428
- }
429
- if (remainingWordAsCodePoints.length > 0) {
430
- addWrappingPartToLines();
431
- }
432
- }
433
- }
434
- else {
435
- addToWrappingPart(word, segment.props);
436
- wrappingPartWidth += wordWidth;
437
- }
438
- });
439
- });
440
- // Split omits a trailing newline, so we need to handle it here
441
- if (segment.text.endsWith('\n')) {
442
- addWrappingPartToLines();
443
- }
444
- });
445
- if (wrappingPart.length > 0) {
446
- addWrappingPartToLines();
447
- }
448
- for (const line of lines) {
449
- output.push(line);
450
- }
451
- }
64
+ const offset = hiddenLinesCount > 0 && overflowDirection === 'top' ? -hiddenLinesCount : 0;
65
+ return (_jsxs(Box, { flexDirection: "column", width: maxWidth, maxHeight: effectiveMaxHeight, flexShrink: 0, children: [totalHiddenLines > 0 && overflowDirection === 'top' && (_jsxs(Text, { color: theme.text.secondary, wrap: "truncate", children: ["... first ", totalHiddenLines, " line", totalHiddenLines === 1 ? '' : 's', ' ', "hidden ..."] })), _jsx(Box, { flexDirection: "column", overflow: "hidden", flexGrow: 1, children: _jsx(Box, { flexDirection: "column", ref: onRefChange, flexShrink: 0, marginTop: offset, children: children }) }), totalHiddenLines > 0 && overflowDirection === 'bottom' && (_jsxs(Text, { color: theme.text.secondary, wrap: "truncate", children: ["... last ", totalHiddenLines, " line", totalHiddenLines === 1 ? '' : 's', ' ', "hidden ..."] }))] }));
66
+ };
452
67
  //# sourceMappingURL=MaxSizedBox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MaxSizedBox.js","sourceRoot":"","sources":["../../../../../src/ui/components/shared/MaxSizedBox.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MaxSizedBox.js","sourceRoot":"","sources":["../../../../../src/ui/components/shared/MaxSizedBox.tsx"],"names":[],"mappings":"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"}