@elice/material-exercise 1.231227.0 → 1.231228.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/cjs/components/material-exercise/MaterialExercise.i18n.js +2 -4
  2. package/cjs/components/material-exercise/MaterialExercise.js +54 -59
  3. package/cjs/components/material-exercise/MaterialExercise.styled.js +14 -20
  4. package/cjs/components/material-exercise/MaterialExerciseMobile.js +8 -15
  5. package/cjs/components/material-exercise/context/ExerciseIntlProvider.js +14 -18
  6. package/cjs/components/material-exercise/context/ExerciseProvider.js +58 -66
  7. package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +19 -24
  8. package/cjs/components/material-exercise/context/context.js +1 -7
  9. package/cjs/components/material-exercise/context/locales/noImage.en.json.js +1 -1
  10. package/cjs/components/material-exercise/context/locales/noImage.ko.json.js +1 -1
  11. package/cjs/components/material-exercise/context/recoil.js +293 -544
  12. package/cjs/components/material-exercise/context/recoilTypes.js +0 -2
  13. package/cjs/components/material-exercise/context/subjects.js +3 -5
  14. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +60 -67
  15. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -14
  16. package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +1 -1
  17. package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +1 -1
  18. package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +17 -21
  19. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +133 -203
  20. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -12
  21. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +24 -40
  22. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +38 -52
  23. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +5 -9
  24. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +1 -1
  25. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +1 -1
  26. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +189 -328
  27. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +5 -9
  28. package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +1 -1
  29. package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +1 -1
  30. package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +14 -17
  31. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +11 -15
  32. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +7 -11
  33. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +44 -65
  34. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +32 -61
  35. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +19 -35
  36. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +48 -62
  37. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -18
  38. package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
  39. package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
  40. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +21 -32
  41. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +4 -8
  42. package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +23 -27
  43. package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +7 -17
  44. package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +1 -1
  45. package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +1 -1
  46. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +23 -32
  47. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +7 -15
  48. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +79 -86
  49. package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +1 -1
  50. package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +1 -1
  51. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +11 -22
  52. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -20
  53. package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +180 -288
  54. package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +82 -116
  55. package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -4
  56. package/cjs/components/material-exercise/exercise-room/locales/en.json.js +1 -1
  57. package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +1 -1
  58. package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +125 -181
  59. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -7
  60. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -17
  61. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +43 -58
  62. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +15 -27
  63. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +65 -68
  64. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +23 -32
  65. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +58 -92
  66. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +3 -7
  67. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +11 -16
  68. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +18 -29
  69. package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
  70. package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
  71. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +162 -282
  72. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -14
  73. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -54
  74. package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +1 -1
  75. package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +1 -1
  76. package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +15 -21
  77. package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +14 -19
  78. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +16 -21
  79. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +5 -10
  80. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +18 -23
  81. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +10 -21
  82. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -8
  83. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -7
  84. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -11
  85. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -15
  86. package/cjs/components/shared/file-icon/FileIcon.js +17 -23
  87. package/cjs/components/shared/file-tabs/FileTab.js +30 -36
  88. package/cjs/components/shared/file-tabs/FileTab.styled.js +15 -25
  89. package/cjs/components/shared/file-tabs/FileTabs.js +38 -63
  90. package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -8
  91. package/cjs/components/shared/file-tabs/util.js +14 -29
  92. package/cjs/components/shared/file-tree/FileTree.js +12 -17
  93. package/cjs/components/shared/file-tree/FileTreeConfig.js +22 -25
  94. package/cjs/components/shared/file-tree/FileTreeList.js +37 -39
  95. package/cjs/components/shared/file-tree/FileTreeListItemContent.js +61 -75
  96. package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -31
  97. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +64 -72
  98. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -12
  99. package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +63 -74
  100. package/cjs/components/shared/file-tree/FileTreeListItems.js +136 -151
  101. package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -8
  102. package/cjs/components/shared/file-tree/FileTreeToolbar.js +31 -32
  103. package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -7
  104. package/cjs/components/shared/file-tree/context/FileTreeContext.js +76 -97
  105. package/cjs/components/shared/file-tree/locales/en.json.js +1 -1
  106. package/cjs/components/shared/file-tree/locales/ko.json.js +1 -1
  107. package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -26
  108. package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +146 -195
  109. package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -2
  110. package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -3
  111. package/cjs/components/shared/file-tree/utils/fileTreePath.js +6 -7
  112. package/cjs/components/shared/file-viewer/FileViewer.js +37 -61
  113. package/cjs/components/shared/file-viewer/FileViewerCsv.js +108 -172
  114. package/cjs/components/shared/file-viewer/FileViewerImage.js +8 -12
  115. package/cjs/components/shared/file-viewer/FileViewerIpynb.js +10 -23
  116. package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +33 -42
  117. package/cjs/components/shared/file-viewer/FileViewerText.js +12 -24
  118. package/cjs/components/shared/file-viewer/locales/en.json.js +1 -1
  119. package/cjs/components/shared/file-viewer/locales/ko.json.js +1 -1
  120. package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +1 -1
  121. package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +1 -1
  122. package/cjs/components/shared/material-modal/MaterialModal.js +11 -14
  123. package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -11
  124. package/cjs/components/shared/monaco-editor/MonacoEditor.js +74 -99
  125. package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +6 -12
  126. package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +36 -50
  127. package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +91 -110
  128. package/cjs/components/shared/monaco-editor/constants/grammars/JSON.tmLanguage.json.js +1 -1
  129. package/cjs/components/shared/monaco-editor/constants/grammars/MagicPython.tmLanguage.json.js +1 -1
  130. package/cjs/components/shared/monaco-editor/constants/grammars/TypeScriptReact.tmLanguage.json.js +1 -1
  131. package/cjs/components/shared/monaco-editor/constants/grammars/asp-vb-net.tmlanguage.json.js +1 -1
  132. package/cjs/components/shared/monaco-editor/constants/grammars/c.tmLanguage.json.js +1 -1
  133. package/cjs/components/shared/monaco-editor/constants/grammars/cpp.tmLanguage.json.js +1 -1
  134. package/cjs/components/shared/monaco-editor/constants/grammars/csharp.tmLanguage.json.js +1 -1
  135. package/cjs/components/shared/monaco-editor/constants/grammars/css.tmLanguage.json.js +1 -1
  136. package/cjs/components/shared/monaco-editor/constants/grammars/dart.tmLanguage.json.js +1 -1
  137. package/cjs/components/shared/monaco-editor/constants/grammars/fsharp.tmLanguage.json.js +1 -1
  138. package/cjs/components/shared/monaco-editor/constants/grammars/go.tmLanguage.json.js +1 -1
  139. package/cjs/components/shared/monaco-editor/constants/grammars/html.tmLanguage.json.js +1 -1
  140. package/cjs/components/shared/monaco-editor/constants/grammars/index.js +28 -84
  141. package/cjs/components/shared/monaco-editor/constants/grammars/java.tmLanguage.json.js +1 -1
  142. package/cjs/components/shared/monaco-editor/constants/grammars/lua.tmLanguage.json.js +1 -1
  143. package/cjs/components/shared/monaco-editor/constants/grammars/objective-c.tmLanguage.json.js +1 -1
  144. package/cjs/components/shared/monaco-editor/constants/grammars/php.tmLanguage.json.js +1 -1
  145. package/cjs/components/shared/monaco-editor/constants/grammars/r.tmLanguage.json.js +1 -1
  146. package/cjs/components/shared/monaco-editor/constants/grammars/ruby.tmLanguage.json.js +1 -1
  147. package/cjs/components/shared/monaco-editor/constants/grammars/rust.tmLanguage.json.js +1 -1
  148. package/cjs/components/shared/monaco-editor/constants/grammars/scss.tmLanguage.json.js +1 -1
  149. package/cjs/components/shared/monaco-editor/constants/grammars/sql.tmLanguage.json.js +1 -1
  150. package/cjs/components/shared/monaco-editor/constants/grammars/swift.tmLanguage.json.js +1 -1
  151. package/cjs/components/shared/monaco-editor/constants/grammars/xml.tmLanguage.json.js +1 -1
  152. package/cjs/components/shared/monaco-editor/constants/grammars/yaml.tmLanguage.json.js +1 -1
  153. package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -7
  154. package/cjs/components/shared/monaco-editor/constants/themes/abyss.json.js +1 -1
  155. package/cjs/components/shared/monaco-editor/constants/themes/elice.json.js +1 -1
  156. package/cjs/components/shared/monaco-editor/constants/themes/index.js +17 -51
  157. package/cjs/components/shared/monaco-editor/constants/themes/kimbie-dark.json.js +1 -1
  158. package/cjs/components/shared/monaco-editor/constants/themes/monokai.json.js +1 -1
  159. package/cjs/components/shared/monaco-editor/constants/themes/quietlight.json.js +1 -1
  160. package/cjs/components/shared/monaco-editor/constants/themes/red.json.js +1 -1
  161. package/cjs/components/shared/monaco-editor/constants/themes/solarized-dark.json.js +1 -1
  162. package/cjs/components/shared/monaco-editor/constants/themes/solarized-light.json.js +1 -1
  163. package/cjs/components/shared/monaco-editor/constants/themes/tomorrow-night-blue.json.js +1 -1
  164. package/cjs/components/shared/monaco-editor/constants/themes/vs-dark-plus.json.js +1 -1
  165. package/cjs/components/shared/monaco-editor/constants/themes/vs-dark.json.js +1 -1
  166. package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-black.json.js +1 -1
  167. package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-light.json.js +1 -1
  168. package/cjs/components/shared/monaco-editor/constants/themes/vs-light-plus.json.js +1 -1
  169. package/cjs/components/shared/monaco-editor/constants/themes/vs-light.json.js +1 -1
  170. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
  171. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -17
  172. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -11
  173. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -36
  174. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -11
  175. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -8
  176. package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +11 -52
  177. package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +7 -8
  178. package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +11 -52
  179. package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +5 -6
  180. package/cjs/components/shared/monaco-editor/editor-languages/index.js +4 -4
  181. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -3
  182. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +1 -1
  183. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +1 -1
  184. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +1 -1
  185. package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +11 -56
  186. package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +17 -18
  187. package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -13
  188. package/cjs/components/shared/monaco-editor/locales/en.json.js +1 -1
  189. package/cjs/components/shared/monaco-editor/locales/ko.json.js +1 -1
  190. package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -12
  191. package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -2
  192. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -14
  193. package/cjs/components/shared/monaco-editor/utils/grammar/index.js +25 -69
  194. package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -27
  195. package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +38 -73
  196. package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +8 -11
  197. package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +4 -8
  198. package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -4
  199. package/cjs/components/shared/monaco-editor/utils/prettier/index.js +8 -46
  200. package/cjs/components/shared/monaco-editor/utils/theme/convert.js +14 -26
  201. package/cjs/components/shared/monaco-editor/utils/theme/index.js +3 -24
  202. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -79
  203. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -84
  204. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -122
  205. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +133 -158
  206. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -106
  207. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -4
  208. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -3
  209. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -4
  210. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +158 -179
  211. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -5
  212. package/cjs/components/shared/no-vnc/NoVnc.js +57 -86
  213. package/cjs/components/shared/no-vnc/NoVncLazy.js +5 -11
  214. package/cjs/components/shared/preview-container/PreviewContainer.js +11 -15
  215. package/cjs/components/shared/web-browser/WebBrowser.js +37 -53
  216. package/cjs/components/shared/xterm/Xterm.js +58 -81
  217. package/cjs/components/shared/xterm/XtermLazy.js +5 -11
  218. package/cjs/components/shared/xterm/locales/en.json.js +1 -1
  219. package/cjs/components/shared/xterm/locales/ko.json.js +1 -1
  220. package/cjs/components/shared/xterm/utils/index.js +0 -2
  221. package/cjs/constants/arduino.js +10 -12
  222. package/cjs/constants/shortcutKeyMap.js +2 -4
  223. package/cjs/constants/stylesheets.js +5 -9
  224. package/cjs/hooks/useArduino.js +141 -284
  225. package/cjs/hooks/useExerciseFile.js +22 -26
  226. package/cjs/hooks/useExericseShortcut.js +4 -8
  227. package/cjs/hooks/useMaterialExerciseFileUrl.js +33 -57
  228. package/cjs/hooks/useRunnerRoomWebSocket.js +27 -53
  229. package/cjs/hooks/useStdioTextConcator.js +10 -22
  230. package/cjs/hooks/useStdioWebSocket.js +28 -34
  231. package/cjs/hooks/useUsercodeEditWebSocket.js +158 -240
  232. package/cjs/hooks/useUsercodeHistory.js +63 -117
  233. package/cjs/index.js +4 -6
  234. package/cjs/utils/arduino.js +11 -25
  235. package/cjs/utils/exerciseFile.js +10 -10
  236. package/cjs/utils/runner.js +15 -31
  237. package/es/components/material-exercise/MaterialExercise.i18n.js +2 -2
  238. package/es/components/material-exercise/MaterialExercise.js +34 -35
  239. package/es/components/material-exercise/MaterialExercise.styled.js +14 -14
  240. package/es/components/material-exercise/MaterialExerciseMobile.js +6 -9
  241. package/es/components/material-exercise/context/ExerciseIntlProvider.js +10 -8
  242. package/es/components/material-exercise/context/ExerciseProvider.js +52 -55
  243. package/es/components/material-exercise/context/ExerciseProviderNoImage.js +10 -10
  244. package/es/components/material-exercise/context/context.js +1 -1
  245. package/es/components/material-exercise/context/recoil.js +290 -535
  246. package/es/components/material-exercise/context/subjects.js +3 -3
  247. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +51 -53
  248. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
  249. package/es/components/material-exercise/exercise-file/ExerciseFile.js +9 -8
  250. package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +127 -193
  251. package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -4
  252. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +20 -31
  253. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +35 -44
  254. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
  255. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +181 -315
  256. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
  257. package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +11 -10
  258. package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -6
  259. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -3
  260. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +25 -42
  261. package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +26 -51
  262. package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +11 -23
  263. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +21 -31
  264. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
  265. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +19 -26
  266. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
  267. package/es/components/material-exercise/exercise-preview/ExercisePreview.js +15 -14
  268. package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +5 -11
  269. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +11 -15
  270. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +5 -9
  271. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +78 -80
  272. package/es/components/material-exercise/exercise-room/ExerciseRoom.js +6 -13
  273. package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -14
  274. package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +134 -236
  275. package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +65 -94
  276. package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -2
  277. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +116 -167
  278. package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
  279. package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +8 -7
  280. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +17 -27
  281. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +11 -18
  282. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +52 -50
  283. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +10 -14
  284. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +46 -75
  285. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -2
  286. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +4 -4
  287. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +15 -21
  288. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +138 -253
  289. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
  290. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +29 -37
  291. package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +12 -13
  292. package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -2
  293. package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -12
  294. package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -2
  295. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -14
  296. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +9 -15
  297. package/es/components/shared/exercise-version-list/ExerciseVersionList.js +3 -2
  298. package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
  299. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +6 -5
  300. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -9
  301. package/es/components/shared/file-icon/FileIcon.js +15 -17
  302. package/es/components/shared/file-tabs/FileTab.js +22 -24
  303. package/es/components/shared/file-tabs/FileTab.styled.js +15 -19
  304. package/es/components/shared/file-tabs/FileTabs.js +35 -55
  305. package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
  306. package/es/components/shared/file-tabs/util.js +14 -27
  307. package/es/components/shared/file-tree/FileTree.js +3 -3
  308. package/es/components/shared/file-tree/FileTreeConfig.js +18 -15
  309. package/es/components/shared/file-tree/FileTreeList.js +33 -29
  310. package/es/components/shared/file-tree/FileTreeListItemContent.js +45 -55
  311. package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -25
  312. package/es/components/shared/file-tree/FileTreeListItemContentInput.js +60 -64
  313. package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
  314. package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +39 -46
  315. package/es/components/shared/file-tree/FileTreeListItems.js +134 -145
  316. package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
  317. package/es/components/shared/file-tree/FileTreeToolbar.js +25 -22
  318. package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
  319. package/es/components/shared/file-tree/context/FileTreeContext.js +74 -89
  320. package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -20
  321. package/es/components/shared/file-tree/utils/fileTreeGenerator.js +146 -193
  322. package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
  323. package/es/components/shared/file-tree/utils/fileTreePath.js +6 -5
  324. package/es/components/shared/file-viewer/FileViewer.js +21 -38
  325. package/es/components/shared/file-viewer/FileViewerCsv.js +70 -129
  326. package/es/components/shared/file-viewer/FileViewerImage.js +4 -3
  327. package/es/components/shared/file-viewer/FileViewerIpynb.js +7 -14
  328. package/es/components/shared/file-viewer/FileViewerNonViewable.js +15 -18
  329. package/es/components/shared/file-viewer/FileViewerText.js +9 -17
  330. package/es/components/shared/material-modal/MaterialModal.js +8 -7
  331. package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
  332. package/es/components/shared/monaco-editor/MonacoEditor.js +67 -87
  333. package/es/components/shared/monaco-editor/MonacoEditorLazy.js +2 -4
  334. package/es/components/shared/monaco-editor/MonacoEditorMobile.js +31 -41
  335. package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +52 -66
  336. package/es/components/shared/monaco-editor/constants/grammars/index.js +28 -82
  337. package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -5
  338. package/es/components/shared/monaco-editor/constants/themes/index.js +17 -49
  339. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -11
  340. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -15
  341. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
  342. package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -34
  343. package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -9
  344. package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -6
  345. package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +10 -33
  346. package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +10 -33
  347. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
  348. package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +10 -37
  349. package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +3 -3
  350. package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -11
  351. package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -10
  352. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -12
  353. package/es/components/shared/monaco-editor/utils/grammar/index.js +24 -68
  354. package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -25
  355. package/es/components/shared/monaco-editor/utils/grammar/textmate.js +35 -67
  356. package/es/components/shared/monaco-editor/utils/monacoLanguage.js +5 -5
  357. package/es/components/shared/monaco-editor/utils/monacoPreference.js +4 -6
  358. package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -2
  359. package/es/components/shared/monaco-editor/utils/prettier/index.js +7 -27
  360. package/es/components/shared/monaco-editor/utils/theme/convert.js +13 -19
  361. package/es/components/shared/monaco-editor/utils/theme/index.js +3 -22
  362. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -77
  363. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -82
  364. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -120
  365. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +130 -152
  366. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -104
  367. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
  368. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -1
  369. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -2
  370. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +157 -172
  371. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -3
  372. package/es/components/shared/no-vnc/NoVnc.js +42 -59
  373. package/es/components/shared/no-vnc/NoVncLazy.js +2 -4
  374. package/es/components/shared/preview-container/PreviewContainer.js +8 -7
  375. package/es/components/shared/web-browser/WebBrowser.js +29 -40
  376. package/es/components/shared/xterm/Xterm.js +51 -69
  377. package/es/components/shared/xterm/XtermLazy.js +2 -4
  378. package/es/constants/arduino.js +10 -10
  379. package/es/constants/shortcutKeyMap.js +1 -3
  380. package/es/constants/stylesheets.js +5 -7
  381. package/es/hooks/useArduino.js +141 -278
  382. package/es/hooks/useExerciseFile.js +22 -24
  383. package/es/hooks/useExericseShortcut.js +4 -6
  384. package/es/hooks/useMaterialExerciseFileUrl.js +34 -52
  385. package/es/hooks/useRunnerRoomWebSocket.js +27 -51
  386. package/es/hooks/useStdioTextConcator.js +10 -16
  387. package/es/hooks/useStdioWebSocket.js +28 -32
  388. package/es/hooks/useUsercodeEditWebSocket.js +157 -232
  389. package/es/hooks/useUsercodeHistory.js +63 -115
  390. package/es/utils/arduino.js +11 -23
  391. package/es/utils/exerciseFile.js +10 -8
  392. package/es/utils/runner.js +15 -29
  393. package/package.json +11 -7
  394. package/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -521
  395. package/es/_virtual/_rollupPluginBabelHelpers.js +0 -499
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray, toConsumableArray as _toConsumableArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React from 'react';
3
2
  import { useIntl } from 'react-intl';
4
3
  import { useEvent } from 'react-use';
@@ -33,51 +32,52 @@ import phrasesKo from './locales/ko.json.js';
33
32
  import { ExerciseRunnerContext } from './ExerciseRunnerContext.js';
34
33
  import ExerciseRunnerController from './ExerciseRunnerController.js';
35
34
 
36
- var EXERCISE_RUNNER_HORIZONTAL_RATIO = {
35
+ const EXERCISE_RUNNER_HORIZONTAL_RATIO = {
37
36
  PREVIEW: 0.3,
38
37
  XTERM: 0.7
39
38
  };
40
- var StyledExerciseRunner = styled.div.withConfig({
39
+ const StyledExerciseRunner = styled.div.withConfig({
41
40
  componentId: "sc-mp78g-0"
42
41
  })(["display:flex;flex-direction:column;width:100%;height:100%;background-color:", ";min-height:0;"], base.color.navy8);
43
42
  /**
44
43
  *
45
44
  */
46
- var ExerciseRunner = function ExerciseRunner(_ref) {
47
- var exercisePreview = _ref.exercisePreview;
45
+ const ExerciseRunner = ({
46
+ exercisePreview
47
+ }) => {
48
48
  var _a, _b, _c;
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;
49
+ const intl = useIntl();
50
+ const {
51
+ onCodeHelpRequest
52
+ } = React.useContext(ExerciseContext);
53
+ const {
54
+ materialExerciseId,
55
+ exerciseRoomId,
56
+ locale,
57
+ onSubmit,
58
+ onError
59
+ } = React.useContext(ExerciseContext);
60
+ const exercise = useRecoilValue(exerciseState(materialExerciseId));
61
+ const {
62
+ fontSize: editorPreferenceFontSize
63
+ } = useRecoilValue(exerciseEditorPreferenceState);
61
64
  // 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);
65
+ const setRunnerSubmitting = useSetRecoilState(exerciseRunnerSubmittingState);
66
+ const setRunnerRunning = useSetRecoilState(exerciseRunnerRunningState);
67
+ const [runnerRunTypeState, setRunnerRunTypeState] = useRecoilState(exerciseRunnerRunTypeState);
68
+ const setExerciseRunnerRoomConnectionInfo = useSetRecoilState(exerciseRunnerRoomConnectionInfoState);
69
+ const setRunnerStdioFilesState = useSetRecoilState(exerciseRunnerStdioFilesState);
70
70
  // preview states
71
- var exercisePreviewType = useRecoilValue(exercisePreviewTypeState(materialExerciseId));
72
- var exercisePreviewDisplayMode = useRecoilValue(exercisePreviewDisplayModeState);
71
+ const exercisePreviewType = useRecoilValue(exercisePreviewTypeState(materialExerciseId));
72
+ const exercisePreviewDisplayMode = useRecoilValue(exercisePreviewDisplayModeState);
73
73
  // monaco editor value
74
- var exerciseMonacoEditorApis = useRecoilValue(exerciseMonacoEditorApisState);
74
+ const exerciseMonacoEditorApis = useRecoilValue(exerciseMonacoEditorApisState);
75
75
  // websockets
76
- var setRunnerRoomWebSocketState = useSetRecoilState(exerciseWebsocketQuery('runnerRoom'));
77
- var setStdioWebSocketState = useSetRecoilState(exerciseWebsocketQuery('stdio'));
78
- var handleAiHelpibotError = function handleAiHelpibotError(text) {
76
+ const setRunnerRoomWebSocketState = useSetRecoilState(exerciseWebsocketQuery('runnerRoom'));
77
+ const setStdioWebSocketState = useSetRecoilState(exerciseWebsocketQuery('stdio'));
78
+ const handleAiHelpibotError = text => {
79
79
  var _a, _b, _c;
80
- var error = getProgrammingErrorResult(text);
80
+ const error = getProgrammingErrorResult(text);
81
81
  if (!!error && typeof onCodeHelpRequest === 'function') {
82
82
  onCodeHelpRequest({
83
83
  code: error.errorCode,
@@ -88,33 +88,31 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
88
88
  });
89
89
  }
90
90
  };
91
- var _useStdioTextConcator = useStdioTextConcator(handleAiHelpibotError),
92
- updateStdioTextConcator = _useStdioTextConcator.updateStdioTextConcator;
91
+ const {
92
+ updateStdioTextConcator
93
+ } = useStdioTextConcator(handleAiHelpibotError);
93
94
  // 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);
95
+ const exerciseContainerSize = useRecoilValue(exerciseContainerSizeState);
96
+ const [runnerSubmitErrorDialog, setRunnerSubmitErrorDialog] = React.useState(null);
97
+ const arduinoTextBuffer = React.useRef('');
98
+ const runnerRunTypeRef = React.useRef(runnerRunTypeState);
99
+ const xterm = React.useRef(null);
102
100
  /**
103
101
  * Handle text received from arduino serial output.
104
102
  */
105
- var handleArduinoDigitalOutput = function handleArduinoDigitalOutput(text) {
103
+ const handleArduinoDigitalOutput = text => {
106
104
  var _a;
107
105
  (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(text);
108
106
  };
109
107
  // Arduino
110
- var arduino = useArduino({
108
+ const arduino = useArduino({
111
109
  writeTerminal: handleArduinoDigitalOutput
112
110
  });
113
- var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
111
+ const isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
114
112
  /**
115
113
  * Handle destroy arduino client.
116
114
  */
117
- var handleArduinoDistroy = React.useCallback(function () {
115
+ const handleArduinoDistroy = React.useCallback(() => {
118
116
  if (isArduinoExercise) {
119
117
  arduino.destroy();
120
118
  }
@@ -122,7 +120,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
122
120
  /**
123
121
  * Handle text received from stdio websocket.
124
122
  */
125
- var handleWsStdioTextReceive = function handleWsStdioTextReceive(type, text) {
123
+ const handleWsStdioTextReceive = (type, text) => {
126
124
  var _a, _b, _c;
127
125
  switch (type) {
128
126
  case 'text':
@@ -140,7 +138,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
140
138
  /**
141
139
  * Handle file received from stdio websocket.
142
140
  */
143
- var handleWsStdioFileReceive = function handleWsStdioFileReceive(stdioFile) {
141
+ const handleWsStdioFileReceive = stdioFile => {
144
142
  // arduino exercise
145
143
  if (isArduinoExercise) {
146
144
  if ('filename' in stdioFile && stdioFile.filename.startsWith('firmware') && stdioFile.filename.endsWith('hex')) {
@@ -149,20 +147,18 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
149
147
  return;
150
148
  }
151
149
  // normal exercise
152
- setRunnerStdioFilesState(function (prevFiles) {
153
- return [].concat(_toConsumableArray(prevFiles), [stdioFile]);
154
- });
150
+ setRunnerStdioFilesState(prevFiles => [...prevFiles, stdioFile]);
155
151
  };
156
152
  /**
157
153
  * Runner room websocket
158
154
  */
159
- var wsRunnerRoom = useRunnerRoomWebSocket({
160
- exerciseRoomId: exerciseRoomId
155
+ const wsRunnerRoom = useRunnerRoomWebSocket({
156
+ exerciseRoomId
161
157
  });
162
158
  /**
163
159
  * Stdio websocket
164
160
  */
165
- var wsStdio = useStdioWebSocket({
161
+ const wsStdio = useStdioWebSocket({
166
162
  wsUri: (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.wsUri,
167
163
  roomToken: (_b = wsRunnerRoom.roomConnectionInfo) === null || _b === void 0 ? void 0 : _b.roomToken,
168
164
  isTty: (_c = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _c === void 0 ? void 0 : _c.isTty,
@@ -172,7 +168,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
172
168
  /**
173
169
  * Handle submit code error.
174
170
  */
175
- var handleRunnerSubmitError = function handleRunnerSubmitError(err) {
171
+ const handleRunnerSubmitError = err => {
176
172
  var _a, _b;
177
173
  switch ((_a = err.detail) === null || _a === void 0 ? void 0 : _a.failCode) {
178
174
  case 'room_type_mismatch':
@@ -188,9 +184,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
188
184
  action: intl.formatMessage({
189
185
  id: 'exerciseRunner.submitErrorDialog.action.reload'
190
186
  }),
191
- onAction: function onAction() {
192
- return window.location.reload();
193
- }
187
+ onAction: () => window.location.reload()
194
188
  });
195
189
  break;
196
190
  case 'invalid_room_token':
@@ -202,9 +196,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
202
196
  action: intl.formatMessage({
203
197
  id: 'exerciseRunner.submitErrorDialog.action.reload'
204
198
  }),
205
- onAction: function onAction() {
206
- return window.location.reload();
207
- }
199
+ onAction: () => window.location.reload()
208
200
  });
209
201
  break;
210
202
  case 'not_for_submit_grade':
@@ -227,9 +219,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
227
219
  action: intl.formatMessage({
228
220
  id: 'exerciseRunner.submitErrorDialog.action.reload'
229
221
  }),
230
- onAction: function onAction() {
231
- return window.location.reload();
232
- }
222
+ onAction: () => window.location.reload()
233
223
  });
234
224
  break;
235
225
  case 'not_prepared_room_forwarder':
@@ -282,89 +272,60 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
282
272
  /**
283
273
  * Handle submit code to runner and run / grade.
284
274
  */
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
- }();
275
+ const handleRunnerSubmit = async runType => {
276
+ var _a, _b, _c;
277
+ const readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
278
+ const roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
279
+ if (!readyExerciseImage || !roomToken) {
280
+ return;
281
+ }
282
+ setRunnerStdioFilesState([]);
283
+ setRunnerRunTypeState(runType);
284
+ setRunnerSubmitting(true);
285
+ return postOrgMaterialExerciseExerciseRunningSubmit({
286
+ roomToken,
287
+ runType,
288
+ exerciseImageId: readyExerciseImage.id,
289
+ vncWidth: readyExerciseImage.isVnc ? Math.max((_b = readyExerciseImage.defaultVncWidth) !== null && _b !== void 0 ? _b : 0, 640) : undefined,
290
+ vncHeight: readyExerciseImage.isVnc ? Math.max((_c = readyExerciseImage.defaultVncHeight) !== null && _c !== void 0 ? _c : 0, 480) : undefined
291
+ }).then(res => {
292
+ if (typeof onSubmit === 'function') {
293
+ onSubmit(res);
294
+ }
295
+ }).catch(err => {
296
+ setRunnerSubmitting(false);
297
+ handleRunnerSubmitError(err);
298
+ if (typeof onError === 'function') {
299
+ onError(err);
300
+ }
301
+ });
302
+ };
329
303
  /**
330
304
  * Handle runner to cancel running.
331
305
  */
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
- }();
306
+ const handleRunnerCancel = async () => {
307
+ var _a;
308
+ const roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
309
+ if (roomToken) {
310
+ void postOrgMaterialExerciseExerciseRunningCancel({
311
+ roomToken
312
+ });
313
+ }
314
+ };
354
315
  /**
355
316
  * Handle runner to request code sync.
356
317
  */
357
- var handleRunnerSyncRequest = function handleRunnerSyncRequest() {
318
+ const handleRunnerSyncRequest = () => {
358
319
  wsStdio.sendSync();
359
320
  };
360
321
  /**
361
322
  * Handle input requests for arduino.
362
323
  */
363
- var handleXtermArduinoInputRequest = function handleXtermArduinoInputRequest(char) {
324
+ const handleXtermArduinoInputRequest = char => {
364
325
  var _a, _b, _c;
365
326
  switch (char) {
366
327
  // backspace
367
- case "\x7F":
328
+ case '\u007f':
368
329
  (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(' ');
369
330
  arduinoTextBuffer.current = arduinoTextBuffer.current.slice(0, -1);
370
331
  break;
@@ -379,14 +340,14 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
379
340
  // any char
380
341
  default:
381
342
  (_c = xterm.current) === null || _c === void 0 ? void 0 : _c.write(char);
382
- arduinoTextBuffer.current = "".concat(arduinoTextBuffer.current).concat(char);
343
+ arduinoTextBuffer.current = `${arduinoTextBuffer.current}${char}`;
383
344
  break;
384
345
  }
385
346
  };
386
347
  /**
387
348
  * Handle input requests.
388
349
  */
389
- var handleXtermInputRequest = function handleXtermInputRequest(text) {
350
+ const handleXtermInputRequest = text => {
390
351
  if (isArduinoExercise) {
391
352
  handleXtermArduinoInputRequest(text);
392
353
  } else {
@@ -396,12 +357,12 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
396
357
  //
397
358
  // Initialize Arduino devices.
398
359
  //
399
- React.useEffect(function () {
360
+ React.useEffect(() => {
400
361
  if (!isArduinoExercise) {
401
362
  return;
402
363
  }
403
364
  void arduino.init();
404
- return function () {
365
+ return () => {
405
366
  void arduino.destroy();
406
367
  };
407
368
  },
@@ -414,17 +375,13 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
414
375
  //
415
376
  // Update runner room websocket state.
416
377
  //
417
- React.useEffect(function () {
418
- return setRunnerRoomWebSocketState(wsRunnerRoom.readyState);
419
- },
378
+ React.useEffect(() => setRunnerRoomWebSocketState(wsRunnerRoom.readyState),
420
379
  // eslint-disable-next-line react-hooks/exhaustive-deps
421
380
  [wsRunnerRoom.readyState]);
422
381
  //
423
382
  // Update stdio websocket state.
424
383
  //
425
- React.useEffect(function () {
426
- return setStdioWebSocketState(wsStdio.readyState);
427
- },
384
+ React.useEffect(() => setStdioWebSocketState(wsStdio.readyState),
428
385
  // eslint-disable-next-line react-hooks/exhaustive-deps
429
386
  [wsStdio.readyState]);
430
387
  //
@@ -432,17 +389,15 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
432
389
  // whenever runner room's running status is changed.
433
390
  // (assume that sumbitting done when running status is changed)
434
391
  //
435
- React.useEffect(function () {
436
- return setRunnerSubmitting(false);
437
- },
392
+ React.useEffect(() => setRunnerSubmitting(false),
438
393
  // eslint-disable-next-line react-hooks/exhaustive-deps
439
394
  [wsRunnerRoom.isRunning]);
440
395
  //
441
396
  // Auto focus terminal when running.
442
397
  //
443
- React.useEffect(function () {
398
+ React.useEffect(() => {
444
399
  if (wsRunnerRoom.isRunning) {
445
- setTimeout(function () {
400
+ setTimeout(() => {
446
401
  var _a;
447
402
  return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.focus();
448
403
  }, 100);
@@ -453,31 +408,27 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
453
408
  //
454
409
  // Bind runner run type to ref.
455
410
  //
456
- React.useEffect(function () {
411
+ React.useEffect(() => {
457
412
  runnerRunTypeRef.current = runnerRunTypeState;
458
413
  }, [runnerRunTypeState]);
459
414
  //
460
415
  // Update room connection info.
461
416
  //
462
- React.useEffect(function () {
463
- return setRunnerRunning(wsRunnerRoom.isRunning);
464
- },
417
+ React.useEffect(() => setRunnerRunning(wsRunnerRoom.isRunning),
465
418
  // eslint-disable-next-line react-hooks/exhaustive-deps
466
419
  [wsRunnerRoom.isRunning]);
467
420
  //
468
421
  // Update room connection info.
469
422
  //
470
- React.useEffect(function () {
471
- return setExerciseRunnerRoomConnectionInfo(wsRunnerRoom.roomConnectionInfo);
472
- },
423
+ React.useEffect(() => setExerciseRunnerRoomConnectionInfo(wsRunnerRoom.roomConnectionInfo),
473
424
  // eslint-disable-next-line react-hooks/exhaustive-deps
474
425
  [wsRunnerRoom.roomConnectionInfo]);
475
426
  //
476
427
  // handle send text request to runner stdio.
477
428
  //
478
- React.useEffect(function () {
479
- var textSendSub = exerciseRunnerTextSend$.subscribe(wsStdio.sendText);
480
- return function () {
429
+ React.useEffect(() => {
430
+ const textSendSub = exerciseRunnerTextSend$.subscribe(wsStdio.sendText);
431
+ return () => {
481
432
  textSendSub.unsubscribe();
482
433
  };
483
434
  },
@@ -486,7 +437,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
486
437
  /**
487
438
  * Preview.
488
439
  */
489
- var renderPreview = function renderPreview() {
440
+ const renderPreview = () => {
490
441
  if (exercisePreviewType === ExercisePreviewType.None) {
491
442
  return null;
492
443
  }
@@ -503,9 +454,9 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
503
454
  /**
504
455
  * Xterm
505
456
  */
506
- var renderXterm = function renderXterm() {
457
+ const renderXterm = () => {
507
458
  // show system message when...
508
- var showSystemMessage =
459
+ const showSystemMessage =
509
460
  // - run type is grade
510
461
  runnerRunTypeState === enums.ExerciseRunType.Grade ||
511
462
  // - not an arduino exercise
@@ -523,7 +474,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
523
474
  /**
524
475
  * Runner submit error dialog.
525
476
  */
526
- var renderRunnerSubmitErrorDialog = function renderRunnerSubmitErrorDialog() {
477
+ const renderRunnerSubmitErrorDialog = () => {
527
478
  if (!runnerSubmitErrorDialog) {
528
479
  return null;
529
480
  }
@@ -532,13 +483,11 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
532
483
  title: intl.formatMessage({
533
484
  id: 'exerciseRunner.submitErrorDialog.title'
534
485
  }),
535
- body: "".concat(runnerSubmitErrorDialog.message, "\n(error code: ").concat(runnerSubmitErrorDialog.code, ")"),
536
- onHide: function onHide() {
537
- return setRunnerSubmitErrorDialog(null);
538
- }
486
+ body: `${runnerSubmitErrorDialog.message}\n(error code: ${runnerSubmitErrorDialog.code})`,
487
+ onHide: () => setRunnerSubmitErrorDialog(null)
539
488
  }, React.createElement(Dialog.ActionButton, {
540
489
  children: runnerSubmitErrorDialog.action,
541
- onClick: function onClick() {
490
+ onClick: () => {
542
491
  if (typeof runnerSubmitErrorDialog.onAction === 'function') {
543
492
  runnerSubmitErrorDialog.onAction();
544
493
  }
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
2
 
3
- var ExerciseRunnerContext = React.createContext(null);
3
+ const ExerciseRunnerContext = React.createContext(null);
4
4
 
5
5
  export { ExerciseRunnerContext };
@@ -16,15 +16,16 @@ import ExerciseRunnerControllerRunningInfo from './ExerciseRunnerControllerRunni
16
16
  import ExerciseRunnerControllerStatusMessage from './ExerciseRunnerControllerStatusMessage.js';
17
17
  import ExerciseRunnerControllerTimer from './ExerciseRunnerControllerTimer.js';
18
18
 
19
- var RUNNER_CONTROLLER_HEIGHT = 50;
20
- var StyledController = styled.div.withConfig({
19
+ const RUNNER_CONTROLLER_HEIGHT = 50;
20
+ const StyledController = styled.div.withConfig({
21
21
  componentId: "sc-1fvokag-0"
22
22
  })(["display:flex;justify-content:space-between;align-items:center;padding:0.5rem 1rem;height:", "px;border-bottom:", ";"], RUNNER_CONTROLLER_HEIGHT, MATERIAL_DIVIDER_BORDER_VALUE);
23
- var ExerciseRunnerController = function ExerciseRunnerController() {
24
- var _React$useContext = React.useContext(ExerciseContext),
25
- materialExerciseId = _React$useContext.materialExerciseId;
26
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
27
- var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
23
+ const ExerciseRunnerController = () => {
24
+ const {
25
+ materialExerciseId
26
+ } = React.useContext(ExerciseContext);
27
+ const exercise = useRecoilValue(exerciseState(materialExerciseId));
28
+ const isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
28
29
  return React.createElement(StyledController, null, React.createElement(Flex, {
29
30
  align: "center"
30
31
  }, React.createElement(ExerciseRunnerControllerButtonGroup, null), React.createElement(Hspace, {
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React from 'react';
3
2
  import { useIntl, FormattedMessage } from 'react-intl';
4
3
  import { Modal, Vspace, Text, Flex, Button, Icon, Hspace } from '@elice/blocks';
@@ -11,31 +10,28 @@ import '../context/recoilTypes.js';
11
10
  import '../context/subjects.js';
12
11
  import '../context/ExerciseProvider.js';
13
12
 
14
- var ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_KEY = 'elice-material-exercise-arduino-agent-modal-closed';
15
- var ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_VALUE = 'true';
16
- var ARDUINO_AGENT_MAC_DOWNLOAD_URL = 'https://eli.so/arduino-agent-mac';
17
- var ARDUINO_AGENT_WIN_DOWNLOAD_URL = 'https://eli.so/arduino-agent-win';
18
- var ARDUINO_AGENT_MANUAL_URL = 'https://eli.so/arduino-faq';
19
- var ExerciseRunnerControllerArduinoAgentModal = function ExerciseRunnerControllerArduinoAgentModal() {
20
- var intl = useIntl();
21
- var _useRecoilState = useRecoilState(exerciseArduinoAgentModalState),
22
- _useRecoilState2 = _slicedToArray(_useRecoilState, 2),
23
- open = _useRecoilState2[0],
24
- setOpen = _useRecoilState2[1];
25
- React.useEffect(function () {
26
- var isConfirmed = localStorage.getItem(ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_KEY) === ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_VALUE;
13
+ const ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_KEY = 'elice-material-exercise-arduino-agent-modal-closed';
14
+ const ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_VALUE = 'true';
15
+ const ARDUINO_AGENT_MAC_DOWNLOAD_URL = 'https://eli.so/arduino-agent-mac';
16
+ const ARDUINO_AGENT_WIN_DOWNLOAD_URL = 'https://eli.so/arduino-agent-win';
17
+ const ARDUINO_AGENT_MANUAL_URL = 'https://eli.so/arduino-faq';
18
+ const ExerciseRunnerControllerArduinoAgentModal = () => {
19
+ const intl = useIntl();
20
+ const [open, setOpen] = useRecoilState(exerciseArduinoAgentModalState);
21
+ React.useEffect(() => {
22
+ const isConfirmed = localStorage.getItem(ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_KEY) === ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_VALUE;
27
23
  if (!isConfirmed) {
28
24
  setOpen(true);
29
25
  }
30
26
  }, [setOpen]);
31
- var handleClose = function handleClose() {
27
+ const handleClose = () => {
32
28
  setOpen(false);
33
29
  localStorage.setItem(ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_KEY, ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_VALUE);
34
30
  };
35
- var handleDownload = function handleDownload(fileUrl) {
31
+ const handleDownload = fileUrl => {
36
32
  FileSaver.saveAs(fileUrl);
37
33
  };
38
- var renderAgentInstallInstruction = function renderAgentInstallInstruction() {
34
+ const renderAgentInstallInstruction = () => {
39
35
  return React.createElement(React.Fragment, null, React.createElement(Text, {
40
36
  bold: true,
41
37
  role: "gray0"
@@ -58,9 +54,7 @@ var ExerciseRunnerControllerArduinoAgentModal = function ExerciseRunnerControlle
58
54
  size: "huge"
59
55
  }),
60
56
  iconAlign: "left",
61
- onClick: function onClick() {
62
- return handleDownload(ARDUINO_AGENT_WIN_DOWNLOAD_URL);
63
- }
57
+ onClick: () => handleDownload(ARDUINO_AGENT_WIN_DOWNLOAD_URL)
64
58
  }, React.createElement(FormattedMessage, {
65
59
  id: "exerciseRunner.controller.arduino.agent.instruction.install.window"
66
60
  })), React.createElement(Hspace, {
@@ -72,14 +66,12 @@ var ExerciseRunnerControllerArduinoAgentModal = function ExerciseRunnerControlle
72
66
  icon: eisMac
73
67
  }),
74
68
  iconAlign: "left",
75
- onClick: function onClick() {
76
- return handleDownload(ARDUINO_AGENT_MAC_DOWNLOAD_URL);
77
- }
69
+ onClick: () => handleDownload(ARDUINO_AGENT_MAC_DOWNLOAD_URL)
78
70
  }, React.createElement(FormattedMessage, {
79
71
  id: "exerciseRunner.controller.arduino.agent.instruction.install.mac"
80
72
  }))));
81
73
  };
82
- var renderAgentConnectionInstruction = function renderAgentConnectionInstruction() {
74
+ const renderAgentConnectionInstruction = () => {
83
75
  return React.createElement(React.Fragment, null, React.createElement(Text, {
84
76
  role: "gray0",
85
77
  bold: true
@@ -102,9 +94,7 @@ var ExerciseRunnerControllerArduinoAgentModal = function ExerciseRunnerControlle
102
94
  iconAlign: "right",
103
95
  size: "tiny",
104
96
  role: "secondary",
105
- onClick: function onClick() {
106
- return window.open(ARDUINO_AGENT_MANUAL_URL);
107
- }
97
+ onClick: () => window.open(ARDUINO_AGENT_MANUAL_URL)
108
98
  }, React.createElement(FormattedMessage, {
109
99
  id: "exerciseRunner.controller.arduino.agent.instruction.connect.button"
110
100
  })));