@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
@@ -1,7 +1,6 @@
1
- import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime, toConsumableArray as _toConsumableArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React, { useState, useEffect } from 'react';
3
2
  import { useIntl } from 'react-intl';
4
- import { getOrgMaterialExerciseExerciseRunningList, getOrgMaterialExerciseExerciseRoomUserFileGet, getOrgMaterialExerciseExerciseImageExerciseFileGet, getOrgMaterialExerciseExerciseRunningGet, getOrgMaterialExerciseUsercodeGet } from '@elice/api-client';
3
+ import { getOrgMaterialExerciseExerciseRunningList, getOrgMaterialExerciseExerciseRunningGet, getOrgMaterialExerciseExerciseImageExerciseFileGet, getOrgMaterialExerciseExerciseRoomUserFileGet, getOrgMaterialExerciseUsercodeGet } from '@elice/api-client';
5
4
  import { Flex, Box, Text, ResizableNext, Spinner } from '@elice/blocks';
6
5
  import { enums } from '@elice/types';
7
6
  import dayjs from 'dayjs';
@@ -13,7 +12,6 @@ import MaterialModal from '../../shared/material-modal/MaterialModal.js';
13
12
  import MonacoEditorLazy from '../../shared/monaco-editor/MonacoEditorLazy.js';
14
13
  import '../../shared/monaco-editor/MonacoEditorPerferenceForm.js';
15
14
  import 'monaco-editor/esm/vs/editor/editor.api';
16
- import '../../shared/monaco-editor/constants/monaco/preferences.js';
17
15
  import { MATERIAL_RESIZABLE_COMMON_PROPS } from '../../../constants/stylesheets.js';
18
16
  import { useMaterialExerciseFileUrl } from '../../../hooks/useMaterialExerciseFileUrl.js';
19
17
  import { exerciseState, exerciseEditorPreferenceState } from '../context/recoil.js';
@@ -28,288 +26,180 @@ import ExerciseSubmitHistoryOutput from './ExerciseSubmitHistoryOutput.js';
28
26
  import { StyledExerciseVersionRunType, StyledExerciseVersionDatetime, StyledExerciseVersionScore } from '../../shared/exercise-version-list/ExerciseVersionListItem.styled.js';
29
27
  import { StyledFileTreeWrapper, StyledExerciseSubmitHistoryNotChanged, StyledExerciseSubmitHistoryEditorWrapper, StyledExerciseSubmitHistoryEditorLoadingScreen } from './ExerciseSubmitHistory.styled.js';
30
28
 
31
- var AsyncFileTree = React.lazy(function () {
32
- return import('../../shared/file-tree/FileTree.js');
33
- });
34
- var AsyncFileTreeList = React.lazy(function () {
35
- return import('../../shared/file-tree/FileTreeList.js');
36
- });
37
- var AsyncFileViewer = React.lazy(function () {
38
- return import('../../shared/file-viewer/FileViewer.js');
39
- });
40
- var ExerciseSubmitHistory = function ExerciseSubmitHistory(_ref) {
41
- var onHide = _ref.onHide;
42
- var COUNT = 100;
43
- var intl = useIntl();
44
- var _React$useContext = React.useContext(ExerciseContext),
45
- materialExerciseId = _React$useContext.materialExerciseId,
46
- exerciseRoomId = _React$useContext.exerciseRoomId,
47
- exerciseRoomUserId = _React$useContext.exerciseRoomUserId;
48
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
49
- var preference = useRecoilValue(exerciseEditorPreferenceState);
50
- var _useState = useState([]),
51
- _useState2 = _slicedToArray(_useState, 2),
52
- runningList = _useState2[0],
53
- setRunningList = _useState2[1];
54
- var _useState3 = useState(null),
55
- _useState4 = _slicedToArray(_useState3, 2),
56
- selectedRunning = _useState4[0],
57
- setSelectedRunning = _useState4[1];
58
- var _useState5 = useState(false),
59
- _useState6 = _slicedToArray(_useState5, 2),
60
- hasMoreRunning = _useState6[0],
61
- setMoreRunning = _useState6[1];
62
- var _useState7 = useState(0),
63
- _useState8 = _slicedToArray(_useState7, 2),
64
- offset = _useState8[0],
65
- setOffset = _useState8[1];
66
- var _useState9 = useState([]),
67
- _useState10 = _slicedToArray(_useState9, 2),
68
- fileList = _useState10[0],
69
- setFileList = _useState10[1];
70
- var _useState11 = useState(null),
71
- _useState12 = _slicedToArray(_useState11, 2),
72
- selectedFile = _useState12[0],
73
- setSelectedFile = _useState12[1];
74
- var _useState13 = useState(null),
75
- _useState14 = _slicedToArray(_useState13, 2),
76
- usercodeContent = _useState14[0],
77
- setUsercodeContent = _useState14[1];
78
- var _useState15 = useState(false),
79
- _useState16 = _slicedToArray(_useState15, 2),
80
- isUserChanged = _useState16[0],
81
- setIsUserChanged = _useState16[1];
82
- var _useState17 = useState(false),
83
- _useState18 = _slicedToArray(_useState17, 2),
84
- isFile = _useState18[0],
85
- setIsFile = _useState18[1];
86
- var _useState19 = useState(false),
87
- _useState20 = _slicedToArray(_useState19, 2),
88
- isFileReady = _useState20[0],
89
- setIsFileReady = _useState20[1];
90
- var selectedFileUrl = useMaterialExerciseFileUrl({
29
+ const AsyncFileTree = React.lazy(() => import('../../shared/file-tree/FileTree.js'));
30
+ const AsyncFileTreeList = React.lazy(() => import('../../shared/file-tree/FileTreeList.js'));
31
+ const AsyncFileViewer = React.lazy(() => import('../../shared/file-viewer/FileViewer.js'));
32
+ const ExerciseSubmitHistory = ({
33
+ onHide
34
+ }) => {
35
+ const COUNT = 100;
36
+ const intl = useIntl();
37
+ const {
38
+ materialExerciseId,
39
+ exerciseRoomId,
40
+ exerciseRoomUserId
41
+ } = React.useContext(ExerciseContext);
42
+ const exercise = useRecoilValue(exerciseState(materialExerciseId));
43
+ const preference = useRecoilValue(exerciseEditorPreferenceState);
44
+ const [runningList, setRunningList] = useState([]);
45
+ const [selectedRunning, setSelectedRunning] = useState(null);
46
+ const [hasMoreRunning, setMoreRunning] = useState(false);
47
+ const [offset, setOffset] = useState(0);
48
+ const [fileList, setFileList] = useState([]);
49
+ const [selectedFile, setSelectedFile] = useState(null);
50
+ const [usercodeContent, setUsercodeContent] = useState(null);
51
+ const [isUserChanged, setIsUserChanged] = useState(false);
52
+ const [isFile, setIsFile] = useState(false);
53
+ const [isFileReady, setIsFileReady] = useState(false);
54
+ const selectedFileUrl = useMaterialExerciseFileUrl({
91
55
  filename: selectedFile,
92
- exercise: exercise,
93
- exerciseRoomId: exerciseRoomId
56
+ exercise,
57
+ exerciseRoomId
94
58
  });
95
59
  //
96
60
  //
97
61
  //
98
- useEffect(function () {
99
- void _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
100
- var _yield$getOrgMaterial, exerciseRunnings;
101
- return _regeneratorRuntime().wrap(function _callee$(_context) {
102
- while (1) switch (_context.prev = _context.next) {
103
- case 0:
104
- _context.prev = 0;
105
- _context.next = 3;
106
- return getOrgMaterialExerciseExerciseRunningList({
107
- materialExerciseId: materialExerciseId,
108
- userId: exerciseRoomUserId,
109
- offset: offset,
110
- count: COUNT
111
- });
112
- case 3:
113
- _yield$getOrgMaterial = _context.sent;
114
- exerciseRunnings = _yield$getOrgMaterial.exerciseRunnings;
115
- setRunningList(function (runningList) {
116
- if (runningList.length === 0 && exerciseRunnings[0]) {
117
- setSelectedRunning(exerciseRunnings[0]);
118
- }
119
- return [].concat(_toConsumableArray(runningList), _toConsumableArray(exerciseRunnings));
120
- });
121
- setMoreRunning(exerciseRunnings.length === COUNT);
122
- _context.next = 11;
123
- break;
124
- case 9:
125
- _context.prev = 9;
126
- _context.t0 = _context["catch"](0);
127
- case 11:
128
- case "end":
129
- return _context.stop();
130
- }
131
- }, _callee, null, [[0, 9]]);
132
- }))();
62
+ useEffect(() => {
63
+ void (async () => {
64
+ try {
65
+ const {
66
+ exerciseRunnings
67
+ } = await getOrgMaterialExerciseExerciseRunningList({
68
+ materialExerciseId,
69
+ userId: exerciseRoomUserId,
70
+ offset,
71
+ count: COUNT
72
+ });
73
+ setRunningList(runningList => {
74
+ if (runningList.length === 0 && exerciseRunnings[0]) {
75
+ setSelectedRunning(exerciseRunnings[0]);
76
+ }
77
+ return [...runningList, ...exerciseRunnings];
78
+ });
79
+ setMoreRunning(exerciseRunnings.length === COUNT);
80
+ } catch (err) {}
81
+ })();
133
82
  }, [materialExerciseId, exerciseRoomUserId, offset]);
134
83
  //
135
84
  // When id of selected running is updated,
136
85
  // Get exercise running data and filelist.
137
86
  //
138
- useEffect(function () {
139
- void _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
140
- var _a, _b, _c, _d, _e, _yield$getOrgMaterial2, exerciseRunning, languages, environment, languagesResponse, response, rootDir, initialOpenFilelist;
141
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
142
- while (1) switch (_context2.prev = _context2.next) {
143
- case 0:
144
- if (selectedRunning) {
145
- _context2.next = 2;
146
- break;
147
- }
148
- return _context2.abrupt("return");
149
- case 2:
150
- _context2.prev = 2;
151
- _context2.next = 5;
152
- return getOrgMaterialExerciseExerciseRunningGet({
153
- exerciseRunningId: selectedRunning.id,
154
- returnFilelist: true,
155
- returnUsercodeFilelist: true
156
- });
157
- case 5:
158
- _yield$getOrgMaterial2 = _context2.sent;
159
- exerciseRunning = _yield$getOrgMaterial2.exerciseRunning;
160
- setSelectedRunning(exerciseRunning);
161
- if (!((exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.MultiLanguage)) {
162
- _context2.next = 35;
163
- break;
164
- }
165
- _context2.prev = 9;
166
- _context2.next = 12;
167
- return getOrgMaterialExerciseExerciseImageExerciseFileGet({
87
+ useEffect(() => {
88
+ void (async () => {
89
+ var _a, _b, _c, _d, _e;
90
+ if (!selectedRunning) {
91
+ return;
92
+ }
93
+ try {
94
+ const {
95
+ exerciseRunning
96
+ } = await getOrgMaterialExerciseExerciseRunningGet({
97
+ exerciseRunningId: selectedRunning.id,
98
+ returnFilelist: true,
99
+ returnUsercodeFilelist: true
100
+ });
101
+ setSelectedRunning(exerciseRunning);
102
+ if ((exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.MultiLanguage) {
103
+ let languages, environment;
104
+ try {
105
+ const languagesResponse = await getOrgMaterialExerciseExerciseImageExerciseFileGet({
168
106
  exerciseImageId: exerciseRunning.exerciseImage.id,
169
107
  filename: '.languages.json'
170
108
  });
171
- case 12:
172
- languagesResponse = _context2.sent;
173
109
  languages = camelizeKeys(JSON.parse(languagesResponse.exerciseFile.content));
174
- _context2.next = 19;
175
- break;
176
- case 16:
177
- _context2.prev = 16;
178
- _context2.t0 = _context2["catch"](9);
179
- console.error(_context2.t0);
180
- case 19:
181
- _context2.prev = 19;
182
- _context2.next = 22;
183
- return getOrgMaterialExerciseExerciseRoomUserFileGet({
110
+ } catch (e) {
111
+ console.error(e);
112
+ }
113
+ try {
114
+ const response = await getOrgMaterialExerciseExerciseRoomUserFileGet({
184
115
  filename: '.environment.json',
185
- exerciseRoomId: exerciseRoomId,
116
+ exerciseRoomId,
186
117
  targetDatetime: exerciseRunning.createdDatetime
187
118
  });
188
- case 22:
189
- response = _context2.sent;
190
119
  environment = camelizeKeys(JSON.parse(response.userFile.content));
191
- _context2.next = 29;
192
- break;
193
- case 26:
194
- _context2.prev = 26;
195
- _context2.t1 = _context2["catch"](19);
120
+ } catch (e) {
196
121
  // API returns error when the user hasn't changed the language
197
122
  if (languages && Object.keys(languages).length > 0) {
198
123
  environment = {
199
124
  language: Object.keys(languages)[0]
200
125
  };
201
126
  }
202
- case 29:
203
- rootDir = languages[environment.language].rootDir;
204
- 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;
205
- setFileList([].concat(_toConsumableArray((_b = exerciseRunning.exerciseImage.filelist) !== null && _b !== void 0 ? _b : []), _toConsumableArray((_c = exerciseRunning.exerciseRoom.filelist) !== null && _c !== void 0 ? _c : [])).filter(function (filepath) {
206
- return filepath.startsWith(rootDir);
207
- }));
208
- if ((initialOpenFilelist === null || initialOpenFilelist === void 0 ? void 0 : initialOpenFilelist.length) > 0) {
209
- setSelectedFile(initialOpenFilelist[0]);
210
- }
211
- _context2.next = 37;
212
- break;
213
- case 35:
214
- setFileList([].concat(_toConsumableArray((_d = exerciseRunning.exerciseImage.filelist) !== null && _d !== void 0 ? _d : []), _toConsumableArray((_e = exerciseRunning.exerciseRoom.filelist) !== null && _e !== void 0 ? _e : [])));
215
- if (exerciseRunning.exerciseImage.taskFilelist && exerciseRunning.exerciseImage.taskFilelist.length > 0) {
216
- setSelectedFile(exerciseRunning.exerciseImage.taskFilelist[0]);
217
- }
218
- case 37:
219
- _context2.next = 42;
220
- break;
221
- case 39:
222
- _context2.prev = 39;
223
- _context2.t2 = _context2["catch"](2);
224
- console.error(_context2.t2);
225
- case 42:
226
- case "end":
227
- return _context2.stop();
127
+ }
128
+ const rootDir = languages[environment.language].rootDir;
129
+ 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;
130
+ setFileList([...((_b = exerciseRunning.exerciseImage.filelist) !== null && _b !== void 0 ? _b : []), ...((_c = exerciseRunning.exerciseRoom.filelist) !== null && _c !== void 0 ? _c : [])].filter(filepath => filepath.startsWith(rootDir)));
131
+ if ((initialOpenFilelist === null || initialOpenFilelist === void 0 ? void 0 : initialOpenFilelist.length) > 0) {
132
+ setSelectedFile(initialOpenFilelist[0]);
133
+ }
134
+ } else {
135
+ setFileList([...((_d = exerciseRunning.exerciseImage.filelist) !== null && _d !== void 0 ? _d : []), ...((_e = exerciseRunning.exerciseRoom.filelist) !== null && _e !== void 0 ? _e : [])]);
136
+ if (exerciseRunning.exerciseImage.taskFilelist && exerciseRunning.exerciseImage.taskFilelist.length > 0) {
137
+ setSelectedFile(exerciseRunning.exerciseImage.taskFilelist[0]);
138
+ }
228
139
  }
229
- }, _callee2, null, [[2, 39], [9, 16], [19, 26]]);
230
- }))();
140
+ } catch (err) {
141
+ console.error(err);
142
+ }
143
+ })();
231
144
  // eslint-disable-next-line react-hooks/exhaustive-deps
232
145
  }, [selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.id]);
233
146
  //
234
147
  // When selectedFile or selectedRunning is updated,
235
148
  // Get usercode of selected file.
236
149
  //
237
- useEffect(function () {
238
- void _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
239
- var _yield$getOrgMaterial3, usercode, _yield$getOrgMaterial4, exerciseFile;
240
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
241
- while (1) switch (_context3.prev = _context3.next) {
242
- case 0:
243
- setIsFileReady(false);
244
- if (!(!(selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.exerciseImage) || !selectedFile || !exerciseRoomId)) {
245
- _context3.next = 3;
246
- break;
247
- }
248
- return _context3.abrupt("return");
249
- case 3:
250
- _context3.next = 5;
251
- return getOrgMaterialExerciseUsercodeGet({
252
- filename: selectedFile,
253
- exerciseRoomId: selectedRunning.exerciseRoom.id,
254
- targetDatetime: selectedRunning.createdDatetime
255
- });
256
- case 5:
257
- _yield$getOrgMaterial3 = _context3.sent;
258
- usercode = _yield$getOrgMaterial3.usercode;
259
- if (!((usercode === null || usercode === void 0 ? void 0 : usercode.content) !== null && (usercode === null || usercode === void 0 ? void 0 : usercode.content) !== undefined)) {
260
- _context3.next = 14;
261
- break;
262
- }
263
- setIsUserChanged(true);
150
+ useEffect(() => {
151
+ void (async () => {
152
+ setIsFileReady(false);
153
+ if (!(selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.exerciseImage) || !selectedFile || !exerciseRoomId) {
154
+ return;
155
+ }
156
+ const {
157
+ usercode
158
+ } = await getOrgMaterialExerciseUsercodeGet({
159
+ filename: selectedFile,
160
+ exerciseRoomId: selectedRunning.exerciseRoom.id,
161
+ targetDatetime: selectedRunning.createdDatetime
162
+ });
163
+ if ((usercode === null || usercode === void 0 ? void 0 : usercode.content) !== null && (usercode === null || usercode === void 0 ? void 0 : usercode.content) !== undefined) {
164
+ setIsUserChanged(true);
165
+ setIsFile(false);
166
+ setUsercodeContent(usercode.content);
167
+ setIsFileReady(true);
168
+ } else {
169
+ try {
170
+ const {
171
+ exerciseFile
172
+ } = await getOrgMaterialExerciseExerciseImageExerciseFileGet({
173
+ exerciseImageId: selectedRunning.exerciseImage.id,
174
+ filename: selectedFile
175
+ });
176
+ if ((exerciseFile === null || exerciseFile === void 0 ? void 0 : exerciseFile.content) !== null && (exerciseFile === null || exerciseFile === void 0 ? void 0 : exerciseFile.content) !== undefined) {
177
+ setIsUserChanged(false);
264
178
  setIsFile(false);
265
- setUsercodeContent(usercode.content);
179
+ setUsercodeContent(exerciseFile.content);
266
180
  setIsFileReady(true);
267
- _context3.next = 27;
268
- break;
269
- case 14:
270
- _context3.prev = 14;
271
- _context3.next = 17;
272
- return getOrgMaterialExerciseExerciseImageExerciseFileGet({
273
- exerciseImageId: selectedRunning.exerciseImage.id,
274
- filename: selectedFile
275
- });
276
- case 17:
277
- _yield$getOrgMaterial4 = _context3.sent;
278
- exerciseFile = _yield$getOrgMaterial4.exerciseFile;
279
- if ((exerciseFile === null || exerciseFile === void 0 ? void 0 : exerciseFile.content) !== null && (exerciseFile === null || exerciseFile === void 0 ? void 0 : exerciseFile.content) !== undefined) {
280
- setIsUserChanged(false);
281
- setIsFile(false);
282
- setUsercodeContent(exerciseFile.content);
283
- setIsFileReady(true);
284
- } else {
285
- setIsUserChanged(false);
286
- setIsFile(true);
287
- setIsFileReady(true);
288
- }
289
- _context3.next = 27;
290
- break;
291
- case 22:
292
- _context3.prev = 22;
293
- _context3.t0 = _context3["catch"](14);
181
+ } else {
294
182
  setIsUserChanged(false);
295
183
  setIsFile(true);
296
184
  setIsFileReady(true);
297
- case 27:
298
- case "end":
299
- return _context3.stop();
185
+ }
186
+ } catch (_a) {
187
+ setIsUserChanged(false);
188
+ setIsFile(true);
189
+ setIsFileReady(true);
300
190
  }
301
- }, _callee3, null, [[14, 22]]);
302
- }))();
191
+ }
192
+ })();
303
193
  }, [selectedFile, exerciseRoomId, selectedRunning]);
304
194
  /**
305
195
  *
306
196
  */
307
- var renderRunningVersionList = function renderRunningVersionList() {
308
- return React.createElement(ExerciseVersionList, null, runningList.map(function (exerciseRunning) {
197
+ const renderRunningVersionList = () => {
198
+ return React.createElement(ExerciseVersionList, null, runningList.map(exerciseRunning => {
309
199
  return React.createElement(ExerciseVersionListItem, {
310
200
  key: exerciseRunning.id,
311
201
  selected: Boolean(selectedRunning && selectedRunning.id === exerciseRunning.id),
312
- onClick: function onClick() {
202
+ onClick: () => {
313
203
  setSelectedRunning(exerciseRunning);
314
204
  }
315
205
  }, React.createElement(StyledExerciseVersionRunType, {
@@ -327,11 +217,7 @@ var ExerciseSubmitHistory = function ExerciseSubmitHistory(_ref) {
327
217
  size: "small"
328
218
  }, exerciseRunning.score));
329
219
  }), hasMoreRunning ? React.createElement(ExerciseVersionListItem, {
330
- onClick: function onClick() {
331
- return setOffset(function (prevOffset) {
332
- return prevOffset + COUNT;
333
- });
334
- }
220
+ onClick: () => setOffset(prevOffset => prevOffset + COUNT)
335
221
  }, React.createElement(Flex, {
336
222
  align: "center",
337
223
  justify: "center",
@@ -345,7 +231,7 @@ var ExerciseSubmitHistory = function ExerciseSubmitHistory(_ref) {
345
231
  /**
346
232
  *
347
233
  */
348
- var renderRunningOutput = function renderRunningOutput() {
234
+ const renderRunningOutput = () => {
349
235
  if (!selectedRunning) {
350
236
  return null;
351
237
  }
@@ -356,14 +242,14 @@ var ExerciseSubmitHistory = function ExerciseSubmitHistory(_ref) {
356
242
  /**
357
243
  *
358
244
  */
359
- var renderRunningContent = function renderRunningContent() {
245
+ const renderRunningContent = () => {
360
246
  var _a;
361
247
  if (!selectedFile) {
362
248
  return null;
363
249
  }
364
- var runningId = Number((_a = selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.id) !== null && _a !== void 0 ? _a : 0);
365
- var uniqueFilePath = "submit-history/".concat(exerciseRoomId, "/r").concat(runningId);
366
- var editorFilename = "".concat(uniqueFilePath, "/").concat(selectedFile);
250
+ const runningId = Number((_a = selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.id) !== null && _a !== void 0 ? _a : 0);
251
+ const uniqueFilePath = `submit-history/${exerciseRoomId}/r${runningId}`;
252
+ const editorFilename = `${uniqueFilePath}/${selectedFile}`;
367
253
  return React.createElement(Flex, {
368
254
  width: "100%",
369
255
  auto: true,
@@ -378,8 +264,7 @@ var ExerciseSubmitHistory = function ExerciseSubmitHistory(_ref) {
378
264
  activePath: selectedFile,
379
265
  exerciseRoomFilelist: fileList,
380
266
  imageFilelist: [],
381
- onActivePathChange: function onActivePathChange(path) {
382
- var isDirectory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
267
+ onActivePathChange: (path, isDirectory = false) => {
383
268
  if (isDirectory) {
384
269
  return;
385
270
  }
@@ -2,28 +2,28 @@ import { Flex } from '@elice/blocks';
2
2
  import { base } from '@elice/design-tokens';
3
3
  import styled from 'styled-components';
4
4
 
5
- var StyledFileTreeWrapper = styled.div.withConfig({
5
+ const StyledFileTreeWrapper = styled.div.withConfig({
6
6
  componentId: "sc-uooiby-0"
7
7
  })(["overflow:auto;width:100%;height:100%;background-color:", ";"], base.color.navy9);
8
- var StyledExerciseSubmitHistoryEditorWrapper = styled(Flex).withConfig({
8
+ const StyledExerciseSubmitHistoryEditorWrapper = styled(Flex).withConfig({
9
9
  componentId: "sc-uooiby-1"
10
10
  })(["position:relative;flex-direction:column;flex:1 1 0%;width:100%;overflow:hidden;"]);
11
- var StyledExerciseSubmitHistoryNotChanged = styled.div.withConfig({
11
+ const StyledExerciseSubmitHistoryNotChanged = styled.div.withConfig({
12
12
  componentId: "sc-uooiby-2"
13
13
  })(["background-color:", ";padding:0.5rem;"], base.color.navy7);
14
- var StyledExerciseSubmitHistoryEditorLoadingScreen = styled(Flex).withConfig({
14
+ const StyledExerciseSubmitHistoryEditorLoadingScreen = styled(Flex).withConfig({
15
15
  componentId: "sc-uooiby-3"
16
16
  })(["position:absolute;top:0;left:0;right:0;bottom:0;background-color:", ";align-items:center;justify-content:center;"], base.color.navy9);
17
- var StyledExerciseSubmitHistoryOutputText = styled.span.withConfig({
17
+ const StyledExerciseSubmitHistoryOutputText = styled.span.withConfig({
18
18
  componentId: "sc-uooiby-4"
19
19
  })(["white-space:pre-wrap;color:", ";font-size:0.875rem;line-height:1.5rem;&.grader{color:", ";}&.info{color:", ";display:block;}&.file{display:block;color:", ";cursor:pointer;&:hover{color:", ";}}"], base.color.white, base.color.secondary4, base.color.red8, base.color.secondary4, base.color.white);
20
- var StyledExerciseSubmitHistoryOutput = styled.div.withConfig({
20
+ const StyledExerciseSubmitHistoryOutput = styled.div.withConfig({
21
21
  componentId: "sc-uooiby-5"
22
22
  })(["width:100%;height:100%;overflow:scroll;background-color:black;padding:0.5rem;font-size:14px;font-family:Elice Digital Coding;"]);
23
- var StyledExerciseSubmitHistoryOutputImageLink = styled.a.withConfig({
23
+ const StyledExerciseSubmitHistoryOutputImageLink = styled.a.withConfig({
24
24
  componentId: "sc-uooiby-6"
25
25
  })(["display:block;margin:9.8px 0;padding:0;width:100%;max-width:400px;"]);
26
- var StyledExerciseSubmitHistoryOutputImage = styled.img.withConfig({
26
+ const StyledExerciseSubmitHistoryOutputImage = styled.img.withConfig({
27
27
  componentId: "sc-uooiby-7"
28
28
  })(["display:block;width:100%;"]);
29
29
 
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React from 'react';
3
2
  import { getOrgMaterialExerciseExerciseRunningOutputGet } from '@elice/api-client';
4
3
  import { ResizableNext, Text } from '@elice/blocks';
@@ -6,48 +5,47 @@ import FileSaver from 'file-saver';
6
5
  import { MATERIAL_RESIZABLE_COMMON_PROPS } from '../../../constants/stylesheets.js';
7
6
  import { StyledExerciseSubmitHistoryOutput, StyledExerciseSubmitHistoryOutputText, StyledExerciseSubmitHistoryOutputImageLink, StyledExerciseSubmitHistoryOutputImage } from './ExerciseSubmitHistory.styled.js';
8
7
 
9
- var ExerciseSubmitHistoryOutput = function ExerciseSubmitHistoryOutput(_ref) {
10
- var exerciseRunningId = _ref.exerciseRunningId;
11
- var _React$useState = React.useState([]),
12
- _React$useState2 = _slicedToArray(_React$useState, 2),
13
- runningOutput = _React$useState2[0],
14
- setRunningOutput = _React$useState2[1];
15
- React.useEffect(function () {
8
+ const ExerciseSubmitHistoryOutput = ({
9
+ exerciseRunningId
10
+ }) => {
11
+ const [runningOutput, setRunningOutput] = React.useState([]);
12
+ React.useEffect(() => {
16
13
  if (exerciseRunningId) {
17
14
  getOrgMaterialExerciseExerciseRunningOutputGet({
18
- exerciseRunningId: exerciseRunningId
19
- }).then(function (_ref2) {
20
- var output = _ref2.output;
15
+ exerciseRunningId
16
+ }).then(({
17
+ output
18
+ }) => {
21
19
  setRunningOutput(output);
22
20
  }).catch(console.error);
23
21
  }
24
22
  }, [exerciseRunningId]);
25
- var downloadFile = function downloadFile(fileContent, fileName) {
26
- var byteString = atob(fileContent.split(',')[1]);
27
- var mimeString = fileContent.split(',')[0].split(':')[1].split(';')[0];
28
- var ab = new ArrayBuffer(byteString.length);
29
- var ia = new Uint8Array(ab);
30
- for (var i = 0; i < byteString.length; i++) {
23
+ const downloadFile = (fileContent, fileName) => {
24
+ const byteString = atob(fileContent.split(',')[1]);
25
+ const mimeString = fileContent.split(',')[0].split(':')[1].split(';')[0];
26
+ const ab = new ArrayBuffer(byteString.length);
27
+ const ia = new Uint8Array(ab);
28
+ for (let i = 0; i < byteString.length; i++) {
31
29
  ia[i] = byteString.charCodeAt(i);
32
30
  }
33
- var blob = new Blob([ab], {
31
+ const blob = new Blob([ab], {
34
32
  type: mimeString
35
33
  });
36
34
  FileSaver.saveAs(blob, fileName);
37
35
  };
38
- var openImageWithNewTab = function openImageWithNewTab(imgSrc) {
39
- var materialImageTab = window.open('about:blank', '_blank');
40
- materialImageTab === null || materialImageTab === void 0 ? void 0 : materialImageTab.document.write("<img src=".concat(imgSrc, " />"));
36
+ const openImageWithNewTab = imgSrc => {
37
+ const materialImageTab = window.open('about:blank', '_blank');
38
+ materialImageTab === null || materialImageTab === void 0 ? void 0 : materialImageTab.document.write(`<img src=${imgSrc} />`);
41
39
  materialImageTab === null || materialImageTab === void 0 ? void 0 : materialImageTab.focus();
42
40
  };
43
- var renderContent = function renderContent() {
41
+ const renderContent = () => {
44
42
  if (runningOutput.length === 0) {
45
43
  return React.createElement(Text, {
46
44
  size: "small",
47
45
  role: "white"
48
46
  }, "\uCD9C\uB825 \uC5C6\uC74C");
49
47
  }
50
- var getOutputContent = function getOutputContent(output) {
48
+ const getOutputContent = output => {
51
49
  switch (output.type) {
52
50
  case 'text':
53
51
  case 'echo':
@@ -62,28 +60,24 @@ var ExerciseSubmitHistoryOutput = function ExerciseSubmitHistoryOutput(_ref) {
62
60
  }, output.data);
63
61
  case 'image':
64
62
  return React.createElement(StyledExerciseSubmitHistoryOutputImageLink, {
65
- onClick: function onClick() {
66
- return openImageWithNewTab(output.data);
67
- }
63
+ onClick: () => openImageWithNewTab(output.data)
68
64
  }, React.createElement(StyledExerciseSubmitHistoryOutputImage, {
69
65
  src: output.data,
70
66
  alt: "material-exercise-ouput"
71
67
  }));
72
68
  case 'file':
73
- var fileName = output.data.split(';')[0];
69
+ const fileName = output.data.split(';')[0];
74
70
  // const fileContent = output.data.substring(fileName.length + 1);
75
- var fileContent = 'asdf';
71
+ const fileContent = 'asdf';
76
72
  return React.createElement(StyledExerciseSubmitHistoryOutputText, {
77
73
  className: "file",
78
- onClick: function onClick() {
79
- return downloadFile(fileContent, fileName);
80
- }
81
- }, "Download ".concat(fileName));
74
+ onClick: () => downloadFile(fileContent, fileName)
75
+ }, `Download ${fileName}`);
82
76
  case 'html':
83
- var encodedData = encodeURI(output.data);
77
+ const encodedData = encodeURI(output.data);
84
78
  return React.createElement("iframe", {
85
79
  title: "mat-exec-output",
86
- src: "data:text/html;charset=utf-8,".concat(encodedData)
80
+ src: `data:text/html;charset=utf-8,${encodedData}`
87
81
  });
88
82
  case 'screen':
89
83
  case 'score':
@@ -92,9 +86,7 @@ var ExerciseSubmitHistoryOutput = function ExerciseSubmitHistoryOutput(_ref) {
92
86
  return null;
93
87
  }
94
88
  };
95
- return runningOutput.map(function (item) {
96
- return getOutputContent(item);
97
- });
89
+ return runningOutput.map(item => getOutputContent(item));
98
90
  };
99
91
  return React.createElement(ResizableNext, Object.assign({}, MATERIAL_RESIZABLE_COMMON_PROPS, {
100
92
  initialHeight: 200,