@elice/material-exercise 1.230328.0 → 1.230418.1

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,3 +1,4 @@
1
+ import { slicedToArray as _slicedToArray, toConsumableArray as _toConsumableArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import React from 'react';
2
3
  import { useIntl } from 'react-intl';
3
4
  import { useEvent } from 'react-use';
@@ -32,57 +33,51 @@ import phrasesKo from './locales/ko.json.js';
32
33
  import { ExerciseRunnerContext } from './ExerciseRunnerContext.js';
33
34
  import ExerciseRunnerController from './ExerciseRunnerController.js';
34
35
 
35
- const EXERCISE_RUNNER_HORIZONTAL_RATIO = {
36
+ var EXERCISE_RUNNER_HORIZONTAL_RATIO = {
36
37
  PREVIEW: 0.3,
37
38
  XTERM: 0.7
38
39
  };
39
- const StyledExerciseRunner = styled.div.withConfig({
40
+ var StyledExerciseRunner = styled.div.withConfig({
40
41
  componentId: "sc-mp78g-0"
41
42
  })(["display:flex;flex-direction:column;width:100%;height:100%;background-color:", ";min-height:0;"], base.color.navy8);
42
43
  /**
43
44
  *
44
45
  */
45
-
46
- const ExerciseRunner = ({
47
- exercisePreview
48
- }) => {
46
+ var ExerciseRunner = function ExerciseRunner(_ref) {
47
+ var exercisePreview = _ref.exercisePreview;
49
48
  var _a, _b, _c;
50
-
51
- const intl = useIntl();
52
- const {
53
- onCodeHelpRequest
54
- } = React.useContext(ExerciseContext);
55
- const {
56
- materialExerciseId,
57
- exerciseRoomId,
58
- locale,
59
- onSubmit,
60
- onError
61
- } = React.useContext(ExerciseContext);
62
- const exercise = useRecoilValue(exerciseState(materialExerciseId));
63
- const {
64
- fontSize: editorPreferenceFontSize
65
- } = useRecoilValue(exerciseEditorPreferenceState); // runner states
66
-
67
- const setRunnerSubmitting = useSetRecoilState(exerciseRunnerSubmittingState);
68
- const setRunnerRunning = useSetRecoilState(exerciseRunnerRunningState);
69
- const [runnerRunTypeState, setRunnerRunTypeState] = useRecoilState(exerciseRunnerRunTypeState);
70
- const setExerciseRunnerRoomConnectionInfo = useSetRecoilState(exerciseRunnerRoomConnectionInfoState);
71
- const setRunnerStdioFilesState = useSetRecoilState(exerciseRunnerStdioFilesState); // preview states
72
-
73
- const exercisePreviewType = useRecoilValue(exercisePreviewTypeState(materialExerciseId));
74
- const exercisePreviewDisplayMode = useRecoilValue(exercisePreviewDisplayModeState); // monaco editor value
75
-
76
- const exerciseMonacoEditorApis = useRecoilValue(exerciseMonacoEditorApisState); // websockets
77
-
78
- const setRunnerRoomWebSocketState = useSetRecoilState(exerciseWebsocketQuery('runnerRoom'));
79
- const setStdioWebSocketState = useSetRecoilState(exerciseWebsocketQuery('stdio'));
80
-
81
- const handleAiHelpibotError = text => {
49
+ var intl = useIntl();
50
+ var _React$useContext = React.useContext(ExerciseContext),
51
+ onCodeHelpRequest = _React$useContext.onCodeHelpRequest;
52
+ var _React$useContext2 = React.useContext(ExerciseContext),
53
+ materialExerciseId = _React$useContext2.materialExerciseId,
54
+ exerciseRoomId = _React$useContext2.exerciseRoomId,
55
+ locale = _React$useContext2.locale,
56
+ onSubmit = _React$useContext2.onSubmit,
57
+ onError = _React$useContext2.onError;
58
+ var exercise = useRecoilValue(exerciseState(materialExerciseId));
59
+ var _useRecoilValue = useRecoilValue(exerciseEditorPreferenceState),
60
+ editorPreferenceFontSize = _useRecoilValue.fontSize;
61
+ // runner states
62
+ var setRunnerSubmitting = useSetRecoilState(exerciseRunnerSubmittingState);
63
+ var setRunnerRunning = useSetRecoilState(exerciseRunnerRunningState);
64
+ var _useRecoilState = useRecoilState(exerciseRunnerRunTypeState),
65
+ _useRecoilState2 = _slicedToArray(_useRecoilState, 2),
66
+ runnerRunTypeState = _useRecoilState2[0],
67
+ setRunnerRunTypeState = _useRecoilState2[1];
68
+ var setExerciseRunnerRoomConnectionInfo = useSetRecoilState(exerciseRunnerRoomConnectionInfoState);
69
+ var setRunnerStdioFilesState = useSetRecoilState(exerciseRunnerStdioFilesState);
70
+ // preview states
71
+ var exercisePreviewType = useRecoilValue(exercisePreviewTypeState(materialExerciseId));
72
+ var exercisePreviewDisplayMode = useRecoilValue(exercisePreviewDisplayModeState);
73
+ // monaco editor value
74
+ var exerciseMonacoEditorApis = useRecoilValue(exerciseMonacoEditorApisState);
75
+ // websockets
76
+ var setRunnerRoomWebSocketState = useSetRecoilState(exerciseWebsocketQuery('runnerRoom'));
77
+ var setStdioWebSocketState = useSetRecoilState(exerciseWebsocketQuery('stdio'));
78
+ var handleAiHelpibotError = function handleAiHelpibotError(text) {
82
79
  var _a, _b, _c;
83
-
84
- const error = getProgrammingErrorResult(text);
85
-
80
+ var error = getProgrammingErrorResult(text);
86
81
  if (!!error && typeof onCodeHelpRequest === 'function') {
87
82
  onCodeHelpRequest({
88
83
  code: error.errorCode,
@@ -93,36 +88,33 @@ const ExerciseRunner = ({
93
88
  });
94
89
  }
95
90
  };
96
-
97
- const {
98
- updateStdioTextConcator
99
- } = useStdioTextConcator(handleAiHelpibotError); // etc
100
-
101
- const exerciseContainerSize = useRecoilValue(exerciseContainerSizeState);
102
- const [runnerSubmitErrorDialog, setRunnerSubmitErrorDialog] = React.useState(null);
103
- const arduinoTextBuffer = React.useRef('');
104
- const runnerRunTypeRef = React.useRef(runnerRunTypeState);
105
- const xterm = React.useRef(null);
91
+ var _useStdioTextConcator = useStdioTextConcator(handleAiHelpibotError),
92
+ updateStdioTextConcator = _useStdioTextConcator.updateStdioTextConcator;
93
+ // etc
94
+ var exerciseContainerSize = useRecoilValue(exerciseContainerSizeState);
95
+ var _React$useState = React.useState(null),
96
+ _React$useState2 = _slicedToArray(_React$useState, 2),
97
+ runnerSubmitErrorDialog = _React$useState2[0],
98
+ setRunnerSubmitErrorDialog = _React$useState2[1];
99
+ var arduinoTextBuffer = React.useRef('');
100
+ var runnerRunTypeRef = React.useRef(runnerRunTypeState);
101
+ var xterm = React.useRef(null);
106
102
  /**
107
103
  * Handle text received from arduino serial output.
108
104
  */
109
-
110
- const handleArduinoDigitalOutput = text => {
105
+ var handleArduinoDigitalOutput = function handleArduinoDigitalOutput(text) {
111
106
  var _a;
112
-
113
107
  (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(text);
114
- }; // Arduino
115
-
116
-
117
- const arduino = useArduino({
108
+ };
109
+ // Arduino
110
+ var arduino = useArduino({
118
111
  writeTerminal: handleArduinoDigitalOutput
119
112
  });
120
- const isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
113
+ var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
121
114
  /**
122
115
  * Handle destroy arduino client.
123
116
  */
124
-
125
- const handleArduinoDistroy = React.useCallback(() => {
117
+ var handleArduinoDistroy = React.useCallback(function () {
126
118
  if (isArduinoExercise) {
127
119
  arduino.destroy();
128
120
  }
@@ -130,20 +122,16 @@ const ExerciseRunner = ({
130
122
  /**
131
123
  * Handle text received from stdio websocket.
132
124
  */
133
-
134
- const handleWsStdioTextReceive = (type, text) => {
125
+ var handleWsStdioTextReceive = function handleWsStdioTextReceive(type, text) {
135
126
  var _a, _b, _c;
136
-
137
127
  switch (type) {
138
128
  case 'text':
139
129
  (_a = xterm.current) === null || _a === void 0 ? void 0 : _a[runnerRunTypeRef.current !== enums.ExerciseRunType.Run ? 'writeEmphasized' : 'write'](text);
140
130
  updateStdioTextConcator(text);
141
131
  break;
142
-
143
132
  case 'grader':
144
133
  (_b = xterm.current) === null || _b === void 0 ? void 0 : _b.write(text);
145
134
  break;
146
-
147
135
  case 'echo':
148
136
  (_c = xterm.current) === null || _c === void 0 ? void 0 : _c.write(text);
149
137
  break;
@@ -152,34 +140,29 @@ const ExerciseRunner = ({
152
140
  /**
153
141
  * Handle file received from stdio websocket.
154
142
  */
155
-
156
-
157
- const handleWsStdioFileReceive = stdioFile => {
143
+ var handleWsStdioFileReceive = function handleWsStdioFileReceive(stdioFile) {
158
144
  // arduino exercise
159
145
  if (isArduinoExercise) {
160
146
  if ('filename' in stdioFile && stdioFile.filename.startsWith('firmware') && stdioFile.filename.endsWith('hex')) {
161
147
  arduino.uploadHexFile(stdioFile);
162
148
  }
163
-
164
149
  return;
165
- } // normal exercise
166
-
167
-
168
- setRunnerStdioFilesState(prevFiles => [...prevFiles, stdioFile]);
150
+ }
151
+ // normal exercise
152
+ setRunnerStdioFilesState(function (prevFiles) {
153
+ return [].concat(_toConsumableArray(prevFiles), [stdioFile]);
154
+ });
169
155
  };
170
156
  /**
171
157
  * Runner room websocket
172
158
  */
173
-
174
-
175
- const wsRunnerRoom = useRunnerRoomWebSocket({
176
- exerciseRoomId
159
+ var wsRunnerRoom = useRunnerRoomWebSocket({
160
+ exerciseRoomId: exerciseRoomId
177
161
  });
178
162
  /**
179
163
  * Stdio websocket
180
164
  */
181
-
182
- const wsStdio = useStdioWebSocket({
165
+ var wsStdio = useStdioWebSocket({
183
166
  wsUri: (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.wsUri,
184
167
  roomToken: (_b = wsRunnerRoom.roomConnectionInfo) === null || _b === void 0 ? void 0 : _b.roomToken,
185
168
  isTty: (_c = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _c === void 0 ? void 0 : _c.isTty,
@@ -189,10 +172,8 @@ const ExerciseRunner = ({
189
172
  /**
190
173
  * Handle submit code error.
191
174
  */
192
-
193
- const handleRunnerSubmitError = err => {
175
+ var handleRunnerSubmitError = function handleRunnerSubmitError(err) {
194
176
  var _a, _b;
195
-
196
177
  switch ((_a = err.detail) === null || _a === void 0 ? void 0 : _a.failCode) {
197
178
  case 'room_type_mismatch':
198
179
  case 'not_found_exercise_room':
@@ -207,10 +188,11 @@ const ExerciseRunner = ({
207
188
  action: intl.formatMessage({
208
189
  id: 'exerciseRunner.submitErrorDialog.action.reload'
209
190
  }),
210
- onAction: () => window.location.reload()
191
+ onAction: function onAction() {
192
+ return window.location.reload();
193
+ }
211
194
  });
212
195
  break;
213
-
214
196
  case 'invalid_room_token':
215
197
  setRunnerSubmitErrorDialog({
216
198
  code: err.detail.failCode,
@@ -220,10 +202,11 @@ const ExerciseRunner = ({
220
202
  action: intl.formatMessage({
221
203
  id: 'exerciseRunner.submitErrorDialog.action.reload'
222
204
  }),
223
- onAction: () => window.location.reload()
205
+ onAction: function onAction() {
206
+ return window.location.reload();
207
+ }
224
208
  });
225
209
  break;
226
-
227
210
  case 'not_for_submit_grade':
228
211
  setRunnerSubmitErrorDialog({
229
212
  code: err.detail.failCode,
@@ -235,7 +218,6 @@ const ExerciseRunner = ({
235
218
  })
236
219
  });
237
220
  break;
238
-
239
221
  case 'expired_exercise_image':
240
222
  setRunnerSubmitErrorDialog({
241
223
  code: err.detail.failCode,
@@ -245,10 +227,11 @@ const ExerciseRunner = ({
245
227
  action: intl.formatMessage({
246
228
  id: 'exerciseRunner.submitErrorDialog.action.reload'
247
229
  }),
248
- onAction: () => window.location.reload()
230
+ onAction: function onAction() {
231
+ return window.location.reload();
232
+ }
249
233
  });
250
234
  break;
251
-
252
235
  case 'not_prepared_room_forwarder':
253
236
  case 'try_again':
254
237
  setRunnerSubmitErrorDialog({
@@ -261,7 +244,6 @@ const ExerciseRunner = ({
261
244
  })
262
245
  });
263
246
  break;
264
-
265
247
  case 'room_is_busy':
266
248
  setRunnerSubmitErrorDialog({
267
249
  code: err.detail.failCode,
@@ -273,7 +255,6 @@ const ExerciseRunner = ({
273
255
  })
274
256
  });
275
257
  break;
276
-
277
258
  case 'exceed_submit_grade_limit':
278
259
  setRunnerSubmitErrorDialog({
279
260
  code: err.detail.failCode,
@@ -285,7 +266,6 @@ const ExerciseRunner = ({
285
266
  })
286
267
  });
287
268
  break;
288
-
289
269
  default:
290
270
  setRunnerSubmitErrorDialog({
291
271
  code: ((_b = err === null || err === void 0 ? void 0 : err.detail) === null || _b === void 0 ? void 0 : _b.failCode) || 'unknown',
@@ -302,196 +282,217 @@ const ExerciseRunner = ({
302
282
  /**
303
283
  * Handle submit code to runner and run / grade.
304
284
  */
305
-
306
-
307
- const handleRunnerSubmit = async runType => {
308
- var _a, _b, _c;
309
-
310
- const readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
311
- const roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
312
-
313
- if (!readyExerciseImage || !roomToken) {
314
- return;
315
- }
316
-
317
- setRunnerStdioFilesState([]);
318
- setRunnerRunTypeState(runType);
319
- setRunnerSubmitting(true);
320
- return postOrgMaterialExerciseExerciseRunningSubmit({
321
- roomToken,
322
- runType,
323
- exerciseImageId: readyExerciseImage.id,
324
- vncWidth: readyExerciseImage.isVnc ? Math.max((_b = readyExerciseImage.defaultVncWidth) !== null && _b !== void 0 ? _b : 0, 640) : undefined,
325
- vncHeight: readyExerciseImage.isVnc ? Math.max((_c = readyExerciseImage.defaultVncHeight) !== null && _c !== void 0 ? _c : 0, 480) : undefined
326
- }).then(res => {
327
- if (typeof onSubmit === 'function') {
328
- onSubmit(res);
329
- }
330
- }).catch(err => {
331
- setRunnerSubmitting(false);
332
- handleRunnerSubmitError(err);
333
-
334
- if (typeof onError === 'function') {
335
- onError(err);
336
- }
337
- });
338
- };
285
+ var handleRunnerSubmit = /*#__PURE__*/function () {
286
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(runType) {
287
+ var _a, _b, _c, readyExerciseImage, roomToken;
288
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
289
+ while (1) switch (_context.prev = _context.next) {
290
+ case 0:
291
+ readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
292
+ roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
293
+ if (!(!readyExerciseImage || !roomToken)) {
294
+ _context.next = 4;
295
+ break;
296
+ }
297
+ return _context.abrupt("return");
298
+ case 4:
299
+ setRunnerStdioFilesState([]);
300
+ setRunnerRunTypeState(runType);
301
+ setRunnerSubmitting(true);
302
+ return _context.abrupt("return", postOrgMaterialExerciseExerciseRunningSubmit({
303
+ roomToken: roomToken,
304
+ runType: runType,
305
+ exerciseImageId: readyExerciseImage.id,
306
+ vncWidth: readyExerciseImage.isVnc ? Math.max((_b = readyExerciseImage.defaultVncWidth) !== null && _b !== void 0 ? _b : 0, 640) : undefined,
307
+ vncHeight: readyExerciseImage.isVnc ? Math.max((_c = readyExerciseImage.defaultVncHeight) !== null && _c !== void 0 ? _c : 0, 480) : undefined
308
+ }).then(function (res) {
309
+ if (typeof onSubmit === 'function') {
310
+ onSubmit(res);
311
+ }
312
+ }).catch(function (err) {
313
+ setRunnerSubmitting(false);
314
+ handleRunnerSubmitError(err);
315
+ if (typeof onError === 'function') {
316
+ onError(err);
317
+ }
318
+ }));
319
+ case 8:
320
+ case "end":
321
+ return _context.stop();
322
+ }
323
+ }, _callee);
324
+ }));
325
+ return function handleRunnerSubmit(_x) {
326
+ return _ref2.apply(this, arguments);
327
+ };
328
+ }();
339
329
  /**
340
330
  * Handle runner to cancel running.
341
331
  */
342
-
343
-
344
- const handleRunnerCancel = async () => {
345
- var _a;
346
-
347
- const roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
348
-
349
- if (roomToken) {
350
- void postOrgMaterialExerciseExerciseRunningCancel({
351
- roomToken
352
- });
353
- }
354
- };
332
+ var handleRunnerCancel = /*#__PURE__*/function () {
333
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
334
+ var _a, roomToken;
335
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
336
+ while (1) switch (_context2.prev = _context2.next) {
337
+ case 0:
338
+ roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
339
+ if (roomToken) {
340
+ void postOrgMaterialExerciseExerciseRunningCancel({
341
+ roomToken: roomToken
342
+ });
343
+ }
344
+ case 2:
345
+ case "end":
346
+ return _context2.stop();
347
+ }
348
+ }, _callee2);
349
+ }));
350
+ return function handleRunnerCancel() {
351
+ return _ref3.apply(this, arguments);
352
+ };
353
+ }();
355
354
  /**
356
355
  * Handle runner to request code sync.
357
356
  */
358
-
359
-
360
- const handleRunnerSyncRequest = () => {
357
+ var handleRunnerSyncRequest = function handleRunnerSyncRequest() {
361
358
  wsStdio.sendSync();
362
359
  };
363
360
  /**
364
361
  * Handle input requests for arduino.
365
362
  */
366
-
367
-
368
- const handleXtermArduinoInputRequest = char => {
363
+ var handleXtermArduinoInputRequest = function handleXtermArduinoInputRequest(char) {
369
364
  var _a, _b, _c;
370
-
371
365
  switch (char) {
372
366
  // backspace
373
- case '\u007f':
367
+ case "\x7F":
374
368
  (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(' ');
375
369
  arduinoTextBuffer.current = arduinoTextBuffer.current.slice(0, -1);
376
370
  break;
377
371
  // enter
378
-
379
372
  case '\r':
380
373
  if (arduinoTextBuffer.current.length) {
381
374
  (_b = xterm.current) === null || _b === void 0 ? void 0 : _b.write('\r\n');
382
375
  arduino.sendText(arduinoTextBuffer.current);
383
376
  arduinoTextBuffer.current = '';
384
377
  }
385
-
386
378
  break;
387
379
  // any char
388
-
389
380
  default:
390
381
  (_c = xterm.current) === null || _c === void 0 ? void 0 : _c.write(char);
391
- arduinoTextBuffer.current = `${arduinoTextBuffer.current}${char}`;
382
+ arduinoTextBuffer.current = "".concat(arduinoTextBuffer.current).concat(char);
392
383
  break;
393
384
  }
394
385
  };
395
386
  /**
396
387
  * Handle input requests.
397
388
  */
398
-
399
-
400
- const handleXtermInputRequest = text => {
389
+ var handleXtermInputRequest = function handleXtermInputRequest(text) {
401
390
  if (isArduinoExercise) {
402
391
  handleXtermArduinoInputRequest(text);
403
392
  } else {
404
393
  wsStdio.sendText(text);
405
394
  }
406
- }; //
395
+ };
396
+ //
407
397
  // Initialize Arduino devices.
408
398
  //
409
-
410
-
411
- React.useEffect(() => {
399
+ React.useEffect(function () {
412
400
  if (!isArduinoExercise) {
413
401
  return;
414
402
  }
415
-
416
403
  void arduino.init();
417
- return () => {
404
+ return function () {
418
405
  void arduino.destroy();
419
406
  };
420
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
421
- [exercise]); //
407
+ },
408
+ // eslint-disable-next-line react-hooks/exhaustive-deps
409
+ [exercise]);
410
+ //
422
411
  // Destroy arduino client when unload window.
423
412
  //
424
-
425
- useEvent('beforeunload', handleArduinoDistroy, window); //
413
+ useEvent('beforeunload', handleArduinoDistroy, window);
414
+ //
426
415
  // Update runner room websocket state.
427
416
  //
428
-
429
- React.useEffect(() => setRunnerRoomWebSocketState(wsRunnerRoom.readyState), // eslint-disable-next-line react-hooks/exhaustive-deps
430
- [wsRunnerRoom.readyState]); //
417
+ React.useEffect(function () {
418
+ return setRunnerRoomWebSocketState(wsRunnerRoom.readyState);
419
+ },
420
+ // eslint-disable-next-line react-hooks/exhaustive-deps
421
+ [wsRunnerRoom.readyState]);
422
+ //
431
423
  // Update stdio websocket state.
432
424
  //
433
-
434
- React.useEffect(() => setStdioWebSocketState(wsStdio.readyState), // eslint-disable-next-line react-hooks/exhaustive-deps
435
- [wsStdio.readyState]); //
425
+ React.useEffect(function () {
426
+ return setStdioWebSocketState(wsStdio.readyState);
427
+ },
428
+ // eslint-disable-next-line react-hooks/exhaustive-deps
429
+ [wsStdio.readyState]);
430
+ //
436
431
  // Set runner submitting status to false,
437
432
  // whenever runner room's running status is changed.
438
433
  // (assume that sumbitting done when running status is changed)
439
434
  //
440
-
441
- React.useEffect(() => setRunnerSubmitting(false), // eslint-disable-next-line react-hooks/exhaustive-deps
442
- [wsRunnerRoom.isRunning]); //
435
+ React.useEffect(function () {
436
+ return setRunnerSubmitting(false);
437
+ },
438
+ // eslint-disable-next-line react-hooks/exhaustive-deps
439
+ [wsRunnerRoom.isRunning]);
440
+ //
443
441
  // Auto focus terminal when running.
444
442
  //
445
-
446
- React.useEffect(() => {
443
+ React.useEffect(function () {
447
444
  if (wsRunnerRoom.isRunning) {
448
- setTimeout(() => {
445
+ setTimeout(function () {
449
446
  var _a;
450
-
451
447
  return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.focus();
452
448
  }, 100);
453
449
  }
454
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
455
- [wsRunnerRoom.isRunning]); //
450
+ },
451
+ // eslint-disable-next-line react-hooks/exhaustive-deps
452
+ [wsRunnerRoom.isRunning]);
453
+ //
456
454
  // Bind runner run type to ref.
457
455
  //
458
-
459
- React.useEffect(() => {
456
+ React.useEffect(function () {
460
457
  runnerRunTypeRef.current = runnerRunTypeState;
461
- }, [runnerRunTypeState]); //
458
+ }, [runnerRunTypeState]);
459
+ //
462
460
  // Update room connection info.
463
461
  //
464
-
465
- React.useEffect(() => setRunnerRunning(wsRunnerRoom.isRunning), // eslint-disable-next-line react-hooks/exhaustive-deps
466
- [wsRunnerRoom.isRunning]); //
462
+ React.useEffect(function () {
463
+ return setRunnerRunning(wsRunnerRoom.isRunning);
464
+ },
465
+ // eslint-disable-next-line react-hooks/exhaustive-deps
466
+ [wsRunnerRoom.isRunning]);
467
+ //
467
468
  // Update room connection info.
468
469
  //
469
-
470
- React.useEffect(() => setExerciseRunnerRoomConnectionInfo(wsRunnerRoom.roomConnectionInfo), // eslint-disable-next-line react-hooks/exhaustive-deps
471
- [wsRunnerRoom.roomConnectionInfo]); //
470
+ React.useEffect(function () {
471
+ return setExerciseRunnerRoomConnectionInfo(wsRunnerRoom.roomConnectionInfo);
472
+ },
473
+ // eslint-disable-next-line react-hooks/exhaustive-deps
474
+ [wsRunnerRoom.roomConnectionInfo]);
475
+ //
472
476
  // handle send text request to runner stdio.
473
477
  //
474
-
475
- React.useEffect(() => {
476
- const textSendSub = exerciseRunnerTextSend$.subscribe(wsStdio.sendText);
477
- return () => {
478
+ React.useEffect(function () {
479
+ var textSendSub = exerciseRunnerTextSend$.subscribe(wsStdio.sendText);
480
+ return function () {
478
481
  textSendSub.unsubscribe();
479
482
  };
480
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
483
+ },
484
+ // eslint-disable-next-line react-hooks/exhaustive-deps
481
485
  []);
482
486
  /**
483
487
  * Preview.
484
488
  */
485
-
486
- const renderPreview = () => {
489
+ var renderPreview = function renderPreview() {
487
490
  if (exercisePreviewType === ExercisePreviewType.None) {
488
491
  return null;
489
492
  }
490
-
491
493
  if (exercisePreviewDisplayMode !== ExercisePreviewDisplayMode.Mini) {
492
494
  return null;
493
495
  }
494
-
495
496
  return React.createElement(ResizableNext, Object.assign({}, MATERIAL_RESIZABLE_COMMON_PROPS, {
496
497
  children: exercisePreview,
497
498
  initialWidth: exerciseContainerSize.width * EXERCISE_RUNNER_HORIZONTAL_RATIO.PREVIEW,
@@ -502,12 +503,12 @@ const ExerciseRunner = ({
502
503
  /**
503
504
  * Xterm
504
505
  */
505
-
506
-
507
- const renderXterm = () => {
506
+ var renderXterm = function renderXterm() {
508
507
  // show system message when...
509
- const showSystemMessage = // - run type is grade
510
- runnerRunTypeState === enums.ExerciseRunType.Grade || // - not an arduino exercise
508
+ var showSystemMessage =
509
+ // - run type is grade
510
+ runnerRunTypeState === enums.ExerciseRunType.Grade ||
511
+ // - not an arduino exercise
511
512
  !isArduinoExercise;
512
513
  return React.createElement(XtermLazy, {
513
514
  isRunning: wsRunnerRoom.isRunning,
@@ -522,35 +523,32 @@ const ExerciseRunner = ({
522
523
  /**
523
524
  * Runner submit error dialog.
524
525
  */
525
-
526
-
527
- const renderRunnerSubmitErrorDialog = () => {
526
+ var renderRunnerSubmitErrorDialog = function renderRunnerSubmitErrorDialog() {
528
527
  if (!runnerSubmitErrorDialog) {
529
528
  return null;
530
529
  }
531
-
532
530
  return React.createElement(Dialog, {
533
531
  type: "error",
534
532
  title: intl.formatMessage({
535
533
  id: 'exerciseRunner.submitErrorDialog.title'
536
534
  }),
537
- body: `${runnerSubmitErrorDialog.message}\n(error code: ${runnerSubmitErrorDialog.code})`,
538
- onHide: () => setRunnerSubmitErrorDialog(null)
535
+ body: "".concat(runnerSubmitErrorDialog.message, "\n(error code: ").concat(runnerSubmitErrorDialog.code, ")"),
536
+ onHide: function onHide() {
537
+ return setRunnerSubmitErrorDialog(null);
538
+ }
539
539
  }, React.createElement(Dialog.ActionButton, {
540
540
  children: runnerSubmitErrorDialog.action,
541
- onClick: () => {
541
+ onClick: function onClick() {
542
542
  if (typeof runnerSubmitErrorDialog.onAction === 'function') {
543
543
  runnerSubmitErrorDialog.onAction();
544
544
  }
545
-
546
545
  setRunnerSubmitErrorDialog(null);
547
546
  }
548
547
  }));
549
- }; //
548
+ };
549
+ //
550
550
  //
551
551
  //
552
-
553
-
554
552
  return React.createElement(StyledExerciseRunner, null, React.createElement(ExerciseRunnerContext.Provider, {
555
553
  value: {
556
554
  onSubmit: handleRunnerSubmit,
@@ -565,7 +563,6 @@ const ExerciseRunner = ({
565
563
  overflow: "hidden"
566
564
  }, renderPreview(), renderXterm(), renderRunnerSubmitErrorDialog())));
567
565
  };
568
-
569
566
  var ExerciseRunner$1 = withExerciseIntlProvider(ExerciseRunner, {
570
567
  en: phrasesEn,
571
568
  ko: phrasesKo