@elice/material-exercise 1.231212.0 → 1.231228.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
@@ -2,7 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
5
  var React = require('react');
7
6
  var reactIntl = require('react-intl');
8
7
  var apiClient = require('@elice/api-client');
@@ -17,7 +16,6 @@ var MaterialModal = require('../../shared/material-modal/MaterialModal.js');
17
16
  var MonacoEditorLazy = require('../../shared/monaco-editor/MonacoEditorLazy.js');
18
17
  require('../../shared/monaco-editor/MonacoEditorPerferenceForm.js');
19
18
  require('monaco-editor/esm/vs/editor/editor.api');
20
- require('../../shared/monaco-editor/constants/monaco/preferences.js');
21
19
  var stylesheets = require('../../../constants/stylesheets.js');
22
20
  var useMaterialExerciseFileUrl = require('../../../hooks/useMaterialExerciseFileUrl.js');
23
21
  var recoil$1 = require('../context/recoil.js');
@@ -32,320 +30,203 @@ var ExerciseSubmitHistoryOutput = require('./ExerciseSubmitHistoryOutput.js');
32
30
  var ExerciseVersionListItem_styled = require('../../shared/exercise-version-list/ExerciseVersionListItem.styled.js');
33
31
  var ExerciseSubmitHistory_styled = require('./ExerciseSubmitHistory.styled.js');
34
32
 
35
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
36
-
37
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
38
- var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
39
-
40
- var AsyncFileTree = React__default["default"].lazy(function () {
41
- return Promise.resolve().then(function () { return require('../../shared/file-tree/FileTree.js'); });
42
- });
43
- var AsyncFileTreeList = React__default["default"].lazy(function () {
44
- return Promise.resolve().then(function () { return require('../../shared/file-tree/FileTreeList.js'); });
45
- });
46
- var AsyncFileViewer = React__default["default"].lazy(function () {
47
- return Promise.resolve().then(function () { return require('../../shared/file-viewer/FileViewer.js'); });
48
- });
49
- var ExerciseSubmitHistory = function ExerciseSubmitHistory(_ref) {
50
- var onHide = _ref.onHide;
51
- var COUNT = 100;
52
- var intl = reactIntl.useIntl();
53
- var _React$useContext = React__default["default"].useContext(context.ExerciseContext),
54
- materialExerciseId = _React$useContext.materialExerciseId,
55
- exerciseRoomId = _React$useContext.exerciseRoomId,
56
- exerciseRoomUserId = _React$useContext.exerciseRoomUserId;
57
- var exercise = recoil.useRecoilValue(recoil$1.exerciseState(materialExerciseId));
58
- var preference = recoil.useRecoilValue(recoil$1.exerciseEditorPreferenceState);
59
- var _useState = React.useState([]),
60
- _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
61
- runningList = _useState2[0],
62
- setRunningList = _useState2[1];
63
- var _useState3 = React.useState(null),
64
- _useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
65
- selectedRunning = _useState4[0],
66
- setSelectedRunning = _useState4[1];
67
- var _useState5 = React.useState(false),
68
- _useState6 = _rollupPluginBabelHelpers.slicedToArray(_useState5, 2),
69
- hasMoreRunning = _useState6[0],
70
- setMoreRunning = _useState6[1];
71
- var _useState7 = React.useState(0),
72
- _useState8 = _rollupPluginBabelHelpers.slicedToArray(_useState7, 2),
73
- offset = _useState8[0],
74
- setOffset = _useState8[1];
75
- var _useState9 = React.useState([]),
76
- _useState10 = _rollupPluginBabelHelpers.slicedToArray(_useState9, 2),
77
- fileList = _useState10[0],
78
- setFileList = _useState10[1];
79
- var _useState11 = React.useState(null),
80
- _useState12 = _rollupPluginBabelHelpers.slicedToArray(_useState11, 2),
81
- selectedFile = _useState12[0],
82
- setSelectedFile = _useState12[1];
83
- var _useState13 = React.useState(null),
84
- _useState14 = _rollupPluginBabelHelpers.slicedToArray(_useState13, 2),
85
- usercodeContent = _useState14[0],
86
- setUsercodeContent = _useState14[1];
87
- var _useState15 = React.useState(false),
88
- _useState16 = _rollupPluginBabelHelpers.slicedToArray(_useState15, 2),
89
- isUserChanged = _useState16[0],
90
- setIsUserChanged = _useState16[1];
91
- var _useState17 = React.useState(false),
92
- _useState18 = _rollupPluginBabelHelpers.slicedToArray(_useState17, 2),
93
- isFile = _useState18[0],
94
- setIsFile = _useState18[1];
95
- var _useState19 = React.useState(false),
96
- _useState20 = _rollupPluginBabelHelpers.slicedToArray(_useState19, 2),
97
- isFileReady = _useState20[0],
98
- setIsFileReady = _useState20[1];
99
- var selectedFileUrl = useMaterialExerciseFileUrl.useMaterialExerciseFileUrl({
33
+ const AsyncFileTree = React.lazy(() => Promise.resolve().then(function () { return require('../../shared/file-tree/FileTree.js'); }));
34
+ const AsyncFileTreeList = React.lazy(() => Promise.resolve().then(function () { return require('../../shared/file-tree/FileTreeList.js'); }));
35
+ const AsyncFileViewer = React.lazy(() => Promise.resolve().then(function () { return require('../../shared/file-viewer/FileViewer.js'); }));
36
+ const ExerciseSubmitHistory = ({
37
+ onHide
38
+ }) => {
39
+ const COUNT = 100;
40
+ const intl = reactIntl.useIntl();
41
+ const {
42
+ materialExerciseId,
43
+ exerciseRoomId,
44
+ exerciseRoomUserId
45
+ } = React.useContext(context.ExerciseContext);
46
+ const exercise = recoil.useRecoilValue(recoil$1.exerciseState(materialExerciseId));
47
+ const preference = recoil.useRecoilValue(recoil$1.exerciseEditorPreferenceState);
48
+ const [runningList, setRunningList] = React.useState([]);
49
+ const [selectedRunning, setSelectedRunning] = React.useState(null);
50
+ const [hasMoreRunning, setMoreRunning] = React.useState(false);
51
+ const [offset, setOffset] = React.useState(0);
52
+ const [fileList, setFileList] = React.useState([]);
53
+ const [selectedFile, setSelectedFile] = React.useState(null);
54
+ const [usercodeContent, setUsercodeContent] = React.useState(null);
55
+ const [isUserChanged, setIsUserChanged] = React.useState(false);
56
+ const [isFile, setIsFile] = React.useState(false);
57
+ const [isFileReady, setIsFileReady] = React.useState(false);
58
+ const selectedFileUrl = useMaterialExerciseFileUrl.useMaterialExerciseFileUrl({
100
59
  filename: selectedFile,
101
- exercise: exercise,
102
- exerciseRoomId: exerciseRoomId
60
+ exercise,
61
+ exerciseRoomId
103
62
  });
104
63
  //
105
64
  //
106
65
  //
107
- React.useEffect(function () {
108
- void _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee() {
109
- var _yield$getOrgMaterial, exerciseRunnings;
110
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee$(_context) {
111
- while (1) switch (_context.prev = _context.next) {
112
- case 0:
113
- _context.prev = 0;
114
- _context.next = 3;
115
- return apiClient.getOrgMaterialExerciseExerciseRunningList({
116
- materialExerciseId: materialExerciseId,
117
- userId: exerciseRoomUserId,
118
- offset: offset,
119
- count: COUNT
120
- });
121
- case 3:
122
- _yield$getOrgMaterial = _context.sent;
123
- exerciseRunnings = _yield$getOrgMaterial.exerciseRunnings;
124
- setRunningList(function (runningList) {
125
- if (runningList.length === 0 && exerciseRunnings[0]) {
126
- setSelectedRunning(exerciseRunnings[0]);
127
- }
128
- return [].concat(_rollupPluginBabelHelpers.toConsumableArray(runningList), _rollupPluginBabelHelpers.toConsumableArray(exerciseRunnings));
129
- });
130
- setMoreRunning(exerciseRunnings.length === COUNT);
131
- _context.next = 11;
132
- break;
133
- case 9:
134
- _context.prev = 9;
135
- _context.t0 = _context["catch"](0);
136
- case 11:
137
- case "end":
138
- return _context.stop();
139
- }
140
- }, _callee, null, [[0, 9]]);
141
- }))();
66
+ React.useEffect(() => {
67
+ void (async () => {
68
+ try {
69
+ const {
70
+ exerciseRunnings
71
+ } = await apiClient.getOrgMaterialExerciseExerciseRunningList({
72
+ materialExerciseId,
73
+ userId: exerciseRoomUserId,
74
+ offset,
75
+ count: COUNT
76
+ });
77
+ setRunningList(runningList => {
78
+ if (runningList.length === 0 && exerciseRunnings[0]) {
79
+ setSelectedRunning(exerciseRunnings[0]);
80
+ }
81
+ return [...runningList, ...exerciseRunnings];
82
+ });
83
+ setMoreRunning(exerciseRunnings.length === COUNT);
84
+ } catch (err) {}
85
+ })();
142
86
  }, [materialExerciseId, exerciseRoomUserId, offset]);
143
87
  //
144
88
  // When id of selected running is updated,
145
89
  // Get exercise running data and filelist.
146
90
  //
147
- React.useEffect(function () {
148
- void _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee2() {
149
- var _a, _b, _c, _d, _e, _yield$getOrgMaterial2, exerciseRunning, languages, environment, languagesResponse, response, rootDir, initialOpenFilelist;
150
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee2$(_context2) {
151
- while (1) switch (_context2.prev = _context2.next) {
152
- case 0:
153
- if (selectedRunning) {
154
- _context2.next = 2;
155
- break;
156
- }
157
- return _context2.abrupt("return");
158
- case 2:
159
- _context2.prev = 2;
160
- _context2.next = 5;
161
- return apiClient.getOrgMaterialExerciseExerciseRunningGet({
162
- exerciseRunningId: selectedRunning.id,
163
- returnFilelist: true,
164
- returnUsercodeFilelist: true
165
- });
166
- case 5:
167
- _yield$getOrgMaterial2 = _context2.sent;
168
- exerciseRunning = _yield$getOrgMaterial2.exerciseRunning;
169
- setSelectedRunning(exerciseRunning);
170
- if (!((exercise === null || exercise === void 0 ? void 0 : exercise.envType) === types.enums.ExerciseEnvType.MultiLanguage)) {
171
- _context2.next = 35;
172
- break;
173
- }
174
- _context2.prev = 9;
175
- _context2.next = 12;
176
- return apiClient.getOrgMaterialExerciseExerciseImageExerciseFileGet({
91
+ React.useEffect(() => {
92
+ void (async () => {
93
+ var _a, _b, _c, _d, _e;
94
+ if (!selectedRunning) {
95
+ return;
96
+ }
97
+ try {
98
+ const {
99
+ exerciseRunning
100
+ } = await apiClient.getOrgMaterialExerciseExerciseRunningGet({
101
+ exerciseRunningId: selectedRunning.id,
102
+ returnFilelist: true,
103
+ returnUsercodeFilelist: true
104
+ });
105
+ setSelectedRunning(exerciseRunning);
106
+ if ((exercise === null || exercise === void 0 ? void 0 : exercise.envType) === types.enums.ExerciseEnvType.MultiLanguage) {
107
+ let languages, environment;
108
+ try {
109
+ const languagesResponse = await apiClient.getOrgMaterialExerciseExerciseImageExerciseFileGet({
177
110
  exerciseImageId: exerciseRunning.exerciseImage.id,
178
111
  filename: '.languages.json'
179
112
  });
180
- case 12:
181
- languagesResponse = _context2.sent;
182
113
  languages = humps.camelizeKeys(JSON.parse(languagesResponse.exerciseFile.content));
183
- _context2.next = 19;
184
- break;
185
- case 16:
186
- _context2.prev = 16;
187
- _context2.t0 = _context2["catch"](9);
188
- console.error(_context2.t0);
189
- case 19:
190
- _context2.prev = 19;
191
- _context2.next = 22;
192
- return apiClient.getOrgMaterialExerciseExerciseRoomUserFileGet({
114
+ } catch (e) {
115
+ console.error(e);
116
+ }
117
+ try {
118
+ const response = await apiClient.getOrgMaterialExerciseExerciseRoomUserFileGet({
193
119
  filename: '.environment.json',
194
- exerciseRoomId: exerciseRoomId,
120
+ exerciseRoomId,
195
121
  targetDatetime: exerciseRunning.createdDatetime
196
122
  });
197
- case 22:
198
- response = _context2.sent;
199
123
  environment = humps.camelizeKeys(JSON.parse(response.userFile.content));
200
- _context2.next = 29;
201
- break;
202
- case 26:
203
- _context2.prev = 26;
204
- _context2.t1 = _context2["catch"](19);
124
+ } catch (e) {
205
125
  // API returns error when the user hasn't changed the language
206
126
  if (languages && Object.keys(languages).length > 0) {
207
127
  environment = {
208
128
  language: Object.keys(languages)[0]
209
129
  };
210
130
  }
211
- case 29:
212
- rootDir = languages[environment.language].rootDir;
213
- initialOpenFilelist = (_a = languages === null || languages === void 0 ? void 0 : languages[environment === null || environment === void 0 ? void 0 : environment.language]) === null || _a === void 0 ? void 0 : _a.initialOpenFilelist;
214
- setFileList([].concat(_rollupPluginBabelHelpers.toConsumableArray((_b = exerciseRunning.exerciseImage.filelist) !== null && _b !== void 0 ? _b : []), _rollupPluginBabelHelpers.toConsumableArray((_c = exerciseRunning.exerciseRoom.filelist) !== null && _c !== void 0 ? _c : [])).filter(function (filepath) {
215
- return filepath.startsWith(rootDir);
216
- }));
217
- if ((initialOpenFilelist === null || initialOpenFilelist === void 0 ? void 0 : initialOpenFilelist.length) > 0) {
218
- setSelectedFile(initialOpenFilelist[0]);
219
- }
220
- _context2.next = 37;
221
- break;
222
- case 35:
223
- setFileList([].concat(_rollupPluginBabelHelpers.toConsumableArray((_d = exerciseRunning.exerciseImage.filelist) !== null && _d !== void 0 ? _d : []), _rollupPluginBabelHelpers.toConsumableArray((_e = exerciseRunning.exerciseRoom.filelist) !== null && _e !== void 0 ? _e : [])));
224
- if (exerciseRunning.exerciseImage.taskFilelist && exerciseRunning.exerciseImage.taskFilelist.length > 0) {
225
- setSelectedFile(exerciseRunning.exerciseImage.taskFilelist[0]);
226
- }
227
- case 37:
228
- _context2.next = 42;
229
- break;
230
- case 39:
231
- _context2.prev = 39;
232
- _context2.t2 = _context2["catch"](2);
233
- console.error(_context2.t2);
234
- case 42:
235
- case "end":
236
- return _context2.stop();
131
+ }
132
+ const rootDir = languages[environment.language].rootDir;
133
+ const initialOpenFilelist = (_a = languages === null || languages === void 0 ? void 0 : languages[environment === null || environment === void 0 ? void 0 : environment.language]) === null || _a === void 0 ? void 0 : _a.initialOpenFilelist;
134
+ setFileList([...((_b = exerciseRunning.exerciseImage.filelist) !== null && _b !== void 0 ? _b : []), ...((_c = exerciseRunning.exerciseRoom.filelist) !== null && _c !== void 0 ? _c : [])].filter(filepath => filepath.startsWith(rootDir)));
135
+ if ((initialOpenFilelist === null || initialOpenFilelist === void 0 ? void 0 : initialOpenFilelist.length) > 0) {
136
+ setSelectedFile(initialOpenFilelist[0]);
137
+ }
138
+ } else {
139
+ setFileList([...((_d = exerciseRunning.exerciseImage.filelist) !== null && _d !== void 0 ? _d : []), ...((_e = exerciseRunning.exerciseRoom.filelist) !== null && _e !== void 0 ? _e : [])]);
140
+ if (exerciseRunning.exerciseImage.taskFilelist && exerciseRunning.exerciseImage.taskFilelist.length > 0) {
141
+ setSelectedFile(exerciseRunning.exerciseImage.taskFilelist[0]);
142
+ }
237
143
  }
238
- }, _callee2, null, [[2, 39], [9, 16], [19, 26]]);
239
- }))();
144
+ } catch (err) {
145
+ console.error(err);
146
+ }
147
+ })();
240
148
  // eslint-disable-next-line react-hooks/exhaustive-deps
241
149
  }, [selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.id]);
242
150
  //
243
151
  // When selectedFile or selectedRunning is updated,
244
152
  // Get usercode of selected file.
245
153
  //
246
- React.useEffect(function () {
247
- void _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee3() {
248
- var _yield$getOrgMaterial3, usercode, _yield$getOrgMaterial4, exerciseFile;
249
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee3$(_context3) {
250
- while (1) switch (_context3.prev = _context3.next) {
251
- case 0:
252
- setIsFileReady(false);
253
- if (!(!(selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.exerciseImage) || !selectedFile || !exerciseRoomId)) {
254
- _context3.next = 3;
255
- break;
256
- }
257
- return _context3.abrupt("return");
258
- case 3:
259
- _context3.next = 5;
260
- return apiClient.getOrgMaterialExerciseUsercodeGet({
261
- filename: selectedFile,
262
- exerciseRoomId: selectedRunning.exerciseRoom.id,
263
- targetDatetime: selectedRunning.createdDatetime
264
- });
265
- case 5:
266
- _yield$getOrgMaterial3 = _context3.sent;
267
- usercode = _yield$getOrgMaterial3.usercode;
268
- if (!((usercode === null || usercode === void 0 ? void 0 : usercode.content) !== null && (usercode === null || usercode === void 0 ? void 0 : usercode.content) !== undefined)) {
269
- _context3.next = 14;
270
- break;
271
- }
272
- setIsUserChanged(true);
154
+ React.useEffect(() => {
155
+ void (async () => {
156
+ setIsFileReady(false);
157
+ if (!(selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.exerciseImage) || !selectedFile || !exerciseRoomId) {
158
+ return;
159
+ }
160
+ const {
161
+ usercode
162
+ } = await apiClient.getOrgMaterialExerciseUsercodeGet({
163
+ filename: selectedFile,
164
+ exerciseRoomId: selectedRunning.exerciseRoom.id,
165
+ targetDatetime: selectedRunning.createdDatetime
166
+ });
167
+ if ((usercode === null || usercode === void 0 ? void 0 : usercode.content) !== null && (usercode === null || usercode === void 0 ? void 0 : usercode.content) !== undefined) {
168
+ setIsUserChanged(true);
169
+ setIsFile(false);
170
+ setUsercodeContent(usercode.content);
171
+ setIsFileReady(true);
172
+ } else {
173
+ try {
174
+ const {
175
+ exerciseFile
176
+ } = await apiClient.getOrgMaterialExerciseExerciseImageExerciseFileGet({
177
+ exerciseImageId: selectedRunning.exerciseImage.id,
178
+ filename: selectedFile
179
+ });
180
+ if ((exerciseFile === null || exerciseFile === void 0 ? void 0 : exerciseFile.content) !== null && (exerciseFile === null || exerciseFile === void 0 ? void 0 : exerciseFile.content) !== undefined) {
181
+ setIsUserChanged(false);
273
182
  setIsFile(false);
274
- setUsercodeContent(usercode.content);
183
+ setUsercodeContent(exerciseFile.content);
275
184
  setIsFileReady(true);
276
- _context3.next = 27;
277
- break;
278
- case 14:
279
- _context3.prev = 14;
280
- _context3.next = 17;
281
- return apiClient.getOrgMaterialExerciseExerciseImageExerciseFileGet({
282
- exerciseImageId: selectedRunning.exerciseImage.id,
283
- filename: selectedFile
284
- });
285
- case 17:
286
- _yield$getOrgMaterial4 = _context3.sent;
287
- exerciseFile = _yield$getOrgMaterial4.exerciseFile;
288
- if ((exerciseFile === null || exerciseFile === void 0 ? void 0 : exerciseFile.content) !== null && (exerciseFile === null || exerciseFile === void 0 ? void 0 : exerciseFile.content) !== undefined) {
289
- setIsUserChanged(false);
290
- setIsFile(false);
291
- setUsercodeContent(exerciseFile.content);
292
- setIsFileReady(true);
293
- } else {
294
- setIsUserChanged(false);
295
- setIsFile(true);
296
- setIsFileReady(true);
297
- }
298
- _context3.next = 27;
299
- break;
300
- case 22:
301
- _context3.prev = 22;
302
- _context3.t0 = _context3["catch"](14);
185
+ } else {
303
186
  setIsUserChanged(false);
304
187
  setIsFile(true);
305
188
  setIsFileReady(true);
306
- case 27:
307
- case "end":
308
- return _context3.stop();
189
+ }
190
+ } catch (_a) {
191
+ setIsUserChanged(false);
192
+ setIsFile(true);
193
+ setIsFileReady(true);
309
194
  }
310
- }, _callee3, null, [[14, 22]]);
311
- }))();
195
+ }
196
+ })();
312
197
  }, [selectedFile, exerciseRoomId, selectedRunning]);
313
198
  /**
314
199
  *
315
200
  */
316
- var renderRunningVersionList = function renderRunningVersionList() {
317
- return React__default["default"].createElement(ExerciseVersionList["default"], null, runningList.map(function (exerciseRunning) {
318
- return React__default["default"].createElement(ExerciseVersionListItem["default"], {
201
+ const renderRunningVersionList = () => {
202
+ return React.createElement(ExerciseVersionList.default, null, runningList.map(exerciseRunning => {
203
+ return React.createElement(ExerciseVersionListItem.default, {
319
204
  key: exerciseRunning.id,
320
205
  selected: Boolean(selectedRunning && selectedRunning.id === exerciseRunning.id),
321
- onClick: function onClick() {
206
+ onClick: () => {
322
207
  setSelectedRunning(exerciseRunning);
323
208
  }
324
- }, React__default["default"].createElement(ExerciseVersionListItem_styled.StyledExerciseVersionRunType, {
209
+ }, React.createElement(ExerciseVersionListItem_styled.StyledExerciseVersionRunType, {
325
210
  role: "gray3",
326
211
  size: "small"
327
212
  }, exerciseRunning.runType === types.enums.ExerciseRunType.Grade ? intl.formatMessage({
328
213
  id: 'exerciseSubmitHistory.runType.grade'
329
214
  }) : intl.formatMessage({
330
215
  id: 'exerciseSubmitHistory.runType.run'
331
- })), React__default["default"].createElement(ExerciseVersionListItem_styled.StyledExerciseVersionDatetime, {
216
+ })), React.createElement(ExerciseVersionListItem_styled.StyledExerciseVersionDatetime, {
332
217
  role: "gray3",
333
218
  size: "small"
334
- }, dayjs__default["default"](exerciseRunning.createdDatetime).format('YYYY.M.DD hh:mm a')), React__default["default"].createElement(ExerciseVersionListItem_styled.StyledExerciseVersionScore, {
219
+ }, dayjs(exerciseRunning.createdDatetime).format('YYYY.M.DD hh:mm a')), React.createElement(ExerciseVersionListItem_styled.StyledExerciseVersionScore, {
335
220
  role: "gray3",
336
221
  size: "small"
337
222
  }, exerciseRunning.score));
338
- }), hasMoreRunning ? React__default["default"].createElement(ExerciseVersionListItem["default"], {
339
- onClick: function onClick() {
340
- return setOffset(function (prevOffset) {
341
- return prevOffset + COUNT;
342
- });
343
- }
344
- }, React__default["default"].createElement(blocks.Flex, {
223
+ }), hasMoreRunning ? React.createElement(ExerciseVersionListItem.default, {
224
+ onClick: () => setOffset(prevOffset => prevOffset + COUNT)
225
+ }, React.createElement(blocks.Flex, {
345
226
  align: "center",
346
227
  justify: "center",
347
228
  width: "100%"
348
- }, React__default["default"].createElement(blocks.Text, {
229
+ }, React.createElement(blocks.Text, {
349
230
  role: "important"
350
231
  }, intl.formatMessage({
351
232
  id: 'exerciseSubmitHistory.button.load.more'
@@ -354,63 +235,62 @@ var ExerciseSubmitHistory = function ExerciseSubmitHistory(_ref) {
354
235
  /**
355
236
  *
356
237
  */
357
- var renderRunningOutput = function renderRunningOutput() {
238
+ const renderRunningOutput = () => {
358
239
  if (!selectedRunning) {
359
240
  return null;
360
241
  }
361
- return React__default["default"].createElement(ExerciseSubmitHistoryOutput["default"], {
242
+ return React.createElement(ExerciseSubmitHistoryOutput.default, {
362
243
  exerciseRunningId: selectedRunning.id
363
244
  });
364
245
  };
365
246
  /**
366
247
  *
367
248
  */
368
- var renderRunningContent = function renderRunningContent() {
249
+ const renderRunningContent = () => {
369
250
  var _a;
370
251
  if (!selectedFile) {
371
252
  return null;
372
253
  }
373
- var runningId = Number((_a = selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.id) !== null && _a !== void 0 ? _a : 0);
374
- var uniqueFilePath = "submit-history/".concat(exerciseRoomId, "/r").concat(runningId);
375
- var editorFilename = "".concat(uniqueFilePath, "/").concat(selectedFile);
376
- return React__default["default"].createElement(blocks.Flex, {
254
+ const runningId = Number((_a = selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.id) !== null && _a !== void 0 ? _a : 0);
255
+ const uniqueFilePath = `submit-history/${exerciseRoomId}/r${runningId}`;
256
+ const editorFilename = `${uniqueFilePath}/${selectedFile}`;
257
+ return React.createElement(blocks.Flex, {
377
258
  width: "100%",
378
259
  auto: true,
379
260
  overflow: "hidden"
380
- }, React__default["default"].createElement(blocks.ResizableNext, Object.assign({}, stylesheets.MATERIAL_RESIZABLE_COMMON_PROPS, {
261
+ }, React.createElement(blocks.ResizableNext, Object.assign({}, stylesheets.MATERIAL_RESIZABLE_COMMON_PROPS, {
381
262
  initialWidth: 240,
382
263
  resizeHandles: ['e'],
383
264
  collapseWidth: 100
384
- }), React__default["default"].createElement(ExerciseSubmitHistory_styled.StyledFileTreeWrapper, null, React__default["default"].createElement(React__default["default"].Suspense, {
265
+ }), React.createElement(ExerciseSubmitHistory_styled.StyledFileTreeWrapper, null, React.createElement(React.Suspense, {
385
266
  fallback: null
386
- }, React__default["default"].createElement(AsyncFileTree, {
267
+ }, React.createElement(AsyncFileTree, {
387
268
  activePath: selectedFile,
388
269
  exerciseRoomFilelist: fileList,
389
270
  imageFilelist: [],
390
- onActivePathChange: function onActivePathChange(path) {
391
- var isDirectory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
271
+ onActivePathChange: (path, isDirectory = false) => {
392
272
  if (isDirectory) {
393
273
  return;
394
274
  }
395
275
  setSelectedFile(path);
396
276
  }
397
- }, React__default["default"].createElement(AsyncFileTreeList, null))))), React__default["default"].createElement(blocks.Flex, {
277
+ }, React.createElement(AsyncFileTreeList, null))))), React.createElement(blocks.Flex, {
398
278
  column: true,
399
279
  auto: true,
400
280
  height: "100%",
401
281
  overflow: "hidden"
402
- }, !isUserChanged && React__default["default"].createElement(ExerciseSubmitHistory_styled.StyledExerciseSubmitHistoryNotChanged, null, React__default["default"].createElement(blocks.Text, {
282
+ }, !isUserChanged && React.createElement(ExerciseSubmitHistory_styled.StyledExerciseSubmitHistoryNotChanged, null, React.createElement(blocks.Text, {
403
283
  role: "white",
404
284
  size: "tiny"
405
285
  }, intl.formatMessage({
406
286
  id: 'exerciseSubmitHistory.notChanged'
407
- }))), React__default["default"].createElement(ExerciseSubmitHistory_styled.StyledExerciseSubmitHistoryEditorWrapper, null, isFile ? React__default["default"].createElement(React__default["default"].Suspense, {
287
+ }))), React.createElement(ExerciseSubmitHistory_styled.StyledExerciseSubmitHistoryEditorWrapper, null, isFile ? React.createElement(React.Suspense, {
408
288
  fallback: null
409
- }, React__default["default"].createElement(AsyncFileViewer, {
289
+ }, React.createElement(AsyncFileViewer, {
410
290
  key: editorFilename,
411
291
  filename: editorFilename,
412
292
  fileurl: selectedFileUrl || ''
413
- })) : React__default["default"].createElement(MonacoEditorLazy["default"], {
293
+ })) : React.createElement(MonacoEditorLazy.default, {
414
294
  key: editorFilename,
415
295
  defaultValue: usercodeContent !== null && usercodeContent !== void 0 ? usercodeContent : '',
416
296
  filename: editorFilename,
@@ -418,25 +298,25 @@ var ExerciseSubmitHistory = function ExerciseSubmitHistory(_ref) {
418
298
  scrollBeyondLastLine: false,
419
299
  readOnly: true
420
300
  })
421
- }), !isFileReady && React__default["default"].createElement(ExerciseSubmitHistory_styled.StyledExerciseSubmitHistoryEditorLoadingScreen, null, React__default["default"].createElement(blocks.Spinner, null)))));
301
+ }), !isFileReady && React.createElement(ExerciseSubmitHistory_styled.StyledExerciseSubmitHistoryEditorLoadingScreen, null, React.createElement(blocks.Spinner, null)))));
422
302
  };
423
303
  //
424
304
  //
425
305
  //
426
- return React__default["default"].createElement(MaterialModal["default"], {
306
+ return React.createElement(MaterialModal.default, {
427
307
  title: intl.formatMessage({
428
308
  id: 'exerciseSubmitHistory.title'
429
309
  }),
430
310
  onHide: onHide
431
- }, React__default["default"].createElement(blocks.Flex, {
311
+ }, React.createElement(blocks.Flex, {
432
312
  width: "100%",
433
313
  height: "100%",
434
314
  overflow: "hidden"
435
- }, React__default["default"].createElement(blocks.Box, {
315
+ }, React.createElement(blocks.Box, {
436
316
  width: "15rem",
437
317
  height: "100%",
438
318
  overflow: "hidden"
439
- }, renderRunningVersionList()), React__default["default"].createElement(blocks.Flex, {
319
+ }, renderRunningVersionList()), React.createElement(blocks.Flex, {
440
320
  auto: true,
441
321
  column: true,
442
322
  height: "100%",
@@ -444,8 +324,8 @@ var ExerciseSubmitHistory = function ExerciseSubmitHistory(_ref) {
444
324
  }, renderRunningContent(), renderRunningOutput())));
445
325
  };
446
326
  var ExerciseSubmitHistory$1 = ExerciseIntlProvider.withExerciseIntlProvider(ExerciseSubmitHistory, {
447
- en: en["default"],
448
- ko: ko["default"]
327
+ en: en.default,
328
+ ko: ko.default
449
329
  });
450
330
 
451
- exports["default"] = ExerciseSubmitHistory$1;
331
+ exports.default = ExerciseSubmitHistory$1;