@elice/material-exercise 1.231227.0 → 1.231228.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/cjs/components/material-exercise/MaterialExercise.i18n.js +2 -4
  2. package/cjs/components/material-exercise/MaterialExercise.js +54 -59
  3. package/cjs/components/material-exercise/MaterialExercise.styled.js +14 -20
  4. package/cjs/components/material-exercise/MaterialExerciseMobile.js +8 -15
  5. package/cjs/components/material-exercise/context/ExerciseIntlProvider.js +14 -18
  6. package/cjs/components/material-exercise/context/ExerciseProvider.js +58 -66
  7. package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +19 -24
  8. package/cjs/components/material-exercise/context/context.js +1 -7
  9. package/cjs/components/material-exercise/context/locales/noImage.en.json.js +1 -1
  10. package/cjs/components/material-exercise/context/locales/noImage.ko.json.js +1 -1
  11. package/cjs/components/material-exercise/context/recoil.js +293 -544
  12. package/cjs/components/material-exercise/context/recoilTypes.js +0 -2
  13. package/cjs/components/material-exercise/context/subjects.js +3 -5
  14. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +60 -67
  15. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -14
  16. package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +1 -1
  17. package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +1 -1
  18. package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +17 -21
  19. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +133 -203
  20. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -12
  21. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +24 -40
  22. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +38 -52
  23. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +5 -9
  24. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +1 -1
  25. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +1 -1
  26. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +189 -328
  27. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +5 -9
  28. package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +1 -1
  29. package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +1 -1
  30. package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +14 -17
  31. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +11 -15
  32. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +7 -11
  33. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +44 -65
  34. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +32 -61
  35. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +19 -35
  36. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +48 -62
  37. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -18
  38. package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
  39. package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
  40. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +21 -32
  41. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +4 -8
  42. package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +23 -27
  43. package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +7 -17
  44. package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +1 -1
  45. package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +1 -1
  46. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +23 -32
  47. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +7 -15
  48. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +79 -86
  49. package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +1 -1
  50. package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +1 -1
  51. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +11 -22
  52. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -20
  53. package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +180 -288
  54. package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +82 -116
  55. package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -4
  56. package/cjs/components/material-exercise/exercise-room/locales/en.json.js +1 -1
  57. package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +1 -1
  58. package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +125 -181
  59. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -7
  60. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -17
  61. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +43 -58
  62. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +15 -27
  63. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +65 -68
  64. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +23 -32
  65. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +58 -92
  66. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +3 -7
  67. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +11 -16
  68. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +18 -29
  69. package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
  70. package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
  71. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +162 -282
  72. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -14
  73. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -54
  74. package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +1 -1
  75. package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +1 -1
  76. package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +15 -21
  77. package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +14 -19
  78. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +16 -21
  79. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +5 -10
  80. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +18 -23
  81. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +10 -21
  82. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -8
  83. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -7
  84. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -11
  85. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -15
  86. package/cjs/components/shared/file-icon/FileIcon.js +17 -23
  87. package/cjs/components/shared/file-tabs/FileTab.js +30 -36
  88. package/cjs/components/shared/file-tabs/FileTab.styled.js +15 -25
  89. package/cjs/components/shared/file-tabs/FileTabs.js +38 -63
  90. package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -8
  91. package/cjs/components/shared/file-tabs/util.js +14 -29
  92. package/cjs/components/shared/file-tree/FileTree.js +12 -17
  93. package/cjs/components/shared/file-tree/FileTreeConfig.js +22 -25
  94. package/cjs/components/shared/file-tree/FileTreeList.js +37 -39
  95. package/cjs/components/shared/file-tree/FileTreeListItemContent.js +61 -75
  96. package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -31
  97. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +64 -72
  98. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -12
  99. package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +63 -74
  100. package/cjs/components/shared/file-tree/FileTreeListItems.js +136 -151
  101. package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -8
  102. package/cjs/components/shared/file-tree/FileTreeToolbar.js +31 -32
  103. package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -7
  104. package/cjs/components/shared/file-tree/context/FileTreeContext.js +76 -97
  105. package/cjs/components/shared/file-tree/locales/en.json.js +1 -1
  106. package/cjs/components/shared/file-tree/locales/ko.json.js +1 -1
  107. package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -26
  108. package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +146 -195
  109. package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -2
  110. package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -3
  111. package/cjs/components/shared/file-tree/utils/fileTreePath.js +6 -7
  112. package/cjs/components/shared/file-viewer/FileViewer.js +37 -61
  113. package/cjs/components/shared/file-viewer/FileViewerCsv.js +108 -172
  114. package/cjs/components/shared/file-viewer/FileViewerImage.js +8 -12
  115. package/cjs/components/shared/file-viewer/FileViewerIpynb.js +10 -23
  116. package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +33 -42
  117. package/cjs/components/shared/file-viewer/FileViewerText.js +12 -24
  118. package/cjs/components/shared/file-viewer/locales/en.json.js +1 -1
  119. package/cjs/components/shared/file-viewer/locales/ko.json.js +1 -1
  120. package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +1 -1
  121. package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +1 -1
  122. package/cjs/components/shared/material-modal/MaterialModal.js +11 -14
  123. package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -11
  124. package/cjs/components/shared/monaco-editor/MonacoEditor.js +74 -99
  125. package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +6 -12
  126. package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +36 -50
  127. package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +91 -110
  128. package/cjs/components/shared/monaco-editor/constants/grammars/JSON.tmLanguage.json.js +1 -1
  129. package/cjs/components/shared/monaco-editor/constants/grammars/MagicPython.tmLanguage.json.js +1 -1
  130. package/cjs/components/shared/monaco-editor/constants/grammars/TypeScriptReact.tmLanguage.json.js +1 -1
  131. package/cjs/components/shared/monaco-editor/constants/grammars/asp-vb-net.tmlanguage.json.js +1 -1
  132. package/cjs/components/shared/monaco-editor/constants/grammars/c.tmLanguage.json.js +1 -1
  133. package/cjs/components/shared/monaco-editor/constants/grammars/cpp.tmLanguage.json.js +1 -1
  134. package/cjs/components/shared/monaco-editor/constants/grammars/csharp.tmLanguage.json.js +1 -1
  135. package/cjs/components/shared/monaco-editor/constants/grammars/css.tmLanguage.json.js +1 -1
  136. package/cjs/components/shared/monaco-editor/constants/grammars/dart.tmLanguage.json.js +1 -1
  137. package/cjs/components/shared/monaco-editor/constants/grammars/fsharp.tmLanguage.json.js +1 -1
  138. package/cjs/components/shared/monaco-editor/constants/grammars/go.tmLanguage.json.js +1 -1
  139. package/cjs/components/shared/monaco-editor/constants/grammars/html.tmLanguage.json.js +1 -1
  140. package/cjs/components/shared/monaco-editor/constants/grammars/index.js +28 -84
  141. package/cjs/components/shared/monaco-editor/constants/grammars/java.tmLanguage.json.js +1 -1
  142. package/cjs/components/shared/monaco-editor/constants/grammars/lua.tmLanguage.json.js +1 -1
  143. package/cjs/components/shared/monaco-editor/constants/grammars/objective-c.tmLanguage.json.js +1 -1
  144. package/cjs/components/shared/monaco-editor/constants/grammars/php.tmLanguage.json.js +1 -1
  145. package/cjs/components/shared/monaco-editor/constants/grammars/r.tmLanguage.json.js +1 -1
  146. package/cjs/components/shared/monaco-editor/constants/grammars/ruby.tmLanguage.json.js +1 -1
  147. package/cjs/components/shared/monaco-editor/constants/grammars/rust.tmLanguage.json.js +1 -1
  148. package/cjs/components/shared/monaco-editor/constants/grammars/scss.tmLanguage.json.js +1 -1
  149. package/cjs/components/shared/monaco-editor/constants/grammars/sql.tmLanguage.json.js +1 -1
  150. package/cjs/components/shared/monaco-editor/constants/grammars/swift.tmLanguage.json.js +1 -1
  151. package/cjs/components/shared/monaco-editor/constants/grammars/xml.tmLanguage.json.js +1 -1
  152. package/cjs/components/shared/monaco-editor/constants/grammars/yaml.tmLanguage.json.js +1 -1
  153. package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -7
  154. package/cjs/components/shared/monaco-editor/constants/themes/abyss.json.js +1 -1
  155. package/cjs/components/shared/monaco-editor/constants/themes/elice.json.js +1 -1
  156. package/cjs/components/shared/monaco-editor/constants/themes/index.js +17 -51
  157. package/cjs/components/shared/monaco-editor/constants/themes/kimbie-dark.json.js +1 -1
  158. package/cjs/components/shared/monaco-editor/constants/themes/monokai.json.js +1 -1
  159. package/cjs/components/shared/monaco-editor/constants/themes/quietlight.json.js +1 -1
  160. package/cjs/components/shared/monaco-editor/constants/themes/red.json.js +1 -1
  161. package/cjs/components/shared/monaco-editor/constants/themes/solarized-dark.json.js +1 -1
  162. package/cjs/components/shared/monaco-editor/constants/themes/solarized-light.json.js +1 -1
  163. package/cjs/components/shared/monaco-editor/constants/themes/tomorrow-night-blue.json.js +1 -1
  164. package/cjs/components/shared/monaco-editor/constants/themes/vs-dark-plus.json.js +1 -1
  165. package/cjs/components/shared/monaco-editor/constants/themes/vs-dark.json.js +1 -1
  166. package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-black.json.js +1 -1
  167. package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-light.json.js +1 -1
  168. package/cjs/components/shared/monaco-editor/constants/themes/vs-light-plus.json.js +1 -1
  169. package/cjs/components/shared/monaco-editor/constants/themes/vs-light.json.js +1 -1
  170. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
  171. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -17
  172. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -11
  173. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -36
  174. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -11
  175. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -8
  176. package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +11 -52
  177. package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +7 -8
  178. package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +11 -52
  179. package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +5 -6
  180. package/cjs/components/shared/monaco-editor/editor-languages/index.js +4 -4
  181. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -3
  182. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +1 -1
  183. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +1 -1
  184. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +1 -1
  185. package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +11 -56
  186. package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +17 -18
  187. package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -13
  188. package/cjs/components/shared/monaco-editor/locales/en.json.js +1 -1
  189. package/cjs/components/shared/monaco-editor/locales/ko.json.js +1 -1
  190. package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -12
  191. package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -2
  192. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -14
  193. package/cjs/components/shared/monaco-editor/utils/grammar/index.js +25 -69
  194. package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -27
  195. package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +38 -73
  196. package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +8 -11
  197. package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +4 -8
  198. package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -4
  199. package/cjs/components/shared/monaco-editor/utils/prettier/index.js +8 -46
  200. package/cjs/components/shared/monaco-editor/utils/theme/convert.js +14 -26
  201. package/cjs/components/shared/monaco-editor/utils/theme/index.js +3 -24
  202. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -79
  203. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -84
  204. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -122
  205. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +133 -158
  206. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -106
  207. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -4
  208. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -3
  209. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -4
  210. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +158 -179
  211. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -5
  212. package/cjs/components/shared/no-vnc/NoVnc.js +57 -86
  213. package/cjs/components/shared/no-vnc/NoVncLazy.js +5 -11
  214. package/cjs/components/shared/preview-container/PreviewContainer.js +11 -15
  215. package/cjs/components/shared/web-browser/WebBrowser.js +37 -53
  216. package/cjs/components/shared/xterm/Xterm.js +58 -81
  217. package/cjs/components/shared/xterm/XtermLazy.js +5 -11
  218. package/cjs/components/shared/xterm/locales/en.json.js +1 -1
  219. package/cjs/components/shared/xterm/locales/ko.json.js +1 -1
  220. package/cjs/components/shared/xterm/utils/index.js +0 -2
  221. package/cjs/constants/arduino.js +10 -12
  222. package/cjs/constants/shortcutKeyMap.js +2 -4
  223. package/cjs/constants/stylesheets.js +5 -9
  224. package/cjs/hooks/useArduino.js +141 -284
  225. package/cjs/hooks/useExerciseFile.js +22 -26
  226. package/cjs/hooks/useExericseShortcut.js +4 -8
  227. package/cjs/hooks/useMaterialExerciseFileUrl.js +33 -57
  228. package/cjs/hooks/useRunnerRoomWebSocket.js +27 -53
  229. package/cjs/hooks/useStdioTextConcator.js +10 -22
  230. package/cjs/hooks/useStdioWebSocket.js +28 -34
  231. package/cjs/hooks/useUsercodeEditWebSocket.js +158 -240
  232. package/cjs/hooks/useUsercodeHistory.js +63 -117
  233. package/cjs/index.js +4 -6
  234. package/cjs/utils/arduino.js +11 -25
  235. package/cjs/utils/exerciseFile.js +10 -10
  236. package/cjs/utils/runner.js +15 -31
  237. package/es/components/material-exercise/MaterialExercise.i18n.js +2 -2
  238. package/es/components/material-exercise/MaterialExercise.js +34 -35
  239. package/es/components/material-exercise/MaterialExercise.styled.js +14 -14
  240. package/es/components/material-exercise/MaterialExerciseMobile.js +6 -9
  241. package/es/components/material-exercise/context/ExerciseIntlProvider.js +10 -8
  242. package/es/components/material-exercise/context/ExerciseProvider.js +52 -55
  243. package/es/components/material-exercise/context/ExerciseProviderNoImage.js +10 -10
  244. package/es/components/material-exercise/context/context.js +1 -1
  245. package/es/components/material-exercise/context/recoil.js +290 -535
  246. package/es/components/material-exercise/context/subjects.js +3 -3
  247. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +51 -53
  248. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
  249. package/es/components/material-exercise/exercise-file/ExerciseFile.js +9 -8
  250. package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +127 -193
  251. package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -4
  252. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +20 -31
  253. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +35 -44
  254. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
  255. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +181 -315
  256. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
  257. package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +11 -10
  258. package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -6
  259. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -3
  260. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +25 -42
  261. package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +26 -51
  262. package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +11 -23
  263. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +21 -31
  264. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
  265. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +19 -26
  266. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
  267. package/es/components/material-exercise/exercise-preview/ExercisePreview.js +15 -14
  268. package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +5 -11
  269. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +11 -15
  270. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +5 -9
  271. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +78 -80
  272. package/es/components/material-exercise/exercise-room/ExerciseRoom.js +6 -13
  273. package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -14
  274. package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +134 -236
  275. package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +65 -94
  276. package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -2
  277. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +116 -167
  278. package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
  279. package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +8 -7
  280. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +17 -27
  281. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +11 -18
  282. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +52 -50
  283. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +10 -14
  284. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +46 -75
  285. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -2
  286. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +4 -4
  287. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +15 -21
  288. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +138 -253
  289. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
  290. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +29 -37
  291. package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +12 -13
  292. package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -2
  293. package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -12
  294. package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -2
  295. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -14
  296. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +9 -15
  297. package/es/components/shared/exercise-version-list/ExerciseVersionList.js +3 -2
  298. package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
  299. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +6 -5
  300. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -9
  301. package/es/components/shared/file-icon/FileIcon.js +15 -17
  302. package/es/components/shared/file-tabs/FileTab.js +22 -24
  303. package/es/components/shared/file-tabs/FileTab.styled.js +15 -19
  304. package/es/components/shared/file-tabs/FileTabs.js +35 -55
  305. package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
  306. package/es/components/shared/file-tabs/util.js +14 -27
  307. package/es/components/shared/file-tree/FileTree.js +3 -3
  308. package/es/components/shared/file-tree/FileTreeConfig.js +18 -15
  309. package/es/components/shared/file-tree/FileTreeList.js +33 -29
  310. package/es/components/shared/file-tree/FileTreeListItemContent.js +45 -55
  311. package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -25
  312. package/es/components/shared/file-tree/FileTreeListItemContentInput.js +60 -64
  313. package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
  314. package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +39 -46
  315. package/es/components/shared/file-tree/FileTreeListItems.js +134 -145
  316. package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
  317. package/es/components/shared/file-tree/FileTreeToolbar.js +25 -22
  318. package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
  319. package/es/components/shared/file-tree/context/FileTreeContext.js +74 -89
  320. package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -20
  321. package/es/components/shared/file-tree/utils/fileTreeGenerator.js +146 -193
  322. package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
  323. package/es/components/shared/file-tree/utils/fileTreePath.js +6 -5
  324. package/es/components/shared/file-viewer/FileViewer.js +21 -38
  325. package/es/components/shared/file-viewer/FileViewerCsv.js +70 -129
  326. package/es/components/shared/file-viewer/FileViewerImage.js +4 -3
  327. package/es/components/shared/file-viewer/FileViewerIpynb.js +7 -14
  328. package/es/components/shared/file-viewer/FileViewerNonViewable.js +15 -18
  329. package/es/components/shared/file-viewer/FileViewerText.js +9 -17
  330. package/es/components/shared/material-modal/MaterialModal.js +8 -7
  331. package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
  332. package/es/components/shared/monaco-editor/MonacoEditor.js +67 -87
  333. package/es/components/shared/monaco-editor/MonacoEditorLazy.js +2 -4
  334. package/es/components/shared/monaco-editor/MonacoEditorMobile.js +31 -41
  335. package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +52 -66
  336. package/es/components/shared/monaco-editor/constants/grammars/index.js +28 -82
  337. package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -5
  338. package/es/components/shared/monaco-editor/constants/themes/index.js +17 -49
  339. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -11
  340. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -15
  341. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
  342. package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -34
  343. package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -9
  344. package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -6
  345. package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +10 -33
  346. package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +10 -33
  347. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
  348. package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +10 -37
  349. package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +3 -3
  350. package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -11
  351. package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -10
  352. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -12
  353. package/es/components/shared/monaco-editor/utils/grammar/index.js +24 -68
  354. package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -25
  355. package/es/components/shared/monaco-editor/utils/grammar/textmate.js +35 -67
  356. package/es/components/shared/monaco-editor/utils/monacoLanguage.js +5 -5
  357. package/es/components/shared/monaco-editor/utils/monacoPreference.js +4 -6
  358. package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -2
  359. package/es/components/shared/monaco-editor/utils/prettier/index.js +7 -27
  360. package/es/components/shared/monaco-editor/utils/theme/convert.js +13 -19
  361. package/es/components/shared/monaco-editor/utils/theme/index.js +3 -22
  362. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -77
  363. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -82
  364. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -120
  365. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +130 -152
  366. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -104
  367. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
  368. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -1
  369. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -2
  370. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +157 -172
  371. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -3
  372. package/es/components/shared/no-vnc/NoVnc.js +42 -59
  373. package/es/components/shared/no-vnc/NoVncLazy.js +2 -4
  374. package/es/components/shared/preview-container/PreviewContainer.js +8 -7
  375. package/es/components/shared/web-browser/WebBrowser.js +29 -40
  376. package/es/components/shared/xterm/Xterm.js +51 -69
  377. package/es/components/shared/xterm/XtermLazy.js +2 -4
  378. package/es/constants/arduino.js +10 -10
  379. package/es/constants/shortcutKeyMap.js +1 -3
  380. package/es/constants/stylesheets.js +5 -7
  381. package/es/hooks/useArduino.js +141 -278
  382. package/es/hooks/useExerciseFile.js +22 -24
  383. package/es/hooks/useExericseShortcut.js +4 -6
  384. package/es/hooks/useMaterialExerciseFileUrl.js +34 -52
  385. package/es/hooks/useRunnerRoomWebSocket.js +27 -51
  386. package/es/hooks/useStdioTextConcator.js +10 -16
  387. package/es/hooks/useStdioWebSocket.js +28 -32
  388. package/es/hooks/useUsercodeEditWebSocket.js +157 -232
  389. package/es/hooks/useUsercodeHistory.js +63 -115
  390. package/es/utils/arduino.js +11 -23
  391. package/es/utils/exerciseFile.js +10 -8
  392. package/es/utils/runner.js +15 -29
  393. package/package.json +11 -7
  394. package/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -521
  395. package/es/_virtual/_rollupPluginBabelHelpers.js +0 -499
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React, { useState, useEffect } from 'react';
3
2
  import { useIntl } from 'react-intl';
4
3
  import { Flex, Text } from '@elice/blocks';
@@ -12,24 +11,18 @@ import '../context/subjects.js';
12
11
  import '../context/ExerciseProvider.js';
13
12
  import ExerciseRunnerControllerStatusIndicator from './ExerciseRunnerControllerStatusIndicator.js';
14
13
 
15
- var StyledMessageWrapper = styled(Flex).withConfig({
14
+ const StyledMessageWrapper = styled(Flex).withConfig({
16
15
  componentId: "sc-19z7lun-0"
17
16
  })(["height:1rem;"]);
18
- var ExerciseRunnerControllerArduinoStatusMessage = function ExerciseRunnerControllerArduinoStatusMessage() {
19
- var intl = useIntl();
20
- var ports = useRecoilValue(exerciseArduinoPortsState);
21
- var _useState = useState(''),
22
- _useState2 = _slicedToArray(_useState, 2),
23
- message = _useState2[0],
24
- setMessage = _useState2[1];
25
- var _useState3 = useState('error'),
26
- _useState4 = _slicedToArray(_useState3, 2),
27
- status = _useState4[0],
28
- setStatus = _useState4[1];
29
- var arduinoOpenedPort = useRecoilValue(exerciseArduinoOpenedPortNameState);
30
- var arduinoUploadProgress = useRecoilValue(exerciseArduinoUploadProgressState);
31
- var arduinoAgentConnectionStatus = useRecoilValue(exerciseArduinoAgentConnectionState);
32
- useEffect(function () {
17
+ const ExerciseRunnerControllerArduinoStatusMessage = () => {
18
+ const intl = useIntl();
19
+ const ports = useRecoilValue(exerciseArduinoPortsState);
20
+ const [message, setMessage] = useState('');
21
+ const [status, setStatus] = useState('error');
22
+ const arduinoOpenedPort = useRecoilValue(exerciseArduinoOpenedPortNameState);
23
+ const arduinoUploadProgress = useRecoilValue(exerciseArduinoUploadProgressState);
24
+ const arduinoAgentConnectionStatus = useRecoilValue(exerciseArduinoAgentConnectionState);
25
+ useEffect(() => {
33
26
  if (arduinoAgentConnectionStatus === 'disconnected') {
34
27
  setStatus('error');
35
28
  setMessage(intl.formatMessage({
@@ -72,7 +65,7 @@ var ExerciseRunnerControllerArduinoStatusMessage = function ExerciseRunnerContro
72
65
  case 'error':
73
66
  case 'done':
74
67
  default:
75
- var device = getPortFromName(ports, arduinoOpenedPort);
68
+ const device = getPortFromName(ports, arduinoOpenedPort);
76
69
  if (device) {
77
70
  setMessage(intl.formatMessage({
78
71
  id: 'exerciseRunner.controller.arduino.connectionStatus.connectedDevice'
@@ -24,67 +24,69 @@ import 'unicount';
24
24
  import { ExerciseRunnerContext } from './ExerciseRunnerContext.js';
25
25
  import ExerciseRunnerControllerCodeHelpRequestButton from './ExerciseRunnerControllerCodeHelpRequestButton.js';
26
26
 
27
- var StyledControllerButton = styled(Button).withConfig({
27
+ const StyledControllerButton = styled(Button).withConfig({
28
28
  componentId: "sc-d9xhed-0"
29
29
  })(["position:relative;transition:none;"]);
30
- var StyledControllerButtonWrap = styled.div.withConfig({
30
+ const StyledControllerButtonWrap = styled.div.withConfig({
31
31
  componentId: "sc-d9xhed-1"
32
32
  })(["display:flex;"]);
33
- var StyledControllerButtonGroup = styled.div.withConfig({
33
+ const StyledControllerButtonGroup = styled.div.withConfig({
34
34
  componentId: "sc-d9xhed-2"
35
35
  })(["display:flex;flex-direction:row;align-items:center;> ", ",> ", "{margin-right:0.5rem;&:last-child{margin-right:0;}}"], StyledControllerButtonWrap, StyledControllerButton);
36
- var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButtonGroup() {
36
+ const ExerciseRunnerControllerButtonGroup = () => {
37
37
  var _a;
38
- var intl = useIntl();
39
- var _React$useContext = React.useContext(ExerciseContext),
40
- materialExerciseId = _React$useContext.materialExerciseId,
41
- onCodeHelpRequest = _React$useContext.onCodeHelpRequest;
42
- var _React$useContext2 = React.useContext(ExerciseRunnerContext),
43
- onSubmit = _React$useContext2.onSubmit,
44
- onSyncRequest = _React$useContext2.onSyncRequest,
45
- onCancel = _React$useContext2.onCancel;
46
- var runnerWebsocketStatus = useRecoilValue(exerciseRunnerWebSocketStatusQuery);
47
- var editorCursorSelectionValue = useRecoilValue(exerciseFileEditorCursorSelectionValueState);
48
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
49
- var exerciseRunType = useRecoilValue(exerciseRunnerRunTypeState);
50
- var exerciseWithNoGrade = Boolean(exercise === null || exercise === void 0 ? void 0 : exercise.isNoSubmitGrade);
51
- var lecture = useRecoilValue(exerciseLectureState(exercise === null || exercise === void 0 ? void 0 : exercise._lectureId));
52
- var isTestLecture = (lecture === null || lecture === void 0 ? void 0 : lecture.lectureType) === enums.LectureType.Test;
53
- var isTestLectureCompleted = (lecture === null || lecture === void 0 ? void 0 : lecture.testAdmissionStatus) === enums.TestAdmissionStatus.Completed;
38
+ const intl = useIntl();
39
+ const {
40
+ materialExerciseId,
41
+ onCodeHelpRequest
42
+ } = React.useContext(ExerciseContext);
43
+ const {
44
+ onSubmit,
45
+ onSyncRequest,
46
+ onCancel
47
+ } = React.useContext(ExerciseRunnerContext);
48
+ const runnerWebsocketStatus = useRecoilValue(exerciseRunnerWebSocketStatusQuery);
49
+ const editorCursorSelectionValue = useRecoilValue(exerciseFileEditorCursorSelectionValueState);
50
+ const exercise = useRecoilValue(exerciseState(materialExerciseId));
51
+ const exerciseRunType = useRecoilValue(exerciseRunnerRunTypeState);
52
+ const exerciseWithNoGrade = Boolean(exercise === null || exercise === void 0 ? void 0 : exercise.isNoSubmitGrade);
53
+ const lecture = useRecoilValue(exerciseLectureState(exercise === null || exercise === void 0 ? void 0 : exercise._lectureId));
54
+ const isTestLecture = (lecture === null || lecture === void 0 ? void 0 : lecture.lectureType) === enums.LectureType.Test;
55
+ const isTestLectureCompleted = (lecture === null || lecture === void 0 ? void 0 : lecture.testAdmissionStatus) === enums.TestAdmissionStatus.Completed;
54
56
  // runner states
55
- var isSubmitting = useRecoilValue(exerciseRunnerSubmittingState);
56
- var isRunning = useRecoilValue(exerciseRunnerRunningState);
57
- var isConnecting = runnerWebsocketStatus === EliceWebSocket.CONNECTING;
58
- var isNotReady = runnerWebsocketStatus !== EliceWebSocket.OPEN;
57
+ const isSubmitting = useRecoilValue(exerciseRunnerSubmittingState);
58
+ const isRunning = useRecoilValue(exerciseRunnerRunningState);
59
+ const isConnecting = runnerWebsocketStatus === EliceWebSocket.CONNECTING;
60
+ const isNotReady = runnerWebsocketStatus !== EliceWebSocket.OPEN;
59
61
  // arduino
60
- var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
61
- var arduinoUploadProgress = useRecoilValue(exerciseArduinoUploadProgressState);
62
- var arduinoOpenedPortName = useRecoilValue(exerciseArduinoOpenedPortNameState);
62
+ const isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
63
+ const arduinoUploadProgress = useRecoilValue(exerciseArduinoUploadProgressState);
64
+ const arduinoOpenedPortName = useRecoilValue(exerciseArduinoOpenedPortNameState);
63
65
  // monaco editor apis
64
- var exerciseMonacoEditorApis = useRecoilValue(exerciseMonacoEditorApisState);
66
+ const exerciseMonacoEditorApis = useRecoilValue(exerciseMonacoEditorApisState);
65
67
  //
66
68
  // ========= ui states =========
67
69
  //
68
70
  // submit run
69
- var isSubmitRunHidden = isRunning;
70
- var isSubmitRunArduinoDisabled = isArduinoExercise ? arduinoUploadProgress !== 'ready' && arduinoUploadProgress !== 'error' || !arduinoOpenedPortName : false;
71
- var isSubmitRunDisabled = isSubmitRunHidden || isSubmitRunArduinoDisabled || isNotReady || isConnecting || isSubmitting;
71
+ const isSubmitRunHidden = isRunning;
72
+ const isSubmitRunArduinoDisabled = isArduinoExercise ? arduinoUploadProgress !== 'ready' && arduinoUploadProgress !== 'error' || !arduinoOpenedPortName : false;
73
+ const isSubmitRunDisabled = isSubmitRunHidden || isSubmitRunArduinoDisabled || isNotReady || isConnecting || isSubmitting;
72
74
  // submit grade
73
- var isSubmitGradeHidden = isRunning;
74
- var isSubmitGradeDisabled = isSubmitGradeHidden || exerciseWithNoGrade || isTestLecture && isTestLectureCompleted || isNotReady || isConnecting || isSubmitting;
75
+ const isSubmitGradeHidden = isRunning;
76
+ const isSubmitGradeDisabled = isSubmitGradeHidden || exerciseWithNoGrade || isTestLecture && isTestLectureCompleted || isNotReady || isConnecting || isSubmitting;
75
77
  // cancel
76
- var isCancelHidden = !isRunning;
77
- var isCancelDisabled = isCancelHidden || isNotReady || isConnecting;
78
+ const isCancelHidden = !isRunning;
79
+ const isCancelDisabled = isCancelHidden || isNotReady || isConnecting;
78
80
  // sync request
79
- var isSyncRequestHidden = !isRunning || !((_a = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _a === void 0 ? void 0 : _a.httpPort);
80
- var isSyncRequestDisabled = isSyncRequestHidden || isNotReady || isConnecting;
81
+ const isSyncRequestHidden = !isRunning || !((_a = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _a === void 0 ? void 0 : _a.httpPort);
82
+ const isSyncRequestDisabled = isSyncRequestHidden || isNotReady || isConnecting;
81
83
  //
82
84
  //
83
85
  //
84
86
  /**
85
87
  * Submit to run
86
88
  */
87
- var handleSubmitRun = function handleSubmitRun() {
89
+ const handleSubmitRun = () => {
88
90
  if (!isSubmitRunDisabled) {
89
91
  void onSubmit(enums.ExerciseRunType.Run);
90
92
  }
@@ -92,7 +94,7 @@ var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButto
92
94
  /**
93
95
  * Submit to grade
94
96
  */
95
- var handleSubmitGrade = function handleSubmitGrade() {
97
+ const handleSubmitGrade = () => {
96
98
  if (!isSubmitGradeDisabled) {
97
99
  void onSubmit(enums.ExerciseRunType.Grade);
98
100
  }
@@ -100,7 +102,7 @@ var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButto
100
102
  /**
101
103
  * Cancel
102
104
  */
103
- var handleCancel = function handleCancel() {
105
+ const handleCancel = () => {
104
106
  if (!isCancelDisabled) {
105
107
  onCancel();
106
108
  }
@@ -108,7 +110,7 @@ var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButto
108
110
  /**
109
111
  * Sync request
110
112
  */
111
- var handleSyncRequest = function handleSyncRequest() {
113
+ const handleSyncRequest = () => {
112
114
  if (!isSyncRequestDisabled) {
113
115
  onSyncRequest();
114
116
  }
@@ -123,9 +125,9 @@ var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButto
123
125
  //
124
126
  // handle save action emitted by file editor
125
127
  //
126
- React.useEffect(function () {
127
- var saveActionSub = exerciseFileEditorSaveAction$.subscribe(handleSyncRequest);
128
- return function () {
128
+ React.useEffect(() => {
129
+ const saveActionSub = exerciseFileEditorSaveAction$.subscribe(handleSyncRequest);
130
+ return () => {
129
131
  saveActionSub.unsubscribe();
130
132
  };
131
133
  },
@@ -134,7 +136,7 @@ var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButto
134
136
  /**
135
137
  * Submit to run button
136
138
  */
137
- var renderSubmitRunButton = function renderSubmitRunButton() {
139
+ const renderSubmitRunButton = () => {
138
140
  if (isSubmitRunHidden) {
139
141
  return null;
140
142
  }
@@ -152,7 +154,7 @@ var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButto
152
154
  /**
153
155
  * Submit to grade button
154
156
  */
155
- var renderSubmitGradeButton = function renderSubmitGradeButton() {
157
+ const renderSubmitGradeButton = () => {
156
158
  if (isSubmitGradeHidden) {
157
159
  return null;
158
160
  }
@@ -175,7 +177,7 @@ var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButto
175
177
  /**
176
178
  * Cancel button
177
179
  */
178
- var renderCancelButton = function renderCancelButton() {
180
+ const renderCancelButton = () => {
179
181
  if (isCancelHidden) {
180
182
  return null;
181
183
  }
@@ -192,7 +194,7 @@ var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButto
192
194
  /**
193
195
  * Sync request button
194
196
  */
195
- var renderSyncRequestButton = function renderSyncRequestButton() {
197
+ const renderSyncRequestButton = () => {
196
198
  if (isSyncRequestHidden) {
197
199
  return null;
198
200
  }
@@ -209,12 +211,12 @@ var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButto
209
211
  /**
210
212
  * Code help button
211
213
  */
212
- var renderCodeHelpRequestButton = function renderCodeHelpRequestButton() {
214
+ const renderCodeHelpRequestButton = () => {
213
215
  if (isRunning || !editorCursorSelectionValue || typeof onCodeHelpRequest !== 'function') {
214
216
  return null;
215
217
  }
216
218
  return React.createElement(ExerciseRunnerControllerCodeHelpRequestButton, {
217
- onClick: function onClick() {
219
+ onClick: () => {
218
220
  var _a, _b, _c;
219
221
  onCodeHelpRequest({
220
222
  code: editorCursorSelectionValue,
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React from 'react';
3
2
  import { FormattedMessage } from 'react-intl';
4
3
  import { Button, Tooltip, Icon, Flex, BadgeNext, Text, Hspace, IconButton } from '@elice/blocks';
@@ -11,22 +10,19 @@ import '../context/recoilTypes.js';
11
10
  import '../context/subjects.js';
12
11
  import '../context/ExerciseProvider.js';
13
12
 
14
- var ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY = 'elice-material-exercise-aibot-tooltip-hidden';
15
- var ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE = 'true';
16
- var StyledControllerButton = styled(Button).withConfig({
13
+ const ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY = 'elice-material-exercise-aibot-tooltip-hidden';
14
+ const ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE = 'true';
15
+ const StyledControllerButton = styled(Button).withConfig({
17
16
  componentId: "sc-10grd0k-0"
18
17
  })(["position:relative;transition:none;"]);
19
- var ExerciseRunnerControllerCodeHelpRequestButton = React.forwardRef(function (props, ref) {
20
- var _React$useState = React.useState(false),
21
- _React$useState2 = _slicedToArray(_React$useState, 2),
22
- isTooltipHidden = _React$useState2[0],
23
- setIsTooltipHidden = _React$useState2[1];
24
- var isAibotInfoEnabled = useRecoilValue(exerciseAibotInfoEnableState);
18
+ const ExerciseRunnerControllerCodeHelpRequestButton = React.forwardRef((props, ref) => {
19
+ const [isTooltipHidden, setIsTooltipHidden] = React.useState(false);
20
+ const isAibotInfoEnabled = useRecoilValue(exerciseAibotInfoEnableState);
25
21
  //
26
22
  //
27
23
  //
28
- React.useEffect(function () {
29
- var isTooltipHidden = sessionStorage.getItem(ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY) === ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE;
24
+ React.useEffect(() => {
25
+ const isTooltipHidden = sessionStorage.getItem(ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY) === ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE;
30
26
  if (isTooltipHidden) {
31
27
  setIsTooltipHidden(true);
32
28
  return;
@@ -38,7 +34,7 @@ var ExerciseRunnerControllerCodeHelpRequestButton = React.forwardRef(function (p
38
34
  /**
39
35
  *
40
36
  */
41
- var renderAiBotTooltipTitle = function renderAiBotTooltipTitle() {
37
+ const renderAiBotTooltipTitle = () => {
42
38
  return React.createElement(Flex, {
43
39
  align: "center"
44
40
  }, React.createElement(BadgeNext, {
@@ -63,7 +59,7 @@ var ExerciseRunnerControllerCodeHelpRequestButton = React.forwardRef(function (p
63
59
  hasPadding: false,
64
60
  border: false,
65
61
  icon: eilMathsignMultiplyBasic,
66
- onClick: function onClick() {
62
+ onClick: () => {
67
63
  sessionStorage.setItem(ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY, ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE);
68
64
  setIsTooltipHidden(true);
69
65
  }
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React from 'react';
3
2
  import { useIntl, FormattedMessage, FormattedDate } from 'react-intl';
4
3
  import { usePrevious } from 'react-use';
@@ -17,48 +16,40 @@ import '../context/ExerciseProvider.js';
17
16
  //
18
17
  //
19
18
  //
20
- var StyledHr = styled(Hr).withConfig({
19
+ const StyledHr = styled(Hr).withConfig({
21
20
  componentId: "sc-30ywzi-0"
22
21
  })(["height:2rem;"]);
23
- var StyledRunnerInfoTitle = styled.span.withConfig({
22
+ const StyledRunnerInfoTitle = styled.span.withConfig({
24
23
  componentId: "sc-30ywzi-1"
25
24
  })(["display:block;color:", ";font-size:11px;line-height:1.25;"], base.color.navy3);
26
- var StyledRunnerInfoContent = styled.span.withConfig({
25
+ const StyledRunnerInfoContent = styled.span.withConfig({
27
26
  componentId: "sc-30ywzi-2"
28
27
  })(["display:block;color:", ";font-size:12px;line-height:1.25;"], base.color.navy1);
29
28
  //
30
29
  //
31
30
  //
32
- var ExerciseRunnerControllerRunningInfo = function ExerciseRunnerControllerRunningInfo() {
33
- var intl = useIntl();
34
- var _React$useContext = React.useContext(ExerciseContext),
35
- materialExerciseId = _React$useContext.materialExerciseId,
36
- exerciseRoomId = _React$useContext.exerciseRoomId,
37
- onExerciseRunningDone = _React$useContext.onExerciseRunningDone,
38
- onError = _React$useContext.onError;
39
- var isRunning = useRecoilValue(exerciseRunnerRunningState);
40
- var isPrevRunning = usePrevious(isRunning);
41
- var isNoRunning = isPrevRunning === undefined;
42
- var isRunningDone = isPrevRunning === true && !isRunning;
43
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
44
- var user = useRecoilValue(exerciseUserState);
45
- var _React$useState = React.useState(),
46
- _React$useState2 = _slicedToArray(_React$useState, 2),
47
- course = _React$useState2[0],
48
- setCourse = _React$useState2[1];
49
- var _React$useState3 = React.useState(null),
50
- _React$useState4 = _slicedToArray(_React$useState3, 2),
51
- exerciseLastRunning = _React$useState4[0],
52
- setExerciseLastRunning = _React$useState4[1];
53
- var _React$useState5 = React.useState(null),
54
- _React$useState6 = _slicedToArray(_React$useState5, 2),
55
- exerciseLastSubmit = _React$useState6[0],
56
- setExerciseLastSubmit = _React$useState6[1];
31
+ const ExerciseRunnerControllerRunningInfo = () => {
32
+ const intl = useIntl();
33
+ const {
34
+ materialExerciseId,
35
+ exerciseRoomId,
36
+ onExerciseRunningDone,
37
+ onError
38
+ } = React.useContext(ExerciseContext);
39
+ const isRunning = useRecoilValue(exerciseRunnerRunningState);
40
+ const isPrevRunning = usePrevious(isRunning);
41
+ const isNoRunning = isPrevRunning === undefined;
42
+ const isRunningDone = isPrevRunning === true && !isRunning;
43
+ const exercise = useRecoilValue(exerciseState(materialExerciseId));
44
+ const user = useRecoilValue(exerciseUserState);
45
+ const [course, setCourse] = React.useState();
46
+ const [exerciseLastRunning, setExerciseLastRunning] = React.useState(null);
47
+ const [exerciseLastSubmit, setExerciseLastSubmit] = React.useState(null);
57
48
  //
58
49
  // Get exercise running list.
59
50
  //
60
- React.useEffect(function () {
61
- var userId = user === null || user === void 0 ? void 0 : user.id;
51
+ React.useEffect(() => {
52
+ const userId = user === null || user === void 0 ? void 0 : user.id;
62
53
  if (!userId || !exercise || !exerciseRoomId) {
63
54
  return;
64
55
  }
@@ -68,36 +59,21 @@ var ExerciseRunnerControllerRunningInfo = function ExerciseRunnerControllerRunni
68
59
  if (!isNoRunning && !isRunningDone) {
69
60
  return;
70
61
  }
71
- var abortCtrl = new AbortController();
72
- var _fetch = /*#__PURE__*/function () {
73
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(runType) {
74
- return _regeneratorRuntime().wrap(function _callee$(_context) {
75
- while (1) switch (_context.prev = _context.next) {
76
- case 0:
77
- return _context.abrupt("return", getOrgMaterialExerciseExerciseRunningList({
78
- exerciseRoomId: exerciseRoomId,
79
- filterRunType: runType,
80
- offset: 0,
81
- count: 1,
82
- userId: userId
83
- }, {
84
- signal: abortCtrl.signal
85
- }).then(function (res) {
86
- return res.exerciseRunnings;
87
- }).then(function (exerciseRunnings) {
88
- var _a;
89
- return (_a = exerciseRunnings[0]) !== null && _a !== void 0 ? _a : null;
90
- }));
91
- case 1:
92
- case "end":
93
- return _context.stop();
94
- }
95
- }, _callee);
96
- }));
97
- return function _fetch(_x) {
98
- return _ref.apply(this, arguments);
99
- };
100
- }();
62
+ const abortCtrl = new AbortController();
63
+ const _fetch = async runType => {
64
+ return getOrgMaterialExerciseExerciseRunningList({
65
+ exerciseRoomId,
66
+ filterRunType: runType,
67
+ offset: 0,
68
+ count: 1,
69
+ userId
70
+ }, {
71
+ signal: abortCtrl.signal
72
+ }).then(res => res.exerciseRunnings).then(exerciseRunnings => {
73
+ var _a;
74
+ return (_a = exerciseRunnings[0]) !== null && _a !== void 0 ? _a : null;
75
+ });
76
+ };
101
77
  Promise.all([
102
78
  // running
103
79
  // - if exercise is no submit grade, fetch only running
@@ -106,17 +82,14 @@ var ExerciseRunnerControllerRunningInfo = function ExerciseRunnerControllerRunni
106
82
  // submit
107
83
  // - if exercise is no submit grade, fetch nothing
108
84
  // - else, fetch submit
109
- exercise.isNoSubmitGrade ? Promise.resolve(null) : _fetch(enums.ExerciseRunType.Grade)]).then(function (_ref2) {
110
- var _ref3 = _slicedToArray(_ref2, 2),
111
- exerciseLastRunning = _ref3[0],
112
- exerciseLastSubmit = _ref3[1];
85
+ exercise.isNoSubmitGrade ? Promise.resolve(null) : _fetch(enums.ExerciseRunType.Grade)]).then(([exerciseLastRunning, exerciseLastSubmit]) => {
113
86
  setExerciseLastRunning(exerciseLastRunning);
114
87
  setExerciseLastSubmit(exerciseLastSubmit);
115
88
  // callback on running done (last running which includes submit)
116
89
  if (isRunningDone && typeof onExerciseRunningDone === 'function') {
117
90
  onExerciseRunningDone(exerciseLastRunning);
118
91
  }
119
- }).catch(function (err) {
92
+ }).catch(err => {
120
93
  if (err.name === 'AbortError') {
121
94
  return;
122
95
  }
@@ -127,7 +100,7 @@ var ExerciseRunnerControllerRunningInfo = function ExerciseRunnerControllerRunni
127
100
  id: 'exerciseRunner.controller.runningInfo.error.fetch'
128
101
  }));
129
102
  });
130
- return function () {
103
+ return () => {
131
104
  abortCtrl.abort();
132
105
  };
133
106
  },
@@ -136,26 +109,24 @@ var ExerciseRunnerControllerRunningInfo = function ExerciseRunnerControllerRunni
136
109
  //
137
110
  // Get course
138
111
  //
139
- React.useEffect(function () {
112
+ React.useEffect(() => {
140
113
  if (!exercise) {
141
114
  return;
142
115
  }
143
- var abortCtrl = new AbortController();
116
+ const abortCtrl = new AbortController();
144
117
  getOrgCourseGet({
145
118
  courseId: exercise._courseId
146
119
  }, {
147
120
  signal: abortCtrl.signal
148
- }).then(function (res) {
149
- return res.course;
150
- }).then(setCourse).catch(console.error);
151
- return function () {
121
+ }).then(res => res.course).then(setCourse).catch(console.error);
122
+ return () => {
152
123
  abortCtrl.abort();
153
124
  };
154
125
  }, [exercise]);
155
126
  /**
156
127
  * Last running score.
157
128
  */
158
- var renderRunningInfoLastSubmitScore = function renderRunningInfoLastSubmitScore() {
129
+ const renderRunningInfoLastSubmitScore = () => {
159
130
  if (exercise === null || exercise === void 0 ? void 0 : exercise.isNoSubmitGrade) {
160
131
  return null;
161
132
  }
@@ -182,7 +153,7 @@ var ExerciseRunnerControllerRunningInfo = function ExerciseRunnerControllerRunni
182
153
  /**
183
154
  * Last submit time.
184
155
  */
185
- var renderRunningInfoLastRunningTime = function renderRunningInfoLastRunningTime() {
156
+ const renderRunningInfoLastRunningTime = () => {
186
157
  if (!course || (course === null || course === void 0 ? void 0 : course.courseType) === enums.CourseType.Challenge) {
187
158
  return;
188
159
  }
@@ -1,9 +1,9 @@
1
1
  import { base } from '@elice/design-tokens';
2
2
  import styled from 'styled-components';
3
3
 
4
- var ExerciseRunnerControllerStatusIndicator = styled.div.withConfig({
4
+ const ExerciseRunnerControllerStatusIndicator = styled.div.withConfig({
5
5
  componentId: "sc-15703mt-0"
6
- })(["margin-top:1px;margin-right:0.3rem;width:0.375rem;height:0.375rem;border-radius:50%;vertical-align:middle;background-color:", ";"], function (props) {
6
+ })(["margin-top:1px;margin-right:0.3rem;width:0.375rem;height:0.375rem;border-radius:50%;vertical-align:middle;background-color:", ";"], props => {
7
7
  switch (props.status) {
8
8
  case 'success':
9
9
  return base.color.green8;
@@ -11,15 +11,15 @@ import '../context/subjects.js';
11
11
  import '../context/ExerciseProvider.js';
12
12
  import ExerciseRunnerControllerStatusIndicator from './ExerciseRunnerControllerStatusIndicator.js';
13
13
 
14
- var StyledMessageWrapper = styled(Flex).withConfig({
14
+ const StyledMessageWrapper = styled(Flex).withConfig({
15
15
  componentId: "sc-1yqi8o2-0"
16
16
  })(["height:1rem;"]);
17
- var ExerciseRunnerControllerStatusMessage = function ExerciseRunnerControllerStatusMessage() {
18
- var websocketStatus = useRecoilValue(exerciseRunnerWebSocketStatusQuery);
17
+ const ExerciseRunnerControllerStatusMessage = () => {
18
+ const websocketStatus = useRecoilValue(exerciseRunnerWebSocketStatusQuery);
19
19
  /**
20
20
  * Websocket state message.
21
21
  */
22
- var getWebsocketStateMessage = function getWebsocketStateMessage() {
22
+ const getWebsocketStateMessage = () => {
23
23
  switch (websocketStatus) {
24
24
  case EliceWebSocket.OPEN:
25
25
  return React.createElement(FormattedMessage, {
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React from 'react';
3
2
  import { FormattedMessage } from 'react-intl';
4
3
  import { Text } from '@elice/blocks';
@@ -11,26 +10,21 @@ import '../context/recoilTypes.js';
11
10
  import '../context/subjects.js';
12
11
  import '../context/ExerciseProvider.js';
13
12
 
14
- var StyledControllerTimerText = styled(Text).withConfig({
13
+ const StyledControllerTimerText = styled(Text).withConfig({
15
14
  componentId: "sc-1ez8ns0-0"
16
15
  })(["margin-top:-3px;color:", ";"], base.color.secondary4);
17
- var ExerciseRunnerControllerTimer = function ExerciseRunnerControllerTimer() {
18
- var _React$useContext = React.useContext(ExerciseContext),
19
- materialExerciseId = _React$useContext.materialExerciseId;
20
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
21
- var isRunning = useRecoilValue(exerciseRunnerRunningState);
22
- var _React$useState = React.useState(0),
23
- _React$useState2 = _slicedToArray(_React$useState, 2),
24
- exerciseTimeLimit = _React$useState2[0],
25
- setExerciseTimeLimit = _React$useState2[1];
26
- var _React$useState3 = React.useState(0),
27
- _React$useState4 = _slicedToArray(_React$useState3, 2),
28
- remainingTime = _React$useState4[0],
29
- setRemainingTime = _React$useState4[1];
16
+ const ExerciseRunnerControllerTimer = () => {
17
+ const {
18
+ materialExerciseId
19
+ } = React.useContext(ExerciseContext);
20
+ const exercise = useRecoilValue(exerciseState(materialExerciseId));
21
+ const isRunning = useRecoilValue(exerciseRunnerRunningState);
22
+ const [exerciseTimeLimit, setExerciseTimeLimit] = React.useState(0);
23
+ const [remainingTime, setRemainingTime] = React.useState(0);
30
24
  //
31
25
  // Get time limit from exercise.
32
26
  //
33
- React.useEffect(function () {
27
+ React.useEffect(() => {
34
28
  var _a, _b;
35
29
  if (isRunning) {
36
30
  setExerciseTimeLimit((_b = (_a = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _a === void 0 ? void 0 : _a.timeLimit) !== null && _b !== void 0 ? _b : 0);
@@ -41,17 +35,17 @@ var ExerciseRunnerControllerTimer = function ExerciseRunnerControllerTimer() {
41
35
  //
42
36
  // Calculate remaining time.
43
37
  //
44
- React.useEffect(function () {
45
- var startTime = Date.now();
38
+ React.useEffect(() => {
39
+ const startTime = Date.now();
46
40
  setRemainingTime(exerciseTimeLimit);
47
- var interval = window.setInterval(function () {
48
- var newRemainingTime = exerciseTimeLimit - (Date.now() - startTime);
41
+ const interval = window.setInterval(() => {
42
+ const newRemainingTime = exerciseTimeLimit - (Date.now() - startTime);
49
43
  if (newRemainingTime < 0) {
50
44
  window.clearInterval(interval);
51
45
  }
52
46
  setRemainingTime(Math.max(newRemainingTime, 0));
53
47
  }, 100);
54
- return function () {
48
+ return () => {
55
49
  setRemainingTime(0);
56
50
  window.clearInterval(interval);
57
51
  };