vzcode 2.2.0 → 2.3.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 (220) hide show
  1. package/dist/assets/{buildWorker-Dsx6rOdK.js → buildWorker-wLkQ0yz1.js} +64 -64
  2. package/dist/assets/{index-BM8tDh6M.css → index-BoFeK4GL.css} +1 -1
  3. package/dist/assets/{index-CpxqGhXj.js → index-DuUjtrt6.js} +150 -150
  4. package/dist/assets/{worker-BeBZGG1n.js → worker-DHxSPM7N.js} +78 -78
  5. package/dist/cli.js +113 -0
  6. package/dist/index.html +2 -2
  7. package/{src/ot.ts → dist/ot.js} +2 -14
  8. package/{src/randomId.ts → dist/randomId.js} +5 -6
  9. package/dist/runCode.js +20 -0
  10. package/dist/server/aiChatHandler/aiEditing.js +89 -0
  11. package/dist/server/aiChatHandler/chatOperations.js +360 -0
  12. package/dist/server/aiChatHandler/errorHandling.js +49 -0
  13. package/dist/server/aiChatHandler/index.js +112 -0
  14. package/dist/server/aiChatHandler/llmStreaming.js +284 -0
  15. package/dist/server/aiChatHandler/validation.js +19 -0
  16. package/dist/server/computeInitialDocument.js +146 -0
  17. package/{src/server/config.ts → dist/server/config.js} +4 -7
  18. package/{src/server/featureFlags.ts → dist/server/featureFlags.js} +0 -3
  19. package/dist/server/generateAIResponse.js +129 -0
  20. package/dist/server/handleAIAssist.js +39 -0
  21. package/dist/server/handleAICopilot.js +81 -0
  22. package/dist/server/index.js +297 -0
  23. package/dist/server/livekit.js +17 -0
  24. package/dist/server/prettier.js +90 -0
  25. package/{src/server/setupEnv.ts → dist/server/setupEnv.js} +1 -2
  26. package/dist/submitOperation.js +14 -0
  27. package/dist/types.js +1 -0
  28. package/dist/utils/fileDiff.js +66 -0
  29. package/package.json +22 -22
  30. package/src/client/AIAssist/AIAssistCodeMirrorKeyMap.ts +0 -42
  31. package/src/client/AIAssist/AIAssistWidget/index.tsx +0 -135
  32. package/src/client/AIAssist/AIAssistWidget/style.scss +0 -47
  33. package/src/client/AIAssist/Spinner.jsx +0 -76
  34. package/src/client/AIAssist/formatFile.ts +0 -27
  35. package/src/client/AIAssist/generateFilesContext.ts +0 -25
  36. package/src/client/AIAssist/index.ts +0 -2
  37. package/src/client/AIAssist/startAIAssist.ts +0 -95
  38. package/src/client/App/index.tsx +0 -153
  39. package/src/client/App/style.scss +0 -82
  40. package/src/client/App/usePending.ts +0 -51
  41. package/src/client/App/useShareDB.ts +0 -161
  42. package/src/client/CodeEditor/Copilot/index.ts +0 -74
  43. package/src/client/CodeEditor/InteractiveWidgets/boolToggler.ts +0 -12
  44. package/src/client/CodeEditor/InteractiveWidgets/colorPicker.ts +0 -68
  45. package/src/client/CodeEditor/InteractiveWidgets/colorsInTextPlugin.ts +0 -174
  46. package/src/client/CodeEditor/InteractiveWidgets/highlightWidgets.ts +0 -79
  47. package/src/client/CodeEditor/InteractiveWidgets/index.ts +0 -44
  48. package/src/client/CodeEditor/InteractiveWidgets/markdownCheckboxToggler.ts +0 -12
  49. package/src/client/CodeEditor/InteractiveWidgets/numberDragger.ts +0 -20
  50. package/src/client/CodeEditor/InteractiveWidgets/rotateWidget.ts +0 -143
  51. package/src/client/CodeEditor/InteractiveWidgets/urlClicker.test.ts +0 -48
  52. package/src/client/CodeEditor/InteractiveWidgets/urlClicker.ts +0 -12
  53. package/src/client/CodeEditor/InteractiveWidgets/vec2Slider.ts +0 -25
  54. package/src/client/CodeEditor/basicSetup.ts +0 -73
  55. package/src/client/CodeEditor/getOrCreateEditor.tsx +0 -615
  56. package/src/client/CodeEditor/index.tsx +0 -202
  57. package/src/client/CodeEditor/json1PresenceBroadcast.ts +0 -41
  58. package/src/client/CodeEditor/json1PresenceDisplay.ts +0 -350
  59. package/src/client/CodeEditor/rainbowBrackets.ts +0 -122
  60. package/src/client/CodeEditor/style.scss +0 -156
  61. package/src/client/CodeEditor/typescriptExtension/worker.ts +0 -32
  62. package/src/client/CodeErrorOverlay/index.tsx +0 -77
  63. package/src/client/CodeErrorOverlay/style.scss +0 -33
  64. package/src/client/Fonts/fonts.ts +0 -8
  65. package/src/client/Icons/AdjustmentSVG.tsx +0 -19
  66. package/src/client/Icons/BugSVG.tsx +0 -20
  67. package/src/client/Icons/CloseSVG.tsx +0 -19
  68. package/src/client/Icons/CssSVG.tsx +0 -16
  69. package/src/client/Icons/DirectoryArrowSVG.tsx +0 -19
  70. package/src/client/Icons/EditSVG.tsx +0 -19
  71. package/src/client/Icons/FileSVG.tsx +0 -19
  72. package/src/client/Icons/FolderSVG.tsx +0 -20
  73. package/src/client/Icons/GearSVG.tsx +0 -16
  74. package/src/client/Icons/HtmlSVG.tsx +0 -16
  75. package/src/client/Icons/JavaScriptSVG.tsx +0 -16
  76. package/src/client/Icons/JsonSVG.tsx +0 -16
  77. package/src/client/Icons/MarkdownSVG.tsx +0 -16
  78. package/src/client/Icons/MicOffSVG.tsx +0 -35
  79. package/src/client/Icons/MicSVG.tsx +0 -25
  80. package/src/client/Icons/NewSVG.tsx +0 -19
  81. package/src/client/Icons/PinSVG.tsx +0 -14
  82. package/src/client/Icons/PlaySVG.tsx +0 -16
  83. package/src/client/Icons/QuestionMarkSVG.tsx +0 -18
  84. package/src/client/Icons/ReactSVG.tsx +0 -16
  85. package/src/client/Icons/SearchSVG.tsx +0 -20
  86. package/src/client/Icons/SparklesSVG.tsx +0 -23
  87. package/src/client/Icons/SplitEditorSVG.tsx +0 -34
  88. package/src/client/Icons/StopSVG.tsx +0 -15
  89. package/src/client/Icons/SvelteSVG.tsx +0 -16
  90. package/src/client/Icons/TrashSVG.tsx +0 -19
  91. package/src/client/Icons/TypeScriptSVG.tsx +0 -16
  92. package/src/client/Icons/index.tsx +0 -26
  93. package/src/client/ImageViewer/index.tsx +0 -91
  94. package/src/client/ImageViewer/style.scss +0 -41
  95. package/src/client/PresenceNotifications/PresenceNotifications.test.ts +0 -134
  96. package/src/client/PresenceNotifications/index.tsx +0 -158
  97. package/src/client/PresenceNotifications/style.scss +0 -17
  98. package/src/client/RunCodeWidget/index.tsx +0 -117
  99. package/src/client/RunCodeWidget/style.scss +0 -24
  100. package/src/client/SplitPaneResizeContext.tsx +0 -159
  101. package/src/client/TabList/Tab.tsx +0 -73
  102. package/src/client/TabList/index.tsx +0 -35
  103. package/src/client/TabList/style.scss +0 -51
  104. package/src/client/VZCodeContext/index.tsx +0 -29
  105. package/src/client/VZCodeContext/types.ts +0 -249
  106. package/src/client/VZCodeContext/useVZCodeState.ts +0 -584
  107. package/src/client/VZKeyboardShortcutsDoc.tsx +0 -148
  108. package/src/client/VZLeft.tsx +0 -28
  109. package/src/client/VZMiddle.tsx +0 -172
  110. package/src/client/VZResizer/index.tsx +0 -128
  111. package/src/client/VZResizer/styles.scss +0 -33
  112. package/src/client/VZRight.tsx +0 -113
  113. package/src/client/VZSettings.tsx +0 -275
  114. package/src/client/VZSidebar/AIChat/ChatInput.tsx +0 -239
  115. package/src/client/VZSidebar/AIChat/DiffView.scss +0 -136
  116. package/src/client/VZSidebar/AIChat/DiffView.tsx +0 -176
  117. package/src/client/VZSidebar/AIChat/Message.tsx +0 -143
  118. package/src/client/VZSidebar/AIChat/MessageList.tsx +0 -205
  119. package/src/client/VZSidebar/AIChat/StreamingMessage.tsx +0 -35
  120. package/src/client/VZSidebar/AIChat/ThinkingScratchpad.tsx +0 -156
  121. package/src/client/VZSidebar/AIChat/TypingIndicator.tsx +0 -19
  122. package/src/client/VZSidebar/AIChat/index.tsx +0 -273
  123. package/src/client/VZSidebar/AIChat/styles.scss +0 -627
  124. package/src/client/VZSidebar/AIChat/useSpeechRecognition.ts +0 -117
  125. package/src/client/VZSidebar/CreateDirModal.tsx +0 -111
  126. package/src/client/VZSidebar/CreateFileModal.tsx +0 -111
  127. package/src/client/VZSidebar/DeleteConfirmationModal.tsx +0 -76
  128. package/src/client/VZSidebar/DirectoryListing.tsx +0 -89
  129. package/src/client/VZSidebar/EmptyState.tsx +0 -11
  130. package/src/client/VZSidebar/FileListing.tsx +0 -91
  131. package/src/client/VZSidebar/FileTypeIcon.tsx +0 -49
  132. package/src/client/VZSidebar/Item.tsx +0 -237
  133. package/src/client/VZSidebar/Listing.tsx +0 -47
  134. package/src/client/VZSidebar/Search.tsx +0 -527
  135. package/src/client/VZSidebar/VisualEditor.tsx +0 -282
  136. package/src/client/VZSidebar/VoiceChatModal.tsx +0 -121
  137. package/src/client/VZSidebar/aiCopyPaste.ts +0 -199
  138. package/src/client/VZSidebar/index.tsx +0 -728
  139. package/src/client/VZSidebar/styles.scss +0 -612
  140. package/src/client/VZSidebar/useDragAndDrop.tsx +0 -408
  141. package/src/client/bootstrap.ts +0 -26
  142. package/src/client/buildWorker.ts +0 -3
  143. package/src/client/featureFlags.ts +0 -8
  144. package/src/client/generateRequestId.ts +0 -6
  145. package/src/client/getFileTree.ts +0 -53
  146. package/src/client/index.ts +0 -19
  147. package/src/client/main.jsx +0 -10
  148. package/src/client/presenceColor.ts +0 -8
  149. package/src/client/shouldTriggerRun.ts +0 -31
  150. package/src/client/sortFileTree.ts +0 -21
  151. package/src/client/tabsSearchParameters.test.ts +0 -79
  152. package/src/client/tabsSearchParameters.ts +0 -137
  153. package/src/client/themes/index.ts +0 -7
  154. package/src/client/themes/themes.ts +0 -77
  155. package/src/client/themes/uiwImports.ts +0 -32
  156. package/src/client/themes/useDynamicTheme.ts +0 -29
  157. package/src/client/themes/vizhubTheme/colors.ts +0 -80
  158. package/src/client/themes/vizhubTheme/index.ts +0 -193
  159. package/src/client/useActions.ts +0 -288
  160. package/src/client/useESLint/index.ts +0 -72
  161. package/src/client/useESLint/worker.ts +0 -113
  162. package/src/client/useEditorCache.ts +0 -35
  163. package/src/client/useFileCRUD.ts +0 -228
  164. package/src/client/useKeyboardShortcuts.ts +0 -451
  165. package/src/client/useOpenDirectories.ts +0 -99
  166. package/src/client/usePresenceAutoFollow.ts +0 -85
  167. package/src/client/usePrettier/index.ts +0 -178
  168. package/src/client/usePrettier/worker.ts +0 -109
  169. package/src/client/useRunCode.tsx +0 -15
  170. package/src/client/useRuntimeError.ts +0 -32
  171. package/src/client/useSubmitOperation.ts +0 -15
  172. package/src/client/useURLSync.ts +0 -137
  173. package/src/client/usernameLocalStorage.ts +0 -43
  174. package/src/client/utils/fileExtension.ts +0 -10
  175. package/src/client/utils/isImageFile.ts +0 -12
  176. package/src/client/vzReducer/aiChatReducer.ts +0 -44
  177. package/src/client/vzReducer/closeTabReducer.test.ts +0 -205
  178. package/src/client/vzReducer/closeTabsReducer.ts +0 -96
  179. package/src/client/vzReducer/createInitialState.ts +0 -38
  180. package/src/client/vzReducer/editorNoLongerWantsFocusReducer.ts +0 -9
  181. package/src/client/vzReducer/findPane.ts +0 -19
  182. package/src/client/vzReducer/index.ts +0 -250
  183. package/src/client/vzReducer/openTabReducer.test.ts +0 -127
  184. package/src/client/vzReducer/openTabReducer.ts +0 -74
  185. package/src/client/vzReducer/searchReducer.test.ts +0 -292
  186. package/src/client/vzReducer/searchReducer.ts +0 -181
  187. package/src/client/vzReducer/setActiveFileIdReducer.ts +0 -28
  188. package/src/client/vzReducer/setActiveFileLeftRightReducer.ts +0 -76
  189. package/src/client/vzReducer/setIsDocOpenReducer.ts +0 -9
  190. package/src/client/vzReducer/setIsSettingsOpenReducer.ts +0 -9
  191. package/src/client/vzReducer/setThemeReducer.ts +0 -9
  192. package/src/client/vzReducer/setUsernameReducer.ts +0 -9
  193. package/src/client/vzReducer/splitCurrentPaneReducer.ts +0 -66
  194. package/src/client/vzReducer/toggleAutoFollowReducer.ts +0 -12
  195. package/src/client/vzReducer/updatePane.ts +0 -40
  196. package/src/client/vzReducer/updatePresenceIndicatorReducer.ts +0 -30
  197. package/src/client/vzReducer/visualEditorReducer.ts +0 -9
  198. package/src/reactRouterExports.ts +0 -15
  199. package/src/runCode.ts +0 -27
  200. package/src/server/aiChatHandler/aiEditing.ts +0 -152
  201. package/src/server/aiChatHandler/chatOperations.ts +0 -510
  202. package/src/server/aiChatHandler/errorHandling.ts +0 -66
  203. package/src/server/aiChatHandler/index.ts +0 -200
  204. package/src/server/aiChatHandler/llmStreaming.ts +0 -419
  205. package/src/server/aiChatHandler/undoHandler.ts +0 -97
  206. package/src/server/aiChatHandler/validation.ts +0 -24
  207. package/src/server/computeInitialDocument.ts +0 -220
  208. package/src/server/generateAIResponse.ts +0 -188
  209. package/src/server/handleAIAssist.ts +0 -53
  210. package/src/server/handleAIChatUndo.ts +0 -2
  211. package/src/server/handleAICopilot.ts +0 -97
  212. package/src/server/index.ts +0 -388
  213. package/src/server/livekit.ts +0 -24
  214. package/src/server/prettier.ts +0 -115
  215. package/src/submitOperation.ts +0 -25
  216. package/src/types.ts +0 -205
  217. package/src/utils/fileDiff.ts +0 -117
  218. package/src/vite-env.d.ts +0 -10
  219. /package/{src/server/handleAIChatMessage.ts → dist/server/handleAIChatMessage.js} +0 -0
  220. /package/{src/server/isDirectory.ts → dist/server/isDirectory.js} +0 -0
@@ -1,237 +0,0 @@
1
- import {
2
- useState,
3
- useCallback,
4
- useRef,
5
- useEffect,
6
- useContext,
7
- } from 'react';
8
- import { ItemId } from '../../types';
9
- import { EditSVG, TrashSVG } from '../Icons';
10
- import { Tooltip, OverlayTrigger } from '../bootstrap';
11
- import { VZCodeContext } from '../VZCodeContext';
12
- import { FileTypeIcon } from './FileTypeIcon';
13
-
14
- // TODO consider moving this up to a higher level of the component tree
15
- import { DeleteConfirmationModal } from './DeleteConfirmationModal';
16
-
17
- const enableRenameDirectory = true;
18
-
19
- // A file or directory in the sidebar.
20
- export const Item = ({
21
- id,
22
- name,
23
- children,
24
- handleClick,
25
- handleDoubleClick,
26
- handleRenameClick,
27
- handleDeleteClick,
28
- isDirectory = false,
29
- isActive = false,
30
- renameFileTooltipText = isDirectory
31
- ? 'Rename Directory'
32
- : 'Rename File',
33
- deleteFileTooltipText = isDirectory
34
- ? 'Delete Directory'
35
- : 'Delete File',
36
- }: {
37
- id: ItemId;
38
- name: string;
39
- children: React.ReactNode;
40
- handleClick: (event: React.MouseEvent) => void;
41
- handleDoubleClick?: (event: React.MouseEvent) => void;
42
- handleRenameClick: (newName: string) => void;
43
- handleDeleteClick: () => void;
44
- isDirectory?: boolean;
45
- isActive?: boolean;
46
- renameFileTooltipText?: string;
47
- deleteFileTooltipText?: string;
48
- }) => {
49
- const { hoveredItemId, setHoveredItemId } =
50
- useContext(VZCodeContext);
51
- // // Tracks whether the mouse is hovering over the file or directory
52
- // const [isHovered, setIsHovered] = useState(false);
53
- const isHovered = hoveredItemId === id;
54
- const setIsHovered = useCallback(
55
- (isHovered: boolean) => {
56
- if (isHovered) {
57
- setHoveredItemId(id);
58
- } else {
59
- setHoveredItemId(null);
60
- }
61
- },
62
- [id, setHoveredItemId],
63
- );
64
-
65
- // Tracks whether the file is being renamed (inline text input)
66
- const [isRenaming, setIsRenaming] = useState(false);
67
-
68
- // Tracks the value of the input field when renaming
69
- const [renameValue, setRenameValue] = useState('');
70
-
71
- // Tracks whether the delete confirmation modal is open
72
- const [showModal, setShowModal] = useState(false);
73
-
74
- // Ref to track the input DOM, so that we can focus and blur it
75
- const renameInputRef = useRef(null);
76
-
77
- const onKeyDown = useCallback(
78
- (event: React.KeyboardEvent<HTMLInputElement>) => {
79
- if (event.key === 'Escape') {
80
- setIsRenaming(false);
81
- } else if (event.key === 'Enter') {
82
- renameInputRef.current.blur();
83
- }
84
- },
85
- [],
86
- );
87
-
88
- const onBlur = useCallback(() => {
89
- setIsRenaming(false);
90
- if (renameInputRef.current.value.trim() === '') {
91
- // Renaming to empty signals deletion
92
- setShowModal(true);
93
- } else {
94
- handleRenameClick(renameInputRef.current.value);
95
- }
96
- }, [handleRenameClick]);
97
-
98
- const handleRenameIconClick = useCallback(
99
- (event: React.MouseEvent) => {
100
- event.stopPropagation();
101
- setIsRenaming(!isRenaming);
102
- setRenameValue(name);
103
- },
104
- [name, isRenaming],
105
- );
106
-
107
- // Focus the input field when renaming
108
- useEffect(() => {
109
- if (isRenaming) {
110
- renameInputRef.current.focus();
111
- }
112
- }, [isRenaming]);
113
-
114
- // Function to open the delete file confirmation modal
115
- const handleModalOpen = useCallback(
116
- (event: React.MouseEvent) => {
117
- event.stopPropagation();
118
- setShowModal(true);
119
- },
120
- [],
121
- );
122
-
123
- // Function to close the modal
124
- const handleModalClose = useCallback(() => {
125
- setShowModal(false);
126
- }, []);
127
-
128
- // Function to handle confirmation on modal
129
- const handleConfirmModal = useCallback(
130
- (event: React.MouseEvent | undefined) => {
131
- // TODO clean this up.
132
- // This was added to prevent parent listeners from firing
133
- // when the modal is confirmed.
134
- event?.stopPropagation();
135
- setShowModal(false);
136
- handleDeleteClick();
137
- },
138
- [handleDeleteClick],
139
- );
140
-
141
- const handleMouseEnter = useCallback(() => {
142
- setIsHovered(true);
143
- }, []);
144
-
145
- const handleMouseLeave = useCallback(() => {
146
- setIsHovered(false);
147
- }, []);
148
-
149
- const onChange = useCallback(() => {
150
- setRenameValue(renameInputRef.current.value);
151
- }, []);
152
-
153
- return (
154
- <div
155
- className={`file-or-directory user-select-none ${
156
- isActive ? 'active-file' : ''
157
- }`}
158
- onClick={isRenaming ? null : handleClick}
159
- onDoubleClick={
160
- isRenaming || !handleDoubleClick
161
- ? null
162
- : handleDoubleClick
163
- }
164
- onMouseEnter={handleMouseEnter}
165
- onMouseLeave={handleMouseLeave}
166
- >
167
- <div className="name">
168
- {isRenaming ? (
169
- <>
170
- <FileTypeIcon name={renameValue} />
171
- <input
172
- className="rename-input"
173
- ref={renameInputRef}
174
- type="text"
175
- aria-label="Field name"
176
- value={renameValue}
177
- onKeyDown={onKeyDown}
178
- onBlur={onBlur}
179
- onChange={onChange}
180
- />
181
- </>
182
- ) : (
183
- children
184
- )}
185
- </div>
186
- {isHovered && !isRenaming ? (
187
- <div
188
- className="utils"
189
- style={{ position: 'relative' }}
190
- >
191
- {(isDirectory ? enableRenameDirectory : true) ? (
192
- <OverlayTrigger
193
- placement="top"
194
- overlay={
195
- <Tooltip id="rename-file-tooltip">
196
- {renameFileTooltipText}
197
- </Tooltip>
198
- }
199
- >
200
- <i
201
- onClick={handleRenameIconClick}
202
- className="icon-button icon-button-dark"
203
- >
204
- <EditSVG />
205
- </i>
206
- </OverlayTrigger>
207
- ) : null}
208
- <OverlayTrigger
209
- placement="top"
210
- overlay={
211
- <Tooltip id="delete-file-tooltip">
212
- {deleteFileTooltipText}
213
- </Tooltip>
214
- }
215
- >
216
- <i
217
- onClick={handleModalOpen}
218
- className="icon-button icon-button-dark"
219
- >
220
- <TrashSVG />
221
- </i>
222
- </OverlayTrigger>
223
- </div>
224
- ) : null}
225
- {/* TODO Move this up to a higher level of the tree */}
226
- {showModal && (
227
- <DeleteConfirmationModal
228
- show={showModal}
229
- onClose={handleModalClose}
230
- onConfirm={handleConfirmModal}
231
- isDirectory={isDirectory}
232
- name={name}
233
- />
234
- )}
235
- </div>
236
- );
237
- };
@@ -1,47 +0,0 @@
1
- import { useContext } from 'react';
2
- import { VizFileId } from '@vizhub/viz-types';
3
- import type { FileTree, FileTreeFile } from '../../types';
4
- import { VZCodeContext } from '../VZCodeContext';
5
- import { DirectoryListing } from './DirectoryListing';
6
- import { FileListing } from './FileListing';
7
-
8
- // A "Listing" is a "FileListing" or a "DirectoryListing"
9
- // that appears in the Sidebar.
10
- export const Listing = ({
11
- entity,
12
- handleFileClick,
13
- handleFileDoubleClick,
14
- }: {
15
- entity: FileTree | FileTreeFile;
16
- handleFileClick: (fileId: VizFileId) => void;
17
- handleFileDoubleClick: (fileId: VizFileId) => void;
18
- }) => {
19
- const { activePane, sidebarPresenceIndicators } =
20
- useContext(VZCodeContext);
21
- const { name, file, fileId } = entity as FileTreeFile;
22
- const { path, children } = entity as FileTree;
23
-
24
- const presence =
25
- sidebarPresenceIndicators?.filter(
26
- (indicator) => indicator.fileId === fileId,
27
- ) || [];
28
-
29
- return file ? (
30
- <FileListing
31
- fileId={fileId}
32
- name={name}
33
- handleFileClick={handleFileClick}
34
- handleFileDoubleClick={handleFileDoubleClick}
35
- isActive={fileId === activePane.activeFileId}
36
- presence={presence}
37
- />
38
- ) : (
39
- <DirectoryListing
40
- name={name}
41
- path={path}
42
- children={children}
43
- handleFileClick={handleFileClick}
44
- handleFileDoubleClick={handleFileDoubleClick}
45
- />
46
- );
47
- };