@elice/material-exercise 1.231227.0 → 1.240112.0-cloud.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 (395) hide show
  1. package/cjs/components/material-exercise/MaterialExercise.i18n.js +2 -4
  2. package/cjs/components/material-exercise/MaterialExercise.js +54 -59
  3. package/cjs/components/material-exercise/MaterialExercise.styled.js +14 -20
  4. package/cjs/components/material-exercise/MaterialExerciseMobile.js +8 -15
  5. package/cjs/components/material-exercise/context/ExerciseIntlProvider.js +14 -18
  6. package/cjs/components/material-exercise/context/ExerciseProvider.js +58 -66
  7. package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +19 -24
  8. package/cjs/components/material-exercise/context/context.js +1 -7
  9. package/cjs/components/material-exercise/context/locales/noImage.en.json.js +1 -1
  10. package/cjs/components/material-exercise/context/locales/noImage.ko.json.js +1 -1
  11. package/cjs/components/material-exercise/context/recoil.js +293 -544
  12. package/cjs/components/material-exercise/context/recoilTypes.js +0 -2
  13. package/cjs/components/material-exercise/context/subjects.js +3 -5
  14. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +60 -67
  15. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -14
  16. package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +1 -1
  17. package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +1 -1
  18. package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +17 -21
  19. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +133 -203
  20. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -12
  21. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +24 -40
  22. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +38 -52
  23. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +5 -9
  24. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +1 -1
  25. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +1 -1
  26. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +189 -328
  27. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +5 -9
  28. package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +1 -1
  29. package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +1 -1
  30. package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +14 -17
  31. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +11 -15
  32. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +7 -11
  33. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +44 -65
  34. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +32 -61
  35. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +19 -35
  36. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +48 -62
  37. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -18
  38. package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
  39. package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
  40. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +21 -32
  41. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +4 -8
  42. package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +23 -27
  43. package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +7 -17
  44. package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +1 -1
  45. package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +1 -1
  46. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +23 -32
  47. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +7 -15
  48. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +79 -86
  49. package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +1 -1
  50. package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +1 -1
  51. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +11 -22
  52. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -20
  53. package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +180 -288
  54. package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +82 -116
  55. package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -4
  56. package/cjs/components/material-exercise/exercise-room/locales/en.json.js +1 -1
  57. package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +1 -1
  58. package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +125 -181
  59. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -7
  60. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -17
  61. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +43 -58
  62. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +15 -27
  63. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +65 -68
  64. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +23 -32
  65. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +58 -92
  66. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +3 -7
  67. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +11 -16
  68. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +18 -29
  69. package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
  70. package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
  71. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +162 -282
  72. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -14
  73. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -54
  74. package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +1 -1
  75. package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +1 -1
  76. package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +15 -21
  77. package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +14 -19
  78. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +16 -21
  79. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +5 -10
  80. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +18 -23
  81. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +10 -21
  82. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -8
  83. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -7
  84. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -11
  85. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -15
  86. package/cjs/components/shared/file-icon/FileIcon.js +17 -23
  87. package/cjs/components/shared/file-tabs/FileTab.js +30 -36
  88. package/cjs/components/shared/file-tabs/FileTab.styled.js +15 -25
  89. package/cjs/components/shared/file-tabs/FileTabs.js +38 -63
  90. package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -8
  91. package/cjs/components/shared/file-tabs/util.js +14 -29
  92. package/cjs/components/shared/file-tree/FileTree.js +12 -17
  93. package/cjs/components/shared/file-tree/FileTreeConfig.js +22 -25
  94. package/cjs/components/shared/file-tree/FileTreeList.js +37 -39
  95. package/cjs/components/shared/file-tree/FileTreeListItemContent.js +61 -75
  96. package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -31
  97. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +64 -72
  98. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -12
  99. package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +63 -74
  100. package/cjs/components/shared/file-tree/FileTreeListItems.js +136 -151
  101. package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -8
  102. package/cjs/components/shared/file-tree/FileTreeToolbar.js +31 -32
  103. package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -7
  104. package/cjs/components/shared/file-tree/context/FileTreeContext.js +76 -97
  105. package/cjs/components/shared/file-tree/locales/en.json.js +1 -1
  106. package/cjs/components/shared/file-tree/locales/ko.json.js +1 -1
  107. package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -26
  108. package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +146 -195
  109. package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -2
  110. package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -3
  111. package/cjs/components/shared/file-tree/utils/fileTreePath.js +6 -7
  112. package/cjs/components/shared/file-viewer/FileViewer.js +37 -61
  113. package/cjs/components/shared/file-viewer/FileViewerCsv.js +108 -172
  114. package/cjs/components/shared/file-viewer/FileViewerImage.js +8 -12
  115. package/cjs/components/shared/file-viewer/FileViewerIpynb.js +10 -23
  116. package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +33 -42
  117. package/cjs/components/shared/file-viewer/FileViewerText.js +12 -24
  118. package/cjs/components/shared/file-viewer/locales/en.json.js +1 -1
  119. package/cjs/components/shared/file-viewer/locales/ko.json.js +1 -1
  120. package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +1 -1
  121. package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +1 -1
  122. package/cjs/components/shared/material-modal/MaterialModal.js +11 -14
  123. package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -11
  124. package/cjs/components/shared/monaco-editor/MonacoEditor.js +74 -99
  125. package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +6 -12
  126. package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +36 -50
  127. package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +91 -110
  128. package/cjs/components/shared/monaco-editor/constants/grammars/JSON.tmLanguage.json.js +1 -1
  129. package/cjs/components/shared/monaco-editor/constants/grammars/MagicPython.tmLanguage.json.js +1 -1
  130. package/cjs/components/shared/monaco-editor/constants/grammars/TypeScriptReact.tmLanguage.json.js +1 -1
  131. package/cjs/components/shared/monaco-editor/constants/grammars/asp-vb-net.tmlanguage.json.js +1 -1
  132. package/cjs/components/shared/monaco-editor/constants/grammars/c.tmLanguage.json.js +1 -1
  133. package/cjs/components/shared/monaco-editor/constants/grammars/cpp.tmLanguage.json.js +1 -1
  134. package/cjs/components/shared/monaco-editor/constants/grammars/csharp.tmLanguage.json.js +1 -1
  135. package/cjs/components/shared/monaco-editor/constants/grammars/css.tmLanguage.json.js +1 -1
  136. package/cjs/components/shared/monaco-editor/constants/grammars/dart.tmLanguage.json.js +1 -1
  137. package/cjs/components/shared/monaco-editor/constants/grammars/fsharp.tmLanguage.json.js +1 -1
  138. package/cjs/components/shared/monaco-editor/constants/grammars/go.tmLanguage.json.js +1 -1
  139. package/cjs/components/shared/monaco-editor/constants/grammars/html.tmLanguage.json.js +1 -1
  140. package/cjs/components/shared/monaco-editor/constants/grammars/index.js +28 -84
  141. package/cjs/components/shared/monaco-editor/constants/grammars/java.tmLanguage.json.js +1 -1
  142. package/cjs/components/shared/monaco-editor/constants/grammars/lua.tmLanguage.json.js +1 -1
  143. package/cjs/components/shared/monaco-editor/constants/grammars/objective-c.tmLanguage.json.js +1 -1
  144. package/cjs/components/shared/monaco-editor/constants/grammars/php.tmLanguage.json.js +1 -1
  145. package/cjs/components/shared/monaco-editor/constants/grammars/r.tmLanguage.json.js +1 -1
  146. package/cjs/components/shared/monaco-editor/constants/grammars/ruby.tmLanguage.json.js +1 -1
  147. package/cjs/components/shared/monaco-editor/constants/grammars/rust.tmLanguage.json.js +1 -1
  148. package/cjs/components/shared/monaco-editor/constants/grammars/scss.tmLanguage.json.js +1 -1
  149. package/cjs/components/shared/monaco-editor/constants/grammars/sql.tmLanguage.json.js +1 -1
  150. package/cjs/components/shared/monaco-editor/constants/grammars/swift.tmLanguage.json.js +1 -1
  151. package/cjs/components/shared/monaco-editor/constants/grammars/xml.tmLanguage.json.js +1 -1
  152. package/cjs/components/shared/monaco-editor/constants/grammars/yaml.tmLanguage.json.js +1 -1
  153. package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -7
  154. package/cjs/components/shared/monaco-editor/constants/themes/abyss.json.js +1 -1
  155. package/cjs/components/shared/monaco-editor/constants/themes/elice.json.js +1 -1
  156. package/cjs/components/shared/monaco-editor/constants/themes/index.js +17 -51
  157. package/cjs/components/shared/monaco-editor/constants/themes/kimbie-dark.json.js +1 -1
  158. package/cjs/components/shared/monaco-editor/constants/themes/monokai.json.js +1 -1
  159. package/cjs/components/shared/monaco-editor/constants/themes/quietlight.json.js +1 -1
  160. package/cjs/components/shared/monaco-editor/constants/themes/red.json.js +1 -1
  161. package/cjs/components/shared/monaco-editor/constants/themes/solarized-dark.json.js +1 -1
  162. package/cjs/components/shared/monaco-editor/constants/themes/solarized-light.json.js +1 -1
  163. package/cjs/components/shared/monaco-editor/constants/themes/tomorrow-night-blue.json.js +1 -1
  164. package/cjs/components/shared/monaco-editor/constants/themes/vs-dark-plus.json.js +1 -1
  165. package/cjs/components/shared/monaco-editor/constants/themes/vs-dark.json.js +1 -1
  166. package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-black.json.js +1 -1
  167. package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-light.json.js +1 -1
  168. package/cjs/components/shared/monaco-editor/constants/themes/vs-light-plus.json.js +1 -1
  169. package/cjs/components/shared/monaco-editor/constants/themes/vs-light.json.js +1 -1
  170. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
  171. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -17
  172. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -11
  173. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -36
  174. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -11
  175. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -8
  176. package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +11 -52
  177. package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +7 -8
  178. package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +11 -52
  179. package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +5 -6
  180. package/cjs/components/shared/monaco-editor/editor-languages/index.js +4 -4
  181. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -3
  182. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +1 -1
  183. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +1 -1
  184. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +1 -1
  185. package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +11 -56
  186. package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +17 -18
  187. package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -13
  188. package/cjs/components/shared/monaco-editor/locales/en.json.js +1 -1
  189. package/cjs/components/shared/monaco-editor/locales/ko.json.js +1 -1
  190. package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -12
  191. package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -2
  192. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -14
  193. package/cjs/components/shared/monaco-editor/utils/grammar/index.js +25 -69
  194. package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -27
  195. package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +38 -73
  196. package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +8 -11
  197. package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +4 -8
  198. package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -4
  199. package/cjs/components/shared/monaco-editor/utils/prettier/index.js +8 -46
  200. package/cjs/components/shared/monaco-editor/utils/theme/convert.js +14 -26
  201. package/cjs/components/shared/monaco-editor/utils/theme/index.js +3 -24
  202. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -79
  203. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -84
  204. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -122
  205. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +133 -158
  206. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -106
  207. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -4
  208. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -3
  209. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -4
  210. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +158 -179
  211. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -5
  212. package/cjs/components/shared/no-vnc/NoVnc.js +57 -86
  213. package/cjs/components/shared/no-vnc/NoVncLazy.js +5 -11
  214. package/cjs/components/shared/preview-container/PreviewContainer.js +11 -15
  215. package/cjs/components/shared/web-browser/WebBrowser.js +37 -53
  216. package/cjs/components/shared/xterm/Xterm.js +58 -81
  217. package/cjs/components/shared/xterm/XtermLazy.js +5 -11
  218. package/cjs/components/shared/xterm/locales/en.json.js +1 -1
  219. package/cjs/components/shared/xterm/locales/ko.json.js +1 -1
  220. package/cjs/components/shared/xterm/utils/index.js +0 -2
  221. package/cjs/constants/arduino.js +10 -12
  222. package/cjs/constants/shortcutKeyMap.js +2 -4
  223. package/cjs/constants/stylesheets.js +5 -9
  224. package/cjs/hooks/useArduino.js +141 -284
  225. package/cjs/hooks/useExerciseFile.js +22 -26
  226. package/cjs/hooks/useExericseShortcut.js +4 -8
  227. package/cjs/hooks/useMaterialExerciseFileUrl.js +33 -57
  228. package/cjs/hooks/useRunnerRoomWebSocket.js +27 -53
  229. package/cjs/hooks/useStdioTextConcator.js +10 -22
  230. package/cjs/hooks/useStdioWebSocket.js +28 -34
  231. package/cjs/hooks/useUsercodeEditWebSocket.js +158 -240
  232. package/cjs/hooks/useUsercodeHistory.js +63 -117
  233. package/cjs/index.js +4 -6
  234. package/cjs/utils/arduino.js +11 -25
  235. package/cjs/utils/exerciseFile.js +10 -10
  236. package/cjs/utils/runner.js +15 -31
  237. package/es/components/material-exercise/MaterialExercise.i18n.js +2 -2
  238. package/es/components/material-exercise/MaterialExercise.js +34 -35
  239. package/es/components/material-exercise/MaterialExercise.styled.js +14 -14
  240. package/es/components/material-exercise/MaterialExerciseMobile.js +6 -9
  241. package/es/components/material-exercise/context/ExerciseIntlProvider.js +10 -8
  242. package/es/components/material-exercise/context/ExerciseProvider.js +52 -55
  243. package/es/components/material-exercise/context/ExerciseProviderNoImage.js +10 -10
  244. package/es/components/material-exercise/context/context.js +1 -1
  245. package/es/components/material-exercise/context/recoil.js +290 -535
  246. package/es/components/material-exercise/context/subjects.js +3 -3
  247. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +51 -53
  248. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
  249. package/es/components/material-exercise/exercise-file/ExerciseFile.js +9 -8
  250. package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +127 -193
  251. package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -4
  252. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +20 -31
  253. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +35 -44
  254. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
  255. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +181 -315
  256. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
  257. package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +11 -10
  258. package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -6
  259. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -3
  260. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +25 -42
  261. package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +26 -51
  262. package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +11 -23
  263. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +21 -31
  264. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
  265. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +19 -26
  266. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
  267. package/es/components/material-exercise/exercise-preview/ExercisePreview.js +15 -14
  268. package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +5 -11
  269. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +11 -15
  270. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +5 -9
  271. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +78 -80
  272. package/es/components/material-exercise/exercise-room/ExerciseRoom.js +6 -13
  273. package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -14
  274. package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +134 -236
  275. package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +65 -94
  276. package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -2
  277. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +116 -167
  278. package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
  279. package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +8 -7
  280. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +17 -27
  281. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +11 -18
  282. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +52 -50
  283. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +10 -14
  284. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +46 -75
  285. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -2
  286. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +4 -4
  287. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +15 -21
  288. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +138 -253
  289. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
  290. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +29 -37
  291. package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +12 -13
  292. package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -2
  293. package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -12
  294. package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -2
  295. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -14
  296. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +9 -15
  297. package/es/components/shared/exercise-version-list/ExerciseVersionList.js +3 -2
  298. package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
  299. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +6 -5
  300. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -9
  301. package/es/components/shared/file-icon/FileIcon.js +15 -17
  302. package/es/components/shared/file-tabs/FileTab.js +22 -24
  303. package/es/components/shared/file-tabs/FileTab.styled.js +15 -19
  304. package/es/components/shared/file-tabs/FileTabs.js +35 -55
  305. package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
  306. package/es/components/shared/file-tabs/util.js +14 -27
  307. package/es/components/shared/file-tree/FileTree.js +3 -3
  308. package/es/components/shared/file-tree/FileTreeConfig.js +18 -15
  309. package/es/components/shared/file-tree/FileTreeList.js +33 -29
  310. package/es/components/shared/file-tree/FileTreeListItemContent.js +45 -55
  311. package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -25
  312. package/es/components/shared/file-tree/FileTreeListItemContentInput.js +60 -64
  313. package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
  314. package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +39 -46
  315. package/es/components/shared/file-tree/FileTreeListItems.js +134 -145
  316. package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
  317. package/es/components/shared/file-tree/FileTreeToolbar.js +25 -22
  318. package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
  319. package/es/components/shared/file-tree/context/FileTreeContext.js +74 -89
  320. package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -20
  321. package/es/components/shared/file-tree/utils/fileTreeGenerator.js +146 -193
  322. package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
  323. package/es/components/shared/file-tree/utils/fileTreePath.js +6 -5
  324. package/es/components/shared/file-viewer/FileViewer.js +21 -38
  325. package/es/components/shared/file-viewer/FileViewerCsv.js +70 -129
  326. package/es/components/shared/file-viewer/FileViewerImage.js +4 -3
  327. package/es/components/shared/file-viewer/FileViewerIpynb.js +7 -14
  328. package/es/components/shared/file-viewer/FileViewerNonViewable.js +15 -18
  329. package/es/components/shared/file-viewer/FileViewerText.js +9 -17
  330. package/es/components/shared/material-modal/MaterialModal.js +8 -7
  331. package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
  332. package/es/components/shared/monaco-editor/MonacoEditor.js +67 -87
  333. package/es/components/shared/monaco-editor/MonacoEditorLazy.js +2 -4
  334. package/es/components/shared/monaco-editor/MonacoEditorMobile.js +31 -41
  335. package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +52 -66
  336. package/es/components/shared/monaco-editor/constants/grammars/index.js +28 -82
  337. package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -5
  338. package/es/components/shared/monaco-editor/constants/themes/index.js +17 -49
  339. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -11
  340. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -15
  341. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
  342. package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -34
  343. package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -9
  344. package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -6
  345. package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +10 -33
  346. package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +10 -33
  347. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
  348. package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +10 -37
  349. package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +3 -3
  350. package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -11
  351. package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -10
  352. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -12
  353. package/es/components/shared/monaco-editor/utils/grammar/index.js +24 -68
  354. package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -25
  355. package/es/components/shared/monaco-editor/utils/grammar/textmate.js +35 -67
  356. package/es/components/shared/monaco-editor/utils/monacoLanguage.js +5 -5
  357. package/es/components/shared/monaco-editor/utils/monacoPreference.js +4 -6
  358. package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -2
  359. package/es/components/shared/monaco-editor/utils/prettier/index.js +7 -27
  360. package/es/components/shared/monaco-editor/utils/theme/convert.js +13 -19
  361. package/es/components/shared/monaco-editor/utils/theme/index.js +3 -22
  362. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -77
  363. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -82
  364. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -120
  365. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +130 -152
  366. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -104
  367. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
  368. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -1
  369. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -2
  370. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +157 -172
  371. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -3
  372. package/es/components/shared/no-vnc/NoVnc.js +42 -59
  373. package/es/components/shared/no-vnc/NoVncLazy.js +2 -4
  374. package/es/components/shared/preview-container/PreviewContainer.js +8 -7
  375. package/es/components/shared/web-browser/WebBrowser.js +29 -40
  376. package/es/components/shared/xterm/Xterm.js +51 -69
  377. package/es/components/shared/xterm/XtermLazy.js +2 -4
  378. package/es/constants/arduino.js +10 -10
  379. package/es/constants/shortcutKeyMap.js +1 -3
  380. package/es/constants/stylesheets.js +5 -7
  381. package/es/hooks/useArduino.js +141 -278
  382. package/es/hooks/useExerciseFile.js +22 -24
  383. package/es/hooks/useExericseShortcut.js +4 -6
  384. package/es/hooks/useMaterialExerciseFileUrl.js +34 -52
  385. package/es/hooks/useRunnerRoomWebSocket.js +27 -51
  386. package/es/hooks/useStdioTextConcator.js +10 -16
  387. package/es/hooks/useStdioWebSocket.js +28 -32
  388. package/es/hooks/useUsercodeEditWebSocket.js +157 -232
  389. package/es/hooks/useUsercodeHistory.js +63 -115
  390. package/es/utils/arduino.js +11 -23
  391. package/es/utils/exerciseFile.js +10 -8
  392. package/es/utils/runner.js +15 -29
  393. package/package.json +11 -7
  394. package/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -521
  395. package/es/_virtual/_rollupPluginBabelHelpers.js +0 -499
@@ -6,7 +6,7 @@ import '../../shared/exercise-shimmer/ExerciseFileTreeListShimmer.js';
6
6
  import '../../shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js';
7
7
  import ExerciseFileTabs from './ExerciseFileTabs.js';
8
8
 
9
- var ExerciseFileTabsLazy = function ExerciseFileTabsLazy() {
9
+ const ExerciseFileTabsLazy = () => {
10
10
  return React.createElement(React.Suspense, {
11
11
  fallback: React.createElement(ExerciseFileTabsShimmer, null)
12
12
  }, React.createElement(ExerciseFileTabs, null));
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray, toConsumableArray as _toConsumableArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React from 'react';
3
2
  import { useIntl } from 'react-intl';
4
3
  import { postOrgMaterialExerciseExerciseRoomUserFileAdd, postOrgMaterialExerciseExerciseRoomUserFileDirectoryAdd, postOrgMaterialExerciseExerciseRoomUserFileDelete, postOrgMaterialExerciseExerciseRoomUserFileDirectoryDelete, postOrgMaterialExerciseExerciseRoomUserFileMove, postOrgMaterialExerciseExerciseRoomUserFileDirectoryMove, getOrgMaterialExerciseExerciseRoomGet } from '@elice/api-client';
@@ -22,16 +21,10 @@ import { withExerciseIntlProvider } from '../context/ExerciseIntlProvider.js';
22
21
  import phrasesEn from './locales/en.json.js';
23
22
  import phrasesKo from './locales/ko.json.js';
24
23
 
25
- var AsyncFileTree = React.lazy(function () {
26
- return import('../../shared/file-tree/FileTree.js');
27
- });
28
- var AsyncFileTreeList = React.lazy(function () {
29
- return import('../../shared/file-tree/FileTreeList.js');
30
- });
31
- var AsyncFileTreeToolbar = React.lazy(function () {
32
- return import('../../shared/file-tree/FileTreeToolbar.js');
33
- });
34
- var StyledFileTreeDivider = styled.hr.withConfig({
24
+ const AsyncFileTree = React.lazy(() => import('../../shared/file-tree/FileTree.js'));
25
+ const AsyncFileTreeList = React.lazy(() => import('../../shared/file-tree/FileTreeList.js'));
26
+ const AsyncFileTreeToolbar = React.lazy(() => import('../../shared/file-tree/FileTreeToolbar.js'));
27
+ const StyledFileTreeDivider = styled.hr.withConfig({
35
28
  componentId: "sc-107xvf5-0"
36
29
  })(["margin:0;width:100%;height:1px;border:0;border-bottom:", ";"], MATERIAL_DIVIDER_BORDER_VALUE);
37
30
  var MaterialExerciseFileError;
@@ -47,62 +40,48 @@ var MaterialExerciseFileError;
47
40
  MaterialExerciseFileError["UsableSizeExceed"] = "usable_size_exceed";
48
41
  MaterialExerciseFileError["SubFileOrPathExist"] = "sub_file_or_path_exist";
49
42
  })(MaterialExerciseFileError || (MaterialExerciseFileError = {}));
50
- var ExerciseFileTree = function ExerciseFileTree() {
43
+ const ExerciseFileTree = () => {
51
44
  var _a, _b, _c, _d;
52
- var intl = useIntl();
53
- var _React$useContext = React.useContext(ExerciseContext),
54
- exerciseRoomId = _React$useContext.exerciseRoomId,
55
- materialExerciseId = _React$useContext.materialExerciseId,
56
- locale = _React$useContext.locale,
57
- onError = _React$useContext.onError;
45
+ const intl = useIntl();
46
+ const {
47
+ exerciseRoomId,
48
+ materialExerciseId,
49
+ locale,
50
+ onError
51
+ } = React.useContext(ExerciseContext);
58
52
  // exercise state
59
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
60
- var _useRecoilState = useRecoilState(exerciseRoomState(exerciseRoomId)),
61
- _useRecoilState2 = _slicedToArray(_useRecoilState, 2),
62
- exerciseRoom = _useRecoilState2[0],
63
- setExerciseRoom = _useRecoilState2[1];
53
+ const exercise = useRecoilValue(exerciseState(materialExerciseId));
54
+ const [exerciseRoom, setExerciseRoom] = useRecoilState(exerciseRoomState(exerciseRoomId));
64
55
  // multi lang states
65
- var multilangLanguages = useRecoilValue(exerciseMultilangLanguagesState(materialExerciseId));
66
- var multilangEnvironment = useRecoilValue(exerciseMultilangEnvironmentState({
67
- materialExerciseId: materialExerciseId,
68
- exerciseRoomId: exerciseRoomId
56
+ const multilangLanguages = useRecoilValue(exerciseMultilangLanguagesState(materialExerciseId));
57
+ const multilangEnvironment = useRecoilValue(exerciseMultilangEnvironmentState({
58
+ materialExerciseId,
59
+ exerciseRoomId
60
+ }));
61
+ const [openedTabs, setOpenedTabs] = useRecoilState(exerciseFileTabsOpenedState({
62
+ materialExerciseId,
63
+ exerciseRoomId
69
64
  }));
70
- var _useRecoilState3 = useRecoilState(exerciseFileTabsOpenedState({
71
- materialExerciseId: materialExerciseId,
72
- exerciseRoomId: exerciseRoomId
73
- })),
74
- _useRecoilState4 = _slicedToArray(_useRecoilState3, 2),
75
- openedTabs = _useRecoilState4[0],
76
- setOpenedTabs = _useRecoilState4[1];
77
- var _useRecoilState5 = useRecoilState(exerciseActiveFilenameState),
78
- _useRecoilState6 = _slicedToArray(_useRecoilState5, 2),
79
- activeFilename = _useRecoilState6[0],
80
- setActiveFilename = _useRecoilState6[1];
81
- var _React$useState = React.useState(activeFilename || ''),
82
- _React$useState2 = _slicedToArray(_React$useState, 2),
83
- activePath = _React$useState2[0],
84
- setActivePath = _React$useState2[1];
85
- var _React$useState3 = React.useState('idle'),
86
- _React$useState4 = _slicedToArray(_React$useState3, 2),
87
- apiStatus = _React$useState4[0],
88
- setApiStatus = _React$useState4[1];
65
+ const [activeFilename, setActiveFilename] = useRecoilState(exerciseActiveFilenameState);
66
+ const [activePath, setActivePath] = React.useState(activeFilename || '');
67
+ const [apiStatus, setApiStatus] = React.useState('idle');
89
68
  // activeFilename update effect
90
- React.useEffect(function () {
69
+ React.useEffect(() => {
91
70
  var _a, _b, _c;
92
71
  if ((exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.MultiLanguage && multilangLanguages && multilangEnvironment && multilangLanguages[multilangEnvironment['language']]) {
93
- var filename = (_a = multilangLanguages[multilangEnvironment['language']].initialOpenFilelist[0]) !== null && _a !== void 0 ? _a : null;
72
+ const filename = (_a = multilangLanguages[multilangEnvironment['language']].initialOpenFilelist[0]) !== null && _a !== void 0 ? _a : null;
94
73
  setActiveFilename(filename);
95
74
  } else {
96
- var _filename = (_c = (_b = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _b === void 0 ? void 0 : _b.initialOpenFilelist[0]) !== null && _c !== void 0 ? _c : null;
97
- setActiveFilename(_filename);
75
+ const filename = (_c = (_b = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _b === void 0 ? void 0 : _b.initialOpenFilelist[0]) !== null && _c !== void 0 ? _c : null;
76
+ setActiveFilename(filename);
98
77
  }
99
78
  }, [exercise, multilangLanguages, multilangEnvironment, setActiveFilename]);
100
- React.useEffect(function () {
79
+ React.useEffect(() => {
101
80
  if (activeFilename) {
102
81
  setActivePath(activeFilename);
103
82
  }
104
83
  }, [activeFilename]);
105
- var multilanguageFilelistFilter = function multilanguageFilelistFilter(filelist) {
84
+ const multilanguageFilelistFilter = filelist => {
106
85
  if (!filelist || !exercise) {
107
86
  return [];
108
87
  }
@@ -113,61 +92,39 @@ var ExerciseFileTree = function ExerciseFileTree() {
113
92
  if (!multilangLanguages[multilangEnvironment.language]) {
114
93
  return [];
115
94
  }
116
- return filelist.filter(function (filepath) {
117
- return filepath.startsWith(multilangLanguages[multilangEnvironment.language].rootDir);
118
- });
95
+ return filelist.filter(filepath => filepath.startsWith(multilangLanguages[multilangEnvironment.language].rootDir));
119
96
  } else {
120
97
  return filelist;
121
98
  }
122
99
  };
123
- var handleActivePathChange = function handleActivePathChange(path) {
124
- var isDirectory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
100
+ const handleActivePathChange = (path, isDirectory = false) => {
125
101
  if (!isDirectory) {
126
102
  if (!openedTabs.includes(path)) {
127
- setOpenedTabs([].concat(_toConsumableArray(openedTabs), [path]));
103
+ setOpenedTabs([...openedTabs, path]);
128
104
  }
129
105
  setActiveFilename(path);
130
106
  }
131
107
  setActivePath(path);
132
108
  };
133
- var doGetOrgMaterialExerciseExerciseRoomGet = /*#__PURE__*/function () {
134
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
135
- var _yield$getOrgMaterial, _exerciseRoom;
136
- return _regeneratorRuntime().wrap(function _callee$(_context) {
137
- while (1) switch (_context.prev = _context.next) {
138
- case 0:
139
- _context.prev = 0;
140
- _context.next = 3;
141
- return getOrgMaterialExerciseExerciseRoomGet({
142
- exerciseRoomId: exerciseRoomId
143
- });
144
- case 3:
145
- _yield$getOrgMaterial = _context.sent;
146
- _exerciseRoom = _yield$getOrgMaterial.exerciseRoom;
147
- setExerciseRoom(_exerciseRoom);
148
- _context.next = 12;
149
- break;
150
- case 8:
151
- _context.prev = 8;
152
- _context.t0 = _context["catch"](0);
153
- console.error(_context.t0);
154
- Notification.error(intl.formatMessage({
155
- id: 'materialExercise.exerciseFileTree.fetchRoom.failure'
156
- }));
157
- case 12:
158
- case "end":
159
- return _context.stop();
160
- }
161
- }, _callee, null, [[0, 8]]);
162
- }));
163
- return function doGetOrgMaterialExerciseExerciseRoomGet() {
164
- return _ref.apply(this, arguments);
165
- };
166
- }();
167
- var handleError = function handleError(error) {
109
+ const doGetOrgMaterialExerciseExerciseRoomGet = async () => {
110
+ try {
111
+ const {
112
+ exerciseRoom
113
+ } = await getOrgMaterialExerciseExerciseRoomGet({
114
+ exerciseRoomId
115
+ });
116
+ setExerciseRoom(exerciseRoom);
117
+ } catch (error) {
118
+ console.error(error);
119
+ Notification.error(intl.formatMessage({
120
+ id: 'materialExercise.exerciseFileTree.fetchRoom.failure'
121
+ }));
122
+ }
123
+ };
124
+ const handleError = error => {
168
125
  var _a, _b, _c;
169
- var message;
170
- var failMessage;
126
+ let message;
127
+ let failMessage;
171
128
  switch ((_a = error.detail) === null || _a === void 0 ? void 0 : _a.failCode) {
172
129
  case MaterialExerciseFileError.InsufficientPermission:
173
130
  case MaterialExerciseFileError.NotFoundExerciseRoom:
@@ -179,241 +136,150 @@ var ExerciseFileTree = function ExerciseFileTree() {
179
136
  case MaterialExerciseFileError.ResultingFilenameUnderCurrentFilename:
180
137
  case MaterialExerciseFileError.UsableSizeExceed:
181
138
  case MaterialExerciseFileError.SubFileOrPathExist:
182
- message = error.detail.failCode ? "materialExercise.exerciseFileTree.errorCode.".concat(camelize(error.detail.failCode)) : 'materialExercise.exerciseFileTree.errorCode.unknown';
139
+ message = error.detail.failCode ? `materialExercise.exerciseFileTree.errorCode.${camelize(error.detail.failCode)}` : 'materialExercise.exerciseFileTree.errorCode.unknown';
183
140
  failMessage = error.detail.failMessage;
184
141
  break;
185
142
  default:
186
- message = ((_b = error.detail) === null || _b === void 0 ? void 0 : _b.failCode) ? error.detail.failCode : "materialExercise.exerciseFileTree.errorCode.unknown";
143
+ message = ((_b = error.detail) === null || _b === void 0 ? void 0 : _b.failCode) ? error.detail.failCode : `materialExercise.exerciseFileTree.errorCode.unknown`;
187
144
  failMessage = (_c = error.detail) === null || _c === void 0 ? void 0 : _c.failMessage;
188
145
  }
189
146
  Notification.error(intl.formatMessage({
190
147
  id: message
191
- }) + "".concat(failMessage ? " (".concat(failMessage, ")") : ''));
148
+ }) + `${failMessage ? ` (${failMessage})` : ''}`);
192
149
  if (typeof onError === 'function') {
193
150
  onError(error);
194
151
  }
195
152
  };
196
- var handleFileAdd = /*#__PURE__*/function () {
197
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2) {
198
- var path, emptyFileWithName, userFile;
199
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
200
- while (1) switch (_context2.prev = _context2.next) {
201
- case 0:
202
- path = _ref2.path, emptyFileWithName = _ref2.emptyFileWithName, userFile = _ref2.userFile;
203
- setApiStatus('pending');
204
- return _context2.abrupt("return", postOrgMaterialExerciseExerciseRoomUserFileAdd({
205
- exerciseRoomId: exerciseRoomId,
206
- path: path,
207
- emptyFileWithName: emptyFileWithName,
208
- userFile: userFile
209
- }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(function () {
210
- return setApiStatus('resolved');
211
- }).catch(function (error) {
212
- setApiStatus('rejected');
213
- handleError(error);
214
- if (typeof onError === 'function') {
215
- onError(error);
216
- }
217
- }));
218
- case 3:
219
- case "end":
220
- return _context2.stop();
221
- }
222
- }, _callee2);
223
- }));
224
- return function handleFileAdd(_x) {
225
- return _ref3.apply(this, arguments);
226
- };
227
- }();
228
- var handleDirectoryAdd = /*#__PURE__*/function () {
229
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref4) {
230
- var name, path;
231
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
232
- while (1) switch (_context3.prev = _context3.next) {
233
- case 0:
234
- name = _ref4.name, path = _ref4.path, _ref4.overwrite;
235
- setApiStatus('pending');
236
- return _context3.abrupt("return", postOrgMaterialExerciseExerciseRoomUserFileDirectoryAdd({
237
- exerciseRoomId: exerciseRoomId,
238
- path: path,
239
- name: name
240
- }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(function () {
241
- return setApiStatus('resolved');
242
- }).catch(function (error) {
243
- setApiStatus('rejected');
244
- handleError(error);
245
- if (typeof onError === 'function') {
246
- onError(error);
247
- }
248
- }));
249
- case 3:
250
- case "end":
251
- return _context3.stop();
252
- }
253
- }, _callee3);
254
- }));
255
- return function handleDirectoryAdd(_x2) {
256
- return _ref5.apply(this, arguments);
257
- };
258
- }();
259
- var handleFileDelete = /*#__PURE__*/function () {
260
- var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(path) {
261
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
262
- while (1) switch (_context4.prev = _context4.next) {
263
- case 0:
264
- setApiStatus('pending');
265
- return _context4.abrupt("return", postOrgMaterialExerciseExerciseRoomUserFileDelete({
266
- exerciseRoomId: exerciseRoomId,
267
- filename: path
268
- }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(function () {
269
- setApiStatus('resolved');
270
- setActiveFilename(openedTabs[0]);
271
- setOpenedTabs(function (openedTabs) {
272
- return openedTabs.filter(function (openTab) {
273
- return openTab !== path;
274
- });
275
- });
276
- }).catch(function (error) {
277
- setApiStatus('rejected');
278
- handleError(error);
279
- if (typeof onError === 'function') {
280
- onError(error);
281
- }
282
- }));
283
- case 2:
284
- case "end":
285
- return _context4.stop();
286
- }
287
- }, _callee4);
288
- }));
289
- return function handleFileDelete(_x3) {
290
- return _ref6.apply(this, arguments);
291
- };
292
- }();
293
- var handleDirectoryDelete = /*#__PURE__*/function () {
294
- var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(path) {
295
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
296
- while (1) switch (_context5.prev = _context5.next) {
297
- case 0:
298
- setApiStatus('pending');
299
- return _context5.abrupt("return", postOrgMaterialExerciseExerciseRoomUserFileDirectoryDelete({
300
- exerciseRoomId: exerciseRoomId,
301
- filename: path
302
- }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(function () {
303
- return setApiStatus('resolved');
304
- }).catch(function (error) {
305
- setApiStatus('rejected');
306
- handleError(error);
307
- if (typeof onError === 'function') {
308
- onError(error);
309
- }
310
- }));
311
- case 2:
312
- case "end":
313
- return _context5.stop();
314
- }
315
- }, _callee5);
316
- }));
317
- return function handleDirectoryDelete(_x4) {
318
- return _ref7.apply(this, arguments);
319
- };
320
- }();
321
- var handleFileMove = /*#__PURE__*/function () {
322
- var _ref9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(_ref8) {
323
- var currentFilename, newName, newPath;
324
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
325
- while (1) switch (_context6.prev = _context6.next) {
326
- case 0:
327
- currentFilename = _ref8.currentFilename, newName = _ref8.newName, newPath = _ref8.newPath;
328
- setApiStatus('pending');
329
- postOrgMaterialExerciseExerciseRoomUserFileMove({
330
- exerciseRoomId: exerciseRoomId,
331
- currentFilename: currentFilename,
332
- newName: newName,
333
- newPath: newPath
334
- }).then(function () {
335
- // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
336
- var parsedPath = (newPath ? newPath + '/' : '') + newName;
337
- // set activeFilename
338
- setActiveFilename(parsedPath);
339
- // set openedTabs
340
- if (openedTabs.includes(currentFilename)) {
341
- // replace
342
- setOpenedTabs(function (openedTabs) {
343
- return openedTabs.map(function (openedTab) {
344
- return openedTab === currentFilename ? parsedPath : openedTab;
345
- });
346
- });
347
- } else {
348
- // add new
349
- setOpenedTabs(function (openedTabs) {
350
- return [].concat(_toConsumableArray(openedTabs), [parsedPath]);
351
- });
352
- }
353
- }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(function () {
354
- return setApiStatus('resolved');
355
- }).catch(function (error) {
356
- setApiStatus('rejected');
357
- handleError(error);
358
- if (typeof onError === 'function') {
359
- onError(error);
360
- }
361
- });
362
- case 3:
363
- case "end":
364
- return _context6.stop();
365
- }
366
- }, _callee6);
367
- }));
368
- return function handleFileMove(_x5) {
369
- return _ref9.apply(this, arguments);
370
- };
371
- }();
372
- var handleDirectoryMove = /*#__PURE__*/function () {
373
- var _ref11 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(_ref10) {
374
- var currentFilename, newName, newPath;
375
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
376
- while (1) switch (_context7.prev = _context7.next) {
377
- case 0:
378
- currentFilename = _ref10.currentFilename, newName = _ref10.newName, newPath = _ref10.newPath;
379
- setApiStatus('pending');
380
- postOrgMaterialExerciseExerciseRoomUserFileDirectoryMove({
381
- exerciseRoomId: exerciseRoomId,
382
- currentFilename: currentFilename,
383
- newName: newName,
384
- newPath: newPath
385
- }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(function () {
386
- return setApiStatus('resolved');
387
- }).catch(function (error) {
388
- setApiStatus('rejected');
389
- handleError(error);
390
- if (typeof onError === 'function') {
391
- onError(error);
392
- }
393
- });
394
- case 3:
395
- case "end":
396
- return _context7.stop();
397
- }
398
- }, _callee7);
399
- }));
400
- return function handleDirectoryMove(_x6) {
401
- return _ref11.apply(this, arguments);
402
- };
403
- }();
404
- var handleFilesUpload = function handleFilesUpload(_ref12) {
405
- var files = _ref12.files,
406
- path = _ref12.path;
153
+ const handleFileAdd = async ({
154
+ path,
155
+ emptyFileWithName,
156
+ userFile
157
+ }) => {
158
+ setApiStatus('pending');
159
+ return postOrgMaterialExerciseExerciseRoomUserFileAdd({
160
+ exerciseRoomId,
161
+ path,
162
+ emptyFileWithName,
163
+ userFile
164
+ }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(() => setApiStatus('resolved')).catch(error => {
165
+ setApiStatus('rejected');
166
+ handleError(error);
167
+ if (typeof onError === 'function') {
168
+ onError(error);
169
+ }
170
+ });
171
+ };
172
+ const handleDirectoryAdd = async ({
173
+ name,
174
+ path,
175
+ overwrite
176
+ }) => {
177
+ setApiStatus('pending');
178
+ return postOrgMaterialExerciseExerciseRoomUserFileDirectoryAdd({
179
+ exerciseRoomId,
180
+ path,
181
+ name
182
+ }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(() => setApiStatus('resolved')).catch(error => {
183
+ setApiStatus('rejected');
184
+ handleError(error);
185
+ if (typeof onError === 'function') {
186
+ onError(error);
187
+ }
188
+ });
189
+ };
190
+ const handleFileDelete = async path => {
191
+ setApiStatus('pending');
192
+ return postOrgMaterialExerciseExerciseRoomUserFileDelete({
193
+ exerciseRoomId,
194
+ filename: path
195
+ }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(() => {
196
+ setApiStatus('resolved');
197
+ setActiveFilename(openedTabs[0]);
198
+ setOpenedTabs(openedTabs => openedTabs.filter(openTab => openTab !== path));
199
+ }).catch(error => {
200
+ setApiStatus('rejected');
201
+ handleError(error);
202
+ if (typeof onError === 'function') {
203
+ onError(error);
204
+ }
205
+ });
206
+ };
207
+ const handleDirectoryDelete = async path => {
208
+ setApiStatus('pending');
209
+ return postOrgMaterialExerciseExerciseRoomUserFileDirectoryDelete({
210
+ exerciseRoomId,
211
+ filename: path
212
+ }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(() => setApiStatus('resolved')).catch(error => {
213
+ setApiStatus('rejected');
214
+ handleError(error);
215
+ if (typeof onError === 'function') {
216
+ onError(error);
217
+ }
218
+ });
219
+ };
220
+ const handleFileMove = async ({
221
+ currentFilename,
222
+ newName,
223
+ newPath
224
+ }) => {
225
+ setApiStatus('pending');
226
+ postOrgMaterialExerciseExerciseRoomUserFileMove({
227
+ exerciseRoomId,
228
+ currentFilename,
229
+ newName,
230
+ newPath
231
+ }).then(() => {
232
+ // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
233
+ const parsedPath = (newPath ? newPath + '/' : '') + newName;
234
+ // set activeFilename
235
+ setActiveFilename(parsedPath);
236
+ // set openedTabs
237
+ if (openedTabs.includes(currentFilename)) {
238
+ // replace
239
+ setOpenedTabs(openedTabs => openedTabs.map(openedTab => openedTab === currentFilename ? parsedPath : openedTab));
240
+ } else {
241
+ // add new
242
+ setOpenedTabs(openedTabs => [...openedTabs, parsedPath]);
243
+ }
244
+ }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(() => setApiStatus('resolved')).catch(error => {
245
+ setApiStatus('rejected');
246
+ handleError(error);
247
+ if (typeof onError === 'function') {
248
+ onError(error);
249
+ }
250
+ });
251
+ };
252
+ const handleDirectoryMove = async ({
253
+ currentFilename,
254
+ newName,
255
+ newPath
256
+ }) => {
257
+ setApiStatus('pending');
258
+ postOrgMaterialExerciseExerciseRoomUserFileDirectoryMove({
259
+ exerciseRoomId,
260
+ currentFilename,
261
+ newName,
262
+ newPath
263
+ }).then(doGetOrgMaterialExerciseExerciseRoomGet).then(() => setApiStatus('resolved')).catch(error => {
264
+ setApiStatus('rejected');
265
+ handleError(error);
266
+ if (typeof onError === 'function') {
267
+ onError(error);
268
+ }
269
+ });
270
+ };
271
+ const handleFilesUpload = ({
272
+ files,
273
+ path
274
+ }) => {
407
275
  setApiStatus('pending');
408
- Promise.all(Array.from(files).map(function (file) {
276
+ Promise.all(Array.from(files).map(file => {
409
277
  return postOrgMaterialExerciseExerciseRoomUserFileAdd({
410
- exerciseRoomId: exerciseRoomId,
411
- path: path,
278
+ exerciseRoomId,
279
+ path,
412
280
  userFile: file
413
281
  });
414
- })).then(doGetOrgMaterialExerciseExerciseRoomGet).then(function () {
415
- return setApiStatus('resolved');
416
- }).catch(function (error) {
282
+ })).then(doGetOrgMaterialExerciseExerciseRoomGet).then(() => setApiStatus('resolved')).catch(error => {
417
283
  setApiStatus('rejected');
418
284
  handleError(error);
419
285
  if (typeof onError === 'function') {
@@ -6,7 +6,7 @@ import ExerciseFileTreeListShimmer from '../../shared/exercise-shimmer/ExerciseF
6
6
  import '../../shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js';
7
7
  import ExerciseFileTree from './ExerciseFileTree.js';
8
8
 
9
- var ExerciseFileTreeLazy = function ExerciseFileTreeLazy() {
9
+ const ExerciseFileTreeLazy = () => {
10
10
  return React.createElement(React.Suspense, {
11
11
  fallback: React.createElement(ExerciseFileTreeListShimmer, null)
12
12
  }, React.createElement(ExerciseFileTree, null));
@@ -13,17 +13,18 @@ import '../context/recoilTypes.js';
13
13
  import '../context/subjects.js';
14
14
  import '../context/ExerciseProvider.js';
15
15
 
16
- var ExerciseFileViewer = function ExerciseFileViewer() {
17
- var _React$useContext = React.useContext(ExerciseContext),
18
- materialExerciseId = _React$useContext.materialExerciseId,
19
- exerciseRoomId = _React$useContext.exerciseRoomId,
20
- locale = _React$useContext.locale;
21
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
22
- var activeFilename = useRecoilValue(exerciseActiveFilenameState);
23
- var activeFileUrl = useMaterialExerciseFileUrl({
16
+ const ExerciseFileViewer = () => {
17
+ const {
18
+ materialExerciseId,
19
+ exerciseRoomId,
20
+ locale
21
+ } = React.useContext(ExerciseContext);
22
+ const exercise = useRecoilValue(exerciseState(materialExerciseId));
23
+ const activeFilename = useRecoilValue(exerciseActiveFilenameState);
24
+ const activeFileUrl = useMaterialExerciseFileUrl({
24
25
  filename: activeFilename,
25
- exercise: exercise,
26
- exerciseRoomId: exerciseRoomId
26
+ exercise,
27
+ exerciseRoomId
27
28
  });
28
29
  //
29
30
  //
@@ -17,14 +17,15 @@ import ExerciseMenuDropdown from './ExerciseMenuDropdown.js';
17
17
  import ExerciseMenuReset from './ExerciseMenuReset.js';
18
18
  import ExerciseMenuStdioFileBrowser from './ExerciseMenuStdioFileBrowser.js';
19
19
 
20
- var StyledExerciseMenuWrapper = styled.div.withConfig({
20
+ const StyledExerciseMenuWrapper = styled.div.withConfig({
21
21
  componentId: "sc-1gf6m87-0"
22
22
  })(["display:flex;justify-content:center;align-items:center;padding:0 0.5rem 0 1rem;height:2.25rem;gap:0.5rem;background-color:", ";"], base.color.navy8);
23
- var ExerciseMenu = function ExerciseMenu() {
24
- var _React$useContext = React.useContext(ExerciseContext),
25
- materialExerciseId = _React$useContext.materialExerciseId;
26
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
27
- var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
23
+ const ExerciseMenu = () => {
24
+ const {
25
+ materialExerciseId
26
+ } = React.useContext(ExerciseContext);
27
+ const exercise = useRecoilValue(exerciseState(materialExerciseId));
28
+ const isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
28
29
  //
29
30
  //
30
31
  //