@elice/material-exercise 1.230328.0 → 1.230418.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 (369) hide show
  1. package/cjs/_virtual/_rollupPluginBabelHelpers.js +526 -0
  2. package/cjs/components/material-exercise/MaterialExercise.js +44 -63
  3. package/cjs/components/material-exercise/MaterialExercise.styled.js +20 -23
  4. package/cjs/components/material-exercise/MaterialExerciseMobile.js +19 -15
  5. package/cjs/components/material-exercise/context/ExerciseIntlProvider.js +9 -13
  6. package/cjs/components/material-exercise/context/ExerciseProvider.js +83 -81
  7. package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +16 -16
  8. package/cjs/components/material-exercise/context/context.js +1 -1
  9. package/cjs/components/material-exercise/context/locales/noImage.en.json.js +3 -1
  10. package/cjs/components/material-exercise/context/locales/noImage.ko.json.js +3 -1
  11. package/cjs/components/material-exercise/context/recoil.js +559 -371
  12. package/cjs/components/material-exercise/context/recoilTypes.js +0 -5
  13. package/cjs/components/material-exercise/context/subjects.js +3 -6
  14. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.d.ts +2 -2
  15. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +78 -65
  16. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
  17. package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +7 -0
  18. package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +7 -0
  19. package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +20 -21
  20. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +225 -198
  21. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -10
  22. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +35 -32
  23. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +57 -48
  24. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +6 -4
  25. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +3 -1
  26. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +3 -1
  27. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +327 -231
  28. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +6 -4
  29. package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +3 -1
  30. package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +3 -1
  31. package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +17 -17
  32. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +13 -14
  33. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +6 -6
  34. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +47 -38
  35. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +60 -42
  36. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +29 -22
  37. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +45 -56
  38. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
  39. package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +3 -1
  40. package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +3 -1
  41. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +28 -20
  42. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +5 -3
  43. package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +30 -41
  44. package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +17 -12
  45. package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +3 -1
  46. package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +3 -1
  47. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +24 -33
  48. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +13 -8
  49. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +84 -83
  50. package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +3 -1
  51. package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +3 -1
  52. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +20 -12
  53. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +14 -12
  54. package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +239 -147
  55. package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +92 -63
  56. package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -8
  57. package/cjs/components/material-exercise/exercise-room/locales/en.json.js +3 -1
  58. package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +3 -1
  59. package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +219 -220
  60. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
  61. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -13
  62. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +30 -26
  63. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +26 -26
  64. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +70 -95
  65. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +27 -27
  66. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +54 -60
  67. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +5 -5
  68. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +10 -13
  69. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +29 -26
  70. package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +3 -1
  71. package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +3 -1
  72. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.d.ts +2 -2
  73. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +290 -180
  74. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
  75. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -45
  76. package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +7 -0
  77. package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +7 -0
  78. package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +19 -17
  79. package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +5 -4
  80. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +15 -14
  81. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +7 -6
  82. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +17 -16
  83. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +18 -11
  84. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -4
  85. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
  86. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -7
  87. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +9 -5
  88. package/cjs/components/shared/file-icon/FileIcon.js +23 -23
  89. package/cjs/components/shared/file-tabs/FileTab.js +32 -43
  90. package/cjs/components/shared/file-tabs/FileTab.styled.js +26 -22
  91. package/cjs/components/shared/file-tabs/FileTabs.js +55 -49
  92. package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -2
  93. package/cjs/components/shared/file-tabs/util.js +29 -18
  94. package/cjs/components/shared/file-tree/FileTree.js +11 -11
  95. package/cjs/components/shared/file-tree/FileTreeConfig.js +24 -23
  96. package/cjs/components/shared/file-tree/FileTreeList.js +35 -41
  97. package/cjs/components/shared/file-tree/FileTreeListItemContent.js +75 -91
  98. package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +29 -40
  99. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +77 -101
  100. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
  101. package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +51 -86
  102. package/cjs/components/shared/file-tree/FileTreeListItems.js +150 -153
  103. package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
  104. package/cjs/components/shared/file-tree/FileTreeToolbar.js +30 -41
  105. package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
  106. package/cjs/components/shared/file-tree/context/FileTreeContext.js +91 -97
  107. package/cjs/components/shared/file-tree/locales/en.json.js +3 -1
  108. package/cjs/components/shared/file-tree/locales/ko.json.js +3 -1
  109. package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -22
  110. package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +193 -173
  111. package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -1
  112. package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -1
  113. package/cjs/components/shared/file-tree/utils/fileTreePath.js +5 -7
  114. package/cjs/components/shared/file-viewer/FileViewer.js +59 -60
  115. package/cjs/components/shared/file-viewer/FileViewerCsv.js +145 -101
  116. package/cjs/components/shared/file-viewer/FileViewerImage.js +7 -8
  117. package/cjs/components/shared/file-viewer/FileViewerIpynb.js +20 -14
  118. package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +28 -34
  119. package/cjs/components/shared/file-viewer/FileViewerText.js +23 -16
  120. package/cjs/components/shared/file-viewer/locales/en.json.js +3 -1
  121. package/cjs/components/shared/file-viewer/locales/ko.json.js +3 -1
  122. package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +3 -1
  123. package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +3 -1
  124. package/cjs/components/shared/material-modal/MaterialModal.js +10 -12
  125. package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -5
  126. package/cjs/components/shared/monaco-editor/MonacoEditor.js +123 -149
  127. package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +10 -8
  128. package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +49 -58
  129. package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +78 -85
  130. package/cjs/components/shared/monaco-editor/constants/grammars/index.js +131 -52
  131. package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -9
  132. package/cjs/components/shared/monaco-editor/constants/themes/index.js +80 -32
  133. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
  134. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -18
  135. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
  136. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +54 -72
  137. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +14 -15
  138. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +8 -9
  139. package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +36 -12
  140. package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +5 -8
  141. package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +36 -12
  142. package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +3 -6
  143. package/cjs/components/shared/monaco-editor/editor-languages/index.js +3 -1
  144. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
  145. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +3 -2
  146. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +3 -2
  147. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +3 -2
  148. package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +36 -12
  149. package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +18 -24
  150. package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +12 -9
  151. package/cjs/components/shared/monaco-editor/locales/en.json.js +3 -1
  152. package/cjs/components/shared/monaco-editor/locales/ko.json.js +3 -1
  153. package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +18 -28
  154. package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -3
  155. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +12 -8
  156. package/cjs/components/shared/monaco-editor/utils/grammar/index.js +70 -32
  157. package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +25 -7
  158. package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +67 -43
  159. package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +9 -19
  160. package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +6 -5
  161. package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -3
  162. package/cjs/components/shared/monaco-editor/utils/prettier/index.js +30 -9
  163. package/cjs/components/shared/monaco-editor/utils/theme/convert.js +20 -26
  164. package/cjs/components/shared/monaco-editor/utils/theme/index.js +22 -5
  165. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +77 -75
  166. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +82 -93
  167. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +125 -135
  168. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +148 -160
  169. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +104 -118
  170. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
  171. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +1 -3
  172. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -3
  173. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +218 -329
  174. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -6
  175. package/cjs/components/shared/no-vnc/NoVnc.js +93 -90
  176. package/cjs/components/shared/no-vnc/NoVncLazy.js +7 -5
  177. package/cjs/components/shared/preview-container/PreviewContainer.js +7 -10
  178. package/cjs/components/shared/web-browser/WebBrowser.js +54 -59
  179. package/cjs/components/shared/xterm/Xterm.js +112 -105
  180. package/cjs/components/shared/xterm/XtermLazy.js +7 -5
  181. package/cjs/components/shared/xterm/locales/en.json.js +3 -1
  182. package/cjs/components/shared/xterm/locales/ko.json.js +3 -1
  183. package/cjs/constants/arduino.js +10 -10
  184. package/cjs/constants/shortcutKeyMap.js +5 -5
  185. package/cjs/constants/stylesheets.js +7 -10
  186. package/cjs/hooks/useArduino.js +327 -255
  187. package/cjs/hooks/useExerciseFile.js +24 -24
  188. package/cjs/hooks/useExericseShortcut.js +6 -5
  189. package/cjs/hooks/useMaterialExerciseFileUrl.js +54 -37
  190. package/cjs/hooks/useRunnerRoomWebSocket.js +58 -56
  191. package/cjs/hooks/useStdioTextConcator.js +18 -12
  192. package/cjs/hooks/useStdioWebSocket.js +41 -67
  193. package/cjs/hooks/useUsercodeEditWebSocket.js +230 -252
  194. package/cjs/hooks/useUsercodeHistory.js +121 -82
  195. package/cjs/index.js +4 -4
  196. package/cjs/utils/arduino.js +23 -25
  197. package/cjs/utils/exerciseFile.js +8 -16
  198. package/cjs/utils/runner.js +29 -25
  199. package/es/_virtual/_rollupPluginBabelHelpers.js +504 -0
  200. package/es/components/material-exercise/MaterialExercise.js +33 -54
  201. package/es/components/material-exercise/MaterialExercise.styled.js +20 -23
  202. package/es/components/material-exercise/MaterialExerciseMobile.js +15 -13
  203. package/es/components/material-exercise/context/ExerciseIntlProvider.js +9 -13
  204. package/es/components/material-exercise/context/ExerciseProvider.js +79 -79
  205. package/es/components/material-exercise/context/ExerciseProviderNoImage.js +11 -13
  206. package/es/components/material-exercise/context/context.js +1 -1
  207. package/es/components/material-exercise/context/recoil.js +560 -372
  208. package/es/components/material-exercise/context/recoilTypes.js +0 -5
  209. package/es/components/material-exercise/context/subjects.js +3 -6
  210. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.d.ts +2 -2
  211. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +73 -62
  212. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
  213. package/es/components/material-exercise/exercise-code-history/locales/en.json.js +3 -0
  214. package/es/components/material-exercise/exercise-code-history/locales/ko.json.js +3 -0
  215. package/es/components/material-exercise/exercise-file/ExerciseFile.js +15 -18
  216. package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +218 -193
  217. package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -9
  218. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +31 -28
  219. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +52 -45
  220. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
  221. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +321 -225
  222. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
  223. package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +12 -14
  224. package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -10
  225. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -5
  226. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +43 -36
  227. package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +53 -37
  228. package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +25 -20
  229. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +41 -54
  230. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
  231. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +25 -19
  232. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
  233. package/es/components/material-exercise/exercise-preview/ExercisePreview.js +21 -34
  234. package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +13 -10
  235. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +17 -28
  236. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +9 -6
  237. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +81 -82
  238. package/es/components/material-exercise/exercise-room/ExerciseRoom.js +13 -7
  239. package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +14 -12
  240. package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +236 -146
  241. package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +90 -63
  242. package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -8
  243. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +212 -215
  244. package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
  245. package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +7 -9
  246. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +27 -25
  247. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +22 -24
  248. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +66 -93
  249. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +24 -26
  250. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +51 -59
  251. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -4
  252. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +6 -11
  253. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +26 -25
  254. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.d.ts +2 -2
  255. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +284 -174
  256. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
  257. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +38 -44
  258. package/es/components/material-exercise/exercise-submit-history/locales/en.json.js +3 -0
  259. package/es/components/material-exercise/exercise-submit-history/locales/ko.json.js +3 -0
  260. package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +16 -16
  261. package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -3
  262. package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -13
  263. package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -3
  264. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -15
  265. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +15 -10
  266. package/es/components/shared/exercise-version-list/ExerciseVersionList.js +2 -3
  267. package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
  268. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +5 -6
  269. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +9 -5
  270. package/es/components/shared/file-icon/FileIcon.js +20 -22
  271. package/es/components/shared/file-tabs/FileTab.js +28 -41
  272. package/es/components/shared/file-tabs/FileTab.styled.js +26 -22
  273. package/es/components/shared/file-tabs/FileTabs.js +52 -48
  274. package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
  275. package/es/components/shared/file-tabs/util.js +29 -18
  276. package/es/components/shared/file-tree/FileTree.js +3 -5
  277. package/es/components/shared/file-tree/FileTreeConfig.js +21 -22
  278. package/es/components/shared/file-tree/FileTreeList.js +31 -39
  279. package/es/components/shared/file-tree/FileTreeListItemContent.js +67 -85
  280. package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +29 -40
  281. package/es/components/shared/file-tree/FileTreeListItemContentInput.js +74 -100
  282. package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
  283. package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +48 -85
  284. package/es/components/shared/file-tree/FileTreeListItems.js +147 -152
  285. package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
  286. package/es/components/shared/file-tree/FileTreeToolbar.js +24 -37
  287. package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
  288. package/es/components/shared/file-tree/context/FileTreeContext.js +91 -97
  289. package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -22
  290. package/es/components/shared/file-tree/utils/fileTreeGenerator.js +193 -173
  291. package/es/components/shared/file-tree/utils/fileTreeInput.js +0 -1
  292. package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
  293. package/es/components/shared/file-tree/utils/fileTreePath.js +5 -7
  294. package/es/components/shared/file-viewer/FileViewer.js +52 -53
  295. package/es/components/shared/file-viewer/FileViewerCsv.js +141 -99
  296. package/es/components/shared/file-viewer/FileViewerImage.js +3 -6
  297. package/es/components/shared/file-viewer/FileViewerIpynb.js +16 -12
  298. package/es/components/shared/file-viewer/FileViewerNonViewable.js +22 -30
  299. package/es/components/shared/file-viewer/FileViewerText.js +18 -13
  300. package/es/components/shared/material-modal/MaterialModal.js +7 -11
  301. package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
  302. package/es/components/shared/monaco-editor/MonacoEditor.js +119 -147
  303. package/es/components/shared/monaco-editor/MonacoEditorLazy.js +6 -4
  304. package/es/components/shared/monaco-editor/MonacoEditorMobile.js +45 -56
  305. package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +73 -82
  306. package/es/components/shared/monaco-editor/constants/grammars/index.js +131 -52
  307. package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -9
  308. package/es/components/shared/monaco-editor/constants/themes/index.js +80 -32
  309. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
  310. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -18
  311. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
  312. package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +54 -72
  313. package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +14 -15
  314. package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +8 -9
  315. package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +33 -11
  316. package/es/components/shared/monaco-editor/editor-languages/css/index.js +2 -5
  317. package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +33 -11
  318. package/es/components/shared/monaco-editor/editor-languages/html/index.js +2 -5
  319. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
  320. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +0 -1
  321. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +0 -1
  322. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +0 -1
  323. package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +33 -11
  324. package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +10 -16
  325. package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +12 -9
  326. package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +18 -28
  327. package/es/components/shared/monaco-editor/utils/emmet/emmet.js +0 -3
  328. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +12 -8
  329. package/es/components/shared/monaco-editor/utils/grammar/index.js +67 -31
  330. package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +25 -7
  331. package/es/components/shared/monaco-editor/utils/grammar/textmate.js +67 -43
  332. package/es/components/shared/monaco-editor/utils/monacoLanguage.js +9 -19
  333. package/es/components/shared/monaco-editor/utils/monacoPreference.js +6 -5
  334. package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -3
  335. package/es/components/shared/monaco-editor/utils/prettier/index.js +27 -8
  336. package/es/components/shared/monaco-editor/utils/theme/convert.js +20 -26
  337. package/es/components/shared/monaco-editor/utils/theme/index.js +22 -5
  338. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +77 -75
  339. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +82 -93
  340. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +125 -135
  341. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +148 -160
  342. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +104 -118
  343. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
  344. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +1 -3
  345. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -3
  346. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +219 -330
  347. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -6
  348. package/es/components/shared/no-vnc/NoVnc.js +89 -88
  349. package/es/components/shared/no-vnc/NoVncLazy.js +4 -2
  350. package/es/components/shared/preview-container/PreviewContainer.js +7 -10
  351. package/es/components/shared/web-browser/WebBrowser.js +49 -56
  352. package/es/components/shared/xterm/Xterm.js +107 -102
  353. package/es/components/shared/xterm/XtermLazy.js +4 -2
  354. package/es/constants/arduino.js +10 -10
  355. package/es/constants/shortcutKeyMap.js +3 -5
  356. package/es/constants/stylesheets.js +7 -10
  357. package/es/hooks/useArduino.js +327 -255
  358. package/es/hooks/useExerciseFile.js +24 -24
  359. package/es/hooks/useExericseShortcut.js +6 -5
  360. package/es/hooks/useMaterialExerciseFileUrl.js +55 -38
  361. package/es/hooks/useRunnerRoomWebSocket.js +58 -56
  362. package/es/hooks/useStdioTextConcator.js +18 -12
  363. package/es/hooks/useStdioWebSocket.js +41 -67
  364. package/es/hooks/useUsercodeEditWebSocket.js +230 -252
  365. package/es/hooks/useUsercodeHistory.js +122 -83
  366. package/es/utils/arduino.js +23 -25
  367. package/es/utils/exerciseFile.js +8 -16
  368. package/es/utils/runner.js +29 -25
  369. package/package.json +8 -8
@@ -1,5 +1,7 @@
1
+ import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime, toConsumableArray as _toConsumableArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import React, { useState, useEffect } from 'react';
2
- import { getOrgMaterialExerciseExerciseRunningList, getOrgMaterialExerciseExerciseRunningGet, getOrgMaterialExerciseExerciseImageExerciseFileGet, getOrgMaterialExerciseExerciseRoomUserFileGet, getOrgMaterialExerciseUsercodeGet } from '@elice/api-client';
3
+ import { useIntl } from 'react-intl';
4
+ import { getOrgMaterialExerciseExerciseRunningList, getOrgMaterialExerciseExerciseRoomUserFileGet, getOrgMaterialExerciseExerciseImageExerciseFileGet, getOrgMaterialExerciseExerciseRunningGet, getOrgMaterialExerciseUsercodeGet } from '@elice/api-client';
3
5
  import { Flex, Box, Text, ResizableNext, Spinner } from '@elice/blocks';
4
6
  import { enums } from '@elice/types';
5
7
  import dayjs from 'dayjs';
@@ -19,203 +21,305 @@ import { ExerciseContext } from '../context/context.js';
19
21
  import '../context/recoilTypes.js';
20
22
  import '../context/subjects.js';
21
23
  import '../context/ExerciseProvider.js';
24
+ import { withExerciseIntlProvider } from '../context/ExerciseIntlProvider.js';
25
+ import phrasesEn from './locales/en.json.js';
26
+ import phrasesKo from './locales/ko.json.js';
22
27
  import ExerciseSubmitHistoryOutput from './ExerciseSubmitHistoryOutput.js';
23
28
  import { StyledExerciseVersionRunType, StyledExerciseVersionDatetime, StyledExerciseVersionScore } from '../../shared/exercise-version-list/ExerciseVersionListItem.styled.js';
24
29
  import { StyledFileTreeWrapper, StyledExerciseSubmitHistoryNotChanged, StyledExerciseSubmitHistoryEditorWrapper, StyledExerciseSubmitHistoryEditorLoadingScreen } from './ExerciseSubmitHistory.styled.js';
25
30
 
26
- const AsyncFileTree = React.lazy(() => import('../../shared/file-tree/FileTree.js'));
27
- const AsyncFileTreeList = React.lazy(() => import('../../shared/file-tree/FileTreeList.js'));
28
- const AsyncFileViewer = React.lazy(() => import('../../shared/file-viewer/FileViewer.js'));
29
-
30
- const ExerciseSubmitHistory = ({
31
- onHide
32
- }) => {
33
- const COUNT = 100;
34
- const {
35
- materialExerciseId,
36
- exerciseRoomId,
37
- exerciseRoomUserId
38
- } = React.useContext(ExerciseContext);
39
- const exercise = useRecoilValue(exerciseState(materialExerciseId));
40
- const preference = useRecoilValue(exerciseEditorPreferenceState);
41
- const [runningList, setRunningList] = useState([]);
42
- const [selectedRunning, setSelectedRunning] = useState(null);
43
- const [hasMoreRunning, setMoreRunning] = useState(false);
44
- const [offset, setOffset] = useState(0);
45
- const [fileList, setFileList] = useState([]);
46
- const [selectedFile, setSelectedFile] = useState(null);
47
- const [usercodeContent, setUsercodeContent] = useState(null);
48
- const [isUserChanged, setIsUserChanged] = useState(false);
49
- const [isFile, setIsFile] = useState(false);
50
- const [isFileReady, setIsFileReady] = useState(false);
51
- const selectedFileUrl = useMaterialExerciseFileUrl({
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({
52
91
  filename: selectedFile,
53
- exercise,
54
- exerciseRoomId
55
- }); //
92
+ exercise: exercise,
93
+ exerciseRoomId: exerciseRoomId
94
+ });
56
95
  //
57
96
  //
58
-
59
- useEffect(() => {
60
- void (async () => {
61
- try {
62
- const {
63
- exerciseRunnings
64
- } = await getOrgMaterialExerciseExerciseRunningList({
65
- materialExerciseId,
66
- userId: exerciseRoomUserId,
67
- offset,
68
- count: COUNT
69
- });
70
- setRunningList(runningList => {
71
- if (runningList.length === 0 && exerciseRunnings[0]) {
72
- setSelectedRunning(exerciseRunnings[0]);
73
- }
74
-
75
- return [...runningList, ...exerciseRunnings];
76
- });
77
- setMoreRunning(exerciseRunnings.length === COUNT);
78
- } catch (err) {}
79
- })();
80
- }, [materialExerciseId, exerciseRoomUserId, offset]); //
97
+ //
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
+ }))();
133
+ }, [materialExerciseId, exerciseRoomUserId, offset]);
134
+ //
81
135
  // When id of selected running is updated,
82
136
  // Get exercise running data and filelist.
83
137
  //
84
-
85
- useEffect(() => {
86
- void (async () => {
87
- var _a, _b, _c, _d, _e;
88
-
89
- if (!selectedRunning) {
90
- return;
91
- }
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
-
103
- if ((exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.MultiLanguage) {
104
- let languages, environment;
105
-
106
- try {
107
- const languagesResponse = await getOrgMaterialExerciseExerciseImageExerciseFileGet({
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({
108
168
  exerciseImageId: exerciseRunning.exerciseImage.id,
109
169
  filename: '.languages.json'
110
170
  });
171
+ case 12:
172
+ languagesResponse = _context2.sent;
111
173
  languages = camelizeKeys(JSON.parse(languagesResponse.exerciseFile.content));
112
- } catch (e) {
113
- console.error(e);
114
- }
115
-
116
- try {
117
- const response = await getOrgMaterialExerciseExerciseRoomUserFileGet({
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({
118
184
  filename: '.environment.json',
119
- exerciseRoomId,
185
+ exerciseRoomId: exerciseRoomId,
120
186
  targetDatetime: exerciseRunning.createdDatetime
121
187
  });
188
+ case 22:
189
+ response = _context2.sent;
122
190
  environment = camelizeKeys(JSON.parse(response.userFile.content));
123
- } catch (e) {
191
+ _context2.next = 29;
192
+ break;
193
+ case 26:
194
+ _context2.prev = 26;
195
+ _context2.t1 = _context2["catch"](19);
124
196
  // API returns error when the user hasn't changed the language
125
197
  if (languages && Object.keys(languages).length > 0) {
126
198
  environment = {
127
199
  language: Object.keys(languages)[0]
128
200
  };
129
201
  }
130
- }
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
-
136
- if ((initialOpenFilelist === null || initialOpenFilelist === void 0 ? void 0 : initialOpenFilelist.length) > 0) {
137
- setSelectedFile(initialOpenFilelist[0]);
138
- }
139
- } else {
140
- setFileList([...((_d = exerciseRunning.exerciseImage.filelist) !== null && _d !== void 0 ? _d : []), ...((_e = exerciseRunning.exerciseRoom.filelist) !== null && _e !== void 0 ? _e : [])]);
141
-
142
- if (exerciseRunning.exerciseImage.taskFilelist && exerciseRunning.exerciseImage.taskFilelist.length > 0) {
143
- setSelectedFile(exerciseRunning.exerciseImage.taskFilelist[0]);
144
- }
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();
145
228
  }
146
- } catch (err) {
147
- console.error(err);
148
- }
149
- })(); // eslint-disable-next-line react-hooks/exhaustive-deps
150
- }, [selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.id]); //
229
+ }, _callee2, null, [[2, 39], [9, 16], [19, 26]]);
230
+ }))();
231
+ // eslint-disable-next-line react-hooks/exhaustive-deps
232
+ }, [selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.id]);
233
+ //
151
234
  // When selectedFile or selectedRunning is updated,
152
235
  // Get usercode of selected file.
153
236
  //
154
-
155
- useEffect(() => {
156
- void (async () => {
157
- setIsFileReady(false);
158
-
159
- if (!(selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.exerciseImage) || !selectedFile || !exerciseRoomId) {
160
- return;
161
- }
162
-
163
- const {
164
- usercode
165
- } = await getOrgMaterialExerciseUsercodeGet({
166
- filename: selectedFile,
167
- exerciseRoomId: selectedRunning.exerciseRoom.id,
168
- targetDatetime: selectedRunning.createdDatetime
169
- });
170
-
171
- if ((usercode === null || usercode === void 0 ? void 0 : usercode.content) !== null && (usercode === null || usercode === void 0 ? void 0 : usercode.content) !== undefined) {
172
- setIsUserChanged(true);
173
- setIsFile(false);
174
- setUsercodeContent(usercode.content);
175
- setIsFileReady(true);
176
- } else {
177
- try {
178
- const {
179
- exerciseFile
180
- } = await getOrgMaterialExerciseExerciseImageExerciseFileGet({
181
- exerciseImageId: selectedRunning.exerciseImage.id,
182
- filename: selectedFile
183
- });
184
-
185
- if ((exerciseFile === null || exerciseFile === void 0 ? void 0 : exerciseFile.content) !== null && (exerciseFile === null || exerciseFile === void 0 ? void 0 : exerciseFile.content) !== undefined) {
186
- setIsUserChanged(false);
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);
187
264
  setIsFile(false);
188
- setUsercodeContent(exerciseFile.content);
265
+ setUsercodeContent(usercode.content);
189
266
  setIsFileReady(true);
190
- } else {
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);
191
294
  setIsUserChanged(false);
192
295
  setIsFile(true);
193
296
  setIsFileReady(true);
194
- }
195
- } catch (_a) {
196
- setIsUserChanged(false);
197
- setIsFile(true);
198
- setIsFileReady(true);
297
+ case 27:
298
+ case "end":
299
+ return _context3.stop();
199
300
  }
200
- }
201
- })();
301
+ }, _callee3, null, [[14, 22]]);
302
+ }))();
202
303
  }, [selectedFile, exerciseRoomId, selectedRunning]);
203
304
  /**
204
305
  *
205
306
  */
206
-
207
- const renderRunningVersionList = () => {
208
- return React.createElement(ExerciseVersionList, null, runningList.map(exerciseRunning => {
307
+ var renderRunningVersionList = function renderRunningVersionList() {
308
+ return React.createElement(ExerciseVersionList, null, runningList.map(function (exerciseRunning) {
209
309
  return React.createElement(ExerciseVersionListItem, {
210
310
  key: exerciseRunning.id,
211
311
  selected: Boolean(selectedRunning && selectedRunning.id === exerciseRunning.id),
212
- onClick: () => {
312
+ onClick: function onClick() {
213
313
  setSelectedRunning(exerciseRunning);
214
314
  }
215
315
  }, React.createElement(StyledExerciseVersionRunType, {
216
316
  role: "gray3",
217
317
  size: "small"
218
- }, exerciseRunning.runType === enums.ExerciseRunType.Grade ? '제출' : '실행'), React.createElement(StyledExerciseVersionDatetime, {
318
+ }, exerciseRunning.runType === enums.ExerciseRunType.Grade ? intl.formatMessage({
319
+ id: 'exerciseSubmitHistory.runType.grade'
320
+ }) : intl.formatMessage({
321
+ id: 'exerciseSubmitHistory.runType.run'
322
+ })), React.createElement(StyledExerciseVersionDatetime, {
219
323
  role: "gray3",
220
324
  size: "small"
221
325
  }, dayjs(exerciseRunning.createdDatetime).format('YYYY.M.DD hh:mm')), React.createElement(StyledExerciseVersionScore, {
@@ -223,25 +327,28 @@ const ExerciseSubmitHistory = ({
223
327
  size: "small"
224
328
  }, exerciseRunning.score));
225
329
  }), hasMoreRunning ? React.createElement(ExerciseVersionListItem, {
226
- onClick: () => setOffset(prevOffset => prevOffset + COUNT)
330
+ onClick: function onClick() {
331
+ return setOffset(function (prevOffset) {
332
+ return prevOffset + COUNT;
333
+ });
334
+ }
227
335
  }, React.createElement(Flex, {
228
336
  align: "center",
229
337
  justify: "center",
230
338
  width: "100%"
231
339
  }, React.createElement(Text, {
232
340
  role: "important"
233
- }, "\uB354 \uBD88\uB7EC\uC624\uAE30"))) : null);
341
+ }, intl.formatMessage({
342
+ id: 'exerciseSubmitHistory.button.load.more'
343
+ })))) : null);
234
344
  };
235
345
  /**
236
346
  *
237
347
  */
238
-
239
-
240
- const renderRunningOutput = () => {
348
+ var renderRunningOutput = function renderRunningOutput() {
241
349
  if (!selectedRunning) {
242
350
  return null;
243
351
  }
244
-
245
352
  return React.createElement(ExerciseSubmitHistoryOutput, {
246
353
  exerciseRunningId: selectedRunning.id
247
354
  });
@@ -249,18 +356,14 @@ const ExerciseSubmitHistory = ({
249
356
  /**
250
357
  *
251
358
  */
252
-
253
-
254
- const renderRunningContent = () => {
359
+ var renderRunningContent = function renderRunningContent() {
255
360
  var _a;
256
-
257
361
  if (!selectedFile) {
258
362
  return null;
259
363
  }
260
-
261
- const runningId = Number((_a = selectedRunning === null || selectedRunning === void 0 ? void 0 : selectedRunning.id) !== null && _a !== void 0 ? _a : 0);
262
- const uniqueFilePath = `submit-history/${exerciseRoomId}/r${runningId}`;
263
- const editorFilename = `${uniqueFilePath}/${selectedFile}`;
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);
264
367
  return React.createElement(Flex, {
265
368
  width: "100%",
266
369
  auto: true,
@@ -275,11 +378,11 @@ const ExerciseSubmitHistory = ({
275
378
  activePath: selectedFile,
276
379
  exerciseRoomFilelist: fileList,
277
380
  imageFilelist: [],
278
- onActivePathChange: (path, isDirectory = false) => {
381
+ onActivePathChange: function onActivePathChange(path) {
382
+ var isDirectory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
279
383
  if (isDirectory) {
280
384
  return;
281
385
  }
282
-
283
386
  setSelectedFile(path);
284
387
  }
285
388
  }, React.createElement(AsyncFileTreeList, null))))), React.createElement(Flex, {
@@ -290,7 +393,9 @@ const ExerciseSubmitHistory = ({
290
393
  }, !isUserChanged && React.createElement(StyledExerciseSubmitHistoryNotChanged, null, React.createElement(Text, {
291
394
  role: "white",
292
395
  size: "tiny"
293
- }, "\uC218\uC815 \uB0B4\uC5ED\uC774 \uC5C6\uB294 \uD30C\uC77C\uC785\uB2C8\uB2E4.")), React.createElement(StyledExerciseSubmitHistoryEditorWrapper, null, isFile ? React.createElement(React.Suspense, {
396
+ }, intl.formatMessage({
397
+ id: 'exerciseSubmitHistory.notChanged'
398
+ }))), React.createElement(StyledExerciseSubmitHistoryEditorWrapper, null, isFile ? React.createElement(React.Suspense, {
294
399
  fallback: null
295
400
  }, React.createElement(AsyncFileViewer, {
296
401
  key: editorFilename,
@@ -305,13 +410,14 @@ const ExerciseSubmitHistory = ({
305
410
  readOnly: true
306
411
  })
307
412
  }), !isFileReady && React.createElement(StyledExerciseSubmitHistoryEditorLoadingScreen, null, React.createElement(Spinner, null)))));
308
- }; //
413
+ };
414
+ //
309
415
  //
310
416
  //
311
-
312
-
313
417
  return React.createElement(MaterialModal, {
314
- title: "\uC81C\uCD9C \uC774\uB825",
418
+ title: intl.formatMessage({
419
+ id: 'exerciseSubmitHistory.title'
420
+ }),
315
421
  onHide: onHide
316
422
  }, React.createElement(Flex, {
317
423
  width: "100%",
@@ -328,5 +434,9 @@ const ExerciseSubmitHistory = ({
328
434
  overflow: "hidden"
329
435
  }, renderRunningContent(), renderRunningOutput())));
330
436
  };
437
+ var ExerciseSubmitHistory$1 = withExerciseIntlProvider(ExerciseSubmitHistory, {
438
+ en: phrasesEn,
439
+ ko: phrasesKo
440
+ });
331
441
 
332
- export { ExerciseSubmitHistory as default };
442
+ export { ExerciseSubmitHistory$1 as default };
@@ -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
- const StyledFileTreeWrapper = styled.div.withConfig({
5
+ var StyledFileTreeWrapper = styled.div.withConfig({
6
6
  componentId: "sc-uooiby-0"
7
7
  })(["overflow:auto;width:100%;height:100%;background-color:", ";"], base.color.navy9);
8
- const StyledExerciseSubmitHistoryEditorWrapper = styled(Flex).withConfig({
8
+ var 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
- const StyledExerciseSubmitHistoryNotChanged = styled.div.withConfig({
11
+ var StyledExerciseSubmitHistoryNotChanged = styled.div.withConfig({
12
12
  componentId: "sc-uooiby-2"
13
13
  })(["background-color:", ";padding:0.5rem;"], base.color.navy7);
14
- const StyledExerciseSubmitHistoryEditorLoadingScreen = styled(Flex).withConfig({
14
+ var 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
- const StyledExerciseSubmitHistoryOutputText = styled.span.withConfig({
17
+ var 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
- const StyledExerciseSubmitHistoryOutput = styled.div.withConfig({
20
+ var 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
- const StyledExerciseSubmitHistoryOutputImageLink = styled.a.withConfig({
23
+ var 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
- const StyledExerciseSubmitHistoryOutputImage = styled.img.withConfig({
26
+ var StyledExerciseSubmitHistoryOutputImage = styled.img.withConfig({
27
27
  componentId: "sc-uooiby-7"
28
28
  })(["display:block;width:100%;"]);
29
29