@elice/material-exercise 1.230325.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 (373) 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.d.ts +2 -1
  12. package/cjs/components/material-exercise/context/recoil.js +562 -373
  13. package/cjs/components/material-exercise/context/recoilTypes.js +0 -5
  14. package/cjs/components/material-exercise/context/subjects.js +3 -6
  15. package/cjs/components/material-exercise/context/types.d.ts +8 -1
  16. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.d.ts +2 -2
  17. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +78 -65
  18. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
  19. package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +7 -0
  20. package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +7 -0
  21. package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +20 -21
  22. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +228 -199
  23. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -10
  24. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +35 -32
  25. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +57 -48
  26. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +6 -4
  27. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +3 -1
  28. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +3 -1
  29. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +327 -231
  30. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +6 -4
  31. package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +3 -1
  32. package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +3 -1
  33. package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +17 -17
  34. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +13 -14
  35. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +6 -6
  36. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +47 -38
  37. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +60 -42
  38. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +29 -22
  39. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +45 -56
  40. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
  41. package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +3 -1
  42. package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +3 -1
  43. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +28 -20
  44. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +5 -3
  45. package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +30 -41
  46. package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +17 -12
  47. package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +3 -1
  48. package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +3 -1
  49. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +24 -33
  50. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +13 -8
  51. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +84 -83
  52. package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +3 -1
  53. package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +3 -1
  54. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +20 -12
  55. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +14 -12
  56. package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +239 -147
  57. package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +92 -63
  58. package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -8
  59. package/cjs/components/material-exercise/exercise-room/locales/en.json.js +3 -1
  60. package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +3 -1
  61. package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +224 -223
  62. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
  63. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -13
  64. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +30 -26
  65. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +26 -26
  66. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +79 -95
  67. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +27 -27
  68. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +54 -60
  69. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +5 -5
  70. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +10 -13
  71. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +29 -26
  72. package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +3 -1
  73. package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +3 -1
  74. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.d.ts +2 -2
  75. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +290 -180
  76. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
  77. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -45
  78. package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +7 -0
  79. package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +7 -0
  80. package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +19 -17
  81. package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +5 -4
  82. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +15 -14
  83. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +7 -6
  84. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +17 -16
  85. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +18 -11
  86. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -4
  87. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
  88. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -7
  89. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +9 -5
  90. package/cjs/components/shared/file-icon/FileIcon.js +23 -23
  91. package/cjs/components/shared/file-tabs/FileTab.js +32 -43
  92. package/cjs/components/shared/file-tabs/FileTab.styled.js +26 -22
  93. package/cjs/components/shared/file-tabs/FileTabs.js +55 -49
  94. package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -2
  95. package/cjs/components/shared/file-tabs/util.js +29 -18
  96. package/cjs/components/shared/file-tree/FileTree.js +11 -11
  97. package/cjs/components/shared/file-tree/FileTreeConfig.js +24 -23
  98. package/cjs/components/shared/file-tree/FileTreeList.js +35 -41
  99. package/cjs/components/shared/file-tree/FileTreeListItemContent.js +75 -91
  100. package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +29 -40
  101. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +77 -101
  102. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
  103. package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +51 -86
  104. package/cjs/components/shared/file-tree/FileTreeListItems.js +150 -153
  105. package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
  106. package/cjs/components/shared/file-tree/FileTreeToolbar.js +30 -41
  107. package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
  108. package/cjs/components/shared/file-tree/context/FileTreeContext.js +91 -97
  109. package/cjs/components/shared/file-tree/locales/en.json.js +3 -1
  110. package/cjs/components/shared/file-tree/locales/ko.json.js +3 -1
  111. package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -22
  112. package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +193 -173
  113. package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -1
  114. package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -1
  115. package/cjs/components/shared/file-tree/utils/fileTreePath.js +5 -7
  116. package/cjs/components/shared/file-viewer/FileViewer.js +59 -60
  117. package/cjs/components/shared/file-viewer/FileViewerCsv.js +145 -101
  118. package/cjs/components/shared/file-viewer/FileViewerImage.js +7 -8
  119. package/cjs/components/shared/file-viewer/FileViewerIpynb.js +20 -14
  120. package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +28 -34
  121. package/cjs/components/shared/file-viewer/FileViewerText.js +23 -16
  122. package/cjs/components/shared/file-viewer/locales/en.json.js +3 -1
  123. package/cjs/components/shared/file-viewer/locales/ko.json.js +3 -1
  124. package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +3 -1
  125. package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +3 -1
  126. package/cjs/components/shared/material-modal/MaterialModal.js +10 -12
  127. package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -5
  128. package/cjs/components/shared/monaco-editor/MonacoEditor.js +123 -149
  129. package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +10 -8
  130. package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +49 -58
  131. package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +78 -85
  132. package/cjs/components/shared/monaco-editor/constants/grammars/index.js +131 -52
  133. package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -9
  134. package/cjs/components/shared/monaco-editor/constants/themes/index.js +80 -32
  135. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
  136. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -18
  137. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
  138. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +54 -72
  139. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +14 -15
  140. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +8 -9
  141. package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +36 -12
  142. package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +5 -8
  143. package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +36 -12
  144. package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +3 -6
  145. package/cjs/components/shared/monaco-editor/editor-languages/index.js +3 -1
  146. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
  147. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +3 -2
  148. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +3 -2
  149. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +3 -2
  150. package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +36 -12
  151. package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +18 -24
  152. package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +12 -9
  153. package/cjs/components/shared/monaco-editor/locales/en.json.js +3 -1
  154. package/cjs/components/shared/monaco-editor/locales/ko.json.js +3 -1
  155. package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +18 -28
  156. package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -3
  157. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +12 -8
  158. package/cjs/components/shared/monaco-editor/utils/grammar/index.js +70 -32
  159. package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +25 -7
  160. package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +67 -43
  161. package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +9 -19
  162. package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +6 -5
  163. package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -3
  164. package/cjs/components/shared/monaco-editor/utils/prettier/index.js +30 -9
  165. package/cjs/components/shared/monaco-editor/utils/theme/convert.js +20 -26
  166. package/cjs/components/shared/monaco-editor/utils/theme/index.js +22 -5
  167. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +77 -75
  168. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +82 -93
  169. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +125 -135
  170. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +148 -160
  171. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +104 -118
  172. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
  173. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +1 -3
  174. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -3
  175. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +218 -329
  176. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -6
  177. package/cjs/components/shared/no-vnc/NoVnc.js +93 -90
  178. package/cjs/components/shared/no-vnc/NoVncLazy.js +7 -5
  179. package/cjs/components/shared/preview-container/PreviewContainer.js +7 -10
  180. package/cjs/components/shared/web-browser/WebBrowser.js +54 -59
  181. package/cjs/components/shared/xterm/Xterm.js +112 -105
  182. package/cjs/components/shared/xterm/XtermLazy.js +7 -5
  183. package/cjs/components/shared/xterm/locales/en.json.js +3 -1
  184. package/cjs/components/shared/xterm/locales/ko.json.js +3 -1
  185. package/cjs/constants/arduino.js +10 -10
  186. package/cjs/constants/shortcutKeyMap.js +5 -5
  187. package/cjs/constants/stylesheets.js +7 -10
  188. package/cjs/hooks/useArduino.js +327 -255
  189. package/cjs/hooks/useExerciseFile.js +24 -24
  190. package/cjs/hooks/useExericseShortcut.js +6 -5
  191. package/cjs/hooks/useMaterialExerciseFileUrl.js +54 -37
  192. package/cjs/hooks/useRunnerRoomWebSocket.js +58 -56
  193. package/cjs/hooks/useStdioTextConcator.js +18 -12
  194. package/cjs/hooks/useStdioWebSocket.js +41 -67
  195. package/cjs/hooks/useUsercodeEditWebSocket.js +230 -252
  196. package/cjs/hooks/useUsercodeHistory.js +121 -82
  197. package/cjs/index.js +4 -4
  198. package/cjs/utils/arduino.js +23 -25
  199. package/cjs/utils/exerciseFile.js +8 -16
  200. package/cjs/utils/runner.js +29 -25
  201. package/es/_virtual/_rollupPluginBabelHelpers.js +504 -0
  202. package/es/components/material-exercise/MaterialExercise.js +33 -54
  203. package/es/components/material-exercise/MaterialExercise.styled.js +20 -23
  204. package/es/components/material-exercise/MaterialExerciseMobile.js +15 -13
  205. package/es/components/material-exercise/context/ExerciseIntlProvider.js +9 -13
  206. package/es/components/material-exercise/context/ExerciseProvider.js +79 -79
  207. package/es/components/material-exercise/context/ExerciseProviderNoImage.js +11 -13
  208. package/es/components/material-exercise/context/context.js +1 -1
  209. package/es/components/material-exercise/context/recoil.d.ts +2 -1
  210. package/es/components/material-exercise/context/recoil.js +563 -374
  211. package/es/components/material-exercise/context/recoilTypes.js +0 -5
  212. package/es/components/material-exercise/context/subjects.js +3 -6
  213. package/es/components/material-exercise/context/types.d.ts +8 -1
  214. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.d.ts +2 -2
  215. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +73 -62
  216. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
  217. package/es/components/material-exercise/exercise-code-history/locales/en.json.js +3 -0
  218. package/es/components/material-exercise/exercise-code-history/locales/ko.json.js +3 -0
  219. package/es/components/material-exercise/exercise-file/ExerciseFile.js +15 -18
  220. package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +222 -195
  221. package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -9
  222. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +31 -28
  223. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +52 -45
  224. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
  225. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +321 -225
  226. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
  227. package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +12 -14
  228. package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -10
  229. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -5
  230. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +43 -36
  231. package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +53 -37
  232. package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +25 -20
  233. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +41 -54
  234. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
  235. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +25 -19
  236. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
  237. package/es/components/material-exercise/exercise-preview/ExercisePreview.js +21 -34
  238. package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +13 -10
  239. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +17 -28
  240. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +9 -6
  241. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +81 -82
  242. package/es/components/material-exercise/exercise-room/ExerciseRoom.js +13 -7
  243. package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +14 -12
  244. package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +236 -146
  245. package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +90 -63
  246. package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -8
  247. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +218 -219
  248. package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
  249. package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +7 -9
  250. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +27 -25
  251. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +22 -24
  252. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +76 -94
  253. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +24 -26
  254. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +51 -59
  255. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -4
  256. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +6 -11
  257. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +26 -25
  258. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.d.ts +2 -2
  259. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +284 -174
  260. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
  261. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +38 -44
  262. package/es/components/material-exercise/exercise-submit-history/locales/en.json.js +3 -0
  263. package/es/components/material-exercise/exercise-submit-history/locales/ko.json.js +3 -0
  264. package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +16 -16
  265. package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -3
  266. package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -13
  267. package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -3
  268. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -15
  269. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +15 -10
  270. package/es/components/shared/exercise-version-list/ExerciseVersionList.js +2 -3
  271. package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
  272. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +5 -6
  273. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +9 -5
  274. package/es/components/shared/file-icon/FileIcon.js +20 -22
  275. package/es/components/shared/file-tabs/FileTab.js +28 -41
  276. package/es/components/shared/file-tabs/FileTab.styled.js +26 -22
  277. package/es/components/shared/file-tabs/FileTabs.js +52 -48
  278. package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
  279. package/es/components/shared/file-tabs/util.js +29 -18
  280. package/es/components/shared/file-tree/FileTree.js +3 -5
  281. package/es/components/shared/file-tree/FileTreeConfig.js +21 -22
  282. package/es/components/shared/file-tree/FileTreeList.js +31 -39
  283. package/es/components/shared/file-tree/FileTreeListItemContent.js +67 -85
  284. package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +29 -40
  285. package/es/components/shared/file-tree/FileTreeListItemContentInput.js +74 -100
  286. package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
  287. package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +48 -85
  288. package/es/components/shared/file-tree/FileTreeListItems.js +147 -152
  289. package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
  290. package/es/components/shared/file-tree/FileTreeToolbar.js +24 -37
  291. package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
  292. package/es/components/shared/file-tree/context/FileTreeContext.js +91 -97
  293. package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -22
  294. package/es/components/shared/file-tree/utils/fileTreeGenerator.js +193 -173
  295. package/es/components/shared/file-tree/utils/fileTreeInput.js +0 -1
  296. package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
  297. package/es/components/shared/file-tree/utils/fileTreePath.js +5 -7
  298. package/es/components/shared/file-viewer/FileViewer.js +52 -53
  299. package/es/components/shared/file-viewer/FileViewerCsv.js +141 -99
  300. package/es/components/shared/file-viewer/FileViewerImage.js +3 -6
  301. package/es/components/shared/file-viewer/FileViewerIpynb.js +16 -12
  302. package/es/components/shared/file-viewer/FileViewerNonViewable.js +22 -30
  303. package/es/components/shared/file-viewer/FileViewerText.js +18 -13
  304. package/es/components/shared/material-modal/MaterialModal.js +7 -11
  305. package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
  306. package/es/components/shared/monaco-editor/MonacoEditor.js +119 -147
  307. package/es/components/shared/monaco-editor/MonacoEditorLazy.js +6 -4
  308. package/es/components/shared/monaco-editor/MonacoEditorMobile.js +45 -56
  309. package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +73 -82
  310. package/es/components/shared/monaco-editor/constants/grammars/index.js +131 -52
  311. package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -9
  312. package/es/components/shared/monaco-editor/constants/themes/index.js +80 -32
  313. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
  314. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -18
  315. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
  316. package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +54 -72
  317. package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +14 -15
  318. package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +8 -9
  319. package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +33 -11
  320. package/es/components/shared/monaco-editor/editor-languages/css/index.js +2 -5
  321. package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +33 -11
  322. package/es/components/shared/monaco-editor/editor-languages/html/index.js +2 -5
  323. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
  324. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +0 -1
  325. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +0 -1
  326. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +0 -1
  327. package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +33 -11
  328. package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +10 -16
  329. package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +12 -9
  330. package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +18 -28
  331. package/es/components/shared/monaco-editor/utils/emmet/emmet.js +0 -3
  332. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +12 -8
  333. package/es/components/shared/monaco-editor/utils/grammar/index.js +67 -31
  334. package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +25 -7
  335. package/es/components/shared/monaco-editor/utils/grammar/textmate.js +67 -43
  336. package/es/components/shared/monaco-editor/utils/monacoLanguage.js +9 -19
  337. package/es/components/shared/monaco-editor/utils/monacoPreference.js +6 -5
  338. package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -3
  339. package/es/components/shared/monaco-editor/utils/prettier/index.js +27 -8
  340. package/es/components/shared/monaco-editor/utils/theme/convert.js +20 -26
  341. package/es/components/shared/monaco-editor/utils/theme/index.js +22 -5
  342. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +77 -75
  343. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +82 -93
  344. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +125 -135
  345. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +148 -160
  346. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +104 -118
  347. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
  348. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +1 -3
  349. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -3
  350. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +219 -330
  351. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -6
  352. package/es/components/shared/no-vnc/NoVnc.js +89 -88
  353. package/es/components/shared/no-vnc/NoVncLazy.js +4 -2
  354. package/es/components/shared/preview-container/PreviewContainer.js +7 -10
  355. package/es/components/shared/web-browser/WebBrowser.js +49 -56
  356. package/es/components/shared/xterm/Xterm.js +107 -102
  357. package/es/components/shared/xterm/XtermLazy.js +4 -2
  358. package/es/constants/arduino.js +10 -10
  359. package/es/constants/shortcutKeyMap.js +3 -5
  360. package/es/constants/stylesheets.js +7 -10
  361. package/es/hooks/useArduino.js +327 -255
  362. package/es/hooks/useExerciseFile.js +24 -24
  363. package/es/hooks/useExericseShortcut.js +6 -5
  364. package/es/hooks/useMaterialExerciseFileUrl.js +55 -38
  365. package/es/hooks/useRunnerRoomWebSocket.js +58 -56
  366. package/es/hooks/useStdioTextConcator.js +18 -12
  367. package/es/hooks/useStdioWebSocket.js +41 -67
  368. package/es/hooks/useUsercodeEditWebSocket.js +230 -252
  369. package/es/hooks/useUsercodeHistory.js +122 -83
  370. package/es/utils/arduino.js +23 -25
  371. package/es/utils/exerciseFile.js +8 -16
  372. package/es/utils/runner.js +29 -25
  373. 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';
@@ -10,7 +11,7 @@ import styled from 'styled-components';
10
11
  import XtermLazy from '../../shared/xterm/XtermLazy.js';
11
12
  import { MATERIAL_RESIZABLE_COMMON_PROPS } from '../../../constants/stylesheets.js';
12
13
  import { useArduino } from '../../../hooks/useArduino.js';
13
- import { exerciseState, exerciseEditorPreferenceState, exerciseRunnerSubmittingState, exerciseRunnerRunningState, exerciseRunnerRunTypeState, exerciseRunnerRoomConnectionInfoState, exerciseRunnerStdioFilesState, exercisePreviewTypeState, exercisePreviewDisplayModeState, exerciseMonacoEditorValueState, exerciseWebsocketQuery, exerciseContainerSizeState } from '../context/recoil.js';
14
+ import { exerciseState, exerciseEditorPreferenceState, exerciseRunnerSubmittingState, exerciseRunnerRunningState, exerciseRunnerRunTypeState, exerciseRunnerRoomConnectionInfoState, exerciseRunnerStdioFilesState, exercisePreviewTypeState, exercisePreviewDisplayModeState, exerciseMonacoEditorApisState, exerciseWebsocketQuery, exerciseContainerSizeState } from '../context/recoil.js';
14
15
  import { ExerciseContext } from '../context/context.js';
15
16
  import { ExercisePreviewType, ExercisePreviewDisplayMode } from '../context/recoilTypes.js';
16
17
  import { exerciseRunnerTextSend$ } from '../context/subjects.js';
@@ -32,95 +33,88 @@ 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 getExerciseMonacoEditorValueState = useRecoilValue(exerciseMonacoEditorValueState); // websockets
77
-
78
- const setRunnerRoomWebSocketState = useSetRecoilState(exerciseWebsocketQuery('runnerRoom'));
79
- const setStdioWebSocketState = useSetRecoilState(exerciseWebsocketQuery('stdio'));
80
-
81
- const handleAiHelpibotError = text => {
82
- var _a, _b;
83
-
84
- const error = getProgrammingErrorResult(text);
85
-
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) {
79
+ var _a, _b, _c;
80
+ var error = getProgrammingErrorResult(text);
86
81
  if (!!error && typeof onCodeHelpRequest === 'function') {
87
- onCodeHelpRequest(error.errorCode, error, {
82
+ onCodeHelpRequest({
83
+ code: error.errorCode,
84
+ error: error,
88
85
  readme: (_a = exercise === null || exercise === void 0 ? void 0 : exercise.description) !== null && _a !== void 0 ? _a : '',
89
86
  instruction: (_b = exercise === null || exercise === void 0 ? void 0 : exercise.instructionContent) !== null && _b !== void 0 ? _b : '',
90
- openFileContent: getExerciseMonacoEditorValueState
87
+ openFileContent: (_c = exerciseMonacoEditorApis === null || exerciseMonacoEditorApis === void 0 ? void 0 : exerciseMonacoEditorApis.getValue()) !== null && _c !== void 0 ? _c : ''
91
88
  });
92
89
  }
93
90
  };
94
-
95
- const {
96
- updateStdioTextConcator
97
- } = useStdioTextConcator(handleAiHelpibotError); // etc
98
-
99
- const exerciseContainerSize = useRecoilValue(exerciseContainerSizeState);
100
- const [runnerSubmitErrorDialog, setRunnerSubmitErrorDialog] = React.useState(null);
101
- const arduinoTextBuffer = React.useRef('');
102
- const runnerRunTypeRef = React.useRef(runnerRunTypeState);
103
- 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);
104
102
  /**
105
103
  * Handle text received from arduino serial output.
106
104
  */
107
-
108
- const handleArduinoDigitalOutput = text => {
105
+ var handleArduinoDigitalOutput = function handleArduinoDigitalOutput(text) {
109
106
  var _a;
110
-
111
107
  (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(text);
112
- }; // Arduino
113
-
114
-
115
- const arduino = useArduino({
108
+ };
109
+ // Arduino
110
+ var arduino = useArduino({
116
111
  writeTerminal: handleArduinoDigitalOutput
117
112
  });
118
- 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;
119
114
  /**
120
115
  * Handle destroy arduino client.
121
116
  */
122
-
123
- const handleArduinoDistroy = React.useCallback(() => {
117
+ var handleArduinoDistroy = React.useCallback(function () {
124
118
  if (isArduinoExercise) {
125
119
  arduino.destroy();
126
120
  }
@@ -128,20 +122,16 @@ const ExerciseRunner = ({
128
122
  /**
129
123
  * Handle text received from stdio websocket.
130
124
  */
131
-
132
- const handleWsStdioTextReceive = (type, text) => {
125
+ var handleWsStdioTextReceive = function handleWsStdioTextReceive(type, text) {
133
126
  var _a, _b, _c;
134
-
135
127
  switch (type) {
136
128
  case 'text':
137
129
  (_a = xterm.current) === null || _a === void 0 ? void 0 : _a[runnerRunTypeRef.current !== enums.ExerciseRunType.Run ? 'writeEmphasized' : 'write'](text);
138
130
  updateStdioTextConcator(text);
139
131
  break;
140
-
141
132
  case 'grader':
142
133
  (_b = xterm.current) === null || _b === void 0 ? void 0 : _b.write(text);
143
134
  break;
144
-
145
135
  case 'echo':
146
136
  (_c = xterm.current) === null || _c === void 0 ? void 0 : _c.write(text);
147
137
  break;
@@ -150,34 +140,29 @@ const ExerciseRunner = ({
150
140
  /**
151
141
  * Handle file received from stdio websocket.
152
142
  */
153
-
154
-
155
- const handleWsStdioFileReceive = stdioFile => {
143
+ var handleWsStdioFileReceive = function handleWsStdioFileReceive(stdioFile) {
156
144
  // arduino exercise
157
145
  if (isArduinoExercise) {
158
146
  if ('filename' in stdioFile && stdioFile.filename.startsWith('firmware') && stdioFile.filename.endsWith('hex')) {
159
147
  arduino.uploadHexFile(stdioFile);
160
148
  }
161
-
162
149
  return;
163
- } // normal exercise
164
-
165
-
166
- setRunnerStdioFilesState(prevFiles => [...prevFiles, stdioFile]);
150
+ }
151
+ // normal exercise
152
+ setRunnerStdioFilesState(function (prevFiles) {
153
+ return [].concat(_toConsumableArray(prevFiles), [stdioFile]);
154
+ });
167
155
  };
168
156
  /**
169
157
  * Runner room websocket
170
158
  */
171
-
172
-
173
- const wsRunnerRoom = useRunnerRoomWebSocket({
174
- exerciseRoomId
159
+ var wsRunnerRoom = useRunnerRoomWebSocket({
160
+ exerciseRoomId: exerciseRoomId
175
161
  });
176
162
  /**
177
163
  * Stdio websocket
178
164
  */
179
-
180
- const wsStdio = useStdioWebSocket({
165
+ var wsStdio = useStdioWebSocket({
181
166
  wsUri: (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.wsUri,
182
167
  roomToken: (_b = wsRunnerRoom.roomConnectionInfo) === null || _b === void 0 ? void 0 : _b.roomToken,
183
168
  isTty: (_c = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _c === void 0 ? void 0 : _c.isTty,
@@ -187,10 +172,8 @@ const ExerciseRunner = ({
187
172
  /**
188
173
  * Handle submit code error.
189
174
  */
190
-
191
- const handleRunnerSubmitError = err => {
175
+ var handleRunnerSubmitError = function handleRunnerSubmitError(err) {
192
176
  var _a, _b;
193
-
194
177
  switch ((_a = err.detail) === null || _a === void 0 ? void 0 : _a.failCode) {
195
178
  case 'room_type_mismatch':
196
179
  case 'not_found_exercise_room':
@@ -205,10 +188,11 @@ const ExerciseRunner = ({
205
188
  action: intl.formatMessage({
206
189
  id: 'exerciseRunner.submitErrorDialog.action.reload'
207
190
  }),
208
- onAction: () => window.location.reload()
191
+ onAction: function onAction() {
192
+ return window.location.reload();
193
+ }
209
194
  });
210
195
  break;
211
-
212
196
  case 'invalid_room_token':
213
197
  setRunnerSubmitErrorDialog({
214
198
  code: err.detail.failCode,
@@ -218,10 +202,11 @@ const ExerciseRunner = ({
218
202
  action: intl.formatMessage({
219
203
  id: 'exerciseRunner.submitErrorDialog.action.reload'
220
204
  }),
221
- onAction: () => window.location.reload()
205
+ onAction: function onAction() {
206
+ return window.location.reload();
207
+ }
222
208
  });
223
209
  break;
224
-
225
210
  case 'not_for_submit_grade':
226
211
  setRunnerSubmitErrorDialog({
227
212
  code: err.detail.failCode,
@@ -233,7 +218,6 @@ const ExerciseRunner = ({
233
218
  })
234
219
  });
235
220
  break;
236
-
237
221
  case 'expired_exercise_image':
238
222
  setRunnerSubmitErrorDialog({
239
223
  code: err.detail.failCode,
@@ -243,10 +227,11 @@ const ExerciseRunner = ({
243
227
  action: intl.formatMessage({
244
228
  id: 'exerciseRunner.submitErrorDialog.action.reload'
245
229
  }),
246
- onAction: () => window.location.reload()
230
+ onAction: function onAction() {
231
+ return window.location.reload();
232
+ }
247
233
  });
248
234
  break;
249
-
250
235
  case 'not_prepared_room_forwarder':
251
236
  case 'try_again':
252
237
  setRunnerSubmitErrorDialog({
@@ -259,7 +244,6 @@ const ExerciseRunner = ({
259
244
  })
260
245
  });
261
246
  break;
262
-
263
247
  case 'room_is_busy':
264
248
  setRunnerSubmitErrorDialog({
265
249
  code: err.detail.failCode,
@@ -271,7 +255,6 @@ const ExerciseRunner = ({
271
255
  })
272
256
  });
273
257
  break;
274
-
275
258
  case 'exceed_submit_grade_limit':
276
259
  setRunnerSubmitErrorDialog({
277
260
  code: err.detail.failCode,
@@ -283,7 +266,6 @@ const ExerciseRunner = ({
283
266
  })
284
267
  });
285
268
  break;
286
-
287
269
  default:
288
270
  setRunnerSubmitErrorDialog({
289
271
  code: ((_b = err === null || err === void 0 ? void 0 : err.detail) === null || _b === void 0 ? void 0 : _b.failCode) || 'unknown',
@@ -300,196 +282,217 @@ const ExerciseRunner = ({
300
282
  /**
301
283
  * Handle submit code to runner and run / grade.
302
284
  */
303
-
304
-
305
- const handleRunnerSubmit = async runType => {
306
- var _a, _b, _c;
307
-
308
- const readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
309
- const roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
310
-
311
- if (!readyExerciseImage || !roomToken) {
312
- return;
313
- }
314
-
315
- setRunnerStdioFilesState([]);
316
- setRunnerRunTypeState(runType);
317
- setRunnerSubmitting(true);
318
- return postOrgMaterialExerciseExerciseRunningSubmit({
319
- roomToken,
320
- runType,
321
- exerciseImageId: readyExerciseImage.id,
322
- vncWidth: readyExerciseImage.isVnc ? Math.max((_b = readyExerciseImage.defaultVncWidth) !== null && _b !== void 0 ? _b : 0, 640) : undefined,
323
- vncHeight: readyExerciseImage.isVnc ? Math.max((_c = readyExerciseImage.defaultVncHeight) !== null && _c !== void 0 ? _c : 0, 480) : undefined
324
- }).then(res => {
325
- if (typeof onSubmit === 'function') {
326
- onSubmit(res);
327
- }
328
- }).catch(err => {
329
- setRunnerSubmitting(false);
330
- handleRunnerSubmitError(err);
331
-
332
- if (typeof onError === 'function') {
333
- onError(err);
334
- }
335
- });
336
- };
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
+ }();
337
329
  /**
338
330
  * Handle runner to cancel running.
339
331
  */
340
-
341
-
342
- const handleRunnerCancel = async () => {
343
- var _a;
344
-
345
- const roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
346
-
347
- if (roomToken) {
348
- void postOrgMaterialExerciseExerciseRunningCancel({
349
- roomToken
350
- });
351
- }
352
- };
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
+ }();
353
354
  /**
354
355
  * Handle runner to request code sync.
355
356
  */
356
-
357
-
358
- const handleRunnerSyncRequest = () => {
357
+ var handleRunnerSyncRequest = function handleRunnerSyncRequest() {
359
358
  wsStdio.sendSync();
360
359
  };
361
360
  /**
362
361
  * Handle input requests for arduino.
363
362
  */
364
-
365
-
366
- const handleXtermArduinoInputRequest = char => {
363
+ var handleXtermArduinoInputRequest = function handleXtermArduinoInputRequest(char) {
367
364
  var _a, _b, _c;
368
-
369
365
  switch (char) {
370
366
  // backspace
371
- case '\u007f':
367
+ case "\x7F":
372
368
  (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(' ');
373
369
  arduinoTextBuffer.current = arduinoTextBuffer.current.slice(0, -1);
374
370
  break;
375
371
  // enter
376
-
377
372
  case '\r':
378
373
  if (arduinoTextBuffer.current.length) {
379
374
  (_b = xterm.current) === null || _b === void 0 ? void 0 : _b.write('\r\n');
380
375
  arduino.sendText(arduinoTextBuffer.current);
381
376
  arduinoTextBuffer.current = '';
382
377
  }
383
-
384
378
  break;
385
379
  // any char
386
-
387
380
  default:
388
381
  (_c = xterm.current) === null || _c === void 0 ? void 0 : _c.write(char);
389
- arduinoTextBuffer.current = `${arduinoTextBuffer.current}${char}`;
382
+ arduinoTextBuffer.current = "".concat(arduinoTextBuffer.current).concat(char);
390
383
  break;
391
384
  }
392
385
  };
393
386
  /**
394
387
  * Handle input requests.
395
388
  */
396
-
397
-
398
- const handleXtermInputRequest = text => {
389
+ var handleXtermInputRequest = function handleXtermInputRequest(text) {
399
390
  if (isArduinoExercise) {
400
391
  handleXtermArduinoInputRequest(text);
401
392
  } else {
402
393
  wsStdio.sendText(text);
403
394
  }
404
- }; //
395
+ };
396
+ //
405
397
  // Initialize Arduino devices.
406
398
  //
407
-
408
-
409
- React.useEffect(() => {
399
+ React.useEffect(function () {
410
400
  if (!isArduinoExercise) {
411
401
  return;
412
402
  }
413
-
414
403
  void arduino.init();
415
- return () => {
404
+ return function () {
416
405
  void arduino.destroy();
417
406
  };
418
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
419
- [exercise]); //
407
+ },
408
+ // eslint-disable-next-line react-hooks/exhaustive-deps
409
+ [exercise]);
410
+ //
420
411
  // Destroy arduino client when unload window.
421
412
  //
422
-
423
- useEvent('beforeunload', handleArduinoDistroy, window); //
413
+ useEvent('beforeunload', handleArduinoDistroy, window);
414
+ //
424
415
  // Update runner room websocket state.
425
416
  //
426
-
427
- React.useEffect(() => setRunnerRoomWebSocketState(wsRunnerRoom.readyState), // eslint-disable-next-line react-hooks/exhaustive-deps
428
- [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
+ //
429
423
  // Update stdio websocket state.
430
424
  //
431
-
432
- React.useEffect(() => setStdioWebSocketState(wsStdio.readyState), // eslint-disable-next-line react-hooks/exhaustive-deps
433
- [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
+ //
434
431
  // Set runner submitting status to false,
435
432
  // whenever runner room's running status is changed.
436
433
  // (assume that sumbitting done when running status is changed)
437
434
  //
438
-
439
- React.useEffect(() => setRunnerSubmitting(false), // eslint-disable-next-line react-hooks/exhaustive-deps
440
- [wsRunnerRoom.isRunning]); //
435
+ React.useEffect(function () {
436
+ return setRunnerSubmitting(false);
437
+ },
438
+ // eslint-disable-next-line react-hooks/exhaustive-deps
439
+ [wsRunnerRoom.isRunning]);
440
+ //
441
441
  // Auto focus terminal when running.
442
442
  //
443
-
444
- React.useEffect(() => {
443
+ React.useEffect(function () {
445
444
  if (wsRunnerRoom.isRunning) {
446
- setTimeout(() => {
445
+ setTimeout(function () {
447
446
  var _a;
448
-
449
447
  return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.focus();
450
448
  }, 100);
451
449
  }
452
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
453
- [wsRunnerRoom.isRunning]); //
450
+ },
451
+ // eslint-disable-next-line react-hooks/exhaustive-deps
452
+ [wsRunnerRoom.isRunning]);
453
+ //
454
454
  // Bind runner run type to ref.
455
455
  //
456
-
457
- React.useEffect(() => {
456
+ React.useEffect(function () {
458
457
  runnerRunTypeRef.current = runnerRunTypeState;
459
- }, [runnerRunTypeState]); //
458
+ }, [runnerRunTypeState]);
459
+ //
460
460
  // Update room connection info.
461
461
  //
462
-
463
- React.useEffect(() => setRunnerRunning(wsRunnerRoom.isRunning), // eslint-disable-next-line react-hooks/exhaustive-deps
464
- [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
+ //
465
468
  // Update room connection info.
466
469
  //
467
-
468
- React.useEffect(() => setExerciseRunnerRoomConnectionInfo(wsRunnerRoom.roomConnectionInfo), // eslint-disable-next-line react-hooks/exhaustive-deps
469
- [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
+ //
470
476
  // handle send text request to runner stdio.
471
477
  //
472
-
473
- React.useEffect(() => {
474
- const textSendSub = exerciseRunnerTextSend$.subscribe(wsStdio.sendText);
475
- return () => {
478
+ React.useEffect(function () {
479
+ var textSendSub = exerciseRunnerTextSend$.subscribe(wsStdio.sendText);
480
+ return function () {
476
481
  textSendSub.unsubscribe();
477
482
  };
478
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
483
+ },
484
+ // eslint-disable-next-line react-hooks/exhaustive-deps
479
485
  []);
480
486
  /**
481
487
  * Preview.
482
488
  */
483
-
484
- const renderPreview = () => {
489
+ var renderPreview = function renderPreview() {
485
490
  if (exercisePreviewType === ExercisePreviewType.None) {
486
491
  return null;
487
492
  }
488
-
489
493
  if (exercisePreviewDisplayMode !== ExercisePreviewDisplayMode.Mini) {
490
494
  return null;
491
495
  }
492
-
493
496
  return React.createElement(ResizableNext, Object.assign({}, MATERIAL_RESIZABLE_COMMON_PROPS, {
494
497
  children: exercisePreview,
495
498
  initialWidth: exerciseContainerSize.width * EXERCISE_RUNNER_HORIZONTAL_RATIO.PREVIEW,
@@ -500,12 +503,12 @@ const ExerciseRunner = ({
500
503
  /**
501
504
  * Xterm
502
505
  */
503
-
504
-
505
- const renderXterm = () => {
506
+ var renderXterm = function renderXterm() {
506
507
  // show system message when...
507
- const showSystemMessage = // - run type is grade
508
- 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
509
512
  !isArduinoExercise;
510
513
  return React.createElement(XtermLazy, {
511
514
  isRunning: wsRunnerRoom.isRunning,
@@ -520,35 +523,32 @@ const ExerciseRunner = ({
520
523
  /**
521
524
  * Runner submit error dialog.
522
525
  */
523
-
524
-
525
- const renderRunnerSubmitErrorDialog = () => {
526
+ var renderRunnerSubmitErrorDialog = function renderRunnerSubmitErrorDialog() {
526
527
  if (!runnerSubmitErrorDialog) {
527
528
  return null;
528
529
  }
529
-
530
530
  return React.createElement(Dialog, {
531
531
  type: "error",
532
532
  title: intl.formatMessage({
533
533
  id: 'exerciseRunner.submitErrorDialog.title'
534
534
  }),
535
- body: `${runnerSubmitErrorDialog.message}\n(error code: ${runnerSubmitErrorDialog.code})`,
536
- onHide: () => setRunnerSubmitErrorDialog(null)
535
+ body: "".concat(runnerSubmitErrorDialog.message, "\n(error code: ").concat(runnerSubmitErrorDialog.code, ")"),
536
+ onHide: function onHide() {
537
+ return setRunnerSubmitErrorDialog(null);
538
+ }
537
539
  }, React.createElement(Dialog.ActionButton, {
538
540
  children: runnerSubmitErrorDialog.action,
539
- onClick: () => {
541
+ onClick: function onClick() {
540
542
  if (typeof runnerSubmitErrorDialog.onAction === 'function') {
541
543
  runnerSubmitErrorDialog.onAction();
542
544
  }
543
-
544
545
  setRunnerSubmitErrorDialog(null);
545
546
  }
546
547
  }));
547
- }; //
548
+ };
549
+ //
548
550
  //
549
551
  //
550
-
551
-
552
552
  return React.createElement(StyledExerciseRunner, null, React.createElement(ExerciseRunnerContext.Provider, {
553
553
  value: {
554
554
  onSubmit: handleRunnerSubmit,
@@ -563,7 +563,6 @@ const ExerciseRunner = ({
563
563
  overflow: "hidden"
564
564
  }, renderPreview(), renderXterm(), renderRunnerSubmitErrorDialog())));
565
565
  };
566
-
567
566
  var ExerciseRunner$1 = withExerciseIntlProvider(ExerciseRunner, {
568
567
  en: phrasesEn,
569
568
  ko: phrasesKo