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