@elice/material-exercise 1.231212.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
@@ -10,34 +10,32 @@ import { checkExerciseFileEditable, checkExerciseFileResettable } from '../utils
10
10
  /**
11
11
  * Check whether the exercise file is editable.
12
12
  */
13
- var useExerciseFileEditable = function useExerciseFileEditable(filename) {
14
- var _useContext = useContext(ExerciseContext),
15
- materialExerciseId = _useContext.materialExerciseId,
16
- exerciseRoomId = _useContext.exerciseRoomId;
17
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
18
- var exerciseRoom = useRecoilValue(exerciseRoomState(exerciseRoomId));
19
- return useMemo(function () {
20
- return checkExerciseFileEditable(filename, {
21
- exercise: exercise,
22
- exerciseRoom: exerciseRoom
23
- });
24
- }, [filename, exercise, exerciseRoom]);
13
+ const useExerciseFileEditable = filename => {
14
+ const {
15
+ materialExerciseId,
16
+ exerciseRoomId
17
+ } = useContext(ExerciseContext);
18
+ const exercise = useRecoilValue(exerciseState(materialExerciseId));
19
+ const exerciseRoom = useRecoilValue(exerciseRoomState(exerciseRoomId));
20
+ return useMemo(() => checkExerciseFileEditable(filename, {
21
+ exercise,
22
+ exerciseRoom
23
+ }), [filename, exercise, exerciseRoom]);
25
24
  };
26
25
  /**
27
26
  * Check whether the exercise file is resettable.
28
27
  */
29
- var useExerciseFileResettable = function useExerciseFileResettable(filename) {
30
- var _useContext2 = useContext(ExerciseContext),
31
- materialExerciseId = _useContext2.materialExerciseId,
32
- exerciseRoomId = _useContext2.exerciseRoomId;
33
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
34
- var exerciseRoom = useRecoilValue(exerciseRoomState(exerciseRoomId));
35
- return useMemo(function () {
36
- return checkExerciseFileResettable(filename, {
37
- exercise: exercise,
38
- exerciseRoom: exerciseRoom
39
- });
40
- }, [filename, exercise, exerciseRoom]);
28
+ const useExerciseFileResettable = filename => {
29
+ const {
30
+ materialExerciseId,
31
+ exerciseRoomId
32
+ } = useContext(ExerciseContext);
33
+ const exercise = useRecoilValue(exerciseState(materialExerciseId));
34
+ const exerciseRoom = useRecoilValue(exerciseRoomState(exerciseRoomId));
35
+ return useMemo(() => checkExerciseFileResettable(filename, {
36
+ exercise,
37
+ exerciseRoom
38
+ }), [filename, exercise, exerciseRoom]);
41
39
  };
42
40
 
43
41
  export { useExerciseFileEditable, useExerciseFileResettable };
@@ -1,12 +1,10 @@
1
1
  import { useKey } from 'react-use';
2
2
  import EXERCISE_SHORTCUT_KEY_MAP from '../constants/shortcutKeyMap.js';
3
3
 
4
- var useExericseShortcut = function useExericseShortcut(name, fn) {
5
- var keys = EXERCISE_SHORTCUT_KEY_MAP[name];
6
- useKey(function (e) {
7
- if (keys && keys.some(function (key) {
8
- return key.key === e.key && key.metaKey === e.metaKey && key.ctrlKey === e.ctrlKey && key.shiftKey === e.shiftKey && key.altKey === e.altKey;
9
- })) {
4
+ const useExericseShortcut = (name, fn) => {
5
+ const keys = EXERCISE_SHORTCUT_KEY_MAP[name];
6
+ useKey(e => {
7
+ if (keys && keys.some(key => key.key === e.key && key.metaKey === e.metaKey && key.ctrlKey === e.ctrlKey && key.shiftKey === e.shiftKey && key.altKey === e.altKey)) {
10
8
  // console.log(e);
11
9
  e.preventDefault();
12
10
  e.stopPropagation();
@@ -1,63 +1,45 @@
1
- import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React from 'react';
3
- import { getOrgMaterialExerciseExerciseRoomUserFileGet, getOrgMaterialExerciseExerciseImageExerciseFileGet } from '@elice/api-client';
2
+ import { getOrgMaterialExerciseExerciseImageExerciseFileGet, getOrgMaterialExerciseExerciseRoomUserFileGet } from '@elice/api-client';
4
3
 
5
- var useMaterialExerciseFileUrl = function useMaterialExerciseFileUrl(_ref) {
6
- var filename = _ref.filename,
7
- exercise = _ref.exercise,
8
- exerciseRoomId = _ref.exerciseRoomId,
9
- onError = _ref.onError;
10
- var _React$useState = React.useState(null),
11
- _React$useState2 = _slicedToArray(_React$useState, 2),
12
- fileUrl = _React$useState2[0],
13
- setFileUrl = _React$useState2[1];
4
+ const useMaterialExerciseFileUrl = ({
5
+ filename,
6
+ exercise,
7
+ exerciseRoomId,
8
+ onError
9
+ }) => {
10
+ const [fileUrl, setFileUrl] = React.useState(null);
14
11
  //
15
12
  // Fetch file url.
16
13
  //
17
- React.useEffect(function () {
18
- var abortCtrl = new AbortController();
19
- var exerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
14
+ React.useEffect(() => {
15
+ const abortCtrl = new AbortController();
16
+ const exerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
20
17
  if (!exerciseImage || !filename) {
21
18
  return;
22
19
  }
23
- _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
24
- var _a, exerciseImageFileList;
25
- return _regeneratorRuntime().wrap(function _callee$(_context) {
26
- while (1) switch (_context.prev = _context.next) {
27
- case 0:
28
- exerciseImageFileList = (_a = exerciseImage.filelist) !== null && _a !== void 0 ? _a : []; // origin from exercise image
29
- if (!exerciseImageFileList.includes(filename)) {
30
- _context.next = 5;
31
- break;
32
- }
33
- return _context.abrupt("return", getOrgMaterialExerciseExerciseImageExerciseFileGet({
34
- exerciseImageId: exerciseImage.id,
35
- filename: filename
36
- }, {
37
- signal: abortCtrl.signal
38
- }).then(function (res) {
39
- return res.exerciseFile.url;
40
- }).catch(function () {
41
- return null;
42
- }));
43
- case 5:
44
- return _context.abrupt("return", getOrgMaterialExerciseExerciseRoomUserFileGet({
45
- exerciseRoomId: exerciseRoomId,
46
- filename: filename
47
- }, {
48
- signal: abortCtrl.signal
49
- }).then(function (res) {
50
- return res.userFile.url;
51
- }).catch(function () {
52
- return null;
53
- }));
54
- case 6:
55
- case "end":
56
- return _context.stop();
57
- }
58
- }, _callee);
59
- }))().then(setFileUrl).catch(onError);
60
- return function () {
20
+ (async () => {
21
+ var _a;
22
+ const exerciseImageFileList = (_a = exerciseImage.filelist) !== null && _a !== void 0 ? _a : [];
23
+ // origin from exercise image
24
+ if (exerciseImageFileList.includes(filename)) {
25
+ return getOrgMaterialExerciseExerciseImageExerciseFileGet({
26
+ exerciseImageId: exerciseImage.id,
27
+ filename
28
+ }, {
29
+ signal: abortCtrl.signal
30
+ }).then(res => res.exerciseFile.url).catch(() => null);
31
+ }
32
+ // origin from exercise room
33
+ else {
34
+ return getOrgMaterialExerciseExerciseRoomUserFileGet({
35
+ exerciseRoomId,
36
+ filename
37
+ }, {
38
+ signal: abortCtrl.signal
39
+ }).then(res => res.userFile.url).catch(() => null);
40
+ }
41
+ })().then(setFileUrl).catch(onError);
42
+ return () => {
61
43
  abortCtrl.abort();
62
44
  setFileUrl(null);
63
45
  };
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import { useRef, useState, useCallback, useEffect } from 'react';
3
2
  import { config, postOrgRunnerRoomExerciseRoomJoin } from '@elice/api-client';
4
3
  import { useMaterialConfig, useMaterialConfigApiClientUpdate } from '@elice/material-shared-utils';
@@ -8,43 +7,36 @@ import { camelizeKeys } from 'humps';
8
7
  //
9
8
  //
10
9
  //
11
- var MAX_WEBSOCKET_RETRY_COUNT = 5;
10
+ const MAX_WEBSOCKET_RETRY_COUNT = 5;
12
11
  /**
13
12
  *
14
13
  */
15
- var useRunnerRoomWebSocket = function useRunnerRoomWebSocket(_ref) {
16
- var exerciseRoomId = _ref.exerciseRoomId;
17
- var _return = useRef({});
18
- var _useMaterialConfig = useMaterialConfig(),
19
- apiWsOriginUrl = _useMaterialConfig.apiWsOriginUrl;
20
- var isReady = useMaterialConfigApiClientUpdate(config.init);
21
- var websocket = useRef(null);
22
- var _useState = useState(EliceWebSocket.CLOSED),
23
- _useState2 = _slicedToArray(_useState, 2),
24
- websocketReadyState = _useState2[0],
25
- setWebSocketReadyState = _useState2[1];
26
- var _useState3 = useState(false),
27
- _useState4 = _slicedToArray(_useState3, 2),
28
- isRunning = _useState4[0],
29
- setRunning = _useState4[1];
30
- var _useState5 = useState(null),
31
- _useState6 = _slicedToArray(_useState5, 2),
32
- roomConnectionInfo = _useState6[0],
33
- setRoomConnectionInfo = _useState6[1];
14
+ const useRunnerRoomWebSocket = ({
15
+ exerciseRoomId
16
+ }) => {
17
+ const _return = useRef({});
18
+ const {
19
+ apiWsOriginUrl
20
+ } = useMaterialConfig();
21
+ const isReady = useMaterialConfigApiClientUpdate(config.init);
22
+ const websocket = useRef(null);
23
+ const [websocketReadyState, setWebSocketReadyState] = useState(EliceWebSocket.CLOSED);
24
+ const [isRunning, setRunning] = useState(false);
25
+ const [roomConnectionInfo, setRoomConnectionInfo] = useState(null);
34
26
  //
35
27
  // =============== websocket ===============
36
28
  //
37
29
  /**
38
30
  * Reconnect websocket.
39
31
  */
40
- var reconnect = useCallback(function () {
32
+ const reconnect = useCallback(() => {
41
33
  var _a;
42
34
  (_a = websocket.current) === null || _a === void 0 ? void 0 : _a.reconnect();
43
35
  }, []);
44
36
  /**
45
37
  * Websocket on open.
46
38
  */
47
- var wsOpen = function wsOpen() {
39
+ const wsOpen = () => {
48
40
  if (websocket.current) {
49
41
  setWebSocketReadyState(websocket.current.readyState);
50
42
  }
@@ -52,7 +44,7 @@ var useRunnerRoomWebSocket = function useRunnerRoomWebSocket(_ref) {
52
44
  /**
53
45
  * Websocket on close.
54
46
  */
55
- var wsClose = function wsClose() {
47
+ const wsClose = () => {
56
48
  if (websocket.current) {
57
49
  setWebSocketReadyState(websocket.current.readyState);
58
50
  }
@@ -60,7 +52,7 @@ var useRunnerRoomWebSocket = function useRunnerRoomWebSocket(_ref) {
60
52
  /**
61
53
  * Websocket on error.
62
54
  */
63
- var wsError = function wsError() {
55
+ const wsError = () => {
64
56
  if (websocket.current) {
65
57
  setWebSocketReadyState(websocket.current.readyState);
66
58
  }
@@ -68,8 +60,8 @@ var useRunnerRoomWebSocket = function useRunnerRoomWebSocket(_ref) {
68
60
  /**
69
61
  * Websocket on message.
70
62
  */
71
- var wsMessage = function wsMessage(e) {
72
- var msg = camelizeKeys(e.data);
63
+ const wsMessage = e => {
64
+ const msg = camelizeKeys(e.data);
73
65
  switch (msg.type) {
74
66
  case 'ROOM_PREPARED':
75
67
  wsMessageRoomPrepared(msg);
@@ -85,7 +77,7 @@ var useRunnerRoomWebSocket = function useRunnerRoomWebSocket(_ref) {
85
77
  /**
86
78
  * Websocket on `ROOM_PREPARED` message.
87
79
  */
88
- var wsMessageRoomPrepared = function wsMessageRoomPrepared(msg) {
80
+ const wsMessageRoomPrepared = msg => {
89
81
  setRoomConnectionInfo(Object.assign(Object.assign({}, msg.data.forwarder), {
90
82
  roomToken: msg.data.roomToken
91
83
  }));
@@ -93,41 +85,25 @@ var useRunnerRoomWebSocket = function useRunnerRoomWebSocket(_ref) {
93
85
  /**
94
86
  * Websocket on `EXECUTE_CONTAINER` message.
95
87
  */
96
- var wsMessageExecuteContainer = function wsMessageExecuteContainer(msg) {
88
+ const wsMessageExecuteContainer = msg => {
97
89
  setRunning(true);
98
90
  };
99
91
  /**
100
92
  * Websocket on `EXECUTE_DONE` message.
101
93
  */
102
- var wsMessageExecuteDone = function wsMessageExecuteDone(msg) {
94
+ const wsMessageExecuteDone = msg => {
103
95
  setRunning(false);
104
96
  };
105
97
  /**
106
98
  * Create usercode websocket url.
107
99
  */
108
- var createUsercodeUrl = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
109
- return _regeneratorRuntime().wrap(function _callee$(_context) {
110
- while (1) switch (_context.prev = _context.next) {
111
- case 0:
112
- return _context.abrupt("return", Promise.resolve("".concat(apiWsOriginUrl, "/runner_room")).then(function (url) {
113
- return postOrgRunnerRoomExerciseRoomJoin({
114
- exerciseRoomId: exerciseRoomId
115
- }).then(function (data) {
116
- return "".concat(url, "/").concat(data.roomToken);
117
- }).catch(function () {
118
- return "".concat(url, "/");
119
- });
120
- }));
121
- case 1:
122
- case "end":
123
- return _context.stop();
124
- }
125
- }, _callee);
126
- })), [apiWsOriginUrl, exerciseRoomId]);
100
+ const createUsercodeUrl = useCallback(async () => Promise.resolve(`${apiWsOriginUrl}/runner_room`).then(url => postOrgRunnerRoomExerciseRoomJoin({
101
+ exerciseRoomId
102
+ }).then(data => `${url}/${data.roomToken}`).catch(() => `${url}/`)), [apiWsOriginUrl, exerciseRoomId]);
127
103
  //
128
104
  // Initialize websocket.
129
105
  //
130
- useEffect(function () {
106
+ useEffect(() => {
131
107
  if (!isReady) {
132
108
  return;
133
109
  }
@@ -138,7 +114,7 @@ var useRunnerRoomWebSocket = function useRunnerRoomWebSocket(_ref) {
138
114
  websocket.current.onclose = wsClose;
139
115
  websocket.current.onmessage = wsMessage;
140
116
  websocket.current.onerror = wsError;
141
- return function () {
117
+ return () => {
142
118
  if (websocket.current) {
143
119
  websocket.current.close();
144
120
  }
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray } from '../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React from 'react';
3
2
  import { useRecoilValue } from 'recoil';
4
3
  import { exerciseRunnerRunningState } from '../components/material-exercise/context/recoil.js';
@@ -7,31 +6,26 @@ import '../components/material-exercise/context/recoilTypes.js';
7
6
  import '../components/material-exercise/context/subjects.js';
8
7
  import '../components/material-exercise/context/ExerciseProvider.js';
9
8
 
10
- var useStdioTextConcator = function useStdioTextConcator(done) {
11
- var RUNNER_AND_STDIO_DELAY_SAFETY_FACTOR = 1000;
12
- var _React$useState = React.useState(''),
13
- _React$useState2 = _slicedToArray(_React$useState, 2),
14
- text = _React$useState2[0],
15
- setText = _React$useState2[1];
16
- var isRunning = useRecoilValue(exerciseRunnerRunningState);
17
- React.useEffect(function () {
9
+ const useStdioTextConcator = done => {
10
+ const RUNNER_AND_STDIO_DELAY_SAFETY_FACTOR = 1000;
11
+ const [text, setText] = React.useState('');
12
+ const isRunning = useRecoilValue(exerciseRunnerRunningState);
13
+ React.useEffect(() => {
18
14
  if (isRunning) {
19
15
  setText('');
20
16
  } else {
21
- setTimeout(function () {
17
+ setTimeout(() => {
22
18
  done(text);
23
19
  }, RUNNER_AND_STDIO_DELAY_SAFETY_FACTOR);
24
20
  }
25
21
  // eslint-disable-next-line react-hooks/exhaustive-deps
26
22
  }, [isRunning]);
27
- var updateStdioTextConcator = React.useCallback(function (text) {
28
- setText(function (state) {
29
- return state.concat(text);
30
- });
23
+ const updateStdioTextConcator = React.useCallback(text => {
24
+ setText(state => state.concat(text));
31
25
  }, []);
32
26
  return {
33
- updateStdioTextConcator: updateStdioTextConcator,
34
- done: done
27
+ updateStdioTextConcator,
28
+ done
35
29
  };
36
30
  };
37
31
 
@@ -1,31 +1,27 @@
1
- import { slicedToArray as _slicedToArray } from '../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import { useRef, useState, useCallback, useEffect } from 'react';
3
2
  import { EliceWebSocket } from '@elice/websocket';
4
3
 
5
4
  //
6
5
  //
7
6
  //
8
- var MAX_WEBSOCKET_RETRY_COUNT = 5;
7
+ const MAX_WEBSOCKET_RETRY_COUNT = 5;
9
8
  /**
10
9
  *
11
10
  */
12
- var useStdioWebSocket = function useStdioWebSocket(_ref) {
13
- var wsUri = _ref.wsUri,
14
- roomToken = _ref.roomToken,
15
- _ref$isTty = _ref.isTty,
16
- isTty = _ref$isTty === void 0 ? false : _ref$isTty,
17
- onTextReceive = _ref.onTextReceive,
18
- onFileReceive = _ref.onFileReceive;
19
- var _return = useRef({});
20
- var websocket = useRef(null);
21
- var _useState = useState(EliceWebSocket.CLOSED),
22
- _useState2 = _slicedToArray(_useState, 2),
23
- websocketReadyState = _useState2[0],
24
- setWebSocketReadyState = _useState2[1];
11
+ const useStdioWebSocket = ({
12
+ wsUri,
13
+ roomToken,
14
+ isTty = false,
15
+ onTextReceive,
16
+ onFileReceive
17
+ }) => {
18
+ const _return = useRef({});
19
+ const websocket = useRef(null);
20
+ const [websocketReadyState, setWebSocketReadyState] = useState(EliceWebSocket.CLOSED);
25
21
  /**
26
22
  * Handle stdio text received.
27
23
  */
28
- var handleTextReceive = function handleTextReceive(type, text) {
24
+ const handleTextReceive = (type, text) => {
29
25
  if (typeof onTextReceive === 'function') {
30
26
  onTextReceive(type, text);
31
27
  }
@@ -33,7 +29,7 @@ var useStdioWebSocket = function useStdioWebSocket(_ref) {
33
29
  /**
34
30
  * Handle stdio file received.
35
31
  */
36
- var handleFileReceive = function handleFileReceive(file) {
32
+ const handleFileReceive = file => {
37
33
  if (typeof onFileReceive === 'function') {
38
34
  onFileReceive(file);
39
35
  }
@@ -41,7 +37,7 @@ var useStdioWebSocket = function useStdioWebSocket(_ref) {
41
37
  /**
42
38
  * Provide a utf-8 encoded string to `/dev/stdin` in the container.
43
39
  */
44
- var sendText = useCallback(function (data) {
40
+ const sendText = useCallback(data => {
45
41
  var _a;
46
42
  (_a = websocket.current) === null || _a === void 0 ? void 0 : _a.sendJson({
47
43
  type: 'text',
@@ -51,28 +47,28 @@ var useStdioWebSocket = function useStdioWebSocket(_ref) {
51
47
  /**
52
48
  * Send a signal (e.g. SIGINT, SIGQUIT, etc.) to the process with PID 1 in the container.
53
49
  */
54
- var sendSignal = useCallback(function (data) {
50
+ const sendSignal = useCallback(data => {
55
51
  var _a;
56
52
  (_a = websocket.current) === null || _a === void 0 ? void 0 : _a.sendJson({
57
53
  type: 'signal',
58
- data: data
54
+ data
59
55
  });
60
56
  }, []);
61
57
  /**
62
58
  * Resize TTY of the container.
63
59
  */
64
- var sendTtyResize = useCallback(function (data) {
60
+ const sendTtyResize = useCallback(data => {
65
61
  var _a;
66
62
  (_a = websocket.current) === null || _a === void 0 ? void 0 : _a.sendJson({
67
63
  type: 'tty-resize',
68
- data: data
64
+ data
69
65
  });
70
66
  }, []);
71
67
  /**
72
68
  * Update the content of usercodes (which are edited by `usercode.edit` API)
73
69
  * and user files (which are added or deleted by `user_file.(add|delete)` API) in the container.
74
70
  */
75
- var sendSync = useCallback(function () {
71
+ const sendSync = useCallback(() => {
76
72
  var _a;
77
73
  (_a = websocket.current) === null || _a === void 0 ? void 0 : _a.sendJson({
78
74
  type: 'sync'
@@ -84,14 +80,14 @@ var useStdioWebSocket = function useStdioWebSocket(_ref) {
84
80
  /**
85
81
  * Reconnect websocket.
86
82
  */
87
- var reconnect = useCallback(function () {
83
+ const reconnect = useCallback(() => {
88
84
  var _a;
89
85
  (_a = websocket.current) === null || _a === void 0 ? void 0 : _a.reconnect();
90
86
  }, []);
91
87
  /**
92
88
  * Websocket on open.
93
89
  */
94
- var wsOpen = function wsOpen() {
90
+ const wsOpen = () => {
95
91
  if (websocket.current) {
96
92
  setWebSocketReadyState(websocket.current.readyState);
97
93
  }
@@ -99,7 +95,7 @@ var useStdioWebSocket = function useStdioWebSocket(_ref) {
99
95
  /**
100
96
  * Websocket on close.
101
97
  */
102
- var wsClose = function wsClose() {
98
+ const wsClose = () => {
103
99
  if (websocket.current) {
104
100
  setWebSocketReadyState(websocket.current.readyState);
105
101
  }
@@ -107,7 +103,7 @@ var useStdioWebSocket = function useStdioWebSocket(_ref) {
107
103
  /**
108
104
  * Websocket on error.
109
105
  */
110
- var wsError = function wsError() {
106
+ const wsError = () => {
111
107
  if (websocket.current) {
112
108
  setWebSocketReadyState(websocket.current.readyState);
113
109
  }
@@ -115,8 +111,8 @@ var useStdioWebSocket = function useStdioWebSocket(_ref) {
115
111
  /**
116
112
  * Websocket on message.
117
113
  */
118
- var wsMessage = function wsMessage(e) {
119
- var msg = e.data;
114
+ const wsMessage = e => {
115
+ const msg = e.data;
120
116
  switch (msg.type) {
121
117
  case 'text':
122
118
  handleTextReceive(msg.type, msg.data);
@@ -152,11 +148,11 @@ var useStdioWebSocket = function useStdioWebSocket(_ref) {
152
148
  //
153
149
  // Initialize websocket.
154
150
  //
155
- useEffect(function () {
151
+ useEffect(() => {
156
152
  if (!wsUri || !roomToken) {
157
153
  return;
158
154
  }
159
- websocket.current = new EliceWebSocket("".concat(wsUri, "/client/stdio/").concat(roomToken), undefined, {
155
+ websocket.current = new EliceWebSocket(`${wsUri}/client/stdio/${roomToken}`, undefined, {
160
156
  maxRetries: MAX_WEBSOCKET_RETRY_COUNT,
161
157
  heartAttack: true
162
158
  });
@@ -164,7 +160,7 @@ var useStdioWebSocket = function useStdioWebSocket(_ref) {
164
160
  websocket.current.onclose = wsClose;
165
161
  websocket.current.onmessage = wsMessage;
166
162
  websocket.current.onerror = wsError;
167
- return function () {
163
+ return () => {
168
164
  if (websocket.current) {
169
165
  websocket.current.close();
170
166
  }